Après quelques recherches, nous nous sommes rendu compte que « modding » prend deux ‘d’. Vous avez été nombreux à nous faire remarquer le manque de contenu dans les articles du guide et cette fois ci, vous allez être servis en informations avec ces 3194 mots exactement ! Aujourd’hui, nous aborderons la première partie du codage, mais avant tout, comme la semaine dernière, un petit planning :
- Création du premier bloc et du premier item
- Leur donner des fonctions dans le jeu
- Travaux pratiques : un bloc spécial (pour les confirmés)
Commençons tout de suite avec la création !
Création du premier bloc et premier item
Vous avez été nombreux à attendre ce moment où nous allons enfin coder. Quelque chose de simple pour commencer : lançons Eclipse. De là, il vous faut créer un nouveau fichier que nous allons appeler « mod_minecraftfr » ; vous n’êtes pas obligé de mettre comme moi le « minecraftfr » mais il est à savoir qu’il faut obligatoirement mettre le « mod_ » devant. Si tout se passe bien vous devriez avoir :
package net.minecraft.src;
public class mod_minecraftfr {
}
dans votre classe. Maintenant, il faut faire un héritage vers le fichier « BaseMod » de Modloader. Pour ça, on ajoute simplement « extends BaseMod » après « public class mod_minecraftfr » ce qui devrait vous donner :
public class mod_minecraftfr extends BaseMod
À quoi sert un héritage ? Et bien tout simplement à donner les propriétés de la class héritée. C’est à dire que maintenant, notre class « mod_minecraftfr » a les mêmes propriétés que le fichier « BaseMod » de ModLoader.
Si tout a fonctionné, « mod_minecraftfr » devrait être souligné en rouge. Nous allons passer notre souris dessus, sans cliquer, et attendre qu’il nous affiche quelque chose. Il vous suffira de cliquer sur « Add unimplamented methods » qui va simplement ajouter les fonctions abstraites du fichier « BaseMod ».
Maintenant que nous avons fait le plus simple, passons à la partie code ! Normalement votre fichier devrait ressembler à :
package net.minecraft.src;
public class mod_minecraftfr extends BaseMod {
@Override
public String getVersion() {
// TODO Auto-generated method stub
return null;
}
@Override
public void load() {
// TODO Auto-generated method stub
}
}
Il nous faut créer la première méthode dans ce fichier qui doit obligatoirement s’appeler « mod_minecraftfr » ; la fonction sera donc :
public mod_minecraftfr()
{
}
à ajouter entre
public class mod_minecraftfr extends BaseMod {
et
@Override
public String getVersion() {
// TODO Auto-generated method stub
return null;
}
C’est dans cette méthode que nous ajouterons la création du bloc et de l’item, ainsi que pour leur ajouter un nom et une recette. Pour ça il va falloir faire appel à la class « ModLoader ». Nous allons créer notre premier bloc avec le code :
ModLoader.registerBlock(premierbloc);
qui demande, ici, à ModLoader d’ajouter le bloc représenté par la variable « premierbloc ». Pour ceux qui ont suivi jusqu’ici, vous devriez en être là :
public mod_minecraftfr()
{
ModLoader.registerBlock(premierbloc);
}
Nous allons maintenant, ajouter un nom à notre bloc grâce à la fonction : addName. La fonction sera donc :
ModLoader.addName(premierbloc, "Le bloc du tutoriel");
Pourquoi j’ai remis la variable « premierbloc » ? Car il faut que le bloc « premierbloc » ait comme nom « Le bloc du tutoriel » !
Et maintenant c’est certainement le code le plus dur à comprendre, comment lui ajouter une recette. Il nous faut tout d’abord, utiliser la fonction : addRecipe. Ce qui va nous donner finalement :
ModLoader.addRecipe(new ItemStack(premierbloc, 1), new Object[]
{"X", Character.valueOf('X'), Item.stick});
Ne faites pas la grimace, nous allons tout détailler ! On demande d’abord à ModLoader de créer une nouvelle recette, ensuite le « new ItemStack » dit à Minecraft qu’il va falloir créer une nouvelle pile d’item. Avec le « premierbloc » on lui dit qu’il faut qu’il nous créer l’objet « premierbloc » et le 1 signifie qu’on en veut un. Le « new Object[] » est impossible à expliquer. Voilà le plus important de ce code : la recette en elle-même. Ici le X signifie que pour avoir notre bloc, il nous faut placer dans la table de craft 1 stick. La recette peut donc être
comme
Si nous avions voulu faire le même craft que la table d’enchantement par exemple le code aurait été :
ModLoader.addRecipe(new ItemStack(premierbloc, 1), new Object[]
{" B ", "DOD", "OOO", Character.valueOf('O'), Block.obsidian, Character.valueOf('B'), Item.book, Character.valueOf('D'), Item.diamond});
En fait, les lettres B, DOD et OOO sont des représentations littéraires des objets à mettre dans la table de crafting : si on considère que O c’est de l’obsidienne, B un livre et D du diamant et qu’on met les lignes du craft les unes sur les autres on tombe sur ça :
B
DOD
OOO
Ce qui correspond au patron in-game de la table d’enchantement !
Voilà maintenant le passage le plus dur. La création de la variable et l’instauration des paramètres de bloc. Donc on va sortir de la méthode que nous modifions jusqu’ici et nous allons donc initialiser notre variable « premierbloc ». Pour ça il va falloir écrire :
public static final Block premierbloc;
Nous venons d’initialiser le bloc. Le seul problème c’est que notre bloc n’a ni texture, ni ID, ni résistance, ni son, ni nom. Il va falloir continuer d’initialiser notre variable pour que le jeu reconnaisse notre bloc comme un vrai bloc.
public static final Block premierbloc = new BlockPremierBloc;
Le jeu comprend maintenant que la variable « premierbloc » est attribué à la classe « BlockPremierBloc ». Rien de vous fait tilt dans la tête ? Nous n’avons même pas encore créé cette classe ! Et nous le ferons tout à l’heure. En attendant, finissons notre bloc. Maintenant il faut lui donner un ID unique et une texture grâce, encore, à une fonction de ModLoader.
public static final Block premierbloc = new BlockPremierBloc(125, ModLoader.addOverride("/terrain.png","/minecraftfr/premierbloc.png"));
Ici nous avons mis en ID 125, sachez que lors de la rédaction de ce tutoriel, le dernier ID utilisé par Minecraft est le 124 c’est pour quoi nous avons utiliser 125. Aussi, nous demandons à ModLoader d’ajouter une texture grâce à la fonction « addOverride » ; ensuite, nous faisons appel au terrain.png et ça il ne faut pas le toucher ! Par contre, nous faisons appel juste après à l’image « premierbloc.png » qui est placé dans le dossier « minecraftfr ». Vous l’aurez compris il faut le créer !
Pour créer ce dossier il vous faut retourner dans le dossier « jars » de MCP et accéder à votre minecraft.jar avec 7ZIP ou Winrar.
Et vous placez dans ce dossier la texture de votre nouveau bloc. Nous allons utiliser, pour ce tutoriel, la texture d’un bloc de redstone :
Enregistrez la bien sous le nom « premierbloc » et sous l’extension d’image « .png ». Vous pouvez lancer le jeu ? Que nenni ! Il nous reste encore quelques paramètres à mettre sur notre bloc. Pour commencer la résistance à l’explosion et la résistance à la main. Pour ça nous allons utiliser un petit morceau de la variable de l’obsidian.
public static final Block obsidian = new BlockObsidian(49, 37)
.setHardness(50F).setResistance(2000F);
Bien entendu ce code n’est pas l’original, nous l’avons simplement modifié de façon à l’adapter à nos capacités actuelles. Ici nous pouvons voir que le hardness vaut 50, nous pouvons donc imaginer que c’est la destruction à la main et la Resistance c’est la résistance aux explosions. Donc nous allons mettre dans la variable de notre bloc
public static final Block premierbloc = new BlockPremierBloc(125, ModLoader.addOverride("/terrain.png","/minecraftfr/premierbloc.png"))
.setHardness(1.5F).setResistance(2F);
Donc la résistance à la main est de 1,5 et la résistance aux explosifs est de 2. Maintenant il faut faire appel au nom de la variable dans la fonction setBlockName de la class Block. Pour ça on va simplement ajouter :
public static final Block premierbloc = new BlockPremierBloc(125, ModLoader.addOverride("/terrain.png","/minecraftfr/premierbloc.png"))
.setHardness(1.5F).setResistance(2F).setBlockName("premierbloc");
Ce qui est entre guillemets doit obligatoirement être votre variable. Il nous reste plus qu’une chose à paramétrer sur notre bloc : le son. Pour ça nous allons utiliser la fonction setStepSound.
public static final Block premierbloc = new BlockPremierBloc(125, ModLoader.addOverride("/terrain.png","/minecraftfr/premierbloc.png"))
.setHardness(1.5F).setResistance(2F).setBlockName("premierbloc").setStepSound(Block.soundGrassFootstep);
On peut voir tout simplement ici que nous avons demander à Minecraft de nous jouer le son de la grass (ou de l’herbe pour ceux qui ont le jeu en français). Il existe d’autres types de sons qui sont énumérés à la suite :
– Glass
– Grass
– Wood
– Gravel
– Sand
– Metal
– Stone
Nous venons de terminer notre travail sur le fichier « mod_minecraftfr » mais vous ne pouvez toujours voir votre bloc en jeu et ça vient tout simplement qu’il vous manque un fichier primordial : BlockPremierBloc. Donc nous allons le créer mais avant tout je vous donne le code complet de « mod_minecraftfr » pour éviter que vous ne vous perdiez.
package net.minecraft.src;
public class mod_minecraftfr extends BaseMod {
public static final Block premierbloc = new BlockPremierBloc(125, ModLoader.addOverride(“/terrain.png”, “/minecraftfr/premierbloc.png”))
.setBlockName(“premierbloc”).setHardness(1.5F)
.setResistance(2F).setStepSound(Block.soundGrassFootstep);
public mod_minecraftfr()
{
ModLoader.registerBlock(premierbloc);
ModLoader.addName(premierbloc, “Le bloc du tutoriel”);
ModLoader.addRecipe(new ItemStack(premierbloc, 1), new Object[]
{“X”, Character.valueOf(‘X’), Item.stick});
}
@Override
public String getVersion() {
// TODO Auto-generated method stub
return null;
}
@Override
public void load() {
// TODO Auto-generated method stub
}
}
Ceci fait, nous pouvons créer notre fichier « BlockPremierBloc ». Si tout se passe bien vous devriez avoir :
package net.minecraft.src;
public class BlockPremierBloc {
}
Ici nous allons faire comme tout à l’heure, c’est à dire créer un héritage de la class Block. Votre code devrait, normalement, ressembler à ça :
package net.minecraft.src;
public class BlockPremierBloc extends Block {
}
Mais là, comme tout à l’heure, il va falloir survoler « BlockPremierBloc » et cliquer sur « Add constructor ‘BlockPremierBloc(int, int, Material)’ ».
Le code doit ressembler à :
package net.minecraft.src;
public class BlockPremierBloc extends Block {
protected BlockPremierBloc(int par1, int par2, Material par3Material) {
super(par1, par2, par3Material);
// TODO Auto-generated constructor stub
}
}
C’est maintenant qu’un partie légèrement plus dure va arriver. Entre parenthèse dans la fonction nous pouvons lire :
int par1, int par2, Material par3Material
Là dedans il va vous falloir supprimer «, Material par3Material » pour la simple raison que nous ne nous en servirons pas et ce, quel que soit le mod que vous réalisez avec ModLoader. Et maintenant la partie la plus simple dans ce fichier. Nous pouvons voir ce code :
super(par1, par2, par3Material);
et nous allons le modifier en
super(par1, par2, Material.grass);
Maintenant, une petite explication. En fait nous disons simplement à Minecraft que le bloc de nous venons de créer est de type « grass ». Il existe d’autres types que nous vous laissons découvrir directement dans les codes.
Si vous avez bien suivi jusque là, vous devriez avoir ceci après le craft :
Et bien chers lecteurs, vous venez de réaliser votre premier bloc !
Passons maintenant à la création de l’item. Cette partie est plus courte car nous avons vu une grosse partie dans la partie dédiée à la création du bloc.
Nous allons tout simplement reprendre notre fichier « mod_minecraftfr » ajouter le nom et la recette de notre item comme tout à l’heure pour le bloc. Pour ceux qui auraient déjà oublié, nous allons revoir les code ensemble.
ModLoader.addName(premieritem, "L'item du tuto");
Comme tout l’heure, j’ai appliqué le texte « L’item du tuto » à la variable « premieritem » que nous créerons tout à l’heure. Maintenant il nous faudra ajouter la recette. Pour cette recette nous allons faire un bâton de redstone donc nous allons créer un recette semblable à une pelle.
[spoiler]ModLoader.addRecipe(new ItemStack(premieritem, 1), new Object[]
{" # ", " X ", " X ", Character.valueOf('X'), Item.blazeRod, Character.valueOf('#'), Item.redstone});
[/spoiler]
Ceci fait il nous faut créer la variable « premieritem » qui, comme le bloc, va définir les paramètres. La première chose à faire est de créer cette variable, l’affecter à un fichier et donner un ID à l’item. Rien de dur vous allez voir :
public static final Item premieritem = new ItemPremierItem(500);
Comme dit plus haut, j’ai initialisé ma variable, je l’ai affectée à un fichier (que nous créerons plus tard) et je lui ai donné l’ID 500. Maintenant il faut ajouter comme paramètre le nom du bloc qui est obligatoirement le même que votre variable soit ici « premieritem » :
public static final Item premieritem = new ItemPremierItem(500).setItemName("premieritem");
Et maintenant la chose la plus aisée, lui affecter une texture. Nous allons utiliser deux fonctions pour ça : la fonction setIconIndex de Minecraft et la fonction addOverride de ModLoader.
Bon je vous l’accorde on dirait plus une sucette à la fraise croisée avec une orange mais bon.
Pour ça il va falloir procéder comme suit :
public static final Item premieritem = new ItemPremierItem(500).setItemName("premieritem")
.setIconIndex(ModLoader.addOverride("/gui/items.png", "/minecraftfr/premieritem.png"));
Lorsque j’ai écrit « /gui/items.png » c’est car c’est obligatoire. Considérez le « terrain.png » des items. Lorsque vous assimilerez des textures à un item vous serez obligé de le mettre avant la texture. Maintenant que c’est fait, placez votre texture dans « .minecraft » dans le dossier « minecraftfr » que nous avons créé nous à l’heure. Vous l’aurez peut-être remarqué, nous avons attribué un fichier à notre variable qui n’existe pas ! C’est le moment de le créer. Créer ce fichier et héritez le de la class « Item ». Votre code devrait ressembler à celui ci :
package net.minecraft.src;
public class ItemPremierItem extends Item {
}
Comme pour « BlockPremierBloc » survolez ItemPremierItem et cliquez sur « Add constructor ‘ItemPremierItem(int)’ ». Comme un bloc de décoration ou un item d’encombrement n’est pas intéressant, nous allons nous atteler à leur donner des fonctions simples pour le début mais la semaine prochaine nous verrons les fonctions de Minecraft plus en détail afin de mieux s’amuser avec nos blocs et items.
Nos premières fonctions
Comme il est plus intéressant de savoir à l’avance nos objectifs nous allons en fixer deux. Deux simples pour se mettre dans le bain. Pour l’item, notre but est que lorsqu’on fait clique droit sur un bloc de fer, il va se transformer en bloc de redstone précédemment créé. Et pour notre bloc, on va lui faire droper de la redstone, par nombre de 5. Simple vous pensez ? Nous allons voir ça tout de suite !
On va commencer par le bloc car c’est le plus simple des deux. Le mieux pour commencer est de demander à Minecraft que notre bloc drope de la redstone. Dans le fichier Block de Minecraft il existe une fonction idDropped et une autre fonction quantityDropped. Nous allons donc utiliser les deux. Comme c’est une nouvelle fonction, il va falloir l’ajouter en la première et la dernière accolade ( { et } ) de notre fichier BlockPremierBloc.
La première fonction à ajouter est idDropped :
public int idDropped(int par1, Random par2Random, int par3)
{
return mod_minecraftfr.premierbloc.blockID;
}
Dans ce code nous voyons que nous avons fait appel à la variable qui est contenue dans notre fichier « mod_minecraftfr » et qui représente notre bloc. Attendez un instant, nous demandons à Minecraft qu’il se drope lui même ; le Java nous offre une possibilité pour raccourcir ce code :
public int idDropped(int par1, Random par2Random, int par3)
{
return this.blockID;
}
Ce petit mot « this » veut dire en Java « lui-même », donc nous demandons tout simplement à Java qu’il drope le bloc lui même. Si vous vous rappelez bien, notre objectif est de faire droper à notre bloc, de la redstone. Vous comprendrez que nous ne pouvons pas demander à Minecraft de droper le bloc dans ce cas là. Il va falloir faire appel à la class Item.
public int idDropped(int par1, Random par2Random, int par3)
{
return Item.redstone.shiftedIndex;
}
Comme la redstone est un item déjà présent dans Minecraft, il vous suffit de faire appel à lui. Vous avez peut-être remarqué le « blockID » s’est changé en « shiftedIndex », cela est dû au fait nous sommes passé d’un bloc à un item ; avouez que si nous avions mis « blockID » lorsqu’on fait appel à un item, le code n’aurait plus de logique ! Bon maintenant que nous avons notre item qui est dropé, il faut le faire droper un nombre de fois voulu et pour ça nous faisons appel à la fonction quantityDropped :
public int quantityDropped(Random par1Random)
{
return 5;
}
Donc comme nous pouvons le voir ici, nous avons fait appel à notre fonction et nous lui avons assimilé 5 de drop. Notre bloc est désormais fini, tout fonctionne ; le drop est opérationnel, passons maintenant à l’item.
Pour l’item c’est un poil plus dur. Il va falloir modifier cette fois ci notre fichier « ItemPremierItem ». Il va falloir utiliser la fonction onItemUse faire une condition pour récupérer l’ID du bloc sur lequel on fait clique droit et le changer en bloc de redstone. On va commencer par récupérer l’ID du bloc et ses coordonnées :
public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int i, int j, int k, int l)
{
if(par3World.getBlockId(i, j, k) == Block.blockSteel.blockID)
{
return true;
}
return false;
}
Ici nous avons fait appel au monde via « par3World » et nous avons récupérer l’ID du bloc via la fonction getBlockID. Nous avons récupéré les coordonnées du bloc avec les variable i, j et k et nous avons fait en sorte que si l’ID du bloc est celui du bloc de fer alors il exécute le code qui est entre les accolades. Maintenant, comment faisons-nous pour le bloc se transforme ? Nous demandons au monde de changer le bloc et de mettre le monde à jour grâce à la fonction setBlockWithNotify !
public boolean onItemUse(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, World par3World, int i, int j, int k, int l)
{
if(par3World.getBlockId(i, j, k) == Block.blockSteel.blockID)
{
par3World.setBlockWithNotify(i, j, k, mod_minecraftfr.premierbloc.blockID);
return true;
}
return false;
}
On n’oublie pas de donner les position du bloc via les variable i, j et k et de dire par quel bloc on veut qu’il se change ! Voilà nous avons créé notre premier, premier item et nous leur avons donné des fonctions ! Avant de vous laisser, sachez que rien de vaut un petit travail pratique !
Travaux pratiques
N’oubliez pas que cette partie est réservée à ceux qui ont bien tout compris, qui ont réussi, qui ont déjà varié les codes du tutoriel, bref ceux qui ont envie de percer là dedans ! Le TP de cette semaine n’est pas très dur je l’avoue. Il consiste à ce qui suit :
– Créer un bloc qui produit de la lumière
– Créer un item qui va changer aléatoirement un bloc de stone en bloc de diamant ou bien en bloc de dirt
Rien de bien dur comme dit précédemment mais c’est une bonne technique de travail. Nous n’allons pas vous laisser sur votre fin alors on va vous léguer quelques indices :
– Pour la lumière, lors que l’initialisation de la variable il y a une fonction .setLightValue(f)
– Pour le changement de bloc aléatoirement il existe un code en Java appelé « Random » (doc.)
Bonne chance à vous jeunes codeurs, n’hésitez pas à envoyer vos codes et/ou résultats à xVoltaire par MP sur le forum !
Aide
Tout codeur à forcément besoin d’aide un jour ou l’autre, car il bug, ne trouve pas un code ou autre. Nous avons pensé à ça, surtout si vous débutez. C’est pour quoi nous avons créé un topic spécial pour les questions, problèmes ou autre à cette adresse (sur le forum de Minecraft.fr). N’hésitez pas à exprimer vos problèmes mais nous vous demandons simplement de lire le premier post avant de poster car peut-être que votre réponse se trouve dedant. En attendant, nous vous souhaitons bonne chance !
Lien du topic : http://minecraft.fr/forum/index.php?threads/les-questions-relatives-aux-articles-sur-le-modding.41135/
Je ne trouve pas les éditions suivantes du modding ? Où est la suite ? :p
Petite astuce lorsque votre jeu crash quand vous tester le mod que vous avez cree liser bien la cause car il disent ou il y a eu une erreur (a quel ligne il y a l’erreur)
Help quand je code s’est BaseMode qui se met souligné à la place de mod_mincraft
package net.minecraft.src;
public class mod_mincraft extends BaseMod {
}
Une chose n’est pas précisée qui serait pas mal utile : dans le cas où l’on aurait crée un nouveau son à part entière (en .ogg bien sûr), déterminé un chemin pour le son (par exemple lorsqu’un zombie prend des dégâts :
*/
protected String getHurtSound()
{
return “mob.zombiehurt”;
}
) quel fichier .java faut-il éditer pour ajouter le nouveau son à la LibraryLWJGLOpenAL.class et ainsi éviter un plantage d’OpenAL et donc le démarrage de Minecraft en mode silencieux ?
En voulant créer un nouveau mob avec un nouveau son, je me suis heurté à ce problème au lancement de Minecraft. Si quelqu’un sait ce qu’il faut faire, dites moi siou’plaît ! :)
27 achievements
195 recipes
Setting user: Player896, –
LWJGL Version: 2.4.2
Client asked for parameter: server
ModLoader 1.3.2 Initializing…
Overriding /terrain.png with /tuto/premierblock.png @ 26. 31 left.
Mod Initialized: mod_tuto 1.3.2
Mod Loaded: mod_tuto 1.3.2
Done.
Exception in thread “Minecraft main thread” java.lang.ExceptionInInitializerError
at net.minecraft.client.Minecraft.startGame(Minecraft.java:404)
at net.minecraft.client.Minecraft.run(Minecraft.java:724)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.RuntimeException: java.lang.ArrayIndexOutOfBoundsException: 500
at net.minecraft.src.ModLoader.init(ModLoader.java:988)
at net.minecraft.src.ModLoader.addAllRenderers(ModLoader.java:186)
at net.minecraft.src.RenderManager.(RenderManager.java:86)
at net.minecraft.src.RenderManager.(RenderManager.java:14)
… 3 more
Caused by: java.lang.ArrayIndexOutOfBoundsException: 500
at net.minecraft.src.ModLoader.initStats(ModLoader.java:1002)
at net.minecraft.src.ModLoader.init(ModLoader.java:975)
… 6 more
Someone is closing me!
WTF!!
Par contre j’ai finis de créer le bloc mais quand je lance le minecraft c’est Modloader qui plante, alors qu’il ne plante pas tant que je n’ais pas créer le bloc. Si quelqu’un peut m’aider s’il vous plait.
moi lors de la recette le .valueOf(“X”) met une erreur comme quoi il n’est pas valable pour les (strings). Comment faire ?
Je crois que c’est parce qu’il ne faut pas mettre des guillemets, mais des apostrophes (le signe sur le 4).
Salut!
Déjà, merci pour le tutoriel, et vivement le quatrième (à moins que j’sois aveugle ;) ).
Il faudrait mettre à jour le lien pour la doc’ de la fonction random, j’ai du aller fouiner sur le Site du Zer0 pour la trouver.
Pour ceux qui regarderaient le tutoriel, vous pouvez utiliser la fonction : int #variable = (int)(Math.random()*(maximum-1);
(maximum-1) car le 0 est compté!
Bonne chance à ceux qui apprennent à faire des mods!
C est du chariabiat tout ca
lol
Bon ben finalement j’ai réussi à faire un bloc avec eclipse, mais comment je m’y prends maintenant pour crée plusieurs bloc ?
Il te suffit de les rajouter a la suite dans le mod_TONMODE
ModLoader.registerBlock(TONBLOCK);
ModLoader…
ModLoader.addrecipe (…)
{RECETTE});
ModLoader.registerBlock(TON_SECOND-BLOCK);
ModLoader…
Et ainci de suie, de meme pour la variable
public …. (variable de ton premier block )
public ….. (variable de ton second block)
Mais pour Notepad ++, il n’y a pas de fichier à son nom dans mcp c’est normal ?
J ai entendu dire que “le modding” allait recommencer j ais donc une petite suggestion qui est creer un launcher
Waiiiiuuuuuu O_O((((ji kompren rien je vé apelé mon méleur pote lui i c codé o moin ^^^^^
codé c pr lé kéké en faét ! wah cte charabia ki ns a sortit loteur
Je comprend pourquoi tu n’arrive pas a coder… Si tu ne sais même pas écrire correctement en français, tu auras beaucoup de mal a écrire dans un langage de programmation…
qui en plus est composé de moins de mots
3ème édition signifiait dernière édition? :/
Super Tuto , vivement la suite !
Par contre , comment coder un mod multijoueurs ? Y´a-t-il des differences ?
Hello ! Je ne pense pas qu’il y ait des différences, juste il faut que tes joueurs ait la même version du serveur avec les mods, etc …
A ce stade là, je pense qu’il faut avoir un launcher.
HELP , aprés avoir écrit extends BaseMod , c’est mon BaseMod et non pas mon mod_ qui est souligné en rouge .
désolé pour ce double poste, mais je veux vous indiquez que lorsque je passe ma souris sur le Base mod , il me propose comme option :
Create class BaseMod
et Fix project setup …
Aussi : lorsque je créer mon fichier class Mod_ , il me propose de la placer dans src et lorsque je clique sur la fléche descendante de src , elle disparait …. Je dois donnc déplacer manuellement mon fichier vers net.minecraft.src . Avez vous la solution s’ilvous plait ?
J’ai essayé les codes sous Eclipse et ils sont bons, cependant je ne sais pas comment les réintégrer au jeu, ou il crashe ou le contenu de mon mod n’est pas intégré au jeu…
Désolé pour le double post, j’ai réglé mon problème.
Merci pour ce tuto très complet et incontournable, à quand la suite ?
Vous comptez le continuer quand ? Merci de me répondre rapidement :)
marche pas Oo
J’essaie avec Notepad++ alors
Conseil: n’utilisez pas éclipse.
Perso,je mod sans l’utiliser,il n’est pas si utile.
J’utilise Notepad++ (mieux que le bloc-note) et sa marche !
Vous entrez le code dans Notepad++ ou le bloc note et lorsque vous devez enregistrer,choisissez “Tous les fichiers”
(à la place de “Fichier texte”) et mettez “BlockMonbloc.java”.
Ensuite,compilez avec MCP.
Eclipse propose un nombre incalculable d’option + des corrections pour les codes faux, donc aurevoir avec ton notepad++ qui ne sert pas à coder
RRAAHH je vais me suicider ! J’ai tout fait comme dans la tuto et pourtant à la fin quand je veux lancer le jeu pour teste il affiche:
Erreur : impossible de trouver ou charger la classe principale Start
Snif, aidez moi svp !
Youpi ! J’ai trouvé la solution, et puisque je n’étais pas le seul à poser la question voilà ce qu’il faut:
Le nouveau fichier à crée est un fichier “class”.
Pour cela allez dans File -> New -> Other… -> Class
Entrer le nom du fichier tel qu’il est dit dans la tuto et sélectionner l’emplacement “Client/src/net.minecraft.src”
j’ai un probleme j’ai tapez :
public static final Block premierbloc = new BlockPremierBloc(125
mais il met qu’il y a une erreure
HELP plizz
Tu doit mettre:
public static final Block premierbloc = new BlockPremierBloc(125, ModLoader.addOverride(“/terrain.png”,”premierbloc.png”))
Remplace “premierbloc.png” par le chemin de l’image dans Minecraft.jar.
Par exemple:”mon_mod/mon_premierbloc.png”
Quel type de fichier doit-on crée ? Où le placer ?
Va dans le menu du haut dans eclipse et dans switch workspace, selectionne l’emplacement jusqu’a ce que ça fonctionne.
Sinon, je trouve que les tutos de wRadion sur Youtube sont un peu plus explicites.
Bonjour
j’ai un problème concernant le tuto numéro 2, comme apparemment il n’y a plus du tout de up je viens demander une aide ici (d’autres personnes ont eu ce problème et n’ont pas eu de réponses),
j’ai bien suivi le tutoriel juqu’à ce que j’ouvre Eclispe, et que mon project explorer sois vide
Sois j’ai mal compris quelque chose, soit j’ai mal fait quelque chose, j’ai besoin d’aide
Merci d’avance
Bonjour,
Si votre explorer ou votre src est vide, c’est tout simplement que les fichiers n’y sont pas.
Afin de les y placer vous devez tout d’abord lancer la commande decompile.bat afin de decompiler l’ensemble des fichiers Minecraft et de les copier dans le dossier où vous allez travailler.
Maintenant tout devrait rentrer dans l’ordre…
Je suis un peu perdu…
Comment en crée son “nouveau fichier” qui est un Java Source File (avec l’icone d’un J bleu) ?
J’ai eu le même problème c’est un fichier class (C vert) qu’il faut créer: tu fait Ctrl + n, et ensuite tu choisis class. Moi après j’ai laissé toutes les options par défaut et j’ai fait finish.
si jamais on veux creer plusieurs bloc, on doit creer plusieurs fichier mod_ ?
Non non benayu tu crées un seul fichier mod et tu places toutes tes recettes dedans ensuite tu crées un fichier blob ou item pour chaque bloc ou item mais qu’un seul fichier mod. Sauf si tu souhaites créer deux mods distincts. Alors tu crées un fichier mod par mod.
qu’es que je dois faire pour que le texture sois séparer… se qui veux dire: un texture où le top du block est différent des côté, et qu’on peux placer de façon directionnelle, semblable à la citrouille mais que le top (le dessus de la boite) bouge aussi, selon la façon qu’on l’instals…
Salut
Quand je crée le fichier (mod_minecraftfr.java)
Il ne m’affiche qu’un fichier vide.
Est-ce normal ?
Help ;(
Personne a dit que y avait besoin d’eclipse =)
perso jutilis “bloc note” et netbeans pour moder . alors éclipse … sa prouve ki en a pa besoin !!!
Si tu t’étais un peu renseigné tu comprendrais que le langage Java se fait avec eclipse car eclipse propose plein d’option/aide et aide à corriger les fautes dans le code.
Donc chiao avec tes vieux outils
HELP, depuis que j’ai essayé de modder, je ne peut plus me conncté a des serveur ou udapter le jeu, sa me met:
Fatal error occured (4): Address family not supported by protocol family: connect
Force Update ^^
cho le code g rien pigé mais de toute facon, je prefere tester les mods des autres ;p
Quelqu’un peut-il m’expliquer à quoi sert un commentaire de ce type? c’est effectivement très constructif! :P
*le mien n’est pas forcement mieux, mais pas grave!*
Où créer le fichier et comment , svp quelqu’un peut me répondre
Il serait bien pratique de mettre l’adresse des deux autres parties du tuto sur chaque page du tuto, cela facilitera grandement la navigation.
Merci beaucoup pour votre travail.
Merci pour cette 3ème édition ;)
Avouez que la sucette est composé de la texture gélatineuse du bloc ! Avouez ! Je vous ferai parler, même sous la torture ! Je dois connaître le secret de cette sucette ! (On me souffle à l’oreillette que c’est un bâton de redstone)
cool merci tu as simplifier ma technique perso même si je la préfère car je la connais mais quand je n’ai pas le temps ta technique m’en fait gagné
encore merci. :)
moi on me di que minecraft à crashé à cause de la texture (apparament) pourtant elle est en .png. aidé moi svp
Est ce que ton image porte bien le nom que tu as écris dans le code ? Fais attention de nE pas avoir inversé deux lettres . Et vérifie que ton image soit dans le bon dossier comme écris dans le code ;)
G rien compris du tout c duigue le codage en java je prefere apeler mon meilleur pote il c coder avec ce truc il me fera mes mods c plsu pratike !!!!!!! U_u Oo –‘.
Rassures-moi : C’était un troll hein :D ? *Prépare un Canon à particules, juste au cas où*
ou je doit trouver eclipse et je trouve pas c,est tu un logiciel ou quoi?!
Sinon, quand tu vois qu’on est en à la TROISIÈME édition, tu as la POSSIBILITÉ d’aller regarder les deux précédentes, tu ne penses pas ?
Désolé, c’est sorti tout seul >.>
d’ou vient le net.minecraft.src ?
et a quoi il sert ?
cool ps minecraft serveur Mine4Life 109.239.157.11:25565
Je comprend pas,quand je ouvre le minecraft en .java il me trouve 2446 erreur pourtant je ne fais que l’ouvrir
Merci d’avance
je n’est pas encore trouver pour faire la fonction aléatoire moi je pensait a “or” mais sa ne marche pas donc je me remet avec le random.
Comment faire pour que sa se transforme en un bloc aléatoire à la place du bloc de redstone?
Bonjour , j’arrive pas a trouver les fichier dans src
Sympa comme tuto, ça permet de voir un peu comment marche minecraft, et si on connait un minimum java c’est vraiment pas bien compliqué. Ca me donne envie de plongé dedans mais ça attendra la fin de mes partiels :P
Bonjour j’ai deux petit probleme avec tous sa. Bon le premier je ne arrive pas a metre le fichier npg dans minecraft.jar et aussi je reussi pas a ouvrir minecraft. mon deuxieme est a quoi sa sert un peu le modding et je comprend pas trop merci d’avance
je ne veut pas être mechant mais, j’ai suivez EXACTEMENT les choses du tuto, sa ne marche pas.
Desoler mais tuto nul…
ouaw l article est vraiment bien fait mais j ai quand même une question.C’est bien beau de créer un bloc mais si sa fonction n est pas décorative t’à ton bloc mais il sert a rien :D
jé eu un petit prb, je suis sous Ubuntu et je né pas pu utiliser le fichier decompile .bat de MCP. Comment je doit faire alors??
Holalo c’est démant!!!!!!!!
Cool super tutoriel, mais je savais faire cela, a pars changer les blocs avec un item :)
J’ai hâte au prochain!
J’vais peut-être passer pour un vieux con qui casse tout vos délires mais ça c’est juste un TP rapidement expliqué (et pas terriblement). Certes, on produit vite un résultat convenable etc. mais il y a pas de progression et c’est juste une mise en application. En plus, ce serait cool de mettre en avant les aspects commentaires et mises en forme du codes qui sont totalement absentes.
On peut le télécharger ?
Est-ce obligatoire de mettre une minuscule à la classe “mod_minecraftfr”
Car normalement un nom de classe doit toujours commencer par une majuscule, ce qui donnerait ici “Mod_minecraftfr”
Si certains se le demande il faut bien mettre le nom de classe avec une minuscule.
Je trouve ça très utile mais je suis perdu, je ne sais pas où mettre quoi, entre quelles lignes? Dès le départ j’ai pas compris comment créer un nouveau fichier car je ne connais pas du tout ce programme. J’ai du copier un autre fichier et l’éditer pour obtenir le résultat… Et encore! Je suis coincé car je ne sais pas où mettre quoi. Donc du fond du coeur, s’il te plait, rajoute plus de détails dans les étapes! Merci beaucoup pour ces tuto!
Si on suit les tutos on peut donner des autres proprietés aux blocs ;)
J’espère que vous parlerez des mods multis et de ModLoaderMP
Ça m’intéresserait aussi de savoir comment l’afficher dans l’inventaire du creative et comme le faire dropper certains items si on le casse avec une pioche
moi de même
je suis intéressé pour savoir comment l’afficher dans l’inventaire du creative
je souhaiterai également savoir par rapport au bloc de redstone que tu a fait, comment on peut faire pour lui ajouté des propriété de redstone identique a ceux d’une torche (donner un courant …)
trés bonne idée de faire le tuto en vidéo comme ça on te voit directement le faire et on peut le faire en même temps que toi
Ok on a créée un bloc et un item avec une utilité, mais pour que le mod fonctionne on doit faire le run dans Eclipse, si on retourne sur notre vrai minecraft.exe, il n’y a pas le mod.
Comment faire ?
prochaine étape, j’imagine: la compilation.
et le mieux étant d’utiliser magiclauncher, ça permet de tester facilement sans péter son minecraft.jar à chaque fois
Comme vous êtes nombreux à me l’avoir demandé j’expliquerai ça la semaine prochaine ;)
Ok merci !
Si je me souviens bien , tu dois cliquer sur recompile puis sur reobfuscate (dans mcp) et normalement sa te créera un dossier reobf avec les fichier de ton mod en .class qu’il faudra mettre dans ton minecraft.jar (même installation que les autres mods , il faut avoir installé modloader! )
Plus simple, tu recompile puis tu lance startclient.bat (Je crois que c’est un .bat)
Si toi aussi ta rien compris Oo
moi, si, mais c’est ma formation! XD
(pas mon boulot, par contre! j’en fait de temps en temps comme ça, par passion, mais je suis pas fou, je ferais pas de dev sous contrat!)
j’aimerais bien savoir combien viennent de se rendre compte que le modding, c’est pas pour les kikoolol!
Du coup modloader etait pas installé pour que ca marche la ca va etre dur de modder le bloc bbbbbbooooouuuuuhhhhh
Rester sur sa fin ça s’écrit en fait rester sur sa FAIM.
Il y a BEAUCOUP plus simple pour coder ne serait-ce qu’un bloc, et c’est une parole de modder..
ça marche aussi avec Spoutcraft ?
Non :/
Autant aller sur le site du zero.
Et après avoir lu tout le tuto sur java, relire ces article et la vous comprendrer un peu mieux.
Tu vas pas te taper 2 semaines de cours, pour faire un bloc…
Le tutoriel ne nécessite pas de bases en Java alors pourquoi aller voir sur le SdZ ? :)
Les concepts avancés sont tout de même des fondamentaux de la programmation et je doute sincèrement que quelqu’un n’y ayant jamais touché ait tout compris.
Donc 2 semaines de cours ne sont en rien obligatoires mais une ou deux soirées de lecture d’un cours concernant Java me semble un bon point de départ.
Assez bon tutoriel, bravo.
Le seul point négatif que je peux relever est qu’il est fortement déconseillé d’utiliser des caractères spéciaux dans le nommage de tes classes.
Il est préférable de mettre des majuscules au lieu de mettre des underscore ( “_ “).
Par exemple :
package net.minecraft.src;
public class ModMinecraftFr
{
}
Cordialement Akiro.
ModLoader oblige aux moddeurs de mettre comme nom de class « mod_* » et comme tu as l’air de t’y connaitre tu aurais dû remarquer tout de suite que comme c’est le constructeur, il doit obligatoirement porter le nom de la class.
Certes, je l’ai remarquer.
Je ne suis pas fan de ModLoader, si il exige de mettre ceci dans le nom de la class, alors autant le mettre.
Mais sinon, pour du code pur et brut, il ne faut pas mettre ce genre de caractère pour éviter toutes mésaventures :)
L’underscore n’est pas un caractère spécial…
Il fait partie de la table ASCII et n’est absolument pas déconseillé d’utilisation.
As-tu déjà ouvert un IDE avant d’avancer de tels propos ?
Bnojur, exite-t-il un mod ou des gars veulent nous tuer ?
Il y a une petite faute, quand tu cache le code du craft de la sucette de redstone : ModLoader.addRecipe(new ItemStack(premierbloc, 1), new Object[]
{” # “, ” X “, ” X “, Character.valueOf(‘X’), Item.blazeRod, Character.valueOf(‘#’), Item.redstone});
est la recette d’un bloc de redstone, il faut remplacer ItemStack(premierbloc, 1) par ItemStack(premieritem, 1) pour que le craft soit celui de notre sucette, ce qui donne le code : ModLoader.addRecipe(new ItemStack(premieritem, 1), new Object[]
{” # “, ” X “, ” X “, Character.valueOf(‘X’), Item.blazeRod, Character.valueOf(‘#’), Item.redstone});
Voila voila :)
Ah oui, aussi dans vos indices, ce n’est pas .setLightValut(f), mais .setLightValue(f)
Merci je vais aller corriger les deux :D
Super par contre j’ai pas encore lu celui de la semaine dernière, honte à moi :(^^
On va se marrer quand il faudra créer une bestiole j’imagine a peine la taille de l’article quand on vois sa taille rien que pour un bloc.
Il est bien plus facile de faire un pack de texture qu’un mod.
–‘
N’hésitez pas a aller sur le Topic !
J’aide toutes les question posée la-bas UNIQUEMENT , et je suis un bon moddeur , je moddais au côté de Voltaire autrefois :)
Ton tutoriel pour apprendre à coder un mod est intéressant mais je ne le suis pas pour des raisons que je code en C++ ! Mais c’est un très bon tuto ! Continue comme ça.
Si tu codes en C++ tu ne devrais pas éprouver de difficultés à te plonger dans le Java.
+1 :D
Oui, mais passer de C++ à Java … Il y a de quoi se sentir violé Oo’
Il a compté les mots de ce guide…
Non non en bas y’a un compteur ^^
0_o cette explication biscornu me confirme que je ne ferai JAMAIS de mod!!!!!
Exactement comme moi ! J’ai lu cet article pour me rendre compte de mon incapacité presque universel !
Arcazz23 : Installe la dernière version de Java . ;)
Moi je n’y arrive pas … JAVA BUG ! : /
tu est sûr que tu as tout bien lût?
Un problème d’interface clavier/chaise ?
Je crois que ça vent de ça, comme a peu près 95% des problemes, hors windows, et 25% sous windows
Les articles sont fini? Ou il y en a encore??
Plutôt que de coder un mod minecraft, je vais essayer de coder un espèce de logiciel de chat.
Problème : j’arrive à peine à coder une calculatrice en mode console (et en plus elle ne calcule que les “int” mais ça sera facile a améliorer).
A quoi sert ce commentaire (le mien aussi je l’accorde ^^) ?
Je racontais ma vie en espérant que ça intéresserait quelqu’un…
On vas avoir une énorme communauté française de moddeurs grâce à vous !
Péjoratif ou mélioratif ?
Bas mélioratif bien sur.
Voyant le “grâce”, ça semble être mélioratif.
Bha, ca peut toujours être de l’ironie..
Super tuto ! Merci a vous !
Méliroatif du moment que tous les kikous abandonnent et ne deviennent pas moddeurs.
+1 héhé
Quand je tente de lançais eclipse il m’affiche:A Java Runtime Environnement or Java Development Kit must be available in order to run Eclipse.No java virtual machine was found after searching the following locations:C:\Users\Mon nom\Document\Minecraft mod\Création mod\eclipse\jre\bin\javaw.exe
javaw.exe in your current PATH.
En esperant que vous pourrez m’aider.
Je te prie de bien lire l’article, vers la fin il y a quelque chose pour toi ;)
Merci,je m’en suis rendu compte seulement une fois le message posté.Merci de penser a nous :)
J’ai le problème mais je ne n’ai pas très bien compris, pouvez-vous m’aider? merci
Le même problème pardon…
Super, c’est bien pour les débutants.
À quand les mobs et les dimensions.
Tu vas ériger une armée de modders qui vont faire des zombies-creepers ultra rapides capables de faire l’explosion de 100 TNT réunis et qui spawn quand un cube est cassé muahahahahah………. Ok je sors de mes délires ==”
XD, t’attends pas à avoir le niveau pour une autre dimension etc comme ça, c’est rien du tout un item et un bloc, faire des choses de ce genre tu vas nettement plus en chier
Ah voila la partie la plus intéressante!!!
merci !!!
Il y a du contenu au moins, ça n’a pas l’air trop mal ;)
Dommage que je programme en C++ :p
un grand merci pour ce tuto qui va beaucoup m’aider dans mes projet <3
Au temps pour moi, je n’avais pas vu la vidéo.
je dit juste: O_o
Beaucoup de personnes vont se poser la même question :
Où doit-on mettre le fichier que l’on doit créer dès le début ?
Il faut reprendre là où on s’était arrêté la dernière fois ?
Olol