#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"
struct MapgenDesc {
const char *name;
MapgenFactory *factory;
+ bool is_user_visible;
};
class EmergeThread : public Thread {
////
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},
};
////
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;
}
}
+bool EmergeManager::isRunning()
+{
+ return m_threads_active;
+}
+
+
bool EmergeManager::enqueueBlockEmerge(
u16 peer_id,
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);
+ }
}
m_emerge(NULL),
m_mapgen(NULL)
{
- name = "Emerge-" + itos(ethreadid);
+ m_name = "Emerge-" + itos(ethreadid);
}
void *EmergeThread::run()
{
- DSTACK(__FUNCTION_NAME);
+ DSTACK(FUNCTION_NAME);
BEGIN_DEBUG_EXCEPTION_HANDLER
v3s16 pos;
m_server->setAsyncFatalError(err.str());
}
- END_DEBUG_EXCEPTION_HANDLER(errorstream)
+ END_DEBUG_EXCEPTION_HANDLER
return NULL;
}