diff options
author | kekzdealer <kekzdealer@gmail.com> | 2020-02-18 16:50:20 +0100 |
---|---|---|
committer | kekzdealer <kekzdealer@gmail.com> | 2020-02-18 16:50:20 +0100 |
commit | e3568bc7c726a8893b45ab15fb984a88ebab1a5c (patch) | |
tree | e12adf94f327cf0a6cd1603e3d15814e952c7c97 /src | |
parent | ba8d49bd6c77d69630135c887272e9d0c8c7311d (diff) | |
download | GT5-Unofficial-e3568bc7c726a8893b45ab15fb984a88ebab1a5c.tar.gz GT5-Unofficial-e3568bc7c726a8893b45ab15fb984a88ebab1a5c.tar.bz2 GT5-Unofficial-e3568bc7c726a8893b45ab15fb984a88ebab1a5c.zip |
Improved TE IS IO port code but it's still not working
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/kekztech/MultiItemHandler.java | 9 | ||||
-rw-r--r-- | src/main/java/tileentities/GTMTE_ItemServer.java | 4 | ||||
-rw-r--r-- | src/main/java/tileentities/TE_ItemServerIOPort.java | 62 |
3 files changed, 49 insertions, 26 deletions
diff --git a/src/main/java/kekztech/MultiItemHandler.java b/src/main/java/kekztech/MultiItemHandler.java index 9416dbebcf..58dd0660e9 100644 --- a/src/main/java/kekztech/MultiItemHandler.java +++ b/src/main/java/kekztech/MultiItemHandler.java @@ -64,7 +64,7 @@ public class MultiItemHandler { } public int getItemTypeCapacity() { - return items.length; + return items != null ? items.length : 0; } public int getPerTypeCapacity() { @@ -97,16 +97,19 @@ public class MultiItemHandler { * Storage slot number. Zero indexed. * @param itemStack * ItemStack to insert. + * @return + * Operation success state. */ - public void insertStackInSlot(int slot, ItemStack itemStack) { + public boolean insertStackInSlot(int slot, ItemStack itemStack) { System.out.println("Inserting " + itemStack.getDisplayName() + " into " + slot); if(itemStack == null || items[slot] != null || locked || slot >= items.length) { - return; + return false; } else { items[slot] = itemStack; + return true; } } diff --git a/src/main/java/tileentities/GTMTE_ItemServer.java b/src/main/java/tileentities/GTMTE_ItemServer.java index 3753b8e17a..1449e8333a 100644 --- a/src/main/java/tileentities/GTMTE_ItemServer.java +++ b/src/main/java/tileentities/GTMTE_ItemServer.java @@ -75,7 +75,6 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { .addOtherStructurePart("2nd and 3rd slice, top", "3x1x1 Item Server Rack Casing") .addOtherStructurePart("2nd and 3rd slice, sides", "2x 1x4x1 Item Server Drive") .addOtherStructurePart("Back slice", "3x5x1 Item Server Rack Casing") - .addInputBus("Instead of any casing") .signAndFinalize("Kekzdealer"); if(!Keyboard.isKeyDown(Keyboard.KEY_LSHIFT)) { return b.getInformation(); @@ -181,7 +180,6 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z()); if(!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { // If it's not a hatch, is it the right casing for this machine? @@ -272,7 +270,6 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z()); if(!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { // If it's not a hatch, is it the right casing for this machine? @@ -322,7 +319,6 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase { thisController.getIGregTechTileEntityOffset(offset.x(), offset.y(), offset.z()); if(!super.addMaintenanceToMachineList(currentTE, CASING_TEXTURE_ID) - && !super.addInputToMachineList(currentTE, CASING_TEXTURE_ID) && !super.addEnergyInputToMachineList(currentTE, CASING_TEXTURE_ID)) { // If it's not a hatch, is it the right casing for this machine? diff --git a/src/main/java/tileentities/TE_ItemServerIOPort.java b/src/main/java/tileentities/TE_ItemServerIOPort.java index a8c0f25b83..a7dc7e14f5 100644 --- a/src/main/java/tileentities/TE_ItemServerIOPort.java +++ b/src/main/java/tileentities/TE_ItemServerIOPort.java @@ -2,22 +2,22 @@ package tileentities; import kekztech.MultiItemHandler; import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; -public class TE_ItemServerIOPort extends TileEntity implements IInventory { +public class TE_ItemServerIOPort extends TileEntity implements ISidedInventory { private MultiItemHandler mih; public void setMultiItemHandler(MultiItemHandler mih) { - System.out.println("MIH set"); this.mih = mih; + System.out.println("MIH set"); } @Override public int getSizeInventory() { - return (mih != null) ? mih.getItemTypeCapacity() : 9; + return (mih != null) ? mih.getItemTypeCapacity() : 0; } @Override @@ -36,8 +36,9 @@ public class TE_ItemServerIOPort extends TileEntity implements IInventory { } else { return null; } + } else { + return null; } - return null; } @Override @@ -47,26 +48,26 @@ public class TE_ItemServerIOPort extends TileEntity implements IInventory { @Override public void setInventorySlotContents(int slot, ItemStack itemStack) { - System.out.println("Set slot, MIH: " + mih); + System.out.println("Set slot: " + slot); if(mih != null) { - if(itemStack == null || !itemStack.isItemEqual(mih.getStackInSlot(slot))) { + if(itemStack == null) { return; } else { - if(mih.getStackInSlot(slot) == null) { - System.out.println("Set slot: Allocate new"); - mih.insertStackInSlot(slot, itemStack); - } else { - final int change = itemStack.stackSize - mih.getStackInSlot(slot).stackSize; - if(change < 0) { - System.out.println("Set slot: reduce"); - mih.reduceStackInSlot(slot, change); + 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"); - mih.increaseStackInSlot(slot, change); - } + System.out.println("Set slot increase: " + itemStack.getDisplayName()); + mih.increaseStackInSlot(slot, delta); + } + + } else { + System.out.println("Allocated new slot for: " + itemStack.getDisplayName()); } super.markDirty(); - } + } } } @@ -105,4 +106,27 @@ public class TE_ItemServerIOPort extends TileEntity implements IInventory { 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; + } + } |