-
J’ai déjà essayé de m’en servir mais ça me paraît compliqué comme fonctionnement. As-tu une idée de quoi mettre dans les fonctions dans mon actuel ?
-
Dans les fonctions de ton actuel ???
Je n’ai pas compris la question.Pour utiliser
ISpecialArmoril faut implémenter l’interface dans la classe de ton armure. Après pour le reste de tête je ne serai pas te le dire. -
Je parle des 3 fonctions qui sont rajoutées en implementant l’interface. Je sais pas trop comment elles fonctionnent pour que ça m’affiche les t-shirt d’armure et que je puisse gérer la résistance + la durabilité.
@Override public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) { return null; } @Override public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) { return 0; } @Override public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) { } -
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); }}