aboutsummaryrefslogtreecommitdiff
path: root/launcher/modplatform/atlauncher
diff options
context:
space:
mode:
authorJamie Mansfield <jmansfield@cadixdev.org>2022-05-23 19:42:04 +0100
committerJamie Mansfield <jmansfield@cadixdev.org>2022-05-23 20:57:14 +0100
commitf28a0aa666565354e657dec59249aa1fd237cdb0 (patch)
tree0c60234bd22ce0ee8bdcfe96207ccfb03b36455c /launcher/modplatform/atlauncher
parentdca4ea5ceaa30f1285570d2bf32ea112118b9204 (diff)
downloadPrismLauncher-f28a0aa666565354e657dec59249aa1fd237cdb0.tar.gz
PrismLauncher-f28a0aa666565354e657dec59249aa1fd237cdb0.tar.bz2
PrismLauncher-f28a0aa666565354e657dec59249aa1fd237cdb0.zip
ATLauncher: Handle main class depends
Diffstat (limited to 'launcher/modplatform/atlauncher')
-rw-r--r--launcher/modplatform/atlauncher/ATLPackInstallTask.cpp20
-rw-r--r--launcher/modplatform/atlauncher/ATLPackManifest.cpp8
-rw-r--r--launcher/modplatform/atlauncher/ATLPackManifest.h8
3 files changed, 31 insertions, 5 deletions
diff --git a/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp b/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp
index 9b14f355..e6fd1334 100644
--- a/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp
+++ b/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp
@@ -414,10 +414,24 @@ bool PackInstallTask::createLibrariesComponent(QString instanceRoot, std::shared
bool PackInstallTask::createPackComponent(QString instanceRoot, std::shared_ptr<PackProfile> profile)
{
- if(m_version.mainClass == QString() && m_version.extraArguments == QString()) {
+ if (m_version.mainClass.mainClass.isEmpty() && m_version.extraArguments.isEmpty()) {
return true;
}
+ auto mainClass = m_version.mainClass.mainClass;
+
+ auto hasMainClassDepends = !m_version.mainClass.depends.isEmpty();
+ if (hasMainClassDepends) {
+ QSet<QString> mods;
+ for (const auto& item : m_version.mods) {
+ mods.insert(item.name);
+ }
+
+ if (hasMainClassDepends && !mods.contains(m_version.mainClass.depends)) {
+ mainClass = "";
+ }
+ }
+
auto uuid = QUuid::createUuid();
auto id = uuid.toString().remove('{').remove('}');
auto target_id = "org.multimc.atlauncher." + id;
@@ -442,8 +456,8 @@ bool PackInstallTask::createPackComponent(QString instanceRoot, std::shared_ptr<
auto f = std::make_shared<VersionFile>();
f->name = m_pack + " " + m_version_name;
- if(m_version.mainClass != QString() && !mainClasses.contains(m_version.mainClass)) {
- f->mainClass = m_version.mainClass;
+ if (!mainClass.isEmpty() && !mainClasses.contains(mainClass)) {
+ f->mainClass = mainClass;
}
// Parse out tweakers
diff --git a/launcher/modplatform/atlauncher/ATLPackManifest.cpp b/launcher/modplatform/atlauncher/ATLPackManifest.cpp
index d01ec32c..cec9896b 100644
--- a/launcher/modplatform/atlauncher/ATLPackManifest.cpp
+++ b/launcher/modplatform/atlauncher/ATLPackManifest.cpp
@@ -212,6 +212,12 @@ static void loadVersionMessages(ATLauncher::VersionMessages& m, QJsonObject& obj
m.update = Json::ensureString(obj, "update", "");
}
+static void loadVersionMainClass(ATLauncher::PackVersionMainClass& m, QJsonObject& obj)
+{
+ m.mainClass = Json::ensureString(obj, "mainClass", "");
+ m.depends = Json::ensureString(obj, "depends", "");
+}
+
void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj)
{
v.version = Json::requireString(obj, "version");
@@ -220,7 +226,7 @@ void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj)
if(obj.contains("mainClass")) {
auto main = Json::requireObject(obj, "mainClass");
- v.mainClass = Json::ensureString(main, "mainClass", "");
+ loadVersionMainClass(v.mainClass, main);
}
if(obj.contains("extraArguments")) {
diff --git a/launcher/modplatform/atlauncher/ATLPackManifest.h b/launcher/modplatform/atlauncher/ATLPackManifest.h
index 23e162e3..bf88d91d 100644
--- a/launcher/modplatform/atlauncher/ATLPackManifest.h
+++ b/launcher/modplatform/atlauncher/ATLPackManifest.h
@@ -150,12 +150,18 @@ struct VersionMessages
QString update;
};
+struct PackVersionMainClass
+{
+ QString mainClass;
+ QString depends;
+};
+
struct PackVersion
{
QString version;
QString minecraft;
bool noConfigs;
- QString mainClass;
+ PackVersionMainClass mainClass;
QString extraArguments;
VersionLoader loader;