diff --git a/minetest.conf.example b/minetest.conf.example index fdfbf201c..adeb3c8f6 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -160,6 +160,8 @@ #disallow_empty_password = false # If true, disable cheat prevention in multiplayer #disable_anticheat = false +# If true, actions are recorded for rollback +#enable_rollback_recording = false # Profiler data print interval. #0 = disable. #profiler_print_interval = 0 diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index dabdbb4aa..6b85feb60 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -122,6 +122,7 @@ void set_default_settings(Settings *settings) settings->setDefault("enable_pvp", "true"); settings->setDefault("disallow_empty_password", "false"); settings->setDefault("disable_anticheat", "false"); + settings->setDefault("enable_rollback_recording", "false"); settings->setDefault("profiler_print_interval", "0"); settings->setDefault("enable_mapgen_debug_info", "false"); diff --git a/src/server.cpp b/src/server.cpp index 6a126b60d..05dff06c5 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -937,6 +937,7 @@ Server::Server( m_banmanager(path_world+DIR_DELIM+"ipban.txt"), m_rollback(NULL), m_rollback_sink_enabled(true), + m_enable_rollback_recording(false), m_lua(NULL), m_itemdef(createItemDefManager()), m_nodedef(createNodeDefManager()), @@ -1873,6 +1874,10 @@ void Server::AsyncRunStep() counter = 0.0; m_emergethread.trigger(); + + // Update m_enable_rollback_recording here too + m_enable_rollback_recording = + g_settings->getBool("enable_rollback_recording"); } } @@ -4658,6 +4663,8 @@ MtEventManager* Server::getEventManager() } IRollbackReportSink* Server::getRollbackReportSink() { + if(!m_enable_rollback_recording) + return NULL; if(!m_rollback_sink_enabled) return NULL; return m_rollback; diff --git a/src/server.h b/src/server.h index 668d42416..223c1b0ff 100644 --- a/src/server.h +++ b/src/server.h @@ -734,6 +734,7 @@ private: // Rollback manager (behind m_env_mutex) IRollbackManager *m_rollback; bool m_rollback_sink_enabled; + bool m_enable_rollback_recording; // Updated once in a while // Scripting // Envlock and conlock should be locked when using Lua