diff options
Diffstat (limited to 'src/Simulator/IncrementalRedstoneSimulator/DoorHandler.h')
-rw-r--r-- | src/Simulator/IncrementalRedstoneSimulator/DoorHandler.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/src/Simulator/IncrementalRedstoneSimulator/DoorHandler.h b/src/Simulator/IncrementalRedstoneSimulator/DoorHandler.h index ce318e0b1..fa5debbbf 100644 --- a/src/Simulator/IncrementalRedstoneSimulator/DoorHandler.h +++ b/src/Simulator/IncrementalRedstoneSimulator/DoorHandler.h @@ -40,9 +40,11 @@ namespace DoorHandler Power = std::max(Power, Callback.Power); cChunkInterface ChunkInterface(a_Chunk.GetWorld()->GetChunkMap()); + // Use redstone data rather than block state so players can override redstone control + const auto Previous = DataForChunk(a_Chunk).ExchangeUpdateOncePowerData(a_Position, Power); + const bool IsOpen = (Previous != 0); const bool ShouldBeOpen = Power != 0; const auto AbsolutePosition = cChunkDef::RelativeToAbsolute(a_Position, a_Chunk.GetPos()); - const bool IsOpen = cBlockDoorHandler::IsOpen(ChunkInterface, AbsolutePosition); if (ShouldBeOpen != IsOpen) { |