From 4dacd1059757c12b23fdb88c555692b295c9ce01 Mon Sep 17 00:00:00 2001 From: VorTechnix <45538536+VorTechnix@users.noreply.github.com> Date: Thu, 12 Sep 2024 15:05:57 -0700 Subject: [PATCH] sgrow, srel, sshrink UNSTABLE --- .../commands/selectors/init.lua | 4 +- .../commands/selectors/sgrow.lua | 40 ++++++++ .../commands/selectors/srel.lua | 93 +++++++------------ .../commands/selectors/sshrink.lua | 40 ++++++++ 4 files changed, 118 insertions(+), 59 deletions(-) create mode 100644 worldeditadditions_commands/commands/selectors/sgrow.lua create mode 100644 worldeditadditions_commands/commands/selectors/sshrink.lua diff --git a/worldeditadditions_commands/commands/selectors/init.lua b/worldeditadditions_commands/commands/selectors/init.lua index 5473e03..d1dc356 100644 --- a/worldeditadditions_commands/commands/selectors/init.lua +++ b/worldeditadditions_commands/commands/selectors/init.lua @@ -9,13 +9,15 @@ local wea_cmdpath = worldeditadditions_commands.modpath .. "/commands/selectors/" local weac = worldeditadditions_core -dofile(wea_cmdpath.."srel.lua") dofile(wea_cmdpath.."scentre.lua") dofile(wea_cmdpath.."scloud.lua") +dofile(wea_cmdpath.."sgrow.lua") dofile(wea_cmdpath.."smake.lua") dofile(wea_cmdpath.."spop.lua") dofile(wea_cmdpath.."spush.lua") +dofile(wea_cmdpath.."srel.lua") dofile(wea_cmdpath.."sshift.lua") +dofile(wea_cmdpath.."sshrink.lua") dofile(wea_cmdpath.."sstack.lua") --- DEPRECATED --- diff --git a/worldeditadditions_commands/commands/selectors/sgrow.lua b/worldeditadditions_commands/commands/selectors/sgrow.lua new file mode 100644 index 0000000..0a8863b --- /dev/null +++ b/worldeditadditions_commands/commands/selectors/sgrow.lua @@ -0,0 +1,40 @@ +-- local wea = worldeditadditions +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + + +-- ███████ ██████ ██████ ██████ ██ ██ +-- ██ ██ ██ ██ ██ ██ ██ ██ +-- ███████ ██ ███ ██████ ██ ██ ██ █ ██ +-- ██ ██ ██ ██ ██ ██ ██ ██ ███ ██ +-- ███████ ██████ ██ ██ ██████ ███ ███ + + +worldeditadditions_core.register_command("srel", { + params = "[] [[] [...]]", + description = "Set WorldEdit region position 2 relative to position 1 and player facing.", + privs = { worldedit = true }, + require_pos = 0, + parse = function(params_text) + local ret = wea_c.split(params_text) + if #ret < 1 then return false, "SREL: No params found!" + else return true, ret end + end, + func = function(name, params_text) + local facing = wea_c.player_dir(name) + local min, max = wea_c.parse.directions(params_text, facing) + local pos1 = wea_c.pos.get(name, 1) + local pos2 = wea_c.pos.get(name, 2) + + if not pos2 then wea_c.pos.set(name, 2, pos1) + else pos1, pos2 = Vector3.sort(pos1, pos2) end + + pos1, pos2 = pos1:add(min), pos1:add(max) + + wea_c.pos.set_all(name, {pos1, pos2}) + return true, "Pos1 set to "..pos1..", Pos2 set to "..pos2 + end, +}) + +-- Tests +-- //srel front 5 left 3 y 2 diff --git a/worldeditadditions_commands/commands/selectors/srel.lua b/worldeditadditions_commands/commands/selectors/srel.lua index 75d30d3..214cd82 100644 --- a/worldeditadditions_commands/commands/selectors/srel.lua +++ b/worldeditadditions_commands/commands/selectors/srel.lua @@ -1,58 +1,35 @@ -local wea = worldeditadditions -local wea_c = worldeditadditions_core -local Vector3 = wea_c.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("srel", { - params = " [ [ ]]", - description = "Set WorldEdit region position 2 at set distances along 3 axes.", - privs = { worldedit = true }, - require_pos = 0, - parse = function(params_text) - if params_text:match("([%l%s+-]+%d+)") then return true, params_text - else return false, "No acceptable params found" end - end, - func = function(name, params_text) - local ret = "" - local _, vec = parse_with_name(name,params_text) - if not _ then return false, vec end - - if not worldedit.pos1[name] then - local pos = wea_c.player_vector(name) + Vector3.new(0.5, -0.5, 0.5) - pos = pos:floor() - worldedit.pos1[name] = pos - worldedit.mark_pos1(name) - ret = "position 1 set to "..pos..", " - end - - local p2 = vec + Vector3.clone(worldedit.pos1[name]) - worldedit.pos2[name] = p2 - worldedit.mark_pos2(name) - return true, ret.."position 2 set to "..p2 - end, -}) - --- Tests --- //srel front 5 left 3 y 2 +-- local wea = worldeditadditions +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + + +-- ███████ ██████ ███████ ██ +-- ██ ██ ██ ██ ██ +-- ███████ ██████ █████ ██ +-- ██ ██ ██ ██ ██ +-- ███████ ██ ██ ███████ ███████ + + +worldeditadditions_core.register_command("srel", { + params = "[] [[] [...]]", + description = "Set WorldEdit region position 2 relative to position 1 and player facing.", + privs = { worldedit = true }, + require_pos = 0, + parse = function(params_text) + local ret = wea_c.split(params_text) + if #ret < 1 then return false, "SREL: No params found!" + else return true, ret end + end, + func = function(name, params_text) + local facing = wea_c.player_dir(name) + local vec = wea_c.parse.directions(params_text, facing, true) + local pos1 = wea_c.pos.get(name, 1) + local pos2 = pos1:add(vec) + + wea_c.pos.set_all(name, {pos1, pos2}) + return true, "Pos1 set to "..pos1..", Pos2 set to "..pos2 + end, +}) + +-- Tests +-- //srel front 5 left 3 y 2 diff --git a/worldeditadditions_commands/commands/selectors/sshrink.lua b/worldeditadditions_commands/commands/selectors/sshrink.lua new file mode 100644 index 0000000..4147f68 --- /dev/null +++ b/worldeditadditions_commands/commands/selectors/sshrink.lua @@ -0,0 +1,40 @@ +-- local wea = worldeditadditions +local wea_c = worldeditadditions_core +local Vector3 = wea_c.Vector3 + + +-- ███████ ███████ ██ ██ ██████ ██ ███ ██ ██ ██ +-- ██ ██ ██ ██ ██ ██ ██ ████ ██ ██ ██ +-- ███████ ███████ ███████ ██████ ██ ██ ██ ██ █████ +-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ +-- ███████ ███████ ██ ██ ██ ██ ██ ██ ████ ██ ██ + + +worldeditadditions_core.register_command("srel", { + params = "[] [[] [...]]", + description = "Set WorldEdit region position 2 relative to position 1 and player facing.", + privs = { worldedit = true }, + require_pos = 0, + parse = function(params_text) + local ret = wea_c.split(params_text) + if #ret < 1 then return false, "SREL: No params found!" + else return true, ret end + end, + func = function(name, params_text) + local facing = wea_c.player_dir(name) + local min, max = wea_c.parse.directions(params_text, facing) + local pos1 = wea_c.pos.get(name, 1) + local pos2 = wea_c.pos.get(name, 2) + + if not pos2 then wea_c.pos.set(name, 2, pos1) + else pos1, pos2 = Vector3.sort(pos1, pos2) end + + pos1, pos2 = pos1:add(max), pos1:add(min) + + wea_c.pos.set_all(name, {pos1, pos2}) + return true, "Pos1 set to "..pos1..", Pos2 set to "..pos2 + end, +}) + +-- Tests +-- //srel front 5 left 3 y 2