summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/menu_lua_api.txt4
-rw-r--r--src/emerge.cpp18
-rw-r--r--src/emerge.h3
-rw-r--r--src/script/lua_api/l_mainmenu.cpp2
4 files changed, 16 insertions, 11 deletions
diff --git a/doc/menu_lua_api.txt b/doc/menu_lua_api.txt
index 7d46c6526..d1e209187 100644
--- a/doc/menu_lua_api.txt
+++ b/doc/menu_lua_api.txt
@@ -141,8 +141,8 @@ core.get_game(index)
addon_mods_paths = {[1] = <path>,},
}
core.get_games() -> table of all games in upper format (possible in async calls)
-core.get_mapgen_names() -> table of all map generator algorithms registered in
- the core (possible in async calls)
+core.get_mapgen_names([include_hidden=false]) -> table of map generator algorithms
+ registered in the core (possible in async calls)
Favorites:
core.get_favorites(location) -> list of favorites (possible in async calls)
diff --git a/src/emerge.cpp b/src/emerge.cpp
index 15f264c1a..bb2590641 100644
--- a/src/emerge.cpp
+++ b/src/emerge.cpp
@@ -54,6 +54,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 +101,10 @@ 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},
+ {"singlenode", new MapgenFactorySinglenode, false},
};
////
@@ -343,10 +344,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);
+ }
}
diff --git a/src/emerge.h b/src/emerge.h
index 5526a4c91..b72b2a2c3 100644
--- a/src/emerge.h
+++ b/src/emerge.h
@@ -139,7 +139,8 @@ public:
bool isBlockUnderground(v3s16 blockpos);
static MapgenFactory *getMapgenFactory(const std::string &mgname);
- static void getMapgenNames(std::vector<const char *> *mgnames);
+ static void getMapgenNames(
+ std::vector<const char *> *mgnames, bool include_hidden);
static v3s16 getContainingChunk(v3s16 blockpos, s16 chunksize);
private:
diff --git a/src/script/lua_api/l_mainmenu.cpp b/src/script/lua_api/l_mainmenu.cpp
index d28925d5c..8478cf48a 100644
--- a/src/script/lua_api/l_mainmenu.cpp
+++ b/src/script/lua_api/l_mainmenu.cpp
@@ -707,7 +707,7 @@ int ModApiMainMenu::l_set_topleft_text(lua_State *L)
int ModApiMainMenu::l_get_mapgen_names(lua_State *L)
{
std::vector<const char *> names;
- EmergeManager::getMapgenNames(&names);
+ EmergeManager::getMapgenNames(&names, lua_toboolean(L, 1));
lua_newtable(L);
for (size_t i = 0; i != names.size(); i++) {