aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/modrinth
diff options
context:
space:
mode:
Diffstat (limited to 'launcher/modplatform/modrinth')
-rw-r--r--launcher/modplatform/modrinth/ModrinthAPI.h35
-rw-r--r--launcher/modplatform/modrinth/ModrinthPackIndex.cpp8
2 files changed, 22 insertions, 21 deletions
diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h
index 30952e99..84dd7d03 100644
--- a/launcher/modplatform/modrinth/ModrinthAPI.h
+++ b/launcher/modplatform/modrinth/ModrinthAPI.h
@@ -22,12 +22,12 @@ class ModrinthAPI : public NetworkModAPI {
"limit=25&"
"query=%2&"
"index=%3&"
- "facets=[[\"categories:%4\"],[\"versions:%5\"],[\"project_type:mod\"]]")
+ "facets=[[\"categories:%4\"],%5[\"project_type:mod\"]]")
.arg(args.offset)
.arg(args.search)
.arg(args.sorting)
.arg(getModLoaderString(args.mod_loader))
- .arg(args.version);
+ .arg(getGameVersionsArray(args.versions));
};
inline auto getVersionsURL(VersionSearchArgs& args) const -> QString override
@@ -40,34 +40,29 @@ class ModrinthAPI : public NetworkModAPI {
.arg(getModLoaderString(args.loader));
};
- inline auto getGameVersionsString(QList<QString> mcVersions) const -> QString
+ auto getGameVersionsArray(std::list<Version> mcVersions) const -> QString
{
QString s;
- for(int i = 0; i < mcVersions.count(); i++){
- s += mcVersions.at(i);
- if(i < mcVersions.count() - 1)
- s += ",";
+ for(auto& ver : mcVersions){
+ s += QString("\"versions:%1\",").arg(ver.toString());
}
- return s;
+ s.remove(s.length() - 1, 1); //remove last comma
+ return s.isEmpty() ? QString() : QString("[%1],").arg(s);
}
- inline auto getModLoaderString(ModLoaderType modLoader) const -> QString
+ static auto getModLoaderString(ModLoaderType type) -> const QString
{
- switch (modLoader) {
- case Any:
- return "fabric, forge";
- case Forge:
- return "forge";
- case Fabric:
- return "fabric";
- default:
- return "";
- }
+ if (type == Unspecified)
+ return "fabric, forge, quilt";
+ // TODO: remove this once Quilt drops official Fabric support
+ if (type == Quilt) // NOTE: Most if not all Fabric mods should work *currently*
+ return "fabric, quilt";
+ return ModAPI::getModLoaderString(type);
}
inline auto validateModLoader(ModLoaderType modLoader) const -> bool
{
- return modLoader == Any || modLoader == Forge || modLoader == Fabric;
+ return modLoader == Unspecified || modLoader == Forge || modLoader == Fabric || modLoader == Quilt;
}
};
diff --git a/launcher/modplatform/modrinth/ModrinthPackIndex.cpp b/launcher/modplatform/modrinth/ModrinthPackIndex.cpp
index 5b75f034..a3c2f166 100644
--- a/launcher/modplatform/modrinth/ModrinthPackIndex.cpp
+++ b/launcher/modplatform/modrinth/ModrinthPackIndex.cpp
@@ -12,7 +12,13 @@ void Modrinth::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj)
{
pack.addonId = Json::requireString(obj, "project_id");
pack.name = Json::requireString(obj, "title");
- pack.websiteUrl = "https://modrinth.com/mod/" + Json::ensureString(obj, "slug", "");
+
+ QString slug = Json::ensureString(obj, "slug", "");
+ if (!slug.isEmpty())
+ pack.websiteUrl = "https://modrinth.com/mod/" + Json::ensureString(obj, "slug", "");
+ else
+ pack.websiteUrl = "";
+
pack.description = Json::ensureString(obj, "description", "");
pack.logoUrl = Json::requireString(obj, "icon_url");