diff options
Diffstat (limited to 'src/mods.cpp')
-rw-r--r-- | src/mods.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/src/mods.cpp b/src/mods.cpp index 64c319992..9bcf73aa7 100644 --- a/src/mods.cpp +++ b/src/mods.cpp @@ -220,7 +220,7 @@ ModConfiguration::ModConfiguration(std::string worldpath) Settings worldmt_settings; worldmt_settings.readConfigFile(worldmt.c_str()); std::vector<std::string> names = worldmt_settings.getNames(); - std::set<std::string> exclude_mod_names; + std::set<std::string> include_mod_names; for(std::vector<std::string>::iterator it = names.begin(); it != names.end(); ++it) { @@ -229,14 +229,13 @@ ModConfiguration::ModConfiguration(std::string worldpath) // explicitely excluded. if mod is not mentioned at all, it is // enabled. So by default, all installed mods are enabled. if (name.compare(0,9,"load_mod_") == 0 && - !worldmt_settings.getBool(name)) + worldmt_settings.getBool(name)) { - exclude_mod_names.insert(name.substr(9)); + include_mod_names.insert(name.substr(9)); } } - // Collect all mods in gamespec.addon_mods_paths, - // excluding those in the set exclude_mod_names + // Collect all mods that are also in include_mod_names std::vector<ModSpec> addon_mods; for(std::set<std::string>::const_iterator it_path = gamespec.addon_mods_paths.begin(); it_path != gamespec.addon_mods_paths.end(); ++it_path) @@ -246,10 +245,13 @@ ModConfiguration::ModConfiguration(std::string worldpath) it != addon_mods_in_path.end(); ++it) { ModSpec& mod = *it; - if(exclude_mod_names.count(mod.name) == 0) + if(include_mod_names.count(mod.name) != 0) addon_mods.push_back(mod); + else + worldmt_settings.setBool("load_mod_" + mod.name, false); } } + worldmt_settings.updateConfigFile(worldmt.c_str()); addMods(addon_mods); @@ -307,7 +309,7 @@ void ModConfiguration::addMods(std::vector<ModSpec> new_mods) // BAD CASE: name conflict in different levels. u32 oldindex = existing_mods[mod.name]; const ModSpec &oldmod = m_unsatisfied_mods[oldindex]; - errorstream<<"WARNING: Mod name conflict detected: \"" + actionstream<<"WARNING: Mod name conflict detected: \"" <<mod.name<<"\""<<std::endl <<"Will not load: "<<oldmod.path<<std::endl <<"Overridden by: "<<mod.path<<std::endl; |