Réparer un outil
-
@‘kevin_68’:
grâce au TileEntity,
Étant donné que les TileEntity sont uniquement pour les blocs, je veux bien voir comment tu vas l’appliquer à un item.
:huh:
Chaque ItemStack a un tileEntity ^^Edit: item.getTagCompound()
-
Ça c’est un tag NBT, pas un tile entity. Ce n’est pas la même chose.
-
C’est vrai
Mais on peut quand même l’utiliser pour ma solution -
Oui.
-
Et donc, quel solution dois-je mieux utiliser?
-
@‘sevenno07’:
@‘Mugiwaxar’:
Solution deux:
Tu met une résistance normal, genre 1.000, et grâce au TileEntity, tu fais en sorte que le “damageItem()” soit appliquer qu’un fois sur 12, par exemple, ce qui donnera une résistance de 12.000
O_O jamais je n’aurai imaginais sa, sa va me donnai un sacré coup de main dans mais mods merci ^^.
[Juste un truc, vous voudrez bien faire un petit tuto sur comment faire sa par contre ? ^^’ merci d’avance :).]Bon voila, c’est KDO:
@Override public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int X, int Y, int Z, int side, float hitX, float hitY, float hitZ) { // –- Récupération du tag --- // NBTTagCompound tag = item.getTagCompound(); if(tag == null) return; // --- Récupération d la "durabilité" --- // int durability = tag.getInteger("Durability"); // --- Vérifie si les dommages doivent être appliqués --- // if(durability >= 4) { item.damageItem(1, player); durability = 0; } else durability++; // --- Enregistrement du tag --- // tag.setInteger("Durability", durability); item.setTagCompound(tag); }Sur un item simple, à toi de l’adapter
Ps: Par contre j’ai pas eu le temps de tester

-
Merci :D, je regarderai sa un peu plus tard par contre ;).
Encor merci. -
@‘Mugiwaxar’:
@‘sevenno07’:
@‘Mugiwaxar’:
Solution deux:
Tu met une résistance normal, genre 1.000, et grâce au TileEntity, tu fais en sorte que le “damageItem()” soit appliquer qu’un fois sur 12, par exemple, ce qui donnera une résistance de 12.000
O_O jamais je n’aurai imaginais sa, sa va me donnai un sacré coup de main dans mais mods merci ^^.
[Juste un truc, vous voudrez bien faire un petit tuto sur comment faire sa par contre ? ^^’ merci d’avance :).]Bon voila, c’est KDO:
@Override public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int X, int Y, int Z, int side, float hitX, float hitY, float hitZ) { // –- Récupération du tag --- // NBTTagCompound tag = item.getTagCompound(); if(tag == null) return; // --- Récupération d la "durabilité" --- // int durability = tag.getInteger("Durability"); // --- Vérifie si les dommages doivent être appliqués --- // if(durability >= 4) { item.damageItem(1, player); durability = 0; } else durability++; // --- Enregistrement du tag --- // tag.setInteger("Durability", durability); item.setTagCompound(tag); }Sur un item simple, à toi de l’adapter
Ps: Par contre j’ai pas eu le temps de tester

C’est pas avec la fonction onItemUse, et ton return; ne fonctionnera jamais vu que la fonction est du type boolean. Il faudrait plutôt utiliser onBlockDestroyed. et hitEntity.
Et sinon à la place de :
NBTTagCompound tag = item.getTagCompound();
if(tag == null)
return;
J’utiliserai plutôt :
NBTTagCompound tag = item.hasTagCompound() ? item.getTagCompound() : new NBTTagCompound();Et à la place de :
int durability = tag.getInteger(“Durability”);
J’utiliserai :
int durability = tag.hasKey(“Durability”) ? tag.getInteger(“Durability”) : 0; -
@‘robin4002’:
C’est pas avec la fonction onItemUse, et ton return; ne fonctionnera jamais vu que la fonction est du type boolean. Il faudrait plutôt utiliser onBlockDestroyed. et hitEntity.
Sa je sais bien, c’est pour ça que je lui est dit d’adapter suivant sont cas
@‘robin4002’:
Et sinon à la place de :
NBTTagCompound tag = item.getTagCompound();
if(tag == null)
return;
J’utiliserai plutôt :
NBTTagCompound tag = item.hasTagCompound() ? item.getTagCompound() : new NBTTagCompound();Si l’itemStack na pas de NBTTagCompound , c’est qu’il y a un problème, donc autan arrêter la fonction, il se créée par défaut
Edit: Quoique, maintenant j’ai un doute@‘robin4002’:
Et à la place de :
int durability = tag.getInteger(“Durability”);
J’utiliserai :
int durability = tag.hasKey(“Durability”) ? tag.getInteger(“Durability”) : 0;Lol, la fonction tag.getInteger() retourne 0 si la clée n’existe pas, alors pourquoi s’embêter

-
Merci,
en réalité oui, sans la modification de robin cela ne fonctionne pas
ce qui me donne au final ce code la:NBTTagCompound tag = item.hasTagCompound() ? item.getTagCompound() : new NBTTagCompound(); int durability = tag.hasKey("Durability") ? tag.getInteger("Durability") : 0; if(durability >= 12) { item.damageItem(1, player); durability = 0; } else durability++; tag.setInteger("Durability", durability); item.setTagCompound(tag); return true;A mettre dans soit hitEntity() pour une épée ou bien OnBlockDestroyed() pour un outil
concernant les armures? quel est la fonction à utiliser?Quelqu’un a t’il une idée au sujet de l’obsidienne incassable en mettant un niveau de 4?
-
@‘Mugiwaxar’:
@‘robin4002’:
Et sinon à la place de :
NBTTagCompound tag = item.getTagCompound();
if(tag == null)
return;
J’utiliserai plutôt :
NBTTagCompound tag = item.hasTagCompound() ? item.getTagCompound() : new NBTTagCompound();Si l’itemStack na pas de NBTTagCompound , c’est qu’il y a un problème, donc autan arrêter la fonction, il se créée par défaut
Edit: Quoique, maintenant j’ai un douteNon, un itemstack n’a pas obligatoirement un tag NBT, par défaut il n’en a pas. Sans ce code, NPE.
@‘Mugiwaxar’:
@‘robin4002’:
Et à la place de :
int durability = tag.getInteger(“Durability”);
J’utiliserai :
int durability = tag.hasKey(“Durability”) ? tag.getInteger(“Durability”) : 0;Lol, la fonction tag.getInteger() retourne 0 si la clée n’existe pas, alors pourquoi s’embêter

En effet, j’avais jamais fait gaffe, merci !
@‘totos51’:
concernant les armures? quel est la fonction à utiliser?
Quelqu’un a t’il une idée au sujet de l’obsidienne incassable en mettant un niveau de 4?
Je pense qu’il faut passer par l’event EntityHurt de forge, car il n’y a pas de fonction dans ItemArmor
Pour la deuxième question, surement un bug de forge, ça fonctionnait bien en 1.4.7 quand j’avais fait enderOre. -
Merci :3
Sujet résolu