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 }