Posted April 29, 201411 yr When I put something in the chest, and log out, then log back in, the thing in the chest is gone. How can I prevent this? Don't tell me to learn the basics of java, I already know.
April 29, 201411 yr It has a tileentity right? Check to make sure it's saving the chests inventory to NBT correctly, that's usually the problem Edit: It would be helpful if you could provide the code for the chest and it's tileentity BTW Creator of Metroid Cubed! Power Suits, Beams, Hypermode and more! http://i.imgur.com/ghgWmA3.jpg[/img]
April 29, 201411 yr Author TileEntity: package com.puplet.tile_entity; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import net.minecraft.tileentity.TileEntityChest; import com.puplet.blocks.PupletChest; public class TileEntityPupletChest extends TileEntityChest{ private String customName; private ItemStack[] chestContents = new ItemStack[36]; private int cachedChestType; public TileEntityPupletChest adjacentChestZNeg; public TileEntityPupletChest adjacentChestXPos; public TileEntityPupletChest adjacentChestXNeg; public TileEntityPupletChest adjacentChestZPos; public String getInventoryName() { return this.hasCustomInventoryName() ? this.customName : "Puplet Chest"; } public boolean hasCustomInventoryName() { return this.customName != null && this.customName.length() > 0; } public void func_145976_a(String p_145976_1_) { this.customName = p_145976_1_; } public void readFromNBT(NBTTagCompound p_145839_1_) { super.readFromNBT(p_145839_1_); NBTTagList nbttaglist = p_145839_1_.getTagList("Items", 10); this.chestContents = new ItemStack[this.getSizeInventory()]; if (p_145839_1_.hasKey("Puplet Chest", ) { this.customName = p_145839_1_.getString("Puplet Chest"); } for (int i = 0; i < nbttaglist.tagCount(); ++i) { NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); int j = nbttagcompound1.getByte("Slot") & 255; if (j >= 0 && j < this.chestContents.length) { this.chestContents[j] = ItemStack.loadItemStackFromNBT(nbttagcompound1); } } } public void writeToNBT(NBTTagCompound p_145841_1_) { super.writeToNBT(p_145841_1_); NBTTagList nbttaglist = new NBTTagList(); for (int i = 0; i < this.chestContents.length; ++i) { if (this.chestContents[i] != null) { NBTTagCompound nbttagcompound1 = new NBTTagCompound(); nbttagcompound1.setByte("Slot", (byte)i); this.chestContents[i].writeToNBT(nbttagcompound1); nbttaglist.appendTag(nbttagcompound1); } } p_145841_1_.setTag("Items", nbttaglist); if (this.hasCustomInventoryName()) { p_145841_1_.setString("Puplet Chest", this.customName); } } private void func_145978_a(TileEntityPupletChest p_145978_1_, int p_145978_2_) { if (p_145978_1_.isInvalid()) { this.adjacentChestChecked = false; } else if (this.adjacentChestChecked) { switch (p_145978_2_) { case 0: if (this.adjacentChestZPos != p_145978_1_) { this.adjacentChestChecked = false; } break; case 1: if (this.adjacentChestXNeg != p_145978_1_) { this.adjacentChestChecked = false; } break; case 2: if (this.adjacentChestZNeg != p_145978_1_) { this.adjacentChestChecked = false; } break; case 3: if (this.adjacentChestXPos != p_145978_1_) { this.adjacentChestChecked = false; } } } } public void checkForAdjacentChests() { if (!this.adjacentChestChecked) { this.adjacentChestChecked = true; this.adjacentChestZNeg = null; this.adjacentChestXPos = null; this.adjacentChestXNeg = null; this.adjacentChestZPos = null; if (this.func_145977_a(this.xCoord - 1, this.yCoord, this.zCoord)) { this.adjacentChestXNeg = (TileEntityPupletChest)this.worldObj.getTileEntity(this.xCoord - 1, this.yCoord, this.zCoord); } if (this.func_145977_a(this.xCoord + 1, this.yCoord, this.zCoord)) { this.adjacentChestXPos = (TileEntityPupletChest)this.worldObj.getTileEntity(this.xCoord + 1, this.yCoord, this.zCoord); } if (this.func_145977_a(this.xCoord, this.yCoord, this.zCoord - 1)) { this.adjacentChestZNeg = (TileEntityPupletChest)this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord - 1); } if (this.func_145977_a(this.xCoord, this.yCoord, this.zCoord + 1)) { this.adjacentChestZPos = (TileEntityPupletChest)this.worldObj.getTileEntity(this.xCoord, this.yCoord, this.zCoord + 1); } if (this.adjacentChestZNeg != null) { this.adjacentChestZNeg.func_145978_a(this, 0); } if (this.adjacentChestZPos != null) { this.adjacentChestZPos.func_145978_a(this, 2); } if (this.adjacentChestXPos != null) { this.adjacentChestXPos.func_145978_a(this, 1); } if (this.adjacentChestXNeg != null) { this.adjacentChestXNeg.func_145978_a(this, 3); } } } private boolean func_145977_a(int p_145977_1_, int p_145977_2_, int p_145977_3_) { Block block = this.worldObj.getBlock(p_145977_1_, p_145977_2_, p_145977_3_); return block instanceof PupletChest && ((PupletChest)block).field_149956_a == this.func_145980_j(); } public int func_145980_j() { if (this.cachedChestType == -1) { if (this.worldObj == null || !(this.getBlockType() instanceof PupletChest)) { return 0; } this.cachedChestType = ((PupletChest)this.getBlockType()).field_149956_a; } return this.cachedChestType; } } Chest: package com.puplet.blocks; import static net.minecraftforge.common.util.ForgeDirection.DOWN; import java.util.Iterator; import java.util.Random; import com.puplet.lib.Strings; import com.puplet.main.MainClass; import com.puplet.tile_entity.TileEntityPupletChest; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.block.Block; import net.minecraft.block.BlockChest; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.passive.EntityOcelot; import net.minecraft.inventory.IInventory; import net.minecraft.inventory.InventoryLargeChest; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class PupletChest extends BlockChest{ private final Random field_149955_b = new Random(); protected PupletChest(int chest) { super(chest); } public void onBlockPlacedBy(World p_149689_1_, int p_149689_2_, int p_149689_3_, int p_149689_4_, EntityLivingBase p_149689_5_, ItemStack p_149689_6_) { Block block = p_149689_1_.getBlock(p_149689_2_, p_149689_3_, p_149689_4_ - 1); Block block1 = p_149689_1_.getBlock(p_149689_2_, p_149689_3_, p_149689_4_ + 1); Block block2 = p_149689_1_.getBlock(p_149689_2_ - 1, p_149689_3_, p_149689_4_); Block block3 = p_149689_1_.getBlock(p_149689_2_ + 1, p_149689_3_, p_149689_4_); byte b0 = 0; int l = MathHelper.floor_double((double)(p_149689_5_.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; if (l == 0) { b0 = 2; } if (l == 1) { b0 = 5; } if (l == 2) { b0 = 3; } if (l == 3) { b0 = 4; } if (block != this && block1 != this && block2 != this && block3 != this) { p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, b0, 3); } else { if ((block == this || block1 == this) && (b0 == 4 || b0 == 5)) { if (block == this) { p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_ - 1, b0, 3); } else { p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_ + 1, b0, 3); } p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, b0, 3); } if ((block2 == this || block3 == this) && (b0 == 2 || b0 == 3)) { if (block2 == this) { p_149689_1_.setBlockMetadataWithNotify(p_149689_2_ - 1, p_149689_3_, p_149689_4_, b0, 3); } else { p_149689_1_.setBlockMetadataWithNotify(p_149689_2_ + 1, p_149689_3_, p_149689_4_, b0, 3); } p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, b0, 3); } } if (p_149689_6_.hasDisplayName()) { ((TileEntityPupletChest)p_149689_1_.getTileEntity(p_149689_2_, p_149689_3_, p_149689_4_)).func_145976_a(p_149689_6_.getDisplayName()); } } public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_) { super.onNeighborBlockChange(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_5_); TileEntityPupletChest tileentitychest = (TileEntityPupletChest)p_149695_1_.getTileEntity(p_149695_2_, p_149695_3_, p_149695_4_); if (tileentitychest != null) { tileentitychest.updateContainingBlockInfo(); } } public void breakBlock(World p_149749_1_, int p_149749_2_, int p_149749_3_, int p_149749_4_, Block p_149749_5_, int p_149749_6_) { TileEntityPupletChest tileentitychest = (TileEntityPupletChest)p_149749_1_.getTileEntity(p_149749_2_, p_149749_3_, p_149749_4_); if (tileentitychest != null) { for (int i1 = 0; i1 < tileentitychest.getSizeInventory(); ++i1) { ItemStack itemstack = tileentitychest.getStackInSlot(i1); if (itemstack != null) { float f = this.field_149955_b.nextFloat() * 0.8F + 0.1F; float f1 = this.field_149955_b.nextFloat() * 0.8F + 0.1F; EntityItem entityitem; for (float f2 = this.field_149955_b.nextFloat() * 0.8F + 0.1F; itemstack.stackSize > 0; p_149749_1_.spawnEntityInWorld(entityitem)) { int j1 = this.field_149955_b.nextInt(21) + 10; if (j1 > itemstack.stackSize) { j1 = itemstack.stackSize; } itemstack.stackSize -= j1; entityitem = new EntityItem(p_149749_1_, (double)((float)p_149749_2_ + f), (double)((float)p_149749_3_ + f1), (double)((float)p_149749_4_ + f2), new ItemStack(itemstack.getItem(), j1, itemstack.getItemDamage())); float f3 = 0.05F; entityitem.motionX = (double)((float)this.field_149955_b.nextGaussian() * f3); entityitem.motionY = (double)((float)this.field_149955_b.nextGaussian() * f3 + 0.2F); entityitem.motionZ = (double)((float)this.field_149955_b.nextGaussian() * f3); if (itemstack.hasTagCompound()) { entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); } } } } p_149749_1_.func_147453_f(p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_); } super.breakBlock(p_149749_1_, p_149749_2_, p_149749_3_, p_149749_4_, p_149749_5_, p_149749_6_); } public IInventory func_149951_m(World p_149951_1_, int p_149951_2_, int p_149951_3_, int p_149951_4_) { Object object = (TileEntityPupletChest)p_149951_1_.getTileEntity(p_149951_2_, p_149951_3_, p_149951_4_); if (object == null) { return null; } else if (p_149951_1_.isSideSolid(p_149951_2_, p_149951_3_ + 1, p_149951_4_, DOWN)) { return null; } else if (func_149953_o(p_149951_1_, p_149951_2_, p_149951_3_, p_149951_4_)) { return null; } else if (p_149951_1_.getBlock(p_149951_2_ - 1, p_149951_3_, p_149951_4_) == this && (p_149951_1_.isSideSolid(p_149951_2_ - 1, p_149951_3_ + 1, p_149951_4_, DOWN) || func_149953_o(p_149951_1_, p_149951_2_ - 1, p_149951_3_, p_149951_4_))) { return null; } else if (p_149951_1_.getBlock(p_149951_2_ + 1, p_149951_3_, p_149951_4_) == this && (p_149951_1_.isSideSolid(p_149951_2_ + 1, p_149951_3_ + 1, p_149951_4_, DOWN) || func_149953_o(p_149951_1_, p_149951_2_ + 1, p_149951_3_, p_149951_4_))) { return null; } else if (p_149951_1_.getBlock(p_149951_2_, p_149951_3_, p_149951_4_ - 1) == this && (p_149951_1_.isSideSolid(p_149951_2_, p_149951_3_ + 1, p_149951_4_ - 1, DOWN) || func_149953_o(p_149951_1_, p_149951_2_, p_149951_3_, p_149951_4_ - 1))) { return null; } else if (p_149951_1_.getBlock(p_149951_2_, p_149951_3_, p_149951_4_ + 1) == this && (p_149951_1_.isSideSolid(p_149951_2_, p_149951_3_ + 1, p_149951_4_ + 1, DOWN) || func_149953_o(p_149951_1_, p_149951_2_, p_149951_3_, p_149951_4_ + 1))) { return null; } else { if (p_149951_1_.getBlock(p_149951_2_ - 1, p_149951_3_, p_149951_4_) == this) { object = new InventoryLargeChest("Large Puplet Chest", (TileEntityPupletChest)p_149951_1_.getTileEntity(p_149951_2_ - 1, p_149951_3_, p_149951_4_), (IInventory)object); } if (p_149951_1_.getBlock(p_149951_2_ + 1, p_149951_3_, p_149951_4_) == this) { object = new InventoryLargeChest("Large Puplet Chest", (IInventory)object, (TileEntityPupletChest)p_149951_1_.getTileEntity(p_149951_2_ + 1, p_149951_3_, p_149951_4_)); } if (p_149951_1_.getBlock(p_149951_2_, p_149951_3_, p_149951_4_ - 1) == this) { object = new InventoryLargeChest("Large Puplet Chest", (TileEntityPupletChest)p_149951_1_.getTileEntity(p_149951_2_, p_149951_3_, p_149951_4_ - 1), (IInventory)object); } if (p_149951_1_.getBlock(p_149951_2_, p_149951_3_, p_149951_4_ + 1) == this) { object = new InventoryLargeChest("Large Puplet Chest", (IInventory)object, (TileEntityPupletChest)p_149951_1_.getTileEntity(p_149951_2_, p_149951_3_, p_149951_4_ + 1)); } return (IInventory)object; } } private static boolean func_149953_o(World p_149953_0_, int p_149953_1_, int p_149953_2_, int p_149953_3_) { Iterator iterator = p_149953_0_.getEntitiesWithinAABB(EntityOcelot.class, AxisAlignedBB.getAABBPool().getAABB((double)p_149953_1_, (double)(p_149953_2_ + 1), (double)p_149953_3_, (double)(p_149953_1_ + 1), (double)(p_149953_2_ + 2), (double)(p_149953_3_ + 1))).iterator(); EntityOcelot entityocelot1; do { if (!iterator.hasNext()) { return false; } EntityOcelot entityocelot = (EntityOcelot)iterator.next(); entityocelot1 = (EntityOcelot)entityocelot; } while (!entityocelot1.isSitting()); return true; } public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { TileEntityPupletChest tileentitychest = new TileEntityPupletChest(); return tileentitychest; } @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister p_149651_1_) { this.blockIcon = p_149651_1_.registerIcon(Strings.modid + ":PupletChest"); } } Don't tell me to learn the basics of java, I already know.
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.