• Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes
  • S'inscrire
  • Se connecter
  • S'inscrire
  • Se connecter
  • Recherche
  • Récent
  • Mots-clés
  • Populaire
  • Utilisateurs
  • Groupes

Résolu Problème de durabilité

1.9.x et 1.10.x
1.10.x
3
4
1.2k
Charger plus de messages
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • A
    aypristyle dernière édition par 26 mars 2017, 19:13

    Bonjour à tous,
    J’ai créer mon armure en 1.10 sauf que même quand je prend des dégâts la durabilité des pièces d’armure reste inchangée
    Voici ma classe armure

    package net.shadowfacts.tutorial.item;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.inventory.EntityEquipmentSlot;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.util.DamageSource;
    import net.minecraftforge.common.ISpecialArmor;
    import net.shadowfacts.tutorial.TutorialMod;
    public class ItemArmor extends net.minecraft.item.ItemArmor implements ItemModelProvider, ISpecialArmor{
    private String name;
    public ItemArmor(ArmorMaterial material, EntityEquipmentSlot slot, String name) {
    super(material, 0, slot);
    setRegistryName(name);
    setUnlocalizedName(name);
    this.name = name;
    material.customCraftingMaterial = ModItems.ingotCopper;//pour réparer l'item
    }
    @Override
    public void registerItemModel(Item item) {
    TutorialMod.proxy.registerItemRenderer(this, 0, name);
    }
    @Override
    public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) {
    switch(slot) {
    case 3://Helmet
    return new ArmorProperties(0, 0.05, 10);
    case 2://Chesplate
    return new ArmorProperties(0, 0.2, 16);
    case 1://Leggings
    return new ArmorProperties(0, 0.3, 12);
    case 0://Boots
    return new ArmorProperties(0, 0.04, 6);
    default://Juste pour éclipse rien de particulier à faire ici
    return new ArmorProperties(0, 0, 0);
    }
    }
    @Override
    public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) {
    switch(slot) {
    case 0:
    return 4; //Deux plastrons
    case 1:
    return 6; //Trois plastrons
    case 2:
    return 7; //Trois plastrons et demi
    case 3:
    return 3; //Un plastron et demi
    default:
    return 0;
    }
    }
    @Override
    public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) {
    stack.damageItem(damage / 2, entity);
    if(stack.getItemDamage() >= stack.getMaxDamage()) {
    stack = null;
    }
    }
    }

    Merci d’avance pour voitr aide !

    **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

    1 réponse Dernière réponse Répondre Citer 0
    • Gugu
      Gugu dernière édition par 27 mars 2017, 11:05

      Bonjour aypristyle,

      Pourquoi est-ce que vous re-écrivez la méthode ItemArmor#damageArmor ?
      Celle-ci est déjà implémentée par la classe ItemArmor de Minecraft de base.
      De plus, utiliser le nom de classe ItemArmor risque de vous causer beaucoup de problèmes dans le futur, je vous conseille d’ajouter un tag en rapport avec votre mod, ou de préciser le nom de la classe (Ex: ItemArmorMOD ou ItemArmorObsidienne)

      Cordialement,
      Gugu

      "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
      ― Jordan B. Peterson

      1 réponse Dernière réponse Répondre Citer 0
      • A
        aypristyle dernière édition par 27 mars 2017, 15:40

        Bonjour,
        Merci pour ta réponse j’ai appliqué tes conseils mais mon problème ne sait toujours pas résolu aurait-tu d’autres conseils a me donner ?
        Aypristyle

        **Je suis un membre apprécié et joueur, j'ai déjà obtenu 1[ point de réputation./…

        1 réponse Dernière réponse Répondre Citer 0
        • BrokenSwing
          BrokenSwing Moddeurs confirmés Rédacteurs dernière édition par 29 mars 2017, 15:55

          Gugu : c’est ISpecialArmor#damageArmor donc il est obligé de la ré-écrire en implémentant l’interface

          Aypristyle : essai

          @Override
          public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) {
          stack.damageItem(damage, entity);
          if(stack.getItemDamage() >= stack.getMaxDamage()) {
          stack.stackSize -= 1;
          }
          }

          Ou un truc comme ça. En 1.11 la documentation est la suivante :

          /**
          * Applies damage to the ItemStack. The mod is responsible for reducing the
          * item durability and stack size. If the stack is depleted it will be cleaned
          * up automatically.
          *
          * @param entity The entity wearing the armor
          * @param stack The ItemStack of the armor item itself.
          * @param source The source of the damage, which can be used to alter armor
          * properties based on the type or source of damage.
          * @param damage The amount of damage being applied to the armor
          * @param slot The armor slot the item is in.
          */
          public abstract void damageArmor(EntityLivingBase entity, @Nonnull ItemStack stack, DamageSource source, int damage, int slot);
          1 réponse Dernière réponse Répondre Citer 0
          • 1 / 1
          1 sur 4
          • Premier message
            1/4
            Dernier message
          Design by Woryk
          Contact / Mentions Légales

          MINECRAFT FORGE FRANCE © 2018

          Powered by NodeBB