    001    package net.minecraft.src;
    002
    003    public class InventoryEnderChest extends InventoryBasic
    004    {
    005        private TileEntityEnderChest associatedChest;
    006
    007        public InventoryEnderChest()
    008        {
    009            super("container.enderchest", 27);
    010        }
    011
    012        public void setAssociatedChest(TileEntityEnderChest par1TileEntityEnderChest)
    013        {
    014            this.associatedChest = par1TileEntityEnderChest;
    015        }
    016
    017        public void loadInventoryFromNBT(NBTTagList par1NBTTagList)
    018        {
    019            int var2;
    020
    021            for (var2 = 0; var2 < this.getSizeInventory(); ++var2)
    022            {
    023                this.setInventorySlotContents(var2, (ItemStack)null);
    024            }
    025
    026            for (var2 = 0; var2 < par1NBTTagList.tagCount(); ++var2)
    027            {
    028                NBTTagCompound var3 = (NBTTagCompound)par1NBTTagList.tagAt(var2);
    029                int var4 = var3.getByte("Slot") & 255;
    030
    031                if (var4 >= 0 && var4 < this.getSizeInventory())
    032                {
    033                    this.setInventorySlotContents(var4, ItemStack.loadItemStackFromNBT(var3));
    034                }
    035            }
    036        }
    037
    038        public NBTTagList saveInventoryToNBT()
    039        {
    040            NBTTagList var1 = new NBTTagList("EnderItems");
    041
    042            for (int var2 = 0; var2 < this.getSizeInventory(); ++var2)
    043            {
    044                ItemStack var3 = this.getStackInSlot(var2);
    045
    046                if (var3 != null)
    047                {
    048                    NBTTagCompound var4 = new NBTTagCompound();
    049                    var4.setByte("Slot", (byte)var2);
    050                    var3.writeToNBT(var4);
    051                    var1.appendTag(var4);
    052                }
    053            }
    054
    055            return var1;
    056        }
    057
    058        /**
    059         * Do not make give this method the name canInteractWith because it clashes with Container
    060         */
    061        public boolean isUseableByPlayer(EntityPlayer par1EntityPlayer)
    062        {
    063            return this.associatedChest != null && !this.associatedChest.isUseableByPlayer(par1EntityPlayer) ? false : super.isUseableByPlayer(par1EntityPlayer);
    064        }
    065
    066        public void openChest()
    067        {
    068            if (this.associatedChest != null)
    069            {
    070                this.associatedChest.openChest();
    071            }
    072
    073            super.openChest();
    074        }
    075
    076        public void closeChest()
    077        {
    078            if (this.associatedChest != null)
    079            {
    080                this.associatedChest.closeChest();
    081            }
    082
    083            super.closeChest();
    084            this.associatedChest = null;
    085        }
    086    }