Posted August 25, 201312 yr While playing around with NBT Stack Tag information I noticed the stack tag doesn't seem to save between debuggin sessions. The simple item I made just counts how many times the player right clicks while it is equipped. It saves the information to the NBTTagCompound.setInteger function. It seems to work, and was a good learning experience. Now if I run the debug in Eclipse, Minecraft runs fine and the item does as it is suppose to. If I "Save and Quit to Title" but don't end the session the item remembers the amount of clicks if I load the world again. But if I quit the debug all together the amount of clicks is forgotten, and starts from one when starting a new session of the debug. So my question is, is that normal? Or did I save the NBT information incorrectly? Does Eclipse only save world information and not NBT info? I think it is saving client side. Should it be server side? Or does that matter? Thanks.
August 25, 201312 yr Author Well I tried putting in a if(World.isRemote) line to see if it was a server issue. Doesn't seem to be. Here is the original code that works, except for the whole saving thing. int ClickId; @Override public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) { if(par1ItemStack.stackTagCompound == null) { par1ItemStack.stackTagCompound = new NBTTagCompound(); } if(!par2World.isRemote) { par1ItemStack.stackTagCompound.setInteger("ClickCount", this.ClickId); this.ClickId++; par3EntityPlayer.addChatMessage("The count of right clicks is " + this.ClickId); } return par1ItemStack; } If it's a eclipse issue that is really troubling. I'll have to re-obf just to test any further changes. :'(
August 25, 201312 yr You should load the info at some point. ClickId = par1ItemStack.stackTagCompound.getInteger("ClickCount");
August 26, 201312 yr Author Thanks a bunch. Cause of your post I realized the mistake. It was a noob JAVA mistake. I was inadvertently resetting the count to 0 with each session. Here's the revised code for other noobs to learn from. @Override public ItemStack onItemRightClick(ItemStack par1, World par2World, EntityPlayer par3EntityPlayer) { if(par1.stackTagCompound == null) { par1.stackTagCompound = new NBTTagCompound(); } if(!par2World.isRemote) { int ClickId = par1.stackTagCompound.getInteger("ClickCount"); ClickId++; par1.stackTagCompound.setInteger("ClickCount", ClickId); par3EntityPlayer.addChatMessage("The count of right clicks is " + ClickId); } return par1; } Thanks again for the patience with a java noob.
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.