diff options
author | repo-alt <wvk17@yandex.ru> | 2022-02-26 12:11:26 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-26 10:11:26 +0100 |
commit | c7dcda0e5314248f704fb76767a1a2d48e3b8fc5 (patch) | |
tree | 1d10308d1808bbbd6cc3ba48389d7b9c8edf08ab /src/main/java/gregtech/api | |
parent | ac937d19f3a836f3fa918fca0e228e2ac52fe282 (diff) | |
download | GT5-Unofficial-c7dcda0e5314248f704fb76767a1a2d48e3b8fc5.tar.gz GT5-Unofficial-c7dcda0e5314248f704fb76767a1a2d48e3b8fc5.tar.bz2 GT5-Unofficial-c7dcda0e5314248f704fb76767a1a2d48e3b8fc5.zip |
fix redstone output for buffers and filters (#947)
closes https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/9442
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r-- | src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Buffer.java | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Buffer.java b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Buffer.java index a3662b78f3..93e976c052 100644 --- a/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Buffer.java +++ b/src/main/java/gregtech/api/metatileentity/implementations/GT_MetaTileEntity_Buffer.java @@ -271,26 +271,33 @@ public abstract class GT_MetaTileEntity_Buffer extends GT_MetaTileEntity_TieredM return false; } + protected void handleRedstoneOutput(IGregTechTileEntity aBaseMetaTileEntity) { + if (bRedstoneIfFull) { + boolean hasEmptySlots = false; + for (int i = 0; i < mInventory.length; i++) { + if (isValidSlot(i) && mInventory[i] == null) { + hasEmptySlots = true; + break; + } + } + if (bInvert) + hasEmptySlots = !hasEmptySlots; + for (byte b = 0; b < 6; b++) + aBaseMetaTileEntity.setInternalOutputRedstoneSignal(b, hasEmptySlots ? (byte) 0 : (byte) 15); + } + else { + for(byte b = 0;b<6;b++) + aBaseMetaTileEntity.setInternalOutputRedstoneSignal(b, (byte)0); + } + } + @Override public void onPostTick(IGregTechTileEntity aBaseMetaTileEntity, long aTimer) { if (aBaseMetaTileEntity.isAllowedToWork() && aBaseMetaTileEntity.isServerSide() && (aBaseMetaTileEntity.hasWorkJustBeenEnabled() || aBaseMetaTileEntity.hasInventoryBeenModified() || aTimer % 200 == 0 || mSuccess > 0)) { mSuccess--; updateSlots(); moveItems(aBaseMetaTileEntity, aTimer); - for(byte b = 0;b<6;b++) - aBaseMetaTileEntity.setInternalOutputRedstoneSignal(b,bInvert ? (byte)15 : (byte)0); - if (bRedstoneIfFull) { - for(byte b = 0;b<6;b++) - aBaseMetaTileEntity.setInternalOutputRedstoneSignal(b,bInvert ? (byte)0 : (byte)15); - for (int i = 0; i < mInventory.length; i++) - if (isValidSlot(i)) { - if (mInventory[i] == null) { - for(byte b = 0;b<6;b++) - aBaseMetaTileEntity.setInternalOutputRedstoneSignal(b,bInvert ? (byte)15 : (byte)0); - break; - } - } - } + handleRedstoneOutput(aBaseMetaTileEntity); } } |