Add factions support

This commit is contained in:
Alden Peeters 2019-09-09 15:55:24 -04:00
parent 95c1165e28
commit c4820a8106
No known key found for this signature in database
GPG Key ID: CDAD63AE9DA934BE
3 changed files with 30 additions and 0 deletions

View File

@ -94,6 +94,11 @@ function areas:canInteract(pos, name)
for _, area in pairs(self:getAreasAtPos(pos)) do
if area.owner == name or area.open then
return true
elseif factions then
local faction_name = factions.get_player_faction(area.owner)
if faction_name ~= nil and faction_name == factions.get_player_faction(name) then
return true
end
else
owned = true
end

View File

@ -286,6 +286,30 @@ minetest.register_chatcommand("area_open", {
})
if factions then
minetest.register_chatcommand("area_faction_open", {
params = "<ID>",
description = "Toggle an area open (anyone can interact) or closed to your faction",
func = function(name, param)
local id = tonumber(param)
if not id then
return false, "Invalid usage, see /help area_faction_open."
end
if not areas:isAreaOwner(id, name) then
return false, "Area "..id.." does not exist"
.." or is not owned by you."
end
local open = not areas.areas[id].faction_open
-- Save false as nil to avoid inflating the DB.
areas.areas[id].faction_open = open or nil
areas:save()
return true, ("Area %s for faction members."):format(open and "opened" or "closed")
end
})
end
minetest.register_chatcommand("move_area", {
params = "<ID>",
description = "Move (or resize) an area to the current positions.",

View File

@ -1 +1,2 @@
name = areas
optional_depends = factions