diff options
author | Sefa Eyeoglu <contact@scrumplex.net> | 2022-04-15 12:38:27 +0200 |
---|---|---|
committer | Sefa Eyeoglu <contact@scrumplex.net> | 2022-04-16 23:40:10 +0200 |
commit | cab9afa45f7a7dfcb87080804f3a6ef90f953819 (patch) | |
tree | a97a3903cab017891973647ae3515cf38ae2dbae | |
parent | a42d2afceee9f6ea0d209cfb03b178defff1ce60 (diff) | |
download | PrismLauncher-cab9afa45f7a7dfcb87080804f3a6ef90f953819.tar.gz PrismLauncher-cab9afa45f7a7dfcb87080804f3a6ef90f953819.tar.bz2 PrismLauncher-cab9afa45f7a7dfcb87080804f3a6ef90f953819.zip |
fix: query for Fabric mods if Quilt is in use
Right now we want to include Fabric mods in our searches where possible.
Modrinth allows definining multiple loaders, while Flame only allows a
single value.
As a compromise we ask for Fabric mods only on Flame and for both Fabric
and Quilt mods on Modrinth.
-rw-r--r-- | launcher/modplatform/flame/FlameAPI.h | 11 | ||||
-rw-r--r-- | launcher/modplatform/flame/FlameModIndex.cpp | 6 | ||||
-rw-r--r-- | launcher/modplatform/modrinth/ModrinthAPI.h | 3 |
3 files changed, 17 insertions, 3 deletions
diff --git a/launcher/modplatform/flame/FlameAPI.h b/launcher/modplatform/flame/FlameAPI.h index 9bcc357e..ce02df65 100644 --- a/launcher/modplatform/flame/FlameAPI.h +++ b/launcher/modplatform/flame/FlameAPI.h @@ -23,7 +23,7 @@ class FlameAPI : public NetworkModAPI { .arg(args.offset) .arg(args.search) .arg(args.sorting) - .arg(args.mod_loader) + .arg(getMappedModLoader(args.mod_loader)) .arg(gameVersionStr); }; @@ -31,4 +31,13 @@ class FlameAPI : public NetworkModAPI { { return QString("https://addons-ecs.forgesvc.net/api/v2/addon/%1/files").arg(args.addonId); }; + + public: + static auto getMappedModLoader(const ModLoaderType type) -> const ModLoaderType + { + // TODO: remove this once Quilt drops official Fabric support + if (type == Quilt) // NOTE: Most if not all Fabric mods should work *currently* + return Fabric; + return type; + } }; diff --git a/launcher/modplatform/flame/FlameModIndex.cpp b/launcher/modplatform/flame/FlameModIndex.cpp index e86b64dd..c7b86b5c 100644 --- a/launcher/modplatform/flame/FlameModIndex.cpp +++ b/launcher/modplatform/flame/FlameModIndex.cpp @@ -3,6 +3,7 @@ #include "Json.h" #include "minecraft/MinecraftInstance.h" #include "minecraft/PackProfile.h" +#include "modplatform/flame/FlameAPI.h" #include "net/NetJob.h" void FlameMod::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj) @@ -43,8 +44,9 @@ void FlameMod::loadIndexedPackVersions(ModPlatform::IndexedPack& pack, BaseInstance* inst) { QVector<ModPlatform::IndexedVersion> unsortedVersions; - bool hasFabric = !(dynamic_cast<MinecraftInstance*>(inst))->getPackProfile()->getComponentVersion("net.fabricmc.fabric-loader").isEmpty(); - QString mcVersion = (dynamic_cast<MinecraftInstance*>(inst))->getPackProfile()->getComponentVersion("net.minecraft"); + auto profile = (dynamic_cast<MinecraftInstance*>(inst))->getPackProfile(); + bool hasFabric = FlameAPI::getMappedModLoader(profile->getModLoader()) == ModAPI::Fabric; + QString mcVersion = profile->getComponentVersion("net.minecraft"); for (auto versionIter : arr) { auto obj = versionIter.toObject(); diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h index 6604d772..84dd7d03 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.h +++ b/launcher/modplatform/modrinth/ModrinthAPI.h @@ -54,6 +54,9 @@ class ModrinthAPI : public NetworkModAPI { { 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); } |