package mods.eln.node.transparent; import mods.eln.misc.INBTTReady; import mods.eln.misc.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public class TransparentNodeElementInventory implements ISidedInventory, INBTTReady { protected TransparentNodeElementRender transparentNodeRender = null; protected TransparentNodeElement transparentNodeElement = null; int stackLimit; public TransparentNodeElementInventory(int size, int stackLimit, TransparentNodeElementRender TransparentnodeRender) { inv = new ItemStack[size]; this.stackLimit = stackLimit; this.transparentNodeRender = TransparentnodeRender; } public TransparentNodeElementInventory(int size, int stackLimit, TransparentNodeElement TransparentNodeElement) { inv = new ItemStack[size]; this.stackLimit = stackLimit; this.transparentNodeElement = TransparentNodeElement; } private ItemStack[] inv; private ItemStack[] getInv() { return inv; } @Override public int getSizeInventory() { return getInv().length; } @Override public ItemStack getStackInSlot(int slot) { return getInv()[slot]; } @Override public ItemStack decrStackSize(int slot, int amt) { ItemStack stack = getStackInSlot(slot); if (stack != null) { if (stack.stackSize <= amt) { setInventorySlotContents(slot, null); } else { stack = stack.splitStack(amt); if (stack.stackSize == 0) { setInventorySlotContents(slot, null); } } } return stack; } @Override public ItemStack getStackInSlotOnClosing(int slot) { ItemStack stack = getStackInSlot(slot); if (stack != null) { setInventorySlotContents(slot, null); } return stack; } @Override public void setInventorySlotContents(int slot, ItemStack stack) { getInv()[slot] = stack; if (stack != null && stack.stackSize > getInventoryStackLimit()) { stack.stackSize = getInventoryStackLimit(); } } @Override public String getInventoryName() { return "tco.TransparentNodeInventory"; } @Override public int getInventoryStackLimit() { return stackLimit; } @Override public boolean isUseableByPlayer(EntityPlayer player) { /* * if(transparentNodeElement != null) { if(NodeManager.instance.getNodeFromCoordonate(transparentNodeElement.node.coordonate) != transparentNodeElement.node) return false; return player.getDistance(transparentNodeElement.node.coordonate.x + 0.5, transparentNodeElement.node.coordonate.y + 0.5, transparentNodeElement.node.coordonate.z + 0.5) < 10; } */ return true; // return player.getDistanceSq(transparentNodeRender.tileEntity.xCoord + 0.5, transparentNodeRender.tileEntity.yCoord + 0.5, transparentNodeRender.tileEntity.zCoord + 0.5) < 18; } @Override public void openInventory() { } @Override public void closeInventory() { } @Override public void markDirty() { if (transparentNodeElement != null && !transparentNodeElement.node.isDestructing()) { transparentNodeElement.inventoryChange(this); } } @Override public void readFromNBT(NBTTagCompound nbt, String str) { Utils.readFromNBT(nbt, str, this); } @Override public void writeToNBT(NBTTagCompound nbt, String str) { Utils.writeToNBT(nbt, str, this); } @Override public boolean isItemValidForSlot(int i, ItemStack itemstack) { for (int idx = 0; idx < 6; idx++) { int[] lol = getAccessibleSlotsFromSide(idx); for (int hohoho : lol) { if (hohoho == i && canInsertItem(i, itemstack, idx)) { return true; } } } return false; } @Override public boolean hasCustomInventoryName() { return false; } @Override public int[] getAccessibleSlotsFromSide(int var1) { return new int[]{}; } @Override public boolean canInsertItem(int var1, ItemStack var2, int var3) { return false; } @Override public boolean canExtractItem(int var1, ItemStack var2, int var3) { return false; } }