-- Loud Walking mapgen.lua -- Copyright Duane Robertson (duane@duanerobertson.com), 2017 -- Distributed under the LGPLv2.1 (https://www.gnu.org/licenses/old-licenses/lgpl-2.1.en.html) local DEBUG local node = loud_walking.node local max_height = 31000 local fun_caves_mod = minetest.get_modpath('fun_caves') local data = {} local p2data = {} -- vm rotation data buffer local function generate(p_minp, p_maxp, seed) if not (p_minp and p_maxp and seed) then return end local baseline = loud_walking.baseline local extent_bottom = loud_walking.extent_bottom local extent_top = loud_walking.extent_top local heightmap = {} local minp, maxp = p_minp, p_maxp if maxp.y < baseline + extent_bottom or minp.y > baseline + extent_top then return end local vm, emin, emax = minetest.get_mapgen_object("voxelmanip") if not (vm and emin and emax) then return end vm:get_data(data) p2data = vm:get_param2_data() local area = VoxelArea:new({MinEdge = emin, MaxEdge = emax}) loud_walking.csize = vector.add(vector.subtract(maxp, minp), 1) loud_walking.tree_map = {} local t local meta_data = {} local schem = {} for fake_loop = 1, 1 do loud_walking.terrain(minp, maxp, data, p2data, area, baseline, heightmap, schem) --loud_walking.caves(minp, maxp, data, p2data, area, node, baseline, heightmap) end for _, s in ipairs(schem) do loud_walking.place_schematic(minp, maxp, data, p2data, area, node, s.pos, loud_walking.schematics[s.name], true, s.bound) end vm:set_data(data) vm:set_param2_data(p2data) minetest.generate_ores(vm, minp, maxp) if DEBUG then vm:set_lighting({day = 15, night = 15}) else vm:set_lighting({day = 0, night = 0}, minp, maxp) vm:calc_lighting() end vm:update_liquids() vm:write_to_map() for _, t in ipairs(meta_data) do local meta = minetest.get_meta({x=t.x, y=t.y, z=t.z}) meta:from_table() meta:from_table(t.meta) end -- Clear any tables that won't be reused. loud_walking.tree_map = nil end if loud_walking.path then dofile(loud_walking.path .. "/terrain.lua") --dofile(loud_walking.path .. "/caves.lua") end local function pgenerate(...) local status, err = pcall(generate, ...) --local status, err = true --generate(...) if not status then print('Loud Walking: Could not generate terrain:') print(dump(err)) collectgarbage("collect") end end minetest.register_on_generated(pgenerate)