+struct MapgenDesc {
+ const char *name;
+ MapgenFactory *factory;
+};
+
+MapgenDesc reg_mapgens[] = {
+ {"v5", new MapgenFactoryV5},
+ {"v6", new MapgenFactoryV6},
+ {"v7", new MapgenFactoryV7},
+ {"singlenode", new MapgenFactorySinglenode},
+};
+
+class EmergeThread : public JThread
+{
+public:
+ Server *m_server;
+ ServerMap *map;
+ EmergeManager *emerge;
+ Mapgen *mapgen;
+ bool enable_mapgen_debug_info;
+ int id;
+
+ Event qevent;
+ std::queue<v3s16> blockqueue;
+
+ EmergeThread(Server *server, int ethreadid):
+ JThread(),
+ m_server(server),
+ map(NULL),
+ emerge(NULL),
+ mapgen(NULL),
+ enable_mapgen_debug_info(false),
+ id(ethreadid)
+ {
+ }
+
+ void *Thread();
+ bool popBlockEmerge(v3s16 *pos, u8 *flags);
+ bool getBlockOrStartGen(v3s16 p, MapBlock **b,
+ BlockMakeData *data, bool allow_generate);
+};
+