diff options
Diffstat (limited to 'src/Simulator')
-rw-r--r-- | src/Simulator/IncrementalRedstoneSimulator/RedstoneComparatorHandler.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/Simulator/IncrementalRedstoneSimulator/RedstoneComparatorHandler.h b/src/Simulator/IncrementalRedstoneSimulator/RedstoneComparatorHandler.h index debfd6330..34af3ccbc 100644 --- a/src/Simulator/IncrementalRedstoneSimulator/RedstoneComparatorHandler.h +++ b/src/Simulator/IncrementalRedstoneSimulator/RedstoneComparatorHandler.h @@ -54,7 +54,14 @@ public: virtual bool Item(cBlockEntity * a_BlockEntity) override { - auto & Contents = static_cast<cBlockEntityWithItems *>(a_BlockEntity)->GetContents(); + // Skip BlockEntities that don't have slots + auto BlockEntityWithItems = dynamic_cast<cBlockEntityWithItems *>(a_BlockEntity); + if (BlockEntityWithItems == nullptr) + { + return false; + } + + auto & Contents = BlockEntityWithItems->GetContents(); float Fullness = 0; // Is a floating-point type to allow later calculation to produce a non-truncated value for (int Slot = 0; Slot != Contents.GetNumSlots(); ++Slot) |