diff options
Diffstat (limited to 'worldedit_commands/cuboid.lua')
-rw-r--r-- | worldedit_commands/cuboid.lua | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/worldedit_commands/cuboid.lua b/worldedit_commands/cuboid.lua new file mode 100644 index 0000000..1af5b3b --- /dev/null +++ b/worldedit_commands/cuboid.lua @@ -0,0 +1,95 @@ +minetest.register_chatcommand("/outset", { + params = "<amount> [h|v]", + description = "outset the selection", + privs = {worldedit=true}, + func = function(name, param) + local find, _, amount, dir = param:find("^(%d+)[%s+]?([hv]?)$") + + if find == nil then + return false, "invalid usage: " .. param + end + + local pos1 = worldedit.pos1[name] + local pos2 = worldedit.pos2[name] + + if pos1 == nil or pos2 == nil then + return false, + "Undefined region. Region must be defined beforehand." + end + + if dir == "" then + assert(worldedit.cuboid_volumetricexpand(name, amount)) + elseif dir == "h" then + assert(worldedit.cuboid_linealexpand(name, 'x', 1, amount)) + assert(worldedit.cuboid_linealexpand(name, 'x', -1, amount)) + assert(worldedit.cuboid_linealexpand(name, 'z', 1, amount)) + assert(worldedit.cuboid_linealexpand(name, 'z', -1, amount)) + elseif dir == "v" then + assert(worldedit.cuboid_linealexpand(name, 'y', 1, amount)) + assert(worldedit.cuboid_linealexpand(name, 'y', -1, amount)) + else + return false, "Unknown error" + end + + worldedit.marker_update(name) + return true, "Region outset by " .. amount .. " blocks" + end, + } +) + + +minetest.register_chatcommand( + "/shift", + { + params = "<amount> [up|down|left|right|front|back]", + description = "Moves the selection region. Does not move contents.", + privs = {worldedit=true}, + func = function(name, param) + local pos1 = worldedit.pos1[name] + local pos2 = worldedit.pos2[name] + local find, _, amount, direction = param:find("(%d+)%s*(%l*)") + + if find == nil then + worldedit.player_notify(name, "invalid usage: " .. param) + return + end + + if pos1 == nil or pos2 == nil then + worldedit.player_notify(name, + "Undefined region. Region must be defined beforehand.") + return + end + + + end, + } +) + +minetest.register_chatcommand( + "/expand", + { + params = "<amount> [reverse-amount] [up|down|left|right|front|back]", + description = "expand the selection in one or two directions at once", + privs = {worldedit=true}, + func = function(name, param) + local find, _, amount, arg2, arg3 = param:find("(%d+)%s*(%w*)%s*(%l*)") + + if find == nil then + worldedit.player_notify(name, "invalid use: " .. param) + return + end + + if worldedit.pos1[name] == nil or worldedit.pos2[name] == nil then + worldedit.player_notify(name, + "Undefined region. Region must be defined beforehand.") + return + end + + + end, + } +) + + +dofile(minetest.get_modpath("worldedit_commands") .. "/cuboidapi.lua") + |