Skip to content

Commit

Permalink
Biome API: Add 'get_biome_name(biome_id)' API
Browse files Browse the repository at this point in the history
Change name of default biome to a more suitable lowercase 'default'.
  • Loading branch information
paramat committed Mar 11, 2018
1 parent a09a994 commit 7ad6cdd
Show file tree
Hide file tree
Showing 4 changed files with 29 additions and 3 deletions.
4 changes: 4 additions & 0 deletions doc/lua_api.txt
Expand Up @@ -2959,6 +2959,10 @@ handler.
* `minetest.get_biome_id(biome_name)`
* Returns the biome id, as used in the biomemap Mapgen object and returned
by `minetest.get_biome_data(pos)`, for a given biome_name string.
* `minetest.get_biome_name(biome_id)`
* Returns the biome name string for the provided biome id, or `nil` on
failure.
* If no biomes have been registered, such as in mgv6, returns `default`.
* `minetest.get_mapgen_params()`
* Deprecated: use `minetest.get_mapgen_setting(name)` instead.
* Returns a table containing:
Expand Down
2 changes: 1 addition & 1 deletion src/mapgen/mg_biome.cpp
Expand Up @@ -40,7 +40,7 @@ BiomeManager::BiomeManager(Server *server) :
// Create default biome to be used in case none exist
Biome *b = new Biome;

b->name = "Default";
b->name = "default";
b->flags = 0;
b->depth_top = 0;
b->depth_filler = -MAX_MAP_GENERATION_LIMIT;
Expand Down
22 changes: 20 additions & 2 deletions src/script/lua_api/l_mapgen.cpp
Expand Up @@ -476,12 +476,10 @@ int ModApiMapgen::l_get_biome_id(lua_State *L)
return 0;

BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr;

if (!bmgr)
return 0;

Biome *biome = (Biome *)bmgr->getByName(biome_str);

if (!biome || biome->index == OBJDEF_INVALID_INDEX)
return 0;

Expand All @@ -491,6 +489,25 @@ int ModApiMapgen::l_get_biome_id(lua_State *L)
}


// get_biome_name(biome_id)
// returns the biome name string
int ModApiMapgen::l_get_biome_name(lua_State *L)
{
NO_MAP_LOCK_REQUIRED;

int biome_id = luaL_checkinteger(L, 1);

BiomeManager *bmgr = getServer(L)->getEmergeManager()->biomemgr;
if (!bmgr)
return 0;

Biome *b = (Biome *)bmgr->getRaw(biome_id);
lua_pushstring(L, b->name.c_str());

return 1;
}


// get_heat(pos)
// returns the heat at the position
int ModApiMapgen::l_get_heat(lua_State *L)
Expand Down Expand Up @@ -1731,6 +1748,7 @@ int ModApiMapgen::l_serialize_schematic(lua_State *L)
void ModApiMapgen::Initialize(lua_State *L, int top)
{
API_FCT(get_biome_id);
API_FCT(get_biome_name);
API_FCT(get_heat);
API_FCT(get_humidity);
API_FCT(get_biome_data);
Expand Down
4 changes: 4 additions & 0 deletions src/script/lua_api/l_mapgen.h
Expand Up @@ -28,6 +28,10 @@ class ModApiMapgen : public ModApiBase
// returns the biome id as used in biomemap and returned by 'get_biome_data()'
static int l_get_biome_id(lua_State *L);

// get_biome_name(biome_id)
// returns the biome name string
static int l_get_biome_name(lua_State *L);

// get_heat(pos)
// returns the heat at the position
static int l_get_heat(lua_State *L);
Expand Down

0 comments on commit 7ad6cdd

Please sign in to comment.