• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Problème de durabilité

    1.9.x et 1.10.x
    1.10.x
    3
    4
    1108
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      aypristyle last edited by

      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 Reply Last reply Reply Quote 0
      • Gugu
        Gugu last edited by

        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 Reply Last reply Reply Quote 0
        • A
          aypristyle last edited by

          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 Reply Last reply Reply Quote 0
          • BrokenSwing
            BrokenSwing Moddeurs confirmés Rédacteurs last edited by

            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 Reply Last reply Reply Quote 0
            • 1 / 1
            • First post
              Last post
            Design by Woryk
            Contact / Mentions Légales

            MINECRAFT FORGE FRANCE © 2018

            Powered by NodeBB