2 août 2013, 10:56

Introduction

Bonjour à toutes et à tous, je vais vous apprendre à faire un Kit d’outils(épée, pioche, pelle, hache et houe) en trois étapes:

  1. Dans la classe principale
  2. Les classe des outils
  3. Les ressources(textures et nom)

Avant de commencer vous devez au moins savoir faire un item basique.

Bonne lecture 🙂

1. Dans la classe principale

Tout d’abord vous allez déclarer vos items,

public static Item TutorialSword, TutorialPickaxe, TutorialAxe,
TutorialShovel, TutorialHoe;

Vous pouvez aussi bien le faire ligne par ligne:

public static Item TutorialSword;
public static Item TutorialPickaxe;
public static Item TutorialAxe;
public static Item TutorialShovel;
public static Item TutorialHoe;

Puis vous allez créer un EnumToolMaterial.
Ce code doit être dans à la suite des déclarations.

static EnumToolMaterial TutorialMaterial = EnumHelper.addToolMaterial("Tutorial", 3, 1561, 8.0F, 3, 10);

Le “TutorialMaterial” est le nom de votre EnumToolMaterial.
Les valeurs dans le code ci-dessus correspondent à celles du diamant.
Faites ctrl + clic sur EnumToolMaterial pour ouvrir la classe et voir les valeurs des autres outils.

La valeur 3 correspond au “harvest level”, c’est à dire ce que peut casser la pioche
(par exemple: 3 = solidité de l’obsidienne; 2 = solidité de l’or et du diamant;1 = solidité du fer; 0 = solidité du reste des blocs).

La valeur 1561 correspond au nombre de damage que possède l’item. Cela correspond donc au nombre de coup -1 (comme il y a en plus le damage 0)

La valeur 8.0F correspond à la vitesse de minage, plus le nombre est élevé plus les outils seront efficaces.

La deuxième valeur 3 correspond au nombre de point de vie (demi cœur) enlevé par coup. Sachez que pour l’épée 4 sera ajoutez à cette valeur, 2 pour la pioche et 3 pour la hache.
Donc avec la valeur 3, mon épée fera 7 cœur de dégât, ma pioche 5 et ma hache 6.

Et la valeur 10 correspond à “l’enchantabilité” des outils, plus le chiffre est élevé plus les meilleurs enchantement seront facile à avoir.

Pensez à importer:

import net.minecraftforge.common.EnumHelper;
import net.minecraft.item.EnumToolMaterial;

(Vous pouvez toujours utilisez le raccourci Control+Shift+O sous Eclipse)

Toujours dans PreInit, introduisez ce code dans la partie items en dessous des blocs:

TutorialSword = new TutorialSword(TutorialSwordID, TutorialMaterial).setUnlocalizedName("TutorialSword").setTextureName("modtutoriel:TutorialSword");
TutorialPickaxe = new TutorialPickaxe(TutorialPickaxeID, TutorialMaterial).setUnlocalizedName("TutorialPickaxe").setTextureName("modtutoriel:TutorialPickaxe");
TutorialAxe = new TutorialAxe(TutorialAxeID, TutorialMaterial).setUnlocalizedName("TutorialAxe").setTextureName("modtutoriel:TutorialAxe");
TutorialShovel = new TutorialShovel(TutorialShovelID, TutorialMaterial).setUnlocalizedName("TutorialShovel").setTextureName("modtutoriel:TutorialShovel");
TutorialHoe = new TutorialHoe(TutorialHoeID, TutorialMaterial).setUnlocalizedName("TutorialHoe").setTextureName("modtutoriel:TutorialHoe");

Le TutorialMaterial est bien sûr l’EnumToolMaterial que vous avez créé.
“setUnlocalizedName” permet de donner le nom non-localisé c’est à dire le nom qui est utilisé pour le fonctionnement interne du jeu.
Et enfin, “func_111206_d” est utilisé pour localiser la texture de l’outil, où, “modtutoriel” est votre mod ID (il est à écrire SANS AUCUNE MAJUSCULE), et le TutorialSword est le nom de la texture en .png je le rappelle. 😉

Vous aurez sûrement remarqué les 5 erreurs présentes sur chaque outil, pour les corriger on va créer une nouvelle classe pour chaque outil.

Dans la partie Init ajoutez :

MinecraftForge.setToolClass(TutorialPickaxe, "pickaxe", 3);
MinecraftForge.setToolClass(TutorialAxe, "axe", 3);
MinecraftForge.setToolClass(TutorialShovel, "shovel", 3);

Vos outils fonctionnent aussi sans ce code, mais il est important pour l’hardvest de forge (compatibilité avec les autres mods et pour vos propre MinecraftForge.setBlockHarvestLevel(block, toolClass, tier); )
Le 3 correspond à la première valeur de mit dans l’enumTool (0 pour l’équivalent du bois et or, 1 pour cobble, 2 pour fer, et 3 pour le diamant)

Et n’oubliez pas d’importer:

import net.minecraftforge.common.MinecraftForge;

Optionnel, l’enregistrement des items pour l’itemTracker de FML :

GameRegistry.registerItem(TutorialSword, "TutorialSword", "ModTutoriel");
GameRegistry.registerItem(TutorialPickaxe, "TutorialPickaxe", "ModTutoriel");
GameRegistry.registerItem(TutorialAxe, "TutorialAxe", "ModTutoriel");
GameRegistry.registerItem(TutorialShovel, "TutorialShovel", "ModTutoriel");
GameRegistry.registerItem(TutorialHoe, "TutorialHoe", "ModTutoriel");

2. Les classes des outils

Dans la classe de chaque outils mettez ce code:

import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.Item[Sword, Pickaxe, Axe, Spade, Hoe];

public class NomDeLaClasse extends Item[Sword, Pickaxe, Axe, Spade, Hoe]
{

}

Vous aurez une erreur sur le nom de la classe passez la souris dessus et faite “add constructor”, vous devriez obtenir sa:

package tutoriel.common;

import net.minecraft.item.EnumToolMaterial;
import net.minecraft.item.ItemPickaxe;

public class NomDeLaClasse extends Item[Sword, Pickaxe, Axe, Spade, Hoe]
{
public TutorialPickaxe(int id, EnumToolMaterial toolMaterial)
{
super(id, toolMaterial);
}
}

Vous aurez aussi remarquer qu’il y a des champs non justifier([Sword, Pickaxe, Axe, Spade, Hoe]), vous devez les remplacer par les bouts de code ci-dessous:
-Pour l’épée mettez “extends ItemSword” et “import net.minecraft.item.ItemSword”.
-Pour la pioche mettez “extends ItemPickaxe” et “import net.minecraft.item.ItemPickaxe”.
-Pour la hache mettez “extends ItemAxe” et “import net.minecraft.item.ItemAxe”.
-Pour la pelle mettez “extends ItemSpade” et “import net.minecraft.item.ItemSpade”.
-Pour la houe mettez “extends ItemHoe” et “import net.minecraft.item.ItemHoe”.

Pour rendre vos outils réparable ajoutez ce code dans la classe de l’outil :

public boolean getIsRepairable(ItemStack stack, ItemStack repairItem)
{
if(stack.getItem().equals(this) && repairItem.getItem().itemID == ModTutoriel.TutorialMetadata.itemID)
return true;
return false;
}

ModTutoriel.TutorialMetadata et l’item avec lequel le l’armure peut être réparé.

Et voilà la partie codage est terminée !!!

3. Ressources

Pour les ressources, allez tout simplement lire le tutoriel de robin4002 en cliquant juste ici

Rendu final

voir sur github

0_1529608963849_2013-08-01_14.33.16.png