diff options
-rw-r--r-- | src/server.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/server.cpp b/src/server.cpp index 58611bed1..f3e497ff1 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -979,6 +979,7 @@ static core::list<ModSpec> getMods(core::list<std::string> &modspaths) mods_satisfied.push(spec); } } + // Sort by depencencies while(!mods_satisfied.empty()){ ModSpec mod = mods_satisfied.front(); mods_satisfied.pop(); @@ -994,6 +995,22 @@ static core::list<ModSpec> getMods(core::list<std::string> &modspaths) mods_satisfied.push(mod2); } } + // Check unsatisfied dependencies + for(core::list<ModSpec>::Iterator i = mods_unsorted.begin(); + i != mods_unsorted.end(); i++){ + ModSpec mod = *i; + if(mod.unsatisfied_depends.empty()) + continue; + errorstream<<"mod \""<<mod.name + <<"\" has unsatisfied dependencies:"; + for(std::set<std::string>::iterator + i = mod.unsatisfied_depends.begin(); + i != mod.unsatisfied_depends.end(); i++){ + errorstream<<" \""<<(*i)<<"\""; + } + errorstream<<". Loading nevertheless."<<std::endl; + mods_sorted.push_back(mod); + } return mods_sorted; } |