package mods.eln.node.six; import mods.eln.misc.INBTTReady; import mods.eln.misc.Utils; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; public class SixNodeElementInventory implements IInventory, INBTTReady { SixNodeElementRender sixnodeRender = null; SixNodeElement sixNodeElement = null; int stackLimit; public SixNodeElementInventory(int size, int stackLimit, SixNodeElementRender sixnodeRender) { inv = new ItemStack[size]; this.stackLimit = stackLimit; this.sixnodeRender = sixnodeRender; } public SixNodeElementInventory(int size, int stackLimit, SixNodeElement sixNodeElement) { inv = new ItemStack[size]; this.stackLimit = stackLimit; this.sixNodeElement = sixNodeElement; } private ItemStack[] inv; private ItemStack[] getInv() { return inv; } @Override public int getSizeInventory() { return getInv().length; } @Override public ItemStack getStackInSlot(int slot) { if (slot >= getInv().length) return null; 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) { try { getInv()[slot] = stack; if (stack != null && stack.stackSize > getInventoryStackLimit()) { stack.stackSize = getInventoryStackLimit(); } } catch (Exception e) { // TODO: handle exception } } @Override public String getInventoryName() { return "tco.SixNodeInventory"; } @Override public int getInventoryStackLimit() { return stackLimit; } @Override public boolean isUseableByPlayer(EntityPlayer player) { /*if(sixNodeElement != null) { SixNode sixNode = (SixNode) NodeManager.instance.getNodeFromCoordonate(sixNodeElement.sixNode.coordonate); if(sixNode == null) return false; if(sixNode.sideElementList[sixNodeElement.side.getInt()] != sixNodeElement) return false; // if( != transparentNodeElement.node) return false; return player.getDistanceSq(sixNodeElement.sixNode.coordonate.x + 0.5, sixNodeElement.sixNode.coordonate.y + 0.5, sixNodeElement.sixNode.coordonate.z + 0.5) < 18; }*/ return true; /* if(sixNodeElement != null) return player.getDistanceSq(sixNodeElement.sixNode.coordonate.x + 0.5, sixNodeElement.sixNode.coordonate.y + 0.5, sixNodeElement.sixNode.coordonate.z + 0.5) < 18; return player.getDistanceSq(sixnodeRender.tileEntity.xCoord + 0.5, sixnodeRender.tileEntity.yCoord + 0.5, sixnodeRender.tileEntity.zCoord + 0.5) < 18; */ } @Override public void openInventory() { } @Override public void closeInventory() { } @Override public void markDirty() { if (sixNodeElement != null && !sixNodeElement.sixNode.isDestructing()) { sixNodeElement.inventoryChanged(); } } @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) { return false; } @Override public boolean hasCustomInventoryName() { return false; } }