diff options
author | ShadowNinja <noreply@gmail.com> | 2013-09-02 19:16:14 -0400 |
---|---|---|
committer | ShadowNinja <noreply@gmail.com> | 2013-09-02 19:16:14 -0400 |
commit | 4ae050a3ae13d5fc7a01b72fe2576508916e5145 (patch) | |
tree | fe9e6bff4c88854e384fb1c26512aa8867d12f41 /api.lua |
Initial commit
Diffstat (limited to 'api.lua')
-rw-r--r-- | api.lua | 51 |
1 files changed, 51 insertions, 0 deletions
@@ -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 + |