mirror of
https://github.com/minetest-mods/areas.git
synced 2024-09-27 15:10:18 +02:00
Remove factions.version check if it is not necessary to allow opening for multiple factions to every version of playerfactions
This commit is contained in:
parent
f2ae0a6874
commit
e2bd0e9e55
|
@ -113,7 +113,7 @@ Commands
|
||||||
|
|
||||||
* `/area_open <ID>` -- Toggle open/closed the specified area for everyone.
|
* `/area_open <ID>` -- Toggle open/closed the specified area for everyone.
|
||||||
|
|
||||||
* `/area_faction_open <ID> [faction]` -- Toggle open/closed the specified
|
* `/area_faction_open <ID> <faction>` -- Toggle open/closed the specified
|
||||||
area for members of the faction. Factions are created and managed by
|
area for members of the faction. Factions are created and managed by
|
||||||
playerfactions mod.
|
playerfactions mod.
|
||||||
|
|
||||||
|
|
10
api.lua
10
api.lua
|
@ -93,9 +93,13 @@ function areas:canInteract(pos, name)
|
||||||
return true
|
return true
|
||||||
elseif areas.factions_available and area.faction_open then
|
elseif areas.factions_available and area.faction_open then
|
||||||
if (factions.version or 0) < 2 then
|
if (factions.version or 0) < 2 then
|
||||||
local faction_name = factions.get_player_faction(area.owner)
|
local faction_name = factions.get_player_faction(name)
|
||||||
if faction_name ~= nil and faction_name == factions.get_player_faction(name) then
|
if faction_name then
|
||||||
return true
|
for _, fname in ipairs(area.faction_open or {}) do
|
||||||
|
if faction_name == fname then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
for _, fname in ipairs(area.faction_open or {}) do
|
for _, fname in ipairs(area.faction_open or {}) do
|
||||||
|
|
|
@ -301,21 +301,7 @@ if areas.factions_available then
|
||||||
return false, S("Area @1 does not exist"
|
return false, S("Area @1 does not exist"
|
||||||
.." or is not owned by you.", id)
|
.." or is not owned by you.", id)
|
||||||
end
|
end
|
||||||
if (factions.version or 0) < 2 or (factions.mode_unique_faction and not params[2]) then
|
|
||||||
-- Single faction mode
|
|
||||||
local open
|
|
||||||
if (factions.version or 0) < 2 then
|
|
||||||
open = not areas.areas[id].faction_open and {factions.get_player_faction(name)}
|
|
||||||
else
|
|
||||||
open = not areas.areas[id].faction_open and factions.get_player_factions(name)
|
|
||||||
end
|
|
||||||
-- Save false as nil to avoid inflating the DB.
|
|
||||||
areas.areas[id].faction_open = open or nil
|
|
||||||
areas:save()
|
|
||||||
return true, open and S("Area opened for faction members.")
|
|
||||||
or S("Area closed for faction members.")
|
|
||||||
end
|
|
||||||
-- Multiple factions support
|
|
||||||
local faction_name = params[2]
|
local faction_name = params[2]
|
||||||
if not factions.get_owner(faction_name) then
|
if not factions.get_owner(faction_name) then
|
||||||
return false, S("Faction doesn't exists")
|
return false, S("Faction doesn't exists")
|
||||||
|
|
33
hud.lua
33
hud.lua
|
@ -23,27 +23,22 @@ minetest.register_globalstep(function(dtime)
|
||||||
local faction_info
|
local faction_info
|
||||||
if area.faction_open and areas.factions_available then
|
if area.faction_open and areas.factions_available then
|
||||||
-- Gather and clean up disbanded factions
|
-- Gather and clean up disbanded factions
|
||||||
if (factions.version or 0) < 2 then
|
local changed = false
|
||||||
faction_info = factions.get_player_faction(area.owner)
|
for i, fac_name in ipairs(area.faction_open) do
|
||||||
|
if not factions.get_owner(fac_name) then
|
||||||
|
table.remove(area.faction_open, i)
|
||||||
|
changed = true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if #area.faction_open == 0 then
|
||||||
|
-- Prevent DB clutter, remove value
|
||||||
|
area.faction_open = nil
|
||||||
else
|
else
|
||||||
-- Verify that every displayed faction still exists
|
faction_info = table.concat(area.faction_open, ", ")
|
||||||
local changed = false
|
end
|
||||||
for i, fac_name in ipairs(area.faction_open) do
|
|
||||||
if not factions.get_owner(fac_name) then
|
|
||||||
table.remove(area.faction_open, i)
|
|
||||||
changed = true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
if #area.faction_open == 0 then
|
|
||||||
-- Prevent DB clutter, remove value
|
|
||||||
area.faction_open = nil
|
|
||||||
else
|
|
||||||
faction_info = table.concat(area.faction_open, ", ")
|
|
||||||
end
|
|
||||||
|
|
||||||
if changed then
|
if changed then
|
||||||
areas:save()
|
areas:save()
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user