• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Solved Nbt tag bugée

    1.7.x
    1.7.10
    4
    6
    1324
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Yorwan
      Yorwan last edited by

      bonjour c’est (encore) moi j’ai crée des nbt data tag mais j’ai un résultat très étrange voici mes classe

      la classe de l’item

      package com.mathiasetampes.genetic.common;
      
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.nbt.NBTTagList;
      import net.minecraft.world.World;
      import net.minecraftforge.common.util.Constants;
      
      public class Genome extends ItemWithGenome
      {
      public Genome()
      {
         this.setCreativeTab(CreativeTabs.tabMisc);
      }
      
         public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
         {
          if(stack != null && !world.isRemote)
              {
                  NBTTagCompound nbtTag = stack.getTagCompound();
                  if(nbtTag == null)
                  {
                      nbtTag = new NBTTagCompound();
                      setGenome(nbtTag,stack,world,player);
                      NBTTagList test = stack.getTagCompound().getTagList("genome", Constants.NBT.TAG_STRING);
              System.out.println(test);
                  }
                  else
              {
              System.out.println(getList(stack));
              }          
              }
      
      return stack;
         }
      
      }
      

      et la classe dont il est extend

      package com.mathiasetampes.genetic.common;
      
      import java.util.Random;
      
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.item.Item;
      import net.minecraft.item.ItemStack;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.nbt.NBTTagList;
      import net.minecraft.nbt.NBTTagString;
      import net.minecraft.world.World;
      import net.minecraftforge.common.util.Constants;
      
      public class ItemWithGenome extends Item
      {
      protected Random rand = new Random();
      protected NBTTagList list = new NBTTagList();
      protected void setGenome(NBTTagCompound nbtTag, ItemStack stack,World world, EntityPlayer player)
      {
      list.appendTag(new NBTTagString(setGroupeSanguin()));
      list.appendTag(new NBTTagString(setGroupeSanguin()));
      list.appendTag(new NBTTagString(setRhesus()));
      list.appendTag(new NBTTagString(setRhesus()));
      nbtTag.setTag("genome", list);
         stack.setTagCompound(nbtTag);
      }
      
      protected String setRhesus()
      {
      int tmp = rand.nextInt(2);
      if(tmp == 0)
      return "-;Recessif" ;
      else
      return "+;Dominant" ;
      
      }
      
      protected String setGroupeSanguin()
      {
      int tmp = rand.nextInt(3);
      if(tmp == 0)
      {
      return "a;Dominant";
      }
      else if(tmp == 1)
      {
      return "b;Dominant";
      }
      else
      {
      return "o;Recessif";
      }
      }
      
      protected NBTTagCompound getTag(ItemStack stack)
      {
      return stack.getTagCompound();
      }
      
      }
      

      le rendu est :
      [21:41:50] [Server thread/INFO] [STDOUT]: [com.mathiasetampes.genetic.common.Genome : onItemRightClick:29]: [0:“o;Recessif”,1:“a;Dominant”,2:“+;Dominant”,3:“-;Recessif”,]

      et si je fais la meme chose sur un autre item  il me donne :
      [21:41:59] [Server thread/INFO] [STDOUT]: [com.mathiasetampes.genetic.common.Genome : onItemRightClick:29]: [0:“o;Recessif”,1:“a;Dominant”,2:“+;Dominant”,3:“-;Recessif”,4:“a;Dominant”,5:“a;Dominant”,6:“+;Dominant”,7:“+;Dominant”,]

      quelqu’un peut t’il m’expliquer ces etranges résultats et la façon de les coriger

      1 Reply Last reply Reply Quote 0
      • jglrxavpok
        jglrxavpok Modérateurs last edited by

        Normalement la classe Item a une méthode pour donner des données sous forme de NBT dans un ItemStack, c’est ici que tu dois stocker les données.

        Modérateur sur MFF. 
        Mon Github: http://github.com/jglrxavpok
        Mon compte Steam si vous voulez jouer à CS:GO ou TF2 avec moi: https://steamcommunity.com/id/jglrxavpok/

        1 Reply Last reply Reply Quote 0
        • SCAREX
          SCAREX last edited by

          La méthode que tu utilises pour enregistrer tes NBT est très étrange, essaie avec la méthode de base. Ce que tu peux faire c’est utiliser les super, exemple :

          
          public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
          {
          if(stack != null && !world.isRemote)
          {
          super.onItemRightClick(stack, world, player)
          System.out.println(getList(stack));
          }
          
          return stack;
          }
          

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

          1 Reply Last reply Reply Quote 0
          • Yorwan
            Yorwan last edited by

            merci mais dans le code que tu me montre je n’enregistre pas les nbt ? la méthode getList que j’ai changé en getTag entre temps ne sert qu’a les recupérée ou alors tu t’es trompé en mette super.onItemRightClick au lieu de super.setGenome ?

            1 Reply Last reply Reply Quote 0
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs last edited by

              Ta variable list devrait être une variable local à la fonction, pas une variable dans la classe.
              Donc enlève la ligne :     protected NBTTagList list = new NBTTagList();
              Et dans la fonction  setGenome au début met NBTTagList list = new NBTTagList();

              1 Reply Last reply Reply Quote 0
              • Yorwan
                Yorwan last edited by

                merci robin çà marche à merveille

                1 Reply Last reply Reply Quote 0
                • 1 / 1
                • First post
                  Last post
                Design by Woryk
                Contact / Mentions Légales

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB