Posted February 27, 201411 yr I'm porting a mod to 1.7.2 from 1.6.4. There's some odd problems with the NBT, though. For some reason it seems to fail to read from it properly. I have a class called a Tracker which extends WorldSavedEvent. It contains a hash table that is read and saved to the NBT. Certain things in the game modify the hash table and it is supposed to be persistent between game sessions, but it isn't. The readFromNBT is executed, but does not actually reach the for loop. @Override public void readFromNBT(NBTTagCompound nbt) { NBTTagList tagList = nbt.getTagList("tracker", Constants.NBT.TAG_INT_ARRAY); // Read arrays from tag list and use the arrays as positions to insert blocks into table for (int i = 0; i < tagList.tagCount(); i++) { NBTTagCompound tag = (NBTTagCompound)tagList.getCompoundTagAt(i); int[] arr = tag.getIntArray("position"); addBlock(arr[0], arr[1], arr[2], arr[3]); System.out.println("Reading Block at index: " + i + " - " + arr[0] + " " + arr[1] + " " + arr[2] + " " + arr[3]); } } @Override public void writeToNBT(NBTTagCompound nbt) { NBTTagList itemList = new NBTTagList(); int counter = 0; Set cl = chunk.keySet(); Iterator<ChunkLocation> it = cl.iterator(); while (it.hasNext()){ ChunkLocation temp = it.next(); for (Position p : chunk.get(temp)){ counter ++; NBTTagCompound tag = new NBTTagCompound(); int[] arr = {p.getX(), p.getY(), p.getZ(), p.getW()}; tag.setIntArray("position", arr); itemList.appendTag(tag); } } nbt.setTag("tracker", itemList); KGBlocks.textOut("Blocks saved to NBT: " + counter); } I added Constants.NBT.TAG_INT_ARRAY to the following line. Not sure if this was correct: NBTTagList tagList = nbt.getTagList("tracker", Constants.NBT.TAG_INT_ARRAY); I also replaced tagAt with getCompoundTagAt. Not sure about that either, but tagAt was not available.
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.