diff options
author | PilzAdam <pilzadam@minetest.net> | 2013-05-19 19:46:50 +0200 |
---|---|---|
committer | PilzAdam <pilzadam@minetest.net> | 2013-05-19 19:46:50 +0200 |
commit | dcd0b63f645bccf497a030b6b1cec97178542eb1 (patch) | |
tree | 8003f40088d817daf00485f7c82a5986e9519a8e | |
parent | b2577b1f27a081a9148e7f9cf6b365b54adb80d2 (diff) | |
download | minetest-dcd0b63f645bccf497a030b6b1cec97178542eb1.tar.gz minetest-dcd0b63f645bccf497a030b6b1cec97178542eb1.tar.bz2 minetest-dcd0b63f645bccf497a030b6b1cec97178542eb1.zip |
Dont load mods that have no entry in world.mt
-rw-r--r-- | src/mods.cpp | 11 | ||||
-rw-r--r-- | src/server.cpp | 10 |
2 files changed, 7 insertions, 14 deletions
diff --git a/src/mods.cpp b/src/mods.cpp index 64c319992..a0a37afb9 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,7 +245,7 @@ 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); } } diff --git a/src/server.cpp b/src/server.cpp index 40a4f8a02..0d724b1cb 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -727,19 +727,13 @@ Server::Server( std::string worldmt = m_path_world + DIR_DELIM + "world.mt"; 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> load_mod_names; for(std::vector<std::string>::iterator it = names.begin(); it != names.end(); ++it) { std::string name = *it; - if (name.compare(0,9,"load_mod_")==0) - { - if(worldmt_settings.getBool(name)) - load_mod_names.insert(name.substr(9)); - else - exclude_mod_names.insert(name.substr(9)); - } + if(name.compare(0,9,"load_mod_")==0 && worldmt_settings.getBool(name)) + load_mod_names.insert(name.substr(9)); } // complain about mods declared to be loaded, but not found for(std::vector<ModSpec>::iterator it = m_mods.begin(); |