aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPilzAdam <pilzadam@minetest.net>2013-05-19 19:46:50 +0200
committerPilzAdam <pilzadam@minetest.net>2013-05-19 19:46:50 +0200
commitdcd0b63f645bccf497a030b6b1cec97178542eb1 (patch)
tree8003f40088d817daf00485f7c82a5986e9519a8e /src
parentb2577b1f27a081a9148e7f9cf6b365b54adb80d2 (diff)
downloadminetest-dcd0b63f645bccf497a030b6b1cec97178542eb1.tar.gz
minetest-dcd0b63f645bccf497a030b6b1cec97178542eb1.tar.bz2
minetest-dcd0b63f645bccf497a030b6b1cec97178542eb1.zip
Dont load mods that have no entry in world.mt
Diffstat (limited to 'src')
-rw-r--r--src/mods.cpp11
-rw-r--r--src/server.cpp10
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();