aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkekzdealer <kekzdealer@gmail.com>2020-02-18 16:50:20 +0100
committerkekzdealer <kekzdealer@gmail.com>2020-02-18 16:50:20 +0100
commite3568bc7c726a8893b45ab15fb984a88ebab1a5c (patch)
treee12adf94f327cf0a6cd1603e3d15814e952c7c97 /src
parentba8d49bd6c77d69630135c887272e9d0c8c7311d (diff)
downloadGT5-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.java9
-rw-r--r--src/main/java/tileentities/GTMTE_ItemServer.java4
-rw-r--r--src/main/java/tileentities/TE_ItemServerIOPort.java62
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;
+ }
+
}