Launcher Minecraft personnalisé
Résolu
Utilisateur anonyme
-
Utilisateur anonyme -
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
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:
- Créer un launcher minecraft personnalisé
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un lien pour partager des photos - Guide
- Créer un compte gmail - Guide
- Créer un compte instagram sur google - Guide
9 réponses
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 ^^
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 ^^
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.
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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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)
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)
Et le launcher fonctionne très bien tant que je ne modifie pas le client (Minecraft.class du minecraft.jar)
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.
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.