Advertisement
Guest User

minetest VoxelManip tomfoolery

a guest
Oct 23rd, 2023
14
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.57 KB | Source Code | 0 0
  1. minetest.register_node("est:bedrock", {
  2.     tiles = {"bedrock.png"}
  3. })
  4.  
  5. local cid_bedrock = minetest.get_content_id("est:bedrock")
  6.  
  7. local perlinconf_test = {
  8.     offset = 0,
  9.     scale = 1,
  10.     spread = {x = 16, y = 16, z = 16},
  11.     seed = 1,
  12.     octaves = 3,
  13.     persistence = 0.5,
  14.     lacunarity = 2.0,
  15.     flags = "noeased"
  16. }
  17.  
  18. --proof that PerlinNoise and PerlinNoiseMap work outside of a mapgen thread
  19. local perlin_test = PerlinNoise(perlinconf_test):get_2d({x = 0, y = 0})
  20. minetest.log(tostring(perlin_test))
  21.  
  22. local function generate(minp, maxp)
  23.     local sidelen = {
  24.         x = maxp.x - minp.x + 1,
  25.         y = maxp.x - minp.x + 1,
  26.         z = maxp.x - minp.x + 1
  27.     }
  28.     local perlinmap_test = PerlinNoiseMap(perlinconf_test, {x = sidelen.x, y = sidelen.y, z = sidelen.z}):get_2d_map_flat(minp)
  29.    
  30.     --the problem function, returns nil when used outside of registered_on_generateds
  31.     local vm = minetest.get_voxel_manip()
  32.     --proof that this returns nil: the first usage, as called outside of a mapgen function, simply logs "nil"
  33.     minetest.log(tostring(vm))
  34.     if vm then
  35.         local emin, emax = vm:read_from_map(minp, maxp)
  36.         local area = VoxelArea:new{MinEdge = emin, MaxEdge = emax}
  37.         local data = vm:get_data()
  38.        
  39.         local i
  40.         for i in area:iterp(minp, maxp) do
  41.             if area:position(i).y < 0 then
  42.                 data[i] = cid_bedrock
  43.             end
  44.         end
  45.  
  46.         vm:set_data(data)
  47.         vm:calc_lighting()
  48.         vm:write_to_map()
  49.         vm:update_liquids()
  50.     end
  51. end
  52.  
  53. --does not work as expected!?
  54. generate({x = -8, y = -8, z = -8}, {x = 8, y = 8, z = 8})
  55.  
  56. --does work as expected!?
  57. table.insert(minetest.registered_on_generateds, 1, generate)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement