NOISSUE Handle extra arguments depends for ATLauncher

This commit is contained in:
Jamie Mansfield
2022-05-23 20:14:23 +01:00
parent f9924af2a0
commit c88f147ae4
3 changed files with 27 additions and 5 deletions

View File

@@ -357,14 +357,16 @@ bool PackInstallTask::createLibrariesComponent(QString instanceRoot, std::shared
bool PackInstallTask::createPackComponent(QString instanceRoot, std::shared_ptr<PackProfile> profile) bool PackInstallTask::createPackComponent(QString instanceRoot, std::shared_ptr<PackProfile> profile)
{ {
if(m_version.mainClass.mainClass.isEmpty() && m_version.extraArguments.isEmpty()) { if(m_version.mainClass.mainClass.isEmpty() && m_version.extraArguments.arguments.isEmpty()) {
return true; return true;
} }
auto mainClass = m_version.mainClass.mainClass; auto mainClass = m_version.mainClass.mainClass;
auto extraArguments = m_version.extraArguments.arguments;
auto hasMainClassDepends = !m_version.mainClass.depends.isEmpty(); auto hasMainClassDepends = !m_version.mainClass.depends.isEmpty();
if (hasMainClassDepends) { auto hasExtraArgumentsDepends = !m_version.extraArguments.depends.isEmpty();
if (hasMainClassDepends || hasExtraArgumentsDepends) {
QSet<QString> mods; QSet<QString> mods;
for (const auto& item : m_version.mods) { for (const auto& item : m_version.mods) {
mods.insert(item.name); mods.insert(item.name);
@@ -373,6 +375,14 @@ bool PackInstallTask::createPackComponent(QString instanceRoot, std::shared_ptr<
if (hasMainClassDepends && !mods.contains(m_version.mainClass.depends)) { if (hasMainClassDepends && !mods.contains(m_version.mainClass.depends)) {
mainClass = ""; mainClass = "";
} }
if (hasExtraArgumentsDepends && !mods.contains(m_version.extraArguments.depends)) {
extraArguments = "";
}
}
if (mainClass.isEmpty() && extraArguments.isEmpty()) {
return true;
} }
auto uuid = QUuid::createUuid(); auto uuid = QUuid::createUuid();
@@ -404,7 +414,7 @@ bool PackInstallTask::createPackComponent(QString instanceRoot, std::shared_ptr<
} }
// Parse out tweakers // Parse out tweakers
auto args = m_version.extraArguments.split(" "); auto args = extraArguments.split(" ");
QString previous; QString previous;
for(auto arg : args) { for(auto arg : args) {
if(arg.startsWith("--tweakClass=") || previous == "--tweakClass") { if(arg.startsWith("--tweakClass=") || previous == "--tweakClass") {

View File

@@ -191,6 +191,12 @@ static void loadVersionMainClass(ATLauncher::PackVersionMainClass & m, QJsonObje
m.depends = Json::ensureString(obj, "depends", ""); m.depends = Json::ensureString(obj, "depends", "");
} }
static void loadVersionExtraArguments(ATLauncher::PackVersionExtraArguments & a, QJsonObject & obj)
{
a.arguments = Json::ensureString(obj, "arguments", "");
a.depends = Json::ensureString(obj, "depends", "");
}
void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj) void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj)
{ {
v.version = Json::requireString(obj, "version"); v.version = Json::requireString(obj, "version");
@@ -204,7 +210,7 @@ void ATLauncher::loadVersion(PackVersion & v, QJsonObject & obj)
if(obj.contains("extraArguments")) { if(obj.contains("extraArguments")) {
auto arguments = Json::requireObject(obj, "extraArguments"); auto arguments = Json::requireObject(obj, "extraArguments");
v.extraArguments = Json::ensureString(arguments, "arguments", ""); loadVersionExtraArguments(v.extraArguments, arguments);
} }
if(obj.contains("loader")) { if(obj.contains("loader")) {

View File

@@ -128,13 +128,19 @@ struct PackVersionMainClass
QString depends; QString depends;
}; };
struct PackVersionExtraArguments
{
QString arguments;
QString depends;
};
struct PackVersion struct PackVersion
{ {
QString version; QString version;
QString minecraft; QString minecraft;
bool noConfigs; bool noConfigs;
PackVersionMainClass mainClass; PackVersionMainClass mainClass;
QString extraArguments; PackVersionExtraArguments extraArguments;
VersionLoader loader; VersionLoader loader;
QVector<VersionLibrary> libraries; QVector<VersionLibrary> libraries;