Launcher Minecraft personnalisé

Résolu/Fermé
Utilisateur anonyme - 30 déc. 2012 à 00:05
 Utilisateur anonyme - 30 déc. 2012 à 19:30
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
A voir également:

9 réponses

arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
30 déc. 2012 à 12:15
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
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
30 déc. 2012 à 01:33
Et comment génère-t-on des .class?

En compilant les fichiers .java ! :-)
3
Utilisateur anonyme
30 déc. 2012 à 11:17
et comment on compile les fichiers .java ?
3
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.
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
30 déc. 2012 à 15:42
Bouge pas je décompile et je regarde :-)
1
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
30 déc. 2012 à 16:31
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)

1
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)
1
arth Messages postés 9374 Date d'inscription mardi 27 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2016 1 291
30 déc. 2012 à 17:53
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.
1
Utilisateur anonyme
30 déc. 2012 à 19:30
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 :)
1