Signer un mod
-
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 !