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 }