summaryrefslogtreecommitdiff
path: root/api.lua
diff options
context:
space:
mode:
Diffstat (limited to 'api.lua')
-rw-r--r--api.lua51
1 files changed, 51 insertions, 0 deletions
diff --git a/api.lua b/api.lua
new file mode 100644
index 0000000..1c471e1
--- /dev/null
+++ b/api.lua
@@ -0,0 +1,51 @@
+--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
+
+-- Checks if an area has an owner
+function areas.hasOwner(pos)
+ for _, area in pairs(areas.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
+ return true
+ end
+ end
+ return false
+end
+