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

    Résolu Minecraft 1.7.10: Armures

    1.7.x
    1.7.10
    2
    9
    934
    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.
    • S
      Sushi_Pvp dernière édition par

      Re-bonjour à tous, j’ai maintenant un nouveau problème qui vient a moi: lorsque que je suis sur mon serveur et quand un autre joueur me tape avec une de mes armures moddés, je ne prend aucun dégât jusqu’à la moitier de la dura de l’armure ou je me fait quasiment one-shot.

      Après de nombreuses recherches je suis parvenu a implementer dans la classe de mon armure ISpecialArmor

      Maintenant c’est étrange, tout fonctionne mais quand un zombie me frappe par exemple je prend 1 coeur alors que cette armure reste puissante…

      Voici ma classe de l’armure:

      package com.mod.aktezia.items;
      
      import com.mod.aktezia.Reference;
      import com.mod.aktezia.init.ItemMod;
      
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.ItemArmor;
      import net.minecraft.item.ItemStack;
      import net.minecraft.util.DamageSource;
      import net.minecraft.util.MathHelper;
      import net.minecraftforge.common.ISpecialArmor;
      import net.minecraftforge.common.ISpecialArmor.ArmorProperties;
      import net.minecraft.item.ItemArmor.ArmorMaterial;
      
      public class ItemArmorLinxium extends ItemArmor implements ISpecialArmor
      {
          
          
      
      	public ItemArmorLinxium(ArmorMaterial material, int armorType, String name){
      		super(material, 0, armorType);
      		}
      
      
      
      	public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type)
          {
              if(stack.getItem() == ItemMod.linxium_legs)
              {
                  return Reference.MOD_ID + ":textures/models/armor/linxium_layer_2.png";
              }
              
              else if(stack.getItem() == ItemMod.linxium_boots || stack.getItem() == ItemMod.linxium_chestplate || stack.getItem() == ItemMod.linxium_helmet);
              {
                  return Reference.MOD_ID + ":textures/models/armor/linxium_layer_1.png";
              }
          }
          
          
      
      	public ArmorProperties getProperties(EntityLivingBase player, ItemStack stack, DamageSource source, double damage, int slot){
      
      		if(source.isProjectile() == true)
      		{
      		return new ArmorProperties(1, 1, MathHelper.floor_double(damage * 3D));
      		}
      
      		//problems with this - want to decrease damage done to player if zombie
      		else if(source == DamageSource.generic)
      		{
      		return new ArmorProperties(1, 1, MathHelper.floor_double(damage * 20D));
      		}
      		return new ArmorProperties(1, 1, 1);
      		}
      
      		public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) {
      		if(slot == 0){
      		//boots
      		return 10;
      		}
      		else if(slot == 1){
      		//leggings
      		return 13;
      		}
      		else if(slot == 2){
      		//Chestplate
      		return 15;
      		}
      		else{
      		//helmet
      		return 15;
      		}
      		}
      
      		public void damageArmor(EntityLivingBase entity, ItemStack stack, DamageSource source, int damage, int slot) {
      		if(source.isProjectile() == true){
      		stack.damageItem(damage * 3, entity); //Allows you to control the amount of damage done to each piece of armor, useful for nerfing some suits of armor.
      		}
      		else if(source == DamageSource.generic){
      		stack.damageItem(damage * 3, entity); //Allows you to control the amount of damage done to each piece of armor, useful for nerfing some suits of armor.
      		}
      		else if(source == DamageSource.fall){
      		stack.damageItem(damage * 0, entity);
      		}
      		else{
      		stack.damageItem(damage / 3, entity);
      		}
      		}
      
          
      
          
      }
      
      

      Ainsi que ma classe ou j’enregistre mes Items

      public static ArmorMaterial Linxiumarmor = EnumHelper.addArmorMaterial("Linxiumarmor", 80, new int[] {6, 11, 9, 6}, 20);
      
      linxium_helmet = new ItemArmorLinxium(Linxiumarmor, 0, null).setCreativeTab(AkteziaMod.Aktezia).setTextureName(Reference.MOD_ID + ":linxium_helmet").setUnlocalizedName("linxium_helmet");
              linxium_chestplate = new ItemArmorLinxium(Linxiumarmor, 1, null).setCreativeTab(AkteziaMod.Aktezia).setTextureName(Reference.MOD_ID + ":linxium_chestplate").setUnlocalizedName("linxium_chestplate");
              linxium_legs = new ItemArmorLinxium(Linxiumarmor, 2, null).setCreativeTab(AkteziaMod.Aktezia).setTextureName(Reference.MOD_ID + ":linxium_legs").setUnlocalizedName("linxium_legs");
              linxium_boots = new ItemArmorLinxium(Linxiumarmor, 3, null).setCreativeTab(AkteziaMod.Aktezia).setTextureName(Reference.MOD_ID + ":linxium_boots").setUnlocalizedName("linxium_boots");
      

      Ne vous inquiétez pas, j’ai bien enregistrer mon armure, etc…

      Merci fort bien pour ceux qui m’aiderons !

      1 réponse Dernière réponse Répondre Citer 0
      • SpyMan
        SpyMan dernière édition par SpyMan

        yop, int[] {6, 11, 9, 6} la somme de ces valeurs doit faire 20 or les tiennent font 32, ensuite dans l’init de tes items armor new ItemArmorLinxium(Linxiumarmor, 3, null) le deuxieme arguments corespond a l’armorType et non au renderIndex ?

        1 réponse Dernière réponse Répondre Citer 0
        • S
          Sushi_Pvp dernière édition par

          yop,

          je viens de changer mes int:

          public static ArmorMaterial Linxiumarmor = EnumHelper.addArmorMaterial("Linxiumarmor", 80, new int[] {3, 8, 6, 3}, 20);
          

          Mais maintenant, effectivement mon deuxième argument est l’armorType, et quand je passe ma souris dessus, c’est effectivement ce qu’il faut “metre”

          Maintenant que mes sommes font 20 comment augmenter l’absorption au dégât de mon armure ? 🙂

          1 réponse Dernière réponse Répondre Citer 0
          • SpyMan
            SpyMan dernière édition par

            envoi ta class<extends ItemArmor>

            1 réponse Dernière réponse Répondre Citer 0
            • S
              Sushi_Pvp dernière édition par

              La class ItemArmor c’est celle de minecraft

              1 réponse Dernière réponse Répondre Citer 0
              • SpyMan
                SpyMan dernière édition par

                envoi celle ci => ItemArmorLinxium

                1 réponse Dernière réponse Répondre Citer 0
                • S
                  Sushi_Pvp dernière édition par

                  Elle est dans le premier message normalement ainsi que ma class principale

                  1 réponse Dernière réponse Répondre Citer 0
                  • S
                    Sushi_Pvp dernière édition par

                    Peux-tu accepter ma demande d’amis sur discord pseudo ( GodMan_ ) ? 🙂
                    Merci d’avance et toujours en attente de réponse… 😢

                    1 réponse Dernière réponse Répondre Citer 0
                    • S
                      Sushi_Pvp dernière édition par

                      Bonjour à tous !

                      SpyMan ayant réglé mon problème, je vais expliquer pour ceux qui auront le même problème que moi:

                      public ArmorProperties getProperties(EntityLivingBase player, ItemStack stack, DamageSource source, double damage, int slot){
                      
                      		if(source.isProjectile() == true)
                      		{
                      		return new ArmorProperties(1, 1, MathHelper.floor_double(damage * 3D));
                      		}
                      
                      		//problems with this - want to decrease damage done to player if zombie
                      		else if(source == DamageSource.generic)
                      		{
                      		return new ArmorProperties(1, 1, MathHelper.floor_double(damage * 20D));
                      		}
                      		return new ArmorProperties(1, 1, 1);
                      		}
                      

                      Pour augmenter l’absorption des armures, remplacez les “1” par des valeurs supérieurs !

                      Sujet résolu

                      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