From 77caaca50dab7ba8e455d641ac6b448052bc6799 Mon Sep 17 00:00:00 2001
From: Sefa Eyeoglu <contact@scrumplex.net>
Date: Thu, 19 May 2022 08:09:18 +0200
Subject: fix: only consider enabled mod loaders

---
 launcher/minecraft/PackProfile.cpp | 25 +++++++++++++++----------
 1 file changed, 15 insertions(+), 10 deletions(-)

(limited to 'launcher/minecraft/PackProfile.cpp')

diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp
index d53f41e1..87d11c4c 100644
--- a/launcher/minecraft/PackProfile.cpp
+++ b/launcher/minecraft/PackProfile.cpp
@@ -36,6 +36,13 @@
 #include "ComponentUpdateTask.h"
 
 #include "Application.h"
+#include "modplatform/ModAPI.h"
+
+static const QMap<QString, ModAPI::ModLoaderType> modloaderMapping{
+    {"net.minecraftforge", ModAPI::Forge},
+    {"net.fabricmc.fabric-loader", ModAPI::Fabric},
+    {"org.quiltmc.quilt-loader", ModAPI::Quilt}
+};
 
 PackProfile::PackProfile(MinecraftInstance * instance)
     : QAbstractListModel()
@@ -973,17 +980,15 @@ void PackProfile::disableInteraction(bool disable)
 
 ModAPI::ModLoaderType PackProfile::getModLoader()
 {
-    if (!getComponentVersion("net.minecraftforge").isEmpty())
-    {
-        return ModAPI::Forge;
-    }
-    else if (!getComponentVersion("net.fabricmc.fabric-loader").isEmpty())
-    {
-        return ModAPI::Fabric;
-    }
-    else if (!getComponentVersion("org.quiltmc.quilt-loader").isEmpty())
+    QMapIterator<QString, ModAPI::ModLoaderType> i(modloaderMapping);
+
+    while (i.hasNext())
     {
-        return ModAPI::Quilt;
+        i.next();
+        Component* c = getComponent(i.key());
+        if (c != nullptr && c->isEnabled()) {
+            return i.value();
+        }
     }
     return ModAPI::Unspecified;
 }
-- 
cgit