Posted April 26, 20178 yr Hi, I'm wondering how to read data in from an NBTTagList in Minecraft 1.11.2. Just to mention, I'm storing a HashSet in the NBTTagList, not sure if this is the best way to go. My current code: @Override public NBTTagCompound writeToNBT(NBTTagCompound compound) { NBTTagList list = new NBTTagList(); for(BlockPos pos : this.connected_machines) { NBTTagCompound com = new NBTTagCompound(); com.setInteger("posX", pos.getX()); com.setInteger("posY", pos.getY()); com.setInteger("posZ", pos.getZ()); list.appendTag(com); } compound.setTag("machines", list); return super.writeToNBT(compound); } @Override public void readFromNBT(NBTTagCompound compound) { super.readFromNBT(compound); NBTTagList list = compound.getTagList("machines", type); } Thx in advance. Bektor Edited April 26, 20178 yr by Bektor Developer of Primeval Forest.
April 26, 20178 yr Use NBTTagList#tagCount to get the number of tags in the list and NBTTagList#getCompoundTagAt to get the compound tag at the specified index of the list. There are several other specialised NBTTagList#get[Type]At methods that return the number/array/string at the specified index and a general-purpose NBTTagList#get method that returns the NBTBase at the specified index. Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
April 26, 20178 yr Author Just now, Choonster said: Use NBTTagList#tagCount to get the number of tags in the list and NBTTagList#getCompoundTagAt to get the compound tag at the specified index of the list. There are several other specialised NBTTagList#get[Type]At methods that return the number/array/string at the specified index and a general-purpose NBTTagList#get method that returns the NBTBase at the specified index. Ah, ok. Also what type should I put into there: compound.getTagList("machines", type); And from where do I get these types? I guess NBTBase, thought. Developer of Primeval Forest.
April 26, 20178 yr 1 minute ago, Bektor said: Ah, ok. Also what type should I put into there: compound.getTagList("machines", type); And from where do I get these types? I guess NBTBase, thought. The second argument of NBTTagCompound#getTagList is the type ID of the tags contained in the list. Use the IDs from the Constants.NBT class. For a list of compound tags, pass Constants.NBT.TAG_COMPOUND as the second argument. Edited April 26, 20178 yr by Choonster Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future.
April 26, 20178 yr Author 7 minutes ago, Choonster said: The second argument of NBTTagCompound#getTagList is the type ID of the tags contained in the list. Use the IDs from the Constants.NBT class. For a list of compound tags, pass Constants.NBT.TAG_COMPOUND as the second argument. Thx. Developer of Primeval Forest.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.