Résolu Item qui rend de la durabilité
-
Bonjours j’aurais une question il y aurait moyen de faire qu’un item rende de la durabilité aux pièce d’armure équiper, si oui comment.
J’ai fais quelques recherche sur les sources de botania qui lui me donne :public boolean getIsRepairable(ItemStack par1ItemStack, ItemStack par2ItemStack) { return par2ItemStack.getItem() == Mods.Paladium && par2ItemStack.getItemDamage() == 4 ? true : super.getIsRepairable(par1ItemStack, par2ItemStack); }
(j’ai viré la réparation a l’enclume le temps de test)
Si quelqu’un a une idée -
Salut,
getIsRepairable c’est pour la réparation via enclume.
Ce que tu souhaites c’est que lorsque l’item est porté dans l’inventaire l’armure se restaure. Mais comment ? D’un coup ? Progressivement ? L’item doit-il s’user en même temps ? -
Elle se restaure petit a petit en enlevant de la durabilité sur l’item une fois que l’item est a 0 il ne casse pas mais ne regen plus
-
Un truc comme ça ?
@Override public void onUpdate(ItemStack stack, World world, Entity entity, int slot, boolean selected) { if(entity instanceof EntityPlayer) //Si c'est un joueur { EntityPlayer player = (EntityPlayer) entity; //On cast for(int i = 0; i < 4; i++) //Il y a 4 pièces d'armure { ItemStack armor = player.getCurrentArmor(i); //On récupère la pièce if(armor != null) //Cas où le slot est vide on ne rentre pas { //Vérifie qu'on répare pas un item entièrement réparé et qu'il reste de la durabilité à l'item qui répare if(armor.getItemDamage() > 0 && stack.getItemDamage() < stack.getMaxDamage()) { stack.setItemDamage(stack.getItemDamage() + 1); //On enlève de la durabilité à l'item qui répare armor.setItemDamage(armor.getItemDamage() - 1); //On rajoute de la durabilité à la pièce d'armure } } } } }
Et pense à mettre :
this.setMaxDamage(le nombre que tu veux);
Dans le constructeur
-
Lis bien ton code bodri, quand tu dis que tu enlèves de la durabilité tu mets +1 et vice-versa. De plus dans ta condition, tu as inversé le nom des variables, elle devrait plutôt être comme ça :
//Vérifie qu'on répare pas un item entièrement réparé et qu'il reste de la durabilité à l'item qui répare if(stack.getItemDamage() > 0 && armor.getItemDamage() < armor.getMaxDamage()) { stack.setItemDamage(stack.getItemDamage() - 1); //On enlève de la durabilité à l'item qui répare armor.setItemDamage(armor.getItemDamage() +1); //On rajoute de la durabilité à la pièce d'armure }
-
Et il y moyen de faire que je puisse réparer avec un item lui rendre 50 dura par item
-
Tu veux dire rendre instantanément après clic droit, 50 de dura à l’armure ?
Si oui, tout se passe dans la méthode onItemRightClick et c’est quasiment le même code qu’on t’a donné -
Non je veux dire que mettre un ingot plus l’anneau dans la table de craft = donné 50 dura a l’anneau en plus
-
Regarde les crafts de minecraft avec l’armure et les outils
-
@‘Julot10085’:
Lis bien ton code bodri, quand tu dis que tu enlèves de la durabilité tu mets +1 et vice-versa. De plus dans ta condition, tu as inversé le nom des variables, elle devrait plutôt être comme ça :
//Vérifie qu'on répare pas un item entièrement réparé et qu'il reste de la durabilité à l'item qui répare if(stack.getItemDamage() > 0 && armor.getItemDamage() < armor.getMaxDamage()) { stack.setItemDamage(stack.getItemDamage() - 1); //On enlève de la durabilité à l'item qui répare armor.setItemDamage(armor.getItemDamage() +1); //On rajoute de la durabilité à la pièce d'armure }
Tu t’es embrouillé, mon code était bon (je l’avais testé), quand on fait ```java
stack.setItemDamage(stack.getItemDamage() + 1);Effectivement on exprime la durabilité de cette façon : ```java int durability = stack.getMaxDamage() - stack.getItemDamage();
Ainsi en ajout 1 à itemDamage on enlève 1 à la durabilité.
J’espère que tu as compris.Même raisonnement pour la condition, imagine l’item qui répare a pour itemDamageMax 100 et pour itemDamage 100 aussi, alors sa durabilité sera égale à 100 - 100 = 0 (0 de durabilité on ne devrait pas pouvoir réparer), cependant 100 > 0 donc ton code dirait que l’on peut réparer.
Tout ça pour dire qu’il ne faut confondre durabilité et damageValue.
–-----------------------------------------------------------------------------------------
Quand à l’histoire de rajouter de la durabilité on craftant il faut que tu passe par une implémentation de IRecipe, regard dans la classe se trouvant dans net.minecraft.item.crafting.RecipeRepairItem et il y a un tuto sur MFF qui explique comment créer un implémentation de IRecipe
-
A ok autant pour moi, tu m’apprends quelque chose
-
Alors j’ai chercher un peu mais je ne trouve pas comment réparer mon item dans l’inventaire grâce a un lingot donc si jamais quelqu’un connais la classe de minecraft qui gère ça je prendrais bien
Merci ! -
Si c’est en craft :
@‘SCAREX’:Regarde les crafts de minecraft avec l’armure et les outils
-
Si c’est en craft :
Je me doute mais où qu’on le trouve car je me balade dans net.minecraft.item.crafting mais je ne vois pas où
-
Effectivement minecraft fait ces crafts directement dans le CraftingManager, mais tu peux utiliser le tutoriel sur le forum pour faire un IRecipe custom
-
Voila Voila J’ai le Irecipe ça marche Merci =p
-
tu peux me donner le code en entier avec la durabilité a definir stp
-
Évite de remonter des si anciens sujets
-
Et toi évite quand tu ajoutes un message de citer 3 ou 4 autres messages aussi longs que ça
Et si tu as du mal avec un post aussi vieux (effectivement) @MLNGamer, recrée un nouveau topic à la place de déterrer