aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/tileentities
diff options
context:
space:
mode:
authorkekzdealer <kekzdealer@gmail.com>2019-11-21 18:38:33 +0100
committerkekzdealer <kekzdealer@gmail.com>2019-11-21 18:38:33 +0100
commitf9eac626254ed31477925618a45af5005e4628ac (patch)
tree60e9b73067f9cb5e7a656a1d73b2a232887e0da8 /src/main/java/tileentities
parent5fe214204875ac23e078e514dcd4fc8a001e3d37 (diff)
downloadGT5-Unofficial-f9eac626254ed31477925618a45af5005e4628ac.tar.gz
GT5-Unofficial-f9eac626254ed31477925618a45af5005e4628ac.tar.bz2
GT5-Unofficial-f9eac626254ed31477925618a45af5005e4628ac.zip
first try at MultiItemHandler
Diffstat (limited to 'src/main/java/tileentities')
-rw-r--r--src/main/java/tileentities/GTMTE_ItemServer.java41
-rw-r--r--src/main/java/tileentities/TE_ItemServerIOPort.java44
2 files changed, 67 insertions, 18 deletions
diff --git a/src/main/java/tileentities/GTMTE_ItemServer.java b/src/main/java/tileentities/GTMTE_ItemServer.java
index 8fcb72c498..9b4d50c5d4 100644
--- a/src/main/java/tileentities/GTMTE_ItemServer.java
+++ b/src/main/java/tileentities/GTMTE_ItemServer.java
@@ -15,7 +15,6 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity;
import gregtech.api.interfaces.tileentity.IGregTechTileEntity;
import gregtech.api.metatileentity.implementations.GT_MetaTileEntity_MultiBlockBase;
import gregtech.api.objects.GT_RenderedTexture;
-import kekztech.MultiFluidHandler;
import kekztech.MultiItemHandler;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
@@ -115,9 +114,20 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase {
this.mEUt = (int) (BASE_SLICE_ENERGY_COST * sliceCount * Math.pow(2, config));
super.mMaxProgresstime = 10;
+ mih.setPerTypeCapacity((int) (BASE_PER_ITEM_CAPACITY * Math.pow(4, config)));
+
return true;
}
+ @Override
+ public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTick) {
+ super.onPostTick(aBaseMetaTileEntity, aTick);
+
+ if(mih != null) {
+ mih.setLock(!super.getBaseMetaTileEntity().isActive());
+ }
+ }
+
public Vector3ic rotateOffsetVector(Vector3ic forgeDirection, int x, int y, int z) {
final Vector3i offset = new Vector3i();
@@ -178,7 +188,12 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase {
if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) {
// yay
} else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == IO_PORT) {
- // TODO: register IO port
+ final TE_ItemServerIOPort port =
+ (TE_ItemServerIOPort) thisController.getWorld().getTileEntity(
+ thisController.getXCoord() + offset.x(),
+ thisController.getYCoord() + offset.y(),
+ thisController.getZCoord() + offset.z());
+ ioPorts.add(port);
} else {
formationChecklist = false;
}
@@ -215,6 +230,14 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase {
if(formationChecklist) {
slicesFound = sliceCount;
+
+ if(mih == null) {
+ mih = new MultiItemHandler();
+ mih.setItemTypeCapacity(slicesFound * BASE_ITEM_TYPES_PER_SLICE);
+ }
+ for(TE_ItemServerIOPort port : ioPorts) {
+ port.setMultiItemHandler(mih);
+ }
}
return formationChecklist;
@@ -251,7 +274,12 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase {
if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) {
// yay
} else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == IO_PORT) {
- // TODO register port
+ final TE_ItemServerIOPort port =
+ (TE_ItemServerIOPort) thisController.getWorld().getTileEntity(
+ thisController.getXCoord() + offset.x(),
+ thisController.getYCoord() + offset.y(),
+ thisController.getZCoord() + offset.z());
+ ioPorts.add(port);
} else {
formationChecklist = false;
}
@@ -298,7 +326,12 @@ public class GTMTE_ItemServer extends GT_MetaTileEntity_MultiBlockBase {
if(thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == CASING) {
// yay
} else if (thisController.getBlockOffset(offset.x(), offset.y(), offset.z()) == IO_PORT) {
- // TODO: register IO port
+ final TE_ItemServerIOPort port =
+ (TE_ItemServerIOPort) thisController.getWorld().getTileEntity(
+ thisController.getXCoord() + offset.x(),
+ thisController.getYCoord() + offset.y(),
+ thisController.getZCoord() + offset.z());
+ ioPorts.add(port);
} else {
formationChecklist = false;
}
diff --git a/src/main/java/tileentities/TE_ItemServerIOPort.java b/src/main/java/tileentities/TE_ItemServerIOPort.java
index 17e322fa82..46a3a9c7bb 100644
--- a/src/main/java/tileentities/TE_ItemServerIOPort.java
+++ b/src/main/java/tileentities/TE_ItemServerIOPort.java
@@ -11,41 +11,60 @@ public class TE_ItemServerIOPort extends TileEntity implements IInventory {
private MultiItemHandler mih;
public void setMultiItemHandler(MultiItemHandler mih) {
+ System.out.println("MIH set");
this.mih = mih;
}
@Override
public int getSizeInventory() {
- return mih.getItemTypeCapacity();
+ return (mih != null) ? mih.getItemTypeCapacity() : 9;
}
@Override
public ItemStack getStackInSlot(int slot) {
- // TODO Auto-generated method stub
- return null;
+ return (mih != null) ? mih.getStackInSlot(slot) : null;
}
@Override
public ItemStack decrStackSize(int slot, int amount) {
- // TODO Auto-generated method stub
+ 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;
+ }
+ }
return null;
}
@Override
public ItemStack getStackInSlotOnClosing(int slot) {
- // TODO Auto-generated method stub
return null;
}
@Override
public void setInventorySlotContents(int slot, ItemStack itemStack) {
- // TODO Auto-generated method stub
-
+ if(mih != null) {
+ if(itemStack == null || !itemStack.isItemEqual(mih.getStackInSlot(slot))) {
+ return;
+ } else {
+ final int change = itemStack.stackSize - mih.getStackInSlot(slot).stackSize;
+ if(change < 0) {
+ mih.reduceStackInSlot(slot, change);
+ } else {
+ mih.increaseStackInSlot(slot, change);
+ }
+ super.markDirty();
+ }
+ }
}
@Override
public String getInventoryName() {
- return "Item Server";
+ return "Item Server IO Port";
}
@Override
@@ -55,30 +74,27 @@ public class TE_ItemServerIOPort extends TileEntity implements IInventory {
@Override
public int getInventoryStackLimit() {
- return mih.getPerTypeCapacity();
+ return (mih != null) ? mih.getPerTypeCapacity() : 0;
}
@Override
public boolean isUseableByPlayer(EntityPlayer player) {
- return true;
+ return false;
}
@Override
public void openInventory() {
- // TODO Auto-generated method stub
}
@Override
public void closeInventory() {
- // TODO Auto-generated method stub
}
@Override
public boolean isItemValidForSlot(int slot, ItemStack itemStack) {
- // TODO Auto-generated method stub
- return false;
+ return (mih != null) ? (mih.getStackInSlot(slot).isItemEqual(itemStack) || mih.getStackInSlot(slot) == null) : false;
}
}