package crazypants.util; import com.enderio.core.common.util.Util; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; public class ShadowInventory implements IInventory { private final ItemStack[] items; private final IInventory master; public ShadowInventory(IInventory master) { this.master = master; items = new ItemStack[master.getSizeInventory()]; for (int i = 0; i < master.getSizeInventory(); i++) { items[i] = master.getStackInSlot(i); } } @Override public int getSizeInventory() { return master.getSizeInventory(); } @Override public ItemStack getStackInSlot(int p_70301_1_) { return items[p_70301_1_]; } @Override public ItemStack decrStackSize(int p_70298_1_, int p_70298_2_) { return Util.decrStackSize(this, p_70298_1_, p_70298_2_); } @Override public ItemStack getStackInSlotOnClosing(int p_70304_1_) { ItemStack stack = getStackInSlot(p_70304_1_); setInventorySlotContents(p_70304_1_, null); return stack; } @Override public void setInventorySlotContents(int p_70299_1_, ItemStack p_70299_2_) { items[p_70299_1_] = p_70299_2_; } @Override public String getInventoryName() { return master.getInventoryName(); } @Override public boolean hasCustomInventoryName() { return master.hasCustomInventoryName(); } @Override public int getInventoryStackLimit() { return master.getInventoryStackLimit(); } @Override public void markDirty() { } @Override public boolean isUseableByPlayer(EntityPlayer p_70300_1_) { return master.isUseableByPlayer(p_70300_1_); } @Override public void openInventory() { master.openInventory(); } @Override public void closeInventory() { master.closeInventory(); } @Override public boolean isItemValidForSlot(int p_94041_1_, ItemStack p_94041_2_) { return master.isItemValidForSlot(p_94041_1_, p_94041_2_); } }