forked from Mirrorlandia_minetest/minetest
Remove support for common mods
This commit is contained in:
parent
112dbba7c4
commit
4e5a45952a
50
src/mods.cpp
50
src/mods.cpp
@ -114,26 +114,6 @@ std::map<std::string, ModSpec> getModsInPath(std::string path, bool part_of_modp
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
ModSpec findCommonMod(const std::string &modname)
|
|
||||||
{
|
|
||||||
// Try to find in {$user,$share}/games/common/$modname
|
|
||||||
std::vector<std::string> find_paths;
|
|
||||||
find_paths.push_back(porting::path_user + DIR_DELIM + "games" +
|
|
||||||
DIR_DELIM + "common" + DIR_DELIM + "mods" + DIR_DELIM + modname);
|
|
||||||
find_paths.push_back(porting::path_share + DIR_DELIM + "games" +
|
|
||||||
DIR_DELIM + "common" + DIR_DELIM + "mods" + DIR_DELIM + modname);
|
|
||||||
for(u32 i=0; i<find_paths.size(); i++){
|
|
||||||
const std::string &try_path = find_paths[i];
|
|
||||||
if(fs::PathExists(try_path)){
|
|
||||||
ModSpec spec(modname, try_path);
|
|
||||||
parseModContents(spec);
|
|
||||||
return spec;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Failed to find mod
|
|
||||||
return ModSpec();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::map<std::string, ModSpec> flattenModTree(std::map<std::string, ModSpec> mods)
|
std::map<std::string, ModSpec> flattenModTree(std::map<std::string, ModSpec> mods)
|
||||||
{
|
{
|
||||||
std::map<std::string, ModSpec> result;
|
std::map<std::string, ModSpec> result;
|
||||||
@ -182,36 +162,6 @@ ModConfiguration::ModConfiguration(std::string worldpath)
|
|||||||
{
|
{
|
||||||
SubgameSpec gamespec = findWorldSubgame(worldpath);
|
SubgameSpec gamespec = findWorldSubgame(worldpath);
|
||||||
|
|
||||||
// Add common mods
|
|
||||||
std::map<std::string, ModSpec> common_mods;
|
|
||||||
std::vector<std::string> inexistent_common_mods;
|
|
||||||
Settings gameconf;
|
|
||||||
if(getGameConfig(gamespec.path, gameconf)){
|
|
||||||
if(gameconf.exists("common_mods")){
|
|
||||||
Strfnd f(gameconf.get("common_mods"));
|
|
||||||
while(!f.atend()){
|
|
||||||
std::string modname = trim(f.next(","));
|
|
||||||
if(modname.empty())
|
|
||||||
continue;
|
|
||||||
ModSpec spec = findCommonMod(modname);
|
|
||||||
if(spec.name.empty())
|
|
||||||
inexistent_common_mods.push_back(modname);
|
|
||||||
else
|
|
||||||
common_mods.insert(std::make_pair(modname, spec));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(!inexistent_common_mods.empty()){
|
|
||||||
std::string s = "Required common mods ";
|
|
||||||
for(u32 i=0; i<inexistent_common_mods.size(); i++){
|
|
||||||
if(i != 0) s += ", ";
|
|
||||||
s += std::string("\"") + inexistent_common_mods[i] + "\"";
|
|
||||||
}
|
|
||||||
s += " could not be found.";
|
|
||||||
throw ModError(s);
|
|
||||||
}
|
|
||||||
addMods(flattenMods(common_mods));
|
|
||||||
|
|
||||||
// Add all game mods and all world mods
|
// Add all game mods and all world mods
|
||||||
addModsInPath(gamespec.gamemods_path);
|
addModsInPath(gamespec.gamemods_path);
|
||||||
addModsInPath(worldpath + DIR_DELIM + "worldmods");
|
addModsInPath(worldpath + DIR_DELIM + "worldmods");
|
||||||
|
Loading…
Reference in New Issue
Block a user