Advertisement
Guest User

flatgen

a guest
Oct 26th, 2022
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.38 KB | None | 0 0
  1. -- So just execute the command /genmap or execute /emergeblocks (-30912,0,30927) (0,-1,0)
  2. -- use /threads to see how many threads are assigned to mapgen
  3. core.register_on_generated(function(minp, maxp)
  4.     if maxp.y >= 0 and minp.y <= -1 then
  5.         local vm, emin, emax = core.get_mapgen_object("voxelmanip")
  6.         local data = vm:get_data()
  7.         local area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
  8.         local node = core.get_content_id("default:snowblock")
  9.         for x = minp.x, maxp.x do
  10.             for z = minp.z, maxp.z do
  11.                 data[area:index(x, 0, z)] = node
  12.             end
  13.         end
  14.         vm:set_data(data)
  15.         --vm:calc_lighting()
  16.         vm:write_to_map()
  17.     end
  18. end)
  19.  
  20. core.register_chatcommand("threads",
  21. {
  22.     func = function()
  23.         core.chat_send_all("num_emerge_threads: " .. core.settings:get("num_emerge_threads"))
  24.     end,
  25. })
  26.  
  27. local S = core.get_translator("__builtin")
  28.  
  29. local function emergeblocks_callback(pos, action, num_calls_remaining, ctx)
  30.     if ctx.total_blocks == 0 then
  31.         ctx.total_blocks   = num_calls_remaining + 1
  32.         ctx.current_blocks = 0
  33.     end
  34.     ctx.current_blocks = ctx.current_blocks + 1
  35.  
  36.     if ctx.current_blocks == ctx.total_blocks then
  37.         core.chat_send_player(ctx.requestor_name,
  38.             S("Finished emerging @1 blocks in @2ms.",
  39.                 ctx.total_blocks,
  40.                 string.format("%.2f", (os.clock() - ctx.start_time) * 1000)))
  41.     end
  42. end
  43.  
  44. local function emergeblocks_progress_update(ctx)
  45.     if ctx.current_blocks ~= ctx.total_blocks then
  46.         core.chat_send_player(ctx.requestor_name,
  47.             S("emergeblocks update: @1/@2 blocks emerged (@3%)",
  48.             ctx.current_blocks, ctx.total_blocks,
  49.             string.format("%.1f", (ctx.current_blocks / ctx.total_blocks) * 100)))
  50.         core.after(2, emergeblocks_progress_update, ctx)
  51.     end
  52. end
  53.  
  54. core.register_chatcommand("genmap", {
  55.     func = function(name, param)
  56.         local context = {
  57.             current_blocks = 0,
  58.             total_blocks   = 0,
  59.             start_time     = os.clock(),
  60.             requestor_name = name
  61.         }
  62.         local p1 = {x=-30912,y=0,z=30927}
  63.         local p2 = {x=0,y=-1,z=0}
  64.         core.emerge_area(p1, p2, emergeblocks_callback, context)
  65.         core.after(2, emergeblocks_progress_update, context)
  66.         core.chat_send_all("num_emerge_threads: " .. core.settings:get("num_emerge_threads"))
  67.         return true, S("Started emerge of area ranging from @1 to @2.", core.pos_to_string(p1, 1), core.pos_to_string(p2, 1))
  68.     end,
  69. })
  70.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement