le forum de MineStrator

Nous ne cherchons pas à être un forum, mais le forum de référence pour les administrateurs et joueurs de serveurs minecraft, la communauté a besoin de toi, alors n'hésite pas à t'inscrire et à participer à la vie du forum !

Tutoriel Mod Coder Pack : comment modifier minecraft à la source !

Ce type de tutoriel vous plait ?

  • Oui

  • Non


Les résultats ne sont visibles qu'après le vote.

Dorvak

Membre
/!\ Ce tutoriel a été réalisé avec MCP 908 (Minecraft 1.7.10) /!\
Je vous conseille fortement de développer des mods après cette version de minecraft.

Sachez que ce tutoriel n'est pas terminé dû à un manque de temps et de motivation. Merci de votre compréhension.
Voici le début de ce tutoriel, il se diviseras en plusieurs parties et chacune seras rédigé en plusieurs fois
(je n'ai pas beaucoup de temps)


La première partie concernera l'installation, La seconde l'ajout de blocks et la troisième les items, il est possible que je rajoute des parties en fonction du temps dont je dispose.
Liste du nécessaire :
e;
, logiciel que j'utiliserais dans ce tutoriel;
Minecraft (Je pense pas que vous vous y attendiez non ?);
Quelques connaissances en java ( ;
Quelques ressources ( );
Beaucoup de temps (Vraiment);
Et un cerveau !
Première partie : Configuration et démarrage !
Dans cette partie, nous allons voir comment installer un client minecraft modifié à l'aide de Mod Coder Pack.
Nous allons commencer par extraire les fichiers du .zip sur notre bureau. Une fois ceci fait, nous allons nous rendre dans le dossier et ouvrir la fonction "decompile", une console apparaît alors.
Capture.JPG
Le jeu a commencé a être décompilé ! (Note : il faut avoir lancé au moins 1 fois la version du jeu correspondante avec le launcher minecraft !)
Une fois la fonction décompile terminée (Cette fonction peut durer plusieurs minutes selon l’ordinateur et la version à décompiler). Nous allons donc lancer éclipse ! Nous pouvons remarquer que de nouveaux fichiers ont apparus, dans notre cas, c'est celui de éclipse qui vas nous intéresser.
Capture.JPG
Sur éclipse nous allons suivre les étapes suivantes :
File > Switch workspace > Other et nous arrivons ici :
Capture.JPG
Nous allons faire "Browse..." et nous allons chercher notre dossier éclipse.
Capture.JPG
On fait "Sélectionner un dossier" puis "Launch". Eclipse vas alors redémarrer et on se retrouveras avec des fichiers disposés comme cela :
Capture.JPG
Pour ne pas se brûler les yeux durant le tutoriel, nous allons changer la couleur du thème : Window > Preferences > General > Appearance et nous allons sélectionner le thème "Dark", puis apply and close.
Nous pouvons supprimer le fichier "Server" car il ne nous intéresse pas.
Sur le client nous pouvons remarquer qu'il y a une erreur, nous allons donc nous empresser de la régler !
Capture.JPG
Nous allons faire clique droit sur "Client" > Properties (en bas) > Java Build Path > Libraries, puis nous allons chercher les fichiers ayant une croix
Capture.JPG
Une fois trouvés, nous allons faire "Edit" puis nous allons chercher le .jar dans mcp931 > jars > libraries > com > mojang > realms > 1.9.1 et sélectionner le fichier "realm-1.9.0.jar", après faites, de même pour Authlib puis faites "apply and close", l'erreur a maintenant disparu. Pour vérifier que tout est bon, nous pouvons lancer le jeu.
Capture.JPG
Notre jeu a donc démarré, nous passons donc à la seconde partie !
Capture.JPG
Deuxième partie : Ajoutons nos premiers blocks !
Pour commencer, nous allons nous rendre dans le package net.minecraft.block et ouvrir la classe Block.java ainsi que la classe Blocks.java dans le package net.minecraft.init.
Dans la classe Blocks au niveau de la ligne 204 au dessus de cette ligne de code :
Capture.JPG
Pour ajouter un bloc nous allons ajouter le code suivant :
Java:
    public static final Block tutorial_block = (Block)Block.blockRegistry.getObject("tutorial block");
Block correspond au type d'item, tutorial_block au nom de l'item et "tutorial block" au nom dont le jeu se servira pour l'implémenter. Nous allons maintenant mettre le même code pour ajouter le minerais !
Java:
    public static final Block tutorial_ore = (Block)Block.blockRegistry.getObject("tutorial ore");
Après cela, nous nous rendons dans la classe Block.java en dessous des blockRegistry et au dessus de
Java:
 Iterator var10 = blockRegistry.iterator();
Précédemment nous avions dit a minecraft que les blocks tutorial_ore et tutorial_block existaient, maintenant on vas lui dire de les prendre en compte dans le jeu lors du démarrage, comme ceci :
Java:
    //Ajout des blocks
        blockRegistry.addObject(176, "tutorial_block", (new BlockCompressed(MapColor.field_151648_G).setHardness(5.0F).setResistance(10.0F).setStepSound(soundTypeStone).setBlockName("tutorial_block").setBlockTextureName("tutorial_block")));
176 correspond à l'id du block (chaque id doit être différent pour éviter les bugs), "tutorial_block" au nom du block à charger, MapColor est une variable qui permet de l'ajouter sur la map, le setHardness correspond à la ténacité du block (minage), le setResistance correspond à la résistance aux explosion, le stepSound est le son joué quand on marche dessus (il vaut mieux mettre un son de stone), le setBlockName correspond au nom donné au block (en /give par exemple) et le setBlockTextureName est le nom de la texture du block que le jeu devra aller chercher.
On fais de même pour le minerais tutoriel en pensant à ajouter 1 à l'id sinon il ne seras pas pris en compte !
Afin de limiter les crashs, nous allons nous rendre dans le package net.minecraft.entity.monster et changer le nombre de blocks que peut accepter un enderman.
Pour cela nous allons dans la classe "EntityEnderman.java" située dans le package cité au dessus, et dans le "boolean carriableBlocks" on vas remplacer "[256]" par un chiffre supérieur. Par exemple, nous allons mettre 999 pour ne pas être embêté au niveau des limitations, même si 258 suffirait comme nous allons implémenter seulement 2 blocks dans ce tutoriel.
Maintenant, lançons notre jeu afin de voir comment sont nos items. Main nous pouvons nous rendre compte qu'ils n'ont pas de textures, nous allons donc les ajouter maintenant :
Pour cela, nous allons nous rendre dans le dossier mcp situé sur notre bureau puis aller dans "jars > versions > 1.7.10" (pour moi) puis on vas faire clique droit sur 1.7.10 > Ouvrir avec winRar, on se rend dans assets > minecraft > textures > blocks et on fait un glisser - déposer de notre texture avec le nom utilisé pour le "setBlockTextureName" dedans.
Après cela, on retourne sur éclipse et on lance notre minecraft modifié et tadaaa, les textures ont étés ajoutées !
Capture.JPG
Mais ce n'est pas fini, il faut définir qu'on puisse le casser et récupérer des items. Pour cela, on se rend dans net.minecraft.block et on ouvre la classe BlockOre.java après la ligne 87, on ajoute ce code au dessus du this.drop.....
Java:
  else if (this == Blocks.tutorial_ore)
                var8 = MathHelper.getRandomIntegerInRange(p_149690_1_.rand, 2, 5);

Ce code est essentiel pour pouvoir intégrer entièrement un block / minerais (même un minerais type diamant ou il doit donner des diamants et non le minerais quand il est cassé). Dans la partie suivante nous verrons comment faire en sorte qu'il donne immédiatement un "lingot de tutoriel" lorsque il est cassé.

Note : le nom buggé des items en jeu seras fixé dans la troisième partie du tutoriel.
 
Dernière édition:

keke142

Membre
L'initiative est sans doute très bonne, mais tu passes ton temps à dire "Ajoutez une ligne là" sans même vraiment expliquer pourquoi, ce que ça engendre précisément au niveau du code, pourquoi mettre ces paramètres etc... On se demande au final si toi-même tu sais ce que tu fais ?
 

D0fy

Membre
Soigne un peu plus la présentation pour que sa soit plus agréable à lire sinon très bon tutoriel.
 
Auteur
Auteur
Dorvak

Dorvak

Membre
Soigne un peu plus la présentation pour que sa soit plus agréable à lire sinon très bon tutoriel.
Noté, je vais améliorer sa quand je serais sur mon ordinateur
Post automatiquement migré:

L'initiative est sans doute très bonne, mais tu passes ton temps à dire "Ajoutez une ligne là" sans même vraiment expliquer pourquoi, ce que ça engendre précisément au niveau du code, pourquoi mettre ces paramètres etc... On se demande au final si toi-même tu sais ce que tu fais ?
D'accord, je vais améliorer la rédaction quand je serais sur mon ordinateur, merci pour la remarque !
Post automatiquement migré:

C'est bien mais faudrait mettre des images plus grande
J'ai agrandi les images t'en pense quoi ?
 
Dernière édition:

Maxlego08

Membre
Noté, je vais améliorer sa quand je serais sur mon ordinateur
Post automatiquement migré:


D'accord, je vais améliorer la rédaction quand je serais sur mon ordinateur, merci pour la remarque !
Post automatiquement migré:


J'ai agrandi les images t'en pense quoi ?
C'est mieux comme ça parfait :D
 
/!\ Ce tutoriel a été réalisé avec MCP 908 (Minecraft 1.7.10) /!\
Je vous conseille fortement de développer des mods après cette version de minecraft.

Sachez que ce tutoriel n'est pas terminé dû à un manque de temps et de motivation. Merci de votre compréhension.
Voici le début de ce tutoriel, il se diviseras en plusieurs parties et chacune seras rédigé en plusieurs fois
(je n'ai pas beaucoup de temps)


La première partie concernera l'installation, La seconde l'ajout de blocks et la troisième les items, il est possible que je rajoute des parties en fonction du temps dont je dispose.
Liste du nécessaire :
e;
, logiciel que j'utiliserais dans ce tutoriel;
Minecraft (Je pense pas que vous vous y attendiez non ?);
Quelques connaissances en java ( ;
Quelques ressources ( );
Beaucoup de temps (Vraiment);
Et un cerveau !
Première partie : Configuration et démarrage !
Dans cette partie, nous allons voir comment installer un client minecraft modifié à l'aide de Mod Coder Pack.
Nous allons commencer par extraire les fichiers du .zip sur notre bureau. Une fois ceci fait, nous allons nous rendre dans le dossier et ouvrir la fonction "decompile", une console apparaît alors.
Le jeu a commencé a être décompilé ! (Note : il faut avoir lancé au moins 1 fois la version du jeu correspondante avec le launcher minecraft !)
Une fois la fonction décompile terminée (Cette fonction peut durer plusieurs minutes selon l’ordinateur et la version à décompiler). Nous allons donc lancer éclipse ! Nous pouvons remarquer que de nouveaux fichiers ont apparus, dans notre cas, c'est celui de éclipse qui vas nous intéresser.
Sur éclipse nous allons suivre les étapes suivantes :
File > Switch workspace > Other et nous arrivons ici :
Nous allons faire "Browse..." et nous allons chercher notre dossier éclipse.
On fait "Sélectionner un dossier" puis "Launch". Eclipse vas alors redémarrer et on se retrouveras avec des fichiers disposés comme cela :
Pour ne pas se brûler les yeux durant le tutoriel, nous allons changer la couleur du thème : Window > Preferences > General > Appearance et nous allons sélectionner le thème "Dark", puis apply and close.
Nous pouvons supprimer le fichier "Server" car il ne nous intéresse pas.
Sur le client nous pouvons remarquer qu'il y a une erreur, nous allons donc nous empresser de la régler !
Nous allons faire clique droit sur "Client" > Properties (en bas) > Java Build Path > Libraries, puis nous allons chercher les fichiers ayant une croix
Une fois trouvés, nous allons faire "Edit" puis nous allons chercher le .jar dans mcp931 > jars > libraries > com > mojang > realms > 1.9.1 et sélectionner le fichier "realm-1.9.0.jar", après faites, de même pour Authlib puis faites "apply and close", l'erreur a maintenant disparu. Pour vérifier que tout est bon, nous pouvons lancer le jeu.
Notre jeu a donc démarré, nous passons donc à la seconde partie !
Deuxième partie : Ajoutons nos premiers blocks !
Pour commencer, nous allons nous rendre dans le package net.minecraft.block et ouvrir la classe Block.java ainsi que la classe Blocks.java dans le package net.minecraft.init.
Dans la classe Blocks au niveau de la ligne 204 au dessus de cette ligne de code :
Pour ajouter un bloc nous allons ajouter le code suivant :
Java:
    public static final Block tutorial_block = (Block)Block.blockRegistry.getObject("tutorial block");
Block correspond au type d'item, tutorial_block au nom de l'item et "tutorial block" au nom dont le jeu se servira pour l'implémenter. Nous allons maintenant mettre le même code pour ajouter le minerais !
Java:
    public static final Block tutorial_ore = (Block)Block.blockRegistry.getObject("tutorial ore");
Après cela, nous nous rendons dans la classe Block.java en dessous des blockRegistry et au dessus de
Java:
 Iterator var10 = blockRegistry.iterator();
Précédemment nous avions dit a minecraft que les blocks tutorial_ore et tutorial_block existaient, maintenant on vas lui dire de les prendre en compte dans le jeu lors du démarrage, comme ceci :
Java:
    //Ajout des blocks
        blockRegistry.addObject(176, "tutorial_block", (new BlockCompressed(MapColor.field_151648_G).setHardness(5.0F).setResistance(10.0F).setStepSound(soundTypeStone).setBlockName("tutorial_block").setBlockTextureName("tutorial_block")));
176 correspond à l'id du block (chaque id doit être différent pour éviter les bugs), "tutorial_block" au nom du block à charger, MapColor est une variable qui permet de l'ajouter sur la map, le setHardness correspond à la ténacité du block (minage), le setResistance correspond à la résistance aux explosion, le stepSound est le son joué quand on marche dessus (il vaut mieux mettre un son de stone), le setBlockName correspond au nom donné au block (en /give par exemple) et le setBlockTextureName est le nom de la texture du block que le jeu devra aller chercher.
On fais de même pour le minerais tutoriel en pensant à ajouter 1 à l'id sinon il ne seras pas pris en compte !
Afin de limiter les crashs, nous allons nous rendre dans le package net.minecraft.entity.monster et changer le nombre de blocks que peut accepter un enderman.
Pour cela nous allons dans la classe "EntityEnderman.java" située dans le package cité au dessus, et dans le "boolean carriableBlocks" on vas remplacer "[256]" par un chiffre supérieur. Par exemple, nous allons mettre 999 pour ne pas être embêté au niveau des limitations, même si 258 suffirait comme nous allons implémenter seulement 2 blocks dans ce tutoriel.
Maintenant, lançons notre jeu afin de voir comment sont nos items. Main nous pouvons nous rendre compte qu'ils n'ont pas de textures, nous allons donc les ajouter maintenant :
Pour cela, nous allons nous rendre dans le dossier mcp situé sur notre bureau puis aller dans "jars > versions > 1.7.10" (pour moi) puis on vas faire clique droit sur 1.7.10 > Ouvrir avec winRar, on se rend dans assets > minecraft > textures > blocks et on fait un glisser - déposer de notre texture avec le nom utilisé pour le "setBlockTextureName" dedans.
Après cela, on retourne sur éclipse et on lance notre minecraft modifié et tadaaa, les textures ont étés ajoutées !
Mais ce n'est pas fini, il faut définir qu'on puisse le casser et récupérer des items. Pour cela, on se rend dans net.minecraft.block et on ouvre la classe BlockOre.java après la ligne 87, on ajoute ce code au dessus du this.drop.....
Java:
  else if (this == Blocks.tutorial_ore)
                var8 = MathHelper.getRandomIntegerInRange(p_149690_1_.rand, 2, 5);

Ce code est essentiel pour pouvoir intégrer entièrement un block / minerais (même un minerais type diamant ou il doit donner des diamants et non le minerais quand il est cassé). Dans la partie suivante nous verrons comment faire en sorte qu'il donne immédiatement un "lingot de tutoriel" lorsque il est cassé.

Note : le nom buggé des items en jeu seras fixé dans la troisième partie du tutoriel.
Post automatiquement migré:

ta fait la troisieme partie
 

KIZILANDO

Membre
Ce n'est pas de ta faute mais mon eclipse ne marche pas a tu une idée ?
eclipse.png

Voilà ce que ça me met
 
== MCP 9.40 (data: 9.40, client: 1.12, server: 1.12) ==
"scalac" is not found on the PATH. Scala files will not be recompiled
# found ff, ff patches, srgs, name csvs, doc csvs, param csvs, astyle, astyle config, rg, ss
FATAL ERROR
Traceback (most recent call last):
File "runtime\decompile.py", line 63, in decompile
commands.checkupdates()
File "C:\Users\Dylan17\Desktop\mcp940\runtime\commands.py", line 1063, in checkupdates
md5_file = md5(fh.read()).hexdigest()
IOError: [Errno 13] Permission denied

Comment on règle le bug ?
 

Haut