Signer un mod
-
Salut par curiosité j’ai testé j’ai tout fais sauf l’étape plugin FML car je ne sais aps ce qu’est un plugin FML xD mais rien ne se passe je vois pas en quoi le mod est signer

-
Pour vérifier que ton mod est bien signé, modifies un fichier du jar, logiquement il va crasher au lancement.
-
Aucun crash ^^
Mon fichier gradle.properties:
keyStore=C:\Users\Sullivan.keystore keyStoreAlias=Degraduck keyStorePass=monmdp keyStoreKeyPass=monmdpMon code dans la class principale:
@Mod(modid = Constants.MODID, name = Constants.MODNAME, version = Constants.MODVERSION, certificateFingerprint = "13acf16405b3ac8d7ccab68563acefda5f644c75") @EventHandler public void signature(FMLFingerprintViolationEvent event){ } -
As-tu bien ajouté la tâche signJar dans le fichier build.gradle ?
-
Oui voici mon fichier:
buildscript { repositories { mavenCentral() maven { name = "forge" url = "http://files.minecraftforge.net/maven" } maven { name = "sonatype" url = "https://oss.sonatype.org/content/repositories/snapshots/" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT' } } apply plugin: 'forge' version = "1.0" group= "com.yourname.modid" // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = "modid" minecraft { version = "1.7.10-10.13.4.1558-1.7.10" runDir = "eclipse" } dependencies { // you may put jars on which you depend on in ./libs // or you may define them like so.. //compile "some.group:artifact:version:classifier" //compile "some.group:artifact:version" // real examples //compile 'com.mod-buildcraft:buildcraft:6.0.8:dev' // adds buildcraft to the dev env //compile 'com.googlecode.efficient-java-matrix-library:ejml:0.24' // adds ejml to the dev env // for more info… // http://www.gradle.org/docs/current/userguide/artifact_dependencies_tutorial.html // http://www.gradle.org/docs/current/userguide/dependency_management.html } processResources { // this will ensure that this task is redone when the versions change. inputs.property "version", project.version inputs.property "mcversion", project.minecraft.version // replace stuff in mcmod.info, nothing else from(sourceSets.main.resources.srcDirs) { include 'mcmod.info' // replace version and mcversion expand 'version':project.version, 'mcversion':project.minecraft.version } // copy everything else, thats not the mcmod.info from(sourceSets.main.resources.srcDirs) { exclude 'mcmod.info' } } task signJar(type: SignJar) { onlyIf { // On exécute seulement s'il y a un keystore spécifié dans le gradle.properties project.hasProperty('keyStore') } keyStore = project.keyStore // on indique le keystore ainsi que toutes les autres variables alias = project.keyStoreAlias storePass = project.keyStorePass keyPass = project.keyStoreKeyPass inputFile = jar.archivePath // On indique le jar d'entrée et de sortie outputFile = jar.archivePath } assemble.dependsOn signJar // Lorsque l'on compile le jar on le signe -
Dans ta fonction public void signature(FMLFingerprintViolationEvent event){
ajoutes un System.out.println(“empreinte invalide”);
et regardes s’il affiche après avoir modifié le jar. -
Oui en lançant j’ai bien:
[14:34:53] [Client thread/INFO] [STDOUT]: [com.degraduck.atlantidecraft.core.AtlantideCraft:signature:63]: empreinte invalide -
Donc ça fonctionne comme prévu.
À toi de faire ce que tu veux dans la fonction en question. -
Ah d’accord je pensais que ça crashait au lancement tout seul, j’avais pas compris que c’était a moi de lui dire de crash dans ma fonction^^
-
C’était aussi ce que je pensais au début.
-
Est-on réellement obliger de passer par le keytool de java ? Ou alors peut-on également et manuellement calculer le sha-1 du fichier et de le mettre en paramètre du @Mod ? Car si je comprend bien, le sha1 mis dans l’annotation correspond au sha1 de notre mod, je me trompe ?
-
Le sha1 qui se trouve dans @mod c’est la signature de la clé avec laquelle tu signes, pas celle du mod.
Il y a probablement moyen de signer sans keytool mais je ne vois pas l’intérêt de vouloir se passer de cet outil qui simplifie la procédure.
https://docs.oracle.com/javase/tutorial/deployment/jar/intro.html -
merci de ces informations !