diff --git a/rules.d/020-0.4.3/tag b/rules.d/020-0.4.3/tag new file mode 100644 index 0000000..17b2ccd --- /dev/null +++ b/rules.d/020-0.4.3/tag @@ -0,0 +1 @@ +0.4.3 diff --git a/rules.d/020-0.4.3/worldtest_generate.patch b/rules.d/020-0.4.3/worldtest_generate.patch new file mode 100644 index 0000000..698a9ae --- /dev/null +++ b/rules.d/020-0.4.3/worldtest_generate.patch @@ -0,0 +1,92 @@ +diff --git a/src/server.cpp b/src/server.cpp +index 893d03b..06cdaad 100644 +--- a/src/server.cpp ++++ b/src/server.cpp +@@ -212,6 +212,10 @@ void * EmergeThread::Thread() + */ + + bool only_from_disk = true; ++ // ++ // This doesn't seem to really work in our case ++ only_from_disk = false; ++ // + + { + core::map::Iterator i; +@@ -1306,6 +1310,47 @@ void Server::AsyncRunStep() + } + } + ++ // ++ // Quit when blocks near origin have been loaded or generated ++ { ++ JMutexAutoLock envlock(m_env_mutex); ++ // Make sure EmergeThread runs ++ m_emergethread.trigger(); ++ // Check area near origin ++ Map *map = &m_env->getMap(); ++ if( ++ map->getBlockNoCreateNoEx(v3s16(0,0,0)) && ++ map->getBlockNoCreateNoEx(v3s16(0,0,0))->isGenerated() && ++ map->getBlockNoCreateNoEx(v3s16(0,0,-1)) && ++ map->getBlockNoCreateNoEx(v3s16(0,0,-1))->isGenerated() && ++ map->getBlockNoCreateNoEx(v3s16(0,-1,0)) && ++ map->getBlockNoCreateNoEx(v3s16(0,-1,0))->isGenerated() && ++ map->getBlockNoCreateNoEx(v3s16(0,-1,-1)) && ++ map->getBlockNoCreateNoEx(v3s16(0,-1,-1))->isGenerated() && ++ map->getBlockNoCreateNoEx(v3s16(-1,0,0)) && ++ map->getBlockNoCreateNoEx(v3s16(-1,0,0))->isGenerated() && ++ map->getBlockNoCreateNoEx(v3s16(-1,0,-1)) && ++ map->getBlockNoCreateNoEx(v3s16(-1,0,-1))->isGenerated() && ++ map->getBlockNoCreateNoEx(v3s16(-1,-1,0)) && ++ map->getBlockNoCreateNoEx(v3s16(-1,-1,0))->isGenerated() && ++ map->getBlockNoCreateNoEx(v3s16(-1,-1,-1)) && ++ map->getBlockNoCreateNoEx(v3s16(-1,-1,-1))->isGenerated() ++ ){ ++ static bool message_triggered = false; ++ if(!message_triggered){ ++ dstream<set("worldtest_command", "loaded"); ++ } ++ if(g_settings->exists("worldtest_command") && ++ g_settings->get("worldtest_command") == "done") ++ m_shutdown_requested = true; ++ } ++ } ++ // ++ + { + JMutexAutoLock lock(m_env_mutex); + // Step environment +@@ -1318,6 +1363,7 @@ void Server::AsyncRunStep() + if(m_map_timer_and_unload_interval.step(dtime, map_timer_and_unload_dtime)) + { + JMutexAutoLock lock(m_env_mutex); ++ + // Run Map's timers and unload unused data + ScopeProfiler sp(g_profiler, "Server: map timer and unload"); + m_env->getMap().timerUpdate(map_timer_and_unload_dtime, +@@ -4853,6 +4899,20 @@ void dedicated_server_loop(Server &server, bool &kill) + { + DSTACK(__FUNCTION_NAME); + ++ // ++ // Load or generate blocks near origin ++ dstream< ++ + verbosestream<<"dedicated_server_loop()"<