summaryrefslogtreecommitdiff
path: root/api.lua
blob: 94042419ac2771e808eeb9f4d4d1702390b17448 (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
--TODO Less code duplication

-- Checks if the area is unprotected or owned by you
function areas:canInteract(pos, name)
	if minetest.check_player_privs(name, {areas=true}) then
		return true
	end
	local owned = false
	for _, area in pairs(self.areas) do
		p1, p2 = area.pos1, area.pos2
		if pos.x >= p1.x and pos.x <= p2.x and
		   pos.y >= p1.y and pos.y <= p2.y and
		   pos.z >= p1.z and pos.z <= p2.z then
			if area.owner == name then
				return true
			else
				owned = true
			end
		end
	end
	return not owned
end

-- Returns a table (list) of all players that own an area
function areas:getNodeOwners(pos)
	local owners = {}
	for _, area in pairs(self.areas) do
		if pos.x >= area.pos1.x and pos.x <= area.pos2.x and
		   pos.y >= area.pos1.y and pos.y <= area.pos2.y and
		   pos.z >= area.pos1.z and pos.z <= area.pos2.z then
			if area.owner ~= nil then
				table.insert(owners, area.owner)
			end
		end
	end
	return owners
end