From ed1415f78d7820c44e9a219b578b9fbcdce0cc65 Mon Sep 17 00:00:00 2001 From: SmallJoker Date: Sun, 13 Jan 2019 16:22:32 +0100 Subject: 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 --- builtin/mainmenu/dlg_config_world.lua | 2 +- builtin/mainmenu/pkgmgr.lua | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) (limited to 'builtin') diff --git a/builtin/mainmenu/dlg_config_world.lua b/builtin/mainmenu/dlg_config_world.lua index 1a1107c24..3e766aa78 100644 --- a/builtin/mainmenu/dlg_config_world.lua +++ b/builtin/mainmenu/dlg_config_world.lua @@ -138,7 +138,7 @@ local function handle_buttons(this, fields) not mod.is_game_content then if modname_valid(mod.name) then worldfile:set("load_mod_" .. mod.name, - tostring(mod.enabled)) + mod.enabled and "true" or "false") elseif mod.enabled then gamedata.errormessage = fgettext_ne("Failed to enable mo" .. "d \"$1\" as it contains disallowed characters. " .. diff --git a/builtin/mainmenu/pkgmgr.lua b/builtin/mainmenu/pkgmgr.lua index cea373c9f..171ba54ea 100644 --- a/builtin/mainmenu/pkgmgr.lua +++ b/builtin/mainmenu/pkgmgr.lua @@ -391,7 +391,10 @@ function pkgmgr.get_worldconfig(worldpath) if key == "gameid" then worldconfig.id = value 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 worldconfig[key] = value end @@ -595,7 +598,7 @@ function pkgmgr.preparemodlist(data) end end if element ~= nil then - element.enabled = core.is_yes(value) + element.enabled = value ~= "false" and value ~= "nil" and value else core.log("info", "Mod: " .. key .. " " .. dump(value) .. " but not found") end -- cgit v1.2.3