Fix ME Level Emitter buttons config and ME IO Port not respecting its redstone mode (#345)

This commit is contained in:
Stone
2023-12-27 22:53:46 -05:00
committed by GitHub
parent 82751e761e
commit 7747899e90
3 changed files with 26 additions and 6 deletions
@@ -19,6 +19,7 @@
package appeng.block.storage; package appeng.block.storage;
import appeng.api.config.Upgrades;
import appeng.api.util.AEPartLocation; import appeng.api.util.AEPartLocation;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.core.sync.GuiBridge; import appeng.core.sync.GuiBridge;
@@ -67,7 +68,9 @@ public class BlockIOPort extends AEBaseTileBlock {
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos) { public void neighborChanged(IBlockState state, World world, BlockPos pos, Block blockIn, BlockPos fromPos) {
final TileIOPort te = this.getTileEntity(world, pos); final TileIOPort te = this.getTileEntity(world, pos);
if (te != null) { if (te != null) {
te.updateRedstoneState(); if (te.getInstalledUpgrades(Upgrades.REDSTONE) != 0) {
te.updateRedstoneState();
}
} }
} }
+1 -1
View File
@@ -268,7 +268,7 @@ public final class AEConfig extends Configuration implements IConfigurableObject
this.craftByStacks[btnNum] = Math.abs(cmb.getInt(this.craftByStacks[btnNum])); this.craftByStacks[btnNum] = Math.abs(cmb.getInt(this.craftByStacks[btnNum]));
this.priorityByStacks[btnNum] = Math.abs(pmb.getInt(this.priorityByStacks[btnNum])); this.priorityByStacks[btnNum] = Math.abs(pmb.getInt(this.priorityByStacks[btnNum]));
this.levelByStacks[btnNum] = Math.abs(pmb.getInt(this.levelByStacks[btnNum])); this.levelByStacks[btnNum] = Math.abs(lmb.getInt(this.levelByStacks[btnNum]));
cmb.setComment("Controls buttons on Crafting Screen : Capped at " + buttonCap); cmb.setComment("Controls buttons on Crafting Screen : Capped at " + buttonCap);
pmb.setComment("Controls buttons on Priority Screen : Capped at " + buttonCap); pmb.setComment("Controls buttons on Priority Screen : Capped at " + buttonCap);
@@ -183,6 +183,11 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
if (this.lastRedstoneState != currentState) { if (this.lastRedstoneState != currentState) {
this.lastRedstoneState = currentState; this.lastRedstoneState = currentState;
this.updateTask(); this.updateTask();
if (currentState == YesNo.YES) {
if (this.manager.getSetting(Settings.REDSTONE_CONTROLLED) == RedstoneMode.SIGNAL_PULSE) {
this.doWork();
}
}
} }
} }
@@ -198,12 +203,21 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
if (this.getInstalledUpgrades(Upgrades.REDSTONE) == 0) { if (this.getInstalledUpgrades(Upgrades.REDSTONE) == 0) {
return true; return true;
} }
final RedstoneMode rs = (RedstoneMode) this.manager.getSetting(Settings.REDSTONE_CONTROLLED); final RedstoneMode rs = (RedstoneMode) this.manager.getSetting(Settings.REDSTONE_CONTROLLED);
if (rs == RedstoneMode.HIGH_SIGNAL) { switch (rs) {
return this.getRedstoneState(); case IGNORE:
return true;
case HIGH_SIGNAL:
return this.getRedstoneState();
case LOW_SIGNAL:
return !this.getRedstoneState();
case SIGNAL_PULSE:
default:
return false;
} }
return !this.getRedstoneState();
} }
@Override @Override
@@ -268,7 +282,10 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
if (!this.getProxy().isActive()) { if (!this.getProxy().isActive()) {
return TickRateModulation.IDLE; return TickRateModulation.IDLE;
} }
return this.doWork();
}
private TickRateModulation doWork() {
TickRateModulation ret = TickRateModulation.SLEEP; TickRateModulation ret = TickRateModulation.SLEEP;
long itemsToMove = 256; long itemsToMove = 256;