diff --git a/CHANGELOG.md b/CHANGELOG.md index aef94c5..5bd28a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,7 +11,7 @@ Note to self: See the bottom of this file for the release template text. - `//sculpt`: - Fix undefined `default` brush - Change defaults to `circle`, `height=1`, and `brushsize=8`. - - **TODO:** change ordering to put `height` after `brushsize` instead of the other way around + - Change argument ordering to put `height` after `brushsize` instead of the other way around - Commands that modify the terrain now ignore liquids - `//hollow`: Fix safe region bug - Significant backend refactoring to tidy things up diff --git a/worldeditadditions/lib/sculpt/apply.lua b/worldeditadditions/lib/sculpt/apply.lua index 8af9a5d..e9eaf6b 100644 --- a/worldeditadditions/lib/sculpt/apply.lua +++ b/worldeditadditions/lib/sculpt/apply.lua @@ -5,10 +5,10 @@ local Vector3 = wea_c.Vector3 --- Applies the given brush with the given height and size to the given position. -- @param pos1 Vector3 The position at which to apply the brush. -- @param brush_name string The name of the brush to apply. --- @param height number The height of the brush application. -- @param brush_size Vector3 The size of the brush application. Values are interpreted on the X/Y coordinates, and NOT X/Z! +-- @param height number The height of the brush application. -- @returns bool, string|{ added: number, removed: number } A bool indicating whether the operation was successful or not, followed by either an error message as a string (if it was not successful) or a table of statistics (if it was successful). -local function apply(pos1, brush_name, height, brush_size) +local function apply(pos1, brush_name, brush_size, height) -- 1: Get & validate brush local success, brush, brush_size_actual = wea.sculpt.make_brush(brush_name, brush_size) if not success then return success, brush end diff --git a/worldeditadditions_commands/commands/sculpt.lua b/worldeditadditions_commands/commands/sculpt.lua index a61549e..f25fe37 100644 --- a/worldeditadditions_commands/commands/sculpt.lua +++ b/worldeditadditions_commands/commands/sculpt.lua @@ -9,7 +9,7 @@ local Vector3 = wea_c.Vector3 -- ██ ██ ██ ██ ██ ██ ██ -- ███████ ██████ ██████ ███████ ██ ██ worldeditadditions_core.register_command("sculpt", { - params = "[ [ []]]", + params = "[ [ []]]", description = "Applies a sculpting brush to the terrain with a given height. See //sculptlist to list all available brushes. Note that while the brush size is configurable, the actual brush size you end up with may be slightly different to that which you request due to brush size restrictions.", privs = { worldedit = true }, require_pos = 1, @@ -21,8 +21,8 @@ worldeditadditions_core.register_command("sculpt", { local parts = wea_c.split_shell(params_text) local brush_name = "circle" - local height = 1 local brush_size = 8 + local height = 1 if #parts >= 1 then brush_name = table.remove(parts, 1) @@ -30,24 +30,25 @@ worldeditadditions_core.register_command("sculpt", { return false, "A brush with the name '"..brush_name.."' doesn't exist. Try using //sculptlist to list all available brushes." end end - if #parts >= 1 then - height = tonumber(table.remove(parts, 1)) - if not height then - return false, "Invalid height value (must be an integer - negative values lower terrain instead of raising it)" - end - end if #parts >= 1 then brush_size = tonumber(table.remove(parts, 1)) if not brush_size or brush_size < 1 then return false, "Invalid brush size. Brush sizes must be a positive integer." end end + if #parts >= 1 then + height = tonumber(table.remove(parts, 1)) + if not height then + return false, + "Invalid height value (must be an integer - negative values lower terrain instead of raising it)" + end + end brush_size = Vector3.new(brush_size, brush_size, 0):floor() - return true, brush_name, math.floor(height), brush_size + return true, brush_name, brush_size, math.floor(height) end, - nodes_needed = function(name, brush_name, height, brush_size) + nodes_needed = function(name, brush_name, brush_size, height) local success, brush, size_actual = wea.sculpt.make_brush(brush_name, brush_size) if not success then return 0 end @@ -60,13 +61,13 @@ worldeditadditions_core.register_command("sculpt", { return size_actual.x * size_actual.y * range_nodes end, - func = function(name, brush_name, height, brush_size) + func = function(name, brush_name, brush_size, height) local start_time = wea_c.get_ms_time() local pos1 = wea_c.Vector3.clone(worldedit.pos1[name]) local success, stats = wea.sculpt.apply( pos1, - brush_name, height, brush_size + brush_name, brush_size, height ) if not success then return success, stats.added end