kingdoms/kingdoms/config.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,
})