• 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
    1204
    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

      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

        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

          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

            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
            • Premier message
              Dernier message
            Design by Woryk
            Contact / Mentions Légales

            MINECRAFT FORGE FRANCE © 2018

            Powered by NodeBB