37 lines
1.1 KiB
Lua
37 lines
1.1 KiB
Lua
-- Base table for configuration.
|
|
kingdoms.config = {
|
|
_defaults = {},
|
|
}
|
|
|
|
-- Check if a setting is defined in minetest.conf
|
|
function kingdoms.config._get(setting, default)
|
|
if type(default) == "boolean" then
|
|
local read = minetest.setting_getbool("kingdoms."..setting)
|
|
if read == nil then
|
|
return default
|
|
else
|
|
return read
|
|
end
|
|
elseif type(default) == "string" then
|
|
return minetest.setting_get("kingdoms."..setting) or default
|
|
elseif type(default) == "number" then
|
|
return tonumber(minetest.setting_get("kingdoms."..setting) or default)
|
|
end
|
|
end
|
|
|
|
-- To set a default value: kingdoms.config.setting_name = value
|
|
-- To get the default value or what is specified in minetest.conf: kingdoms.config.setting_name
|
|
setmetatable(kingdoms.config, {
|
|
__index = function(t, key)
|
|
local default = t._defaults[key]
|
|
-- If there is no default then the setting should not be used.
|
|
if default == nil then
|
|
return error(("'%s' is not a configuration option"):format(key))
|
|
end
|
|
return t._get(key, default)
|
|
end,
|
|
__newindex = function(t, key, value)
|
|
t._defaults[key] = value
|
|
end,
|
|
})
|