summaryrefslogtreecommitdiff
path: root/settings.lua
diff options
context:
space:
mode:
Diffstat (limited to 'settings.lua')
-rw-r--r--settings.lua65
1 files changed, 33 insertions, 32 deletions
diff --git a/settings.lua b/settings.lua
index c9ed9a0..140a655 100644
--- a/settings.lua
+++ b/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 --
+--------------
--- 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
+setting("string", "filename", world_path.."/areas.dat")
--- 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)
+-- Allow players with a privilege create their own areas
+-- 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)
--- 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)