summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--builtin/settingtypes.txt9
-rw-r--r--minetest.conf.example12
-rw-r--r--src/defaultsettings.cpp3
-rw-r--r--src/environment.cpp24
-rw-r--r--src/environment.h3
-rw-r--r--src/settings_translation_file.cpp6
6 files changed, 45 insertions, 12 deletions
diff --git a/builtin/settingtypes.txt b/builtin/settingtypes.txt
index 99106e00b..0cacb5288 100644
--- a/builtin/settingtypes.txt
+++ b/builtin/settingtypes.txt
@@ -795,6 +795,15 @@ sqlite_synchronous (Synchronous SQLite) enum 2 0,1,2
# Length of a server tick and the interval at which objects are generally updated over network.
dedicated_server_step (Dedicated server step) float 0.1
+# Time in between active block management cycles
+active_block_mgmt_interval (Active Block Management interval) float 2.0
+
+# Length of time between ABM execution cycles
+abm_interval (Active Block Modifier interval) float 1.0
+
+# Length of time between NodeTimer execution cycles
+nodetimer_interval (NodeTimer interval) float 1.0
+
# If enabled, invalid world data won't cause the server to shut down.
# Only enable this if you know what you are doing.
ignore_world_load_errors (Ignore world errors) bool false
diff --git a/minetest.conf.example b/minetest.conf.example
index 6a9dc5ce3..65b1f19e5 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -980,6 +980,18 @@
# type: float
# dedicated_server_step = 0.1
+# Length of time between Active Block Management execution cycles
+# type: float
+# active_block_mgmt_interval = 2.0
+
+# Length of time between ABM execution cycles
+# type: float
+# abm_interval = 1.0
+
+# Length of time between NodeTimer execution cycles
+# type: float
+# nodetimer_interval = 1.0
+
# If enabled, invalid world data won't cause the server to shut down.
# Only enable this if you know what you are doing.
# type: bool
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index 84098e3d5..e00ff1489 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -280,6 +280,9 @@ void set_default_settings(Settings *settings)
settings->setDefault("sqlite_synchronous", "2");
settings->setDefault("full_block_send_enable_min_time_from_building", "2.0");
settings->setDefault("dedicated_server_step", "0.1");
+ settings->setDefault("active_block_mgmt_interval", "2.0");
+ settings->setDefault("abm_interval", "1.0");
+ settings->setDefault("nodetimer_interval", "1.0");
settings->setDefault("ignore_world_load_errors", "false");
settings->setDefault("remote_media", "");
settings->setDefault("debug_log_level", "action");
diff --git a/src/environment.cpp b/src/environment.cpp
index 1de44e755..902e2bda4 100644
--- a/src/environment.cpp
+++ b/src/environment.cpp
@@ -59,6 +59,9 @@ Environment::Environment():
m_day_night_ratio_override(0.0f)
{
m_cache_enable_shaders = g_settings->getBool("enable_shaders");
+ m_cache_active_block_mgmt_interval = g_settings->getFloat("active_block_mgmt_interval");
+ m_cache_abm_interval = g_settings->getFloat("abm_interval");
+ m_cache_nodetimer_interval = g_settings->getFloat("nodetimer_interval");
}
Environment::~Environment()
@@ -1322,9 +1325,8 @@ void ServerEnvironment::step(float dtime)
/*
Manage active block list
*/
- if(m_active_blocks_management_interval.step(dtime, 2.0))
- {
- ScopeProfiler sp(g_profiler, "SEnv: manage act. block list avg /2s", SPT_AVG);
+ if (m_active_blocks_management_interval.step(dtime, m_cache_active_block_mgmt_interval)) {
+ ScopeProfiler sp(g_profiler, "SEnv: manage act. block list avg per interval", SPT_AVG);
/*
Get player block positions
*/
@@ -1399,11 +1401,10 @@ void ServerEnvironment::step(float dtime)
/*
Mess around in active blocks
*/
- if(m_active_blocks_nodemetadata_interval.step(dtime, 1.0))
- {
- ScopeProfiler sp(g_profiler, "SEnv: mess in act. blocks avg /1s", SPT_AVG);
+ if (m_active_blocks_nodemetadata_interval.step(dtime, m_cache_nodetimer_interval)) {
+ ScopeProfiler sp(g_profiler, "SEnv: mess in act. blocks avg per interval", SPT_AVG);
- float dtime = 1.0;
+ float dtime = m_cache_nodetimer_interval;
for(std::set<v3s16>::iterator
i = m_active_blocks.m_list.begin();
@@ -1446,19 +1447,18 @@ void ServerEnvironment::step(float dtime)
}
}
- const float abm_interval = 1.0;
- if(m_active_block_modifier_interval.step(dtime, abm_interval))
+ if (m_active_block_modifier_interval.step(dtime, m_cache_abm_interval))
do{ // breakable
if(m_active_block_interval_overload_skip > 0){
ScopeProfiler sp(g_profiler, "SEnv: ABM overload skips");
m_active_block_interval_overload_skip--;
break;
}
- ScopeProfiler sp(g_profiler, "SEnv: modify in blocks avg /1s", SPT_AVG);
- TimeTaker timer("modify in active blocks");
+ ScopeProfiler sp(g_profiler, "SEnv: modify in blocks avg per interval", SPT_AVG);
+ TimeTaker timer("modify in active blocks per interval");
// Initialize handling of ActiveBlockModifiers
- ABMHandler abmhandler(m_abms, abm_interval, this, true);
+ ABMHandler abmhandler(m_abms, m_cache_abm_interval, this, true);
for(std::set<v3s16>::iterator
i = m_active_blocks.m_list.begin();
diff --git a/src/environment.h b/src/environment.h
index 9b91a0928..660c6f1bc 100644
--- a/src/environment.h
+++ b/src/environment.h
@@ -136,6 +136,9 @@ protected:
* a later release.
*/
bool m_cache_enable_shaders;
+ float m_cache_active_block_mgmt_interval;
+ float m_cache_abm_interval;
+ float m_cache_nodetimer_interval;
private:
Mutex m_time_lock;
diff --git a/src/settings_translation_file.cpp b/src/settings_translation_file.cpp
index 0e0c3acc0..77fd6c682 100644
--- a/src/settings_translation_file.cpp
+++ b/src/settings_translation_file.cpp
@@ -409,6 +409,12 @@ fake_function() {
gettext("See http://www.sqlite.org/pragma.html#pragma_synchronous");
gettext("Dedicated server step");
gettext("Length of a server tick and the interval at which objects are generally updated over network.");
+ gettext("Active Block Management interval");
+ gettext("Time in between active block management cycles");
+ gettext("ABM modifier interval");
+ gettext("Length of time between ABM execution cycles");
+ gettext("NodeTimer interval");
+ gettext("Length of time between NodeTimer execution cycles");
gettext("Ignore world errors");
gettext("If enabled, invalid world data won't cause the server to shut down.\nOnly enable this if you know what you are doing.");
gettext("Liquid loop max");