Crée un item avec une durabilité pour un craft
-
Sommaire
Introduction
Bonjour aujourd’hui nous allons créer un outil pour craft avec une durabilité. Gregtech, Ic2, Rp2 ont utilisé cette fonctionnalité pour donner un peu plus de réalisme dans leurs mods.
Pré-requis
Code
Modification de l’item :
Allez dans la classe de votre item, nous allons dans un premier temps modifier le constructeur. Nous allons ajouter la méthode :
this.setMaxDamage(20);
qui va définir le nombre maximum d’utilisation de l’item.
Pour ma part je ne veux pas qu’on puisse le réparé, donc j’ajoute aussi this.canRepair = false;public HammerIron() { this.setMaxDamage(20); this.canRepair = false; }
Ensuite nous allons ajouter une fonction pour que l’item s’use lorsqu’il est utilisé dans un craft :
public ItemStack getContainerItem(ItemStack itemStack) { return new ItemStack(this, 1, itemStack.getItemDamage() + 1); }
Nous allons également ajouter deux autres fonctions, une pour indiquer que l’item possède un container item (les seaux de lave, d’eau et lait ont comme itemContainer le seau vide, c’est pour cela que lors du craft d’un gâteau, les sceaux reviennent vides). La deuxième va indiquer que l’item ne doit pas quitter la grille de craft lorsqu’on craft :
public boolean hasContainerItem(ItemStack stack) { return true; }
public boolean doesContainerItemLeaveCraftingGrid(ItemStack stack) { return false; }
Ajout de la recette :
Ici nous nous trouvons dans votre classe principale plus précisément dans la partie init .
Nous allons déclarer la recette comme ceci :
public void init(FMLInitializationEvent event) { GameRegistry.addRecipe(new ItemStack(Pickaxe_flint), new Object[] { "FFF", "IS ", " S ", 'F', Items.flint, 'S', Items.stick, 'I', new ItemStack(HammerIron,1,OreDictionary.WILDCARD_VALUE ) , });
Attention à la ligne (HammerIron,1,OreDictionary.WILDCARD_VALUE ), elle est importante pour pouvoir utiliser votre outil lors de plusieurs craft. Je m’explique si vous avez déjà utilisé l’item une fois, sans OreDictionary.WILDCARD_VALUE, il ne pourra plus être utilisé. En effet pour enregistrer le niveau de dégât d’un item Minecraft passe par les métadatas, il faut donc enregistrer le craft avec tous les métadatas possibles, or OreDictionary.WILDCARD_VALUE représente tous les métadatas.
Crédits
Rédaction :
Correction :
Ce tutoriel de Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International -
Met en forme le design du tuto’ là c’est assez moche ^^ Mais GG tutoriel interresant
-
oui je c’est en cours mais enfaite il y des balise qui saute quand j’édite le message alors bon ! je continuerais se soir !
-
Tu fera attention il y avait un double topic de ton Tutoriel dans cette section ^^
-
arf sorry
-
Il faudrait faire la meme mais la partie sans craft