-
Dans
getArmorDisplayil faut return le nombre de demi “t-shirt” comme tu l’appelles (moi j’appelle plutôt ça des points d’armures).Dans
damageArmoril faut effectuer l’action de dégât sur l’armure, donc par exemple appeler stack.damageItem(damage);Et dans
getPropertiesil faut return un nouveauArmorPropertiespar contre je ne connais pas son constructeur, donc je ne sais pas du tout ce qu’il faut mettre dedans. -
Merci, je regarderai ça. Je passerai en résoulut si ça le fait
-
J’ai réussis à régler dégâts qu’on prend et les “t-shirt” de l’armure. En revanche je sais pas comment retirer la durabilité pour chaque pièce de l’armure et qu’en plus la durabilité perdu soit differente en fonction de la source de dégât.
@Override public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) { return new ArmorProperties(0, ArmorMaterials.celestArmor.getDamageReductionAmount(slot) / 30.0D, armor.getItem().getMaxDamage() + 1 - armor.getItemDamage()); } @Override public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) { switch (slot) { case 0: return 4; case 1: return 7; case 2: return 5; case 3: return 4; } return slot; } @Override public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) { }}
-
Fais un switch sur slot dans la fonction getProperties. Slot va de 0 à 3 pour chaque pièce d’armure.
-
Je garde ce qu’il y a déjà dans la fonction ?
Et seconde problème, quand je fais mon switch je peux pas return ça, pour faire les pertes du durabilités sur les pièces de l’armure.switch (slot) { case 0: return armor.setItemDamage(armor.getItemDamage() + 1); } -
Il faut mettre tout un
return new ArmorPropertiespour chaque pièce. -
@Override public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) { switch (slot) { case 0: return new ArmorProperties(0, ArmorMaterials.celestArmor.getDamageReductionAmount(slot) / 28.0D, armor.getItem().getMaxDamage() + 1); case 1: return new ArmorProperties(0, ArmorMaterials.celestArmor.getDamageReductionAmount(slot) / 28.0D, armor.getItem().getMaxDamage() + 1); case 2: return new ArmorProperties(0, ArmorMaterials.celestArmor.getDamageReductionAmount(slot) / 28.0D, armor.getItem().getMaxDamage() + 1); case 3: return new ArmorProperties(0, ArmorMaterials.celestArmor.getDamageReductionAmount(slot) / 28.0D, armor.getItem().getMaxDamage() + 1); } return null; }ça veut toujours pas, c’est certenement ‘armor.getItem().getMaxDamage() + 1);’ qui est mal fait
-
Je ne connais pas le constructeur de ArmorProperties, donc je ne serai pas te dire.
-
je sais pas si ça peut t’aider
-
En fait ton problème n’est pas ici, c’est dans la fonction damageArmor que tu dois faire des dégâts à l’armure.
Et je t’ai déjà dit ce qu’il faut utiliser :
@robin4002 a dit dans Perte de durabilité des items de l'armure :
Dans damageArmor il faut effectuer l’action de dégât sur l’armure, donc par exemple appeler stack.damageItem(damage);
-
C’est bon ça marche ! Merci à toi Robin
Voici le code@Override public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) { switch (slot) { case 0: return new ArmorProperties(0, ArmorMaterials.celestArmor.getDamageReductionAmount(slot) / 28.0D, armor.getItem().getMaxDamage() + 1 - armor.getItemDamage()); case 1: return new ArmorProperties(0, ArmorMaterials.celestArmor.getDamageReductionAmount(slot) / 28.0D, armor.getItem().getMaxDamage() + 1 - armor.getItemDamage()); case 2: return new ArmorProperties(0, ArmorMaterials.celestArmor.getDamageReductionAmount(slot) / 28.0D, armor.getItem().getMaxDamage() + 1 - armor.getItemDamage()); case 3: return new ArmorProperties(0, ArmorMaterials.celestArmor.getDamageReductionAmount(slot) / 28.0D, armor.getItem().getMaxDamage() + 1 - armor.getItemDamage()); } return null; } @Override public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) { switch (slot) { case 0: return 4; case 1: return 7; case 2: return 5; case 3: return 4; } return slot; } @Override public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) { stack.damageItem(damage * 3, entity); }}