forked from Mirrorlandia_minetest/minetest
Add get_biome_id(biome_name) callback
It returns the index used in mg->biomemap for a given biome name. The biomemap is useless without this unless you re-register all existing biomes, which could cause problems for anyone else trying to use biomemap. With this, you can quickly create a lookup table of ids and names.
This commit is contained in:
parent
21944a0d3c
commit
a5bdfb6b3c
@ -1999,6 +1999,9 @@ and `minetest.auth_reload` call the authetification handler.
|
|||||||
* `get_gen_notify()`: returns a flagstring and a table with the deco_ids
|
* `get_gen_notify()`: returns a flagstring and a table with the deco_ids
|
||||||
* `minetest.get_mapgen_object(objectname)`
|
* `minetest.get_mapgen_object(objectname)`
|
||||||
* Return requested mapgen object if available (see "Mapgen objects")
|
* Return requested mapgen object if available (see "Mapgen objects")
|
||||||
|
* `minetest.get_biome_id(biome_name)`
|
||||||
|
* Returns the biome id, as used in the biomemap Mapgen object, for a
|
||||||
|
given biome_name string.
|
||||||
* `minetest.get_mapgen_params()` Returns mapgen parameters, a table containing
|
* `minetest.get_mapgen_params()` Returns mapgen parameters, a table containing
|
||||||
`mgname`, `seed`, `chunksize`, `water_level`, and `flags`.
|
`mgname`, `seed`, `chunksize`, `water_level`, and `flags`.
|
||||||
* `minetest.set_mapgen_params(MapgenParams)`
|
* `minetest.set_mapgen_params(MapgenParams)`
|
||||||
|
@ -450,6 +450,30 @@ size_t get_biome_list(lua_State *L, int index,
|
|||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
// get_biome_id(biomename)
|
||||||
|
// returns the biome id used in biomemap
|
||||||
|
int ModApiMapgen::l_get_biome_id(lua_State *L)
|
||||||
|
{
|
||||||
|
const char *biome_str = lua_tostring(L, 1);
|
||||||
|
if (!biome_str)
|
||||||
|
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;
|
||||||
|
|
||||||
|
lua_pushinteger(L, biome->index);
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// get_mapgen_object(objectname)
|
// get_mapgen_object(objectname)
|
||||||
// returns the requested object used during map generation
|
// returns the requested object used during map generation
|
||||||
int ModApiMapgen::l_get_mapgen_object(lua_State *L)
|
int ModApiMapgen::l_get_mapgen_object(lua_State *L)
|
||||||
@ -1257,6 +1281,7 @@ int ModApiMapgen::l_serialize_schematic(lua_State *L)
|
|||||||
|
|
||||||
void ModApiMapgen::Initialize(lua_State *L, int top)
|
void ModApiMapgen::Initialize(lua_State *L, int top)
|
||||||
{
|
{
|
||||||
|
API_FCT(get_biome_id);
|
||||||
API_FCT(get_mapgen_object);
|
API_FCT(get_mapgen_object);
|
||||||
|
|
||||||
API_FCT(get_mapgen_params);
|
API_FCT(get_mapgen_params);
|
||||||
|
@ -24,6 +24,10 @@ with this program; if not, write to the Free Software Foundation, Inc.,
|
|||||||
|
|
||||||
class ModApiMapgen : public ModApiBase {
|
class ModApiMapgen : public ModApiBase {
|
||||||
private:
|
private:
|
||||||
|
// get_biome_id(biomename)
|
||||||
|
// returns the biome id used in biomemap
|
||||||
|
static int l_get_biome_id(lua_State *L);
|
||||||
|
|
||||||
// get_mapgen_object(objectname)
|
// get_mapgen_object(objectname)
|
||||||
// returns the requested object used during map generation
|
// returns the requested object used during map generation
|
||||||
static int l_get_mapgen_object(lua_State *L);
|
static int l_get_mapgen_object(lua_State *L);
|
||||||
|
Loading…
Reference in New Issue
Block a user