diff options
author | Alexander Harkness <me@bearbin.net> | 2020-09-21 14:12:09 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-09-21 14:12:09 +0200 |
commit | 8de71fc9d6f2226e84074e941139ca0a8f1e6b0f (patch) | |
tree | aaf16294e18fd032c46bd4f38ecb85060fa0ac42 | |
parent | Implement fortune for ores, glowstone and sea lanterns (#4897) (diff) | |
download | cuberite-8de71fc9d6f2226e84074e941139ca0a8f1e6b0f.tar cuberite-8de71fc9d6f2226e84074e941139ca0a8f1e6b0f.tar.gz cuberite-8de71fc9d6f2226e84074e941139ca0a8f1e6b0f.tar.bz2 cuberite-8de71fc9d6f2226e84074e941139ca0a8f1e6b0f.tar.lz cuberite-8de71fc9d6f2226e84074e941139ca0a8f1e6b0f.tar.xz cuberite-8de71fc9d6f2226e84074e941139ca0a8f1e6b0f.tar.zst cuberite-8de71fc9d6f2226e84074e941139ca0a8f1e6b0f.zip |
-rw-r--r-- | src/Root.cpp | 12 | ||||
-rw-r--r-- | src/Root.h | 3 | ||||
-rw-r--r-- | src/Server.cpp | 3 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/Root.cpp b/src/Root.cpp index b90a229c9..b3712a687 100644 --- a/src/Root.cpp +++ b/src/Root.cpp @@ -577,6 +577,18 @@ void cRoot::SaveAllChunks(void) +void cRoot::SaveAllChunksNow(void) +{ + for (auto & Entry : m_WorldsByName) + { + Entry.second.SaveAllChunks(); + } +} + + + + + void cRoot::SetSavingEnabled(bool a_SavingEnabled) { for (auto & Entry : m_WorldsByName) diff --git a/src/Root.h b/src/Root.h index 1f5354c71..6ec8e5481 100644 --- a/src/Root.h +++ b/src/Root.h @@ -140,6 +140,9 @@ public: /** Saves all chunks in all worlds */ void SaveAllChunks(void); // tolua_export + /** Saves all chunks in all worlds synchronously (waits until dirty chunks have been sent to the ChunkStorage queue before returning) */ + void SaveAllChunksNow(void); + /** Sets whether saving chunks is enabled in all worlds (overrides however the worlds were already set) */ void SetSavingEnabled(bool a_SavingEnabled); // tolua_export diff --git a/src/Server.cpp b/src/Server.cpp index a1dedf333..67629ef2c 100644 --- a/src/Server.cpp +++ b/src/Server.cpp @@ -648,7 +648,8 @@ void cServer::Shutdown(void) // Notify the tick thread and wait for it to terminate: m_TickThread.Stop(); - cRoot::Get()->SaveAllChunks(); + // Save all chunks in all worlds, wait for chunks to be sent to the ChunkStorage queue for each world: + cRoot::Get()->SaveAllChunksNow(); // Remove all clients: cCSLock Lock(m_CSClients); |