lua_api/l_mapgen: Fix overlapping areas of minetest.generate_ores/decorations
authorparamat <mat.gregory@virginmedia.com>
Tue, 10 Mar 2015 04:51:21 +0000 (04:51 +0000)
committerparamat <mat.gregory@virginmedia.com>
Wed, 11 Mar 2015 03:36:39 +0000 (03:36 +0000)
doc/lua_api.txt
src/script/lua_api/l_mapgen.cpp
src/script/lua_api/l_mapgen.h

index 5fa164e6b675ec50bdecdb435308dde52d17459f..d7e95608716a68802ac5c987cfdb92431d891d24 100644 (file)
@@ -1903,10 +1903,10 @@ 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)`
-   * Generate all registered ores within the VoxelManip specified by `vm`.
-* `minetest.generate_decorations(vm)`
-   * Generate all registered decorations within the VoxelManip specified by `vm`.
+* `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.clear_objects()`
     * clear all objects in the environments
 * `minetest.delete_area(pos1, pos2)`
index 54ec6901071c098f048323ef9762c37c88da3c2e..e16b0153aac2ccf36e6f971eea98ee7322d1b087 100644 (file)
@@ -806,7 +806,7 @@ int ModApiMapgen::l_create_schematic(lua_State *L)
        return 1;
 }
 
-// generate_ores(vm, [ore_id])
+// generate_ores(vm, p1, p2, [ore_id])
 int ModApiMapgen::l_generate_ores(lua_State *L)
 {
        EmergeManager *emerge = getServer(L)->getEmergeManager();
@@ -818,13 +818,15 @@ int ModApiMapgen::l_generate_ores(lua_State *L)
 
        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);
+       v3s16 pmin = read_v3s16(L, 2);
+       v3s16 pmax = read_v3s16(L, 3);
+
+       emerge->oremgr->placeAllOres(&mg, blockseed, pmin, pmax);
 
        return 0;
 }
 
-// generate_decorations(vm, [deco_id])
+// generate_decorations(vm, p1, p2, [deco_id])
 int ModApiMapgen::l_generate_decorations(lua_State *L)
 {
        EmergeManager *emerge = getServer(L)->getEmergeManager();
@@ -836,8 +838,10 @@ int ModApiMapgen::l_generate_decorations(lua_State *L)
 
        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);
+       v3s16 pmin = read_v3s16(L, 2);
+       v3s16 pmax = read_v3s16(L, 3);
+
+       emerge->decomgr->placeAllDecos(&mg, blockseed, pmin, pmax);
 
        return 0;
 }
index e17d1b85aa57814dbce05ba6109b93ebd587c8ce..dfed8475fbe34c4e7f3c2d9ac6891109fd599f4b 100644 (file)
@@ -62,10 +62,10 @@ private:
        // clear_registered_decorations()
        static int l_clear_registered_decorations(lua_State *L);
 
-       // generate_ores(vm)
+       // generate_ores(vm, p1, p2)
        static int l_generate_ores(lua_State *L);
 
-       // generate_decorations(vm)
+       // generate_decorations(vm, p1, p2)
        static int l_generate_decorations(lua_State *L);
 
        // clear_registered_ores