MFF

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

    Réparer un outil

    Planifier Épinglé Verrouillé Déplacé Résolu Anciennes versions
    1.6.4
    18 Messages 5 Publieurs 4.7k 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.
    • MugiwaxarM Hors-ligne
      Mugiwaxar
      dernière édition par

      @‘kevin_68’:

      grâce au TileEntity,

      Étant donné que les TileEntity sont uniquement pour les blocs, je veux bien voir comment tu vas l’appliquer à un item.

      :huh:
      Chaque ItemStack a un tileEntity ^^

      Edit: item.getTagCompound()

      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

        Ça c’est un tag NBT, pas un tile entity. Ce n’est pas la même chose.

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

          C’est vrai
          Mais on peut quand même l’utiliser pour ma solution

          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

            Oui.

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

              Et donc, quel solution dois-je mieux utiliser?

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

                @‘sevenno07’:

                @‘Mugiwaxar’:

                Solution deux:

                Tu met une résistance normal, genre 1.000, et grâce au TileEntity, tu fais en sorte que le “damageItem()” soit appliquer qu’un fois sur 12, par exemple, ce qui donnera une résistance de 12.000

                O_O jamais je n’aurai imaginais sa, sa va me donnai un sacré coup de main dans mais mods merci ^^.
                [Juste un truc, vous voudrez bien faire un petit tuto sur comment faire sa par contre ? ^^’ merci d’avance :).]

                Bon voila, c’est KDO:

                
                @Override
                public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int X, int Y, int Z, int side, float hitX, float hitY, float hitZ)
                {
                // –- Récupération du tag --- //
                NBTTagCompound tag = item.getTagCompound();
                if(tag == null)
                return;
                
                // --- Récupération d la "durabilité" --- //
                int durability = tag.getInteger("Durability");
                
                // --- Vérifie si les dommages doivent être appliqués --- //
                if(durability >= 4)
                {
                item.damageItem(1, player);
                durability = 0;
                }
                else
                durability++;
                
                // --- Enregistrement du tag --- //
                tag.setInteger("Durability", durability);
                item.setTagCompound(tag);
                
                }
                
                

                Sur un item simple, à toi de l’adapter

                Ps: Par contre j’ai pas eu le temps de tester 😄

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

                  Merci :D, je regarderai sa un peu plus tard par contre ;).
                  Encor merci.

                  Auteur originale de Sevenno's Addons et de [url=http://www.minecraftfor…

                  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

                    @‘Mugiwaxar’:

                    @‘sevenno07’:

                    @‘Mugiwaxar’:

                    Solution deux:

                    Tu met une résistance normal, genre 1.000, et grâce au TileEntity, tu fais en sorte que le “damageItem()” soit appliquer qu’un fois sur 12, par exemple, ce qui donnera une résistance de 12.000

                    O_O jamais je n’aurai imaginais sa, sa va me donnai un sacré coup de main dans mais mods merci ^^.
                    [Juste un truc, vous voudrez bien faire un petit tuto sur comment faire sa par contre ? ^^’ merci d’avance :).]

                    Bon voila, c’est KDO:

                    
                    @Override
                    public boolean onItemUse(ItemStack item, EntityPlayer player, World world, int X, int Y, int Z, int side, float hitX, float hitY, float hitZ)
                    {
                    // –- Récupération du tag --- //
                    NBTTagCompound tag = item.getTagCompound();
                    if(tag == null)
                    return;
                    
                    // --- Récupération d la "durabilité" --- //
                    int durability = tag.getInteger("Durability");
                    
                    // --- Vérifie si les dommages doivent être appliqués --- //
                    if(durability >= 4)
                    {
                    item.damageItem(1, player);
                    durability = 0;
                    }
                    else
                    durability++;
                    
                    // --- Enregistrement du tag --- //
                    tag.setInteger("Durability", durability);
                    item.setTagCompound(tag);
                    
                    }
                    
                    

                    Sur un item simple, à toi de l’adapter

                    Ps: Par contre j’ai pas eu le temps de tester 😄

                    C’est pas avec la fonction onItemUse, et ton return; ne fonctionnera jamais vu que la fonction est du type boolean. Il faudrait plutôt utiliser onBlockDestroyed. et hitEntity.
                    Et sinon à la place de :
                    NBTTagCompound tag = item.getTagCompound();
                    if(tag == null)
                    return;
                    J’utiliserai plutôt :
                    NBTTagCompound tag = item.hasTagCompound() ? item.getTagCompound() : new NBTTagCompound();

                    Et à la place de :
                    int durability = tag.getInteger(“Durability”);
                    J’utiliserai :
                    int durability = tag.hasKey(“Durability”) ? tag.getInteger(“Durability”) : 0;

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

                      @‘robin4002’:

                      C’est pas avec la fonction onItemUse, et ton return; ne fonctionnera jamais vu que la fonction est du type boolean. Il faudrait plutôt utiliser onBlockDestroyed. et hitEntity.

                      Sa je sais bien, c’est pour ça que je lui est dit d’adapter suivant sont cas

                      @‘robin4002’:

                      Et sinon à la place de :
                      NBTTagCompound tag = item.getTagCompound();
                      if(tag == null)
                      return;
                      J’utiliserai plutôt :
                      NBTTagCompound tag = item.hasTagCompound() ? item.getTagCompound() : new NBTTagCompound();

                      Si l’itemStack na pas de NBTTagCompound , c’est qu’il y a un problème, donc autan arrêter la fonction, il se créée par défaut
                      Edit: Quoique, maintenant j’ai un doute

                      @‘robin4002’:

                      Et à la place de :
                      int durability = tag.getInteger(“Durability”);
                      J’utiliserai :
                      int durability = tag.hasKey(“Durability”) ? tag.getInteger(“Durability”) : 0;

                      Lol, la fonction tag.getInteger() retourne 0 si la clée n’existe pas, alors pourquoi s’embêter 🙂

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

                        Merci,
                        en réalité oui, sans la modification de robin cela ne fonctionne pas
                        ce qui me donne au final ce code la:

                        
                        NBTTagCompound tag = item.hasTagCompound() ? item.getTagCompound() : new NBTTagCompound();
                        int durability = tag.hasKey("Durability") ? tag.getInteger("Durability") : 0;
                        
                        if(durability >= 12)
                        {
                        item.damageItem(1, player);
                        durability = 0;
                        }
                        else
                        durability++;
                        
                        tag.setInteger("Durability", durability);
                        item.setTagCompound(tag);
                        
                        return true;
                        
                        

                        A mettre dans soit hitEntity() pour une épée ou bien OnBlockDestroyed() pour un outil
                        concernant les armures? quel est la fonction à utiliser?

                        Quelqu’un a t’il une idée au sujet de l’obsidienne incassable en mettant un niveau de 4?

                        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

                          @‘Mugiwaxar’:

                          @‘robin4002’:

                          Et sinon à la place de :
                          NBTTagCompound tag = item.getTagCompound();
                          if(tag == null)
                          return;
                          J’utiliserai plutôt :
                          NBTTagCompound tag = item.hasTagCompound() ? item.getTagCompound() : new NBTTagCompound();

                          Si l’itemStack na pas de NBTTagCompound , c’est qu’il y a un problème, donc autan arrêter la fonction, il se créée par défaut
                          Edit: Quoique, maintenant j’ai un doute

                          Non, un itemstack n’a pas obligatoirement un tag NBT, par défaut il n’en a pas. Sans ce code, NPE.

                          @‘Mugiwaxar’:

                          @‘robin4002’:

                          Et à la place de :
                          int durability = tag.getInteger(“Durability”);
                          J’utiliserai :
                          int durability = tag.hasKey(“Durability”) ? tag.getInteger(“Durability”) : 0;

                          Lol, la fonction tag.getInteger() retourne 0 si la clée n’existe pas, alors pourquoi s’embêter 🙂

                          En effet, j’avais jamais fait gaffe, merci !

                          @‘totos51’:

                          concernant les armures? quel est la fonction à utiliser?

                          Quelqu’un a t’il une idée au sujet de l’obsidienne incassable en mettant un niveau de 4?

                          Je pense qu’il faut passer par l’event EntityHurt de forge, car il n’y a pas de fonction dans ItemArmor
                          Pour la deuxième question, surement un bug de forge, ça fonctionnait bien en 1.4.7 quand j’avais fait enderOre.

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

                            Merci :3
                            Sujet résolu 😄

                            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