mirror of
				https://github.com/luanti-org/luanti.git
				synced 2025-11-04 09:15:29 +01:00 
			
		
		
		
	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:
		@@ -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. " ..
 | 
			
		||||
 
 | 
			
		||||
@@ -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
 | 
			
		||||
 
 | 
			
		||||
@@ -274,7 +274,8 @@ void ModConfiguration::addModsFromConfig(
 | 
			
		||||
	conf.readConfigFile(settings_path.c_str());
 | 
			
		||||
	std::vector<std::string> names = conf.getNames();
 | 
			
		||||
	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));
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user