forked from Mirrorlandia_minetest/minetest
world.mt: Only accept true/false/nil values (#8055)
This patch will make distinguishable mods in modpacks possible in the future `nil` checks are required to provide backwards-compatibility for fresh configured worlds
This commit is contained in:
parent
a51909bb64
commit
ed1415f78d
@ -138,7 +138,7 @@ local function handle_buttons(this, fields)
|
|||||||
not mod.is_game_content then
|
not mod.is_game_content then
|
||||||
if modname_valid(mod.name) then
|
if modname_valid(mod.name) then
|
||||||
worldfile:set("load_mod_" .. mod.name,
|
worldfile:set("load_mod_" .. mod.name,
|
||||||
tostring(mod.enabled))
|
mod.enabled and "true" or "false")
|
||||||
elseif mod.enabled then
|
elseif mod.enabled then
|
||||||
gamedata.errormessage = fgettext_ne("Failed to enable mo" ..
|
gamedata.errormessage = fgettext_ne("Failed to enable mo" ..
|
||||||
"d \"$1\" as it contains disallowed characters. " ..
|
"d \"$1\" as it contains disallowed characters. " ..
|
||||||
|
@ -391,7 +391,10 @@ function pkgmgr.get_worldconfig(worldpath)
|
|||||||
if key == "gameid" then
|
if key == "gameid" then
|
||||||
worldconfig.id = value
|
worldconfig.id = value
|
||||||
elseif key:sub(0, 9) == "load_mod_" then
|
elseif key:sub(0, 9) == "load_mod_" then
|
||||||
worldconfig.global_mods[key] = core.is_yes(value)
|
-- Compatibility: Check against "nil" which was erroneously used
|
||||||
|
-- as value for fresh configured worlds
|
||||||
|
worldconfig.global_mods[key] = value ~= "false" and value ~= "nil"
|
||||||
|
and value
|
||||||
else
|
else
|
||||||
worldconfig[key] = value
|
worldconfig[key] = value
|
||||||
end
|
end
|
||||||
@ -595,7 +598,7 @@ function pkgmgr.preparemodlist(data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if element ~= nil then
|
if element ~= nil then
|
||||||
element.enabled = core.is_yes(value)
|
element.enabled = value ~= "false" and value ~= "nil" and value
|
||||||
else
|
else
|
||||||
core.log("info", "Mod: " .. key .. " " .. dump(value) .. " but not found")
|
core.log("info", "Mod: " .. key .. " " .. dump(value) .. " but not found")
|
||||||
end
|
end
|
||||||
|
@ -274,7 +274,8 @@ void ModConfiguration::addModsFromConfig(
|
|||||||
conf.readConfigFile(settings_path.c_str());
|
conf.readConfigFile(settings_path.c_str());
|
||||||
std::vector<std::string> names = conf.getNames();
|
std::vector<std::string> names = conf.getNames();
|
||||||
for (const std::string &name : names) {
|
for (const std::string &name : names) {
|
||||||
if (name.compare(0, 9, "load_mod_") == 0 && conf.getBool(name))
|
if (name.compare(0, 9, "load_mod_") == 0 && conf.get(name) != "false" &&
|
||||||
|
conf.get(name) != "nil")
|
||||||
load_mod_names.insert(name.substr(9));
|
load_mod_names.insert(name.substr(9));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user