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