diff options
-rw-r--r-- | api.lua | 4 | ||||
-rw-r--r-- | chatcommands.lua | 26 | ||||
-rw-r--r-- | hud.lua | 6 |
3 files changed, 34 insertions, 2 deletions
@@ -24,7 +24,9 @@ function areas:canInteract(pos, name) if area.owner == name then return true else - owned = true + if not area.open then + owned = true + end end end return not owned diff --git a/chatcommands.lua b/chatcommands.lua index 00a31b0..e533602 100644 --- a/chatcommands.lua +++ b/chatcommands.lua @@ -305,3 +305,29 @@ minetest.register_chatcommand("change_owner", { name..'" has given you control over an area.') end}) +minetest.register_chatcommand("area_open", { + params = "<id>", + description = "Toggle an area open (anyone can interact) or not", + privs = {}, + func = function(name, param) + local id = tonumber(param) + + if not id then + minetest.chat_send_player(name, + "Invalid usage, see /help area_open") + return + end + + if not areas:isAreaOwner(id, name) then + minetest.chat_send_player(name, + "Area "..id.." does not exist" + .." or is not owned by you.") + return + end + local open = not areas.areas[id].open + -- Save false as nil to avoid inflating the DB. + areas.areas[id].open = open or nil + areas:save() + minetest.chat_send_player(name, "Area "..(open and "opened" or "closed")..".") +end}) + @@ -15,7 +15,11 @@ minetest.register_globalstep(function(dtime) else first = false end - areaString = areaString..id.." ("..area.owner..")" + local ownertxt = area.owner + if area.open then + ownertxt = ownertxt.."/open" + end + areaString = areaString..id.." ("..ownertxt..")" end if not areas.hud[name] then areas.hud[name] = {} |