Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- So just execute the command /genmap or execute /emergeblocks (-30912,0,30927) (0,-1,0)
- -- use /threads to see how many threads are assigned to mapgen
- core.register_on_generated(function(minp, maxp)
- if maxp.y >= 0 and minp.y <= -1 then
- local vm, emin, emax = core.get_mapgen_object("voxelmanip")
- local data = vm:get_data()
- local area = VoxelArea:new({MinEdge=emin, MaxEdge=emax})
- local node = core.get_content_id("default:snowblock")
- for x = minp.x, maxp.x do
- for z = minp.z, maxp.z do
- data[area:index(x, 0, z)] = node
- end
- end
- vm:set_data(data)
- --vm:calc_lighting()
- vm:write_to_map()
- end
- end)
- core.register_chatcommand("threads",
- {
- func = function()
- core.chat_send_all("num_emerge_threads: " .. core.settings:get("num_emerge_threads"))
- end,
- })
- local S = core.get_translator("__builtin")
- local function emergeblocks_callback(pos, action, num_calls_remaining, ctx)
- if ctx.total_blocks == 0 then
- ctx.total_blocks = num_calls_remaining + 1
- ctx.current_blocks = 0
- end
- ctx.current_blocks = ctx.current_blocks + 1
- if ctx.current_blocks == ctx.total_blocks then
- core.chat_send_player(ctx.requestor_name,
- S("Finished emerging @1 blocks in @2ms.",
- ctx.total_blocks,
- string.format("%.2f", (os.clock() - ctx.start_time) * 1000)))
- end
- end
- local function emergeblocks_progress_update(ctx)
- if ctx.current_blocks ~= ctx.total_blocks then
- core.chat_send_player(ctx.requestor_name,
- S("emergeblocks update: @1/@2 blocks emerged (@3%)",
- ctx.current_blocks, ctx.total_blocks,
- string.format("%.1f", (ctx.current_blocks / ctx.total_blocks) * 100)))
- core.after(2, emergeblocks_progress_update, ctx)
- end
- end
- core.register_chatcommand("genmap", {
- func = function(name, param)
- local context = {
- current_blocks = 0,
- total_blocks = 0,
- start_time = os.clock(),
- requestor_name = name
- }
- local p1 = {x=-30912,y=0,z=30927}
- local p2 = {x=0,y=-1,z=0}
- core.emerge_area(p1, p2, emergeblocks_callback, context)
- core.after(2, emergeblocks_progress_update, context)
- core.chat_send_all("num_emerge_threads: " .. core.settings:get("num_emerge_threads"))
- return true, S("Started emerge of area ranging from @1 to @2.", core.pos_to_string(p1, 1), core.pos_to_string(p2, 1))
- end,
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement