Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- minetest.register_node("est:bedrock", {
- tiles = {"bedrock.png"}
- })
- local cid_bedrock = minetest.get_content_id("est:bedrock")
- local perlinconf_test = {
- offset = 0,
- scale = 1,
- spread = {x = 16, y = 16, z = 16},
- seed = 1,
- octaves = 3,
- persistence = 0.5,
- lacunarity = 2.0,
- flags = "noeased"
- }
- --proof that PerlinNoise and PerlinNoiseMap work outside of a mapgen thread
- local perlin_test = PerlinNoise(perlinconf_test):get_2d({x = 0, y = 0})
- minetest.log(tostring(perlin_test))
- local function generate(minp, maxp)
- local sidelen = {
- x = maxp.x - minp.x + 1,
- y = maxp.x - minp.x + 1,
- z = maxp.x - minp.x + 1
- }
- local perlinmap_test = PerlinNoiseMap(perlinconf_test, {x = sidelen.x, y = sidelen.y, z = sidelen.z}):get_2d_map_flat(minp)
- --the problem function, returns nil when used outside of registered_on_generateds
- local vm = minetest.get_voxel_manip()
- --proof that this returns nil: the first usage, as called outside of a mapgen function, simply logs "nil"
- minetest.log(tostring(vm))
- if vm then
- local emin, emax = vm:read_from_map(minp, maxp)
- local area = VoxelArea:new{MinEdge = emin, MaxEdge = emax}
- local data = vm:get_data()
- local i
- for i in area:iterp(minp, maxp) do
- if area:position(i).y < 0 then
- data[i] = cid_bedrock
- end
- end
- vm:set_data(data)
- vm:calc_lighting()
- vm:write_to_map()
- vm:update_liquids()
- end
- end
- --does not work as expected!?
- generate({x = -8, y = -8, z = -8}, {x = 8, y = 8, z = 8})
- --does work as expected!?
- table.insert(minetest.registered_on_generateds, 1, generate)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement