Show infotext with description for item entities
[oweals/minetest.git] / src / emerge.cpp
index 15f264c1a2245f5d7e28fa8414bf140486badba3..b188a7f413986e2b4022fca838836f8c1a28d1cf 100644 (file)
@@ -34,9 +34,12 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 #include "log.h"
 #include "map.h"
 #include "mapblock.h"
+#include "mapgen_flat.h"
+#include "mapgen_fractal.h"
 #include "mapgen_v5.h"
 #include "mapgen_v6.h"
 #include "mapgen_v7.h"
+#include "mapgen_valleys.h"
 #include "mapgen_singlenode.h"
 #include "mg_biome.h"
 #include "mg_ore.h"
@@ -54,6 +57,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 struct MapgenDesc {
        const char *name;
        MapgenFactory *factory;
+       bool is_user_visible;
 };
 
 class EmergeThread : public Thread {
@@ -100,10 +104,13 @@ private:
 ////
 
 MapgenDesc g_reg_mapgens[] = {
-       {"v5",         new MapgenFactoryV5},
-       {"v6",         new MapgenFactoryV6},
-       {"v7",         new MapgenFactoryV7},
-       {"singlenode", new MapgenFactorySinglenode},
+       {"v5",         new MapgenFactoryV5,         true},
+       {"v6",         new MapgenFactoryV6,         true},
+       {"v7",         new MapgenFactoryV7,         true},
+       {"flat",       new MapgenFactoryFlat,       true},
+       {"fractal",    new MapgenFactoryFractal,    true},
+       {"valleys",    new MapgenFactoryValleys,    true},
+       {"singlenode", new MapgenFactorySinglenode, false},
 };
 
 ////
@@ -216,7 +223,7 @@ void EmergeManager::initMapgens()
 Mapgen *EmergeManager::getCurrentMapgen()
 {
        for (u32 i = 0; i != m_threads.size(); i++) {
-               if (m_threads[i]->isSameThread())
+               if (m_threads[i]->isCurrentThread())
                        return m_threads[i]->m_mapgen;
        }
 
@@ -255,6 +262,12 @@ void EmergeManager::stopThreads()
 }
 
 
+bool EmergeManager::isRunning()
+{
+       return m_threads_active;
+}
+
+
 bool EmergeManager::enqueueBlockEmerge(
        u16 peer_id,
        v3s16 blockpos,
@@ -343,10 +356,13 @@ bool EmergeManager::isBlockUnderground(v3s16 blockpos)
 }
 
 
-void EmergeManager::getMapgenNames(std::vector<const char *> *mgnames)
+void EmergeManager::getMapgenNames(
+       std::vector<const char *> *mgnames, bool include_hidden)
 {
-       for (u32 i = 0; i != ARRLEN(g_reg_mapgens); i++)
-               mgnames->push_back(g_reg_mapgens[i].name);
+       for (u32 i = 0; i != ARRLEN(g_reg_mapgens); i++) {
+               if (include_hidden || g_reg_mapgens[i].is_user_visible)
+                       mgnames->push_back(g_reg_mapgens[i].name);
+       }
 }
 
 
@@ -464,7 +480,7 @@ EmergeThread::EmergeThread(Server *server, int ethreadid) :
        m_emerge(NULL),
        m_mapgen(NULL)
 {
-       name = "Emerge-" + itos(ethreadid);
+       m_name = "Emerge-" + itos(ethreadid);
 }
 
 
@@ -615,7 +631,7 @@ MapBlock *EmergeThread::finishGen(v3s16 pos, BlockMakeData *bmdata,
 
 void *EmergeThread::run()
 {
-       DSTACK(__FUNCTION_NAME);
+       DSTACK(FUNCTION_NAME);
        BEGIN_DEBUG_EXCEPTION_HANDLER
 
        v3s16 pos;
@@ -688,6 +704,6 @@ void *EmergeThread::run()
                m_server->setAsyncFatalError(err.str());
        }
 
-       END_DEBUG_EXCEPTION_HANDLER(errorstream)
+       END_DEBUG_EXCEPTION_HANDLER
        return NULL;
 }