Résolu Tab nbt et tooltip.
-
Excusez moi d’avance , mais je n’avaus aucune idée d’ou poser mon problème (je supprimerai mon message si j’en ai la demande
Voila mon problème : j’ai créé un item avec un tag NBT int associé que je shouaites afficher en tooltip grace à addInformation().
Sauf que quand je modifie mon tag , j’aimerai mettre a jour l’affichage de ce dernier (le tag nbt évolue alors que le texte d’info ne bouge pas)
Y aurais t’il une fonction à appeler pour rafraichir cet affichage?Je l’ai cherché mais je ne l’ai pas trouvé
Merci pour vos réponces -
Salut,
Envoies-nous le code de ton item.à l’avenir il serait mieux de créer une discussion dans la section support pour les moddeurs.
EDIT : en fait il y a une option pour “fractionner” les messages, donc j’ai pu déplacé ton message vers une nouvelle discussion dans la bonne section.
J’ai changé le titre de la discussion, tu pourrai y ajouter la balise de version ou me dire en quelle version tu dev ? -
Je suis en forge 1.7.10 (build 10.13.4.1558) et je sais pas comment changer la balise de la discution (ce ce voit que je suis membre depuis 4 jours ?)
@Override public void addInformation(ItemStack itemstack, EntityPlayer player, List l, boolean flag) { super.addInformation(itemstack, player, l, flag); if(itemstack.stackTagCompound == null || !itemstack.stackTagCompound.hasKey("torchesLeft",Constants.NBT.TAG_INT)){ itemstack.stackTagCompound = new NBTTagCompound(); int meta = itemstack.getItemDamage(); if(meta>=metaNumber) meta = 0; itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); } l.add("Torches left :"+itemstack.stackTagCompound.getInteger("TorchesLeft")); } @Override public void onCreated(ItemStack itemstack, World w, EntityPlayer pl) { super.onCreated(itemstack, w, pl); if (itemstack.stackTagCompound == null || !itemstack.stackTagCompound.hasKey("TorchesLeft", Constants.NBT.TAG_INT)) { itemstack.stackTagCompound = new NBTTagCompound(); int meta = itemstack.getItemDamage(); if (meta >= metaNumber) meta = 0; itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); } }
maxTorchesFromMeta est un tableau de int qui renvoie à l’indice x , le nombre maximal pour mon tag pour un meta de x
metaNumber est le nombre de metadatas autorisés (soit la taille de mon tableau , pour eviter une ArrayIndexOutsOfBoundsException)@Override public void onWornTick(ItemStack itemstack, EntityLivingBase player) { if (itemstack.stackTagCompound == null || !itemstack.stackTagCompound.hasKey("TorchesLeft", Constants.NBT.TAG_INT)) { itemstack.stackTagCompound = new NBTTagCompound(); int meta = itemstack.getItemDamage(); if (meta >= metaNumber) meta = 0; itemstack.stackTagCompound.setInteger("TorchesLeft", maxTorchesFromMeta[meta]); } itemstack.stackTagCompound.setInteger("TorchesLeft", itemstack.stackTagCompound.getInteger("TorchesLeft")-1); }
cette metrhode est donée par baubles et est appelée à chaque tick quand l’item est porté
public TorchAmulet() { this.setMaxStackSize(1); this.setHasSubtypes(true); }
Et voila mon constructeur
Sinon il y a juste les deux lignes
torchAmulet = new TorchAmulet().setUnlocalizedName("torch_amulet") .setTextureName(TorchMod.MODID + ":" + "torch_amulet").setCreativeTab(CreativeTabs.tabTools); GameRegistry.registerItem(torchAmulet, "torch_amulet");
pour enregistrer mon item.
-
Dans la fonction addInformation tu as mit torchesLeft au lieu de TorchesLeft pour la condition hasKey, du-coup le tag nbt est réinitialisé à chaque fois.
-
Merci ! J’avais revérifié pourtant ! Dsl du derangement.
Y’a une chose à faire pour conclure la discusions ? -
Oui, mettre la balise résolu (editer ton premier message => balise résolu).