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

    Résolu Nbt tag bugée

    1.7.x
    1.7.10
    4
    6
    1399
    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.
    • Yorwan
      Yorwan dernière édition par

      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 réponse Dernière réponse Répondre Citer 0
      • jglrxavpok
        jglrxavpok Modérateurs dernière édition par

        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 réponse Dernière réponse Répondre Citer 0
        • SCAREX
          SCAREX dernière édition par

          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 réponse Dernière réponse Répondre Citer 0
          • Yorwan
            Yorwan dernière édition par

            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 réponse Dernière réponse Répondre Citer 0
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

              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 réponse Dernière réponse Répondre Citer 0
              • Yorwan
                Yorwan dernière édition par

                merci robin çà marche à merveille

                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