aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSefa Eyeoglu <contact@scrumplex.net>2022-04-15 12:38:27 +0200
committerSefa Eyeoglu <contact@scrumplex.net>2022-04-16 23:40:10 +0200
commitcab9afa45f7a7dfcb87080804f3a6ef90f953819 (patch)
treea97a3903cab017891973647ae3515cf38ae2dbae
parenta42d2afceee9f6ea0d209cfb03b178defff1ce60 (diff)
downloadPrismLauncher-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.h11
-rw-r--r--launcher/modplatform/flame/FlameModIndex.cpp6
-rw-r--r--launcher/modplatform/modrinth/ModrinthAPI.h3
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);
}