Un mob tenant un item dans sa main (Simple/Avancé)
-
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. xDpublic 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 ~ -
Moi sa ne marche pas
Le mob ne tient pas d’item mais il donne des coups circulaires maintenant … -
nono1507 tu es en quelle version ? je peut t’aider
-
Merci je suis en 1.6.4
-
Ok alors… Passe moi la classe de l’entitée
-
Voila : http://pastebin.com/446ne3Lp
Merci beaucoup pour ton aide -
-
Excuse moi j’avais pas vu le petit “Tiens !” en dessous XD
Merci mais eclipse me souligne “setCurrentItemOrAmor” maintenantEDIT:
C’est réparé : Tu avais oublié le R de “OrARomr” par contre mon mob spawn plus -
Pourquoi ? C’est quoi l’erreur ?
-
Il y en a aucune mais quand j’utilise l’oeuf , la console m’affiche ceci :
-
On va faire ça autrement :
http://pastebin.com/PGJYhiDw -
Cette fois ci il spawn mais pas d’épéee XD
-
x) Sérieux ? Passe moi tes logs et la classe où est enregistré l’item stp
-
Ok les voici :
Class principale
Class de l’item
Class du mob : Entity , Render
La console
Client Proxy -
J’ai trouvé ! Enfin
Tu déclare ton entité avant ton épée, ce qui fait bugger
-
Non toujours pas
class principale apres le changement: http://pastebin.com/KmdqzELe -
Je vois pas le problème, essaie de tout mettre dans le pré-init pour voir
-
donne l’épée a ton mob ajoute System.out.println(“test”); et regarde si sa te le marque
-
Meme quand je déplace tout dans le PreInit sa ne marche pas
-
Et là y a Robin qui vient, qui nous trouve en train de nous enfoncer et il sort la solution en quelques secondes x)