summaryrefslogtreecommitdiff
path: root/src/serverenvironment.cpp
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2020-10-19 20:38:33 +0200
committerGitHub <noreply@github.com>2020-10-19 20:38:33 +0200
commit4f2303849e0f929524695a9e3719ec486b47ddd1 (patch)
tree66286a14f883a77e7d77bc0a6a20ae6470811fbb /src/serverenvironment.cpp
parent660115c1abc76f3d4f6a6597ed0c4737465c6c55 (diff)
downloadminetest-4f2303849e0f929524695a9e3719ec486b47ddd1.tar.gz
minetest-4f2303849e0f929524695a9e3719ec486b47ddd1.tar.bz2
minetest-4f2303849e0f929524695a9e3719ec486b47ddd1.zip
Implement unloading of static_save=false objects according to existing docs (#10485)
Diffstat (limited to 'src/serverenvironment.cpp')
-rw-r--r--src/serverenvironment.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/serverenvironment.cpp b/src/serverenvironment.cpp
index 6ef56efc8..d044b003d 100644
--- a/src/serverenvironment.cpp
+++ b/src/serverenvironment.cpp
@@ -1972,8 +1972,8 @@ void ServerEnvironment::deactivateFarObjects(bool _force_delete)
// force_delete might be overriden per object
bool force_delete = _force_delete;
- // Do not deactivate if static data creation not allowed
- if (!force_delete && !obj->isStaticAllowed())
+ // Do not deactivate if disallowed
+ if (!force_delete && !obj->shouldUnload())
return false;
// removeRemovedObjects() is responsible for these
@@ -2002,7 +2002,10 @@ void ServerEnvironment::deactivateFarObjects(bool _force_delete)
}
// If block is still active, don't remove
- if (!force_delete && m_active_blocks.contains(blockpos_o))
+ bool still_active = obj->isStaticAllowed() ?
+ m_active_blocks.contains(blockpos_o) :
+ getMap().getBlockNoCreateNoEx(blockpos_o) != nullptr;
+ if (!force_delete && still_active)
return false;
verbosestream << "ServerEnvironment::deactivateFarObjects(): "