Launcher Minecraft personnalisé

Résolu/Fermé
Signaler
-
 Utilisateur anonyme -
Bonjour,

Mon launcher minecraft pour mon serveur doit télécharger un pack de texture dans son dossier ".monserveur/texturepacks" et doit fonctionner en prenant en compte le dossier .monserveur au lieu de .minecraft

Pour cela, je dois decompiler minecraft avec MCP et modifier minecraft.java avec eclipse :
minecraftDir = getAppDir("Minecraft") >> minecraftDir = getAppDir("monserveur")

Mais une fois que cela est fait, comment appliquer ces changements ?
Merci pour vos réponses

9 réponses

Messages postés
9367
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 363
Il faut décompiler tout le code, et le recompiler ensuite sous Eclipse.

En effet pour compiler un fichier, il faut que toutes les données pour la compilation soient présentes.

Tu ne peux pas compiler un fichier si les dépendances sur d'autres classes non connues ne sont pas résolues.

Soluce 1 :

Tu peux très bien décompiler tout le code avec MCP ou JDGui par exemple, et créer un script de compilation.

Déjà il faut vérifier que la compilation du code de base se passe bien.

Si tel est le cas, tu modifies le code, et ensuite tu refais la compilation.

Si tout se passe bien, alors il suffit juste d'ouvrir le fichier .jar de base avec Winrar par exemple, puis juste glisser/déposer le fichier .class généré modifié. Il n'est pas nécessaire de remplacer les fichiers qui n'ont pas été modifiés. En revanche tous les fichiers sont potentiellement nécessaires pour faire la compilation.

Soluce 2 :

Tu décompiles le code avec MCP ou JDGui par exemple.

Ensuite tu crées un projet Eclipse, et tu importes les fichiers .java dedans.

Par défaut Eclipse réalise une compilation automatique à chaque sauvegarde du code si je ne m'abuse.

Si le code tel quel se compile, en fait juste le fichier dont tu as besoin, alors il faut que tu ailles chercher le .class généré dans le répertoire des projets. Puis pareil qu'au dessus on remplace le fichier dans le .jar

Si tu ne comprends pas ce que je dis, c'est normal ^^

5
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 41989 internautes nous ont dit merci ce mois-ci

Messages postés
9367
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 363
Et comment génère-t-on des .class?

En compilant les fichiers .java ! :-)

et comment on compile les fichiers .java ?
Merci, j'ai compris !
j'ai réussi à mettre le Minecraft.class généré dans mon minecraft.jar, mais maintenant mon launcher reste bloqué avec la progressbar à 99% et "done loading". La console de eclipse me signale ceci :
Exception in thread "Thread-5" java.lang.SecurityException: SHA1 digest error for net/minecraft/client/Minecraft.class
at sun.security.util.ManifestEntryVerifier.verify(Unknown Source)
at java.util.jar.JarVerifier.processEntry(Unknown Source)
at java.util.jar.JarVerifier.update(Unknown Source)
at java.util.jar.JarVerifier$VerifierStream.read(Unknown Source)
at sun.misc.Resource.getBytes(Unknown Source)
at java.net.URLClassLoader.defineClass(Unknown Source)
at java.net.URLClassLoader.access$100(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
at java.lang.Class.getConstructor0(Unknown Source)
at java.lang.Class.newInstance0(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at net.minecraft.GameUpdater.createApplet(GameUpdater.java:419)
at net.minecraft.Launcher$1.run(Launcher.java:88)

Merci de m'aider.
Messages postés
9367
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 363
Bouge pas je décompile et je regarde :-)
Messages postés
9367
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 363
Tu peux donner quelles sont les lignes suivantes :


at net.minecraft.GameUpdater.createApplet(GameUpdater.java:419)
at net.minecraft.Launcher$1.run(Launcher.java:88)

tu veux les lignes de codes où les erreurs ont été trouvées ?
Et le launcher fonctionne très bien tant que je ne modifie pas le client (Minecraft.class du minecraft.jar)
Messages postés
9367
Date d'inscription
mardi 27 septembre 2005
Statut
Contributeur
Dernière intervention
16 décembre 2016
1 363
A priori je pense savoir d'où vient le souci.

Dans le Minecraft.exe comme dans le minecraft.jar, il y a dans le dossier META-INF le fichier MANIFEST.MF qui comporte les signatures des fichiers du jar.

Etant donné que le fichier .class a été modifié, du coup la signature n'est plus la même. Il faudrait régénérer la signature du fichier et la modifier dans le MANIFEST.MF

Enfin après reste à savoir si c'est bien ça mais il y a de grandes chances.

J'ai tout simplement viré le dossier META-INF , comme il faut faire pour tout les mods minecraft. Mais pourquoi est-ce que j'y ai pas pensé avant ... --'

Merci beaucoup pour ton aide, bonne continuation :)