Upgrade meta commands

This commit is contained in:
Starbeamrainbowlabs 2022-09-18 22:37:26 +01:00
parent 4a56d45c4b
commit 6102a1adf5
Signed by: sbrl
GPG key ID: 1BE5172E637709C2
9 changed files with 105 additions and 141 deletions

View file

@ -1,9 +1,11 @@
local wea_c = worldeditadditions_core
local Vector3 = wea_c.Vector3
-- █████ ██ ██████ █████ ██████ ██████ ██ ██ ██
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
-- ███████ ██ ██████ ███████ ██████ ██████ ██ ████
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ███████ ██
local wea_c = worldeditadditions_core
worldeditadditions_core.register_command("airapply", {
params = "<command_name> <args>",
@ -30,7 +32,7 @@ worldeditadditions_core.register_command("airapply", {
-- Run parsing of target command
-- Lifted from cubeapply in WorldEdit
local args_parsed = {cmd_we.parse(args_text)}
local args_parsed = { cmd_we.parse(args_text) }
if not table.remove(args_parsed, 1) then
return false, args_parsed[1]
end
@ -48,7 +50,7 @@ worldeditadditions_core.register_command("airapply", {
return false, "Your privileges are insufficient to execute the command '"..cmd.."'."
end
local pos1, pos2 = worldeditadditions.Vector3.sort(
local pos1, pos2 = Vector3.sort(
worldedit.pos1[name],
worldedit.pos2[name]
)
@ -57,15 +59,15 @@ worldeditadditions_core.register_command("airapply", {
local success, stats_time = worldeditadditions.airapply(
pos1, pos2,
function()
cmd.func(name, worldeditadditions.table.unpack(args_parsed))
cmd.func(name, table.unpack(args_parsed))
end
)
if not success then return success, stats_time end
local time_overhead = 100 - worldeditadditions.round((stats_time.fn / stats_time.all) * 100, 3)
local text_time_all = worldeditadditions.format.human_time(stats_time.all)
local text_time_fn = worldeditadditions.format.human_time(stats_time.fn)
local time_overhead = 100 - wea_c.round((stats_time.fn / stats_time.all) * 100, 3)
local text_time_all = wea_c.format.human_time(stats_time.all)
local text_time_fn = wea_c.format.human_time(stats_time.fn)
minetest.log("action", name.." used //airapply at "..pos1.." - "..pos2.." in "..text_time_all)
return true, "Complete in "..text_time_all.." ("..text_time_fn.." fn, "..time_overhead.."% airapply overhead)"

View file

@ -1,9 +1,12 @@
local wea_c = worldeditadditions_core
local Vector3 = wea_c.Vector3
-- ███████ ██ ██ ██ ██████ ███████ ███████ █████ ██████ ██████ ██ ██ ██
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
-- █████ ██ ██ ██ ██████ ███████ █████ ███████ ██████ ██████ ██ ████
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
-- ███████ ███████ ███████ ██ ██ ███████ ███████ ██ ██ ██ ██ ███████ ██
local wea_c = worldeditadditions_core
worldeditadditions_core.register_command("ellipsoidapply", {
params = "<command_name> <args>",
@ -48,16 +51,17 @@ worldeditadditions_core.register_command("ellipsoidapply", {
if not minetest.check_player_privs(name, cmd.privs) then
return false, "Your privileges are insufficient to execute the command '"..cmd.."'."
end
local pos1 = Vector3.clone(worldedit.pos1[name])
local pos2 = Vector3.clone(worldedit.pos2[name])
local success, stats_time = worldeditadditions.ellipsoidapply(
worldedit.pos1[name], worldedit.pos2[name],
pos1, pos2,
function()
cmd.func(name, worldeditadditions.table.unpack(args_parsed))
cmd.func(name, wea_c.table.unpack(args_parsed))
end --, args_parsed
)
local time_overhead = 100 - worldeditadditions.round((stats_time.fn / stats_time.all) * 100, 3)
local time_overhead = 100 - wea_c.round((stats_time.fn / stats_time.all) * 100, 3)
minetest.log("action", name.." used //ellipsoidapply at "..worldeditadditions.vector.tostring(worldedit.pos1[name]).." - "..worldeditadditions.vector.tostring(worldedit.pos2[name]).." in "..worldeditadditions.format.human_time(stats_time.all))
return true, "Complete in "..worldeditadditions.format.human_time(stats_time.all).." ("..worldeditadditions.format.human_time(stats_time.fn).." fn, "..time_overhead.."% ellipsoidapply overhead)"
minetest.log("action", name.." used //ellipsoidapply at "..pos1.." - "..pos2.." in "..wea_c.format.human_time(stats_time.all))
return true, "Complete in "..wea_c.format.human_time(stats_time.all).." ("..wea_c.format.human_time(stats_time.fn).." fn, "..time_overhead.."% ellipsoidapply overhead)"
end
})

View file

@ -13,7 +13,7 @@
-- ?Basename support for values
-- ?Comma deliniation support for values
local wea = worldeditadditions
local wea_c = worldeditadditions_core
local function step(params)
-- Initialize additional params on first call
if not params.first then
@ -26,11 +26,11 @@ local function step(params)
local v = params.values[params.i]
-- Start a timer
local start_time = wea.get_ms_time()
local start_time = wea_c.get_ms_time()
-- Execute command
params.cmd.func(params.player_name, params.args:gsub("%%+",v))
-- Finish timer and add to total
params.time = params.time + wea.get_ms_time() - start_time
params.time = params.time + wea_c.get_ms_time() - start_time
-- Increment iteration state
params.i = params.i + 1
@ -41,7 +41,7 @@ local function step(params)
worldedit.player_notify(params.player_name, "For "..
table.concat(params.values,", ")..
", /"..params.cmd_name.." completed in " ..
wea.format.human_time(params.time))
wea_c.format.human_time(params.time))
end
end
@ -53,17 +53,17 @@ worldeditadditions_core.register_command("for", {
if not params_text:match("%sdo%s") then
return false, "Error: \"do\" argument is not present."
end
local parts = wea.split(params_text,"%sdo%s")
local parts = wea_c.split(params_text,"%sdo%s")
if not parts[1] == "" then
return false, "Error: No values specified."
end
if not parts[2] then
return false, "Error: No command specified."
end
local values = wea.split(parts[1],"%s")
local values = wea_c.split(parts[1],"%s")
local command, args = parts[2]:match("/([^%s]+)%s*(.*)$")
if not args then args = ""
else args = wea.trim(args) end
else args = wea_c.trim(args) end
return true, values, command, args
end,

View file

@ -6,13 +6,13 @@
-- Commands that work on other commands.
local we_cm = worldeditadditions_commands.modpath .. "/commands/meta/"
local we_cmdpath = worldeditadditions_commands.modpath .. "/commands/meta/"
dofile(we_cm.."airapply.lua")
dofile(we_cm.."ellipsoidapply.lua")
dofile(we_cm.."for.lua")
dofile(we_cmdpath.."airapply.lua")
dofile(we_cmdpath.."ellipsoidapply.lua")
dofile(we_cmdpath.."for.lua")
-- dofile(we_cm.."macro.lua") -- Async bug
dofile(we_cm.."many.lua")
dofile(we_cm.."multi.lua")
dofile(we_cm.."noiseapply2d.lua")
dofile(we_cm.."subdivide.lua")
dofile(we_cmdpath.."many.lua")
dofile(we_cmdpath.."multi.lua")
dofile(we_cmdpath.."noiseapply2d.lua")
dofile(we_cmdpath.."subdivide.lua")

View file

@ -4,7 +4,9 @@
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
-- ██ ██ ██ ██ ██████ ██ ██ ██████
local wea = worldeditadditions
local v3 = worldeditadditions.Vector3
local wea_c = worldeditadditions
local v3 = wea_c.Vector3
local function step(params)
-- Initialize additional params on first call
if not params.first then
@ -27,11 +29,11 @@ local function step(params)
end
-- Start a timer
local start_time = wea.get_ms_time()
local start_time = wea_c.get_ms_time()
-- Execute command
cmd.func(params.player_name, args)
-- Finish timer and add to total
params.time = params.time + wea.get_ms_time() - start_time
params.time = params.time + wea_c.get_ms_time() - start_time
-- Increment iteration state
params.i = params.i + 1
@ -41,7 +43,7 @@ local function step(params)
else
worldedit.player_notify(params.player_name, "The macro \""..
params.file.."\" was completed in " ..
wea.format.human_time(params.time))
wea_c.format.human_time(params.time))
end
end
@ -51,7 +53,7 @@ worldeditadditions_core.register_command("macro", {
privs = {worldedit=true},
require_pos = 0,
parse = function(params_text)
local parts = wea.split(params_text,"%s")
local parts = wea_c.split(params_text,"%s")
local file_name, delay -- = params_text:match("^(.-)%s*(%d*%.?%d*)$")
-- Check for params and delay
if not parts[1] then
@ -72,7 +74,7 @@ worldeditadditions_core.register_command("macro", {
end,
func = function(name, file_name, delay)
if not worldedit.pos1[name] then
worldedit.pos1[name] = v3.add(wea.player_vector(name), v3.new(0.5,-0.5,0.5)):floor()
worldedit.pos1[name] = v3.add(wea_c.player_vector(name), v3.new(0.5,-0.5,0.5)):floor()
worldedit.mark_pos1(name)
end
worldedit.pos2[name] = worldedit.pos1[name]
@ -99,7 +101,7 @@ worldeditadditions_core.register_command("macro", {
player_name = name,
file = file_name:match("^[^%.]+"),
delay = delay,
commands = wea.split(value,"[\n\r]+")
commands = wea_c.split(value,"[\n\r]+")
})
end,

View file

@ -1,43 +1,20 @@
--- Executes multiple worldedit commands in sequence.
-- @module worldeditadditions.multi
-- @module worldeditadditions_commands.multi
-- explode(separator, string)
-- From http://lua-users.org/wiki/SplitJoin
-- TODO: Refactor this to use wea.split instead
local function explode(delim, str)
local ll, is_done
local delim_length = string.len(delim)
ll = 0
is_done = false
local wea_c = worldeditadditions_core
return function()
if is_done then return end
local result
local loc = string.find(str, delim, ll, true) -- find the next d in the string
if loc ~= nil then -- if "not not" found then..
result = string.sub(str, ll, loc - 1) -- Save it in our array.
ll = loc + delim_length -- save just after where we found it for searching next time.
else
result = string.sub(str, ll) -- Save what's left in our array.
is_done = true
end
return result
end
end
local function step(params)
local start_time = worldeditadditions.get_ms_time()
local start_time = wea_c.get_ms_time()
local full_cmd = params.cmd_name.." "..params.args
worldedit.player_notify(params.name, string.format("[ many | /%s ] %d / %d (~%.2f%%) complete | last: %s, average: %s, ETA: ~%s",
full_cmd,
(params.i + 1), params.count,
((params.i + 1) / params.count)*100,
worldeditadditions.format.human_time(params.times[#params.times] or 0),
worldeditadditions.format.human_time(worldeditadditions.average(params.times)),
worldeditadditions.format.human_time(worldeditadditions.eta(
wea_c.format.human_time(params.times[#params.times] or 0),
wea_c.format.human_time(wea_c.average(params.times)),
wea_c.format.human_time(wea_c.eta(
params.times,
params.i,
params.count
@ -50,20 +27,20 @@ local function step(params)
cmd.func(params.name, params.args)
table.insert(params.times, worldeditadditions.get_ms_time() - start_time)
table.insert(params.times, wea_c.get_ms_time() - start_time)
params.i = params.i + 1
if params.i < params.count then
minetest.after(0, step, params)
else
local total_time = (worldeditadditions.get_ms_time() - params.master_start_time)
local total_time = (wea_c.get_ms_time() - params.master_start_time)
local done_message = {}
table.insert(done_message,
string.format("Executed '"..full_cmd.."' %d times in %s (~%s / time)",
#params.times,
worldeditadditions.format.human_time(total_time),
worldeditadditions.format.human_time(
worldeditadditions.average(params.times)
wea_c.format.human_time(total_time),
wea_c.format.human_time(
wea_c.average(params.times)
)
)
)
@ -71,7 +48,7 @@ local function step(params)
if #params.times < 10 then
local message_parts = {}
for j=1,#params.times do
table.insert(message_parts, worldeditadditions.format.human_time(params.times[j]))
table.insert(message_parts, wea_c.format.human_time(params.times[j]))
end
table.insert(done_message, "; ")
table.insert(done_message, table.concat(message_parts, ", "))
@ -88,7 +65,7 @@ minetest.register_chatcommand("/many", {
func = function(name, params_text)
local i = 1 -- For feedback only
local master_start_time = worldeditadditions.get_ms_time()
local master_start_time = wea_c.get_ms_time()
local times = {}
local count, cmd_name, args = params_text:match("^(%d+)%s([^%s]+)%s(.+)$")
@ -97,11 +74,11 @@ minetest.register_chatcommand("/many", {
if not count then return false, "Error: Invalid syntax" end
end
if not args then args = "" end
args = worldeditadditions.trim(args)
args = wea_c.trim(args)
-- print("[many] count", count, "cmd_name", cmd_name, "args", args)
count = tonumber(count)
cmd_name = worldeditadditions.trim(cmd_name):sub(2) -- Things start at 1, not 0 in Lua :-(
cmd_name = wea_c.trim(cmd_name):sub(2) -- Things start at 1, not 0 in Lua :-(
-- Check the command we're going to execute
local cmd = minetest.chatcommands[cmd_name]

View file

@ -1,30 +1,6 @@
--- Executes multiple worldedit commands in sequence.
-- @module worldeditadditions.multi
-- explode(separator, string)
-- From http://lua-users.org/wiki/SplitJoin
local function explode(delim, str)
local ll, is_done
local delim_length = string.len(delim)
ll = 0
is_done = false
return function()
if is_done then return end
local result
local loc = string.find(str, delim, ll, true) -- find the next d in the string
if loc ~= nil then -- if "not not" found then..
result = string.sub(str, ll, loc - 1) -- Save it in our array.
ll = loc + delim_length -- save just after where we found it for searching next time.
else
result = string.sub(str, ll) -- Save what's left in our array.
is_done = true
end
return result
end
end
-- @module worldeditadditions_commands.multi
local wea_c = worldeditadditions_core
minetest.register_chatcommand("/multi", {
params = "/<command_a> <args> //<command_b> <args> /<command_c> <args>.....",
@ -32,24 +8,24 @@ minetest.register_chatcommand("/multi", {
privs = { worldedit = true },
func = function(name, params_text)
if not params_text then return false, "Error: No commands specified, so there's nothing to do." end
params_text = worldeditadditions.trim(params_text)
params_text = wea_c.trim(params_text)
if #params_text == 0 then return false, "Error: No commands specified, so there's nothing to do." end
local master_start_time = worldeditadditions.get_ms_time()
local master_start_time = wea_c.get_ms_time()
local times = {}
-- Tokenise the input into a list of commands
local success, commands = worldeditadditions.parse.tokenise_commands(params_text)
local success, commands = wea_c.parse.tokenise_commands(params_text)
if not success then return success, commands end
for i, command in ipairs(commands) do
-- print("[DEBUG] i", i, "command: '"..command.."'")
local start_time = worldeditadditions.get_ms_time()
local start_time = wea_c.get_ms_time()
local found, _, command_name, args = command:find("^([^%s]+)%s(.+)$")
if not found then command_name = command end
-- Things start at 1, not 0 in Lua :-(
command_name = worldeditadditions.trim(command_name):sub(2) -- Strip the leading /
command_name = wea_c.trim(command_name):sub(2) -- Strip the leading /
if not args then args = "" end
-- print("command_name", command_name)
@ -66,21 +42,21 @@ minetest.register_chatcommand("/multi", {
minetest.log("action", name.." runs "..command)
cmd.func(name, args)
times[#times + 1] = (worldeditadditions.get_ms_time() - start_time)
times[#times + 1] = (wea_c.get_ms_time() - start_time)
-- i = i + 1
end
local total_time = (worldeditadditions.get_ms_time() - master_start_time)
local total_time = (wea_c.get_ms_time() - master_start_time)
local done_message = {}
table.insert(done_message,
string.format("Executed %d commands in %s (",
#times,
worldeditadditions.format.human_time(total_time)
wea_c.format.human_time(total_time)
)
)
local message_parts = {}
for j=1,#times do
table.insert(message_parts, worldeditadditions.format.human_time(times[j]))
table.insert(message_parts, wea_c.format.human_time(times[j]))
end
table.insert(done_message, table.concat(message_parts, ", "))
table.insert(done_message, ")")

View file

@ -1,10 +1,12 @@
local wea_c = worldeditadditions_core
local Vector3 = wea_c.Vector3
-- ███ ██ ██████ ██ ███████ ███████ █████ ██████ ██████ ██ ██ ██ ██████ ██████
-- ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
-- ██ ██ ██ ██ ██ ██ ███████ █████ ███████ ██████ ██████ ██ ████ █████ ██ ██
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
-- ██ ████ ██████ ██ ███████ ███████ ██ ██ ██ ██ ███████ ██ ███████ ██████
local wea_c = worldeditadditions_core
worldeditadditions_core.register_command("noiseapply2d", {
params = "<threshold> <scale> <command_name> <args>",
@ -30,7 +32,7 @@ worldeditadditions_core.register_command("noiseapply2d", {
-- Run parsing of target command
-- Lifted from cubeapply in WorldEdit
local args_parsed = {cmd_we.parse(args_text)}
local args_parsed = { cmd_we.parse(args_text) }
if not table.remove(args_parsed, 1) then
return false, args_parsed[1]
end
@ -60,7 +62,7 @@ worldeditadditions_core.register_command("noiseapply2d", {
return false, "Your privileges are insufficient to execute the command '"..cmd.."'."
end
local pos1, pos2 = worldeditadditions.Vector3.sort(
local pos1, pos2 = Vector3.sort(
worldedit.pos1[name],
worldedit.pos2[name]
)
@ -69,18 +71,18 @@ worldeditadditions_core.register_command("noiseapply2d", {
local success, stats_time = worldeditadditions.noiseapply2d(
pos1, pos2,
threshold,
worldeditadditions.Vector3.new(
Vector3.new(
scale, scale, scale
),
function()
cmd.func(name, worldeditadditions.table.unpack(args_parsed))
cmd.func(name, wea_c.table.unpack(args_parsed))
end
)
if not success then return success, stats_time end
local time_overhead = 100 - worldeditadditions.round((stats_time.fn / stats_time.all) * 100, 3)
local text_time_all = worldeditadditions.format.human_time(stats_time.all)
local text_time_fn = worldeditadditions.format.human_time(stats_time.fn)
local time_overhead = 100 - wea_c.round((stats_time.fn / stats_time.all) * 100, 3)
local text_time_all = wea_c.format.human_time(stats_time.all)
local text_time_fn = wea_c.format.human_time(stats_time.fn)
minetest.log("action", name.." used //noiseapply2d at "..pos1.." - "..pos2.." in "..text_time_all)
return true, "Complete in "..text_time_all.." ("..text_time_fn.." fn, "..time_overhead.."% noiseapply2d overhead)"

View file

@ -1,5 +1,6 @@
local wea = worldeditadditions
local wea_c = worldeditadditions_core
local Vector3 = wea_c.Vector3
-- Test command:
-- //multi //fp set1 1330 60 5455 //fp set2 1355 35 5430 //subdivide 10 10 10 fixlight //y
@ -14,7 +15,7 @@ local function will_trigger_saferegion(name, cmd_name, args)
if not parse_success then return nil, table.remove(parsed, 1) end
if not def.nodes_needed then return false end
local result = def.nodes_needed(name, wea.table.unpack(parsed))
local result = def.nodes_needed(name, wea_c.table.unpack(parsed))
if not result then return nil, result end
if result > 10000 then return true end
return false
@ -36,7 +37,7 @@ worldeditadditions_core.register_command("subdivide", {
privs = { worldedit = true },
require_pos = 2,
parse = function(params_text)
local parts = wea.split(params_text, "%s+", false)
local parts = wea_c.split(params_text, "%s+", false)
if #parts < 4 then
return false, "Error: Not enough arguments (try /help /subdivide)."
@ -69,9 +70,9 @@ worldeditadditions_core.register_command("subdivide", {
return worldedit.volume(worldedit.pos1[name], worldedit.pos2[name])
end,
func = function(name, chunk_size, cmd_name, args)
local time_total = wea.get_ms_time()
local time_total = wea_c.get_ms_time()
local pos1, pos2 = worldedit.sort_pos(worldedit.pos1[name], worldedit.pos2[name])
local pos1, pos2 = Vector3.sort(worldedit.pos1[name], worldedit.pos2[name])
local volume = worldedit.volume(pos1, pos2)
local cmd = wea_c.fetch_command_def(cmd_name)
@ -88,8 +89,8 @@ worldeditadditions_core.register_command("subdivide", {
-- * math.ceil((pos2.y - pos1.y) / (chunk_size.y - 1))
-- * math.ceil((pos2.z - pos1.z) / (chunk_size.z - 1))
local msg_prefix = "[ subdivide | "..wea.trim(table.concat({cmd_name, args}, " ")).." ] "
local time_last_msg = wea.get_ms_time()
local msg_prefix = "[ subdivide | "..wea_c.trim(table.concat({cmd_name, args}, " ")).." ] "
local time_last_msg = wea_c.get_ms_time()
local cmd_args_parsed = {cmd.parse(args)}
local success = table.remove(cmd_args_parsed, 1)
@ -100,15 +101,15 @@ worldeditadditions_core.register_command("subdivide", {
wea.subdivide(pos1, pos2, chunk_size, function(cpos1, cpos2, stats)
-- Called on every subblock
if stats.chunks_completed == 1 then
local chunk_size_display = {
x = stats.chunk_size.x + 1,
y = stats.chunk_size.y + 1,
z = stats.chunk_size.z + 1
}
local chunk_size_display = Vector3.new(
stats.chunk_size.x + 1, -- x
stats.chunk_size.y + 1, -- y
stats.chunk_size.z + 1 -- z
)
worldedit.player_notify(name, string.format(
"%sStarting - chunk size: %s, %d chunks total (%d nodes)",
msg_prefix,
wea.vector.tostring(chunk_size_display),
tostring(chunk_size_display),
stats.chunks_total,
stats.volume_nodes
))
@ -118,26 +119,26 @@ worldeditadditions_core.register_command("subdivide", {
worldedit.pos1[name] = cpos1
worldedit.pos2[name] = cpos2
worldedit.marker_update(name)
cmd.func(name, wea.table.unpack(cmd_args_parsed))
cmd.func(name, wea_c.table.unpack(cmd_args_parsed))
if will_trigger_saferegion(name, cmd_name, args) then
minetest.chatcommands["/y"].func(name)
end
worldedit.player_notify_unsuppress(name)
-- Send updates every 2 seconds, and after the first 3 chunks are done
if worldeditadditions.get_ms_time() - time_last_msg > 2 * 1000 or stats.chunks_completed == 3 or stats.chunks_completed == stats.chunks_total then
if wea_c.get_ms_time() - time_last_msg > 2 * 1000 or stats.chunks_completed == 3 or stats.chunks_completed == stats.chunks_total then
worldedit.player_notify(name,
string.format("%s%d / %d (~%.2f%%) complete | last chunk: %s, average: %s, %.2f%% emerge overhead, ETA: ~%s",
msg_prefix,
stats.chunks_completed, stats.chunks_total,
(stats.chunks_completed / stats.chunks_total) * 100,
worldeditadditions.format.human_time(math.floor(stats.times.step_last)), -- the time is an integer anyway because precision
worldeditadditions.format.human_time(wea.average(stats.times.steps)),
wea_c.format.human_time(math.floor(stats.times.step_last)), -- the time is an integer anyway because precision
wea_c.format.human_time(wea_c.average(stats.times.steps)),
stats.emerge_overhead * 100,
worldeditadditions.format.human_time(stats.eta)
wea_c.format.human_time(stats.eta)
)
)
time_last_msg = wea.get_ms_time()
time_last_msg = wea_c.get_ms_time()
end
end, function(_, _, stats)
worldedit.pos1[name] = pos1
@ -147,17 +148,17 @@ worldeditadditions_core.register_command("subdivide", {
-- Called on completion
minetest.log("action", string.format("%s used //subdivide at %s - %s, with %d chunks and %d total nodes in %s",
name,
wea.vector.tostring(pos1),
wea.vector.tostring(pos2),
tostring(pos1),
tostring(pos2),
stats.chunks_completed,
stats.volume_nodes,
worldeditadditions.format.human_time(stats.times.total)
wea_c.format.human_time(stats.times.total)
))
worldedit.player_notify(name, string.format(
"%sComplete: %d chunks processed in %s (%.2f%% emerge overhead, emerge totals: %s)",
msg_prefix,
stats.chunks_completed,
worldeditadditions.format.human_time(stats.times.total),
wea_c.format.human_time(stats.times.total),
stats.emerge_overhead * 100,
emerge_stats_tostring(stats.emerge)
))