Un bloc basique
-
Nous allons maintenant commencer notre premier bloc.
Dans la classe principale
À la suite de la déclaration de votre instance, déclarez votre bloc comme ceci :
public static Block BlockTutoriel;
Pensez à importer `net.minecraft.block.Block.
Si vous voulez créer plusieurs blocs, vous pouvez les déclarer à la suite de cette façon :public static Block BlockTutoriel, DeuximeBlock, TroixiemeBlock;
Ensuite dans la partie @PreInit (oui, dans mes anciens tutoriels j’avais dit dans Init, c’est ce que j’avais appris dans les tutoriels anglais, mais en regardant les sources de buildcraft, ironchest, ic2, et compact solar, j’ai vu qu’il faut les preinit, d’ailleurs les achievements ne peuvent pas fonctionner si vous ne les mettez pas dans le PreInit), vous allez ajouter ceci :
BlockTutoriel = new BlockTutoriel(2000).setHardness(2.0F).setResistance(4.0F).setUnlocalizedName("BlockTutoriel");
2000 est l’id du bloc, setHardness correspond à la résistance du bloc par rapport à la pioche (ou à la main) et setResistance est la résistance aux explosions
Ensuite, enregistrez votre bloc dans la partie @Init :GameRegistry.registerBlock(BlockTutoriel, "BlockTutoriel");
Et pour finir, enregistrez le nom en jeu dans la partie @PostInit avec ce code :
LanguageRegistry.addName(BlockTutoriel, "Block Tutoriel");
Il vous restera une erreur sur “new BlockTutoriel”, créez cette classe.
La classe du bloc
Vous allez avoir une classe qui ressemble à ça :
package tutoriel.common; public class BlockTutoriel { }
Ajoutez extends Block après “public class BlockTutoriel”. Importez “net.minecraft.block.Block”. Maintenant vous allez avoir une erreur sur “BlockTutoriel”, passez la souris dessus et faites "add constructor ‘BlockTutoriel(int, Material)’
Vous allez obtenir un contructeur comme ceci :public BlockTutoriel(int par1, Material par2Material) { super(par1, par2Material); }
Nous allons le modifier de cette façon-là :
public BlockTutoriel(int id) { super(id, Material.rock); this.setCreativeTab(CreativeTabs.tabBlock); }
Pensez à changer les paramètres du type par1, par2, par3, etc. par ce qui correspond, on s’y retrouve beaucoup mieux avec des noms corrects.
Maintenant ajoutez cette fonction :
public void registerIcons(IconRegister iconregister) { blockIcon = iconregister.registerIcon("ModTutoriel:BlockTutoriel"); }
C’est cette fonction qui gère l’enregistrement de l’icône de votre bloc. ModTutoriel est mon modid, vous pouvez mettre autre chose, mais il est recommandé de mettre votre modid (je vais vous expliquer plus bas où vous allez le retrouver), et BlockTutoriel est le nom de mon fichier de texture.
La texture du bloc
Nous avons enregistré juste au-dessus l’icône du bloc, mais maintenant il faut savoir où placer la texture du bloc.
Allez dans votre dossier forge/mcp/src/minecraft.
Dans ce dossier se trouvent les sources du jeu. Vous devrez normalement y voir un dossier du même nom que votre package, tutoriel dans mon cas. Créez un nouveau dossier et nommez-le mods. À l’intérieur de ce dossier, créez un autre dossier et nommez-le avec votre modid, enfin plus exactement avec le nom que vous avez mit avant le “:”, ModTutoriel dans mon cas. À nouveau, dans ce dossier créez un autre dossier nommé textures. Dans le dossier textures, créez le dossier blocks
Nous avons donc 4 dossiers : mods/ModTutoriel/textures/blocks/
Maintenant dans le dossier blocks, créez votre fichier .png de 16x16 nommé BlockTutoriel, ce qui correspond à la partie après le “:”. (vous pouvez aussi faire des textures plus grandes, mais elles seront plus lourdes à charger).
Par ailleurs, lorsque vous compilerez votre mod, pensez à placer le dossier mods qui se trouve dans /forge/mcp/src/minecraft dans l’archive de votre mod, sinon les textures seront manquantes.Rendu final
Maintenant votre bloc est terminé, si vous avez eu des problèmes, regardez le résultat final de toutes les classes :
Classe prinicipale :
package tutoriel.common; import net.minecraft.block.Block; import tutoriel.proxy.TutoCommonProxy; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.Init; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.Mod.PostInit; import cpw.mods.fml.common.Mod.PreInit; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.common.registry.LanguageRegistry; @Mod(modid = "ModTutoriel", name = "Mod Tutoriel", version = "1.0.0", acceptedMinecraftVersions = "[1.5.2,)") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class ModTutoriel { @SidedProxy(clientSide = "tutoriel.proxy.TutoClientProxy", serverSide = "tutoriel.proxy.TutoCommonProxy") public static TutoCommonProxy proxy; @Instance("ModTutoriel") public static ModTutoriel instance; //Blocks public static Block BlockTutoriel, DeuximeBlock, TroixiemeBlock; @PreInit public void preload(FMLPreInitializationEvent event) { //Configuration //Blocks BlockTutoriel = new BlockTutoriel(2000).setHardness(2.0F).setResistance(4.0F).setUnlocalizedName("BlockTutoriel"); //Items //Achievements } @Init public void load(FMLInitializationEvent event) { //Registry GameRegistry.registerBlock(BlockTutoriel, "BlockTutoriel"); //Mobs //Render proxy.registerRender(); //NetWork } @PostInit public void modloaded(FMLPostInitializationEvent event) { //Language LanguageRegistry.addName(BlockTutoriel, "Block Tutoriel"); //Recipe } }
Classe du bloc :
package tutoriel.common; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IconRegister; import net.minecraft.creativetab.CreativeTabs; public class BlockTutoriel extends Block { public BlockTutoriel(int id) { super(id, Material.rock); this.setCreativeTab(CreativeTabs.tabBlock); } public void registerIcons(IconRegister iconregister) { blockIcon = iconregister.registerIcon("ModTutoriel:BlockTutoriel"); } }
-
Super tutoriel.
J’attends la suite avec grand plaisir. -
Vous devrez normalement y voir un dossier du même que votre package, tutoriel dans mon cas.
Tu as oublié le mot “nom” ;)___
@robin4002:Créez un nous dossier et nommez-le mods.
Et tu as écrit “nous” au lieu de “nouveau”.
-
Et mince, le pire c’est que je me suis relus, je sais pas comment j’ai fais pour le pas le voir, merci
-
De rien !
-
Sa doit être la fatigue ^^', sa peu arrivai, la perfection n’existe pas en soit :).
Et merci pour le petit tuto ^^. -
Merci beaucoup pour ces premiers tuto. J’attend la suite avec impatience car j’ai pas trouvé mieux ailleurs !
-
Tutoriel obsolète, à refaire. Il est valable pour minecraft 1.5.1 et 1.5.2
-
@‘robin4002’:
Par ailleurs, lorsque vous compilerez votre mods, pensez à placer le dossier mods qui se trouve dans /forge/mcp/src/minecraft dans l’archive de votre mods, sinon les textures seront manquantes.
Comment compile-t-on notre source ? on met le contenue de notre dossier mods “ModTutoriel” dans une archive ? on le compile avec éclipse ?
-
Quand tu as finit, tu vas dans ton dossier mcp et tu lance le bat recompile.bat puis reobfuscate.bat, ensuite dans le dossier reobf tu as tes sources recompiler et comme a dit rob, n’oublie pas de mettre des textures/sons car le recompile ne prend que en compte les .java.
-
Merci pour cette réponse rapide