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