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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

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

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

        Oui j’ai déja poser la question sur le forum, le but est de faire un onitemrightclick et de consumer la durabiliter de ton item puis de sois la répartir (100 /pieces d’armures) ou 400/pièces

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