package crazypants.enderio.machine.hypercube; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import com.enderio.core.common.util.ArrayInventory; public class ItemRecieveBuffer extends ArrayInventory implements ISidedInventory { private static final int[] ALL_SLOTS = new int[] { 0, 1, 2, 3, 4, 5 }; private boolean recieveEnabled; TileHyperCube hc; public ItemRecieveBuffer(TileHyperCube hc) { super(6); this.hc = hc; } public boolean isEmpty() { for (ItemStack stack : items) { if(stack != null) { return false; } } return true; } public ItemStack[] getItems() { return items; } public void setRecieveEnabled(boolean canRecieveItems) { recieveEnabled = canRecieveItems; } @Override public int[] getAccessibleSlotsFromSide(int side) { return ALL_SLOTS; } @Override public boolean canInsertItem(int slot, ItemStack itemStack, int side) { if(!recieveEnabled || side < 0 || side >= items.length || slot != side || itemStack == null) { return false; } ItemStack item = items[slot]; if(item == null) { return true; } return false; } @Override public void setInventorySlotContents(int slot, ItemStack stack) { super.setInventorySlotContents(slot, stack); hc.pushRecieveBuffer(); } @Override public boolean canExtractItem(int slot, ItemStack itemStack, int side) { return true; } public void readFromNBT(NBTTagCompound nbtRoot) { items = new ItemStack[6]; for (int i = 0; i < items.length; i++) { String key = "recieveBuffer" + i; if(nbtRoot.hasKey(key)) { NBTTagCompound stackRoot = nbtRoot.getCompoundTag(key); items[i] = ItemStack.loadItemStackFromNBT(stackRoot); } else { items[i] = null; } } } public void writeToNBT(NBTTagCompound nbtRoot) { for (int i = 0; i < items.length; i++) { ItemStack stack = items[i]; if(stack != null) { NBTTagCompound stackRoot = new NBTTagCompound(); stack.writeToNBT(stackRoot); nbtRoot.setTag("recieveBuffer" + i, stackRoot); } } } }