mirror of
https://github.com/minetest-mods/areas.git
synced 2024-12-24 01:30:41 +01:00
Simplify settings definitions and namespace settings
This commit is contained in:
parent
e4aef02cb9
commit
3f777900d4
@ -2,7 +2,7 @@
|
||||
minetest.register_chatcommand("protect", {
|
||||
params = "<AreaName>",
|
||||
description = "Protect your own area",
|
||||
privs = {[areas.self_protection_privilege]=true},
|
||||
privs = {[areas.config.self_protection_privilege]=true},
|
||||
func = function(name, param)
|
||||
if param == "" then
|
||||
return false, "Invalid usage, see /help protect."
|
||||
|
4
init.lua
4
init.lua
@ -26,8 +26,8 @@ minetest.register_privilege("areas_high_limit", {
|
||||
description = "Can can more, bigger areas."
|
||||
})
|
||||
|
||||
if not minetest.registered_privileges[areas.self_protection_privilege] then
|
||||
minetest.register_privilege(areas.self_protection_privilege, {
|
||||
if not minetest.registered_privileges[areas.config.self_protection_privilege] then
|
||||
minetest.register_privilege(areas.config.self_protection_privilege, {
|
||||
description = "Can protect areas.",
|
||||
})
|
||||
end
|
||||
|
16
internal.lua
16
internal.lua
@ -10,7 +10,7 @@ function areas:save()
|
||||
minetest.log("error", "[areas] Failed to serialize area data!")
|
||||
return
|
||||
end
|
||||
local file, err = io.open(self.filename, "w")
|
||||
local file, err = io.open(self.config.filename, "w")
|
||||
if err then
|
||||
return err
|
||||
end
|
||||
@ -20,7 +20,7 @@ end
|
||||
|
||||
-- Load the areas table from the save file
|
||||
function areas:load()
|
||||
local file, err = io.open(self.filename, "r")
|
||||
local file, err = io.open(self.config.filename, "r")
|
||||
if err then
|
||||
self.areas = self.areas or {}
|
||||
return err
|
||||
@ -116,15 +116,15 @@ function areas:canPlayerAddArea(pos1, pos2, name)
|
||||
|
||||
-- Check self protection privilege, if it is enabled,
|
||||
-- and if the area is too big.
|
||||
if not self.self_protection or
|
||||
not privs[areas.self_protection_privilege] then
|
||||
if not self.config.self_protection or
|
||||
not privs[areas.config.self_protection_privilege] then
|
||||
return false, "Self protection is disabled or you do not have"
|
||||
.." the necessary privilege."
|
||||
end
|
||||
|
||||
local max_size = privs.areas_high_limit and
|
||||
self.self_protection_max_size_high or
|
||||
self.self_protection_max_size
|
||||
self.config.self_protection_max_size_high or
|
||||
self.config.self_protection_max_size
|
||||
if
|
||||
(pos2.x - pos1.x) > max_size.x or
|
||||
(pos2.y - pos1.y) > max_size.y or
|
||||
@ -140,8 +140,8 @@ function areas:canPlayerAddArea(pos1, pos2, name)
|
||||
end
|
||||
end
|
||||
local max_areas = privs.areas_high_limit and
|
||||
self.self_protection_max_areas_high or
|
||||
self.self_protection_max_areas
|
||||
self.config.self_protection_max_areas_high or
|
||||
self.config.self_protection_max_areas
|
||||
if count >= max_areas then
|
||||
return false, "You have reached the maximum amount of"
|
||||
.." areas that you are allowed to protect."
|
||||
|
@ -110,7 +110,7 @@ GetNodeOwnerName = areas.getNodeOwnerName
|
||||
HasOwner = areas.hasOwner
|
||||
|
||||
-- This is entirely untested and may break in strange and new ways.
|
||||
if areas.legacy_table then
|
||||
if areas.config.legacy_table then
|
||||
owner_defs = setmetatable({}, {
|
||||
__index = function(table, key)
|
||||
local a = rawget(areas.areas, key)
|
||||
|
65
settings.lua
65
settings.lua
@ -1,42 +1,43 @@
|
||||
local worldpath = minetest.get_worldpath()
|
||||
local world_path = minetest.get_worldpath()
|
||||
|
||||
local function setting_getbool_default(setting, default)
|
||||
local value = minetest.setting_getbool(setting)
|
||||
areas.config = {}
|
||||
|
||||
local function setting(tp, name, default)
|
||||
local full_name = "areas."..name
|
||||
local value
|
||||
if tp == "boolean" then
|
||||
value = minetest.setting_getbool(full_name)
|
||||
elseif tp == "string" then
|
||||
value = minetest.setting_get(full_name)
|
||||
elseif tp == "position" then
|
||||
value = minetest.setting_get_pos(full_name)
|
||||
elseif tp == "number" then
|
||||
value = tonumber(minetest.setting_get(full_name))
|
||||
else
|
||||
error("Invalid setting type!")
|
||||
end
|
||||
if value == nil then
|
||||
value = default
|
||||
end
|
||||
return value
|
||||
areas.config[name] = value
|
||||
end
|
||||
|
||||
areas.filename =
|
||||
minetest.setting_get("areas.filename") or worldpath.."/areas.dat"
|
||||
--------------
|
||||
-- Settings --
|
||||
--------------
|
||||
|
||||
setting("string", "filename", world_path.."/areas.dat")
|
||||
|
||||
-- Allow players with a privilege create their own areas
|
||||
-- within the maximum size and number
|
||||
areas.self_protection =
|
||||
setting_getbool_default("areas.self_protection", false)
|
||||
areas.self_protection_privilege =
|
||||
minetest.setting_get("areas.self_protection_privilege") or "interact"
|
||||
areas.self_protection_max_size =
|
||||
minetest.setting_get_pos("areas.self_protection_max_size") or
|
||||
{x=64, y=128, z=64}
|
||||
areas.self_protection_max_size_high =
|
||||
minetest.setting_get_pos("areas.self_protection_max_size_high") or
|
||||
{x=512, y=512, z=512}
|
||||
areas.self_protection_max_areas =
|
||||
tonumber(minetest.setting_get("areas.self_protection_max_areas")) or 4
|
||||
areas.self_protection_max_areas_high =
|
||||
tonumber(minetest.setting_get("areas.self_protection_max_areas_high")) or 32
|
||||
-- within the maximum size and number.
|
||||
setting("boolean", "self_protection", false)
|
||||
setting("string", "self_protection_privilege", "interact")
|
||||
setting("position", "self_protection_max_size", {x=64, y=128, z=64})
|
||||
setting("number", "self_protection_max_areas", 4)
|
||||
-- For players with the areas_high_limit privilege.
|
||||
setting("position", "self_protection_max_size_high", {x=512, y=512, z=512})
|
||||
setting("number", "self_protection_max_areas_high", 32)
|
||||
|
||||
-- Register compatability functions for node_ownership.
|
||||
-- legacy_table (owner_defs) compatibility is untested
|
||||
-- and can not be used if security_safe_mod_api is on.
|
||||
areas.legacy_table =
|
||||
setting_getbool_default("areas.legacy_table", false)
|
||||
|
||||
-- Prevent players from punching nodes in a protected area.
|
||||
-- Usefull for things like delayers, usualy annoying and
|
||||
-- prevents usage of things like buttons.
|
||||
areas.protect_punches =
|
||||
setting_getbool_default("areas.protect_punches", false)
|
||||
-- legacy_table (owner_defs) compatibility. Untested and has known issues.
|
||||
setting("boolean", "legacy_table", false)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user