summaryrefslogtreecommitdiff
path: root/worldedit_commands/cuboid.lua
blob: 1af5b3be3855c5543d7acc932d66a87985740c29 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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")