Skip to content

Commit

Permalink
Simplify settings definitions and namespace settings
Browse files Browse the repository at this point in the history
  • Loading branch information
ShadowNinja committed Nov 18, 2014
1 parent e4aef02 commit 3f77790
Show file tree
Hide file tree
Showing 5 changed files with 45 additions and 44 deletions.
2 changes: 1 addition & 1 deletion chatcommands.lua
Expand Up @@ -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."
Expand Down
4 changes: 2 additions & 2 deletions init.lua
Expand Up @@ -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
Expand Down
16 changes: 8 additions & 8 deletions internal.lua
Expand Up @@ -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
Expand All @@ -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
Expand Down Expand Up @@ -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
Expand All @@ -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."
Expand Down
2 changes: 1 addition & 1 deletion legacy.lua
Expand Up @@ -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)
Expand Down
65 changes: 33 additions & 32 deletions 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)

1 comment on commit 3f77790

@Megaf
Copy link

@Megaf Megaf commented on 3f77790 Dec 19, 2014

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This might have broken something. Command /list_areas returns

Please sign in to comment.