1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Add minetest.generate_ores() and minetest.generate_decorations()

This commit is contained in:
kwolekr 2015-01-04 22:37:20 -05:00
parent a92c083011
commit bdcf03ae36
9 changed files with 93 additions and 37 deletions

View file

@ -810,6 +810,42 @@ int ModApiMapgen::l_create_schematic(lua_State *L)
return 1;
}
// generate_ores(vm, [ore_id])
int ModApiMapgen::l_generate_ores(lua_State *L)
{
EmergeManager *emerge = getServer(L)->getEmergeManager();
Mapgen mg;
mg.seed = emerge->params.seed;
mg.vm = LuaVoxelManip::checkobject(L, 1)->vm;
mg.ndef = getServer(L)->getNodeDefManager();
u32 blockseed = Mapgen::getBlockSeed(mg.vm->m_area.MinEdge, mg.seed);
emerge->oremgr->placeAllOres(&mg, blockseed,
mg.vm->m_area.MinEdge, mg.vm->m_area.MaxEdge);
return 0;
}
// generate_decorations(vm, [deco_id])
int ModApiMapgen::l_generate_decorations(lua_State *L)
{
EmergeManager *emerge = getServer(L)->getEmergeManager();
Mapgen mg;
mg.seed = emerge->params.seed;
mg.vm = LuaVoxelManip::checkobject(L, 1)->vm;
mg.ndef = getServer(L)->getNodeDefManager();
u32 blockseed = Mapgen::getBlockSeed(mg.vm->m_area.MinEdge, mg.seed);
emerge->decomgr->placeAllDecos(&mg, blockseed,
mg.vm->m_area.MinEdge, mg.vm->m_area.MaxEdge);
return 0;
}
// place_schematic(p, schematic, rotation, replacement)
int ModApiMapgen::l_place_schematic(lua_State *L)
{
@ -864,6 +900,9 @@ void ModApiMapgen::Initialize(lua_State *L, int top)
API_FCT(clear_registered_decorations);
API_FCT(clear_registered_ores);
API_FCT(generate_ores);
API_FCT(generate_decorations);
API_FCT(create_schematic);
API_FCT(place_schematic);
}

View file

@ -62,6 +62,12 @@ private:
// clear_registered_decorations()
static int l_clear_registered_decorations(lua_State *L);
// generate_ores(vm)
static int l_generate_ores(lua_State *L);
// generate_decorations(vm)
static int l_generate_decorations(lua_State *L);
// clear_registered_ores
static int l_clear_registered_ores(lua_State *L);

View file

@ -33,7 +33,6 @@ class ManualMapVoxelManipulator;
*/
class LuaVoxelManip : public ModApiBase {
private:
ManualMapVoxelManipulator *vm;
std::map<v3s16, MapBlock *> modified_blocks;
bool is_mapgen_vm;
@ -65,6 +64,8 @@ private:
static int l_get_emerged_area(lua_State *L);
public:
ManualMapVoxelManipulator *vm;
LuaVoxelManip(ManualMapVoxelManipulator *mmvm, bool is_mapgen_vm);
LuaVoxelManip(Map *map, v3s16 p1, v3s16 p2);
LuaVoxelManip(Map *map);