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

      Bonjour/Bonsoir,

      J’aurais voulus savoir si c’était possible de créer un item “Gemme de Réparation” que quand on fais clique droit deçu sa utilise la durat “De l’item ‘Gemme de réparation’ qui a par Exemple 4 de durat” mais que sa répare Exemple “400” de durat “Par clique” de l’'armure ÉQUIPÉE sur le joueur qui l’utilise.

      Si vous pouvez m’expliquer comment faire ceci sa serai vraiment sympa de votre part
      Merci.

      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

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