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") + | 
