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

      Je parle des 3 fonctions qui sont rajoutées en implementant l’interface. Je sais pas trop comment elles fonctionnent pour que ça m’affiche les t-shirt d’armure et que je puisse gérer la résistance + la durabilité.

      @Override
      public ArmorProperties getProperties(EntityLivingBase player, ItemStack armor, DamageSource source, double damage, int slot) {
      	return null;
      }
      
      @Override
      public int getArmorDisplay(EntityPlayer player, ItemStack armor, int slot) {
      	return 0;
      }
      
      @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

        Dans getArmorDisplay il faut return le nombre de demi “t-shirt” comme tu l’appelles (moi j’appelle plutôt ça des points d’armures).

        Dans damageArmor il faut effectuer l’action de dégât sur l’armure, donc par exemple appeler stack.damageItem(damage);

        Et dans getProperties il faut return un nouveau ArmorProperties par contre je ne connais pas son constructeur, donc je ne sais pas du tout ce qu’il faut mettre dedans.

        1 réponse Dernière réponse Répondre Citer 0
        • 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