mirror of
https://github.com/minetest/minetest.git
synced 2025-07-04 17:00:23 +02:00
Fix unused (and so, broken) enable_rollback_recording. This option must be reloaded at server loop but loaded when server starts, for data consistency (not a hot load variable)
ok @ShadowNinja
This commit is contained in:
@ -1857,11 +1857,11 @@ void Map::transformLiquids(std::map<v3s16, MapBlock*> & modified_blocks)
|
||||
|
||||
// Find out whether there is a suspect for this action
|
||||
std::string suspect;
|
||||
if(m_gamedef->rollback()){
|
||||
if(m_gamedef->rollback()) {
|
||||
suspect = m_gamedef->rollback()->getSuspect(p0, 83, 1);
|
||||
}
|
||||
|
||||
if(!suspect.empty()){
|
||||
if(m_gamedef->rollback() && !suspect.empty()){
|
||||
// Blame suspect
|
||||
RollbackScopeActor rollback_scope(m_gamedef->rollback(), suspect, true);
|
||||
// Get old node for rollback
|
||||
|
@ -44,6 +44,9 @@ int ModApiRollback::l_rollback_get_node_actions(lua_State *L)
|
||||
int limit = luaL_checknumber(L, 4);
|
||||
Server *server = getServer(L);
|
||||
IRollbackManager *rollback = server->getRollbackManager();
|
||||
if (rollback == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
std::list<RollbackAction> actions = rollback->getNodeActors(pos, range, seconds, limit);
|
||||
std::list<RollbackAction>::iterator iter = actions.begin();
|
||||
@ -80,6 +83,13 @@ int ModApiRollback::l_rollback_revert_actions_by(lua_State *L)
|
||||
int seconds = luaL_checknumber(L, 2);
|
||||
Server *server = getServer(L);
|
||||
IRollbackManager *rollback = server->getRollbackManager();
|
||||
|
||||
// If rollback is disabled, tell it's not a success.
|
||||
if (rollback == NULL) {
|
||||
lua_pushboolean(L, false);
|
||||
lua_newtable(L);
|
||||
return 2;
|
||||
}
|
||||
std::list<RollbackAction> actions = rollback->getRevertActions(actor, seconds);
|
||||
std::list<std::string> log;
|
||||
bool success = server->rollbackRevertActions(actions, &log);
|
||||
|
@ -243,9 +243,6 @@ Server::Server(
|
||||
std::string ban_path = m_path_world + DIR_DELIM "ipban.txt";
|
||||
m_banmanager = new BanManager(ban_path);
|
||||
|
||||
// Create rollback manager
|
||||
m_rollback = new RollbackManager(m_path_world, this);
|
||||
|
||||
ModConfiguration modconf(m_path_world);
|
||||
m_mods = modconf.getMods();
|
||||
std::vector<ModSpec> unsatisfied_mods = modconf.getUnsatisfiedMods();
|
||||
@ -353,6 +350,12 @@ Server::Server(
|
||||
// Initialize mapgens
|
||||
m_emerge->initMapgens();
|
||||
|
||||
m_enable_rollback_recording = g_settings->getBool("enable_rollback_recording");
|
||||
if (m_enable_rollback_recording) {
|
||||
// Create rollback manager
|
||||
m_rollback = new RollbackManager(m_path_world, this);
|
||||
}
|
||||
|
||||
// Give environment reference to scripting api
|
||||
m_script->initializeEnvironment(m_env);
|
||||
|
||||
@ -1068,10 +1071,6 @@ void Server::AsyncRunStep(bool initial_step)
|
||||
counter = 0.0;
|
||||
|
||||
m_emerge->startThreads();
|
||||
|
||||
// Update m_enable_rollback_recording here too
|
||||
m_enable_rollback_recording =
|
||||
g_settings->getBool("enable_rollback_recording");
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user