From cec73f91da32e2a2442121d5a71dc89d34130797 Mon Sep 17 00:00:00 2001 From: VorTechnix <45538536+VorTechnix@users.noreply.github.com> Date: Thu, 20 Jul 2023 10:47:56 -0700 Subject: [PATCH] updated sshift --- .../commands/selectors/sshift.lua | 41 +++++-------------- 1 file changed, 11 insertions(+), 30 deletions(-) diff --git a/worldeditadditions_commands/commands/selectors/sshift.lua b/worldeditadditions_commands/commands/selectors/sshift.lua index 5ce1b54..9e9d54b 100644 --- a/worldeditadditions_commands/commands/selectors/sshift.lua +++ b/worldeditadditions_commands/commands/selectors/sshift.lua @@ -8,48 +8,29 @@ local Vector3 = worldeditadditions.Vector3 -- ██ ██ ██ ██ ██ ██ ██ -- ███████ ███████ ██ ██ ██ ██ ██ -local function parse_with_name(name,args) - local vec, tmp = Vector3.new(0, 0, 0), {} - local find, _, i = {}, 0, 0 - repeat - _, i, tmp.proc = args:find("([%l%s+-]+%d+)%s*", i) - if tmp.proc:match("[xyz]") then - tmp.ax = tmp.proc:match("[xyz]") - tmp.dir = tonumber(tmp.proc:match("[+-]?%d+")) * (tmp.proc:match("-%l+") and -1 or 1) - else - tmp.ax, _ = wea_c.dir_to_xyz(name, tmp.proc:match("%l+")) - if not tmp.ax then return false, _ end - tmp.dir = tonumber(tmp.proc:match("[+-]?%d+")) * (tmp.proc:match("-%l+") and -1 or 1) * _ - end - vec[tmp.ax] = tmp.dir - until not args:find("([%l%s+-]+%d+)%s*", i) - return true, vec -end - worldeditadditions_core.register_command("sshift", { params = " [ [ ]]", description = "Shift the WorldEdit region in 3 dimensions.", privs = { worldedit = true }, require_pos = 2, parse = function(params_text) - if params_text:match("([%l%s+-]+%d+)") then return true, params_text - else return false, "No acceptable params found" end + return true, wea_c.split(params_text, "%s") end, func = function(name, params_text) - local _, vec = parse_with_name(name,params_text) - if not _ then return false, vec end + local facing = wea_c.player_dir(name) + local vec, err = wea_c.parse.axes_multi(params_text, facing, "sum") + if err then return false, err end -- Error check before proceeding. + local positions = wea_c.pos.get_all(name) - local pos1 = vec:add(worldedit.pos1[name]) - worldedit.pos1[name] = pos1 - worldedit.mark_pos1(name) - - local pos2 = vec:add(worldedit.pos2[name]) - worldedit.pos2[name] = pos2 - worldedit.mark_pos2(name) + wea_c.pos.set(name, 1, positions[1] + vec) + wea_c.pos.set(name, 2, positions[2] + vec) return true, "Region shifted by " .. (vec.x + vec.y + vec.z) .. " nodes." end, }) +-- Register "shift" alias +wea_c.register_alias("shift", "sshift", true) + -- Tests --- //srel front 5 left 3 y 2 +-- //sshift front 5 left 3 y 2