• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Résolu Bug Tag Boolean pour un itemstack

    1.7.x
    1.7.10
    2
    4
    1346
    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.
    • Deleted
      Deleted dernière édition par

      Salut (oui c’est encore moi, je m’excuse j’avoue je spam la touche “Nouveau Sujet” x) mais en ce moment c’est pas la période où j’arrive à résoudre tous mes problèmes car en ce moment je découvre plein de nouvelle choses ^^) à tous et à toutes
      Après cette longue salutation je vous pose le problème

      J’ai crée un nouvel item mangeable et je souhaite faire enregistrer un boolean de base false à son itemstack, seul problème j’ai besoin que vous vérifier si mon code marchera par rapport à ce que je souhaite au final : créer une nouvelle pomme qui quand on la mange va passer un boolean sur true et grâce à ce boolean je pourrai faire certaines conditions dans mon event handler mais d’où le but  des tag je veux que chaque pomme sur la map de chaque joueur ait son propre boolean et que un boolean passé sur true pour un joueur ne va pas affecter les booleans des autres pommes des autres joueurs sur la map. D’où le but des tag comme je l’ai dit contrairement à de simples variables dans la class.
      Bon trêves de bavardages voici ma class certes elle n’est pas finie surtout au niveau du stack.size qu’il faut décrémenter mais je n’ai pas eu le temps je me suis surtout focalisé sur sa fonction principale.

      
      package mrplaigon.fr.testMod.item;
      
      import java.util.List;
      
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.ItemFood;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.world.World;
      
      public class ItemPomme extends ItemFood
      {
      
      public ItemPomme (int gigot, float saturation, boolean pourChien) 
      {
      super(gigot, saturation, pourChien);
      this.setAlwaysEdible();
      }
      
          public ItemStack onEaten(ItemStack stack, World par2World, EntityPlayer par3EntityPlayer)
          {
          System.out.println("Methode onEaten appelee");
          if (stack.stackTagCompound != null) 
          {
              stack.stackTagCompound.setBoolean("mangee", true);
          }
      return stack;
          }
      
          public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5)
          {
                  if (stack.hasTagCompound())
                       {
                           NBTTagCompound var2 = stack.getTagCompound().getCompoundTag("mangee");
      
                           if (var2 != null)
                           {
                                var2.getTag("mangee");
                            System.out.println("boolean mangee = " + stack.stackTagCompound.getBoolean("mangee"));
                           }
                       }
           }
      }
      

      Encore une fois je vous remercie pour votre aide constance et je vous souhaite bonne chance pour résoudre le problème (même si je sais que certain n’en auront pas besoin, n’est-ce pas ? ^^).

      1 réponse Dernière réponse Répondre Citer 0
      • robin4002
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

        NBTTagCompound var2 = stack.getTagCompound().getCompoundTag("mangee");
        
        if (var2 != null)
        {
        

        ???
        if(stack.getTagCompound().hasKey(“mangee”))

        C’est pas plus compliqué que ça.

        1 réponse Dernière réponse Répondre Citer 0
        • Deleted
          Deleted dernière édition par

          @‘robin4002’:

          NBTTagCompound var2 = stack.getTagCompound().getCompoundTag("mangee");
          
          if (var2 != null)
          {
          

          ???
          if(stack.getTagCompound().hasKey(“mangee”))

          C’est pas plus compliqué que ça.

          voici à quoi ressemble le contenu de ma méthode onUpdate

          
                       if (stack.hasTagCompound())
          
                           {
                               NBTTagCompound var2 = stack.getTagCompound().getCompoundTag("mangee");
          
                               if (var2 != null)
                               {
                              if(stack.getTagCompound().hasKey("mangee"))
                              {
                                    var2.getTag("mangee");
                                System.out.println("boolean mangee = " + stack.stackTagCompound.getBoolean("mangee"));
                              }
                               }
                           }
          

          2 questions 
          Qu’apporte hasKey de + que mon null check ?
          Et deuxième question même avant que j’ajoute ta condition le message dans les logs ("boolean mangee = " + …) ne s’affichait pas et là, avec la condition il ne s’affiche toujours pas, que faire de + ?

          1 réponse Dernière réponse Répondre Citer 0
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

            Justement vire complètement le if (var2 != null) il fait tout buggué car stack.getTagCompound().getCompoundTag(“mangee”); sera toujours null.
            Il faut bien distinguer un tag compound d’une valeur stocké, ce n’est pas la même chose.

            1 réponse Dernière réponse Répondre Citer 0
            • 1 / 1
            • Premier message
              Dernier message
            Design by Woryk
            Contact / Mentions Légales

            MINECRAFT FORGE FRANCE © 2018

            Powered by NodeBB