MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Perte de durabilité des items de l'armure

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    20 Messages 3 Publieurs 1.3k Vues 3 Watching
    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.
    • blixow14B Hors-ligne
      blixow14
      dernière édition par

      Merci, je regarderai ça. Je passerai en résoulut si ça le fait

      J'aime les pâtes

      1 réponse Dernière réponse Répondre Citer 0
      • blixow14B Hors-ligne
        blixow14
        dernière édition par

        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) {
        }
        

        }

        J'aime les pâtes

        1 réponse Dernière réponse Répondre Citer 0
        • robin4002R Hors-ligne
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
          dernière édition par

          Fais un switch sur slot dans la fonction getProperties. Slot va de 0 à 3 pour chaque pièce d’armure.

          1 réponse Dernière réponse Répondre Citer 0
          • blixow14B Hors-ligne
            blixow14
            dernière édition par

            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);
            	}
            

            J'aime les pâtes

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002R Hors-ligne
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs
              dernière édition par

              Il faut mettre tout un return new ArmorProperties pour chaque pièce.

              1 réponse Dernière réponse Répondre Citer 0
              • blixow14B Hors-ligne
                blixow14
                dernière édition par

                @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

                J'aime les pâtes

                1 réponse Dernière réponse Répondre Citer 0
                • robin4002R Hors-ligne
                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                  dernière édition par

                  Je ne connais pas le constructeur de ArmorProperties, donc je ne serai pas te dire.

                  1 réponse Dernière réponse Répondre Citer 0
                  • blixow14B Hors-ligne
                    blixow14
                    dernière édition par

                    https://github.com/ExtrabiomesXL/forge/blob/master/common/net/minecraftforge/common/ISpecialArmor.java

                    je sais pas si ça peut t’aider

                    J'aime les pâtes

                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002R Hors-ligne
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                      dernière édition par

                      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);

                      1 réponse Dernière réponse Répondre Citer 0
                      • blixow14B Hors-ligne
                        blixow14
                        dernière édition par

                        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);
                        }}
                        

                        J'aime les pâtes

                        1 réponse Dernière réponse Répondre Citer 0
                        • 1 / 1
                        • Premier message
                          Dernier message
                        Design by Woryk
                        ContactMentions Légales

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB