aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/common/covers
diff options
context:
space:
mode:
authorJason Mitchell <mitchej@gmail.com>2018-07-07 11:33:13 -0700
committerJason Mitchell <mitchej@gmail.com>2018-07-07 11:33:13 -0700
commit36612688dce43cbe772a4efbb39cbd472fd9b62b (patch)
treeecc78c05956d2b29bc36d9d880471e0d556f6981 /src/main/java/gregtech/common/covers
parent11a7ac8e5a7f7bb83347e0143c06af507f6872b5 (diff)
downloadGT5-Unofficial-36612688dce43cbe772a4efbb39cbd472fd9b62b.tar.gz
GT5-Unofficial-36612688dce43cbe772a4efbb39cbd472fd9b62b.tar.bz2
GT5-Unofficial-36612688dce43cbe772a4efbb39cbd472fd9b62b.zip
Configurable max stacks for conveyors
Diffstat (limited to 'src/main/java/gregtech/common/covers')
-rw-r--r--src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java34
1 files changed, 24 insertions, 10 deletions
diff --git a/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java b/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java
index 47ccde8ba0..a45601d556 100644
--- a/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java
+++ b/src/main/java/gregtech/common/covers/GT_Cover_Conveyor.java
@@ -8,12 +8,13 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fluids.Fluid;
-public class GT_Cover_Conveyor
- extends GT_CoverBehavior {
+public class GT_Cover_Conveyor extends GT_CoverBehavior {
public final int mTickRate;
+ private final int mMaxStacks;
- public GT_Cover_Conveyor(int aTickRate) {
+ public GT_Cover_Conveyor(int aTickRate, int maxStacks) {
this.mTickRate = aTickRate;
+ this.mMaxStacks = maxStacks;
}
public int doCoverThings(byte aSide, byte aInputRedstone, int aCoverID, int aCoverVariable, ICoverable aTileEntity, long aTimer) {
@@ -23,14 +24,27 @@ public class GT_Cover_Conveyor
}
}
TileEntity tTileEntity = aTileEntity.getTileEntityAtSide(aSide);
- //aTileEntity.decreaseStoredEnergyUnits(1L, true);
- if (((aCoverVariable % 2 == 0) || (aSide != 1)) && ((aCoverVariable % 2 != 0) || (aSide != 0)) && (aTileEntity.getUniversalEnergyCapacity() >= 128L)) {
- if (aTileEntity.isUniversalEnergyStored(256L)) {
- aTileEntity.decreaseStoredEnergyUnits(4 * GT_Utility.moveOneItemStack(aCoverVariable % 2 == 0 ? aTileEntity : tTileEntity, aCoverVariable % 2 != 0 ? aTileEntity : tTileEntity, aCoverVariable % 2 != 0 ? GT_Utility.getOppositeSide(aSide) : aSide, aCoverVariable % 2 == 0 ? GT_Utility.getOppositeSide(aSide) : aSide, null, false, (byte) 64, (byte) 1, (byte) 64, (byte) 1), true);
- }
- } else {
- GT_Utility.moveOneItemStack(aCoverVariable % 2 == 0 ? aTileEntity : tTileEntity, aCoverVariable % 2 != 0 ? aTileEntity : tTileEntity, aCoverVariable % 2 != 0 ? GT_Utility.getOppositeSide(aSide) : aSide, aCoverVariable % 2 == 0 ? GT_Utility.getOppositeSide(aSide) : aSide, null, false, (byte) 64, (byte) 1, (byte) 64, (byte) 1);
+ Object fromEntity = aCoverVariable % 2 == 0 ? aTileEntity : tTileEntity,
+ toEntity = aCoverVariable % 2 != 0 ? aTileEntity : tTileEntity;
+ byte fromSide = aCoverVariable % 2 != 0 ? GT_Utility.getOppositeSide(aSide) : aSide,
+ toSide = aCoverVariable % 2 == 0 ? GT_Utility.getOppositeSide(aSide) : aSide;
+ boolean costsEnergy = ((aCoverVariable % 2 == 0) || (aSide != 1)) && ((aCoverVariable % 2 != 0) || (aSide != 0)) && (aTileEntity.getUniversalEnergyCapacity() >= 128L);
+ byte moved;
+
+ for(int i=0 ; i < this.mMaxStacks ; i++) {
+ // Costs energy but we don't have enough, bail
+ if ((costsEnergy && !aTileEntity.isUniversalEnergyStored(256L)))
+ break;
+
+ moved = GT_Utility.moveOneItemStack(fromEntity, toEntity, fromSide , toSide, null, false, (byte) 64, (byte) 1, (byte) 64, (byte) 1);
+
+ if(moved == 0)
+ break;
+
+ if (costsEnergy)
+ aTileEntity.decreaseStoredEnergyUnits(4 * moved, true);
}
+
return aCoverVariable;
}