diff --git a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java index b5765e290..53b1ddb58 100644 --- a/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java +++ b/projects/common/src/main/java/dan200/computercraft/shared/computer/blocks/AbstractComputerBlockEntity.java @@ -109,7 +109,6 @@ public abstract class AbstractComputerBlockEntity extends BlockEntity implements computer.keepAlive(); - fresh = false; computerID = computer.getID(); // If the on state has changed, mark as dirty. @@ -129,12 +128,15 @@ public abstract class AbstractComputerBlockEntity extends BlockEntity implements // Update the block state if needed. updateBlockState(computer.getState()); + // Update redstone output if the computer is new or the computer's redstone output has changed. var changes = computer.pollRedstoneChanges(); - if (changes != 0) { + if (fresh || changes != 0) { for (var direction : DirectionUtil.FACINGS) { - if ((changes & (1 << remapToLocalSide(direction).ordinal())) != 0) updateRedstoneTo(direction); + if (fresh || (changes & (1 << remapToLocalSide(direction).ordinal())) != 0) updateRedstoneTo(direction); } } + + fresh = false; } protected abstract void updateBlockState(ComputerState newState);