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

      pas sûr d’avoir compris x) Mais en mettant ça, mon plastron perd plus de durabilité que mon casque lorsqu’il prend des dégâts d’epées. Sauf que si je réduis le chiffre “7” (qui est le plastron), il pendra effectivement moins de durabilité, mais protégera moins en terme de résistance. Ce que je veux c’est avoir une bonne résistance, mais une faible perte de durabilité. (là je perd 5 de dura à chaque coup sur le plastron, et j’aimerai que ça soit 3).

      	celestArmor = EnumHelper.addArmorMaterial("celest_armor", 100, new int[] { 4, 7, 6, 6 }, 35);
      

      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 robin4002

        Salut,
        Les quatre nombres décrivent comment les pièces de l’armure doit absorber les dégâts.
        Plus c’est élevé moins le joueur ne prend de dégât et plus l’armure en prend.
        Si tu veux augmenter la durabilité, c’est la première valeur qu’il faut augmenter.

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

          Merci de ta réponse.
          En effet, c’est ce que j’avais compris. Mais n’y a t’il pas un moyen de faire baisser la durabilité que perd la piece de l’armure à chaque coup justement ? Tout en conservant une forte résistance ?

          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

            Non pas avec le système de Minecraft.

            Il faut passer par ISpecialArmor pour avoir un controle plus fin.

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

              J’ai déjà essayé de m’en servir mais ça me paraît compliqué comme fonctionnement. As-tu une idée de quoi mettre dans les fonctions dans mon actuel ?

              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 les fonctions de ton actuel ???
                Je n’ai pas compris la question.

                Pour utiliser ISpecialArmor il faut implémenter l’interface dans la classe de ton armure. Après pour le reste de tête je ne serai pas te le dire.

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