diff options
-rw-r--r-- | src/BlockEntities/BlockEntityWithItems.cpp | 8 | ||||
-rw-r--r-- | src/BlockEntities/ChestEntity.h | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/src/BlockEntities/BlockEntityWithItems.cpp b/src/BlockEntities/BlockEntityWithItems.cpp index 01d217a16..924882820 100644 --- a/src/BlockEntities/BlockEntityWithItems.cpp +++ b/src/BlockEntities/BlockEntityWithItems.cpp @@ -8,6 +8,7 @@ #include "Globals.h" #include "BlockEntityWithItems.h" +#include "../Simulator/RedstoneSimulator.h" @@ -68,5 +69,12 @@ void cBlockEntityWithItems::OnSlotChanged(cItemGrid * a_Grid, int a_SlotNum) } m_World->MarkChunkDirty(GetChunkX(), GetChunkZ()); + auto Pos = Vector3i(m_PosX, m_PosY, m_PosZ); + m_World->DoWithChunkAt(Pos, [&](cChunk & a_Chunk) + { + m_World->GetRedstoneSimulator()->WakeUp(Pos, &a_Chunk); + return true; + } + ); } } diff --git a/src/BlockEntities/ChestEntity.h b/src/BlockEntities/ChestEntity.h index dc26e0895..de4c1cce6 100644 --- a/src/BlockEntities/ChestEntity.h +++ b/src/BlockEntities/ChestEntity.h @@ -2,6 +2,7 @@ #pragma once #include "BlockEntityWithItems.h" +#include "../Simulator/RedstoneSimulator.h" @@ -89,6 +90,13 @@ private: } m_World->MarkChunkDirty(GetChunkX(), GetChunkZ()); + auto Pos = Vector3i(m_PosX, m_PosY, m_PosZ); + m_World->DoWithChunkAt(Pos, [&](cChunk & a_Chunk) + { + m_World->GetRedstoneSimulator()->WakeUp(Pos, &a_Chunk); + return true; + } + ); } } |