26 oct. 2013, 21:03

Dans ce tutoriel nous allons apprendre à ajouter un item dans la main gauche de votre mob.
Il y aura deux modes pour ce tutoriel : Simple | Avancé

Pourquoi “Simple” et “Avancé” ?
-Et bien “simple” signifie que nous allons ajouter SIMPLEMENT, UN SEUL ITEM dans la main de votre mob. Ensuite, pour le mode avancé, nous allons apprendre à faire en sorte que votre mob aie un item aléatoire dans sa main. ^^

Simple

Pour commencer, vous devez déclarer cette variable (je ne vais pas vous dire où :D) :

private static final ItemStack defaultHeldItem;

Maintenant, nous allons créer une fonction dans notre classe comme ceci :

public ItemStack getHeldItem()
{
    return defaultHeldItem;
}

Oui nous n’avons pas encore initialisé notre variable et nous l’appelons déjà dans la méthode…
Et bien qu’attendons-nous ? C’est parti ! Où vous voulez, dans votre classe (de préférence en bas de classe), ajoutez ce code :

static
{
    defaultHeldItem = new ItemStack(Item.diamond, 1);
}

Et voilà. 😄

*Qu…Quoi, c’est déjà fini ? *
*-Concrètement, oui. Mais il s’agit du mode simple item (ou mode OneItem :D), maintenant nous allons nous attaquer au mode avancé ! 😛 *

Avancé

Pourquoi “Avancé” ?
-Nous allons créer un tableau où le mob va utiliser un item aléatoire du tableau.

Donc pour se faire, nous allons créer deux variables :

public static ItemStack equippedItems[];
public int currentItem;

et dans le constructeur de votre mob, initialisez l’Integer :

currentItem = rand.nextInt(equippedItems.length);

Là, nous venons d’indiquer ce que doit faire le mob, c’est à dire : Prendre un item aléatoire dans le tableau, MAIS, NOUS DEVONS INITIALISER NOTRE TABLEAU !

Pour se faire (ou ce faire, j’ai un trou :s), rien de plus simple, de la même manière que la méthode “Simple”, créez un static dans votre classe comme ceci :

static
{
    equippedItems = (new ItemStack[]
    {
        new ItemStack(Block.torchWood, 1), new ItemStack(Item.pickaxeStone, 1), new ItemStack(Item.hoeDiamond, 1), new ItemStack(Item.axeIron, 1), new ItemStack(Item.swordIron, 1)
    });
}

Votre mob va donc maintenant prendre un item aléatoire à chaque spawn, dans ce tableau !
Attendez ! Nous avons oublié quelque chose ! ^^
Il ne faut pas oublier de dire à votre mob qu’il a un item à porter, eh oui ! Sinon, ça ne fonctionnera pas. xD

public ItemStack getHeldItem()
{
    return equippedItems[currentItem];
}

Et pour finir, la sauvegarde dans l’NBTTagCompound !

public void writeEntityToNBT(NBTTagCompound nbttagcompound)
{
    nbttagcompound.setInteger("equippedItem", currentItem);
    super.writeEntityToNBT(nbttagcompound);
}

public void readEntityFromNBT(NBTTagCompound nbttagcompound)
{
    currentItem = nbttagcompound.getInteger("equippedItem");
    super.readEntityFromNBT(nbttagcompound);
}

Et voilà, nous en avons fini pour ce tutoriel ! 😄
Je n’ai malheureusement pas de screens sous la main, mais autant voir votre PROPRE résultat ! 🙂
Si vous avez des questions, n’hésitez pas ! ^^
Bye ~