MFF

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

    Item pour réparer l'armure équipée

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    13 Messages 6 Publieurs 1.9k Vues 1 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.
    • T Hors-ligne
      titoux99
      dernière édition par

      @‘robin4002’:

      Salut,
      Oui c’est possible, il y a déjà eu des demandes d’aides similaire, cherches dans les discussions résolus.

      Bé justement je n’y arrive pas :c

      Voilà ma classe:


      package com.mod.arenalyce.items;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.potion.Potion;
      import net.minecraft.potion.PotionEffect;
      import net.minecraft.world.World;
      import scala.tools.nsc.doc.model.Entity;
      
      public class GemmeReparation extends Item
      {
      
          public GemmeReparation()
          {
           this.setMaxDamage(500);
              this.setMaxStackSize(1);
          }
      
          public void onItemRightClick(ItemStack stack, World world, Entity entity, int slot, boolean selected)
          {
              if(entity instanceof EntityPlayer)
              {
                  EntityPlayer player = (EntityPlayer)entity;
                  for(int i = 0; i < 4; i++)
                  {
                      ItemStack armor = player.getCurrentArmor(i);
                      if(armor != null && armor.getItemDamage() > 0 && stack.getItemDamage() < stack.getMaxDamage())
                      {
                          stack.setItemDamage(stack.getItemDamage() + 1);
                          armor.setItemDamage(armor.getItemDamage() - 1);
                      }
                  }
      
              }
          }
      }
      
      1 réponse Dernière réponse Répondre Citer 0
      • BrokenSwingB Hors-ligne
        BrokenSwing Moddeurs confirmés Rédacteurs
        dernière édition par

        Et ça ne marche pas ?

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

          int slot, boolean selected c’est quoi ça me semble pas que ça y soit dans mon code

          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 effet il y a prit les arguments de la fonction onUpdate de l’item, ça ne risque pas de fonctionner.

            Normalement c’est :
            public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
            Et il faut faire return stack; à la fin de la fonction.

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

              Oui ça donnera plutot ça :

                 package com.mod.arenalyce.items;
              
                 import net.minecraft.entity.player.EntityPlayer;
                 import net.minecraft.item.Item;
                 import net.minecraft.item.ItemStack;
                 import net.minecraft.potion.Potion;
                 import net.minecraft.potion.PotionEffect;
                 import net.minecraft.world.World;
                 import scala.tools.nsc.doc.model.Entity;
              
                 public class GemmeReparation extends Item
                 {
                     public GemmeReparation()
                     {
                      this.setMaxDamage(500);
                         this.setMaxStackSize(1);
                     }
              
                     public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer entity)
                     {
                         if(entity instanceof EntityPlayer)
                         {
                             EntityPlayer player = entity;
              
                             for(int i = 0; i < 4; i++)
                             {
                                 ItemStack armor = player.getCurrentArmor(i);
              
                                 if(armor != null && armor.getItemDamage() > 0 && stack.getItemDamage() < stack.getMaxDamage())
                                 {
                                     stack.setItemDamage(stack.getItemDamage() + 1);
                                     armor.setItemDamage(armor.getItemDamage() - 1);
                                 }
                             }
                         }
                         return stack;
                     }
                 }
              

              Mais fais gaffe se code la fais autre chose que se que tu demande il rendra 1 de dura /cliques et non 400 cherche un peut et tu trouveras la solution
              Ensuite personnellement j’aurais plutot fais lors que la déclaration de ton item dans supposons (main.class)
              J’aurais fais :
              GemmeReparation = new GemmeReparation(durabiliter max de l’item)……
              Et après dans cette class j’aurais fais :

              package com.mod.arenalyce.items;
              
              import net.minecraft.entity.player.EntityPlayer;
              import net.minecraft.item.Item;
              import net.minecraft.item.ItemStack;
              import net.minecraft.potion.Potion;
              import net.minecraft.potion.PotionEffect;
              import net.minecraft.world.World;
              import scala.tools.nsc.doc.model.Entity;
              
              public class GemmeReparation extends Item
              {
                 public GemmeReparation(duramax)
                 {
                      this.setMaxDamage(duramax);
                      this.setMaxStackSize(1);
                 }
              
                  public void onItemRightClick(ItemStack stack, World world, EntityPlayer entity)
                  {
                     if(entity instanceof EntityPlayer)
                     {
              
                         EntityPlayer player = entity;
                         for(int i = 0; i < 4; i++)
                         {
                              ItemStack armor = player.getCurrentArmor(i);
              
                              if(armor != null && armor.getItemDamage() > 0 && stack.getItemDamage() < stack.getMaxDamage())
                              {
                                  stack.setItemDamage(stack.getItemDamage() + 1);
                                  armor.setItemDamage(armor.getItemDamage() - 1);
                              }
                          }
                     }
                  }
              }
              

              Après c’est mon avis c’est juste plus classe comme ça et si tu fais plusieurs gemmes si tu optimise comme je viens de le faire tu pourras faire plus qu’un item dans ta classe (1 classe pour 5 items)

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

                Merci beaucoup les gars vous m’avez grandement aidez !!

                Par contre quand elle est a 0 de durat elle ne se broke pas comment faire pour qu’elle se broke svp ?
                Et aussi j’ai mit que sa utiliser 1 de durat sur la gemme

                stack.setItemDamage(stack.getItemDamage() + 1);

                armor.setItemDamage(armor.getItemDamage() - 10);

                Mais sa m’utilise 4 de durat a chaque clique droit je comprend : http://prntscr.com/bhkyxx

                1 réponse Dernière réponse Répondre Citer 0
                • ? Hors-ligne
                  Un Ancien Utilisateur
                  dernière édition par

                  bah change la balise dans le titre

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

                    Il faut que tu mettes la baliser Résolu (“Editer” sur ton premier post puis tu changes la balise).

                    Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                    AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                    Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                    Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

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

                      Merci beaucoup les gars vous m’avez grandement aidez !!

                      Par contre quand elle est a 0 de durat elle ne se broke pas comment faire pour qu’elle se broke svp ?
                      Et aussi j’ai mit que sa utiliser 1 de durat sur la gemme

                      stack.setItemDamage(stack.getItemDamage() + 1);

                      armor.setItemDamage(armor.getItemDamage() - 10);

                      Mais sa m’utilise 4 de durat a chaque clique droit je comprend : http://prntscr.com/bhkyxx

                      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

                        La fonction
                        “stack.setItemDamage(stack.getItemDamage() + 1);”
                        se trouve dans la boucle for qui va de 0 à 3, donc ce code est exécuté 4 fois.
                        Il faut le mettre en-dehors de la boucle.
                        Pour la démolition de l’item il faut utiliser stack.damageItem(player, 1); au lieu de stack.setItemDamage(stack.getItemDamage() + 1);

                        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