From 459e15b5c2baa0eea9e6d9a1f91d10c38cd30862 Mon Sep 17 00:00:00 2001 From: Starbeamrainbowlabs Date: Sun, 18 Sep 2022 21:30:28 +0100 Subject: [PATCH] finish upgrading top-level commands --- .../commands/bonemeal.lua | 24 +++++++------ .../commands/convolve.lua | 19 +++++++---- worldeditadditions_commands/commands/copy.lua | 17 +++++----- .../commands/count.lua | 19 +++++++---- worldeditadditions_commands/commands/dome.lua | 17 +++++----- .../commands/ellipsoid.lua | 34 +++++++++++-------- .../commands/ellipsoid2.lua | 16 +++++---- .../commands/erode.lua | 16 +++++---- .../commands/fillcaves.lua | 17 +++++++--- .../commands/floodfill.lua | 18 +++++++--- .../commands/forest.lua | 24 +++++++------ 11 files changed, 131 insertions(+), 90 deletions(-) diff --git a/worldeditadditions_commands/commands/bonemeal.lua b/worldeditadditions_commands/commands/bonemeal.lua index daa170b..214d4c5 100644 --- a/worldeditadditions_commands/commands/bonemeal.lua +++ b/worldeditadditions_commands/commands/bonemeal.lua @@ -1,5 +1,6 @@ -local we_c = worldeditadditions_commands local wea = worldeditadditions +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 -- ██████ ██████ ███ ██ ███████ ███ ███ ███████ █████ ██ -- ██ ██ ██ ██ ████ ██ ██ ████ ████ ██ ██ ██ ██ @@ -16,20 +17,20 @@ worldeditadditions_core.register_command("bonemeal", { params_text = "1" end - local parts = wea.split_shell(params_text) + local parts = wea_c.split_shell(params_text) local strength = 1 local chance = 1 local node_names = {} -- An empty table means all nodes if #parts >= 1 then - strength = tonumber(wea.trim(table.remove(parts, 1))) + strength = tonumber(wea_c.trim(table.remove(parts, 1))) if not strength then return false, "Invalid strength value (value must be an integer)" end end if #parts >= 1 then - chance = worldeditadditions.parse.chance(table.remove(parts, 1)) + chance = wea_c.parse.chance(table.remove(parts, 1)) if not chance then return false, "Invalid chance value (must be a positive integer)" end @@ -57,21 +58,22 @@ worldeditadditions_core.register_command("bonemeal", { return worldedit.volume(worldedit.pos1[name], worldedit.pos2[name]) / 2 end, func = function(name, strength, chance, node_names) - local start_time = worldeditadditions.get_ms_time() - local success, nodes_bonemealed, candidates = worldeditadditions.bonemeal( - worldedit.pos1[name], worldedit.pos2[name], + local start_time = wea_c.get_ms_time() + local pos1, pos2 = Vector3.sort(worldedit.pos1[name], worldedit.pos2[name]) + local success, nodes_bonemealed, candidates = wea.bonemeal( + pos1, pos2, strength, chance, node_names ) -- nodes_bonemealed is an error message here if success == false if not success then return success, nodes_bonemealed end - local percentage = worldeditadditions.round((nodes_bonemealed / candidates)*100, 2) - local time_taken = worldeditadditions.get_ms_time() - start_time + local percentage = wea_c.round((nodes_bonemealed / candidates)*100, 2) + local time_taken = wea_c.get_ms_time() - start_time -- Avoid nan% - since if there aren't any candidates then nodes_bonemealed will be 0 too if candidates == 0 then percentage = 0 end - minetest.log("action", name .. " used //bonemeal at "..worldeditadditions.vector.tostring(worldedit.pos1[name]).." - "..worldeditadditions.vector.tostring(worldedit.pos2[name])..", bonemealing " .. nodes_bonemealed.." nodes (out of "..candidates.." nodes) at strength "..strength.." in "..time_taken.."s") - return true, nodes_bonemealed.." out of "..candidates.." (~"..percentage.."%) candidates bonemealed in "..worldeditadditions.format.human_time(time_taken) + minetest.log("action", name .. " used //bonemeal at "..pos1.." - "..pos2..", bonemealing " .. nodes_bonemealed.." nodes (out of "..candidates.." nodes) at strength "..strength.." in "..time_taken.."s") + return true, nodes_bonemealed.." out of "..candidates.." (~"..percentage.."%) candidates bonemealed in "..wea_c.format.human_time(time_taken) end }) diff --git a/worldeditadditions_commands/commands/convolve.lua b/worldeditadditions_commands/commands/convolve.lua index 21de435..b10cecc 100644 --- a/worldeditadditions_commands/commands/convolve.lua +++ b/worldeditadditions_commands/commands/convolve.lua @@ -1,5 +1,6 @@ local wea = worldeditadditions -local Vector3 = wea.Vector3 +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 -- ██████ ██████ ███ ██ ██ ██ ██████ ██ ██ ██ ███████ -- ██ ██ ██ ████ ██ ██ ██ ██ ██ ██ ██ ██ ██ @@ -15,7 +16,7 @@ worldeditadditions_core.register_command("convolve", { if not params_text then params_text = "" end -- local parts = wea.split(params_text, "%s+", false) - local parts = wea.split_shell(params_text) + local parts = wea_c.split_shell(params_text) local kernel_name = "gaussian" local width = 5 @@ -26,7 +27,7 @@ worldeditadditions_core.register_command("convolve", { kernel_name = parts[1] end if #parts >= 2 then - local parts_dimension = wea.split(parts[2], ",%s*", false) + local parts_dimension = wea_c.split(parts[2], ",%s*", false) width = tonumber(parts_dimension[1]) if not width then return false, "Error: Invalid width (it must be a positive odd integer)." @@ -53,9 +54,13 @@ worldeditadditions_core.register_command("convolve", { return worldedit.volume(worldedit.pos1[name], worldedit.pos2[name]) end, func = function(name, kernel_name, kernel_width, kernel_height, sigma) - local start_time = wea.get_ms_time() + local start_time = wea_c.get_ms_time() - local success, kernel = wea.get_conv_kernel(kernel_name, kernel_width, kernel_height, sigma) + local success, kernel = wea_c.get_conv_kernel( + kernel_name, + kernel_width, kernel_height, + sigma + ) if not success then return success, kernel end local kernel_size = Vector3.new( @@ -76,10 +81,10 @@ worldeditadditions_core.register_command("convolve", { ) if not success then return success, stats end - local time_taken = wea.get_ms_time() - start_time + local time_taken = wea_c.get_ms_time() - start_time minetest.log("action", name.." used //convolve at "..pos1.." - "..pos2..", adding "..stats.added.." nodes and removing "..stats.removed.." nodes in "..time_taken.."s") - return true, "Added "..stats.added.." and removed "..stats.removed.." nodes in " .. wea.format.human_time(time_taken) + return true, "Added "..stats.added.." and removed "..stats.removed.." nodes in " .. wea_c.format.human_time(time_taken) end }) diff --git a/worldeditadditions_commands/commands/copy.lua b/worldeditadditions_commands/commands/copy.lua index 801256f..e8e8d8e 100644 --- a/worldeditadditions_commands/commands/copy.lua +++ b/worldeditadditions_commands/commands/copy.lua @@ -1,10 +1,11 @@ +local wea_c = worldeditadditions_core local wea = worldeditadditions -local Vector3 = wea.Vector3 +local Vector3 = wea_c.Vector3 local function parse_stage2(name, parts) - local success, vpos1, vpos2 = wea.parse.axes( + local success, vpos1, vpos2 = wea_c.parse.axes( parts, - wea.player_dir(name) + wea_c.player_dir(name) ) if not success then return success, vpos1 end @@ -32,7 +33,7 @@ worldeditadditions_core.register_command("copy+", { -- TODO: Make this an overri parse = function(params_text) if not params_text then params_text = "" end - local parts = wea.split_shell(params_text) + local parts = wea_c.split_shell(params_text) return true, parts end, @@ -40,7 +41,7 @@ worldeditadditions_core.register_command("copy+", { -- TODO: Make this an overri return worldedit.volume(worldedit.pos1[name], worldedit.pos2[name]) end, func = function(name, parts) - local start_time = wea.get_ms_time() + local start_time = wea_c.get_ms_time() local success_a, copy_offset = parse_stage2(name, parts) if not success_a then return success_a, copy_offset end @@ -57,10 +58,10 @@ worldeditadditions_core.register_command("copy+", { -- TODO: Make this an overri ) if not success_b then return success_b, nodes_modified end - local time_taken = wea.get_ms_time() - start_time + local time_taken = wea_c.get_ms_time() - start_time - minetest.log("action", name.." used //copy from "..source_pos1.." - "..source_pos2.." to "..target_pos1.." - "..target_pos2..", modifying "..nodes_modified.." nodes in "..wea.format.human_time(time_taken)) - return true, nodes_modified.." nodes copied using offset "..copy_offset.." in "..wea.format.human_time(time_taken) + minetest.log("action", name.." used //copy from "..source_pos1.." - "..source_pos2.." to "..target_pos1.." - "..target_pos2..", modifying "..nodes_modified.." nodes in "..wea_c.format.human_time(time_taken)) + return true, nodes_modified.." nodes copied using offset "..copy_offset.." in "..wea_c.format.human_time(time_taken) end }) diff --git a/worldeditadditions_commands/commands/count.lua b/worldeditadditions_commands/commands/count.lua index a418dbd..d5c7b29 100644 --- a/worldeditadditions_commands/commands/count.lua +++ b/worldeditadditions_commands/commands/count.lua @@ -1,3 +1,7 @@ +local wea_c = worldeditadditions_core +local wea = worldeditadditions +local Vector3 = wea_c.Vector3 + -- ██████ ██████ ██ ██ ███ ██ ████████ -- ██ ██ ██ ██ ██ ████ ██ ██ -- ██ ██ ██ ██ ██ ██ ██ ██ ██ @@ -17,21 +21,22 @@ worldeditadditions_core.register_command("count", { return worldedit.volume(worldedit.pos1[name], worldedit.pos2[name]) end, func = function(name) - local start_time = worldeditadditions.get_ms_time() - - local success, counts, total = worldeditadditions.count( - worldedit.pos1[name], worldedit.pos2[name], + local start_time = wea_c.get_ms_time() + local pos1, pos2 = Vector3.sort(worldedit.pos1[name], worldedit.pos2[name]) + local success, counts, total = wea.count( + pos1, pos2, true ) + if not success then return success, counts end - local result = worldeditadditions.format.make_ascii_table(counts).."\n".. + local result = wea_c.format.make_ascii_table(counts).."\n".. string.rep("=", 6 + #tostring(total) + 6).."\n".. "Total "..total.." nodes\n" - local time_taken = worldeditadditions.get_ms_time() - start_time + local time_taken = wea_c.get_ms_time() - start_time - minetest.log("action", name.." used //count at "..worldeditadditions.vector.tostring(worldedit.pos1[name]).." - "..worldeditadditions.vector.tostring(worldedit.pos2[name])..", counting "..total.." nodes in "..worldeditadditions.format.human_time(time_taken)) + minetest.log("action", name.." used //count at "..pos1.." - "..pos2..", counting "..total.." nodes in "..wea_c.format.human_time(time_taken)) return true, result end }) diff --git a/worldeditadditions_commands/commands/dome.lua b/worldeditadditions_commands/commands/dome.lua index 054d2dd..5df8312 100644 --- a/worldeditadditions_commands/commands/dome.lua +++ b/worldeditadditions_commands/commands/dome.lua @@ -1,10 +1,11 @@ +local wea_c = worldeditadditions_core local wea = worldeditadditions -local Vector3 = wea.Vector3 +local Vector3 = wea_c.Vector3 local function parse_stage2(name, parts) local result = Vector3.new() for i,axis_name in ipairs(parts) do - local success, result_this = wea.parse.axis_name(axis_name, wea.player_dir(name)) + local success, result_this = wea_c.parse.axis_name(axis_name, wea_c.player_dir(name)) if not success then return success, result_this end result = result + result_this @@ -33,7 +34,7 @@ worldeditadditions_core.register_command("dome+", { -- TODO: Make this an overri parse = function(params_text) if not params_text then params_text = "" end - local parts = wea.split_shell(params_text) + local parts = wea_c.split_shell(params_text) if #parts < 2 then return false, "Error: Not enough arguments (see /help /dome for usage information)." @@ -57,7 +58,7 @@ worldeditadditions_core.register_command("dome+", { -- TODO: Make this an overri hollow = true table.remove(parts, #parts) end - local axes = wea.table.shallowcopy(parts) + local axes = wea_c.table.shallowcopy(parts) table.remove(axes, 1) table.remove(axes, 1) @@ -71,7 +72,7 @@ worldeditadditions_core.register_command("dome+", { -- TODO: Make this an overri return 4/3 * math.pi * radius * radius * radius end, func = function(name, radius, replace_node, axes, hollow) - local start_time = wea.get_ms_time() + local start_time = wea_c.get_ms_time() local success_a, pointing_dir = parse_stage2(name, axes) if not success_a then return success_a, pointing_dir end @@ -87,10 +88,10 @@ worldeditadditions_core.register_command("dome+", { -- TODO: Make this an overri ) if not success_b then return success_b, nodes_replaced end - local time_taken = wea.get_ms_time() - start_time + local time_taken = wea_c.get_ms_time() - start_time - minetest.log("action", name.." used //dome+ at "..pos.." with a radius of "..tostring(radius)..", modifying "..nodes_replaced.." nodes in "..wea.format.human_time(time_taken)) - return true, nodes_replaced.." nodes replaced "..wea.format.human_time(time_taken) + minetest.log("action", name.." used //dome+ at "..pos.." with a radius of "..tostring(radius)..", modifying "..nodes_replaced.." nodes in "..wea_c.format.human_time(time_taken)) + return true, nodes_replaced.." nodes replaced "..wea_c.format.human_time(time_taken) end }) diff --git a/worldeditadditions_commands/commands/ellipsoid.lua b/worldeditadditions_commands/commands/ellipsoid.lua index 2a71e6a..7973dbd 100644 --- a/worldeditadditions_commands/commands/ellipsoid.lua +++ b/worldeditadditions_commands/commands/ellipsoid.lua @@ -3,9 +3,11 @@ -- █████ ██ ██ ██ ██████ ███████ ██ ██ ██ ██ ██ -- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -- ███████ ███████ ███████ ██ ██ ███████ ██████ ██ ██████ -local wea = worldeditadditions +local wea_c = worldeditadditions +local Vector3 = wea_c.Vector3 + local function parse_params_ellipsoid(params_text) - local parts = wea.split_shell(params_text) + local parts = wea_c.split_shell(params_text) if #parts < 4 then return false, "Error: Not enough arguments. Expected \" [h[ollow]]\"." @@ -15,7 +17,7 @@ local function parse_params_ellipsoid(params_text) if not radius then return false, "Error: 3 radii must be specified." end - wea.vector.abs(radius) + wea_c.vector.abs(radius) local replace_node = worldedit.normalize_nodename(parts[4]) if not replace_node then @@ -37,18 +39,19 @@ worldeditadditions_core.register_command("ellipsoid", { require_pos = 1, parse = function(params_text) local values = {parse_params_ellipsoid(params_text)} - return wea.table.unpack(values) + return wea_c.table.unpack(values) end, nodes_needed = function(name, target_node, radius) return math.ceil(4/3 * math.pi * radius.x * radius.y * radius.z) end, func = function(name, target_node, radius, hollow) - local start_time = worldeditadditions.get_ms_time() - local replaced = worldeditadditions.ellipsoid(worldedit.pos1[name], radius, target_node, hollow) - local time_taken = worldeditadditions.get_ms_time() - start_time + local start_time = wea_c.get_ms_time() + local pos1 = Vector3.clone(worldedit.pos1[name]) + local replaced = worldeditadditions.ellipsoid(pos1, radius, target_node, hollow) + local time_taken = wea_c.get_ms_time() - start_time - minetest.log("action", name .. " used //ellipsoid at " .. worldeditadditions.vector.tostring(worldedit.pos1[name]) .. ", replacing " .. replaced .. " nodes in " .. time_taken .. "s") - return true, replaced .. " nodes replaced in " .. worldeditadditions.format.human_time(time_taken) + minetest.log("action", name.." used //ellipsoid at "..pos1..", replacing " .. replaced .. " nodes in " .. time_taken .. "s") + return true, replaced .. " nodes replaced in " .. wea_c.format.human_time(time_taken) end }) @@ -60,17 +63,18 @@ worldeditadditions_core.register_command("hollowellipsoid", { require_pos = 1, parse = function(params_text) local values = {parse_params_ellipsoid(params_text)} - return wea.table.unpack(values) + return wea_c.table.unpack(values) end, nodes_needed = function(name, target_node, radius) return math.ceil(4/3 * math.pi * radius.x * radius.y * radius.z) end, func = function(name, target_node, radius) - local start_time = worldeditadditions.get_ms_time() - local replaced = worldeditadditions.ellipsoid(worldedit.pos1[name], radius, target_node, true) - local time_taken = worldeditadditions.get_ms_time() - start_time + local start_time = wea_c.get_ms_time() + local pos1 = Vector3.clone(worldedit.pos1[name]) + local replaced = worldeditadditions.ellipsoid(pos1, radius, target_node, true) + local time_taken = wea_c.get_ms_time() - start_time - minetest.log("action", name .. " used //hollowellipsoid at " .. worldeditadditions.vector.tostring(worldedit.pos1[name]) .. ", replacing " .. replaced .. " nodes in " .. time_taken .. "s") - return true, replaced .. " nodes replaced in " .. worldeditadditions.format.human_time(time_taken) + minetest.log("action", name.." used //hollowellipsoid at "..pos1..", replacing " .. replaced .. " nodes in " .. time_taken .. "s") + return true, replaced .. " nodes replaced in " .. wea_c.format.human_time(time_taken) end }) diff --git a/worldeditadditions_commands/commands/ellipsoid2.lua b/worldeditadditions_commands/commands/ellipsoid2.lua index 257ed5b..c9c0a9b 100644 --- a/worldeditadditions_commands/commands/ellipsoid2.lua +++ b/worldeditadditions_commands/commands/ellipsoid2.lua @@ -3,7 +3,9 @@ -- █████ ██ ██ ██ ██████ ███████ ██ ██ ██ ██ ██ -- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -- ███████ ███████ ███████ ██ ██ ███████ ██████ ██ ██████ +local wea_c = worldeditadditions_core local wea = worldeditadditions +local Vector3 = wea_c.Vector3 worldeditadditions_core.register_command("ellipsoid2", { params = "[ [h[ollow]]]", @@ -15,7 +17,7 @@ worldeditadditions_core.register_command("ellipsoid2", { params_text = "dirt" end - local parts = wea.split_shell(params_text) + local parts = wea_c.split_shell(params_text) local replace_node = worldedit.normalize_nodename(parts[1]) @@ -31,21 +33,21 @@ worldeditadditions_core.register_command("ellipsoid2", { return true, replace_node, hollow end, nodes_needed = function(name, target_node) - local pos1, pos2 = worldedit.sort_pos(worldedit.pos1[name], worldedit.pos2[name]) + local pos1, pos2 = Vector3.sort(worldedit.pos1[name], worldedit.pos2[name]) return math.ceil(4/3 * math.pi * (pos2.x - pos1.x)/2 * (pos2.y - pos1.y)/2 * (pos2.z - pos1.z)/2) end, func = function(name, target_node, radius, hollow) - local start_time = wea.get_ms_time() - local pos1, pos2 = wea.Vector3.sort(worldedit.pos1[name], worldedit.pos2[name]) + local start_time = wea_c.get_ms_time() + local pos1, pos2 = Vector3.sort(worldedit.pos1[name], worldedit.pos2[name]) local replaced = wea.ellipsoid2( pos1, pos2, target_node, hollow ) - local time_taken = wea.get_ms_time() - start_time + local time_taken = wea_c.get_ms_time() - start_time - minetest.log("action", name .. " used //ellipsoid2 at "..pos1.." - "..pos2..", replacing " .. replaced .. " nodes in " .. time_taken .. "s") - return true, replaced .. " nodes replaced in " .. wea.format.human_time(time_taken) + minetest.log("action", name.." used //ellipsoid2 at "..pos1.." - "..pos2..", replacing "..replaced.." nodes in "..time_taken.."s") + return true, replaced.." nodes replaced in "..wea_c.format.human_time(time_taken) end }) diff --git a/worldeditadditions_commands/commands/erode.lua b/worldeditadditions_commands/commands/erode.lua index 5dc755b..f688583 100644 --- a/worldeditadditions_commands/commands/erode.lua +++ b/worldeditadditions_commands/commands/erode.lua @@ -1,3 +1,6 @@ +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + -- ███████ ██████ ██████ ██████ ███████ -- ██ ██ ██ ██ ██ ██ ██ ██ -- █████ ██████ ██ ██ ██ ██ █████ @@ -22,7 +25,7 @@ worldeditadditions_core.register_command("erode", { return false, "Failed to split params_text into 2 parts (this is probably a bug)" end - local success, map = worldeditadditions.parse.map(params) + local success, map = wea_c.parse.map(params) if not success then return success, map end return true, algorithm, map end, @@ -30,15 +33,16 @@ worldeditadditions_core.register_command("erode", { return worldedit.volume(worldedit.pos1[name], worldedit.pos2[name]) end, func = function(name, algorithm, params) - local start_time = worldeditadditions.get_ms_time() + local start_time = wea_c.get_ms_time() + local pos1, pos2 = Vector3.sort(worldedit.pos1[name], worldedit.pos2[name]) local success, msg, stats = worldeditadditions.erode.run( - worldedit.pos1[name], worldedit.pos2[name], + pos1, pos2, algorithm, params ) if not success then return success, msg end - local time_taken = worldeditadditions.get_ms_time() - start_time + local time_taken = wea_c.get_ms_time() - start_time - minetest.log("action", name .. " used //erode "..algorithm.." at " .. worldeditadditions.vector.tostring(worldedit.pos1[name]) .. ", adding " .. stats.added .. " nodes and removing " .. stats.removed .. " nodes in " .. time_taken .. "s") - return true, msg.."\n"..stats.added .. " nodes added and " .. stats.removed .. " nodes removed in " .. worldeditadditions.format.human_time(time_taken) + minetest.log("action", name.." used //erode "..algorithm.." at "..pos1.." - "..pos2..", adding "..stats.added.." nodes and removing "..stats.removed.." nodes in "..time_taken.."s") + return true, msg.."\n"..stats.added.." nodes added and "..stats.removed.." nodes removed in "..wea_c.format.human_time(time_taken) end }) diff --git a/worldeditadditions_commands/commands/fillcaves.lua b/worldeditadditions_commands/commands/fillcaves.lua index 743221f..25f1f1f 100644 --- a/worldeditadditions_commands/commands/fillcaves.lua +++ b/worldeditadditions_commands/commands/fillcaves.lua @@ -1,3 +1,6 @@ +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + -- ███████ ██ ██ ██ ██████ █████ ██ ██ ███████ ███████ -- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -- █████ ██ ██ ██ ██ ███████ ██ ██ █████ ███████ @@ -23,14 +26,18 @@ worldeditadditions_core.register_command("fillcaves", { return worldedit.volume(worldedit.pos1[name], worldedit.pos2[name]) end, func = function(name, replace_node) - local start_time = worldeditadditions.get_ms_time() + local start_time = wea_c.get_ms_time() + local pos1, pos2 = Vector3.sort(worldedit.pos1[name], worldedit.pos2[name]) - local success, stats = worldeditadditions.fillcaves(worldedit.pos1[name], worldedit.pos2[name], replace_node) + local success, stats = worldeditadditions.fillcaves( + pos1, pos2, + replace_node + ) if not success then return success, stats end - local time_taken = worldeditadditions.get_ms_time() - start_time + local time_taken = wea_c.get_ms_time() - start_time - minetest.log("action", name .. " used //fillcaves at " .. worldeditadditions.vector.tostring(worldedit.pos1[name]) .. ", replacing " .. stats.replaced .. " nodes in " .. time_taken .. "s") - return true, stats.replaced .. " nodes replaced in " .. worldeditadditions.format.human_time(time_taken) + minetest.log("action", name .. " used //fillcaves at "..pos1.." - "..pos2..", replacing "..stats.replaced.." nodes in "..time_taken.."s") + return true, stats.replaced.." nodes replaced in "..wea_c.format.human_time(time_taken) end }) diff --git a/worldeditadditions_commands/commands/floodfill.lua b/worldeditadditions_commands/commands/floodfill.lua index 08ea547..7a7780b 100644 --- a/worldeditadditions_commands/commands/floodfill.lua +++ b/worldeditadditions_commands/commands/floodfill.lua @@ -1,3 +1,6 @@ +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + -- ███████ ██ ██████ ██████ ██████ ███████ ██ ██ ██ -- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ -- █████ ██ ██ ██ ██ ██ ██ ██ █████ ██ ██ ██ @@ -34,15 +37,20 @@ worldeditadditions_core.register_command("floodfill", { return math.ceil(((4 * math.pi * (tonumber(radius) ^ 3)) / 3) / 2) end, func = function(name, replace_node, radius) - local start_time = worldeditadditions.get_ms_time() - local nodes_replaced = worldeditadditions.floodfill(worldedit.pos1[name], radius, replace_node) - local time_taken = worldeditadditions.get_ms_time() - start_time + local start_time = wea_c.get_ms_time() + local pos1 = Vector3.clone(worldedit.pos1[name]) + local nodes_replaced = worldeditadditions.floodfill( + pos1, + radius, + replace_node + ) + local time_taken = wea_c.get_ms_time() - start_time if nodes_replaced == false then return false, "Error: The search node is the same as the replace node." end - minetest.log("action", name .. " used //floodfill at " .. worldeditadditions.vector.tostring(worldedit.pos1[name]) .. ", replacing " .. nodes_replaced .. " nodes in " .. time_taken .. "s") - return true, nodes_replaced .. " nodes replaced in " .. worldeditadditions.format.human_time(time_taken) + minetest.log("action", name.." used //floodfill at "..pos1..", replacing " .. nodes_replaced.." nodes in "..time_taken.."s") + return true, nodes_replaced.." nodes replaced in "..wea_c.format.human_time(time_taken) end }) diff --git a/worldeditadditions_commands/commands/forest.lua b/worldeditadditions_commands/commands/forest.lua index 8b944c9..d770ddb 100644 --- a/worldeditadditions_commands/commands/forest.lua +++ b/worldeditadditions_commands/commands/forest.lua @@ -1,4 +1,5 @@ -local wea = worldeditadditions +local wea_c = worldeditadditions +local Vector3 = wea_c.Vector3 -- ███████ ██████ ██████ ███████ ███████ ████████ -- ██ ██ ██ ██ ██ ██ ██ ██ @@ -19,12 +20,12 @@ worldeditadditions_core.register_command("forest", { params_text = params_text:sub(#match_start + 1) -- everything starts at 1 in Lua :-/ end - local success, sapling_list = wea.parse.weighted_nodes( - wea.split_shell(params_text), + local success, sapling_list = wea_c.parse.weighted_nodes( + wea_c.split_shell(params_text), false, function(name) return worldedit.normalize_nodename( - wea.normalise_saplingname(name) + wea_c.normalise_saplingname(name) ) end ) @@ -33,26 +34,27 @@ worldeditadditions_core.register_command("forest", { end, nodes_needed = function(name) -- //overlay only modifies up to 1 node per column in the selected region - local pos1, pos2 = worldedit.sort_pos(worldedit.pos1[name], worldedit.pos2[name]) + local pos1, pos2 = Vector3.sort(worldedit.pos1[name], worldedit.pos2[name]) return (pos2.x - pos1.x) * (pos2.y - pos1.y) end, func = function(name, density, sapling_list) - local start_time = wea.get_ms_time() - local success, stats = wea.forest( - worldedit.pos1[name], worldedit.pos2[name], + local start_time = wea_c.get_ms_time() + local pos1, pos2 = Vector3.sort(worldedit.pos1[name], worldedit.pos2[name]) + local success, stats = worldeditadditions.forest( + pos1, pos2, density, sapling_list ) if not success then return success, stats end - local time_taken = wea.format.human_time(wea.get_ms_time() - start_time) + local time_taken = wea_c.format.human_time(wea_c.get_ms_time() - start_time) - local distribution_display = wea.format.node_distribution( + local distribution_display = wea_c.format.node_distribution( stats.placed, stats.successes, false -- no grand total at the bottom ) - minetest.log("action", name.." used //forest at "..wea.vector.tostring(worldedit.pos1[name]).." - "..wea.vector.tostring(worldedit.pos2[name])..", "..stats.successes.." trees placed, averaging "..stats.attempts_avg.." growth attempts / tree and "..stats.failures.." failed attempts in "..time_taken) + minetest.log("action", name.." used //forest at "..pos1.." - "..pos2..", "..stats.successes.." trees placed, averaging "..stats.attempts_avg.." growth attempts / tree and "..stats.failures.." failed attempts in "..time_taken) return true, distribution_display.."\n=========================\n"..stats.successes.." trees placed, averaging "..stats.attempts_avg.." growth attempts / tree and "..stats.failures.." failed attempts in "..time_taken end })