diff --git a/src/main/java/appeng/block/storage/BlockIOPort.java b/src/main/java/appeng/block/storage/BlockIOPort.java index 69f10ef2d..28b9865cc 100644 --- a/src/main/java/appeng/block/storage/BlockIOPort.java +++ b/src/main/java/appeng/block/storage/BlockIOPort.java @@ -19,6 +19,7 @@ package appeng.block.storage; +import appeng.api.config.Upgrades; import appeng.api.util.AEPartLocation; import appeng.block.AEBaseTileBlock; 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) { final TileIOPort te = this.getTileEntity(world, pos); if (te != null) { - te.updateRedstoneState(); + if (te.getInstalledUpgrades(Upgrades.REDSTONE) != 0) { + te.updateRedstoneState(); + } } } diff --git a/src/main/java/appeng/core/AEConfig.java b/src/main/java/appeng/core/AEConfig.java index 7909e3cf5..b285c6bbe 100644 --- a/src/main/java/appeng/core/AEConfig.java +++ b/src/main/java/appeng/core/AEConfig.java @@ -268,7 +268,7 @@ public final class AEConfig extends Configuration implements IConfigurableObject this.craftByStacks[btnNum] = Math.abs(cmb.getInt(this.craftByStacks[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); pmb.setComment("Controls buttons on Priority Screen : Capped at " + buttonCap); diff --git a/src/main/java/appeng/tile/storage/TileIOPort.java b/src/main/java/appeng/tile/storage/TileIOPort.java index 586af1b93..8b9f1a2be 100644 --- a/src/main/java/appeng/tile/storage/TileIOPort.java +++ b/src/main/java/appeng/tile/storage/TileIOPort.java @@ -183,6 +183,11 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC if (this.lastRedstoneState != currentState) { this.lastRedstoneState = currentState; 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) { return true; } - final RedstoneMode rs = (RedstoneMode) this.manager.getSetting(Settings.REDSTONE_CONTROLLED); - if (rs == RedstoneMode.HIGH_SIGNAL) { - return this.getRedstoneState(); + switch (rs) { + 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 @@ -268,7 +282,10 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC if (!this.getProxy().isActive()) { return TickRateModulation.IDLE; } + return this.doWork(); + } + private TickRateModulation doWork() { TickRateModulation ret = TickRateModulation.SLEEP; long itemsToMove = 256;