Jump to content

Recommended Posts

Posted (edited)

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 by Bektor

Developer of Primeval Forest.

Posted

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.

Posted
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.

Posted (edited)
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 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.

Posted
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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.