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.
    • 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