Mehdirauch

1.x
[Ω] - Minecraft Coder Pack

2 messages dans ce sujet

Minecraft Coder Pack

Test

 
88x31.png
Cette œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 4.0 International.Tout partage implique que vous citiez l'auteur original. L’œuvre doit être partagée dans les mêmes conditions.
 
[INTRODUCTION]
Bien le bonsoir.

Ce tutoriel est destiné aux utilisateurs souhaitant approfondir le tutoriel de Wytrem et à ceux qui souhaitent commencer à aider pour le projet Minecraft Open Mapping.

Ce tutoriel est optimisé pour l'1.6.4, il sera réécrit pour être disponible pour toutes les versions d'ici quelques jours.


[PRÉ-REQUIS]

Votre version de MCP :

Vous aurez également besoin de votre IDE favori, voici les plus connus.

Pour finir vous avez besoin d'un JDK (Le Java Developement Kit) :

http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

[SOMMAIRE]
0] - Présentation de MCP.
1] - Minecraft 1.x
WIP

0] - Présentation de MCP. WIP

Introduction : "Le Minecraft Coder Pack (appelé parfois MCP) est un ensemble de scripts et d'outils visant à aider les développeurs à créer des mods,

à la fois pour le serveur et le client."

Description : MCP a été créé pour aider les créateurs de mods à décompiler, modifier et recompiler les classes Minecraft. Les instructions sont incluses dans les fichiers readme (en anglais) qui sont avec MCP. MCP contient des scripts pour décompiler, recompiler le jeu et le serveur

License et conditions d'utilisations :

MCP est (c) Copyright par l'équipe de MCP.

Aucune garantie. Si MCP ne fonctionne pas, ou cause des problèmes, c'est le problème de l'utilisateur. L'utilisateur doit l'utiliser à ses propres risques.

Vous êtes autorisé à :

  • Utiliser MCP pour décompiler le Minecraft client et les fichiers jars du serveur.
  • Utiliser le code source décompilé pour créer des mods.
  • Recompiler les versions modifiées de Minecraft.

Vous n'êtes pas autorisé à :

  • Utiliser MCP à faire quoi que ce soit qui viole les termes de Mojang d'utilisation pour Minecraft.
  • Publier des versions ou modifications qui vous permettent de jouer sans avoir acheté Minecraft de Mojang.
  • Publier des versions modifiés ou non modifiés de MCP partout.
  • Utiliser l'un des scripts de MCP, des outils ou des fichiers de données sans l'autorisation écrite de MCP.
  • Gagner de l'argent avec n'importe quoi sur la base de MCP (hors les mods Minecraft créés à l'aide de MCP).
  • Utiliser MCP pour créer des clients qui exploitent les bugs du serveur.
  • Relâcher le code source décompilé de Minecraft.

Tiré de Minecraft Wiki : http://minecraft-fr.gamepedia.com/Minecraft_Coder_Pack

Il existe un sujet officiel de MCP initié par SeargeDP le fondateur de MCP :

http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-tools/1260561-toolkit-mod-coder-pack-mcp

Vous savez désormais tout ce qu'il faut savoir sur MCP, passons à la suite !

1] - Minecraft 1.x

A] - Téléchargement et Extraction de mcp.zip

Tout d'abord il vous faut extraire le dossier mcp811, mcp910, mcp908 ou autres que vous aurez téléchargé sur le site officiel de MCP (http://www.modcoderpack.com).
Faites un clic-droit sur le dossier et sélectionnez l'option Extraire tout... ou l'option proposée par votre logiciel de compression de données.
Vous obtiendrez un dossier extrait à la racine de l'emplacement de votre dossier compressé.

B] - Explication du fonctionnement du Minecraft Coder Pack

Le Minecraft Coder Pack (abrégé en MCP par la suite) récupère tout ce dont il à besoin dans le dossier .minecraft créé par le Launcher Officiel de Minecraft.
Pour y accéder et parfaire votre compréhension de Minecraft tapez %appdata% dans votre cadre de recherche de programmes.
Vous découvrirez qu'un dossier AppData invisible est présent dans le dossier de votre utilisateur et que dans ce dossier se trouve trois autre dossiers qu'utilisent les logiciels pour stocker des données sans que vous n'en sachiez quelque chose. Intéressez vous au dossier Roaming, vous trouverez le dossier .minecraft que vous cherchez.
Ce dossier .minecraft contient toutes les données nécessaire au fonctionnement du Launcher Officiel de Minecraft.
Pour la version que vous avez, MCP ira vérifier dans le dossier jars (dossier de stockage de toutes les versions de Minecraft) si le dossier 1.x est présent.
Ensuite il ira vérifier si le fichier 1.x.jar et le fichier 1.x.json sont présents. Si ces conditions sont remplies, il ira procéder à ce dont il à été programmé.

C] - Téléchargement de minecraft_server.1.x.jar.

Maintenant vous allez avoir besoin du .jar du serveur de la version de MCP téléchargée.
Pour obtenir ce fichier de manière officielle je vous recommande de suivre le lien ci-dessous :
Il mène aux serveurs que Mojang (la société qui développe Minecraft) utilise pour faire télécharger leurs .jars.
Après avoir téléchargé ce fichier vous devrez le copier dans le dossier jars situé à la racine de votre dossier MCP.
Il est à noté que vous devrez remplacer le 1.x par votre version (1.6.4, 1.7.10, 1.8, ect...)

D] - Décompilation

Vous avez certainement bien appris depuis le début de ce chapitre, désormais vous devez obtenir le code source de Minecraft.
Pour ce faire, rien de plus simple. Ouvrez votre dossier mcp811 et exécutez le fichier decompile.bat. Il s'agit d'un fichier de commande Windows, un .bat.
Ces fichiers contiennent des instructions diverses et variées, que diriez vous d'analyser ce fichier ?
Pour cela utilisez votre éditeur de texte favori et ouvrez ce fichier. Notepad++ sera recommandé étant ouvert, voici un lien ci-dessous.
 
Ouvrez le fichier.
@echo off
runtime\bin\python\python_mcp runtime\decompile.py %*
pause

Le @echo off est utilisé à chaque début de .bat.

Le runtime\bin\python\python_mcp runtime\decompile.py %* est une commande qui ira ouvrir le fichier decompile.py, un script en Python que vous pourrez analyser seul ou plus tard dans les chapitres à venir quand vous souhaiterez en savoir plus sur le fonctionnement de MCP. Les scripts Python ont un nom d'extension qui finit en .py.

Le pause sert à ne pas fermer la console Windows (CMD) lors de la fin de l'exécution du script Python et à demander à l'utilisateur de saisir une touche pour fermer la console.

Le moment code est terminé, vous allez pouvoir vérifier si la décompilation est terminée.

Si c'est le cas vous aurez un message vous l'indiquant et vous pourrez vérifier que le dossier src contient bien le code source Client et Serveur.

E] - Ouverture de MCP et correction des problèmes (1.7.10 et 1.6.4).

Vous pouvez désormais exécuter votre IDE favori et sélectionner le dossier eclipse comme workspace (Votre environnement de travail appelé workspace).
Si vous êtes en 1.8 ou sur une version supérieure vous avez fini ce tutoriel si vous avez des erreurs alors adaptez vous en fonction de cet exemple de la version 1.6.4.

Si vous avez suivi les instructions précédentes alors vous arriverez sur votre IDE. Vous aurez 4 erreurs si vous êtes en 1.6.4.

"Project 'Client' is missing required library: 'jars/versions/1.6.3/1.6.3.jar'".

Vous devez avoir un niveau en anglais vous permettant de comprendre ce message d'erreur.

Le projet Client nécessite une librairie permettant son fonctionnement. Cette librairie doit se situer selon ce chemin d'accès : jars/versions/1.6.3/1.6.3.jar.

Pour corriger ce problème maintenez la touche Ctrl et tout en gardant la touche enfoncée, appuyez sur la touche H.

Ce raccourci clavier Eclipse vous permet d'avoir accès à une fenêtre de recherche. Tapez 1.6.3 dans l'onglet File Search. Lancez la recherche en appuyant sur le bouton search. Dans l'onglet Search venant d'apparaitre une liste est disponible. Il y à l’icône Client et Server et leur nom. Sous Client vous avez un fichier nommé .classpath.

Ce fichier contient 4 résultats de recherches omis dans votre onglet File Search. Ouvrez ce fichier à la ligne 23 ou 25.

Analysons ce fichier.

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="src" path="src"/>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
	<classpathentry kind="lib" path="jars/libraries/argo/argo/2.25_fixed/argo-2.25_fixed.jar"/>
	<classpathentry kind="lib" path="jars/libraries/com/google/code/gson/gson/2.2.2/gson-2.2.2.jar"/>
	<classpathentry kind="lib" path="jars/libraries/com/google/guava/guava/14.0/guava-14.0.jar"/>
	<classpathentry kind="lib" path="jars/libraries/com/paulscode/codecjorbis/20101023/codecjorbis-20101023.jar"/>
	<classpathentry kind="lib" path="jars/libraries/com/paulscode/codecwav/20101023/codecwav-20101023.jar"/>
	<classpathentry kind="lib" path="jars/libraries/com/paulscode/libraryjavasound/20101123/libraryjavasound-20101123.jar"/>
	<classpathentry kind="lib" path="jars/libraries/com/paulscode/librarylwjglopenal/20100824/librarylwjglopenal-20100824.jar"/>
	<classpathentry kind="lib" path="jars/libraries/com/paulscode/soundsystem/20120107/soundsystem-20120107.jar"/>
	<classpathentry kind="lib" path="jars/libraries/commons-io/commons-io/2.4/commons-io-2.4.jar"/>
	<classpathentry kind="lib" path="jars/libraries/net/java/jinput/jinput/2.0.5/jinput-2.0.5.jar"/>
	<classpathentry kind="lib" path="jars/libraries/net/java/jinput/jinput-platform/2.0.5/jinput-platform-2.0.5-natives-windows.jar"/>
	<classpathentry kind="lib" path="jars/libraries/net/java/jutils/jutils/1.0.0/jutils-1.0.0.jar"/>
	<classpathentry kind="lib" path="jars/libraries/net/sf/jopt-simple/jopt-simple/4.5/jopt-simple-4.5.jar"/>
	<classpathentry kind="lib" path="jars/libraries/org/apache/commons/commons-lang3/3.1/commons-lang3-3.1.jar"/>
	<classpathentry kind="lib" path="jars/libraries/org/bouncycastle/bcprov-jdk15on/1.47/bcprov-jdk15on-1.47.jar"/>
	<classpathentry kind="lib" path="jars/libraries/org/lwjgl/lwjgl/lwjgl-platform/2.9.0/lwjgl-platform-2.9.0-natives-windows.jar"/>
	<classpathentry kind="lib" path="jars/libraries/org/lwjgl/lwjgl/lwjgl_util/2.9.0/lwjgl_util-2.9.0.jar"/>
	<classpathentry kind="lib" path="jars/libraries/org/lwjgl/lwjgl/lwjgl/2.9.0/lwjgl-2.9.0.jar"/>
	<classpathentry kind="lib" path="jars/versions/1.6.3/1.6.3.jar">
		<attributes>
			<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="Client/jars/versions/1.6.3/1.6.3-natives"/>
		</attributes>
	</classpathentry>
	<classpathentry kind="output" path="bin"/>
</classpath>

Il s'agit d'un fichier XML. Le rendu du code est assez peu esthétique donc les lignes recherchées seront séparées de ce bloc. Un tutoriel sera réalisé pour la compréhension du XML.

 

La ligne 23 est la source de la première erreur.

<classpathentry kind="lib" path="jars/versions/1.6.3/1.6.3.jar">

Pour faire simple le chemin d'accès (path) est "jars/versions/1.6.3/1.6.3.jar". Allez chercher ce fichier à l'endroit ou il est indiqué.

C'est bon ? Vous l'avez trouvé ? Cela m'étonnerait fortement car ce fichier n'existe pas. Vous avez trouvé un autre fichier, non ? Un autre dossier ?

Et bien c'est tout simplement car le .jar décompilé est celui de la version 1.6.4 et vous avez trouvé le dossier 1.6.4 et le fichier 1.6.4.jar.

Pour corriger cette erreur, la réparer (la fixer) vous devez modifier directement dans le XML. Utilisez votre logique.

<classpathentry kind="lib" path="jars/versions/1.6.4/1.6.4.jar">
			<attribute name="org.eclipse.jdt.launching.CLASSPATH_ATTR_LIBRARY_PATH_ENTRY" value="Client/jars/versions/1.6.4/1.6.4-natives"/>

C'est bon ? Voici les lignes corrigées. Vous voyez que tout ce qui rapportait à la mention 1.6.3 à été modifié en 1.6.4 ? Et bien c'est ce qu'il fallait faire. Vous vous demandez 

quel est la deuxième ligne ? Et bien il s'agit des natives, leur principe sera expliqué dans les chapitres suivants, si vous voulez le savoir allez faire vos recherches.

Retournez dans l'onglet Problems, vous verrez que les deux erreurs ne sont plus. Cependant il y à 4 warnings. Corrigez les erreurs du serveur.

Les warnings seront expliqués après cela.

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
	<classpathentry kind="src" path="src"/>
	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
	<classpathentry kind="lib" path="jars/minecraft_server.1.6.3.jar"/>
	<classpathentry kind="output" path="bin"/>
</classpath>

Vous serez maintenant mis à l'épreuve, aucune aide ne sera mise à votre disposition.

Quand cette erreur sera corrigée vous verrez que 3 warnings sont apparus, il y en à 10.

Pour vous tester une fausse valeur à été placée pour voir si vous étiez attentif, la valeur exacte est 7.

Nous irons corriger les warnings par la suite lors d'un prochain chapitre. Maintenant vous avez un Client et un Serveur fonctionnels, mes félicitations !

Si vous avez une autre version que la 1.6.4 ce tutoriel vous aura appris à corriger vos erreurs de vous même.

Merci d'avoir suivi ce tutoriel !

 

 

1

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant