summaryrefslogtreecommitdiffstats
path: root/src/BlockEntities/ChestEntity.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/BlockEntities/ChestEntity.h')
-rw-r--r--src/BlockEntities/ChestEntity.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/BlockEntities/ChestEntity.h b/src/BlockEntities/ChestEntity.h
index dfd5ca0d0..96d904248 100644
--- a/src/BlockEntities/ChestEntity.h
+++ b/src/BlockEntities/ChestEntity.h
@@ -39,7 +39,7 @@ public:
virtual void SendTo(cClientHandle & a_Client) override;
virtual bool UsedBy(cPlayer * a_Player) override;
- /** Search horizontally adjacent blocks for neighbouring chests and links them together. */
+ /** Search horizontally adjacent blocks for neighbouring chests of the same type and links them together. */
void ScanNeighbours();
/** Opens a new chest window where this is the primary chest and any neighbour is the secondary. */
@@ -72,9 +72,19 @@ private:
ASSERT(a_Grid == &m_Contents);
if (m_World != nullptr)
{
- if (GetWindow() != nullptr)
+ cWindow * Window = GetWindow();
+ if (
+ (Window == nullptr) &&
+ (m_Neighbour != nullptr)
+ )
{
- GetWindow()->BroadcastWholeWindow();
+ // Neighbour might own the window
+ Window = m_Neighbour->GetWindow();
+ }
+
+ if (Window != nullptr)
+ {
+ Window->BroadcastWholeWindow();
}
m_World->MarkChunkDirty(GetChunkX(), GetChunkZ());