lua_api/l_mapgen: generate_ores/decorations: make p1, p2 optional
authorparamat <mat.gregory@virginmedia.com>
Sun, 22 Mar 2015 21:03:19 +0000 (21:03 +0000)
committerparamat <mat.gregory@virginmedia.com>
Tue, 24 Mar 2015 18:07:29 +0000 (18:07 +0000)
doc/lua_api.txt
src/script/lua_api/l_mapgen.cpp

index 0b12652f15010d040c1b2a4e8bba93f237ef4d99..bd85f0da51c68d71a81f4e7e3cbac0fd2ff951d2 100644 (file)
@@ -1903,10 +1903,12 @@ and `minetest.auth_reload` call the authetification handler.
     * Sets the noiseparams setting of `name` to the noiseparams table specified in `noiseparams`.
     * `set_default` is an optional boolean (default: `true`) that specifies whether the setting
       should be applied to the default config or current active config
-* `minetest.generate_ores(vm, p1, p2)`
-   * Generate all registered ores within the VoxelManip `vm` and in the area from p1 to p2.
-* `minetest.generate_decorations(vm, p1, p2)`
-   * Generate all registered decorations within the VoxelManip `vm` and in the area from p1 to p2.
+* `minetest.generate_ores(vm, pos1, pos2)`
+    * Generate all registered ores within the VoxelManip `vm` and in the area from `pos1` to `pos2`.
+    * `pos1` and `pos2` are optional and default to mapchunk minp and maxp.
+* `minetest.generate_decorations(vm, pos1, pos2)`
+    * Generate all registered decorations within the VoxelManip `vm` and in the area from `pos1` to `pos2`.
+    * `pos1` and `pos2` are optional and default to mapchunk minp and maxp.
 * `minetest.clear_objects()`
     * clear all objects in the environments
 * `minetest.delete_area(pos1, pos2)`
index 8806581deac4bf4fa8acd3e0cfcf0ed6f5f6d6c1..172f2b5cc000db5fff3e5b9761f10eb1c7dfb81d 100644 (file)
@@ -801,10 +801,13 @@ int ModApiMapgen::l_generate_ores(lua_State *L)
        mg.vm   = LuaVoxelManip::checkobject(L, 1)->vm;
        mg.ndef = getServer(L)->getNodeDefManager();
 
-       u32 blockseed = Mapgen::getBlockSeed(mg.vm->m_area.MinEdge, mg.seed);
+       v3s16 pmin = lua_istable(L, 2) ? read_v3s16(L, 2) :
+                       mg.vm->m_area.MinEdge + v3s16(1,1,1) * MAP_BLOCKSIZE;
+       v3s16 pmax = lua_istable(L, 3) ? read_v3s16(L, 3) :
+                       mg.vm->m_area.MaxEdge - v3s16(1,1,1) * MAP_BLOCKSIZE;
+       sortBoxVerticies(pmin, pmax);
 
-       v3s16 pmin = read_v3s16(L, 2);
-       v3s16 pmax = read_v3s16(L, 3);
+       u32 blockseed = Mapgen::getBlockSeed(pmin, mg.seed);
 
        emerge->oremgr->placeAllOres(&mg, blockseed, pmin, pmax);
 
@@ -821,10 +824,13 @@ int ModApiMapgen::l_generate_decorations(lua_State *L)
        mg.vm   = LuaVoxelManip::checkobject(L, 1)->vm;
        mg.ndef = getServer(L)->getNodeDefManager();
 
-       u32 blockseed = Mapgen::getBlockSeed(mg.vm->m_area.MinEdge, mg.seed);
+       v3s16 pmin = lua_istable(L, 2) ? read_v3s16(L, 2) :
+                       mg.vm->m_area.MinEdge + v3s16(1,1,1) * MAP_BLOCKSIZE;
+       v3s16 pmax = lua_istable(L, 3) ? read_v3s16(L, 3) :
+                       mg.vm->m_area.MaxEdge - v3s16(1,1,1) * MAP_BLOCKSIZE;
+       sortBoxVerticies(pmin, pmax);
 
-       v3s16 pmin = read_v3s16(L, 2);
-       v3s16 pmax = read_v3s16(L, 3);
+       u32 blockseed = Mapgen::getBlockSeed(pmin, mg.seed);
 
        emerge->decomgr->placeAllDecos(&mg, blockseed, pmin, pmax);