summaryrefslogtreecommitdiffstats
path: root/src/ChunkMap.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ChunkMap.cpp')
-rw-r--r--src/ChunkMap.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ChunkMap.cpp b/src/ChunkMap.cpp
index 71b8a7a24..53bb905a6 100644
--- a/src/ChunkMap.cpp
+++ b/src/ChunkMap.cpp
@@ -1717,10 +1717,17 @@ void cChunkMap::UnloadUnusedChunks(void)
for (auto itr = m_Chunks.begin(); itr != m_Chunks.end();)
{
if (
- (itr->second.CanUnload()) && // Can unload
+ itr->second.CanUnload() && // Can unload
!cPluginManager::Get()->CallHookChunkUnloading(*GetWorld(), itr->first.ChunkX, itr->first.ChunkZ) // Plugins agree
)
{
+ // First notify plugins:
+ cPluginManager::Get()->CallHookChunkUnloaded(*m_World, itr->first.ChunkX, itr->first.ChunkZ);
+
+ // Notify entities within the chunk, while everything's still valid:
+ itr->second.OnUnload();
+
+ // Kill the chunk:
itr = m_Chunks.erase(itr);
}
else