diff --git a/config/schemas/settings.json b/config/schemas/settings.json index 14043aff0..073e281fe 100644 --- a/config/schemas/settings.json +++ b/config/schemas/settings.json @@ -665,7 +665,7 @@ }, "defaultRepositoryURL" : { "type" : "string", - "default" : "https://raw.githubusercontent.com/vcmi/vcmi-mods-repository/develop/vcmi-1.6.json", + "default" : "https://raw.githubusercontent.com/vcmi/vcmi-mods-repository/develop/vcmi-1.7.json", }, "extraRepositoryEnabled" : { "type" : "boolean", diff --git a/lib/modding/ModManager.cpp b/lib/modding/ModManager.cpp index 24a655e36..2835c204a 100644 --- a/lib/modding/ModManager.cpp +++ b/lib/modding/ModManager.cpp @@ -425,6 +425,9 @@ ModsStorage::ModsStorage(const std::vector & modsToLoad, const JsonNode coreModConfig.setModScope(ModScope::scopeBuiltin()); mods.try_emplace(ModScope::scopeBuiltin(), ModScope::scopeBuiltin(), coreModConfig, JsonNode()); + // MODS COMPATIBILITY: in 1.6, repository list contains mod list directly, in 1.7 it is located in 'availableMods' node + const auto & availableRepositoryMods = repositoryList["availableMods"].isNull() ? repositoryList : repositoryList["availableMods"]; + for(auto modID : modsToLoad) { if(ModScope::isScopeReserved(modID)) @@ -439,10 +442,10 @@ ModsStorage::ModsStorage(const std::vector & modsToLoad, const JsonNode continue; } - mods.try_emplace(modID, modID, modConfig, repositoryList[modID]); + mods.try_emplace(modID, modID, modConfig, availableRepositoryMods[modID]); } - for(const auto & mod : repositoryList.Struct()) + for(const auto & mod : availableRepositoryMods.Struct()) { if (vstd::contains(modsToLoad, mod.first)) continue;