aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/common/tileentities/TE_ItemServerIOPort.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/common/tileentities/TE_ItemServerIOPort.java')
-rw-r--r--src/main/java/common/tileentities/TE_ItemServerIOPort.java145
1 files changed, 145 insertions, 0 deletions
diff --git a/src/main/java/common/tileentities/TE_ItemServerIOPort.java b/src/main/java/common/tileentities/TE_ItemServerIOPort.java
new file mode 100644
index 0000000000..0e96ff75b9
--- /dev/null
+++ b/src/main/java/common/tileentities/TE_ItemServerIOPort.java
@@ -0,0 +1,145 @@
+package common.tileentities;
+
+import kekztech.MultiItemHandler;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.inventory.ISidedInventory;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+
+public class TE_ItemServerIOPort extends TileEntity implements ISidedInventory {
+
+ private MultiItemHandler mih;
+
+ private int tickCounter = 0;
+
+ public void setMultiItemHandler(MultiItemHandler mih) {
+ this.mih = mih;
+ }
+
+ @Override
+ public void updateEntity() {
+ if(mih != null) {
+
+ tickCounter++;
+ if(tickCounter >= 40) {
+ mih.debugPrint();
+ tickCounter = 0;
+ }
+ }
+ }
+
+ @Override
+ public int getSizeInventory() {
+ return (mih != null) ? mih.getItemTypeCapacity() : 0;
+ }
+
+ @Override
+ public ItemStack getStackInSlot(int slot) {
+ return (mih != null) ? mih.getStackInSlot(slot) : null;
+ }
+
+ @Override
+ public ItemStack decrStackSize(int slot, int amount) {
+ if(mih != null) {
+ if(mih.getStackInSlot(slot) != null) {
+ final ItemStack obtained = mih.getStackInSlot(slot).copy();
+ obtained.stackSize = mih.reduceStackInSlot(slot, amount);
+ super.markDirty();
+ return obtained;
+ } else {
+ return null;
+ }
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ public ItemStack getStackInSlotOnClosing(int slot) {
+ return null;
+ }
+
+ @Override
+ public void setInventorySlotContents(int slot, ItemStack itemStack) {
+ System.out.println("Set slot: " + slot);
+ if(mih != null) {
+ if(itemStack == null) {
+ return;
+ } else {
+ if(!mih.insertStackInSlot(slot, itemStack)) {
+ final int delta = itemStack.stackSize - mih.getStackInSlot(slot).stackSize;
+ if(delta < 0) {
+ System.out.println("Set slot reduce: " + itemStack.getDisplayName());
+ mih.reduceStackInSlot(slot, delta);
+ } else {
+ System.out.println("Set slot increase: " + itemStack.getDisplayName());
+ mih.increaseStackInSlot(slot, delta);
+ }
+
+ } else {
+ System.out.println("Allocated new slot for: " + itemStack.getDisplayName());
+ }
+ super.markDirty();
+ }
+ }
+ }
+
+ @Override
+ public String getInventoryName() {
+ return "Item Server IO Port";
+ }
+
+ @Override
+ public boolean hasCustomInventoryName() {
+ return true;
+ }
+
+ @Override
+ public int getInventoryStackLimit() {
+ return (mih != null) ? mih.getPerTypeCapacity() : 0;
+ }
+
+ @Override
+ public boolean isUseableByPlayer(EntityPlayer player) {
+ return true;
+ }
+
+ @Override
+ public void openInventory() {
+
+ }
+
+ @Override
+ public void closeInventory() {
+
+ }
+
+ @Override
+ public boolean isItemValidForSlot(int slot, ItemStack itemStack) {
+ return (mih != null) ? (mih.getStackInSlot(slot).isItemEqual(itemStack) || mih.getStackInSlot(slot) == null) : false;
+ }
+
+ @Override
+ public int[] getAccessibleSlotsFromSide(int side) {
+ if(mih != null) {
+ final int[] as = new int[mih.getItemTypeCapacity()];
+ for(int i = 0; i < mih.getItemTypeCapacity(); i++) {
+ as[i] = i;
+ }
+ return as;
+ } else {
+ return new int[1];
+ }
+ }
+
+ @Override
+ public boolean canInsertItem(int slot, ItemStack itemStack, int side) {
+ return isItemValidForSlot(slot, itemStack);
+ }
+
+ @Override
+ public boolean canExtractItem(int slot, ItemStack itemStack, int side) {
+ return (mih != null) ? true : false;
+ }
+
+}