diff options
author | Sefa Eyeoglu <contact@scrumplex.net> | 2022-02-28 13:35:58 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-28 13:35:58 +0100 |
commit | 139ff82432897e68bddab9ed8e9aec89c174d0fe (patch) | |
tree | caf9a57ccf8e8572bcea0e48d8d3cdf4a8f355c3 | |
parent | 148775b3e97f67547af88e0ced643c042bbe28fc (diff) | |
parent | 4e8f075ff3c62292e2aff2aa5ddf59aaa18cdf05 (diff) | |
download | PrismLauncher-139ff82432897e68bddab9ed8e9aec89c174d0fe.tar.gz PrismLauncher-139ff82432897e68bddab9ed8e9aec89c174d0fe.tar.bz2 PrismLauncher-139ff82432897e68bddab9ed8e9aec89c174d0fe.zip |
Merge pull request #207 from flowln/curseforge_api
-rw-r--r-- | launcher/modplatform/flame/FlameModIndex.cpp | 31 | ||||
-rw-r--r-- | launcher/ui/pages/modplatform/flame/FlameModModel.cpp | 4 |
2 files changed, 18 insertions, 17 deletions
diff --git a/launcher/modplatform/flame/FlameModIndex.cpp b/launcher/modplatform/flame/FlameModIndex.cpp index a8b2495a..4adaf5f1 100644 --- a/launcher/modplatform/flame/FlameModIndex.cpp +++ b/launcher/modplatform/flame/FlameModIndex.cpp @@ -50,42 +50,43 @@ void FlameMod::loadIndexedPackVersions(FlameMod::IndexedPack & pack, QJsonArray for(auto versionIter: arr) { auto obj = versionIter.toObject(); - FlameMod::IndexedVersion file; - file.addonId = pack.addonId; - file.fileId = Json::requireInteger(obj, "id"); - file.date = Json::requireString(obj, "fileDate"); + auto versionArray = Json::requireArray(obj, "gameVersion"); - if (versionArray.empty()) { + if (versionArray.isEmpty()) { continue; } + + FlameMod::IndexedVersion file; for(auto mcVer : versionArray){ file.mcVersion.append(mcVer.toString()); } + file.addonId = pack.addonId; + file.fileId = Json::requireInteger(obj, "id"); + file.date = Json::requireString(obj, "fileDate"); file.version = Json::requireString(obj, "displayName"); file.downloadUrl = Json::requireString(obj, "downloadUrl"); file.fileName = Json::requireString(obj, "fileName"); auto modules = Json::requireArray(obj, "modules"); - bool valid = false; + bool is_valid_fabric_version = false; for(auto m : modules){ auto fname = Json::requireString(m.toObject(),"foldername"); + // FIXME: This does not work properly when a mod supports more than one mod loader, since + // they bundle the meta files for all of them in the same arquive, even when that version + // doesn't support the given mod loader. if(hasFabric){ if(fname == "fabric.mod.json"){ - valid = true; - break; - } - }else{ - //this cannot check for the recent mcmod.toml formats - if(fname == "mcmod.info"){ - valid = true; + is_valid_fabric_version = true; break; } } + else break; + // NOTE: Since we're not validating forge versions, we can just skip this loop. } - if(!valid && hasFabric){ + + if(hasFabric && !is_valid_fabric_version) continue; - } unsortedVersions.append(file); } diff --git a/launcher/ui/pages/modplatform/flame/FlameModModel.cpp b/launcher/ui/pages/modplatform/flame/FlameModModel.cpp index 2cf83261..e8afba5a 100644 --- a/launcher/ui/pages/modplatform/flame/FlameModModel.cpp +++ b/launcher/ui/pages/modplatform/flame/FlameModModel.cpp @@ -175,13 +175,13 @@ void ListModel::performPaginatedSearch() "pageSize=25&" "searchFilter=%2&" "sort=%3&" - "%4" + "modLoaderType=%4&" "gameVersion=%5" ) .arg(nextSearchOffset) .arg(currentSearchTerm) .arg(sorts[currentSort]) - .arg(hasFabric ? "modLoaderType=4&" : "") + .arg(hasFabric ? 4 : 1) // Enum: https://docs.curseforge.com/?http#tocS_ModLoaderType .arg(mcVersion); netJob->addNetAction(Net::Download::makeByteArray(QUrl(searchUrl), &response)); |