bcwadsworth Posted September 21, 2014 Share Posted September 21, 2014 How do people get or set the nbt tag from a tile entity? I already know how to get the tileentity from the world, but I need a way to read/write the nbt tag to the tileentity itself. Quote Link to comment Share on other sites More sharing options...
hugo_the_dwarf Posted September 21, 2014 Share Posted September 21, 2014 Actually you can use normal variables in a tileEntity and get and set them with that, If you make them public it's as simple as "TileEntity.variableName" if you make it private and you have getter and setters it'd be "tileEntity.getValue()" and to read and write the NBT (for saving and loading) @Override public void readFromNBT(NBTTagCompound nbtTag) @Override public void writeToNBT(NBTTagCompound nbtTag) you do your saving and loading in the respected methods. Quote Currently updating my Mod to 1.10.2 https://bitbucket.org/hugo_the_dwarf/riseoftristram2016/src?at=master Link to comment Share on other sites More sharing options...
shieldbug1 Posted September 21, 2014 Share Posted September 21, 2014 TileEntities, unlike ItemStacks don't have their own NBTTagCompounds, I believe. What are you trying to do? You're probably just thinking of thinking about the problem the wrong way. Quote BEFORE ASKING FOR HELP READ THE EAQ! I'll help if I can. Apologies if I do something obviously stupid. If you don't know basic Java yet, go and follow these tutorials. Link to comment Share on other sites More sharing options...
sequituri Posted September 21, 2014 Share Posted September 21, 2014 NBTTagCompound tag = new NBTTagCompound(); p_tileEntity.writeToNBT(tag); // examine or do something with the NBT Data tag // if you change the values for some silly reason p_tileEntity.readFromNBT(changedTag); But, beware! Messing with the NBT data of an unknown TE can cause nasty behavior or crashes. Quote -S- (if I helped, please click Thank and applaud) http://6upnqa.dm2301.livefilestore.com/y2mtf-vG7Tqq1TiiVpIm53KWj7294NDPoHfSHHb4PzZiMAUfRCfK0UY0MwOu7Q3zTBNVTKqWjr2-xgBfFRpQT5p-QivtvknPpoABMNUw9br9WuZcBFkjePhnAbW500gVm-P/sequiturian.png[/img] Link to comment Share on other sites More sharing options...
Whov Posted September 21, 2014 Share Posted September 21, 2014 Go with hugo_the_dwarf way. It's definitely the way to go Quote Check out my blog! http://www.whov.altervista.org Link to comment Share on other sites More sharing options...
bcwadsworth Posted September 21, 2014 Author Share Posted September 21, 2014 I think I am asking the wrong question. I need a way to write a tile entity to a nbt tag on an itemstack. Quote Link to comment Share on other sites More sharing options...
hugo_the_dwarf Posted September 21, 2014 Share Posted September 21, 2014 just write the TileEntities coords into the itemstack. then all you need to do is get them and find the tileEntity usually "World.getTileEntity(x,y,z)" the method "onItemUseFirst" on items should help you grab your tileEntity as this method gives the blocks coords that you right clicked from there you can make a check to make sure the tileEntity you got is the one you want, then write the coords to NBT, and the next time you use it you can check to see if you have coords written, get the tileEntity with the coords and do your thing. Quote Currently updating my Mod to 1.10.2 https://bitbucket.org/hugo_the_dwarf/riseoftristram2016/src?at=master Link to comment Share on other sites More sharing options...
bcwadsworth Posted September 22, 2014 Author Share Posted September 22, 2014 What if the tile entity will not exist at the previous location when I click? Quote Link to comment Share on other sites More sharing options...
hugo_the_dwarf Posted September 22, 2014 Share Posted September 22, 2014 this is why you have a check to make sure that what you got is what you wanted and is not null. Normally if(tileEntityGotten instanceof TileEntityMyTargetType) covers null and well your TE. if that passes and goes in you can then use TileEntityMyTargetType targetTe = (TileEntityMyTargetType)tileEntityGotten; targetTe.doWhatEverItIsThatPleasesYou(); now if you mean you these tileEntities have to be unique (place one, use item to save it's location, someone breaks it and places it down(new tileEntity, same location)) then I am not sure how to deal with that, I guess you could have that tileEntity store a special number or code in itself and the item that records it. Then when you right-click or activate your recorder item it loads up the tileEntity, checks the instance (covers null aswell) if that pans out, check the special ID in the tileEntity and match it with the one in the recorder. If that fails clear out the info on the Item (because it lost its tileEntity) Quote Currently updating my Mod to 1.10.2 https://bitbucket.org/hugo_the_dwarf/riseoftristram2016/src?at=master Link to comment Share on other sites More sharing options...
sequituri Posted September 22, 2014 Share Posted September 22, 2014 @bcwadsworth, I have given you the code to get a tag containing all of the TE's NBTData. Saving it in your entity is basic java. Read the inline comments. Also, beware that you will have no way of knowing how to recreate a tile entity just by its NBT data. You need its class, as well as the associated Block's class. So, if the TE is deleted as Hugo said, your item is no longer associated with anything. @Whov, if you understood the question, the answer is not "Go the <someperson> way." State what you think the problem is and offer a suggestion. @bcwadsworth, you could get more focussed help here by explaining what you are trying to accomplish with this method you seek. Quote -S- (if I helped, please click Thank and applaud) http://6upnqa.dm2301.livefilestore.com/y2mtf-vG7Tqq1TiiVpIm53KWj7294NDPoHfSHHb4PzZiMAUfRCfK0UY0MwOu7Q3zTBNVTKqWjr2-xgBfFRpQT5p-QivtvknPpoABMNUw9br9WuZcBFkjePhnAbW500gVm-P/sequiturian.png[/img] Link to comment Share on other sites More sharing options...
Recommended Posts
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.