summaryrefslogtreecommitdiff
path: root/areas/settings.lua
blob: ffb53554dae18c236f88b4b7b31d7b7677384b9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
local world_path = minetest.get_worldpath()

areas.config = {}

local function setting(tp, name, default)
	local full_name = "areas."..name
	local value
	if tp == "boolean" then
		value = minetest.settings:get_bool(full_name)
	elseif tp == "string" then
		value = minetest.settings:get(full_name)
	elseif tp == "position" then
		value = minetest.setting_get_pos(full_name)
	elseif tp == "number" then
		value = tonumber(minetest.settings:get(full_name))
	else
		error("Invalid setting type!")
	end
	if value == nil then
		value = default
	end
	areas.config[name] = value
end

--------------
-- Settings --
--------------

setting("string", "filename", world_path.."/areas.dat")

-- 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)

-- legacy_table (owner_defs) compatibility.  Untested and has known issues.
setting("boolean", "legacy_table", false)