From f95856d06285a65caf0da7377f42f45c33d9603f Mon Sep 17 00:00:00 2001 From: timoreo Date: Thu, 30 Jun 2022 18:07:08 +0200 Subject: [PATCH 001/616] Add the base of java downloading Signed-off-by: timoreo --- launcher/CMakeLists.txt | 2 + launcher/JavaDownloader.cpp | 165 ++++++++++++++++++++++++++++++++++++ launcher/JavaDownloader.h | 8 ++ 3 files changed, 175 insertions(+) create mode 100644 launcher/JavaDownloader.cpp create mode 100644 launcher/JavaDownloader.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 79ac49c76..4e5508579 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -881,6 +881,8 @@ SET(LAUNCHER_SOURCES ui/instanceview/InstanceDelegate.h ui/instanceview/VisualGroup.cpp ui/instanceview/VisualGroup.h + JavaDownloader.cpp + JavaDownloader.h ) if(WIN32) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp new file mode 100644 index 000000000..43da2df01 --- /dev/null +++ b/launcher/JavaDownloader.cpp @@ -0,0 +1,165 @@ +#include "JavaDownloader.h" +#include "net/NetJob.h" +#include "Application.h" +#include "FileSystem.h" +#include "quazip.h" +#include "MMCZip.h" +#include "net/ChecksumValidator.h" + +//Quick & dirty struct to store files +struct File{ + QString path; + QString url; + QByteArray hash; +}; + +void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) { + //Query the adoptium API to get a good version + auto netJob = new NetJob(QString("JRE::QueryVersions"), APPLICATION->network()); + auto response = new QByteArray(); + netJob->addNetAction(Net::Download::makeByteArray(QUrl("https://launchermeta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); + QObject::connect(netJob, &NetJob::finished,[netJob, response]{ + netJob->deleteLater(); + delete response; + }); + QObject::connect(netJob, &NetJob::succeeded,[response, &OS, isLegacy] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response at " << parse_error.offset + << " reason: " << parse_error.errorString(); + qWarning() << *response; + return; + } + auto versionArray = doc.object()[OS].toObject()[isLegacy ? "jre-legacy" : "java-runtime-gamma"].toArray(); + if(!versionArray.empty()){ + auto url = versionArray[0].toObject()["manifest"].toObject()["url"].toString(); + auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); + auto files = new QByteArray(); + + download->addNetAction(Net::Download::makeByteArray(QUrl(url), files)); + + QObject::connect(download, &NetJob::finished,[download, files]{ + download->deleteLater(); + delete files; + }); + QObject::connect(download, &NetJob::succeeded,[files, isLegacy] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response at " << parse_error.offset + << " reason: " << parse_error.errorString(); + qWarning() << *files; + return; + } + + //valid json doc, begin making jre spot + auto output = FS::PathCombine(QCoreApplication::applicationDirPath(), QString("java/") + (isLegacy ? "java-legacy" : "java-current")); + FS::ensureFolderPathExists(output); + std::vector toDownload; + auto list = doc.object()["files"].toObject(); + for(auto element : list){ + auto obj = element.toObject(); + for(const auto& paths : obj.keys()){ + auto file = FS::PathCombine(output,paths); + + auto type = obj[paths].toObject()["type"].toString(); + if(type == "directory"){ + FS::ensureFolderPathExists(file); + }else if(type == "link"){ + //this is linux only ! + auto target = FS::PathCombine(file,"../"+obj[paths].toObject()["target"].toString()); + QFile(target).link(file); + }else if(type == "file"){ + //TODO download compressed version if it exists ? + auto raw = obj[paths].toObject()["downloads"].toObject()["raw"].toObject(); + auto f = File{file,raw["url"].toString(), QByteArray::fromHex(raw["sha1"].toString().toLatin1())}; + toDownload.push_back(f); + } + } + } + auto elementDownload = new NetJob("JRE::FileDownload", APPLICATION->network()); + for(const auto& file : toDownload){ + auto dl = Net::Download::makeFile(file.url,file.path); + dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, file.hash)); + elementDownload->addNetAction(dl); + } + QObject::connect(elementDownload, &NetJob::finished,[elementDownload]{ + elementDownload->deleteLater(); + }); + elementDownload->start(); + }); + download->start(); + }else{ + //mojang does not have a JRE for us, let's get azul zulu + QString javaVersion = isLegacy ? QString("8.0") : QString("17.0"); + QString azulOS; + QString arch; + QString bitness; + + if(OS == "mac-os-arm64"){ + //macos arm64 + azulOS = "macos"; + arch = "arm"; + bitness = "64"; + }else if(OS == "linux-aarch64"){ + //linux aarch64 + azulOS = "linux"; + arch = "arm"; + bitness = "64"; + } + auto metaResponse = new QByteArray(); + auto downloadJob = new NetJob(QString("JRE::QueryAzulMeta"), APPLICATION->network()); + downloadJob->addNetAction(Net::Download::makeByteArray(QString( + "https://api.azul.com/zulu/download/community/v1.0/bundles/?" + "java_version=%1" + "&os=%2" + "&arch=%3" + "&hw_bitness=%4" + "&ext=zip" //as a zip for all os, even linux + "&bundle_type=jre" //jre only + "&latest=true" //only get the one latest entry + ).arg(javaVersion,azulOS,arch,bitness), metaResponse)); + QObject::connect(downloadJob, &NetJob::finished,[downloadJob, metaResponse]{ + downloadJob->deleteLater(); + delete metaResponse; + }); + + QObject::connect(downloadJob, &NetJob::succeeded,[metaResponse, isLegacy] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*metaResponse, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response at " << parse_error.offset + << " reason: " << parse_error.errorString(); + qWarning() << *metaResponse; + return; + } + auto array = doc.array(); + if(!array.empty()){ + //JRE found ! download the zip + auto downloadURL = QUrl(array[0].toObject()["url"].toString()); + auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); + const QString path = downloadURL.host() + '/' + downloadURL.path(); + auto entry = APPLICATION->metacache()->resolveEntry("general", path); + entry->setStale(true); + download->addNetAction(Net::Download::makeCached(downloadURL,entry)); + auto zippath = entry->getFullPath(); + QObject::connect(download, &NetJob::finished,[download]{ + download->deleteLater(); + + }); + QObject::connect(download, &NetJob::succeeded,[isLegacy, zippath]{ + auto output = FS::PathCombine(FS::PathCombine(QCoreApplication::applicationDirPath(), "java"),isLegacy ? "java-legacy" : "java-current"); + //This should do all of the extracting and creating folders + MMCZip::extractDir(zippath, output); + }); + }else{ + qWarning() << "No suitable JRE found !!"; + } + }); + } + }); + + netJob->start(); + +} \ No newline at end of file diff --git a/launcher/JavaDownloader.h b/launcher/JavaDownloader.h new file mode 100644 index 000000000..cc073b54c --- /dev/null +++ b/launcher/JavaDownloader.h @@ -0,0 +1,8 @@ +#pragma once + +#include + +namespace JavaDownloader { + /*Downloads the java to the runtimes folder*/ + void downloadJava(bool isLegacy, const QString& OS); +} From 3433c102b70c1c74c882dd2fa19242725676ffe5 Mon Sep 17 00:00:00 2001 From: timoreo Date: Thu, 30 Jun 2022 18:13:52 +0200 Subject: [PATCH 002/616] Remove old comment and change to piston-meta Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index 43da2df01..f1a24a68c 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -14,10 +14,9 @@ struct File{ }; void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) { - //Query the adoptium API to get a good version auto netJob = new NetJob(QString("JRE::QueryVersions"), APPLICATION->network()); auto response = new QByteArray(); - netJob->addNetAction(Net::Download::makeByteArray(QUrl("https://launchermeta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); + netJob->addNetAction(Net::Download::makeByteArray(QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); QObject::connect(netJob, &NetJob::finished,[netJob, response]{ netJob->deleteLater(); delete response; From 9a4a92de4f90334a9dcf1b7b7712f628b232d480 Mon Sep 17 00:00:00 2001 From: timoreo Date: Fri, 1 Jul 2022 08:52:56 +0200 Subject: [PATCH 003/616] Clang format Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 124 +++++++++++++++++------------------- launcher/JavaDownloader.h | 6 +- 2 files changed, 63 insertions(+), 67 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index f1a24a68c..5c3d04a6d 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -1,158 +1,155 @@ #include "JavaDownloader.h" -#include "net/NetJob.h" #include "Application.h" #include "FileSystem.h" -#include "quazip.h" #include "MMCZip.h" #include "net/ChecksumValidator.h" +#include "net/NetJob.h" +#include "quazip.h" -//Quick & dirty struct to store files -struct File{ +// Quick & dirty struct to store files +struct File { QString path; QString url; QByteArray hash; }; -void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) { +void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) +{ auto netJob = new NetJob(QString("JRE::QueryVersions"), APPLICATION->network()); auto response = new QByteArray(); - netJob->addNetAction(Net::Download::makeByteArray(QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); - QObject::connect(netJob, &NetJob::finished,[netJob, response]{ + netJob->addNetAction(Net::Download::makeByteArray( + QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); + QObject::connect(netJob, &NetJob::finished, [netJob, response] { netJob->deleteLater(); delete response; }); - QObject::connect(netJob, &NetJob::succeeded,[response, &OS, isLegacy] { + QObject::connect(netJob, &NetJob::succeeded, [response, &OS, isLegacy] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset - << " reason: " << parse_error.errorString(); + qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); qWarning() << *response; return; } auto versionArray = doc.object()[OS].toObject()[isLegacy ? "jre-legacy" : "java-runtime-gamma"].toArray(); - if(!versionArray.empty()){ + if (!versionArray.empty()) { auto url = versionArray[0].toObject()["manifest"].toObject()["url"].toString(); auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); auto files = new QByteArray(); download->addNetAction(Net::Download::makeByteArray(QUrl(url), files)); - QObject::connect(download, &NetJob::finished,[download, files]{ + QObject::connect(download, &NetJob::finished, [download, files] { download->deleteLater(); delete files; }); - QObject::connect(download, &NetJob::succeeded,[files, isLegacy] { + QObject::connect(download, &NetJob::succeeded, [files, isLegacy] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset - << " reason: " << parse_error.errorString(); + qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); qWarning() << *files; return; } - //valid json doc, begin making jre spot - auto output = FS::PathCombine(QCoreApplication::applicationDirPath(), QString("java/") + (isLegacy ? "java-legacy" : "java-current")); + // valid json doc, begin making jre spot + auto output = + FS::PathCombine(QCoreApplication::applicationDirPath(), QString("java/") + (isLegacy ? "java-legacy" : "java-current")); FS::ensureFolderPathExists(output); std::vector toDownload; auto list = doc.object()["files"].toObject(); - for(auto element : list){ + for (auto element : list) { auto obj = element.toObject(); - for(const auto& paths : obj.keys()){ - auto file = FS::PathCombine(output,paths); + for (const auto& paths : obj.keys()) { + auto file = FS::PathCombine(output, paths); auto type = obj[paths].toObject()["type"].toString(); - if(type == "directory"){ + if (type == "directory") { FS::ensureFolderPathExists(file); - }else if(type == "link"){ - //this is linux only ! - auto target = FS::PathCombine(file,"../"+obj[paths].toObject()["target"].toString()); + } else if (type == "link") { + // this is linux only ! + auto target = FS::PathCombine(file, "../" + obj[paths].toObject()["target"].toString()); QFile(target).link(file); - }else if(type == "file"){ - //TODO download compressed version if it exists ? + } else if (type == "file") { + // TODO download compressed version if it exists ? auto raw = obj[paths].toObject()["downloads"].toObject()["raw"].toObject(); - auto f = File{file,raw["url"].toString(), QByteArray::fromHex(raw["sha1"].toString().toLatin1())}; + auto f = File{ file, raw["url"].toString(), QByteArray::fromHex(raw["sha1"].toString().toLatin1()) }; toDownload.push_back(f); } } } auto elementDownload = new NetJob("JRE::FileDownload", APPLICATION->network()); - for(const auto& file : toDownload){ - auto dl = Net::Download::makeFile(file.url,file.path); + for (const auto& file : toDownload) { + auto dl = Net::Download::makeFile(file.url, file.path); dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, file.hash)); elementDownload->addNetAction(dl); } - QObject::connect(elementDownload, &NetJob::finished,[elementDownload]{ - elementDownload->deleteLater(); - }); + QObject::connect(elementDownload, &NetJob::finished, [elementDownload] { elementDownload->deleteLater(); }); elementDownload->start(); }); download->start(); - }else{ - //mojang does not have a JRE for us, let's get azul zulu + } else { + // mojang does not have a JRE for us, let's get azul zulu QString javaVersion = isLegacy ? QString("8.0") : QString("17.0"); QString azulOS; QString arch; QString bitness; - if(OS == "mac-os-arm64"){ - //macos arm64 + if (OS == "mac-os-arm64") { + // macos arm64 azulOS = "macos"; arch = "arm"; bitness = "64"; - }else if(OS == "linux-aarch64"){ - //linux aarch64 + } else if (OS == "linux-aarch64") { + // linux aarch64 azulOS = "linux"; arch = "arm"; bitness = "64"; } auto metaResponse = new QByteArray(); auto downloadJob = new NetJob(QString("JRE::QueryAzulMeta"), APPLICATION->network()); - downloadJob->addNetAction(Net::Download::makeByteArray(QString( - "https://api.azul.com/zulu/download/community/v1.0/bundles/?" - "java_version=%1" - "&os=%2" - "&arch=%3" - "&hw_bitness=%4" - "&ext=zip" //as a zip for all os, even linux - "&bundle_type=jre" //jre only - "&latest=true" //only get the one latest entry - ).arg(javaVersion,azulOS,arch,bitness), metaResponse)); - QObject::connect(downloadJob, &NetJob::finished,[downloadJob, metaResponse]{ + downloadJob->addNetAction(Net::Download::makeByteArray(QString("https://api.azul.com/zulu/download/community/v1.0/bundles/?" + "java_version=%1" + "&os=%2" + "&arch=%3" + "&hw_bitness=%4" + "&ext=zip" // as a zip for all os, even linux + "&bundle_type=jre" // jre only + "&latest=true" // only get the one latest entry + ) + .arg(javaVersion, azulOS, arch, bitness), + metaResponse)); + QObject::connect(downloadJob, &NetJob::finished, [downloadJob, metaResponse] { downloadJob->deleteLater(); delete metaResponse; }); - QObject::connect(downloadJob, &NetJob::succeeded,[metaResponse, isLegacy] { + QObject::connect(downloadJob, &NetJob::succeeded, [metaResponse, isLegacy] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*metaResponse, &parse_error); if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset - << " reason: " << parse_error.errorString(); + qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); qWarning() << *metaResponse; return; } auto array = doc.array(); - if(!array.empty()){ - //JRE found ! download the zip + if (!array.empty()) { + // JRE found ! download the zip auto downloadURL = QUrl(array[0].toObject()["url"].toString()); auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); const QString path = downloadURL.host() + '/' + downloadURL.path(); auto entry = APPLICATION->metacache()->resolveEntry("general", path); entry->setStale(true); - download->addNetAction(Net::Download::makeCached(downloadURL,entry)); + download->addNetAction(Net::Download::makeCached(downloadURL, entry)); auto zippath = entry->getFullPath(); - QObject::connect(download, &NetJob::finished,[download]{ - download->deleteLater(); - - }); - QObject::connect(download, &NetJob::succeeded,[isLegacy, zippath]{ - auto output = FS::PathCombine(FS::PathCombine(QCoreApplication::applicationDirPath(), "java"),isLegacy ? "java-legacy" : "java-current"); - //This should do all of the extracting and creating folders + QObject::connect(download, &NetJob::finished, [download] { download->deleteLater(); }); + QObject::connect(download, &NetJob::succeeded, [isLegacy, zippath] { + auto output = FS::PathCombine(FS::PathCombine(QCoreApplication::applicationDirPath(), "java"), + isLegacy ? "java-legacy" : "java-current"); + // This should do all of the extracting and creating folders MMCZip::extractDir(zippath, output); }); - }else{ + } else { qWarning() << "No suitable JRE found !!"; } }); @@ -160,5 +157,4 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) { }); netJob->start(); - } \ No newline at end of file diff --git a/launcher/JavaDownloader.h b/launcher/JavaDownloader.h index cc073b54c..3dd57eebe 100644 --- a/launcher/JavaDownloader.h +++ b/launcher/JavaDownloader.h @@ -3,6 +3,6 @@ #include namespace JavaDownloader { - /*Downloads the java to the runtimes folder*/ - void downloadJava(bool isLegacy, const QString& OS); -} +/*Downloads the java to the runtimes folder*/ +void downloadJava(bool isLegacy, const QString& OS); +} // namespace JavaDownloader From a97387b692456cae3b13b48ea9e5901712334f4c Mon Sep 17 00:00:00 2001 From: timoreo Date: Fri, 1 Jul 2022 09:37:23 +0200 Subject: [PATCH 004/616] Cherry-pick SysInfo from #680 Signed-off-by: timoreo --- launcher/CMakeLists.txt | 2 + launcher/SysInfo.cpp | 155 ++++++++++++++++++++++++++++++++++++++++ launcher/SysInfo.h | 13 ++++ 3 files changed, 170 insertions(+) create mode 100644 launcher/SysInfo.cpp create mode 100644 launcher/SysInfo.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 4e5508579..c4d9cb74f 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -580,6 +580,8 @@ SET(LAUNCHER_SOURCES UpdateController.h ApplicationMessage.h ApplicationMessage.cpp + SysInfo.h + SysInfo.cpp # GUI - general utilities DesktopServices.h diff --git a/launcher/SysInfo.cpp b/launcher/SysInfo.cpp new file mode 100644 index 000000000..4abf39301 --- /dev/null +++ b/launcher/SysInfo.cpp @@ -0,0 +1,155 @@ +#include +#include +#include "settings/SettingsObject.h" +#ifdef Q_OS_MACOS +#include +#endif +#include +#include +#include +#include "MessageLevel.h" +#include +#include +#include +#include "java/JavaUtils.h" +#include "FileSystem.h" +#include "Commandline.h" +#include "Application.h" + +#ifdef Q_OS_MACOS +bool rosettaDetect() { + int ret = 0; + size_t size = sizeof(ret); + if (sysctlbyname("sysctl.proc_translated", &ret, &size, NULL, 0) == -1) + { + return false; + } + if(ret == 0) + { + return false; + } + if(ret == 1) + { + return true; + } + return false; +} +#endif + +namespace SysInfo { +QString currentSystem() { +#if defined(Q_OS_LINUX) + return "linux"; +#elif defined(Q_OS_MACOS) + return "osx"; +#elif defined(Q_OS_WINDOWS) + return "windows"; +#elif defined(Q_OS_FREEBSD) + return "freebsd"; +#elif defined(Q_OS_OPENBSD) + return "openbsd"; +#else + return "unknown"; +#endif +} + +QString useQTForArch(){ + auto qtArch = QSysInfo::currentCpuArchitecture(); +#if defined(Q_OS_MACOS) && !defined(Q_PROCESSOR_ARM) + if(rosettaDetect()) + { + return "arm64"; + } + else + { + return "x86_64"; + } +#endif + return qtArch; +} + +QString runCheckerForArch(const SettingsObjectPtr& settingsObj){ + QString checkerJar = FS::PathCombine(APPLICATION->getJarsPath(), "JavaCheck.jar"); + + QStringList args; + + QProcessPtr process = new QProcess(); + args.append({"-jar", checkerJar}); + process->setArguments(args); + process->setProgram(settingsObj->get("JavaPath").toString()); + process->setProcessChannelMode(QProcess::SeparateChannels); + process->setProcessEnvironment(CleanEnviroment()); + qDebug() << "Running java checker: " + settingsObj->get("JavaPath").toString() + args.join(" ");; + + process->start(); + if(!process->waitForFinished(15000)){ + // we've been waiting for 15 seconds! wtf! OR... it already finished. But HOW WOULD THAT HAPPEN? + process->kill(); // die. BUUURNNNN + // fallback to using polymc arch + return useQTForArch(); + } else { + // yay we can use the java arch + QString stdout_javaChecker; + QString stderr_javaChecker; + + // process stdout + QByteArray data = process->readAllStandardOutput(); + QString added = QString::fromLocal8Bit(data); + added.remove('\r'); + stdout_javaChecker += added; + + // process stderr + data = process->readAllStandardError(); + added = QString::fromLocal8Bit(data); + added.remove('\r'); + stderr_javaChecker += added; + + QMap results; + QStringList lines = stdout_javaChecker.split("\n", QString::SkipEmptyParts); + for(QString line : lines) + { + line = line.trimmed(); + // NOTE: workaround for GH-4125, where garbage is getting printed into stdout on bedrock linux + if (line.contains("/bedrock/strata")) { + continue; + } + + auto parts = line.split('=', QString::SkipEmptyParts); + if(parts.size() != 2 || parts[0].isEmpty() || parts[1].isEmpty()) + { + continue; + } + else + { + results.insert(parts[0], parts[1]); + } + } + + if(!results.contains("os.arch") || !results.contains("java.version") || !results.contains("java.vendor")) + { + // wtf man why + // fallback to using polymc arch + return useQTForArch(); + } + + return results["os.arch"]; + } +} + +QString currentArch(const SettingsObjectPtr& settingsObj) { + auto realJavaArchitecture = settingsObj->get("JavaRealArchitecture").toString(); + if(realJavaArchitecture == ""){ + //BRO WHY NOW I HAVE TO USE A JAVA CHECKER >:( + qDebug() << "SysInfo: BRO I HAVE TO USE A JAVA CHECKER WHY IS JAVA ARCH BORKED"; + settingsObj->set("JavaRealArchitecture", runCheckerForArch(settingsObj)); + realJavaArchitecture = settingsObj->get("JavaRealArchitecture").toString(); + } + //qDebug() << "SysInfo: realJavaArch = " << realJavaArchitecture; + if(realJavaArchitecture == "aarch64"){ + return "arm64"; + } else { + return realJavaArchitecture; + } +} +} + diff --git a/launcher/SysInfo.h b/launcher/SysInfo.h new file mode 100644 index 000000000..a4e41e674 --- /dev/null +++ b/launcher/SysInfo.h @@ -0,0 +1,13 @@ +#include +#include "settings/SettingsObject.h" +#ifdef Q_OS_MACOS +#include +#endif + +namespace SysInfo { +QString currentSystem(); +QString currentArch(const SettingsObjectPtr& settingsObj); +QString runCheckerForArch(const SettingsObjectPtr& settingsObj); +QString useQTForArch(); +} + From 98a82cd4847160f41e728403efee51ebc4d2b60a Mon Sep 17 00:00:00 2001 From: timoreo Date: Fri, 1 Jul 2022 14:03:45 +0200 Subject: [PATCH 005/616] Fix MMCZip bugs Signed-off-by: timoreo --- launcher/MMCZip.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/launcher/MMCZip.cpp b/launcher/MMCZip.cpp index 9f4e968f7..3b5c44425 100644 --- a/launcher/MMCZip.cpp +++ b/launcher/MMCZip.cpp @@ -300,6 +300,11 @@ std::optional MMCZip::extractSubDir(QuaZip *zip, const QString & su name.remove(0, subdir.size()); auto original_name = name; + // Fix subdirs/files ending with a / getting transformed into absolute paths + if(name.startsWith('/')){ + name = name.mid(1); + } + // Fix weird "folders with a single file get squashed" thing QString path; if(name.contains('/') && !name.endsWith('/')){ @@ -319,6 +324,11 @@ std::optional MMCZip::extractSubDir(QuaZip *zip, const QString & su absFilePath = directory.absoluteFilePath(path + name); } + //Block potential file traversal issues + if(!absFilePath.startsWith(directory.absolutePath())){ + qWarning() << "Potential file traversal issue, for path " << absFilePath << " with base name as " << directory.absolutePath(); + continue; + } if (!JlCompress::extractFile(zip, "", absFilePath)) { qWarning() << "Failed to extract file" << original_name << "to" << absFilePath; From 89ce80b27960e66efccfaee20b3baf1596a8ba53 Mon Sep 17 00:00:00 2001 From: timoreo Date: Fri, 1 Jul 2022 14:05:14 +0200 Subject: [PATCH 006/616] Fix Java downloader bugs + Add a test button in JavaPage Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 63 ++++++++++++++++----------- launcher/ui/pages/global/JavaPage.cpp | 41 +++++++++++++++++ launcher/ui/pages/global/JavaPage.h | 1 + launcher/ui/pages/global/JavaPage.ui | 11 ++++- 4 files changed, 88 insertions(+), 28 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index 5c3d04a6d..3af69f025 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -1,6 +1,7 @@ #include "JavaDownloader.h" #include "Application.h" #include "FileSystem.h" +#include "Json.h" #include "MMCZip.h" #include "net/ChecksumValidator.h" #include "net/NetJob.h" @@ -11,6 +12,7 @@ struct File { QString path; QString url; QByteArray hash; + bool isExec; }; void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) @@ -23,7 +25,7 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) netJob->deleteLater(); delete response; }); - QObject::connect(netJob, &NetJob::succeeded, [response, &OS, isLegacy] { + QObject::connect(netJob, &NetJob::succeeded, [response, OS, isLegacy] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -31,7 +33,7 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) qWarning() << *response; return; } - auto versionArray = doc.object()[OS].toObject()[isLegacy ? "jre-legacy" : "java-runtime-gamma"].toArray(); + auto versionArray = Json::ensureArray(Json::ensureObject(doc.object(), OS), isLegacy ? "jre-legacy" : "java-runtime-gamma"); if (!versionArray.empty()) { auto url = versionArray[0].toObject()["manifest"].toObject()["url"].toString(); auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); @@ -53,35 +55,37 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) } // valid json doc, begin making jre spot - auto output = - FS::PathCombine(QCoreApplication::applicationDirPath(), QString("java/") + (isLegacy ? "java-legacy" : "java-current")); + auto output = FS::PathCombine(QString("java"), (isLegacy ? "java-legacy" : "java-current")); FS::ensureFolderPathExists(output); std::vector toDownload; auto list = doc.object()["files"].toObject(); - for (auto element : list) { - auto obj = element.toObject(); - for (const auto& paths : obj.keys()) { - auto file = FS::PathCombine(output, paths); + for (const auto& paths : list.keys()) { + auto file = FS::PathCombine(output, paths); - auto type = obj[paths].toObject()["type"].toString(); - if (type == "directory") { - FS::ensureFolderPathExists(file); - } else if (type == "link") { - // this is linux only ! - auto target = FS::PathCombine(file, "../" + obj[paths].toObject()["target"].toString()); - QFile(target).link(file); - } else if (type == "file") { - // TODO download compressed version if it exists ? - auto raw = obj[paths].toObject()["downloads"].toObject()["raw"].toObject(); - auto f = File{ file, raw["url"].toString(), QByteArray::fromHex(raw["sha1"].toString().toLatin1()) }; - toDownload.push_back(f); - } + auto type = list[paths].toObject()["type"].toString(); + if (type == "directory") { + FS::ensureFolderPathExists(file); + } else if (type == "link") { + // this is linux only ! + auto target = FS::PathCombine(file, "../" + list[paths].toObject()["target"].toString()); + QFile(target).link(file); + } else if (type == "file") { + // TODO download compressed version if it exists ? + auto raw = list[paths].toObject()["downloads"].toObject()["raw"].toObject(); + auto isExec = list[paths].toObject()["executable"].toBool(); + auto f = File{ file, raw["url"].toString(), QByteArray::fromHex(raw["sha1"].toString().toLatin1()), isExec }; + toDownload.push_back(f); } } auto elementDownload = new NetJob("JRE::FileDownload", APPLICATION->network()); for (const auto& file : toDownload) { auto dl = Net::Download::makeFile(file.url, file.path); dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, file.hash)); + if (file.isExec) { + QObject::connect(dl.get(), &Net::Download::succeeded, [file] { + QFile(file.path).setPermissions(QFile(file.path).permissions() | QFileDevice::Permissions(0x1111)); + }); + } elementDownload->addNetAction(dl); } QObject::connect(elementDownload, &NetJob::finished, [elementDownload] { elementDownload->deleteLater(); }); @@ -90,7 +94,7 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) download->start(); } else { // mojang does not have a JRE for us, let's get azul zulu - QString javaVersion = isLegacy ? QString("8.0") : QString("17.0"); + QString javaVersion = isLegacy ? QString("8.0") : QString("18.0"); QString azulOS; QString arch; QString bitness; @@ -100,11 +104,16 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) azulOS = "macos"; arch = "arm"; bitness = "64"; - } else if (OS == "linux-aarch64") { - // linux aarch64 + } else if (OS == "linux-arm64") { + // linux arm64 azulOS = "linux"; arch = "arm"; bitness = "64"; + } else if (OS == "linux-arm") { + // linux arm (32) + azulOS = "linux"; + arch = "arm"; + bitness = "32"; } auto metaResponse = new QByteArray(); auto downloadJob = new NetJob(QString("JRE::QueryAzulMeta"), APPLICATION->network()); @@ -143,16 +152,18 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) download->addNetAction(Net::Download::makeCached(downloadURL, entry)); auto zippath = entry->getFullPath(); QObject::connect(download, &NetJob::finished, [download] { download->deleteLater(); }); - QObject::connect(download, &NetJob::succeeded, [isLegacy, zippath] { + QObject::connect(download, &NetJob::succeeded, [isLegacy, zippath, downloadURL] { auto output = FS::PathCombine(FS::PathCombine(QCoreApplication::applicationDirPath(), "java"), isLegacy ? "java-legacy" : "java-current"); // This should do all of the extracting and creating folders - MMCZip::extractDir(zippath, output); + MMCZip::extractDir(zippath, downloadURL.fileName().chopped(4), output); }); + download->start(); } else { qWarning() << "No suitable JRE found !!"; } }); + downloadJob->start(); } }); diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 2cee15bf1..a57a8ee06 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -52,6 +52,9 @@ #include #include "Application.h" #include +#include "SysInfo.h" +#include "JavaDownloader.h" + JavaPage::JavaPage(QWidget *parent) : QWidget(parent), ui(new Ui::JavaPage) { @@ -177,6 +180,44 @@ void JavaPage::on_javaTestBtn_clicked() checker->run(); } +void JavaPage::on_javaDownloadBtn_clicked(){ + QString sys = SysInfo::currentSystem(); + if(sys == "osx"){ + sys = "mac-os"; + } + QString arch = SysInfo::useQTForArch(); + QString version; + if(sys == "windows"){ + if(arch == "x86_64"){ + version = "windows-x64"; + }else if(arch == "i386"){ + version = "windows-x86"; + }else{ + //Unknown, maybe arm, appending arch for downloader + version = "windows-"+arch; + } + }else if(sys == "mac-os"){ + if(arch == "arm64"){ + version = "mac-os-arm64"; + }else{ + version = "mac-os"; + } + }else if(sys == "linux"){ + if(arch == "x86_64"){ + version = "linux"; + }else { + // will work for i386, and arm(64) + version = "linux-" + arch; + } + }else{ + // ? ? ? ? ? unknown os, at least it won't have a java version on mojang or azul, display warning + QMessageBox::warning(this, tr("Unknown OS"), tr("The OS you are running is not supported by Mojang or Azul. Please install Java manually.")); + return; + } + //TODO display a selection for java 8 or 18 + JavaDownloader::downloadJava(false, version); +} + void JavaPage::checkerFinished() { checker.reset(); diff --git a/launcher/ui/pages/global/JavaPage.h b/launcher/ui/pages/global/JavaPage.h index 64d4098e5..aa06dc0be 100644 --- a/launcher/ui/pages/global/JavaPage.h +++ b/launcher/ui/pages/global/JavaPage.h @@ -85,6 +85,7 @@ slots: void on_javaDetectBtn_clicked(); void on_javaTestBtn_clicked(); void on_javaBrowseBtn_clicked(); + void on_javaDownloadBtn_clicked(); void checkerFinished(); private: diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index 6ccffed4d..c109efbfc 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -6,8 +6,8 @@ 0 0 - 545 - 580 + 559 + 659 @@ -279,6 +279,13 @@ + + + + Download Java + + + From 54ad91c3b79dbd3379e6f0e1c7bc76f149fc6794 Mon Sep 17 00:00:00 2001 From: timoreo Date: Fri, 1 Jul 2022 14:18:34 +0200 Subject: [PATCH 007/616] Anti-scrumped Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index 3af69f025..09aeed5de 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -168,4 +168,4 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) }); netJob->start(); -} \ No newline at end of file +} From 53ddba80778e7c232cd778c1eabc0bc36c3f6414 Mon Sep 17 00:00:00 2001 From: timoreo Date: Sun, 10 Jul 2022 19:56:52 +0200 Subject: [PATCH 008/616] Made JavaDownloader a task and added some quick UI Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 51 +++++++++++++++++---------- launcher/JavaDownloader.h | 17 ++++++--- launcher/ui/pages/global/JavaPage.cpp | 28 +++++++++++---- 3 files changed, 67 insertions(+), 29 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index 09aeed5de..d72f66f36 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -15,17 +15,21 @@ struct File { bool isExec; }; -void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) +void JavaDownloader::executeTask() { + auto OS = m_OS; + auto isLegacy = m_isLegacy; auto netJob = new NetJob(QString("JRE::QueryVersions"), APPLICATION->network()); auto response = new QByteArray(); + setStatus(tr("Querying mojang meta")); netJob->addNetAction(Net::Download::makeByteArray( QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); QObject::connect(netJob, &NetJob::finished, [netJob, response] { netJob->deleteLater(); delete response; }); - QObject::connect(netJob, &NetJob::succeeded, [response, OS, isLegacy] { + QObject::connect(netJob, &NetJob::progress, this, &JavaDownloader::progress); + QObject::connect(netJob, &NetJob::succeeded, [response, OS, isLegacy, this] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -35,6 +39,7 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) } auto versionArray = Json::ensureArray(Json::ensureObject(doc.object(), OS), isLegacy ? "jre-legacy" : "java-runtime-gamma"); if (!versionArray.empty()) { + setStatus(tr("Downloading java from Mojang")); auto url = versionArray[0].toObject()["manifest"].toObject()["url"].toString(); auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); auto files = new QByteArray(); @@ -45,7 +50,8 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) download->deleteLater(); delete files; }); - QObject::connect(download, &NetJob::succeeded, [files, isLegacy] { + QObject::connect(download, &NetJob::progress, this, &JavaDownloader::progress); + QObject::connect(download, &NetJob::succeeded, [files, isLegacy, this] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -89,12 +95,14 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) elementDownload->addNetAction(dl); } QObject::connect(elementDownload, &NetJob::finished, [elementDownload] { elementDownload->deleteLater(); }); + QObject::connect(elementDownload, &NetJob::succeeded, [this]{emitSucceeded();}); elementDownload->start(); }); download->start(); } else { // mojang does not have a JRE for us, let's get azul zulu - QString javaVersion = isLegacy ? QString("8.0") : QString("18.0"); + setStatus(tr("Querying Azul meta")); + QString javaVersion = isLegacy ? QString("8.0") : QString("17.0"); QString azulOS; QString arch; QString bitness; @@ -117,23 +125,24 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) } auto metaResponse = new QByteArray(); auto downloadJob = new NetJob(QString("JRE::QueryAzulMeta"), APPLICATION->network()); - downloadJob->addNetAction(Net::Download::makeByteArray(QString("https://api.azul.com/zulu/download/community/v1.0/bundles/?" - "java_version=%1" - "&os=%2" - "&arch=%3" - "&hw_bitness=%4" - "&ext=zip" // as a zip for all os, even linux - "&bundle_type=jre" // jre only - "&latest=true" // only get the one latest entry - ) - .arg(javaVersion, azulOS, arch, bitness), - metaResponse)); + downloadJob->addNetAction( + Net::Download::makeByteArray(QString("https://api.azul.com/zulu/download/community/v1.0/bundles/?" + "java_version=%1" + "&os=%2" + "&arch=%3" + "&hw_bitness=%4" + "&ext=zip" // as a zip for all os, even linux NOTE !! Linux ARM is .deb only !! + "&bundle_type=jre" // jre only + "&latest=true" // only get the one latest entry + ) + .arg(javaVersion, azulOS, arch, bitness), + metaResponse)); QObject::connect(downloadJob, &NetJob::finished, [downloadJob, metaResponse] { downloadJob->deleteLater(); delete metaResponse; }); - - QObject::connect(downloadJob, &NetJob::succeeded, [metaResponse, isLegacy] { + QObject::connect(downloadJob, &NetJob::progress, this, &JavaDownloader::progress); + QObject::connect(downloadJob, &NetJob::succeeded, [metaResponse, isLegacy, this] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*metaResponse, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -144,6 +153,7 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) auto array = doc.array(); if (!array.empty()) { // JRE found ! download the zip + setStatus(tr("Downloading java from Azul")); auto downloadURL = QUrl(array[0].toObject()["url"].toString()); auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); const QString path = downloadURL.host() + '/' + downloadURL.path(); @@ -152,15 +162,18 @@ void JavaDownloader::downloadJava(bool isLegacy, const QString& OS) download->addNetAction(Net::Download::makeCached(downloadURL, entry)); auto zippath = entry->getFullPath(); QObject::connect(download, &NetJob::finished, [download] { download->deleteLater(); }); - QObject::connect(download, &NetJob::succeeded, [isLegacy, zippath, downloadURL] { + QObject::connect(download, &NetJob::progress, this, &JavaDownloader::progress); + QObject::connect(download, &NetJob::succeeded, [isLegacy, zippath, downloadURL, this] { + setStatus(tr("Extracting java")); auto output = FS::PathCombine(FS::PathCombine(QCoreApplication::applicationDirPath(), "java"), isLegacy ? "java-legacy" : "java-current"); // This should do all of the extracting and creating folders MMCZip::extractDir(zippath, downloadURL.fileName().chopped(4), output); + emitSucceeded(); }); download->start(); } else { - qWarning() << "No suitable JRE found !!"; + emitFailed(tr("No suitable JRE found")); } }); downloadJob->start(); diff --git a/launcher/JavaDownloader.h b/launcher/JavaDownloader.h index 3dd57eebe..3b7a7c425 100644 --- a/launcher/JavaDownloader.h +++ b/launcher/JavaDownloader.h @@ -1,8 +1,17 @@ #pragma once #include +#include "tasks/Task.h" -namespace JavaDownloader { -/*Downloads the java to the runtimes folder*/ -void downloadJava(bool isLegacy, const QString& OS); -} // namespace JavaDownloader +class JavaDownloader : public Task { + Q_OBJECT + public: + /*Downloads the java to the runtimes folder*/ + explicit JavaDownloader(bool isLegacy, const QString& OS) : m_isLegacy(isLegacy), m_OS(OS) {} + + void executeTask() override; + + private: + bool m_isLegacy; + const QString& m_OS; +}; diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index a57a8ee06..2cc627b7d 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -48,13 +48,14 @@ #include "java/JavaUtils.h" #include "java/JavaInstallList.h" -#include "settings/SettingsObject.h" #include -#include "Application.h" #include -#include "SysInfo.h" +#include "Application.h" #include "JavaDownloader.h" - +#include "SysInfo.h" +#include "settings/SettingsObject.h" +#include "ui/dialogs/ProgressDialog.h" +#include JavaPage::JavaPage(QWidget *parent) : QWidget(parent), ui(new Ui::JavaPage) { @@ -214,8 +215,23 @@ void JavaPage::on_javaDownloadBtn_clicked(){ QMessageBox::warning(this, tr("Unknown OS"), tr("The OS you are running is not supported by Mojang or Azul. Please install Java manually.")); return; } - //TODO display a selection for java 8 or 18 - JavaDownloader::downloadJava(false, version); + //Selection using QMessageBox for java 8 or 17 + QMessageBox box(QMessageBox::Icon::Question, tr("Java version"), tr("Do you want to download Java version 8 or 17?\n Java 8 is recommended for minecraft versions below 1.17\n Java 17 is recommended for minecraft versions above or equal to 1.17"), + QMessageBox::NoButton, this); + box.addButton("Java 17", QMessageBox::YesRole); + auto no = box.addButton("Java 8", QMessageBox::NoRole); + auto cancel = box.addButton(tr("Download both"), QMessageBox::AcceptRole); + box.exec(); + bool isLegacy = box.clickedButton() == no; + + auto down = new JavaDownloader(isLegacy, version); + ProgressDialog dialog(this); + dialog.execWithTask(down); + if(box.clickedButton() == cancel) { + auto dwn = new JavaDownloader(false, version); + ProgressDialog dg(this); + dg.execWithTask(dwn); + } } void JavaPage::checkerFinished() From f946964490c181700cbc0b1b479fd6089f4ba02e Mon Sep 17 00:00:00 2001 From: timoreo Date: Sun, 10 Jul 2022 20:21:52 +0200 Subject: [PATCH 009/616] Regrab a few changes on SysInfo Signed-off-by: timoreo --- launcher/CMakeLists.txt | 2 ++ launcher/SysInfo.cpp | 32 ++++++++++++++++------- launcher/SysInfo.h | 9 +++---- launcher/minecraft/LaunchContext.cpp | 39 ++++++++++++++++++++++++++++ launcher/minecraft/LaunchContext.h | 34 ++++++++++++++++++++++++ 5 files changed, 102 insertions(+), 14 deletions(-) create mode 100644 launcher/minecraft/LaunchContext.cpp create mode 100644 launcher/minecraft/LaunchContext.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index c4d9cb74f..c467957a8 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -271,6 +271,8 @@ set(MINECRAFT_SOURCES minecraft/GradleSpecifier.h minecraft/MinecraftInstance.cpp minecraft/MinecraftInstance.h + minecraft/LaunchContext.cpp + minecraft/LaunchContext.h minecraft/LaunchProfile.cpp minecraft/LaunchProfile.h minecraft/Component.cpp diff --git a/launcher/SysInfo.cpp b/launcher/SysInfo.cpp index 4abf39301..010eb84c8 100644 --- a/launcher/SysInfo.cpp +++ b/launcher/SysInfo.cpp @@ -1,6 +1,6 @@ #include #include -#include "settings/SettingsObject.h" +#include "minecraft/LaunchContext.h" #ifdef Q_OS_MACOS #include #endif @@ -68,18 +68,24 @@ QString useQTForArch(){ return qtArch; } -QString runCheckerForArch(const SettingsObjectPtr& settingsObj){ - QString checkerJar = FS::PathCombine(APPLICATION->getJarsPath(), "JavaCheck.jar"); +QString runCheckerForArch(LaunchContext launchContext){ + QString checkerJar = JavaUtils::getJavaCheckPath(); + + if (checkerJar.isEmpty()) + { + qDebug() << "Java checker library could not be found. Please check your installation."; + return useQTForArch(); + } QStringList args; QProcessPtr process = new QProcess(); args.append({"-jar", checkerJar}); process->setArguments(args); - process->setProgram(settingsObj->get("JavaPath").toString()); + process->setProgram(launchContext.getJavaPath().toString()); process->setProcessChannelMode(QProcess::SeparateChannels); process->setProcessEnvironment(CleanEnviroment()); - qDebug() << "Running java checker: " + settingsObj->get("JavaPath").toString() + args.join(" ");; + qDebug() << "Running java checker: " + launchContext.getJavaPath().toString() + args.join(" ");; process->start(); if(!process->waitForFinished(15000)){ @@ -105,7 +111,11 @@ QString runCheckerForArch(const SettingsObjectPtr& settingsObj){ stderr_javaChecker += added; QMap results; +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + QStringList lines = stdout_javaChecker.split("\n", Qt::SkipEmptyParts); +#else QStringList lines = stdout_javaChecker.split("\n", QString::SkipEmptyParts); +#endif for(QString line : lines) { line = line.trimmed(); @@ -114,7 +124,11 @@ QString runCheckerForArch(const SettingsObjectPtr& settingsObj){ continue; } +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + auto parts = line.split('=', Qt::SkipEmptyParts); +#else auto parts = line.split('=', QString::SkipEmptyParts); +#endif if(parts.size() != 2 || parts[0].isEmpty() || parts[1].isEmpty()) { continue; @@ -136,13 +150,13 @@ QString runCheckerForArch(const SettingsObjectPtr& settingsObj){ } } -QString currentArch(const SettingsObjectPtr& settingsObj) { - auto realJavaArchitecture = settingsObj->get("JavaRealArchitecture").toString(); +QString currentArch(LaunchContext launchContext) { + auto realJavaArchitecture = launchContext.getRealJavaArch().toString(); if(realJavaArchitecture == ""){ //BRO WHY NOW I HAVE TO USE A JAVA CHECKER >:( qDebug() << "SysInfo: BRO I HAVE TO USE A JAVA CHECKER WHY IS JAVA ARCH BORKED"; - settingsObj->set("JavaRealArchitecture", runCheckerForArch(settingsObj)); - realJavaArchitecture = settingsObj->get("JavaRealArchitecture").toString(); + launchContext.setRealJavaArch(runCheckerForArch(launchContext)); + realJavaArchitecture = launchContext.getRealJavaArch().toString(); } //qDebug() << "SysInfo: realJavaArch = " << realJavaArchitecture; if(realJavaArchitecture == "aarch64"){ diff --git a/launcher/SysInfo.h b/launcher/SysInfo.h index a4e41e674..280757674 100644 --- a/launcher/SysInfo.h +++ b/launcher/SysInfo.h @@ -1,13 +1,12 @@ #include -#include "settings/SettingsObject.h" +#include "minecraft/LaunchContext.h" #ifdef Q_OS_MACOS #include #endif namespace SysInfo { QString currentSystem(); -QString currentArch(const SettingsObjectPtr& settingsObj); -QString runCheckerForArch(const SettingsObjectPtr& settingsObj); +QString currentArch(LaunchContext launchContext); +QString runCheckerForArch(LaunchContext launchContext); QString useQTForArch(); -} - +} \ No newline at end of file diff --git a/launcher/minecraft/LaunchContext.cpp b/launcher/minecraft/LaunchContext.cpp new file mode 100644 index 000000000..b445d9ae1 --- /dev/null +++ b/launcher/minecraft/LaunchContext.cpp @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * PolyMC - Minecraft Launcher + * Copyright (C) 2022 Toshit Chawda + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "LaunchContext.h" + +LaunchContext::LaunchContext(SettingsObjectPtr instanceSettings){ + m_instanceSettings = instanceSettings; +} + +void LaunchContext::setRealJavaArch(QVariant realJavaArch) +{ + m_instanceSettings->set("JavaRealArchitecture", realJavaArch); +} + +QVariant LaunchContext::getRealJavaArch() +{ + return m_instanceSettings->get("JavaRealArchitecture"); +} + +QVariant LaunchContext::getJavaPath() +{ + return m_instanceSettings->get("JavaPath"); +} \ No newline at end of file diff --git a/launcher/minecraft/LaunchContext.h b/launcher/minecraft/LaunchContext.h new file mode 100644 index 000000000..0d322a2ea --- /dev/null +++ b/launcher/minecraft/LaunchContext.h @@ -0,0 +1,34 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * PolyMC - Minecraft Launcher + * Copyright (C) 2022 Toshit Chawda + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include +#include "settings/SettingsObject.h" + +#pragma once + +class LaunchContext +{ + public: + LaunchContext(SettingsObjectPtr instanceSettings); + void setRealJavaArch(QVariant realJavaArch); + QVariant getRealJavaArch(); + QVariant getJavaPath(); + private: + SettingsObjectPtr m_instanceSettings; +}; \ No newline at end of file From 68446c2a5442d568a75229d63d6addc502237b4a Mon Sep 17 00:00:00 2001 From: timoreo Date: Sun, 10 Jul 2022 20:34:29 +0200 Subject: [PATCH 010/616] Obligatory formatting fix commit Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 2 +- launcher/SysInfo.h | 2 +- launcher/minecraft/LaunchContext.cpp | 2 +- launcher/minecraft/LaunchContext.h | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index d72f66f36..2cca83a9b 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -95,7 +95,7 @@ void JavaDownloader::executeTask() elementDownload->addNetAction(dl); } QObject::connect(elementDownload, &NetJob::finished, [elementDownload] { elementDownload->deleteLater(); }); - QObject::connect(elementDownload, &NetJob::succeeded, [this]{emitSucceeded();}); + QObject::connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); elementDownload->start(); }); download->start(); diff --git a/launcher/SysInfo.h b/launcher/SysInfo.h index 280757674..9107cacb8 100644 --- a/launcher/SysInfo.h +++ b/launcher/SysInfo.h @@ -9,4 +9,4 @@ QString currentSystem(); QString currentArch(LaunchContext launchContext); QString runCheckerForArch(LaunchContext launchContext); QString useQTForArch(); -} \ No newline at end of file +} diff --git a/launcher/minecraft/LaunchContext.cpp b/launcher/minecraft/LaunchContext.cpp index b445d9ae1..ea6a549f0 100644 --- a/launcher/minecraft/LaunchContext.cpp +++ b/launcher/minecraft/LaunchContext.cpp @@ -36,4 +36,4 @@ QVariant LaunchContext::getRealJavaArch() QVariant LaunchContext::getJavaPath() { return m_instanceSettings->get("JavaPath"); -} \ No newline at end of file +} diff --git a/launcher/minecraft/LaunchContext.h b/launcher/minecraft/LaunchContext.h index 0d322a2ea..2c6e1307f 100644 --- a/launcher/minecraft/LaunchContext.h +++ b/launcher/minecraft/LaunchContext.h @@ -31,4 +31,4 @@ class LaunchContext QVariant getJavaPath(); private: SettingsObjectPtr m_instanceSettings; -}; \ No newline at end of file +}; From 24dc154856cc45b78404b47fa085f8ea0a1adeb0 Mon Sep 17 00:00:00 2001 From: timoreo Date: Mon, 11 Jul 2022 15:11:08 +0200 Subject: [PATCH 011/616] Add download button to more pages + UI fixes Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 79 +++++++++++++++++++ launcher/JavaDownloader.h | 1 + launcher/ui/pages/global/JavaPage.cpp | 57 +------------ .../pages/instance/InstanceSettingsPage.cpp | 6 ++ .../ui/pages/instance/InstanceSettingsPage.h | 1 + .../ui/pages/instance/InstanceSettingsPage.ui | 7 ++ launcher/ui/widgets/JavaSettingsWidget.cpp | 11 +++ launcher/ui/widgets/JavaSettingsWidget.h | 3 + 8 files changed, 111 insertions(+), 54 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index 2cca83a9b..cb8fd1116 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -1,11 +1,15 @@ #include "JavaDownloader.h" +#include +#include #include "Application.h" #include "FileSystem.h" #include "Json.h" #include "MMCZip.h" +#include "SysInfo.h" #include "net/ChecksumValidator.h" #include "net/NetJob.h" #include "quazip.h" +#include "ui/dialogs/ProgressDialog.h" // Quick & dirty struct to store files struct File { @@ -95,6 +99,7 @@ void JavaDownloader::executeTask() elementDownload->addNetAction(dl); } QObject::connect(elementDownload, &NetJob::finished, [elementDownload] { elementDownload->deleteLater(); }); + QObject::connect(elementDownload, &NetJob::progress, this, &JavaDownloader::progress); QObject::connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); elementDownload->start(); }); @@ -182,3 +187,77 @@ void JavaDownloader::executeTask() netJob->start(); } +void JavaDownloader::showPrompts(QWidget* parent) +{ + QString sys = SysInfo::currentSystem(); + if (sys == "osx") { + sys = "mac-os"; + } + QString arch = SysInfo::useQTForArch(); + QString version; + if (sys == "windows") { + if (arch == "x86_64") { + version = "windows-x64"; + } else if (arch == "i386") { + version = "windows-x86"; + } else { + // Unknown, maybe arm, appending arch for downloader + version = "windows-" + arch; + } + } else if (sys == "mac-os") { + if (arch == "arm64") { + version = "mac-os-arm64"; + } else { + version = "mac-os"; + } + } else if (sys == "linux") { + if (arch == "x86_64") { + version = "linux"; + } else { + // will work for i386, and arm(64) + version = "linux-" + arch; + } + } else { + // ? ? ? ? ? unknown os, at least it won't have a java version on mojang or azul, display warning + QMessageBox::warning(parent, tr("Unknown OS"), + tr("The OS you are running is not supported by Mojang or Azul. Please install Java manually.")); + return; + } + // Selection using QMessageBox for java 8 or 17 + QMessageBox box(QMessageBox::Icon::Question, tr("Java version"), + tr("Do you want to download Java version 8 or 17?\n Java 8 is recommended for minecraft versions below 1.17\n Java 17 " + "is recommended for minecraft versions above or equal to 1.17"), + QMessageBox::NoButton, parent); + auto yes = box.addButton("Java 17", QMessageBox::AcceptRole); + auto no = box.addButton("Java 8", QMessageBox::AcceptRole); + auto both = box.addButton(tr("Download both"), QMessageBox::AcceptRole); + auto cancel = box.addButton(QMessageBox::Cancel); + + if (QFileInfo::exists(FS::PathCombine(QString("java"), "java-legacy"))) { + no->setEnabled(false); + } + if (QFileInfo::exists(FS::PathCombine(QString("java"), "java-current"))) { + yes->setEnabled(false); + } + if (!yes->isEnabled() || !no->isEnabled()) { + both->setEnabled(false); + } + if (!yes->isEnabled() && !no->isEnabled()) { + QMessageBox::warning(parent, tr("Already installed !"), tr("Both versions of java are already installed !")); + return; + } + box.exec(); + if (box.clickedButton() == nullptr || box.clickedButton() == cancel) { + return; + } + bool isLegacy = box.clickedButton() == no; + + auto down = new JavaDownloader(isLegacy, version); + ProgressDialog dialog(parent); + dialog.execWithTask(down); + if (box.clickedButton() == both) { + auto dwn = new JavaDownloader(false, version); + ProgressDialog dg(parent); + dg.execWithTask(dwn); + } +} diff --git a/launcher/JavaDownloader.h b/launcher/JavaDownloader.h index 3b7a7c425..274a95e49 100644 --- a/launcher/JavaDownloader.h +++ b/launcher/JavaDownloader.h @@ -10,6 +10,7 @@ class JavaDownloader : public Task { explicit JavaDownloader(bool isLegacy, const QString& OS) : m_isLegacy(isLegacy), m_OS(OS) {} void executeTask() override; + static void showPrompts(QWidget* parent = nullptr); private: bool m_isLegacy; diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 2cc627b7d..d7f48f552 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -52,10 +52,7 @@ #include #include "Application.h" #include "JavaDownloader.h" -#include "SysInfo.h" #include "settings/SettingsObject.h" -#include "ui/dialogs/ProgressDialog.h" -#include JavaPage::JavaPage(QWidget *parent) : QWidget(parent), ui(new Ui::JavaPage) { @@ -181,57 +178,9 @@ void JavaPage::on_javaTestBtn_clicked() checker->run(); } -void JavaPage::on_javaDownloadBtn_clicked(){ - QString sys = SysInfo::currentSystem(); - if(sys == "osx"){ - sys = "mac-os"; - } - QString arch = SysInfo::useQTForArch(); - QString version; - if(sys == "windows"){ - if(arch == "x86_64"){ - version = "windows-x64"; - }else if(arch == "i386"){ - version = "windows-x86"; - }else{ - //Unknown, maybe arm, appending arch for downloader - version = "windows-"+arch; - } - }else if(sys == "mac-os"){ - if(arch == "arm64"){ - version = "mac-os-arm64"; - }else{ - version = "mac-os"; - } - }else if(sys == "linux"){ - if(arch == "x86_64"){ - version = "linux"; - }else { - // will work for i386, and arm(64) - version = "linux-" + arch; - } - }else{ - // ? ? ? ? ? unknown os, at least it won't have a java version on mojang or azul, display warning - QMessageBox::warning(this, tr("Unknown OS"), tr("The OS you are running is not supported by Mojang or Azul. Please install Java manually.")); - return; - } - //Selection using QMessageBox for java 8 or 17 - QMessageBox box(QMessageBox::Icon::Question, tr("Java version"), tr("Do you want to download Java version 8 or 17?\n Java 8 is recommended for minecraft versions below 1.17\n Java 17 is recommended for minecraft versions above or equal to 1.17"), - QMessageBox::NoButton, this); - box.addButton("Java 17", QMessageBox::YesRole); - auto no = box.addButton("Java 8", QMessageBox::NoRole); - auto cancel = box.addButton(tr("Download both"), QMessageBox::AcceptRole); - box.exec(); - bool isLegacy = box.clickedButton() == no; - - auto down = new JavaDownloader(isLegacy, version); - ProgressDialog dialog(this); - dialog.execWithTask(down); - if(box.clickedButton() == cancel) { - auto dwn = new JavaDownloader(false, version); - ProgressDialog dg(this); - dg.execWithTask(dwn); - } +void JavaPage::on_javaDownloadBtn_clicked() +{ + JavaDownloader::showPrompts(this); } void JavaPage::checkerFinished() diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 5da7f19f5..62e780ce8 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -49,6 +49,7 @@ #include "JavaCommon.h" #include "Application.h" +#include "JavaDownloader.h" #include "java/JavaInstallList.h" #include "java/JavaUtils.h" #include "FileSystem.h" @@ -374,6 +375,11 @@ void InstanceSettingsPage::loadSettings() ui->serverJoinAddress->setText(m_settings->get("JoinServerOnLaunchAddress").toString()); } +void InstanceSettingsPage::on_javaDownloadBtn_clicked() +{ + JavaDownloader::showPrompts(this); +} + void InstanceSettingsPage::on_javaDetectBtn_clicked() { if (JavaUtils::getJavaCheckPath().isEmpty()) { diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.h b/launcher/ui/pages/instance/InstanceSettingsPage.h index 97d1296fe..ffb226781 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.h +++ b/launcher/ui/pages/instance/InstanceSettingsPage.h @@ -81,6 +81,7 @@ private slots: void on_javaDetectBtn_clicked(); void on_javaTestBtn_clicked(); void on_javaBrowseBtn_clicked(); + void on_javaDownloadBtn_clicked(); void applySettings(); void loadSettings(); diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui index 8b3c33702..4ce59a0ae 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.ui +++ b/launcher/ui/pages/instance/InstanceSettingsPage.ui @@ -95,6 +95,13 @@ + + + + Download Java... + + + diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 314a126e4..e62cdd1f0 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -14,6 +14,7 @@ #include "JavaCommon.h" #include "java/JavaInstall.h" #include "java/JavaUtils.h" +#include "JavaDownloader.h" #include "FileSystem.h" #include "ui/dialogs/CustomMessageBox.h" @@ -38,6 +39,8 @@ JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) connect(m_javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaBrowseBtn_clicked); connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited); connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaSettingsWidget::on_javaStatusBtn_clicked); + connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaDownloadBtn_clicked); + } void JavaSettingsWidget::setupUi() @@ -115,6 +118,10 @@ void JavaSettingsWidget::setupUi() m_verticalLayout->addWidget(m_memoryGroupBox); + m_javaDownloadBtn = new QPushButton("Download Java",this); + + m_verticalLayout->addWidget(m_javaDownloadBtn); + retranslate(); } @@ -276,7 +283,11 @@ void JavaSettingsWidget::on_javaBrowseBtn_clicked() m_javaPathTextBox->setText(cooked_path); checkJavaPath(cooked_path); } +void JavaSettingsWidget::on_javaDownloadBtn_clicked() +{ + JavaDownloader::showPrompts(this); +} void JavaSettingsWidget::on_javaStatusBtn_clicked() { QString text; diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index 0d280daf3..fe6ee2f58 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -63,6 +63,7 @@ protected slots: void javaVersionSelected(BaseVersionPtr version); void on_javaBrowseBtn_clicked(); void on_javaStatusBtn_clicked(); + void on_javaDownloadBtn_clicked(); void checkFinished(JavaCheckResult result); protected: /* methods */ @@ -88,6 +89,8 @@ private: /* data */ QSpinBox *m_minMemSpinBox = nullptr; QLabel *m_labelPermGen = nullptr; QSpinBox *m_permGenSpinBox = nullptr; + + QPushButton *m_javaDownloadBtn = nullptr; QIcon goodIcon; QIcon yellowIcon; QIcon badIcon; From a902f29ccff347f1c51ab95330748cb6e71d1539 Mon Sep 17 00:00:00 2001 From: timoreo Date: Mon, 12 Sep 2022 08:19:42 +0200 Subject: [PATCH 012/616] Changed to a temporary file Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 21 ++++++++++++++------- launcher/ui/widgets/JavaSettingsWidget.cpp | 2 +- 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index cb8fd1116..e56a87d0c 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -1,6 +1,7 @@ #include "JavaDownloader.h" #include #include +#include #include "Application.h" #include "FileSystem.h" #include "Json.h" @@ -127,6 +128,11 @@ void JavaDownloader::executeTask() azulOS = "linux"; arch = "arm"; bitness = "32"; + } else if (OS == "linux"){ + // linux x86 64 (used for debugging, should never reach here) + azulOS = "linux"; + arch = "x86"; + bitness = "64"; } auto metaResponse = new QByteArray(); auto downloadJob = new NetJob(QString("JRE::QueryAzulMeta"), APPLICATION->network()); @@ -161,19 +167,20 @@ void JavaDownloader::executeTask() setStatus(tr("Downloading java from Azul")); auto downloadURL = QUrl(array[0].toObject()["url"].toString()); auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); - const QString path = downloadURL.host() + '/' + downloadURL.path(); - auto entry = APPLICATION->metacache()->resolveEntry("general", path); - entry->setStale(true); - download->addNetAction(Net::Download::makeCached(downloadURL, entry)); - auto zippath = entry->getFullPath(); + auto temp = std::make_unique(FS::PathCombine(APPLICATION->root(), "temp", "XXXXXX.zip")); + FS::ensureFolderPathExists(FS::PathCombine(APPLICATION->root(),"temp")); + // Have to open at least once to generate path + temp->open(); + temp->close(); + download->addNetAction(Net::Download::makeFile(downloadURL, temp->fileName())); QObject::connect(download, &NetJob::finished, [download] { download->deleteLater(); }); QObject::connect(download, &NetJob::progress, this, &JavaDownloader::progress); - QObject::connect(download, &NetJob::succeeded, [isLegacy, zippath, downloadURL, this] { + QObject::connect(download, &NetJob::succeeded, [isLegacy, file = std::move(temp), downloadURL, this] { setStatus(tr("Extracting java")); auto output = FS::PathCombine(FS::PathCombine(QCoreApplication::applicationDirPath(), "java"), isLegacy ? "java-legacy" : "java-current"); // This should do all of the extracting and creating folders - MMCZip::extractDir(zippath, downloadURL.fileName().chopped(4), output); + MMCZip::extractDir(file->fileName(), downloadURL.fileName().chopped(4), output); emitSucceeded(); }); download->start(); diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index e62cdd1f0..6494b79fd 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -118,7 +118,7 @@ void JavaSettingsWidget::setupUi() m_verticalLayout->addWidget(m_memoryGroupBox); - m_javaDownloadBtn = new QPushButton("Download Java",this); + m_javaDownloadBtn = new QPushButton(tr("Download Java"), this); m_verticalLayout->addWidget(m_javaDownloadBtn); From dc84a6199932fed417796ec1183598669b4dde2f Mon Sep 17 00:00:00 2001 From: timoreo Date: Mon, 12 Sep 2022 14:17:41 +0200 Subject: [PATCH 013/616] Added failed and aborted handlers Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 61 +++++++++++++++++++++++++++++++------ launcher/JavaDownloader.h | 3 ++ 2 files changed, 54 insertions(+), 10 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index e56a87d0c..b0cde7d98 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -24,17 +24,29 @@ void JavaDownloader::executeTask() { auto OS = m_OS; auto isLegacy = m_isLegacy; + auto netJob = new NetJob(QString("JRE::QueryVersions"), APPLICATION->network()); auto response = new QByteArray(); setStatus(tr("Querying mojang meta")); netJob->addNetAction(Net::Download::makeByteArray( QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); - QObject::connect(netJob, &NetJob::finished, [netJob, response] { + + QObject::connect(this, &Task::aborted, [isLegacy]{ + QDir(FS::PathCombine("java",(isLegacy ? "java-legacy" : "java-current"))).removeRecursively(); + }); + + QObject::connect(netJob, &NetJob::finished, [netJob, response, this] { + //delete so that it's not called on a deleted job + QObject::disconnect(this, &Task::aborted, netJob, &NetJob::abort); netJob->deleteLater(); delete response; }); QObject::connect(netJob, &NetJob::progress, this, &JavaDownloader::progress); - QObject::connect(netJob, &NetJob::succeeded, [response, OS, isLegacy, this] { + QObject::connect(netJob, &NetJob::failed, this, &JavaDownloader::emitFailed); + + QObject::connect(this, &Task::aborted, netJob, &NetJob::abort); + + QObject::connect(netJob, &NetJob::succeeded, [response, OS, isLegacy, this, netJob] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -51,12 +63,16 @@ void JavaDownloader::executeTask() download->addNetAction(Net::Download::makeByteArray(QUrl(url), files)); - QObject::connect(download, &NetJob::finished, [download, files] { + QObject::connect(download, &NetJob::finished, [download, files, this] { + QObject::disconnect(this, &Task::aborted, download, &NetJob::abort); download->deleteLater(); delete files; }); QObject::connect(download, &NetJob::progress, this, &JavaDownloader::progress); - QObject::connect(download, &NetJob::succeeded, [files, isLegacy, this] { + QObject::connect(download, &NetJob::failed, this, &JavaDownloader::emitFailed); + QObject::connect(this, &Task::aborted, download, &NetJob::abort); + + QObject::connect(download, &NetJob::succeeded, [download, files, isLegacy, this] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -99,8 +115,15 @@ void JavaDownloader::executeTask() } elementDownload->addNetAction(dl); } - QObject::connect(elementDownload, &NetJob::finished, [elementDownload] { elementDownload->deleteLater(); }); + QObject::connect(elementDownload, &NetJob::finished, [elementDownload, this] { + QObject::disconnect(this, &Task::aborted, elementDownload, &NetJob::abort); + elementDownload->deleteLater(); + }); QObject::connect(elementDownload, &NetJob::progress, this, &JavaDownloader::progress); + QObject::connect(elementDownload, &NetJob::failed, this, &JavaDownloader::emitFailed); + + + QObject::connect(this, &Task::aborted, elementDownload, &NetJob::abort); QObject::connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); elementDownload->start(); }); @@ -148,12 +171,15 @@ void JavaDownloader::executeTask() ) .arg(javaVersion, azulOS, arch, bitness), metaResponse)); - QObject::connect(downloadJob, &NetJob::finished, [downloadJob, metaResponse] { + QObject::connect(downloadJob, &NetJob::finished, [downloadJob, metaResponse, this] { + QObject::disconnect(this, &Task::aborted, downloadJob, &NetJob::abort); downloadJob->deleteLater(); delete metaResponse; }); + QObject::connect(this, &Task::aborted, downloadJob, &NetJob::abort); + QObject::connect(netJob, &NetJob::failed, this, &JavaDownloader::emitFailed); QObject::connect(downloadJob, &NetJob::progress, this, &JavaDownloader::progress); - QObject::connect(downloadJob, &NetJob::succeeded, [metaResponse, isLegacy, this] { + QObject::connect(downloadJob, &NetJob::succeeded, [metaResponse, isLegacy, this, downloadJob] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*metaResponse, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -173,8 +199,13 @@ void JavaDownloader::executeTask() temp->open(); temp->close(); download->addNetAction(Net::Download::makeFile(downloadURL, temp->fileName())); - QObject::connect(download, &NetJob::finished, [download] { download->deleteLater(); }); + QObject::connect(download, &NetJob::finished, [download, this] { + QObject::disconnect(this, &Task::aborted, download, &NetJob::abort); + download->deleteLater(); + }); QObject::connect(download, &NetJob::progress, this, &JavaDownloader::progress); + QObject::connect(download, &NetJob::failed, this, &JavaDownloader::emitFailed); + QObject::connect(this, &Task::aborted, download, &NetJob::abort); QObject::connect(download, &NetJob::succeeded, [isLegacy, file = std::move(temp), downloadURL, this] { setStatus(tr("Extracting java")); auto output = FS::PathCombine(FS::PathCombine(QCoreApplication::applicationDirPath(), "java"), @@ -194,6 +225,14 @@ void JavaDownloader::executeTask() netJob->start(); } +void JavaDownloader::abortNetJob(NetJob* elementDownload) +{ + if(elementDownload->isRunning()){ + elementDownload->abort(); + }else{ + emit elementDownload->aborted(); + } +} void JavaDownloader::showPrompts(QWidget* parent) { QString sys = SysInfo::currentSystem(); @@ -261,10 +300,12 @@ void JavaDownloader::showPrompts(QWidget* parent) auto down = new JavaDownloader(isLegacy, version); ProgressDialog dialog(parent); - dialog.execWithTask(down); - if (box.clickedButton() == both) { + dialog.setSkipButton(true, tr("Abort")); + + if (dialog.execWithTask(down) && box.clickedButton() == both) { auto dwn = new JavaDownloader(false, version); ProgressDialog dg(parent); + dg.setSkipButton(true, tr("Abort")); dg.execWithTask(dwn); } } diff --git a/launcher/JavaDownloader.h b/launcher/JavaDownloader.h index 274a95e49..00ccdf2bc 100644 --- a/launcher/JavaDownloader.h +++ b/launcher/JavaDownloader.h @@ -1,6 +1,7 @@ #pragma once #include +#include "net/NetJob.h" #include "tasks/Task.h" class JavaDownloader : public Task { @@ -10,9 +11,11 @@ class JavaDownloader : public Task { explicit JavaDownloader(bool isLegacy, const QString& OS) : m_isLegacy(isLegacy), m_OS(OS) {} void executeTask() override; + [[nodiscard]] bool canAbort() const override { return true; } static void showPrompts(QWidget* parent = nullptr); private: bool m_isLegacy; const QString& m_OS; + static void abortNetJob(NetJob* elementDownload); }; From 89f1b60538068ac033f7ca1899b4d310eb43f8c2 Mon Sep 17 00:00:00 2001 From: timoreo Date: Mon, 12 Sep 2022 15:00:31 +0200 Subject: [PATCH 014/616] Delete out non-needed functions from SysInfo Delete LaunchContext Signed-off-by: timoreo --- launcher/CMakeLists.txt | 4 +- launcher/SysInfo.cpp | 103 --------------------------- launcher/SysInfo.h | 6 -- launcher/minecraft/LaunchContext.cpp | 39 ---------- launcher/minecraft/LaunchContext.h | 34 --------- 5 files changed, 1 insertion(+), 185 deletions(-) delete mode 100644 launcher/minecraft/LaunchContext.cpp delete mode 100644 launcher/minecraft/LaunchContext.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index c467957a8..4bb686106 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -271,9 +271,7 @@ set(MINECRAFT_SOURCES minecraft/GradleSpecifier.h minecraft/MinecraftInstance.cpp minecraft/MinecraftInstance.h - minecraft/LaunchContext.cpp - minecraft/LaunchContext.h - minecraft/LaunchProfile.cpp + minecraft/LaunchProfile.cpp minecraft/LaunchProfile.h minecraft/Component.cpp minecraft/Component.h diff --git a/launcher/SysInfo.cpp b/launcher/SysInfo.cpp index 010eb84c8..f3ff200fc 100644 --- a/launcher/SysInfo.cpp +++ b/launcher/SysInfo.cpp @@ -1,18 +1,13 @@ #include #include -#include "minecraft/LaunchContext.h" #ifdef Q_OS_MACOS #include #endif -#include #include -#include -#include "MessageLevel.h" #include #include #include #include "java/JavaUtils.h" -#include "FileSystem.h" #include "Commandline.h" #include "Application.h" @@ -67,103 +62,5 @@ QString useQTForArch(){ #endif return qtArch; } - -QString runCheckerForArch(LaunchContext launchContext){ - QString checkerJar = JavaUtils::getJavaCheckPath(); - - if (checkerJar.isEmpty()) - { - qDebug() << "Java checker library could not be found. Please check your installation."; - return useQTForArch(); - } - - QStringList args; - - QProcessPtr process = new QProcess(); - args.append({"-jar", checkerJar}); - process->setArguments(args); - process->setProgram(launchContext.getJavaPath().toString()); - process->setProcessChannelMode(QProcess::SeparateChannels); - process->setProcessEnvironment(CleanEnviroment()); - qDebug() << "Running java checker: " + launchContext.getJavaPath().toString() + args.join(" ");; - - process->start(); - if(!process->waitForFinished(15000)){ - // we've been waiting for 15 seconds! wtf! OR... it already finished. But HOW WOULD THAT HAPPEN? - process->kill(); // die. BUUURNNNN - // fallback to using polymc arch - return useQTForArch(); - } else { - // yay we can use the java arch - QString stdout_javaChecker; - QString stderr_javaChecker; - - // process stdout - QByteArray data = process->readAllStandardOutput(); - QString added = QString::fromLocal8Bit(data); - added.remove('\r'); - stdout_javaChecker += added; - - // process stderr - data = process->readAllStandardError(); - added = QString::fromLocal8Bit(data); - added.remove('\r'); - stderr_javaChecker += added; - - QMap results; -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - QStringList lines = stdout_javaChecker.split("\n", Qt::SkipEmptyParts); -#else - QStringList lines = stdout_javaChecker.split("\n", QString::SkipEmptyParts); -#endif - for(QString line : lines) - { - line = line.trimmed(); - // NOTE: workaround for GH-4125, where garbage is getting printed into stdout on bedrock linux - if (line.contains("/bedrock/strata")) { - continue; - } - -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - auto parts = line.split('=', Qt::SkipEmptyParts); -#else - auto parts = line.split('=', QString::SkipEmptyParts); -#endif - if(parts.size() != 2 || parts[0].isEmpty() || parts[1].isEmpty()) - { - continue; - } - else - { - results.insert(parts[0], parts[1]); - } - } - - if(!results.contains("os.arch") || !results.contains("java.version") || !results.contains("java.vendor")) - { - // wtf man why - // fallback to using polymc arch - return useQTForArch(); - } - - return results["os.arch"]; - } -} - -QString currentArch(LaunchContext launchContext) { - auto realJavaArchitecture = launchContext.getRealJavaArch().toString(); - if(realJavaArchitecture == ""){ - //BRO WHY NOW I HAVE TO USE A JAVA CHECKER >:( - qDebug() << "SysInfo: BRO I HAVE TO USE A JAVA CHECKER WHY IS JAVA ARCH BORKED"; - launchContext.setRealJavaArch(runCheckerForArch(launchContext)); - realJavaArchitecture = launchContext.getRealJavaArch().toString(); - } - //qDebug() << "SysInfo: realJavaArch = " << realJavaArchitecture; - if(realJavaArchitecture == "aarch64"){ - return "arm64"; - } else { - return realJavaArchitecture; - } -} } diff --git a/launcher/SysInfo.h b/launcher/SysInfo.h index 9107cacb8..3cb1c8de6 100644 --- a/launcher/SysInfo.h +++ b/launcher/SysInfo.h @@ -1,12 +1,6 @@ #include -#include "minecraft/LaunchContext.h" -#ifdef Q_OS_MACOS -#include -#endif namespace SysInfo { QString currentSystem(); -QString currentArch(LaunchContext launchContext); -QString runCheckerForArch(LaunchContext launchContext); QString useQTForArch(); } diff --git a/launcher/minecraft/LaunchContext.cpp b/launcher/minecraft/LaunchContext.cpp deleted file mode 100644 index ea6a549f0..000000000 --- a/launcher/minecraft/LaunchContext.cpp +++ /dev/null @@ -1,39 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * PolyMC - Minecraft Launcher - * Copyright (C) 2022 Toshit Chawda - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include "LaunchContext.h" - -LaunchContext::LaunchContext(SettingsObjectPtr instanceSettings){ - m_instanceSettings = instanceSettings; -} - -void LaunchContext::setRealJavaArch(QVariant realJavaArch) -{ - m_instanceSettings->set("JavaRealArchitecture", realJavaArch); -} - -QVariant LaunchContext::getRealJavaArch() -{ - return m_instanceSettings->get("JavaRealArchitecture"); -} - -QVariant LaunchContext::getJavaPath() -{ - return m_instanceSettings->get("JavaPath"); -} diff --git a/launcher/minecraft/LaunchContext.h b/launcher/minecraft/LaunchContext.h deleted file mode 100644 index 2c6e1307f..000000000 --- a/launcher/minecraft/LaunchContext.h +++ /dev/null @@ -1,34 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * PolyMC - Minecraft Launcher - * Copyright (C) 2022 Toshit Chawda - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - */ - -#include -#include "settings/SettingsObject.h" - -#pragma once - -class LaunchContext -{ - public: - LaunchContext(SettingsObjectPtr instanceSettings); - void setRealJavaArch(QVariant realJavaArch); - QVariant getRealJavaArch(); - QVariant getJavaPath(); - private: - SettingsObjectPtr m_instanceSettings; -}; From 86e3518430917483f35777a25a76159274e72d38 Mon Sep 17 00:00:00 2001 From: timoreo Date: Mon, 12 Sep 2022 16:34:37 +0200 Subject: [PATCH 015/616] Apply most of the suggestions from @flowln Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 366 ++++++++++++++++++------------------ launcher/JavaDownloader.h | 10 +- 2 files changed, 197 insertions(+), 179 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index b0cde7d98..425a7d470 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -9,7 +9,6 @@ #include "SysInfo.h" #include "net/ChecksumValidator.h" #include "net/NetJob.h" -#include "quazip.h" #include "ui/dialogs/ProgressDialog.h" // Quick & dirty struct to store files @@ -25,28 +24,31 @@ void JavaDownloader::executeTask() auto OS = m_OS; auto isLegacy = m_isLegacy; + downloadMojangJavaList(OS, isLegacy); +} +void JavaDownloader::downloadMojangJavaList(const QString& OS, bool isLegacy) +{ auto netJob = new NetJob(QString("JRE::QueryVersions"), APPLICATION->network()); auto response = new QByteArray(); setStatus(tr("Querying mojang meta")); netJob->addNetAction(Net::Download::makeByteArray( QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); - QObject::connect(this, &Task::aborted, [isLegacy]{ - QDir(FS::PathCombine("java",(isLegacy ? "java-legacy" : "java-current"))).removeRecursively(); - }); + connect(this, &Task::aborted, + [isLegacy] { QDir(FS::PathCombine("java", (isLegacy ? "java-legacy" : "java-current"))).removeRecursively(); }); - QObject::connect(netJob, &NetJob::finished, [netJob, response, this] { - //delete so that it's not called on a deleted job - QObject::disconnect(this, &Task::aborted, netJob, &NetJob::abort); + connect(netJob, &NetJob::finished, [netJob, response, this] { + // delete so that it's not called on a deleted job + disconnect(this, &Task::aborted, netJob, &NetJob::abort); netJob->deleteLater(); delete response; }); - QObject::connect(netJob, &NetJob::progress, this, &JavaDownloader::progress); - QObject::connect(netJob, &NetJob::failed, this, &JavaDownloader::emitFailed); + connect(netJob, &NetJob::progress, this, &JavaDownloader::progress); + connect(netJob, &NetJob::failed, this, &JavaDownloader::emitFailed); - QObject::connect(this, &Task::aborted, netJob, &NetJob::abort); + connect(this, &Task::aborted, netJob, &NetJob::abort); - QObject::connect(netJob, &NetJob::succeeded, [response, OS, isLegacy, this, netJob] { + connect(netJob, &NetJob::succeeded, [response, OS, isLegacy, this, netJob] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -56,182 +58,190 @@ void JavaDownloader::executeTask() } auto versionArray = Json::ensureArray(Json::ensureObject(doc.object(), OS), isLegacy ? "jre-legacy" : "java-runtime-gamma"); if (!versionArray.empty()) { - setStatus(tr("Downloading java from Mojang")); - auto url = versionArray[0].toObject()["manifest"].toObject()["url"].toString(); - auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); - auto files = new QByteArray(); + parseMojangManifest(isLegacy, versionArray); - download->addNetAction(Net::Download::makeByteArray(QUrl(url), files)); - - QObject::connect(download, &NetJob::finished, [download, files, this] { - QObject::disconnect(this, &Task::aborted, download, &NetJob::abort); - download->deleteLater(); - delete files; - }); - QObject::connect(download, &NetJob::progress, this, &JavaDownloader::progress); - QObject::connect(download, &NetJob::failed, this, &JavaDownloader::emitFailed); - QObject::connect(this, &Task::aborted, download, &NetJob::abort); - - QObject::connect(download, &NetJob::succeeded, [download, files, isLegacy, this] { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << *files; - return; - } - - // valid json doc, begin making jre spot - auto output = FS::PathCombine(QString("java"), (isLegacy ? "java-legacy" : "java-current")); - FS::ensureFolderPathExists(output); - std::vector toDownload; - auto list = doc.object()["files"].toObject(); - for (const auto& paths : list.keys()) { - auto file = FS::PathCombine(output, paths); - - auto type = list[paths].toObject()["type"].toString(); - if (type == "directory") { - FS::ensureFolderPathExists(file); - } else if (type == "link") { - // this is linux only ! - auto target = FS::PathCombine(file, "../" + list[paths].toObject()["target"].toString()); - QFile(target).link(file); - } else if (type == "file") { - // TODO download compressed version if it exists ? - auto raw = list[paths].toObject()["downloads"].toObject()["raw"].toObject(); - auto isExec = list[paths].toObject()["executable"].toBool(); - auto f = File{ file, raw["url"].toString(), QByteArray::fromHex(raw["sha1"].toString().toLatin1()), isExec }; - toDownload.push_back(f); - } - } - auto elementDownload = new NetJob("JRE::FileDownload", APPLICATION->network()); - for (const auto& file : toDownload) { - auto dl = Net::Download::makeFile(file.url, file.path); - dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, file.hash)); - if (file.isExec) { - QObject::connect(dl.get(), &Net::Download::succeeded, [file] { - QFile(file.path).setPermissions(QFile(file.path).permissions() | QFileDevice::Permissions(0x1111)); - }); - } - elementDownload->addNetAction(dl); - } - QObject::connect(elementDownload, &NetJob::finished, [elementDownload, this] { - QObject::disconnect(this, &Task::aborted, elementDownload, &NetJob::abort); - elementDownload->deleteLater(); - }); - QObject::connect(elementDownload, &NetJob::progress, this, &JavaDownloader::progress); - QObject::connect(elementDownload, &NetJob::failed, this, &JavaDownloader::emitFailed); - - - QObject::connect(this, &Task::aborted, elementDownload, &NetJob::abort); - QObject::connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); - elementDownload->start(); - }); - download->start(); } else { // mojang does not have a JRE for us, let's get azul zulu - setStatus(tr("Querying Azul meta")); - QString javaVersion = isLegacy ? QString("8.0") : QString("17.0"); - QString azulOS; - QString arch; - QString bitness; - - if (OS == "mac-os-arm64") { - // macos arm64 - azulOS = "macos"; - arch = "arm"; - bitness = "64"; - } else if (OS == "linux-arm64") { - // linux arm64 - azulOS = "linux"; - arch = "arm"; - bitness = "64"; - } else if (OS == "linux-arm") { - // linux arm (32) - azulOS = "linux"; - arch = "arm"; - bitness = "32"; - } else if (OS == "linux"){ - // linux x86 64 (used for debugging, should never reach here) - azulOS = "linux"; - arch = "x86"; - bitness = "64"; - } - auto metaResponse = new QByteArray(); - auto downloadJob = new NetJob(QString("JRE::QueryAzulMeta"), APPLICATION->network()); - downloadJob->addNetAction( - Net::Download::makeByteArray(QString("https://api.azul.com/zulu/download/community/v1.0/bundles/?" - "java_version=%1" - "&os=%2" - "&arch=%3" - "&hw_bitness=%4" - "&ext=zip" // as a zip for all os, even linux NOTE !! Linux ARM is .deb only !! - "&bundle_type=jre" // jre only - "&latest=true" // only get the one latest entry - ) - .arg(javaVersion, azulOS, arch, bitness), - metaResponse)); - QObject::connect(downloadJob, &NetJob::finished, [downloadJob, metaResponse, this] { - QObject::disconnect(this, &Task::aborted, downloadJob, &NetJob::abort); - downloadJob->deleteLater(); - delete metaResponse; - }); - QObject::connect(this, &Task::aborted, downloadJob, &NetJob::abort); - QObject::connect(netJob, &NetJob::failed, this, &JavaDownloader::emitFailed); - QObject::connect(downloadJob, &NetJob::progress, this, &JavaDownloader::progress); - QObject::connect(downloadJob, &NetJob::succeeded, [metaResponse, isLegacy, this, downloadJob] { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*metaResponse, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << *metaResponse; - return; - } - auto array = doc.array(); - if (!array.empty()) { - // JRE found ! download the zip - setStatus(tr("Downloading java from Azul")); - auto downloadURL = QUrl(array[0].toObject()["url"].toString()); - auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); - auto temp = std::make_unique(FS::PathCombine(APPLICATION->root(), "temp", "XXXXXX.zip")); - FS::ensureFolderPathExists(FS::PathCombine(APPLICATION->root(),"temp")); - // Have to open at least once to generate path - temp->open(); - temp->close(); - download->addNetAction(Net::Download::makeFile(downloadURL, temp->fileName())); - QObject::connect(download, &NetJob::finished, [download, this] { - QObject::disconnect(this, &Task::aborted, download, &NetJob::abort); - download->deleteLater(); - }); - QObject::connect(download, &NetJob::progress, this, &JavaDownloader::progress); - QObject::connect(download, &NetJob::failed, this, &JavaDownloader::emitFailed); - QObject::connect(this, &Task::aborted, download, &NetJob::abort); - QObject::connect(download, &NetJob::succeeded, [isLegacy, file = std::move(temp), downloadURL, this] { - setStatus(tr("Extracting java")); - auto output = FS::PathCombine(FS::PathCombine(QCoreApplication::applicationDirPath(), "java"), - isLegacy ? "java-legacy" : "java-current"); - // This should do all of the extracting and creating folders - MMCZip::extractDir(file->fileName(), downloadURL.fileName().chopped(4), output); - emitSucceeded(); - }); - download->start(); - } else { - emitFailed(tr("No suitable JRE found")); - } - }); - downloadJob->start(); + downloadAzulMeta(OS, isLegacy, netJob); } }); netJob->start(); } -void JavaDownloader::abortNetJob(NetJob* elementDownload) +void JavaDownloader::parseMojangManifest(bool isLegacy, const QJsonArray& versionArray) { - if(elementDownload->isRunning()){ - elementDownload->abort(); - }else{ - emit elementDownload->aborted(); + setStatus(tr("Downloading java from Mojang")); + auto url = versionArray[0].toObject()["manifest"].toObject()["url"].toString(); + auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); + auto files = new QByteArray(); + + download->addNetAction(Net::Download::makeByteArray(QUrl(url), files)); + + connect(download, &NetJob::finished, [download, files, this] { + disconnect(this, &Task::aborted, download, &NetJob::abort); + download->deleteLater(); + delete files; + }); + connect(download, &NetJob::progress, this, &JavaDownloader::progress); + connect(download, &NetJob::failed, this, &JavaDownloader::emitFailed); + connect(this, &Task::aborted, download, &NetJob::abort); + + connect(download, &NetJob::succeeded, [files, isLegacy, this] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); + qWarning() << *files; + return; + } + downloadMojangJava(isLegacy, doc); + }); + download->start(); +} +void JavaDownloader::downloadMojangJava(bool isLegacy, const QJsonDocument& doc) +{ // valid json doc, begin making jre spot + auto output = FS::PathCombine(QString("java"), (isLegacy ? "java-legacy" : "java-current")); + FS::ensureFolderPathExists(output); + std::vector toDownload; + auto list = doc.object()["files"].toObject(); + for (const auto& paths : list.keys()) { + auto file = FS::PathCombine(output, paths); + + auto type = list[paths].toObject()["type"].toString(); + if (type == "directory") { + FS::ensureFolderPathExists(file); + } else if (type == "link") { + // this is linux only ! + auto target = FS::PathCombine(file, "../" + list[paths].toObject()["target"].toString()); + QFile(target).link(file); + } else if (type == "file") { + // TODO download compressed version if it exists ? + auto raw = list[paths].toObject()["downloads"].toObject()["raw"].toObject(); + auto isExec = list[paths].toObject()["executable"].toBool(); + auto f = File{ file, raw["url"].toString(), QByteArray::fromHex(raw["sha1"].toString().toLatin1()), isExec }; + toDownload.push_back(f); + } } + auto elementDownload = new NetJob("JRE::FileDownload", APPLICATION->network()); + for (const auto& file : toDownload) { + auto dl = Net::Download::makeFile(file.url, file.path); + dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, file.hash)); + if (file.isExec) { + connect(dl.get(), &Net::Download::succeeded, + [file] { QFile(file.path).setPermissions(QFile(file.path).permissions() | QFileDevice::Permissions(0x1111)); }); + } + elementDownload->addNetAction(dl); + } + connect(elementDownload, &NetJob::finished, [elementDownload, this] { + disconnect(this, &Task::aborted, elementDownload, &NetJob::abort); + elementDownload->deleteLater(); + }); + connect(elementDownload, &NetJob::progress, this, &JavaDownloader::progress); + connect(elementDownload, &NetJob::failed, this, &JavaDownloader::emitFailed); + + connect(this, &Task::aborted, elementDownload, &NetJob::abort); + connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); + elementDownload->start(); +} +void JavaDownloader::downloadAzulMeta(const QString& OS, bool isLegacy, const NetJob* netJob) +{ + setStatus(tr("Querying Azul meta")); + QString javaVersion = isLegacy ? QString("8.0") : QString("17.0"); + + QString azulOS; + QString arch; + QString bitness; + + mojangOStoAzul(OS, azulOS, arch, bitness); + auto metaResponse = new QByteArray(); + auto downloadJob = new NetJob(QString("JRE::QueryAzulMeta"), APPLICATION->network()); + downloadJob->addNetAction( + Net::Download::makeByteArray(QString("https://api.azul.com/zulu/download/community/v1.0/bundles/?" + "java_version=%1" + "&os=%2" + "&arch=%3" + "&hw_bitness=%4" + "&ext=zip" // as a zip for all os, even linux NOTE !! Linux ARM is .deb only !! + "&bundle_type=jre" // jre only + "&latest=true" // only get the one latest entry + ) + .arg(javaVersion, azulOS, arch, bitness), + metaResponse)); + connect(downloadJob, &NetJob::finished, [downloadJob, metaResponse, this] { + disconnect(this, &Task::aborted, downloadJob, &NetJob::abort); + downloadJob->deleteLater(); + delete metaResponse; + }); + connect(this, &Task::aborted, downloadJob, &NetJob::abort); + connect(netJob, &NetJob::failed, this, &JavaDownloader::emitFailed); + connect(downloadJob, &NetJob::progress, this, &JavaDownloader::progress); + connect(downloadJob, &NetJob::succeeded, [metaResponse, isLegacy, this] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*metaResponse, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); + qWarning() << *metaResponse; + return; + } + auto array = doc.array(); + if (!array.empty()) { + downloadAzulJava(isLegacy, array); + } else { + emitFailed(tr("No suitable JRE found")); + } + }); + downloadJob->start(); +} +void JavaDownloader::mojangOStoAzul(const QString& OS, QString& azulOS, QString& arch, QString& bitness) +{ + if (OS == "mac-os-arm64") { + // macos arm64 + azulOS = "macos"; + arch = "arm"; + bitness = "64"; + } else if (OS == "linux-arm64") { + // linux arm64 + azulOS = "linux"; + arch = "arm"; + bitness = "64"; + } else if (OS == "linux-arm") { + // linux arm (32) + azulOS = "linux"; + arch = "arm"; + bitness = "32"; + } else if (OS == "linux") { + // linux x86 64 (used for debugging, should never reach here) + azulOS = "linux"; + arch = "x86"; + bitness = "64"; + } +} +void JavaDownloader::downloadAzulJava(bool isLegacy, const QJsonArray& array) +{ // JRE found ! download the zip + setStatus(tr("Downloading java from Azul")); + auto downloadURL = QUrl(array[0].toObject()["url"].toString()); + auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); + auto temp = std::make_unique(FS::PathCombine(APPLICATION->root(), "temp", "XXXXXX.zip")); + FS::ensureFolderPathExists(FS::PathCombine(APPLICATION->root(), "temp")); + // Have to open at least once to generate path + temp->open(); + temp->close(); + download->addNetAction(Net::Download::makeFile(downloadURL, temp->fileName())); + connect(download, &NetJob::finished, [download, this] { + disconnect(this, &Task::aborted, download, &NetJob::abort); + download->deleteLater(); + }); + connect(download, &NetJob::progress, this, &JavaDownloader::progress); + connect(download, &NetJob::failed, this, &JavaDownloader::emitFailed); + connect(this, &Task::aborted, download, &NetJob::abort); + connect(download, &NetJob::succeeded, [isLegacy, file = std::move(temp), downloadURL, this] { + setStatus(tr("Extracting java")); + auto output = FS::PathCombine(QCoreApplication::applicationDirPath(), "java", isLegacy ? "java-legacy" : "java-current"); + // This should do all of the extracting and creating folders + MMCZip::extractDir(file->fileName(), downloadURL.fileName().chopped(4), output); + emitSucceeded(); + }); + download->start(); } void JavaDownloader::showPrompts(QWidget* parent) { @@ -289,7 +299,7 @@ void JavaDownloader::showPrompts(QWidget* parent) both->setEnabled(false); } if (!yes->isEnabled() && !no->isEnabled()) { - QMessageBox::warning(parent, tr("Already installed !"), tr("Both versions of java are already installed !")); + QMessageBox::warning(parent, tr("Already installed!"), tr("Both versions of java are already installed!")); return; } box.exec(); diff --git a/launcher/JavaDownloader.h b/launcher/JavaDownloader.h index 00ccdf2bc..6ed67263a 100644 --- a/launcher/JavaDownloader.h +++ b/launcher/JavaDownloader.h @@ -17,5 +17,13 @@ class JavaDownloader : public Task { private: bool m_isLegacy; const QString& m_OS; - static void abortNetJob(NetJob* elementDownload); + + void downloadMojangJavaList(const QString& OS, bool isLegacy); + void parseMojangManifest(bool isLegacy, const QJsonArray& versionArray); + void downloadMojangJava(bool isLegacy, const QJsonDocument& doc); + + static void mojangOStoAzul(const QString& OS, QString& azulOS, QString& arch, QString& bitness) ; + void downloadAzulMeta(const QString& OS, bool isLegacy, const NetJob* netJob); + void downloadAzulJava(bool isLegacy, const QJsonArray& array); + }; From a65f20a78920efdb974b78f0c72df95d401ad337 Mon Sep 17 00:00:00 2001 From: timoreo Date: Mon, 12 Sep 2022 17:21:55 +0200 Subject: [PATCH 016/616] Fix a tiny formatting issue Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com> Signed-off-by: timoreo --- launcher/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 4bb686106..c4d9cb74f 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -271,7 +271,7 @@ set(MINECRAFT_SOURCES minecraft/GradleSpecifier.h minecraft/MinecraftInstance.cpp minecraft/MinecraftInstance.h - minecraft/LaunchProfile.cpp + minecraft/LaunchProfile.cpp minecraft/LaunchProfile.h minecraft/Component.cpp minecraft/Component.h From dcbd6cc1afe3495908511fb9179dd27fe8a70c98 Mon Sep 17 00:00:00 2001 From: timoreo Date: Mon, 12 Sep 2022 19:31:07 +0200 Subject: [PATCH 017/616] More Json:: everywhere ! Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index 425a7d470..d0b8c5240 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -71,7 +71,7 @@ void JavaDownloader::downloadMojangJavaList(const QString& OS, bool isLegacy) void JavaDownloader::parseMojangManifest(bool isLegacy, const QJsonArray& versionArray) { setStatus(tr("Downloading java from Mojang")); - auto url = versionArray[0].toObject()["manifest"].toObject()["url"].toString(); + auto url = Json::ensureString(Json::ensureObject(Json::ensureObject(versionArray[0]), "manifest"), "url"); auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); auto files = new QByteArray(); @@ -103,22 +103,22 @@ void JavaDownloader::downloadMojangJava(bool isLegacy, const QJsonDocument& doc) auto output = FS::PathCombine(QString("java"), (isLegacy ? "java-legacy" : "java-current")); FS::ensureFolderPathExists(output); std::vector toDownload; - auto list = doc.object()["files"].toObject(); + auto list = Json::ensureObject(Json::ensureObject(doc.object()), "files"); for (const auto& paths : list.keys()) { auto file = FS::PathCombine(output, paths); - auto type = list[paths].toObject()["type"].toString(); + auto type = Json::requireString(Json::requireObject(list, paths), "type"); if (type == "directory") { FS::ensureFolderPathExists(file); } else if (type == "link") { // this is linux only ! - auto target = FS::PathCombine(file, "../" + list[paths].toObject()["target"].toString()); + auto target = FS::PathCombine(file, "../" + Json::requireString(Json::requireObject(list, paths), "target")); QFile(target).link(file); } else if (type == "file") { // TODO download compressed version if it exists ? - auto raw = list[paths].toObject()["downloads"].toObject()["raw"].toObject(); - auto isExec = list[paths].toObject()["executable"].toBool(); - auto f = File{ file, raw["url"].toString(), QByteArray::fromHex(raw["sha1"].toString().toLatin1()), isExec }; + auto raw = Json::requireObject(Json::requireObject(Json::requireObject(list, paths), "downloads"), "raw"); + auto isExec = Json::ensureBoolean(Json::requireObject(list, paths), "executable", false); + auto f = File{ file, Json::requireString(raw, "url"), QByteArray::fromHex(Json::ensureString(raw, "sha1").toLatin1()), isExec }; toDownload.push_back(f); } } @@ -183,7 +183,7 @@ void JavaDownloader::downloadAzulMeta(const QString& OS, bool isLegacy, const Ne qWarning() << *metaResponse; return; } - auto array = doc.array(); + auto array = Json::ensureArray(doc.array()); if (!array.empty()) { downloadAzulJava(isLegacy, array); } else { From 6a5db12c6a3350b74eb9cd75a526881bc5b68572 Mon Sep 17 00:00:00 2001 From: timoreo Date: Mon, 24 Oct 2022 14:55:51 +0200 Subject: [PATCH 018/616] Apply some more suggestions from @flowln Co-authored-by: flow Signed-off-by: timoreo --- launcher/JavaDownloader.cpp | 82 +++++++++++-------- .../ui/pages/instance/InstanceSettingsPage.ui | 38 ++++----- 2 files changed, 68 insertions(+), 52 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index d0b8c5240..165573599 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -2,8 +2,10 @@ #include #include #include +#include #include "Application.h" #include "FileSystem.h" +#include "InstanceList.h" #include "Json.h" #include "MMCZip.h" #include "SysInfo.h" @@ -34,8 +36,10 @@ void JavaDownloader::downloadMojangJavaList(const QString& OS, bool isLegacy) netJob->addNetAction(Net::Download::makeByteArray( QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); - connect(this, &Task::aborted, - [isLegacy] { QDir(FS::PathCombine("java", (isLegacy ? "java-legacy" : "java-current"))).removeRecursively(); }); + connect(this, &Task::aborted, [isLegacy] { + QDir(FS::PathCombine(QCoreApplication::applicationDirPath(), "java", (isLegacy ? "java-legacy" : "java-current"))) + .removeRecursively(); + }); connect(netJob, &NetJob::finished, [netJob, response, this] { // delete so that it's not called on a deleted job @@ -70,7 +74,7 @@ void JavaDownloader::downloadMojangJavaList(const QString& OS, bool isLegacy) } void JavaDownloader::parseMojangManifest(bool isLegacy, const QJsonArray& versionArray) { - setStatus(tr("Downloading java from Mojang")); + setStatus(tr("Downloading Java from Mojang")); auto url = Json::ensureString(Json::ensureObject(Json::ensureObject(versionArray[0]), "manifest"), "url"); auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); auto files = new QByteArray(); @@ -100,32 +104,41 @@ void JavaDownloader::parseMojangManifest(bool isLegacy, const QJsonArray& versio } void JavaDownloader::downloadMojangJava(bool isLegacy, const QJsonDocument& doc) { // valid json doc, begin making jre spot - auto output = FS::PathCombine(QString("java"), (isLegacy ? "java-legacy" : "java-current")); + auto output = FS::PathCombine(QCoreApplication::applicationDirPath(), QString("java"), (isLegacy ? "java-legacy" : "java-current")); FS::ensureFolderPathExists(output); std::vector toDownload; auto list = Json::ensureObject(Json::ensureObject(doc.object()), "files"); for (const auto& paths : list.keys()) { auto file = FS::PathCombine(output, paths); - auto type = Json::requireString(Json::requireObject(list, paths), "type"); + const QJsonObject& meta = Json::ensureObject(list, paths); + auto type = Json::ensureString(meta, "type"); if (type == "directory") { FS::ensureFolderPathExists(file); } else if (type == "link") { // this is linux only ! - auto target = FS::PathCombine(file, "../" + Json::requireString(Json::requireObject(list, paths), "target")); - QFile(target).link(file); + auto path = Json::ensureString(meta, "target"); + if (!path.isEmpty()) { + auto target = FS::PathCombine(file, "../" + path); + QFile(target).link(file); + } } else if (type == "file") { // TODO download compressed version if it exists ? - auto raw = Json::requireObject(Json::requireObject(Json::requireObject(list, paths), "downloads"), "raw"); - auto isExec = Json::ensureBoolean(Json::requireObject(list, paths), "executable", false); - auto f = File{ file, Json::requireString(raw, "url"), QByteArray::fromHex(Json::ensureString(raw, "sha1").toLatin1()), isExec }; - toDownload.push_back(f); + auto raw = Json::ensureObject(Json::ensureObject(meta, "downloads"), "raw"); + auto isExec = Json::ensureBoolean(meta, "executable", false); + auto url = Json::ensureString(raw, "url"); + if (!url.isEmpty() && QUrl(url).isValid()) { + auto f = File{ file, url, QByteArray::fromHex(Json::ensureString(raw, "sha1").toLatin1()), isExec }; + toDownload.push_back(f); + } } } auto elementDownload = new NetJob("JRE::FileDownload", APPLICATION->network()); for (const auto& file : toDownload) { auto dl = Net::Download::makeFile(file.url, file.path); - dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, file.hash)); + if (!file.hash.isEmpty()) { + dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, file.hash)); + } if (file.isExec) { connect(dl.get(), &Net::Download::succeeded, [file] { QFile(file.path).setPermissions(QFile(file.path).permissions() | QFileDevice::Permissions(0x1111)); }); @@ -161,7 +174,7 @@ void JavaDownloader::downloadAzulMeta(const QString& OS, bool isLegacy, const Ne "&os=%2" "&arch=%3" "&hw_bitness=%4" - "&ext=zip" // as a zip for all os, even linux NOTE !! Linux ARM is .deb only !! + "&ext=zip" // as a zip for all os, even linux NOTE !! Linux ARM is .deb or .tar.gz only !! "&bundle_type=jre" // jre only "&latest=true" // only get the one latest entry ) @@ -218,27 +231,30 @@ void JavaDownloader::mojangOStoAzul(const QString& OS, QString& azulOS, QString& } void JavaDownloader::downloadAzulJava(bool isLegacy, const QJsonArray& array) { // JRE found ! download the zip - setStatus(tr("Downloading java from Azul")); + setStatus(tr("Downloading Java from Azul")); auto downloadURL = QUrl(array[0].toObject()["url"].toString()); auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); - auto temp = std::make_unique(FS::PathCombine(APPLICATION->root(), "temp", "XXXXXX.zip")); - FS::ensureFolderPathExists(FS::PathCombine(APPLICATION->root(), "temp")); - // Have to open at least once to generate path - temp->open(); - temp->close(); - download->addNetAction(Net::Download::makeFile(downloadURL, temp->fileName())); + auto path = APPLICATION->instances()->getStagedInstancePath(); + auto temp = FS::PathCombine(path, "azulJRE.zip"); + + download->addNetAction(Net::Download::makeFile(downloadURL, temp)); connect(download, &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download, &NetJob::abort); download->deleteLater(); }); + connect(download, &NetJob::aborted, [path] { APPLICATION->instances()->destroyStagingPath(path); }); connect(download, &NetJob::progress, this, &JavaDownloader::progress); - connect(download, &NetJob::failed, this, &JavaDownloader::emitFailed); + connect(download, &NetJob::failed, this, [this, path](QString reason) { + APPLICATION->instances()->destroyStagingPath(path); + emitFailed(std::move(reason)); + }); connect(this, &Task::aborted, download, &NetJob::abort); - connect(download, &NetJob::succeeded, [isLegacy, file = std::move(temp), downloadURL, this] { + connect(download, &NetJob::succeeded, [isLegacy, temp, downloadURL, path, this] { setStatus(tr("Extracting java")); auto output = FS::PathCombine(QCoreApplication::applicationDirPath(), "java", isLegacy ? "java-legacy" : "java-current"); // This should do all of the extracting and creating folders - MMCZip::extractDir(file->fileName(), downloadURL.fileName().chopped(4), output); + MMCZip::extractDir(temp, downloadURL.fileName().chopped(4), output); + APPLICATION->instances()->destroyStagingPath(path); emitSucceeded(); }); download->start(); @@ -280,26 +296,27 @@ void JavaDownloader::showPrompts(QWidget* parent) return; } // Selection using QMessageBox for java 8 or 17 - QMessageBox box(QMessageBox::Icon::Question, tr("Java version"), - tr("Do you want to download Java version 8 or 17?\n Java 8 is recommended for minecraft versions below 1.17\n Java 17 " - "is recommended for minecraft versions above or equal to 1.17"), - QMessageBox::NoButton, parent); + QMessageBox box( + QMessageBox::Icon::Question, tr("Java version"), + tr("Do you want to download Java version 8 or 17?\n Java 8 is recommended for older Minecraft versions, below 1.17\n Java 17 " + "is recommended for newer Minecraft versions, starting from 1.17"), + QMessageBox::NoButton, parent); auto yes = box.addButton("Java 17", QMessageBox::AcceptRole); auto no = box.addButton("Java 8", QMessageBox::AcceptRole); auto both = box.addButton(tr("Download both"), QMessageBox::AcceptRole); auto cancel = box.addButton(QMessageBox::Cancel); - if (QFileInfo::exists(FS::PathCombine(QString("java"), "java-legacy"))) { + if (QFileInfo::exists(FS::PathCombine(QCoreApplication::applicationDirPath(), QString("java"), "java-legacy"))) { no->setEnabled(false); } - if (QFileInfo::exists(FS::PathCombine(QString("java"), "java-current"))) { + if (QFileInfo::exists(FS::PathCombine(QCoreApplication::applicationDirPath(), QString("java"), "java-current"))) { yes->setEnabled(false); } if (!yes->isEnabled() || !no->isEnabled()) { both->setEnabled(false); } if (!yes->isEnabled() && !no->isEnabled()) { - QMessageBox::warning(parent, tr("Already installed!"), tr("Both versions of java are already installed!")); + QMessageBox::information(parent, tr("Already installed!"), tr("Both versions of Java are already installed!")); return; } box.exec(); @@ -311,8 +328,9 @@ void JavaDownloader::showPrompts(QWidget* parent) auto down = new JavaDownloader(isLegacy, version); ProgressDialog dialog(parent); dialog.setSkipButton(true, tr("Abort")); - - if (dialog.execWithTask(down) && box.clickedButton() == both) { + bool finished_successfully = dialog.execWithTask(down); + // Run another download task for the other option as well! + if (finished_successfully && box.clickedButton() == both) { auto dwn = new JavaDownloader(false, version); ProgressDialog dg(parent); dg.setSkipButton(true, tr("Abort")); diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui index 4ce59a0ae..a28332d5a 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.ui +++ b/launcher/ui/pages/instance/InstanceSettingsPage.ui @@ -61,9 +61,6 @@ false - - - @@ -71,20 +68,6 @@ - - - - Browse... - - - - - - - Test - - - @@ -95,7 +78,24 @@ - + + + + + + + Browse... + + + + + + + Test + + + + Download Java... @@ -635,8 +635,6 @@ javaSettingsGroupBox javaPathTextBox javaDetectBtn - javaBrowseBtn - javaTestBtn memoryGroupBox minMemSpinBox maxMemSpinBox From ce6a36c8b57fb9eb0a22c4f70b74e8fa200a88ad Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 28 Jul 2023 14:31:53 +0100 Subject: [PATCH 019/616] Deduplicate fix Signed-off-by: TheKodeToad --- launcher/MMCZip.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/launcher/MMCZip.cpp b/launcher/MMCZip.cpp index 49fd0e707..1a336375b 100644 --- a/launcher/MMCZip.cpp +++ b/launcher/MMCZip.cpp @@ -315,11 +315,6 @@ std::optional MMCZip::extractSubDir(QuaZip *zip, const QString & su if (relative_file_name.startsWith('/')) relative_file_name = relative_file_name.mid(1); - // Fix subdirs/files ending with a / getting transformed into absolute paths - if(name.startsWith('/')){ - name = name.mid(1); - } - // Fix weird "folders with a single file get squashed" thing QString sub_path; if (relative_file_name.contains('/') && !relative_file_name.endsWith('/')) { From 5538c1d0afba06d1a639dca45e88b0e94a3742f0 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 28 Jul 2023 15:11:24 +0100 Subject: [PATCH 020/616] Fix compilation (actually this time!), incorporating new changes Signed-off-by: TheKodeToad --- launcher/JavaDownloader.cpp | 55 +++++++++++++++++-------------------- 1 file changed, 25 insertions(+), 30 deletions(-) diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp index 165573599..f5960bbe9 100644 --- a/launcher/JavaDownloader.cpp +++ b/launcher/JavaDownloader.cpp @@ -30,8 +30,8 @@ void JavaDownloader::executeTask() } void JavaDownloader::downloadMojangJavaList(const QString& OS, bool isLegacy) { - auto netJob = new NetJob(QString("JRE::QueryVersions"), APPLICATION->network()); - auto response = new QByteArray(); + auto netJob = makeShared(QString("JRE::QueryVersions"), APPLICATION->network()); + auto response = std::make_shared(); setStatus(tr("Querying mojang meta")); netJob->addNetAction(Net::Download::makeByteArray( QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); @@ -41,18 +41,17 @@ void JavaDownloader::downloadMojangJavaList(const QString& OS, bool isLegacy) .removeRecursively(); }); - connect(netJob, &NetJob::finished, [netJob, response, this] { + connect(netJob.get(), &NetJob::finished, [netJob, response, this] { // delete so that it's not called on a deleted job - disconnect(this, &Task::aborted, netJob, &NetJob::abort); - netJob->deleteLater(); - delete response; + // FIXME: is this needed? qt should handle this + disconnect(this, &Task::aborted, netJob.get(), &NetJob::abort); }); - connect(netJob, &NetJob::progress, this, &JavaDownloader::progress); - connect(netJob, &NetJob::failed, this, &JavaDownloader::emitFailed); + connect(netJob.get(), &NetJob::progress, this, &JavaDownloader::progress); + connect(netJob.get(), &NetJob::failed, this, &JavaDownloader::emitFailed); - connect(this, &Task::aborted, netJob, &NetJob::abort); + connect(this, &Task::aborted, netJob.get(), &NetJob::abort); - connect(netJob, &NetJob::succeeded, [response, OS, isLegacy, this, netJob] { + connect(netJob.get(), &NetJob::succeeded, [response, OS, isLegacy, this, netJob] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -66,7 +65,7 @@ void JavaDownloader::downloadMojangJavaList(const QString& OS, bool isLegacy) } else { // mojang does not have a JRE for us, let's get azul zulu - downloadAzulMeta(OS, isLegacy, netJob); + downloadAzulMeta(OS, isLegacy, netJob.get()); } }); @@ -76,21 +75,19 @@ void JavaDownloader::parseMojangManifest(bool isLegacy, const QJsonArray& versio { setStatus(tr("Downloading Java from Mojang")); auto url = Json::ensureString(Json::ensureObject(Json::ensureObject(versionArray[0]), "manifest"), "url"); - auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); - auto files = new QByteArray(); + auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); + auto files = std::make_shared(); download->addNetAction(Net::Download::makeByteArray(QUrl(url), files)); - connect(download, &NetJob::finished, [download, files, this] { - disconnect(this, &Task::aborted, download, &NetJob::abort); - download->deleteLater(); - delete files; + connect(download.get(), &NetJob::finished, [download, files, this] { + disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); - connect(download, &NetJob::progress, this, &JavaDownloader::progress); - connect(download, &NetJob::failed, this, &JavaDownloader::emitFailed); - connect(this, &Task::aborted, download, &NetJob::abort); + connect(download.get(), &NetJob::progress, this, &JavaDownloader::progress); + connect(download.get(), &NetJob::failed, this, &JavaDownloader::emitFailed); + connect(this, &Task::aborted, download.get(), &NetJob::abort); - connect(download, &NetJob::succeeded, [files, isLegacy, this] { + connect(download.get(), &NetJob::succeeded, [files, isLegacy, this] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -166,8 +163,8 @@ void JavaDownloader::downloadAzulMeta(const QString& OS, bool isLegacy, const Ne QString bitness; mojangOStoAzul(OS, azulOS, arch, bitness); - auto metaResponse = new QByteArray(); - auto downloadJob = new NetJob(QString("JRE::QueryAzulMeta"), APPLICATION->network()); + auto metaResponse = std::make_shared(); + auto downloadJob = makeShared(QString("JRE::QueryAzulMeta"), APPLICATION->network()); downloadJob->addNetAction( Net::Download::makeByteArray(QString("https://api.azul.com/zulu/download/community/v1.0/bundles/?" "java_version=%1" @@ -180,15 +177,13 @@ void JavaDownloader::downloadAzulMeta(const QString& OS, bool isLegacy, const Ne ) .arg(javaVersion, azulOS, arch, bitness), metaResponse)); - connect(downloadJob, &NetJob::finished, [downloadJob, metaResponse, this] { - disconnect(this, &Task::aborted, downloadJob, &NetJob::abort); - downloadJob->deleteLater(); - delete metaResponse; + connect(downloadJob.get(), &NetJob::finished, [downloadJob, metaResponse, this] { + disconnect(this, &Task::aborted, downloadJob.get(), &NetJob::abort); }); - connect(this, &Task::aborted, downloadJob, &NetJob::abort); + connect(this, &Task::aborted, downloadJob.get(), &NetJob::abort); connect(netJob, &NetJob::failed, this, &JavaDownloader::emitFailed); - connect(downloadJob, &NetJob::progress, this, &JavaDownloader::progress); - connect(downloadJob, &NetJob::succeeded, [metaResponse, isLegacy, this] { + connect(downloadJob.get(), &NetJob::progress, this, &JavaDownloader::progress); + connect(downloadJob.get(), &NetJob::succeeded, [metaResponse, isLegacy, this] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*metaResponse, &parse_error); if (parse_error.error != QJsonParseError::NoError) { From f3baa420b2154c37a8f418a090c4392d526482c2 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 16 Aug 2023 13:43:07 +0100 Subject: [PATCH 021/616] Fix broken tab order Signed-off-by: TheKodeToad --- launcher/ui/pages/global/JavaPage.ui | 8 +++++++- launcher/ui/pages/instance/InstanceSettingsPage.ui | 12 ++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index 44289eb86..0bf27fef1 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -320,8 +320,14 @@ minMemSpinBox maxMemSpinBox permGenSpinBox - javaBrowseBtn javaPathTextBox + javaBrowseBtn + javaDownloadBtn + javaDetectBtn + javaTestBtn + skipCompatibilityCheckbox + skipJavaWizardCheckbox + jvmArgsTextBox tabWidget diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui index f9e679b2e..08a74671c 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.ui +++ b/launcher/ui/pages/instance/InstanceSettingsPage.ui @@ -714,6 +714,12 @@ openGlobalJavaSettingsButton settingsTabs javaSettingsGroupBox + javaPathTextBox + javaBrowseBtn + javaDownloadBtn + javaDetectBtn + javaTestBtn + skipCompatibilityCheckbox memoryGroupBox minMemSpinBox maxMemSpinBox @@ -733,12 +739,6 @@ useNativeOpenALCheck showGameTime recordGameTime - skipCompatibilityCheckbox - javaPathTextBox - javaBrowseBtn - javaDownloadBtn - javaDetectBtn - javaTestBtn miscellaneousSettingsBox closeAfterLaunchCheck quitAfterGameStopCheck From 93876e27f80a63b36c2cce73b014bf031054bb99 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 31 Aug 2023 17:32:55 +0100 Subject: [PATCH 022/616] Generalise resource metadata Signed-off-by: TheKodeToad --- launcher/CMakeLists.txt | 5 +- launcher/QObjectPtr.h | 6 +- launcher/minecraft/MinecraftInstance.cpp | 13 ++-- launcher/minecraft/mod/MetadataHandler.h | 51 ++++++++----- launcher/minecraft/mod/Mod.cpp | 73 +----------------- launcher/minecraft/mod/Mod.h | 15 +--- launcher/minecraft/mod/ModDetails.h | 48 +----------- launcher/minecraft/mod/ModFolderModel.cpp | 46 ++---------- launcher/minecraft/mod/ModFolderModel.h | 14 +--- launcher/minecraft/mod/Resource.cpp | 45 ++++++++++- launcher/minecraft/mod/Resource.h | 28 ++++++- .../minecraft/mod/ResourceFolderModel.cpp | 14 ++-- launcher/minecraft/mod/ResourceFolderModel.h | 11 ++- .../minecraft/mod/ResourcePackFolderModel.cpp | 10 +-- .../minecraft/mod/ResourcePackFolderModel.h | 6 +- .../minecraft/mod/ShaderPackFolderModel.h | 4 +- .../minecraft/mod/TexturePackFolderModel.cpp | 10 +-- .../minecraft/mod/TexturePackFolderModel.h | 5 +- .../minecraft/mod/tasks/BasicFolderLoadTask.h | 74 ------------------- .../minecraft/mod/tasks/LocalModParseTask.h | 5 -- ...oadTask.cpp => ResourceFolderLoadTask.cpp} | 71 +++++++++--------- ...derLoadTask.h => ResourceFolderLoadTask.h} | 12 ++- launcher/modplatform/EnsureMetadataTask.cpp | 2 +- .../modplatform/flame/FlameCheckUpdate.cpp | 4 +- .../modrinth/ModrinthCheckUpdate.cpp | 2 +- .../modrinth/ModrinthPackExportTask.cpp | 2 +- launcher/modplatform/packwiz/Packwiz.h | 1 + launcher/ui/dialogs/ModUpdateDialog.cpp | 2 +- 28 files changed, 209 insertions(+), 370 deletions(-) delete mode 100644 launcher/minecraft/mod/tasks/BasicFolderLoadTask.h rename launcher/minecraft/mod/tasks/{ModFolderLoadTask.cpp => ResourceFolderLoadTask.cpp} (55%) rename launcher/minecraft/mod/tasks/{ModFolderLoadTask.h => ResourceFolderLoadTask.h} (84%) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 18e0acab1..cd4c64dec 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -350,9 +350,8 @@ set(MINECRAFT_SOURCES minecraft/mod/TexturePackFolderModel.h minecraft/mod/TexturePackFolderModel.cpp minecraft/mod/ShaderPackFolderModel.h - minecraft/mod/tasks/BasicFolderLoadTask.h - minecraft/mod/tasks/ModFolderLoadTask.h - minecraft/mod/tasks/ModFolderLoadTask.cpp + minecraft/mod/tasks/ResourceFolderLoadTask.h + minecraft/mod/tasks/ResourceFolderLoadTask.cpp minecraft/mod/tasks/LocalModParseTask.h minecraft/mod/tasks/LocalModParseTask.cpp minecraft/mod/tasks/LocalModUpdateTask.h diff --git a/launcher/QObjectPtr.h b/launcher/QObjectPtr.h index a1c64b433..5f7b64df0 100644 --- a/launcher/QObjectPtr.h +++ b/launcher/QObjectPtr.h @@ -33,11 +33,7 @@ class shared_qobject_ptr : public QSharedPointer { {} void reset() { QSharedPointer::reset(); } - void reset(T*&& other) - { - shared_qobject_ptr t(other); - this->swap(t); - } + void reset(T* other) { QSharedPointer::reset(other); } void reset(const shared_qobject_ptr& other) { shared_qobject_ptr t(other); diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 0e64c46d4..a75d017b7 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -1091,7 +1091,7 @@ std::shared_ptr MinecraftInstance::loaderModList() { if (!m_loader_mod_list) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); - m_loader_mod_list.reset(new ModFolderModel(modsRoot(), this, is_indexed)); + m_loader_mod_list.reset(new ModFolderModel(modsRoot(), this, is_indexed, true)); } return m_loader_mod_list; } @@ -1100,7 +1100,7 @@ std::shared_ptr MinecraftInstance::coreModList() { if (!m_core_mod_list) { bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); - m_core_mod_list.reset(new ModFolderModel(coreModsDir(), this, is_indexed)); + m_core_mod_list.reset(new ModFolderModel(coreModsDir(), this, is_indexed, true)); } return m_core_mod_list; } @@ -1117,7 +1117,8 @@ std::shared_ptr MinecraftInstance::nilModList() std::shared_ptr MinecraftInstance::resourcePackList() { if (!m_resource_pack_list) { - m_resource_pack_list.reset(new ResourcePackFolderModel(resourcePacksDir(), this)); + bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); + m_resource_pack_list.reset(new ResourcePackFolderModel(resourcePacksDir(), this, is_indexed, true)); } return m_resource_pack_list; } @@ -1125,7 +1126,8 @@ std::shared_ptr MinecraftInstance::resourcePackList() std::shared_ptr MinecraftInstance::texturePackList() { if (!m_texture_pack_list) { - m_texture_pack_list.reset(new TexturePackFolderModel(texturePacksDir(), this)); + bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); + m_texture_pack_list.reset(new TexturePackFolderModel(texturePacksDir(), this, is_indexed, true)); } return m_texture_pack_list; } @@ -1133,7 +1135,8 @@ std::shared_ptr MinecraftInstance::texturePackList() std::shared_ptr MinecraftInstance::shaderPackList() { if (!m_shader_pack_list) { - m_shader_pack_list.reset(new ShaderPackFolderModel(shaderPacksDir(), this)); + bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); + m_shader_pack_list.reset(new ShaderPackFolderModel(shaderPacksDir(), this, is_indexed, true)); } return m_shader_pack_list; } diff --git a/launcher/minecraft/mod/MetadataHandler.h b/launcher/minecraft/mod/MetadataHandler.h index 88e9ff2b6..747375d3f 100644 --- a/launcher/minecraft/mod/MetadataHandler.h +++ b/launcher/minecraft/mod/MetadataHandler.h @@ -25,30 +25,41 @@ // launcher/minecraft/mod/Mod.h class Mod; -/* Abstraction file for easily changing the way metadata is stored / handled - * Needs to be a class because of -Wunused-function and no C++17 [[maybe_unused]] - * */ -class Metadata { - public: - using ModStruct = Packwiz::V1::Mod; +namespace Metadata { +using ModStruct = Packwiz::V1::Mod; - static auto create(QDir& index_dir, ModPlatform::IndexedPack& mod_pack, ModPlatform::IndexedVersion& mod_version) -> ModStruct - { - return Packwiz::V1::createModFormat(index_dir, mod_pack, mod_version); - } +inline auto create(QDir& index_dir, ModPlatform::IndexedPack& mod_pack, ModPlatform::IndexedVersion& mod_version) -> ModStruct +{ + return Packwiz::V1::createModFormat(index_dir, mod_pack, mod_version); +} - static auto create(QDir& index_dir, Mod& internal_mod, QString mod_slug) -> ModStruct - { - return Packwiz::V1::createModFormat(index_dir, internal_mod, mod_slug); - } +inline auto create(QDir& index_dir, Mod& internal_mod, QString mod_slug) -> ModStruct +{ + return Packwiz::V1::createModFormat(index_dir, internal_mod, std::move(mod_slug)); +} - static void update(QDir& index_dir, ModStruct& mod) { Packwiz::V1::updateModIndex(index_dir, mod); } +inline void update(QDir& index_dir, ModStruct& mod) +{ + Packwiz::V1::updateModIndex(index_dir, mod); +} - static void remove(QDir& index_dir, QString mod_slug) { Packwiz::V1::deleteModIndex(index_dir, mod_slug); } +inline void remove(QDir& index_dir, QString mod_slug) +{ + Packwiz::V1::deleteModIndex(index_dir, mod_slug); +} - static void remove(QDir& index_dir, QVariant& mod_id) { Packwiz::V1::deleteModIndex(index_dir, mod_id); } +inline void remove(QDir& index_dir, QVariant& mod_id) +{ + Packwiz::V1::deleteModIndex(index_dir, mod_id); +} - static auto get(QDir& index_dir, QString mod_slug) -> ModStruct { return Packwiz::V1::getIndexForMod(index_dir, mod_slug); } +inline auto get(QDir& index_dir, QString mod_slug) -> ModStruct +{ + return Packwiz::V1::getIndexForMod(index_dir, std::move(mod_slug)); +} - static auto get(QDir& index_dir, QVariant& mod_id) -> ModStruct { return Packwiz::V1::getIndexForMod(index_dir, mod_id); } -}; +inline auto get(QDir& index_dir, QVariant& mod_id) -> ModStruct +{ + return Packwiz::V1::getIndexForMod(index_dir, mod_id); +} +}; // namespace Metadata diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp index ae3dea8d8..53f7d72de 100644 --- a/launcher/minecraft/mod/Mod.cpp +++ b/launcher/minecraft/mod/Mod.cpp @@ -43,35 +43,16 @@ #include "MTPixmapCache.h" #include "MetadataHandler.h" +#include "Resource.h" #include "Version.h" #include "minecraft/mod/ModDetails.h" #include "minecraft/mod/tasks/LocalModParseTask.h" -static ModPlatform::ProviderCapabilities ProviderCaps; - Mod::Mod(const QFileInfo& file) : Resource(file), m_local_details() { m_enabled = (file.suffix() != "disabled"); } -Mod::Mod(const QDir& mods_dir, const Metadata::ModStruct& metadata) : Mod(mods_dir.absoluteFilePath(metadata.filename)) -{ - m_name = metadata.name; - m_local_details.metadata = std::make_shared(std::move(metadata)); -} - -void Mod::setStatus(ModStatus status) -{ - m_local_details.status = status; -} -void Mod::setMetadata(std::shared_ptr&& metadata) -{ - if (status() == ModStatus::NoMetadata) - setStatus(ModStatus::Installed); - - m_local_details.metadata = metadata; -} - void Mod::setDetails(const ModDetails& details) { m_local_details = details; @@ -103,8 +84,7 @@ std::pair Mod::compare(const Resource& other, SortType type) const break; } case SortType::PROVIDER: { - auto compare_result = - QString::compare(provider().value_or("Unknown"), cast_other->provider().value_or("Unknown"), Qt::CaseInsensitive); + auto compare_result = QString::compare(provider(), cast_other->provider(), Qt::CaseInsensitive); if (compare_result != 0) return { compare_result, type == SortType::PROVIDER }; break; @@ -127,22 +107,6 @@ bool Mod::applyFilter(QRegularExpression filter) const return Resource::applyFilter(filter); } -auto Mod::destroy(QDir& index_dir, bool preserve_metadata, bool attempt_trash) -> bool -{ - if (!preserve_metadata) { - qDebug() << QString("Destroying metadata for '%1' on purpose").arg(name()); - - if (metadata()) { - Metadata::remove(index_dir, metadata()->slug); - } else { - auto n = name(); - Metadata::remove(index_dir, n); - } - } - - return Resource::destroy(attempt_trash); -} - auto Mod::details() const -> const ModDetails& { return m_local_details; @@ -154,10 +118,7 @@ auto Mod::name() const -> QString if (!d_name.isEmpty()) return d_name; - if (metadata()) - return metadata()->name; - - return m_name; + return Resource::name(); } auto Mod::version() const -> QString @@ -187,45 +148,17 @@ auto Mod::authors() const -> QStringList return details().authors; } -auto Mod::status() const -> ModStatus -{ - return details().status; -} - -auto Mod::metadata() -> std::shared_ptr -{ - return m_local_details.metadata; -} - -auto Mod::metadata() const -> const std::shared_ptr -{ - return m_local_details.metadata; -} - void Mod::finishResolvingWithDetails(ModDetails&& details) { m_is_resolving = false; m_is_resolved = true; - std::shared_ptr metadata = details.metadata; - if (details.status == ModStatus::Unknown) - details.status = m_local_details.status; - m_local_details = std::move(details); - if (metadata) - setMetadata(std::move(metadata)); if (!iconPath().isEmpty()) { m_pack_image_cache_key.was_read_attempt = false; } } -auto Mod::provider() const -> std::optional -{ - if (metadata()) - return ProviderCaps.readableName(metadata()->provider); - return {}; -} - auto Mod::licenses() const -> const QList& { return details().licenses; diff --git a/launcher/minecraft/mod/Mod.h b/launcher/minecraft/mod/Mod.h index 6dafecfc5..5f82572a2 100644 --- a/launcher/minecraft/mod/Mod.h +++ b/launcher/minecraft/mod/Mod.h @@ -56,7 +56,6 @@ class Mod : public Resource { Mod() = default; Mod(const QFileInfo& file); - Mod(const QDir& mods_dir, const Metadata::ModStruct& metadata); Mod(QString file_path) : Mod(QFileInfo(file_path)) {} auto details() const -> const ModDetails&; @@ -65,11 +64,10 @@ class Mod : public Resource { auto homeurl() const -> QString; auto description() const -> QString; auto authors() const -> QStringList; - auto status() const -> ModStatus; - auto provider() const -> std::optional; auto licenses() const -> const QList&; auto issueTracker() const -> QString; auto metaurl() const -> QString; + void setDetails(const ModDetails& details); /** Get the intneral path to the mod's icon file*/ QString iconPath() const { return m_local_details.icon_file; } @@ -78,22 +76,11 @@ class Mod : public Resource { /** Thread-safe. */ void setIcon(QImage new_image) const; - auto metadata() -> std::shared_ptr; - auto metadata() const -> const std::shared_ptr; - - void setStatus(ModStatus status); - void setMetadata(std::shared_ptr&& metadata); - void setMetadata(const Metadata::ModStruct& metadata) { setMetadata(std::make_shared(metadata)); } - void setDetails(const ModDetails& details); - bool valid() const override; [[nodiscard]] auto compare(Resource const& other, SortType type) const -> std::pair override; [[nodiscard]] bool applyFilter(QRegularExpression filter) const override; - // Delete all the files of this mod - auto destroy(QDir& index_dir, bool preserve_metadata = false, bool attempt_trash = true) -> bool; - void finishResolvingWithDetails(ModDetails&& details); protected: diff --git a/launcher/minecraft/mod/ModDetails.h b/launcher/minecraft/mod/ModDetails.h index a00d5a24b..9195c0368 100644 --- a/launcher/minecraft/mod/ModDetails.h +++ b/launcher/minecraft/mod/ModDetails.h @@ -43,13 +43,6 @@ #include "minecraft/mod/MetadataHandler.h" -enum class ModStatus { - Installed, // Both JAR and Metadata are present - NotInstalled, // Only the Metadata is present - NoMetadata, // Only the JAR is present - Unknown, // Default status -}; - struct ModLicense { QString name = {}; QString id = {}; @@ -149,12 +142,6 @@ struct ModDetails { /* Path of mod logo */ QString icon_file = {}; - /* Installation status of the mod */ - ModStatus status = ModStatus::Unknown; - - /* Metadata information, if any */ - std::shared_ptr metadata = nullptr; - ModDetails() = default; /** Metadata should be handled manually to properly set the mod status. */ @@ -169,40 +156,9 @@ struct ModDetails { , issue_tracker(other.issue_tracker) , licenses(other.licenses) , icon_file(other.icon_file) - , status(other.status) {} - ModDetails& operator=(const ModDetails& other) - { - this->mod_id = other.mod_id; - this->name = other.name; - this->version = other.version; - this->mcversion = other.mcversion; - this->homeurl = other.homeurl; - this->description = other.description; - this->authors = other.authors; - this->issue_tracker = other.issue_tracker; - this->licenses = other.licenses; - this->icon_file = other.icon_file; - this->status = other.status; + ModDetails& operator=(const ModDetails& other) = default; - return *this; - } - - ModDetails& operator=(const ModDetails&& other) - { - this->mod_id = other.mod_id; - this->name = other.name; - this->version = other.version; - this->mcversion = other.mcversion; - this->homeurl = other.homeurl; - this->description = other.description; - this->authors = other.authors; - this->issue_tracker = other.issue_tracker; - this->licenses = other.licenses; - this->icon_file = other.icon_file; - this->status = other.status; - - return *this; - } + ModDetails& operator=(ModDetails&& other) = default; }; diff --git a/launcher/minecraft/mod/ModFolderModel.cpp b/launcher/minecraft/mod/ModFolderModel.cpp index eed35615c..2f0e9b3e4 100644 --- a/launcher/minecraft/mod/ModFolderModel.cpp +++ b/launcher/minecraft/mod/ModFolderModel.cpp @@ -52,15 +52,16 @@ #include "Application.h" #include "Json.h" +#include "Resource.h" #include "minecraft/mod/tasks/LocalModParseTask.h" #include "minecraft/mod/tasks/LocalModUpdateTask.h" -#include "minecraft/mod/tasks/ModFolderLoadTask.h" +#include "minecraft/mod/tasks/ResourceFolderLoadTask.h" #include "modplatform/ModIndex.h" #include "modplatform/flame/FlameAPI.h" #include "modplatform/flame/FlameModIndex.h" -ModFolderModel::ModFolderModel(const QString& dir, BaseInstance* instance, bool is_indexed, bool create_dir) - : ResourceFolderModel(QDir(dir), instance, nullptr, create_dir), m_is_indexed(is_indexed) +ModFolderModel::ModFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) + : ResourceFolderModel(QDir(dir), instance, is_indexed, create_dir, parent) { m_column_names = QStringList({ "Enable", "Image", "Name", "Version", "Last Modified", "Provider" }); m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Version"), tr("Last Modified"), tr("Provider") }); @@ -96,15 +97,8 @@ QVariant ModFolderModel::data(const QModelIndex& index, int role) const } case DateColumn: return m_resources[row]->dateTimeChanged(); - case ProviderColumn: { - auto provider = at(row)->provider(); - if (!provider.has_value()) { - //: Unknown mod provider (i.e. not Modrinth, CurseForge, etc...) - return tr("Unknown"); - } - - return provider.value(); - } + case ProviderColumn: + return at(row)->provider(); default: return QVariant(); } @@ -185,14 +179,6 @@ int ModFolderModel::columnCount(const QModelIndex& parent) const return parent.isValid() ? 0 : NUM_COLUMNS; } -Task* ModFolderModel::createUpdateTask() -{ - auto index_dir = indexDir(); - auto task = new ModFolderLoadTask(dir(), index_dir, m_is_indexed, m_first_folder_load); - m_first_folder_load = false; - return task; -} - Task* ModFolderModel::createParseTask(Resource& resource) { return new LocalModParseTask(m_next_resolution_ticket, resource.type(), resource.fileinfo()); @@ -273,26 +259,6 @@ auto ModFolderModel::allMods() -> QList return mods; } -void ModFolderModel::onUpdateSucceeded() -{ - auto update_results = static_cast(m_current_update_task.get())->result(); - - auto& new_mods = update_results->mods; - -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - auto current_list = m_resources_index.keys(); - QSet current_set(current_list.begin(), current_list.end()); - - auto new_list = new_mods.keys(); - QSet new_set(new_list.begin(), new_list.end()); -#else - QSet current_set(m_resources_index.keys().toSet()); - QSet new_set(new_mods.keys().toSet()); -#endif - - applyUpdates(current_set, new_set, new_mods); -} - void ModFolderModel::onParseSucceeded(int ticket, QString mod_id) { auto iter = m_active_parse_tasks.constFind(ticket); diff --git a/launcher/minecraft/mod/ModFolderModel.h b/launcher/minecraft/mod/ModFolderModel.h index f1890e87e..9326158d4 100644 --- a/launcher/minecraft/mod/ModFolderModel.h +++ b/launcher/minecraft/mod/ModFolderModel.h @@ -47,10 +47,9 @@ #include "ResourceFolderModel.h" #include "minecraft/mod/tasks/LocalModParseTask.h" -#include "minecraft/mod/tasks/ModFolderLoadTask.h" +#include "minecraft/mod/tasks/ResourceFolderLoadTask.h" #include "modplatform/ModIndex.h" -class LegacyInstance; class BaseInstance; class QFileSystemWatcher; @@ -63,7 +62,7 @@ class ModFolderModel : public ResourceFolderModel { public: enum Columns { ActiveColumn = 0, ImageColumn, NameColumn, VersionColumn, DateColumn, ProviderColumn, NUM_COLUMNS }; enum ModStatusAction { Disable, Enable, Toggle }; - ModFolderModel(const QString& dir, BaseInstance* instance, bool is_indexed = false, bool create_dir = true); + ModFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent = nullptr); virtual QString id() const override { return "mods"; } @@ -72,7 +71,7 @@ class ModFolderModel : public ResourceFolderModel { QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; int columnCount(const QModelIndex& parent) const override; - [[nodiscard]] Task* createUpdateTask() override; + [[nodiscard]] Resource* createResource(const QFileInfo& file) override { return new Mod(file); } [[nodiscard]] Task* createParseTask(Resource&) override; bool installMod(QString file_path) { return ResourceFolderModel::installResource(file_path); } @@ -87,18 +86,11 @@ class ModFolderModel : public ResourceFolderModel { bool startWatching() override; bool stopWatching() override; - QDir indexDir() { return { QString("%1/.index").arg(dir().absolutePath()) }; } - auto selectedMods(QModelIndexList& indexes) -> QList; auto allMods() -> QList; RESOURCE_HELPERS(Mod) private slots: - void onUpdateSucceeded() override; void onParseSucceeded(int ticket, QString resource_id) override; - - protected: - bool m_is_indexed; - bool m_first_folder_load = true; }; diff --git a/launcher/minecraft/mod/Resource.cpp b/launcher/minecraft/mod/Resource.cpp index da806f0f4..0dd7f8992 100644 --- a/launcher/minecraft/mod/Resource.cpp +++ b/launcher/minecraft/mod/Resource.cpp @@ -5,6 +5,8 @@ #include "FileSystem.h" +static ModPlatform::ProviderCapabilities ProviderCaps; + Resource::Resource(QObject* parent) : QObject(parent) {} Resource::Resource(QFileInfo file_info) : QObject() @@ -54,6 +56,14 @@ void Resource::parseFile() m_changed_date_time = m_file_info.lastModified(); } +auto Resource::name() const -> QString +{ + if (metadata()) + return metadata()->name; + + return m_name; +} + static void removeThePrefix(QString& string) { QRegularExpression regex(QStringLiteral("^(?:the|teh) +"), QRegularExpression::CaseInsensitiveOption); @@ -61,6 +71,22 @@ static void removeThePrefix(QString& string) string = string.trimmed(); } +auto Resource::provider() const -> QString +{ + if (metadata()) + return ProviderCaps.readableName(metadata()->provider); + + return tr("Unknown"); +} + +void Resource::setMetadata(std::shared_ptr&& metadata) +{ + if (status() == ResourceStatus::NO_METADATA) + setStatus(ResourceStatus::INSTALLED); + + m_metadata = metadata; +} + std::pair Resource::compare(const Resource& other, SortType type) const { switch (type) { @@ -152,6 +178,23 @@ bool Resource::destroy(bool attemptTrash) return (attemptTrash && FS::trash(m_file_info.filePath())) || FS::deletePath(m_file_info.filePath()); } + +auto Resource::destroy(QDir& index_dir, bool preserve_metadata, bool attempt_trash) -> bool +{ + if (!preserve_metadata) { + qDebug() << QString("Destroying metadata for '%1' on purpose").arg(name()); + + if (metadata()) { + Metadata::remove(index_dir, metadata()->slug); + } else { + auto n = name(); + Metadata::remove(index_dir, n); + } + } + + return destroy(attempt_trash); +} + bool Resource::isSymLinkUnder(const QString& instPath) const { if (isSymLink()) @@ -168,4 +211,4 @@ bool Resource::isSymLinkUnder(const QString& instPath) const bool Resource::isMoreThanOneHardLink() const { return FS::hardLinkCount(m_file_info.absoluteFilePath()) > 1; -} +} \ No newline at end of file diff --git a/launcher/minecraft/mod/Resource.h b/launcher/minecraft/mod/Resource.h index c1ed49461..5012c23a4 100644 --- a/launcher/minecraft/mod/Resource.h +++ b/launcher/minecraft/mod/Resource.h @@ -5,6 +5,8 @@ #include #include +#include "MetadataHandler.h" +#include "ModDetails.h" #include "QObjectPtr.h" enum class ResourceType { @@ -15,6 +17,13 @@ enum class ResourceType { LITEMOD, //!< The resource is a litemod }; +enum class ResourceStatus { + INSTALLED, // Both JAR and Metadata are present + NOT_INSTALLED, // Only the Metadata is present + NO_METADATA, // Only the JAR is present + UNKNOWN, // Default status +}; + enum class SortType { NAME, DATE, VERSION, ENABLED, PACK_FORMAT, PROVIDER }; enum class EnableAction { ENABLE, DISABLE, TOGGLE }; @@ -46,9 +55,18 @@ class Resource : public QObject { [[nodiscard]] auto type() const -> ResourceType { return m_type; } [[nodiscard]] bool enabled() const { return m_enabled; } - [[nodiscard]] virtual auto name() const -> QString { return m_name; } + [[nodiscard]] virtual auto name() const -> QString; [[nodiscard]] virtual bool valid() const { return m_type != ResourceType::UNKNOWN; } + [[nodiscard]] auto status() const -> ResourceStatus { return m_status; }; + [[nodiscard]] auto metadata() -> std::shared_ptr { return m_metadata; } + [[nodiscard]] auto metadata() const -> std::shared_ptr { return m_metadata; } + [[nodiscard]] auto provider() const -> QString; + + void setStatus(ResourceStatus status) { m_status = status; } + void setMetadata(std::shared_ptr&& metadata); + void setMetadata(const Metadata::ModStruct& metadata) { setMetadata(std::make_shared(metadata)); } + /** Compares two Resources, for sorting purposes, considering a ascending order, returning: * > 0: 'this' comes after 'other' * = 0: 'this' is equal to 'other' @@ -81,7 +99,8 @@ class Resource : public QObject { } // Delete all files of this resource. - bool destroy(bool attemptTrash = true); + auto destroy(bool attemptTrash = true) -> bool; + auto destroy(QDir& index_dir, bool preserve_metadata = false, bool attempt_trash = true) -> bool; [[nodiscard]] auto isSymLink() const -> bool { return m_file_info.isSymLink(); } @@ -110,6 +129,11 @@ class Resource : public QObject { /* The type of file we're dealing with. */ ResourceType m_type = ResourceType::UNKNOWN; + /* Installation status of the resource. */ + ResourceStatus m_status = ResourceStatus::UNKNOWN; + + std::shared_ptr m_metadata = nullptr; + /* Whether the resource is enabled (e.g. shows up in the game) or not. */ bool m_enabled = true; diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index d3237b34b..a39e9adee 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -15,14 +15,14 @@ #include "FileSystem.h" #include "QVariantUtils.h" -#include "minecraft/mod/tasks/BasicFolderLoadTask.h" +#include "minecraft/mod/tasks/ResourceFolderLoadTask.h" #include "settings/Setting.h" #include "tasks/Task.h" #include "ui/dialogs/CustomMessageBox.h" -ResourceFolderModel::ResourceFolderModel(QDir dir, BaseInstance* instance, QObject* parent, bool create_dir) - : QAbstractListModel(parent), m_dir(dir), m_instance(instance), m_watcher(this) +ResourceFolderModel::ResourceFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) + : QAbstractListModel(parent), m_dir(dir), m_instance(instance), m_watcher(this), m_is_indexed(is_indexed) { if (create_dir) { FS::ensureFolderPathExists(m_dir.absolutePath()); @@ -290,7 +290,7 @@ void ResourceFolderModel::resolveResource(Resource* res) void ResourceFolderModel::onUpdateSucceeded() { - auto update_results = static_cast(m_current_update_task.get())->result(); + auto update_results = static_cast(m_current_update_task.get())->result(); auto& new_resources = update_results->resources; @@ -320,7 +320,11 @@ void ResourceFolderModel::onParseSucceeded(int ticket, QString resource_id) Task* ResourceFolderModel::createUpdateTask() { - return new BasicFolderLoadTask(m_dir); + auto index_dir = indexDir(); + auto task = new ResourceFolderLoadTask(dir(), index_dir, m_is_indexed, m_first_folder_load, + [this](const QFileInfo& file) { return createResource(file); }); + m_first_folder_load = false; + return task; } bool ResourceFolderModel::hasPendingParseTasks() const diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index 80c31e456..3a4287b30 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -29,7 +29,7 @@ class QSortFilterProxyModel; class ResourceFolderModel : public QAbstractListModel { Q_OBJECT public: - ResourceFolderModel(QDir, BaseInstance* instance, QObject* parent = nullptr, bool create_dir = true); + ResourceFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent = nullptr); ~ResourceFolderModel() override; virtual QString id() const { return "resource"; } @@ -52,6 +52,8 @@ class ResourceFolderModel : public QAbstractListModel { virtual bool startWatching() { return startWatching({ m_dir.absolutePath() }); } virtual bool stopWatching() { return stopWatching({ m_dir.absolutePath() }); } + QDir indexDir() { return { QString("%1/.index").arg(dir().absolutePath()) }; } + /** Given a path in the system, install that resource, moving it to its place in the * instance file hierarchy. * @@ -152,7 +154,9 @@ class ResourceFolderModel : public QAbstractListModel { * This Task is normally executed when opening a page, so it shouldn't contain much heavy work. * If such work is needed, try using it in the Task create by createParseTask() instead! */ - [[nodiscard]] virtual Task* createUpdateTask(); + [[nodiscard]] Task* createUpdateTask(); + + [[nodiscard]] virtual Resource* createResource(const QFileInfo& info) { return new Resource(info); } /** This creates a new parse task to be executed by onUpdateSucceeded(). * @@ -210,6 +214,9 @@ class ResourceFolderModel : public QAbstractListModel { QFileSystemWatcher m_watcher; bool m_is_watching = false; + bool m_is_indexed; + bool m_first_folder_load = true; + Task::Ptr m_current_update_task = nullptr; bool m_scheduled_update = false; diff --git a/launcher/minecraft/mod/ResourcePackFolderModel.cpp b/launcher/minecraft/mod/ResourcePackFolderModel.cpp index f27431576..2e72e02f2 100644 --- a/launcher/minecraft/mod/ResourcePackFolderModel.cpp +++ b/launcher/minecraft/mod/ResourcePackFolderModel.cpp @@ -44,10 +44,11 @@ #include "Application.h" #include "Version.h" -#include "minecraft/mod/tasks/BasicFolderLoadTask.h" #include "minecraft/mod/tasks/LocalResourcePackParseTask.h" +#include "minecraft/mod/tasks/ResourceFolderLoadTask.h" -ResourcePackFolderModel::ResourcePackFolderModel(const QString& dir, BaseInstance* instance) : ResourceFolderModel(QDir(dir), instance) +ResourcePackFolderModel::ResourcePackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) + : ResourceFolderModel(dir, instance, is_indexed, create_dir, parent) { m_column_names = QStringList({ "Enable", "Image", "Name", "Pack Format", "Last Modified" }); m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified") }); @@ -173,11 +174,6 @@ int ResourcePackFolderModel::columnCount(const QModelIndex& parent) const return parent.isValid() ? 0 : NUM_COLUMNS; } -Task* ResourcePackFolderModel::createUpdateTask() -{ - return new BasicFolderLoadTask(m_dir, [](QFileInfo const& entry) { return makeShared(entry); }); -} - Task* ResourcePackFolderModel::createParseTask(Resource& resource) { return new LocalResourcePackParseTask(m_next_resolution_ticket, static_cast(resource)); diff --git a/launcher/minecraft/mod/ResourcePackFolderModel.h b/launcher/minecraft/mod/ResourcePackFolderModel.h index 29c2c5995..fd56c8c73 100644 --- a/launcher/minecraft/mod/ResourcePackFolderModel.h +++ b/launcher/minecraft/mod/ResourcePackFolderModel.h @@ -9,16 +9,16 @@ class ResourcePackFolderModel : public ResourceFolderModel { public: enum Columns { ActiveColumn = 0, ImageColumn, NameColumn, PackFormatColumn, DateColumn, NUM_COLUMNS }; - explicit ResourcePackFolderModel(const QString& dir, BaseInstance* instance); + explicit ResourcePackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent = nullptr); - virtual QString id() const override { return "resourcepacks"; } + QString id() const override { return "resourcepacks"; } [[nodiscard]] QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override; [[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; [[nodiscard]] int columnCount(const QModelIndex& parent) const override; - [[nodiscard]] Task* createUpdateTask() override; + [[nodiscard]] Resource* createResource(const QFileInfo& file) override { return new ResourcePack(file); } [[nodiscard]] Task* createParseTask(Resource&) override; RESOURCE_HELPERS(ResourcePack) diff --git a/launcher/minecraft/mod/ShaderPackFolderModel.h b/launcher/minecraft/mod/ShaderPackFolderModel.h index 44ed37a47..02faee49c 100644 --- a/launcher/minecraft/mod/ShaderPackFolderModel.h +++ b/launcher/minecraft/mod/ShaderPackFolderModel.h @@ -6,7 +6,9 @@ class ShaderPackFolderModel : public ResourceFolderModel { Q_OBJECT public: - explicit ShaderPackFolderModel(const QString& dir, BaseInstance* instance) : ResourceFolderModel(QDir(dir), instance) {} + explicit ShaderPackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent = nullptr) + : ResourceFolderModel(dir, instance, is_indexed, create_dir, parent) + {} virtual QString id() const override { return "shaderpacks"; } }; diff --git a/launcher/minecraft/mod/TexturePackFolderModel.cpp b/launcher/minecraft/mod/TexturePackFolderModel.cpp index 5c5f2b7c1..23a392421 100644 --- a/launcher/minecraft/mod/TexturePackFolderModel.cpp +++ b/launcher/minecraft/mod/TexturePackFolderModel.cpp @@ -39,10 +39,11 @@ #include "TexturePackFolderModel.h" -#include "minecraft/mod/tasks/BasicFolderLoadTask.h" #include "minecraft/mod/tasks/LocalTexturePackParseTask.h" +#include "minecraft/mod/tasks/ResourceFolderLoadTask.h" -TexturePackFolderModel::TexturePackFolderModel(const QString& dir, BaseInstance* instance) : ResourceFolderModel(QDir(dir), instance) +TexturePackFolderModel::TexturePackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) + : ResourceFolderModel(QDir(dir), instance, is_indexed, create_dir, parent) { m_column_names = QStringList({ "Enable", "Image", "Name", "Last Modified" }); m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Last Modified") }); @@ -52,11 +53,6 @@ TexturePackFolderModel::TexturePackFolderModel(const QString& dir, BaseInstance* m_columnsHideable = { false, true, false, true }; } -Task* TexturePackFolderModel::createUpdateTask() -{ - return new BasicFolderLoadTask(m_dir, [](QFileInfo const& entry) { return makeShared(entry); }); -} - Task* TexturePackFolderModel::createParseTask(Resource& resource) { return new LocalTexturePackParseTask(m_next_resolution_ticket, static_cast(resource)); diff --git a/launcher/minecraft/mod/TexturePackFolderModel.h b/launcher/minecraft/mod/TexturePackFolderModel.h index b975d8641..44b19b57a 100644 --- a/launcher/minecraft/mod/TexturePackFolderModel.h +++ b/launcher/minecraft/mod/TexturePackFolderModel.h @@ -46,7 +46,7 @@ class TexturePackFolderModel : public ResourceFolderModel { public: enum Columns { ActiveColumn = 0, ImageColumn, NameColumn, DateColumn, NUM_COLUMNS }; - explicit TexturePackFolderModel(const QString& dir, std::shared_ptr instance); + explicit TexturePackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent = nullptr); virtual QString id() const override { return "texturepacks"; } @@ -55,8 +55,7 @@ class TexturePackFolderModel : public ResourceFolderModel { [[nodiscard]] QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; [[nodiscard]] int columnCount(const QModelIndex& parent) const override; - explicit TexturePackFolderModel(const QString& dir, BaseInstance* instance); - [[nodiscard]] Task* createUpdateTask() override; + [[nodiscard]] Resource* createResource(const QFileInfo& file) override { return new TexturePack(file); } [[nodiscard]] Task* createParseTask(Resource&) override; RESOURCE_HELPERS(TexturePack) diff --git a/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h b/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h deleted file mode 100644 index 23a2b649a..000000000 --- a/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h +++ /dev/null @@ -1,74 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include - -#include "minecraft/mod/Resource.h" - -#include "tasks/Task.h" - -/** Very simple task that just loads a folder's contents directly. - */ -class BasicFolderLoadTask : public Task { - Q_OBJECT - public: - struct Result { - QMap resources; - }; - using ResultPtr = std::shared_ptr; - - [[nodiscard]] ResultPtr result() const { return m_result; } - - public: - BasicFolderLoadTask(QDir dir) : Task(nullptr, false), m_dir(dir), m_result(new Result), m_thread_to_spawn_into(thread()) - { - m_create_func = [](QFileInfo const& entry) -> Resource::Ptr { return makeShared(entry); }; - } - BasicFolderLoadTask(QDir dir, std::function create_function) - : Task(nullptr, false) - , m_dir(dir) - , m_result(new Result) - , m_create_func(std::move(create_function)) - , m_thread_to_spawn_into(thread()) - {} - - [[nodiscard]] bool canAbort() const override { return true; } - bool abort() override - { - m_aborted.store(true); - return true; - } - - void executeTask() override - { - if (thread() != m_thread_to_spawn_into) - connect(this, &Task::finished, this->thread(), &QThread::quit); - - m_dir.refresh(); - for (auto entry : m_dir.entryInfoList()) { - auto resource = m_create_func(entry); - resource->moveToThread(m_thread_to_spawn_into); - m_result->resources.insert(resource->internal_id(), resource); - } - - if (m_aborted) - emit finished(); - else - emitSucceeded(); - } - - private: - QDir m_dir; - ResultPtr m_result; - - std::atomic m_aborted = false; - - std::function m_create_func; - - /** This is the thread in which we should put new mod objects */ - QThread* m_thread_to_spawn_into; -}; diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.h b/launcher/minecraft/mod/tasks/LocalModParseTask.h index a03217093..ff1ff822e 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.h @@ -47,11 +47,6 @@ class LocalModParseTask : public Task { [[nodiscard]] int token() const { return m_token; } - private: - void processAsZip(); - void processAsFolder(); - void processAsLitemod(); - private: int m_token; ResourceType m_type; diff --git a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp b/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp similarity index 55% rename from launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp rename to launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp index 9f79ba098..1004bcff0 100644 --- a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp +++ b/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp @@ -34,23 +34,20 @@ * limitations under the License. */ -#include "ModFolderLoadTask.h" +#include "ResourceFolderLoadTask.h" #include "minecraft/mod/MetadataHandler.h" #include -ModFolderLoadTask::ModFolderLoadTask(QDir mods_dir, QDir index_dir, bool is_indexed, bool clean_orphan) - : Task(nullptr, false) - , m_mods_dir(mods_dir) - , m_index_dir(index_dir) - , m_is_indexed(is_indexed) - , m_clean_orphan(clean_orphan) - , m_result(new Result()) - , m_thread_to_spawn_into(thread()) +ResourceFolderLoadTask::ResourceFolderLoadTask(const QDir& resource_dir, + const QDir& index_dir, + bool is_indexed, + bool clean_orphan, + std::function create_function) {} -void ModFolderLoadTask::executeTask() +void ResourceFolderLoadTask::executeTask() { if (thread() != m_thread_to_spawn_into) connect(this, &Task::finished, this->thread(), &QThread::quit); @@ -63,32 +60,32 @@ void ModFolderLoadTask::executeTask() // Read JAR files that don't have metadata m_mods_dir.refresh(); for (auto entry : m_mods_dir.entryInfoList()) { - Mod* mod(new Mod(entry)); + Resource* resource = m_create_func(entry); - if (mod->enabled()) { - if (m_result->mods.contains(mod->internal_id())) { - m_result->mods[mod->internal_id()]->setStatus(ModStatus::Installed); + if (resource->enabled()) { + if (m_result->resources.contains(resource->internal_id())) { + m_result->resources[resource->internal_id()]->setStatus(ResourceStatus::INSTALLED); // Delete the object we just created, since a valid one is already in the mods list. - delete mod; + delete resource; } else { - m_result->mods[mod->internal_id()].reset(std::move(mod)); - m_result->mods[mod->internal_id()]->setStatus(ModStatus::NoMetadata); + m_result->resources[resource->internal_id()].reset(resource); + m_result->resources[resource->internal_id()]->setStatus(ResourceStatus::NO_METADATA); } } else { - QString chopped_id = mod->internal_id().chopped(9); - if (m_result->mods.contains(chopped_id)) { - m_result->mods[mod->internal_id()].reset(std::move(mod)); + QString chopped_id = resource->internal_id().chopped(9); + if (m_result->resources.contains(chopped_id)) { + m_result->resources[resource->internal_id()].reset(resource); - auto metadata = m_result->mods[chopped_id]->metadata(); + auto metadata = m_result->resources[chopped_id]->metadata(); if (metadata) { - mod->setMetadata(*metadata); + resource->setMetadata(*metadata); - m_result->mods[mod->internal_id()]->setStatus(ModStatus::Installed); - m_result->mods.remove(chopped_id); + m_result->resources[resource->internal_id()]->setStatus(ResourceStatus::INSTALLED); + m_result->resources.remove(chopped_id); } } else { - m_result->mods[mod->internal_id()].reset(std::move(mod)); - m_result->mods[mod->internal_id()]->setStatus(ModStatus::NoMetadata); + m_result->resources[resource->internal_id()].reset(resource); + m_result->resources[resource->internal_id()]->setStatus(ResourceStatus::NO_METADATA); } } } @@ -96,17 +93,17 @@ void ModFolderLoadTask::executeTask() // Remove orphan metadata to prevent issues // See https://github.com/PolyMC/PolyMC/issues/996 if (m_clean_orphan) { - QMutableMapIterator iter(m_result->mods); + QMutableMapIterator iter(m_result->resources); while (iter.hasNext()) { - auto mod = iter.next().value(); - if (mod->status() == ModStatus::NotInstalled) { - mod->destroy(m_index_dir, false, false); + auto resource = iter.next().value(); + if (resource->status() == ResourceStatus::NOT_INSTALLED) { + resource->destroy(m_index_dir, false, false); iter.remove(); } } } - for (auto mod : m_result->mods) + for (auto mod : m_result->resources) mod->moveToThread(m_thread_to_spawn_into); if (m_aborted) @@ -115,18 +112,18 @@ void ModFolderLoadTask::executeTask() emitSucceeded(); } -void ModFolderLoadTask::getFromMetadata() +void ResourceFolderLoadTask::getFromMetadata() { m_index_dir.refresh(); for (auto entry : m_index_dir.entryList(QDir::Files)) { auto metadata = Metadata::get(m_index_dir, entry); - if (!metadata.isValid()) { + if (!metadata.isValid()) return; - } - auto* mod = new Mod(m_mods_dir, metadata); - mod->setStatus(ModStatus::NotInstalled); - m_result->mods[mod->internal_id()].reset(std::move(mod)); + auto* resource = m_create_func(QFileInfo(m_mods_dir.filePath(metadata.filename))); + resource->setMetadata(metadata); + resource->setStatus(ResourceStatus::NOT_INSTALLED); + m_result->resources[resource->internal_id()].reset(resource); } } diff --git a/launcher/minecraft/mod/tasks/ModFolderLoadTask.h b/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.h similarity index 84% rename from launcher/minecraft/mod/tasks/ModFolderLoadTask.h rename to launcher/minecraft/mod/tasks/ResourceFolderLoadTask.h index 4200ef6d9..616597ca4 100644 --- a/launcher/minecraft/mod/tasks/ModFolderLoadTask.h +++ b/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.h @@ -44,17 +44,21 @@ #include "minecraft/mod/Mod.h" #include "tasks/Task.h" -class ModFolderLoadTask : public Task { +class ResourceFolderLoadTask : public Task { Q_OBJECT public: struct Result { - QMap mods; + QMap resources; }; using ResultPtr = std::shared_ptr; ResultPtr result() const { return m_result; } public: - ModFolderLoadTask(QDir mods_dir, QDir index_dir, bool is_indexed, bool clean_orphan = false); + ResourceFolderLoadTask(const QDir& resource_dir, + const QDir& index_dir, + bool is_indexed, + bool clean_orphan, + std::function create_function); [[nodiscard]] bool canAbort() const override { return true; } bool abort() override @@ -76,6 +80,8 @@ class ModFolderLoadTask : public Task { std::atomic m_aborted = false; + std::function m_create_func; + /** This is the thread in which we should put new mod objects */ QThread* m_thread_to_spawn_into; }; diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index c3eadd06d..05caa33c9 100644 --- a/launcher/modplatform/EnsureMetadataTask.cpp +++ b/launcher/modplatform/EnsureMetadataTask.cpp @@ -94,7 +94,7 @@ void EnsureMetadataTask::executeTask() } // They already have the right metadata :o - if (mod->status() != ModStatus::NoMetadata && mod->metadata() && mod->metadata()->provider == m_provider) { + if (mod->status() != ResourceStatus::NO_METADATA && mod->metadata() && mod->metadata()->provider == m_provider) { qDebug() << "Mod" << mod->name() << "already has metadata!"; emitReady(mod); continue; diff --git a/launcher/modplatform/flame/FlameCheckUpdate.cpp b/launcher/modplatform/flame/FlameCheckUpdate.cpp index 476a4667a..6653e477e 100644 --- a/launcher/modplatform/flame/FlameCheckUpdate.cpp +++ b/launcher/modplatform/flame/FlameCheckUpdate.cpp @@ -154,7 +154,7 @@ void FlameCheckUpdate::executeTask() continue; } - if (!latest_ver.hash.isEmpty() && (mod->metadata()->hash != latest_ver.hash || mod->status() == ModStatus::NotInstalled)) { + if (!latest_ver.hash.isEmpty() && (mod->metadata()->hash != latest_ver.hash || mod->status() == ResourceStatus::NOT_INSTALLED)) { // Fake pack with the necessary info to pass to the download task :) auto pack = std::make_shared(); pack->name = mod->name(); @@ -167,7 +167,7 @@ void FlameCheckUpdate::executeTask() pack->provider = ModPlatform::ResourceProvider::FLAME; auto old_version = mod->version(); - if (old_version.isEmpty() && mod->status() != ModStatus::NotInstalled) { + if (old_version.isEmpty() && mod->status() != ResourceStatus::NOT_INSTALLED) { auto current_ver = getFileInfo(latest_ver.addonId.toInt(), mod->metadata()->file_id.toInt()); old_version = current_ver.version; } diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index c65f4fa80..574e99ac7 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -144,7 +144,7 @@ void ModrinthCheckUpdate::executeTask() auto mod = *mod_iter; auto key = project_ver.hash; - if ((key != hash && project_ver.is_preferred) || (mod->status() == ModStatus::NotInstalled)) { + if ((key != hash && project_ver.is_preferred) || (mod->status() == ResourceStatus::NOT_INSTALLED)) { if (mod->version() == project_ver.version_number) continue; diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp index a9ddb0c91..72b52836f 100644 --- a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp @@ -121,7 +121,7 @@ void ModrinthPackExportTask::collectHashes() modIter != allMods.end()) { const Mod* mod = *modIter; if (mod->metadata() != nullptr) { - QUrl& url = mod->metadata()->url; + const QUrl& url = mod->metadata()->url; // ensure the url is permitted on modrinth.com if (!url.isEmpty() && BuildConfig.MODRINTH_MRPACK_HOSTS.contains(url.host())) { qDebug() << "Resolving" << relative << "from index"; diff --git a/launcher/modplatform/packwiz/Packwiz.h b/launcher/modplatform/packwiz/Packwiz.h index 7edc18cde..c49165557 100644 --- a/launcher/modplatform/packwiz/Packwiz.h +++ b/launcher/modplatform/packwiz/Packwiz.h @@ -35,6 +35,7 @@ auto getRealIndexName(QDir& index_dir, QString normalized_index_name, bool shoul class V1 { public: + // can also represent other resources beside loader mods - but this is what packwiz calls it struct Mod { QString slug{}; QString name{}; diff --git a/launcher/ui/dialogs/ModUpdateDialog.cpp b/launcher/ui/dialogs/ModUpdateDialog.cpp index 1f0fa7cd2..f1216572f 100644 --- a/launcher/ui/dialogs/ModUpdateDialog.cpp +++ b/launcher/ui/dialogs/ModUpdateDialog.cpp @@ -228,7 +228,7 @@ auto ModUpdateDialog::ensureMetadata() -> bool }; for (auto candidate : m_candidates) { - if (candidate->status() != ModStatus::NoMetadata) { + if (candidate->status() != ResourceStatus::NO_METADATA) { onMetadataEnsured(candidate); continue; } From ee487669960ba8ee7c1997621b9fd7e778d3f65a Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 1 Sep 2023 00:27:05 +0100 Subject: [PATCH 023/616] More generalistaion for ResourceFolderModels Signed-off-by: TheKodeToad --- launcher/ResourceDownloadTask.cpp | 8 +- launcher/minecraft/mod/MetadataHandler.h | 14 +-- launcher/minecraft/mod/Mod.cpp | 1 - launcher/minecraft/mod/ModFolderModel.cpp | 95 ------------------- launcher/minecraft/mod/ModFolderModel.h | 10 -- launcher/minecraft/mod/Resource.cpp | 9 +- launcher/minecraft/mod/Resource.h | 3 +- .../minecraft/mod/ResourceFolderModel.cpp | 58 ++++++++++- launcher/minecraft/mod/ResourceFolderModel.h | 8 +- launcher/modplatform/packwiz/Packwiz.cpp | 16 ++-- launcher/modplatform/packwiz/Packwiz.h | 16 ++-- launcher/ui/MainWindow.cpp | 2 +- launcher/ui/pages/instance/ModFolderPage.cpp | 2 +- 13 files changed, 90 insertions(+), 152 deletions(-) diff --git a/launcher/ResourceDownloadTask.cpp b/launcher/ResourceDownloadTask.cpp index a02151ca1..dffbaf478 100644 --- a/launcher/ResourceDownloadTask.cpp +++ b/launcher/ResourceDownloadTask.cpp @@ -67,12 +67,8 @@ void ResourceDownloadTask::downloadSucceeded() m_filesNetJob.reset(); auto name = std::get<0>(to_delete); auto filename = std::get<1>(to_delete); - if (!name.isEmpty() && filename != m_pack_version.fileName) { - if (auto model = dynamic_cast(m_pack_model.get()); model) - model->uninstallMod(filename, true); - else - m_pack_model->uninstallResource(filename); - } + if (!name.isEmpty() && filename != m_pack_version.fileName) + m_pack_model->uninstallResource(filename, true); } void ResourceDownloadTask::downloadFailed(QString reason) diff --git a/launcher/minecraft/mod/MetadataHandler.h b/launcher/minecraft/mod/MetadataHandler.h index 747375d3f..3794db484 100644 --- a/launcher/minecraft/mod/MetadataHandler.h +++ b/launcher/minecraft/mod/MetadataHandler.h @@ -28,37 +28,37 @@ class Mod; namespace Metadata { using ModStruct = Packwiz::V1::Mod; -inline auto create(QDir& index_dir, ModPlatform::IndexedPack& mod_pack, ModPlatform::IndexedVersion& mod_version) -> ModStruct +inline auto create(const QDir& index_dir, ModPlatform::IndexedPack& mod_pack, ModPlatform::IndexedVersion& mod_version) -> ModStruct { return Packwiz::V1::createModFormat(index_dir, mod_pack, mod_version); } -inline auto create(QDir& index_dir, Mod& internal_mod, QString mod_slug) -> ModStruct +inline auto create(const QDir& index_dir, Mod& internal_mod, QString mod_slug) -> ModStruct { return Packwiz::V1::createModFormat(index_dir, internal_mod, std::move(mod_slug)); } -inline void update(QDir& index_dir, ModStruct& mod) +inline void update(const QDir& index_dir, ModStruct& mod) { Packwiz::V1::updateModIndex(index_dir, mod); } -inline void remove(QDir& index_dir, QString mod_slug) +inline void remove(const QDir& index_dir, QString mod_slug) { Packwiz::V1::deleteModIndex(index_dir, mod_slug); } -inline void remove(QDir& index_dir, QVariant& mod_id) +inline void remove(const QDir& index_dir, QVariant& mod_id) { Packwiz::V1::deleteModIndex(index_dir, mod_id); } -inline auto get(QDir& index_dir, QString mod_slug) -> ModStruct +inline auto get(const QDir& index_dir, QString mod_slug) -> ModStruct { return Packwiz::V1::getIndexForMod(index_dir, std::move(mod_slug)); } -inline auto get(QDir& index_dir, QVariant& mod_id) -> ModStruct +inline auto get(const QDir& index_dir, QVariant& mod_id) -> ModStruct { return Packwiz::V1::getIndexForMod(index_dir, mod_id); } diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp index 53f7d72de..27688b5f2 100644 --- a/launcher/minecraft/mod/Mod.cpp +++ b/launcher/minecraft/mod/Mod.cpp @@ -36,7 +36,6 @@ #include "Mod.h" -#include #include #include #include diff --git a/launcher/minecraft/mod/ModFolderModel.cpp b/launcher/minecraft/mod/ModFolderModel.cpp index 2f0e9b3e4..733e1f655 100644 --- a/launcher/minecraft/mod/ModFolderModel.cpp +++ b/launcher/minecraft/mod/ModFolderModel.cpp @@ -51,13 +51,9 @@ #include "Application.h" -#include "Json.h" #include "Resource.h" #include "minecraft/mod/tasks/LocalModParseTask.h" #include "minecraft/mod/tasks/LocalModUpdateTask.h" -#include "minecraft/mod/tasks/ResourceFolderLoadTask.h" -#include "modplatform/ModIndex.h" -#include "modplatform/flame/FlameAPI.h" #include "modplatform/flame/FlameModIndex.h" ModFolderModel::ModFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) @@ -184,58 +180,11 @@ Task* ModFolderModel::createParseTask(Resource& resource) return new LocalModParseTask(m_next_resolution_ticket, resource.type(), resource.fileinfo()); } -bool ModFolderModel::uninstallMod(const QString& filename, bool preserve_metadata) -{ - for (auto mod : allMods()) { - if (mod->fileinfo().fileName() == filename) { - auto index_dir = indexDir(); - mod->destroy(index_dir, preserve_metadata, false); - - update(); - - return true; - } - } - - return false; -} - -bool ModFolderModel::deleteMods(const QModelIndexList& indexes) -{ - if (indexes.isEmpty()) - return true; - - for (auto i : indexes) { - if (i.column() != 0) { - continue; - } - auto m = at(i.row()); - auto index_dir = indexDir(); - m->destroy(index_dir); - } - - update(); - - return true; -} - bool ModFolderModel::isValid() { return m_dir.exists() && m_dir.isReadable(); } -bool ModFolderModel::startWatching() -{ - // Remove orphaned metadata next time - m_first_folder_load = true; - return ResourceFolderModel::startWatching({ m_dir.absolutePath(), indexDir().absolutePath() }); -} - -bool ModFolderModel::stopWatching() -{ - return ResourceFolderModel::stopWatching({ m_dir.absolutePath(), indexDir().absolutePath() }); -} - auto ModFolderModel::selectedMods(QModelIndexList& indexes) -> QList { QList selected_resources; @@ -280,47 +229,3 @@ void ModFolderModel::onParseSucceeded(int ticket, QString mod_id) emit dataChanged(index(row), index(row, columnCount(QModelIndex()) - 1)); } - -static const FlameAPI flameAPI; -bool ModFolderModel::installMod(QString file_path, ModPlatform::IndexedVersion& vers) -{ - if (vers.addonId.isValid()) { - ModPlatform::IndexedPack pack{ - vers.addonId, - ModPlatform::ResourceProvider::FLAME, - }; - - QEventLoop loop; - - auto response = std::make_shared(); - auto job = flameAPI.getProject(vers.addonId.toString(), response); - - QObject::connect(job.get(), &Task::failed, [&loop] { loop.quit(); }); - QObject::connect(job.get(), &Task::aborted, &loop, &QEventLoop::quit); - QObject::connect(job.get(), &Task::succeeded, [response, this, &vers, &loop, &pack] { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response for mod info at " << parse_error.offset - << " reason: " << parse_error.errorString(); - qDebug() << *response; - return; - } - try { - auto obj = Json::requireObject(Json::requireObject(doc), "data"); - FlameMod::loadIndexedPack(pack, obj); - } catch (const JSONValidationError& e) { - qDebug() << doc; - qWarning() << "Error while reading mod info: " << e.cause(); - } - LocalModUpdateTask update_metadata(indexDir(), pack, vers); - QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit); - update_metadata.start(); - }); - - job->start(); - - loop.exec(); - } - return ResourceFolderModel::installResource(file_path); -} diff --git a/launcher/minecraft/mod/ModFolderModel.h b/launcher/minecraft/mod/ModFolderModel.h index 9326158d4..c1db33c0c 100644 --- a/launcher/minecraft/mod/ModFolderModel.h +++ b/launcher/minecraft/mod/ModFolderModel.h @@ -74,18 +74,8 @@ class ModFolderModel : public ResourceFolderModel { [[nodiscard]] Resource* createResource(const QFileInfo& file) override { return new Mod(file); } [[nodiscard]] Task* createParseTask(Resource&) override; - bool installMod(QString file_path) { return ResourceFolderModel::installResource(file_path); } - bool installMod(QString file_path, ModPlatform::IndexedVersion& vers); - bool uninstallMod(const QString& filename, bool preserve_metadata = false); - - /// Deletes all the selected mods - bool deleteMods(const QModelIndexList& indexes); - bool isValid(); - bool startWatching() override; - bool stopWatching() override; - auto selectedMods(QModelIndexList& indexes) -> QList; auto allMods() -> QList; diff --git a/launcher/minecraft/mod/Resource.cpp b/launcher/minecraft/mod/Resource.cpp index 0dd7f8992..bfe2a8802 100644 --- a/launcher/minecraft/mod/Resource.cpp +++ b/launcher/minecraft/mod/Resource.cpp @@ -172,15 +172,10 @@ bool Resource::enable(EnableAction action) return true; } -bool Resource::destroy(bool attemptTrash) +auto Resource::destroy(const QDir& index_dir, bool preserve_metadata, bool attempt_trash) -> bool { m_type = ResourceType::UNKNOWN; - return (attemptTrash && FS::trash(m_file_info.filePath())) || FS::deletePath(m_file_info.filePath()); -} - -auto Resource::destroy(QDir& index_dir, bool preserve_metadata, bool attempt_trash) -> bool -{ if (!preserve_metadata) { qDebug() << QString("Destroying metadata for '%1' on purpose").arg(name()); @@ -192,7 +187,7 @@ auto Resource::destroy(QDir& index_dir, bool preserve_metadata, bool attempt_tra } } - return destroy(attempt_trash); + return (attempt_trash && FS::trash(m_file_info.filePath())) || FS::deletePath(m_file_info.filePath()); } bool Resource::isSymLinkUnder(const QString& instPath) const diff --git a/launcher/minecraft/mod/Resource.h b/launcher/minecraft/mod/Resource.h index 5012c23a4..77063cbf0 100644 --- a/launcher/minecraft/mod/Resource.h +++ b/launcher/minecraft/mod/Resource.h @@ -99,8 +99,7 @@ class Resource : public QObject { } // Delete all files of this resource. - auto destroy(bool attemptTrash = true) -> bool; - auto destroy(QDir& index_dir, bool preserve_metadata = false, bool attempt_trash = true) -> bool; + auto destroy(const QDir& index_dir, bool preserve_metadata = false, bool attempt_trash = true) -> bool; [[nodiscard]] auto isSymLink() const -> bool { return m_file_info.isSymLink(); } diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index a39e9adee..9ac387904 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -10,6 +10,7 @@ #include #include #include +#include #include "Application.h" #include "FileSystem.h" @@ -17,6 +18,10 @@ #include "QVariantUtils.h" #include "minecraft/mod/tasks/ResourceFolderLoadTask.h" +#include "Json.h" +#include "minecraft/mod/tasks/LocalModUpdateTask.h" +#include "modplatform/flame/FlameAPI.h" +#include "modplatform/flame/FlameModIndex.h" #include "settings/Setting.h" #include "tasks/Task.h" #include "ui/dialogs/CustomMessageBox.h" @@ -43,6 +48,9 @@ ResourceFolderModel::~ResourceFolderModel() bool ResourceFolderModel::startWatching(const QStringList paths) { + // Remove orphaned metadata next time + m_first_folder_load = true; + if (m_is_watching) return false; @@ -153,11 +161,55 @@ bool ResourceFolderModel::installResource(QString original_path) return false; } -bool ResourceFolderModel::uninstallResource(QString file_name) +bool ResourceFolderModel::installResource(QString path, ModPlatform::IndexedVersion& vers) +{ + if (vers.addonId.isValid()) { + ModPlatform::IndexedPack pack{ + vers.addonId, + ModPlatform::ResourceProvider::FLAME, + }; + + QEventLoop loop; + + auto response = std::make_shared(); + auto job = FlameAPI().getProject(vers.addonId.toString(), response); + + QObject::connect(job.get(), &Task::failed, [&loop] { loop.quit(); }); + QObject::connect(job.get(), &Task::aborted, &loop, &QEventLoop::quit); + QObject::connect(job.get(), &Task::succeeded, [response, this, &vers, &loop, &pack] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response for mod info at " << parse_error.offset + << " reason: " << parse_error.errorString(); + qDebug() << *response; + return; + } + try { + auto obj = Json::requireObject(Json::requireObject(doc), "data"); + FlameMod::loadIndexedPack(pack, obj); + } catch (const JSONValidationError& e) { + qDebug() << doc; + qWarning() << "Error while reading mod info: " << e.cause(); + } + LocalModUpdateTask update_metadata(indexDir(), pack, vers); + QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit); + update_metadata.start(); + }); + + job->start(); + + loop.exec(); + } + + return installResource(std::move(path)); +} + +bool ResourceFolderModel::uninstallResource(QString file_name, bool preserve_metadata) { for (auto& resource : m_resources) { if (resource->fileinfo().fileName() == file_name) { - auto res = resource->destroy(false); + auto res = resource->destroy(indexDir(), preserve_metadata, false); update(); @@ -179,7 +231,7 @@ bool ResourceFolderModel::deleteResources(const QModelIndexList& indexes) auto& resource = m_resources.at(i.row()); - resource->destroy(); + resource->destroy(indexDir()); } update(); diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index 3a4287b30..e8f8d2b9e 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -49,8 +49,8 @@ class ResourceFolderModel : public QAbstractListModel { bool stopWatching(const QStringList paths); /* Helper methods for subclasses, using a predetermined list of paths. */ - virtual bool startWatching() { return startWatching({ m_dir.absolutePath() }); } - virtual bool stopWatching() { return stopWatching({ m_dir.absolutePath() }); } + virtual bool startWatching() { return startWatching({ indexDir().absolutePath(), m_dir.absolutePath() }); } + virtual bool stopWatching() { return stopWatching({ indexDir().absolutePath(), m_dir.absolutePath() }); } QDir indexDir() { return { QString("%1/.index").arg(dir().absolutePath()) }; } @@ -61,11 +61,13 @@ class ResourceFolderModel : public QAbstractListModel { */ virtual bool installResource(QString path); + virtual bool installResource(QString path, ModPlatform::IndexedVersion& vers); + /** Uninstall (i.e. remove all data about it) a resource, given its file name. * * Returns whether the removal was successful. */ - virtual bool uninstallResource(QString file_name); + virtual bool uninstallResource(QString file_name, bool preserve_metadata = false); virtual bool deleteResources(const QModelIndexList&); /** Applies the given 'action' to the resources in 'indexes'. diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index 71f66bf3e..bfc1dea44 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -32,7 +32,7 @@ namespace Packwiz { -auto getRealIndexName(QDir& index_dir, QString normalized_fname, bool should_find_match) -> QString +auto getRealIndexName(const QDir& index_dir, QString normalized_fname, bool should_find_match) -> QString { QFile index_file(index_dir.absoluteFilePath(normalized_fname)); @@ -89,7 +89,7 @@ auto intEntry(toml::table table, QString entry_name) -> int return node.value_or(0); } -auto V1::createModFormat([[maybe_unused]] QDir& index_dir, ModPlatform::IndexedPack& mod_pack, ModPlatform::IndexedVersion& mod_version) +auto V1::createModFormat([[maybe_unused]] const QDir& index_dir, ModPlatform::IndexedPack& mod_pack, ModPlatform::IndexedVersion& mod_version) -> Mod { Mod mod; @@ -115,7 +115,7 @@ auto V1::createModFormat([[maybe_unused]] QDir& index_dir, ModPlatform::IndexedP return mod; } -auto V1::createModFormat(QDir& index_dir, [[maybe_unused]] ::Mod& internal_mod, QString slug) -> Mod +auto V1::createModFormat(const QDir& index_dir, [[maybe_unused]] ::Mod& internal_mod, QString slug) -> Mod { // Try getting metadata if it exists Mod mod{ getIndexForMod(index_dir, slug) }; @@ -127,7 +127,7 @@ auto V1::createModFormat(QDir& index_dir, [[maybe_unused]] ::Mod& internal_mod, return {}; } -void V1::updateModIndex(QDir& index_dir, Mod& mod) +void V1::updateModIndex(const QDir& index_dir, Mod& mod) { if (!mod.isValid()) { qCritical() << QString("Tried to update metadata of an invalid mod!"); @@ -192,7 +192,7 @@ void V1::updateModIndex(QDir& index_dir, Mod& mod) index_file.close(); } -void V1::deleteModIndex(QDir& index_dir, QString& mod_slug) +void V1::deleteModIndex(const QDir& index_dir, QString& mod_slug) { auto normalized_fname = indexFileName(mod_slug); auto real_fname = getRealIndexName(index_dir, normalized_fname); @@ -211,7 +211,7 @@ void V1::deleteModIndex(QDir& index_dir, QString& mod_slug) } } -void V1::deleteModIndex(QDir& index_dir, QVariant& mod_id) +void V1::deleteModIndex(const QDir& index_dir, QVariant& mod_id) { for (auto& file_name : index_dir.entryList(QDir::Filter::Files)) { auto mod = getIndexForMod(index_dir, file_name); @@ -223,7 +223,7 @@ void V1::deleteModIndex(QDir& index_dir, QVariant& mod_id) } } -auto V1::getIndexForMod(QDir& index_dir, QString slug) -> Mod +auto V1::getIndexForMod(const QDir& index_dir, QString slug) -> Mod { Mod mod; @@ -301,7 +301,7 @@ auto V1::getIndexForMod(QDir& index_dir, QString slug) -> Mod return mod; } -auto V1::getIndexForMod(QDir& index_dir, QVariant& mod_id) -> Mod +auto V1::getIndexForMod(const QDir& index_dir, QVariant& mod_id) -> Mod { for (auto& file_name : index_dir.entryList(QDir::Filter::Files)) { auto mod = getIndexForMod(index_dir, file_name); diff --git a/launcher/modplatform/packwiz/Packwiz.h b/launcher/modplatform/packwiz/Packwiz.h index c49165557..ffc1d40c8 100644 --- a/launcher/modplatform/packwiz/Packwiz.h +++ b/launcher/modplatform/packwiz/Packwiz.h @@ -31,7 +31,7 @@ class Mod; namespace Packwiz { -auto getRealIndexName(QDir& index_dir, QString normalized_index_name, bool should_match = false) -> QString; +auto getRealIndexName(const QDir& index_dir, QString normalized_index_name, bool should_match = false) -> QString; class V1 { public: @@ -67,33 +67,33 @@ class V1 { /* Generates the object representing the information in a mod.pw.toml file via * its common representation in the launcher, when downloading mods. * */ - static auto createModFormat(QDir& index_dir, ModPlatform::IndexedPack& mod_pack, ModPlatform::IndexedVersion& mod_version) -> Mod; + static auto createModFormat(const QDir& index_dir, ModPlatform::IndexedPack& mod_pack, ModPlatform::IndexedVersion& mod_version) -> Mod; /* Generates the object representing the information in a mod.pw.toml file via * its common representation in the launcher, plus a necessary slug. * */ - static auto createModFormat(QDir& index_dir, ::Mod& internal_mod, QString slug) -> Mod; + static auto createModFormat(const QDir& index_dir, ::Mod& internal_mod, QString slug) -> Mod; /* Updates the mod index for the provided mod. * This creates a new index if one does not exist already * TODO: Ask the user if they want to override, and delete the old mod's files, or keep the old one. * */ - static void updateModIndex(QDir& index_dir, Mod& mod); + static void updateModIndex(const QDir& index_dir, Mod& mod); /* Deletes the metadata for the mod with the given slug. If the metadata doesn't exist, it does nothing. */ - static void deleteModIndex(QDir& index_dir, QString& mod_slug); + static void deleteModIndex(const QDir& index_dir, QString& mod_slug); /* Deletes the metadata for the mod with the given id. If the metadata doesn't exist, it does nothing. */ - static void deleteModIndex(QDir& index_dir, QVariant& mod_id); + static void deleteModIndex(const QDir& index_dir, QVariant& mod_id); /* Gets the metadata for a mod with a particular file name. * If the mod doesn't have a metadata, it simply returns an empty Mod object. * */ - static auto getIndexForMod(QDir& index_dir, QString slug) -> Mod; + static auto getIndexForMod(const QDir& index_dir, QString slug) -> Mod; /* Gets the metadata for a mod with a particular id. * If the mod doesn't have a metadata, it simply returns an empty Mod object. * */ - static auto getIndexForMod(QDir& index_dir, QVariant& mod_id) -> Mod; + static auto getIndexForMod(const QDir& index_dir, QVariant& mod_id) -> Mod; }; } // namespace Packwiz diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 5e55a5abb..a7e3def38 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -1048,7 +1048,7 @@ void MainWindow::processURLs(QList urls) qWarning() << "Importing of Data Packs not supported at this time. Ignoring" << localFileName; break; case PackedResourceType::Mod: - minecraftInst->loaderModList()->installMod(localFileName, version); + minecraftInst->loaderModList()->installResource(localFileName, version); break; case PackedResourceType::ShaderPack: minecraftInst->shaderPackList()->installResource(localFileName); diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index 0f5e29cb6..6333dec1d 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -150,7 +150,7 @@ void ModFolderPage::removeItems(const QItemSelection& selection) if (response != QMessageBox::Yes) return; } - m_model->deleteMods(selection.indexes()); + m_model->deleteResources(selection.indexes()); } void ModFolderPage::installMods() From 6aecbfc38fe3ec2b6fc6d9f3e2a76fc03229729b Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 1 Sep 2023 12:50:20 +0100 Subject: [PATCH 024/616] Fix crashes Signed-off-by: TheKodeToad --- launcher/QObjectPtr.h | 6 +++++- .../minecraft/mod/tasks/ResourceFolderLoadTask.cpp | 14 +++++++++++--- .../minecraft/mod/tasks/ResourceFolderLoadTask.h | 5 ++--- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/launcher/QObjectPtr.h b/launcher/QObjectPtr.h index 5f7b64df0..88c17c0b2 100644 --- a/launcher/QObjectPtr.h +++ b/launcher/QObjectPtr.h @@ -33,7 +33,11 @@ class shared_qobject_ptr : public QSharedPointer { {} void reset() { QSharedPointer::reset(); } - void reset(T* other) { QSharedPointer::reset(other); } + void reset(T* other) + { + shared_qobject_ptr t(other); + this->swap(t); + } void reset(const shared_qobject_ptr& other) { shared_qobject_ptr t(other); diff --git a/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp b/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp index 1004bcff0..2a02eb177 100644 --- a/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp +++ b/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp @@ -45,6 +45,14 @@ ResourceFolderLoadTask::ResourceFolderLoadTask(const QDir& resource_dir, bool is_indexed, bool clean_orphan, std::function create_function) + : Task(nullptr, false) + , m_resource_dir(resource_dir) + , m_index_dir(index_dir) + , m_is_indexed(is_indexed) + , m_clean_orphan(clean_orphan) + , m_create_func(create_function) + , m_result(new Result()) + , m_thread_to_spawn_into(thread()) {} void ResourceFolderLoadTask::executeTask() @@ -58,8 +66,8 @@ void ResourceFolderLoadTask::executeTask() } // Read JAR files that don't have metadata - m_mods_dir.refresh(); - for (auto entry : m_mods_dir.entryInfoList()) { + m_resource_dir.refresh(); + for (auto entry : m_resource_dir.entryInfoList()) { Resource* resource = m_create_func(entry); if (resource->enabled()) { @@ -121,7 +129,7 @@ void ResourceFolderLoadTask::getFromMetadata() if (!metadata.isValid()) return; - auto* resource = m_create_func(QFileInfo(m_mods_dir.filePath(metadata.filename))); + auto* resource = m_create_func(QFileInfo(m_resource_dir.filePath(metadata.filename))); resource->setMetadata(metadata); resource->setStatus(ResourceStatus::NOT_INSTALLED); m_result->resources[resource->internal_id()].reset(resource); diff --git a/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.h b/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.h index 616597ca4..9950345ef 100644 --- a/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.h +++ b/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.h @@ -73,15 +73,14 @@ class ResourceFolderLoadTask : public Task { void getFromMetadata(); private: - QDir m_mods_dir, m_index_dir; + QDir m_resource_dir, m_index_dir; bool m_is_indexed; bool m_clean_orphan; + std::function m_create_func; ResultPtr m_result; std::atomic m_aborted = false; - std::function m_create_func; - /** This is the thread in which we should put new mod objects */ QThread* m_thread_to_spawn_into; }; From ad16d612087beab6f918c96168ad5628e77487f5 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 1 Sep 2023 17:42:05 +0100 Subject: [PATCH 025/616] Resource metadata writing Signed-off-by: TheKodeToad --- launcher/CMakeLists.txt | 4 +- launcher/ResourceDownloadTask.cpp | 6 +- launcher/ResourceDownloadTask.h | 4 +- launcher/minecraft/mod/ModFolderModel.cpp | 2 +- .../minecraft/mod/ResourceFolderModel.cpp | 4 +- ...teTask.cpp => LocalResourceUpdateTask.cpp} | 26 +-- ...UpdateTask.h => LocalResourceUpdateTask.h} | 12 +- launcher/modplatform/EnsureMetadataTask.cpp | 168 +++++++++--------- launcher/modplatform/EnsureMetadataTask.h | 23 +-- .../ui/pages/modplatform/ResourcePage.cpp | 4 +- .../ui/pages/modplatform/ShaderPackPage.cpp | 4 +- 11 files changed, 131 insertions(+), 126 deletions(-) rename launcher/minecraft/mod/tasks/{LocalModUpdateTask.cpp => LocalResourceUpdateTask.cpp} (63%) rename launcher/minecraft/mod/tasks/{LocalModUpdateTask.h => LocalResourceUpdateTask.h} (74%) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index cd4c64dec..5bc2d73a7 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -354,8 +354,8 @@ set(MINECRAFT_SOURCES minecraft/mod/tasks/ResourceFolderLoadTask.cpp minecraft/mod/tasks/LocalModParseTask.h minecraft/mod/tasks/LocalModParseTask.cpp - minecraft/mod/tasks/LocalModUpdateTask.h - minecraft/mod/tasks/LocalModUpdateTask.cpp + minecraft/mod/tasks/LocalResourceUpdateTask.h + minecraft/mod/tasks/LocalResourceUpdateTask.cpp minecraft/mod/tasks/LocalDataPackParseTask.h minecraft/mod/tasks/LocalDataPackParseTask.cpp minecraft/mod/tasks/LocalResourcePackParseTask.h diff --git a/launcher/ResourceDownloadTask.cpp b/launcher/ResourceDownloadTask.cpp index dffbaf478..e5828b569 100644 --- a/launcher/ResourceDownloadTask.cpp +++ b/launcher/ResourceDownloadTask.cpp @@ -33,9 +33,9 @@ ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack, QString custom_target_folder) : m_pack(std::move(pack)), m_pack_version(std::move(version)), m_pack_model(packs), m_custom_target_folder(custom_target_folder) { - if (auto model = dynamic_cast(m_pack_model.get()); model && is_indexed) { - m_update_task.reset(new LocalModUpdateTask(model->indexDir(), *m_pack, m_pack_version)); - connect(m_update_task.get(), &LocalModUpdateTask::hasOldMod, this, &ResourceDownloadTask::hasOldResource); + if (is_indexed) { + m_update_task.reset(new LocalResourceUpdateTask(m_pack_model->indexDir(), *m_pack, m_pack_version)); + connect(m_update_task.get(), &LocalResourceUpdateTask::hasOldResource, this, &ResourceDownloadTask::hasOldResource); addTask(m_update_task); } diff --git a/launcher/ResourceDownloadTask.h b/launcher/ResourceDownloadTask.h index 2baddf8a8..7da5a4aad 100644 --- a/launcher/ResourceDownloadTask.h +++ b/launcher/ResourceDownloadTask.h @@ -22,7 +22,7 @@ #include "net/NetJob.h" #include "tasks/SequentialTask.h" -#include "minecraft/mod/tasks/LocalModUpdateTask.h" +#include "minecraft/mod/tasks/LocalResourceUpdateTask.h" #include "modplatform/ModIndex.h" class ResourceFolderModel; @@ -50,7 +50,7 @@ class ResourceDownloadTask : public SequentialTask { QString m_custom_target_folder; NetJob::Ptr m_filesNetJob; - LocalModUpdateTask::Ptr m_update_task; + LocalResourceUpdateTask::Ptr m_update_task; void downloadProgressChanged(qint64 current, qint64 total); void downloadFailed(QString reason); diff --git a/launcher/minecraft/mod/ModFolderModel.cpp b/launcher/minecraft/mod/ModFolderModel.cpp index 733e1f655..43c64a667 100644 --- a/launcher/minecraft/mod/ModFolderModel.cpp +++ b/launcher/minecraft/mod/ModFolderModel.cpp @@ -53,7 +53,7 @@ #include "Resource.h" #include "minecraft/mod/tasks/LocalModParseTask.h" -#include "minecraft/mod/tasks/LocalModUpdateTask.h" +#include "minecraft/mod/tasks/LocalResourceUpdateTask.h" #include "modplatform/flame/FlameModIndex.h" ModFolderModel::ModFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index 9ac387904..27eb4d2e5 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -19,7 +19,7 @@ #include "minecraft/mod/tasks/ResourceFolderLoadTask.h" #include "Json.h" -#include "minecraft/mod/tasks/LocalModUpdateTask.h" +#include "minecraft/mod/tasks/LocalResourceUpdateTask.h" #include "modplatform/flame/FlameAPI.h" #include "modplatform/flame/FlameModIndex.h" #include "settings/Setting.h" @@ -192,7 +192,7 @@ bool ResourceFolderModel::installResource(QString path, ModPlatform::IndexedVers qDebug() << doc; qWarning() << "Error while reading mod info: " << e.cause(); } - LocalModUpdateTask update_metadata(indexDir(), pack, vers); + LocalResourceUpdateTask update_metadata(indexDir(), pack, vers); QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit); update_metadata.start(); }); diff --git a/launcher/minecraft/mod/tasks/LocalModUpdateTask.cpp b/launcher/minecraft/mod/tasks/LocalResourceUpdateTask.cpp similarity index 63% rename from launcher/minecraft/mod/tasks/LocalModUpdateTask.cpp rename to launcher/minecraft/mod/tasks/LocalResourceUpdateTask.cpp index 4352fad91..c8fe1050a 100644 --- a/launcher/minecraft/mod/tasks/LocalModUpdateTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalResourceUpdateTask.cpp @@ -17,7 +17,7 @@ * along with this program. If not, see . */ -#include "LocalModUpdateTask.h" +#include "LocalResourceUpdateTask.h" #include "FileSystem.h" #include "minecraft/mod/MetadataHandler.h" @@ -26,12 +26,12 @@ #include #endif -LocalModUpdateTask::LocalModUpdateTask(QDir index_dir, ModPlatform::IndexedPack& mod, ModPlatform::IndexedVersion& mod_version) - : m_index_dir(index_dir), m_mod(mod), m_mod_version(mod_version) +LocalResourceUpdateTask::LocalResourceUpdateTask(QDir index_dir, ModPlatform::IndexedPack& project, ModPlatform::IndexedVersion& version) + : m_index_dir(index_dir), m_project(project), m_version(version) { // Ensure a '.index' folder exists in the mods folder, and create it if it does not if (!FS::ensureFolderPathExists(index_dir.path())) { - emitFailed(QString("Unable to create index for mod %1!").arg(m_mod.name)); + emitFailed(QString("Unable to create index directory at %1!").arg(index_dir.absolutePath())); } #ifdef Q_OS_WIN32 @@ -39,28 +39,28 @@ LocalModUpdateTask::LocalModUpdateTask(QDir index_dir, ModPlatform::IndexedPack& #endif } -void LocalModUpdateTask::executeTask() +void LocalResourceUpdateTask::executeTask() { - setStatus(tr("Updating index for mod:\n%1").arg(m_mod.name)); + setStatus(tr("Updating index for resource:\n%1").arg(m_project.name)); - auto old_metadata = Metadata::get(m_index_dir, m_mod.addonId); + auto old_metadata = Metadata::get(m_index_dir, m_project.addonId); if (old_metadata.isValid()) { - emit hasOldMod(old_metadata.name, old_metadata.filename); - if (m_mod.slug.isEmpty()) - m_mod.slug = old_metadata.slug; + emit hasOldResource(old_metadata.name, old_metadata.filename); + if (m_project.slug.isEmpty()) + m_project.slug = old_metadata.slug; } - auto pw_mod = Metadata::create(m_index_dir, m_mod, m_mod_version); + auto pw_mod = Metadata::create(m_index_dir, m_project, m_version); if (pw_mod.isValid()) { Metadata::update(m_index_dir, pw_mod); emitSucceeded(); } else { - qCritical() << "Tried to update an invalid mod!"; + qCritical() << "Tried to update an invalid resource!"; emitFailed(tr("Invalid metadata")); } } -auto LocalModUpdateTask::abort() -> bool +auto LocalResourceUpdateTask::abort() -> bool { emitAborted(); return true; diff --git a/launcher/minecraft/mod/tasks/LocalModUpdateTask.h b/launcher/minecraft/mod/tasks/LocalResourceUpdateTask.h similarity index 74% rename from launcher/minecraft/mod/tasks/LocalModUpdateTask.h rename to launcher/minecraft/mod/tasks/LocalResourceUpdateTask.h index 080999294..6e2efbd6a 100644 --- a/launcher/minecraft/mod/tasks/LocalModUpdateTask.h +++ b/launcher/minecraft/mod/tasks/LocalResourceUpdateTask.h @@ -23,12 +23,12 @@ #include "modplatform/ModIndex.h" #include "tasks/Task.h" -class LocalModUpdateTask : public Task { +class LocalResourceUpdateTask : public Task { Q_OBJECT public: - using Ptr = shared_qobject_ptr; + using Ptr = shared_qobject_ptr; - explicit LocalModUpdateTask(QDir index_dir, ModPlatform::IndexedPack& mod, ModPlatform::IndexedVersion& mod_version); + explicit LocalResourceUpdateTask(QDir index_dir, ModPlatform::IndexedPack& project, ModPlatform::IndexedVersion& version); auto canAbort() const -> bool override { return true; } auto abort() -> bool override; @@ -38,10 +38,10 @@ class LocalModUpdateTask : public Task { void executeTask() override; signals: - void hasOldMod(QString name, QString filename); + void hasOldResource(QString name, QString filename); private: QDir m_index_dir; - ModPlatform::IndexedPack& m_mod; - ModPlatform::IndexedVersion& m_mod_version; + ModPlatform::IndexedPack& m_project; + ModPlatform::IndexedVersion& m_version; }; diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index 05caa33c9..4adbebdb1 100644 --- a/launcher/modplatform/EnsureMetadataTask.cpp +++ b/launcher/modplatform/EnsureMetadataTask.cpp @@ -6,7 +6,7 @@ #include "Json.h" #include "minecraft/mod/Mod.h" -#include "minecraft/mod/tasks/LocalModUpdateTask.h" +#include "minecraft/mod/tasks/LocalResourceUpdateTask.h" #include "modplatform/flame/FlameAPI.h" #include "modplatform/flame/FlameModIndex.h" @@ -19,52 +19,52 @@ static ModPlatform::ProviderCapabilities ProviderCaps; static ModrinthAPI modrinth_api; static FlameAPI flame_api; -EnsureMetadataTask::EnsureMetadataTask(Mod* mod, QDir dir, ModPlatform::ResourceProvider prov) +EnsureMetadataTask::EnsureMetadataTask(Resource* resource, QDir dir, ModPlatform::ResourceProvider prov) : Task(nullptr), m_index_dir(dir), m_provider(prov), m_hashing_task(nullptr), m_current_task(nullptr) { - auto hash_task = createNewHash(mod); + auto hash_task = createNewHash(resource); if (!hash_task) return; - connect(hash_task.get(), &Hashing::Hasher::resultsReady, [this, mod](QString hash) { m_mods.insert(hash, mod); }); - connect(hash_task.get(), &Task::failed, [this, mod] { emitFail(mod, "", RemoveFromList::No); }); + connect(hash_task.get(), &Hashing::Hasher::resultsReady, [this, resource](QString hash) { m_resources.insert(hash, resource); }); + connect(hash_task.get(), &Task::failed, [this, resource] { emitFail(resource, "", RemoveFromList::No); }); hash_task->start(); } -EnsureMetadataTask::EnsureMetadataTask(QList& mods, QDir dir, ModPlatform::ResourceProvider prov) +EnsureMetadataTask::EnsureMetadataTask(QList& resources, QDir dir, ModPlatform::ResourceProvider prov) : Task(nullptr), m_index_dir(dir), m_provider(prov), m_current_task(nullptr) { m_hashing_task.reset(new ConcurrentTask(this, "MakeHashesTask", 10)); - for (auto* mod : mods) { - auto hash_task = createNewHash(mod); + for (auto* resource : resources) { + auto hash_task = createNewHash(resource); if (!hash_task) continue; - connect(hash_task.get(), &Hashing::Hasher::resultsReady, [this, mod](QString hash) { m_mods.insert(hash, mod); }); - connect(hash_task.get(), &Task::failed, [this, mod] { emitFail(mod, "", RemoveFromList::No); }); + connect(hash_task.get(), &Hashing::Hasher::resultsReady, [this, resource](QString hash) { m_resources.insert(hash, resource); }); + connect(hash_task.get(), &Task::failed, [this, resource] { emitFail(resource, "", RemoveFromList::No); }); m_hashing_task->addTask(hash_task); } } -Hashing::Hasher::Ptr EnsureMetadataTask::createNewHash(Mod* mod) +Hashing::Hasher::Ptr EnsureMetadataTask::createNewHash(Resource* resource) { - if (!mod || !mod->valid() || mod->type() == ResourceType::FOLDER) + if (!resource || !resource->valid() || resource->type() == ResourceType::FOLDER) return nullptr; - return Hashing::createHasher(mod->fileinfo().absoluteFilePath(), m_provider); + return Hashing::createHasher(resource->fileinfo().absoluteFilePath(), m_provider); } -QString EnsureMetadataTask::getExistingHash(Mod* mod) +QString EnsureMetadataTask::getExistingHash(Resource* resource) { // Check for already computed hashes // (linear on the number of mods vs. linear on the size of the mod's JAR) - auto it = m_mods.keyValueBegin(); - while (it != m_mods.keyValueEnd()) { - if ((*it).second == mod) + auto it = m_resources.keyValueBegin(); + while (it != m_resources.keyValueEnd()) { + if ((*it).second == resource) break; it++; } // We already have the hash computed - if (it != m_mods.keyValueEnd()) { + if (it != m_resources.keyValueEnd()) { return (*it).first; } @@ -84,25 +84,25 @@ bool EnsureMetadataTask::abort() void EnsureMetadataTask::executeTask() { - setStatus(tr("Checking if mods have metadata...")); + setStatus(tr("Checking if resources have metadata...")); - for (auto* mod : m_mods) { - if (!mod->valid()) { - qDebug() << "Mod" << mod->name() << "is invalid!"; - emitFail(mod); + for (auto* resource : m_resources) { + if (!resource->valid()) { + qDebug() << "Resource" << resource->name() << "is invalid!"; + emitFail(resource); continue; } // They already have the right metadata :o - if (mod->status() != ResourceStatus::NO_METADATA && mod->metadata() && mod->metadata()->provider == m_provider) { - qDebug() << "Mod" << mod->name() << "already has metadata!"; - emitReady(mod); + if (resource->status() != ResourceStatus::NO_METADATA && resource->metadata() && resource->metadata()->provider == m_provider) { + qDebug() << "Resource" << resource->name() << "already has metadata!"; + emitReady(resource); continue; } // Folders don't have metadata - if (mod->type() == ResourceType::FOLDER) { - emitReady(mod); + if (resource->type() == ResourceType::FOLDER) { + emitReady(resource); } } @@ -118,9 +118,9 @@ void EnsureMetadataTask::executeTask() } auto invalidade_leftover = [this] { - for (auto mod = m_mods.constBegin(); mod != m_mods.constEnd(); mod++) - emitFail(mod.value(), mod.key(), RemoveFromList::No); - m_mods.clear(); + for (auto resource = m_resources.constBegin(); resource != m_resources.constEnd(); resource++) + emitFail(resource.value(), resource.key(), RemoveFromList::No); + m_resources.clear(); emitSucceeded(); }; @@ -159,53 +159,53 @@ void EnsureMetadataTask::executeTask() m_current_task.reset(); }); - if (m_mods.size() > 1) + if (m_resources.size() > 1) setStatus(tr("Requesting metadata information from %1...").arg(ProviderCaps.readableName(m_provider))); - else if (!m_mods.empty()) + else if (!m_resources.empty()) setStatus(tr("Requesting metadata information from %1 for '%2'...") - .arg(ProviderCaps.readableName(m_provider), m_mods.begin().value()->name())); + .arg(ProviderCaps.readableName(m_provider), m_resources.begin().value()->name())); m_current_task = version_task; version_task->start(); } -void EnsureMetadataTask::emitReady(Mod* m, QString key, RemoveFromList remove) +void EnsureMetadataTask::emitReady(Resource* resource, QString key, RemoveFromList remove) { - if (!m) { - qCritical() << "Tried to mark a null mod as ready."; + if (!resource) { + qCritical() << "Tried to mark a null resource as ready."; if (!key.isEmpty()) - m_mods.remove(key); + m_resources.remove(key); return; } - qDebug() << QString("Generated metadata for %1").arg(m->name()); - emit metadataReady(m); + qDebug() << QString("Generated metadata for %1").arg(resource->name()); + emit metadataReady(resource); if (remove == RemoveFromList::Yes) { if (key.isEmpty()) - key = getExistingHash(m); - m_mods.remove(key); + key = getExistingHash(resource); + m_resources.remove(key); } } -void EnsureMetadataTask::emitFail(Mod* m, QString key, RemoveFromList remove) +void EnsureMetadataTask::emitFail(Resource* resource, QString key, RemoveFromList remove) { - if (!m) { - qCritical() << "Tried to mark a null mod as failed."; + if (!resource) { + qCritical() << "Tried to mark a null resource as failed."; if (!key.isEmpty()) - m_mods.remove(key); + m_resources.remove(key); return; } - qDebug() << QString("Failed to generate metadata for %1").arg(m->name()); - emit metadataFailed(m); + qDebug() << QString("Failed to generate metadata for %1").arg(resource->name()); + emit metadataFailed(resource); if (remove == RemoveFromList::Yes) { if (key.isEmpty()) - key = getExistingHash(m); - m_mods.remove(key); + key = getExistingHash(resource); + m_resources.remove(key); } } @@ -216,7 +216,7 @@ Task::Ptr EnsureMetadataTask::modrinthVersionsTask() auto hash_type = ProviderCaps.hashType(ModPlatform::ResourceProvider::MODRINTH).first(); auto response = std::make_shared(); - auto ver_task = modrinth_api.currentVersions(m_mods.keys(), hash_type, response); + auto ver_task = modrinth_api.currentVersions(m_resources.keys(), hash_type, response); // Prevents unfortunate timings when aborting the task if (!ver_task) @@ -236,20 +236,20 @@ Task::Ptr EnsureMetadataTask::modrinthVersionsTask() try { auto entries = Json::requireObject(doc); - for (auto& hash : m_mods.keys()) { - auto mod = m_mods.find(hash).value(); + for (auto& hash : m_resources.keys()) { + auto resource = m_resources.find(hash).value(); try { auto entry = Json::requireObject(entries, hash); - setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(mod->name())); - qDebug() << "Getting version for" << mod->name() << "from Modrinth"; + setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(resource->name())); + qDebug() << "Getting version for" << resource->name() << "from Modrinth"; m_temp_versions.insert(hash, Modrinth::loadIndexedPackVersion(entry)); } catch (Json::JsonException& e) { qDebug() << e.cause(); qDebug() << entries; - emitFail(mod); + emitFail(resource); } } } catch (Json::JsonException& e) { @@ -321,23 +321,23 @@ Task::Ptr EnsureMetadataTask::modrinthProjectsTask() auto hash = addonIds.find(pack.addonId.toString()).value(); - auto mod_iter = m_mods.find(hash); - if (mod_iter == m_mods.end()) { + auto resource_iter = m_resources.find(hash); + if (resource_iter == m_resources.end()) { qWarning() << "Invalid project id from the API response."; continue; } - auto* mod = mod_iter.value(); + auto* resource = resource_iter.value(); try { - setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(mod->name())); + setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(resource->name())); - modrinthCallback(pack, m_temp_versions.find(hash).value(), mod); + modrinthCallback(pack, m_temp_versions.find(hash).value(), resource); } catch (Json::JsonException& e) { qDebug() << e.cause(); qDebug() << entries; - emitFail(mod); + emitFail(resource); } } }); @@ -351,7 +351,7 @@ Task::Ptr EnsureMetadataTask::flameVersionsTask() auto response = std::make_shared(); QList fingerprints; - for (auto& murmur : m_mods.keys()) { + for (auto& murmur : m_resources.keys()) { fingerprints.push_back(murmur.toUInt()); } @@ -391,13 +391,13 @@ Task::Ptr EnsureMetadataTask::flameVersionsTask() } auto fingerprint = QString::number(Json::ensureVariant(file_obj, "fileFingerprint").toUInt()); - auto mod = m_mods.find(fingerprint); - if (mod == m_mods.end()) { + auto resource = m_resources.find(fingerprint); + if (resource == m_resources.end()) { qWarning() << "Invalid fingerprint from the API response."; continue; } - setStatus(tr("Parsing API response from CurseForge for '%1'...").arg((*mod)->name())); + setStatus(tr("Parsing API response from CurseForge for '%1'...").arg((*resource)->name())); m_temp_versions.insert(fingerprint, FlameMod::loadIndexedPackVersion(file_obj)); } @@ -414,7 +414,7 @@ Task::Ptr EnsureMetadataTask::flameVersionsTask() Task::Ptr EnsureMetadataTask::flameProjectsTask() { QHash addonIds; - for (auto const& hash : m_mods.keys()) { + for (auto const& hash : m_resources.keys()) { if (m_temp_versions.contains(hash)) { auto data = m_temp_versions.find(hash).value(); @@ -461,20 +461,20 @@ Task::Ptr EnsureMetadataTask::flameProjectsTask() auto id = QString::number(Json::requireInteger(entry_obj, "id")); auto hash = addonIds.find(id).value(); - auto mod = m_mods.find(hash).value(); + auto resource = m_resources.find(hash).value(); try { - setStatus(tr("Parsing API response from CurseForge for '%1'...").arg(mod->name())); + setStatus(tr("Parsing API response from CurseForge for '%1'...").arg(resource->name())); ModPlatform::IndexedPack pack; FlameMod::loadIndexedPack(pack, entry_obj); - flameCallback(pack, m_temp_versions.find(hash).value(), mod); + flameCallback(pack, m_temp_versions.find(hash).value(), resource); } catch (Json::JsonException& e) { qDebug() << e.cause(); qDebug() << entries; - emitFail(mod); + emitFail(resource); } } } catch (Json::JsonException& e) { @@ -486,17 +486,17 @@ Task::Ptr EnsureMetadataTask::flameProjectsTask() return proj_task; } -void EnsureMetadataTask::modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Mod* mod) +void EnsureMetadataTask::modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource* resource) { // Prevent file name mismatch - ver.fileName = mod->fileinfo().fileName(); + ver.fileName = resource->fileinfo().fileName(); if (ver.fileName.endsWith(".disabled")) ver.fileName.chop(9); QDir tmp_index_dir(m_index_dir); { - LocalModUpdateTask update_metadata(m_index_dir, pack, ver); + LocalResourceUpdateTask update_metadata(m_index_dir, pack, ver); QEventLoop loop; QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit); @@ -510,27 +510,27 @@ void EnsureMetadataTask::modrinthCallback(ModPlatform::IndexedPack& pack, ModPla auto metadata = Metadata::get(tmp_index_dir, pack.slug); if (!metadata.isValid()) { qCritical() << "Failed to generate metadata at last step!"; - emitFail(mod); + emitFail(resource); return; } - mod->setMetadata(metadata); + resource->setMetadata(metadata); - emitReady(mod); + emitReady(resource); } -void EnsureMetadataTask::flameCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Mod* mod) +void EnsureMetadataTask::flameCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource* resource) { try { // Prevent file name mismatch - ver.fileName = mod->fileinfo().fileName(); + ver.fileName = resource->fileinfo().fileName(); if (ver.fileName.endsWith(".disabled")) ver.fileName.chop(9); QDir tmp_index_dir(m_index_dir); { - LocalModUpdateTask update_metadata(m_index_dir, pack, ver); + LocalResourceUpdateTask update_metadata(m_index_dir, pack, ver); QEventLoop loop; QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit); @@ -544,16 +544,16 @@ void EnsureMetadataTask::flameCallback(ModPlatform::IndexedPack& pack, ModPlatfo auto metadata = Metadata::get(tmp_index_dir, pack.slug); if (!metadata.isValid()) { qCritical() << "Failed to generate metadata at last step!"; - emitFail(mod); + emitFail(resource); return; } - mod->setMetadata(metadata); + resource->setMetadata(metadata); - emitReady(mod); + emitReady(resource); } catch (Json::JsonException& e) { qDebug() << e.cause(); - emitFail(mod); + emitFail(resource); } } diff --git a/launcher/modplatform/EnsureMetadataTask.h b/launcher/modplatform/EnsureMetadataTask.h index 2f276e5a0..d82d9c26e 100644 --- a/launcher/modplatform/EnsureMetadataTask.h +++ b/launcher/modplatform/EnsureMetadataTask.h @@ -5,6 +5,7 @@ #include "modplatform/helpers/HashUtils.h" +#include "minecraft/mod/Resource.h" #include "tasks/ConcurrentTask.h" class Mod; @@ -14,8 +15,8 @@ class EnsureMetadataTask : public Task { Q_OBJECT public: - EnsureMetadataTask(Mod*, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH); - EnsureMetadataTask(QList&, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH); + EnsureMetadataTask(Resource*, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH); + EnsureMetadataTask(QList&, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH); ~EnsureMetadataTask() = default; @@ -36,23 +37,23 @@ class EnsureMetadataTask : public Task { // Helpers enum class RemoveFromList { Yes, No }; - void emitReady(Mod*, QString key = {}, RemoveFromList = RemoveFromList::Yes); - void emitFail(Mod*, QString key = {}, RemoveFromList = RemoveFromList::Yes); + void emitReady(Resource*, QString key = {}, RemoveFromList = RemoveFromList::Yes); + void emitFail(Resource*, QString key = {}, RemoveFromList = RemoveFromList::Yes); // Hashes and stuff - auto createNewHash(Mod*) -> Hashing::Hasher::Ptr; - auto getExistingHash(Mod*) -> QString; + auto createNewHash(Resource*) -> Hashing::Hasher::Ptr; + auto getExistingHash(Resource*) -> QString; private slots: - void modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Mod*); - void flameCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Mod*); + void modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource*); + void flameCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource*); signals: - void metadataReady(Mod*); - void metadataFailed(Mod*); + void metadataReady(Resource*); + void metadataFailed(Resource*); private: - QHash m_mods; + QHash m_resources; QDir m_index_dir; ModPlatform::ResourceProvider m_provider; diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index c087e2be3..648ff7050 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -48,6 +48,7 @@ #include "minecraft/MinecraftInstance.h" +#include "Application.h" #include "ui/dialogs/ResourceDownloadDialog.h" #include "ui/pages/modplatform/ResourceModel.h" #include "ui/widgets/ProjectItem.h" @@ -332,7 +333,8 @@ void ResourcePage::addResourceToPage(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion& ver, const std::shared_ptr base_model) { - m_model->addPack(pack, ver, base_model); + bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); + m_model->addPack(pack, ver, base_model, is_indexed); } void ResourcePage::removeResourceFromPage(const QString& name) diff --git a/launcher/ui/pages/modplatform/ShaderPackPage.cpp b/launcher/ui/pages/modplatform/ShaderPackPage.cpp index 586dffc55..6f4120289 100644 --- a/launcher/ui/pages/modplatform/ShaderPackPage.cpp +++ b/launcher/ui/pages/modplatform/ShaderPackPage.cpp @@ -8,6 +8,7 @@ #include "ShaderPackModel.h" +#include "Application.h" #include "ui/dialogs/ResourceDownloadDialog.h" #include @@ -48,10 +49,11 @@ void ShaderPackResourcePage::addResourceToPage(ModPlatform::IndexedPack::Ptr pac ModPlatform::IndexedVersion& version, const std::shared_ptr base_model) { + bool is_indexed = !APPLICATION->settings()->get("ModMetadataDisabled").toBool(); QString custom_target_folder; if (version.loaders & ModPlatform::Cauldron) custom_target_folder = QStringLiteral("resourcepacks"); - m_model->addPack(pack, version, base_model, false, custom_target_folder); + m_model->addPack(pack, version, base_model, is_indexed, custom_target_folder); } } // namespace ResourceDownload From 179abfa03eff92404bce37388f994ba1692459a9 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 1 Sep 2023 22:05:44 +0100 Subject: [PATCH 026/616] Resource provider column Signed-off-by: TheKodeToad --- launcher/minecraft/mod/ModFolderModel.cpp | 2 +- .../minecraft/mod/ResourceFolderModel.cpp | 9 ++++++--- launcher/minecraft/mod/ResourceFolderModel.h | 8 ++++---- .../minecraft/mod/ResourcePackFolderModel.cpp | 14 ++++++++----- .../minecraft/mod/ResourcePackFolderModel.h | 2 +- .../minecraft/mod/TexturePackFolderModel.cpp | 20 ++++++++++--------- .../minecraft/mod/TexturePackFolderModel.h | 2 +- 7 files changed, 33 insertions(+), 24 deletions(-) diff --git a/launcher/minecraft/mod/ModFolderModel.cpp b/launcher/minecraft/mod/ModFolderModel.cpp index 43c64a667..370bddb22 100644 --- a/launcher/minecraft/mod/ModFolderModel.cpp +++ b/launcher/minecraft/mod/ModFolderModel.cpp @@ -160,7 +160,7 @@ QVariant ModFolderModel::headerData(int section, [[maybe_unused]] Qt::Orientatio case DateColumn: return tr("The date and time this mod was last changed (or added)."); case ProviderColumn: - return tr("Where the mod was downloaded from."); + return tr("The source provider of the mod."); default: return QVariant(); } diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index 27eb4d2e5..0f155f695 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -466,6 +466,8 @@ QVariant ResourceFolderModel::data(const QModelIndex& index, int role) const return m_resources[row]->name(); case DATE_COLUMN: return m_resources[row]->dateTimeChanged(); + case PROVIDER_COLUMN: + return m_resources[row]->provider(); default: return {}; } @@ -535,21 +537,22 @@ QVariant ResourceFolderModel::headerData(int section, [[maybe_unused]] Qt::Orien case ACTIVE_COLUMN: case NAME_COLUMN: case DATE_COLUMN: + case PROVIDER_COLUMN: return columnNames().at(section); default: return {}; } case Qt::ToolTipRole: { + //: Here, resource is a generic term for external resources, like Mods, Resource Packs, Shader Packs, etc. switch (section) { case ACTIVE_COLUMN: - //: Here, resource is a generic term for external resources, like Mods, Resource Packs, Shader Packs, etc. return tr("Is the resource enabled?"); case NAME_COLUMN: - //: Here, resource is a generic term for external resources, like Mods, Resource Packs, Shader Packs, etc. return tr("The name of the resource."); case DATE_COLUMN: - //: Here, resource is a generic term for external resources, like Mods, Resource Packs, Shader Packs, etc. return tr("The date and time this resource was last changed (or added)."); + case PROVIDER_COLUMN: + return tr("The source provider of the resource."); default: return {}; } diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index e8f8d2b9e..7deff5fe9 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -100,7 +100,7 @@ class ResourceFolderModel : public QAbstractListModel { /* Qt behavior */ /* Basic columns */ - enum Columns { ACTIVE_COLUMN = 0, NAME_COLUMN, DATE_COLUMN, NUM_COLUMNS }; + enum Columns { ACTIVE_COLUMN = 0, NAME_COLUMN, DATE_COLUMN, PROVIDER_COLUMN, NUM_COLUMNS }; QStringList columnNames(bool translated = true) const { return translated ? m_column_names_translated : m_column_names; } [[nodiscard]] int rowCount(const QModelIndex& parent = {}) const override { return parent.isValid() ? 0 : static_cast(size()); } @@ -205,11 +205,11 @@ class ResourceFolderModel : public QAbstractListModel { // Represents the relationship between a column's index (represented by the list index), and it's sorting key. // As such, the order in with they appear is very important! QList m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::DATE }; - QStringList m_column_names = { "Enable", "Name", "Last Modified" }; - QStringList m_column_names_translated = { tr("Enable"), tr("Name"), tr("Last Modified") }; + QStringList m_column_names = { "Enable", "Name", "Last Modified", "Provider" }; + QStringList m_column_names_translated = { tr("Enable"), tr("Name"), tr("Last Modified"), tr("Provider") }; QList m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Stretch, QHeaderView::ResizeToContents }; - QList m_columnsHideable = { false, false, true }; + QList m_columnsHideable = { false, false, true, true }; QDir m_dir; BaseInstance* m_instance; diff --git a/launcher/minecraft/mod/ResourcePackFolderModel.cpp b/launcher/minecraft/mod/ResourcePackFolderModel.cpp index 2e72e02f2..11175e5a6 100644 --- a/launcher/minecraft/mod/ResourcePackFolderModel.cpp +++ b/launcher/minecraft/mod/ResourcePackFolderModel.cpp @@ -50,12 +50,12 @@ ResourcePackFolderModel::ResourcePackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) : ResourceFolderModel(dir, instance, is_indexed, create_dir, parent) { - m_column_names = QStringList({ "Enable", "Image", "Name", "Pack Format", "Last Modified" }); - m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified") }); + m_column_names = QStringList({ "Enable", "Image", "Name", "Pack Format", "Last Modified", "Provider" }); + m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified"), tr("Provider") }); m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::PACK_FORMAT, SortType::DATE }; m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::ResizeToContents, QHeaderView::ResizeToContents }; - m_columnsHideable = { false, true, false, true, true }; + m_columnsHideable = { false, true, false, true, true, true }; } QVariant ResourcePackFolderModel::data(const QModelIndex& index, int role) const @@ -86,7 +86,8 @@ QVariant ResourcePackFolderModel::data(const QModelIndex& index, int role) const } case DateColumn: return m_resources[row]->dateTimeChanged(); - + case ProviderColumn: + return m_resources[row]->provider(); default: return {}; } @@ -140,6 +141,7 @@ QVariant ResourcePackFolderModel::headerData(int section, [[maybe_unused]] Qt::O case PackFormatColumn: case DateColumn: case ImageColumn: + case ProviderColumn: return columnNames().at(section); default: return {}; @@ -148,7 +150,7 @@ QVariant ResourcePackFolderModel::headerData(int section, [[maybe_unused]] Qt::O case Qt::ToolTipRole: switch (section) { case ActiveColumn: - return tr("Is the resource pack enabled? (Only valid for ZIPs)"); + return tr("Is the resource pack enabled?"); case NameColumn: return tr("The name of the resource pack."); case PackFormatColumn: @@ -156,6 +158,8 @@ QVariant ResourcePackFolderModel::headerData(int section, [[maybe_unused]] Qt::O return tr("The resource pack format ID, as well as the Minecraft versions it was designed for."); case DateColumn: return tr("The date and time this resource pack was last changed (or added)."); + case ProviderColumn: + return tr("The source provider of the resource pack."); default: return {}; } diff --git a/launcher/minecraft/mod/ResourcePackFolderModel.h b/launcher/minecraft/mod/ResourcePackFolderModel.h index fd56c8c73..f00acee29 100644 --- a/launcher/minecraft/mod/ResourcePackFolderModel.h +++ b/launcher/minecraft/mod/ResourcePackFolderModel.h @@ -7,7 +7,7 @@ class ResourcePackFolderModel : public ResourceFolderModel { Q_OBJECT public: - enum Columns { ActiveColumn = 0, ImageColumn, NameColumn, PackFormatColumn, DateColumn, NUM_COLUMNS }; + enum Columns { ActiveColumn = 0, ImageColumn, NameColumn, PackFormatColumn, DateColumn, ProviderColumn, NUM_COLUMNS }; explicit ResourcePackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent = nullptr); diff --git a/launcher/minecraft/mod/TexturePackFolderModel.cpp b/launcher/minecraft/mod/TexturePackFolderModel.cpp index 23a392421..a20e2b5db 100644 --- a/launcher/minecraft/mod/TexturePackFolderModel.cpp +++ b/launcher/minecraft/mod/TexturePackFolderModel.cpp @@ -45,12 +45,12 @@ TexturePackFolderModel::TexturePackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) : ResourceFolderModel(QDir(dir), instance, is_indexed, create_dir, parent) { - m_column_names = QStringList({ "Enable", "Image", "Name", "Last Modified" }); - m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Last Modified") }); + m_column_names = QStringList({ "Enable", "Image", "Name", "Last Modified", "Provider" }); + m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Last Modified"), tr("Provider") }); m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::DATE }; m_column_resize_modes = { QHeaderView::ResizeToContents, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::ResizeToContents }; - m_columnsHideable = { false, true, false, true }; + m_columnsHideable = { false, true, false, true, true }; } Task* TexturePackFolderModel::createParseTask(Resource& resource) @@ -73,6 +73,8 @@ QVariant TexturePackFolderModel::data(const QModelIndex& index, int role) const return m_resources[row]->name(); case DateColumn: return m_resources[row]->dateTimeChanged(); + case ProviderColumn: + return m_resources[row]->provider(); default: return {}; } @@ -119,6 +121,7 @@ QVariant TexturePackFolderModel::headerData(int section, [[maybe_unused]] Qt::Or case NameColumn: case DateColumn: case ImageColumn: + case ProviderColumn: return columnNames().at(section); default: return {}; @@ -126,14 +129,13 @@ QVariant TexturePackFolderModel::headerData(int section, [[maybe_unused]] Qt::Or case Qt::ToolTipRole: { switch (section) { case ActiveColumn: - //: Here, resource is a generic term for external resources, like Mods, Resource Packs, Shader Packs, etc. - return tr("Is the resource enabled?"); + return tr("Is the texture pack enabled?"); case NameColumn: - //: Here, resource is a generic term for external resources, like Mods, Resource Packs, Shader Packs, etc. - return tr("The name of the resource."); + return tr("The name of the texture pack."); case DateColumn: - //: Here, resource is a generic term for external resources, like Mods, Resource Packs, Shader Packs, etc. - return tr("The date and time this resource was last changed (or added)."); + return tr("The date and time this texture pack was last changed (or added)."); + case ProviderColumn: + return tr("The source provider of the texture pack."); default: return {}; } diff --git a/launcher/minecraft/mod/TexturePackFolderModel.h b/launcher/minecraft/mod/TexturePackFolderModel.h index 44b19b57a..649842e23 100644 --- a/launcher/minecraft/mod/TexturePackFolderModel.h +++ b/launcher/minecraft/mod/TexturePackFolderModel.h @@ -44,7 +44,7 @@ class TexturePackFolderModel : public ResourceFolderModel { Q_OBJECT public: - enum Columns { ActiveColumn = 0, ImageColumn, NameColumn, DateColumn, NUM_COLUMNS }; + enum Columns { ActiveColumn = 0, ImageColumn, NameColumn, DateColumn, ProviderColumn, NUM_COLUMNS }; explicit TexturePackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent = nullptr); From 33cf7066b403e1438fd3c9dd36e33bf5e84c5f29 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 27 Oct 2023 21:51:35 +0300 Subject: [PATCH 027/616] formated the code Signed-off-by: Trial97 --- launcher/ui/widgets/JavaSettingsWidget.cpp | 2 -- 1 file changed, 2 deletions(-) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 3c0352b13..63d7aa57c 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -40,7 +40,6 @@ JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited); connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaSettingsWidget::on_javaStatusBtn_clicked); connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaDownloadBtn_clicked); - } void JavaSettingsWidget::setupUi() @@ -274,7 +273,6 @@ void JavaSettingsWidget::on_javaBrowseBtn_clicked() void JavaSettingsWidget::on_javaDownloadBtn_clicked() { JavaDownloader::showPrompts(this); - } void JavaSettingsWidget::on_javaStatusBtn_clicked() { From d94e641900db85cab74df95fa5bf100247b83f59 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 7 Jan 2024 22:00:31 +0200 Subject: [PATCH 028/616] Load versions on first edit Signed-off-by: Trial97 --- launcher/ui/pages/instance/ModFolderPage.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index 313fef2b6..aba87942a 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -321,6 +321,12 @@ bool CoreModFolderPage::shouldDisplay() const auto version = inst->getPackProfile(); + ProgressDialog loadDialog(parentWidget()); + auto update = inst->createUpdateTask(Net::Mode::Offline); + if (update) { + loadDialog.setSkipButton(true, tr("Abort")); + loadDialog.execWithTask(update.get()); + } if (!version) return true; if (!version->getComponent("net.minecraftforge")) From a0e7729aa62a5bb6a83e401dd863e69cbd886edc Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 24 Jan 2024 18:26:43 +0200 Subject: [PATCH 029/616] Started workin on stuff Signed-off-by: Trial97 --- launcher/Application.cpp | 18 +- launcher/Application.h | 2 - launcher/CMakeLists.txt | 2 - launcher/JavaCommon.cpp | 30 ++- launcher/JavaCommon.h | 12 +- launcher/MMCZip.cpp | 106 ++++++++++ launcher/MMCZip.h | 28 +++ launcher/SysInfo.cpp | 18 +- launcher/SysInfo.h | 1 + launcher/java/JavaChecker.cpp | 39 ++-- launcher/java/JavaChecker.h | 62 +++--- launcher/java/JavaCheckerJob.cpp | 41 ---- launcher/java/JavaCheckerJob.h | 56 ------ launcher/java/JavaInstallList.cpp | 37 ++-- launcher/java/JavaInstallList.h | 12 +- launcher/java/JavaUtils.h | 5 +- .../java/providers/AdoptiumJavaDownloader.cpp | 119 +++++++++++ .../java/providers/AdoptiumJavaDownloader.h | 36 ++++ .../java/providers/AzulJavaDownloader.cpp | 159 +++++++++++++++ launcher/java/providers/AzulJavaDownloader.h | 37 ++++ .../java/providers/BasicJavaDownloader.cpp | 29 +++ launcher/java/providers/BasicJavaDownloader.h | 41 ++++ .../java/providers/MojangJavaDownloader.cpp | 185 ++++++++++++++++++ .../java/providers/MojanglJavaDownloader.h | 37 ++++ launcher/launch/steps/CheckJava.cpp | 14 +- launcher/launch/steps/CheckJava.h | 4 +- launcher/ui/widgets/JavaSettingsWidget.cpp | 21 +- launcher/ui/widgets/JavaSettingsWidget.h | 4 +- 28 files changed, 908 insertions(+), 247 deletions(-) delete mode 100644 launcher/java/JavaCheckerJob.cpp delete mode 100644 launcher/java/JavaCheckerJob.h create mode 100644 launcher/java/providers/AdoptiumJavaDownloader.cpp create mode 100644 launcher/java/providers/AdoptiumJavaDownloader.h create mode 100644 launcher/java/providers/AzulJavaDownloader.cpp create mode 100644 launcher/java/providers/AzulJavaDownloader.h create mode 100644 launcher/java/providers/BasicJavaDownloader.cpp create mode 100644 launcher/java/providers/BasicJavaDownloader.h create mode 100644 launcher/java/providers/MojangJavaDownloader.cpp create mode 100644 launcher/java/providers/MojanglJavaDownloader.h diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 661c6c5be..aa702aa7e 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -44,6 +44,7 @@ #include "BuildConfig.h" #include "DataMigrationTask.h" +#include "java/JavaInstallList.h" #include "net/PasteUpload.h" #include "pathmatcher/MultiMatcher.h" #include "pathmatcher/SimplePrefixMatcher.h" @@ -125,6 +126,7 @@ #include #include +#include "SysInfo.h" #ifdef Q_OS_LINUX #include @@ -607,7 +609,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) // Memory m_settings->registerSetting({ "MinMemAlloc", "MinMemoryAlloc" }, 512); - m_settings->registerSetting({ "MaxMemAlloc", "MaxMemoryAlloc" }, suitableMaxMem()); + m_settings->registerSetting({ "MaxMemAlloc", "MaxMemoryAlloc" }, SysInfo::suitableMaxMem()); m_settings->registerSetting("PermGen", 128); // Java Settings @@ -1667,20 +1669,6 @@ QString Application::getUserAgentUncached() return BuildConfig.USER_AGENT_UNCACHED; } -int Application::suitableMaxMem() -{ - float totalRAM = (float)Sys::getSystemRam() / (float)Sys::mebibyte; - int maxMemoryAlloc; - - // If totalRAM < 6GB, use (totalRAM / 1.5), else 4GB - if (totalRAM < (4096 * 1.5)) - maxMemoryAlloc = (int)(totalRAM / 1.5); - else - maxMemoryAlloc = 4096; - - return maxMemoryAlloc; -} - bool Application::handleDataMigration(const QString& currentData, const QString& oldData, const QString& name, diff --git a/launcher/Application.h b/launcher/Application.h index 7669e08ec..85bf2dff4 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -180,8 +180,6 @@ class Application : public QApplication { void ShowGlobalSettings(class QWidget* parent, QString open_page = QString()); - int suitableMaxMem(); - bool updaterEnabled(); QString updaterBinaryName(); diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 48ca8f085..e735f2081 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -422,8 +422,6 @@ set(SETTINGS_SOURCES set(JAVA_SOURCES java/JavaChecker.h java/JavaChecker.cpp - java/JavaCheckerJob.h - java/JavaCheckerJob.cpp java/JavaInstall.h java/JavaInstall.cpp java/JavaInstallList.h diff --git a/launcher/JavaCommon.cpp b/launcher/JavaCommon.cpp index e16ac9255..cfc3cfe42 100644 --- a/launcher/JavaCommon.cpp +++ b/launcher/JavaCommon.cpp @@ -63,7 +63,7 @@ bool JavaCommon::checkJVMArgs(QString jvmargs, QWidget* parent) return true; } -void JavaCommon::javaWasOk(QWidget* parent, const JavaCheckResult& result) +void JavaCommon::javaWasOk(QWidget* parent, const JavaChecker::Result& result) { QString text; text += QObject::tr( @@ -79,7 +79,7 @@ void JavaCommon::javaWasOk(QWidget* parent, const JavaCheckResult& result) CustomMessageBox::selectable(parent, QObject::tr("Java test success"), text, QMessageBox::Information)->show(); } -void JavaCommon::javaArgsWereBad(QWidget* parent, const JavaCheckResult& result) +void JavaCommon::javaArgsWereBad(QWidget* parent, const JavaChecker::Result& result) { auto htmlError = result.errorLog; QString text; @@ -89,7 +89,7 @@ void JavaCommon::javaArgsWereBad(QWidget* parent, const JavaCheckResult& result) CustomMessageBox::selectable(parent, QObject::tr("Java test failure"), text, QMessageBox::Warning)->show(); } -void JavaCommon::javaBinaryWasBad(QWidget* parent, const JavaCheckResult& result) +void JavaCommon::javaBinaryWasBad(QWidget* parent, const JavaChecker::Result& result) { QString text; text += QObject::tr( @@ -116,34 +116,26 @@ void JavaCommon::TestCheck::run() emit finished(); return; } - checker.reset(new JavaChecker()); + checker.reset(new JavaChecker(m_path, "", 0, 0, 0, 0, this)); connect(checker.get(), &JavaChecker::checkFinished, this, &JavaCommon::TestCheck::checkFinished); - checker->m_path = m_path; - checker->performCheck(); + checker->start(); } -void JavaCommon::TestCheck::checkFinished(JavaCheckResult result) +void JavaCommon::TestCheck::checkFinished(JavaChecker::Result result) { - if (result.validity != JavaCheckResult::Validity::Valid) { + if (result.validity != JavaChecker::Result::Validity::Valid) { javaBinaryWasBad(m_parent, result); emit finished(); return; } - checker.reset(new JavaChecker()); + checker.reset(new JavaChecker(m_path, m_args, m_maxMem, m_maxMem, result.javaVersion.requiresPermGen() ? m_permGen : 0, 0, this)); connect(checker.get(), &JavaChecker::checkFinished, this, &JavaCommon::TestCheck::checkFinishedWithArgs); - checker->m_path = m_path; - checker->m_args = m_args; - checker->m_minMem = m_minMem; - checker->m_maxMem = m_maxMem; - if (result.javaVersion.requiresPermGen()) { - checker->m_permGen = m_permGen; - } - checker->performCheck(); + checker->start(); } -void JavaCommon::TestCheck::checkFinishedWithArgs(JavaCheckResult result) +void JavaCommon::TestCheck::checkFinishedWithArgs(JavaChecker::Result result) { - if (result.validity == JavaCheckResult::Validity::Valid) { + if (result.validity == JavaChecker::Result::Validity::Valid) { javaWasOk(m_parent, result); emit finished(); return; diff --git a/launcher/JavaCommon.h b/launcher/JavaCommon.h index c96f7a985..7c5510efc 100644 --- a/launcher/JavaCommon.h +++ b/launcher/JavaCommon.h @@ -10,11 +10,11 @@ namespace JavaCommon { bool checkJVMArgs(QString args, QWidget* parent); // Show a dialog saying that the Java binary was usable -void javaWasOk(QWidget* parent, const JavaCheckResult& result); +void javaWasOk(QWidget* parent, const JavaChecker::Result& result); // Show a dialog saying that the Java binary was not usable because of bad options -void javaArgsWereBad(QWidget* parent, const JavaCheckResult& result); +void javaArgsWereBad(QWidget* parent, const JavaChecker::Result& result); // Show a dialog saying that the Java binary was not usable -void javaBinaryWasBad(QWidget* parent, const JavaCheckResult& result); +void javaBinaryWasBad(QWidget* parent, const JavaChecker::Result& result); // Show a dialog if we couldn't find Java Checker void javaCheckNotFound(QWidget* parent); @@ -32,11 +32,11 @@ class TestCheck : public QObject { void finished(); private slots: - void checkFinished(JavaCheckResult result); - void checkFinishedWithArgs(JavaCheckResult result); + void checkFinished(JavaChecker::Result result); + void checkFinishedWithArgs(JavaChecker::Result result); private: - std::shared_ptr checker; + JavaChecker::Ptr checker; QWidget* m_parent = nullptr; QString m_path; QString m_args; diff --git a/launcher/MMCZip.cpp b/launcher/MMCZip.cpp index 3bfe16ab5..78a3b290d 100644 --- a/launcher/MMCZip.cpp +++ b/launcher/MMCZip.cpp @@ -507,6 +507,112 @@ bool ExportToZipTask::abort() } return false; } + +void ExtractZipTask::executeTask() +{ + m_zip_future = QtConcurrent::run(QThreadPool::globalInstance(), [this]() { return extractZip(); }); + connect(&m_zip_watcher, &QFutureWatcher::finished, this, &ExtractZipTask::finish); + m_zip_watcher.setFuture(m_zip_future); +} + +auto ExtractZipTask::extractZip() -> ZipResult +{ + auto target = m_output_dir.absolutePath(); + auto target_top_dir = QUrl::fromLocalFile(target); + + QStringList extracted; + + qDebug() << "Extracting subdir" << m_subdirectory << "from" << m_input->getZipName() << "to" << target; + auto numEntries = m_input->getEntriesCount(); + if (numEntries < 0) { + return ZipResult(tr("Failed to enumerate files in archive")); + } + if (numEntries == 0) { + logWarning(tr("Extracting empty archives seems odd...")); + return ZipResult(); + } + if (!m_input->goToFirstFile()) { + return ZipResult(tr("Failed to seek to first file in zip")); + } + + setStatus("Extracting files..."); + setProgress(0, numEntries); + do { + if (m_zip_future.isCanceled()) + return ZipResult(); + setProgress(m_progress + 1, m_progressTotal); + QString file_name = m_input->getCurrentFileName(); + if (!file_name.startsWith(m_subdirectory)) + continue; + + auto relative_file_name = QDir::fromNativeSeparators(file_name.remove(0, m_subdirectory.size())); + auto original_name = relative_file_name; + setStatus("Unziping: " + relative_file_name); + + // Fix subdirs/files ending with a / getting transformed into absolute paths + if (relative_file_name.startsWith('/')) + relative_file_name = relative_file_name.mid(1); + + // Fix weird "folders with a single file get squashed" thing + QString sub_path; + if (relative_file_name.contains('/') && !relative_file_name.endsWith('/')) { + sub_path = relative_file_name.section('/', 0, -2) + '/'; + FS::ensureFolderPathExists(FS::PathCombine(target, sub_path)); + + relative_file_name = relative_file_name.split('/').last(); + } + + QString target_file_path; + if (relative_file_name.isEmpty()) { + target_file_path = target + '/'; + } else { + target_file_path = FS::PathCombine(target_top_dir.toLocalFile(), sub_path, relative_file_name); + if (relative_file_name.endsWith('/') && !target_file_path.endsWith('/')) + target_file_path += '/'; + } + + if (!target_top_dir.isParentOf(QUrl::fromLocalFile(target_file_path))) { + return ZipResult(tr("Extracting %1 was cancelled, because it was effectively outside of the target path %2") + .arg(relative_file_name, target)); + } + + if (!JlCompress::extractFile(m_input.get(), "", target_file_path)) { + JlCompress::removeFile(extracted); + return ZipResult(tr("Failed to extract file %1 to %2").arg(original_name, target_file_path)); + } + + extracted.append(target_file_path); + QFile::setPermissions(target_file_path, + QFileDevice::Permission::ReadUser | QFileDevice::Permission::WriteUser | QFileDevice::Permission::ExeUser); + + qDebug() << "Extracted file" << relative_file_name << "to" << target_file_path; + } while (m_input->goToNextFile()); + + return ZipResult(); +} + +void ExtractZipTask::finish() +{ + if (m_zip_future.isCanceled()) { + emitAborted(); + } else if (auto result = m_zip_future.result(); result.has_value()) { + emitFailed(result.value()); + } else { + emitSucceeded(); + } +} + +bool ExtractZipTask::abort() +{ + if (m_zip_future.isRunning()) { + m_zip_future.cancel(); + // NOTE: Here we don't do `emitAborted()` because it will be done when `m_build_zip_future` actually cancels, which may not occur + // immediately. + return true; + } + return false; +} + #endif } // namespace MMCZip diff --git a/launcher/MMCZip.h b/launcher/MMCZip.h index 45b1df0b3..2b396eb9c 100644 --- a/launcher/MMCZip.h +++ b/launcher/MMCZip.h @@ -194,5 +194,33 @@ class ExportToZipTask : public Task { QFuture m_build_zip_future; QFutureWatcher m_build_zip_watcher; }; + +class ExtractZipTask : public Task { + public: + ExtractZipTask(QString input, QDir outputDir, QString subdirectory = "") + : ExtractZipTask(std::make_shared(input), outputDir, subdirectory) + {} + ExtractZipTask(std::shared_ptr input, QDir outputDir, QString subdirectory = "") + : m_input(input), m_output_dir(outputDir), m_subdirectory(subdirectory) + {} + virtual ~ExtractZipTask() = default; + + typedef std::optional ZipResult; + + protected: + virtual void executeTask() override; + bool abort() override; + + ZipResult extractZip(); + void finish(); + + private: + std::shared_ptr m_input; + QDir m_output_dir; + QString m_subdirectory; + + QFuture m_zip_future; + QFutureWatcher m_zip_watcher; +}; #endif } // namespace MMCZip diff --git a/launcher/SysInfo.cpp b/launcher/SysInfo.cpp index ad251e29f..f15dde0e4 100644 --- a/launcher/SysInfo.cpp +++ b/launcher/SysInfo.cpp @@ -1,5 +1,6 @@ #include #include +#include "sys.h" #ifdef Q_OS_MACOS #include #endif @@ -7,9 +8,6 @@ #include #include #include -#include "Application.h" -#include "Commandline.h" -#include "java/JavaUtils.h" #ifdef Q_OS_MACOS bool rosettaDetect() @@ -59,4 +57,18 @@ QString useQTForArch() #endif return qtArch; } + +int suitableMaxMem() +{ + float totalRAM = (float)Sys::getSystemRam() / (float)Sys::mebibyte; + int maxMemoryAlloc; + + // If totalRAM < 6GB, use (totalRAM / 1.5), else 4GB + if (totalRAM < (4096 * 1.5)) + maxMemoryAlloc = (int)(totalRAM / 1.5); + else + maxMemoryAlloc = 4096; + + return maxMemoryAlloc; +} } // namespace SysInfo diff --git a/launcher/SysInfo.h b/launcher/SysInfo.h index 3650bf008..499c3b1dd 100644 --- a/launcher/SysInfo.h +++ b/launcher/SysInfo.h @@ -3,4 +3,5 @@ namespace SysInfo { QString currentSystem(); QString useQTForArch(); +int suitableMaxMem(); } // namespace SysInfo diff --git a/launcher/java/JavaChecker.cpp b/launcher/java/JavaChecker.cpp index 20caba189..7271c0d09 100644 --- a/launcher/java/JavaChecker.cpp +++ b/launcher/java/JavaChecker.cpp @@ -40,14 +40,13 @@ #include #include -#include "Application.h" #include "Commandline.h" -#include "FileSystem.h" -#include "JavaUtils.h" +#include "java/JavaUtils.h" -JavaChecker::JavaChecker(QObject* parent) : QObject(parent) {} +JavaChecker::JavaChecker(QString path, QString args, int minMem, int maxMem, int permGen, int id, QObject* parent) + : Task(parent), m_path(path), m_args(args), m_minMem(minMem), m_maxMem(maxMem), m_permGen(permGen), m_id(id){}; -void JavaChecker::performCheck() +void JavaChecker::executeTask() { QString checkerJar = JavaUtils::getJavaCheckPath(); @@ -69,7 +68,7 @@ void JavaChecker::performCheck() if (m_maxMem != 0) { args << QString("-Xmx%1m").arg(m_maxMem); } - if (m_permGen != 64) { + if (m_permGen != 64 && m_permGen != 0) { args << QString("-XX:PermSize=%1m").arg(m_permGen); } @@ -112,11 +111,10 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status) QProcessPtr _process = process; process.reset(); - JavaCheckResult result; - { - result.path = m_path; - result.id = m_id; - } + Result result = { + m_path, + m_id, + }; result.errorLog = m_stderr; result.outLog = m_stdout; qDebug() << "STDOUT" << m_stdout; @@ -124,8 +122,9 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status) qDebug() << "Java checker finished with status" << status << "exit code" << exitcode; if (status == QProcess::CrashExit || exitcode == 1) { - result.validity = JavaCheckResult::Validity::Errored; + result.validity = Result::Validity::Errored; emit checkFinished(result); + emitSucceeded(); return; } @@ -158,8 +157,9 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status) } if (!results.contains("os.arch") || !results.contains("java.version") || !results.contains("java.vendor") || !success) { - result.validity = JavaCheckResult::Validity::ReturnedInvalidData; + result.validity = Result::Validity::ReturnedInvalidData; emit checkFinished(result); + emitSucceeded(); return; } @@ -168,7 +168,7 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status) auto java_vendor = results["java.vendor"]; bool is_64 = os_arch == "x86_64" || os_arch == "amd64" || os_arch == "aarch64" || os_arch == "arm64"; - result.validity = JavaCheckResult::Validity::Valid; + result.validity = Result::Validity::Valid; result.is_64bit = is_64; result.mojangPlatform = is_64 ? "64" : "32"; result.realPlatform = os_arch; @@ -176,6 +176,7 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status) result.javaVendor = java_vendor; qDebug() << "Java checker succeeded."; emit checkFinished(result); + emitSucceeded(); } void JavaChecker::error(QProcess::ProcessError err) @@ -187,15 +188,9 @@ void JavaChecker::error(QProcess::ProcessError err) qDebug() << "Native environment:"; qDebug() << QProcessEnvironment::systemEnvironment().toStringList(); killTimer.stop(); - JavaCheckResult result; - { - result.path = m_path; - result.id = m_id; - } - - emit checkFinished(result); - return; + emit checkFinished({ m_path, m_id }); } + emitSucceeded(); } void JavaChecker::timeout() diff --git a/launcher/java/JavaChecker.h b/launcher/java/JavaChecker.h index 7111f8522..0c6191c21 100644 --- a/launcher/java/JavaChecker.h +++ b/launcher/java/JavaChecker.h @@ -3,49 +3,51 @@ #include #include -#include "QObjectPtr.h" - #include "JavaVersion.h" +#include "QObjectPtr.h" +#include "tasks/Task.h" -class JavaChecker; - -struct JavaCheckResult { - QString path; - QString mojangPlatform; - QString realPlatform; - JavaVersion javaVersion; - QString javaVendor; - QString outLog; - QString errorLog; - bool is_64bit = false; - int id; - enum class Validity { Errored, ReturnedInvalidData, Valid } validity = Validity::Errored; -}; - -using QProcessPtr = shared_qobject_ptr; -using JavaCheckerPtr = shared_qobject_ptr; -class JavaChecker : public QObject { +class JavaChecker : public Task { Q_OBJECT public: - explicit JavaChecker(QObject* parent = 0); - void performCheck(); + using QProcessPtr = shared_qobject_ptr; + using Ptr = shared_qobject_ptr; - QString m_path; - QString m_args; - int m_id = 0; - int m_minMem = 0; - int m_maxMem = 0; - int m_permGen = 64; + struct Result { + QString path; + int id; + QString mojangPlatform; + QString realPlatform; + JavaVersion javaVersion; + QString javaVendor; + QString outLog; + QString errorLog; + bool is_64bit = false; + enum class Validity { Errored, ReturnedInvalidData, Valid } validity = Validity::Errored; + }; + + explicit JavaChecker(QString path, QString args, int minMem = 0, int maxMem = 0, int permGen = 0, int id = 0, QObject* parent = 0); signals: - void checkFinished(JavaCheckResult result); + void checkFinished(Result result); + + protected: + virtual void executeTask() override; private: QProcessPtr process; QTimer killTimer; QString m_stdout; QString m_stderr; - public slots: + + QString m_path; + QString m_args; + int m_minMem = 0; + int m_maxMem = 0; + int m_permGen = 64; + int m_id = 0; + + private slots: void timeout(); void finished(int exitcode, QProcess::ExitStatus); void error(QProcess::ProcessError); diff --git a/launcher/java/JavaCheckerJob.cpp b/launcher/java/JavaCheckerJob.cpp deleted file mode 100644 index 870e2a09a..000000000 --- a/launcher/java/JavaCheckerJob.cpp +++ /dev/null @@ -1,41 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "JavaCheckerJob.h" - -#include - -void JavaCheckerJob::partFinished(JavaCheckResult result) -{ - num_finished++; - qDebug() << m_job_name.toLocal8Bit() << "progress:" << num_finished << "/" << javacheckers.size(); - setProgress(num_finished, javacheckers.size()); - - javaresults.replace(result.id, result); - - if (num_finished == javacheckers.size()) { - emitSucceeded(); - } -} - -void JavaCheckerJob::executeTask() -{ - qDebug() << m_job_name.toLocal8Bit() << " started."; - for (auto iter : javacheckers) { - javaresults.append(JavaCheckResult()); - connect(iter.get(), &JavaChecker::checkFinished, this, &JavaCheckerJob::partFinished); - iter->performCheck(); - } -} diff --git a/launcher/java/JavaCheckerJob.h b/launcher/java/JavaCheckerJob.h deleted file mode 100644 index ddf827968..000000000 --- a/launcher/java/JavaCheckerJob.h +++ /dev/null @@ -1,56 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include -#include "JavaChecker.h" -#include "tasks/Task.h" - -class JavaCheckerJob; -using JavaCheckerJobPtr = shared_qobject_ptr; - -// FIXME: this just seems horribly redundant -class JavaCheckerJob : public Task { - Q_OBJECT - public: - explicit JavaCheckerJob(QString job_name) : Task(), m_job_name(job_name){}; - virtual ~JavaCheckerJob(){}; - - bool addJavaCheckerAction(JavaCheckerPtr base) - { - javacheckers.append(base); - // if this is already running, the action needs to be started right away! - if (isRunning()) { - setProgress(num_finished, javacheckers.size()); - connect(base.get(), &JavaChecker::checkFinished, this, &JavaCheckerJob::partFinished); - base->performCheck(); - } - return true; - } - QList getResults() { return javaresults; } - - private slots: - void partFinished(JavaCheckResult result); - - protected: - virtual void executeTask() override; - - private: - QString m_job_name; - QList javacheckers; - QList javaresults; - int num_finished = 0; -}; diff --git a/launcher/java/JavaInstallList.cpp b/launcher/java/JavaInstallList.cpp index d8be4963f..ef99d6853 100644 --- a/launcher/java/JavaInstallList.cpp +++ b/launcher/java/JavaInstallList.cpp @@ -38,11 +38,13 @@ #include #include +#include -#include "java/JavaCheckerJob.h" +#include "Application.h" +#include "java/JavaChecker.h" #include "java/JavaInstallList.h" #include "java/JavaUtils.h" -#include "minecraft/VersionFilterData.h" +#include "tasks/ConcurrentTask.h" JavaInstallList::JavaInstallList(QObject* parent) : BaseVersionList(parent) {} @@ -55,7 +57,7 @@ Task::Ptr JavaInstallList::getLoadTask() Task::Ptr JavaInstallList::getCurrentTask() { if (m_status == Status::InProgress) { - return m_loadTask; + return m_load_task; } return nullptr; } @@ -64,8 +66,8 @@ void JavaInstallList::load() { if (m_status != Status::InProgress) { m_status = Status::InProgress; - m_loadTask.reset(new JavaListLoadTask(this)); - m_loadTask->start(); + m_load_task.reset(new JavaListLoadTask(this)); + m_load_task->start(); } } @@ -129,7 +131,7 @@ void JavaInstallList::updateListData(QList versions) } endResetModel(); m_status = Status::Done; - m_loadTask.reset(); + m_load_task.reset(); } bool sortJavas(BaseVersion::Ptr left, BaseVersion::Ptr right) @@ -149,11 +151,9 @@ void JavaInstallList::sortVersions() JavaListLoadTask::JavaListLoadTask(JavaInstallList* vlist) : Task() { m_list = vlist; - m_currentRecommended = NULL; + m_current_recommended = NULL; } -JavaListLoadTask::~JavaListLoadTask() {} - void JavaListLoadTask::executeTask() { setStatus(tr("Detecting Java installations...")); @@ -161,20 +161,17 @@ void JavaListLoadTask::executeTask() JavaUtils ju; QList candidate_paths = ju.FindJavaPaths(); - m_job.reset(new JavaCheckerJob("Java detection")); + ConcurrentTask::Ptr job(new ConcurrentTask(this, "Java detection", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); + m_job.reset(job); connect(m_job.get(), &Task::finished, this, &JavaListLoadTask::javaCheckerFinished); connect(m_job.get(), &Task::progress, this, &Task::setProgress); qDebug() << "Probing the following Java paths: "; int id = 0; for (QString candidate : candidate_paths) { - qDebug() << " " << candidate; - - auto candidate_checker = new JavaChecker(); - candidate_checker->m_path = candidate; - candidate_checker->m_id = id; - m_job->addJavaCheckerAction(JavaCheckerPtr(candidate_checker)); - + auto checker = new JavaChecker(candidate, "", 0, 0, 0, id, this); + connect(checker, &JavaChecker::checkFinished, [this](JavaChecker::Result result) { m_results << result; }); + job->addTask(Task::Ptr(checker)); id++; } @@ -184,11 +181,11 @@ void JavaListLoadTask::executeTask() void JavaListLoadTask::javaCheckerFinished() { QList candidates; - auto results = m_job->getResults(); + std::sort(m_results.begin(), m_results.end(), [](JavaChecker::Result a, JavaChecker::Result b) { return a.id < b.id; }); qDebug() << "Found the following valid Java installations:"; - for (JavaCheckResult result : results) { - if (result.validity == JavaCheckResult::Validity::Valid) { + for (auto result : m_results) { + if (result.validity == JavaChecker::Result::Validity::Valid) { JavaInstallPtr javaVersion(new JavaInstall()); javaVersion->id = result.javaVersion; diff --git a/launcher/java/JavaInstallList.h b/launcher/java/JavaInstallList.h index 1eebadf23..08f0b310d 100644 --- a/launcher/java/JavaInstallList.h +++ b/launcher/java/JavaInstallList.h @@ -19,9 +19,9 @@ #include #include "BaseVersionList.h" +#include "java/JavaChecker.h" #include "tasks/Task.h" -#include "JavaCheckerJob.h" #include "JavaInstall.h" #include "QObjectPtr.h" @@ -53,7 +53,7 @@ class JavaInstallList : public BaseVersionList { protected: Status m_status = Status::NotDone; - shared_qobject_ptr m_loadTask; + shared_qobject_ptr m_load_task; QList m_vlist; }; @@ -62,14 +62,16 @@ class JavaListLoadTask : public Task { public: explicit JavaListLoadTask(JavaInstallList* vlist); - virtual ~JavaListLoadTask(); + virtual ~JavaListLoadTask() = default; + protected: void executeTask() override; public slots: void javaCheckerFinished(); protected: - shared_qobject_ptr m_job; + Task::Ptr m_job; JavaInstallList* m_list; - JavaInstall* m_currentRecommended; + JavaInstall* m_current_recommended; + QList m_results; }; diff --git a/launcher/java/JavaUtils.h b/launcher/java/JavaUtils.h index 616179706..c052ca325 100644 --- a/launcher/java/JavaUtils.h +++ b/launcher/java/JavaUtils.h @@ -15,10 +15,9 @@ #pragma once +#include #include - -#include "JavaChecker.h" -#include "JavaInstallList.h" +#include "java/JavaInstall.h" #ifdef Q_OS_WIN #include diff --git a/launcher/java/providers/AdoptiumJavaDownloader.cpp b/launcher/java/providers/AdoptiumJavaDownloader.cpp new file mode 100644 index 000000000..4f8499d4a --- /dev/null +++ b/launcher/java/providers/AdoptiumJavaDownloader.cpp @@ -0,0 +1,119 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "java/providers/AdoptiumJavaDownloader.h" +#include +#include +#include "MMCZip.h" + +#include "Application.h" +#include "net/NetJob.h" +#include "tasks/Task.h" + +void AdoptiumJavaDownloader::executeTask() +{ + downloadJava(); +}; + +QString AdoptiumJavaDownloader::getArch() const +{ + if (m_os_arch == "arm64") + return "aarch64"; + if (m_os_arch.isEmpty()) + return "x86"; + return m_os_arch; +} + +void AdoptiumJavaDownloader::downloadJava() +{ + // JRE found ! download the zip + setStatus(tr("Downloading Java from Adoptium")); + + auto javaVersion = m_is_legacy ? QString("8") : QString("17"); + auto azulOS = m_os_name == "osx" ? "mac" : m_os_name; + auto arch = getArch(); + MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("java", "adoptiumJRE.zip"); + + auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); + download->addNetAction(Net::Download::makeCached( + QString("https://api.adoptium.net/v3/binary/latest/%1/ga/%2/%3/jre/hotspot/normal/eclipse").arg(javaVersion, azulOS, arch), entry)); + auto fullPath = entry->getFullPath(); + + connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); + // connect(download.get(), &NetJob::aborted, [path] { APPLICATION->instances()->destroyStagingPath(path); }); + connect(download.get(), &NetJob::progress, this, &AdoptiumJavaDownloader::progress); + connect(download.get(), &NetJob::failed, this, &AdoptiumJavaDownloader::emitFailed); + connect(this, &Task::aborted, download.get(), &NetJob::abort); + connect(download.get(), &NetJob::succeeded, [this, fullPath] { + // This should do all of the extracting and creating folders + extractJava(fullPath); + }); + download->start(); +}; + +void AdoptiumJavaDownloader::extractJava(QString input) +{ + setStatus(tr("Extracting java")); + auto zip = std::make_shared(input); + auto files = zip->getFileNameList(); + if (files.isEmpty()) { + emitFailed("Empty archive"); + return; + } + auto zipTask = makeShared(input, m_final_path, files[0]); + + auto progressStep = std::make_shared(); + connect(zipTask.get(), &Task::finished, this, [this, progressStep] { + progressStep->state = TaskStepState::Succeeded; + stepProgress(*progressStep); + }); + + connect(this, &Task::aborted, zipTask.get(), &Task::abort); + connect(zipTask.get(), &Task::finished, [zipTask, this] { disconnect(this, &Task::aborted, zipTask.get(), &Task::abort); }); + + connect(zipTask.get(), &Task::succeeded, this, &AdoptiumJavaDownloader::emitSucceeded); + connect(zipTask.get(), &Task::aborted, this, &AdoptiumJavaDownloader::emitAborted); + connect(zipTask.get(), &Task::failed, this, [this, progressStep](QString reason) { + progressStep->state = TaskStepState::Failed; + stepProgress(*progressStep); + emitFailed(reason); + }); + connect(zipTask.get(), &Task::stepProgress, this, &AdoptiumJavaDownloader::propagateStepProgress); + + connect(zipTask.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) { + progressStep->update(current, total); + stepProgress(*progressStep); + }); + connect(zipTask.get(), &Task::status, this, [this, progressStep](QString status) { + progressStep->status = status; + stepProgress(*progressStep); + }); + zipTask->start(); +}; + +static const QStringList supportedOs = { + "linux", "windows", "mac", "solaris", "aix", "alpine-linux", +}; + +static const QStringList supportedArch = { + "x64", "x86", "x32", "ppc64", "ppc64le", "s390x", "aarch64", "arm", "sparcv9", "riscv64", +}; + +bool AdoptiumJavaDownloader::isSupported() const +{ + return supportedOs.contains(m_os_name == "osx" ? "mac" : m_os_name) && supportedArch.contains(getArch()); +}; \ No newline at end of file diff --git a/launcher/java/providers/AdoptiumJavaDownloader.h b/launcher/java/providers/AdoptiumJavaDownloader.h new file mode 100644 index 000000000..f0ae6239b --- /dev/null +++ b/launcher/java/providers/AdoptiumJavaDownloader.h @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "java/providers/BasicJavaDownloader.h" + +class AdoptiumJavaDownloader : public BasicJavaDownloader { + Q_OBJECT + public: + void executeTask() override; + + virtual QString name() const override { return "Adoptium"; }; + virtual bool isSupported() const override; + private slots: + void downloadJava(); + void extractJava(QString input); + + private: + QString getArch() const; +}; \ No newline at end of file diff --git a/launcher/java/providers/AzulJavaDownloader.cpp b/launcher/java/providers/AzulJavaDownloader.cpp new file mode 100644 index 000000000..674da592e --- /dev/null +++ b/launcher/java/providers/AzulJavaDownloader.cpp @@ -0,0 +1,159 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "java/providers/AzulJavaDownloader.h" +#include +#include "MMCZip.h" + +#include "Application.h" +#include "Json.h" +#include "net/NetJob.h" +#include "tasks/Task.h" + +void AzulJavaDownloader::executeTask() +{ + downloadJavaList(); +}; + +void AzulJavaDownloader::downloadJavaList() +{ + setStatus(tr("Querying Azul meta")); + + auto javaVersion = m_is_legacy ? QString("8.0") : QString("17.0"); + auto azulOS = m_os_name == "osx" ? "macos" : m_os_name; + auto arch = getArch(); + auto metaResponse = std::make_shared(); + auto downloadJob = makeShared(QString("JRE::QueryAzulMeta"), APPLICATION->network()); + downloadJob->addNetAction(Net::Download::makeByteArray(QString("https://api.azul.com/metadata/v1/zulu/packages/?" + "java_version=%1" + "&os=%2" + "&arch=%3" + "&archive_type=zip" + "&java_package_type=jre" + "&support_term=lts" + "&latest=true" + "status=ga" + "&availability_types=CA" + "&page=1" + "&page_size=1") + .arg(javaVersion, azulOS, arch), + metaResponse)); + connect(downloadJob.get(), &NetJob::finished, + [downloadJob, metaResponse, this] { disconnect(this, &Task::aborted, downloadJob.get(), &NetJob::abort); }); + connect(this, &Task::aborted, downloadJob.get(), &NetJob::abort); + connect(downloadJob.get(), &NetJob::failed, this, &AzulJavaDownloader::emitFailed); + connect(downloadJob.get(), &NetJob::progress, this, &AzulJavaDownloader::progress); + connect(downloadJob.get(), &NetJob::succeeded, [metaResponse, this] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*metaResponse, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); + qWarning() << *metaResponse; + return; + } + auto array = Json::ensureArray(doc.array()); + if (!array.empty()) { + downloadJava(array); + } else { + emitFailed(tr("No suitable JRE found")); + } + }); + downloadJob->start(); +}; + +QString AzulJavaDownloader::getArch() const +{ + if (m_os_arch == "arm64") + return "aarch64"; + if (m_os_arch == "arm") + return "aarch32"; + if (m_os_arch.isEmpty()) + return "x86"; + return m_os_arch; +} + +void AzulJavaDownloader::downloadJava(const QJsonArray& array) +{ + // JRE found ! download the zip + setStatus(tr("Downloading Java from Azul")); + + MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("java", "azulJRE.zip"); + + auto downloadURL = QUrl(array[0].toObject()["url"].toString()); + auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); + download->addNetAction(Net::Download::makeCached(downloadURL, entry)); + auto fullPath = entry->getFullPath(); + + connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); + // connect(download.get(), &NetJob::aborted, [path] { APPLICATION->instances()->destroyStagingPath(path); }); + connect(download.get(), &NetJob::progress, this, &AzulJavaDownloader::progress); + connect(download.get(), &NetJob::failed, this, &AzulJavaDownloader::emitFailed); + connect(this, &Task::aborted, download.get(), &NetJob::abort); + connect(download.get(), &NetJob::succeeded, [downloadURL, this, fullPath] { + // This should do all of the extracting and creating folders + extractJava(fullPath, downloadURL.fileName().chopped(4)); + }); + download->start(); +}; + +void AzulJavaDownloader::extractJava(QString input, QString subdirectory) +{ + setStatus(tr("Extracting java")); + auto zipTask = makeShared(input, m_final_path, subdirectory); + + auto progressStep = std::make_shared(); + connect(zipTask.get(), &Task::finished, this, [this, progressStep] { + progressStep->state = TaskStepState::Succeeded; + stepProgress(*progressStep); + }); + + connect(this, &Task::aborted, zipTask.get(), &Task::abort); + connect(zipTask.get(), &Task::finished, [zipTask, this] { disconnect(this, &Task::aborted, zipTask.get(), &Task::abort); }); + + connect(zipTask.get(), &Task::succeeded, this, &AzulJavaDownloader::emitSucceeded); + connect(zipTask.get(), &Task::aborted, this, &AzulJavaDownloader::emitAborted); + connect(zipTask.get(), &Task::failed, this, [this, progressStep](QString reason) { + progressStep->state = TaskStepState::Failed; + stepProgress(*progressStep); + emitFailed(reason); + }); + connect(zipTask.get(), &Task::stepProgress, this, &AzulJavaDownloader::propagateStepProgress); + + connect(zipTask.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) { + progressStep->update(current, total); + stepProgress(*progressStep); + }); + connect(zipTask.get(), &Task::status, this, [this, progressStep](QString status) { + progressStep->status = status; + stepProgress(*progressStep); + }); + zipTask->start(); +}; + +static const QStringList supportedOs = { + "macos", "linux", "windows", "linux-musl", "linux-glibc", "qnx", "solaris", "aix", +}; + +static const QStringList supportedArch = { + "x86", "x64", "amd64", "i686", "arm", "aarch64", "aarch32", "aarch32sf", "aarch32hf", "ppc", + "ppc64", "ppc32", "ppc32hf", "ppc32spe", "sparc", "sparc64", "sparc32", "sparcv9", "sparcv9-64", "sparcv9-32", +}; + +bool AzulJavaDownloader::isSupported() const +{ + return supportedOs.contains(m_os_name == "osx" ? "macos" : m_os_name) && supportedArch.contains(getArch()); +}; \ No newline at end of file diff --git a/launcher/java/providers/AzulJavaDownloader.h b/launcher/java/providers/AzulJavaDownloader.h new file mode 100644 index 000000000..c4bc8c761 --- /dev/null +++ b/launcher/java/providers/AzulJavaDownloader.h @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "java/providers/BasicJavaDownloader.h" + +class AzulJavaDownloader : public BasicJavaDownloader { + Q_OBJECT + public: + void executeTask() override; + + virtual QString name() const override { return "Azul"; }; + virtual bool isSupported() const override; + private slots: + void downloadJavaList(); + void downloadJava(const QJsonArray& doc); + void extractJava(QString input, QString subdirectory); + + private: + QString getArch() const; +}; \ No newline at end of file diff --git a/launcher/java/providers/BasicJavaDownloader.cpp b/launcher/java/providers/BasicJavaDownloader.cpp new file mode 100644 index 000000000..9f353d9c1 --- /dev/null +++ b/launcher/java/providers/BasicJavaDownloader.cpp @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "java/providers/BasicJavaDownloader.h" + +#include "SysInfo.h" +#include "tasks/Task.h" + +BasicJavaDownloader::BasicJavaDownloader(QString final_path, bool m_is_legacy, QObject* parent) + : Task(parent) + , m_os_name(SysInfo::currentSystem()) + , m_os_arch(SysInfo::useQTForArch()) + , m_final_path(final_path) + , m_is_legacy(m_is_legacy) +{} diff --git a/launcher/java/providers/BasicJavaDownloader.h b/launcher/java/providers/BasicJavaDownloader.h new file mode 100644 index 000000000..34c944ec8 --- /dev/null +++ b/launcher/java/providers/BasicJavaDownloader.h @@ -0,0 +1,41 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "tasks/Task.h" + +class BasicJavaDownloader : public Task { + Q_OBJECT + public: + BasicJavaDownloader(QString final_path, bool m_is_legacy = false, QObject* parent = nullptr); + virtual ~BasicJavaDownloader() = default; + + [[nodiscard]] bool canAbort() const override { return true; } + + virtual QString name() const = 0; + virtual bool isSupported() const = 0; + + protected: + QString m_os_name; + QString m_os_arch; + QString m_final_path; + bool m_is_legacy; + + Task::Ptr m_current_task; +}; \ No newline at end of file diff --git a/launcher/java/providers/MojangJavaDownloader.cpp b/launcher/java/providers/MojangJavaDownloader.cpp new file mode 100644 index 000000000..fc2a17e94 --- /dev/null +++ b/launcher/java/providers/MojangJavaDownloader.cpp @@ -0,0 +1,185 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "java/providers/MojanglJavaDownloader.h" + +#include "Application.h" +#include "FileSystem.h" +#include "Json.h" +#include "net/ChecksumValidator.h" +#include "net/NetJob.h" + +struct File { + QString path; + QString url; + QByteArray hash; + bool isExec; +}; + +void MojangJavaDownloader::executeTask() +{ + downloadJavaList(); +}; + +void MojangJavaDownloader::downloadJavaList() +{ + auto netJob = makeShared(QString("JRE::QueryVersions"), APPLICATION->network()); + auto response = std::make_shared(); + setStatus(tr("Querying mojang meta")); + netJob->addNetAction(Net::Download::makeByteArray( + QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); + + connect(netJob.get(), &NetJob::finished, [netJob, this] { + // delete so that it's not called on a deleted job + // FIXME: is this needed? qt should handle this + disconnect(this, &Task::aborted, netJob.get(), &NetJob::abort); + }); + connect(this, &Task::aborted, netJob.get(), &NetJob::abort); + + connect(netJob.get(), &NetJob::progress, this, &MojangJavaDownloader::progress); + connect(netJob.get(), &NetJob::failed, this, &MojangJavaDownloader::emitFailed); + connect(netJob.get(), &NetJob::succeeded, [response, this, netJob] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); + qWarning() << *response; + emitFailed(parse_error.errorString()); + return; + } + auto versionArray = Json::ensureArray(Json::ensureObject(doc.object(), getOS()), m_is_legacy ? "jre-legacy" : "java-runtime-gamma"); + if (!versionArray.empty()) { + parseManifest(versionArray); + + } else { + // mojang does not have a JRE for us, so fail + emitFailed("No suitable JRE found"); + } + }); + + netJob->start(); +}; + +QString MojangJavaDownloader::getOS() const +{ + if (m_os_name == "windows") { + if (m_os_arch == "x86_64") { + return "windows-x64"; + } + if (m_os_arch == "i386") { + return "windows-x86"; + } + // Unknown, maybe arm, appending arch for downloader + return "windows-" + m_os_arch; + } + if (m_os_name == "osx") { + if (m_os_arch == "arm64") { + return "mac-os-arm64"; + } + return "mac-os"; + } + if (m_os_name == "linux") { + if (m_os_arch == "x86_64") { + return "linux"; + } + // will work for i386, and arm(64) + return "linux-" + m_os_arch; + } + return {}; +} +void MojangJavaDownloader::parseManifest(const QJsonArray& versionArray) +{ + setStatus(tr("Downloading Java from Mojang")); + auto url = Json::ensureString(Json::ensureObject(Json::ensureObject(versionArray[0]), "manifest"), "url"); + auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); + auto files = std::make_shared(); + + download->addNetAction(Net::Download::makeByteArray(QUrl(url), files)); + + connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); + connect(download.get(), &NetJob::progress, this, &MojangJavaDownloader::progress); + connect(download.get(), &NetJob::failed, this, &MojangJavaDownloader::emitFailed); + connect(this, &Task::aborted, download.get(), &NetJob::abort); + + connect(download.get(), &NetJob::succeeded, [files, this] { + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); + qWarning() << *files; + emitFailed(parse_error.errorString()); + return; + } + downloadJava(doc); + }); + download->start(); +}; + +void MojangJavaDownloader::downloadJava(const QJsonDocument& doc) +{ + // valid json doc, begin making jre spot + FS::ensureFolderPathExists(m_final_path); + std::vector toDownload; + auto list = Json::ensureObject(Json::ensureObject(doc.object()), "files"); + for (const auto& paths : list.keys()) { + auto file = FS::PathCombine(m_final_path, paths); + + const QJsonObject& meta = Json::ensureObject(list, paths); + auto type = Json::ensureString(meta, "type"); + if (type == "directory") { + FS::ensureFolderPathExists(file); + } else if (type == "link") { + // this is linux only ! + auto path = Json::ensureString(meta, "target"); + if (!path.isEmpty()) { + auto target = FS::PathCombine(file, "../" + path); + QFile(target).link(file); + } + } else if (type == "file") { + // TODO download compressed version if it exists ? + auto raw = Json::ensureObject(Json::ensureObject(meta, "downloads"), "raw"); + auto isExec = Json::ensureBoolean(meta, "executable", false); + auto url = Json::ensureString(raw, "url"); + if (!url.isEmpty() && QUrl(url).isValid()) { + auto f = File{ file, url, QByteArray::fromHex(Json::ensureString(raw, "sha1").toLatin1()), isExec }; + toDownload.push_back(f); + } + } + } + auto elementDownload = new NetJob("JRE::FileDownload", APPLICATION->network()); + for (const auto& file : toDownload) { + auto dl = Net::Download::makeFile(file.url, file.path); + if (!file.hash.isEmpty()) { + dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, file.hash)); + } + if (file.isExec) { + connect(dl.get(), &Net::Download::succeeded, + [file] { QFile(file.path).setPermissions(QFile(file.path).permissions() | QFileDevice::Permissions(0x1111)); }); + } + elementDownload->addNetAction(dl); + } + connect(elementDownload, &NetJob::finished, [elementDownload, this] { + disconnect(this, &Task::aborted, elementDownload, &NetJob::abort); + elementDownload->deleteLater(); + }); + connect(elementDownload, &NetJob::progress, this, &MojangJavaDownloader::progress); + connect(elementDownload, &NetJob::failed, this, &MojangJavaDownloader::emitFailed); + + connect(this, &Task::aborted, elementDownload, &NetJob::abort); + connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); + elementDownload->start(); +}; diff --git a/launcher/java/providers/MojanglJavaDownloader.h b/launcher/java/providers/MojanglJavaDownloader.h new file mode 100644 index 000000000..a1b5b1765 --- /dev/null +++ b/launcher/java/providers/MojanglJavaDownloader.h @@ -0,0 +1,37 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "java/providers/BasicJavaDownloader.h" + +class MojangJavaDownloader : public BasicJavaDownloader { + Q_OBJECT + public: + void executeTask() override; + + virtual QString name() const override { return "Mojang"; }; + virtual bool isSupported() const override { return !getOS().isEmpty(); }; + private slots: + void downloadJavaList(); + void parseManifest(const QJsonArray& versionArray); + void downloadJava(const QJsonDocument& doc); + + private: + QString getOS() const; +}; \ No newline at end of file diff --git a/launcher/launch/steps/CheckJava.cpp b/launcher/launch/steps/CheckJava.cpp index 81337a88e..c776092fe 100644 --- a/launcher/launch/steps/CheckJava.cpp +++ b/launcher/launch/steps/CheckJava.cpp @@ -37,6 +37,7 @@ #include #include #include +#include #include #include #include "java/JavaUtils.h" @@ -90,11 +91,10 @@ void CheckJava::executeTask() // if timestamps are not the same, or something is missing, check! if (m_javaSignature != storedSignature || storedVersion.size() == 0 || storedArchitecture.size() == 0 || storedRealArchitecture.size() == 0 || storedVendor.size() == 0) { - m_JavaChecker.reset(new JavaChecker); + m_JavaChecker.reset(new JavaChecker(realJavaPath, "", 0, 0, 0, 0, this)); emit logLine(QString("Checking Java version..."), MessageLevel::Launcher); connect(m_JavaChecker.get(), &JavaChecker::checkFinished, this, &CheckJava::checkJavaFinished); - m_JavaChecker->m_path = realJavaPath; - m_JavaChecker->performCheck(); + m_JavaChecker->start(); return; } else { auto verString = instance->settings()->get("JavaVersion").toString(); @@ -106,10 +106,10 @@ void CheckJava::executeTask() emitSucceeded(); } -void CheckJava::checkJavaFinished(JavaCheckResult result) +void CheckJava::checkJavaFinished(JavaChecker::Result result) { switch (result.validity) { - case JavaCheckResult::Validity::Errored: { + case JavaChecker::Result::Validity::Errored: { // Error message displayed if java can't start emit logLine(QString("Could not start java:"), MessageLevel::Error); emit logLines(result.errorLog.split('\n'), MessageLevel::Error); @@ -117,14 +117,14 @@ void CheckJava::checkJavaFinished(JavaCheckResult result) emitFailed(QString("Could not start java!")); return; } - case JavaCheckResult::Validity::ReturnedInvalidData: { + case JavaChecker::Result::Validity::ReturnedInvalidData: { emit logLine(QString("Java checker returned some invalid data we don't understand:"), MessageLevel::Error); emit logLines(result.outLog.split('\n'), MessageLevel::Warning); emit logLine("\nMinecraft might not start properly.", MessageLevel::Launcher); emitSucceeded(); return; } - case JavaCheckResult::Validity::Valid: { + case JavaChecker::Result::Validity::Valid: { auto instance = m_parent->instance(); printJavaInfo(result.javaVersion.toString(), result.mojangPlatform, result.realPlatform, result.javaVendor); instance->settings()->set("JavaVersion", result.javaVersion.toString()); diff --git a/launcher/launch/steps/CheckJava.h b/launcher/launch/steps/CheckJava.h index 4436e2a55..5ba9e4018 100644 --- a/launcher/launch/steps/CheckJava.h +++ b/launcher/launch/steps/CheckJava.h @@ -28,7 +28,7 @@ class CheckJava : public LaunchStep { virtual void executeTask(); virtual bool canAbort() const { return false; } private slots: - void checkJavaFinished(JavaCheckResult result); + void checkJavaFinished(JavaChecker::Result result); private: void printJavaInfo(const QString& version, const QString& architecture, const QString& realArchitecture, const QString& vendor); @@ -37,5 +37,5 @@ class CheckJava : public LaunchStep { private: QString m_javaPath; QString m_javaSignature; - JavaCheckerPtr m_JavaChecker; + JavaChecker::Ptr m_JavaChecker; }; diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 63d7aa57c..be6b195dc 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -14,7 +14,9 @@ #include "FileSystem.h" #include "JavaCommon.h" #include "JavaDownloader.h" +#include "java/JavaChecker.h" #include "java/JavaInstall.h" +#include "java/JavaInstallList.h" #include "java/JavaUtils.h" #include "ui/dialogs/CustomMessageBox.h" @@ -368,30 +370,25 @@ void JavaSettingsWidget::checkJavaPath(const QString& path) return; } setJavaStatus(JavaStatus::Pending); - m_checker.reset(new JavaChecker()); - m_checker->m_path = path; - m_checker->m_minMem = minHeapSize(); - m_checker->m_maxMem = maxHeapSize(); - if (m_permGenSpinBox->isVisible()) { - m_checker->m_permGen = m_permGenSpinBox->value(); - } + m_checker.reset( + new JavaChecker(path, "", minHeapSize(), maxHeapSize(), m_permGenSpinBox->isVisible() ? m_permGenSpinBox->value() : 0, 0, this)); connect(m_checker.get(), &JavaChecker::checkFinished, this, &JavaSettingsWidget::checkFinished); - m_checker->performCheck(); + m_checker->start(); } -void JavaSettingsWidget::checkFinished(JavaCheckResult result) +void JavaSettingsWidget::checkFinished(JavaChecker::Result result) { m_result = result; switch (result.validity) { - case JavaCheckResult::Validity::Valid: { + case JavaChecker::Result::Validity::Valid: { setJavaStatus(JavaStatus::Good); break; } - case JavaCheckResult::Validity::ReturnedInvalidData: { + case JavaChecker::Result::Validity::ReturnedInvalidData: { setJavaStatus(JavaStatus::ReturnedInvalidData); break; } - case JavaCheckResult::Validity::Errored: { + case JavaChecker::Result::Validity::Errored: { setJavaStatus(JavaStatus::DoesNotStart); break; } diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index 0e05bf341..d3cd2c5a7 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -51,7 +51,7 @@ class JavaSettingsWidget : public QWidget { void on_javaBrowseBtn_clicked(); void on_javaStatusBtn_clicked(); void on_javaDownloadBtn_clicked(); - void checkFinished(JavaCheckResult result); + void checkFinished(JavaChecker::Result result); protected: /* methods */ void checkJavaPathOnEdit(const QString& path); @@ -89,5 +89,5 @@ class JavaSettingsWidget : public QWidget { QString queuedCheck; uint64_t m_availableMemory = 0ull; shared_qobject_ptr m_checker; - JavaCheckResult m_result; + JavaChecker::Result m_result; }; From 2c18d0f1a511c23898bb8f82d57c99458712bc30 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 25 Jan 2024 15:41:34 +0000 Subject: [PATCH 030/616] Store current version in packwiz metadata (temporarily using `x-prismlauncher-version-number`) Signed-off-by: TheKodeToad --- launcher/modplatform/packwiz/Packwiz.cpp | 9 ++++++--- launcher/modplatform/packwiz/Packwiz.h | 1 + 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index d8d496af7..f68624c1a 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -91,8 +91,9 @@ auto intEntry(toml::table table, QString entry_name) -> int return node.value_or(0); } -auto V1::createModFormat([[maybe_unused]] const QDir& index_dir, ModPlatform::IndexedPack& mod_pack, ModPlatform::IndexedVersion& mod_version) - -> Mod +auto V1::createModFormat([[maybe_unused]] const QDir& index_dir, + ModPlatform::IndexedPack& mod_pack, + ModPlatform::IndexedVersion& mod_version) -> Mod { Mod mod; @@ -111,6 +112,7 @@ auto V1::createModFormat([[maybe_unused]] const QDir& index_dir, ModPlatform::In mod.hash = mod_version.hash; mod.provider = mod_pack.provider; + mod.version_number = mod_version.version_number; mod.file_id = mod_version.fileId; mod.project_id = mod_pack.addonId; mod.side = stringToSide(mod_pack.side); @@ -199,7 +201,8 @@ void V1::updateModIndex(const QDir& index_dir, Mod& mod) { "hash-format", mod.hash_format.toStdString() }, { "hash", mod.hash.toStdString() }, } }, - { "update", toml::table{ { ProviderCaps.name(mod.provider), update } } } }; + { "update", toml::table{ { ProviderCaps.name(mod.provider), update }, + { "x-prismlauncher-version-number", mod.version_number.toStdString() } } } }; std::stringstream ss; ss << tbl; in_stream << QString::fromStdString(ss.str()); diff --git a/launcher/modplatform/packwiz/Packwiz.h b/launcher/modplatform/packwiz/Packwiz.h index 97c8f4b16..07bb4248d 100644 --- a/launcher/modplatform/packwiz/Packwiz.h +++ b/launcher/modplatform/packwiz/Packwiz.h @@ -52,6 +52,7 @@ class V1 { // [update] ModPlatform::ResourceProvider provider{}; + QString version_number{}; QVariant file_id{}; QVariant project_id{}; From e89703238365cbcca8cce19b923a28bbb2057516 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 25 Jan 2024 22:22:21 +0200 Subject: [PATCH 031/616] Added java metadata Signed-off-by: Trial97 --- launcher/CMakeLists.txt | 3 +++ launcher/java/JavaVersion.cpp | 20 +++++++++++++++++++ launcher/java/JavaVersion.h | 4 ++++ launcher/minecraft/MojangVersionFormat.cpp | 6 ++++++ launcher/minecraft/OneSixVersionFormat.cpp | 14 +++++++++++++ launcher/minecraft/VersionFile.h | 8 ++++++++ .../ui/pages/instance/InstanceSettingsPage.ui | 2 -- 7 files changed, 55 insertions(+), 2 deletions(-) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index e735f2081..2af33178d 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -430,6 +430,9 @@ set(JAVA_SOURCES java/JavaUtils.cpp java/JavaVersion.h java/JavaVersion.cpp + + java/JavaRuntime.h + java/JavaRuntime.cpp ) set(TRANSLATIONS_SOURCES diff --git a/launcher/java/JavaVersion.cpp b/launcher/java/JavaVersion.cpp index b77bf2adf..3de6f5ad6 100644 --- a/launcher/java/JavaVersion.cpp +++ b/launcher/java/JavaVersion.cpp @@ -109,3 +109,23 @@ bool JavaVersion::operator>(const JavaVersion& rhs) { return (!operator<(rhs)) && (!operator==(rhs)); } + +JavaVersion::JavaVersion(int major, int minor, int security, int build, QString name) + : m_major(major), m_minor(minor), m_security(security), m_name(name), m_parseable(true) +{ + if (build != 0) { + m_prerelease = QString::number(build); + m_string = m_prerelease; + } + if (m_security != 0) + m_string = QString::number(m_security) + "." + m_string; + else if (!m_string.isEmpty()) { + m_string = "0." + m_string; + } + if (m_minor != 0) + m_string = QString::number(m_minor) + "." + m_string; + else if (!m_string.isEmpty()) { + m_string = "0." + m_string; + } + m_string = QString::number(m_major) + "." + m_string; +} diff --git a/launcher/java/JavaVersion.h b/launcher/java/JavaVersion.h index 421578ea1..eee992346 100644 --- a/launcher/java/JavaVersion.h +++ b/launcher/java/JavaVersion.h @@ -16,6 +16,7 @@ class JavaVersion { public: JavaVersion() {} JavaVersion(const QString& rhs); + JavaVersion(int major, int minor, int security, int build = 0, QString name = ""); JavaVersion& operator=(const QString& rhs); @@ -32,12 +33,15 @@ class JavaVersion { int major() { return m_major; } int minor() { return m_minor; } int security() { return m_security; } + QString build() { return m_prerelease; } + QString name() { return m_name; } private: QString m_string; int m_major = 0; int m_minor = 0; int m_security = 0; + QString m_name = ""; bool m_parseable = false; QString m_prerelease; }; diff --git a/launcher/minecraft/MojangVersionFormat.cpp b/launcher/minecraft/MojangVersionFormat.cpp index bb782e47f..d17a3a21f 100644 --- a/launcher/minecraft/MojangVersionFormat.cpp +++ b/launcher/minecraft/MojangVersionFormat.cpp @@ -185,6 +185,9 @@ void MojangVersionFormat::readVersionProperties(const QJsonObject& in, VersionFi out->compatibleJavaMajors.append(requireInteger(compatible)); } } + if (in.contains("compatibleJavaName")) { + out->compatibleJavaName = requireString(in.value("compatibleJavaName")); + } if (in.contains("downloads")) { auto downloadsObj = requireObject(in, "downloads"); @@ -259,6 +262,9 @@ void MojangVersionFormat::writeVersionProperties(const VersionFile* in, QJsonObj } out.insert("compatibleJavaMajors", compatibleJavaMajorsOut); } + if (!in->compatibleJavaName.isEmpty()) { + writeString(out, "compatibleJavaName", in->compatibleJavaName); + } } QJsonDocument MojangVersionFormat::versionFileToJson(const VersionFilePtr& patch) diff --git a/launcher/minecraft/OneSixVersionFormat.cpp b/launcher/minecraft/OneSixVersionFormat.cpp index 306c95a6a..5f3b4f2a2 100644 --- a/launcher/minecraft/OneSixVersionFormat.cpp +++ b/launcher/minecraft/OneSixVersionFormat.cpp @@ -36,6 +36,8 @@ #include "OneSixVersionFormat.h" #include #include +#include +#include "java/JavaRuntime.h" #include "minecraft/Agent.h" #include "minecraft/ParseUtils.h" @@ -255,6 +257,18 @@ VersionFilePtr OneSixVersionFormat::versionFileFromJson(const QJsonDocument& doc out->m_volatile = requireBoolean(root, "volatile"); } + if (root.contains("runtimes")) { + auto runtimes = requireObject(root, "runtimes"); + out->runtimes = {}; + for (auto key : runtimes.keys()) { + QList list; + for (auto runtime : ensureArray(runtimes, key)) { + list.append(JavaRuntime::parseJavaMeta(ensureObject(runtime))); + } + out->runtimes[key] = list; + } + } + /* removed features that shouldn't be used */ if (root.contains("tweakers")) { out->addProblem(ProblemSeverity::Error, QObject::tr("Version file contains unsupported element 'tweakers'")); diff --git a/launcher/minecraft/VersionFile.h b/launcher/minecraft/VersionFile.h index 280e35ee3..297c19709 100644 --- a/launcher/minecraft/VersionFile.h +++ b/launcher/minecraft/VersionFile.h @@ -36,6 +36,8 @@ #pragma once #include +#include +#include #include #include #include @@ -45,6 +47,7 @@ #include "Agent.h" #include "Library.h" #include "ProblemProvider.h" +#include "java/JavaRuntime.h" #include "minecraft/Rule.h" class PackProfile; @@ -98,6 +101,9 @@ class VersionFile : public ProblemContainer { /// Mojang: list of compatible java majors QList compatibleJavaMajors; + /// Mojang: the name of recomended java version + QString compatibleJavaName; + /// Mojang: type of the Minecraft version QString type; @@ -149,6 +155,8 @@ class VersionFile : public ProblemContainer { /// is volatile -- may be removed as soon as it is no longer needed by something else bool m_volatile = false; + QHash> runtimes; + public: // Mojang: DEPRECATED list of 'downloads' - client jar, server jar, windows server exe, maybe more. QMap> mojangDownloads; diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui index cb37366cc..7762ca8a7 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.ui +++ b/launcher/ui/pages/instance/InstanceSettingsPage.ui @@ -796,8 +796,6 @@ enableFeralGamemodeCheck enableMangoHud useDiscreteGpuCheck - modLoaderSettingsGroupBox - disableQuiltBeaconCheckBox gameTimeGroupBox serverJoinGroupBox serverJoinAddress From f36be3f0e3a32cb5f5711a727ecd07cf1c28b8dd Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 25 Jan 2024 22:58:12 +0200 Subject: [PATCH 032/616] Cleanup downloaders Signed-off-by: Trial97 --- launcher/CMakeLists.txt | 4 + launcher/java/JavaRuntime.cpp | 56 ++++++ launcher/java/JavaRuntime.h | 30 ++++ .../ArchiveJavaDownloader.cpp} | 53 ++---- .../ArchiveJavaDownloader.h} | 16 +- .../ManifestJavaDownloader.cpp} | 93 ++-------- .../ManifestJavaDownloader.h} | 20 ++- .../java/providers/AdoptiumJavaDownloader.h | 36 ---- .../java/providers/AzulJavaDownloader.cpp | 159 ------------------ launcher/java/providers/AzulJavaDownloader.h | 37 ---- .../java/providers/BasicJavaDownloader.cpp | 29 ---- 11 files changed, 132 insertions(+), 401 deletions(-) create mode 100644 launcher/java/JavaRuntime.cpp create mode 100644 launcher/java/JavaRuntime.h rename launcher/java/{providers/AdoptiumJavaDownloader.cpp => download/ArchiveJavaDownloader.cpp} (63%) rename launcher/java/{providers/BasicJavaDownloader.h => download/ArchiveJavaDownloader.h} (74%) rename launcher/java/{providers/MojangJavaDownloader.cpp => download/ManifestJavaDownloader.cpp} (55%) rename launcher/java/{providers/MojanglJavaDownloader.h => download/ManifestJavaDownloader.h} (70%) delete mode 100644 launcher/java/providers/AdoptiumJavaDownloader.h delete mode 100644 launcher/java/providers/AzulJavaDownloader.cpp delete mode 100644 launcher/java/providers/AzulJavaDownloader.h delete mode 100644 launcher/java/providers/BasicJavaDownloader.cpp diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 2af33178d..ac3f8eb68 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -433,6 +433,10 @@ set(JAVA_SOURCES java/JavaRuntime.h java/JavaRuntime.cpp + java/download/ArchiveJavaDownloader.cpp + java/download/ArchiveJavaDownloader.h + java/download/ManifestJavaDownloader.cpp + java/download/ManifestJavaDownloader.h ) set(TRANSLATIONS_SOURCES diff --git a/launcher/java/JavaRuntime.cpp b/launcher/java/JavaRuntime.cpp new file mode 100644 index 000000000..0de8c839b --- /dev/null +++ b/launcher/java/JavaRuntime.cpp @@ -0,0 +1,56 @@ +#include "java/JavaRuntime.h" + +#include + +#include "Json.h" +#include "java/JavaVersion.h" +#include "minecraft/ParseUtils.h" + +namespace JavaRuntime { + +DownloadType parseDownloadType(QString javaDownload) +{ + if (javaDownload == "manifest") + return DownloadType::Manifest; + // if (javaDownload == "archive") + return DownloadType::Archive; +} +QString downloadTypeToString(DownloadType javaDownload) +{ + switch (javaDownload) { + case DownloadType::Manifest: + return "manifest"; + case DownloadType::Archive: + return "archive"; + } +} +MetaPtr parseJavaMeta(const QJsonObject& in) +{ + auto meta = std::make_shared(); + + meta->name = Json::ensureString(in, "name", ""); + meta->vendor = Json::ensureString(in, "vendor", ""); + meta->url = Json::ensureString(in, "url", ""); + meta->releaseTime = timeFromS3Time(Json::ensureString(in, "releaseTime", "")); + meta->recommended = Json::ensureBoolean(in, "recommended", false); + meta->downloadType = parseDownloadType(Json::ensureString(in, "downloadType", "")); + meta->packageType = Json::ensureString(in, "packageType", ""); + + if (in.contains("checksum")) { + auto obj = Json::requireObject(in, "checksum"); + meta->checksumHash = Json::ensureString(obj, "hash", ""); + meta->checksumType = Json::ensureString(obj, "type", ""); + } + + if (in.contains("version")) { + auto obj = Json::requireObject(in, "checksum"); + auto name = Json::ensureString(obj, "name", ""); + auto major = Json::ensureInteger(obj, "major", 0); + auto minor = Json::ensureInteger(obj, "minor", 0); + auto security = Json::ensureInteger(obj, "security", 0); + auto build = Json::ensureInteger(obj, "build", 0); + meta->version = JavaVersion(major, minor, security, build, name); + } + return meta; +} +} // namespace JavaRuntime diff --git a/launcher/java/JavaRuntime.h b/launcher/java/JavaRuntime.h new file mode 100644 index 000000000..1ea5d2e48 --- /dev/null +++ b/launcher/java/JavaRuntime.h @@ -0,0 +1,30 @@ +#pragma once + +#include +#include + +#include "java/JavaVersion.h" + +namespace JavaRuntime { + +enum class DownloadType { Manifest, Archive }; + +struct Meta { + QString name; + QString vendor; + QString url; + QDateTime releaseTime; + QString checksumType; + QString checksumHash; + bool recommended; + DownloadType downloadType; + QString packageType; + JavaVersion version; +}; +using MetaPtr = std::shared_ptr; + +DownloadType parseDownloadType(QString javaDownload); +QString downloadTypeToString(DownloadType javaDownload); +MetaPtr parseJavaMeta(const QJsonObject& libObj); + +} // namespace JavaRuntime \ No newline at end of file diff --git a/launcher/java/providers/AdoptiumJavaDownloader.cpp b/launcher/java/download/ArchiveJavaDownloader.cpp similarity index 63% rename from launcher/java/providers/AdoptiumJavaDownloader.cpp rename to launcher/java/download/ArchiveJavaDownloader.cpp index 4f8499d4a..844be1dce 100644 --- a/launcher/java/providers/AdoptiumJavaDownloader.cpp +++ b/launcher/java/download/ArchiveJavaDownloader.cpp @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "java/providers/AdoptiumJavaDownloader.h" +#include "java/download/ArchiveJavaDownloader.h" #include #include #include "MMCZip.h" @@ -24,39 +24,21 @@ #include "net/NetJob.h" #include "tasks/Task.h" -void AdoptiumJavaDownloader::executeTask() -{ - downloadJava(); -}; - -QString AdoptiumJavaDownloader::getArch() const -{ - if (m_os_arch == "arm64") - return "aarch64"; - if (m_os_arch.isEmpty()) - return "x86"; - return m_os_arch; -} - -void AdoptiumJavaDownloader::downloadJava() +void ArchiveJavaDownloader::executeTask() { // JRE found ! download the zip - setStatus(tr("Downloading Java from Adoptium")); + setStatus(tr("Downloading Java")); - auto javaVersion = m_is_legacy ? QString("8") : QString("17"); - auto azulOS = m_os_name == "osx" ? "mac" : m_os_name; - auto arch = getArch(); - MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("java", "adoptiumJRE.zip"); + MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("java", m_url.toLocalFile()); auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); - download->addNetAction(Net::Download::makeCached( - QString("https://api.adoptium.net/v3/binary/latest/%1/ga/%2/%3/jre/hotspot/normal/eclipse").arg(javaVersion, azulOS, arch), entry)); + download->addNetAction(Net::Download::makeCached(m_url, entry)); auto fullPath = entry->getFullPath(); connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); // connect(download.get(), &NetJob::aborted, [path] { APPLICATION->instances()->destroyStagingPath(path); }); - connect(download.get(), &NetJob::progress, this, &AdoptiumJavaDownloader::progress); - connect(download.get(), &NetJob::failed, this, &AdoptiumJavaDownloader::emitFailed); + connect(download.get(), &NetJob::progress, this, &ArchiveJavaDownloader::progress); + connect(download.get(), &NetJob::failed, this, &ArchiveJavaDownloader::emitFailed); connect(this, &Task::aborted, download.get(), &NetJob::abort); connect(download.get(), &NetJob::succeeded, [this, fullPath] { // This should do all of the extracting and creating folders @@ -65,7 +47,7 @@ void AdoptiumJavaDownloader::downloadJava() download->start(); }; -void AdoptiumJavaDownloader::extractJava(QString input) +void ArchiveJavaDownloader::extractJava(QString input) { setStatus(tr("Extracting java")); auto zip = std::make_shared(input); @@ -85,14 +67,14 @@ void AdoptiumJavaDownloader::extractJava(QString input) connect(this, &Task::aborted, zipTask.get(), &Task::abort); connect(zipTask.get(), &Task::finished, [zipTask, this] { disconnect(this, &Task::aborted, zipTask.get(), &Task::abort); }); - connect(zipTask.get(), &Task::succeeded, this, &AdoptiumJavaDownloader::emitSucceeded); - connect(zipTask.get(), &Task::aborted, this, &AdoptiumJavaDownloader::emitAborted); + connect(zipTask.get(), &Task::succeeded, this, &ArchiveJavaDownloader::emitSucceeded); + connect(zipTask.get(), &Task::aborted, this, &ArchiveJavaDownloader::emitAborted); connect(zipTask.get(), &Task::failed, this, [this, progressStep](QString reason) { progressStep->state = TaskStepState::Failed; stepProgress(*progressStep); emitFailed(reason); }); - connect(zipTask.get(), &Task::stepProgress, this, &AdoptiumJavaDownloader::propagateStepProgress); + connect(zipTask.get(), &Task::stepProgress, this, &ArchiveJavaDownloader::propagateStepProgress); connect(zipTask.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) { progressStep->update(current, total); @@ -104,16 +86,3 @@ void AdoptiumJavaDownloader::extractJava(QString input) }); zipTask->start(); }; - -static const QStringList supportedOs = { - "linux", "windows", "mac", "solaris", "aix", "alpine-linux", -}; - -static const QStringList supportedArch = { - "x64", "x86", "x32", "ppc64", "ppc64le", "s390x", "aarch64", "arm", "sparcv9", "riscv64", -}; - -bool AdoptiumJavaDownloader::isSupported() const -{ - return supportedOs.contains(m_os_name == "osx" ? "mac" : m_os_name) && supportedArch.contains(getArch()); -}; \ No newline at end of file diff --git a/launcher/java/providers/BasicJavaDownloader.h b/launcher/java/download/ArchiveJavaDownloader.h similarity index 74% rename from launcher/java/providers/BasicJavaDownloader.h rename to launcher/java/download/ArchiveJavaDownloader.h index 34c944ec8..d17657086 100644 --- a/launcher/java/providers/BasicJavaDownloader.h +++ b/launcher/java/download/ArchiveJavaDownloader.h @@ -18,24 +18,24 @@ #pragma once +#include #include "tasks/Task.h" -class BasicJavaDownloader : public Task { +class ArchiveJavaDownloader : public Task { Q_OBJECT public: - BasicJavaDownloader(QString final_path, bool m_is_legacy = false, QObject* parent = nullptr); - virtual ~BasicJavaDownloader() = default; + ArchiveJavaDownloader(QUrl url, QString final_path); + virtual ~ArchiveJavaDownloader() = default; [[nodiscard]] bool canAbort() const override { return true; } + void executeTask() override; - virtual QString name() const = 0; - virtual bool isSupported() const = 0; + private slots: + void extractJava(QString input); protected: - QString m_os_name; - QString m_os_arch; + QUrl m_url; QString m_final_path; - bool m_is_legacy; Task::Ptr m_current_task; }; \ No newline at end of file diff --git a/launcher/java/providers/MojangJavaDownloader.cpp b/launcher/java/download/ManifestJavaDownloader.cpp similarity index 55% rename from launcher/java/providers/MojangJavaDownloader.cpp rename to launcher/java/download/ManifestJavaDownloader.cpp index fc2a17e94..4f7dab94e 100644 --- a/launcher/java/providers/MojangJavaDownloader.cpp +++ b/launcher/java/download/ManifestJavaDownloader.cpp @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "java/providers/MojanglJavaDownloader.h" +#include "java/download/ManifestJavaDownloader.h" #include "Application.h" #include "FileSystem.h" @@ -30,89 +30,18 @@ struct File { bool isExec; }; -void MojangJavaDownloader::executeTask() +ManifestJavaDownloader::ManifestJavaDownloader(QUrl url, QString final_path) : m_url(url), m_final_path(final_path){}; +void ManifestJavaDownloader::executeTask() { - downloadJavaList(); -}; - -void MojangJavaDownloader::downloadJavaList() -{ - auto netJob = makeShared(QString("JRE::QueryVersions"), APPLICATION->network()); - auto response = std::make_shared(); - setStatus(tr("Querying mojang meta")); - netJob->addNetAction(Net::Download::makeByteArray( - QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); - - connect(netJob.get(), &NetJob::finished, [netJob, this] { - // delete so that it's not called on a deleted job - // FIXME: is this needed? qt should handle this - disconnect(this, &Task::aborted, netJob.get(), &NetJob::abort); - }); - connect(this, &Task::aborted, netJob.get(), &NetJob::abort); - - connect(netJob.get(), &NetJob::progress, this, &MojangJavaDownloader::progress); - connect(netJob.get(), &NetJob::failed, this, &MojangJavaDownloader::emitFailed); - connect(netJob.get(), &NetJob::succeeded, [response, this, netJob] { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << *response; - emitFailed(parse_error.errorString()); - return; - } - auto versionArray = Json::ensureArray(Json::ensureObject(doc.object(), getOS()), m_is_legacy ? "jre-legacy" : "java-runtime-gamma"); - if (!versionArray.empty()) { - parseManifest(versionArray); - - } else { - // mojang does not have a JRE for us, so fail - emitFailed("No suitable JRE found"); - } - }); - - netJob->start(); -}; - -QString MojangJavaDownloader::getOS() const -{ - if (m_os_name == "windows") { - if (m_os_arch == "x86_64") { - return "windows-x64"; - } - if (m_os_arch == "i386") { - return "windows-x86"; - } - // Unknown, maybe arm, appending arch for downloader - return "windows-" + m_os_arch; - } - if (m_os_name == "osx") { - if (m_os_arch == "arm64") { - return "mac-os-arm64"; - } - return "mac-os"; - } - if (m_os_name == "linux") { - if (m_os_arch == "x86_64") { - return "linux"; - } - // will work for i386, and arm(64) - return "linux-" + m_os_arch; - } - return {}; -} -void MojangJavaDownloader::parseManifest(const QJsonArray& versionArray) -{ - setStatus(tr("Downloading Java from Mojang")); - auto url = Json::ensureString(Json::ensureObject(Json::ensureObject(versionArray[0]), "manifest"), "url"); + setStatus(tr("Downloading Java")); auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); auto files = std::make_shared(); - download->addNetAction(Net::Download::makeByteArray(QUrl(url), files)); + download->addNetAction(Net::Download::makeByteArray(m_url, files)); connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); - connect(download.get(), &NetJob::progress, this, &MojangJavaDownloader::progress); - connect(download.get(), &NetJob::failed, this, &MojangJavaDownloader::emitFailed); + connect(download.get(), &NetJob::progress, this, &ManifestJavaDownloader::progress); + connect(download.get(), &NetJob::failed, this, &ManifestJavaDownloader::emitFailed); connect(this, &Task::aborted, download.get(), &NetJob::abort); connect(download.get(), &NetJob::succeeded, [files, this] { @@ -129,7 +58,7 @@ void MojangJavaDownloader::parseManifest(const QJsonArray& versionArray) download->start(); }; -void MojangJavaDownloader::downloadJava(const QJsonDocument& doc) +void ManifestJavaDownloader::downloadJava(const QJsonDocument& doc) { // valid json doc, begin making jre spot FS::ensureFolderPathExists(m_final_path); @@ -176,10 +105,10 @@ void MojangJavaDownloader::downloadJava(const QJsonDocument& doc) disconnect(this, &Task::aborted, elementDownload, &NetJob::abort); elementDownload->deleteLater(); }); - connect(elementDownload, &NetJob::progress, this, &MojangJavaDownloader::progress); - connect(elementDownload, &NetJob::failed, this, &MojangJavaDownloader::emitFailed); + connect(elementDownload, &NetJob::progress, this, &ManifestJavaDownloader::progress); + connect(elementDownload, &NetJob::failed, this, &ManifestJavaDownloader::emitFailed); connect(this, &Task::aborted, elementDownload, &NetJob::abort); connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); elementDownload->start(); -}; +}; \ No newline at end of file diff --git a/launcher/java/providers/MojanglJavaDownloader.h b/launcher/java/download/ManifestJavaDownloader.h similarity index 70% rename from launcher/java/providers/MojanglJavaDownloader.h rename to launcher/java/download/ManifestJavaDownloader.h index a1b5b1765..44e9ed9de 100644 --- a/launcher/java/providers/MojanglJavaDownloader.h +++ b/launcher/java/download/ManifestJavaDownloader.h @@ -18,20 +18,24 @@ #pragma once -#include "java/providers/BasicJavaDownloader.h" +#include +#include "tasks/Task.h" -class MojangJavaDownloader : public BasicJavaDownloader { +class ManifestJavaDownloader : public Task { Q_OBJECT public: + ManifestJavaDownloader(QUrl url, QString final_path); + virtual ~ManifestJavaDownloader() = default; + + [[nodiscard]] bool canAbort() const override { return true; } void executeTask() override; - virtual QString name() const override { return "Mojang"; }; - virtual bool isSupported() const override { return !getOS().isEmpty(); }; private slots: - void downloadJavaList(); - void parseManifest(const QJsonArray& versionArray); void downloadJava(const QJsonDocument& doc); - private: - QString getOS() const; + protected: + QUrl m_url; + QString m_final_path; + + Task::Ptr m_current_task; }; \ No newline at end of file diff --git a/launcher/java/providers/AdoptiumJavaDownloader.h b/launcher/java/providers/AdoptiumJavaDownloader.h deleted file mode 100644 index f0ae6239b..000000000 --- a/launcher/java/providers/AdoptiumJavaDownloader.h +++ /dev/null @@ -1,36 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "java/providers/BasicJavaDownloader.h" - -class AdoptiumJavaDownloader : public BasicJavaDownloader { - Q_OBJECT - public: - void executeTask() override; - - virtual QString name() const override { return "Adoptium"; }; - virtual bool isSupported() const override; - private slots: - void downloadJava(); - void extractJava(QString input); - - private: - QString getArch() const; -}; \ No newline at end of file diff --git a/launcher/java/providers/AzulJavaDownloader.cpp b/launcher/java/providers/AzulJavaDownloader.cpp deleted file mode 100644 index 674da592e..000000000 --- a/launcher/java/providers/AzulJavaDownloader.cpp +++ /dev/null @@ -1,159 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "java/providers/AzulJavaDownloader.h" -#include -#include "MMCZip.h" - -#include "Application.h" -#include "Json.h" -#include "net/NetJob.h" -#include "tasks/Task.h" - -void AzulJavaDownloader::executeTask() -{ - downloadJavaList(); -}; - -void AzulJavaDownloader::downloadJavaList() -{ - setStatus(tr("Querying Azul meta")); - - auto javaVersion = m_is_legacy ? QString("8.0") : QString("17.0"); - auto azulOS = m_os_name == "osx" ? "macos" : m_os_name; - auto arch = getArch(); - auto metaResponse = std::make_shared(); - auto downloadJob = makeShared(QString("JRE::QueryAzulMeta"), APPLICATION->network()); - downloadJob->addNetAction(Net::Download::makeByteArray(QString("https://api.azul.com/metadata/v1/zulu/packages/?" - "java_version=%1" - "&os=%2" - "&arch=%3" - "&archive_type=zip" - "&java_package_type=jre" - "&support_term=lts" - "&latest=true" - "status=ga" - "&availability_types=CA" - "&page=1" - "&page_size=1") - .arg(javaVersion, azulOS, arch), - metaResponse)); - connect(downloadJob.get(), &NetJob::finished, - [downloadJob, metaResponse, this] { disconnect(this, &Task::aborted, downloadJob.get(), &NetJob::abort); }); - connect(this, &Task::aborted, downloadJob.get(), &NetJob::abort); - connect(downloadJob.get(), &NetJob::failed, this, &AzulJavaDownloader::emitFailed); - connect(downloadJob.get(), &NetJob::progress, this, &AzulJavaDownloader::progress); - connect(downloadJob.get(), &NetJob::succeeded, [metaResponse, this] { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*metaResponse, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << *metaResponse; - return; - } - auto array = Json::ensureArray(doc.array()); - if (!array.empty()) { - downloadJava(array); - } else { - emitFailed(tr("No suitable JRE found")); - } - }); - downloadJob->start(); -}; - -QString AzulJavaDownloader::getArch() const -{ - if (m_os_arch == "arm64") - return "aarch64"; - if (m_os_arch == "arm") - return "aarch32"; - if (m_os_arch.isEmpty()) - return "x86"; - return m_os_arch; -} - -void AzulJavaDownloader::downloadJava(const QJsonArray& array) -{ - // JRE found ! download the zip - setStatus(tr("Downloading Java from Azul")); - - MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("java", "azulJRE.zip"); - - auto downloadURL = QUrl(array[0].toObject()["url"].toString()); - auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); - download->addNetAction(Net::Download::makeCached(downloadURL, entry)); - auto fullPath = entry->getFullPath(); - - connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); - // connect(download.get(), &NetJob::aborted, [path] { APPLICATION->instances()->destroyStagingPath(path); }); - connect(download.get(), &NetJob::progress, this, &AzulJavaDownloader::progress); - connect(download.get(), &NetJob::failed, this, &AzulJavaDownloader::emitFailed); - connect(this, &Task::aborted, download.get(), &NetJob::abort); - connect(download.get(), &NetJob::succeeded, [downloadURL, this, fullPath] { - // This should do all of the extracting and creating folders - extractJava(fullPath, downloadURL.fileName().chopped(4)); - }); - download->start(); -}; - -void AzulJavaDownloader::extractJava(QString input, QString subdirectory) -{ - setStatus(tr("Extracting java")); - auto zipTask = makeShared(input, m_final_path, subdirectory); - - auto progressStep = std::make_shared(); - connect(zipTask.get(), &Task::finished, this, [this, progressStep] { - progressStep->state = TaskStepState::Succeeded; - stepProgress(*progressStep); - }); - - connect(this, &Task::aborted, zipTask.get(), &Task::abort); - connect(zipTask.get(), &Task::finished, [zipTask, this] { disconnect(this, &Task::aborted, zipTask.get(), &Task::abort); }); - - connect(zipTask.get(), &Task::succeeded, this, &AzulJavaDownloader::emitSucceeded); - connect(zipTask.get(), &Task::aborted, this, &AzulJavaDownloader::emitAborted); - connect(zipTask.get(), &Task::failed, this, [this, progressStep](QString reason) { - progressStep->state = TaskStepState::Failed; - stepProgress(*progressStep); - emitFailed(reason); - }); - connect(zipTask.get(), &Task::stepProgress, this, &AzulJavaDownloader::propagateStepProgress); - - connect(zipTask.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) { - progressStep->update(current, total); - stepProgress(*progressStep); - }); - connect(zipTask.get(), &Task::status, this, [this, progressStep](QString status) { - progressStep->status = status; - stepProgress(*progressStep); - }); - zipTask->start(); -}; - -static const QStringList supportedOs = { - "macos", "linux", "windows", "linux-musl", "linux-glibc", "qnx", "solaris", "aix", -}; - -static const QStringList supportedArch = { - "x86", "x64", "amd64", "i686", "arm", "aarch64", "aarch32", "aarch32sf", "aarch32hf", "ppc", - "ppc64", "ppc32", "ppc32hf", "ppc32spe", "sparc", "sparc64", "sparc32", "sparcv9", "sparcv9-64", "sparcv9-32", -}; - -bool AzulJavaDownloader::isSupported() const -{ - return supportedOs.contains(m_os_name == "osx" ? "macos" : m_os_name) && supportedArch.contains(getArch()); -}; \ No newline at end of file diff --git a/launcher/java/providers/AzulJavaDownloader.h b/launcher/java/providers/AzulJavaDownloader.h deleted file mode 100644 index c4bc8c761..000000000 --- a/launcher/java/providers/AzulJavaDownloader.h +++ /dev/null @@ -1,37 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include "java/providers/BasicJavaDownloader.h" - -class AzulJavaDownloader : public BasicJavaDownloader { - Q_OBJECT - public: - void executeTask() override; - - virtual QString name() const override { return "Azul"; }; - virtual bool isSupported() const override; - private slots: - void downloadJavaList(); - void downloadJava(const QJsonArray& doc); - void extractJava(QString input, QString subdirectory); - - private: - QString getArch() const; -}; \ No newline at end of file diff --git a/launcher/java/providers/BasicJavaDownloader.cpp b/launcher/java/providers/BasicJavaDownloader.cpp deleted file mode 100644 index 9f353d9c1..000000000 --- a/launcher/java/providers/BasicJavaDownloader.cpp +++ /dev/null @@ -1,29 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ -#include "java/providers/BasicJavaDownloader.h" - -#include "SysInfo.h" -#include "tasks/Task.h" - -BasicJavaDownloader::BasicJavaDownloader(QString final_path, bool m_is_legacy, QObject* parent) - : Task(parent) - , m_os_name(SysInfo::currentSystem()) - , m_os_arch(SysInfo::useQTForArch()) - , m_final_path(final_path) - , m_is_legacy(m_is_legacy) -{} From 81282bf7e0189ede29d2db14f85ef2c886d8b583 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 26 Jan 2024 00:22:05 +0200 Subject: [PATCH 033/616] Autodetect Java? Signed-off-by: Trial97 --- launcher/java/JavaRuntime.cpp | 19 +++++++ launcher/java/JavaRuntime.h | 19 +++++++ launcher/java/JavaUtils.cpp | 1 + .../java/download/ArchiveJavaDownloader.cpp | 18 +++++-- .../java/download/ArchiveJavaDownloader.h | 4 +- .../java/download/ManifestJavaDownloader.cpp | 18 +++++-- .../java/download/ManifestJavaDownloader.h | 4 +- .../minecraft/launch/VerifyJavaInstall.cpp | 49 ++++++++++++++----- 8 files changed, 112 insertions(+), 20 deletions(-) diff --git a/launcher/java/JavaRuntime.cpp b/launcher/java/JavaRuntime.cpp index 0de8c839b..78651e991 100644 --- a/launcher/java/JavaRuntime.cpp +++ b/launcher/java/JavaRuntime.cpp @@ -1,3 +1,21 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "java/JavaRuntime.h" #include @@ -23,6 +41,7 @@ QString downloadTypeToString(DownloadType javaDownload) case DownloadType::Archive: return "archive"; } + return ""; } MetaPtr parseJavaMeta(const QJsonObject& in) { diff --git a/launcher/java/JavaRuntime.h b/launcher/java/JavaRuntime.h index 1ea5d2e48..b44b546b6 100644 --- a/launcher/java/JavaRuntime.h +++ b/launcher/java/JavaRuntime.h @@ -1,8 +1,27 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once #include #include +#include + #include "java/JavaVersion.h" namespace JavaRuntime { diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index 074bf54df..67f1fd3a7 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -393,6 +393,7 @@ QList JavaUtils::FindJavaPaths() scanJavaDir(snap + dirPath); } }; + scanJavaDir(FS::PathCombine(APPLICATION->dataRoot(), "java")); // oracle RPMs scanJavaDirs("/usr/java"); // general locations used by distro packaging diff --git a/launcher/java/download/ArchiveJavaDownloader.cpp b/launcher/java/download/ArchiveJavaDownloader.cpp index 844be1dce..32a3c39d2 100644 --- a/launcher/java/download/ArchiveJavaDownloader.cpp +++ b/launcher/java/download/ArchiveJavaDownloader.cpp @@ -21,9 +21,13 @@ #include "MMCZip.h" #include "Application.h" +#include "net/ChecksumValidator.h" #include "net/NetJob.h" #include "tasks/Task.h" +ArchiveJavaDownloader::ArchiveJavaDownloader(QUrl url, QString final_path, QString checksumType, QString checksumHash) + : m_url(url), m_final_path(final_path), m_checksum_type(checksumType), m_checksum_hash(checksumHash){}; + void ArchiveJavaDownloader::executeTask() { // JRE found ! download the zip @@ -32,7 +36,15 @@ void ArchiveJavaDownloader::executeTask() MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("java", m_url.toLocalFile()); auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); - download->addNetAction(Net::Download::makeCached(m_url, entry)); + auto action = Net::Download::makeCached(m_url, entry); + if (!m_checksum_hash.isEmpty() && !m_checksum_type.isEmpty()) { + auto hashType = QCryptographicHash::Algorithm::Sha1; + if (m_checksum_type == "sha256") { + hashType = QCryptographicHash::Algorithm::Sha256; + } + action->addValidator(new Net::ChecksumValidator(hashType, m_checksum_hash.toLatin1())); + } + download->addNetAction(action); auto fullPath = entry->getFullPath(); connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); @@ -45,7 +57,7 @@ void ArchiveJavaDownloader::executeTask() extractJava(fullPath); }); download->start(); -}; +} void ArchiveJavaDownloader::extractJava(QString input) { @@ -85,4 +97,4 @@ void ArchiveJavaDownloader::extractJava(QString input) stepProgress(*progressStep); }); zipTask->start(); -}; +} \ No newline at end of file diff --git a/launcher/java/download/ArchiveJavaDownloader.h b/launcher/java/download/ArchiveJavaDownloader.h index d17657086..230f62b4d 100644 --- a/launcher/java/download/ArchiveJavaDownloader.h +++ b/launcher/java/download/ArchiveJavaDownloader.h @@ -24,7 +24,7 @@ class ArchiveJavaDownloader : public Task { Q_OBJECT public: - ArchiveJavaDownloader(QUrl url, QString final_path); + ArchiveJavaDownloader(QUrl url, QString final_path, QString checksumType = "", QString checksumHash = ""); virtual ~ArchiveJavaDownloader() = default; [[nodiscard]] bool canAbort() const override { return true; } @@ -36,6 +36,8 @@ class ArchiveJavaDownloader : public Task { protected: QUrl m_url; QString m_final_path; + QString m_checksum_type; + QString m_checksum_hash; Task::Ptr m_current_task; }; \ No newline at end of file diff --git a/launcher/java/download/ManifestJavaDownloader.cpp b/launcher/java/download/ManifestJavaDownloader.cpp index 4f7dab94e..08321ca7f 100644 --- a/launcher/java/download/ManifestJavaDownloader.cpp +++ b/launcher/java/download/ManifestJavaDownloader.cpp @@ -30,14 +30,24 @@ struct File { bool isExec; }; -ManifestJavaDownloader::ManifestJavaDownloader(QUrl url, QString final_path) : m_url(url), m_final_path(final_path){}; +ManifestJavaDownloader::ManifestJavaDownloader(QUrl url, QString final_path, QString checksumType, QString checksumHash) + : m_url(url), m_final_path(final_path), m_checksum_type(checksumType), m_checksum_hash(checksumHash){}; + void ManifestJavaDownloader::executeTask() { setStatus(tr("Downloading Java")); auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); auto files = std::make_shared(); - download->addNetAction(Net::Download::makeByteArray(m_url, files)); + auto action = Net::Download::makeByteArray(m_url, files); + if (!m_checksum_hash.isEmpty() && !m_checksum_type.isEmpty()) { + auto hashType = QCryptographicHash::Algorithm::Sha1; + if (m_checksum_type == "sha256") { + hashType = QCryptographicHash::Algorithm::Sha256; + } + action->addValidator(new Net::ChecksumValidator(hashType, m_checksum_hash.toLatin1())); + } + download->addNetAction(action); connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); connect(download.get(), &NetJob::progress, this, &ManifestJavaDownloader::progress); @@ -56,7 +66,7 @@ void ManifestJavaDownloader::executeTask() downloadJava(doc); }); download->start(); -}; +} void ManifestJavaDownloader::downloadJava(const QJsonDocument& doc) { @@ -111,4 +121,4 @@ void ManifestJavaDownloader::downloadJava(const QJsonDocument& doc) connect(this, &Task::aborted, elementDownload, &NetJob::abort); connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); elementDownload->start(); -}; \ No newline at end of file +} \ No newline at end of file diff --git a/launcher/java/download/ManifestJavaDownloader.h b/launcher/java/download/ManifestJavaDownloader.h index 44e9ed9de..d7114f4bd 100644 --- a/launcher/java/download/ManifestJavaDownloader.h +++ b/launcher/java/download/ManifestJavaDownloader.h @@ -24,7 +24,7 @@ class ManifestJavaDownloader : public Task { Q_OBJECT public: - ManifestJavaDownloader(QUrl url, QString final_path); + ManifestJavaDownloader(QUrl url, QString final_path, QString checksumType = "", QString checksumHash = ""); virtual ~ManifestJavaDownloader() = default; [[nodiscard]] bool canAbort() const override { return true; } @@ -36,6 +36,8 @@ class ManifestJavaDownloader : public Task { protected: QUrl m_url; QString m_final_path; + QString m_checksum_type; + QString m_checksum_hash; Task::Ptr m_current_task; }; \ No newline at end of file diff --git a/launcher/minecraft/launch/VerifyJavaInstall.cpp b/launcher/minecraft/launch/VerifyJavaInstall.cpp index cdd1f7fd1..218811290 100644 --- a/launcher/minecraft/launch/VerifyJavaInstall.cpp +++ b/launcher/minecraft/launch/VerifyJavaInstall.cpp @@ -34,7 +34,11 @@ */ #include "VerifyJavaInstall.h" +#include +#include "Application.h" +#include "java/JavaInstall.h" +#include "java/JavaInstallList.h" #include "java/JavaVersion.h" #include "minecraft/MinecraftInstance.h" #include "minecraft/PackProfile.h" @@ -46,6 +50,7 @@ void VerifyJavaInstall::executeTask() auto settings = instance->settings(); auto storedVersion = settings->get("JavaVersion").toString(); auto ignoreCompatibility = settings->get("IgnoreJavaCompatibility").toBool(); + auto automaticJavaSwitch = settings->get("AutomaticJavaSwitch").toBool(); auto compatibleMajors = packProfile->getProfile()->getCompatibleJavaMajors(); @@ -62,16 +67,38 @@ void VerifyJavaInstall::executeTask() return; } - emit logLine(tr("This instance is not compatible with Java version %1.\n" - "Please switch to one of the following Java versions for this instance:") - .arg(javaVersion.major()), - MessageLevel::Error); - for (auto major : compatibleMajors) { - emit logLine(tr("Java version %1").arg(major), MessageLevel::Error); - } - emit logLine(tr("Go to instance Java settings to change your Java version or disable the Java compatibility check if you know what " - "you're doing."), - MessageLevel::Error); + auto logFail = [this, &javaVersion, compatibleMajors] { + emit logLine(tr("This instance is not compatible with Java version %1.\n" + "Please switch to one of the following Java versions for this instance:") + .arg(javaVersion.major()), + MessageLevel::Error); + for (auto major : compatibleMajors) { + emit logLine(tr("Java version %1").arg(major), MessageLevel::Error); + } + emit logLine(tr("Go to instance Java settings to change your Java version or disable the Java compatibility check if you know what " + "you're doing."), + MessageLevel::Error); - emitFailed(QString("Incompatible Java major version")); + emitFailed(QString("Incompatible Java major version")); + }; + + if (automaticJavaSwitch || true) { + settings->set("OverrideJava", true); + auto javas = APPLICATION->javalist().get(); + auto task = javas->getLoadTask(); + connect(task.get(), &Task::finished, this, [this, javas, compatibleMajors, settings, &logFail] { + for (auto i = 0; i < javas->count(); i++) { + auto java = std::dynamic_pointer_cast(javas->at(i)); + if (java && compatibleMajors.contains(java->id.major())) { + settings->set("OverrideJavaLocation", true); + settings->set("JavaPath", java->path); + emitSucceeded(); + return; + } + } + logFail(); + }); + } else { + logFail(); + } } From 4cd236ed807e44666e6775126d27fef237eef168 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 26 Jan 2024 00:31:43 +0200 Subject: [PATCH 034/616] missing header Signed-off-by: Trial97 --- launcher/java/JavaChecker.cpp | 3 ++- launcher/java/JavaRuntime.h | 1 + launcher/java/download/ArchiveJavaDownloader.cpp | 3 ++- launcher/java/download/ManifestJavaDownloader.cpp | 3 ++- 4 files changed, 7 insertions(+), 3 deletions(-) diff --git a/launcher/java/JavaChecker.cpp b/launcher/java/JavaChecker.cpp index 7271c0d09..18f93d256 100644 --- a/launcher/java/JavaChecker.cpp +++ b/launcher/java/JavaChecker.cpp @@ -44,7 +44,8 @@ #include "java/JavaUtils.h" JavaChecker::JavaChecker(QString path, QString args, int minMem, int maxMem, int permGen, int id, QObject* parent) - : Task(parent), m_path(path), m_args(args), m_minMem(minMem), m_maxMem(maxMem), m_permGen(permGen), m_id(id){}; + : Task(parent), m_path(path), m_args(args), m_minMem(minMem), m_maxMem(maxMem), m_permGen(permGen), m_id(id) +{} void JavaChecker::executeTask() { diff --git a/launcher/java/JavaRuntime.h b/launcher/java/JavaRuntime.h index b44b546b6..4c4efa288 100644 --- a/launcher/java/JavaRuntime.h +++ b/launcher/java/JavaRuntime.h @@ -18,6 +18,7 @@ #pragma once #include +#include #include #include diff --git a/launcher/java/download/ArchiveJavaDownloader.cpp b/launcher/java/download/ArchiveJavaDownloader.cpp index 32a3c39d2..5350fc4e6 100644 --- a/launcher/java/download/ArchiveJavaDownloader.cpp +++ b/launcher/java/download/ArchiveJavaDownloader.cpp @@ -26,7 +26,8 @@ #include "tasks/Task.h" ArchiveJavaDownloader::ArchiveJavaDownloader(QUrl url, QString final_path, QString checksumType, QString checksumHash) - : m_url(url), m_final_path(final_path), m_checksum_type(checksumType), m_checksum_hash(checksumHash){}; + : m_url(url), m_final_path(final_path), m_checksum_type(checksumType), m_checksum_hash(checksumHash) +{} void ArchiveJavaDownloader::executeTask() { diff --git a/launcher/java/download/ManifestJavaDownloader.cpp b/launcher/java/download/ManifestJavaDownloader.cpp index 08321ca7f..368d6431c 100644 --- a/launcher/java/download/ManifestJavaDownloader.cpp +++ b/launcher/java/download/ManifestJavaDownloader.cpp @@ -31,7 +31,8 @@ struct File { }; ManifestJavaDownloader::ManifestJavaDownloader(QUrl url, QString final_path, QString checksumType, QString checksumHash) - : m_url(url), m_final_path(final_path), m_checksum_type(checksumType), m_checksum_hash(checksumHash){}; + : m_url(url), m_final_path(final_path), m_checksum_type(checksumType), m_checksum_hash(checksumHash) +{} void ManifestJavaDownloader::executeTask() { From 97ee0a19b5caf1714d033b282b5fca1bc70d6bff Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 26 Jan 2024 02:53:30 +0000 Subject: [PATCH 035/616] Refactor updating mechanisms to work with all resources Summary: - It compiles - I need to go to bed Signed-off-by: TheKodeToad --- launcher/CMakeLists.txt | 4 +- launcher/minecraft/mod/ModFolderModel.cpp | 39 +---- launcher/minecraft/mod/ModFolderModel.h | 3 - launcher/minecraft/mod/Resource.cpp | 2 +- launcher/minecraft/mod/Resource.h | 2 +- .../minecraft/mod/ResourceFolderModel.cpp | 6 +- launcher/minecraft/mod/ResourceFolderModel.h | 89 ++++++---- .../minecraft/mod/ResourcePackFolderModel.cpp | 18 +- .../minecraft/mod/TexturePackFolderModel.cpp | 15 +- launcher/modplatform/CheckUpdateTask.h | 34 ++-- .../modplatform/flame/FlameCheckUpdate.cpp | 63 ++++--- launcher/modplatform/flame/FlameCheckUpdate.h | 6 +- .../modrinth/ModrinthCheckUpdate.cpp | 84 ++++----- .../modrinth/ModrinthCheckUpdate.h | 6 +- launcher/modplatform/packwiz/Packwiz.cpp | 10 +- ...ateDialog.cpp => ResourceUpdateDialog.cpp} | 164 +++++++++--------- ...dUpdateDialog.h => ResourceUpdateDialog.h} | 33 ++-- launcher/ui/pages/instance/ModFolderPage.cpp | 13 +- 18 files changed, 298 insertions(+), 293 deletions(-) rename launcher/ui/dialogs/{ModUpdateDialog.cpp => ResourceUpdateDialog.cpp} (74%) rename launcher/ui/dialogs/{ModUpdateDialog.h => ResourceUpdateDialog.h} (53%) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index b341840df..bc48abdef 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1031,8 +1031,8 @@ SET(LAUNCHER_SOURCES ui/dialogs/BlockedModsDialog.h ui/dialogs/ChooseProviderDialog.h ui/dialogs/ChooseProviderDialog.cpp - ui/dialogs/ModUpdateDialog.cpp - ui/dialogs/ModUpdateDialog.h + ui/dialogs/ResourceUpdateDialog.cpp + ui/dialogs/ResourceUpdateDialog.h ui/dialogs/InstallLoaderDialog.cpp ui/dialogs/InstallLoaderDialog.h diff --git a/launcher/minecraft/mod/ModFolderModel.cpp b/launcher/minecraft/mod/ModFolderModel.cpp index 1ba09c8ec..d5735dcb8 100644 --- a/launcher/minecraft/mod/ModFolderModel.cpp +++ b/launcher/minecraft/mod/ModFolderModel.cpp @@ -89,35 +89,35 @@ QVariant ModFolderModel::data(const QModelIndex& index, int role) const default: break; } - return at(row)->version(); + return at(row).version(); } case DateColumn: return m_resources[row]->dateTimeChanged(); case ProviderColumn: - return at(row)->provider(); + return at(row).provider(); default: return QVariant(); } case Qt::ToolTipRole: if (column == NAME_COLUMN) { - if (at(row)->isSymLinkUnder(instDirPath())) { + if (at(row).isSymLinkUnder(instDirPath())) { return m_resources[row]->internal_id() + tr("\nWarning: This resource is symbolically linked from elsewhere. Editing it will also change the original." "\nCanonical Path: %1") - .arg(at(row)->fileinfo().canonicalFilePath()); + .arg(at(row).fileinfo().canonicalFilePath()); } - if (at(row)->isMoreThanOneHardLink()) { + if (at(row).isMoreThanOneHardLink()) { return m_resources[row]->internal_id() + tr("\nWarning: This resource is hard linked elsewhere. Editing it will also change the original."); } } return m_resources[row]->internal_id(); case Qt::DecorationRole: { - if (column == NAME_COLUMN && (at(row)->isSymLinkUnder(instDirPath()) || at(row)->isMoreThanOneHardLink())) + if (column == NAME_COLUMN && (at(row).isSymLinkUnder(instDirPath()) || at(row).isMoreThanOneHardLink())) return APPLICATION->getThemedIcon("status-yellow"); if (column == ImageColumn) { - return at(row)->icon({ 32, 32 }, Qt::AspectRatioMode::KeepAspectRatioByExpanding); + return at(row).icon({ 32, 32 }, Qt::AspectRatioMode::KeepAspectRatioByExpanding); } return {}; } @@ -129,7 +129,7 @@ QVariant ModFolderModel::data(const QModelIndex& index, int role) const case Qt::CheckStateRole: switch (column) { case ActiveColumn: - return at(row)->enabled() ? Qt::Checked : Qt::Unchecked; + return at(row).enabled() ? Qt::Checked : Qt::Unchecked; default: return QVariant(); } @@ -190,29 +190,6 @@ bool ModFolderModel::isValid() return m_dir.exists() && m_dir.isReadable(); } -auto ModFolderModel::selectedMods(QModelIndexList& indexes) -> QList -{ - QList selected_resources; - for (auto i : indexes) { - if (i.column() != 0) - continue; - - selected_resources.push_back(at(i.row())); - } - return selected_resources; -} - -auto ModFolderModel::allMods() -> QList -{ - QList mods; - - for (auto& res : qAsConst(m_resources)) { - mods.append(static_cast(res.get())); - } - - return mods; -} - void ModFolderModel::onParseSucceeded(int ticket, QString mod_id) { auto iter = m_active_parse_tasks.constFind(ticket); diff --git a/launcher/minecraft/mod/ModFolderModel.h b/launcher/minecraft/mod/ModFolderModel.h index c1db33c0c..cd5e99b11 100644 --- a/launcher/minecraft/mod/ModFolderModel.h +++ b/launcher/minecraft/mod/ModFolderModel.h @@ -76,9 +76,6 @@ class ModFolderModel : public ResourceFolderModel { bool isValid(); - auto selectedMods(QModelIndexList& indexes) -> QList; - auto allMods() -> QList; - RESOURCE_HELPERS(Mod) private slots: diff --git a/launcher/minecraft/mod/Resource.cpp b/launcher/minecraft/mod/Resource.cpp index ac81681cf..30b453812 100644 --- a/launcher/minecraft/mod/Resource.cpp +++ b/launcher/minecraft/mod/Resource.cpp @@ -184,7 +184,7 @@ auto Resource::destroy(const QDir& index_dir, bool preserve_metadata, bool attem return (attempt_trash && FS::trash(m_file_info.filePath())) || FS::deletePath(m_file_info.filePath()); } -auto Resource::destroyMetadata(const QDir& index_dir) -> bool +auto Resource::destroyMetadata(const QDir& index_dir) -> void { if (metadata()) { Metadata::remove(index_dir, metadata()->slug); diff --git a/launcher/minecraft/mod/Resource.h b/launcher/minecraft/mod/Resource.h index 0d77be7c9..772f456f1 100644 --- a/launcher/minecraft/mod/Resource.h +++ b/launcher/minecraft/mod/Resource.h @@ -101,7 +101,7 @@ class Resource : public QObject { // Delete all files of this resource. auto destroy(const QDir& index_dir, bool preserve_metadata = false, bool attempt_trash = true) -> bool; // Delete the metadata only. - auto destroyMetadata(const QDir& index_dir) -> bool; + auto destroyMetadata(const QDir& index_dir) -> void; [[nodiscard]] auto isSymLink() const -> bool { return m_file_info.isSymLink(); } diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index ff5e95983..a7a80db05 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -242,10 +242,10 @@ bool ResourceFolderModel::deleteResources(const QModelIndexList& indexes) return true; } -bool ResourceFolderModel::deleteMetadata(const QModelIndexList& indexes) +void ResourceFolderModel::deleteMetadata(const QModelIndexList& indexes) { if (indexes.isEmpty()) - return true; + return; for (auto i : indexes) { if (i.column() != 0) @@ -256,8 +256,6 @@ bool ResourceFolderModel::deleteMetadata(const QModelIndexList& indexes) } update(); - - return true; } bool ResourceFolderModel::setResourceEnabled(const QModelIndexList& indexes, EnableAction action) diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index 8b5ac68ad..3de3c5476 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -19,6 +19,58 @@ class QSortFilterProxyModel; +/* A macro to define useful functions to handle Resource* -> T* more easily on derived classes */ +#define RESOURCE_HELPERS(T) \ + [[nodiscard]] T& operator[](int index) \ + { \ + return *static_cast(m_resources[index].get()); \ + } \ + [[nodiscard]] T& at(int index) \ + { \ + return *static_cast(m_resources[index].get()); \ + } \ + [[nodiscard]] const T& at(int index) const \ + { \ + return *static_cast(m_resources.at(index).get()); \ + } \ + [[nodiscard]] T& first() \ + { \ + return *static_cast(m_resources.first().get()); \ + } \ + [[nodiscard]] T& last() \ + { \ + return *static_cast(m_resources.last().get()); \ + } \ + [[nodiscard]] T* find(QString id) \ + { \ + auto iter = std::find_if(m_resources.constBegin(), m_resources.constEnd(), \ + [&](Resource::Ptr const& r) { return r->internal_id() == id; }); \ + if (iter == m_resources.constEnd()) \ + return nullptr; \ + return static_cast((*iter).get()); \ + } \ + QList selected##T##s(const QModelIndexList& indexes) \ + { \ + QList result; \ + for (const QModelIndex& index : indexes) { \ + if (index.column() != 0) \ + continue; \ + \ + result.append(&at(index.row())); \ + } \ + return result; \ + } \ + QList all##T##s() \ + { \ + QList result; \ + result.reserve(m_resources.size()); \ + \ + for (const Resource::Ptr& resource : m_resources) \ + result.append(static_cast(resource.get())); \ + \ + return result; \ + } + /** A basic model for external resources. * * This model manages a list of resources. As such, external users of such resources do not own them, @@ -69,7 +121,7 @@ class ResourceFolderModel : public QAbstractListModel { */ virtual bool uninstallResource(QString file_name, bool preserve_metadata = false); virtual bool deleteResources(const QModelIndexList&); - virtual bool deleteMetadata(const QModelIndexList&); + virtual void deleteMetadata(const QModelIndexList&); /** Applies the given 'action' to the resources in 'indexes'. * @@ -85,9 +137,7 @@ class ResourceFolderModel : public QAbstractListModel { [[nodiscard]] qsizetype size() const { return m_resources.size(); } [[nodiscard]] bool empty() const { return size() == 0; } - [[nodiscard]] Resource& at(int index) { return *m_resources.at(index); } - [[nodiscard]] Resource const& at(int index) const { return *m_resources.at(index); } - [[nodiscard]] QList const& all() const { return m_resources; } + RESOURCE_HELPERS(Resource) [[nodiscard]] QDir const& dir() const { return m_dir; } @@ -232,37 +282,6 @@ class ResourceFolderModel : public QAbstractListModel { std::atomic m_next_resolution_ticket = 0; }; -/* A macro to define useful functions to handle Resource* -> T* more easily on derived classes */ -#define RESOURCE_HELPERS(T) \ - [[nodiscard]] T* operator[](int index) \ - { \ - return static_cast(m_resources[index].get()); \ - } \ - [[nodiscard]] T* at(int index) \ - { \ - return static_cast(m_resources[index].get()); \ - } \ - [[nodiscard]] const T* at(int index) const \ - { \ - return static_cast(m_resources.at(index).get()); \ - } \ - [[nodiscard]] T* first() \ - { \ - return static_cast(m_resources.first().get()); \ - } \ - [[nodiscard]] T* last() \ - { \ - return static_cast(m_resources.last().get()); \ - } \ - [[nodiscard]] T* find(QString id) \ - { \ - auto iter = std::find_if(m_resources.constBegin(), m_resources.constEnd(), \ - [&](Resource::Ptr const& r) { return r->internal_id() == id; }); \ - if (iter == m_resources.constEnd()) \ - return nullptr; \ - return static_cast((*iter).get()); \ - } - /* Template definition to avoid some code duplication */ template void ResourceFolderModel::applyUpdates(QSet& current_set, QSet& new_set, QMap& new_resources) diff --git a/launcher/minecraft/mod/ResourcePackFolderModel.cpp b/launcher/minecraft/mod/ResourcePackFolderModel.cpp index 8d0cd5fcd..b777dbafd 100644 --- a/launcher/minecraft/mod/ResourcePackFolderModel.cpp +++ b/launcher/minecraft/mod/ResourcePackFolderModel.cpp @@ -72,12 +72,12 @@ QVariant ResourcePackFolderModel::data(const QModelIndex& index, int role) const case NameColumn: return m_resources[row]->name(); case PackFormatColumn: { - auto resource = at(row); - auto pack_format = resource->packFormat(); + auto& resource = at(row); + auto pack_format = resource.packFormat(); if (pack_format == 0) return tr("Unrecognized"); - auto version_bounds = resource->compatibleVersions(); + auto version_bounds = resource.compatibleVersions(); if (version_bounds.first.toString().isEmpty()) return QString::number(pack_format); @@ -92,10 +92,10 @@ QVariant ResourcePackFolderModel::data(const QModelIndex& index, int role) const return {}; } case Qt::DecorationRole: { - if (column == NameColumn && (at(row)->isSymLinkUnder(instDirPath()) || at(row)->isMoreThanOneHardLink())) + if (column == NameColumn && (at(row).isSymLinkUnder(instDirPath()) || at(row).isMoreThanOneHardLink())) return APPLICATION->getThemedIcon("status-yellow"); if (column == ImageColumn) { - return at(row)->image({ 32, 32 }, Qt::AspectRatioMode::KeepAspectRatioByExpanding); + return at(row).image({ 32, 32 }, Qt::AspectRatioMode::KeepAspectRatioByExpanding); } return {}; } @@ -105,14 +105,14 @@ QVariant ResourcePackFolderModel::data(const QModelIndex& index, int role) const return tr("The resource pack format ID, as well as the Minecraft versions it was designed for."); } if (column == NameColumn) { - if (at(row)->isSymLinkUnder(instDirPath())) { + if (at(row).isSymLinkUnder(instDirPath())) { return m_resources[row]->internal_id() + tr("\nWarning: This resource is symbolically linked from elsewhere. Editing it will also change the original." "\nCanonical Path: %1") - .arg(at(row)->fileinfo().canonicalFilePath()); + .arg(at(row).fileinfo().canonicalFilePath()); ; } - if (at(row)->isMoreThanOneHardLink()) { + if (at(row).isMoreThanOneHardLink()) { return m_resources[row]->internal_id() + tr("\nWarning: This resource is hard linked elsewhere. Editing it will also change the original."); } @@ -127,7 +127,7 @@ QVariant ResourcePackFolderModel::data(const QModelIndex& index, int role) const case Qt::CheckStateRole: switch (column) { case ActiveColumn: - return at(row)->enabled() ? Qt::Checked : Qt::Unchecked; + return at(row).enabled() ? Qt::Checked : Qt::Unchecked; default: return {}; } diff --git a/launcher/minecraft/mod/TexturePackFolderModel.cpp b/launcher/minecraft/mod/TexturePackFolderModel.cpp index b4b06a62a..3795795a2 100644 --- a/launcher/minecraft/mod/TexturePackFolderModel.cpp +++ b/launcher/minecraft/mod/TexturePackFolderModel.cpp @@ -52,11 +52,6 @@ TexturePackFolderModel::TexturePackFolderModel(const QDir& dir, BaseInstance* in m_columnsHideable = { false, true, false, true, true }; } -Task* TexturePackFolderModel::createUpdateTask() -{ - return new BasicFolderLoadTask(m_dir, [](QFileInfo const& entry) { return makeShared(entry); }); -} - Task* TexturePackFolderModel::createParseTask(Resource& resource) { return new LocalTexturePackParseTask(m_next_resolution_ticket, static_cast(resource)); @@ -84,14 +79,14 @@ QVariant TexturePackFolderModel::data(const QModelIndex& index, int role) const } case Qt::ToolTipRole: if (column == NameColumn) { - if (at(row)->isSymLinkUnder(instDirPath())) { + if (at(row).isSymLinkUnder(instDirPath())) { return m_resources[row]->internal_id() + tr("\nWarning: This resource is symbolically linked from elsewhere. Editing it will also change the original." "\nCanonical Path: %1") - .arg(at(row)->fileinfo().canonicalFilePath()); + .arg(at(row).fileinfo().canonicalFilePath()); ; } - if (at(row)->isMoreThanOneHardLink()) { + if (at(row).isMoreThanOneHardLink()) { return m_resources[row]->internal_id() + tr("\nWarning: This resource is hard linked elsewhere. Editing it will also change the original."); } @@ -99,10 +94,10 @@ QVariant TexturePackFolderModel::data(const QModelIndex& index, int role) const return m_resources[row]->internal_id(); case Qt::DecorationRole: { - if (column == NameColumn && (at(row)->isSymLinkUnder(instDirPath()) || at(row)->isMoreThanOneHardLink())) + if (column == NameColumn && (at(row).isSymLinkUnder(instDirPath()) || at(row).isMoreThanOneHardLink())) return APPLICATION->getThemedIcon("status-yellow"); if (column == ImageColumn) { - return at(row)->image({ 32, 32 }, Qt::AspectRatioMode::KeepAspectRatioByExpanding); + return at(row).image({ 32, 32 }, Qt::AspectRatioMode::KeepAspectRatioByExpanding); } return {}; } diff --git a/launcher/modplatform/CheckUpdateTask.h b/launcher/modplatform/CheckUpdateTask.h index 8bd83d988..aaa997c16 100644 --- a/launcher/modplatform/CheckUpdateTask.h +++ b/launcher/modplatform/CheckUpdateTask.h @@ -13,13 +13,13 @@ class CheckUpdateTask : public Task { Q_OBJECT public: - CheckUpdateTask(QList& mods, + CheckUpdateTask(QList& resources, std::list& mcVersions, std::optional loaders, - std::shared_ptr mods_folder) - : Task(nullptr), m_mods(mods), m_game_versions(mcVersions), m_loaders(loaders), m_mods_folder(mods_folder){}; + std::shared_ptr resource_model) + : Task(nullptr), m_resources(resources), m_game_versions(mcVersions), m_loaders(loaders), m_resource_model(resource_model){}; - struct UpdatableMod { + struct Update { QString name; QString old_hash; QString old_version; @@ -30,14 +30,14 @@ class CheckUpdateTask : public Task { shared_qobject_ptr download; public: - UpdatableMod(QString name, - QString old_h, - QString old_v, - QString new_v, - std::optional new_v_type, - QString changelog, - ModPlatform::ResourceProvider p, - shared_qobject_ptr t) + Update(QString name, + QString old_h, + QString old_v, + QString new_v, + std::optional new_v_type, + QString changelog, + ModPlatform::ResourceProvider p, + shared_qobject_ptr t) : name(name) , old_hash(old_h) , old_version(old_v) @@ -49,7 +49,7 @@ class CheckUpdateTask : public Task { {} }; - auto getUpdatable() -> std::vector&& { return std::move(m_updatable); } + auto getUpdates() -> std::vector&& { return std::move(m_updates); } auto getDependencies() -> QList>&& { return std::move(m_deps); } public slots: @@ -59,14 +59,14 @@ class CheckUpdateTask : public Task { void executeTask() override = 0; signals: - void checkFailed(Mod* failed, QString reason, QUrl recover_url = {}); + void checkFailed(Resource* failed, QString reason, QUrl recover_url = {}); protected: - QList& m_mods; + QList& m_resources; std::list& m_game_versions; std::optional m_loaders; - std::shared_ptr m_mods_folder; + std::shared_ptr m_resource_model; - std::vector m_updatable; + std::vector m_updates; QList> m_deps; }; diff --git a/launcher/modplatform/flame/FlameCheckUpdate.cpp b/launcher/modplatform/flame/FlameCheckUpdate.cpp index a6a76adb6..9a3249bc7 100644 --- a/launcher/modplatform/flame/FlameCheckUpdate.cpp +++ b/launcher/modplatform/flame/FlameCheckUpdate.cpp @@ -120,19 +120,19 @@ ModPlatform::IndexedVersion FlameCheckUpdate::getFileInfo(int addonId, int fileI * */ void FlameCheckUpdate::executeTask() { - setStatus(tr("Preparing mods for CurseForge...")); + setStatus(tr("Preparing resources for CurseForge...")); int i = 0; - for (auto* mod : m_mods) { - if (!mod->enabled()) { - emit checkFailed(mod, tr("Disabled mods won't be updated, to prevent mod duplication issues!")); + for (auto* resource : m_resources) { + if (!resource->enabled()) { + emit checkFailed(resource, tr("Disabled resources won't be updated, to prevent resource duplication issues!")); continue; } - setStatus(tr("Getting API response from CurseForge for '%1'...").arg(mod->name())); - setProgress(i++, m_mods.size()); + setStatus(tr("Getting API response from CurseForge for '%1'...").arg(resource->name())); + setProgress(i++, m_resources.size()); - auto latest_ver = api.getLatestVersion({ { mod->metadata()->project_id.toString() }, m_game_versions, m_loaders }); + auto latest_ver = api.getLatestVersion({ { resource->metadata()->project_id.toString() }, m_game_versions, m_loaders }); // Check if we were aborted while getting the latest version if (m_was_aborted) { @@ -140,43 +140,50 @@ void FlameCheckUpdate::executeTask() return; } - setStatus(tr("Parsing the API response from CurseForge for '%1'...").arg(mod->name())); + setStatus(tr("Parsing the API response from CurseForge for '%1'...").arg(resource->name())); if (!latest_ver.addonId.isValid()) { - emit checkFailed(mod, tr("No valid version found for this mod. It's probably unavailable for the current game " - "version / mod loader.")); + QString reason; + if (dynamic_cast(resource) != nullptr) + reason = + tr("No valid version found for this resource. It's probably unavailable for the current game " + "version / mod loader."); + else + reason = tr("No valid version found for this resource. It's probably unavailable for the current game version."); + + emit checkFailed(resource, reason); continue; } - if (latest_ver.downloadUrl.isEmpty() && latest_ver.fileId != mod->metadata()->file_id) { + if (latest_ver.downloadUrl.isEmpty() && latest_ver.fileId != resource->metadata()->file_id) { auto pack = getProjectInfo(latest_ver); auto recover_url = QString("%1/download/%2").arg(pack.websiteUrl, latest_ver.fileId.toString()); - emit checkFailed(mod, tr("Mod has a new update available, but is not downloadable using CurseForge."), recover_url); + emit checkFailed(resource, tr("Resource has a new update available, but is not downloadable using CurseForge."), recover_url); continue; } // Fake pack with the necessary info to pass to the download task :) auto pack = std::make_shared(); - pack->name = mod->name(); - pack->slug = mod->metadata()->slug; - pack->addonId = mod->metadata()->project_id; - pack->websiteUrl = mod->homeurl(); - for (auto& author : mod->authors()) - pack->authors.append({ author }); - pack->description = mod->description(); + pack->name = resource->name(); + pack->slug = resource->metadata()->slug; + pack->addonId = resource->metadata()->project_id; pack->provider = ModPlatform::ResourceProvider::FLAME; - if (!latest_ver.hash.isEmpty() && (mod->metadata()->hash != latest_ver.hash || mod->status() == ResourceStatus::NOT_INSTALLED)) { - auto old_version = mod->version(); - if (old_version.isEmpty() && mod->status() != ResourceStatus::NOT_INSTALLED) { - auto current_ver = getFileInfo(latest_ver.addonId.toInt(), mod->metadata()->file_id.toInt()); - old_version = current_ver.version; + if (!latest_ver.hash.isEmpty() && + (resource->metadata()->hash != latest_ver.hash || resource->status() == ResourceStatus::NOT_INSTALLED)) { + auto download_task = makeShared(pack, latest_ver, m_resource_model); + + QString old_version = resource->metadata()->version_number; + if (old_version.isEmpty()) { + if (resource->status() == ResourceStatus::NOT_INSTALLED) + old_version = tr("Not installed"); + else + old_version = tr("Unknown"); } - auto download_task = makeShared(pack, latest_ver, m_mods_folder); - m_updatable.emplace_back(pack->name, mod->metadata()->hash, old_version, latest_ver.version, latest_ver.version_type, - api.getModFileChangelog(latest_ver.addonId.toInt(), latest_ver.fileId.toInt()), - ModPlatform::ResourceProvider::FLAME, download_task); + m_updates.emplace_back(pack->name, resource->metadata()->hash, old_version, latest_ver.version, latest_ver.version_type, + api.getModFileChangelog(latest_ver.addonId.toInt(), latest_ver.fileId.toInt()), + ModPlatform::ResourceProvider::FLAME, download_task); } m_deps.append(std::make_shared(pack, latest_ver)); } diff --git a/launcher/modplatform/flame/FlameCheckUpdate.h b/launcher/modplatform/flame/FlameCheckUpdate.h index f5bb1653d..9ae944153 100644 --- a/launcher/modplatform/flame/FlameCheckUpdate.h +++ b/launcher/modplatform/flame/FlameCheckUpdate.h @@ -8,11 +8,11 @@ class FlameCheckUpdate : public CheckUpdateTask { Q_OBJECT public: - FlameCheckUpdate(QList& mods, + FlameCheckUpdate(QList& resources, std::list& mcVersions, std::optional loaders, - std::shared_ptr mods_folder) - : CheckUpdateTask(mods, mcVersions, loaders, mods_folder) + std::shared_ptr resource_model) + : CheckUpdateTask(resources, mcVersions, loaders, resource_model) {} public slots: diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index 13696d8a2..f7e9fb8a9 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -29,38 +29,38 @@ bool ModrinthCheckUpdate::abort() * */ void ModrinthCheckUpdate::executeTask() { - setStatus(tr("Preparing mods for Modrinth...")); + setStatus(tr("Preparing resources for Modrinth...")); setProgress(0, 3); - QHash mappings; + QHash mappings; // Create all hashes QStringList hashes; auto best_hash_type = ProviderCaps.hashType(ModPlatform::ResourceProvider::MODRINTH).first(); ConcurrentTask hashing_task(this, "MakeModrinthHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); - for (auto* mod : m_mods) { - if (!mod->enabled()) { - emit checkFailed(mod, tr("Disabled mods won't be updated, to prevent mod duplication issues!")); + for (auto* resource : m_resources) { + if (!resource->enabled()) { + emit checkFailed(resource, tr("Disabled resources won't be updated, to prevent resource duplication issues!")); continue; } - auto hash = mod->metadata()->hash; + auto hash = resource->metadata()->hash; // Sadly the API can only handle one hash type per call, se we // need to generate a new hash if the current one is innadequate // (though it will rarely happen, if at all) - if (mod->metadata()->hash_format != best_hash_type) { - auto hash_task = Hashing::createModrinthHasher(mod->fileinfo().absoluteFilePath()); - connect(hash_task.get(), &Hashing::Hasher::resultsReady, [&hashes, &mappings, mod](QString hash) { + if (resource->metadata()->hash_format != best_hash_type) { + auto hash_task = Hashing::createModrinthHasher(resource->fileinfo().absoluteFilePath()); + connect(hash_task.get(), &Hashing::Hasher::resultsReady, [&hashes, &mappings, resource](QString hash) { hashes.append(hash); - mappings.insert(hash, mod); + mappings.insert(hash, resource); }); connect(hash_task.get(), &Task::failed, [this] { failed("Failed to generate hash"); }); hashing_task.addTask(hash_task); } else { hashes.append(hash); - mappings.insert(hash, mod); + mappings.insert(hash, resource); } } @@ -88,19 +88,26 @@ void ModrinthCheckUpdate::executeTask() setProgress(2, 3); try { - for (auto hash : mappings.keys()) { + for (auto iter = mappings.begin(); iter != mappings.end(); iter++) { + const QString& hash = iter.key(); + Resource* resource = iter.value(); auto project_obj = doc[hash].toObject(); // If the returned project is empty, but we have Modrinth metadata, // it means this specific version is not available if (project_obj.isEmpty()) { - qDebug() << "Mod " << mappings.find(hash).value()->name() << " got an empty response."; + qDebug() << "Resource " << resource->name() << " got an empty response."; qDebug() << "Hash: " << hash; - emit checkFailed( - mappings.find(hash).value(), - tr("No valid version found for this mod. It's probably unavailable for the current game version / mod loader.")); + QString reason; + if (dynamic_cast(resource) != nullptr) + reason = + tr("No valid version found for this resource. It's probably unavailable for the current game " + "version / mod loader."); + else + reason = tr("No valid version found for this resource. It's probably unavailable for the current game version."); + emit checkFailed(resource, reason); continue; } @@ -109,7 +116,8 @@ void ModrinthCheckUpdate::executeTask() QString loader_filter; if (m_loaders.has_value()) { static auto flags = { ModPlatform::ModLoaderType::NeoForge, ModPlatform::ModLoaderType::Forge, - ModPlatform::ModLoaderType::Fabric, ModPlatform::ModLoaderType::Quilt }; + ModPlatform::ModLoaderType::Fabric, ModPlatform::ModLoaderType::Quilt, + ModPlatform::ModLoaderType::LiteLoader }; for (auto flag : flags) { if (m_loaders.value().testFlag(flag)) { loader_filter = ModPlatform::getModLoaderString(flag); @@ -126,46 +134,44 @@ void ModrinthCheckUpdate::executeTask() auto project_ver = Modrinth::loadIndexedPackVersion(project_obj, best_hash_type, loader_filter); if (project_ver.downloadUrl.isEmpty()) { - qCritical() << "Modrinth mod without download url!"; + qCritical() << "Modrinth resource without download url!"; qCritical() << project_ver.fileName; - emit checkFailed(mappings.find(hash).value(), tr("Mod has an empty download URL")); + emit checkFailed(mappings.find(hash).value(), tr("Resource has an empty download URL")); continue; } - auto mod_iter = mappings.find(hash); - if (mod_iter == mappings.end()) { - qCritical() << "Failed to remap mod from Modrinth!"; + auto resource_iter = mappings.find(hash); + if (resource_iter == mappings.end()) { + qCritical() << "Failed to remap resource from Modrinth!"; continue; } - auto mod = *mod_iter; - - auto key = project_ver.hash; // Fake pack with the necessary info to pass to the download task :) auto pack = std::make_shared(); - pack->name = mod->name(); - pack->slug = mod->metadata()->slug; - pack->addonId = mod->metadata()->project_id; - pack->websiteUrl = mod->homeurl(); - for (auto& author : mod->authors()) - pack->authors.append({ author }); - pack->description = mod->description(); + pack->name = resource->name(); + pack->slug = resource->metadata()->slug; + pack->addonId = resource->metadata()->project_id; pack->provider = ModPlatform::ResourceProvider::MODRINTH; - if ((key != hash && project_ver.is_preferred) || (mod->status() == ResourceStatus::NOT_INSTALLED)) { - if (mod->version() == project_ver.version_number) - continue; + if ((project_ver.hash != hash && project_ver.is_preferred) || (resource->status() == ResourceStatus::NOT_INSTALLED)) { + auto download_task = makeShared(pack, project_ver, m_resource_model); - auto download_task = makeShared(pack, project_ver, m_mods_folder); + QString old_version = resource->metadata()->version_number; + if (old_version.isEmpty()) { + if (resource->status() == ResourceStatus::NOT_INSTALLED) + old_version = tr("Not installed"); + else + old_version = tr("Unknown"); + } - m_updatable.emplace_back(pack->name, hash, mod->version(), project_ver.version_number, project_ver.version_type, - project_ver.changelog, ModPlatform::ResourceProvider::MODRINTH, download_task); + m_updates.emplace_back(pack->name, hash, old_version, project_ver.version_number, project_ver.version_type, + project_ver.changelog, ModPlatform::ResourceProvider::MODRINTH, download_task); } m_deps.append(std::make_shared(pack, project_ver)); } } catch (Json::JsonException& e) { - emitFailed(e.cause() + " : " + e.what()); + emitFailed(e.cause() + ": " + e.what()); return; } emitSucceeded(); diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.h b/launcher/modplatform/modrinth/ModrinthCheckUpdate.h index f2f2c7e92..5aa3c8cb6 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.h +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.h @@ -8,11 +8,11 @@ class ModrinthCheckUpdate : public CheckUpdateTask { Q_OBJECT public: - ModrinthCheckUpdate(QList& mods, + ModrinthCheckUpdate(QList& resources, std::list& mcVersions, std::optional loaders, - std::shared_ptr mods_folder) - : CheckUpdateTask(mods, mcVersions, loaders, mods_folder) + std::shared_ptr resource_model) + : CheckUpdateTask(resources, mcVersions, loaders, resource_model) {} public slots: diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index f68624c1a..81c0a1efb 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -297,18 +297,20 @@ auto V1::getIndexForMod(const QDir& index_dir, QString slug) -> Mod { // [update] info using Provider = ModPlatform::ResourceProvider; - auto update_table = table["update"]; - if (!update_table || !update_table.is_table()) { + auto update_table = table["update"].as_table(); + if (!update_table) { qCritical() << QString("No [update] section found on mod metadata!"); return {}; } + mod.version_number = stringEntry(*update_table, "x-prismlauncher-version-number"); + toml::table* mod_provider_table = nullptr; - if ((mod_provider_table = update_table[ProviderCaps.name(Provider::FLAME)].as_table())) { + if ((mod_provider_table = (*update_table)[ProviderCaps.name(Provider::FLAME)].as_table())) { mod.provider = Provider::FLAME; mod.file_id = intEntry(*mod_provider_table, "file-id"); mod.project_id = intEntry(*mod_provider_table, "project-id"); - } else if ((mod_provider_table = update_table[ProviderCaps.name(Provider::MODRINTH)].as_table())) { + } else if ((mod_provider_table = (*update_table)[ProviderCaps.name(Provider::MODRINTH)].as_table())) { mod.provider = Provider::MODRINTH; mod.mod_id() = stringEntry(*mod_provider_table, "mod-id"); mod.version() = stringEntry(*mod_provider_table, "version"); diff --git a/launcher/ui/dialogs/ModUpdateDialog.cpp b/launcher/ui/dialogs/ResourceUpdateDialog.cpp similarity index 74% rename from launcher/ui/dialogs/ModUpdateDialog.cpp rename to launcher/ui/dialogs/ResourceUpdateDialog.cpp index eef690d57..cad5b9f7f 100644 --- a/launcher/ui/dialogs/ModUpdateDialog.cpp +++ b/launcher/ui/dialogs/ResourceUpdateDialog.cpp @@ -1,4 +1,4 @@ -#include "ModUpdateDialog.h" +#include "ResourceUpdateDialog.h" #include "ChooseProviderDialog.h" #include "CustomMessageBox.h" #include "ProgressDialog.h" @@ -36,14 +36,14 @@ static std::optional mcLoaders(BaseInstance* inst) return { static_cast(inst)->getPackProfile()->getSupportedModLoaders() }; } -ModUpdateDialog::ModUpdateDialog(QWidget* parent, - BaseInstance* instance, - const std::shared_ptr mods, - QList& search_for, - bool includeDeps) +ResourceUpdateDialog::ResourceUpdateDialog(QWidget* parent, + BaseInstance* instance, + const std::shared_ptr resource_model, + QList& search_for, + bool includeDeps) : ReviewMessageBox(parent, tr("Confirm mods to update"), "") , m_parent(parent) - , m_mod_model(mods) + , m_resource_model(resource_model) , m_candidates(search_for) , m_second_try_metadata( new ConcurrentTask(nullptr, "Second Metadata Search", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())) @@ -56,7 +56,7 @@ ModUpdateDialog::ModUpdateDialog(QWidget* parent, ui->onlyCheckedLabel->setText(tr("Only mods with a check will be updated!")); } -void ModUpdateDialog::checkCandidates() +void ResourceUpdateDialog::checkCandidates() { // Ensure mods have valid metadata auto went_well = ensureMetadata(); @@ -92,18 +92,20 @@ void ModUpdateDialog::checkCandidates() SequentialTask check_task(m_parent, tr("Checking for updates")); if (!m_modrinth_to_update.empty()) { - m_modrinth_check_task.reset(new ModrinthCheckUpdate(m_modrinth_to_update, versions, loaders, m_mod_model)); - connect(m_modrinth_check_task.get(), &CheckUpdateTask::checkFailed, this, [this](Mod* mod, QString reason, QUrl recover_url) { - m_failed_check_update.append({ mod, reason, recover_url }); - }); + m_modrinth_check_task.reset(new ModrinthCheckUpdate(m_modrinth_to_update, versions, loaders, m_resource_model)); + connect(m_modrinth_check_task.get(), &CheckUpdateTask::checkFailed, this, + [this](Resource* resource, QString reason, QUrl recover_url) { + m_failed_check_update.append({ resource, reason, recover_url }); + }); check_task.addTask(m_modrinth_check_task); } if (!m_flame_to_update.empty()) { - m_flame_check_task.reset(new FlameCheckUpdate(m_flame_to_update, versions, loaders, m_mod_model)); - connect(m_flame_check_task.get(), &CheckUpdateTask::checkFailed, this, [this](Mod* mod, QString reason, QUrl recover_url) { - m_failed_check_update.append({ mod, reason, recover_url }); - }); + m_flame_check_task.reset(new FlameCheckUpdate(m_flame_to_update, versions, loaders, m_resource_model)); + connect(m_flame_check_task.get(), &CheckUpdateTask::checkFailed, this, + [this](Resource* resource, QString reason, QUrl recover_url) { + m_failed_check_update.append({ resource, reason, recover_url }); + }); check_task.addTask(m_flame_check_task); } @@ -134,11 +136,11 @@ void ModUpdateDialog::checkCandidates() // Add found updates for Modrinth if (m_modrinth_check_task) { - auto modrinth_updates = m_modrinth_check_task->getUpdatable(); + auto modrinth_updates = m_modrinth_check_task->getUpdates(); for (auto& updatable : modrinth_updates) { qDebug() << QString("Mod %1 has an update available!").arg(updatable.name); - appendMod(updatable); + appendResource(updatable); m_tasks.insert(updatable.name, updatable.download); } selectedVers.append(m_modrinth_check_task->getDependencies()); @@ -146,11 +148,11 @@ void ModUpdateDialog::checkCandidates() // Add found updated for Flame if (m_flame_check_task) { - auto flame_updates = m_flame_check_task->getUpdatable(); + auto flame_updates = m_flame_check_task->getUpdates(); for (auto& updatable : flame_updates) { qDebug() << QString("Mod %1 has an update available!").arg(updatable.name); - appendMod(updatable); + appendResource(updatable); m_tasks.insert(updatable.name, updatable.download); } selectedVers.append(m_flame_check_task->getDependencies()); @@ -189,49 +191,53 @@ void ModUpdateDialog::checkCandidates() } if (m_include_deps && !APPLICATION->settings()->get("ModDependenciesDisabled").toBool()) { // dependencies - auto depTask = makeShared(this, m_instance, m_mod_model.get(), selectedVers); + auto* mod_model = dynamic_cast(m_resource_model.get()); - connect(depTask.get(), &Task::failed, this, - [&](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); + if (mod_model != nullptr) { + auto depTask = makeShared(this, m_instance, mod_model, selectedVers); - connect(depTask.get(), &Task::succeeded, this, [&]() { - QStringList warnings = depTask->warnings(); - if (warnings.count()) { - CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec(); + connect(depTask.get(), &Task::failed, this, + [&](const QString& reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); + + connect(depTask.get(), &Task::succeeded, this, [&]() { + QStringList warnings = depTask->warnings(); + if (warnings.count()) { + CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec(); + } + }); + + ProgressDialog progress_dialog_deps(m_parent); + progress_dialog_deps.setSkipButton(true, tr("Abort")); + progress_dialog_deps.setWindowTitle(tr("Checking for dependencies...")); + auto dret = progress_dialog_deps.execWithTask(depTask.get()); + + // If the dialog was skipped / some download error happened + if (dret == QDialog::DialogCode::Rejected) { + m_aborted = true; + QMetaObject::invokeMethod(this, "reject", Qt::QueuedConnection); + return; } - }); + static FlameAPI api; - ProgressDialog progress_dialog_deps(m_parent); - progress_dialog_deps.setSkipButton(true, tr("Abort")); - progress_dialog_deps.setWindowTitle(tr("Checking for dependencies...")); - auto dret = progress_dialog_deps.execWithTask(depTask.get()); + auto getRequiredBy = depTask->getRequiredBy(); - // If the dialog was skipped / some download error happened - if (dret == QDialog::DialogCode::Rejected) { - m_aborted = true; - QMetaObject::invokeMethod(this, "reject", Qt::QueuedConnection); - return; - } - static FlameAPI api; + for (const auto& dep : depTask->getDependecies()) { + auto changelog = dep->version.changelog; + if (dep->pack->provider == ModPlatform::ResourceProvider::FLAME) + changelog = api.getModFileChangelog(dep->version.addonId.toInt(), dep->version.fileId.toInt()); + auto download_task = makeShared(dep->pack, dep->version, m_resource_model); + CheckUpdateTask::Update updatable = { + dep->pack->name, dep->version.hash, tr("Not installed"), dep->version.version, dep->version.version_type, + changelog, dep->pack->provider, download_task + }; - auto getRequiredBy = depTask->getRequiredBy(); - - for (auto dep : depTask->getDependecies()) { - auto changelog = dep->version.changelog; - if (dep->pack->provider == ModPlatform::ResourceProvider::FLAME) - changelog = api.getModFileChangelog(dep->version.addonId.toInt(), dep->version.fileId.toInt()); - auto download_task = makeShared(dep->pack, dep->version, m_mod_model); - CheckUpdateTask::UpdatableMod updatable = { - dep->pack->name, dep->version.hash, "", dep->version.version, dep->version.version_type, - changelog, dep->pack->provider, download_task - }; - - appendMod(updatable, getRequiredBy.value(dep->version.addonId.toString())); - m_tasks.insert(updatable.name, updatable.download); + appendResource(updatable, getRequiredBy.value(dep->version.addonId.toString())); + m_tasks.insert(updatable.name, updatable.download); + } } } - // If there's no mod to be updated + // If there's no resource to be updated if (ui->modTreeWidget->topLevelItemCount() == 0) { m_no_updates = true; } else { @@ -253,7 +259,7 @@ void ModUpdateDialog::checkCandidates() } // Part 1: Ensure we have a valid metadata -auto ModUpdateDialog::ensureMetadata() -> bool +auto ResourceUpdateDialog::ensureMetadata() -> bool { auto index_dir = indexDir(); @@ -261,21 +267,21 @@ auto ModUpdateDialog::ensureMetadata() -> bool // A better use of data structures here could remove the need for this QHash QHash should_try_others; - QList modrinth_tmp; - QList flame_tmp; + QList modrinth_tmp; + QList flame_tmp; bool confirm_rest = false; bool try_others_rest = false; bool skip_rest = false; ModPlatform::ResourceProvider provider_rest = ModPlatform::ResourceProvider::MODRINTH; - auto addToTmp = [&](Mod* m, ModPlatform::ResourceProvider p) { + auto addToTmp = [&](Resource* resource, ModPlatform::ResourceProvider p) { switch (p) { case ModPlatform::ResourceProvider::MODRINTH: - modrinth_tmp.push_back(m); + modrinth_tmp.push_back(resource); break; case ModPlatform::ResourceProvider::FLAME: - flame_tmp.push_back(m); + flame_tmp.push_back(resource); break; } }; @@ -300,7 +306,7 @@ auto ModUpdateDialog::ensureMetadata() -> bool } ChooseProviderDialog chooser(this); - chooser.setDescription(tr("The mod '%1' does not have a metadata yet. We need to generate it in order to track relevant " + chooser.setDescription(tr("The resource '%1' does not have a metadata yet. We need to generate it in order to track relevant " "information on how to update this mod. " "To do this, please select a mod provider which we can use to check for updates for this mod.") .arg(candidate->name())); @@ -324,8 +330,8 @@ auto ModUpdateDialog::ensureMetadata() -> bool if (!modrinth_tmp.empty()) { auto modrinth_task = makeShared(modrinth_tmp, index_dir, ModPlatform::ResourceProvider::MODRINTH); - connect(modrinth_task.get(), &EnsureMetadataTask::metadataReady, [this](Mod* candidate) { onMetadataEnsured(candidate); }); - connect(modrinth_task.get(), &EnsureMetadataTask::metadataFailed, [this, &should_try_others](Mod* candidate) { + connect(modrinth_task.get(), &EnsureMetadataTask::metadataReady, [this](Resource* candidate) { onMetadataEnsured(candidate); }); + connect(modrinth_task.get(), &EnsureMetadataTask::metadataFailed, [this, &should_try_others](Resource* candidate) { onMetadataFailed(candidate, should_try_others.find(candidate->internal_id()).value(), ModPlatform::ResourceProvider::MODRINTH); }); connect(modrinth_task.get(), &EnsureMetadataTask::failed, @@ -339,8 +345,8 @@ auto ModUpdateDialog::ensureMetadata() -> bool if (!flame_tmp.empty()) { auto flame_task = makeShared(flame_tmp, index_dir, ModPlatform::ResourceProvider::FLAME); - connect(flame_task.get(), &EnsureMetadataTask::metadataReady, [this](Mod* candidate) { onMetadataEnsured(candidate); }); - connect(flame_task.get(), &EnsureMetadataTask::metadataFailed, [this, &should_try_others](Mod* candidate) { + connect(flame_task.get(), &EnsureMetadataTask::metadataReady, [this](Resource* candidate) { onMetadataEnsured(candidate); }); + connect(flame_task.get(), &EnsureMetadataTask::metadataFailed, [this, &should_try_others](Resource* candidate) { onMetadataFailed(candidate, should_try_others.find(candidate->internal_id()).value(), ModPlatform::ResourceProvider::FLAME); }); connect(flame_task.get(), &EnsureMetadataTask::failed, @@ -362,18 +368,18 @@ auto ModUpdateDialog::ensureMetadata() -> bool return (ret_metadata != QDialog::DialogCode::Rejected); } -void ModUpdateDialog::onMetadataEnsured(Mod* mod) +void ResourceUpdateDialog::onMetadataEnsured(Resource* resource) { // When the mod is a folder, for instance - if (!mod->metadata()) + if (!resource->metadata()) return; - switch (mod->metadata()->provider) { + switch (resource->metadata()->provider) { case ModPlatform::ResourceProvider::MODRINTH: - m_modrinth_to_update.push_back(mod); + m_modrinth_to_update.push_back(resource); break; case ModPlatform::ResourceProvider::FLAME: - m_flame_to_update.push_back(mod); + m_flame_to_update.push_back(resource); break; } } @@ -390,26 +396,26 @@ ModPlatform::ResourceProvider next(ModPlatform::ResourceProvider p) return ModPlatform::ResourceProvider::FLAME; } -void ModUpdateDialog::onMetadataFailed(Mod* mod, bool try_others, ModPlatform::ResourceProvider first_choice) +void ResourceUpdateDialog::onMetadataFailed(Resource* resource, bool try_others, ModPlatform::ResourceProvider first_choice) { if (try_others) { auto index_dir = indexDir(); - auto task = makeShared(mod, index_dir, next(first_choice)); - connect(task.get(), &EnsureMetadataTask::metadataReady, [this](Mod* candidate) { onMetadataEnsured(candidate); }); - connect(task.get(), &EnsureMetadataTask::metadataFailed, [this](Mod* candidate) { onMetadataFailed(candidate, false); }); + auto task = makeShared(resource, index_dir, next(first_choice)); + connect(task.get(), &EnsureMetadataTask::metadataReady, [this](Resource* candidate) { onMetadataEnsured(candidate); }); + connect(task.get(), &EnsureMetadataTask::metadataFailed, [this](Resource* candidate) { onMetadataFailed(candidate, false); }); connect(task.get(), &EnsureMetadataTask::failed, - [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); + [this](const QString& reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); m_second_try_metadata->addTask(task); } else { QString reason{ tr("Couldn't find a valid version on the selected mod provider(s)") }; - m_failed_metadata.append({ mod, reason }); + m_failed_metadata.append({ resource, reason }); } } -void ModUpdateDialog::appendMod(CheckUpdateTask::UpdatableMod const& info, QStringList requiredBy) +void ResourceUpdateDialog::appendResource(CheckUpdateTask::Update const& info, QStringList requiredBy) { auto item_top = new QTreeWidgetItem(ui->modTreeWidget); item_top->setCheckState(0, Qt::CheckState::Checked); @@ -420,7 +426,7 @@ void ModUpdateDialog::appendMod(CheckUpdateTask::UpdatableMod const& info, QStri provider_item->setText(0, tr("Provider: %1").arg(ProviderCaps.readableName(info.provider))); auto old_version_item = new QTreeWidgetItem(item_top); - old_version_item->setText(0, tr("Old version: %1").arg(info.old_version.isEmpty() ? tr("Not installed") : info.old_version)); + old_version_item->setText(0, tr("Old version: %1").arg(info.old_version)); auto new_version_item = new QTreeWidgetItem(item_top); new_version_item->setText(0, tr("New version: %1").arg(info.new_version)); @@ -474,7 +480,7 @@ void ModUpdateDialog::appendMod(CheckUpdateTask::UpdatableMod const& info, QStri ui->modTreeWidget->addTopLevelItem(item_top); } -auto ModUpdateDialog::getTasks() -> const QList +auto ResourceUpdateDialog::getTasks() -> const QList { QList list; diff --git a/launcher/ui/dialogs/ModUpdateDialog.h b/launcher/ui/dialogs/ResourceUpdateDialog.h similarity index 53% rename from launcher/ui/dialogs/ModUpdateDialog.h rename to launcher/ui/dialogs/ResourceUpdateDialog.h index de5ab46a5..31aab8f5d 100644 --- a/launcher/ui/dialogs/ModUpdateDialog.h +++ b/launcher/ui/dialogs/ResourceUpdateDialog.h @@ -13,22 +13,21 @@ class ModrinthCheckUpdate; class FlameCheckUpdate; class ConcurrentTask; -class ModUpdateDialog final : public ReviewMessageBox { +class ResourceUpdateDialog final : public ReviewMessageBox { Q_OBJECT public: - explicit ModUpdateDialog(QWidget* parent, BaseInstance* instance, std::shared_ptr mod_model, QList& search_for); - explicit ModUpdateDialog(QWidget* parent, - BaseInstance* instance, - std::shared_ptr mod_model, - QList& search_for, - bool includeDeps); + explicit ResourceUpdateDialog(QWidget* parent, + BaseInstance* instance, + std::shared_ptr resource_model, + QList& search_for, + bool includeDeps); void checkCandidates(); - void appendMod(const CheckUpdateTask::UpdatableMod& info, QStringList requiredBy = {}); + void appendResource(const CheckUpdateTask::Update& info, QStringList requiredBy = {}); const QList getTasks(); - auto indexDir() const -> QDir { return m_mod_model->indexDir(); } + auto indexDir() const -> QDir { return m_resource_model->indexDir(); } auto noUpdates() const -> bool { return m_no_updates; }; auto aborted() const -> bool { return m_aborted; }; @@ -37,8 +36,8 @@ class ModUpdateDialog final : public ReviewMessageBox { auto ensureMetadata() -> bool; private slots: - void onMetadataEnsured(Mod*); - void onMetadataFailed(Mod*, + void onMetadataEnsured(Resource* resource); + void onMetadataFailed(Resource* resource, bool try_others = false, ModPlatform::ResourceProvider first_choice = ModPlatform::ResourceProvider::MODRINTH); @@ -48,15 +47,15 @@ class ModUpdateDialog final : public ReviewMessageBox { shared_qobject_ptr m_modrinth_check_task; shared_qobject_ptr m_flame_check_task; - const std::shared_ptr m_mod_model; + const std::shared_ptr m_resource_model; - QList& m_candidates; - QList m_modrinth_to_update; - QList m_flame_to_update; + QList& m_candidates; + QList m_modrinth_to_update; + QList m_flame_to_update; ConcurrentTask::Ptr m_second_try_metadata; - QList> m_failed_metadata; - QList> m_failed_check_update; + QList> m_failed_metadata; + QList> m_failed_check_update; QHash m_tasks; BaseInstance* m_instance; diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index 0cc60205d..e513cb1fa 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -51,8 +51,8 @@ #include "ui/GuiUtil.h" #include "ui/dialogs/CustomMessageBox.h" -#include "ui/dialogs/ModUpdateDialog.h" #include "ui/dialogs/ResourceDownloadDialog.h" +#include "ui/dialogs/ResourceUpdateDialog.h" #include "DesktopServices.h" @@ -161,9 +161,8 @@ bool ModFolderPage::onSelectionChanged(const QModelIndex& current, [[maybe_unuse { auto sourceCurrent = m_filterModel->mapToSource(current); int row = sourceCurrent.row(); - Mod const* m = m_model->at(row); - if (m) - ui->frame->updateWithMod(*m); + const Mod& mod = m_model->at(row); + ui->frame->updateWithMod(mod); return true; } @@ -253,12 +252,12 @@ void ModFolderPage::updateMods(bool includeDeps) } auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); - auto mods_list = m_model->selectedMods(selection); + auto mods_list = m_model->selectedResources(selection); bool use_all = mods_list.empty(); if (use_all) - mods_list = m_model->allMods(); + mods_list = m_model->allResources(); - ModUpdateDialog update_dialog(this, m_instance, m_model, mods_list, includeDeps); + ResourceUpdateDialog update_dialog(this, m_instance, m_model, mods_list, includeDeps); update_dialog.checkCandidates(); if (update_dialog.aborted()) { From 82d0f204e2293e8969cc6604c1dff0d601a47b4d Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 26 Jan 2024 03:01:02 +0000 Subject: [PATCH 036/616] De-OOP ProviderCapabilities There was no reason for it to be a class, and imo it created quite a code-smell needing to initialise it everywhere. Signed-off-by: TheKodeToad --- launcher/minecraft/mod/Resource.cpp | 4 +--- launcher/modplatform/EnsureMetadataTask.cpp | 8 +++----- launcher/modplatform/ModIndex.h | 3 +-- launcher/modplatform/flame/FlameModIndex.cpp | 3 +-- launcher/modplatform/helpers/HashUtils.cpp | 14 ++++++-------- .../modplatform/modrinth/ModrinthCheckUpdate.cpp | 3 +-- .../modplatform/modrinth/ModrinthPackIndex.cpp | 3 +-- launcher/modplatform/packwiz/Packwiz.cpp | 8 +++----- launcher/ui/dialogs/ChooseProviderDialog.cpp | 4 +--- launcher/ui/dialogs/ResourceDownloadDialog.cpp | 4 +--- launcher/ui/dialogs/ResourceUpdateDialog.cpp | 4 +--- 11 files changed, 20 insertions(+), 38 deletions(-) diff --git a/launcher/minecraft/mod/Resource.cpp b/launcher/minecraft/mod/Resource.cpp index 30b453812..7c1fb9108 100644 --- a/launcher/minecraft/mod/Resource.cpp +++ b/launcher/minecraft/mod/Resource.cpp @@ -5,8 +5,6 @@ #include "FileSystem.h" -static ModPlatform::ProviderCapabilities ProviderCaps; - Resource::Resource(QObject* parent) : QObject(parent) {} Resource::Resource(QFileInfo file_info) : QObject() @@ -74,7 +72,7 @@ static void removeThePrefix(QString& string) auto Resource::provider() const -> QString { if (metadata()) - return ProviderCaps.readableName(metadata()->provider); + return ModPlatform::ProviderCapabilities::readableName(metadata()->provider); return tr("Unknown"); } diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index b71bb1e0e..277cd0764 100644 --- a/launcher/modplatform/EnsureMetadataTask.cpp +++ b/launcher/modplatform/EnsureMetadataTask.cpp @@ -15,8 +15,6 @@ #include "modplatform/modrinth/ModrinthAPI.h" #include "modplatform/modrinth/ModrinthPackIndex.h" -static ModPlatform::ProviderCapabilities ProviderCaps; - static ModrinthAPI modrinth_api; static FlameAPI flame_api; @@ -162,10 +160,10 @@ void EnsureMetadataTask::executeTask() }); if (m_resources.size() > 1) - setStatus(tr("Requesting metadata information from %1...").arg(ProviderCaps.readableName(m_provider))); + setStatus(tr("Requesting metadata information from %1...").arg(ModPlatform::ProviderCapabilities::readableName(m_provider))); else if (!m_resources.empty()) setStatus(tr("Requesting metadata information from %1 for '%2'...") - .arg(ProviderCaps.readableName(m_provider), m_resources.begin().value()->name())); + .arg(ModPlatform::ProviderCapabilities::readableName(m_provider), m_resources.begin().value()->name())); m_current_task = version_task; version_task->start(); @@ -215,7 +213,7 @@ void EnsureMetadataTask::emitFail(Resource* resource, QString key, RemoveFromLis Task::Ptr EnsureMetadataTask::modrinthVersionsTask() { - auto hash_type = ProviderCaps.hashType(ModPlatform::ResourceProvider::MODRINTH).first(); + auto hash_type = ModPlatform::ProviderCapabilities::hashType(ModPlatform::ResourceProvider::MODRINTH).first(); auto response = std::make_shared(); auto ver_task = modrinth_api.currentVersions(m_resources.keys(), hash_type, response); diff --git a/launcher/modplatform/ModIndex.h b/launcher/modplatform/ModIndex.h index eff7e7f9f..aeae87235 100644 --- a/launcher/modplatform/ModIndex.h +++ b/launcher/modplatform/ModIndex.h @@ -40,8 +40,7 @@ enum class ResourceType { MOD, RESOURCE_PACK, SHADER_PACK }; enum class DependencyType { REQUIRED, OPTIONAL, INCOMPATIBLE, EMBEDDED, TOOL, INCLUDE, UNKNOWN }; -class ProviderCapabilities { - public: +namespace ProviderCapabilities { auto name(ResourceProvider) -> const char*; auto readableName(ResourceProvider) -> QString; auto hashType(ResourceProvider) -> QStringList; diff --git a/launcher/modplatform/flame/FlameModIndex.cpp b/launcher/modplatform/flame/FlameModIndex.cpp index 345883c17..16cbbade4 100644 --- a/launcher/modplatform/flame/FlameModIndex.cpp +++ b/launcher/modplatform/flame/FlameModIndex.cpp @@ -6,7 +6,6 @@ #include "modplatform/flame/FlameAPI.h" static FlameAPI api; -static ModPlatform::ProviderCapabilities ProviderCaps; void FlameMod::loadIndexedPack(ModPlatform::IndexedPack& pack, QJsonObject& obj) { @@ -158,7 +157,7 @@ auto FlameMod::loadIndexedPackVersion(QJsonObject& obj, bool load_changelog) -> auto hash_list = Json::ensureArray(obj, "hashes"); for (auto h : hash_list) { auto hash_entry = Json::ensureObject(h); - auto hash_types = ProviderCaps.hashType(ModPlatform::ResourceProvider::FLAME); + auto hash_types = ModPlatform::ProviderCapabilities::hashType(ModPlatform::ResourceProvider::FLAME); auto hash_algo = enumToString(Json::ensureInteger(hash_entry, "algo", 1, "algorithm")); if (hash_types.contains(hash_algo)) { file.hash = Json::requireString(hash_entry, "value"); diff --git a/launcher/modplatform/helpers/HashUtils.cpp b/launcher/modplatform/helpers/HashUtils.cpp index 6ff1d1710..19e5b447a 100644 --- a/launcher/modplatform/helpers/HashUtils.cpp +++ b/launcher/modplatform/helpers/HashUtils.cpp @@ -10,8 +10,6 @@ namespace Hashing { -static ModPlatform::ProviderCapabilities ProviderCaps; - Hasher::Ptr createHasher(QString file_path, ModPlatform::ResourceProvider provider) { switch (provider) { @@ -62,8 +60,8 @@ void ModrinthHasher::executeTask() return; } - auto hash_type = ProviderCaps.hashType(ModPlatform::ResourceProvider::MODRINTH).first(); - m_hash = ProviderCaps.hash(ModPlatform::ResourceProvider::MODRINTH, &file, hash_type); + auto hash_type = ModPlatform::ProviderCapabilities::hashType(ModPlatform::ResourceProvider::MODRINTH).first(); + m_hash = ModPlatform::ProviderCapabilities::hash(ModPlatform::ResourceProvider::MODRINTH, &file, hash_type); file.close(); @@ -96,7 +94,7 @@ void FlameHasher::executeTask() BlockedModHasher::BlockedModHasher(QString file_path, ModPlatform::ResourceProvider provider) : Hasher(file_path), provider(provider) { setObjectName(QString("BlockedModHasher: %1").arg(file_path)); - hash_type = ProviderCaps.hashType(provider).first(); + hash_type = ModPlatform::ProviderCapabilities::hashType(provider).first(); } void BlockedModHasher::executeTask() @@ -113,7 +111,7 @@ void BlockedModHasher::executeTask() return; } - m_hash = ProviderCaps.hash(provider, &file, hash_type); + m_hash = ModPlatform::ProviderCapabilities::hash(provider, &file, hash_type); file.close(); @@ -127,12 +125,12 @@ void BlockedModHasher::executeTask() QStringList BlockedModHasher::getHashTypes() { - return ProviderCaps.hashType(provider); + return ModPlatform::ProviderCapabilities::hashType(provider); } bool BlockedModHasher::useHashType(QString type) { - auto types = ProviderCaps.hashType(provider); + auto types = ModPlatform::ProviderCapabilities::hashType(provider); if (types.contains(type)) { hash_type = type; return true; diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index f7e9fb8a9..881f5499c 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -13,7 +13,6 @@ #include "minecraft/mod/ModFolderModel.h" static ModrinthAPI api; -static ModPlatform::ProviderCapabilities ProviderCaps; bool ModrinthCheckUpdate::abort() { @@ -36,7 +35,7 @@ void ModrinthCheckUpdate::executeTask() // Create all hashes QStringList hashes; - auto best_hash_type = ProviderCaps.hashType(ModPlatform::ResourceProvider::MODRINTH).first(); + auto best_hash_type = ModPlatform::ProviderCapabilities::hashType(ModPlatform::ResourceProvider::MODRINTH).first(); ConcurrentTask hashing_task(this, "MakeModrinthHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); for (auto* resource : m_resources) { diff --git a/launcher/modplatform/modrinth/ModrinthPackIndex.cpp b/launcher/modplatform/modrinth/ModrinthPackIndex.cpp index c1c30ab5f..7a74619e5 100644 --- a/launcher/modplatform/modrinth/ModrinthPackIndex.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackIndex.cpp @@ -25,7 +25,6 @@ #include "modplatform/ModIndex.h" static ModrinthAPI api; -static ModPlatform::ProviderCapabilities ProviderCaps; bool shouldDownloadOnSide(QString side) { @@ -233,7 +232,7 @@ auto Modrinth::loadIndexedPackVersion(QJsonObject& obj, QString preferred_hash_t file.hash = Json::requireString(hash_list, preferred_hash_type); file.hash_type = preferred_hash_type; } else { - auto hash_types = ProviderCaps.hashType(ModPlatform::ResourceProvider::MODRINTH); + auto hash_types = ModPlatform::ProviderCapabilities::hashType(ModPlatform::ResourceProvider::MODRINTH); for (auto& hash_type : hash_types) { if (hash_list.contains(hash_type)) { file.hash = Json::requireString(hash_list, hash_type); diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index 81c0a1efb..c609e78fc 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -66,8 +66,6 @@ static inline auto indexFileName(QString const& mod_slug) -> QString return QString("%1.pw.toml").arg(mod_slug); } -static ModPlatform::ProviderCapabilities ProviderCaps; - // Helper functions for extracting data from the TOML file auto stringEntry(toml::table table, QString entry_name) -> QString { @@ -201,7 +199,7 @@ void V1::updateModIndex(const QDir& index_dir, Mod& mod) { "hash-format", mod.hash_format.toStdString() }, { "hash", mod.hash.toStdString() }, } }, - { "update", toml::table{ { ProviderCaps.name(mod.provider), update }, + { "update", toml::table{ { ModPlatform::ProviderCapabilities::name(mod.provider), update }, { "x-prismlauncher-version-number", mod.version_number.toStdString() } } } }; std::stringstream ss; ss << tbl; @@ -306,11 +304,11 @@ auto V1::getIndexForMod(const QDir& index_dir, QString slug) -> Mod mod.version_number = stringEntry(*update_table, "x-prismlauncher-version-number"); toml::table* mod_provider_table = nullptr; - if ((mod_provider_table = (*update_table)[ProviderCaps.name(Provider::FLAME)].as_table())) { + if ((mod_provider_table = (*update_table)[ModPlatform::ProviderCapabilities::name(Provider::FLAME)].as_table())) { mod.provider = Provider::FLAME; mod.file_id = intEntry(*mod_provider_table, "file-id"); mod.project_id = intEntry(*mod_provider_table, "project-id"); - } else if ((mod_provider_table = (*update_table)[ProviderCaps.name(Provider::MODRINTH)].as_table())) { + } else if ((mod_provider_table = (*update_table)[ModPlatform::ProviderCapabilities::name(Provider::MODRINTH)].as_table())) { mod.provider = Provider::MODRINTH; mod.mod_id() = stringEntry(*mod_provider_table, "mod-id"); mod.version() = stringEntry(*mod_provider_table, "version"); diff --git a/launcher/ui/dialogs/ChooseProviderDialog.cpp b/launcher/ui/dialogs/ChooseProviderDialog.cpp index 83748e1e2..68457802d 100644 --- a/launcher/ui/dialogs/ChooseProviderDialog.cpp +++ b/launcher/ui/dialogs/ChooseProviderDialog.cpp @@ -6,8 +6,6 @@ #include "modplatform/ModIndex.h" -static ModPlatform::ProviderCapabilities ProviderCaps; - ChooseProviderDialog::ChooseProviderDialog(QWidget* parent, bool single_choice, bool allow_skipping) : QDialog(parent), ui(new Ui::ChooseProviderDialog) { @@ -78,7 +76,7 @@ void ChooseProviderDialog::addProviders() QRadioButton* btn; for (auto& provider : { ModPlatform::ResourceProvider::MODRINTH, ModPlatform::ResourceProvider::FLAME }) { - btn = new QRadioButton(ProviderCaps.readableName(provider), this); + btn = new QRadioButton(ModPlatform::ProviderCapabilities::readableName(provider), this); m_providers.addButton(btn, btn_index++); ui->providersLayout->addWidget(btn); } diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp index 1431ea92c..3f2be760a 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp +++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp @@ -125,8 +125,6 @@ void ResourceDownloadDialog::connectButtons() connect(HelpButton, &QPushButton::clicked, m_container, &PageContainer::help); } -static ModPlatform::ProviderCapabilities ProviderCaps; - void ResourceDownloadDialog::confirm() { auto confirm_dialog = ReviewMessageBox::create(this, tr("Confirm %1 to download").arg(resourcesString())); @@ -167,7 +165,7 @@ void ResourceDownloadDialog::confirm() }); for (auto& task : selected) { confirm_dialog->appendResource({ task->getName(), task->getFilename(), task->getCustomPath(), - ProviderCaps.name(task->getProvider()), getRequiredBy.value(task->getPack()->addonId.toString()), + ModPlatform::ProviderCapabilities::name(task->getProvider()), getRequiredBy.value(task->getPack()->addonId.toString()), task->getVersion().version_type.toString() }); } diff --git a/launcher/ui/dialogs/ResourceUpdateDialog.cpp b/launcher/ui/dialogs/ResourceUpdateDialog.cpp index cad5b9f7f..459ba7f23 100644 --- a/launcher/ui/dialogs/ResourceUpdateDialog.cpp +++ b/launcher/ui/dialogs/ResourceUpdateDialog.cpp @@ -24,8 +24,6 @@ #include -static ModPlatform::ProviderCapabilities ProviderCaps; - static std::list mcVersions(BaseInstance* inst) { return { static_cast(inst)->getPackProfile()->getComponent("net.minecraft")->getVersion() }; @@ -423,7 +421,7 @@ void ResourceUpdateDialog::appendResource(CheckUpdateTask::Update const& info, Q item_top->setExpanded(true); auto provider_item = new QTreeWidgetItem(item_top); - provider_item->setText(0, tr("Provider: %1").arg(ProviderCaps.readableName(info.provider))); + provider_item->setText(0, tr("Provider: %1").arg(ModPlatform::ProviderCapabilities::readableName(info.provider))); auto old_version_item = new QTreeWidgetItem(item_top); old_version_item->setText(0, tr("Old version: %1").arg(info.old_version)); From ad98f600d5666396577295a3915e039314767f60 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 26 Jan 2024 18:36:31 +0200 Subject: [PATCH 037/616] corecly display core mods tab Signed-off-by: Trial97 --- launcher/ui/pages/instance/ModFolderPage.cpp | 31 +++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index aba87942a..4b96338ae 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -66,6 +66,7 @@ #include "Version.h" #include "tasks/ConcurrentTask.h" +#include "tasks/Task.h" #include "ui/dialogs/ProgressDialog.h" ModFolderPage::ModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent) @@ -320,21 +321,23 @@ bool CoreModFolderPage::shouldDisplay() const return true; auto version = inst->getPackProfile(); - - ProgressDialog loadDialog(parentWidget()); - auto update = inst->createUpdateTask(Net::Mode::Offline); - if (update) { - loadDialog.setSkipButton(true, tr("Abort")); - loadDialog.execWithTask(update.get()); + if (!version || !version->getComponent("net.minecraftforge") || !version->getComponent("net.minecraft")) + return false; + auto minecraftCmp = version->getComponent("net.minecraft"); + if (!minecraftCmp->m_loaded) { + version->reload(Net::Mode::Offline); + auto update = version->getCurrentTask(); + if (update) { + connect(update.get(), &Task::finished, this, [this] { + if (m_container) { + m_container->refreshContainer(); + } + }); + update->start(); + } + return false; } - if (!version) - return true; - if (!version->getComponent("net.minecraftforge")) - return false; - if (!version->getComponent("net.minecraft")) - return false; - if (version->getComponent("net.minecraft")->getReleaseDateTime() < g_VersionFilterData.legacyCutoffDate) - return true; + return minecraftCmp->getReleaseDateTime() < g_VersionFilterData.legacyCutoffDate; } return false; } From 7317105e4d8c7a65f4a722dbebf8d5e3247f80dc Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 27 Jan 2024 22:47:28 +0200 Subject: [PATCH 038/616] Code spaghetti and more chaos Signed-off-by: Trial97 --- launcher/BaseVersionList.cpp | 1 + launcher/BaseVersionList.h | 1 + launcher/CMakeLists.txt | 8 +- launcher/JavaDownloader.cpp | 332 ------------------ launcher/JavaDownloader.h | 28 -- launcher/SysInfo.cpp | 43 ++- launcher/SysInfo.h | 1 + launcher/VersionProxyModel.cpp | 9 + launcher/VersionProxyModel.h | 2 +- launcher/java/JavaRuntime.cpp | 2 +- launcher/java/JavaVersion.cpp | 21 +- .../java/download/ArchiveJavaDownloader.cpp | 2 +- .../java/download/ManifestJavaDownloader.cpp | 2 +- launcher/ui/java/JavaDownload.cpp | 103 ++++++ launcher/ui/java/JavaDownload.h | 48 +++ launcher/ui/java/JavaDownload.ui | 100 ++++++ launcher/ui/java/ListModel.cpp | 154 ++++++++ launcher/ui/java/ListModel.h | 132 +++++++ launcher/ui/pages/global/JavaPage.cpp | 5 +- .../pages/instance/InstanceSettingsPage.cpp | 5 +- launcher/ui/widgets/JavaSettingsWidget.cpp | 5 +- 21 files changed, 613 insertions(+), 391 deletions(-) delete mode 100644 launcher/JavaDownloader.cpp delete mode 100644 launcher/JavaDownloader.h create mode 100644 launcher/ui/java/JavaDownload.cpp create mode 100644 launcher/ui/java/JavaDownload.h create mode 100644 launcher/ui/java/JavaDownload.ui create mode 100644 launcher/ui/java/ListModel.cpp create mode 100644 launcher/ui/java/ListModel.h diff --git a/launcher/BaseVersionList.cpp b/launcher/BaseVersionList.cpp index e11560d5e..576c3a413 100644 --- a/launcher/BaseVersionList.cpp +++ b/launcher/BaseVersionList.cpp @@ -110,6 +110,7 @@ QHash BaseVersionList::roleNames() const roles.insert(TypeRole, "type"); roles.insert(BranchRole, "branch"); roles.insert(PathRole, "path"); + roles.insert(AliasRole, "alias"); roles.insert(ArchitectureRole, "architecture"); return roles; } diff --git a/launcher/BaseVersionList.h b/launcher/BaseVersionList.h index 231887c4e..c59d70570 100644 --- a/launcher/BaseVersionList.h +++ b/launcher/BaseVersionList.h @@ -48,6 +48,7 @@ class BaseVersionList : public QAbstractListModel { TypeRole, BranchRole, PathRole, + AliasRole, ArchitectureRole, SortRole }; diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index ac3f8eb68..d703b8263 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -437,6 +437,11 @@ set(JAVA_SOURCES java/download/ArchiveJavaDownloader.h java/download/ManifestJavaDownloader.cpp java/download/ManifestJavaDownloader.h + + ui/java/JavaDownload.h + ui/java/JavaDownload.cpp + ui/java/ListModel.h + ui/java/ListModel.cpp ) set(TRANSLATIONS_SOURCES @@ -1107,8 +1112,6 @@ SET(LAUNCHER_SOURCES ui/instanceview/InstanceDelegate.h ui/instanceview/VisualGroup.cpp ui/instanceview/VisualGroup.h - JavaDownloader.cpp - JavaDownloader.h ) if (NOT Apple) @@ -1189,6 +1192,7 @@ qt_wrap_ui(LAUNCHER_UI ui/dialogs/ScrollMessageBox.ui ui/dialogs/BlockedModsDialog.ui ui/dialogs/ChooseProviderDialog.ui + ui/java/JavaDownload.ui ) qt_wrap_ui(PRISM_UPDATE_UI diff --git a/launcher/JavaDownloader.cpp b/launcher/JavaDownloader.cpp deleted file mode 100644 index e4f4b5f09..000000000 --- a/launcher/JavaDownloader.cpp +++ /dev/null @@ -1,332 +0,0 @@ -#include "JavaDownloader.h" -#include -#include -#include -#include -#include "Application.h" -#include "FileSystem.h" -#include "InstanceList.h" -#include "Json.h" -#include "MMCZip.h" -#include "SysInfo.h" -#include "net/ChecksumValidator.h" -#include "net/NetJob.h" -#include "ui/dialogs/ProgressDialog.h" - -// Quick & dirty struct to store files -struct File { - QString path; - QString url; - QByteArray hash; - bool isExec; -}; - -void JavaDownloader::executeTask() -{ - auto OS = m_OS; - auto isLegacy = m_isLegacy; - - downloadMojangJavaList(OS, isLegacy); -} -void JavaDownloader::downloadMojangJavaList(const QString& OS, bool isLegacy) -{ - auto netJob = makeShared(QString("JRE::QueryVersions"), APPLICATION->network()); - auto response = std::make_shared(); - setStatus(tr("Querying mojang meta")); - netJob->addNetAction(Net::Download::makeByteArray( - QUrl("https://piston-meta.mojang.com/v1/products/java-runtime/2ec0cc96c44e5a76b9c8b7c39df7210883d12871/all.json"), response)); - - connect(this, &Task::aborted, [isLegacy] { - QDir(FS::PathCombine(QCoreApplication::applicationDirPath(), "java", (isLegacy ? "java-legacy" : "java-current"))) - .removeRecursively(); - }); - - connect(netJob.get(), &NetJob::finished, [netJob, response, this] { - // delete so that it's not called on a deleted job - // FIXME: is this needed? qt should handle this - disconnect(this, &Task::aborted, netJob.get(), &NetJob::abort); - }); - connect(netJob.get(), &NetJob::progress, this, &JavaDownloader::progress); - connect(netJob.get(), &NetJob::failed, this, &JavaDownloader::emitFailed); - - connect(this, &Task::aborted, netJob.get(), &NetJob::abort); - - connect(netJob.get(), &NetJob::succeeded, [response, OS, isLegacy, this, netJob] { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << *response; - return; - } - auto versionArray = Json::ensureArray(Json::ensureObject(doc.object(), OS), isLegacy ? "jre-legacy" : "java-runtime-gamma"); - if (!versionArray.empty()) { - parseMojangManifest(isLegacy, versionArray); - - } else { - // mojang does not have a JRE for us, let's get azul zulu - downloadAzulMeta(OS, isLegacy, netJob.get()); - } - }); - - netJob->start(); -} -void JavaDownloader::parseMojangManifest(bool isLegacy, const QJsonArray& versionArray) -{ - setStatus(tr("Downloading Java from Mojang")); - auto url = Json::ensureString(Json::ensureObject(Json::ensureObject(versionArray[0]), "manifest"), "url"); - auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); - auto files = std::make_shared(); - - download->addNetAction(Net::Download::makeByteArray(QUrl(url), files)); - - connect(download.get(), &NetJob::finished, - [download, files, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); - connect(download.get(), &NetJob::progress, this, &JavaDownloader::progress); - connect(download.get(), &NetJob::failed, this, &JavaDownloader::emitFailed); - connect(this, &Task::aborted, download.get(), &NetJob::abort); - - connect(download.get(), &NetJob::succeeded, [files, isLegacy, this] { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << *files; - return; - } - downloadMojangJava(isLegacy, doc); - }); - download->start(); -} -void JavaDownloader::downloadMojangJava(bool isLegacy, const QJsonDocument& doc) -{ // valid json doc, begin making jre spot - auto output = FS::PathCombine(QCoreApplication::applicationDirPath(), QString("java"), (isLegacy ? "java-legacy" : "java-current")); - FS::ensureFolderPathExists(output); - std::vector toDownload; - auto list = Json::ensureObject(Json::ensureObject(doc.object()), "files"); - for (const auto& paths : list.keys()) { - auto file = FS::PathCombine(output, paths); - - const QJsonObject& meta = Json::ensureObject(list, paths); - auto type = Json::ensureString(meta, "type"); - if (type == "directory") { - FS::ensureFolderPathExists(file); - } else if (type == "link") { - // this is linux only ! - auto path = Json::ensureString(meta, "target"); - if (!path.isEmpty()) { - auto target = FS::PathCombine(file, "../" + path); - QFile(target).link(file); - } - } else if (type == "file") { - // TODO download compressed version if it exists ? - auto raw = Json::ensureObject(Json::ensureObject(meta, "downloads"), "raw"); - auto isExec = Json::ensureBoolean(meta, "executable", false); - auto url = Json::ensureString(raw, "url"); - if (!url.isEmpty() && QUrl(url).isValid()) { - auto f = File{ file, url, QByteArray::fromHex(Json::ensureString(raw, "sha1").toLatin1()), isExec }; - toDownload.push_back(f); - } - } - } - auto elementDownload = new NetJob("JRE::FileDownload", APPLICATION->network()); - for (const auto& file : toDownload) { - auto dl = Net::Download::makeFile(file.url, file.path); - if (!file.hash.isEmpty()) { - dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, file.hash)); - } - if (file.isExec) { - connect(dl.get(), &Net::Download::succeeded, - [file] { QFile(file.path).setPermissions(QFile(file.path).permissions() | QFileDevice::Permissions(0x1111)); }); - } - elementDownload->addNetAction(dl); - } - connect(elementDownload, &NetJob::finished, [elementDownload, this] { - disconnect(this, &Task::aborted, elementDownload, &NetJob::abort); - elementDownload->deleteLater(); - }); - connect(elementDownload, &NetJob::progress, this, &JavaDownloader::progress); - connect(elementDownload, &NetJob::failed, this, &JavaDownloader::emitFailed); - - connect(this, &Task::aborted, elementDownload, &NetJob::abort); - connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); - elementDownload->start(); -} -void JavaDownloader::downloadAzulMeta(const QString& OS, bool isLegacy, const NetJob* netJob) -{ - setStatus(tr("Querying Azul meta")); - QString javaVersion = isLegacy ? QString("8.0") : QString("17.0"); - - QString azulOS; - QString arch; - QString bitness; - - mojangOStoAzul(OS, azulOS, arch, bitness); - auto metaResponse = std::make_shared(); - auto downloadJob = makeShared(QString("JRE::QueryAzulMeta"), APPLICATION->network()); - downloadJob->addNetAction( - Net::Download::makeByteArray(QString("https://api.azul.com/zulu/download/community/v1.0/bundles/?" - "java_version=%1" - "&os=%2" - "&arch=%3" - "&hw_bitness=%4" - "&ext=zip" // as a zip for all os, even linux NOTE !! Linux ARM is .deb or .tar.gz only !! - "&bundle_type=jre" // jre only - "&latest=true" // only get the one latest entry - ) - .arg(javaVersion, azulOS, arch, bitness), - metaResponse)); - connect(downloadJob.get(), &NetJob::finished, - [downloadJob, metaResponse, this] { disconnect(this, &Task::aborted, downloadJob.get(), &NetJob::abort); }); - connect(this, &Task::aborted, downloadJob.get(), &NetJob::abort); - connect(netJob, &NetJob::failed, this, &JavaDownloader::emitFailed); - connect(downloadJob.get(), &NetJob::progress, this, &JavaDownloader::progress); - connect(downloadJob.get(), &NetJob::succeeded, [metaResponse, isLegacy, this] { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*metaResponse, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); - qWarning() << *metaResponse; - return; - } - auto array = Json::ensureArray(doc.array()); - if (!array.empty()) { - downloadAzulJava(isLegacy, array); - } else { - emitFailed(tr("No suitable JRE found")); - } - }); - downloadJob->start(); -} -void JavaDownloader::mojangOStoAzul(const QString& OS, QString& azulOS, QString& arch, QString& bitness) -{ - if (OS == "mac-os-arm64") { - // macos arm64 - azulOS = "macos"; - arch = "arm"; - bitness = "64"; - } else if (OS == "linux-arm64") { - // linux arm64 - azulOS = "linux"; - arch = "arm"; - bitness = "64"; - } else if (OS == "linux-arm") { - // linux arm (32) - azulOS = "linux"; - arch = "arm"; - bitness = "32"; - } else if (OS == "linux") { - // linux x86 64 (used for debugging, should never reach here) - azulOS = "linux"; - arch = "x86"; - bitness = "64"; - } -} -void JavaDownloader::downloadAzulJava(bool isLegacy, const QJsonArray& array) -{ // JRE found ! download the zip - setStatus(tr("Downloading Java from Azul")); - auto downloadURL = QUrl(array[0].toObject()["url"].toString()); - auto download = new NetJob(QString("JRE::DownloadJava"), APPLICATION->network()); - auto path = APPLICATION->instances()->getStagedInstancePath(); - auto temp = FS::PathCombine(path, "azulJRE.zip"); - - download->addNetAction(Net::Download::makeFile(downloadURL, temp)); - connect(download, &NetJob::finished, [download, this] { - disconnect(this, &Task::aborted, download, &NetJob::abort); - download->deleteLater(); - }); - connect(download, &NetJob::aborted, [path] { APPLICATION->instances()->destroyStagingPath(path); }); - connect(download, &NetJob::progress, this, &JavaDownloader::progress); - connect(download, &NetJob::failed, this, [this, path](QString reason) { - APPLICATION->instances()->destroyStagingPath(path); - emitFailed(std::move(reason)); - }); - connect(this, &Task::aborted, download, &NetJob::abort); - connect(download, &NetJob::succeeded, [isLegacy, temp, downloadURL, path, this] { - setStatus(tr("Extracting java")); - auto output = FS::PathCombine(QCoreApplication::applicationDirPath(), "java", isLegacy ? "java-legacy" : "java-current"); - // This should do all of the extracting and creating folders - MMCZip::extractDir(temp, downloadURL.fileName().chopped(4), output); - APPLICATION->instances()->destroyStagingPath(path); - emitSucceeded(); - }); - download->start(); -} -void JavaDownloader::showPrompts(QWidget* parent) -{ - QString sys = SysInfo::currentSystem(); - if (sys == "osx") { - sys = "mac-os"; - } - QString arch = SysInfo::useQTForArch(); - QString version; - if (sys == "windows") { - if (arch == "x86_64") { - version = "windows-x64"; - } else if (arch == "i386") { - version = "windows-x86"; - } else { - // Unknown, maybe arm, appending arch for downloader - version = "windows-" + arch; - } - } else if (sys == "mac-os") { - if (arch == "arm64") { - version = "mac-os-arm64"; - } else { - version = "mac-os"; - } - } else if (sys == "linux") { - if (arch == "x86_64") { - version = "linux"; - } else { - // will work for i386, and arm(64) - version = "linux-" + arch; - } - } else { - // ? ? ? ? ? unknown os, at least it won't have a java version on mojang or azul, display warning - QMessageBox::warning(parent, tr("Unknown OS"), - tr("The OS you are running is not supported by Mojang or Azul. Please install Java manually.")); - return; - } - // Selection using QMessageBox for java 8 or 17 - QMessageBox box( - QMessageBox::Icon::Question, tr("Java version"), - tr("Do you want to download Java version 8 or 17?\n Java 8 is recommended for older Minecraft versions, below 1.17\n Java 17 " - "is recommended for newer Minecraft versions, starting from 1.17"), - QMessageBox::NoButton, parent); - auto yes = box.addButton("Java 17", QMessageBox::AcceptRole); - auto no = box.addButton("Java 8", QMessageBox::AcceptRole); - auto both = box.addButton(tr("Download both"), QMessageBox::AcceptRole); - auto cancel = box.addButton(QMessageBox::Cancel); - - if (QFileInfo::exists(FS::PathCombine(QCoreApplication::applicationDirPath(), QString("java"), "java-legacy"))) { - no->setEnabled(false); - } - if (QFileInfo::exists(FS::PathCombine(QCoreApplication::applicationDirPath(), QString("java"), "java-current"))) { - yes->setEnabled(false); - } - if (!yes->isEnabled() || !no->isEnabled()) { - both->setEnabled(false); - } - if (!yes->isEnabled() && !no->isEnabled()) { - QMessageBox::information(parent, tr("Already installed!"), tr("Both versions of Java are already installed!")); - return; - } - box.exec(); - if (box.clickedButton() == nullptr || box.clickedButton() == cancel) { - return; - } - bool isLegacy = box.clickedButton() == no; - - auto down = new JavaDownloader(isLegacy, version); - ProgressDialog dialog(parent); - dialog.setSkipButton(true, tr("Abort")); - bool finished_successfully = dialog.execWithTask(down); - // Run another download task for the other option as well! - if (finished_successfully && box.clickedButton() == both) { - auto dwn = new JavaDownloader(false, version); - ProgressDialog dg(parent); - dg.setSkipButton(true, tr("Abort")); - dg.execWithTask(dwn); - } -} diff --git a/launcher/JavaDownloader.h b/launcher/JavaDownloader.h deleted file mode 100644 index 54f058970..000000000 --- a/launcher/JavaDownloader.h +++ /dev/null @@ -1,28 +0,0 @@ -#pragma once - -#include -#include "net/NetJob.h" -#include "tasks/Task.h" - -class JavaDownloader : public Task { - Q_OBJECT - public: - /*Downloads the java to the runtimes folder*/ - explicit JavaDownloader(bool isLegacy, const QString& OS) : m_isLegacy(isLegacy), m_OS(OS) {} - - void executeTask() override; - [[nodiscard]] bool canAbort() const override { return true; } - static void showPrompts(QWidget* parent = nullptr); - - private: - bool m_isLegacy; - const QString& m_OS; - - void downloadMojangJavaList(const QString& OS, bool isLegacy); - void parseMojangManifest(bool isLegacy, const QJsonArray& versionArray); - void downloadMojangJava(bool isLegacy, const QJsonDocument& doc); - - static void mojangOStoAzul(const QString& OS, QString& azulOS, QString& arch, QString& bitness); - void downloadAzulMeta(const QString& OS, bool isLegacy, const NetJob* netJob); - void downloadAzulJava(bool isLegacy, const QJsonArray& array); -}; diff --git a/launcher/SysInfo.cpp b/launcher/SysInfo.cpp index f15dde0e4..0dfa74de7 100644 --- a/launcher/SysInfo.cpp +++ b/launcher/SysInfo.cpp @@ -17,13 +17,7 @@ bool rosettaDetect() if (sysctlbyname("sysctl.proc_translated", &ret, &size, NULL, 0) == -1) { return false; } - if (ret == 0) { - return false; - } - if (ret == 1) { - return true; - } - return false; + return ret == 1; } #endif @@ -47,7 +41,6 @@ QString currentSystem() QString useQTForArch() { - auto qtArch = QSysInfo::currentCpuArchitecture(); #if defined(Q_OS_MACOS) && !defined(Q_PROCESSOR_ARM) if (rosettaDetect()) { return "arm64"; @@ -55,7 +48,7 @@ QString useQTForArch() return "x86_64"; } #endif - return qtArch; + return QSysInfo::currentCpuArchitecture(); } int suitableMaxMem() @@ -71,4 +64,36 @@ int suitableMaxMem() return maxMemoryAlloc; } + +QString getSupportedJavaArchitecture() +{ + auto sys = currentSystem(); + auto arch = useQTForArch(); + if (sys == "windows") { + if (arch == "x86_64") + return "windows-x64"; + if (arch == "i386") + return "windows-x86"; + // Unknown, maybe arm, appending arch + return "windows-" + arch; + } + if (sys == "osx") { + if (arch == "arm64") + return "mac-os-arm64"; + if (arch.contains("64")) + return "mac-os-64"; + if (arch.contains("86")) + return "mac-os-86"; + // Unknown, maybe something new, appending arch + return "mac-os-" + arch; + } else if (sys == "linux") { + if (arch == "x86_64") + return "linux-x64"; + if (arch == "i386") + return "linux-x86"; + // will work for arm32 arm(64) + return "linux-" + arch; + } + return {}; +} } // namespace SysInfo diff --git a/launcher/SysInfo.h b/launcher/SysInfo.h index 499c3b1dd..f3688d60d 100644 --- a/launcher/SysInfo.h +++ b/launcher/SysInfo.h @@ -3,5 +3,6 @@ namespace SysInfo { QString currentSystem(); QString useQTForArch(); +QString getSupportedJavaArchitecture(); int suitableMaxMem(); } // namespace SysInfo diff --git a/launcher/VersionProxyModel.cpp b/launcher/VersionProxyModel.cpp index 0ab9ae2c3..f1218f162 100644 --- a/launcher/VersionProxyModel.cpp +++ b/launcher/VersionProxyModel.cpp @@ -118,6 +118,8 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, return tr("Architecture"); case Path: return tr("Path"); + case Alias: + return tr("Alias"); case Time: return tr("Released"); } @@ -135,6 +137,8 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, return tr("CPU Architecture"); case Path: return tr("Filesystem path to this version"); + case Alias: + return tr("The alternative name of the java version"); case Time: return tr("Release date of this version"); } @@ -169,6 +173,8 @@ QVariant VersionProxyModel::data(const QModelIndex& index, int role) const return sourceModel()->data(parentIndex, BaseVersionList::ArchitectureRole); case Path: return sourceModel()->data(parentIndex, BaseVersionList::PathRole); + case Alias: + return sourceModel()->data(parentIndex, BaseVersionList::AliasRole); case Time: return sourceModel()->data(parentIndex, Meta::VersionList::TimeRole).toDate(); default: @@ -314,6 +320,9 @@ void VersionProxyModel::setSourceModel(QAbstractItemModel* replacingRaw) if (roles.contains(BaseVersionList::PathRole)) { m_columns.push_back(Path); } + if (roles.contains(BaseVersionList::AliasRole)) { + m_columns.push_back(Alias); + } if (roles.contains(Meta::VersionList::TimeRole)) { m_columns.push_back(Time); } diff --git a/launcher/VersionProxyModel.h b/launcher/VersionProxyModel.h index 0863a7c80..2dc35a625 100644 --- a/launcher/VersionProxyModel.h +++ b/launcher/VersionProxyModel.h @@ -9,7 +9,7 @@ class VersionFilterModel; class VersionProxyModel : public QAbstractProxyModel { Q_OBJECT public: - enum Column { Name, ParentVersion, Branch, Type, Architecture, Path, Time }; + enum Column { Name, ParentVersion, Branch, Type, Architecture, Path, Time, Alias }; using FilterMap = QHash>; public: diff --git a/launcher/java/JavaRuntime.cpp b/launcher/java/JavaRuntime.cpp index 78651e991..be13f47e4 100644 --- a/launcher/java/JavaRuntime.cpp +++ b/launcher/java/JavaRuntime.cpp @@ -62,7 +62,7 @@ MetaPtr parseJavaMeta(const QJsonObject& in) } if (in.contains("version")) { - auto obj = Json::requireObject(in, "checksum"); + auto obj = Json::requireObject(in, "version"); auto name = Json::ensureString(obj, "name", ""); auto major = Json::ensureInteger(obj, "major", 0); auto minor = Json::ensureInteger(obj, "minor", 0); diff --git a/launcher/java/JavaVersion.cpp b/launcher/java/JavaVersion.cpp index 3de6f5ad6..f3ded9709 100644 --- a/launcher/java/JavaVersion.cpp +++ b/launcher/java/JavaVersion.cpp @@ -113,19 +113,20 @@ bool JavaVersion::operator>(const JavaVersion& rhs) JavaVersion::JavaVersion(int major, int minor, int security, int build, QString name) : m_major(major), m_minor(minor), m_security(security), m_name(name), m_parseable(true) { + QStringList versions; if (build != 0) { m_prerelease = QString::number(build); - m_string = m_prerelease; + versions.push_front(m_prerelease); } if (m_security != 0) - m_string = QString::number(m_security) + "." + m_string; - else if (!m_string.isEmpty()) { - m_string = "0." + m_string; - } + versions.push_front(QString::number(m_security)); + else if (!versions.isEmpty()) + versions.push_front("0"); + if (m_minor != 0) - m_string = QString::number(m_minor) + "." + m_string; - else if (!m_string.isEmpty()) { - m_string = "0." + m_string; - } - m_string = QString::number(m_major) + "." + m_string; + versions.push_front(QString::number(m_minor)); + else if (!versions.isEmpty()) + versions.push_front("0"); + versions.push_front(QString::number(m_major)); + m_string = versions.join("."); } diff --git a/launcher/java/download/ArchiveJavaDownloader.cpp b/launcher/java/download/ArchiveJavaDownloader.cpp index 5350fc4e6..bee65cf91 100644 --- a/launcher/java/download/ArchiveJavaDownloader.cpp +++ b/launcher/java/download/ArchiveJavaDownloader.cpp @@ -43,7 +43,7 @@ void ArchiveJavaDownloader::executeTask() if (m_checksum_type == "sha256") { hashType = QCryptographicHash::Algorithm::Sha256; } - action->addValidator(new Net::ChecksumValidator(hashType, m_checksum_hash.toLatin1())); + action->addValidator(new Net::ChecksumValidator(hashType, QByteArray::fromHex(m_checksum_hash.toUtf8()))); } download->addNetAction(action); auto fullPath = entry->getFullPath(); diff --git a/launcher/java/download/ManifestJavaDownloader.cpp b/launcher/java/download/ManifestJavaDownloader.cpp index 368d6431c..c0b7942a7 100644 --- a/launcher/java/download/ManifestJavaDownloader.cpp +++ b/launcher/java/download/ManifestJavaDownloader.cpp @@ -46,7 +46,7 @@ void ManifestJavaDownloader::executeTask() if (m_checksum_type == "sha256") { hashType = QCryptographicHash::Algorithm::Sha256; } - action->addValidator(new Net::ChecksumValidator(hashType, m_checksum_hash.toLatin1())); + action->addValidator(new Net::ChecksumValidator(hashType, QByteArray::fromHex(m_checksum_hash.toUtf8()))); } download->addNetAction(action); diff --git a/launcher/ui/java/JavaDownload.cpp b/launcher/ui/java/JavaDownload.cpp new file mode 100644 index 000000000..c03fb10e8 --- /dev/null +++ b/launcher/ui/java/JavaDownload.cpp @@ -0,0 +1,103 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "JavaDownload.h" +#include +#include +#include +#include +#include +#include "Application.h" +#include "BaseVersionList.h" +#include "FileSystem.h" +#include "QObjectPtr.h" +#include "SysInfo.h" +#include "java/JavaInstallList.h" +#include "java/download/ArchiveJavaDownloader.h" +#include "java/download/ManifestJavaDownloader.h" +#include "meta/Index.h" +#include "meta/Version.h" +#include "ui/dialogs/ProgressDialog.h" +#include "ui/java/ListModel.h" +#include "ui_JavaDownload.h" + +JavaDownload::JavaDownload(QWidget* parent) : QDialog(parent), ui(new Ui::JavaDownload) +{ + ui->setupUi(this); + ui->widget->initialize(new Java::JavaBaseVersionList("net.minecraft.java")); + ui->widget->selectCurrent(); + connect(ui->widget, &VersionSelectWidget::selectedVersionChanged, this, &JavaDownload::setSelectedVersion); + auto reset = ui->buttonBox->button(QDialogButtonBox::Reset); + connect(reset, &QPushButton::clicked, this, &JavaDownload::refresh); + connect(ui->widget_2, &VersionSelectWidget::selectedVersionChanged, this, &JavaDownload::setSelectedVersion2); +} + +JavaDownload::~JavaDownload() +{ + delete ui; +} + +void JavaDownload::setSelectedVersion(BaseVersion::Ptr version) +{ + if (!version) + return; + auto dcast = std::dynamic_pointer_cast(version); + if (!dcast) { + return; + } + ui->widget_2->initialize(new Java::InstallList(dcast, this)); + ui->widget_2->selectCurrent(); +} + +void JavaDownload::setSelectedVersion2(BaseVersion::Ptr version) +{ + if (!version) + return; + m_selectedVersion = std::dynamic_pointer_cast(ui->widget_2->selectedVersion()); +} +void JavaDownload::accept() +{ + if (!m_selectedVersion) { + m_selectedVersion = std::dynamic_pointer_cast(ui->widget_2->selectedVersion()); + qDebug() << "=========?" << (ui->widget_2->selectedVersion() != nullptr); + } + if (!m_selectedVersion) { + qDebug() << "faillllllllllllllllllllllllllll"; + return; + } + auto meta = m_selectedVersion->meta; + Task::Ptr task; + auto final_path = FS::PathCombine(APPLICATION->dataRoot(), "java", meta->name); + qDebug() << "===============>>=>>" << meta->checksumType << meta->checksumHash; + switch (meta->downloadType) { + case JavaRuntime::DownloadType::Manifest: + task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); + break; + case JavaRuntime::DownloadType::Archive: + task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); + break; + } + ProgressDialog pg(this); + pg.execWithTask(task.get()); + QDialog::accept(); +} + +void JavaDownload::refresh() +{ + ui->widget->loadList(); +} diff --git a/launcher/ui/java/JavaDownload.h b/launcher/ui/java/JavaDownload.h new file mode 100644 index 000000000..916d6b495 --- /dev/null +++ b/launcher/ui/java/JavaDownload.h @@ -0,0 +1,48 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include "BaseVersion.h" +#include "ui/java/ListModel.h" + +namespace Ui { +class JavaDownload; +} + +class JavaDownload : public QDialog { + Q_OBJECT + + public: + explicit JavaDownload(QWidget* parent = 0); + ~JavaDownload(); + + void accept(); + + public slots: + void refresh(); + + protected slots: + void setSelectedVersion(BaseVersion::Ptr version); + void setSelectedVersion2(BaseVersion::Ptr version); + + private: + Ui::JavaDownload* ui; + Java::JavaRuntimePtr m_selectedVersion; +}; diff --git a/launcher/ui/java/JavaDownload.ui b/launcher/ui/java/JavaDownload.ui new file mode 100644 index 000000000..bbc638e9b --- /dev/null +++ b/launcher/ui/java/JavaDownload.ui @@ -0,0 +1,100 @@ + + + JavaDownload + + + + 0 + 0 + 821 + 593 + + + + Dialog + + + + + + + + Major + + + + + + + + + + + + Runtime + + + + + + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Retry + + + + + + + + VersionSelectWidget + QWidget +
ui/widgets/VersionSelectWidget.h
+ 1 +
+
+ + + + buttonBox + accepted() + JavaDownload + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + JavaDownload + reject() + + + 316 + 260 + + + 286 + 274 + + + + +
diff --git a/launcher/ui/java/ListModel.cpp b/launcher/ui/java/ListModel.cpp new file mode 100644 index 000000000..71f8765eb --- /dev/null +++ b/launcher/ui/java/ListModel.cpp @@ -0,0 +1,154 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "ListModel.h" +#include +#include +#include "BaseVersionList.h" +#include "StringUtils.h" +#include "SysInfo.h" + +namespace Java { + +InstallList::InstallList(Meta::Version::Ptr version, QObject* parent) : BaseVersionList(parent), m_version(version) +{ + if (version->isLoaded()) + sortVersions(); +} + +Task::Ptr InstallList::getLoadTask() +{ + m_version->load(Net::Mode::Online); + auto task = m_version->getCurrentTask(); + connect(task.get(), &Task::finished, this, &InstallList::sortVersions); + return task; +} + +const BaseVersion::Ptr InstallList::at(int i) const +{ + return m_vlist.at(i); +} + +bool InstallList::isLoaded() +{ + return m_version->isLoaded(); +} + +int InstallList::count() const +{ + return m_vlist.count(); +} + +QVariant InstallList::data(const QModelIndex& index, int role) const +{ + if (!index.isValid()) + return QVariant(); + + if (index.row() > count()) + return QVariant(); + + auto version = (m_vlist[index.row()]); + switch (role) { + case SortRole: + return -index.row(); + case VersionPointerRole: + return QVariant::fromValue(std::dynamic_pointer_cast(m_vlist[index.row()])); + case VersionIdRole: + return version->descriptor(); + case VersionRole: + return version->meta->version.toString(); + case RecommendedRole: + return version->meta->recommended; + case AliasRole: + return version->meta->name; + case ArchitectureRole: + return version->meta->vendor; + default: + return QVariant(); + } +} + +BaseVersionList::RoleList InstallList::providesRoles() const +{ + return { VersionPointerRole, VersionIdRole, VersionRole, RecommendedRole, AliasRole, ArchitectureRole }; +} + +bool sortJavas(BaseVersion::Ptr left, BaseVersion::Ptr right) +{ + auto rleft = std::dynamic_pointer_cast(right); + auto rright = std::dynamic_pointer_cast(left); + return (*rleft) > (*rright); +} + +void InstallList::sortVersions() +{ + QString versionStr = SysInfo::getSupportedJavaArchitecture(); + beginResetModel(); + auto runtimes = m_version->data()->runtimes; + if (versionStr.isEmpty() || !runtimes.contains(versionStr)) { + return; + } + auto javaruntimes = runtimes.value(versionStr); + for (auto v : javaruntimes) { + m_vlist.append(std::make_shared(v)); + } + std::sort(m_vlist.begin(), m_vlist.end(), sortJavas); + endResetModel(); +} + +bool JavaRuntime2::operator<(const JavaRuntime2& rhs) +{ + auto id = meta->version; + if (id < rhs.meta->version) { + return true; + } + if (id > rhs.meta->version) { + return false; + } + return StringUtils::naturalCompare(meta->name, rhs.meta->name, Qt::CaseInsensitive) < 0; +} + +bool JavaRuntime2::operator==(const JavaRuntime2& rhs) +{ + return meta->version == rhs.meta->version && meta->name == rhs.meta->name; +} + +bool JavaRuntime2::operator>(const JavaRuntime2& rhs) +{ + return (!operator<(rhs)) && (!operator==(rhs)); +} + +bool JavaRuntime2::operator<(BaseVersion& a) +{ + try { + return operator<(dynamic_cast(a)); + } catch (const std::bad_cast& e) { + return BaseVersion::operator<(a); + } +} + +bool JavaRuntime2::operator>(BaseVersion& a) +{ + try { + return operator>(dynamic_cast(a)); + } catch (const std::bad_cast& e) { + return BaseVersion::operator>(a); + } +} + +} // namespace Java diff --git a/launcher/ui/java/ListModel.h b/launcher/ui/java/ListModel.h new file mode 100644 index 000000000..3685d611d --- /dev/null +++ b/launcher/ui/java/ListModel.h @@ -0,0 +1,132 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include +#include +#include +#include "java/JavaRuntime.h" +#include "meta/VersionList.h" + +namespace Java { + +class JavaBaseVersionList : public Meta::VersionList { + Q_OBJECT + public: + explicit JavaBaseVersionList(const QString& uid, QObject* parent = nullptr) : VersionList(uid, parent) {} + BaseVersionList::RoleList providesRoles() const { return { VersionRole, RecommendedRole, VersionPointerRole }; } +}; + +struct JavaRuntime2 : public BaseVersion { + JavaRuntime2() {} + JavaRuntime2(JavaRuntime::MetaPtr m) : meta(m) {} + virtual QString descriptor() override { return meta->version.toString(); } + + virtual QString name() override { return meta->name; } + + virtual QString typeString() const override { return meta->vendor; } + + virtual bool operator<(BaseVersion& a) override; + virtual bool operator>(BaseVersion& a) override; + bool operator<(const JavaRuntime2& rhs); + bool operator==(const JavaRuntime2& rhs); + bool operator>(const JavaRuntime2& rhs); + + JavaRuntime::MetaPtr meta; +}; + +using JavaRuntimePtr = std::shared_ptr; + +class InstallList : public BaseVersionList { + Q_OBJECT + + public: + explicit InstallList(Meta::Version::Ptr m_version, QObject* parent = 0); + + Task::Ptr getLoadTask() override; + bool isLoaded() override; + const BaseVersion::Ptr at(int i) const override; + int count() const override; + void sortVersions() override; + + QVariant data(const QModelIndex& index, int role) const override; + RoleList providesRoles() const override; + + protected slots: + void updateListData(QList) override {} + + protected: + Meta::Version::Ptr m_version; + QList m_vlist; +}; + +} // namespace Java +// class FilterModel : public QSortFilterProxyModel { +// Q_OBJECT +// public: +// FilterModel(QObject* parent = Q_NULLPTR); +// enum Sorting { ByName, ByGameVersion }; +// const QMap getAvailableSortings(); +// QString translateCurrentSorting(); +// void setSorting(Sorting sorting); +// Sorting getCurrentSorting(); +// void setSearchTerm(QString term); + +// protected: +// bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const override; +// bool lessThan(const QModelIndex& left, const QModelIndex& right) const override; + +// private: +// QMap sortings; +// Sorting currentSorting; +// QString searchTerm; +// }; + +// class ListModel : public QAbstractListModel { +// Q_OBJECT +// private: +// ModpackList modpacks; +// QStringList m_failedLogos; +// QStringList m_loadingLogos; +// FTBLogoMap m_logoMap; +// QMap waitingCallbacks; + +// void requestLogo(QString file); +// QString translatePackType(PackType type) const; + +// private slots: +// void logoFailed(QString logo); +// void logoLoaded(QString logo, QIcon out); + +// public: +// ListModel(QObject* parent); +// ~ListModel(); +// int rowCount(const QModelIndex& parent) const override; +// int columnCount(const QModelIndex& parent) const override; +// QVariant data(const QModelIndex& index, int role) const override; +// Qt::ItemFlags flags(const QModelIndex& index) const override; + +// void fill(ModpackList modpacks); +// void addPack(Modpack modpack); +// void clear(); +// void remove(int row); + +// Modpack at(int row); +// void getLogo(const QString& logo, LogoCallback callback); +// }; diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 0f05b6c8f..09c951a3c 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -36,6 +36,7 @@ #include "JavaPage.h" #include "JavaCommon.h" +#include "ui/java/JavaDownload.h" #include "ui_JavaPage.h" #include @@ -51,7 +52,6 @@ #include #include #include "Application.h" -#include "JavaDownloader.h" #include "settings/SettingsObject.h" JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) @@ -169,7 +169,8 @@ void JavaPage::on_javaTestBtn_clicked() void JavaPage::on_javaDownloadBtn_clicked() { - JavaDownloader::showPrompts(this); + auto jdialog = new JavaDownload(this); + jdialog->exec(); } void JavaPage::on_maxMemSpinBox_valueChanged([[maybe_unused]] int i) diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index a386a3bfe..df380bfb3 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -36,6 +36,7 @@ */ #include "InstanceSettingsPage.h" +#include "ui/java/JavaDownload.h" #include "ui_InstanceSettingsPage.h" #include @@ -53,7 +54,6 @@ #include "minecraft/auth/AccountList.h" #include "FileSystem.h" -#include "JavaDownloader.h" #include "java/JavaInstallList.h" #include "java/JavaUtils.h" @@ -387,7 +387,8 @@ void InstanceSettingsPage::loadSettings() void InstanceSettingsPage::on_javaDownloadBtn_clicked() { - JavaDownloader::showPrompts(this); + auto jdialog = new JavaDownload(this); + jdialog->exec(); } void InstanceSettingsPage::on_javaDetectBtn_clicked() diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 909ad7a01..7405ad114 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -13,13 +13,13 @@ #include "FileSystem.h" #include "JavaCommon.h" -#include "JavaDownloader.h" #include "java/JavaChecker.h" #include "java/JavaInstall.h" #include "java/JavaInstallList.h" #include "java/JavaUtils.h" #include "ui/dialogs/CustomMessageBox.h" +#include "ui/java/JavaDownload.h" #include "ui/widgets/VersionSelectWidget.h" #include "Application.h" @@ -274,7 +274,8 @@ void JavaSettingsWidget::on_javaBrowseBtn_clicked() } void JavaSettingsWidget::on_javaDownloadBtn_clicked() { - JavaDownloader::showPrompts(this); + auto jdialog = new JavaDownload(this); + jdialog->exec(); } void JavaSettingsWidget::on_javaStatusBtn_clicked() { From 5afe75e821516dbbde60d1b2d3a627a0d243b1fe Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 30 Jan 2024 12:37:34 +0200 Subject: [PATCH 039/616] Fixed some codeql warnings Signed-off-by: Trial97 --- launcher/JavaCommon.cpp | 4 ++-- launcher/JavaCommon.h | 4 ++-- launcher/java/JavaChecker.h | 2 +- launcher/java/JavaInstallList.cpp | 4 ++-- launcher/java/JavaVersion.cpp | 4 ++-- launcher/java/JavaVersion.h | 4 ++-- launcher/java/download/ArchiveJavaDownloader.cpp | 1 - launcher/launch/steps/CheckJava.cpp | 2 +- launcher/launch/steps/CheckJava.h | 2 +- launcher/ui/widgets/JavaSettingsWidget.cpp | 2 +- launcher/ui/widgets/JavaSettingsWidget.h | 2 +- 11 files changed, 15 insertions(+), 16 deletions(-) diff --git a/launcher/JavaCommon.cpp b/launcher/JavaCommon.cpp index cfc3cfe42..3cbf9f9d5 100644 --- a/launcher/JavaCommon.cpp +++ b/launcher/JavaCommon.cpp @@ -121,7 +121,7 @@ void JavaCommon::TestCheck::run() checker->start(); } -void JavaCommon::TestCheck::checkFinished(JavaChecker::Result result) +void JavaCommon::TestCheck::checkFinished(const JavaChecker::Result& result) { if (result.validity != JavaChecker::Result::Validity::Valid) { javaBinaryWasBad(m_parent, result); @@ -133,7 +133,7 @@ void JavaCommon::TestCheck::checkFinished(JavaChecker::Result result) checker->start(); } -void JavaCommon::TestCheck::checkFinishedWithArgs(JavaChecker::Result result) +void JavaCommon::TestCheck::checkFinishedWithArgs(const JavaChecker::Result& result) { if (result.validity == JavaChecker::Result::Validity::Valid) { javaWasOk(m_parent, result); diff --git a/launcher/JavaCommon.h b/launcher/JavaCommon.h index 7c5510efc..ca208b593 100644 --- a/launcher/JavaCommon.h +++ b/launcher/JavaCommon.h @@ -32,8 +32,8 @@ class TestCheck : public QObject { void finished(); private slots: - void checkFinished(JavaChecker::Result result); - void checkFinishedWithArgs(JavaChecker::Result result); + void checkFinished(const JavaChecker::Result& result); + void checkFinishedWithArgs(const JavaChecker::Result& result); private: JavaChecker::Ptr checker; diff --git a/launcher/java/JavaChecker.h b/launcher/java/JavaChecker.h index 0c6191c21..171a18b76 100644 --- a/launcher/java/JavaChecker.h +++ b/launcher/java/JavaChecker.h @@ -29,7 +29,7 @@ class JavaChecker : public Task { explicit JavaChecker(QString path, QString args, int minMem = 0, int maxMem = 0, int permGen = 0, int id = 0, QObject* parent = 0); signals: - void checkFinished(Result result); + void checkFinished(const Result& result); protected: virtual void executeTask() override; diff --git a/launcher/java/JavaInstallList.cpp b/launcher/java/JavaInstallList.cpp index ef99d6853..c14056964 100644 --- a/launcher/java/JavaInstallList.cpp +++ b/launcher/java/JavaInstallList.cpp @@ -170,7 +170,7 @@ void JavaListLoadTask::executeTask() int id = 0; for (QString candidate : candidate_paths) { auto checker = new JavaChecker(candidate, "", 0, 0, 0, id, this); - connect(checker, &JavaChecker::checkFinished, [this](JavaChecker::Result result) { m_results << result; }); + connect(checker, &JavaChecker::checkFinished, [this](const JavaChecker::Result& result) { m_results << result; }); job->addTask(Task::Ptr(checker)); id++; } @@ -181,7 +181,7 @@ void JavaListLoadTask::executeTask() void JavaListLoadTask::javaCheckerFinished() { QList candidates; - std::sort(m_results.begin(), m_results.end(), [](JavaChecker::Result a, JavaChecker::Result b) { return a.id < b.id; }); + std::sort(m_results.begin(), m_results.end(), [](const JavaChecker::Result& a, const JavaChecker::Result& b) { return a.id < b.id; }); qDebug() << "Found the following valid Java installations:"; for (auto result : m_results) { diff --git a/launcher/java/JavaVersion.cpp b/launcher/java/JavaVersion.cpp index f3ded9709..2dc23472e 100644 --- a/launcher/java/JavaVersion.cpp +++ b/launcher/java/JavaVersion.cpp @@ -43,12 +43,12 @@ QString JavaVersion::toString() const return m_string; } -bool JavaVersion::requiresPermGen() +bool JavaVersion::requiresPermGen() const { return !m_parseable || m_major < 8; } -bool JavaVersion::isModular() +bool JavaVersion::isModular() const { return m_parseable && m_major >= 9; } diff --git a/launcher/java/JavaVersion.h b/launcher/java/JavaVersion.h index eee992346..92c743bfb 100644 --- a/launcher/java/JavaVersion.h +++ b/launcher/java/JavaVersion.h @@ -24,9 +24,9 @@ class JavaVersion { bool operator==(const JavaVersion& rhs); bool operator>(const JavaVersion& rhs); - bool requiresPermGen(); + bool requiresPermGen() const; - bool isModular(); + bool isModular() const; QString toString() const; diff --git a/launcher/java/download/ArchiveJavaDownloader.cpp b/launcher/java/download/ArchiveJavaDownloader.cpp index bee65cf91..cb642357a 100644 --- a/launcher/java/download/ArchiveJavaDownloader.cpp +++ b/launcher/java/download/ArchiveJavaDownloader.cpp @@ -49,7 +49,6 @@ void ArchiveJavaDownloader::executeTask() auto fullPath = entry->getFullPath(); connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); - // connect(download.get(), &NetJob::aborted, [path] { APPLICATION->instances()->destroyStagingPath(path); }); connect(download.get(), &NetJob::progress, this, &ArchiveJavaDownloader::progress); connect(download.get(), &NetJob::failed, this, &ArchiveJavaDownloader::emitFailed); connect(this, &Task::aborted, download.get(), &NetJob::abort); diff --git a/launcher/launch/steps/CheckJava.cpp b/launcher/launch/steps/CheckJava.cpp index c776092fe..a8c7305ab 100644 --- a/launcher/launch/steps/CheckJava.cpp +++ b/launcher/launch/steps/CheckJava.cpp @@ -106,7 +106,7 @@ void CheckJava::executeTask() emitSucceeded(); } -void CheckJava::checkJavaFinished(JavaChecker::Result result) +void CheckJava::checkJavaFinished(const JavaChecker::Result& result) { switch (result.validity) { case JavaChecker::Result::Validity::Errored: { diff --git a/launcher/launch/steps/CheckJava.h b/launcher/launch/steps/CheckJava.h index 5ba9e4018..62b0c6bbb 100644 --- a/launcher/launch/steps/CheckJava.h +++ b/launcher/launch/steps/CheckJava.h @@ -28,7 +28,7 @@ class CheckJava : public LaunchStep { virtual void executeTask(); virtual bool canAbort() const { return false; } private slots: - void checkJavaFinished(JavaChecker::Result result); + void checkJavaFinished(const JavaChecker::Result& result); private: void printJavaInfo(const QString& version, const QString& architecture, const QString& realArchitecture, const QString& vendor); diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 7405ad114..d6fbf00a3 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -377,7 +377,7 @@ void JavaSettingsWidget::checkJavaPath(const QString& path) m_checker->start(); } -void JavaSettingsWidget::checkFinished(JavaChecker::Result result) +void JavaSettingsWidget::checkFinished(const JavaChecker::Result& result) { m_result = result; switch (result.validity) { diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index d3cd2c5a7..b7db955a4 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -51,7 +51,7 @@ class JavaSettingsWidget : public QWidget { void on_javaBrowseBtn_clicked(); void on_javaStatusBtn_clicked(); void on_javaDownloadBtn_clicked(); - void checkFinished(JavaChecker::Result result); + void checkFinished(const JavaChecker::Result& result); protected: /* methods */ void checkJavaPathOnEdit(const QString& path); From 6c5bb3817bfe1a51924127f77965ea72506452aa Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 31 Jan 2024 18:07:28 +0200 Subject: [PATCH 040/616] Cleaned some code Signed-off-by: Trial97 --- launcher/java/JavaRuntime.cpp | 44 ++++++++++++++++- launcher/java/JavaRuntime.h | 18 ++++++- launcher/ui/java/JavaDownload.cpp | 35 +++++--------- launcher/ui/java/JavaDownload.h | 3 -- launcher/ui/java/ListModel.cpp | 69 ++++++--------------------- launcher/ui/java/ListModel.h | 78 +------------------------------ 6 files changed, 85 insertions(+), 162 deletions(-) diff --git a/launcher/java/JavaRuntime.cpp b/launcher/java/JavaRuntime.cpp index be13f47e4..e88955772 100644 --- a/launcher/java/JavaRuntime.cpp +++ b/launcher/java/JavaRuntime.cpp @@ -21,6 +21,7 @@ #include #include "Json.h" +#include "StringUtils.h" #include "java/JavaVersion.h" #include "minecraft/ParseUtils.h" @@ -47,7 +48,7 @@ MetaPtr parseJavaMeta(const QJsonObject& in) { auto meta = std::make_shared(); - meta->name = Json::ensureString(in, "name", ""); + meta->m_name = Json::ensureString(in, "name", ""); meta->vendor = Json::ensureString(in, "vendor", ""); meta->url = Json::ensureString(in, "url", ""); meta->releaseTime = timeFromS3Time(Json::ensureString(in, "releaseTime", "")); @@ -72,4 +73,45 @@ MetaPtr parseJavaMeta(const QJsonObject& in) } return meta; } + +bool Meta::operator<(const Meta& rhs) +{ + auto id = version; + if (id < rhs.version) { + return true; + } + if (id > rhs.version) { + return false; + } + return StringUtils::naturalCompare(m_name, rhs.m_name, Qt::CaseInsensitive) < 0; +} + +bool Meta::operator==(const Meta& rhs) +{ + return version == rhs.version && m_name == rhs.m_name; +} + +bool Meta::operator>(const Meta& rhs) +{ + return (!operator<(rhs)) && (!operator==(rhs)); +} + +bool Meta::operator<(BaseVersion& a) +{ + try { + return operator<(dynamic_cast(a)); + } catch (const std::bad_cast& e) { + return BaseVersion::operator<(a); + } +} + +bool Meta::operator>(BaseVersion& a) +{ + try { + return operator>(dynamic_cast(a)); + } catch (const std::bad_cast& e) { + return BaseVersion::operator>(a); + } +} + } // namespace JavaRuntime diff --git a/launcher/java/JavaRuntime.h b/launcher/java/JavaRuntime.h index 4c4efa288..654ba030a 100644 --- a/launcher/java/JavaRuntime.h +++ b/launcher/java/JavaRuntime.h @@ -23,14 +23,28 @@ #include +#include "BaseVersion.h" #include "java/JavaVersion.h" namespace JavaRuntime { enum class DownloadType { Manifest, Archive }; -struct Meta { - QString name; +class Meta : public BaseVersion { + public: + virtual QString descriptor() override { return version.toString(); } + + virtual QString name() override { return m_name; } + + virtual QString typeString() const override { return vendor; } + + virtual bool operator<(BaseVersion& a) override; + virtual bool operator>(BaseVersion& a) override; + bool operator<(const Meta& rhs); + bool operator==(const Meta& rhs); + bool operator>(const Meta& rhs); + + QString m_name; QString vendor; QString url; QDateTime releaseTime; diff --git a/launcher/ui/java/JavaDownload.cpp b/launcher/ui/java/JavaDownload.cpp index c03fb10e8..bae61a060 100644 --- a/launcher/ui/java/JavaDownload.cpp +++ b/launcher/ui/java/JavaDownload.cpp @@ -17,21 +17,23 @@ */ #include "JavaDownload.h" -#include -#include -#include -#include + +#include + #include + #include "Application.h" -#include "BaseVersionList.h" #include "FileSystem.h" #include "QObjectPtr.h" #include "SysInfo.h" -#include "java/JavaInstallList.h" + +#include "java/JavaRuntime.h" #include "java/download/ArchiveJavaDownloader.h" #include "java/download/ManifestJavaDownloader.h" + #include "meta/Index.h" #include "meta/Version.h" + #include "ui/dialogs/ProgressDialog.h" #include "ui/java/ListModel.h" #include "ui_JavaDownload.h" @@ -44,7 +46,6 @@ JavaDownload::JavaDownload(QWidget* parent) : QDialog(parent), ui(new Ui::JavaDo connect(ui->widget, &VersionSelectWidget::selectedVersionChanged, this, &JavaDownload::setSelectedVersion); auto reset = ui->buttonBox->button(QDialogButtonBox::Reset); connect(reset, &QPushButton::clicked, this, &JavaDownload::refresh); - connect(ui->widget_2, &VersionSelectWidget::selectedVersionChanged, this, &JavaDownload::setSelectedVersion2); } JavaDownload::~JavaDownload() @@ -54,8 +55,6 @@ JavaDownload::~JavaDownload() void JavaDownload::setSelectedVersion(BaseVersion::Ptr version) { - if (!version) - return; auto dcast = std::dynamic_pointer_cast(version); if (!dcast) { return; @@ -64,26 +63,14 @@ void JavaDownload::setSelectedVersion(BaseVersion::Ptr version) ui->widget_2->selectCurrent(); } -void JavaDownload::setSelectedVersion2(BaseVersion::Ptr version) -{ - if (!version) - return; - m_selectedVersion = std::dynamic_pointer_cast(ui->widget_2->selectedVersion()); -} void JavaDownload::accept() { - if (!m_selectedVersion) { - m_selectedVersion = std::dynamic_pointer_cast(ui->widget_2->selectedVersion()); - qDebug() << "=========?" << (ui->widget_2->selectedVersion() != nullptr); - } - if (!m_selectedVersion) { - qDebug() << "faillllllllllllllllllllllllllll"; + auto meta = std::dynamic_pointer_cast(ui->widget_2->selectedVersion()); + if (!meta) { return; } - auto meta = m_selectedVersion->meta; Task::Ptr task; - auto final_path = FS::PathCombine(APPLICATION->dataRoot(), "java", meta->name); - qDebug() << "===============>>=>>" << meta->checksumType << meta->checksumHash; + auto final_path = FS::PathCombine(APPLICATION->dataRoot(), "java", meta->m_name); switch (meta->downloadType) { case JavaRuntime::DownloadType::Manifest: task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); diff --git a/launcher/ui/java/JavaDownload.h b/launcher/ui/java/JavaDownload.h index 916d6b495..de0916ae5 100644 --- a/launcher/ui/java/JavaDownload.h +++ b/launcher/ui/java/JavaDownload.h @@ -20,7 +20,6 @@ #include #include "BaseVersion.h" -#include "ui/java/ListModel.h" namespace Ui { class JavaDownload; @@ -40,9 +39,7 @@ class JavaDownload : public QDialog { protected slots: void setSelectedVersion(BaseVersion::Ptr version); - void setSelectedVersion2(BaseVersion::Ptr version); private: Ui::JavaDownload* ui; - Java::JavaRuntimePtr m_selectedVersion; }; diff --git a/launcher/ui/java/ListModel.cpp b/launcher/ui/java/ListModel.cpp index 71f8765eb..11cd01130 100644 --- a/launcher/ui/java/ListModel.cpp +++ b/launcher/ui/java/ListModel.cpp @@ -17,11 +17,12 @@ */ #include "ListModel.h" -#include + #include + #include "BaseVersionList.h" -#include "StringUtils.h" #include "SysInfo.h" +#include "java/JavaRuntime.h" namespace Java { @@ -71,13 +72,13 @@ QVariant InstallList::data(const QModelIndex& index, int role) const case VersionIdRole: return version->descriptor(); case VersionRole: - return version->meta->version.toString(); + return version->version.toString(); case RecommendedRole: - return version->meta->recommended; + return version->recommended; case AliasRole: - return version->meta->name; + return version->name(); case ArchitectureRole: - return version->meta->vendor; + return version->vendor; default: return QVariant(); } @@ -90,8 +91,8 @@ BaseVersionList::RoleList InstallList::providesRoles() const bool sortJavas(BaseVersion::Ptr left, BaseVersion::Ptr right) { - auto rleft = std::dynamic_pointer_cast(right); - auto rright = std::dynamic_pointer_cast(left); + auto rleft = std::dynamic_pointer_cast(right); + auto rright = std::dynamic_pointer_cast(left); return (*rleft) > (*rright); } @@ -100,55 +101,13 @@ void InstallList::sortVersions() QString versionStr = SysInfo::getSupportedJavaArchitecture(); beginResetModel(); auto runtimes = m_version->data()->runtimes; - if (versionStr.isEmpty() || !runtimes.contains(versionStr)) { - return; + if (!versionStr.isEmpty() && runtimes.contains(versionStr)) { + m_vlist = runtimes.value(versionStr); + std::sort(m_vlist.begin(), m_vlist.end(), sortJavas); + } else { + m_vlist = {}; } - auto javaruntimes = runtimes.value(versionStr); - for (auto v : javaruntimes) { - m_vlist.append(std::make_shared(v)); - } - std::sort(m_vlist.begin(), m_vlist.end(), sortJavas); endResetModel(); } -bool JavaRuntime2::operator<(const JavaRuntime2& rhs) -{ - auto id = meta->version; - if (id < rhs.meta->version) { - return true; - } - if (id > rhs.meta->version) { - return false; - } - return StringUtils::naturalCompare(meta->name, rhs.meta->name, Qt::CaseInsensitive) < 0; -} - -bool JavaRuntime2::operator==(const JavaRuntime2& rhs) -{ - return meta->version == rhs.meta->version && meta->name == rhs.meta->name; -} - -bool JavaRuntime2::operator>(const JavaRuntime2& rhs) -{ - return (!operator<(rhs)) && (!operator==(rhs)); -} - -bool JavaRuntime2::operator<(BaseVersion& a) -{ - try { - return operator<(dynamic_cast(a)); - } catch (const std::bad_cast& e) { - return BaseVersion::operator<(a); - } -} - -bool JavaRuntime2::operator>(BaseVersion& a) -{ - try { - return operator>(dynamic_cast(a)); - } catch (const std::bad_cast& e) { - return BaseVersion::operator>(a); - } -} - } // namespace Java diff --git a/launcher/ui/java/ListModel.h b/launcher/ui/java/ListModel.h index 3685d611d..a157e0e8d 100644 --- a/launcher/ui/java/ListModel.h +++ b/launcher/ui/java/ListModel.h @@ -18,9 +18,6 @@ #pragma once -#include -#include -#include #include "java/JavaRuntime.h" #include "meta/VersionList.h" @@ -33,26 +30,6 @@ class JavaBaseVersionList : public Meta::VersionList { BaseVersionList::RoleList providesRoles() const { return { VersionRole, RecommendedRole, VersionPointerRole }; } }; -struct JavaRuntime2 : public BaseVersion { - JavaRuntime2() {} - JavaRuntime2(JavaRuntime::MetaPtr m) : meta(m) {} - virtual QString descriptor() override { return meta->version.toString(); } - - virtual QString name() override { return meta->name; } - - virtual QString typeString() const override { return meta->vendor; } - - virtual bool operator<(BaseVersion& a) override; - virtual bool operator>(BaseVersion& a) override; - bool operator<(const JavaRuntime2& rhs); - bool operator==(const JavaRuntime2& rhs); - bool operator>(const JavaRuntime2& rhs); - - JavaRuntime::MetaPtr meta; -}; - -using JavaRuntimePtr = std::shared_ptr; - class InstallList : public BaseVersionList { Q_OBJECT @@ -73,60 +50,7 @@ class InstallList : public BaseVersionList { protected: Meta::Version::Ptr m_version; - QList m_vlist; + QList m_vlist; }; } // namespace Java -// class FilterModel : public QSortFilterProxyModel { -// Q_OBJECT -// public: -// FilterModel(QObject* parent = Q_NULLPTR); -// enum Sorting { ByName, ByGameVersion }; -// const QMap getAvailableSortings(); -// QString translateCurrentSorting(); -// void setSorting(Sorting sorting); -// Sorting getCurrentSorting(); -// void setSearchTerm(QString term); - -// protected: -// bool filterAcceptsRow(int sourceRow, const QModelIndex& sourceParent) const override; -// bool lessThan(const QModelIndex& left, const QModelIndex& right) const override; - -// private: -// QMap sortings; -// Sorting currentSorting; -// QString searchTerm; -// }; - -// class ListModel : public QAbstractListModel { -// Q_OBJECT -// private: -// ModpackList modpacks; -// QStringList m_failedLogos; -// QStringList m_loadingLogos; -// FTBLogoMap m_logoMap; -// QMap waitingCallbacks; - -// void requestLogo(QString file); -// QString translatePackType(PackType type) const; - -// private slots: -// void logoFailed(QString logo); -// void logoLoaded(QString logo, QIcon out); - -// public: -// ListModel(QObject* parent); -// ~ListModel(); -// int rowCount(const QModelIndex& parent) const override; -// int columnCount(const QModelIndex& parent) const override; -// QVariant data(const QModelIndex& index, int role) const override; -// Qt::ItemFlags flags(const QModelIndex& index) const override; - -// void fill(ModpackList modpacks); -// void addPack(Modpack modpack); -// void clear(); -// void remove(int row); - -// Modpack at(int row); -// void getLogo(const QString& logo, LogoCallback callback); -// }; From 3c58fb06776000808029e8cc4d5207bfd0f57321 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 2 Feb 2024 15:51:32 +0200 Subject: [PATCH 041/616] Moving files around Signed-off-by: Trial97 --- launcher/BaseVersionList.cpp | 4 +- launcher/BaseVersionList.h | 4 +- launcher/CMakeLists.txt | 22 ++-- launcher/VersionProxyModel.cpp | 26 ++--- launcher/VersionProxyModel.h | 2 +- launcher/java/JavaInstallList.cpp | 4 +- .../{JavaRuntime.cpp => JavaMetadata.cpp} | 24 ++-- .../java/{JavaRuntime.h => JavaMetadata.h} | 16 +-- ...Downloader.cpp => ArchiveDownloadTask.cpp} | 22 ++-- ...JavaDownloader.h => ArchiveDownloadTask.h} | 12 +- ...ownloader.cpp => ManifestDownloadTask.cpp} | 20 ++-- ...avaDownloader.h => ManifestDownloadTask.h} | 13 ++- launcher/meta/VersionList.cpp | 8 +- launcher/meta/VersionList.h | 5 + launcher/minecraft/OneSixVersionFormat.cpp | 6 +- launcher/minecraft/VersionFile.h | 4 +- launcher/ui/java/JavaDownload.cpp | 90 --------------- launcher/ui/java/JavaDownloader.cpp | 109 ++++++++++++++++++ .../java/{JavaDownload.h => JavaDownloader.h} | 13 ++- .../{JavaDownload.ui => JavaDownloader.ui} | 12 +- .../java/{ListModel.cpp => VersionList.cpp} | 32 ++--- .../ui/java/{ListModel.h => VersionList.h} | 18 +-- launcher/ui/pages/global/JavaPage.cpp | 4 +- .../pages/instance/InstanceSettingsPage.cpp | 4 +- launcher/ui/widgets/JavaSettingsWidget.cpp | 4 +- 25 files changed, 254 insertions(+), 224 deletions(-) rename launcher/java/{JavaRuntime.cpp => JavaMetadata.cpp} (86%) rename launcher/java/{JavaRuntime.h => JavaMetadata.h} (84%) rename launcher/java/download/{ArchiveJavaDownloader.cpp => ArchiveDownloadTask.cpp} (82%) rename launcher/java/download/{ArchiveJavaDownloader.h => ArchiveDownloadTask.h} (82%) rename launcher/java/download/{ManifestJavaDownloader.cpp => ManifestDownloadTask.cpp} (87%) rename launcher/java/download/{ManifestJavaDownloader.h => ManifestDownloadTask.h} (82%) delete mode 100644 launcher/ui/java/JavaDownload.cpp create mode 100644 launcher/ui/java/JavaDownloader.cpp rename launcher/ui/java/{JavaDownload.h => JavaDownloader.h} (84%) rename launcher/ui/java/{JavaDownload.ui => JavaDownloader.ui} (86%) rename launcher/ui/java/{ListModel.cpp => VersionList.cpp} (76%) rename launcher/ui/java/{ListModel.h => VersionList.h} (71%) diff --git a/launcher/BaseVersionList.cpp b/launcher/BaseVersionList.cpp index 576c3a413..afee8388a 100644 --- a/launcher/BaseVersionList.cpp +++ b/launcher/BaseVersionList.cpp @@ -110,7 +110,7 @@ QHash BaseVersionList::roleNames() const roles.insert(TypeRole, "type"); roles.insert(BranchRole, "branch"); roles.insert(PathRole, "path"); - roles.insert(AliasRole, "alias"); - roles.insert(ArchitectureRole, "architecture"); + roles.insert(JavaNameRole, "javaName"); + roles.insert(CPUArchitectureRole, "architecture"); return roles; } diff --git a/launcher/BaseVersionList.h b/launcher/BaseVersionList.h index c59d70570..bc37e9e53 100644 --- a/launcher/BaseVersionList.h +++ b/launcher/BaseVersionList.h @@ -48,8 +48,8 @@ class BaseVersionList : public QAbstractListModel { TypeRole, BranchRole, PathRole, - AliasRole, - ArchitectureRole, + JavaNameRole, + CPUArchitectureRole, SortRole }; using RoleList = QList; diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index d703b8263..c7945d1b8 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -431,17 +431,17 @@ set(JAVA_SOURCES java/JavaVersion.h java/JavaVersion.cpp - java/JavaRuntime.h - java/JavaRuntime.cpp - java/download/ArchiveJavaDownloader.cpp - java/download/ArchiveJavaDownloader.h - java/download/ManifestJavaDownloader.cpp - java/download/ManifestJavaDownloader.h + java/JavaMetadata.h + java/JavaMetadata.cpp + java/download/ArchiveDownloadTask.cpp + java/download/ArchiveDownloadTask.h + java/download/ManifestDownloadTask.cpp + java/download/ManifestDownloadTask.h - ui/java/JavaDownload.h - ui/java/JavaDownload.cpp - ui/java/ListModel.h - ui/java/ListModel.cpp + ui/java/JavaDownloader.h + ui/java/JavaDownloader.cpp + ui/java/VersionList.h + ui/java/VersionList.cpp ) set(TRANSLATIONS_SOURCES @@ -1192,7 +1192,7 @@ qt_wrap_ui(LAUNCHER_UI ui/dialogs/ScrollMessageBox.ui ui/dialogs/BlockedModsDialog.ui ui/dialogs/ChooseProviderDialog.ui - ui/java/JavaDownload.ui + ui/java/JavaDownloader.ui ) qt_wrap_ui(PRISM_UPDATE_UI diff --git a/launcher/VersionProxyModel.cpp b/launcher/VersionProxyModel.cpp index f1218f162..070e952a4 100644 --- a/launcher/VersionProxyModel.cpp +++ b/launcher/VersionProxyModel.cpp @@ -114,12 +114,12 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, return tr("Branch"); case Type: return tr("Type"); - case Architecture: + case CPUArchitecture: return tr("Architecture"); case Path: return tr("Path"); - case Alias: - return tr("Alias"); + case JavaName: + return tr("Java Name"); case Time: return tr("Released"); } @@ -133,11 +133,11 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, return tr("The version's branch"); case Type: return tr("The version's type"); - case Architecture: + case CPUArchitecture: return tr("CPU Architecture"); case Path: return tr("Filesystem path to this version"); - case Alias: + case JavaName: return tr("The alternative name of the java version"); case Time: return tr("Release date of this version"); @@ -169,12 +169,12 @@ QVariant VersionProxyModel::data(const QModelIndex& index, int role) const return sourceModel()->data(parentIndex, BaseVersionList::BranchRole); case Type: return sourceModel()->data(parentIndex, BaseVersionList::TypeRole); - case Architecture: - return sourceModel()->data(parentIndex, BaseVersionList::ArchitectureRole); + case CPUArchitecture: + return sourceModel()->data(parentIndex, BaseVersionList::CPUArchitectureRole); case Path: return sourceModel()->data(parentIndex, BaseVersionList::PathRole); - case Alias: - return sourceModel()->data(parentIndex, BaseVersionList::AliasRole); + case JavaName: + return sourceModel()->data(parentIndex, BaseVersionList::JavaNameRole); case Time: return sourceModel()->data(parentIndex, Meta::VersionList::TimeRole).toDate(); default: @@ -314,14 +314,14 @@ void VersionProxyModel::setSourceModel(QAbstractItemModel* replacingRaw) m_columns.push_back(ParentVersion); } */ - if (roles.contains(BaseVersionList::ArchitectureRole)) { - m_columns.push_back(Architecture); + if (roles.contains(BaseVersionList::CPUArchitectureRole)) { + m_columns.push_back(CPUArchitecture); } if (roles.contains(BaseVersionList::PathRole)) { m_columns.push_back(Path); } - if (roles.contains(BaseVersionList::AliasRole)) { - m_columns.push_back(Alias); + if (roles.contains(BaseVersionList::JavaNameRole)) { + m_columns.push_back(JavaName); } if (roles.contains(Meta::VersionList::TimeRole)) { m_columns.push_back(Time); diff --git a/launcher/VersionProxyModel.h b/launcher/VersionProxyModel.h index 2dc35a625..cb55b7f14 100644 --- a/launcher/VersionProxyModel.h +++ b/launcher/VersionProxyModel.h @@ -9,7 +9,7 @@ class VersionFilterModel; class VersionProxyModel : public QAbstractProxyModel { Q_OBJECT public: - enum Column { Name, ParentVersion, Branch, Type, Architecture, Path, Time, Alias }; + enum Column { Name, ParentVersion, Branch, Type, CPUArchitecture, Path, Time, JavaName }; using FilterMap = QHash>; public: diff --git a/launcher/java/JavaInstallList.cpp b/launcher/java/JavaInstallList.cpp index c14056964..d99201f24 100644 --- a/launcher/java/JavaInstallList.cpp +++ b/launcher/java/JavaInstallList.cpp @@ -108,7 +108,7 @@ QVariant JavaInstallList::data(const QModelIndex& index, int role) const return version->recommended; case PathRole: return version->path; - case ArchitectureRole: + case CPUArchitectureRole: return version->arch; default: return QVariant(); @@ -117,7 +117,7 @@ QVariant JavaInstallList::data(const QModelIndex& index, int role) const BaseVersionList::RoleList JavaInstallList::providesRoles() const { - return { VersionPointerRole, VersionIdRole, VersionRole, RecommendedRole, PathRole, ArchitectureRole }; + return { VersionPointerRole, VersionIdRole, VersionRole, RecommendedRole, PathRole, CPUArchitectureRole }; } void JavaInstallList::updateListData(QList versions) diff --git a/launcher/java/JavaRuntime.cpp b/launcher/java/JavaMetadata.cpp similarity index 86% rename from launcher/java/JavaRuntime.cpp rename to launcher/java/JavaMetadata.cpp index e88955772..b261122dc 100644 --- a/launcher/java/JavaRuntime.cpp +++ b/launcher/java/JavaMetadata.cpp @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -#include "java/JavaRuntime.h" +#include "java/JavaMetadata.h" #include @@ -25,7 +25,7 @@ #include "java/JavaVersion.h" #include "minecraft/ParseUtils.h" -namespace JavaRuntime { +namespace Java { DownloadType parseDownloadType(QString javaDownload) { @@ -44,9 +44,9 @@ QString downloadTypeToString(DownloadType javaDownload) } return ""; } -MetaPtr parseJavaMeta(const QJsonObject& in) +MetadataPtr parseJavaMeta(const QJsonObject& in) { - auto meta = std::make_shared(); + auto meta = std::make_shared(); meta->m_name = Json::ensureString(in, "name", ""); meta->vendor = Json::ensureString(in, "vendor", ""); @@ -74,7 +74,7 @@ MetaPtr parseJavaMeta(const QJsonObject& in) return meta; } -bool Meta::operator<(const Meta& rhs) +bool Metadata::operator<(const Metadata& rhs) { auto id = version; if (id < rhs.version) { @@ -86,32 +86,32 @@ bool Meta::operator<(const Meta& rhs) return StringUtils::naturalCompare(m_name, rhs.m_name, Qt::CaseInsensitive) < 0; } -bool Meta::operator==(const Meta& rhs) +bool Metadata::operator==(const Metadata& rhs) { return version == rhs.version && m_name == rhs.m_name; } -bool Meta::operator>(const Meta& rhs) +bool Metadata::operator>(const Metadata& rhs) { return (!operator<(rhs)) && (!operator==(rhs)); } -bool Meta::operator<(BaseVersion& a) +bool Metadata::operator<(BaseVersion& a) { try { - return operator<(dynamic_cast(a)); + return operator<(dynamic_cast(a)); } catch (const std::bad_cast& e) { return BaseVersion::operator<(a); } } -bool Meta::operator>(BaseVersion& a) +bool Metadata::operator>(BaseVersion& a) { try { - return operator>(dynamic_cast(a)); + return operator>(dynamic_cast(a)); } catch (const std::bad_cast& e) { return BaseVersion::operator>(a); } } -} // namespace JavaRuntime +} // namespace Java diff --git a/launcher/java/JavaRuntime.h b/launcher/java/JavaMetadata.h similarity index 84% rename from launcher/java/JavaRuntime.h rename to launcher/java/JavaMetadata.h index 654ba030a..dd3ae865c 100644 --- a/launcher/java/JavaRuntime.h +++ b/launcher/java/JavaMetadata.h @@ -26,11 +26,11 @@ #include "BaseVersion.h" #include "java/JavaVersion.h" -namespace JavaRuntime { +namespace Java { enum class DownloadType { Manifest, Archive }; -class Meta : public BaseVersion { +class Metadata : public BaseVersion { public: virtual QString descriptor() override { return version.toString(); } @@ -40,9 +40,9 @@ class Meta : public BaseVersion { virtual bool operator<(BaseVersion& a) override; virtual bool operator>(BaseVersion& a) override; - bool operator<(const Meta& rhs); - bool operator==(const Meta& rhs); - bool operator>(const Meta& rhs); + bool operator<(const Metadata& rhs); + bool operator==(const Metadata& rhs); + bool operator>(const Metadata& rhs); QString m_name; QString vendor; @@ -55,10 +55,10 @@ class Meta : public BaseVersion { QString packageType; JavaVersion version; }; -using MetaPtr = std::shared_ptr; +using MetadataPtr = std::shared_ptr; DownloadType parseDownloadType(QString javaDownload); QString downloadTypeToString(DownloadType javaDownload); -MetaPtr parseJavaMeta(const QJsonObject& libObj); +MetadataPtr parseJavaMeta(const QJsonObject& libObj); -} // namespace JavaRuntime \ No newline at end of file +} // namespace Java \ No newline at end of file diff --git a/launcher/java/download/ArchiveJavaDownloader.cpp b/launcher/java/download/ArchiveDownloadTask.cpp similarity index 82% rename from launcher/java/download/ArchiveJavaDownloader.cpp rename to launcher/java/download/ArchiveDownloadTask.cpp index cb642357a..847f3f364 100644 --- a/launcher/java/download/ArchiveJavaDownloader.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "java/download/ArchiveJavaDownloader.h" +#include "java/download/ArchiveDownloadTask.h" #include #include #include "MMCZip.h" @@ -25,11 +25,12 @@ #include "net/NetJob.h" #include "tasks/Task.h" -ArchiveJavaDownloader::ArchiveJavaDownloader(QUrl url, QString final_path, QString checksumType, QString checksumHash) +namespace Java { +ArchiveDownloadTask::ArchiveDownloadTask(QUrl url, QString final_path, QString checksumType, QString checksumHash) : m_url(url), m_final_path(final_path), m_checksum_type(checksumType), m_checksum_hash(checksumHash) {} -void ArchiveJavaDownloader::executeTask() +void ArchiveDownloadTask::executeTask() { // JRE found ! download the zip setStatus(tr("Downloading Java")); @@ -49,8 +50,8 @@ void ArchiveJavaDownloader::executeTask() auto fullPath = entry->getFullPath(); connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); - connect(download.get(), &NetJob::progress, this, &ArchiveJavaDownloader::progress); - connect(download.get(), &NetJob::failed, this, &ArchiveJavaDownloader::emitFailed); + connect(download.get(), &NetJob::progress, this, &ArchiveDownloadTask::progress); + connect(download.get(), &NetJob::failed, this, &ArchiveDownloadTask::emitFailed); connect(this, &Task::aborted, download.get(), &NetJob::abort); connect(download.get(), &NetJob::succeeded, [this, fullPath] { // This should do all of the extracting and creating folders @@ -59,7 +60,7 @@ void ArchiveJavaDownloader::executeTask() download->start(); } -void ArchiveJavaDownloader::extractJava(QString input) +void ArchiveDownloadTask::extractJava(QString input) { setStatus(tr("Extracting java")); auto zip = std::make_shared(input); @@ -79,14 +80,14 @@ void ArchiveJavaDownloader::extractJava(QString input) connect(this, &Task::aborted, zipTask.get(), &Task::abort); connect(zipTask.get(), &Task::finished, [zipTask, this] { disconnect(this, &Task::aborted, zipTask.get(), &Task::abort); }); - connect(zipTask.get(), &Task::succeeded, this, &ArchiveJavaDownloader::emitSucceeded); - connect(zipTask.get(), &Task::aborted, this, &ArchiveJavaDownloader::emitAborted); + connect(zipTask.get(), &Task::succeeded, this, &ArchiveDownloadTask::emitSucceeded); + connect(zipTask.get(), &Task::aborted, this, &ArchiveDownloadTask::emitAborted); connect(zipTask.get(), &Task::failed, this, [this, progressStep](QString reason) { progressStep->state = TaskStepState::Failed; stepProgress(*progressStep); emitFailed(reason); }); - connect(zipTask.get(), &Task::stepProgress, this, &ArchiveJavaDownloader::propagateStepProgress); + connect(zipTask.get(), &Task::stepProgress, this, &ArchiveDownloadTask::propagateStepProgress); connect(zipTask.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) { progressStep->update(current, total); @@ -97,4 +98,5 @@ void ArchiveJavaDownloader::extractJava(QString input) stepProgress(*progressStep); }); zipTask->start(); -} \ No newline at end of file +} +} // namespace Java \ No newline at end of file diff --git a/launcher/java/download/ArchiveJavaDownloader.h b/launcher/java/download/ArchiveDownloadTask.h similarity index 82% rename from launcher/java/download/ArchiveJavaDownloader.h rename to launcher/java/download/ArchiveDownloadTask.h index 230f62b4d..88c0223d5 100644 --- a/launcher/java/download/ArchiveJavaDownloader.h +++ b/launcher/java/download/ArchiveDownloadTask.h @@ -21,11 +21,12 @@ #include #include "tasks/Task.h" -class ArchiveJavaDownloader : public Task { +namespace Java { +class ArchiveDownloadTask : public Task { Q_OBJECT public: - ArchiveJavaDownloader(QUrl url, QString final_path, QString checksumType = "", QString checksumHash = ""); - virtual ~ArchiveJavaDownloader() = default; + ArchiveDownloadTask(QUrl url, QString final_path, QString checksumType = "", QString checksumHash = ""); + virtual ~ArchiveDownloadTask() = default; [[nodiscard]] bool canAbort() const override { return true; } void executeTask() override; @@ -38,6 +39,5 @@ class ArchiveJavaDownloader : public Task { QString m_final_path; QString m_checksum_type; QString m_checksum_hash; - - Task::Ptr m_current_task; -}; \ No newline at end of file +}; +} // namespace Java \ No newline at end of file diff --git a/launcher/java/download/ManifestJavaDownloader.cpp b/launcher/java/download/ManifestDownloadTask.cpp similarity index 87% rename from launcher/java/download/ManifestJavaDownloader.cpp rename to launcher/java/download/ManifestDownloadTask.cpp index c0b7942a7..1a3071530 100644 --- a/launcher/java/download/ManifestJavaDownloader.cpp +++ b/launcher/java/download/ManifestDownloadTask.cpp @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ -#include "java/download/ManifestJavaDownloader.h" +#include "java/download/ManifestDownloadTask.h" #include "Application.h" #include "FileSystem.h" @@ -30,11 +30,12 @@ struct File { bool isExec; }; -ManifestJavaDownloader::ManifestJavaDownloader(QUrl url, QString final_path, QString checksumType, QString checksumHash) +namespace Java { +ManifestDownloadTask::ManifestDownloadTask(QUrl url, QString final_path, QString checksumType, QString checksumHash) : m_url(url), m_final_path(final_path), m_checksum_type(checksumType), m_checksum_hash(checksumHash) {} -void ManifestJavaDownloader::executeTask() +void ManifestDownloadTask::executeTask() { setStatus(tr("Downloading Java")); auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); @@ -51,8 +52,8 @@ void ManifestJavaDownloader::executeTask() download->addNetAction(action); connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); - connect(download.get(), &NetJob::progress, this, &ManifestJavaDownloader::progress); - connect(download.get(), &NetJob::failed, this, &ManifestJavaDownloader::emitFailed); + connect(download.get(), &NetJob::progress, this, &ManifestDownloadTask::progress); + connect(download.get(), &NetJob::failed, this, &ManifestDownloadTask::emitFailed); connect(this, &Task::aborted, download.get(), &NetJob::abort); connect(download.get(), &NetJob::succeeded, [files, this] { @@ -69,7 +70,7 @@ void ManifestJavaDownloader::executeTask() download->start(); } -void ManifestJavaDownloader::downloadJava(const QJsonDocument& doc) +void ManifestDownloadTask::downloadJava(const QJsonDocument& doc) { // valid json doc, begin making jre spot FS::ensureFolderPathExists(m_final_path); @@ -116,10 +117,11 @@ void ManifestJavaDownloader::downloadJava(const QJsonDocument& doc) disconnect(this, &Task::aborted, elementDownload, &NetJob::abort); elementDownload->deleteLater(); }); - connect(elementDownload, &NetJob::progress, this, &ManifestJavaDownloader::progress); - connect(elementDownload, &NetJob::failed, this, &ManifestJavaDownloader::emitFailed); + connect(elementDownload, &NetJob::progress, this, &ManifestDownloadTask::progress); + connect(elementDownload, &NetJob::failed, this, &ManifestDownloadTask::emitFailed); connect(this, &Task::aborted, elementDownload, &NetJob::abort); connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); elementDownload->start(); -} \ No newline at end of file +} +} // namespace Java \ No newline at end of file diff --git a/launcher/java/download/ManifestJavaDownloader.h b/launcher/java/download/ManifestDownloadTask.h similarity index 82% rename from launcher/java/download/ManifestJavaDownloader.h rename to launcher/java/download/ManifestDownloadTask.h index d7114f4bd..dcfee4d4d 100644 --- a/launcher/java/download/ManifestJavaDownloader.h +++ b/launcher/java/download/ManifestDownloadTask.h @@ -21,11 +21,13 @@ #include #include "tasks/Task.h" -class ManifestJavaDownloader : public Task { +namespace Java { + +class ManifestDownloadTask : public Task { Q_OBJECT public: - ManifestJavaDownloader(QUrl url, QString final_path, QString checksumType = "", QString checksumHash = ""); - virtual ~ManifestJavaDownloader() = default; + ManifestDownloadTask(QUrl url, QString final_path, QString checksumType = "", QString checksumHash = ""); + virtual ~ManifestDownloadTask() = default; [[nodiscard]] bool canAbort() const override { return true; } void executeTask() override; @@ -38,6 +40,5 @@ class ManifestJavaDownloader : public Task { QString m_final_path; QString m_checksum_type; QString m_checksum_hash; - - Task::Ptr m_current_task; -}; \ No newline at end of file +}; +} // namespace Java \ No newline at end of file diff --git a/launcher/meta/VersionList.cpp b/launcher/meta/VersionList.cpp index 7b7ae1fa3..76b914b6a 100644 --- a/launcher/meta/VersionList.cpp +++ b/launcher/meta/VersionList.cpp @@ -101,10 +101,14 @@ QVariant VersionList::data(const QModelIndex& index, int role) const BaseVersionList::RoleList VersionList::providesRoles() const { - return { VersionPointerRole, VersionRole, VersionIdRole, ParentVersionRole, TypeRole, UidRole, - TimeRole, RequiresRole, SortRole, RecommendedRole, LatestRole, VersionPtrRole }; + return m_provided_roles; } +void VersionList::setProvidedRoles(RoleList roles) +{ + m_provided_roles = roles; +}; + QHash VersionList::roleNames() const { QHash roles = BaseVersionList::roleNames(); diff --git a/launcher/meta/VersionList.h b/launcher/meta/VersionList.h index 2c5624701..0890caf60 100644 --- a/launcher/meta/VersionList.h +++ b/launcher/meta/VersionList.h @@ -47,6 +47,8 @@ class VersionList : public BaseVersionList, public BaseEntity { RoleList providesRoles() const override; QHash roleNames() const override; + void setProvidedRoles(RoleList roles); + QString localFilename() const override; QString uid() const { return m_uid; } @@ -79,6 +81,9 @@ class VersionList : public BaseVersionList, public BaseEntity { Version::Ptr m_recommended; + RoleList m_provided_roles = { VersionPointerRole, VersionRole, VersionIdRole, ParentVersionRole, TypeRole, UidRole, + TimeRole, RequiresRole, SortRole, RecommendedRole, LatestRole, VersionPtrRole }; + void setupAddedVersion(int row, const Version::Ptr& version); }; } // namespace Meta diff --git a/launcher/minecraft/OneSixVersionFormat.cpp b/launcher/minecraft/OneSixVersionFormat.cpp index 5f3b4f2a2..56e9c8ca2 100644 --- a/launcher/minecraft/OneSixVersionFormat.cpp +++ b/launcher/minecraft/OneSixVersionFormat.cpp @@ -37,7 +37,7 @@ #include #include #include -#include "java/JavaRuntime.h" +#include "java/JavaMetadata.h" #include "minecraft/Agent.h" #include "minecraft/ParseUtils.h" @@ -261,9 +261,9 @@ VersionFilePtr OneSixVersionFormat::versionFileFromJson(const QJsonDocument& doc auto runtimes = requireObject(root, "runtimes"); out->runtimes = {}; for (auto key : runtimes.keys()) { - QList list; + QList list; for (auto runtime : ensureArray(runtimes, key)) { - list.append(JavaRuntime::parseJavaMeta(ensureObject(runtime))); + list.append(Java::parseJavaMeta(ensureObject(runtime))); } out->runtimes[key] = list; } diff --git a/launcher/minecraft/VersionFile.h b/launcher/minecraft/VersionFile.h index 297c19709..a9c1473d2 100644 --- a/launcher/minecraft/VersionFile.h +++ b/launcher/minecraft/VersionFile.h @@ -47,7 +47,7 @@ #include "Agent.h" #include "Library.h" #include "ProblemProvider.h" -#include "java/JavaRuntime.h" +#include "java/JavaMetadata.h" #include "minecraft/Rule.h" class PackProfile; @@ -155,7 +155,7 @@ class VersionFile : public ProblemContainer { /// is volatile -- may be removed as soon as it is no longer needed by something else bool m_volatile = false; - QHash> runtimes; + QHash> runtimes; public: // Mojang: DEPRECATED list of 'downloads' - client jar, server jar, windows server exe, maybe more. diff --git a/launcher/ui/java/JavaDownload.cpp b/launcher/ui/java/JavaDownload.cpp deleted file mode 100644 index bae61a060..000000000 --- a/launcher/ui/java/JavaDownload.cpp +++ /dev/null @@ -1,90 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (c) 2024 Trial97 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "JavaDownload.h" - -#include - -#include - -#include "Application.h" -#include "FileSystem.h" -#include "QObjectPtr.h" -#include "SysInfo.h" - -#include "java/JavaRuntime.h" -#include "java/download/ArchiveJavaDownloader.h" -#include "java/download/ManifestJavaDownloader.h" - -#include "meta/Index.h" -#include "meta/Version.h" - -#include "ui/dialogs/ProgressDialog.h" -#include "ui/java/ListModel.h" -#include "ui_JavaDownload.h" - -JavaDownload::JavaDownload(QWidget* parent) : QDialog(parent), ui(new Ui::JavaDownload) -{ - ui->setupUi(this); - ui->widget->initialize(new Java::JavaBaseVersionList("net.minecraft.java")); - ui->widget->selectCurrent(); - connect(ui->widget, &VersionSelectWidget::selectedVersionChanged, this, &JavaDownload::setSelectedVersion); - auto reset = ui->buttonBox->button(QDialogButtonBox::Reset); - connect(reset, &QPushButton::clicked, this, &JavaDownload::refresh); -} - -JavaDownload::~JavaDownload() -{ - delete ui; -} - -void JavaDownload::setSelectedVersion(BaseVersion::Ptr version) -{ - auto dcast = std::dynamic_pointer_cast(version); - if (!dcast) { - return; - } - ui->widget_2->initialize(new Java::InstallList(dcast, this)); - ui->widget_2->selectCurrent(); -} - -void JavaDownload::accept() -{ - auto meta = std::dynamic_pointer_cast(ui->widget_2->selectedVersion()); - if (!meta) { - return; - } - Task::Ptr task; - auto final_path = FS::PathCombine(APPLICATION->dataRoot(), "java", meta->m_name); - switch (meta->downloadType) { - case JavaRuntime::DownloadType::Manifest: - task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); - break; - case JavaRuntime::DownloadType::Archive: - task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); - break; - } - ProgressDialog pg(this); - pg.execWithTask(task.get()); - QDialog::accept(); -} - -void JavaDownload::refresh() -{ - ui->widget->loadList(); -} diff --git a/launcher/ui/java/JavaDownloader.cpp b/launcher/ui/java/JavaDownloader.cpp new file mode 100644 index 000000000..9121988da --- /dev/null +++ b/launcher/ui/java/JavaDownloader.cpp @@ -0,0 +1,109 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "JavaDownloader.h" + +#include + +#include + +#include "Application.h" +#include "BaseVersionList.h" +#include "FileSystem.h" +#include "QObjectPtr.h" +#include "SysInfo.h" + +#include "java/JavaMetadata.h" +#include "java/download/ArchiveDownloadTask.h" +#include "java/download/ManifestDownloadTask.h" + +#include "meta/Index.h" +#include "meta/Version.h" + +#include "meta/VersionList.h" +#include "ui/dialogs/ProgressDialog.h" +#include "ui/java/VersionList.h" +#include "ui_JavaDownloader.h" + +namespace Java { + +Downloader::Downloader(QWidget* parent) : QDialog(parent), ui(new Ui::JavaDownloader) +{ + ui->setupUi(this); + auto versionList = new Meta::VersionList("net.minecraft.java", this); + versionList->setProvidedRoles({ BaseVersionList::VersionRole, BaseVersionList::RecommendedRole, BaseVersionList::VersionPointerRole }); + ui->majorVersionSelect->initialize(versionList); + ui->majorVersionSelect->selectCurrent(); + ui->majorVersionSelect->setEmptyString(tr("No java versions are currently available in the meta")); + ui->majorVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); + + ui->javaVersionSelect->setEmptyString(tr("No java versions are currently available for your OS.")); + ui->javaVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); + + ui->buttonBox->button(QDialogButtonBox::Retry)->setText(tr("Refresh")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Download")); + + connect(ui->majorVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &Downloader::setSelectedVersion); + auto reset = ui->buttonBox->button(QDialogButtonBox::Reset); + connect(reset, &QPushButton::clicked, this, &Downloader::refresh); +} + +Downloader::~Downloader() +{ + delete ui; +} + +void Downloader::setSelectedVersion(BaseVersion::Ptr version) +{ + auto dcast = std::dynamic_pointer_cast(version); + if (!dcast) { + return; + } + ui->javaVersionSelect->initialize(new Java::VersionList(dcast, this)); + ui->javaVersionSelect->selectCurrent(); +} + +void Downloader::accept() +{ + auto meta = std::dynamic_pointer_cast(ui->javaVersionSelect->selectedVersion()); + if (!meta) { + return; + } + Task::Ptr task; + auto final_path = FS::PathCombine(APPLICATION->dataRoot(), "java", meta->m_name); + switch (meta->downloadType) { + case Java::DownloadType::Manifest: + task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); + break; + case Java::DownloadType::Archive: + task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); + break; + } + auto deletePath = [final_path] { FS::deletePath(final_path); }; + connect(task.get(), &Task::failed, this, deletePath); + connect(task.get(), &Task::aborted, this, deletePath); + ProgressDialog pg(this); + pg.execWithTask(task.get()); + QDialog::accept(); +} + +void Downloader::refresh() +{ + ui->majorVersionSelect->loadList(); +} +} // namespace Java diff --git a/launcher/ui/java/JavaDownload.h b/launcher/ui/java/JavaDownloader.h similarity index 84% rename from launcher/ui/java/JavaDownload.h rename to launcher/ui/java/JavaDownloader.h index de0916ae5..b8bdde41a 100644 --- a/launcher/ui/java/JavaDownload.h +++ b/launcher/ui/java/JavaDownloader.h @@ -22,15 +22,17 @@ #include "BaseVersion.h" namespace Ui { -class JavaDownload; +class JavaDownloader; } -class JavaDownload : public QDialog { +namespace Java { + +class Downloader : public QDialog { Q_OBJECT public: - explicit JavaDownload(QWidget* parent = 0); - ~JavaDownload(); + explicit Downloader(QWidget* parent = 0); + ~Downloader(); void accept(); @@ -41,5 +43,6 @@ class JavaDownload : public QDialog { void setSelectedVersion(BaseVersion::Ptr version); private: - Ui::JavaDownload* ui; + Ui::JavaDownloader* ui; }; +} // namespace Java diff --git a/launcher/ui/java/JavaDownload.ui b/launcher/ui/java/JavaDownloader.ui similarity index 86% rename from launcher/ui/java/JavaDownload.ui rename to launcher/ui/java/JavaDownloader.ui index bbc638e9b..0eeabb26d 100644 --- a/launcher/ui/java/JavaDownload.ui +++ b/launcher/ui/java/JavaDownloader.ui @@ -1,7 +1,7 @@ - JavaDownload - + JavaDownloader + 0 @@ -23,7 +23,7 @@ - + @@ -35,7 +35,7 @@
- +
@@ -67,7 +67,7 @@ buttonBox accepted() - JavaDownload + JavaDownloader accept() @@ -83,7 +83,7 @@ buttonBox rejected() - JavaDownload + JavaDownloader reject() diff --git a/launcher/ui/java/ListModel.cpp b/launcher/ui/java/VersionList.cpp similarity index 76% rename from launcher/ui/java/ListModel.cpp rename to launcher/ui/java/VersionList.cpp index 11cd01130..31353f2f7 100644 --- a/launcher/ui/java/ListModel.cpp +++ b/launcher/ui/java/VersionList.cpp @@ -16,46 +16,46 @@ * along with this program. If not, see . */ -#include "ListModel.h" +#include "VersionList.h" #include #include "BaseVersionList.h" #include "SysInfo.h" -#include "java/JavaRuntime.h" +#include "java/JavaMetadata.h" namespace Java { -InstallList::InstallList(Meta::Version::Ptr version, QObject* parent) : BaseVersionList(parent), m_version(version) +VersionList::VersionList(Meta::Version::Ptr version, QObject* parent) : BaseVersionList(parent), m_version(version) { if (version->isLoaded()) sortVersions(); } -Task::Ptr InstallList::getLoadTask() +Task::Ptr VersionList::getLoadTask() { m_version->load(Net::Mode::Online); auto task = m_version->getCurrentTask(); - connect(task.get(), &Task::finished, this, &InstallList::sortVersions); + connect(task.get(), &Task::finished, this, &VersionList::sortVersions); return task; } -const BaseVersion::Ptr InstallList::at(int i) const +const BaseVersion::Ptr VersionList::at(int i) const { return m_vlist.at(i); } -bool InstallList::isLoaded() +bool VersionList::isLoaded() { return m_version->isLoaded(); } -int InstallList::count() const +int VersionList::count() const { return m_vlist.count(); } -QVariant InstallList::data(const QModelIndex& index, int role) const +QVariant VersionList::data(const QModelIndex& index, int role) const { if (!index.isValid()) return QVariant(); @@ -75,28 +75,28 @@ QVariant InstallList::data(const QModelIndex& index, int role) const return version->version.toString(); case RecommendedRole: return version->recommended; - case AliasRole: + case JavaNameRole: return version->name(); - case ArchitectureRole: + case CPUArchitectureRole: return version->vendor; default: return QVariant(); } } -BaseVersionList::RoleList InstallList::providesRoles() const +BaseVersionList::RoleList VersionList::providesRoles() const { - return { VersionPointerRole, VersionIdRole, VersionRole, RecommendedRole, AliasRole, ArchitectureRole }; + return { VersionPointerRole, VersionIdRole, VersionRole, RecommendedRole, JavaNameRole, CPUArchitectureRole }; } bool sortJavas(BaseVersion::Ptr left, BaseVersion::Ptr right) { - auto rleft = std::dynamic_pointer_cast(right); - auto rright = std::dynamic_pointer_cast(left); + auto rleft = std::dynamic_pointer_cast(right); + auto rright = std::dynamic_pointer_cast(left); return (*rleft) > (*rright); } -void InstallList::sortVersions() +void VersionList::sortVersions() { QString versionStr = SysInfo::getSupportedJavaArchitecture(); beginResetModel(); diff --git a/launcher/ui/java/ListModel.h b/launcher/ui/java/VersionList.h similarity index 71% rename from launcher/ui/java/ListModel.h rename to launcher/ui/java/VersionList.h index a157e0e8d..d334ed564 100644 --- a/launcher/ui/java/ListModel.h +++ b/launcher/ui/java/VersionList.h @@ -18,23 +18,17 @@ #pragma once -#include "java/JavaRuntime.h" -#include "meta/VersionList.h" +#include "BaseVersionList.h" +#include "java/JavaMetadata.h" +#include "meta/Version.h" namespace Java { -class JavaBaseVersionList : public Meta::VersionList { - Q_OBJECT - public: - explicit JavaBaseVersionList(const QString& uid, QObject* parent = nullptr) : VersionList(uid, parent) {} - BaseVersionList::RoleList providesRoles() const { return { VersionRole, RecommendedRole, VersionPointerRole }; } -}; - -class InstallList : public BaseVersionList { +class VersionList : public BaseVersionList { Q_OBJECT public: - explicit InstallList(Meta::Version::Ptr m_version, QObject* parent = 0); + explicit VersionList(Meta::Version::Ptr m_version, QObject* parent = 0); Task::Ptr getLoadTask() override; bool isLoaded() override; @@ -50,7 +44,7 @@ class InstallList : public BaseVersionList { protected: Meta::Version::Ptr m_version; - QList m_vlist; + QList m_vlist; }; } // namespace Java diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 09c951a3c..9b21aad72 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -36,7 +36,7 @@ #include "JavaPage.h" #include "JavaCommon.h" -#include "ui/java/JavaDownload.h" +#include "ui/java/JavaDownloader.h" #include "ui_JavaPage.h" #include @@ -169,7 +169,7 @@ void JavaPage::on_javaTestBtn_clicked() void JavaPage::on_javaDownloadBtn_clicked() { - auto jdialog = new JavaDownload(this); + auto jdialog = new Java::Downloader(this); jdialog->exec(); } diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index df380bfb3..b962406d1 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -36,7 +36,7 @@ */ #include "InstanceSettingsPage.h" -#include "ui/java/JavaDownload.h" +#include "ui/java/JavaDownloader.h" #include "ui_InstanceSettingsPage.h" #include @@ -387,7 +387,7 @@ void InstanceSettingsPage::loadSettings() void InstanceSettingsPage::on_javaDownloadBtn_clicked() { - auto jdialog = new JavaDownload(this); + auto jdialog = new Java::Downloader(this); jdialog->exec(); } diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index d6fbf00a3..3f4fe08ea 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -19,7 +19,7 @@ #include "java/JavaUtils.h" #include "ui/dialogs/CustomMessageBox.h" -#include "ui/java/JavaDownload.h" +#include "ui/java/JavaDownloader.h" #include "ui/widgets/VersionSelectWidget.h" #include "Application.h" @@ -274,7 +274,7 @@ void JavaSettingsWidget::on_javaBrowseBtn_clicked() } void JavaSettingsWidget::on_javaDownloadBtn_clicked() { - auto jdialog = new JavaDownload(this); + auto jdialog = new Java::Downloader(this); jdialog->exec(); } void JavaSettingsWidget::on_javaStatusBtn_clicked() From 0384e652fb42ea18526a168a2370f8431cdcbc0f Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 2 Feb 2024 22:42:42 +0200 Subject: [PATCH 042/616] Finished up the download dialog Signed-off-by: Trial97 --- launcher/BaseVersionList.cpp | 1 + launcher/BaseVersionList.h | 1 + launcher/VersionProxyModel.cpp | 9 +++++++++ launcher/VersionProxyModel.h | 2 +- launcher/ui/java/VersionList.cpp | 11 +++++++++-- 5 files changed, 21 insertions(+), 3 deletions(-) diff --git a/launcher/BaseVersionList.cpp b/launcher/BaseVersionList.cpp index afee8388a..1456a17bd 100644 --- a/launcher/BaseVersionList.cpp +++ b/launcher/BaseVersionList.cpp @@ -112,5 +112,6 @@ QHash BaseVersionList::roleNames() const roles.insert(PathRole, "path"); roles.insert(JavaNameRole, "javaName"); roles.insert(CPUArchitectureRole, "architecture"); + roles.insert(JavaVendorRole, "javaVendor"); return roles; } diff --git a/launcher/BaseVersionList.h b/launcher/BaseVersionList.h index bc37e9e53..7517c71b4 100644 --- a/launcher/BaseVersionList.h +++ b/launcher/BaseVersionList.h @@ -50,6 +50,7 @@ class BaseVersionList : public QAbstractListModel { PathRole, JavaNameRole, CPUArchitectureRole, + JavaVendorRole, SortRole }; using RoleList = QList; diff --git a/launcher/VersionProxyModel.cpp b/launcher/VersionProxyModel.cpp index 070e952a4..ed4c0767d 100644 --- a/launcher/VersionProxyModel.cpp +++ b/launcher/VersionProxyModel.cpp @@ -116,6 +116,8 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, return tr("Type"); case CPUArchitecture: return tr("Architecture"); + case JavaVendor: + return tr("Vendor"); case Path: return tr("Path"); case JavaName: @@ -135,6 +137,8 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, return tr("The version's type"); case CPUArchitecture: return tr("CPU Architecture"); + case JavaVendor: + return tr("Java vendor"); case Path: return tr("Filesystem path to this version"); case JavaName: @@ -171,6 +175,8 @@ QVariant VersionProxyModel::data(const QModelIndex& index, int role) const return sourceModel()->data(parentIndex, BaseVersionList::TypeRole); case CPUArchitecture: return sourceModel()->data(parentIndex, BaseVersionList::CPUArchitectureRole); + case JavaVendor: + return sourceModel()->data(parentIndex, BaseVersionList::JavaVendorRole); case Path: return sourceModel()->data(parentIndex, BaseVersionList::PathRole); case JavaName: @@ -317,6 +323,9 @@ void VersionProxyModel::setSourceModel(QAbstractItemModel* replacingRaw) if (roles.contains(BaseVersionList::CPUArchitectureRole)) { m_columns.push_back(CPUArchitecture); } + if (roles.contains(BaseVersionList::JavaVendorRole)) { + m_columns.push_back(JavaVendor); + } if (roles.contains(BaseVersionList::PathRole)) { m_columns.push_back(Path); } diff --git a/launcher/VersionProxyModel.h b/launcher/VersionProxyModel.h index cb55b7f14..5a1017bee 100644 --- a/launcher/VersionProxyModel.h +++ b/launcher/VersionProxyModel.h @@ -9,7 +9,7 @@ class VersionFilterModel; class VersionProxyModel : public QAbstractProxyModel { Q_OBJECT public: - enum Column { Name, ParentVersion, Branch, Type, CPUArchitecture, Path, Time, JavaName }; + enum Column { Name, ParentVersion, Branch, Type, CPUArchitecture, Path, Time, JavaName, JavaVendor }; using FilterMap = QHash>; public: diff --git a/launcher/ui/java/VersionList.cpp b/launcher/ui/java/VersionList.cpp index 31353f2f7..7c5668d20 100644 --- a/launcher/ui/java/VersionList.cpp +++ b/launcher/ui/java/VersionList.cpp @@ -23,6 +23,7 @@ #include "BaseVersionList.h" #include "SysInfo.h" #include "java/JavaMetadata.h" +#include "meta/VersionList.h" namespace Java { @@ -77,8 +78,12 @@ QVariant VersionList::data(const QModelIndex& index, int role) const return version->recommended; case JavaNameRole: return version->name(); - case CPUArchitectureRole: + case JavaVendorRole: return version->vendor; + case TypeRole: + return version->packageType; + case Meta::VersionList::TimeRole: + return version->releaseTime; default: return QVariant(); } @@ -86,7 +91,8 @@ QVariant VersionList::data(const QModelIndex& index, int role) const BaseVersionList::RoleList VersionList::providesRoles() const { - return { VersionPointerRole, VersionIdRole, VersionRole, RecommendedRole, JavaNameRole, CPUArchitectureRole }; + return { VersionPointerRole, VersionIdRole, VersionRole, RecommendedRole, + JavaNameRole, JavaVendorRole, TypeRole, Meta::VersionList::TimeRole }; } bool sortJavas(BaseVersion::Ptr left, BaseVersion::Ptr right) @@ -106,6 +112,7 @@ void VersionList::sortVersions() std::sort(m_vlist.begin(), m_vlist.end(), sortJavas); } else { m_vlist = {}; + qWarning() << "Your operating system is not yet supported: " << SysInfo::currentSystem() << " " << SysInfo::useQTForArch(); } endResetModel(); } From 82b15268bc8566be4b320c24b41113f8f25c2204 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 3 Feb 2024 00:11:05 +0200 Subject: [PATCH 043/616] preparing java autodownload Signed-off-by: Trial97 --- launcher/java/JavaVersion.h | 10 +++++----- launcher/minecraft/LaunchProfile.cpp | 9 +++++++++ launcher/minecraft/LaunchProfile.h | 4 ++++ launcher/minecraft/VersionFile.cpp | 1 + launcher/ui/java/JavaDownloader.cpp | 6 +++--- 5 files changed, 22 insertions(+), 8 deletions(-) diff --git a/launcher/java/JavaVersion.h b/launcher/java/JavaVersion.h index 92c743bfb..dfb4770da 100644 --- a/launcher/java/JavaVersion.h +++ b/launcher/java/JavaVersion.h @@ -30,11 +30,11 @@ class JavaVersion { QString toString() const; - int major() { return m_major; } - int minor() { return m_minor; } - int security() { return m_security; } - QString build() { return m_prerelease; } - QString name() { return m_name; } + int major() const { return m_major; } + int minor() const { return m_minor; } + int security() const { return m_security; } + QString build() const { return m_prerelease; } + QString name() const { return m_name; } private: QString m_string; diff --git a/launcher/minecraft/LaunchProfile.cpp b/launcher/minecraft/LaunchProfile.cpp index cf819b411..77072472c 100644 --- a/launcher/minecraft/LaunchProfile.cpp +++ b/launcher/minecraft/LaunchProfile.cpp @@ -164,6 +164,10 @@ void LaunchProfile::applyCompatibleJavaMajors(QList& javaMajor) { m_compatibleJavaMajors.append(javaMajor); } +void LaunchProfile::applyCompatibleJavaName(QString javaName) +{ + m_compatibleJavaName = javaName; +} void LaunchProfile::applyLibrary(LibraryPtr library, const RuntimeContext& runtimeContext) { @@ -334,6 +338,11 @@ const QList& LaunchProfile::getCompatibleJavaMajors() const return m_compatibleJavaMajors; } +const QString LaunchProfile::getCompatibleJavaName() const +{ + return m_compatibleJavaName; +} + void LaunchProfile::getLibraryFiles(const RuntimeContext& runtimeContext, QStringList& jars, QStringList& nativeJars, diff --git a/launcher/minecraft/LaunchProfile.h b/launcher/minecraft/LaunchProfile.h index 12b312383..f1be6fee0 100644 --- a/launcher/minecraft/LaunchProfile.h +++ b/launcher/minecraft/LaunchProfile.h @@ -59,6 +59,7 @@ class LaunchProfile : public ProblemProvider { void applyMavenFile(LibraryPtr library, const RuntimeContext& runtimeContext); void applyAgent(AgentPtr agent, const RuntimeContext& runtimeContext); void applyCompatibleJavaMajors(QList& javaMajor); + void applyCompatibleJavaName(QString javaName); void applyMainJar(LibraryPtr jar); void applyProblemSeverity(ProblemSeverity severity); /// clear the profile @@ -80,6 +81,7 @@ class LaunchProfile : public ProblemProvider { const QList& getMavenFiles() const; const QList& getAgents() const; const QList& getCompatibleJavaMajors() const; + const QString getCompatibleJavaName() const; const LibraryPtr getMainJar() const; void getLibraryFiles(const RuntimeContext& runtimeContext, QStringList& jars, @@ -150,5 +152,7 @@ class LaunchProfile : public ProblemProvider { /// compatible java major versions QList m_compatibleJavaMajors; + QString m_compatibleJavaName; + ProblemSeverity m_problemSeverity = ProblemSeverity::None; }; diff --git a/launcher/minecraft/VersionFile.cpp b/launcher/minecraft/VersionFile.cpp index 6632bb8bf..8ee61128f 100644 --- a/launcher/minecraft/VersionFile.cpp +++ b/launcher/minecraft/VersionFile.cpp @@ -73,6 +73,7 @@ void VersionFile::applyTo(LaunchProfile* profile, const RuntimeContext& runtimeC profile->applyMods(mods); profile->applyTraits(traits); profile->applyCompatibleJavaMajors(compatibleJavaMajors); + profile->applyCompatibleJavaName(compatibleJavaName); for (auto library : libraries) { profile->applyLibrary(library, runtimeContext); diff --git a/launcher/ui/java/JavaDownloader.cpp b/launcher/ui/java/JavaDownloader.cpp index 9121988da..3552f0ef5 100644 --- a/launcher/ui/java/JavaDownloader.cpp +++ b/launcher/ui/java/JavaDownloader.cpp @@ -45,9 +45,9 @@ namespace Java { Downloader::Downloader(QWidget* parent) : QDialog(parent), ui(new Ui::JavaDownloader) { ui->setupUi(this); - auto versionList = new Meta::VersionList("net.minecraft.java", this); + auto versionList = APPLICATION->metadataIndex()->get("net.minecraft.java"); versionList->setProvidedRoles({ BaseVersionList::VersionRole, BaseVersionList::RecommendedRole, BaseVersionList::VersionPointerRole }); - ui->majorVersionSelect->initialize(versionList); + ui->majorVersionSelect->initialize(versionList.get()); ui->majorVersionSelect->selectCurrent(); ui->majorVersionSelect->setEmptyString(tr("No java versions are currently available in the meta")); ui->majorVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); @@ -85,7 +85,7 @@ void Downloader::accept() return; } Task::Ptr task; - auto final_path = FS::PathCombine(APPLICATION->dataRoot(), "java", meta->m_name); + auto final_path = FS::PathCombine(APPLICATION->dataRoot(), "java", meta->vendor, meta->m_name); switch (meta->downloadType) { case Java::DownloadType::Manifest: task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); From ba990e075bc9bea8b03857a643005f6fe9301a34 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 8 Feb 2024 19:45:46 +0200 Subject: [PATCH 044/616] Added JavaPath function Signed-off-by: Trial97 --- launcher/Application.cpp | 7 ++++--- launcher/Application.h | 3 +++ launcher/java/JavaUtils.cpp | 28 +++++++++++++++++++++++++++- launcher/java/JavaUtils.h | 1 + launcher/ui/java/JavaDownloader.cpp | 2 +- 5 files changed, 36 insertions(+), 5 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 679de711e..20da46187 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -48,7 +48,6 @@ #include "net/PasteUpload.h" #include "pathmatcher/MultiMatcher.h" #include "pathmatcher/SimplePrefixMatcher.h" -#include "settings/INIFile.h" #include "ui/InstanceWindow.h" #include "ui/MainWindow.h" @@ -106,8 +105,6 @@ #include "icons/IconList.h" #include "net/HttpMetaCache.h" -#include "java/JavaUtils.h" - #include "updater/ExternalUpdater.h" #include "tools/JProfiler.h" @@ -1833,3 +1830,7 @@ QUrl Application::normalizeImportUrl(QString const& url) return QUrl::fromUserInput(url); } } +const QString Application::javaPath() +{ + return FS::PathCombine(m_dataPath, "java"); +} diff --git a/launcher/Application.h b/launcher/Application.h index 85bf2dff4..ba65edd82 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -162,6 +162,9 @@ class Application : public QApplication { /// the data path the application is using const QString& dataRoot() { return m_dataPath; } + /// the java installed path the application is using + const QString javaPath(); + bool isPortable() { return m_portable; } const Capabilities capabilities() { return m_capabilities; } diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index 67f1fd3a7..ff5ba5efe 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -337,6 +337,7 @@ QList JavaUtils::FindJavaPaths() } candidates.append(getMinecraftJavaBundle()); + candidates.append(getPrismJavaBundle()); candidates = addJavasFromEnv(candidates); candidates.removeDuplicates(); return candidates; @@ -363,6 +364,7 @@ QList JavaUtils::FindJavaPaths() javas.append(systemLibraryJVMDir.absolutePath() + "/" + java + "/Contents/Commands/java"); } javas.append(getMinecraftJavaBundle()); + javas.append(getPrismJavaBundle()); javas = addJavasFromEnv(javas); javas.removeDuplicates(); return javas; @@ -393,7 +395,6 @@ QList JavaUtils::FindJavaPaths() scanJavaDir(snap + dirPath); } }; - scanJavaDir(FS::PathCombine(APPLICATION->dataRoot(), "java")); // oracle RPMs scanJavaDirs("/usr/java"); // general locations used by distro packaging @@ -416,6 +417,7 @@ QList JavaUtils::FindJavaPaths() scanJavaDirs(FS::PathCombine(home, ".sdkman/candidates/java")); javas.append(getMinecraftJavaBundle()); + javas.append(getPrismJavaBundle()); javas = addJavasFromEnv(javas); javas.removeDuplicates(); return javas; @@ -429,6 +431,8 @@ QList JavaUtils::FindJavaPaths() javas.append(this->GetDefaultJava()->path); javas.append(getMinecraftJavaBundle()); + javas.append(getPrismJavaBundle()); + javas.removeDuplicates(); return addJavasFromEnv(javas); } #endif @@ -484,3 +488,25 @@ QStringList getMinecraftJavaBundle() } return javas; } + +QStringList getPrismJavaBundle() +{ + QList javas; + QDir dir(APPLICATION->javaPath()); + if (!dir.exists()) + return javas; + + QString executable = "java"; +#if defined(Q_OS_WIN32) + executable += "w.exe"; +#endif + + auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + for (auto& entry : entries) { + QString prefix; + prefix = entry.canonicalFilePath(); + javas.append(FS::PathCombine(prefix, "jre", "bin", executable)); + javas.append(FS::PathCombine(prefix, "bin", executable)); + } + return javas; +} diff --git a/launcher/java/JavaUtils.h b/launcher/java/JavaUtils.h index 0beb8c67a..aa5315a19 100644 --- a/launcher/java/JavaUtils.h +++ b/launcher/java/JavaUtils.h @@ -26,6 +26,7 @@ QString stripVariableEntries(QString name, QString target, QString remove); QProcessEnvironment CleanEnviroment(); QStringList getMinecraftJavaBundle(); +QStringList getPrismJavaBundle(); class JavaUtils : public QObject { Q_OBJECT diff --git a/launcher/ui/java/JavaDownloader.cpp b/launcher/ui/java/JavaDownloader.cpp index 3552f0ef5..4495210c3 100644 --- a/launcher/ui/java/JavaDownloader.cpp +++ b/launcher/ui/java/JavaDownloader.cpp @@ -85,7 +85,7 @@ void Downloader::accept() return; } Task::Ptr task; - auto final_path = FS::PathCombine(APPLICATION->dataRoot(), "java", meta->vendor, meta->m_name); + auto final_path = FS::PathCombine(APPLICATION->javaPath(), meta->m_name); switch (meta->downloadType) { case Java::DownloadType::Manifest: task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); From 3d29da916ded28e320eda2654ba42f529e682019 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 8 Feb 2024 20:15:19 +0200 Subject: [PATCH 045/616] Made Java path configurable Signed-off-by: Trial97 --- launcher/Application.cpp | 3 +- launcher/ui/pages/global/LauncherPage.cpp | 12 +++ launcher/ui/pages/global/LauncherPage.h | 1 + launcher/ui/pages/global/LauncherPage.ui | 107 +++++++++++++--------- 4 files changed, 77 insertions(+), 46 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 20da46187..cc4fc6b1c 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -586,6 +586,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->registerSetting("IconsDir", "icons"); m_settings->registerSetting("DownloadsDir", QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)); m_settings->registerSetting("DownloadsDirWatchRecursive", false); + m_settings->registerSetting("JavaDir", "java"); // Editors m_settings->registerSetting("JsonEditor", QString()); @@ -1832,5 +1833,5 @@ QUrl Application::normalizeImportUrl(QString const& url) } const QString Application::javaPath() { - return FS::PathCombine(m_dataPath, "java"); + return m_settings->get("JavaDir").toString(); } diff --git a/launcher/ui/pages/global/LauncherPage.cpp b/launcher/ui/pages/global/LauncherPage.cpp index 78c44380a..99a80d98c 100644 --- a/launcher/ui/pages/global/LauncherPage.cpp +++ b/launcher/ui/pages/global/LauncherPage.cpp @@ -173,6 +173,16 @@ void LauncherPage::on_downloadsDirBrowseBtn_clicked() } } +void LauncherPage::on_javaDirBrowseBtn_clicked() +{ + QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Java Folder"), ui->javaDirTextBox->text()); + + if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) { + QString cooked_dir = FS::NormalizePath(raw_dir); + ui->javaDirTextBox->setText(cooked_dir); + } +} + void LauncherPage::on_metadataDisableBtn_clicked() { ui->metadataWarningLabel->setHidden(!ui->metadataDisableBtn->isChecked()); @@ -208,6 +218,7 @@ void LauncherPage::applySettings() s->set("CentralModsDir", ui->modsDirTextBox->text()); s->set("IconsDir", ui->iconsDirTextBox->text()); s->set("DownloadsDir", ui->downloadsDirTextBox->text()); + s->set("JavaDir", ui->javaDirTextBox->text()); s->set("DownloadsDirWatchRecursive", ui->downloadsDirWatchRecursiveCheckBox->isChecked()); auto sortMode = (InstSortMode)ui->sortingModeGroup->checkedId(); @@ -269,6 +280,7 @@ void LauncherPage::loadSettings() ui->modsDirTextBox->setText(s->get("CentralModsDir").toString()); ui->iconsDirTextBox->setText(s->get("IconsDir").toString()); ui->downloadsDirTextBox->setText(s->get("DownloadsDir").toString()); + ui->javaDirTextBox->setText(s->get("JavaDir").toString()); ui->downloadsDirWatchRecursiveCheckBox->setChecked(s->get("DownloadsDirWatchRecursive").toBool()); QString sortMode = s->get("InstSortMode").toString(); diff --git a/launcher/ui/pages/global/LauncherPage.h b/launcher/ui/pages/global/LauncherPage.h index e733224d2..32945626f 100644 --- a/launcher/ui/pages/global/LauncherPage.h +++ b/launcher/ui/pages/global/LauncherPage.h @@ -74,6 +74,7 @@ class LauncherPage : public QWidget, public BasePage { void on_modsDirBrowseBtn_clicked(); void on_iconsDirBrowseBtn_clicked(); void on_downloadsDirBrowseBtn_clicked(); + void on_javaDirBrowseBtn_clicked(); void on_metadataDisableBtn_clicked(); /*! diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui index 18b52e1b8..81acb0a17 100644 --- a/launcher/ui/pages/global/LauncherPage.ui +++ b/launcher/ui/pages/global/LauncherPage.ui @@ -7,7 +7,7 @@ 0 0 511 - 629 + 654 @@ -67,13 +67,20 @@ Folders - - + + - &Downloads: + Browse - - downloadsDirTextBox + + + + + + When enabled, in addition to the downloads folder, its sub folders will also be searched when looking for resources (e.g. when looking for blocked mods on CurseForge). + + + Check downloads folder recursively @@ -87,25 +94,52 @@ - - - - - - - - - - + Browse + + + + + + + Browse + + + + + + + + + + + + + &Icons: + + + iconsDirTextBox + + + + + + + &Downloads: + + + downloadsDirTextBox + + + @@ -123,40 +157,23 @@ - - + + + + Java: + + + + + + + + Browse - - - - Browse - - - - - - - &Icons: - - - iconsDirTextBox - - - - - - - When enabled, in addition to the downloads folder, its sub folders will also be searched when looking for resources (e.g. when looking for blocked mods on CurseForge). - - - Check downloads folder recursively - - -
From b3fc07d44478aa7fc841c88fe9160c462b05577a Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 8 Feb 2024 21:47:59 +0200 Subject: [PATCH 046/616] Added extra java search paths Signed-off-by: Trial97 --- launcher/Application.cpp | 1 + launcher/java/JavaUtils.cpp | 27 ++++++++--- launcher/ui/pages/global/JavaPage.cpp | 29 ++++++++++- launcher/ui/pages/global/JavaPage.h | 5 +- launcher/ui/pages/global/JavaPage.ui | 69 +++++++++++++++++++++++++-- 5 files changed, 119 insertions(+), 12 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index cc4fc6b1c..d9abccfdc 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -629,6 +629,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->registerSetting("JvmArgs", ""); m_settings->registerSetting("IgnoreJavaCompatibility", false); m_settings->registerSetting("IgnoreJavaWizard", false); + m_settings->registerSetting("JavaExtraSearchPaths", QStringList()); // Legacy settings m_settings->registerSetting("OnlineFixes", false); diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index ff5ba5efe..cd9593980 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -492,21 +492,34 @@ QStringList getMinecraftJavaBundle() QStringList getPrismJavaBundle() { QList javas; - QDir dir(APPLICATION->javaPath()); - if (!dir.exists()) - return javas; QString executable = "java"; #if defined(Q_OS_WIN32) executable += "w.exe"; #endif - auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); - for (auto& entry : entries) { - QString prefix; - prefix = entry.canonicalFilePath(); + auto scanDir = [&](QString prefix) { javas.append(FS::PathCombine(prefix, "jre", "bin", executable)); javas.append(FS::PathCombine(prefix, "bin", executable)); + javas.append(FS::PathCombine(prefix, executable)); + }; + auto scanJavaDir = [&](const QString& dirPath) { + QDir dir(dirPath); + if (!dir.exists()) + return; + auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + for (auto& entry : entries) { + scanDir(entry.canonicalFilePath()); + } + }; + + scanJavaDir(APPLICATION->javaPath()); + + auto extra_paths = APPLICATION->settings()->get("JavaExtraSearchPaths").toStringList(); + for (auto& entry : extra_paths) { + scanDir(entry); + scanJavaDir(entry); } + return javas; } diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 9b21aad72..6d278983d 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -42,6 +42,7 @@ #include #include #include +#include #include #include "ui/dialogs/VersionSelectDialog.h" @@ -57,7 +58,6 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) { ui->setupUi(this); - ui->tabWidget->tabBar()->hide(); loadSettings(); updateThresholds(); @@ -95,6 +95,7 @@ void JavaPage::applySettings() s->set("JvmArgs", ui->jvmArgsTextBox->toPlainText().replace("\n", " ")); s->set("IgnoreJavaCompatibility", ui->skipCompatibilityCheckbox->isChecked()); s->set("IgnoreJavaWizard", ui->skipJavaWizardCheckbox->isChecked()); + s->set("JavaExtraSearchPaths", m_extra_paths->stringList()); JavaCommon::checkJVMArgs(s->get("JvmArgs").toString(), this->parentWidget()); } void JavaPage::loadSettings() @@ -117,6 +118,8 @@ void JavaPage::loadSettings() ui->jvmArgsTextBox->setPlainText(s->get("JvmArgs").toString()); ui->skipCompatibilityCheckbox->setChecked(s->get("IgnoreJavaCompatibility").toBool()); ui->skipJavaWizardCheckbox->setChecked(s->get("IgnoreJavaWizard").toBool()); + m_extra_paths = new QStringListModel(s->get("JavaExtraSearchPaths").toStringList()); + ui->extraJavaPathsList->setModel(m_extra_paths); } void JavaPage::on_javaDetectBtn_clicked() @@ -217,3 +220,27 @@ void JavaPage::updateThresholds() ui->labelMaxMemIcon->setPixmap(pix); } } + +void JavaPage::on_addExtraPathButton_clicked() +{ + QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Add Extra Java Folder")); + + if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) { + QString cooked_dir = FS::NormalizePath(raw_dir); + auto currentList = m_extra_paths->stringList(); + if (!currentList.contains(cooked_dir)) { + currentList << cooked_dir; + m_extra_paths->setStringList(currentList); + } + } + APPLICATION->settings()->set("JavaExtraSearchPaths", m_extra_paths->stringList()); +} + +void JavaPage::on_removeExtraPathButton_clicked() +{ + auto indexes = ui->extraJavaPathsList->selectionModel()->selectedIndexes(); + if (indexes.size()) { + m_extra_paths->removeRow(indexes.first().row()); + } + APPLICATION->settings()->set("JavaExtraSearchPaths", m_extra_paths->stringList()); +} diff --git a/launcher/ui/pages/global/JavaPage.h b/launcher/ui/pages/global/JavaPage.h index 2bbfdf6bf..d1315db64 100644 --- a/launcher/ui/pages/global/JavaPage.h +++ b/launcher/ui/pages/global/JavaPage.h @@ -38,7 +38,7 @@ #include #include #include -#include +#include #include "JavaCommon.h" #include "ui/pages/BasePage.h" @@ -73,10 +73,13 @@ class JavaPage : public QWidget, public BasePage { void on_javaTestBtn_clicked(); void on_javaBrowseBtn_clicked(); void on_javaDownloadBtn_clicked(); + void on_addExtraPathButton_clicked(); + void on_removeExtraPathButton_clicked(); void on_maxMemSpinBox_valueChanged(int i); void checkerFinished(); private: Ui::JavaPage* ui; unique_qobject_ptr checker; + QStringListModel* m_extra_paths; }; diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index 382c183c9..d57e2e548 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -32,11 +32,11 @@ - 0 + 1 - + - Tab 1 + General @@ -312,6 +312,69 @@ + + + Management + + + + + + Java extra paths + + + + + + + + + + + Add + + + + + + + Remove + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + +
From 379f1a70e99a9a629c3cb174a1ad596fcb79a3cb Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 8 Feb 2024 22:37:57 +0200 Subject: [PATCH 047/616] Leave headers alone Signed-off-by: Trial97 --- launcher/Application.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index d9abccfdc..498427856 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -48,6 +48,7 @@ #include "net/PasteUpload.h" #include "pathmatcher/MultiMatcher.h" #include "pathmatcher/SimplePrefixMatcher.h" +#include "settings/INIFile.h" #include "ui/InstanceWindow.h" #include "ui/MainWindow.h" @@ -105,6 +106,8 @@ #include "icons/IconList.h" #include "net/HttpMetaCache.h" +#include "java/JavaUtils.h" + #include "updater/ExternalUpdater.h" #include "tools/JProfiler.h" From 0a3303bcbdabbc2e5e1338dabfb3b8cf518d29e4 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 9 Feb 2024 21:07:12 +0200 Subject: [PATCH 048/616] Added button to add extra java path to the Java Wizzard Signed-off-by: Trial97 --- launcher/ui/dialogs/VersionSelectDialog.h | 4 ---- launcher/ui/widgets/JavaSettingsWidget.cpp | 27 ++++++++++++++++++++-- launcher/ui/widgets/JavaSettingsWidget.h | 5 +++- 3 files changed, 29 insertions(+), 7 deletions(-) diff --git a/launcher/ui/dialogs/VersionSelectDialog.h b/launcher/ui/dialogs/VersionSelectDialog.h index 0ccd45e74..17efc1b93 100644 --- a/launcher/ui/dialogs/VersionSelectDialog.h +++ b/launcher/ui/dialogs/VersionSelectDialog.h @@ -26,10 +26,6 @@ class QDialogButtonBox; class VersionSelectWidget; class QPushButton; -namespace Ui { -class VersionSelectDialog; -} - class VersionProxyModel; class VersionSelectDialog : public QDialog { diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 3f4fe08ea..bb57e5da7 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -42,6 +42,7 @@ JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited); connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaSettingsWidget::on_javaStatusBtn_clicked); connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaDownloadBtn_clicked); + connect(m_addJavaPathBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_addJavaPathBtn_clicked); } void JavaSettingsWidget::setupUi() @@ -124,9 +125,16 @@ void JavaSettingsWidget::setupUi() m_verticalLayout->addWidget(m_memoryGroupBox); - m_javaDownloadBtn = new QPushButton(tr("Download Java"), this); + m_horizontalBtnLayout = new QHBoxLayout(); + m_horizontalBtnLayout->setObjectName(QStringLiteral("horizontalBtnLayout")); - m_verticalLayout->addWidget(m_javaDownloadBtn); + m_javaDownloadBtn = new QPushButton(tr("Download Java"), this); + m_horizontalBtnLayout->addWidget(m_javaDownloadBtn); + + m_addJavaPathBtn = new QPushButton(tr("Add extra Java path"), this); + m_horizontalBtnLayout->addWidget(m_addJavaPathBtn); + + m_verticalLayout->addLayout(m_horizontalBtnLayout); retranslate(); } @@ -437,3 +445,18 @@ void JavaSettingsWidget::updateThresholds() m_labelMaxMemIcon->setPixmap(pix); } } + +void JavaSettingsWidget::on_addJavaPathBtn_clicked() +{ + QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Add Extra Java Folder")); + + auto currentList = APPLICATION->settings()->get("JavaExtraSearchPaths").toStringList(); + if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) { + QString cooked_dir = FS::NormalizePath(raw_dir); + if (!currentList.contains(cooked_dir)) { + currentList << cooked_dir; + } + } + APPLICATION->settings()->set("JavaExtraSearchPaths", currentList); + refresh(); +} diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index b7db955a4..385a9256a 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -25,7 +25,7 @@ class JavaSettingsWidget : public QWidget { public: explicit JavaSettingsWidget(QWidget* parent); - virtual ~JavaSettingsWidget(){}; + virtual ~JavaSettingsWidget() = default; enum class JavaStatus { NotSet, Pending, Good, DoesNotExist, DoesNotStart, ReturnedInvalidData } javaStatus = JavaStatus::NotSet; @@ -51,6 +51,7 @@ class JavaSettingsWidget : public QWidget { void on_javaBrowseBtn_clicked(); void on_javaStatusBtn_clicked(); void on_javaDownloadBtn_clicked(); + void on_addJavaPathBtn_clicked(); void checkFinished(const JavaChecker::Result& result); protected: /* methods */ @@ -78,7 +79,9 @@ class JavaSettingsWidget : public QWidget { QLabel* m_labelPermGen = nullptr; QSpinBox* m_permGenSpinBox = nullptr; + QHBoxLayout* m_horizontalBtnLayout = nullptr; QPushButton* m_javaDownloadBtn = nullptr; + QPushButton* m_addJavaPathBtn = nullptr; QIcon goodIcon; QIcon yellowIcon; QIcon badIcon; From 27d662e64241a75eee963048a669398a5083f7ed Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 9 Feb 2024 22:47:39 +0200 Subject: [PATCH 049/616] Added management for downloaded javas from prism Signed-off-by: Trial97 --- launcher/java/JavaInstallList.cpp | 10 +++-- launcher/java/JavaInstallList.h | 6 ++- launcher/java/JavaUtils.cpp | 31 ++++++++++++++ launcher/java/JavaUtils.h | 1 + launcher/ui/pages/global/JavaPage.cpp | 40 ++++++++++++++++++ launcher/ui/pages/global/JavaPage.h | 2 + launcher/ui/pages/global/JavaPage.ui | 60 ++++++++++++++++++++++++++- 7 files changed, 143 insertions(+), 7 deletions(-) diff --git a/launcher/java/JavaInstallList.cpp b/launcher/java/JavaInstallList.cpp index d99201f24..4172ba2cf 100644 --- a/launcher/java/JavaInstallList.cpp +++ b/launcher/java/JavaInstallList.cpp @@ -46,7 +46,9 @@ #include "java/JavaUtils.h" #include "tasks/ConcurrentTask.h" -JavaInstallList::JavaInstallList(QObject* parent) : BaseVersionList(parent) {} +JavaInstallList::JavaInstallList(QObject* parent, bool onlyManagedVersions) + : BaseVersionList(parent), m_only_managed_versions(onlyManagedVersions) +{} Task::Ptr JavaInstallList::getLoadTask() { @@ -66,7 +68,7 @@ void JavaInstallList::load() { if (m_status != Status::InProgress) { m_status = Status::InProgress; - m_load_task.reset(new JavaListLoadTask(this)); + m_load_task.reset(new JavaListLoadTask(this, m_only_managed_versions)); m_load_task->start(); } } @@ -148,7 +150,7 @@ void JavaInstallList::sortVersions() endResetModel(); } -JavaListLoadTask::JavaListLoadTask(JavaInstallList* vlist) : Task() +JavaListLoadTask::JavaListLoadTask(JavaInstallList* vlist, bool onlyManagedVersions) : Task(), m_only_managed_versions(onlyManagedVersions) { m_list = vlist; m_current_recommended = NULL; @@ -159,7 +161,7 @@ void JavaListLoadTask::executeTask() setStatus(tr("Detecting Java installations...")); JavaUtils ju; - QList candidate_paths = ju.FindJavaPaths(); + QList candidate_paths = m_only_managed_versions ? getPrismJavaBundle() : ju.FindJavaPaths(); ConcurrentTask::Ptr job(new ConcurrentTask(this, "Java detection", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); m_job.reset(job); diff --git a/launcher/java/JavaInstallList.h b/launcher/java/JavaInstallList.h index 08f0b310d..c68c2a3be 100644 --- a/launcher/java/JavaInstallList.h +++ b/launcher/java/JavaInstallList.h @@ -33,7 +33,7 @@ class JavaInstallList : public BaseVersionList { enum class Status { NotDone, InProgress, Done }; public: - explicit JavaInstallList(QObject* parent = 0); + explicit JavaInstallList(QObject* parent = 0, bool onlyManagedVersions = false); Task::Ptr getLoadTask() override; bool isLoaded() override; @@ -55,13 +55,14 @@ class JavaInstallList : public BaseVersionList { Status m_status = Status::NotDone; shared_qobject_ptr m_load_task; QList m_vlist; + bool m_only_managed_versions; }; class JavaListLoadTask : public Task { Q_OBJECT public: - explicit JavaListLoadTask(JavaInstallList* vlist); + explicit JavaListLoadTask(JavaInstallList* vlist, bool onlyManagedVersions = false); virtual ~JavaListLoadTask() = default; protected: @@ -74,4 +75,5 @@ class JavaListLoadTask : public Task { JavaInstallList* m_list; JavaInstall* m_current_recommended; QList m_results; + bool m_only_managed_versions; }; diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index cd9593980..1d254e405 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -338,6 +338,7 @@ QList JavaUtils::FindJavaPaths() candidates.append(getMinecraftJavaBundle()); candidates.append(getPrismJavaBundle()); + candidates.append(getPrismExtraJavaPaths()); candidates = addJavasFromEnv(candidates); candidates.removeDuplicates(); return candidates; @@ -365,6 +366,7 @@ QList JavaUtils::FindJavaPaths() } javas.append(getMinecraftJavaBundle()); javas.append(getPrismJavaBundle()); + javas.append(getPrismExtraJavaPaths()); javas = addJavasFromEnv(javas); javas.removeDuplicates(); return javas; @@ -418,6 +420,7 @@ QList JavaUtils::FindJavaPaths() javas.append(getMinecraftJavaBundle()); javas.append(getPrismJavaBundle()); + javas.append(getPrismExtraJavaPaths()); javas = addJavasFromEnv(javas); javas.removeDuplicates(); return javas; @@ -432,6 +435,7 @@ QList JavaUtils::FindJavaPaths() javas.append(getMinecraftJavaBundle()); javas.append(getPrismJavaBundle()); + javas.append(getPrismExtraJavaPaths()); javas.removeDuplicates(); return addJavasFromEnv(javas); } @@ -515,6 +519,33 @@ QStringList getPrismJavaBundle() scanJavaDir(APPLICATION->javaPath()); + return javas; +} + +QStringList getPrismExtraJavaPaths() +{ + QList javas; + + QString executable = "java"; +#if defined(Q_OS_WIN32) + executable += "w.exe"; +#endif + + auto scanDir = [&](QString prefix) { + javas.append(FS::PathCombine(prefix, "jre", "bin", executable)); + javas.append(FS::PathCombine(prefix, "bin", executable)); + javas.append(FS::PathCombine(prefix, executable)); + }; + auto scanJavaDir = [&](const QString& dirPath) { + QDir dir(dirPath); + if (!dir.exists()) + return; + auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + for (auto& entry : entries) { + scanDir(entry.canonicalFilePath()); + } + }; + auto extra_paths = APPLICATION->settings()->get("JavaExtraSearchPaths").toStringList(); for (auto& entry : extra_paths) { scanDir(entry); diff --git a/launcher/java/JavaUtils.h b/launcher/java/JavaUtils.h index aa5315a19..66e439834 100644 --- a/launcher/java/JavaUtils.h +++ b/launcher/java/JavaUtils.h @@ -27,6 +27,7 @@ QString stripVariableEntries(QString name, QString target, QString remove); QProcessEnvironment CleanEnviroment(); QStringList getMinecraftJavaBundle(); QStringList getPrismJavaBundle(); +QStringList getPrismExtraJavaPaths(); class JavaUtils : public QObject { Q_OBJECT diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 6d278983d..7d7530e35 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -36,6 +36,8 @@ #include "JavaPage.h" #include "JavaCommon.h" +#include "java/JavaInstall.h" +#include "ui/dialogs/CustomMessageBox.h" #include "ui/java/JavaDownloader.h" #include "ui_JavaPage.h" @@ -59,6 +61,11 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) { ui->setupUi(this); + ui->managedJavaList->initialize(new JavaInstallList(this, true)); + ui->managedJavaList->selectCurrent(); + ui->managedJavaList->setEmptyString(tr("No java versions are currently available in the meta")); + ui->managedJavaList->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); + loadSettings(); updateThresholds(); } @@ -244,3 +251,36 @@ void JavaPage::on_removeExtraPathButton_clicked() } APPLICATION->settings()->set("JavaExtraSearchPaths", m_extra_paths->stringList()); } + +void JavaPage::on_downloadJavaButton_clicked() +{ + on_javaDownloadBtn_clicked(); +} + +void JavaPage::on_removeJavaButton_clicked() +{ + auto version = ui->managedJavaList->selectedVersion(); + auto dcast = std::dynamic_pointer_cast(version); + if (!dcast) { + return; + } + QDir dir(APPLICATION->javaPath()); + + auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + for (auto& entry : entries) { + if (dcast->path.startsWith(entry.canonicalFilePath())) { + auto response = CustomMessageBox::selectable(this, tr("Confirm Deletion"), + tr("You are about to remove \"%1\" java version.\n" + "Are you sure?") + .arg(entry.fileName()), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); + + if (response == QMessageBox::Yes) { + FS::deletePath(entry.canonicalFilePath()); + ui->managedJavaList->loadList(); + } + break; + } + } +} diff --git a/launcher/ui/pages/global/JavaPage.h b/launcher/ui/pages/global/JavaPage.h index d1315db64..03d14b824 100644 --- a/launcher/ui/pages/global/JavaPage.h +++ b/launcher/ui/pages/global/JavaPage.h @@ -75,6 +75,8 @@ class JavaPage : public QWidget, public BasePage { void on_javaDownloadBtn_clicked(); void on_addExtraPathButton_clicked(); void on_removeExtraPathButton_clicked(); + void on_downloadJavaButton_clicked(); + void on_removeJavaButton_clicked(); void on_maxMemSpinBox_valueChanged(int i); void checkerFinished(); diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index d57e2e548..a518b0b14 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -32,7 +32,7 @@ - 1 + 0 @@ -317,6 +317,56 @@ Management + + + + Downloaded Java Versions + + + + + + + 0 + 0 + + + + + + + + + + Download + + + + + + + Remove + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + @@ -379,6 +429,14 @@ + + + VersionSelectWidget + QWidget +
ui/widgets/VersionSelectWidget.h
+ 1 +
+
minMemSpinBox maxMemSpinBox From c0fb053ccc966045df42e8b218a994cfcfdef986 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 9 Feb 2024 23:14:49 +0200 Subject: [PATCH 050/616] Added warning for x86 java Signed-off-by: Trial97 --- launcher/java/JavaInstall.h | 1 + launcher/java/JavaInstallList.cpp | 1 + launcher/ui/pages/global/JavaPage.cpp | 8 ++++++++ launcher/ui/pages/instance/InstanceSettingsPage.cpp | 10 ++++++++++ launcher/ui/widgets/JavaSettingsWidget.cpp | 4 ++++ 5 files changed, 24 insertions(+) diff --git a/launcher/java/JavaInstall.h b/launcher/java/JavaInstall.h index 8c2743a00..6890264f3 100644 --- a/launcher/java/JavaInstall.h +++ b/launcher/java/JavaInstall.h @@ -40,6 +40,7 @@ struct JavaInstall : public BaseVersion { QString arch; QString path; bool recommended = false; + bool is_64bit = false; }; using JavaInstallPtr = std::shared_ptr; diff --git a/launcher/java/JavaInstallList.cpp b/launcher/java/JavaInstallList.cpp index 4172ba2cf..569fda306 100644 --- a/launcher/java/JavaInstallList.cpp +++ b/launcher/java/JavaInstallList.cpp @@ -193,6 +193,7 @@ void JavaListLoadTask::javaCheckerFinished() javaVersion->id = result.javaVersion; javaVersion->arch = result.realPlatform; javaVersion->path = result.path; + javaVersion->is_64bit = result.is_64bit; candidates.append(javaVersion); qDebug() << " " << javaVersion->id.toString() << javaVersion->arch << javaVersion->path; diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 7d7530e35..9b2aa7637 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -145,6 +145,14 @@ void JavaPage::on_javaDetectBtn_clicked() if (vselect.result() == QDialog::Accepted && vselect.selectedVersion()) { java = std::dynamic_pointer_cast(vselect.selectedVersion()); ui->javaPathTextBox->setText(java->path); + if (!java->is_64bit && APPLICATION->settings()->get("MaxMemAlloc").toInt() > 2048) { + CustomMessageBox::selectable(this, tr("Confirm Selection"), + tr("You selected an x86 java version.\n" + "This means that will not support more than 2Gb(2048Mb) of ram.\n" + "Please make sure that the maximum memory value is lower."), + QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) + ->exec(); + } } } diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index b962406d1..926e48952 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -36,6 +36,7 @@ */ #include "InstanceSettingsPage.h" +#include "ui/dialogs/CustomMessageBox.h" #include "ui/java/JavaDownloader.h" #include "ui_InstanceSettingsPage.h" @@ -412,6 +413,15 @@ void InstanceSettingsPage::on_javaDetectBtn_clicked() ui->labelPermGen->setVisible(visible); ui->labelPermgenNote->setVisible(visible); m_settings->set("PermGenVisible", visible); + + if (!java->is_64bit && m_settings->get("MaxMemAlloc").toInt() > 2048) { + CustomMessageBox::selectable(this, tr("Confirm Selection"), + tr("You selected an x86 java version.\n" + "This means that will not support more than 2Gb(2048Mb) of ram.\n" + "Please make sure that the maximum memory value is lower."), + QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) + ->exec(); + } } } diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index bb57e5da7..507c632d5 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -433,6 +433,10 @@ void JavaSettingsWidget::updateThresholds() } else if (observedMaxMemory < observedMinMemory) { iconName = "status-yellow"; m_labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation is smaller than the minimum value")); + } else if (observedMaxMemory > 2048 && m_result.is_64bit) { + iconName = "status-bad"; + m_labelMaxMemIcon->setToolTip( + tr("Your maximum memory allocation exceeds selected java posible memory(due to x86 applicatiion limitations).")); } else { iconName = "status-good"; m_labelMaxMemIcon->setToolTip(""); From 2941307581114c435a2950df59e8ddc2c3c7c0c4 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 16 Feb 2024 23:42:39 +0200 Subject: [PATCH 051/616] Added basic java auto-detect and auto-download Signed-off-by: Trial97 --- launcher/Application.cpp | 2 + launcher/CMakeLists.txt | 2 + launcher/minecraft/MinecraftInstance.cpp | 12 +- launcher/minecraft/launch/AutoInstallJava.cpp | 192 ++++++++++++++++++ launcher/minecraft/launch/AutoInstallJava.h | 67 ++++++ .../minecraft/launch/VerifyJavaInstall.cpp | 45 +--- launcher/ui/pages/global/JavaPage.cpp | 4 + launcher/ui/pages/global/JavaPage.ui | 66 +++--- 8 files changed, 325 insertions(+), 65 deletions(-) create mode 100644 launcher/minecraft/launch/AutoInstallJava.cpp create mode 100644 launcher/minecraft/launch/AutoInstallJava.h diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 498427856..6b7333972 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -633,6 +633,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->registerSetting("IgnoreJavaCompatibility", false); m_settings->registerSetting("IgnoreJavaWizard", false); m_settings->registerSetting("JavaExtraSearchPaths", QStringList()); + m_settings->registerSetting("AutomaticJavaSwitch", false); + m_settings->registerSetting("AutomaticJavaDownload", false); // Legacy settings m_settings->registerSetting("OnlineFixes", false); diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index c7945d1b8..fcc3c2f3a 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -281,6 +281,8 @@ set(MINECRAFT_SOURCES minecraft/launch/ScanModFolders.h minecraft/launch/VerifyJavaInstall.cpp minecraft/launch/VerifyJavaInstall.h + minecraft/launch/AutoInstallJava.cpp + minecraft/launch/AutoInstallJava.h minecraft/GradleSpecifier.h minecraft/MinecraftInstance.cpp diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 4229f73eb..00ce405aa 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -38,6 +38,8 @@ #include "MinecraftInstance.h" #include "Application.h" #include "BuildConfig.h" +#include "QObjectPtr.h" +#include "minecraft/launch/AutoInstallJava.h" #include "minecraft/launch/CreateGameFolders.h" #include "minecraft/launch/ExtractNatives.h" #include "minecraft/launch/PrintInstanceInfo.h" @@ -1041,11 +1043,6 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(makeShared(pptr, "Minecraft folder is:\n" + gameRoot() + "\n\n", MessageLevel::Launcher)); } - // check java - { - process->appendStep(makeShared(pptr)); - } - // create the .minecraft folder and server-resource-packs (workaround for Minecraft bug MCL-3732) { process->appendStep(makeShared(pptr)); @@ -1105,6 +1102,11 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt { process->appendStep(makeShared(pptr)); } + // check java + { + process->appendStep(makeShared(pptr)); + process->appendStep(makeShared(pptr)); + } // verify that minimum Java requirements are met { diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp new file mode 100644 index 000000000..0d3740c93 --- /dev/null +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -0,0 +1,192 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Sefa Eyeoglu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "AutoInstallJava.h" +#include +#include +#include + +#include "Application.h" +#include "FileSystem.h" +#include "MessageLevel.h" +#include "SysInfo.h" +#include "java/JavaInstall.h" +#include "java/JavaInstallList.h" +#include "java/JavaVersion.h" +#include "java/download/ArchiveDownloadTask.h" +#include "java/download/ManifestDownloadTask.h" +#include "meta/Index.h" +#include "minecraft/MinecraftInstance.h" +#include "minecraft/PackProfile.h" +#include "net/Mode.h" + +AutoInstallJava::AutoInstallJava(LaunchTask* parent) + : LaunchStep(parent) + , m_instance(std::dynamic_pointer_cast(m_parent->instance())) + , m_supported_arch(SysInfo::getSupportedJavaArchitecture()){}; + +void AutoInstallJava::executeTask() +{ + auto settings = m_instance->settings(); + if (!APPLICATION->settings()->get("AutomaticJavaSwitch").toBool() || + (settings->get("OverrideJava").toBool() && settings->get("OverrideJavaLocation").toBool())) { + emitSucceeded(); + return; + } + auto packProfile = m_instance->getPackProfile(); + if (!APPLICATION->settings()->get("AutomaticJavaDownload").toBool()) { + auto javas = APPLICATION->javalist().get(); + m_current_task = javas->getLoadTask(); + connect(m_current_task.get(), &Task::finished, this, [this, javas, packProfile] { + for (auto i = 0; i < javas->count(); i++) { + auto java = std::dynamic_pointer_cast(javas->at(i)); + if (java && packProfile->getProfile()->getCompatibleJavaMajors().contains(java->id.major())) { + setJavaPath(java->path); + return; + } + } + emit logLine(tr("No comptatible java version was found. Using the default one."), MessageLevel::Warning); + emitSucceeded(); + }); + return; + } + auto wantedJavaName = packProfile->getProfile()->getCompatibleJavaName(); + QDir javaDir(APPLICATION->javaPath()); + auto wantedJavaPath = javaDir.absoluteFilePath(wantedJavaName); + if (QFileInfo::exists(wantedJavaPath)) { + setJavaPathFromPartial(); + return; + } + auto versionList = APPLICATION->metadataIndex()->get("net.minecraft.java"); + m_current_task = versionList->getLoadTask(); + connect(m_current_task.get(), &Task::succeeded, this, &AutoInstallJava::tryNextMajorJava); + connect(m_current_task.get(), &Task::failed, this, &AutoInstallJava::emitFailed); +} + +void AutoInstallJava::setJavaPath(QString path) +{ + auto settings = m_instance->settings(); + settings->set("OverrideJava", true); + settings->set("OverrideJavaLocation", true); + settings->set("JavaPath", path); + emit logLine(tr("Compatible java found at: %1.").arg(path), MessageLevel::Info); + emitSucceeded(); +} + +void AutoInstallJava::setJavaPathFromPartial() +{ + QString executable = "java"; +#if defined(Q_OS_WIN32) + executable += "w.exe"; +#endif + auto packProfile = m_instance->getPackProfile(); + auto javaName = packProfile->getProfile()->getCompatibleJavaName(); + QDir javaDir(APPLICATION->javaPath()); + // just checking if the executable is there should suffice + // but if needed this can be achieved through refreshing the javalist + // and retrieving the path that contains the java name + auto relativeBinary = FS::PathCombine(javaName, "bin", executable); + auto finalPath = javaDir.absoluteFilePath(relativeBinary); + if (QFileInfo::exists(finalPath)) { + setJavaPath(finalPath); + } else { + emit logLine(tr("No comptatible java version was found. Using the default one."), MessageLevel::Warning); + emitSucceeded(); + } + return; +} + +void AutoInstallJava::downloadJava(Meta::Version::Ptr version, QString javaName) +{ + auto runtimes = version->data()->runtimes; + if (runtimes.contains(m_supported_arch)) { + for (auto java : runtimes.value(m_supported_arch)) { + if (java->name() == javaName) { + Task::Ptr task; + QDir javaDir(APPLICATION->javaPath()); + auto final_path = javaDir.absoluteFilePath(java->m_name); + switch (java->downloadType) { + case Java::DownloadType::Manifest: + task = makeShared(java->url, final_path, java->checksumType, java->checksumHash); + break; + case Java::DownloadType::Archive: + task = makeShared(java->url, final_path, java->checksumType, java->checksumHash); + break; + } + QEventLoop loop; + auto deletePath = [final_path] { FS::deletePath(final_path); }; + connect(task.get(), &Task::failed, this, [this, deletePath](QString reason) { + deletePath(); + emitFailed(reason); + }); + connect(this, &Task::aborted, this, [task, deletePath] { + task->abort(); + deletePath(); + }); + connect(task.get(), &Task::succeeded, this, &AutoInstallJava::setJavaPathFromPartial); + task->start(); + return; + } + } + } + tryNextMajorJava(); +} + +void AutoInstallJava::tryNextMajorJava() +{ + if (!isRunning()) + return; + auto versionList = APPLICATION->metadataIndex()->get("net.minecraft.java"); + auto packProfile = m_instance->getPackProfile(); + auto wantedJavaName = packProfile->getProfile()->getCompatibleJavaName(); + auto majorJavaVersions = packProfile->getProfile()->getCompatibleJavaMajors(); + if (m_majorJavaVersionIndex >= majorJavaVersions.length()) { + emit logLine(tr("No comptatible java version was found. Using the default one."), MessageLevel::Warning); + emitSucceeded(); + return; + } + auto majorJavaVersion = majorJavaVersions[m_majorJavaVersionIndex]; + m_majorJavaVersionIndex++; + + auto javaMajor = versionList->getVersion(QString("java%1").arg(majorJavaVersion)); + javaMajor->load(Net::Mode::Online); + auto task = javaMajor->getCurrentTask(); + if (javaMajor->isLoaded() || !task) { + downloadJava(javaMajor, wantedJavaName); + } else { + connect(task.get(), &Task::succeeded, this, [this, javaMajor, wantedJavaName] { downloadJava(javaMajor, wantedJavaName); }); + connect(task.get(), &Task::failed, this, &AutoInstallJava::tryNextMajorJava); + } +} diff --git a/launcher/minecraft/launch/AutoInstallJava.h b/launcher/minecraft/launch/AutoInstallJava.h new file mode 100644 index 000000000..4dcd3796a --- /dev/null +++ b/launcher/minecraft/launch/AutoInstallJava.h @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2022 Sefa Eyeoglu + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include "java/JavaMetadata.h" +#include "meta/Version.h" +#include "minecraft/MinecraftInstance.h" +#include "tasks/Task.h" + +class AutoInstallJava : public LaunchStep { + Q_OBJECT + + public: + explicit AutoInstallJava(LaunchTask* parent); + ~AutoInstallJava() override = default; + + void executeTask() override; + bool canAbort() const override { return m_current_task ? m_current_task->canAbort() : false; } + + protected: + void setJavaPath(QString path); + void setJavaPathFromPartial(); + void downloadJava(Meta::Version::Ptr version, QString javaName); + void tryNextMajorJava(); + + private: + MinecraftInstancePtr m_instance; + Task::Ptr m_current_task; + + qsizetype m_majorJavaVersionIndex = 0; + const QString m_supported_arch; +}; diff --git a/launcher/minecraft/launch/VerifyJavaInstall.cpp b/launcher/minecraft/launch/VerifyJavaInstall.cpp index 218811290..279545fed 100644 --- a/launcher/minecraft/launch/VerifyJavaInstall.cpp +++ b/launcher/minecraft/launch/VerifyJavaInstall.cpp @@ -50,7 +50,6 @@ void VerifyJavaInstall::executeTask() auto settings = instance->settings(); auto storedVersion = settings->get("JavaVersion").toString(); auto ignoreCompatibility = settings->get("IgnoreJavaCompatibility").toBool(); - auto automaticJavaSwitch = settings->get("AutomaticJavaSwitch").toBool(); auto compatibleMajors = packProfile->getProfile()->getCompatibleJavaMajors(); @@ -67,38 +66,16 @@ void VerifyJavaInstall::executeTask() return; } - auto logFail = [this, &javaVersion, compatibleMajors] { - emit logLine(tr("This instance is not compatible with Java version %1.\n" - "Please switch to one of the following Java versions for this instance:") - .arg(javaVersion.major()), - MessageLevel::Error); - for (auto major : compatibleMajors) { - emit logLine(tr("Java version %1").arg(major), MessageLevel::Error); - } - emit logLine(tr("Go to instance Java settings to change your Java version or disable the Java compatibility check if you know what " - "you're doing."), - MessageLevel::Error); - - emitFailed(QString("Incompatible Java major version")); - }; - - if (automaticJavaSwitch || true) { - settings->set("OverrideJava", true); - auto javas = APPLICATION->javalist().get(); - auto task = javas->getLoadTask(); - connect(task.get(), &Task::finished, this, [this, javas, compatibleMajors, settings, &logFail] { - for (auto i = 0; i < javas->count(); i++) { - auto java = std::dynamic_pointer_cast(javas->at(i)); - if (java && compatibleMajors.contains(java->id.major())) { - settings->set("OverrideJavaLocation", true); - settings->set("JavaPath", java->path); - emitSucceeded(); - return; - } - } - logFail(); - }); - } else { - logFail(); + emit logLine(tr("This instance is not compatible with Java version %1.\n" + "Please switch to one of the following Java versions for this instance:") + .arg(javaVersion.major()), + MessageLevel::Error); + for (auto major : compatibleMajors) { + emit logLine(tr("Java version %1").arg(major), MessageLevel::Error); } + emit logLine(tr("Go to instance Java settings to change your Java version or disable the Java compatibility check if you know what " + "you're doing."), + MessageLevel::Error); + + emitFailed(QString("Incompatible Java major version")); } diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 9b2aa7637..496cb69a7 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -102,6 +102,8 @@ void JavaPage::applySettings() s->set("JvmArgs", ui->jvmArgsTextBox->toPlainText().replace("\n", " ")); s->set("IgnoreJavaCompatibility", ui->skipCompatibilityCheckbox->isChecked()); s->set("IgnoreJavaWizard", ui->skipJavaWizardCheckbox->isChecked()); + s->set("AutomaticJavaSwitch", ui->autodetectJavaCheckBox->isChecked()); + s->set("AutomaticJavaDownload", ui->autodownloadCheckBox->isChecked()); s->set("JavaExtraSearchPaths", m_extra_paths->stringList()); JavaCommon::checkJVMArgs(s->get("JvmArgs").toString(), this->parentWidget()); } @@ -125,6 +127,8 @@ void JavaPage::loadSettings() ui->jvmArgsTextBox->setPlainText(s->get("JvmArgs").toString()); ui->skipCompatibilityCheckbox->setChecked(s->get("IgnoreJavaCompatibility").toBool()); ui->skipJavaWizardCheckbox->setChecked(s->get("IgnoreJavaWizard").toBool()); + ui->autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); + ui->autodownloadCheckBox->setChecked(s->get("AutomaticJavaDownload").toBool()); m_extra_paths = new QStringListModel(s->get("JavaExtraSearchPaths").toStringList()); ui->extraJavaPathsList->setModel(m_extra_paths); } diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index a518b0b14..d135adc9a 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -160,25 +160,6 @@ Java Runtime - - - - true - - - - 0 - 0 - - - - - 16777215 - 100 - - - - @@ -232,7 +213,7 @@
- + @@ -248,6 +229,42 @@ + + + + If enabled, the launcher will not prompt you to choose a Java version if one isn't found. + + + Skip Java &Wizard + + + + + + + true + + + + 0 + 0 + + + + + 16777215 + 100 + + + + + + + + Autodetect Java version + + + @@ -284,13 +301,10 @@ - - - - If enabled, the launcher will not prompt you to choose a Java version if one isn't found. - + + - Skip Java &Wizard + Autodownload Mojang Java From ea2adf909dfe10c0adaf53ef2fabbd94ee7ae8cd Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 17 Feb 2024 11:14:32 +0200 Subject: [PATCH 052/616] Added progeess dialog to autodownload java Signed-off-by: Trial97 --- .../java/download/ArchiveDownloadTask.cpp | 5 +- .../java/download/ManifestDownloadTask.cpp | 10 +++- launcher/minecraft/launch/AutoInstallJava.cpp | 59 ++++++++++++++----- launcher/minecraft/launch/AutoInstallJava.h | 1 + 4 files changed, 56 insertions(+), 19 deletions(-) diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index 847f3f364..9f8dc0543 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -50,9 +50,12 @@ void ArchiveDownloadTask::executeTask() auto fullPath = entry->getFullPath(); connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); - connect(download.get(), &NetJob::progress, this, &ArchiveDownloadTask::progress); connect(download.get(), &NetJob::failed, this, &ArchiveDownloadTask::emitFailed); connect(this, &Task::aborted, download.get(), &NetJob::abort); + connect(download.get(), &Task::progress, this, &ArchiveDownloadTask::setProgress); + connect(download.get(), &Task::stepProgress, this, &ArchiveDownloadTask::propagateStepProgress); + connect(download.get(), &Task::status, this, &ArchiveDownloadTask::setStatus); + connect(download.get(), &Task::details, this, &ArchiveDownloadTask::setDetails); connect(download.get(), &NetJob::succeeded, [this, fullPath] { // This should do all of the extracting and creating folders extractJava(fullPath); diff --git a/launcher/java/download/ManifestDownloadTask.cpp b/launcher/java/download/ManifestDownloadTask.cpp index 1a3071530..0c2eee0c8 100644 --- a/launcher/java/download/ManifestDownloadTask.cpp +++ b/launcher/java/download/ManifestDownloadTask.cpp @@ -52,9 +52,12 @@ void ManifestDownloadTask::executeTask() download->addNetAction(action); connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); - connect(download.get(), &NetJob::progress, this, &ManifestDownloadTask::progress); connect(download.get(), &NetJob::failed, this, &ManifestDownloadTask::emitFailed); connect(this, &Task::aborted, download.get(), &NetJob::abort); + connect(download.get(), &Task::progress, this, &ManifestDownloadTask::setProgress); + connect(download.get(), &Task::stepProgress, this, &ManifestDownloadTask::propagateStepProgress); + connect(download.get(), &Task::status, this, &ManifestDownloadTask::setStatus); + connect(download.get(), &Task::details, this, &ManifestDownloadTask::setDetails); connect(download.get(), &NetJob::succeeded, [files, this] { QJsonParseError parse_error{}; @@ -117,8 +120,11 @@ void ManifestDownloadTask::downloadJava(const QJsonDocument& doc) disconnect(this, &Task::aborted, elementDownload, &NetJob::abort); elementDownload->deleteLater(); }); - connect(elementDownload, &NetJob::progress, this, &ManifestDownloadTask::progress); connect(elementDownload, &NetJob::failed, this, &ManifestDownloadTask::emitFailed); + connect(elementDownload, &Task::progress, this, &ManifestDownloadTask::setProgress); + connect(elementDownload, &Task::stepProgress, this, &ManifestDownloadTask::propagateStepProgress); + connect(elementDownload, &Task::status, this, &ManifestDownloadTask::setStatus); + connect(elementDownload, &Task::details, this, &ManifestDownloadTask::setDetails); connect(this, &Task::aborted, elementDownload, &NetJob::abort); connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index 0d3740c93..d93276432 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -34,8 +34,8 @@ */ #include "AutoInstallJava.h" -#include -#include +#include +#include #include #include "Application.h" @@ -61,7 +61,8 @@ void AutoInstallJava::executeTask() { auto settings = m_instance->settings(); if (!APPLICATION->settings()->get("AutomaticJavaSwitch").toBool() || - (settings->get("OverrideJava").toBool() && settings->get("OverrideJavaLocation").toBool())) { + (settings->get("OverrideJava").toBool() && settings->get("OverrideJavaLocation").toBool() && + QFileInfo::exists(settings->get("JavaPath").toString()))) { emitSucceeded(); return; } @@ -80,6 +81,11 @@ void AutoInstallJava::executeTask() emit logLine(tr("No comptatible java version was found. Using the default one."), MessageLevel::Warning); emitSucceeded(); }); + connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress); + connect(m_current_task.get(), &Task::stepProgress, this, &AutoInstallJava::propagateStepProgress); + connect(m_current_task.get(), &Task::status, this, &AutoInstallJava::setStatus); + connect(m_current_task.get(), &Task::details, this, &AutoInstallJava::setDetails); + emit progressReportingRequest(); return; } auto wantedJavaName = packProfile->getProfile()->getCompatibleJavaName(); @@ -93,6 +99,11 @@ void AutoInstallJava::executeTask() m_current_task = versionList->getLoadTask(); connect(m_current_task.get(), &Task::succeeded, this, &AutoInstallJava::tryNextMajorJava); connect(m_current_task.get(), &Task::failed, this, &AutoInstallJava::emitFailed); + connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress); + connect(m_current_task.get(), &Task::stepProgress, this, &AutoInstallJava::propagateStepProgress); + connect(m_current_task.get(), &Task::status, this, &AutoInstallJava::setStatus); + connect(m_current_task.get(), &Task::details, this, &AutoInstallJava::setDetails); + emit progressReportingRequest(); } void AutoInstallJava::setJavaPath(QString path) @@ -134,29 +145,34 @@ void AutoInstallJava::downloadJava(Meta::Version::Ptr version, QString javaName) if (runtimes.contains(m_supported_arch)) { for (auto java : runtimes.value(m_supported_arch)) { if (java->name() == javaName) { - Task::Ptr task; QDir javaDir(APPLICATION->javaPath()); auto final_path = javaDir.absoluteFilePath(java->m_name); switch (java->downloadType) { case Java::DownloadType::Manifest: - task = makeShared(java->url, final_path, java->checksumType, java->checksumHash); + m_current_task = + makeShared(java->url, final_path, java->checksumType, java->checksumHash); break; case Java::DownloadType::Archive: - task = makeShared(java->url, final_path, java->checksumType, java->checksumHash); + m_current_task = + makeShared(java->url, final_path, java->checksumType, java->checksumHash); break; } - QEventLoop loop; auto deletePath = [final_path] { FS::deletePath(final_path); }; - connect(task.get(), &Task::failed, this, [this, deletePath](QString reason) { + connect(m_current_task.get(), &Task::failed, this, [this, deletePath](QString reason) { deletePath(); emitFailed(reason); }); - connect(this, &Task::aborted, this, [task, deletePath] { - task->abort(); + connect(this, &Task::aborted, this, [this, deletePath] { + m_current_task->abort(); deletePath(); }); - connect(task.get(), &Task::succeeded, this, &AutoInstallJava::setJavaPathFromPartial); - task->start(); + connect(m_current_task.get(), &Task::succeeded, this, &AutoInstallJava::setJavaPathFromPartial); + connect(m_current_task.get(), &Task::failed, this, &AutoInstallJava::tryNextMajorJava); + connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress); + connect(m_current_task.get(), &Task::stepProgress, this, &AutoInstallJava::propagateStepProgress); + connect(m_current_task.get(), &Task::status, this, &AutoInstallJava::setStatus); + connect(m_current_task.get(), &Task::details, this, &AutoInstallJava::setDetails); + m_current_task->start(); return; } } @@ -182,11 +198,22 @@ void AutoInstallJava::tryNextMajorJava() auto javaMajor = versionList->getVersion(QString("java%1").arg(majorJavaVersion)); javaMajor->load(Net::Mode::Online); - auto task = javaMajor->getCurrentTask(); - if (javaMajor->isLoaded() || !task) { + m_current_task = javaMajor->getCurrentTask(); + if (javaMajor->isLoaded() || !m_current_task) { downloadJava(javaMajor, wantedJavaName); } else { - connect(task.get(), &Task::succeeded, this, [this, javaMajor, wantedJavaName] { downloadJava(javaMajor, wantedJavaName); }); - connect(task.get(), &Task::failed, this, &AutoInstallJava::tryNextMajorJava); + connect(m_current_task.get(), &Task::succeeded, this, + [this, javaMajor, wantedJavaName] { downloadJava(javaMajor, wantedJavaName); }); + connect(m_current_task.get(), &Task::failed, this, &AutoInstallJava::tryNextMajorJava); + connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress); + connect(m_current_task.get(), &Task::stepProgress, this, &AutoInstallJava::propagateStepProgress); + connect(m_current_task.get(), &Task::status, this, &AutoInstallJava::setStatus); + connect(m_current_task.get(), &Task::details, this, &AutoInstallJava::setDetails); } } +bool AutoInstallJava::abort() +{ + if (m_current_task && m_current_task->canAbort()) + return m_current_task->abort(); + return true; +} diff --git a/launcher/minecraft/launch/AutoInstallJava.h b/launcher/minecraft/launch/AutoInstallJava.h index 4dcd3796a..45d0f870e 100644 --- a/launcher/minecraft/launch/AutoInstallJava.h +++ b/launcher/minecraft/launch/AutoInstallJava.h @@ -51,6 +51,7 @@ class AutoInstallJava : public LaunchStep { void executeTask() override; bool canAbort() const override { return m_current_task ? m_current_task->canAbort() : false; } + bool abort() override; protected: void setJavaPath(QString path); From 5232b3cd89ce70722865bc1ad6d96d8f52db1789 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 17 Feb 2024 12:17:00 +0200 Subject: [PATCH 053/616] Added some logs and fixed natives extraction Signed-off-by: Trial97 --- launcher/minecraft/MinecraftInstance.cpp | 11 ++++++----- launcher/minecraft/launch/AutoInstallJava.cpp | 5 ++++- launcher/minecraft/launch/VerifyJavaInstall.cpp | 11 +++++++++++ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 00ce405aa..cfc65428c 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -1078,6 +1078,12 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(makeShared(pptr, Net::Mode::Offline)); } + // check java + { + process->appendStep(makeShared(pptr)); + process->appendStep(makeShared(pptr)); + } + // if there are any jar mods { process->appendStep(makeShared(pptr)); @@ -1102,11 +1108,6 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt { process->appendStep(makeShared(pptr)); } - // check java - { - process->appendStep(makeShared(pptr)); - process->appendStep(makeShared(pptr)); - } // verify that minimum Java requirements are met { diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index d93276432..7905689da 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -68,12 +68,15 @@ void AutoInstallJava::executeTask() } auto packProfile = m_instance->getPackProfile(); if (!APPLICATION->settings()->get("AutomaticJavaDownload").toBool()) { - auto javas = APPLICATION->javalist().get(); + auto javas = APPLICATION->javalist(); m_current_task = javas->getLoadTask(); connect(m_current_task.get(), &Task::finished, this, [this, javas, packProfile] { for (auto i = 0; i < javas->count(); i++) { auto java = std::dynamic_pointer_cast(javas->at(i)); if (java && packProfile->getProfile()->getCompatibleJavaMajors().contains(java->id.major())) { + if (!java->is_64bit) { + emit logLine(tr("The automatic Java mechanism detected a x32 java."), MessageLevel::Info); + } setJavaPath(java->path); return; } diff --git a/launcher/minecraft/launch/VerifyJavaInstall.cpp b/launcher/minecraft/launch/VerifyJavaInstall.cpp index 279545fed..536384f12 100644 --- a/launcher/minecraft/launch/VerifyJavaInstall.cpp +++ b/launcher/minecraft/launch/VerifyJavaInstall.cpp @@ -37,6 +37,7 @@ #include #include "Application.h" +#include "MessageLevel.h" #include "java/JavaInstall.h" #include "java/JavaInstallList.h" #include "java/JavaVersion.h" @@ -50,6 +51,16 @@ void VerifyJavaInstall::executeTask() auto settings = instance->settings(); auto storedVersion = settings->get("JavaVersion").toString(); auto ignoreCompatibility = settings->get("IgnoreJavaCompatibility").toBool(); + auto javaArchitecture = settings->get("JavaArchitecture").toString(); + auto maxMemAlloc = settings->get("MaxMemAlloc").toInt(); + + emit logLine(tr("Java architecture is x%1.").arg(javaArchitecture), MessageLevel::Info); + if (javaArchitecture == "32" && maxMemAlloc > 2048) { + emit logLine(tr("Max memory allocation exceeds the supported value.\n" + "The selected java is 32 bit and doesn't support more than 2GB of ram.\n" + "The instance may not start due to this."), + MessageLevel::Error); + } auto compatibleMajors = packProfile->getProfile()->getCompatibleJavaMajors(); From a7dad96a701100ab583b4c9ca00a7c9b979fcf84 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 18 Feb 2024 09:32:31 +0200 Subject: [PATCH 054/616] Added refresh button on managed java list Signed-off-by: Trial97 --- launcher/ui/pages/global/JavaPage.cpp | 4 ++++ launcher/ui/pages/global/JavaPage.h | 1 + launcher/ui/pages/global/JavaPage.ui | 7 +++++++ 3 files changed, 12 insertions(+) diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 496cb69a7..e967204c8 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -296,3 +296,7 @@ void JavaPage::on_removeJavaButton_clicked() } } } +void JavaPage::on_refreshJavaButton_clicked() +{ + ui->managedJavaList->loadList(); +} diff --git a/launcher/ui/pages/global/JavaPage.h b/launcher/ui/pages/global/JavaPage.h index 03d14b824..1a521e2db 100644 --- a/launcher/ui/pages/global/JavaPage.h +++ b/launcher/ui/pages/global/JavaPage.h @@ -77,6 +77,7 @@ class JavaPage : public QWidget, public BasePage { void on_removeExtraPathButton_clicked(); void on_downloadJavaButton_clicked(); void on_removeJavaButton_clicked(); + void on_refreshJavaButton_clicked(); void on_maxMemSpinBox_valueChanged(int i); void checkerFinished(); diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index d135adc9a..80be81fb4 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -376,6 +376,13 @@ + + + + Refresh + + + From 4c76f7afe0a1ea015d7c0eac7a1a6b1c8a1a760a Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 18 Feb 2024 09:46:44 +0200 Subject: [PATCH 055/616] Made auto java checkbox dependent Signed-off-by: Trial97 --- launcher/ui/pages/global/JavaPage.cpp | 8 +++++++- launcher/ui/pages/global/JavaPage.ui | 3 +++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index e967204c8..0e97211d9 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -41,6 +41,7 @@ #include "ui/java/JavaDownloader.h" #include "ui_JavaPage.h" +#include #include #include #include @@ -65,6 +66,11 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) ui->managedJavaList->selectCurrent(); ui->managedJavaList->setEmptyString(tr("No java versions are currently available in the meta")); ui->managedJavaList->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); + connect(ui->autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] { + ui->autodownloadCheckBox->setEnabled(ui->autodetectJavaCheckBox->isChecked()); + if (!ui->autodetectJavaCheckBox->isChecked()) + ui->autodownloadCheckBox->setChecked(false); + }); loadSettings(); updateThresholds(); @@ -128,7 +134,7 @@ void JavaPage::loadSettings() ui->skipCompatibilityCheckbox->setChecked(s->get("IgnoreJavaCompatibility").toBool()); ui->skipJavaWizardCheckbox->setChecked(s->get("IgnoreJavaWizard").toBool()); ui->autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); - ui->autodownloadCheckBox->setChecked(s->get("AutomaticJavaDownload").toBool()); + ui->autodownloadCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool() && s->get("AutomaticJavaDownload").toBool()); m_extra_paths = new QStringListModel(s->get("JavaExtraSearchPaths").toStringList()); ui->extraJavaPathsList->setModel(m_extra_paths); } diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index 80be81fb4..43843017c 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -303,6 +303,9 @@ + + false + Autodownload Mojang Java From 2f489d1aec120274b3e98187bf8326c8990bca12 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 18 Feb 2024 11:34:54 +0200 Subject: [PATCH 056/616] Added auto java options to the java wizzard page Signed-off-by: Trial97 --- launcher/ui/setupwizard/JavaWizardPage.cpp | 2 ++ launcher/ui/widgets/JavaSettingsWidget.cpp | 38 ++++++++++++++++++++++ launcher/ui/widgets/JavaSettingsWidget.h | 8 +++++ 3 files changed, 48 insertions(+) diff --git a/launcher/ui/setupwizard/JavaWizardPage.cpp b/launcher/ui/setupwizard/JavaWizardPage.cpp index abe4860da..d537580fc 100644 --- a/launcher/ui/setupwizard/JavaWizardPage.cpp +++ b/launcher/ui/setupwizard/JavaWizardPage.cpp @@ -57,6 +57,8 @@ bool JavaWizardPage::validatePage() { auto settings = APPLICATION->settings(); auto result = m_java_widget->validate(); + settings->set("AutomaticJavaSwitch", m_java_widget->autodetectJava()); + settings->set("AutomaticJavaDownload", m_java_widget->autodownloadJava()); switch (result) { default: case JavaSettingsWidget::ValidationStatus::Bad: { diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 507c632d5..c15f7bf42 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -136,6 +136,26 @@ void JavaSettingsWidget::setupUi() m_verticalLayout->addLayout(m_horizontalBtnLayout); + m_autoJavaGroupBox = new QGroupBox(this); + m_autoJavaGroupBox->setObjectName(QStringLiteral("autoJavaGroupBox")); + m_veriticalJavaLayout = new QVBoxLayout(m_autoJavaGroupBox); + m_veriticalJavaLayout->setObjectName(QStringLiteral("veriticalJavaLayout")); + + m_autodetectJavaCheckBox = new QCheckBox(m_autoJavaGroupBox); + m_autodetectJavaCheckBox->setObjectName("autodetectJavaCheckBox"); + m_veriticalJavaLayout->addWidget(m_autodetectJavaCheckBox); + + m_autodownloadCheckBox = new QCheckBox(m_autoJavaGroupBox); + m_autodownloadCheckBox->setObjectName("autodownloadCheckBox"); + m_autodownloadCheckBox->setEnabled(false); + m_veriticalJavaLayout->addWidget(m_autodownloadCheckBox); + connect(m_autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] { + m_autodownloadCheckBox->setEnabled(m_autodetectJavaCheckBox->isChecked()); + if (!m_autodetectJavaCheckBox->isChecked()) + m_autodownloadCheckBox->setChecked(false); + }); + m_verticalLayout->addWidget(m_autoJavaGroupBox); + retranslate(); } @@ -153,6 +173,9 @@ void JavaSettingsWidget::initialize() m_maxMemSpinBox->setValue(observedMaxMemory); m_permGenSpinBox->setValue(observedPermGenMemory); updateThresholds(); + + m_autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); + m_autodownloadCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool() && s->get("AutomaticJavaDownload").toBool()); } void JavaSettingsWidget::refresh() @@ -280,11 +303,13 @@ void JavaSettingsWidget::on_javaBrowseBtn_clicked() m_javaPathTextBox->setText(cooked_path); checkJavaPath(cooked_path); } + void JavaSettingsWidget::on_javaDownloadBtn_clicked() { auto jdialog = new Java::Downloader(this); jdialog->exec(); } + void JavaSettingsWidget::on_javaStatusBtn_clicked() { QString text; @@ -418,6 +443,9 @@ void JavaSettingsWidget::retranslate() m_minMemSpinBox->setToolTip(tr("The amount of memory Minecraft is started with.")); m_permGenSpinBox->setToolTip(tr("The amount of memory available to store loaded Java classes.")); m_javaBrowseBtn->setText(tr("Browse")); + m_autodownloadCheckBox->setText(tr("Autodownload Mojang Java")); + m_autodetectJavaCheckBox->setText(tr("Autodetect Java version")); + m_autoJavaGroupBox->setTitle(tr("Autodetect Java")); } void JavaSettingsWidget::updateThresholds() @@ -464,3 +492,13 @@ void JavaSettingsWidget::on_addJavaPathBtn_clicked() APPLICATION->settings()->set("JavaExtraSearchPaths", currentList); refresh(); } + +bool JavaSettingsWidget::autodownloadJava() const +{ + return m_autodetectJavaCheckBox->isChecked(); +} + +bool JavaSettingsWidget::autodetectJava() const +{ + return m_autodownloadCheckBox->isChecked(); +} diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index 385a9256a..205b83d8c 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -4,6 +4,7 @@ #include #include #include +#include #include class QLineEdit; @@ -41,6 +42,8 @@ class JavaSettingsWidget : public QWidget { int minHeapSize() const; int maxHeapSize() const; QString javaPath() const; + bool autodetectJava() const; + bool autodownloadJava() const; void updateThresholds(); @@ -86,6 +89,11 @@ class JavaSettingsWidget : public QWidget { QIcon yellowIcon; QIcon badIcon; + QGroupBox* m_autoJavaGroupBox = nullptr; + QVBoxLayout* m_veriticalJavaLayout = nullptr; + QCheckBox* m_autodetectJavaCheckBox = nullptr; + QCheckBox* m_autodownloadCheckBox = nullptr; + unsigned int observedMinMemory = 0; unsigned int observedMaxMemory = 0; unsigned int observedPermGenMemory = 0; From 4aafa98852ec1f89cc765def26ab9e4174b8af3b Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 18 Feb 2024 12:58:34 +0200 Subject: [PATCH 057/616] Improved the message boxes for java wizzard Signed-off-by: Trial97 --- launcher/ui/widgets/JavaSettingsWidget.cpp | 71 ++++++++++++++++++---- 1 file changed, 58 insertions(+), 13 deletions(-) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index c15f7bf42..66278abb0 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -11,6 +12,7 @@ #include +#include "DesktopServices.h" #include "FileSystem.h" #include "JavaCommon.h" #include "java/JavaChecker.h" @@ -174,8 +176,19 @@ void JavaSettingsWidget::initialize() m_permGenSpinBox->setValue(observedPermGenMemory); updateThresholds(); - m_autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); - m_autodownloadCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool() && s->get("AutomaticJavaDownload").toBool()); + auto button = CustomMessageBox::selectable(this, tr("Auto Java Download"), + tr("%1 has now the ability to auto downloand the correct java for each minecraft version.\n" + "Do you want to enable java auto-download?\n") + .arg(BuildConfig.LAUNCHER_DISPLAYNAME), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) + ->exec(); + if (button == QMessageBox::Yes) { + m_autodetectJavaCheckBox->setChecked(true); + m_autodownloadCheckBox->setChecked(true); + } else { + m_autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); + m_autodownloadCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool() && s->get("AutomaticJavaDownload").toBool()); + } } void JavaSettingsWidget::refresh() @@ -192,20 +205,52 @@ JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate() switch (javaStatus) { default: case JavaStatus::NotSet: + /* fallthrough */ case JavaStatus::DoesNotExist: + /* fallthrough */ case JavaStatus::DoesNotStart: + /* fallthrough */ case JavaStatus::ReturnedInvalidData: { - int button = CustomMessageBox::selectable(this, tr("No Java version selected"), - tr("You didn't select a Java version or selected something that doesn't work.\n" - "%1 will not be able to start Minecraft.\n" - "Do you wish to proceed without any Java?" - "\n\n" - "You can change the Java version in the settings later.\n") - .arg(BuildConfig.LAUNCHER_DISPLAYNAME), - QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::NoButton) - ->exec(); - if (button == QMessageBox::No) { - return ValidationStatus::Bad; + if (!m_autodownloadCheckBox->isChecked()) { // the java will not be autodownloaded + int button = QMessageBox::No; + if (m_result.mojangPlatform == "32" && maxHeapSize() > 2048) { + button = CustomMessageBox::selectable( + this, tr("Java x32 detected"), + tr("You selected a 32 bit java, but allocated more than 2048MiB as maximum memory.\n" + "%1 will not be able to start Minecraft.\n" + "Do you wish to proceed?" + "\n\n" + "You can change the Java version in the settings later.\n") + .arg(BuildConfig.LAUNCHER_DISPLAYNAME), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No | QMessageBox::Help, QMessageBox::NoButton) + ->exec(); + + } else { + button = CustomMessageBox::selectable(this, tr("No Java version selected"), + tr("You didn't select a Java version or selected something that doesn't work.\n" + "%1 will not be able to start Minecraft.\n" + "Do you wish to proceed without any Java?" + "\n\n" + "You can change the Java version in the settings later.\n") + .arg(BuildConfig.LAUNCHER_DISPLAYNAME), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No | QMessageBox::Help, + QMessageBox::NoButton) + ->exec(); + } + switch (button) { + case QMessageBox::Yes: + return ValidationStatus::JavaBad; + case QMessageBox::Help: + DesktopServices::openUrl(QUrl(BuildConfig.HELP_URL.arg("java-wizzard"))); + /* fallthrough */ + case QMessageBox::No: + /* fallthrough */ + default: + return ValidationStatus::Bad; + } + if (button == QMessageBox::No) { + return ValidationStatus::Bad; + } } return ValidationStatus::JavaBad; } break; From b4f3a969b3fd2f96675d25e3c8726c76395b3d7e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 18 Feb 2024 14:30:38 +0200 Subject: [PATCH 058/616] Updated strings that are displayed to user Signed-off-by: Trial97 --- launcher/MMCZip.cpp | 2 +- launcher/MMCZip.h | 2 +- launcher/java/JavaInstall.cpp | 2 +- launcher/java/JavaInstall.h | 2 +- launcher/java/JavaMetadata.cpp | 2 +- launcher/java/JavaMetadata.h | 2 +- launcher/java/download/ArchiveDownloadTask.cpp | 2 +- launcher/java/download/ArchiveDownloadTask.h | 2 +- launcher/java/download/ManifestDownloadTask.cpp | 2 +- launcher/java/download/ManifestDownloadTask.h | 2 +- launcher/minecraft/launch/AutoInstallJava.cpp | 10 +++++----- launcher/minecraft/launch/AutoInstallJava.h | 2 +- launcher/minecraft/launch/VerifyJavaInstall.cpp | 2 +- launcher/ui/java/JavaDownloader.cpp | 2 +- launcher/ui/pages/global/JavaPage.cpp | 2 +- launcher/ui/pages/global/JavaPage.ui | 2 +- launcher/ui/pages/instance/InstanceSettingsPage.cpp | 2 +- launcher/ui/pages/instance/InstanceSettingsPage.ui | 3 --- launcher/ui/widgets/JavaSettingsWidget.cpp | 6 +++--- 19 files changed, 24 insertions(+), 27 deletions(-) diff --git a/launcher/MMCZip.cpp b/launcher/MMCZip.cpp index 9e26c5eda..8273acbb6 100644 --- a/launcher/MMCZip.cpp +++ b/launcher/MMCZip.cpp @@ -2,7 +2,7 @@ /* * Prism Launcher - Minecraft Launcher * Copyright (C) 2022 Sefa Eyeoglu - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/MMCZip.h b/launcher/MMCZip.h index db6a7421a..e2987badd 100644 --- a/launcher/MMCZip.h +++ b/launcher/MMCZip.h @@ -2,7 +2,7 @@ /* * Prism Launcher - Minecraft Launcher * Copyright (C) 2022 Sefa Eyeoglu - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/java/JavaInstall.cpp b/launcher/java/JavaInstall.cpp index cfa471402..8e97e0e14 100644 --- a/launcher/java/JavaInstall.cpp +++ b/launcher/java/JavaInstall.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/java/JavaInstall.h b/launcher/java/JavaInstall.h index 6890264f3..7d8d392fa 100644 --- a/launcher/java/JavaInstall.h +++ b/launcher/java/JavaInstall.h @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/java/JavaMetadata.cpp b/launcher/java/JavaMetadata.cpp index b261122dc..b73c54fe6 100644 --- a/launcher/java/JavaMetadata.cpp +++ b/launcher/java/JavaMetadata.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/java/JavaMetadata.h b/launcher/java/JavaMetadata.h index dd3ae865c..640a412f1 100644 --- a/launcher/java/JavaMetadata.h +++ b/launcher/java/JavaMetadata.h @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index 9f8dc0543..e3db77d2c 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/java/download/ArchiveDownloadTask.h b/launcher/java/download/ArchiveDownloadTask.h index 88c0223d5..c656567fe 100644 --- a/launcher/java/download/ArchiveDownloadTask.h +++ b/launcher/java/download/ArchiveDownloadTask.h @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/java/download/ManifestDownloadTask.cpp b/launcher/java/download/ManifestDownloadTask.cpp index 0c2eee0c8..ba5ff2cc0 100644 --- a/launcher/java/download/ManifestDownloadTask.cpp +++ b/launcher/java/download/ManifestDownloadTask.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/java/download/ManifestDownloadTask.h b/launcher/java/download/ManifestDownloadTask.h index dcfee4d4d..f0eaf95a6 100644 --- a/launcher/java/download/ManifestDownloadTask.h +++ b/launcher/java/download/ManifestDownloadTask.h @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index 7905689da..ab68910a7 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (C) 2022 Sefa Eyeoglu + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -75,13 +75,13 @@ void AutoInstallJava::executeTask() auto java = std::dynamic_pointer_cast(javas->at(i)); if (java && packProfile->getProfile()->getCompatibleJavaMajors().contains(java->id.major())) { if (!java->is_64bit) { - emit logLine(tr("The automatic Java mechanism detected a x32 java."), MessageLevel::Info); + emit logLine(tr("The automatic Java mechanism detected an x32 java."), MessageLevel::Info); } setJavaPath(java->path); return; } } - emit logLine(tr("No comptatible java version was found. Using the default one."), MessageLevel::Warning); + emit logLine(tr("No compatible java version was found. Using the default one."), MessageLevel::Warning); emitSucceeded(); }); connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress); @@ -136,7 +136,7 @@ void AutoInstallJava::setJavaPathFromPartial() if (QFileInfo::exists(finalPath)) { setJavaPath(finalPath); } else { - emit logLine(tr("No comptatible java version was found. Using the default one."), MessageLevel::Warning); + emit logLine(tr("No compatible java version was found. Using the default one."), MessageLevel::Warning); emitSucceeded(); } return; @@ -192,7 +192,7 @@ void AutoInstallJava::tryNextMajorJava() auto wantedJavaName = packProfile->getProfile()->getCompatibleJavaName(); auto majorJavaVersions = packProfile->getProfile()->getCompatibleJavaMajors(); if (m_majorJavaVersionIndex >= majorJavaVersions.length()) { - emit logLine(tr("No comptatible java version was found. Using the default one."), MessageLevel::Warning); + emit logLine(tr("No compatible java version was found. Using the default one."), MessageLevel::Warning); emitSucceeded(); return; } diff --git a/launcher/minecraft/launch/AutoInstallJava.h b/launcher/minecraft/launch/AutoInstallJava.h index 45d0f870e..7e4efc50c 100644 --- a/launcher/minecraft/launch/AutoInstallJava.h +++ b/launcher/minecraft/launch/AutoInstallJava.h @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (C) 2022 Sefa Eyeoglu + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/minecraft/launch/VerifyJavaInstall.cpp b/launcher/minecraft/launch/VerifyJavaInstall.cpp index 536384f12..f26b850eb 100644 --- a/launcher/minecraft/launch/VerifyJavaInstall.cpp +++ b/launcher/minecraft/launch/VerifyJavaInstall.cpp @@ -57,7 +57,7 @@ void VerifyJavaInstall::executeTask() emit logLine(tr("Java architecture is x%1.").arg(javaArchitecture), MessageLevel::Info); if (javaArchitecture == "32" && maxMemAlloc > 2048) { emit logLine(tr("Max memory allocation exceeds the supported value.\n" - "The selected java is 32 bit and doesn't support more than 2GB of ram.\n" + "The selected java is 32-bit and doesn't support more than 2048MiB of RAM.\n" "The instance may not start due to this."), MessageLevel::Error); } diff --git a/launcher/ui/java/JavaDownloader.cpp b/launcher/ui/java/JavaDownloader.cpp index 4495210c3..7417a4ea8 100644 --- a/launcher/ui/java/JavaDownloader.cpp +++ b/launcher/ui/java/JavaDownloader.cpp @@ -49,7 +49,7 @@ Downloader::Downloader(QWidget* parent) : QDialog(parent), ui(new Ui::JavaDownlo versionList->setProvidedRoles({ BaseVersionList::VersionRole, BaseVersionList::RecommendedRole, BaseVersionList::VersionPointerRole }); ui->majorVersionSelect->initialize(versionList.get()); ui->majorVersionSelect->selectCurrent(); - ui->majorVersionSelect->setEmptyString(tr("No java versions are currently available in the meta")); + ui->majorVersionSelect->setEmptyString(tr("No java versions are currently available in the meta.")); ui->majorVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); ui->javaVersionSelect->setEmptyString(tr("No java versions are currently available for your OS.")); diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 0e97211d9..524165e62 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -158,7 +158,7 @@ void JavaPage::on_javaDetectBtn_clicked() if (!java->is_64bit && APPLICATION->settings()->get("MaxMemAlloc").toInt() > 2048) { CustomMessageBox::selectable(this, tr("Confirm Selection"), tr("You selected an x86 java version.\n" - "This means that will not support more than 2Gb(2048Mb) of ram.\n" + "This means that will not support more than 2048MiB of RAM.\n" "Please make sure that the maximum memory value is lower."), QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) ->exec(); diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index 43843017c..3f763f8d2 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -307,7 +307,7 @@ false - Autodownload Mojang Java + Auto-download Mojang Java diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 926e48952..8a63aab22 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -417,7 +417,7 @@ void InstanceSettingsPage::on_javaDetectBtn_clicked() if (!java->is_64bit && m_settings->get("MaxMemAlloc").toInt() > 2048) { CustomMessageBox::selectable(this, tr("Confirm Selection"), tr("You selected an x86 java version.\n" - "This means that will not support more than 2Gb(2048Mb) of ram.\n" + "This means that will not support more than 2048MiB of RAM.\n" "Please make sure that the maximum memory value is lower."), QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) ->exec(); diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui index 7762ca8a7..94464064e 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.ui +++ b/launcher/ui/pages/instance/InstanceSettingsPage.ui @@ -617,9 +617,6 @@ Enable online fixes (experimental) - - Disable Quilt Loader Beacon - diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 66278abb0..91fd6ff03 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -216,7 +216,7 @@ JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate() if (m_result.mojangPlatform == "32" && maxHeapSize() > 2048) { button = CustomMessageBox::selectable( this, tr("Java x32 detected"), - tr("You selected a 32 bit java, but allocated more than 2048MiB as maximum memory.\n" + tr("You selected an 32-bit java, but allocated more than 2048MiB as maximum memory.\n" "%1 will not be able to start Minecraft.\n" "Do you wish to proceed?" "\n\n" @@ -488,7 +488,7 @@ void JavaSettingsWidget::retranslate() m_minMemSpinBox->setToolTip(tr("The amount of memory Minecraft is started with.")); m_permGenSpinBox->setToolTip(tr("The amount of memory available to store loaded Java classes.")); m_javaBrowseBtn->setText(tr("Browse")); - m_autodownloadCheckBox->setText(tr("Autodownload Mojang Java")); + m_autodownloadCheckBox->setText(tr("Auto-download Mojang Java")); m_autodetectJavaCheckBox->setText(tr("Autodetect Java version")); m_autoJavaGroupBox->setTitle(tr("Autodetect Java")); } @@ -509,7 +509,7 @@ void JavaSettingsWidget::updateThresholds() } else if (observedMaxMemory > 2048 && m_result.is_64bit) { iconName = "status-bad"; m_labelMaxMemIcon->setToolTip( - tr("Your maximum memory allocation exceeds selected java posible memory(due to x86 applicatiion limitations).")); + tr("Your maximum memory allocation exceeds selected java possible memory(due to x86 application limitations).")); } else { iconName = "status-good"; m_labelMaxMemIcon->setToolTip(""); From 038d3e4596586718ca6982c68a17c36723561a42 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 18 Feb 2024 16:49:10 +0200 Subject: [PATCH 059/616] Fixed asan complains Signed-off-by: Trial97 --- launcher/java/download/ArchiveDownloadTask.cpp | 5 ++++- launcher/java/download/ManifestDownloadTask.cpp | 5 ++++- launcher/ui/pages/global/JavaPage.cpp | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index e3db77d2c..34f60260e 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -49,7 +49,10 @@ void ArchiveDownloadTask::executeTask() download->addNetAction(action); auto fullPath = entry->getFullPath(); - connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); + connect(download.get(), &NetJob::finished, [download, this] { + disconnect(this, &Task::aborted, download.get(), &NetJob::abort); + download->deleteLater(); + }); connect(download.get(), &NetJob::failed, this, &ArchiveDownloadTask::emitFailed); connect(this, &Task::aborted, download.get(), &NetJob::abort); connect(download.get(), &Task::progress, this, &ArchiveDownloadTask::setProgress); diff --git a/launcher/java/download/ManifestDownloadTask.cpp b/launcher/java/download/ManifestDownloadTask.cpp index ba5ff2cc0..5551c75d5 100644 --- a/launcher/java/download/ManifestDownloadTask.cpp +++ b/launcher/java/download/ManifestDownloadTask.cpp @@ -51,7 +51,10 @@ void ManifestDownloadTask::executeTask() } download->addNetAction(action); - connect(download.get(), &NetJob::finished, [download, this] { disconnect(this, &Task::aborted, download.get(), &NetJob::abort); }); + connect(download.get(), &NetJob::finished, [download, this] { + disconnect(this, &Task::aborted, download.get(), &NetJob::abort); + download->deleteLater(); + }); connect(download.get(), &NetJob::failed, this, &ManifestDownloadTask::emitFailed); connect(this, &Task::aborted, download.get(), &NetJob::abort); connect(download.get(), &Task::progress, this, &ManifestDownloadTask::setProgress); diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 524165e62..deb085f93 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -135,7 +135,7 @@ void JavaPage::loadSettings() ui->skipJavaWizardCheckbox->setChecked(s->get("IgnoreJavaWizard").toBool()); ui->autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); ui->autodownloadCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool() && s->get("AutomaticJavaDownload").toBool()); - m_extra_paths = new QStringListModel(s->get("JavaExtraSearchPaths").toStringList()); + m_extra_paths = new QStringListModel(s->get("JavaExtraSearchPaths").toStringList(), this); ui->extraJavaPathsList->setModel(m_extra_paths); } @@ -199,6 +199,7 @@ void JavaPage::on_javaDownloadBtn_clicked() { auto jdialog = new Java::Downloader(this); jdialog->exec(); + ui->managedJavaList->loadList(); } void JavaPage::on_maxMemSpinBox_valueChanged([[maybe_unused]] int i) From 889f604a415fd01150868090a1d47b7c408104d5 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 18 Feb 2024 21:38:31 +0200 Subject: [PATCH 060/616] Removed JavaExtraSearchPaths Signed-off-by: Trial97 --- launcher/Application.cpp | 1 - launcher/java/JavaUtils.cpp | 37 ------------------- launcher/java/JavaUtils.h | 1 - launcher/ui/pages/global/JavaPage.cpp | 27 -------------- launcher/ui/pages/global/JavaPage.h | 3 -- launcher/ui/pages/global/JavaPage.ui | 43 ---------------------- launcher/ui/widgets/JavaSettingsWidget.cpp | 19 ---------- launcher/ui/widgets/JavaSettingsWidget.h | 2 - 8 files changed, 133 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 6b7333972..31950a813 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -632,7 +632,6 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->registerSetting("JvmArgs", ""); m_settings->registerSetting("IgnoreJavaCompatibility", false); m_settings->registerSetting("IgnoreJavaWizard", false); - m_settings->registerSetting("JavaExtraSearchPaths", QStringList()); m_settings->registerSetting("AutomaticJavaSwitch", false); m_settings->registerSetting("AutomaticJavaDownload", false); diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index 1d254e405..57e381e1d 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -338,7 +338,6 @@ QList JavaUtils::FindJavaPaths() candidates.append(getMinecraftJavaBundle()); candidates.append(getPrismJavaBundle()); - candidates.append(getPrismExtraJavaPaths()); candidates = addJavasFromEnv(candidates); candidates.removeDuplicates(); return candidates; @@ -366,7 +365,6 @@ QList JavaUtils::FindJavaPaths() } javas.append(getMinecraftJavaBundle()); javas.append(getPrismJavaBundle()); - javas.append(getPrismExtraJavaPaths()); javas = addJavasFromEnv(javas); javas.removeDuplicates(); return javas; @@ -420,7 +418,6 @@ QList JavaUtils::FindJavaPaths() javas.append(getMinecraftJavaBundle()); javas.append(getPrismJavaBundle()); - javas.append(getPrismExtraJavaPaths()); javas = addJavasFromEnv(javas); javas.removeDuplicates(); return javas; @@ -435,7 +432,6 @@ QList JavaUtils::FindJavaPaths() javas.append(getMinecraftJavaBundle()); javas.append(getPrismJavaBundle()); - javas.append(getPrismExtraJavaPaths()); javas.removeDuplicates(); return addJavasFromEnv(javas); } @@ -521,36 +517,3 @@ QStringList getPrismJavaBundle() return javas; } - -QStringList getPrismExtraJavaPaths() -{ - QList javas; - - QString executable = "java"; -#if defined(Q_OS_WIN32) - executable += "w.exe"; -#endif - - auto scanDir = [&](QString prefix) { - javas.append(FS::PathCombine(prefix, "jre", "bin", executable)); - javas.append(FS::PathCombine(prefix, "bin", executable)); - javas.append(FS::PathCombine(prefix, executable)); - }; - auto scanJavaDir = [&](const QString& dirPath) { - QDir dir(dirPath); - if (!dir.exists()) - return; - auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); - for (auto& entry : entries) { - scanDir(entry.canonicalFilePath()); - } - }; - - auto extra_paths = APPLICATION->settings()->get("JavaExtraSearchPaths").toStringList(); - for (auto& entry : extra_paths) { - scanDir(entry); - scanJavaDir(entry); - } - - return javas; -} diff --git a/launcher/java/JavaUtils.h b/launcher/java/JavaUtils.h index 66e439834..aa5315a19 100644 --- a/launcher/java/JavaUtils.h +++ b/launcher/java/JavaUtils.h @@ -27,7 +27,6 @@ QString stripVariableEntries(QString name, QString target, QString remove); QProcessEnvironment CleanEnviroment(); QStringList getMinecraftJavaBundle(); QStringList getPrismJavaBundle(); -QStringList getPrismExtraJavaPaths(); class JavaUtils : public QObject { Q_OBJECT diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index deb085f93..cb2a8b90b 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -110,7 +110,6 @@ void JavaPage::applySettings() s->set("IgnoreJavaWizard", ui->skipJavaWizardCheckbox->isChecked()); s->set("AutomaticJavaSwitch", ui->autodetectJavaCheckBox->isChecked()); s->set("AutomaticJavaDownload", ui->autodownloadCheckBox->isChecked()); - s->set("JavaExtraSearchPaths", m_extra_paths->stringList()); JavaCommon::checkJVMArgs(s->get("JvmArgs").toString(), this->parentWidget()); } void JavaPage::loadSettings() @@ -135,8 +134,6 @@ void JavaPage::loadSettings() ui->skipJavaWizardCheckbox->setChecked(s->get("IgnoreJavaWizard").toBool()); ui->autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); ui->autodownloadCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool() && s->get("AutomaticJavaDownload").toBool()); - m_extra_paths = new QStringListModel(s->get("JavaExtraSearchPaths").toStringList(), this); - ui->extraJavaPathsList->setModel(m_extra_paths); } void JavaPage::on_javaDetectBtn_clicked() @@ -247,30 +244,6 @@ void JavaPage::updateThresholds() } } -void JavaPage::on_addExtraPathButton_clicked() -{ - QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Add Extra Java Folder")); - - if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) { - QString cooked_dir = FS::NormalizePath(raw_dir); - auto currentList = m_extra_paths->stringList(); - if (!currentList.contains(cooked_dir)) { - currentList << cooked_dir; - m_extra_paths->setStringList(currentList); - } - } - APPLICATION->settings()->set("JavaExtraSearchPaths", m_extra_paths->stringList()); -} - -void JavaPage::on_removeExtraPathButton_clicked() -{ - auto indexes = ui->extraJavaPathsList->selectionModel()->selectedIndexes(); - if (indexes.size()) { - m_extra_paths->removeRow(indexes.first().row()); - } - APPLICATION->settings()->set("JavaExtraSearchPaths", m_extra_paths->stringList()); -} - void JavaPage::on_downloadJavaButton_clicked() { on_javaDownloadBtn_clicked(); diff --git a/launcher/ui/pages/global/JavaPage.h b/launcher/ui/pages/global/JavaPage.h index 1a521e2db..48e557740 100644 --- a/launcher/ui/pages/global/JavaPage.h +++ b/launcher/ui/pages/global/JavaPage.h @@ -73,8 +73,6 @@ class JavaPage : public QWidget, public BasePage { void on_javaTestBtn_clicked(); void on_javaBrowseBtn_clicked(); void on_javaDownloadBtn_clicked(); - void on_addExtraPathButton_clicked(); - void on_removeExtraPathButton_clicked(); void on_downloadJavaButton_clicked(); void on_removeJavaButton_clicked(); void on_refreshJavaButton_clicked(); @@ -84,5 +82,4 @@ class JavaPage : public QWidget, public BasePage { private: Ui::JavaPage* ui; unique_qobject_ptr checker; - QStringListModel* m_extra_paths; }; diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index 3f763f8d2..dc1668ee3 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -391,49 +391,6 @@ - - - - Java extra paths - - - - - - - - - - - Add - - - - - - - Remove - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 91fd6ff03..4b5819288 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -44,7 +44,6 @@ JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited); connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaSettingsWidget::on_javaStatusBtn_clicked); connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaDownloadBtn_clicked); - connect(m_addJavaPathBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_addJavaPathBtn_clicked); } void JavaSettingsWidget::setupUi() @@ -133,9 +132,6 @@ void JavaSettingsWidget::setupUi() m_javaDownloadBtn = new QPushButton(tr("Download Java"), this); m_horizontalBtnLayout->addWidget(m_javaDownloadBtn); - m_addJavaPathBtn = new QPushButton(tr("Add extra Java path"), this); - m_horizontalBtnLayout->addWidget(m_addJavaPathBtn); - m_verticalLayout->addLayout(m_horizontalBtnLayout); m_autoJavaGroupBox = new QGroupBox(this); @@ -523,21 +519,6 @@ void JavaSettingsWidget::updateThresholds() } } -void JavaSettingsWidget::on_addJavaPathBtn_clicked() -{ - QString raw_dir = QFileDialog::getExistingDirectory(this, tr("Add Extra Java Folder")); - - auto currentList = APPLICATION->settings()->get("JavaExtraSearchPaths").toStringList(); - if (!raw_dir.isEmpty() && QDir(raw_dir).exists()) { - QString cooked_dir = FS::NormalizePath(raw_dir); - if (!currentList.contains(cooked_dir)) { - currentList << cooked_dir; - } - } - APPLICATION->settings()->set("JavaExtraSearchPaths", currentList); - refresh(); -} - bool JavaSettingsWidget::autodownloadJava() const { return m_autodetectJavaCheckBox->isChecked(); diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index 205b83d8c..c8b6953df 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -54,7 +54,6 @@ class JavaSettingsWidget : public QWidget { void on_javaBrowseBtn_clicked(); void on_javaStatusBtn_clicked(); void on_javaDownloadBtn_clicked(); - void on_addJavaPathBtn_clicked(); void checkFinished(const JavaChecker::Result& result); protected: /* methods */ @@ -84,7 +83,6 @@ class JavaSettingsWidget : public QWidget { QHBoxLayout* m_horizontalBtnLayout = nullptr; QPushButton* m_javaDownloadBtn = nullptr; - QPushButton* m_addJavaPathBtn = nullptr; QIcon goodIcon; QIcon yellowIcon; QIcon badIcon; From 1c96ae58077cae7a8d5b8f851d5ede385811f6ea Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 18 Feb 2024 22:32:54 +0200 Subject: [PATCH 061/616] Fixed java refresh button Signed-off-by: Trial97 --- launcher/ui/java/JavaDownloader.cpp | 3 ++- launcher/ui/java/JavaDownloader.ui | 10 +++++----- launcher/ui/java/VersionList.cpp | 4 +++- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/launcher/ui/java/JavaDownloader.cpp b/launcher/ui/java/JavaDownloader.cpp index 7417a4ea8..24918dd76 100644 --- a/launcher/ui/java/JavaDownloader.cpp +++ b/launcher/ui/java/JavaDownloader.cpp @@ -55,7 +55,7 @@ Downloader::Downloader(QWidget* parent) : QDialog(parent), ui(new Ui::JavaDownlo ui->javaVersionSelect->setEmptyString(tr("No java versions are currently available for your OS.")); ui->javaVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); - ui->buttonBox->button(QDialogButtonBox::Retry)->setText(tr("Refresh")); + ui->buttonBox->button(QDialogButtonBox::Reset)->setText(tr("Refresh")); ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Download")); connect(ui->majorVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &Downloader::setSelectedVersion); @@ -98,6 +98,7 @@ void Downloader::accept() connect(task.get(), &Task::failed, this, deletePath); connect(task.get(), &Task::aborted, this, deletePath); ProgressDialog pg(this); + pg.setSkipButton(true, tr("Abort")); pg.execWithTask(task.get()); QDialog::accept(); } diff --git a/launcher/ui/java/JavaDownloader.ui b/launcher/ui/java/JavaDownloader.ui index 0eeabb26d..3f6a8adc6 100644 --- a/launcher/ui/java/JavaDownloader.ui +++ b/launcher/ui/java/JavaDownloader.ui @@ -48,7 +48,7 @@ Qt::Horizontal - QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Retry + QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset @@ -71,8 +71,8 @@ accept() - 248 - 254 + 257 + 583 157 @@ -87,8 +87,8 @@ reject() - 316 - 260 + 325 + 583 286 diff --git a/launcher/ui/java/VersionList.cpp b/launcher/ui/java/VersionList.cpp index 7c5668d20..4bf04224a 100644 --- a/launcher/ui/java/VersionList.cpp +++ b/launcher/ui/java/VersionList.cpp @@ -104,10 +104,12 @@ bool sortJavas(BaseVersion::Ptr left, BaseVersion::Ptr right) void VersionList::sortVersions() { + if (!m_version || !m_version->data()) + return; QString versionStr = SysInfo::getSupportedJavaArchitecture(); beginResetModel(); auto runtimes = m_version->data()->runtimes; - if (!versionStr.isEmpty() && runtimes.contains(versionStr)) { + if (!versionStr.isEmpty() && !runtimes.isEmpty() && runtimes.contains(versionStr)) { m_vlist = runtimes.value(versionStr); std::sort(m_vlist.begin(), m_vlist.end(), sortJavas); } else { From da96172b0b8835df8591368e96d20464a3a4eb41 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Mon, 26 Feb 2024 22:00:40 +0200 Subject: [PATCH 062/616] Apply suggestions from code review Co-authored-by: DioEgizio <83089242+DioEgizio@users.noreply.github.com> Signed-off-by: Alexandru Ionut Tripon --- launcher/ui/java/VersionList.cpp | 2 +- launcher/ui/pages/global/JavaPage.cpp | 2 +- launcher/ui/pages/instance/InstanceSettingsPage.cpp | 2 +- launcher/ui/widgets/JavaSettingsWidget.cpp | 6 +++--- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/launcher/ui/java/VersionList.cpp b/launcher/ui/java/VersionList.cpp index 4bf04224a..dc454f264 100644 --- a/launcher/ui/java/VersionList.cpp +++ b/launcher/ui/java/VersionList.cpp @@ -114,7 +114,7 @@ void VersionList::sortVersions() std::sort(m_vlist.begin(), m_vlist.end(), sortJavas); } else { m_vlist = {}; - qWarning() << "Your operating system is not yet supported: " << SysInfo::currentSystem() << " " << SysInfo::useQTForArch(); + qWarning() << "No Java versions found for your operating system." << SysInfo::currentSystem() << " " << SysInfo::useQTForArch(); } endResetModel(); } diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index cb2a8b90b..95d5f581e 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -154,7 +154,7 @@ void JavaPage::on_javaDetectBtn_clicked() ui->javaPathTextBox->setText(java->path); if (!java->is_64bit && APPLICATION->settings()->get("MaxMemAlloc").toInt() > 2048) { CustomMessageBox::selectable(this, tr("Confirm Selection"), - tr("You selected an x86 java version.\n" + tr("You selected a 32 bit java version.\n" "This means that will not support more than 2048MiB of RAM.\n" "Please make sure that the maximum memory value is lower."), QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 8a63aab22..50cffc9a7 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -416,7 +416,7 @@ void InstanceSettingsPage::on_javaDetectBtn_clicked() if (!java->is_64bit && m_settings->get("MaxMemAlloc").toInt() > 2048) { CustomMessageBox::selectable(this, tr("Confirm Selection"), - tr("You selected an x86 java version.\n" + tr("You selected a 32 bit java version.\n" "This means that will not support more than 2048MiB of RAM.\n" "Please make sure that the maximum memory value is lower."), QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 4b5819288..f8031687b 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -173,8 +173,8 @@ void JavaSettingsWidget::initialize() updateThresholds(); auto button = CustomMessageBox::selectable(this, tr("Auto Java Download"), - tr("%1 has now the ability to auto downloand the correct java for each minecraft version.\n" - "Do you want to enable java auto-download?\n") + tr("%1 can automatically download the correct Java version for each version of Minecraft..\n" + "Do you want to enable Java auto-download?\n") .arg(BuildConfig.LAUNCHER_DISPLAYNAME), QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) ->exec(); @@ -505,7 +505,7 @@ void JavaSettingsWidget::updateThresholds() } else if (observedMaxMemory > 2048 && m_result.is_64bit) { iconName = "status-bad"; m_labelMaxMemIcon->setToolTip( - tr("Your maximum memory allocation exceeds selected java possible memory(due to x86 application limitations).")); + tr("Because you're using 32 bit Java, you're exceeding the maximum possible allocation.")); } else { iconName = "status-good"; m_labelMaxMemIcon->setToolTip(""); From 24fd07861b797fb845217c04b9ad5267edcc4470 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 26 Feb 2024 22:25:14 +0200 Subject: [PATCH 063/616] format code Signed-off-by: Trial97 --- launcher/ui/widgets/JavaSettingsWidget.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index f8031687b..29357bdab 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -504,8 +504,7 @@ void JavaSettingsWidget::updateThresholds() m_labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation is smaller than the minimum value")); } else if (observedMaxMemory > 2048 && m_result.is_64bit) { iconName = "status-bad"; - m_labelMaxMemIcon->setToolTip( - tr("Because you're using 32 bit Java, you're exceeding the maximum possible allocation.")); + m_labelMaxMemIcon->setToolTip(tr("Because you're using 32 bit Java, you're exceeding the maximum possible allocation.")); } else { iconName = "status-good"; m_labelMaxMemIcon->setToolTip(""); From 27780cc7aeee5fd1a5bd535d721c642491cca192 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 6 Mar 2024 14:56:04 +0000 Subject: [PATCH 064/616] Add update UI for all resource types Signed-off-by: TheKodeToad --- launcher/LaunchController.cpp | 2 +- launcher/minecraft/mod/ResourceFolderModel.h | 2 +- .../minecraft/mod/ResourcePackFolderModel.cpp | 5 +- .../minecraft/mod/ShaderPackFolderModel.h | 2 + launcher/modplatform/ResourceAPI.h | 2 +- launcher/modplatform/packwiz/Packwiz.cpp | 28 ++-- launcher/modplatform/packwiz/Packwiz.h | 2 +- launcher/ui/dialogs/ResourceUpdateDialog.cpp | 16 +- launcher/ui/dialogs/ResourceUpdateDialog.h | 4 +- .../pages/instance/ExternalResourcesPage.ui | 50 +++--- launcher/ui/pages/instance/ModFolderPage.cpp | 153 ++++++------------ launcher/ui/pages/instance/ModFolderPage.h | 7 +- .../ui/pages/instance/ResourcePackPage.cpp | 128 ++++++++++++++- launcher/ui/pages/instance/ResourcePackPage.h | 9 +- launcher/ui/pages/instance/ShaderPackPage.cpp | 130 ++++++++++++++- launcher/ui/pages/instance/ShaderPackPage.h | 7 +- .../ui/pages/instance/TexturePackPage.cpp | 128 ++++++++++++++- launcher/ui/pages/instance/TexturePackPage.h | 7 +- 18 files changed, 498 insertions(+), 184 deletions(-) diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index a30f99439..ff8558ce7 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -316,7 +316,7 @@ void LaunchController::launchInstance() online_mode = "online"; // Prepend Server Status - QStringList servers = { "authserver.mojang.com", "session.minecraft.net", "textures.minecraft.net", "api.mojang.com" }; + QStringList servers = { "session.minecraft.net", "textures.minecraft.net", "api.mojang.com" }; QString resolved_servers = ""; QHostInfo host_info; diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index 3de3c5476..e65c69b25 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -255,7 +255,7 @@ class ResourceFolderModel : public QAbstractListModel { protected: // Represents the relationship between a column's index (represented by the list index), and it's sorting key. // As such, the order in with they appear is very important! - QList m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::DATE }; + QList m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::DATE, SortType::PROVIDER }; QStringList m_column_names = { "Enable", "Name", "Last Modified", "Provider" }; QStringList m_column_names_translated = { tr("Enable"), tr("Name"), tr("Last Modified"), tr("Provider") }; QList m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive }; diff --git a/launcher/minecraft/mod/ResourcePackFolderModel.cpp b/launcher/minecraft/mod/ResourcePackFolderModel.cpp index b777dbafd..ccbf80367 100644 --- a/launcher/minecraft/mod/ResourcePackFolderModel.cpp +++ b/launcher/minecraft/mod/ResourcePackFolderModel.cpp @@ -51,8 +51,9 @@ ResourcePackFolderModel::ResourcePackFolderModel(const QDir& dir, BaseInstance* : ResourceFolderModel(dir, instance, is_indexed, create_dir, parent) { m_column_names = QStringList({ "Enable", "Image", "Name", "Pack Format", "Last Modified", "Provider" }); - m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified"), tr("Provider") }); - m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::PACK_FORMAT, SortType::DATE }; + m_column_names_translated = + QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified"), tr("Provider") }); + m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::PACK_FORMAT, SortType::DATE, SortType::PROVIDER }; m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, QHeaderView::Interactive }; m_columnsHideable = { false, true, false, true, true, true }; diff --git a/launcher/minecraft/mod/ShaderPackFolderModel.h b/launcher/minecraft/mod/ShaderPackFolderModel.h index c63def238..cd01f6226 100644 --- a/launcher/minecraft/mod/ShaderPackFolderModel.h +++ b/launcher/minecraft/mod/ShaderPackFolderModel.h @@ -20,4 +20,6 @@ class ShaderPackFolderModel : public ResourceFolderModel { { return new LocalShaderPackParseTask(m_next_resolution_ticket, static_cast(resource)); } + + RESOURCE_HELPERS(ShaderPack); }; diff --git a/launcher/modplatform/ResourceAPI.h b/launcher/modplatform/ResourceAPI.h index 2c7bec5d4..7b787c6a0 100644 --- a/launcher/modplatform/ResourceAPI.h +++ b/launcher/modplatform/ResourceAPI.h @@ -83,7 +83,7 @@ class ResourceAPI { struct VersionSearchArgs { ModPlatform::IndexedPack pack; - std::optional > mcVersions; + std::optional> mcVersions; std::optional loaders; VersionSearchArgs(VersionSearchArgs const&) = default; diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index c609e78fc..6e1f507fd 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -110,11 +110,14 @@ auto V1::createModFormat([[maybe_unused]] const QDir& index_dir, mod.hash = mod_version.hash; mod.provider = mod_pack.provider; - mod.version_number = mod_version.version_number; mod.file_id = mod_version.fileId; mod.project_id = mod_pack.addonId; mod.side = stringToSide(mod_pack.side); + mod.version_number = mod_version.version_number; + if (mod.version_number.isNull()) // on CurseForge, there is only a version name - not a versio + mod.version_number = mod_version.version; + return mod; } @@ -164,10 +167,9 @@ void V1::updateModIndex(const QDir& index_dir, Mod& mod) qCritical() << QString("Did not write file %1 because missing information!").arg(normalized_fname); return; } - update = toml::table{ - { "file-id", mod.file_id.toInt() }, - { "project-id", mod.project_id.toInt() }, - }; + update = toml::table{ { "file-id", mod.file_id.toInt() }, + { "project-id", mod.project_id.toInt() }, + { "x-prismlauncher-version-number", mod.version_number.toStdString() } }; break; case (ModPlatform::ResourceProvider::MODRINTH): if (mod.mod_id().toString().isEmpty() || mod.version().toString().isEmpty()) { @@ -177,6 +179,7 @@ void V1::updateModIndex(const QDir& index_dir, Mod& mod) update = toml::table{ { "mod-id", mod.mod_id().toString().toStdString() }, { "version", mod.version().toString().toStdString() }, + { "x-prismlauncher-version-number", mod.version_number.toStdString() }, }; break; } @@ -199,8 +202,7 @@ void V1::updateModIndex(const QDir& index_dir, Mod& mod) { "hash-format", mod.hash_format.toStdString() }, { "hash", mod.hash.toStdString() }, } }, - { "update", toml::table{ { ModPlatform::ProviderCapabilities::name(mod.provider), update }, - { "x-prismlauncher-version-number", mod.version_number.toStdString() } } } }; + { "update", toml::table{ { ModPlatform::ProviderCapabilities::name(mod.provider), update } } } }; std::stringstream ss; ss << tbl; in_stream << QString::fromStdString(ss.str()); @@ -295,23 +297,23 @@ auto V1::getIndexForMod(const QDir& index_dir, QString slug) -> Mod { // [update] info using Provider = ModPlatform::ResourceProvider; - auto update_table = table["update"].as_table(); - if (!update_table) { + auto update_table = table["update"]; + if (!update_table || !update_table.is_table()) { qCritical() << QString("No [update] section found on mod metadata!"); return {}; } - mod.version_number = stringEntry(*update_table, "x-prismlauncher-version-number"); - toml::table* mod_provider_table = nullptr; - if ((mod_provider_table = (*update_table)[ModPlatform::ProviderCapabilities::name(Provider::FLAME)].as_table())) { + if ((mod_provider_table = update_table[ModPlatform::ProviderCapabilities::name(Provider::FLAME)].as_table())) { mod.provider = Provider::FLAME; mod.file_id = intEntry(*mod_provider_table, "file-id"); mod.project_id = intEntry(*mod_provider_table, "project-id"); - } else if ((mod_provider_table = (*update_table)[ModPlatform::ProviderCapabilities::name(Provider::MODRINTH)].as_table())) { + mod.version_number = stringEntry(*mod_provider_table, "x-prismlauncher-version-number"); + } else if ((mod_provider_table = update_table[ModPlatform::ProviderCapabilities::name(Provider::MODRINTH)].as_table())) { mod.provider = Provider::MODRINTH; mod.mod_id() = stringEntry(*mod_provider_table, "mod-id"); mod.version() = stringEntry(*mod_provider_table, "version"); + mod.version_number = stringEntry(*mod_provider_table, "x-prismlauncher-version-number"); } else { qCritical() << QString("No mod provider on mod metadata!"); return {}; diff --git a/launcher/modplatform/packwiz/Packwiz.h b/launcher/modplatform/packwiz/Packwiz.h index 07bb4248d..19ef22dd8 100644 --- a/launcher/modplatform/packwiz/Packwiz.h +++ b/launcher/modplatform/packwiz/Packwiz.h @@ -52,9 +52,9 @@ class V1 { // [update] ModPlatform::ResourceProvider provider{}; - QString version_number{}; QVariant file_id{}; QVariant project_id{}; + QString version_number{}; public: // This is a totally heuristic, but should work for now. diff --git a/launcher/ui/dialogs/ResourceUpdateDialog.cpp b/launcher/ui/dialogs/ResourceUpdateDialog.cpp index 459ba7f23..6426c2bfd 100644 --- a/launcher/ui/dialogs/ResourceUpdateDialog.cpp +++ b/launcher/ui/dialogs/ResourceUpdateDialog.cpp @@ -38,7 +38,8 @@ ResourceUpdateDialog::ResourceUpdateDialog(QWidget* parent, BaseInstance* instance, const std::shared_ptr resource_model, QList& search_for, - bool includeDeps) + bool include_deps, + bool filter_loaders) : ReviewMessageBox(parent, tr("Confirm mods to update"), "") , m_parent(parent) , m_resource_model(resource_model) @@ -46,7 +47,8 @@ ResourceUpdateDialog::ResourceUpdateDialog(QWidget* parent, , m_second_try_metadata( new ConcurrentTask(nullptr, "Second Metadata Search", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())) , m_instance(instance) - , m_include_deps(includeDeps) + , m_include_deps(include_deps) + , m_filter_loaders(filter_loaders) { ReviewMessageBox::setGeometry(0, 0, 800, 600); @@ -85,7 +87,7 @@ void ResourceUpdateDialog::checkCandidates() } auto versions = mcVersions(m_instance); - auto loaders = mcLoaders(m_instance); + auto loaders = m_filter_loaders ? mcLoaders(m_instance) : std::optional(); SequentialTask check_task(m_parent, tr("Checking for updates")); @@ -224,10 +226,10 @@ void ResourceUpdateDialog::checkCandidates() if (dep->pack->provider == ModPlatform::ResourceProvider::FLAME) changelog = api.getModFileChangelog(dep->version.addonId.toInt(), dep->version.fileId.toInt()); auto download_task = makeShared(dep->pack, dep->version, m_resource_model); - CheckUpdateTask::Update updatable = { - dep->pack->name, dep->version.hash, tr("Not installed"), dep->version.version, dep->version.version_type, - changelog, dep->pack->provider, download_task - }; + CheckUpdateTask::Update updatable = { dep->pack->name, dep->version.hash, + tr("Not installed"), dep->version.version, + dep->version.version_type, changelog, + dep->pack->provider, download_task }; appendResource(updatable, getRequiredBy.value(dep->version.addonId.toString())); m_tasks.insert(updatable.name, updatable.download); diff --git a/launcher/ui/dialogs/ResourceUpdateDialog.h b/launcher/ui/dialogs/ResourceUpdateDialog.h index 31aab8f5d..de1d845d2 100644 --- a/launcher/ui/dialogs/ResourceUpdateDialog.h +++ b/launcher/ui/dialogs/ResourceUpdateDialog.h @@ -20,7 +20,8 @@ class ResourceUpdateDialog final : public ReviewMessageBox { BaseInstance* instance, std::shared_ptr resource_model, QList& search_for, - bool includeDeps); + bool include_deps, + bool filter_loaders); void checkCandidates(); @@ -63,4 +64,5 @@ class ResourceUpdateDialog final : public ReviewMessageBox { bool m_no_updates = false; bool m_aborted = false; bool m_include_deps = false; + bool m_filter_loaders = false; }; diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.ui b/launcher/ui/pages/instance/ExternalResourcesPage.ui index ff08e12d2..2b4a47b9d 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.ui +++ b/launcher/ui/pages/instance/ExternalResourcesPage.ui @@ -70,15 +70,15 @@ - - true - Actions Qt::ToolButtonTextOnly + + true + RightToolBarArea @@ -95,10 +95,10 @@ - &Add + &Add File - Add + Add a locally downloaded file. @@ -106,7 +106,7 @@ &Remove - Remove selected item + Remove all selected items. @@ -114,7 +114,7 @@ &Enable - Enable selected item + Enable all selected items. @@ -122,7 +122,7 @@ &Disable - Disable selected item + Disable all selected items. @@ -137,6 +137,9 @@ View &Folder + + Open the folder in the system file manager. + @@ -146,18 +149,7 @@ &Download - Download a new resource - - - - - false - - - Visit mod's page - - - Go to mods home page + Download resources from online mod platforms. @@ -168,7 +160,23 @@ Check for &Updates - Try to check or update all selected resources (all resources if none are selected) + Try to check or update all selected resources (all resources if none are selected). + + + + + Reset Update Metadata + + + QAction::NoRole + + + + + Verify Dependencies + + + QAction::NoRole diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index e513cb1fa..5b10a38df 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -68,88 +68,37 @@ #include "tasks/ConcurrentTask.h" #include "ui/dialogs/ProgressDialog.h" -ModFolderPage::ModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent) - : ExternalResourcesPage(inst, mods, parent), m_model(mods) +ModFolderPage::ModFolderPage(BaseInstance* inst, std::shared_ptr model, QWidget* parent) + : ExternalResourcesPage(inst, model, parent), m_model(model) { - // This is structured like that so that these changes - // do not affect the Resource pack and Shader pack tabs - { - ui->actionDownloadItem->setText(tr("Download mods")); - ui->actionDownloadItem->setToolTip(tr("Download mods from online mod platforms")); - ui->actionDownloadItem->setEnabled(true); - ui->actionAddItem->setText(tr("Add file")); - ui->actionAddItem->setToolTip(tr("Add a locally downloaded file")); + ui->actionDownloadItem->setText(tr("Download Mods")); + ui->actionDownloadItem->setToolTip(tr("Download mods from online mod platforms")); + ui->actionDownloadItem->setEnabled(true); + ui->actionsToolbar->insertActionBefore(ui->actionAddItem, ui->actionDownloadItem); - ui->actionsToolbar->insertActionBefore(ui->actionAddItem, ui->actionDownloadItem); + connect(ui->actionDownloadItem, &QAction::triggered, this, &ModFolderPage::downloadMods); - connect(ui->actionDownloadItem, &QAction::triggered, this, &ModFolderPage::installMods); + ui->actionUpdateItem->setToolTip(tr("Try to check or update all selected mods (all mods if none are selected)")); + connect(ui->actionUpdateItem, &QAction::triggered, this, &ModFolderPage::updateMods); + ui->actionsToolbar->insertActionBefore(ui->actionAddItem, ui->actionUpdateItem); - // update menu - auto updateMenu = ui->actionUpdateItem->menu(); - if (updateMenu) { - updateMenu->clear(); - } else { - updateMenu = new QMenu(this); - } + auto updateMenu = new QMenu(this); - auto update = updateMenu->addAction(tr("Check for Updates")); - update->setToolTip(tr("Try to check or update all selected mods (all mods if none are selected)")); - connect(update, &QAction::triggered, this, &ModFolderPage::updateMods); + auto update = updateMenu->addAction(tr("Check for Updates")); + connect(update, &QAction::triggered, this, &ModFolderPage::updateMods); - auto updateWithDeps = updateMenu->addAction(tr("Verify Dependencies")); - updateWithDeps->setToolTip( - tr("Try to update and check for missing dependencies all selected mods (all mods if none are selected)")); - connect(updateWithDeps, &QAction::triggered, this, [this] { updateMods(true); }); + updateMenu->addAction(ui->actionVerifyItemDependencies); + connect(ui->actionVerifyItemDependencies, &QAction::triggered, this, [this] { updateMods(true); }); - auto depsDisabled = APPLICATION->settings()->getSetting("ModDependenciesDisabled"); - updateWithDeps->setVisible(!depsDisabled->get().toBool()); - connect(depsDisabled.get(), &Setting::SettingChanged, this, - [updateWithDeps](const Setting& setting, QVariant value) { updateWithDeps->setVisible(!value.toBool()); }); + auto depsDisabled = APPLICATION->settings()->getSetting("ModDependenciesDisabled"); + ui->actionVerifyItemDependencies->setVisible(!depsDisabled->get().toBool()); + connect(depsDisabled.get(), &Setting::SettingChanged, this, + [this](const Setting& setting, const QVariant& value) { ui->actionVerifyItemDependencies->setVisible(!value.toBool()); }); - auto actionRemoveItemMetadata = updateMenu->addAction(tr("Reset update metadata")); - actionRemoveItemMetadata->setToolTip(tr("Remove mod's metadata")); - connect(actionRemoveItemMetadata, &QAction::triggered, this, &ModFolderPage::deleteModMetadata); - actionRemoveItemMetadata->setEnabled(false); + updateMenu->addAction(ui->actionResetItemMetadata); + connect(ui->actionResetItemMetadata, &QAction::triggered, this, &ModFolderPage::deleteModMetadata); - ui->actionUpdateItem->setMenu(updateMenu); - - ui->actionUpdateItem->setToolTip(tr("Try to check or update all selected mods (all mods if none are selected)")); - connect(ui->actionUpdateItem, &QAction::triggered, this, &ModFolderPage::updateMods); - ui->actionsToolbar->insertActionBefore(ui->actionAddItem, ui->actionUpdateItem); - - ui->actionVisitItemPage->setToolTip(tr("Go to mod's home page")); - ui->actionsToolbar->addAction(ui->actionVisitItemPage); - connect(ui->actionVisitItemPage, &QAction::triggered, this, &ModFolderPage::visitModPages); - - auto check_allow_update = [this] { return ui->treeView->selectionModel()->hasSelection() || !m_model->empty(); }; - - connect(ui->treeView->selectionModel(), &QItemSelectionModel::selectionChanged, this, - [this, check_allow_update, actionRemoveItemMetadata] { - ui->actionUpdateItem->setEnabled(check_allow_update()); - - auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); - auto mods_list = m_model->selectedMods(selection); - auto selected = std::count_if(mods_list.cbegin(), mods_list.cend(), - [](Mod* v) { return v->metadata() != nullptr || v->homeurl().size() != 0; }); - if (selected <= 1) { - ui->actionVisitItemPage->setText(tr("Visit mod's page")); - ui->actionVisitItemPage->setToolTip(tr("Go to mod's home page")); - - } else { - ui->actionVisitItemPage->setText(tr("Visit mods' pages")); - ui->actionVisitItemPage->setToolTip(tr("Go to the pages of the selected mods")); - } - ui->actionVisitItemPage->setEnabled(selected != 0); - actionRemoveItemMetadata->setEnabled(selected != 0); - }); - - auto updateButtons = [this, check_allow_update] { ui->actionUpdateItem->setEnabled(check_allow_update()); }; - connect(mods.get(), &ModFolderModel::rowsInserted, this, updateButtons); - - connect(mods.get(), &ModFolderModel::rowsRemoved, this, updateButtons); - - connect(mods.get(), &ModFolderModel::updateFinished, this, updateButtons); - } + ui->actionUpdateItem->setMenu(updateMenu); } bool ModFolderPage::shouldDisplay() const @@ -182,7 +131,7 @@ void ModFolderPage::removeItems(const QItemSelection& selection) m_model->deleteResources(selection.indexes()); } -void ModFolderPage::installMods() +void ModFolderPage::downloadMods() { if (m_instance->typeName() != "Minecraft") return; // this is a null instance or a legacy instance @@ -195,7 +144,7 @@ void ModFolderPage::installMods() ResourceDownload::ModDownloadDialog mdownload(this, m_model, m_instance); if (mdownload.exec()) { - auto tasks = new ConcurrentTask(this, "Download Mods", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask(this, tr("Download Mods"), APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); @@ -257,7 +206,7 @@ void ModFolderPage::updateMods(bool includeDeps) if (use_all) mods_list = m_model->allResources(); - ResourceUpdateDialog update_dialog(this, m_instance, m_model, mods_list, includeDeps); + ResourceUpdateDialog update_dialog(this, m_instance, m_model, mods_list, includeDeps, true); update_dialog.checkCandidates(); if (update_dialog.aborted()) { @@ -307,6 +256,27 @@ void ModFolderPage::updateMods(bool includeDeps) } } +void ModFolderPage::deleteModMetadata() +{ + auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); + auto selectionCount = m_model->selectedMods(selection).length(); + if (selectionCount == 0) + return; + if (selectionCount > 1) { + auto response = CustomMessageBox::selectable(this, tr("Confirm Removal"), + tr("You are about to remove the metadata for %1 mods.\n" + "Are you sure?") + .arg(selectionCount), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); + + if (response != QMessageBox::Yes) + return; + } + + m_model->deleteMetadata(selection); +} + CoreModFolderPage::CoreModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent) : ModFolderPage(inst, mods, parent) {} @@ -340,34 +310,3 @@ bool NilModFolderPage::shouldDisplay() const { return m_model->dir().exists(); } - -void ModFolderPage::visitModPages() -{ - auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); - for (auto mod : m_model->selectedMods(selection)) { - auto url = mod->metaurl(); - if (!url.isEmpty()) - DesktopServices::openUrl(url); - } -} - -void ModFolderPage::deleteModMetadata() -{ - auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); - auto selectionCount = m_model->selectedMods(selection).length(); - if (selectionCount == 0) - return; - if (selectionCount > 1) { - auto response = CustomMessageBox::selectable(this, tr("Confirm Removal"), - tr("You are about to remove the metadata for %1 mods.\n" - "Are you sure?") - .arg(selectionCount), - QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) - ->exec(); - - if (response != QMessageBox::Yes) - return; - } - - m_model->deleteMetadata(selection); -} diff --git a/launcher/ui/pages/instance/ModFolderPage.h b/launcher/ui/pages/instance/ModFolderPage.h index 4672350c6..455db33cb 100644 --- a/launcher/ui/pages/instance/ModFolderPage.h +++ b/launcher/ui/pages/instance/ModFolderPage.h @@ -44,7 +44,7 @@ class ModFolderPage : public ExternalResourcesPage { Q_OBJECT public: - explicit ModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent = nullptr); + explicit ModFolderPage(BaseInstance* inst, std::shared_ptr model, QWidget* parent = nullptr); virtual ~ModFolderPage() = default; void setFilter(const QString& filter) { m_fileSelectionFilter = filter; } @@ -61,11 +61,10 @@ class ModFolderPage : public ExternalResourcesPage { private slots: void removeItems(const QItemSelection& selection) override; - void deleteModMetadata(); - void installMods(); + void downloadMods(); void updateMods(bool includeDeps = false); - void visitModPages(); + void deleteModMetadata(); protected: std::shared_ptr m_model; diff --git a/launcher/ui/pages/instance/ResourcePackPage.cpp b/launcher/ui/pages/instance/ResourcePackPage.cpp index 85be64256..e51ebafac 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.cpp +++ b/launcher/ui/pages/instance/ResourcePackPage.cpp @@ -42,17 +42,31 @@ #include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/ProgressDialog.h" #include "ui/dialogs/ResourceDownloadDialog.h" +#include "ui/dialogs/ResourceUpdateDialog.h" ResourcePackPage::ResourcePackPage(MinecraftInstance* instance, std::shared_ptr model, QWidget* parent) - : ExternalResourcesPage(instance, model, parent) + : ExternalResourcesPage(instance, model, parent), m_model(model) { - ui->actionDownloadItem->setText(tr("Download packs")); - ui->actionDownloadItem->setToolTip(tr("Download resource packs from online platforms")); + ui->actionDownloadItem->setText(tr("Download Packs")); + ui->actionDownloadItem->setToolTip(tr("Download resource packs from online mod platforms")); ui->actionDownloadItem->setEnabled(true); - connect(ui->actionDownloadItem, &QAction::triggered, this, &ResourcePackPage::downloadRPs); ui->actionsToolbar->insertActionBefore(ui->actionAddItem, ui->actionDownloadItem); - ui->actionViewConfigs->setVisible(false); + connect(ui->actionDownloadItem, &QAction::triggered, this, &ResourcePackPage::downloadResourcePacks); + + ui->actionUpdateItem->setToolTip(tr("Try to check or update all selected resource packs (all resource packs if none are selected)")); + connect(ui->actionUpdateItem, &QAction::triggered, this, &ResourcePackPage::updateResourcePacks); + ui->actionsToolbar->insertActionBefore(ui->actionAddItem, ui->actionUpdateItem); + + auto updateMenu = new QMenu(this); + + auto update = updateMenu->addAction(ui->actionUpdateItem->text()); + connect(update, &QAction::triggered, this, &ResourcePackPage::updateResourcePacks); + + updateMenu->addAction(ui->actionResetItemMetadata); + connect(ui->actionResetItemMetadata, &QAction::triggered, this, &ResourcePackPage::deleteResourcePackMetadata); + + ui->actionUpdateItem->setMenu(updateMenu); } bool ResourcePackPage::onSelectionChanged(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) @@ -65,12 +79,12 @@ bool ResourcePackPage::onSelectionChanged(const QModelIndex& current, [[maybe_un return true; } -void ResourcePackPage::downloadRPs() +void ResourcePackPage::downloadResourcePacks() { if (m_instance->typeName() != "Minecraft") return; // this is a null instance or a legacy instance - ResourceDownload::ResourcePackDownloadDialog mdownload(this, std::static_pointer_cast(m_model), m_instance); + ResourceDownload::ResourcePackDownloadDialog mdownload(this, m_model, m_instance); if (mdownload.exec()) { auto tasks = new ConcurrentTask(this, "Download Resource Pack", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); @@ -101,3 +115,103 @@ void ResourcePackPage::downloadRPs() m_model->update(); } } + +void ResourcePackPage::updateResourcePacks() +{ + if (m_instance->typeName() != "Minecraft") + return; // this is a null instance or a legacy instance + + auto profile = static_cast(m_instance)->getPackProfile(); + if (APPLICATION->settings()->get("ModMetadataDisabled").toBool()) { + QMessageBox::critical(this, tr("Error"), tr("Resource pack updates are unavailable when metadata is disabled!")); + return; + } + if (m_instance != nullptr && m_instance->isRunning()) { + auto response = + CustomMessageBox::selectable(this, tr("Confirm Update"), + tr("Updating resource packs while the game is running may cause pack duplication and game crashes.\n" + "The old files may not be deleted as they are in use.\n" + "Are you sure you want to do this?"), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); + + if (response != QMessageBox::Yes) + return; + } + auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); + + auto mods_list = m_model->selectedResources(selection); + bool use_all = mods_list.empty(); + if (use_all) + mods_list = m_model->allResources(); + + ResourceUpdateDialog update_dialog(this, m_instance, m_model, mods_list, false, false); + update_dialog.checkCandidates(); + + if (update_dialog.aborted()) { + CustomMessageBox::selectable(this, tr("Aborted"), tr("The resource pack updater was aborted!"), QMessageBox::Warning)->show(); + return; + } + if (update_dialog.noUpdates()) { + QString message{ tr("'%1' is up-to-date! :)").arg(mods_list.front()->name()) }; + if (mods_list.size() > 1) { + if (use_all) { + message = tr("All resource packs are up-to-date! :)"); + } else { + message = tr("All selected resource packs are up-to-date! :)"); + } + } + CustomMessageBox::selectable(this, tr("Update checker"), message)->exec(); + return; + } + + if (update_dialog.exec()) { + auto tasks = new ConcurrentTask(this, "Download Resource Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + connect(tasks, &Task::failed, [this, tasks](QString reason) { + CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::aborted, [this, tasks]() { + CustomMessageBox::selectable(this, tr("Aborted"), tr("Download stopped by user."), QMessageBox::Information)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::succeeded, [this, tasks]() { + QStringList warnings = tasks->warnings(); + if (warnings.count()) { + CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->show(); + } + tasks->deleteLater(); + }); + + for (auto task : update_dialog.getTasks()) { + tasks->addTask(task); + } + + ProgressDialog loadDialog(this); + loadDialog.setSkipButton(true, tr("Abort")); + loadDialog.execWithTask(tasks); + + m_model->update(); + } +} + +void ResourcePackPage::deleteResourcePackMetadata() +{ + auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); + auto selectionCount = m_model->selectedResourcePacks(selection).length(); + if (selectionCount == 0) + return; + if (selectionCount > 1) { + auto response = CustomMessageBox::selectable(this, tr("Confirm Removal"), + tr("You are about to remove the metadata for %1 resource packs.\n" + "Are you sure?") + .arg(selectionCount), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); + + if (response != QMessageBox::Yes) + return; + } + + m_model->deleteMetadata(selection); +} diff --git a/launcher/ui/pages/instance/ResourcePackPage.h b/launcher/ui/pages/instance/ResourcePackPage.h index cb84ca96d..c2d36cea1 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.h +++ b/launcher/ui/pages/instance/ResourcePackPage.h @@ -59,5 +59,12 @@ class ResourcePackPage : public ExternalResourcesPage { public slots: bool onSelectionChanged(const QModelIndex& current, const QModelIndex& previous) override; - void downloadRPs(); + + private slots: + void downloadResourcePacks(); + void updateResourcePacks(); + void deleteResourcePackMetadata(); + + protected: + std::shared_ptr m_model; }; diff --git a/launcher/ui/pages/instance/ShaderPackPage.cpp b/launcher/ui/pages/instance/ShaderPackPage.cpp index 40366a1be..768d7c710 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.cpp +++ b/launcher/ui/pages/instance/ShaderPackPage.cpp @@ -45,27 +45,41 @@ #include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/ProgressDialog.h" #include "ui/dialogs/ResourceDownloadDialog.h" +#include "ui/dialogs/ResourceUpdateDialog.h" ShaderPackPage::ShaderPackPage(MinecraftInstance* instance, std::shared_ptr model, QWidget* parent) - : ExternalResourcesPage(instance, model, parent) + : ExternalResourcesPage(instance, model, parent), m_model(model) { - ui->actionDownloadItem->setText(tr("Download shaders")); - ui->actionDownloadItem->setToolTip(tr("Download shaders from online platforms")); + ui->actionDownloadItem->setText(tr("Download Packs")); + ui->actionDownloadItem->setToolTip(tr("Download shader packs from online mod platforms")); ui->actionDownloadItem->setEnabled(true); - connect(ui->actionDownloadItem, &QAction::triggered, this, &ShaderPackPage::downloadShaders); ui->actionsToolbar->insertActionBefore(ui->actionAddItem, ui->actionDownloadItem); - ui->actionViewConfigs->setVisible(false); + connect(ui->actionDownloadItem, &QAction::triggered, this, &ShaderPackPage::downloadShaderPack); + + ui->actionUpdateItem->setToolTip(tr("Try to check or update all selected shader packs (all shader packs if none are selected)")); + connect(ui->actionUpdateItem, &QAction::triggered, this, &ShaderPackPage::updateShaderPacks); + ui->actionsToolbar->insertActionBefore(ui->actionAddItem, ui->actionUpdateItem); + + auto updateMenu = new QMenu(this); + + auto update = updateMenu->addAction(ui->actionUpdateItem->text()); + connect(update, &QAction::triggered, this, &ShaderPackPage::updateShaderPacks); + + updateMenu->addAction(ui->actionResetItemMetadata); + connect(ui->actionResetItemMetadata, &QAction::triggered, this, &ShaderPackPage::deleteShaderPackMetadata); + + ui->actionUpdateItem->setMenu(updateMenu); } -void ShaderPackPage::downloadShaders() +void ShaderPackPage::downloadShaderPack() { if (m_instance->typeName() != "Minecraft") return; // this is a null instance or a legacy instance - ResourceDownload::ShaderPackDownloadDialog mdownload(this, std::static_pointer_cast(m_model), m_instance); + ResourceDownload::ShaderPackDownloadDialog mdownload(this, m_model, m_instance); if (mdownload.exec()) { - auto tasks = new ConcurrentTask(this, "Download Shaders", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask(this, "Download Shader Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); @@ -93,3 +107,103 @@ void ShaderPackPage::downloadShaders() m_model->update(); } } + +void ShaderPackPage::updateShaderPacks() +{ + if (m_instance->typeName() != "Minecraft") + return; // this is a null instance or a legacy instance + + auto profile = static_cast(m_instance)->getPackProfile(); + if (APPLICATION->settings()->get("ModMetadataDisabled").toBool()) { + QMessageBox::critical(this, tr("Error"), tr("Shader pack updates are unavailable when metadata is disabled!")); + return; + } + if (m_instance != nullptr && m_instance->isRunning()) { + auto response = + CustomMessageBox::selectable(this, tr("Confirm Update"), + tr("Updating shader packs while the game is running may pack duplication and game crashes.\n" + "The old files may not be deleted as they are in use.\n" + "Are you sure you want to do this?"), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); + + if (response != QMessageBox::Yes) + return; + } + auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); + + auto mods_list = m_model->selectedResources(selection); + bool use_all = mods_list.empty(); + if (use_all) + mods_list = m_model->allResources(); + + ResourceUpdateDialog update_dialog(this, m_instance, m_model, mods_list, false, false); + update_dialog.checkCandidates(); + + if (update_dialog.aborted()) { + CustomMessageBox::selectable(this, tr("Aborted"), tr("The shader pack updater was aborted!"), QMessageBox::Warning)->show(); + return; + } + if (update_dialog.noUpdates()) { + QString message{ tr("'%1' is up-to-date! :)").arg(mods_list.front()->name()) }; + if (mods_list.size() > 1) { + if (use_all) { + message = tr("All shader packs are up-to-date! :)"); + } else { + message = tr("All selected shader packs are up-to-date! :)"); + } + } + CustomMessageBox::selectable(this, tr("Update checker"), message)->exec(); + return; + } + + if (update_dialog.exec()) { + auto tasks = new ConcurrentTask(this, "Download Shader Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + connect(tasks, &Task::failed, [this, tasks](QString reason) { + CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::aborted, [this, tasks]() { + CustomMessageBox::selectable(this, tr("Aborted"), tr("Download stopped by user."), QMessageBox::Information)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::succeeded, [this, tasks]() { + QStringList warnings = tasks->warnings(); + if (warnings.count()) { + CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->show(); + } + tasks->deleteLater(); + }); + + for (auto task : update_dialog.getTasks()) { + tasks->addTask(task); + } + + ProgressDialog loadDialog(this); + loadDialog.setSkipButton(true, tr("Abort")); + loadDialog.execWithTask(tasks); + + m_model->update(); + } +} + +void ShaderPackPage::deleteShaderPackMetadata() +{ + auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); + auto selectionCount = m_model->selectedShaderPacks(selection).length(); + if (selectionCount == 0) + return; + if (selectionCount > 1) { + auto response = CustomMessageBox::selectable(this, tr("Confirm Removal"), + tr("You are about to remove the metadata for %1 shader packs.\n" + "Are you sure?") + .arg(selectionCount), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); + + if (response != QMessageBox::Yes) + return; + } + + m_model->deleteMetadata(selection); +} diff --git a/launcher/ui/pages/instance/ShaderPackPage.h b/launcher/ui/pages/instance/ShaderPackPage.h index 7c43a3756..fadffe82d 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.h +++ b/launcher/ui/pages/instance/ShaderPackPage.h @@ -53,5 +53,10 @@ class ShaderPackPage : public ExternalResourcesPage { bool shouldDisplay() const override { return true; } public slots: - void downloadShaders(); + void downloadShaderPack(); + void updateShaderPacks(); + void deleteShaderPackMetadata(); + + private: + std::shared_ptr m_model; }; diff --git a/launcher/ui/pages/instance/TexturePackPage.cpp b/launcher/ui/pages/instance/TexturePackPage.cpp index 7c8d7e061..75f8410bc 100644 --- a/launcher/ui/pages/instance/TexturePackPage.cpp +++ b/launcher/ui/pages/instance/TexturePackPage.cpp @@ -44,17 +44,31 @@ #include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/ProgressDialog.h" #include "ui/dialogs/ResourceDownloadDialog.h" +#include "ui/dialogs/ResourceUpdateDialog.h" TexturePackPage::TexturePackPage(MinecraftInstance* instance, std::shared_ptr model, QWidget* parent) - : ExternalResourcesPage(instance, model, parent) + : ExternalResourcesPage(instance, model, parent), m_model(model) { - ui->actionDownloadItem->setText(tr("Download packs")); - ui->actionDownloadItem->setToolTip(tr("Download texture packs from online platforms")); + ui->actionDownloadItem->setText(tr("Download Packs")); + ui->actionDownloadItem->setToolTip(tr("Download texture packs from online mod platforms")); ui->actionDownloadItem->setEnabled(true); - connect(ui->actionDownloadItem, &QAction::triggered, this, &TexturePackPage::downloadTPs); ui->actionsToolbar->insertActionBefore(ui->actionAddItem, ui->actionDownloadItem); - ui->actionViewConfigs->setVisible(false); + connect(ui->actionDownloadItem, &QAction::triggered, this, &TexturePackPage::downloadTexturePacks); + + ui->actionUpdateItem->setToolTip(tr("Try to check or update all selected texture packs (all texture packs if none are selected)")); + connect(ui->actionUpdateItem, &QAction::triggered, this, &TexturePackPage::updateTexturePacks); + ui->actionsToolbar->insertActionBefore(ui->actionAddItem, ui->actionUpdateItem); + + auto updateMenu = new QMenu(this); + + auto update = updateMenu->addAction(ui->actionUpdateItem->text()); + connect(update, &QAction::triggered, this, &TexturePackPage::updateTexturePacks); + + updateMenu->addAction(ui->actionResetItemMetadata); + connect(ui->actionResetItemMetadata, &QAction::triggered, this, &TexturePackPage::deleteTexturePackMetadata); + + ui->actionUpdateItem->setMenu(updateMenu); } bool TexturePackPage::onSelectionChanged(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) @@ -67,12 +81,12 @@ bool TexturePackPage::onSelectionChanged(const QModelIndex& current, [[maybe_unu return true; } -void TexturePackPage::downloadTPs() +void TexturePackPage::downloadTexturePacks() { if (m_instance->typeName() != "Minecraft") return; // this is a null instance or a legacy instance - ResourceDownload::TexturePackDownloadDialog mdownload(this, std::static_pointer_cast(m_model), m_instance); + ResourceDownload::TexturePackDownloadDialog mdownload(this, m_model, m_instance); if (mdownload.exec()) { auto tasks = new ConcurrentTask(this, "Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); @@ -103,3 +117,103 @@ void TexturePackPage::downloadTPs() m_model->update(); } } + +void TexturePackPage::updateTexturePacks() +{ + if (m_instance->typeName() != "Minecraft") + return; // this is a null instance or a legacy instance + + auto profile = static_cast(m_instance)->getPackProfile(); + if (APPLICATION->settings()->get("ModMetadataDisabled").toBool()) { + QMessageBox::critical(this, tr("Error"), tr("Texture pack updates are unavailable when metadata is disabled!")); + return; + } + if (m_instance != nullptr && m_instance->isRunning()) { + auto response = + CustomMessageBox::selectable(this, tr("Confirm Update"), + tr("Updating texture packs while the game is running may cause pack duplication and game crashes.\n" + "The old files may not be deleted as they are in use.\n" + "Are you sure you want to do this?"), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); + + if (response != QMessageBox::Yes) + return; + } + auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); + + auto mods_list = m_model->selectedResources(selection); + bool use_all = mods_list.empty(); + if (use_all) + mods_list = m_model->allResources(); + + ResourceUpdateDialog update_dialog(this, m_instance, m_model, mods_list, false, false); + update_dialog.checkCandidates(); + + if (update_dialog.aborted()) { + CustomMessageBox::selectable(this, tr("Aborted"), tr("The texture pack updater was aborted!"), QMessageBox::Warning)->show(); + return; + } + if (update_dialog.noUpdates()) { + QString message{ tr("'%1' is up-to-date! :)").arg(mods_list.front()->name()) }; + if (mods_list.size() > 1) { + if (use_all) { + message = tr("All texture packs are up-to-date! :)"); + } else { + message = tr("All selected texture packs are up-to-date! :)"); + } + } + CustomMessageBox::selectable(this, tr("Update checker"), message)->exec(); + return; + } + + if (update_dialog.exec()) { + auto tasks = new ConcurrentTask(this, "Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + connect(tasks, &Task::failed, [this, tasks](QString reason) { + CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::aborted, [this, tasks]() { + CustomMessageBox::selectable(this, tr("Aborted"), tr("Download stopped by user."), QMessageBox::Information)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::succeeded, [this, tasks]() { + QStringList warnings = tasks->warnings(); + if (warnings.count()) { + CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->show(); + } + tasks->deleteLater(); + }); + + for (auto task : update_dialog.getTasks()) { + tasks->addTask(task); + } + + ProgressDialog loadDialog(this); + loadDialog.setSkipButton(true, tr("Abort")); + loadDialog.execWithTask(tasks); + + m_model->update(); + } +} + +void TexturePackPage::deleteTexturePackMetadata() +{ + auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); + auto selectionCount = m_model->selectedTexturePacks(selection).length(); + if (selectionCount == 0) + return; + if (selectionCount > 1) { + auto response = CustomMessageBox::selectable(this, tr("Confirm Removal"), + tr("You are about to remove the metadata for %1 texture packs.\n" + "Are you sure?") + .arg(selectionCount), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); + + if (response != QMessageBox::Yes) + return; + } + + m_model->deleteMetadata(selection); +} diff --git a/launcher/ui/pages/instance/TexturePackPage.h b/launcher/ui/pages/instance/TexturePackPage.h index 9c4f24b70..e42613568 100644 --- a/launcher/ui/pages/instance/TexturePackPage.h +++ b/launcher/ui/pages/instance/TexturePackPage.h @@ -56,5 +56,10 @@ class TexturePackPage : public ExternalResourcesPage { public slots: bool onSelectionChanged(const QModelIndex& current, const QModelIndex& previous) override; - void downloadTPs(); + void downloadTexturePacks(); + void updateTexturePacks(); + void deleteTexturePackMetadata(); + + private: + std::shared_ptr m_model; }; From 9120848278f8709525b574e92a4e602c593e1f4c Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 6 Mar 2024 19:33:14 +0200 Subject: [PATCH 065/616] Made java downloader as a build option Signed-off-by: Trial97 --- CMakeLists.txt | 3 +++ buildconfig/BuildConfig.cpp.in | 4 +++ buildconfig/BuildConfig.h | 1 + launcher/CMakeLists.txt | 4 +++ launcher/ui/pages/global/JavaPage.cpp | 25 +++++++++++------- .../pages/instance/InstanceSettingsPage.cpp | 2 ++ launcher/ui/widgets/JavaSettingsWidget.cpp | 26 +++++++++++-------- 7 files changed, 45 insertions(+), 20 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6cceb2599..9b7104478 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -219,6 +219,9 @@ set(Launcher_SUBREDDIT_URL "https://prismlauncher.org/reddit" CACHE STRING "URL set(Launcher_FORCE_BUNDLED_LIBS OFF CACHE BOOL "Prevent using system libraries, if they are available as submodules") set(Launcher_QT_VERSION_MAJOR "6" CACHE STRING "Major Qt version to build against") +# Java downloader +option(ENABLE_JAVA_DOWNLOADER "Build the java downloader feature" ON) + # Native libraries if(UNIX AND APPLE) set(Launcher_GLFW_LIBRARY_NAME "libglfw.dylib" CACHE STRING "Name of native glfw library") diff --git a/buildconfig/BuildConfig.cpp.in b/buildconfig/BuildConfig.cpp.in index b40cacb0f..cdf3cbffc 100644 --- a/buildconfig/BuildConfig.cpp.in +++ b/buildconfig/BuildConfig.cpp.in @@ -81,6 +81,10 @@ Config::Config() UPDATER_ENABLED = true; } +#if ENABLE_JAVA_DOWNLOADER + JAVA_DOWNLOADER_ENABLED = true; +#endif + GIT_COMMIT = "@Launcher_GIT_COMMIT@"; GIT_TAG = "@Launcher_GIT_TAG@"; GIT_REFSPEC = "@Launcher_GIT_REFSPEC@"; diff --git a/buildconfig/BuildConfig.h b/buildconfig/BuildConfig.h index 77b6eef54..e3beb8dbe 100644 --- a/buildconfig/BuildConfig.h +++ b/buildconfig/BuildConfig.h @@ -67,6 +67,7 @@ class Config { QString VERSION_CHANNEL; bool UPDATER_ENABLED = false; + bool JAVA_DOWNLOADER_ENABLED = false; /// A short string identifying this build's platform or distribution. QString BUILD_PLATFORM; diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index fcc3c2f3a..f620388dc 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1320,6 +1320,10 @@ if(DEFINED Launcher_APP_BINARY_DEFS) target_compile_definitions(Launcher_logic PRIVATE ${Launcher_APP_BINARY_DEFS}) endif() +if(ENABLE_JAVA_DOWNLOADER) + target_compile_definitions(Launcher_logic PUBLIC ENABLE_JAVA_DOWNLOADER) +endif() + install(TARGETS ${Launcher_Name} BUNDLE DESTINATION "." COMPONENT Runtime LIBRARY DESTINATION ${LIBRARY_DEST_DIR} COMPONENT Runtime diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 95d5f581e..0276daed5 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -35,6 +35,7 @@ */ #include "JavaPage.h" +#include "BuildConfig.h" #include "JavaCommon.h" #include "java/JavaInstall.h" #include "ui/dialogs/CustomMessageBox.h" @@ -62,15 +63,21 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) { ui->setupUi(this); - ui->managedJavaList->initialize(new JavaInstallList(this, true)); - ui->managedJavaList->selectCurrent(); - ui->managedJavaList->setEmptyString(tr("No java versions are currently available in the meta")); - ui->managedJavaList->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); - connect(ui->autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] { - ui->autodownloadCheckBox->setEnabled(ui->autodetectJavaCheckBox->isChecked()); - if (!ui->autodetectJavaCheckBox->isChecked()) - ui->autodownloadCheckBox->setChecked(false); - }); + if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { + ui->managedJavaList->initialize(new JavaInstallList(this, true)); + ui->managedJavaList->selectCurrent(); + ui->managedJavaList->setEmptyString(tr("No java versions are currently available in the meta")); + ui->managedJavaList->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); + connect(ui->autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] { + ui->autodownloadCheckBox->setEnabled(ui->autodetectJavaCheckBox->isChecked()); + if (!ui->autodetectJavaCheckBox->isChecked()) + ui->autodownloadCheckBox->setChecked(false); + }); + } else { + ui->autodownloadCheckBox->setHidden(true); + ui->javaDownloadBtn->setHidden(true); + ui->tabWidget->tabBar()->hide(); + } loadSettings(); updateThresholds(); diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 50cffc9a7..f2a723b81 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -64,6 +64,8 @@ InstanceSettingsPage::InstanceSettingsPage(BaseInstance* inst, QWidget* parent) m_settings = inst->settings(); ui->setupUi(this); + ui->javaDownloadBtn->setHidden(!BuildConfig.JAVA_DOWNLOADER_ENABLED); + connect(ui->openGlobalJavaSettingsButton, &QCommandLinkButton::clicked, this, &InstanceSettingsPage::globalSettingsButtonClicked); connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::applySettings); connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings); diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 29357bdab..866d4c182 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -129,8 +129,10 @@ void JavaSettingsWidget::setupUi() m_horizontalBtnLayout = new QHBoxLayout(); m_horizontalBtnLayout->setObjectName(QStringLiteral("horizontalBtnLayout")); - m_javaDownloadBtn = new QPushButton(tr("Download Java"), this); - m_horizontalBtnLayout->addWidget(m_javaDownloadBtn); + if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { + m_javaDownloadBtn = new QPushButton(tr("Download Java"), this); + m_horizontalBtnLayout->addWidget(m_javaDownloadBtn); + } m_verticalLayout->addLayout(m_horizontalBtnLayout); @@ -143,15 +145,17 @@ void JavaSettingsWidget::setupUi() m_autodetectJavaCheckBox->setObjectName("autodetectJavaCheckBox"); m_veriticalJavaLayout->addWidget(m_autodetectJavaCheckBox); - m_autodownloadCheckBox = new QCheckBox(m_autoJavaGroupBox); - m_autodownloadCheckBox->setObjectName("autodownloadCheckBox"); - m_autodownloadCheckBox->setEnabled(false); - m_veriticalJavaLayout->addWidget(m_autodownloadCheckBox); - connect(m_autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] { - m_autodownloadCheckBox->setEnabled(m_autodetectJavaCheckBox->isChecked()); - if (!m_autodetectJavaCheckBox->isChecked()) - m_autodownloadCheckBox->setChecked(false); - }); + if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { + m_autodownloadCheckBox = new QCheckBox(m_autoJavaGroupBox); + m_autodownloadCheckBox->setObjectName("autodownloadCheckBox"); + m_autodownloadCheckBox->setEnabled(false); + m_veriticalJavaLayout->addWidget(m_autodownloadCheckBox); + connect(m_autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] { + m_autodownloadCheckBox->setEnabled(m_autodetectJavaCheckBox->isChecked()); + if (!m_autodetectJavaCheckBox->isChecked()) + m_autodownloadCheckBox->setChecked(false); + }); + } m_verticalLayout->addWidget(m_autoJavaGroupBox); retranslate(); From ef4e5eb3cf726e3b59f202d6eceee6f53450743e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 18 Mar 2024 19:15:36 +0200 Subject: [PATCH 066/616] fixed java build option Signed-off-by: Trial97 --- buildconfig/BuildConfig.cpp.in | 5 ++--- launcher/CMakeLists.txt | 4 ---- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/buildconfig/BuildConfig.cpp.in b/buildconfig/BuildConfig.cpp.in index cdf3cbffc..a2b5c2187 100644 --- a/buildconfig/BuildConfig.cpp.in +++ b/buildconfig/BuildConfig.cpp.in @@ -81,9 +81,8 @@ Config::Config() UPDATER_ENABLED = true; } -#if ENABLE_JAVA_DOWNLOADER - JAVA_DOWNLOADER_ENABLED = true; -#endif + #cmakedefine01 ENABLE_JAVA_DOWNLOADER + JAVA_DOWNLOADER_ENABLED = ENABLE_JAVA_DOWNLOADER; GIT_COMMIT = "@Launcher_GIT_COMMIT@"; GIT_TAG = "@Launcher_GIT_TAG@"; diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index f620388dc..fcc3c2f3a 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1320,10 +1320,6 @@ if(DEFINED Launcher_APP_BINARY_DEFS) target_compile_definitions(Launcher_logic PRIVATE ${Launcher_APP_BINARY_DEFS}) endif() -if(ENABLE_JAVA_DOWNLOADER) - target_compile_definitions(Launcher_logic PUBLIC ENABLE_JAVA_DOWNLOADER) -endif() - install(TARGETS ${Launcher_Name} BUNDLE DESTINATION "." COMPONENT Runtime LIBRARY DESTINATION ${LIBRARY_DEST_DIR} COMPONENT Runtime From 09c2c6793b52639f86f2edead268b51ad4b5fffc Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 20 Mar 2024 00:15:02 +0200 Subject: [PATCH 067/616] Improve UI Signed-off-by: Trial97 --- launcher/BaseVersionList.cpp | 1 - launcher/BaseVersionList.h | 1 - launcher/CMakeLists.txt | 5 +- launcher/VersionProxyModel.cpp | 9 - launcher/VersionProxyModel.h | 2 +- launcher/java/JavaMetadata.cpp | 2 +- launcher/java/JavaMetadata.h | 2 +- launcher/minecraft/OneSixVersionFormat.cpp | 9 +- launcher/minecraft/VersionFile.h | 2 +- launcher/minecraft/launch/AutoInstallJava.cpp | 60 +++-- launcher/ui/java/InstallJavaDialog.cpp | 234 ++++++++++++++++++ .../{JavaDownloader.h => InstallJavaDialog.h} | 28 +-- launcher/ui/java/JavaDownloader.cpp | 110 -------- launcher/ui/java/JavaDownloader.ui | 100 -------- launcher/ui/java/VersionList.cpp | 14 +- launcher/ui/pages/global/JavaPage.cpp | 4 +- .../pages/instance/InstanceSettingsPage.cpp | 4 +- launcher/ui/widgets/JavaSettingsWidget.cpp | 4 +- 18 files changed, 295 insertions(+), 296 deletions(-) create mode 100644 launcher/ui/java/InstallJavaDialog.cpp rename launcher/ui/java/{JavaDownloader.h => InstallJavaDialog.h} (63%) delete mode 100644 launcher/ui/java/JavaDownloader.cpp delete mode 100644 launcher/ui/java/JavaDownloader.ui diff --git a/launcher/BaseVersionList.cpp b/launcher/BaseVersionList.cpp index 1456a17bd..afee8388a 100644 --- a/launcher/BaseVersionList.cpp +++ b/launcher/BaseVersionList.cpp @@ -112,6 +112,5 @@ QHash BaseVersionList::roleNames() const roles.insert(PathRole, "path"); roles.insert(JavaNameRole, "javaName"); roles.insert(CPUArchitectureRole, "architecture"); - roles.insert(JavaVendorRole, "javaVendor"); return roles; } diff --git a/launcher/BaseVersionList.h b/launcher/BaseVersionList.h index 7517c71b4..bc37e9e53 100644 --- a/launcher/BaseVersionList.h +++ b/launcher/BaseVersionList.h @@ -50,7 +50,6 @@ class BaseVersionList : public QAbstractListModel { PathRole, JavaNameRole, CPUArchitectureRole, - JavaVendorRole, SortRole }; using RoleList = QList; diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index fcc3c2f3a..dd493682e 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -440,8 +440,8 @@ set(JAVA_SOURCES java/download/ManifestDownloadTask.cpp java/download/ManifestDownloadTask.h - ui/java/JavaDownloader.h - ui/java/JavaDownloader.cpp + ui/java/InstallJavaDialog.h + ui/java/InstallJavaDialog.cpp ui/java/VersionList.h ui/java/VersionList.cpp ) @@ -1194,7 +1194,6 @@ qt_wrap_ui(LAUNCHER_UI ui/dialogs/ScrollMessageBox.ui ui/dialogs/BlockedModsDialog.ui ui/dialogs/ChooseProviderDialog.ui - ui/java/JavaDownloader.ui ) qt_wrap_ui(PRISM_UPDATE_UI diff --git a/launcher/VersionProxyModel.cpp b/launcher/VersionProxyModel.cpp index ed4c0767d..070e952a4 100644 --- a/launcher/VersionProxyModel.cpp +++ b/launcher/VersionProxyModel.cpp @@ -116,8 +116,6 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, return tr("Type"); case CPUArchitecture: return tr("Architecture"); - case JavaVendor: - return tr("Vendor"); case Path: return tr("Path"); case JavaName: @@ -137,8 +135,6 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, return tr("The version's type"); case CPUArchitecture: return tr("CPU Architecture"); - case JavaVendor: - return tr("Java vendor"); case Path: return tr("Filesystem path to this version"); case JavaName: @@ -175,8 +171,6 @@ QVariant VersionProxyModel::data(const QModelIndex& index, int role) const return sourceModel()->data(parentIndex, BaseVersionList::TypeRole); case CPUArchitecture: return sourceModel()->data(parentIndex, BaseVersionList::CPUArchitectureRole); - case JavaVendor: - return sourceModel()->data(parentIndex, BaseVersionList::JavaVendorRole); case Path: return sourceModel()->data(parentIndex, BaseVersionList::PathRole); case JavaName: @@ -323,9 +317,6 @@ void VersionProxyModel::setSourceModel(QAbstractItemModel* replacingRaw) if (roles.contains(BaseVersionList::CPUArchitectureRole)) { m_columns.push_back(CPUArchitecture); } - if (roles.contains(BaseVersionList::JavaVendorRole)) { - m_columns.push_back(JavaVendor); - } if (roles.contains(BaseVersionList::PathRole)) { m_columns.push_back(Path); } diff --git a/launcher/VersionProxyModel.h b/launcher/VersionProxyModel.h index 5a1017bee..cb55b7f14 100644 --- a/launcher/VersionProxyModel.h +++ b/launcher/VersionProxyModel.h @@ -9,7 +9,7 @@ class VersionFilterModel; class VersionProxyModel : public QAbstractProxyModel { Q_OBJECT public: - enum Column { Name, ParentVersion, Branch, Type, CPUArchitecture, Path, Time, JavaName, JavaVendor }; + enum Column { Name, ParentVersion, Branch, Type, CPUArchitecture, Path, Time, JavaName }; using FilterMap = QHash>; public: diff --git a/launcher/java/JavaMetadata.cpp b/launcher/java/JavaMetadata.cpp index b73c54fe6..e721947a7 100644 --- a/launcher/java/JavaMetadata.cpp +++ b/launcher/java/JavaMetadata.cpp @@ -52,9 +52,9 @@ MetadataPtr parseJavaMeta(const QJsonObject& in) meta->vendor = Json::ensureString(in, "vendor", ""); meta->url = Json::ensureString(in, "url", ""); meta->releaseTime = timeFromS3Time(Json::ensureString(in, "releaseTime", "")); - meta->recommended = Json::ensureBoolean(in, "recommended", false); meta->downloadType = parseDownloadType(Json::ensureString(in, "downloadType", "")); meta->packageType = Json::ensureString(in, "packageType", ""); + meta->runtimeOS = Json::ensureString(in, "runtimeOS", "unknown"); if (in.contains("checksum")) { auto obj = Json::requireObject(in, "checksum"); diff --git a/launcher/java/JavaMetadata.h b/launcher/java/JavaMetadata.h index 640a412f1..5281f2e27 100644 --- a/launcher/java/JavaMetadata.h +++ b/launcher/java/JavaMetadata.h @@ -50,10 +50,10 @@ class Metadata : public BaseVersion { QDateTime releaseTime; QString checksumType; QString checksumHash; - bool recommended; DownloadType downloadType; QString packageType; JavaVersion version; + QString runtimeOS; }; using MetadataPtr = std::shared_ptr; diff --git a/launcher/minecraft/OneSixVersionFormat.cpp b/launcher/minecraft/OneSixVersionFormat.cpp index 56e9c8ca2..bd587beb2 100644 --- a/launcher/minecraft/OneSixVersionFormat.cpp +++ b/launcher/minecraft/OneSixVersionFormat.cpp @@ -258,14 +258,9 @@ VersionFilePtr OneSixVersionFormat::versionFileFromJson(const QJsonDocument& doc } if (root.contains("runtimes")) { - auto runtimes = requireObject(root, "runtimes"); out->runtimes = {}; - for (auto key : runtimes.keys()) { - QList list; - for (auto runtime : ensureArray(runtimes, key)) { - list.append(Java::parseJavaMeta(ensureObject(runtime))); - } - out->runtimes[key] = list; + for (auto runtime : ensureArray(root, "runtimes")) { + out->runtimes.append(Java::parseJavaMeta(ensureObject(runtime))); } } diff --git a/launcher/minecraft/VersionFile.h b/launcher/minecraft/VersionFile.h index a9c1473d2..85ac55426 100644 --- a/launcher/minecraft/VersionFile.h +++ b/launcher/minecraft/VersionFile.h @@ -155,7 +155,7 @@ class VersionFile : public ProblemContainer { /// is volatile -- may be removed as soon as it is no longer needed by something else bool m_volatile = false; - QHash> runtimes; + QList runtimes; public: // Mojang: DEPRECATED list of 'downloads' - client jar, server jar, windows server exe, maybe more. diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index ab68910a7..3ae6ffa88 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -145,39 +145,35 @@ void AutoInstallJava::setJavaPathFromPartial() void AutoInstallJava::downloadJava(Meta::Version::Ptr version, QString javaName) { auto runtimes = version->data()->runtimes; - if (runtimes.contains(m_supported_arch)) { - for (auto java : runtimes.value(m_supported_arch)) { - if (java->name() == javaName) { - QDir javaDir(APPLICATION->javaPath()); - auto final_path = javaDir.absoluteFilePath(java->m_name); - switch (java->downloadType) { - case Java::DownloadType::Manifest: - m_current_task = - makeShared(java->url, final_path, java->checksumType, java->checksumHash); - break; - case Java::DownloadType::Archive: - m_current_task = - makeShared(java->url, final_path, java->checksumType, java->checksumHash); - break; - } - auto deletePath = [final_path] { FS::deletePath(final_path); }; - connect(m_current_task.get(), &Task::failed, this, [this, deletePath](QString reason) { - deletePath(); - emitFailed(reason); - }); - connect(this, &Task::aborted, this, [this, deletePath] { - m_current_task->abort(); - deletePath(); - }); - connect(m_current_task.get(), &Task::succeeded, this, &AutoInstallJava::setJavaPathFromPartial); - connect(m_current_task.get(), &Task::failed, this, &AutoInstallJava::tryNextMajorJava); - connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress); - connect(m_current_task.get(), &Task::stepProgress, this, &AutoInstallJava::propagateStepProgress); - connect(m_current_task.get(), &Task::status, this, &AutoInstallJava::setStatus); - connect(m_current_task.get(), &Task::details, this, &AutoInstallJava::setDetails); - m_current_task->start(); - return; + for (auto java : runtimes) { + if (java->runtimeOS == m_supported_arch && java->name() == javaName) { + QDir javaDir(APPLICATION->javaPath()); + auto final_path = javaDir.absoluteFilePath(java->m_name); + switch (java->downloadType) { + case Java::DownloadType::Manifest: + m_current_task = makeShared(java->url, final_path, java->checksumType, java->checksumHash); + break; + case Java::DownloadType::Archive: + m_current_task = makeShared(java->url, final_path, java->checksumType, java->checksumHash); + break; } + auto deletePath = [final_path] { FS::deletePath(final_path); }; + connect(m_current_task.get(), &Task::failed, this, [this, deletePath](QString reason) { + deletePath(); + emitFailed(reason); + }); + connect(this, &Task::aborted, this, [this, deletePath] { + m_current_task->abort(); + deletePath(); + }); + connect(m_current_task.get(), &Task::succeeded, this, &AutoInstallJava::setJavaPathFromPartial); + connect(m_current_task.get(), &Task::failed, this, &AutoInstallJava::tryNextMajorJava); + connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress); + connect(m_current_task.get(), &Task::stepProgress, this, &AutoInstallJava::propagateStepProgress); + connect(m_current_task.get(), &Task::status, this, &AutoInstallJava::setStatus); + connect(m_current_task.get(), &Task::details, this, &AutoInstallJava::setDetails); + m_current_task->start(); + return; } } tryNextMajorJava(); diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp new file mode 100644 index 000000000..054e5cece --- /dev/null +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -0,0 +1,234 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#include "InstallJavaDialog.h" + +#include +#include +#include +#include + +#include "Application.h" +#include "FileSystem.h" +#include "java/download/ArchiveDownloadTask.h" +#include "java/download/ManifestDownloadTask.h" +#include "meta/Index.h" +#include "meta/VersionList.h" +#include "ui/dialogs/ProgressDialog.h" +#include "ui/java/VersionList.h" +#include "ui/widgets/PageContainer.h" +#include "ui/widgets/VersionSelectWidget.h" + +class InstallLoaderPage : public QWidget, public BasePage { + public: + Q_OBJECT + public: + explicit InstallLoaderPage(const QString& id, const QString& iconName, const QString& name, QWidget* parent = nullptr) + : QWidget(parent), uid(id), iconName(iconName), name(name) + { + setObjectName(QStringLiteral("VersionSelectWidget")); + horizontalLayout = new QHBoxLayout(this); + horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); + horizontalLayout->setContentsMargins(0, 0, 0, 0); + + majorVersionSelect = new VersionSelectWidget(this); + majorVersionSelect->selectCurrent(); + majorVersionSelect->setEmptyString(tr("No java versions are currently available in the meta.")); + majorVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); + horizontalLayout->addWidget(majorVersionSelect, 1); + + javaVersionSelect = new VersionSelectWidget(this); + javaVersionSelect->setEmptyString(tr("No java versions are currently available for your OS.")); + javaVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); + horizontalLayout->addWidget(javaVersionSelect, 4); + connect(majorVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallLoaderPage::setSelectedVersion); + connect(javaVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallLoaderPage::selectedVersionChanged); + + QMetaObject::connectSlotsByName(this); + } + ~InstallLoaderPage() + { + delete horizontalLayout; + delete majorVersionSelect; + delete javaVersionSelect; + } + + //! loads the list if needed. + void initialize(Meta::VersionList::Ptr vlist) + { + vlist->setProvidedRoles({ BaseVersionList::VersionRole, BaseVersionList::RecommendedRole, BaseVersionList::VersionPointerRole }); + majorVersionSelect->initialize(vlist.get()); + } + + void setSelectedVersion(BaseVersion::Ptr version) + { + auto dcast = std::dynamic_pointer_cast(version); + if (!dcast) { + return; + } + javaVersionSelect->initialize(new Java::VersionList(dcast, this)); + javaVersionSelect->selectCurrent(); + } + + QString id() const override { return uid; } + QString displayName() const override { return name; } + QIcon icon() const override { return APPLICATION->getThemedIcon(iconName); } + + void openedImpl() override + { + if (loaded) + return; + + const auto versions = APPLICATION->metadataIndex()->get(uid); + if (!versions) + return; + + initialize(versions); + loaded = true; + } + + void setParentContainer(BasePageContainer* container) override + { + auto dialog = dynamic_cast(dynamic_cast(container)->parent()); + connect(javaVersionSelect->view(), &QAbstractItemView::doubleClicked, dialog, &QDialog::accept); + } + + BaseVersion::Ptr selectedVersion() const { return javaVersionSelect->selectedVersion(); } + void selectSearch() { javaVersionSelect->selectSearch(); } + void loadList() + { + majorVersionSelect->loadList(); + javaVersionSelect->loadList(); + } + signals: + void selectedVersionChanged(BaseVersion::Ptr version); + + private: + const QString uid; + const QString iconName; + const QString name; + bool loaded = false; + + QHBoxLayout* horizontalLayout = nullptr; + VersionSelectWidget* majorVersionSelect = nullptr; + VersionSelectWidget* javaVersionSelect = nullptr; +}; + +static InstallLoaderPage* pageCast(BasePage* page) +{ + auto result = dynamic_cast(page); + Q_ASSERT(result != nullptr); + return result; +} +namespace Java { + +InstallDialog::InstallDialog(const QString& uid, QWidget* parent) + : QDialog(parent), container(new PageContainer(this, QString(), this)), buttons(new QDialogButtonBox(this)) +{ + auto layout = new QVBoxLayout(this); + + container->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Expanding); + layout->addWidget(container); + + auto buttonLayout = new QHBoxLayout(this); + + auto refreshButton = new QPushButton(tr("&Refresh"), this); + connect(refreshButton, &QPushButton::clicked, this, [this] { pageCast(container->selectedPage())->loadList(); }); + buttonLayout->addWidget(refreshButton); + + buttons->setOrientation(Qt::Horizontal); + buttons->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); + buttons->button(QDialogButtonBox::Ok)->setText(tr("Download")); + connect(buttons, &QDialogButtonBox::accepted, this, &QDialog::accept); + connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject); + buttonLayout->addWidget(buttons); + + layout->addLayout(buttonLayout); + + setWindowTitle(dialogTitle()); + setWindowModality(Qt::WindowModal); + resize(840, 480); + + for (BasePage* page : container->getPages()) { + if (page->id() == uid) + container->selectPage(page->id()); + + connect(pageCast(page), &InstallLoaderPage::selectedVersionChanged, this, [this, page] { + if (page->id() == container->selectedPage()->id()) + validate(container->selectedPage()); + }); + } + connect(container, &PageContainer::selectedPageChanged, this, [this](BasePage* previous, BasePage* current) { validate(current); }); + pageCast(container->selectedPage())->selectSearch(); + validate(container->selectedPage()); +} + +QList InstallDialog::getPages() +{ + return { + // NeoForge + new InstallLoaderPage("net.minecraft.java", "", tr("Mojang")), + // Forge + new InstallLoaderPage("net.adoptium.java", "", tr("Adoptium")), + // Fabric + new InstallLoaderPage("com.azul.java", "", tr("Azul")), + }; +} + +QString InstallDialog::dialogTitle() +{ + return tr("Install Loader"); +} + +void InstallDialog::validate(BasePage* page) +{ + buttons->button(QDialogButtonBox::Ok)->setEnabled(pageCast(page)->selectedVersion() != nullptr); +} + +void InstallDialog::done(int result) +{ + if (result == Accepted) { + auto* page = pageCast(container->selectedPage()); + if (page->selectedVersion()) { + auto meta = std::dynamic_pointer_cast(page->selectedVersion()); + if (meta) { + Task::Ptr task; + auto final_path = FS::PathCombine(APPLICATION->javaPath(), meta->m_name); + switch (meta->downloadType) { + case Java::DownloadType::Manifest: + task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); + break; + case Java::DownloadType::Archive: + task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); + break; + } + auto deletePath = [final_path] { FS::deletePath(final_path); }; + connect(task.get(), &Task::failed, this, deletePath); + connect(task.get(), &Task::aborted, this, deletePath); + ProgressDialog pg(this); + pg.setSkipButton(true, tr("Abort")); + pg.execWithTask(task.get()); + } + } + } + + QDialog::done(result); +} +} // namespace Java + +#include "InstallJavaDialog.moc" \ No newline at end of file diff --git a/launcher/ui/java/JavaDownloader.h b/launcher/ui/java/InstallJavaDialog.h similarity index 63% rename from launcher/ui/java/JavaDownloader.h rename to launcher/ui/java/InstallJavaDialog.h index b8bdde41a..e228adf21 100644 --- a/launcher/ui/java/JavaDownloader.h +++ b/launcher/ui/java/InstallJavaDialog.h @@ -19,30 +19,28 @@ #pragma once #include -#include "BaseVersion.h" +#include "ui/pages/BasePageProvider.h" -namespace Ui { -class JavaDownloader; -} +class MinecraftInstance; +class PageContainer; +class PackProfile; +class QDialogButtonBox; namespace Java { - -class Downloader : public QDialog { +class InstallDialog final : public QDialog, protected BasePageProvider { Q_OBJECT public: - explicit Downloader(QWidget* parent = 0); - ~Downloader(); + explicit InstallDialog(const QString& uid = QString(), QWidget* parent = nullptr); - void accept(); + QList getPages() override; + QString dialogTitle() override; - public slots: - void refresh(); - - protected slots: - void setSelectedVersion(BaseVersion::Ptr version); + void validate(BasePage* page); + void done(int result) override; private: - Ui::JavaDownloader* ui; + PageContainer* container; + QDialogButtonBox* buttons; }; } // namespace Java diff --git a/launcher/ui/java/JavaDownloader.cpp b/launcher/ui/java/JavaDownloader.cpp deleted file mode 100644 index 24918dd76..000000000 --- a/launcher/ui/java/JavaDownloader.cpp +++ /dev/null @@ -1,110 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (c) 2024 Trial97 - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include "JavaDownloader.h" - -#include - -#include - -#include "Application.h" -#include "BaseVersionList.h" -#include "FileSystem.h" -#include "QObjectPtr.h" -#include "SysInfo.h" - -#include "java/JavaMetadata.h" -#include "java/download/ArchiveDownloadTask.h" -#include "java/download/ManifestDownloadTask.h" - -#include "meta/Index.h" -#include "meta/Version.h" - -#include "meta/VersionList.h" -#include "ui/dialogs/ProgressDialog.h" -#include "ui/java/VersionList.h" -#include "ui_JavaDownloader.h" - -namespace Java { - -Downloader::Downloader(QWidget* parent) : QDialog(parent), ui(new Ui::JavaDownloader) -{ - ui->setupUi(this); - auto versionList = APPLICATION->metadataIndex()->get("net.minecraft.java"); - versionList->setProvidedRoles({ BaseVersionList::VersionRole, BaseVersionList::RecommendedRole, BaseVersionList::VersionPointerRole }); - ui->majorVersionSelect->initialize(versionList.get()); - ui->majorVersionSelect->selectCurrent(); - ui->majorVersionSelect->setEmptyString(tr("No java versions are currently available in the meta.")); - ui->majorVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); - - ui->javaVersionSelect->setEmptyString(tr("No java versions are currently available for your OS.")); - ui->javaVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); - - ui->buttonBox->button(QDialogButtonBox::Reset)->setText(tr("Refresh")); - ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Download")); - - connect(ui->majorVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &Downloader::setSelectedVersion); - auto reset = ui->buttonBox->button(QDialogButtonBox::Reset); - connect(reset, &QPushButton::clicked, this, &Downloader::refresh); -} - -Downloader::~Downloader() -{ - delete ui; -} - -void Downloader::setSelectedVersion(BaseVersion::Ptr version) -{ - auto dcast = std::dynamic_pointer_cast(version); - if (!dcast) { - return; - } - ui->javaVersionSelect->initialize(new Java::VersionList(dcast, this)); - ui->javaVersionSelect->selectCurrent(); -} - -void Downloader::accept() -{ - auto meta = std::dynamic_pointer_cast(ui->javaVersionSelect->selectedVersion()); - if (!meta) { - return; - } - Task::Ptr task; - auto final_path = FS::PathCombine(APPLICATION->javaPath(), meta->m_name); - switch (meta->downloadType) { - case Java::DownloadType::Manifest: - task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); - break; - case Java::DownloadType::Archive: - task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); - break; - } - auto deletePath = [final_path] { FS::deletePath(final_path); }; - connect(task.get(), &Task::failed, this, deletePath); - connect(task.get(), &Task::aborted, this, deletePath); - ProgressDialog pg(this); - pg.setSkipButton(true, tr("Abort")); - pg.execWithTask(task.get()); - QDialog::accept(); -} - -void Downloader::refresh() -{ - ui->majorVersionSelect->loadList(); -} -} // namespace Java diff --git a/launcher/ui/java/JavaDownloader.ui b/launcher/ui/java/JavaDownloader.ui deleted file mode 100644 index 3f6a8adc6..000000000 --- a/launcher/ui/java/JavaDownloader.ui +++ /dev/null @@ -1,100 +0,0 @@ - - - JavaDownloader - - - - 0 - 0 - 821 - 593 - - - - Dialog - - - - - - - - Major - - - - - - - - - - - - Runtime - - - - - - - - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset - - - - - - - - VersionSelectWidget - QWidget -
ui/widgets/VersionSelectWidget.h
- 1 -
-
- - - - buttonBox - accepted() - JavaDownloader - accept() - - - 257 - 583 - - - 157 - 274 - - - - - buttonBox - rejected() - JavaDownloader - reject() - - - 325 - 583 - - - 286 - 274 - - - - -
diff --git a/launcher/ui/java/VersionList.cpp b/launcher/ui/java/VersionList.cpp index dc454f264..78448ddaf 100644 --- a/launcher/ui/java/VersionList.cpp +++ b/launcher/ui/java/VersionList.cpp @@ -75,11 +75,9 @@ QVariant VersionList::data(const QModelIndex& index, int role) const case VersionRole: return version->version.toString(); case RecommendedRole: - return version->recommended; + return false; // do not recommend any version case JavaNameRole: return version->name(); - case JavaVendorRole: - return version->vendor; case TypeRole: return version->packageType; case Meta::VersionList::TimeRole: @@ -91,8 +89,7 @@ QVariant VersionList::data(const QModelIndex& index, int role) const BaseVersionList::RoleList VersionList::providesRoles() const { - return { VersionPointerRole, VersionIdRole, VersionRole, RecommendedRole, - JavaNameRole, JavaVendorRole, TypeRole, Meta::VersionList::TimeRole }; + return { VersionPointerRole, VersionIdRole, VersionRole, RecommendedRole, JavaNameRole, TypeRole, Meta::VersionList::TimeRole }; } bool sortJavas(BaseVersion::Ptr left, BaseVersion::Ptr right) @@ -109,11 +106,12 @@ void VersionList::sortVersions() QString versionStr = SysInfo::getSupportedJavaArchitecture(); beginResetModel(); auto runtimes = m_version->data()->runtimes; - if (!versionStr.isEmpty() && !runtimes.isEmpty() && runtimes.contains(versionStr)) { - m_vlist = runtimes.value(versionStr); + m_vlist = {}; + if (!versionStr.isEmpty() && !runtimes.isEmpty()) { + std::copy_if(runtimes.begin(), runtimes.end(), std::back_inserter(m_vlist), + [versionStr](Java::MetadataPtr val) { return val->runtimeOS == versionStr; }); std::sort(m_vlist.begin(), m_vlist.end(), sortJavas); } else { - m_vlist = {}; qWarning() << "No Java versions found for your operating system." << SysInfo::currentSystem() << " " << SysInfo::useQTForArch(); } endResetModel(); diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 0276daed5..41a666cf2 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -39,7 +39,7 @@ #include "JavaCommon.h" #include "java/JavaInstall.h" #include "ui/dialogs/CustomMessageBox.h" -#include "ui/java/JavaDownloader.h" +#include "ui/java/InstallJavaDialog.h" #include "ui_JavaPage.h" #include @@ -201,7 +201,7 @@ void JavaPage::on_javaTestBtn_clicked() void JavaPage::on_javaDownloadBtn_clicked() { - auto jdialog = new Java::Downloader(this); + auto jdialog = new Java::InstallDialog({}, this); jdialog->exec(); ui->managedJavaList->loadList(); } diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 0b731e64f..c248a47f7 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -37,7 +37,7 @@ #include "InstanceSettingsPage.h" #include "ui/dialogs/CustomMessageBox.h" -#include "ui/java/JavaDownloader.h" +#include "ui/java/InstallJavaDialog.h" #include "ui_InstanceSettingsPage.h" #include @@ -394,7 +394,7 @@ void InstanceSettingsPage::loadSettings() void InstanceSettingsPage::on_javaDownloadBtn_clicked() { - auto jdialog = new Java::Downloader(this); + auto jdialog = new Java::InstallDialog({}, this); jdialog->exec(); } diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 866d4c182..e2e498067 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -21,7 +21,7 @@ #include "java/JavaUtils.h" #include "ui/dialogs/CustomMessageBox.h" -#include "ui/java/JavaDownloader.h" +#include "ui/java/InstallJavaDialog.h" #include "ui/widgets/VersionSelectWidget.h" #include "Application.h" @@ -351,7 +351,7 @@ void JavaSettingsWidget::on_javaBrowseBtn_clicked() void JavaSettingsWidget::on_javaDownloadBtn_clicked() { - auto jdialog = new Java::Downloader(this); + auto jdialog = new Java::InstallDialog({}, this); jdialog->exec(); } From 5f8269f5e1ac41b29ed386e1a675e972c8d5624e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 20 Mar 2024 00:29:46 +0200 Subject: [PATCH 068/616] Small class rename Signed-off-by: Trial97 --- launcher/ui/java/InstallJavaDialog.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index 054e5cece..40616aafe 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -34,11 +34,11 @@ #include "ui/widgets/PageContainer.h" #include "ui/widgets/VersionSelectWidget.h" -class InstallLoaderPage : public QWidget, public BasePage { +class InstallJavaPage : public QWidget, public BasePage { public: Q_OBJECT public: - explicit InstallLoaderPage(const QString& id, const QString& iconName, const QString& name, QWidget* parent = nullptr) + explicit InstallJavaPage(const QString& id, const QString& iconName, const QString& name, QWidget* parent = nullptr) : QWidget(parent), uid(id), iconName(iconName), name(name) { setObjectName(QStringLiteral("VersionSelectWidget")); @@ -56,12 +56,12 @@ class InstallLoaderPage : public QWidget, public BasePage { javaVersionSelect->setEmptyString(tr("No java versions are currently available for your OS.")); javaVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); horizontalLayout->addWidget(javaVersionSelect, 4); - connect(majorVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallLoaderPage::setSelectedVersion); - connect(javaVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallLoaderPage::selectedVersionChanged); + connect(majorVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallJavaPage::setSelectedVersion); + connect(javaVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallJavaPage::selectedVersionChanged); QMetaObject::connectSlotsByName(this); } - ~InstallLoaderPage() + ~InstallJavaPage() { delete horizontalLayout; delete majorVersionSelect; @@ -129,9 +129,9 @@ class InstallLoaderPage : public QWidget, public BasePage { VersionSelectWidget* javaVersionSelect = nullptr; }; -static InstallLoaderPage* pageCast(BasePage* page) +static InstallJavaPage* pageCast(BasePage* page) { - auto result = dynamic_cast(page); + auto result = dynamic_cast(page); Q_ASSERT(result != nullptr); return result; } @@ -168,7 +168,7 @@ InstallDialog::InstallDialog(const QString& uid, QWidget* parent) if (page->id() == uid) container->selectPage(page->id()); - connect(pageCast(page), &InstallLoaderPage::selectedVersionChanged, this, [this, page] { + connect(pageCast(page), &InstallJavaPage::selectedVersionChanged, this, [this, page] { if (page->id() == container->selectedPage()->id()) validate(container->selectedPage()); }); @@ -182,11 +182,11 @@ QList InstallDialog::getPages() { return { // NeoForge - new InstallLoaderPage("net.minecraft.java", "", tr("Mojang")), + new InstallJavaPage("net.minecraft.java", "", tr("Mojang")), // Forge - new InstallLoaderPage("net.adoptium.java", "", tr("Adoptium")), + new InstallJavaPage("net.adoptium.java", "", tr("Adoptium")), // Fabric - new InstallLoaderPage("com.azul.java", "", tr("Azul")), + new InstallJavaPage("com.azul.java", "", tr("Azul")), }; } From 703470e57d615b1bb1998a253865c8fe7fadcccd Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 20 Mar 2024 08:24:40 +0200 Subject: [PATCH 069/616] Hopefully fix codeql Signed-off-by: Trial97 --- launcher/ui/java/InstallJavaDialog.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/java/InstallJavaDialog.h b/launcher/ui/java/InstallJavaDialog.h index e228adf21..c98c1deae 100644 --- a/launcher/ui/java/InstallJavaDialog.h +++ b/launcher/ui/java/InstallJavaDialog.h @@ -27,7 +27,7 @@ class PackProfile; class QDialogButtonBox; namespace Java { -class InstallDialog final : public QDialog, protected BasePageProvider { +class InstallDialog final : public QDialog, public BasePageProvider { Q_OBJECT public: From 1c809f0fb1ef477d0315a7d1af174852b3b831e8 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 20 Mar 2024 17:39:10 +0200 Subject: [PATCH 070/616] Added more logs for auto java install Signed-off-by: Trial97 --- launcher/minecraft/launch/AutoInstallJava.cpp | 19 ++++++++++++++++++- launcher/ui/java/InstallJavaDialog.cpp | 1 + launcher/ui/java/InstallJavaDialog.h | 2 +- launcher/ui/pages/global/JavaPage.cpp | 5 ++--- launcher/ui/pages/global/JavaPage.ui | 8 -------- 5 files changed, 22 insertions(+), 13 deletions(-) diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index 3ae6ffa88..1dc91003f 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -91,7 +91,21 @@ void AutoInstallJava::executeTask() emit progressReportingRequest(); return; } + if (m_supported_arch.isEmpty()) { + emit logLine(tr("Your system(%1 %2) is not compatible with auto java download. Using the default java path.") + .arg(SysInfo::currentSystem(), SysInfo::useQTForArch()), + MessageLevel::Warning); + emitSucceeded(); + return; + } auto wantedJavaName = packProfile->getProfile()->getCompatibleJavaName(); + if (wantedJavaName.isEmpty()) { + emit logLine(tr("Your meta informtation is old or doesn't have the information necesary to determine what java should be used. " + "Using the default java path."), + MessageLevel::Warning); + emitSucceeded(); + return; + } QDir javaDir(APPLICATION->javaPath()); auto wantedJavaPath = javaDir.absoluteFilePath(wantedJavaName); if (QFileInfo::exists(wantedJavaPath)) { @@ -136,7 +150,8 @@ void AutoInstallJava::setJavaPathFromPartial() if (QFileInfo::exists(finalPath)) { setJavaPath(finalPath); } else { - emit logLine(tr("No compatible java version was found. Using the default one."), MessageLevel::Warning); + emit logLine(tr("No compatible java version was found(the binary file doesn't exists). Using the default one."), + MessageLevel::Warning); emitSucceeded(); } return; @@ -188,6 +203,8 @@ void AutoInstallJava::tryNextMajorJava() auto wantedJavaName = packProfile->getProfile()->getCompatibleJavaName(); auto majorJavaVersions = packProfile->getProfile()->getCompatibleJavaMajors(); if (m_majorJavaVersionIndex >= majorJavaVersions.length()) { + emit logLine(tr("No Java versions found for your operating system: %1 %2").arg(SysInfo::currentSystem(), SysInfo::useQTForArch()), + MessageLevel::Warning); emit logLine(tr("No compatible java version was found. Using the default one."), MessageLevel::Warning); emitSucceeded(); return; diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index 40616aafe..874fc9133 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -72,6 +72,7 @@ class InstallJavaPage : public QWidget, public BasePage { void initialize(Meta::VersionList::Ptr vlist) { vlist->setProvidedRoles({ BaseVersionList::VersionRole, BaseVersionList::RecommendedRole, BaseVersionList::VersionPointerRole }); + vlist->sort(1); majorVersionSelect->initialize(vlist.get()); } diff --git a/launcher/ui/java/InstallJavaDialog.h b/launcher/ui/java/InstallJavaDialog.h index c98c1deae..525e750aa 100644 --- a/launcher/ui/java/InstallJavaDialog.h +++ b/launcher/ui/java/InstallJavaDialog.h @@ -27,7 +27,7 @@ class PackProfile; class QDialogButtonBox; namespace Java { -class InstallDialog final : public QDialog, public BasePageProvider { +class InstallDialog final : public QDialog, private BasePageProvider { Q_OBJECT public: diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 41a666cf2..6d8b95c24 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -66,8 +66,8 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { ui->managedJavaList->initialize(new JavaInstallList(this, true)); ui->managedJavaList->selectCurrent(); - ui->managedJavaList->setEmptyString(tr("No java versions are currently available in the meta")); - ui->managedJavaList->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); + ui->managedJavaList->setEmptyString(tr("No managed java versions are installed")); + ui->managedJavaList->setEmptyErrorString(tr("Couldn't load the managed java list!")); connect(ui->autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] { ui->autodownloadCheckBox->setEnabled(ui->autodetectJavaCheckBox->isChecked()); if (!ui->autodetectJavaCheckBox->isChecked()) @@ -75,7 +75,6 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) }); } else { ui->autodownloadCheckBox->setHidden(true); - ui->javaDownloadBtn->setHidden(true); ui->tabWidget->tabBar()->hide(); } diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index dc1668ee3..c8f62e075 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -178,13 +178,6 @@ - - - - Download Java - - - @@ -424,7 +417,6 @@ permGenSpinBox javaPathTextBox javaBrowseBtn - javaDownloadBtn javaDetectBtn javaTestBtn skipCompatibilityCheckbox From ab7fc2e46cd1ebe3d29436c8939de57d681a24a2 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 21 Mar 2024 00:42:04 +0200 Subject: [PATCH 071/616] Fixed archive java download Signed-off-by: Trial97 --- launcher/MMCZip.cpp | 4 ++++ launcher/java/download/ArchiveDownloadTask.cpp | 8 ++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/launcher/MMCZip.cpp b/launcher/MMCZip.cpp index 265eb8b7a..33f5f88fc 100644 --- a/launcher/MMCZip.cpp +++ b/launcher/MMCZip.cpp @@ -510,6 +510,10 @@ bool ExportToZipTask::abort() void ExtractZipTask::executeTask() { + if (!m_input->isOpen() && !m_input->open(QuaZip::mdUnzip)) { + emitFailed(tr("Unable to open supplied zip file.")); + return; + } m_zip_future = QtConcurrent::run(QThreadPool::globalInstance(), [this]() { return extractZip(); }); connect(&m_zip_watcher, &QFutureWatcher::finished, this, &ExtractZipTask::finish); m_zip_watcher.setFuture(m_zip_future); diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index 34f60260e..d62d4d8e2 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -35,7 +35,7 @@ void ArchiveDownloadTask::executeTask() // JRE found ! download the zip setStatus(tr("Downloading Java")); - MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("java", m_url.toLocalFile()); + MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("java", m_url.fileName()); auto download = makeShared(QString("JRE::DownloadJava"), APPLICATION->network()); auto action = Net::Download::makeCached(m_url, entry); @@ -70,12 +70,16 @@ void ArchiveDownloadTask::extractJava(QString input) { setStatus(tr("Extracting java")); auto zip = std::make_shared(input); + if (!zip->open(QuaZip::mdUnzip)) { + emitFailed(tr("Unable to open supplied zip file.")); + return; + } auto files = zip->getFileNameList(); if (files.isEmpty()) { emitFailed("Empty archive"); return; } - auto zipTask = makeShared(input, m_final_path, files[0]); + auto zipTask = makeShared(zip, m_final_path, files[0]); auto progressStep = std::make_shared(); connect(zipTask.get(), &Task::finished, this, [this, progressStep] { From 1a6dfd04d66edb667f2ceb6646620b219dc17daf Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 21 Mar 2024 19:46:57 +0200 Subject: [PATCH 072/616] Made tar.gz parser Signed-off-by: Trial97 --- launcher/Application.cpp | 1 + launcher/BaseVersionList.cpp | 9 + launcher/BaseVersionList.h | 1 + launcher/CMakeLists.txt | 2 + launcher/FileSystem.cpp | 3 + launcher/Untar.cpp | 262 ++++++++++++++++++ launcher/Untar.h | 46 +++ launcher/VersionProxyModel.cpp | 9 + launcher/VersionProxyModel.h | 2 +- .../java/download/ArchiveDownloadTask.cpp | 23 ++ launcher/meta/VersionList.cpp | 7 + .../minecraft/launch/VerifyJavaInstall.cpp | 1 - launcher/ui/java/InstallJavaDialog.cpp | 12 +- launcher/ui/java/VersionList.cpp | 7 + launcher/ui/widgets/JavaSettingsWidget.cpp | 2 +- 15 files changed, 381 insertions(+), 6 deletions(-) create mode 100644 launcher/Untar.cpp create mode 100644 launcher/Untar.h diff --git a/launcher/Application.cpp b/launcher/Application.cpp index b0929a0ae..f7fa3aedd 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -869,6 +869,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_metacache->addBase("translations", QDir("translations").absolutePath()); m_metacache->addBase("icons", QDir("cache/icons").absolutePath()); m_metacache->addBase("meta", QDir("meta").absolutePath()); + m_metacache->addBase("java", QDir("cache/java").absolutePath()); m_metacache->Load(); qDebug() << "<> Cache initialized."; } diff --git a/launcher/BaseVersionList.cpp b/launcher/BaseVersionList.cpp index afee8388a..22077c962 100644 --- a/launcher/BaseVersionList.cpp +++ b/launcher/BaseVersionList.cpp @@ -78,6 +78,14 @@ QVariant BaseVersionList::data(const QModelIndex& index, int role) const case TypeRole: return version->typeString(); + case JavaMajorRole: { + auto major = version->name(); + if (major.startsWith("java")) { + major = "Java " + major.mid(4); + } + return major; + } + default: return QVariant(); } @@ -112,5 +120,6 @@ QHash BaseVersionList::roleNames() const roles.insert(PathRole, "path"); roles.insert(JavaNameRole, "javaName"); roles.insert(CPUArchitectureRole, "architecture"); + roles.insert(JavaMajorRole, "javaMajor"); return roles; } diff --git a/launcher/BaseVersionList.h b/launcher/BaseVersionList.h index bc37e9e53..673d13562 100644 --- a/launcher/BaseVersionList.h +++ b/launcher/BaseVersionList.h @@ -49,6 +49,7 @@ class BaseVersionList : public QAbstractListModel { BranchRole, PathRole, JavaNameRole, + JavaMajorRole, CPUArchitectureRole, SortRole }; diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index dd493682e..4f8ab598e 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -24,6 +24,8 @@ set(CORE_SOURCES NullInstance.h MMCZip.h MMCZip.cpp + Untar.h + Untar.cpp StringUtils.h StringUtils.cpp QVariantUtils.h diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp index f9be91a2a..8320dfe40 100644 --- a/launcher/FileSystem.cpp +++ b/launcher/FileSystem.cpp @@ -276,6 +276,9 @@ bool ensureFolderPathExists(const QFileInfo folderPath) { QDir dir; QString ensuredPath = folderPath.filePath(); + if (folderPath.exists()) + return true; + bool success = dir.mkpath(ensuredPath); return success; } diff --git a/launcher/Untar.cpp b/launcher/Untar.cpp new file mode 100644 index 000000000..521c504a6 --- /dev/null +++ b/launcher/Untar.cpp @@ -0,0 +1,262 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023-2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#include "Untar.h" +#include +#include +#include +#include +#include +#include +#include +#include "FileSystem.h" + +// adaptation of the: +// - https://github.com/madler/zlib/blob/develop/contrib/untgz/untgz.c +// - https://en.wikipedia.org/wiki/Tar_(computing) +// - https://github.com/euroelessar/cutereader/blob/master/karchive/src/ktar.cpp + +#define BLOCKSIZE 512 +#define SHORTNAMESIZE 100 + +enum class TypeFlag : char { + Regular = '0', // regular file + ARegular = 0, // regular file + Link = '1', // link + Symlink = '2', // reserved + Character = '3', // character special + Block = '4', // block special + Directory = '5', // directory + FIFO = '6', // FIFO special + Contiguous = '7', // reserved + // Posix stuff + GlobalPosixHeader = 'g', + ExtendedPosixHeader = 'x', + // 'A'– 'Z' Vendor specific extensions(POSIX .1 - 1988) + // GNU + GNULongLink = 'K', /* long link name */ + GNULongName = 'L', /* long file name */ +}; + +struct Header { /* byte offset */ + char name[100]; /* 0 */ + char mode[8]; /* 100 */ + char uid[8]; /* 108 */ + char gid[8]; /* 116 */ + char size[12]; /* 124 */ + char mtime[12]; /* 136 */ + char chksum[8]; /* 148 */ + TypeFlag typeflag; /* 156 */ + char linkname[100]; /* 157 */ + char magic[6]; /* 257 */ + char version[2]; /* 263 */ + char uname[32]; /* 265 */ + char gname[32]; /* 297 */ + char devmajor[8]; /* 329 */ + char devminor[8]; /* 337 */ + char prefix[155]; /* 345 */ + /* 500 */ +}; + +union Buffer { + char buffer[BLOCKSIZE]; + struct Header header; +}; + +bool readLonglink(QIODevice* in, Buffer buffer, QByteArray& longlink) +{ + qint64 n = 0; + qint64 size = strtoll(buffer.header.size, NULL, 8); + size--; // ignore trailing null + if (errno == ERANGE) { + qCritical() << "The filename size can't be read"; + return false; + } + if (size < 0) { + qCritical() << "The filename size is negative"; + return false; + } + longlink.resize(size + (BLOCKSIZE - size % BLOCKSIZE)); // make the size divisible by BLOCKSIZE + for (qint64 offset = 0; offset < longlink.size(); offset += BLOCKSIZE) { + n = in->read(longlink.data() + offset, BLOCKSIZE); + if (n != BLOCKSIZE) { + qCritical() << "The expected blocksize was not respected for the name"; + return false; + } + } + longlink.truncate(qstrlen(longlink.constData())); + return true; +} + +bool Tar::extract(QIODevice* in, QString dst) +{ + Buffer buffer; + QString name, symlink, firstFolderName; + bool doNotReset = false; + while (true) { + auto n = in->read(buffer.buffer, BLOCKSIZE); + if (n != BLOCKSIZE) { // allways expect complete blocks + qCritical() << "The expected blocksize was not respected"; + return false; + } + if (buffer.header.name[0] == 0) { // end of archive + return true; + } + int mode = strtol(buffer.header.mode, NULL, 8) | QFile::ReadUser | QFile::WriteUser; // hack to ensure write and read permisions + if (errno == ERANGE) { + qCritical() << "The file mode can't be read"; + return false; + } + // there are names that are exactly 100 bytes long + // and neither longlink nor \0 terminated (bug:101472) + if (name.isEmpty()) { + name = QFile::decodeName(QByteArray(buffer.header.name, qstrnlen(buffer.header.name, 100))); + if (!firstFolderName.isEmpty() && name.startsWith(firstFolderName)) { + name = name.mid(firstFolderName.size()); + } + } + if (symlink.isEmpty()) + symlink = QFile::decodeName(QByteArray(buffer.header.linkname, qstrnlen(buffer.header.linkname, 100))); + switch (buffer.header.typeflag) { + case TypeFlag::Regular: + /* fallthrough */ + case TypeFlag::ARegular: { + auto fileName = FS::PathCombine(dst, name); + if (!FS::ensureFilePathExists(fileName)) { + qCritical() << "Can't ensure the file path to exist: " << fileName; + return false; + } + QFile out(fileName); + if (!out.open(QFile::WriteOnly, QFile::Permission(mode))) { + qCritical() << "Can't open file:" << fileName; + return false; + } + qint64 size = strtoll(buffer.header.size, NULL, 8); + if (errno == ERANGE) { + qCritical() << "The file size can't be read"; + return false; + } + while (size > 0) { + QByteArray tmp(BLOCKSIZE, 0); + n = in->read(tmp.data(), BLOCKSIZE); + if (n != BLOCKSIZE) { + qCritical() << "The expected blocksize was not respected when reading file"; + return false; + } + tmp.truncate(qMin(BLOCKSIZE, size)); + out.write(tmp); + size -= BLOCKSIZE; + } + QFile::setPermissions(fileName, QFile::Permissions(mode)); + break; + } + case TypeFlag::Directory: { + if (firstFolderName.isEmpty()) { + firstFolderName = name; + break; + } + auto folderPath = FS::PathCombine(dst, name); + if (!FS::ensureFolderPathExists(folderPath)) { + qCritical() << "Can't ensure that folder exists: " << folderPath; + return false; + } + break; + } + case TypeFlag::GNULongLink: { + doNotReset = true; + QByteArray longlink; + if (readLonglink(in, buffer, longlink)) { + symlink = QFile::decodeName(longlink.constData()); + } else { + qCritical() << "Failed to read long link"; + return false; + } + break; + } + case TypeFlag::GNULongName: { + doNotReset = true; + QByteArray longlink; + if (readLonglink(in, buffer, longlink)) { + name = QFile::decodeName(longlink.constData()); + } else { + qCritical() << "Failed to read long name"; + return false; + } + break; + } + case TypeFlag::Link: + /* fallthrough */ + case TypeFlag::Symlink: { + auto fileName = FS::PathCombine(dst, name); + if (!FS::create_link(FS::PathCombine(QFileInfo(fileName).path(), symlink), fileName)()) { // do not use symlinks + qCritical() << "Can't create link for:" << fileName << " to:" << FS::PathCombine(QFileInfo(fileName).path(), symlink); + return false; + } + FS::ensureFilePathExists(fileName); + QFile::setPermissions(fileName, QFile::Permissions(mode)); + break; + } + case TypeFlag::Character: + /* fallthrough */ + case TypeFlag::Block: + /* fallthrough */ + case TypeFlag::FIFO: + /* fallthrough */ + case TypeFlag::Contiguous: + /* fallthrough */ + case TypeFlag::GlobalPosixHeader: + /* fallthrough */ + case TypeFlag::ExtendedPosixHeader: + /* fallthrough */ + default: + break; + } + if (!doNotReset) { + name.truncate(0); + symlink.truncate(0); + } + doNotReset = false; + } + return true; +} + +bool GZTar::extract(QString src, QString dst) +{ + QuaGzipFile a(src); + if (!a.open(QIODevice::ReadOnly)) { + qCritical() << "Can't open tar file:" << src; + return false; + } + return Tar::extract(&a, dst); +} \ No newline at end of file diff --git a/launcher/Untar.h b/launcher/Untar.h new file mode 100644 index 000000000..54010e085 --- /dev/null +++ b/launcher/Untar.h @@ -0,0 +1,46 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023-2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +#pragma once +#include + +// this is a hack used for the java downloader (feel free to remove it in favor of a library) +// both extract functions will extract the first folder inside dest(disregarding the prefix) +namespace Tar { +bool extract(QIODevice* in, QString dst); +}; + +namespace GZTar { +bool extract(QString src, QString dst); +}; \ No newline at end of file diff --git a/launcher/VersionProxyModel.cpp b/launcher/VersionProxyModel.cpp index 070e952a4..62cf4c221 100644 --- a/launcher/VersionProxyModel.cpp +++ b/launcher/VersionProxyModel.cpp @@ -120,6 +120,8 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, return tr("Path"); case JavaName: return tr("Java Name"); + case JavaMajor: + return tr("Major"); case Time: return tr("Released"); } @@ -139,6 +141,8 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, return tr("Filesystem path to this version"); case JavaName: return tr("The alternative name of the java version"); + case JavaMajor: + return tr("The java major version"); case Time: return tr("Release date of this version"); } @@ -175,6 +179,8 @@ QVariant VersionProxyModel::data(const QModelIndex& index, int role) const return sourceModel()->data(parentIndex, BaseVersionList::PathRole); case JavaName: return sourceModel()->data(parentIndex, BaseVersionList::JavaNameRole); + case JavaMajor: + return sourceModel()->data(parentIndex, BaseVersionList::JavaMajorRole); case Time: return sourceModel()->data(parentIndex, Meta::VersionList::TimeRole).toDate(); default: @@ -323,6 +329,9 @@ void VersionProxyModel::setSourceModel(QAbstractItemModel* replacingRaw) if (roles.contains(BaseVersionList::JavaNameRole)) { m_columns.push_back(JavaName); } + if (roles.contains(BaseVersionList::JavaMajorRole)) { + m_columns.push_back(JavaMajor); + } if (roles.contains(Meta::VersionList::TimeRole)) { m_columns.push_back(Time); } diff --git a/launcher/VersionProxyModel.h b/launcher/VersionProxyModel.h index cb55b7f14..8aea25795 100644 --- a/launcher/VersionProxyModel.h +++ b/launcher/VersionProxyModel.h @@ -9,7 +9,7 @@ class VersionFilterModel; class VersionProxyModel : public QAbstractProxyModel { Q_OBJECT public: - enum Column { Name, ParentVersion, Branch, Type, CPUArchitecture, Path, Time, JavaName }; + enum Column { Name, ParentVersion, Branch, Type, CPUArchitecture, Path, Time, JavaName, JavaMajor }; using FilterMap = QHash>; public: diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index d62d4d8e2..358860610 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -21,6 +21,7 @@ #include "MMCZip.h" #include "Application.h" +#include "Untar.h" #include "net/ChecksumValidator.h" #include "net/NetJob.h" #include "tasks/Task.h" @@ -69,6 +70,28 @@ void ArchiveDownloadTask::executeTask() void ArchiveDownloadTask::extractJava(QString input) { setStatus(tr("Extracting java")); + if (input.endsWith("tar")) { + setStatus(tr("Extracting java(the progress will not be reported for tar)")); + QFile in(input); + if (!in.open(QFile::ReadOnly)) { + emitFailed(tr("Unable to open supplied tar file.")); + return; + } + if (!Tar::extract(&in, QDir(m_final_path).absolutePath())) { + emitFailed(tr("Unable to extract supplied tar file.")); + return; + } + emitSucceeded(); + return; + } else if (input.endsWith("tar.gz") || input.endsWith("taz") || input.endsWith("tgz")) { + setStatus(tr("Extracting java(the progress will not be reported for tar)")); + if (!GZTar::extract(input, QDir(m_final_path).absolutePath())) { + emitFailed(tr("Unable to extract supplied tar file.")); + return; + } + emitSucceeded(); + return; + } auto zip = std::make_shared(input); if (!zip->open(QuaZip::mdUnzip)) { emitFailed(tr("Unable to open supplied zip file.")); diff --git a/launcher/meta/VersionList.cpp b/launcher/meta/VersionList.cpp index 76b914b6a..66412d6a4 100644 --- a/launcher/meta/VersionList.cpp +++ b/launcher/meta/VersionList.cpp @@ -92,6 +92,13 @@ QVariant VersionList::data(const QModelIndex& index, int role) const return QVariant::fromValue(version); case RecommendedRole: return version->isRecommended(); + case JavaMajorRole: { + auto major = version->version(); + if (major.startsWith("java")) { + major = "Java " + major.mid(4); + } + return major; + } // FIXME: this should be determined in whatever view/proxy is used... // case LatestRole: return version == getLatestStable(); default: diff --git a/launcher/minecraft/launch/VerifyJavaInstall.cpp b/launcher/minecraft/launch/VerifyJavaInstall.cpp index f26b850eb..5f8b35b02 100644 --- a/launcher/minecraft/launch/VerifyJavaInstall.cpp +++ b/launcher/minecraft/launch/VerifyJavaInstall.cpp @@ -54,7 +54,6 @@ void VerifyJavaInstall::executeTask() auto javaArchitecture = settings->get("JavaArchitecture").toString(); auto maxMemAlloc = settings->get("MaxMemAlloc").toInt(); - emit logLine(tr("Java architecture is x%1.").arg(javaArchitecture), MessageLevel::Info); if (javaArchitecture == "32" && maxMemAlloc > 2048) { emit logLine(tr("Max memory allocation exceeds the supported value.\n" "The selected java is 32-bit and doesn't support more than 2048MiB of RAM.\n" diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index 874fc9133..78de3e20a 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -19,16 +19,19 @@ #include "InstallJavaDialog.h" #include +#include #include #include #include #include "Application.h" +#include "BaseVersionList.h" #include "FileSystem.h" #include "java/download/ArchiveDownloadTask.h" #include "java/download/ManifestDownloadTask.h" #include "meta/Index.h" #include "meta/VersionList.h" +#include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/ProgressDialog.h" #include "ui/java/VersionList.h" #include "ui/widgets/PageContainer.h" @@ -71,8 +74,7 @@ class InstallJavaPage : public QWidget, public BasePage { //! loads the list if needed. void initialize(Meta::VersionList::Ptr vlist) { - vlist->setProvidedRoles({ BaseVersionList::VersionRole, BaseVersionList::RecommendedRole, BaseVersionList::VersionPointerRole }); - vlist->sort(1); + vlist->setProvidedRoles({ BaseVersionList::JavaMajorRole, BaseVersionList::RecommendedRole, BaseVersionList::VersionPointerRole }); majorVersionSelect->initialize(vlist.get()); } @@ -219,7 +221,11 @@ void InstallDialog::done(int result) break; } auto deletePath = [final_path] { FS::deletePath(final_path); }; - connect(task.get(), &Task::failed, this, deletePath); + connect(task.get(), &Task::failed, this, [this, &deletePath](QString reason) { + QString error = QString("Java download failed: %1").arg(reason); + CustomMessageBox::selectable(this, tr("Error"), error, QMessageBox::Warning)->show(); + deletePath(); + }); connect(task.get(), &Task::aborted, this, deletePath); ProgressDialog pg(this); pg.setSkipButton(true, tr("Abort")); diff --git a/launcher/ui/java/VersionList.cpp b/launcher/ui/java/VersionList.cpp index 78448ddaf..5e385604d 100644 --- a/launcher/ui/java/VersionList.cpp +++ b/launcher/ui/java/VersionList.cpp @@ -78,6 +78,13 @@ QVariant VersionList::data(const QModelIndex& index, int role) const return false; // do not recommend any version case JavaNameRole: return version->name(); + case JavaMajorRole: { + auto major = version->version.toString(); + if (major.startsWith("java")) { + major = "Java " + major.mid(4); + } + return major; + } case TypeRole: return version->packageType; case Meta::VersionList::TimeRole: diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index e2e498067..1645f2b5f 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -180,7 +180,7 @@ void JavaSettingsWidget::initialize() tr("%1 can automatically download the correct Java version for each version of Minecraft..\n" "Do you want to enable Java auto-download?\n") .arg(BuildConfig.LAUNCHER_DISPLAYNAME), - QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) + QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) ->exec(); if (button == QMessageBox::Yes) { m_autodetectJavaCheckBox->setChecked(true); From 3046822272ee97a831667db1c8a222eb304c259e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 21 Mar 2024 19:53:52 +0200 Subject: [PATCH 073/616] Fixed buid Signed-off-by: Trial97 --- launcher/Untar.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/Untar.cpp b/launcher/Untar.cpp index 521c504a6..b2f05038c 100644 --- a/launcher/Untar.cpp +++ b/launcher/Untar.cpp @@ -158,10 +158,11 @@ bool Tar::extract(QIODevice* in, QString dst) return false; } QFile out(fileName); - if (!out.open(QFile::WriteOnly, QFile::Permission(mode))) { + if (!out.open(QFile::WriteOnly)) { qCritical() << "Can't open file:" << fileName; return false; } + out.setPermissions(QFile::Permissions(mode)); qint64 size = strtoll(buffer.header.size, NULL, 8); if (errno == ERANGE) { qCritical() << "The file size can't be read"; @@ -178,7 +179,6 @@ bool Tar::extract(QIODevice* in, QString dst) out.write(tmp); size -= BLOCKSIZE; } - QFile::setPermissions(fileName, QFile::Permissions(mode)); break; } case TypeFlag::Directory: { From a7029a9e53cd3d9a2371cd26c257beb898251667 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 21 Mar 2024 20:01:40 +0200 Subject: [PATCH 074/616] Fixed qMin Signed-off-by: Trial97 --- launcher/Untar.cpp | 2 +- launcher/Untar.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/launcher/Untar.cpp b/launcher/Untar.cpp index b2f05038c..bae6c5d17 100644 --- a/launcher/Untar.cpp +++ b/launcher/Untar.cpp @@ -175,7 +175,7 @@ bool Tar::extract(QIODevice* in, QString dst) qCritical() << "The expected blocksize was not respected when reading file"; return false; } - tmp.truncate(qMin(BLOCKSIZE, size)); + tmp.truncate(qMin(qint64(BLOCKSIZE), size)); out.write(tmp); size -= BLOCKSIZE; } diff --git a/launcher/Untar.h b/launcher/Untar.h index 54010e085..50e3a16e3 100644 --- a/launcher/Untar.h +++ b/launcher/Untar.h @@ -39,8 +39,8 @@ // both extract functions will extract the first folder inside dest(disregarding the prefix) namespace Tar { bool extract(QIODevice* in, QString dst); -}; +} namespace GZTar { bool extract(QString src, QString dst); -}; \ No newline at end of file +} \ No newline at end of file From 0b87e4c03b55c96966255eb8440b0c4e7b182c63 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 22 Mar 2024 12:29:15 +0200 Subject: [PATCH 075/616] Fiexed codeql warning Signed-off-by: Trial97 --- launcher/Untar.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/Untar.cpp b/launcher/Untar.cpp index bae6c5d17..1d11dfd60 100644 --- a/launcher/Untar.cpp +++ b/launcher/Untar.cpp @@ -94,7 +94,7 @@ union Buffer { struct Header header; }; -bool readLonglink(QIODevice* in, Buffer buffer, QByteArray& longlink) +bool readLonglink(QIODevice* in, Buffer& buffer, QByteArray& longlink) { qint64 n = 0; qint64 size = strtoll(buffer.header.size, NULL, 8); From c0754b80a2b8612ce2874888c0f40b41b2eac765 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 22 Mar 2024 22:17:58 +0200 Subject: [PATCH 076/616] Add resize to last column Signed-off-by: Trial97 --- launcher/ui/pages/global/JavaPage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 6d8b95c24..fda4f8705 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -65,6 +65,7 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { ui->managedJavaList->initialize(new JavaInstallList(this, true)); + ui->managedJavaList->setResizeOn(2); ui->managedJavaList->selectCurrent(); ui->managedJavaList->setEmptyString(tr("No managed java versions are installed")); ui->managedJavaList->setEmptyErrorString(tr("Couldn't load the managed java list!")); From 93f6315b16de3b2170d0263d7befcac5dcfaa01d Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Wed, 27 Mar 2024 19:34:04 +0200 Subject: [PATCH 077/616] Update CMakeLists.txt Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 40ccff595..f4298aedb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -220,7 +220,17 @@ set(Launcher_FORCE_BUNDLED_LIBS OFF CACHE BOOL "Prevent using system libraries, set(Launcher_QT_VERSION_MAJOR "6" CACHE STRING "Major Qt version to build against") # Java downloader -option(ENABLE_JAVA_DOWNLOADER "Build the java downloader feature" ON) +set(ENABLE_JAVA_DOWNLOADER_DEFAULT ON) + +# Although we recommend enabling this, we cannot guarantee binary compatibility on +# differing Linux/BSD/etc distributions. Downstream packagers should be explicitly opt-ing into this +# feature if they know it will work with their distribution. +if(UNIX AND NOT APPLE) + set(ENABLE_JAVA_DOWNLOADER_DEFAULT OFF) +endif() + +# Java downloader +option(ENABLE_JAVA_DOWNLOADER "Build the java downloader feature" ${ENABLE_JAVA_DOWNLOADER_DEFAULT}) # Native libraries if(UNIX AND APPLE) From 45028ddc6142b019d28dadd31b8c87433adea312 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 28 Mar 2024 14:58:05 +0200 Subject: [PATCH 078/616] Added java downloader to CI build Signed-off-by: Trial97 --- .github/workflows/build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9cb737df6..500aca5cb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -274,23 +274,23 @@ jobs: - name: Configure CMake (macOS) if: runner.os == 'macOS' && matrix.qt_ver == 6 run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -G Ninja - name: Configure CMake (macOS-Legacy) if: runner.os == 'macOS' && matrix.qt_ver == 5 run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DMACOSX_SPARKLE_UPDATE_PUBLIC_KEY="" -DMACOSX_SPARKLE_UPDATE_FEED_URL="" -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DMACOSX_SPARKLE_UPDATE_PUBLIC_KEY="" -DMACOSX_SPARKLE_UPDATE_FEED_URL="" -G Ninja - name: Configure CMake (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' shell: msys2 {0} run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=6 -DCMAKE_OBJDUMP=/mingw64/bin/objdump.exe -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=6 -DCMAKE_OBJDUMP=/mingw64/bin/objdump.exe -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} -G Ninja - name: Configure CMake (Windows MSVC) if: runner.os == 'Windows' && matrix.msystem == '' run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" -A${{ matrix.architecture}} -DLauncher_FORCE_BUNDLED_LIBS=ON -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" -A${{ matrix.architecture}} -DLauncher_FORCE_BUNDLED_LIBS=ON -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} # https://github.com/ccache/ccache/wiki/MS-Visual-Studio (I coudn't figure out the compiler prefix) if ("${{ env.CCACHE_VAR }}") { @@ -305,7 +305,7 @@ jobs: - name: Configure CMake (Linux) if: runner.os == 'Linux' run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -G Ninja ## # BUILD From 81874f22f74e3d254e16c3054abb28881b50d01a Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 29 Mar 2024 00:10:59 +0200 Subject: [PATCH 079/616] Fixed tar extract Signed-off-by: Trial97 --- launcher/Untar.cpp | 96 +++++++++++++++++++++++----------------------- 1 file changed, 47 insertions(+), 49 deletions(-) diff --git a/launcher/Untar.cpp b/launcher/Untar.cpp index 1d11dfd60..f1963e7aa 100644 --- a/launcher/Untar.cpp +++ b/launcher/Untar.cpp @@ -33,13 +33,11 @@ * limitations under the License. */ #include "Untar.h" -#include -#include #include #include +#include #include #include -#include #include "FileSystem.h" // adaptation of the: @@ -69,40 +67,30 @@ enum class TypeFlag : char { GNULongName = 'L', /* long file name */ }; -struct Header { /* byte offset */ - char name[100]; /* 0 */ - char mode[8]; /* 100 */ - char uid[8]; /* 108 */ - char gid[8]; /* 116 */ - char size[12]; /* 124 */ - char mtime[12]; /* 136 */ - char chksum[8]; /* 148 */ - TypeFlag typeflag; /* 156 */ - char linkname[100]; /* 157 */ - char magic[6]; /* 257 */ - char version[2]; /* 263 */ - char uname[32]; /* 265 */ - char gname[32]; /* 297 */ - char devmajor[8]; /* 329 */ - char devminor[8]; /* 337 */ - char prefix[155]; /* 345 */ - /* 500 */ -}; +// struct Header { /* byte offset */ +// char name[100]; /* 0 */ +// char mode[8]; /* 100 */ +// char uid[8]; /* 108 */ +// char gid[8]; /* 116 */ +// char size[12]; /* 124 */ +// char mtime[12]; /* 136 */ +// char chksum[8]; /* 148 */ +// TypeFlag typeflag; /* 156 */ +// char linkname[100]; /* 157 */ +// char magic[6]; /* 257 */ +// char version[2]; /* 263 */ +// char uname[32]; /* 265 */ +// char gname[32]; /* 297 */ +// char devmajor[8]; /* 329 */ +// char devminor[8]; /* 337 */ +// char prefix[155]; /* 345 */ +// /* 500 */ +// }; -union Buffer { - char buffer[BLOCKSIZE]; - struct Header header; -}; - -bool readLonglink(QIODevice* in, Buffer& buffer, QByteArray& longlink) +bool readLonglink(QIODevice* in, qint64 size, QByteArray& longlink) { qint64 n = 0; - qint64 size = strtoll(buffer.header.size, NULL, 8); size--; // ignore trailing null - if (errno == ERANGE) { - qCritical() << "The filename size can't be read"; - return false; - } if (size < 0) { qCritical() << "The filename size is negative"; return false; @@ -119,36 +107,51 @@ bool readLonglink(QIODevice* in, Buffer& buffer, QByteArray& longlink) return true; } +int getOctal(char* buffer, int maxlenght, bool* ok) +{ + return QByteArray(buffer, qstrnlen(buffer, maxlenght)).toInt(ok, 8); +} + +QString decodeName(char* name) +{ + return QFile::decodeName(QByteArray(name, qstrnlen(name, 100))); +} bool Tar::extract(QIODevice* in, QString dst) { - Buffer buffer; + char buffer[BLOCKSIZE]; QString name, symlink, firstFolderName; - bool doNotReset = false; + bool doNotReset = false, ok; while (true) { - auto n = in->read(buffer.buffer, BLOCKSIZE); + auto n = in->read(buffer, BLOCKSIZE); if (n != BLOCKSIZE) { // allways expect complete blocks qCritical() << "The expected blocksize was not respected"; return false; } - if (buffer.header.name[0] == 0) { // end of archive + if (buffer[0] == 0) { // end of archive return true; } - int mode = strtol(buffer.header.mode, NULL, 8) | QFile::ReadUser | QFile::WriteUser; // hack to ensure write and read permisions - if (errno == ERANGE) { + int mode = getOctal(buffer + 100, 8, &ok) | QFile::ReadUser | QFile::WriteUser; // hack to ensure write and read permisions + if (!ok) { qCritical() << "The file mode can't be read"; return false; } // there are names that are exactly 100 bytes long // and neither longlink nor \0 terminated (bug:101472) + if (name.isEmpty()) { - name = QFile::decodeName(QByteArray(buffer.header.name, qstrnlen(buffer.header.name, 100))); + name = decodeName(buffer); if (!firstFolderName.isEmpty() && name.startsWith(firstFolderName)) { name = name.mid(firstFolderName.size()); } } if (symlink.isEmpty()) - symlink = QFile::decodeName(QByteArray(buffer.header.linkname, qstrnlen(buffer.header.linkname, 100))); - switch (buffer.header.typeflag) { + symlink = decodeName(buffer); + qint64 size = getOctal(buffer + 124, 12, &ok); + if (!ok) { + qCritical() << "The file size can't be read"; + return false; + } + switch (TypeFlag(buffer[156])) { case TypeFlag::Regular: /* fallthrough */ case TypeFlag::ARegular: { @@ -163,11 +166,6 @@ bool Tar::extract(QIODevice* in, QString dst) return false; } out.setPermissions(QFile::Permissions(mode)); - qint64 size = strtoll(buffer.header.size, NULL, 8); - if (errno == ERANGE) { - qCritical() << "The file size can't be read"; - return false; - } while (size > 0) { QByteArray tmp(BLOCKSIZE, 0); n = in->read(tmp.data(), BLOCKSIZE); @@ -196,7 +194,7 @@ bool Tar::extract(QIODevice* in, QString dst) case TypeFlag::GNULongLink: { doNotReset = true; QByteArray longlink; - if (readLonglink(in, buffer, longlink)) { + if (readLonglink(in, size, longlink)) { symlink = QFile::decodeName(longlink.constData()); } else { qCritical() << "Failed to read long link"; @@ -207,7 +205,7 @@ bool Tar::extract(QIODevice* in, QString dst) case TypeFlag::GNULongName: { doNotReset = true; QByteArray longlink; - if (readLonglink(in, buffer, longlink)) { + if (readLonglink(in, size, longlink)) { name = QFile::decodeName(longlink.constData()); } else { qCritical() << "Failed to read long name"; From 803e26a4018d788178032b653fd06d1b8970b3a4 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 26 Apr 2024 01:40:18 +0100 Subject: [PATCH 080/616] Make actions more consistent Signed-off-by: TheKodeToad --- .../pages/instance/ExternalResourcesPage.cpp | 34 +++++++++++++------ .../ui/pages/instance/ExternalResourcesPage.h | 5 ++- .../pages/instance/ExternalResourcesPage.ui | 11 +++++- launcher/ui/pages/instance/ModFolderPage.cpp | 4 +-- launcher/ui/pages/instance/ModFolderPage.h | 2 +- .../ui/pages/instance/ResourcePackPage.cpp | 21 ++++++------ launcher/ui/pages/instance/ResourcePackPage.h | 2 +- .../ui/pages/instance/TexturePackPage.cpp | 21 ++++++------ launcher/ui/pages/instance/TexturePackPage.h | 2 +- 9 files changed, 59 insertions(+), 43 deletions(-) diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp index 2068fa6b1..a3b58f4df 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp +++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp @@ -81,15 +81,28 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared connect(ui->treeView, &ModListView::activated, this, &ExternalResourcesPage::itemActivated); auto selection_model = ui->treeView->selectionModel(); - connect(selection_model, &QItemSelectionModel::currentChanged, this, &ExternalResourcesPage::current); + + connect(selection_model, &QItemSelectionModel::currentChanged, this, [this](const QModelIndex& current, const QModelIndex& previous) { + if (!current.isValid()) { + ui->frame->clear(); + return; + } + + updateFrame(current, previous); + }); + auto updateExtra = [this]() { if (updateExtraInfo) updateExtraInfo(id(), extraHeaderInfoString()); }; + connect(selection_model, &QItemSelectionModel::selectionChanged, this, updateExtra); connect(model.get(), &ResourceFolderModel::updateFinished, this, updateExtra); - connect(ui->filterEdit, &QLineEdit::textChanged, this, &ExternalResourcesPage::filterTextChanged); + connect(selection_model, &QItemSelectionModel::selectionChanged, this, [this] { updateActions(); }); + connect(m_model.get(), &ResourceFolderModel::rowsInserted, this, [this] { updateActions(); }); + connect(m_model.get(), &ResourceFolderModel::rowsRemoved, this, [this] { updateActions(); }); + connect(m_model.get(), &ResourceFolderModel::updateFinished, this, [this] { updateActions(); }); auto viewHeader = ui->treeView->header(); viewHeader->setContextMenuPolicy(Qt::CustomContextMenu); @@ -298,23 +311,22 @@ void ExternalResourcesPage::viewFolder() DesktopServices::openPath(m_model->dir().absolutePath(), true); } -bool ExternalResourcesPage::current(const QModelIndex& current, const QModelIndex& previous) +void ExternalResourcesPage::updateActions() { - if (!current.isValid()) { - ui->frame->clear(); - return false; - } - - return onSelectionChanged(current, previous); + const bool hasSelection = ui->treeView->selectionModel()->hasSelection(); + ui->actionUpdateItem->setEnabled(!m_model->empty()); + ui->actionResetItemMetadata->setEnabled(hasSelection); + ui->actionRemoveItem->setEnabled(hasSelection); + ui->actionEnableItem->setEnabled(hasSelection); + ui->actionDisableItem->setEnabled(hasSelection); } -bool ExternalResourcesPage::onSelectionChanged(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) +void ExternalResourcesPage::updateFrame(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) { auto sourceCurrent = m_filterModel->mapToSource(current); int row = sourceCurrent.row(); Resource const& resource = m_model->at(row); ui->frame->updateWithResource(resource); - return true; } QString ExternalResourcesPage::extraHeaderInfoString() diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.h b/launcher/ui/pages/instance/ExternalResourcesPage.h index d29be0fc3..9bbd13984 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.h +++ b/launcher/ui/pages/instance/ExternalResourcesPage.h @@ -42,9 +42,8 @@ class ExternalResourcesPage : public QMainWindow, public BasePage { QMenu* createPopupMenu() override; public slots: - bool current(const QModelIndex& current, const QModelIndex& previous); - - virtual bool onSelectionChanged(const QModelIndex& current, const QModelIndex& previous); + virtual void updateActions(); + virtual void updateFrame(const QModelIndex& current, const QModelIndex& previous); protected slots: void itemActivated(const QModelIndex& index); diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.ui b/launcher/ui/pages/instance/ExternalResourcesPage.ui index 2b4a47b9d..c671efaf8 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.ui +++ b/launcher/ui/pages/instance/ExternalResourcesPage.ui @@ -102,6 +102,9 @@ + + false + &Remove @@ -110,6 +113,9 @@ + + false + &Enable @@ -118,6 +124,9 @@ + + false + &Disable @@ -154,7 +163,7 @@ - true + false Check for &Updates diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index 5b10a38df..e647120c2 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -106,14 +106,12 @@ bool ModFolderPage::shouldDisplay() const return true; } -bool ModFolderPage::onSelectionChanged(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) +void ModFolderPage::updateFrame(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) { auto sourceCurrent = m_filterModel->mapToSource(current); int row = sourceCurrent.row(); const Mod& mod = m_model->at(row); ui->frame->updateWithMod(mod); - - return true; } void ModFolderPage::removeItems(const QItemSelection& selection) diff --git a/launcher/ui/pages/instance/ModFolderPage.h b/launcher/ui/pages/instance/ModFolderPage.h index 455db33cb..4fac80141 100644 --- a/launcher/ui/pages/instance/ModFolderPage.h +++ b/launcher/ui/pages/instance/ModFolderPage.h @@ -57,7 +57,7 @@ class ModFolderPage : public ExternalResourcesPage { virtual bool shouldDisplay() const override; public slots: - bool onSelectionChanged(const QModelIndex& current, const QModelIndex& previous) override; + void updateFrame(const QModelIndex& current, const QModelIndex& previous) override; private slots: void removeItems(const QItemSelection& selection) override; diff --git a/launcher/ui/pages/instance/ResourcePackPage.cpp b/launcher/ui/pages/instance/ResourcePackPage.cpp index e51ebafac..d03511ca4 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.cpp +++ b/launcher/ui/pages/instance/ResourcePackPage.cpp @@ -69,14 +69,12 @@ ResourcePackPage::ResourcePackPage(MinecraftInstance* instance, std::shared_ptr< ui->actionUpdateItem->setMenu(updateMenu); } -bool ResourcePackPage::onSelectionChanged(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) +void ResourcePackPage::updateFrame(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) { auto sourceCurrent = m_filterModel->mapToSource(current); int row = sourceCurrent.row(); auto& rp = static_cast(m_model->at(row)); ui->frame->updateWithResourcePack(rp); - - return true; } void ResourcePackPage::downloadResourcePacks() @@ -127,13 +125,13 @@ void ResourcePackPage::updateResourcePacks() return; } if (m_instance != nullptr && m_instance->isRunning()) { - auto response = - CustomMessageBox::selectable(this, tr("Confirm Update"), - tr("Updating resource packs while the game is running may cause pack duplication and game crashes.\n" - "The old files may not be deleted as they are in use.\n" - "Are you sure you want to do this?"), - QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) - ->exec(); + auto response = CustomMessageBox::selectable( + this, tr("Confirm Update"), + tr("Updating resource packs while the game is running may cause pack duplication and game crashes.\n" + "The old files may not be deleted as they are in use.\n" + "Are you sure you want to do this?"), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); if (response != QMessageBox::Yes) return; @@ -166,7 +164,8 @@ void ResourcePackPage::updateResourcePacks() } if (update_dialog.exec()) { - auto tasks = new ConcurrentTask(this, "Download Resource Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = + new ConcurrentTask(this, "Download Resource Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); diff --git a/launcher/ui/pages/instance/ResourcePackPage.h b/launcher/ui/pages/instance/ResourcePackPage.h index c2d36cea1..e95809cf8 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.h +++ b/launcher/ui/pages/instance/ResourcePackPage.h @@ -58,7 +58,7 @@ class ResourcePackPage : public ExternalResourcesPage { } public slots: - bool onSelectionChanged(const QModelIndex& current, const QModelIndex& previous) override; + void updateFrame(const QModelIndex& current, const QModelIndex& previous) override; private slots: void downloadResourcePacks(); diff --git a/launcher/ui/pages/instance/TexturePackPage.cpp b/launcher/ui/pages/instance/TexturePackPage.cpp index 75f8410bc..cdd2b0964 100644 --- a/launcher/ui/pages/instance/TexturePackPage.cpp +++ b/launcher/ui/pages/instance/TexturePackPage.cpp @@ -71,14 +71,12 @@ TexturePackPage::TexturePackPage(MinecraftInstance* instance, std::shared_ptractionUpdateItem->setMenu(updateMenu); } -bool TexturePackPage::onSelectionChanged(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) +void TexturePackPage::updateFrame(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) { auto sourceCurrent = m_filterModel->mapToSource(current); int row = sourceCurrent.row(); auto& rp = static_cast(m_model->at(row)); ui->frame->updateWithTexturePack(rp); - - return true; } void TexturePackPage::downloadTexturePacks() @@ -129,13 +127,13 @@ void TexturePackPage::updateTexturePacks() return; } if (m_instance != nullptr && m_instance->isRunning()) { - auto response = - CustomMessageBox::selectable(this, tr("Confirm Update"), - tr("Updating texture packs while the game is running may cause pack duplication and game crashes.\n" - "The old files may not be deleted as they are in use.\n" - "Are you sure you want to do this?"), - QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) - ->exec(); + auto response = CustomMessageBox::selectable( + this, tr("Confirm Update"), + tr("Updating texture packs while the game is running may cause pack duplication and game crashes.\n" + "The old files may not be deleted as they are in use.\n" + "Are you sure you want to do this?"), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); if (response != QMessageBox::Yes) return; @@ -168,7 +166,8 @@ void TexturePackPage::updateTexturePacks() } if (update_dialog.exec()) { - auto tasks = new ConcurrentTask(this, "Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = + new ConcurrentTask(this, "Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); diff --git a/launcher/ui/pages/instance/TexturePackPage.h b/launcher/ui/pages/instance/TexturePackPage.h index e42613568..4dc2c16c2 100644 --- a/launcher/ui/pages/instance/TexturePackPage.h +++ b/launcher/ui/pages/instance/TexturePackPage.h @@ -55,7 +55,7 @@ class TexturePackPage : public ExternalResourcesPage { virtual bool shouldDisplay() const override { return m_instance->traits().contains("texturepacks"); } public slots: - bool onSelectionChanged(const QModelIndex& current, const QModelIndex& previous) override; + void updateFrame(const QModelIndex& current, const QModelIndex& previous) override; void downloadTexturePacks(); void updateTexturePacks(); void deleteTexturePackMetadata(); From 9ce10231edcf256eb0bcb2a3e78c3c06b156c800 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 26 Apr 2024 01:44:43 +0100 Subject: [PATCH 081/616] Remove redundant event handler Signed-off-by: TheKodeToad --- launcher/ui/pages/instance/ExternalResourcesPage.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp index a3b58f4df..1ee473541 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp +++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp @@ -102,7 +102,6 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared connect(selection_model, &QItemSelectionModel::selectionChanged, this, [this] { updateActions(); }); connect(m_model.get(), &ResourceFolderModel::rowsInserted, this, [this] { updateActions(); }); connect(m_model.get(), &ResourceFolderModel::rowsRemoved, this, [this] { updateActions(); }); - connect(m_model.get(), &ResourceFolderModel::updateFinished, this, [this] { updateActions(); }); auto viewHeader = ui->treeView->header(); viewHeader->setContextMenuPolicy(Qt::CustomContextMenu); From b23b53d98d5c99353a79355371a7eb7a8537df0c Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 18 May 2024 14:43:58 +0300 Subject: [PATCH 082/616] Add missing header Signed-off-by: Trial97 --- launcher/java/JavaChecker.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/java/JavaChecker.cpp b/launcher/java/JavaChecker.cpp index 678c98cd4..c54a5b04b 100644 --- a/launcher/java/JavaChecker.cpp +++ b/launcher/java/JavaChecker.cpp @@ -41,6 +41,7 @@ #include #include "Commandline.h" +#include "FileSystem.h" #include "java/JavaUtils.h" JavaChecker::JavaChecker(QString path, QString args, int minMem, int maxMem, int permGen, int id, QObject* parent) From abb628edb36a7e3e433dee93a224dbd4329acc24 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 20 May 2024 18:23:43 +0300 Subject: [PATCH 083/616] remove OverrideJava Signed-off-by: Trial97 --- launcher/launch/steps/CheckJava.cpp | 2 +- launcher/minecraft/MinecraftInstance.cpp | 21 +++++++------------ launcher/minecraft/launch/AutoInstallJava.cpp | 4 +--- .../pages/instance/InstanceSettingsPage.cpp | 8 ++----- 4 files changed, 12 insertions(+), 23 deletions(-) diff --git a/launcher/launch/steps/CheckJava.cpp b/launcher/launch/steps/CheckJava.cpp index a8c7305ab..b5b85563a 100644 --- a/launcher/launch/steps/CheckJava.cpp +++ b/launcher/launch/steps/CheckJava.cpp @@ -47,7 +47,7 @@ void CheckJava::executeTask() auto instance = m_parent->instance(); auto settings = instance->settings(); m_javaPath = FS::ResolveExecutable(settings->get("JavaPath").toString()); - bool perInstance = settings->get("OverrideJava").toBool() || settings->get("OverrideJavaLocation").toBool(); + bool perInstance = settings->get("OverrideJavaLocation").toBool(); auto realJavaPath = QStandardPaths::findExecutable(m_javaPath); if (realJavaPath.isEmpty()) { diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 9fa313843..0b0a279a5 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -136,25 +136,20 @@ void MinecraftInstance::loadSpecificSettings() return; // Java Settings - auto javaOverride = m_settings->registerSetting("OverrideJava", false); auto locationOverride = m_settings->registerSetting("OverrideJavaLocation", false); auto argsOverride = m_settings->registerSetting("OverrideJavaArgs", false); - // combinations - auto javaOrLocation = std::make_shared("JavaOrLocationOverride", javaOverride, locationOverride); - auto javaOrArgs = std::make_shared("JavaOrArgsOverride", javaOverride, argsOverride); - if (auto global_settings = globalSettings()) { - m_settings->registerOverride(global_settings->getSetting("JavaPath"), javaOrLocation); - m_settings->registerOverride(global_settings->getSetting("JvmArgs"), javaOrArgs); - m_settings->registerOverride(global_settings->getSetting("IgnoreJavaCompatibility"), javaOrLocation); + m_settings->registerOverride(global_settings->getSetting("JavaPath"), locationOverride); + m_settings->registerOverride(global_settings->getSetting("JvmArgs"), argsOverride); + m_settings->registerOverride(global_settings->getSetting("IgnoreJavaCompatibility"), locationOverride); // special! - m_settings->registerPassthrough(global_settings->getSetting("JavaSignature"), javaOrLocation); - m_settings->registerPassthrough(global_settings->getSetting("JavaArchitecture"), javaOrLocation); - m_settings->registerPassthrough(global_settings->getSetting("JavaRealArchitecture"), javaOrLocation); - m_settings->registerPassthrough(global_settings->getSetting("JavaVersion"), javaOrLocation); - m_settings->registerPassthrough(global_settings->getSetting("JavaVendor"), javaOrLocation); + m_settings->registerPassthrough(global_settings->getSetting("JavaSignature"), locationOverride); + m_settings->registerPassthrough(global_settings->getSetting("JavaArchitecture"), locationOverride); + m_settings->registerPassthrough(global_settings->getSetting("JavaRealArchitecture"), locationOverride); + m_settings->registerPassthrough(global_settings->getSetting("JavaVersion"), locationOverride); + m_settings->registerPassthrough(global_settings->getSetting("JavaVendor"), locationOverride); // Window Size auto windowSetting = m_settings->registerSetting("OverrideWindow", false); diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index 1dc91003f..95bfa1dec 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -61,8 +61,7 @@ void AutoInstallJava::executeTask() { auto settings = m_instance->settings(); if (!APPLICATION->settings()->get("AutomaticJavaSwitch").toBool() || - (settings->get("OverrideJava").toBool() && settings->get("OverrideJavaLocation").toBool() && - QFileInfo::exists(settings->get("JavaPath").toString()))) { + (settings->get("OverrideJavaLocation").toBool() && QFileInfo::exists(settings->get("JavaPath").toString()))) { emitSucceeded(); return; } @@ -126,7 +125,6 @@ void AutoInstallJava::executeTask() void AutoInstallJava::setJavaPath(QString path) { auto settings = m_instance->settings(); - settings->set("OverrideJava", true); settings->set("OverrideJavaLocation", true); settings->set("JavaPath", path); emit logLine(tr("Compatible java found at: %1.").arg(path), MessageLevel::Info); diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index c248a47f7..fa52f2c51 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -190,9 +190,6 @@ void InstanceSettingsPage::applySettings() m_settings->reset("JvmArgs"); } - // old generic 'override both' is removed. - m_settings->reset("OverrideJava"); - // Custom Commands bool custcmd = ui->customCommands->checked(); m_settings->set("OverrideCommands", custcmd); @@ -321,9 +318,8 @@ void InstanceSettingsPage::loadSettings() ui->labelPermgenNote->setVisible(permGenVisible); // Java Settings - bool overrideJava = m_settings->get("OverrideJava").toBool(); - bool overrideLocation = m_settings->get("OverrideJavaLocation").toBool() || overrideJava; - bool overrideArgs = m_settings->get("OverrideJavaArgs").toBool() || overrideJava; + bool overrideLocation = m_settings->get("OverrideJavaLocation").toBool(); + bool overrideArgs = m_settings->get("OverrideJavaArgs").toBool(); ui->javaSettingsGroupBox->setChecked(overrideLocation); ui->javaPathTextBox->setText(m_settings->get("JavaPath").toString()); From 0e239dfb2a85c947d656764fa0036965eb040b40 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 20 May 2024 18:24:19 +0300 Subject: [PATCH 084/616] fix crash on first display with java downloader off Signed-off-by: Trial97 --- launcher/ui/setupwizard/JavaWizardPage.cpp | 8 +--- launcher/ui/widgets/JavaSettingsWidget.cpp | 49 ++++++++++++---------- launcher/ui/widgets/JavaSettingsWidget.h | 4 +- 3 files changed, 32 insertions(+), 29 deletions(-) diff --git a/launcher/ui/setupwizard/JavaWizardPage.cpp b/launcher/ui/setupwizard/JavaWizardPage.cpp index d537580fc..a47cebcaa 100644 --- a/launcher/ui/setupwizard/JavaWizardPage.cpp +++ b/launcher/ui/setupwizard/JavaWizardPage.cpp @@ -12,12 +12,8 @@ #include -#include "FileSystem.h" #include "JavaCommon.h" -#include "java/JavaInstall.h" -#include "java/JavaUtils.h" -#include "ui/dialogs/CustomMessageBox.h" #include "ui/widgets/JavaSettingsWidget.h" #include "ui/widgets/VersionSelectWidget.h" @@ -57,8 +53,8 @@ bool JavaWizardPage::validatePage() { auto settings = APPLICATION->settings(); auto result = m_java_widget->validate(); - settings->set("AutomaticJavaSwitch", m_java_widget->autodetectJava()); - settings->set("AutomaticJavaDownload", m_java_widget->autodownloadJava()); + settings->set("AutomaticJavaSwitch", m_java_widget->autoDetectJava()); + settings->set("AutomaticJavaDownload", m_java_widget->autoDownloadJava()); switch (result) { default: case JavaSettingsWidget::ValidationStatus::Bad: { diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 1645f2b5f..34cd70f35 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -43,7 +43,9 @@ JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) connect(m_javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaBrowseBtn_clicked); connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited); connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaSettingsWidget::on_javaStatusBtn_clicked); - connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaDownloadBtn_clicked); + if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { + connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaDownloadBtn_clicked); + } } void JavaSettingsWidget::setupUi() @@ -176,18 +178,21 @@ void JavaSettingsWidget::initialize() m_permGenSpinBox->setValue(observedPermGenMemory); updateThresholds(); - auto button = CustomMessageBox::selectable(this, tr("Auto Java Download"), - tr("%1 can automatically download the correct Java version for each version of Minecraft..\n" - "Do you want to enable Java auto-download?\n") - .arg(BuildConfig.LAUNCHER_DISPLAYNAME), - QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) - ->exec(); - if (button == QMessageBox::Yes) { - m_autodetectJavaCheckBox->setChecked(true); - m_autodownloadCheckBox->setChecked(true); - } else { - m_autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); - m_autodownloadCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool() && s->get("AutomaticJavaDownload").toBool()); + if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { + auto button = + CustomMessageBox::selectable(this, tr("Auto Java Download"), + tr("%1 can automatically download the correct Java version for each version of Minecraft..\n" + "Do you want to enable Java auto-download?\n") + .arg(BuildConfig.LAUNCHER_DISPLAYNAME), + QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) + ->exec(); + if (button == QMessageBox::Yes) { + m_autodetectJavaCheckBox->setChecked(true); + m_autodownloadCheckBox->setChecked(true); + } else { + m_autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); + m_autodownloadCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool() && s->get("AutomaticJavaDownload").toBool()); + } } } @@ -211,7 +216,7 @@ JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate() case JavaStatus::DoesNotStart: /* fallthrough */ case JavaStatus::ReturnedInvalidData: { - if (!m_autodownloadCheckBox->isChecked()) { // the java will not be autodownloaded + if (!(BuildConfig.JAVA_DOWNLOADER_ENABLED && m_autodownloadCheckBox->isChecked())) { // the java will not be autodownloaded int button = QMessageBox::No; if (m_result.mojangPlatform == "32" && maxHeapSize() > 2048) { button = CustomMessageBox::selectable( @@ -488,7 +493,9 @@ void JavaSettingsWidget::retranslate() m_minMemSpinBox->setToolTip(tr("The amount of memory Minecraft is started with.")); m_permGenSpinBox->setToolTip(tr("The amount of memory available to store loaded Java classes.")); m_javaBrowseBtn->setText(tr("Browse")); - m_autodownloadCheckBox->setText(tr("Auto-download Mojang Java")); + if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { + m_autodownloadCheckBox->setText(tr("Auto-download Mojang Java")); + } m_autodetectJavaCheckBox->setText(tr("Autodetect Java version")); m_autoJavaGroupBox->setTitle(tr("Autodetect Java")); } @@ -522,12 +529,12 @@ void JavaSettingsWidget::updateThresholds() } } -bool JavaSettingsWidget::autodownloadJava() const +bool JavaSettingsWidget::autoDownloadJava() const +{ + return m_autodownloadCheckBox && m_autodownloadCheckBox->isChecked(); +} + +bool JavaSettingsWidget::autoDetectJava() const { return m_autodetectJavaCheckBox->isChecked(); } - -bool JavaSettingsWidget::autodetectJava() const -{ - return m_autodownloadCheckBox->isChecked(); -} diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index c8b6953df..877e60f46 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -42,8 +42,8 @@ class JavaSettingsWidget : public QWidget { int minHeapSize() const; int maxHeapSize() const; QString javaPath() const; - bool autodetectJava() const; - bool autodownloadJava() const; + bool autoDetectJava() const; + bool autoDownloadJava() const; void updateThresholds(); From 7a42fb284a28657106bf189a5ead0b1add38e9c8 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 20 May 2024 18:33:40 +0300 Subject: [PATCH 085/616] reverse java version Signed-off-by: Trial97 --- launcher/ui/java/VersionList.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/java/VersionList.cpp b/launcher/ui/java/VersionList.cpp index 5e385604d..6f60a6867 100644 --- a/launcher/ui/java/VersionList.cpp +++ b/launcher/ui/java/VersionList.cpp @@ -103,7 +103,7 @@ bool sortJavas(BaseVersion::Ptr left, BaseVersion::Ptr right) { auto rleft = std::dynamic_pointer_cast(right); auto rright = std::dynamic_pointer_cast(left); - return (*rleft) > (*rright); + return (*rleft) < (*rright); } void VersionList::sortVersions() From f6a7fc215aaacc235842a8f3fd31b81e3e9720c9 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 21 May 2024 08:33:09 +0300 Subject: [PATCH 086/616] update java sorting by taking into consideration release time Signed-off-by: Trial97 --- launcher/java/JavaMetadata.cpp | 7 +++++++ launcher/java/JavaVersion.cpp | 6 ------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/launcher/java/JavaMetadata.cpp b/launcher/java/JavaMetadata.cpp index e721947a7..2272470a8 100644 --- a/launcher/java/JavaMetadata.cpp +++ b/launcher/java/JavaMetadata.cpp @@ -83,6 +83,13 @@ bool Metadata::operator<(const Metadata& rhs) if (id > rhs.version) { return false; } + auto date = releaseTime; + if (date < rhs.releaseTime) { + return true; + } + if (date > rhs.releaseTime) { + return false; + } return StringUtils::naturalCompare(m_name, rhs.m_name, Qt::CaseInsensitive) < 0; } diff --git a/launcher/java/JavaVersion.cpp b/launcher/java/JavaVersion.cpp index 2dc23472e..5e9700012 100644 --- a/launcher/java/JavaVersion.cpp +++ b/launcher/java/JavaVersion.cpp @@ -59,12 +59,6 @@ bool JavaVersion::operator<(const JavaVersion& rhs) auto major = m_major; auto rmajor = rhs.m_major; - // HACK: discourage using java 9 - if (major > 8) - major = -major; - if (rmajor > 8) - rmajor = -rmajor; - if (major < rmajor) return true; if (major > rmajor) From bbf52e35497a596121befb4f7d9225ab99251732 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 16 Jun 2024 01:59:50 +0300 Subject: [PATCH 087/616] renamed dialog and button action Signed-off-by: Trial97 --- launcher/ui/java/InstallJavaDialog.cpp | 12 ++++++++---- launcher/ui/pages/global/JavaPage.cpp | 7 +------ launcher/ui/pages/global/JavaPage.h | 1 - launcher/ui/widgets/JavaSettingsWidget.cpp | 4 ++-- launcher/ui/widgets/JavaSettingsWidget.h | 2 +- 5 files changed, 12 insertions(+), 14 deletions(-) diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index 78de3e20a..60e3a770c 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -184,18 +184,18 @@ InstallDialog::InstallDialog(const QString& uid, QWidget* parent) QList InstallDialog::getPages() { return { - // NeoForge + // Mojang new InstallJavaPage("net.minecraft.java", "", tr("Mojang")), - // Forge + // Adoptium new InstallJavaPage("net.adoptium.java", "", tr("Adoptium")), - // Fabric + // Azul new InstallJavaPage("com.azul.java", "", tr("Azul")), }; } QString InstallDialog::dialogTitle() { - return tr("Install Loader"); + return tr("Install Java"); } void InstallDialog::validate(BasePage* page) @@ -230,7 +230,11 @@ void InstallDialog::done(int result) ProgressDialog pg(this); pg.setSkipButton(true, tr("Abort")); pg.execWithTask(task.get()); + } else { + return; } + } else { + return; } } diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index fda4f8705..c8bbf6361 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -199,7 +199,7 @@ void JavaPage::on_javaTestBtn_clicked() checker->run(); } -void JavaPage::on_javaDownloadBtn_clicked() +void JavaPage::on_downloadJavaButton_clicked() { auto jdialog = new Java::InstallDialog({}, this); jdialog->exec(); @@ -251,11 +251,6 @@ void JavaPage::updateThresholds() } } -void JavaPage::on_downloadJavaButton_clicked() -{ - on_javaDownloadBtn_clicked(); -} - void JavaPage::on_removeJavaButton_clicked() { auto version = ui->managedJavaList->selectedVersion(); diff --git a/launcher/ui/pages/global/JavaPage.h b/launcher/ui/pages/global/JavaPage.h index 48e557740..0a1c4a6be 100644 --- a/launcher/ui/pages/global/JavaPage.h +++ b/launcher/ui/pages/global/JavaPage.h @@ -72,7 +72,6 @@ class JavaPage : public QWidget, public BasePage { void on_javaDetectBtn_clicked(); void on_javaTestBtn_clicked(); void on_javaBrowseBtn_clicked(); - void on_javaDownloadBtn_clicked(); void on_downloadJavaButton_clicked(); void on_removeJavaButton_clicked(); void on_refreshJavaButton_clicked(); diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 34cd70f35..e16f650fc 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -44,7 +44,7 @@ JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited); connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaSettingsWidget::on_javaStatusBtn_clicked); if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { - connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaDownloadBtn_clicked); + connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaSettingsWidget::javaDownloadBtn_clicked); } } @@ -354,7 +354,7 @@ void JavaSettingsWidget::on_javaBrowseBtn_clicked() checkJavaPath(cooked_path); } -void JavaSettingsWidget::on_javaDownloadBtn_clicked() +void JavaSettingsWidget::javaDownloadBtn_clicked() { auto jdialog = new Java::InstallDialog({}, this); jdialog->exec(); diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index 877e60f46..622c473fe 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -53,7 +53,7 @@ class JavaSettingsWidget : public QWidget { void javaVersionSelected(BaseVersion::Ptr version); void on_javaBrowseBtn_clicked(); void on_javaStatusBtn_clicked(); - void on_javaDownloadBtn_clicked(); + void javaDownloadBtn_clicked(); void checkFinished(const JavaChecker::Result& result); protected: /* methods */ From 94fd02a34f1146fa84c6ea2516b694f6e3ce3d91 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 16 Jun 2024 14:26:19 +0300 Subject: [PATCH 088/616] fix java download button Signed-off-by: Trial97 --- launcher/ui/java/InstallJavaDialog.cpp | 19 +++++++++---------- launcher/ui/java/InstallJavaDialog.h | 2 +- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index 60e3a770c..d92402236 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -60,7 +60,8 @@ class InstallJavaPage : public QWidget, public BasePage { javaVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); horizontalLayout->addWidget(javaVersionSelect, 4); connect(majorVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallJavaPage::setSelectedVersion); - connect(javaVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallJavaPage::selectedVersionChanged); + connect(majorVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallJavaPage::selectionChanged); + connect(javaVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallJavaPage::selectionChanged); QMetaObject::connectSlotsByName(this); } @@ -119,7 +120,7 @@ class InstallJavaPage : public QWidget, public BasePage { javaVersionSelect->loadList(); } signals: - void selectedVersionChanged(BaseVersion::Ptr version); + void selectionChanged(); private: const QString uid; @@ -171,14 +172,11 @@ InstallDialog::InstallDialog(const QString& uid, QWidget* parent) if (page->id() == uid) container->selectPage(page->id()); - connect(pageCast(page), &InstallJavaPage::selectedVersionChanged, this, [this, page] { - if (page->id() == container->selectedPage()->id()) - validate(container->selectedPage()); - }); + connect(pageCast(page), &InstallJavaPage::selectionChanged, this, [this] { validate(); }); } - connect(container, &PageContainer::selectedPageChanged, this, [this](BasePage* previous, BasePage* current) { validate(current); }); + connect(container, &PageContainer::selectedPageChanged, this, [this] { validate(); }); pageCast(container->selectedPage())->selectSearch(); - validate(container->selectedPage()); + validate(); } QList InstallDialog::getPages() @@ -198,9 +196,10 @@ QString InstallDialog::dialogTitle() return tr("Install Java"); } -void InstallDialog::validate(BasePage* page) +void InstallDialog::validate() { - buttons->button(QDialogButtonBox::Ok)->setEnabled(pageCast(page)->selectedVersion() != nullptr); + buttons->button(QDialogButtonBox::Ok) + ->setEnabled(!!std::dynamic_pointer_cast(pageCast(container->selectedPage())->selectedVersion())); } void InstallDialog::done(int result) diff --git a/launcher/ui/java/InstallJavaDialog.h b/launcher/ui/java/InstallJavaDialog.h index 525e750aa..80d010c1a 100644 --- a/launcher/ui/java/InstallJavaDialog.h +++ b/launcher/ui/java/InstallJavaDialog.h @@ -36,7 +36,7 @@ class InstallDialog final : public QDialog, private BasePageProvider { QList getPages() override; QString dialogTitle() override; - void validate(BasePage* page); + void validate(); void done(int result) override; private: From 8d3e6667cdb51c4018604313629bd57744bca8aa Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 16 Jun 2024 15:09:49 +0300 Subject: [PATCH 089/616] fix java download tasks Signed-off-by: Trial97 --- .../java/download/ArchiveDownloadTask.cpp | 42 +++++++++--------- launcher/java/download/ArchiveDownloadTask.h | 2 + .../java/download/ManifestDownloadTask.cpp | 44 ++++++++++--------- launcher/java/download/ManifestDownloadTask.h | 2 + 4 files changed, 49 insertions(+), 41 deletions(-) diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index 358860610..5aed70ede 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -50,21 +50,17 @@ void ArchiveDownloadTask::executeTask() download->addNetAction(action); auto fullPath = entry->getFullPath(); - connect(download.get(), &NetJob::finished, [download, this] { - disconnect(this, &Task::aborted, download.get(), &NetJob::abort); - download->deleteLater(); - }); - connect(download.get(), &NetJob::failed, this, &ArchiveDownloadTask::emitFailed); - connect(this, &Task::aborted, download.get(), &NetJob::abort); + connect(download.get(), &Task::failed, this, &ArchiveDownloadTask::emitFailed); connect(download.get(), &Task::progress, this, &ArchiveDownloadTask::setProgress); connect(download.get(), &Task::stepProgress, this, &ArchiveDownloadTask::propagateStepProgress); connect(download.get(), &Task::status, this, &ArchiveDownloadTask::setStatus); connect(download.get(), &Task::details, this, &ArchiveDownloadTask::setDetails); - connect(download.get(), &NetJob::succeeded, [this, fullPath] { + connect(download.get(), &Task::succeeded, [this, fullPath] { // This should do all of the extracting and creating folders extractJava(fullPath); }); - download->start(); + m_task = download; + m_task->start(); } void ArchiveDownloadTask::extractJava(QString input) @@ -102,34 +98,40 @@ void ArchiveDownloadTask::extractJava(QString input) emitFailed("Empty archive"); return; } - auto zipTask = makeShared(zip, m_final_path, files[0]); + m_task = makeShared(zip, m_final_path, files[0]); auto progressStep = std::make_shared(); - connect(zipTask.get(), &Task::finished, this, [this, progressStep] { + connect(m_task.get(), &Task::finished, this, [this, progressStep] { progressStep->state = TaskStepState::Succeeded; stepProgress(*progressStep); }); - connect(this, &Task::aborted, zipTask.get(), &Task::abort); - connect(zipTask.get(), &Task::finished, [zipTask, this] { disconnect(this, &Task::aborted, zipTask.get(), &Task::abort); }); - - connect(zipTask.get(), &Task::succeeded, this, &ArchiveDownloadTask::emitSucceeded); - connect(zipTask.get(), &Task::aborted, this, &ArchiveDownloadTask::emitAborted); - connect(zipTask.get(), &Task::failed, this, [this, progressStep](QString reason) { + connect(m_task.get(), &Task::succeeded, this, &ArchiveDownloadTask::emitSucceeded); + connect(m_task.get(), &Task::aborted, this, &ArchiveDownloadTask::emitAborted); + connect(m_task.get(), &Task::failed, this, [this, progressStep](QString reason) { progressStep->state = TaskStepState::Failed; stepProgress(*progressStep); emitFailed(reason); }); - connect(zipTask.get(), &Task::stepProgress, this, &ArchiveDownloadTask::propagateStepProgress); + connect(m_task.get(), &Task::stepProgress, this, &ArchiveDownloadTask::propagateStepProgress); - connect(zipTask.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) { + connect(m_task.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) { progressStep->update(current, total); stepProgress(*progressStep); }); - connect(zipTask.get(), &Task::status, this, [this, progressStep](QString status) { + connect(m_task.get(), &Task::status, this, [this, progressStep](QString status) { progressStep->status = status; stepProgress(*progressStep); }); - zipTask->start(); + m_task->start(); } + +bool ArchiveDownloadTask::abort() +{ + auto aborted = canAbort(); + if (m_task) + aborted = m_task->abort(); + emitAborted(); + return aborted; +}; } // namespace Java \ No newline at end of file diff --git a/launcher/java/download/ArchiveDownloadTask.h b/launcher/java/download/ArchiveDownloadTask.h index c656567fe..1db33763a 100644 --- a/launcher/java/download/ArchiveDownloadTask.h +++ b/launcher/java/download/ArchiveDownloadTask.h @@ -30,6 +30,7 @@ class ArchiveDownloadTask : public Task { [[nodiscard]] bool canAbort() const override { return true; } void executeTask() override; + virtual bool abort() override; private slots: void extractJava(QString input); @@ -39,5 +40,6 @@ class ArchiveDownloadTask : public Task { QString m_final_path; QString m_checksum_type; QString m_checksum_hash; + Task::Ptr m_task; }; } // namespace Java \ No newline at end of file diff --git a/launcher/java/download/ManifestDownloadTask.cpp b/launcher/java/download/ManifestDownloadTask.cpp index 5551c75d5..1fcc6f172 100644 --- a/launcher/java/download/ManifestDownloadTask.cpp +++ b/launcher/java/download/ManifestDownloadTask.cpp @@ -51,18 +51,13 @@ void ManifestDownloadTask::executeTask() } download->addNetAction(action); - connect(download.get(), &NetJob::finished, [download, this] { - disconnect(this, &Task::aborted, download.get(), &NetJob::abort); - download->deleteLater(); - }); - connect(download.get(), &NetJob::failed, this, &ManifestDownloadTask::emitFailed); - connect(this, &Task::aborted, download.get(), &NetJob::abort); + connect(download.get(), &Task::failed, this, &ManifestDownloadTask::emitFailed); connect(download.get(), &Task::progress, this, &ManifestDownloadTask::setProgress); connect(download.get(), &Task::stepProgress, this, &ManifestDownloadTask::propagateStepProgress); connect(download.get(), &Task::status, this, &ManifestDownloadTask::setStatus); connect(download.get(), &Task::details, this, &ManifestDownloadTask::setDetails); - connect(download.get(), &NetJob::succeeded, [files, this] { + connect(download.get(), &Task::succeeded, [files, this] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -73,7 +68,8 @@ void ManifestDownloadTask::executeTask() } downloadJava(doc); }); - download->start(); + m_task = download; + m_task->start(); } void ManifestDownloadTask::downloadJava(const QJsonDocument& doc) @@ -107,7 +103,7 @@ void ManifestDownloadTask::downloadJava(const QJsonDocument& doc) } } } - auto elementDownload = new NetJob("JRE::FileDownload", APPLICATION->network()); + auto elementDownload = makeShared("JRE::FileDownload", APPLICATION->network()); for (const auto& file : toDownload) { auto dl = Net::Download::makeFile(file.url, file.path); if (!file.hash.isEmpty()) { @@ -119,18 +115,24 @@ void ManifestDownloadTask::downloadJava(const QJsonDocument& doc) } elementDownload->addNetAction(dl); } - connect(elementDownload, &NetJob::finished, [elementDownload, this] { - disconnect(this, &Task::aborted, elementDownload, &NetJob::abort); - elementDownload->deleteLater(); - }); - connect(elementDownload, &NetJob::failed, this, &ManifestDownloadTask::emitFailed); - connect(elementDownload, &Task::progress, this, &ManifestDownloadTask::setProgress); - connect(elementDownload, &Task::stepProgress, this, &ManifestDownloadTask::propagateStepProgress); - connect(elementDownload, &Task::status, this, &ManifestDownloadTask::setStatus); - connect(elementDownload, &Task::details, this, &ManifestDownloadTask::setDetails); - connect(this, &Task::aborted, elementDownload, &NetJob::abort); - connect(elementDownload, &NetJob::succeeded, [this] { emitSucceeded(); }); - elementDownload->start(); + connect(elementDownload.get(), &Task::failed, this, &ManifestDownloadTask::emitFailed); + connect(elementDownload.get(), &Task::progress, this, &ManifestDownloadTask::setProgress); + connect(elementDownload.get(), &Task::stepProgress, this, &ManifestDownloadTask::propagateStepProgress); + connect(elementDownload.get(), &Task::status, this, &ManifestDownloadTask::setStatus); + connect(elementDownload.get(), &Task::details, this, &ManifestDownloadTask::setDetails); + + connect(elementDownload.get(), &Task::succeeded, this, &ManifestDownloadTask::emitSucceeded); + m_task = elementDownload; + m_task->start(); } + +bool ManifestDownloadTask::abort() +{ + auto aborted = canAbort(); + if (m_task) + aborted = m_task->abort(); + emitAborted(); + return aborted; +}; } // namespace Java \ No newline at end of file diff --git a/launcher/java/download/ManifestDownloadTask.h b/launcher/java/download/ManifestDownloadTask.h index f0eaf95a6..ae9e0d0ed 100644 --- a/launcher/java/download/ManifestDownloadTask.h +++ b/launcher/java/download/ManifestDownloadTask.h @@ -31,6 +31,7 @@ class ManifestDownloadTask : public Task { [[nodiscard]] bool canAbort() const override { return true; } void executeTask() override; + virtual bool abort() override; private slots: void downloadJava(const QJsonDocument& doc); @@ -40,5 +41,6 @@ class ManifestDownloadTask : public Task { QString m_final_path; QString m_checksum_type; QString m_checksum_hash; + Task::Ptr m_task; }; } // namespace Java \ No newline at end of file From 2fb3e12492f7fd70f15fdaa6f8066e7420fdc01f Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 16 Jun 2024 17:54:13 +0300 Subject: [PATCH 090/616] fix auto java install Signed-off-by: Trial97 --- launcher/minecraft/LaunchProfile.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/launcher/minecraft/LaunchProfile.cpp b/launcher/minecraft/LaunchProfile.cpp index 77072472c..468798850 100644 --- a/launcher/minecraft/LaunchProfile.cpp +++ b/launcher/minecraft/LaunchProfile.cpp @@ -166,7 +166,8 @@ void LaunchProfile::applyCompatibleJavaMajors(QList& javaMajor) } void LaunchProfile::applyCompatibleJavaName(QString javaName) { - m_compatibleJavaName = javaName; + if (!javaName.isEmpty()) + m_compatibleJavaName = javaName; } void LaunchProfile::applyLibrary(LibraryPtr library, const RuntimeContext& runtimeContext) From 1a66db78a989603a675e82d9cb30d91a319dff83 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 25 Jun 2024 15:17:51 +0300 Subject: [PATCH 091/616] Apply text change suggestions from code review Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- launcher/java/download/ArchiveDownloadTask.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index 5aed70ede..71e78629b 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -67,7 +67,7 @@ void ArchiveDownloadTask::extractJava(QString input) { setStatus(tr("Extracting java")); if (input.endsWith("tar")) { - setStatus(tr("Extracting java(the progress will not be reported for tar)")); + setStatus(tr("Extracting Java (Progress is not reported for tar archives)")); QFile in(input); if (!in.open(QFile::ReadOnly)) { emitFailed(tr("Unable to open supplied tar file.")); @@ -80,7 +80,7 @@ void ArchiveDownloadTask::extractJava(QString input) emitSucceeded(); return; } else if (input.endsWith("tar.gz") || input.endsWith("taz") || input.endsWith("tgz")) { - setStatus(tr("Extracting java(the progress will not be reported for tar)")); + setStatus(tr("Extracting Java (Progress is not reported for tar archives)")); if (!GZTar::extract(input, QDir(m_final_path).absolutePath())) { emitFailed(tr("Unable to extract supplied tar file.")); return; @@ -95,7 +95,7 @@ void ArchiveDownloadTask::extractJava(QString input) } auto files = zip->getFileNameList(); if (files.isEmpty()) { - emitFailed("Empty archive"); + emitFailed(tr("Empty archive")); return; } m_task = makeShared(zip, m_final_path, files[0]); From 52839774e64e488139ff7d3c8d9cf41ada43f947 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 25 Jun 2024 15:19:23 +0300 Subject: [PATCH 092/616] Apply suggestions from code review Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- launcher/ui/widgets/JavaSettingsWidget.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index e16f650fc..dbd81cdd2 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -180,7 +180,7 @@ void JavaSettingsWidget::initialize() if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { auto button = - CustomMessageBox::selectable(this, tr("Auto Java Download"), + CustomMessageBox::selectable(this, tr("Automatic Java Download"), tr("%1 can automatically download the correct Java version for each version of Minecraft..\n" "Do you want to enable Java auto-download?\n") .arg(BuildConfig.LAUNCHER_DISPLAYNAME), @@ -220,8 +220,8 @@ JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate() int button = QMessageBox::No; if (m_result.mojangPlatform == "32" && maxHeapSize() > 2048) { button = CustomMessageBox::selectable( - this, tr("Java x32 detected"), - tr("You selected an 32-bit java, but allocated more than 2048MiB as maximum memory.\n" + this, tr("32-bit Java detected"), + tr("You selected a 32-bit installation of Java, but allocated more than 2048MiB as maximum memory.\n" "%1 will not be able to start Minecraft.\n" "Do you wish to proceed?" "\n\n" @@ -232,9 +232,9 @@ JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate() } else { button = CustomMessageBox::selectable(this, tr("No Java version selected"), - tr("You didn't select a Java version or selected something that doesn't work.\n" + tr("You either didn't select a Java version or selected one that does not work.\n" "%1 will not be able to start Minecraft.\n" - "Do you wish to proceed without any Java?" + "Do you wish to proceed without a functional version of Java?" "\n\n" "You can change the Java version in the settings later.\n") .arg(BuildConfig.LAUNCHER_DISPLAYNAME), @@ -246,7 +246,7 @@ JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate() case QMessageBox::Yes: return ValidationStatus::JavaBad; case QMessageBox::Help: - DesktopServices::openUrl(QUrl(BuildConfig.HELP_URL.arg("java-wizzard"))); + DesktopServices::openUrl(QUrl(BuildConfig.HELP_URL.arg("java-wizard"))); /* fallthrough */ case QMessageBox::No: /* fallthrough */ @@ -515,7 +515,7 @@ void JavaSettingsWidget::updateThresholds() m_labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation is smaller than the minimum value")); } else if (observedMaxMemory > 2048 && m_result.is_64bit) { iconName = "status-bad"; - m_labelMaxMemIcon->setToolTip(tr("Because you're using 32 bit Java, you're exceeding the maximum possible allocation.")); + m_labelMaxMemIcon->setToolTip(tr("You are exceeding the maximum allocation supported by 32-bit installations of Java.")); } else { iconName = "status-good"; m_labelMaxMemIcon->setToolTip(""); From 4e9e7212a614fe2169ba0a760b765ab944382e53 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 25 Jun 2024 15:22:30 +0300 Subject: [PATCH 093/616] Apply suggestions from code review Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- launcher/minecraft/launch/AutoInstallJava.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index 95bfa1dec..98e381f3b 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -74,13 +74,13 @@ void AutoInstallJava::executeTask() auto java = std::dynamic_pointer_cast(javas->at(i)); if (java && packProfile->getProfile()->getCompatibleJavaMajors().contains(java->id.major())) { if (!java->is_64bit) { - emit logLine(tr("The automatic Java mechanism detected an x32 java."), MessageLevel::Info); + emit logLine(tr("The automatic Java mechanism detected a 32-bit installation of Java."), MessageLevel::Info); } setJavaPath(java->path); return; } } - emit logLine(tr("No compatible java version was found. Using the default one."), MessageLevel::Warning); + emit logLine(tr("No compatible Java version was found. Using the default one."), MessageLevel::Warning); emitSucceeded(); }); connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress); @@ -91,7 +91,7 @@ void AutoInstallJava::executeTask() return; } if (m_supported_arch.isEmpty()) { - emit logLine(tr("Your system(%1 %2) is not compatible with auto java download. Using the default java path.") + emit logLine(tr("Your system(%1 %2) is not compatible with automatic Java installation. Using the default Java path.") .arg(SysInfo::currentSystem(), SysInfo::useQTForArch()), MessageLevel::Warning); emitSucceeded(); @@ -99,8 +99,8 @@ void AutoInstallJava::executeTask() } auto wantedJavaName = packProfile->getProfile()->getCompatibleJavaName(); if (wantedJavaName.isEmpty()) { - emit logLine(tr("Your meta informtation is old or doesn't have the information necesary to determine what java should be used. " - "Using the default java path."), + emit logLine(tr("Your meta information is out of date or doesn't have the information necessary to determine what installation of Java should be used. " + "Using the default Java path."), MessageLevel::Warning); emitSucceeded(); return; @@ -127,7 +127,7 @@ void AutoInstallJava::setJavaPath(QString path) auto settings = m_instance->settings(); settings->set("OverrideJavaLocation", true); settings->set("JavaPath", path); - emit logLine(tr("Compatible java found at: %1.").arg(path), MessageLevel::Info); + emit logLine(tr("Compatible Java found at: %1.").arg(path), MessageLevel::Info); emitSucceeded(); } @@ -148,7 +148,7 @@ void AutoInstallJava::setJavaPathFromPartial() if (QFileInfo::exists(finalPath)) { setJavaPath(finalPath); } else { - emit logLine(tr("No compatible java version was found(the binary file doesn't exists). Using the default one."), + emit logLine(tr("No compatible Java version was found (the binary file does not exist). Using the default one."), MessageLevel::Warning); emitSucceeded(); } @@ -201,9 +201,9 @@ void AutoInstallJava::tryNextMajorJava() auto wantedJavaName = packProfile->getProfile()->getCompatibleJavaName(); auto majorJavaVersions = packProfile->getProfile()->getCompatibleJavaMajors(); if (m_majorJavaVersionIndex >= majorJavaVersions.length()) { - emit logLine(tr("No Java versions found for your operating system: %1 %2").arg(SysInfo::currentSystem(), SysInfo::useQTForArch()), + emit logLine(tr("No versions of Java were found for your operating system: %1-%2").arg(SysInfo::currentSystem(), SysInfo::useQTForArch()), MessageLevel::Warning); - emit logLine(tr("No compatible java version was found. Using the default one."), MessageLevel::Warning); + emit logLine(tr("No compatible version of Java was found. Using the default one."), MessageLevel::Warning); emitSucceeded(); return; } From 555c4a7c59f4f09810615ecd5152b48a6fa73d51 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 25 Jun 2024 15:33:11 +0300 Subject: [PATCH 094/616] Apply suggestions from code review Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- launcher/java/download/ManifestDownloadTask.cpp | 2 +- launcher/minecraft/launch/VerifyJavaInstall.cpp | 2 +- launcher/ui/pages/global/JavaPage.cpp | 4 ++-- launcher/ui/pages/instance/InstanceSettingsPage.cpp | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/launcher/java/download/ManifestDownloadTask.cpp b/launcher/java/download/ManifestDownloadTask.cpp index 1fcc6f172..836afeaac 100644 --- a/launcher/java/download/ManifestDownloadTask.cpp +++ b/launcher/java/download/ManifestDownloadTask.cpp @@ -61,7 +61,7 @@ void ManifestDownloadTask::executeTask() QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*files, &parse_error); if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response at " << parse_error.offset << " reason: " << parse_error.errorString(); + qWarning() << "Error while parsing JSON response at " << parse_error.offset << ". Reason: " << parse_error.errorString(); qWarning() << *files; emitFailed(parse_error.errorString()); return; diff --git a/launcher/minecraft/launch/VerifyJavaInstall.cpp b/launcher/minecraft/launch/VerifyJavaInstall.cpp index 5f8b35b02..1e7448089 100644 --- a/launcher/minecraft/launch/VerifyJavaInstall.cpp +++ b/launcher/minecraft/launch/VerifyJavaInstall.cpp @@ -56,7 +56,7 @@ void VerifyJavaInstall::executeTask() if (javaArchitecture == "32" && maxMemAlloc > 2048) { emit logLine(tr("Max memory allocation exceeds the supported value.\n" - "The selected java is 32-bit and doesn't support more than 2048MiB of RAM.\n" + "The selected installation of Java is 32-bit and doesn't support more than 2048MiB of RAM.\n" "The instance may not start due to this."), MessageLevel::Error); } diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index c8bbf6361..ad37fa740 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -161,8 +161,8 @@ void JavaPage::on_javaDetectBtn_clicked() ui->javaPathTextBox->setText(java->path); if (!java->is_64bit && APPLICATION->settings()->get("MaxMemAlloc").toInt() > 2048) { CustomMessageBox::selectable(this, tr("Confirm Selection"), - tr("You selected a 32 bit java version.\n" - "This means that will not support more than 2048MiB of RAM.\n" + tr("You selected a 32-bit version of Java.\n" + "This installation does not support more than 2048MiB of RAM.\n" "Please make sure that the maximum memory value is lower."), QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) ->exec(); diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index fa52f2c51..6e6b1db57 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -418,8 +418,8 @@ void InstanceSettingsPage::on_javaDetectBtn_clicked() if (!java->is_64bit && m_settings->get("MaxMemAlloc").toInt() > 2048) { CustomMessageBox::selectable(this, tr("Confirm Selection"), - tr("You selected a 32 bit java version.\n" - "This means that will not support more than 2048MiB of RAM.\n" + tr("You selected a 32-bit version of Java.\n" + "This installation does not support more than 2048MiB of RAM.\n" "Please make sure that the maximum memory value is lower."), QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) ->exec(); From 7c38edc93dda3fe4f177cb182314870e314367d8 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 25 Jun 2024 16:10:05 +0300 Subject: [PATCH 095/616] Apply suggestion from code review Signed-off-by: Trial97 --- launcher/java/JavaMetadata.cpp | 10 ++- launcher/java/JavaMetadata.h | 2 +- launcher/java/JavaUtils.cpp | 21 +++--- launcher/java/JavaUtils.h | 1 + .../java/download/ArchiveDownloadTask.cpp | 71 ++++++++++--------- launcher/minecraft/launch/AutoInstallJava.cpp | 20 +++--- launcher/ui/java/InstallJavaDialog.cpp | 6 +- launcher/ui/widgets/JavaSettingsWidget.cpp | 11 +-- 8 files changed, 75 insertions(+), 67 deletions(-) diff --git a/launcher/java/JavaMetadata.cpp b/launcher/java/JavaMetadata.cpp index 2272470a8..2d68f55c8 100644 --- a/launcher/java/JavaMetadata.cpp +++ b/launcher/java/JavaMetadata.cpp @@ -31,8 +31,10 @@ DownloadType parseDownloadType(QString javaDownload) { if (javaDownload == "manifest") return DownloadType::Manifest; - // if (javaDownload == "archive") - return DownloadType::Archive; + else if (javaDownload == "archive") + return DownloadType::Archive; + else + return DownloadType::Unknown; } QString downloadTypeToString(DownloadType javaDownload) { @@ -41,8 +43,10 @@ QString downloadTypeToString(DownloadType javaDownload) return "manifest"; case DownloadType::Archive: return "archive"; + case DownloadType::Unknown: + break; } - return ""; + return "unknown"; } MetadataPtr parseJavaMeta(const QJsonObject& in) { diff --git a/launcher/java/JavaMetadata.h b/launcher/java/JavaMetadata.h index 5281f2e27..77a42fd78 100644 --- a/launcher/java/JavaMetadata.h +++ b/launcher/java/JavaMetadata.h @@ -28,7 +28,7 @@ namespace Java { -enum class DownloadType { Manifest, Archive }; +enum class DownloadType { Manifest, Archive, Unknown }; class Metadata : public BaseVersion { public: diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index 42d3ef6ab..c0f64ad37 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -463,12 +463,10 @@ QString JavaUtils::getJavaCheckPath() QStringList getMinecraftJavaBundle() { - QString executable = "java"; QStringList processpaths; #if defined(Q_OS_OSX) processpaths << FS::PathCombine(QDir::homePath(), FS::PathCombine("Library", "Application Support", "minecraft", "runtime")); #elif defined(Q_OS_WIN32) - executable += "w.exe"; auto appDataPath = QProcessEnvironment::systemEnvironment().value("APPDATA", ""); processpaths << FS::PathCombine(QFileInfo(appDataPath).absoluteFilePath(), ".minecraft", "runtime"); @@ -493,7 +491,7 @@ QStringList getMinecraftJavaBundle() auto binFound = false; for (auto& entry : entries) { if (entry.baseName() == "bin") { - javas.append(FS::PathCombine(entry.canonicalFilePath(), executable)); + javas.append(FS::PathCombine(entry.canonicalFilePath(), JavaUtils::javaExecutable)); binFound = true; break; } @@ -507,19 +505,20 @@ QStringList getMinecraftJavaBundle() return javas; } +#if defined(Q_OS_WIN32) +const QString JavaUtils::javaExecutable = "javaw.exe"; +#else +const QString JavaUtils::javaExecutable = "java"; +#endif + QStringList getPrismJavaBundle() { QList javas; - QString executable = "java"; -#if defined(Q_OS_WIN32) - executable += "w.exe"; -#endif - auto scanDir = [&](QString prefix) { - javas.append(FS::PathCombine(prefix, "jre", "bin", executable)); - javas.append(FS::PathCombine(prefix, "bin", executable)); - javas.append(FS::PathCombine(prefix, executable)); + javas.append(FS::PathCombine(prefix, "jre", "bin", JavaUtils::javaExecutable)); + javas.append(FS::PathCombine(prefix, "bin", JavaUtils::javaExecutable)); + javas.append(FS::PathCombine(prefix, JavaUtils::javaExecutable)); }; auto scanJavaDir = [&](const QString& dirPath) { QDir dir(dirPath); diff --git a/launcher/java/JavaUtils.h b/launcher/java/JavaUtils.h index aa5315a19..eb3a17316 100644 --- a/launcher/java/JavaUtils.h +++ b/launcher/java/JavaUtils.h @@ -42,4 +42,5 @@ class JavaUtils : public QObject { #endif static QString getJavaCheckPath(); + static const QString javaExecutable; }; diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index 71e78629b..af5381dfc 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -87,43 +87,46 @@ void ArchiveDownloadTask::extractJava(QString input) } emitSucceeded(); return; - } - auto zip = std::make_shared(input); - if (!zip->open(QuaZip::mdUnzip)) { - emitFailed(tr("Unable to open supplied zip file.")); - return; - } - auto files = zip->getFileNameList(); - if (files.isEmpty()) { - emitFailed(tr("Empty archive")); - return; - } - m_task = makeShared(zip, m_final_path, files[0]); + } else if (input.endsWith("zip")) { + auto zip = std::make_shared(input); + if (!zip->open(QuaZip::mdUnzip)) { + emitFailed(tr("Unable to open supplied zip file.")); + return; + } + auto files = zip->getFileNameList(); + if (files.isEmpty()) { + emitFailed(tr("No files were found in the supplied zip file,")); + return; + } + m_task = makeShared(zip, m_final_path, files[0]); - auto progressStep = std::make_shared(); - connect(m_task.get(), &Task::finished, this, [this, progressStep] { - progressStep->state = TaskStepState::Succeeded; - stepProgress(*progressStep); - }); + auto progressStep = std::make_shared(); + connect(m_task.get(), &Task::finished, this, [this, progressStep] { + progressStep->state = TaskStepState::Succeeded; + stepProgress(*progressStep); + }); - connect(m_task.get(), &Task::succeeded, this, &ArchiveDownloadTask::emitSucceeded); - connect(m_task.get(), &Task::aborted, this, &ArchiveDownloadTask::emitAborted); - connect(m_task.get(), &Task::failed, this, [this, progressStep](QString reason) { - progressStep->state = TaskStepState::Failed; - stepProgress(*progressStep); - emitFailed(reason); - }); - connect(m_task.get(), &Task::stepProgress, this, &ArchiveDownloadTask::propagateStepProgress); + connect(m_task.get(), &Task::succeeded, this, &ArchiveDownloadTask::emitSucceeded); + connect(m_task.get(), &Task::aborted, this, &ArchiveDownloadTask::emitAborted); + connect(m_task.get(), &Task::failed, this, [this, progressStep](QString reason) { + progressStep->state = TaskStepState::Failed; + stepProgress(*progressStep); + emitFailed(reason); + }); + connect(m_task.get(), &Task::stepProgress, this, &ArchiveDownloadTask::propagateStepProgress); - connect(m_task.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) { - progressStep->update(current, total); - stepProgress(*progressStep); - }); - connect(m_task.get(), &Task::status, this, [this, progressStep](QString status) { - progressStep->status = status; - stepProgress(*progressStep); - }); - m_task->start(); + connect(m_task.get(), &Task::progress, this, [this, progressStep](qint64 current, qint64 total) { + progressStep->update(current, total); + stepProgress(*progressStep); + }); + connect(m_task.get(), &Task::status, this, [this, progressStep](QString status) { + progressStep->status = status; + stepProgress(*progressStep); + }); + m_task->start(); + } + + emitFailed(tr("Could not determine archive type!")); } bool ArchiveDownloadTask::abort() diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index 98e381f3b..c77b9b105 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -44,6 +44,7 @@ #include "SysInfo.h" #include "java/JavaInstall.h" #include "java/JavaInstallList.h" +#include "java/JavaUtils.h" #include "java/JavaVersion.h" #include "java/download/ArchiveDownloadTask.h" #include "java/download/ManifestDownloadTask.h" @@ -91,7 +92,7 @@ void AutoInstallJava::executeTask() return; } if (m_supported_arch.isEmpty()) { - emit logLine(tr("Your system(%1 %2) is not compatible with automatic Java installation. Using the default Java path.") + emit logLine(tr("Your system (%1-%2) is not compatible with automatic Java installation. Using the default Java path.") .arg(SysInfo::currentSystem(), SysInfo::useQTForArch()), MessageLevel::Warning); emitSucceeded(); @@ -99,7 +100,8 @@ void AutoInstallJava::executeTask() } auto wantedJavaName = packProfile->getProfile()->getCompatibleJavaName(); if (wantedJavaName.isEmpty()) { - emit logLine(tr("Your meta information is out of date or doesn't have the information necessary to determine what installation of Java should be used. " + emit logLine(tr("Your meta information is out of date or doesn't have the information necessary to determine what installation of " + "Java should be used. " "Using the default Java path."), MessageLevel::Warning); emitSucceeded(); @@ -133,17 +135,13 @@ void AutoInstallJava::setJavaPath(QString path) void AutoInstallJava::setJavaPathFromPartial() { - QString executable = "java"; -#if defined(Q_OS_WIN32) - executable += "w.exe"; -#endif auto packProfile = m_instance->getPackProfile(); auto javaName = packProfile->getProfile()->getCompatibleJavaName(); QDir javaDir(APPLICATION->javaPath()); // just checking if the executable is there should suffice // but if needed this can be achieved through refreshing the javalist // and retrieving the path that contains the java name - auto relativeBinary = FS::PathCombine(javaName, "bin", executable); + auto relativeBinary = FS::PathCombine(javaName, "bin", JavaUtils::javaExecutable); auto finalPath = javaDir.absoluteFilePath(relativeBinary); if (QFileInfo::exists(finalPath)) { setJavaPath(finalPath); @@ -169,6 +167,9 @@ void AutoInstallJava::downloadJava(Meta::Version::Ptr version, QString javaName) case Java::DownloadType::Archive: m_current_task = makeShared(java->url, final_path, java->checksumType, java->checksumHash); break; + case Java::DownloadType::Unknown: + emitFailed(tr("Could not determine Java download type!")); + return; } auto deletePath = [final_path] { FS::deletePath(final_path); }; connect(m_current_task.get(), &Task::failed, this, [this, deletePath](QString reason) { @@ -201,8 +202,9 @@ void AutoInstallJava::tryNextMajorJava() auto wantedJavaName = packProfile->getProfile()->getCompatibleJavaName(); auto majorJavaVersions = packProfile->getProfile()->getCompatibleJavaMajors(); if (m_majorJavaVersionIndex >= majorJavaVersions.length()) { - emit logLine(tr("No versions of Java were found for your operating system: %1-%2").arg(SysInfo::currentSystem(), SysInfo::useQTForArch()), - MessageLevel::Warning); + emit logLine( + tr("No versions of Java were found for your operating system: %1-%2").arg(SysInfo::currentSystem(), SysInfo::useQTForArch()), + MessageLevel::Warning); emit logLine(tr("No compatible version of Java was found. Using the default one."), MessageLevel::Warning); emitSucceeded(); return; diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index d92402236..1a4b4cc58 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -211,6 +211,7 @@ void InstallDialog::done(int result) if (meta) { Task::Ptr task; auto final_path = FS::PathCombine(APPLICATION->javaPath(), meta->m_name); + auto deletePath = [final_path] { FS::deletePath(final_path); }; switch (meta->downloadType) { case Java::DownloadType::Manifest: task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); @@ -218,8 +219,11 @@ void InstallDialog::done(int result) case Java::DownloadType::Archive: task = makeShared(meta->url, final_path, meta->checksumType, meta->checksumHash); break; + case Java::DownloadType::Unknown: + QString error = QString(tr("Could not determine Java download type!")); + CustomMessageBox::selectable(this, tr("Error"), error, QMessageBox::Warning)->show(); + deletePath(); } - auto deletePath = [final_path] { FS::deletePath(final_path); }; connect(task.get(), &Task::failed, this, [this, &deletePath](QString reason) { QString error = QString("Java download failed: %1").arg(reason); CustomMessageBox::selectable(this, tr("Error"), error, QMessageBox::Warning)->show(); diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index dbd81cdd2..ec1ed0605 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -339,17 +339,12 @@ void JavaSettingsWidget::javaVersionSelected(BaseVersion::Ptr version) void JavaSettingsWidget::on_javaBrowseBtn_clicked() { - QString filter; -#if defined Q_OS_WIN32 - filter = "Java (javaw.exe)"; -#else - filter = "Java (java)"; -#endif - QString raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable"), QString(), filter); + auto filter = QString("Java (%1)").arg(JavaUtils::javaExecutable); + auto raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable"), QString(), filter); if (raw_path.isEmpty()) { return; } - QString cooked_path = FS::NormalizePath(raw_path); + auto cooked_path = FS::NormalizePath(raw_path); m_javaPathTextBox->setText(cooked_path); checkJavaPath(cooked_path); } From 09d258670aba47a2a0783ee8c443083a89342336 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 28 Jun 2024 19:26:11 +0300 Subject: [PATCH 096/616] create mod meta information when importing curseforge pack Signed-off-by: Trial97 --- .../minecraft/mod/tasks/LocalModUpdateTask.h | 4 +- launcher/modplatform/EnsureMetadataTask.h | 4 +- .../modplatform/flame/FileResolvingTask.cpp | 296 ++++++++++-------- .../modplatform/flame/FileResolvingTask.h | 39 ++- .../flame/FlameInstanceCreationTask.cpp | 77 +++-- .../flame/FlameInstanceCreationTask.h | 2 +- launcher/modplatform/flame/PackManifest.cpp | 32 -- launcher/modplatform/flame/PackManifest.h | 14 +- 8 files changed, 244 insertions(+), 224 deletions(-) diff --git a/launcher/minecraft/mod/tasks/LocalModUpdateTask.h b/launcher/minecraft/mod/tasks/LocalModUpdateTask.h index 080999294..5447083ba 100644 --- a/launcher/minecraft/mod/tasks/LocalModUpdateTask.h +++ b/launcher/minecraft/mod/tasks/LocalModUpdateTask.h @@ -42,6 +42,6 @@ class LocalModUpdateTask : public Task { private: QDir m_index_dir; - ModPlatform::IndexedPack& m_mod; - ModPlatform::IndexedVersion& m_mod_version; + ModPlatform::IndexedPack m_mod; + ModPlatform::IndexedVersion m_mod_version; }; diff --git a/launcher/modplatform/EnsureMetadataTask.h b/launcher/modplatform/EnsureMetadataTask.h index 2f276e5a0..a32a9fce1 100644 --- a/launcher/modplatform/EnsureMetadataTask.h +++ b/launcher/modplatform/EnsureMetadataTask.h @@ -1,14 +1,14 @@ #pragma once #include "ModIndex.h" -#include "net/NetJob.h" #include "modplatform/helpers/HashUtils.h" #include "tasks/ConcurrentTask.h" +#include + class Mod; -class QDir; class EnsureMetadataTask : public Task { Q_OBJECT diff --git a/launcher/modplatform/flame/FileResolvingTask.cpp b/launcher/modplatform/flame/FileResolvingTask.cpp index 8d23896d9..7a6c80f95 100644 --- a/launcher/modplatform/flame/FileResolvingTask.cpp +++ b/launcher/modplatform/flame/FileResolvingTask.cpp @@ -1,86 +1,103 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "FileResolvingTask.h" +#include #include "Json.h" +#include "QObjectPtr.h" #include "modplatform/ModIndex.h" -#include "net/ApiDownload.h" -#include "net/ApiUpload.h" -#include "net/Upload.h" +#include "modplatform/flame/FlameAPI.h" +#include "modplatform/flame/FlameModIndex.h" +#include "modplatform/modrinth/ModrinthAPI.h" #include "modplatform/modrinth/ModrinthPackIndex.h" +#include "net/NetJob.h" +#include "tasks/Task.h" + +static const FlameAPI flameAPI; +static ModrinthAPI modrinthAPI; Flame::FileResolvingTask::FileResolvingTask(const shared_qobject_ptr& network, Flame::Manifest& toProcess) - : m_network(network), m_toProcess(toProcess) + : m_network(network), m_manifest(toProcess) {} bool Flame::FileResolvingTask::abort() { bool aborted = true; - if (m_dljob) - aborted &= m_dljob->abort(); - if (m_checkJob) - aborted &= m_checkJob->abort(); + if (m_task) { + aborted = m_task->abort(); + } return aborted ? Task::abort() : false; } void Flame::FileResolvingTask::executeTask() { - if (m_toProcess.files.isEmpty()) { // no file to resolve so leave it empty and emit success immediately + if (m_manifest.files.isEmpty()) { // no file to resolve so leave it empty and emit success immediately emitSucceeded(); return; } setStatus(tr("Resolving mod IDs...")); setProgress(0, 3); - m_dljob.reset(new NetJob("Mod id resolver", m_network)); - result.reset(new QByteArray()); - // build json data to send - QJsonObject object; + m_result.reset(new QByteArray()); - object["fileIds"] = QJsonArray::fromVariantList( - std::accumulate(m_toProcess.files.begin(), m_toProcess.files.end(), QVariantList(), [](QVariantList& l, const File& s) { - l.push_back(s.fileId); - return l; - })); - QByteArray data = Json::toText(object); - auto dl = Net::ApiUpload::makeByteArray(QUrl("https://api.curseforge.com/v1/mods/files"), result, data); - m_dljob->addNetAction(dl); + QStringList fileIds; + for (auto file : m_manifest.files) { + fileIds.push_back(QString::number(file.fileId)); + } + m_task = flameAPI.getFiles(fileIds, m_result); auto step_progress = std::make_shared(); - connect(m_dljob.get(), &NetJob::finished, this, [this, step_progress]() { + connect(m_task.get(), &Task::finished, this, [this, step_progress]() { step_progress->state = TaskStepState::Succeeded; stepProgress(*step_progress); netJobFinished(); }); - connect(m_dljob.get(), &NetJob::failed, this, [this, step_progress](QString reason) { + connect(m_task.get(), &Task::failed, this, [this, step_progress](QString reason) { step_progress->state = TaskStepState::Failed; stepProgress(*step_progress); emitFailed(reason); }); - connect(m_dljob.get(), &NetJob::stepProgress, this, &FileResolvingTask::propagateStepProgress); - connect(m_dljob.get(), &NetJob::progress, this, [this, step_progress](qint64 current, qint64 total) { + connect(m_task.get(), &Task::stepProgress, this, &FileResolvingTask::propagateStepProgress); + connect(m_task.get(), &Task::progress, this, [this, step_progress](qint64 current, qint64 total) { qDebug() << "Resolve slug progress" << current << total; step_progress->update(current, total); stepProgress(*step_progress); }); - connect(m_dljob.get(), &NetJob::status, this, [this, step_progress](QString status) { + connect(m_task.get(), &Task::status, this, [this, step_progress](QString status) { step_progress->status = status; stepProgress(*step_progress); }); - m_dljob->start(); + m_task->start(); } void Flame::FileResolvingTask::netJobFinished() { setProgress(1, 3); // job to check modrinth for blocked projects - m_checkJob.reset(new NetJob("Modrinth check", m_network)); - blockedProjects = QMap>(); + auto checkJob = makeShared("Modrinth check", m_network); QJsonDocument doc; QJsonArray array; try { - doc = Json::requireDocument(*result); + doc = Json::requireDocument(*m_result); array = Json::requireArray(doc.object()["data"]); } catch (Json::JsonException& e) { qCritical() << "Non-JSON data returned from the CF API"; @@ -91,125 +108,156 @@ void Flame::FileResolvingTask::netJobFinished() return; } + QStringList hashes; for (QJsonValueRef file : array) { - auto fileid = Json::requireInteger(Json::requireObject(file)["id"]); - auto& out = m_toProcess.files[fileid]; try { - out.parseFromObject(Json::requireObject(file)); - } catch ([[maybe_unused]] const JSONValidationError& e) { - qDebug() << "Blocked mod on curseforge" << out.fileName; - auto hash = out.hash; - if (!hash.isEmpty()) { - auto url = QString("https://api.modrinth.com/v2/version_file/%1?algorithm=sha1").arg(hash); - auto output = std::make_shared(); - auto dl = Net::ApiDownload::makeByteArray(QUrl(url), output); - QObject::connect(dl.get(), &Net::ApiDownload::succeeded, [&out]() { out.resolved = true; }); - - m_checkJob->addNetAction(dl); - blockedProjects.insert(&out, output); + auto obj = Json::requireObject(file); + auto version = FlameMod::loadIndexedPackVersion(obj); + auto fileid = version.fileId.toInt(); + m_manifest.files[fileid].version = version; + auto url = QUrl(version.downloadUrl, QUrl::TolerantMode); + if (!url.isValid() && "sha1" == version.hash_type && !version.hash.isEmpty()) { + hashes.push_back(version.hash); } + } catch (Json::JsonException& e) { + qCritical() << "Non-JSON data returned from the CF API"; + qCritical() << e.cause(); + + emitFailed(tr("Invalid data returned from the API.")); + + return; } } + if (hashes.isEmpty()) { + getFlameProjects(); + return; + } + m_result.reset(new QByteArray()); + m_task = modrinthAPI.currentVersions(hashes, "sha1", m_result); auto step_progress = std::make_shared(); - connect(m_checkJob.get(), &NetJob::finished, this, [this, step_progress]() { + connect(m_task.get(), &Task::finished, this, [this, step_progress]() { step_progress->state = TaskStepState::Succeeded; stepProgress(*step_progress); - modrinthCheckFinished(); + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*m_result, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response from Modrinth::CurrentVersions at " << parse_error.offset + << " reason: " << parse_error.errorString(); + qWarning() << *m_result; + + failed(parse_error.errorString()); + return; + } + + try { + auto entries = Json::requireObject(doc); + for (auto& out : m_manifest.files) { + auto url = QUrl(out.version.downloadUrl, QUrl::TolerantMode); + if (!url.isValid() && "sha1" == out.version.hash_type && !out.version.hash.isEmpty()) { + try { + auto entry = Json::requireObject(entries, out.version.hash); + + auto file = Modrinth::loadIndexedPackVersion(entry); + + // If there's more than one mod loader for this version, we can't know for sure + // which file is relative to each loader, so it's best to not use any one and + // let the user download it manually. + if (!file.loaders || hasSingleModLoaderSelected(file.loaders)) { + out.version.downloadUrl = file.downloadUrl; + qDebug() << "Found alternative on modrinth " << out.version.fileName; + } + } catch (Json::JsonException& e) { + qDebug() << e.cause(); + qDebug() << entries; + } + } + } + } catch (Json::JsonException& e) { + qDebug() << e.cause(); + qDebug() << doc; + } + getFlameProjects(); }); - connect(m_checkJob.get(), &NetJob::failed, this, [this, step_progress](QString reason) { + connect(m_task.get(), &Task::failed, this, [this, step_progress](QString reason) { step_progress->state = TaskStepState::Failed; stepProgress(*step_progress); }); - connect(m_checkJob.get(), &NetJob::stepProgress, this, &FileResolvingTask::propagateStepProgress); - connect(m_checkJob.get(), &NetJob::progress, this, [this, step_progress](qint64 current, qint64 total) { + connect(m_task.get(), &Task::stepProgress, this, &FileResolvingTask::propagateStepProgress); + connect(m_task.get(), &Task::progress, this, [this, step_progress](qint64 current, qint64 total) { qDebug() << "Resolve slug progress" << current << total; step_progress->update(current, total); stepProgress(*step_progress); }); - connect(m_checkJob.get(), &NetJob::status, this, [this, step_progress](QString status) { + connect(m_task.get(), &Task::status, this, [this, step_progress](QString status) { step_progress->status = status; stepProgress(*step_progress); }); - m_checkJob->start(); + m_task->start(); } -void Flame::FileResolvingTask::modrinthCheckFinished() +void Flame::FileResolvingTask::getFlameProjects() { setProgress(2, 3); - qDebug() << "Finished with blocked mods : " << blockedProjects.size(); - - for (auto it = blockedProjects.keyBegin(); it != blockedProjects.keyEnd(); it++) { - auto& out = *it; - auto bytes = blockedProjects[out]; - if (!out->resolved) { - continue; - } - - QJsonDocument doc = QJsonDocument::fromJson(*bytes); - auto obj = doc.object(); - auto file = Modrinth::loadIndexedPackVersion(obj); - - // If there's more than one mod loader for this version, we can't know for sure - // which file is relative to each loader, so it's best to not use any one and - // let the user download it manually. - if (!file.loaders || hasSingleModLoaderSelected(file.loaders)) { - out->url = file.downloadUrl; - qDebug() << "Found alternative on modrinth " << out->fileName; - } else { - out->resolved = false; - } + m_result.reset(new QByteArray()); + QStringList addonIds; + for (auto file : m_manifest.files) { + addonIds.push_back(QString::number(file.projectId)); } - // copy to an output list and filter out projects found on modrinth - auto block = std::make_shared>(); - auto it = blockedProjects.keys(); - std::copy_if(it.begin(), it.end(), std::back_inserter(*block), [](File* f) { return !f->resolved; }); - // Display not found mods early - if (!block->empty()) { - // blocked mods found, we need the slug for displaying.... we need another job :D ! - m_slugJob.reset(new NetJob("Slug Job", m_network)); - int index = 0; - for (auto mod : *block) { - auto projectId = mod->projectId; - auto output = std::make_shared(); - auto url = QString("https://api.curseforge.com/v1/mods/%1").arg(projectId); - auto dl = Net::ApiDownload::makeByteArray(url, output); - qDebug() << "Fetching url slug for file:" << mod->fileName; - QObject::connect(dl.get(), &Net::ApiDownload::succeeded, [block, index, output]() { - auto mod = block->at(index); // use the shared_ptr so it is captured and only freed when we are done - auto json = QJsonDocument::fromJson(*output); - auto base = - Json::requireString(Json::requireObject(Json::requireObject(Json::requireObject(json), "data"), "links"), "websiteUrl"); - auto link = QString("%1/download/%2").arg(base, QString::number(mod->fileId)); - mod->websiteUrl = link; - }); - m_slugJob->addNetAction(dl); - index++; - } - auto step_progress = std::make_shared(); - connect(m_slugJob.get(), &NetJob::succeeded, this, [this, step_progress]() { - step_progress->state = TaskStepState::Succeeded; - stepProgress(*step_progress); - emitSucceeded(); - }); - connect(m_slugJob.get(), &NetJob::failed, this, [this, step_progress](QString reason) { - step_progress->state = TaskStepState::Failed; - stepProgress(*step_progress); - emitFailed(reason); - }); - connect(m_slugJob.get(), &NetJob::stepProgress, this, &FileResolvingTask::propagateStepProgress); - connect(m_slugJob.get(), &NetJob::progress, this, [this, step_progress](qint64 current, qint64 total) { - qDebug() << "Resolve slug progress" << current << total; - step_progress->update(current, total); - stepProgress(*step_progress); - }); - connect(m_slugJob.get(), &NetJob::status, this, [this, step_progress](QString status) { - step_progress->status = status; - stepProgress(*step_progress); - }); - m_slugJob->start(); - } else { + m_task = flameAPI.getProjects(addonIds, m_result); + + auto step_progress = std::make_shared(); + connect(m_task.get(), &Task::succeeded, this, [this, step_progress] { + QJsonParseError parse_error{}; + auto doc = QJsonDocument::fromJson(*m_result, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response from Modrinth projects task at " << parse_error.offset + << " reason: " << parse_error.errorString(); + qWarning() << *m_result; + return; + } + + try { + QJsonArray entries; + entries = Json::requireArray(Json::requireObject(doc), "data"); + + for (auto entry : entries) { + auto entry_obj = Json::requireObject(entry); + auto id = Json::requireInteger(entry_obj, "id"); + auto file = std::find_if(m_manifest.files.begin(), m_manifest.files.end(), + [id](const Flame::File& file) { return file.projectId == id; }); + if (file == m_manifest.files.end()) { + continue; + } + + setStatus(tr("Parsing API response from CurseForge for '%1'...").arg(file->version.fileName)); + FlameMod::loadIndexedPack(file->pack, entry_obj); + } + } catch (Json::JsonException& e) { + qDebug() << e.cause(); + qDebug() << doc; + } + step_progress->state = TaskStepState::Succeeded; + stepProgress(*step_progress); emitSucceeded(); - } + }); + + connect(m_task.get(), &Task::failed, this, [this, step_progress](QString reason) { + step_progress->state = TaskStepState::Failed; + stepProgress(*step_progress); + emitFailed(reason); + }); + connect(m_task.get(), &Task::stepProgress, this, &FileResolvingTask::propagateStepProgress); + connect(m_task.get(), &Task::progress, this, [this, step_progress](qint64 current, qint64 total) { + qDebug() << "Resolve slug progress" << current << total; + step_progress->update(current, total); + stepProgress(*step_progress); + }); + connect(m_task.get(), &Task::status, this, [this, step_progress](QString status) { + step_progress->status = status; + stepProgress(*step_progress); + }); + + m_task->start(); } diff --git a/launcher/modplatform/flame/FileResolvingTask.h b/launcher/modplatform/flame/FileResolvingTask.h index c280827af..edd9fce9a 100644 --- a/launcher/modplatform/flame/FileResolvingTask.h +++ b/launcher/modplatform/flame/FileResolvingTask.h @@ -1,7 +1,25 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #pragma once +#include + #include "PackManifest.h" -#include "net/NetJob.h" #include "tasks/Task.h" namespace Flame { @@ -9,12 +27,12 @@ class FileResolvingTask : public Task { Q_OBJECT public: explicit FileResolvingTask(const shared_qobject_ptr& network, Flame::Manifest& toProcess); - virtual ~FileResolvingTask(){}; + virtual ~FileResolvingTask() = default; bool canAbort() const override { return true; } bool abort() override; - const Flame::Manifest& getResults() const { return m_toProcess; } + const Flame::Manifest& getResults() const { return m_manifest; } protected: virtual void executeTask() override; @@ -22,16 +40,13 @@ class FileResolvingTask : public Task { protected slots: void netJobFinished(); + private: + void getFlameProjects(); + private: /* data */ shared_qobject_ptr m_network; - Flame::Manifest m_toProcess; - std::shared_ptr result; - NetJob::Ptr m_dljob; - NetJob::Ptr m_checkJob; - NetJob::Ptr m_slugJob; - - void modrinthCheckFinished(); - - QMap> blockedProjects; + Flame::Manifest m_manifest; + std::shared_ptr m_result; + Task::Ptr m_task; }; } // namespace Flame diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index a629cc15b..b8c40ee42 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -35,8 +35,11 @@ #include "FlameInstanceCreationTask.h" +#include "QObjectPtr.h" +#include "minecraft/mod/tasks/LocalModUpdateTask.h" #include "modplatform/flame/FileResolvingTask.h" #include "modplatform/flame/FlameAPI.h" +#include "modplatform/flame/FlameModIndex.h" #include "modplatform/flame/PackManifest.h" #include "Application.h" @@ -51,6 +54,7 @@ #include "settings/INISettingsObject.h" +#include "tasks/ConcurrentTask.h" #include "ui/dialogs/BlockedModsDialog.h" #include "ui/dialogs/CustomMessageBox.h" @@ -58,7 +62,6 @@ #include #include "meta/Index.h" -#include "meta/VersionList.h" #include "minecraft/World.h" #include "minecraft/mod/tasks/LocalResourceParse.h" #include "net/ApiDownload.h" @@ -208,8 +211,7 @@ bool FlameCreationTask::updateInstance() Flame::File file; // We don't care about blocked mods, we just need local data to delete the file - file.parseFromObject(entry_obj, false); - + file.version = FlameMod::loadIndexedPackVersion(entry_obj); auto id = Json::requireInteger(entry_obj, "id"); old_files.insert(id, file); } @@ -219,10 +221,10 @@ bool FlameCreationTask::updateInstance() // Delete the files for (auto& file : old_files) { - if (file.fileName.isEmpty() || file.targetFolder.isEmpty()) + if (file.version.fileName.isEmpty() || file.targetFolder.isEmpty()) continue; - QString relative_path(FS::PathCombine(file.targetFolder, file.fileName)); + QString relative_path(FS::PathCombine(file.targetFolder, file.version.fileName)); qDebug() << "Scheduling" << relative_path << "for removal"; m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(relative_path)); } @@ -471,15 +473,15 @@ void FlameCreationTask::idResolverSucceeded(QEventLoop& loop) QList blocked_mods; auto anyBlocked = false; for (const auto& result : results.files.values()) { - if (result.fileName.endsWith(".zip")) { - m_ZIP_resources.append(std::make_pair(result.fileName, result.targetFolder)); + if (result.version.fileName.endsWith(".zip")) { + m_ZIP_resources.append(std::make_pair(result.version.fileName, result.targetFolder)); } - if (!result.resolved || result.url.isEmpty()) { + if (result.version.downloadUrl.isEmpty()) { BlockedMod blocked_mod; - blocked_mod.name = result.fileName; - blocked_mod.websiteUrl = result.websiteUrl; - blocked_mod.hash = result.hash; + blocked_mod.name = result.version.fileName; + blocked_mod.websiteUrl = QString("%1/download/%2").arg(result.pack.websiteUrl, QString::number(result.fileId)); + blocked_mod.hash = result.version.hash; blocked_mod.matched = false; blocked_mod.localPath = ""; blocked_mod.targetFolder = result.targetFolder; @@ -521,7 +523,7 @@ void FlameCreationTask::setupDownloadJob(QEventLoop& loop) QStringList optionalFiles; for (auto& result : results) { if (!result.required) { - optionalFiles << FS::PathCombine(result.targetFolder, result.fileName); + optionalFiles << FS::PathCombine(result.targetFolder, result.version.fileName); } } @@ -537,7 +539,7 @@ void FlameCreationTask::setupDownloadJob(QEventLoop& loop) selectedOptionalMods = optionalModDialog.getResult(); } for (const auto& result : results) { - auto fileName = result.fileName; + auto fileName = result.version.fileName; fileName = FS::RemoveInvalidPathChars(fileName); auto relpath = FS::PathCombine(result.targetFolder, fileName); @@ -548,36 +550,16 @@ void FlameCreationTask::setupDownloadJob(QEventLoop& loop) relpath = FS::PathCombine("minecraft", relpath); auto path = FS::PathCombine(m_stagingPath, relpath); - switch (result.type) { - case Flame::File::Type::Folder: { - logWarning(tr("This 'Folder' may need extracting: %1").arg(relpath)); - // fallthrough intentional, we treat these as plain old mods and dump them wherever. - } - /* fallthrough */ - case Flame::File::Type::SingleFile: - case Flame::File::Type::Mod: { - if (!result.url.isEmpty()) { - qDebug() << "Will download" << result.url << "to" << path; - auto dl = Net::ApiDownload::makeFile(result.url, path); - m_files_job->addNetAction(dl); - } - break; - } - case Flame::File::Type::Modpack: - logWarning(tr("Nesting modpacks in modpacks is not implemented, nothing was downloaded: %1").arg(relpath)); - break; - case Flame::File::Type::Cmod2: - case Flame::File::Type::Ctoc: - case Flame::File::Type::Unknown: - logWarning(tr("Unrecognized/unhandled PackageType for: %1").arg(relpath)); - break; + if (!result.version.downloadUrl.isEmpty()) { + qDebug() << "Will download" << result.version.downloadUrl << "to" << path; + auto dl = Net::ApiDownload::makeFile(result.version.downloadUrl, path); + m_files_job->addNetAction(dl); } } - m_mod_id_resolver.reset(); - connect(m_files_job.get(), &NetJob::succeeded, this, [&]() { + connect(m_files_job.get(), &NetJob::finished, this, [this, &loop]() { m_files_job.reset(); - validateZIPResources(); + validateZIPResources(loop); }); connect(m_files_job.get(), &NetJob::failed, [&](QString reason) { m_files_job.reset(); @@ -588,7 +570,6 @@ void FlameCreationTask::setupDownloadJob(QEventLoop& loop) setProgress(current, total); }); connect(m_files_job.get(), &NetJob::stepProgress, this, &FlameCreationTask::propagateStepProgress); - connect(m_files_job.get(), &NetJob::finished, &loop, &QEventLoop::quit); setStatus(tr("Downloading mods...")); m_files_job->start(); @@ -626,9 +607,10 @@ void FlameCreationTask::copyBlockedMods(QList const& blocked_mods) setAbortable(true); } -void FlameCreationTask::validateZIPResources() +void FlameCreationTask::validateZIPResources(QEventLoop& loop) { qDebug() << "Validating whether resources stored as .zip are in the right place"; + QStringList zipMods; for (auto [fileName, targetFolder] : m_ZIP_resources) { qDebug() << "Checking" << fileName << "..."; auto localPath = FS::PathCombine(m_stagingPath, "minecraft", targetFolder, fileName); @@ -668,6 +650,7 @@ void FlameCreationTask::validateZIPResources() switch (type) { case PackedResourceType::Mod: validatePath(fileName, targetFolder, "mods"); + zipMods.push_back(fileName); break; case PackedResourceType::ResourcePack: validatePath(fileName, targetFolder, "resourcepacks"); @@ -693,4 +676,16 @@ void FlameCreationTask::validateZIPResources() break; } } + auto task = makeShared(this, "CreateModMetadata", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + auto results = m_mod_id_resolver->getResults().files; + auto folder = FS::PathCombine(m_stagingPath, "minecraft", "mods", ".index"); + for (auto file : results) { + if (file.targetFolder != "mods" || (file.version.fileName.endsWith(".zip") && !zipMods.contains(file.version.fileName))) { + continue; + } + task->addTask(makeShared(folder, file.pack, file.version)); + } + connect(task.get(), &Task::finished, &loop, &QEventLoop::quit); + m_process_update_file_info_job = task; + task->start(); } diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.h b/launcher/modplatform/flame/FlameInstanceCreationTask.h index 02ad48f2e..28ab176c2 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.h +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.h @@ -74,7 +74,7 @@ class FlameCreationTask final : public InstanceCreationTask { void idResolverSucceeded(QEventLoop&); void setupDownloadJob(QEventLoop&); void copyBlockedMods(QList const& blocked_mods); - void validateZIPResources(); + void validateZIPResources(QEventLoop& loop); QString getVersionForLoader(QString uid, QString loaderType, QString version, QString mcVersion); private: diff --git a/launcher/modplatform/flame/PackManifest.cpp b/launcher/modplatform/flame/PackManifest.cpp index 40a523d31..e576a6a84 100644 --- a/launcher/modplatform/flame/PackManifest.cpp +++ b/launcher/modplatform/flame/PackManifest.cpp @@ -68,35 +68,3 @@ void Flame::loadManifest(Flame::Manifest& m, const QString& filepath) } loadManifestV1(m, obj); } - -bool Flame::File::parseFromObject(const QJsonObject& obj, bool throw_on_blocked) -{ - fileName = Json::requireString(obj, "fileName"); - // This is a piece of a Flame project JSON pulled out into the file metadata (here) for convenience - // It is also optional - type = File::Type::SingleFile; - - targetFolder = "mods"; - - // get the hash - hash = QString(); - auto hashes = Json::ensureArray(obj, "hashes"); - for (QJsonValueRef item : hashes) { - auto hobj = Json::requireObject(item); - auto algo = Json::requireInteger(hobj, "algo"); - auto value = Json::requireString(hobj, "value"); - if (algo == 1) { - hash = value; - } - } - - // may throw, if the project is blocked - QString rawUrl = Json::ensureString(obj, "downloadUrl"); - url = QUrl(rawUrl, QUrl::TolerantMode); - if (!url.isValid() && throw_on_blocked) { - throw JSONValidationError(QString("Invalid URL: %1").arg(rawUrl)); - } - - resolved = true; - return true; -} diff --git a/launcher/modplatform/flame/PackManifest.h b/launcher/modplatform/flame/PackManifest.h index 4417c2430..49a0b2d68 100644 --- a/launcher/modplatform/flame/PackManifest.h +++ b/launcher/modplatform/flame/PackManifest.h @@ -40,26 +40,20 @@ #include #include #include +#include "modplatform/ModIndex.h" namespace Flame { struct File { - // NOTE: throws JSONValidationError - bool parseFromObject(const QJsonObject& object, bool throw_on_blocked = true); - int projectId = 0; int fileId = 0; // NOTE: the opposite to 'optional' bool required = true; - QString hash; - // NOTE: only set on blocked files ! Empty otherwise. - QString websiteUrl; + + ModPlatform::IndexedPack pack; + ModPlatform::IndexedVersion version; // our - bool resolved = false; - QString fileName; - QUrl url; QString targetFolder = QStringLiteral("mods"); - enum class Type { Unknown, Folder, Ctoc, SingleFile, Cmod2, Modpack, Mod } type = Type::Mod; }; struct Modloader { From 1021222c955b4b5f7416e91f51c619af118a2bf4 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 28 Jun 2024 20:28:52 +0300 Subject: [PATCH 097/616] create mod meta information when importing modrinth pack Signed-off-by: Trial97 --- launcher/modplatform/EnsureMetadataTask.cpp | 3 + launcher/modplatform/EnsureMetadataTask.h | 1 + .../modrinth/ModrinthInstanceCreationTask.cpp | 67 ++++++++++++++----- .../modrinth/ModrinthInstanceCreationTask.h | 9 +-- 4 files changed, 56 insertions(+), 24 deletions(-) diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index 43acea1a2..f6f49f38d 100644 --- a/launcher/modplatform/EnsureMetadataTask.cpp +++ b/launcher/modplatform/EnsureMetadataTask.cpp @@ -42,6 +42,9 @@ EnsureMetadataTask::EnsureMetadataTask(QList& mods, QDir dir, ModPlatform: m_hashing_task->addTask(hash_task); } } +EnsureMetadataTask::EnsureMetadataTask(QHash& mods, QDir dir, ModPlatform::ResourceProvider prov) + : Task(nullptr), m_mods(mods), m_index_dir(dir), m_provider(prov), m_current_task(nullptr) +{} Hashing::Hasher::Ptr EnsureMetadataTask::createNewHash(Mod* mod) { diff --git a/launcher/modplatform/EnsureMetadataTask.h b/launcher/modplatform/EnsureMetadataTask.h index a32a9fce1..631b32ae7 100644 --- a/launcher/modplatform/EnsureMetadataTask.h +++ b/launcher/modplatform/EnsureMetadataTask.h @@ -16,6 +16,7 @@ class EnsureMetadataTask : public Task { public: EnsureMetadataTask(Mod*, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH); EnsureMetadataTask(QList&, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH); + EnsureMetadataTask(QHash&, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH); ~EnsureMetadataTask() = default; diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index c0806a638..acbc7376c 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -5,8 +5,12 @@ #include "InstanceList.h" #include "Json.h" +#include "QObjectPtr.h" +#include "minecraft/MinecraftInstance.h" #include "minecraft/PackProfile.h" +#include "minecraft/mod/Mod.h" +#include "modplatform/EnsureMetadataTask.h" #include "modplatform/helpers/OverrideUtils.h" #include "modplatform/modrinth/ModrinthPackManifest.h" @@ -21,6 +25,7 @@ #include #include +#include #include bool ModrinthCreationTask::abort() @@ -29,8 +34,8 @@ bool ModrinthCreationTask::abort() return false; m_abort = true; - if (m_files_job) - m_files_job->abort(); + if (m_task) + m_task->abort(); return Task::abort(); } @@ -234,11 +239,11 @@ bool ModrinthCreationTask::createInstance() instance.setName(name()); instance.saveNow(); - m_files_job.reset(new NetJob(tr("Mod Download Modrinth"), APPLICATION->network())); + auto downloadMods = makeShared(tr("Mod Download Modrinth"), APPLICATION->network()); auto root_modpack_path = FS::PathCombine(m_stagingPath, m_root_path); auto root_modpack_url = QUrl::fromLocalFile(root_modpack_path); - + QHash mods; for (auto file : m_files) { auto fileName = file.path; fileName = FS::RemoveInvalidPathChars(fileName); @@ -249,20 +254,27 @@ bool ModrinthCreationTask::createInstance() .arg(fileName)); return false; } + if (fileName.startsWith("mods/")) { + auto mod = new Mod(file_path); + ModDetails d; + d.mod_id = file_path; + mod->setDetails(d); + mods[file.hash.toHex()] = mod; + } qDebug() << "Will try to download" << file.downloads.front() << "to" << file_path; auto dl = Net::ApiDownload::makeFile(file.downloads.dequeue(), file_path); dl->addValidator(new Net::ChecksumValidator(file.hashAlgorithm, file.hash)); - m_files_job->addNetAction(dl); + downloadMods->addNetAction(dl); if (!file.downloads.empty()) { // FIXME: This really needs to be put into a ConcurrentTask of // MultipleOptionsTask's , once those exist :) auto param = dl.toWeakRef(); - connect(dl.get(), &Task::failed, [this, &file, file_path, param] { + connect(dl.get(), &Task::failed, [&file, file_path, param, downloadMods] { auto ndl = Net::ApiDownload::makeFile(file.downloads.dequeue(), file_path); ndl->addValidator(new Net::ChecksumValidator(file.hashAlgorithm, file.hash)); - m_files_job->addNetAction(ndl); + downloadMods->addNetAction(ndl); if (auto shared = param.lock()) shared->succeeded(); }); @@ -271,23 +283,44 @@ bool ModrinthCreationTask::createInstance() bool ended_well = false; - connect(m_files_job.get(), &NetJob::succeeded, this, [&]() { ended_well = true; }); - connect(m_files_job.get(), &NetJob::failed, [&](const QString& reason) { + connect(downloadMods.get(), &NetJob::succeeded, this, [&]() { ended_well = true; }); + connect(downloadMods.get(), &NetJob::failed, [&](const QString& reason) { ended_well = false; setError(reason); }); - connect(m_files_job.get(), &NetJob::finished, &loop, &QEventLoop::quit); - connect(m_files_job.get(), &NetJob::progress, [&](qint64 current, qint64 total) { + connect(downloadMods.get(), &NetJob::finished, &loop, &QEventLoop::quit); + connect(downloadMods.get(), &NetJob::progress, [&](qint64 current, qint64 total) { setDetails(tr("%1 out of %2 complete").arg(current).arg(total)); setProgress(current, total); }); - connect(m_files_job.get(), &NetJob::stepProgress, this, &ModrinthCreationTask::propagateStepProgress); + connect(downloadMods.get(), &NetJob::stepProgress, this, &ModrinthCreationTask::propagateStepProgress); setStatus(tr("Downloading mods...")); - m_files_job->start(); + downloadMods->start(); + m_task = downloadMods; loop.exec(); + QEventLoop ensureMetaLoop; + QDir folder = FS::PathCombine(m_stagingPath, "minecraft", "mods", ".index"); + auto ensureMetadataTask = makeShared(mods, folder, ModPlatform::ResourceProvider::MODRINTH); + connect(ensureMetadataTask.get(), &Task::succeeded, this, [&]() { ended_well = true; }); + connect(ensureMetadataTask.get(), &Task::finished, &ensureMetaLoop, &QEventLoop::quit); + connect(ensureMetadataTask.get(), &Task::progress, [&](qint64 current, qint64 total) { + setDetails(tr("%1 out of %2 complete").arg(current).arg(total)); + setProgress(current, total); + }); + connect(ensureMetadataTask.get(), &Task::stepProgress, this, &ModrinthCreationTask::propagateStepProgress); + + ensureMetadataTask->start(); + m_task = ensureMetadataTask; + + ensureMetaLoop.exec(); + for (auto m : mods) { + delete m; + } + mods.clear(); + // Update information of the already installed instance, if any. if (m_instance && ended_well) { setAbortable(false); @@ -348,11 +381,11 @@ bool ModrinthCreationTask::parseManifest(const QString& index_path, QJsonObject hashes = Json::requireObject(modInfo, "hashes"); QString hash; QCryptographicHash::Algorithm hashAlgorithm; - hash = Json::ensureString(hashes, "sha1"); - hashAlgorithm = QCryptographicHash::Sha1; + hash = Json::ensureString(hashes, "sha512"); + hashAlgorithm = QCryptographicHash::Sha512; if (hash.isEmpty()) { - hash = Json::ensureString(hashes, "sha512"); - hashAlgorithm = QCryptographicHash::Sha512; + hash = Json::ensureString(hashes, "sha1"); + hashAlgorithm = QCryptographicHash::Sha1; if (hash.isEmpty()) { hash = Json::ensureString(hashes, "sha256"); hashAlgorithm = QCryptographicHash::Sha256; diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h index f07734a58..0879474cf 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h @@ -1,15 +1,10 @@ #pragma once +#include "BaseInstance.h" #include "InstanceCreationTask.h" -#include - -#include "minecraft/MinecraftInstance.h" - #include "modplatform/modrinth/ModrinthPackManifest.h" -#include "net/NetJob.h" - class ModrinthCreationTask final : public InstanceCreationTask { Q_OBJECT @@ -43,7 +38,7 @@ class ModrinthCreationTask final : public InstanceCreationTask { QString m_managed_id, m_managed_version_id, m_managed_name; std::vector m_files; - NetJob::Ptr m_files_job; + Task::Ptr m_task; std::optional m_instance; From 4ad19cded588dba201f3d1cdc2db248694a6101d Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 28 Jun 2024 20:45:54 +0300 Subject: [PATCH 098/616] format Signed-off-by: Trial97 --- launcher/minecraft/launch/AutoInstallJava.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index c77b9b105..eefed9cf5 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -56,7 +56,7 @@ AutoInstallJava::AutoInstallJava(LaunchTask* parent) : LaunchStep(parent) , m_instance(std::dynamic_pointer_cast(m_parent->instance())) - , m_supported_arch(SysInfo::getSupportedJavaArchitecture()){}; + , m_supported_arch(SysInfo::getSupportedJavaArchitecture()) {}; void AutoInstallJava::executeTask() { From ebad11d34f6f95b85eb392cc05ce0beccd7cb962 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 28 Jun 2024 22:04:11 +0300 Subject: [PATCH 099/616] made sure const method is respected Signed-off-by: Trial97 --- launcher/ui/pages/instance/ModFolderPage.cpp | 37 ++++++++++++-------- 1 file changed, 22 insertions(+), 15 deletions(-) diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index 4cf4b5bb0..f2feb8c7f 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -323,7 +323,27 @@ void ModFolderPage::updateMods(bool includeDeps) CoreModFolderPage::CoreModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent) : ModFolderPage(inst, mods, parent) -{} +{ + auto mcInst = dynamic_cast(m_instance); + if (mcInst) { + auto version = mcInst->getPackProfile(); + if (version && version->getComponent("net.minecraftforge") && version->getComponent("net.minecraft")) { + auto minecraftCmp = version->getComponent("net.minecraft"); + if (!minecraftCmp->m_loaded) { + version->reload(Net::Mode::Offline); + auto update = version->getCurrentTask(); + if (update) { + connect(update.get(), &Task::finished, this, [this] { + if (m_container) { + m_container->refreshContainer(); + } + }); + update->start(); + } + } + } + } +} bool CoreModFolderPage::shouldDisplay() const { @@ -336,20 +356,7 @@ bool CoreModFolderPage::shouldDisplay() const if (!version || !version->getComponent("net.minecraftforge") || !version->getComponent("net.minecraft")) return false; auto minecraftCmp = version->getComponent("net.minecraft"); - if (!minecraftCmp->m_loaded) { - version->reload(Net::Mode::Offline); - auto update = version->getCurrentTask(); - if (update) { - connect(update.get(), &Task::finished, this, [this] { - if (m_container) { - m_container->refreshContainer(); - } - }); - update->start(); - } - return false; - } - return minecraftCmp->getReleaseDateTime() < g_VersionFilterData.legacyCutoffDate; + return minecraftCmp->m_loaded && minecraftCmp->getReleaseDateTime() < g_VersionFilterData.legacyCutoffDate; } return false; } From 44bf0315ada1715145a8ed91b4f573ec7fcc4092 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Thu, 20 Jun 2024 15:55:58 -0700 Subject: [PATCH 100/616] feat(components) recomend the correct lwjgl version for the minecraft version Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/meta/VersionList.cpp | 12 +++++++++++- launcher/meta/VersionList.h | 3 +++ launcher/ui/pages/instance/VersionPage.cpp | 18 ++++++++++++++++-- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/launcher/meta/VersionList.cpp b/launcher/meta/VersionList.cpp index f21e4594a..09c83e0b1 100644 --- a/launcher/meta/VersionList.cpp +++ b/launcher/meta/VersionList.cpp @@ -99,7 +99,7 @@ QVariant VersionList::data(const QModelIndex& index, int role) const case VersionPtrRole: return QVariant::fromValue(version); case RecommendedRole: - return version->isRecommended(); + return version->isRecommended() || m_externalRecommendsVersions.contains(version->version()); // FIXME: this should be determined in whatever view/proxy is used... // case LatestRole: return version == getLatestStable(); default: @@ -179,6 +179,16 @@ void VersionList::parse(const QJsonObject& obj) parseVersionList(obj, this); } +void VersionList::addExternalRecomends(const QVector& recomends) +{ + m_externalRecommendsVersions.append(recomends); +} + +void VersionList::clearExternalRecomends() +{ + m_externalRecommendsVersions.clear(); +} + // FIXME: this is dumb, we have 'recommended' as part of the metadata already... static const Meta::Version::Ptr& getBetterVersion(const Meta::Version::Ptr& a, const Meta::Version::Ptr& b) { diff --git a/launcher/meta/VersionList.h b/launcher/meta/VersionList.h index 90e0c8e5e..24ff6a1ce 100644 --- a/launcher/meta/VersionList.h +++ b/launcher/meta/VersionList.h @@ -68,6 +68,8 @@ class VersionList : public BaseVersionList, public BaseEntity { void merge(const VersionList::Ptr& other); void mergeFromIndex(const VersionList::Ptr& other); void parse(const QJsonObject& obj) override; + void addExternalRecomends(const QVector& recomends); + void clearExternalRecomends(); signals: void nameChanged(const QString& name); @@ -77,6 +79,7 @@ class VersionList : public BaseVersionList, public BaseEntity { private: QVector m_versions; + QStringList m_externalRecommendsVersions; QHash m_lookup; QString m_uid; QString m_name; diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index 807bc5d58..545798499 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -49,8 +49,10 @@ #include #include #include +#include #include "VersionPage.h" +#include "meta/JsonFormat.h" #include "ui/dialogs/InstallLoaderDialog.h" #include "ui_VersionPage.h" @@ -63,11 +65,9 @@ #include "DesktopServices.h" #include "Exception.h" -#include "Version.h" #include "icons/IconList.h" #include "minecraft/PackProfile.h" #include "minecraft/auth/AccountList.h" -#include "minecraft/mod/Mod.h" #include "meta/Index.h" #include "meta/VersionList.h" @@ -370,11 +370,25 @@ void VersionPage::on_actionChange_version_triggered() auto patch = m_profile->getComponent(versionRow); auto name = patch->getName(); auto list = patch->getVersionList(); + list->clearExternalRecomends(); if (!list) { return; } auto uid = list->uid(); + // recommend the correct lwjgl version for the current minecraft version + if (uid == "org.lwjgl" || uid == "org.lwjgl3") { + auto minecraft = m_profile->getComponent("net.minecraft"); + auto lwjglReq = std::find_if(minecraft->m_cachedRequires.cbegin(), minecraft->m_cachedRequires.cend(), + [uid](const Meta::Require& req) -> bool { return req.uid == uid; }); + if (lwjglReq != minecraft->m_cachedRequires.cend()) { + auto lwjglVersion = !lwjglReq->equalsVersion.isEmpty() ? lwjglReq->equalsVersion : lwjglReq->suggests; + if (!lwjglVersion.isEmpty()) { + list->addExternalRecomends({ lwjglVersion }); + } + } + } + VersionSelectDialog vselect(list.get(), tr("Change %1 version").arg(name), this); if (uid == "net.fabricmc.intermediary" || uid == "org.quiltmc.hashed") { vselect.setEmptyString(tr("No intermediary mappings versions are currently available.")); From a791e22853da4c93f006883f78f22a4664f06972 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Thu, 20 Jun 2024 19:46:14 -0700 Subject: [PATCH 101/616] fix(instance components): resolve instance componants when changing minecraft version Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/meta/VersionList.cpp | 28 +++++++++++++ launcher/meta/VersionList.h | 2 + launcher/minecraft/Component.cpp | 5 +++ launcher/minecraft/PackProfile.cpp | 65 +++++++++++++++++++++++++++++- launcher/minecraft/PackProfile.h | 4 ++ 5 files changed, 103 insertions(+), 1 deletion(-) diff --git a/launcher/meta/VersionList.cpp b/launcher/meta/VersionList.cpp index 09c83e0b1..0cd33a2b3 100644 --- a/launcher/meta/VersionList.cpp +++ b/launcher/meta/VersionList.cpp @@ -16,6 +16,7 @@ #include "VersionList.h" #include +#include #include "Application.h" #include "Index.h" @@ -273,4 +274,31 @@ void VersionList::waitToLoad() task->start(); ev.exec(); } + +Version::Ptr VersionList::getRecommendedForParent(const QString& uid, const QString& version) +{ + auto foundExplicit = std::find_if(m_versions.begin(), m_versions.end(), [uid, version](Version::Ptr ver) -> bool { + auto& reqs = ver->requiredSet(); + auto parentReq = std::find_if(reqs.begin(), reqs.end(), [uid, version](const Require& req) -> bool { + return req.uid == uid && req.equalsVersion == version; + }); + return parentReq != reqs.end() && ver->isRecommended(); + }); + if (foundExplicit != m_versions.end()) { + return *foundExplicit; + } + + Version::Ptr latestCompat = nullptr; + for (auto ver : m_versions) { + auto& reqs = ver->requiredSet(); + auto parentReq = std::find_if(reqs.begin(), reqs.end(), [uid, version](const Require& req) -> bool { + return req.uid == uid && req.equalsVersion == version; + }); + if (parentReq != reqs.end()) { + latestCompat = getBetterVersion(latestCompat, ver); + } + } + return latestCompat; +} + } // namespace Meta diff --git a/launcher/meta/VersionList.h b/launcher/meta/VersionList.h index 24ff6a1ce..b746d3232 100644 --- a/launcher/meta/VersionList.h +++ b/launcher/meta/VersionList.h @@ -43,6 +43,8 @@ class VersionList : public BaseVersionList, public BaseEntity { void sortVersions() override; BaseVersion::Ptr getRecommended() const override; + Version::Ptr getRecommendedForParent(const QString& uid, const QString& version); + QVariant data(const QModelIndex& index, int role) const override; RoleList providesRoles() const override; diff --git a/launcher/minecraft/Component.cpp b/launcher/minecraft/Component.cpp index 32a1deb68..f03ffacc0 100644 --- a/launcher/minecraft/Component.cpp +++ b/launcher/minecraft/Component.cpp @@ -402,3 +402,8 @@ void Component::updateCachedData() emit dataChanged(); } } + +QDebug operator<<(QDebug d, const Component& comp) { + d << "Component(" << comp.m_uid << " : " << comp.m_cachedVersion << ")"; + return d; +} diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index 4b17cdf07..b258d8241 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -38,6 +38,8 @@ */ #include +#include +#include #include #include #include @@ -47,10 +49,14 @@ #include #include #include +#include +#include "Application.h" #include "Exception.h" #include "FileSystem.h" #include "Json.h" +#include "meta/Index.h" +#include "meta/JsonFormat.h" #include "minecraft/MinecraftInstance.h" #include "minecraft/OneSixVersionFormat.h" #include "minecraft/ProfileUtils.h" @@ -58,7 +64,6 @@ #include "ComponentUpdateTask.h" #include "PackProfile.h" #include "PackProfile_p.h" -#include "minecraft/mod/Mod.h" #include "modplatform/ModIndex.h" static const QMap modloaderMapping{ { "net.neoforged", ModPlatform::NeoForge }, @@ -956,6 +961,35 @@ bool PackProfile::setComponentVersion(const QString& uid, const QString& version if (component->revert()) { component->setVersion(version); component->setImportant(important); + component->updateCachedData(); + // remove linked componants to let them reresolve their versions + if (important) { + auto linked = collectTreeLinked(uid); + for (auto comp : linked) { + if (comp->isCustom()) { + continue; + } + if (modloaderMapping.contains(comp->getID())) { + qDebug() << comp->getID() << "is a mod loader, setting new recomended version..."; + auto versionList = APPLICATION->metadataIndex()->get(comp->getID()); + if (versionList) { + auto recomended = versionList->getRecommendedForParent(comp->getID(), version); + if (recomended) { + qDebug() << "Setting updated loader version: " << comp->getID() << " = " << recomended->version(); + setComponentVersion(comp->getID(), recomended->version()); + } else { + qDebug() << "no recomended verison for" << comp->getID(); + } + } else { + qDebug() << "no version list in metadata index for" << comp->getID(); + } + } else { + qDebug() << comp->getID() << ":" << comp->getVersion() << "linked to important component: " << uid + << " | Removing so it re-resolves"; + remove(comp->getID()); + } + } + } return true; } return false; @@ -969,6 +1003,35 @@ bool PackProfile::setComponentVersion(const QString& uid, const QString& version } } +ComponentContainer PackProfile::collectTreeLinked(const QString& uid) +{ + ComponentContainer linked; + for (auto comp : d->components) { + qDebug() << "scanning" << comp->getID() << "for tree link"; + auto dep = std::find_if(comp->m_cachedRequires.cbegin(), comp->m_cachedRequires.cend(), + [uid](const Meta::Require& req) -> bool { return req.uid == uid; }); + if (dep != comp->m_cachedRequires.cend()) { + qDebug() << comp->getID() << "depends on" << uid; + linked.append(comp); + } + } + auto iter = d->componentIndex.find(uid); + if (iter != d->componentIndex.end()) { + ComponentPtr comp = *iter; + comp->updateCachedData(); + qDebug() << comp->getID() << "has" << comp->m_cachedRequires.size() << "dependencies"; + for (auto dep : comp->m_cachedRequires) { + qDebug() << uid << "depends on" << comp->getID(); + auto found = d->componentIndex.find(dep.uid); + if (found != d->componentIndex.end()) { + qDebug() << comp->getID() << "is present"; + linked.append(*found); + } + } + } + return linked; +} + QString PackProfile::getComponentVersion(const QString& uid) const { const auto iter = d->componentIndex.find(uid); diff --git a/launcher/minecraft/PackProfile.h b/launcher/minecraft/PackProfile.h index e58e9ae9a..f733b3524 100644 --- a/launcher/minecraft/PackProfile.h +++ b/launcher/minecraft/PackProfile.h @@ -48,6 +48,7 @@ #include "Component.h" #include "LaunchProfile.h" +#include "minecraft/PackProfile_p.h" #include "modplatform/ModIndex.h" #include "net/Mode.h" @@ -119,6 +120,9 @@ class PackProfile : public QAbstractListModel { bool setComponentVersion(const QString& uid, const QString& version, bool important = false); + /// collects components that are dependant on or dependencies of the component + ComponentContainer collectTreeLinked(const QString& uid); + bool installEmpty(const QString& uid, const QString& name); QString patchFilePathForUid(const QString& uid) const; From ce280c2d04c8536cc06c012208899430fb6037de Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Mon, 24 Jun 2024 12:55:33 -0700 Subject: [PATCH 102/616] fix misepellings Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/PackProfile.cpp | 15 +++++++-------- launcher/minecraft/PackProfile_p.h | 2 +- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index b258d8241..bdc80b923 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -961,8 +961,7 @@ bool PackProfile::setComponentVersion(const QString& uid, const QString& version if (component->revert()) { component->setVersion(version); component->setImportant(important); - component->updateCachedData(); - // remove linked componants to let them reresolve their versions + // remove linked components to let them re-resolve their versions if (important) { auto linked = collectTreeLinked(uid); for (auto comp : linked) { @@ -970,15 +969,15 @@ bool PackProfile::setComponentVersion(const QString& uid, const QString& version continue; } if (modloaderMapping.contains(comp->getID())) { - qDebug() << comp->getID() << "is a mod loader, setting new recomended version..."; + qDebug() << comp->getID() << "is a mod loader, setting new recommended version..."; auto versionList = APPLICATION->metadataIndex()->get(comp->getID()); if (versionList) { - auto recomended = versionList->getRecommendedForParent(comp->getID(), version); - if (recomended) { - qDebug() << "Setting updated loader version: " << comp->getID() << " = " << recomended->version(); - setComponentVersion(comp->getID(), recomended->version()); + auto recommended = versionList->getRecommendedForParent(comp->getID(), version); + if (recommended) { + qDebug() << "Setting updated loader version: " << comp->getID() << " = " << recommended->version(); + setComponentVersion(comp->getID(), recommended->version()); } else { - qDebug() << "no recomended verison for" << comp->getID(); + qDebug() << "no recommended version for" << comp->getID(); } } else { qDebug() << "no version list in metadata index for" << comp->getID(); diff --git a/launcher/minecraft/PackProfile_p.h b/launcher/minecraft/PackProfile_p.h index 0cd4fb839..4fb3621f0 100644 --- a/launcher/minecraft/PackProfile_p.h +++ b/launcher/minecraft/PackProfile_p.h @@ -3,8 +3,8 @@ #include #include #include -#include #include "Component.h" +#include "tasks/Task.h" class MinecraftInstance; using ComponentContainer = QList; From a94a081b9c1347d65157ae3162d9adb8fee93c6a Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Mon, 24 Jun 2024 17:08:23 -0700 Subject: [PATCH 103/616] add better profile logging properly resolve important dependencies Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/CMakeLists.txt | 27 +++- launcher/meta/VersionList.cpp | 4 + launcher/meta/VersionList.h | 1 + launcher/minecraft/Component.cpp | 12 ++ launcher/minecraft/Component.h | 2 + launcher/minecraft/ComponentUpdateTask.cpp | 61 ++++----- launcher/minecraft/ComponentUpdateTask_p.h | 4 +- launcher/minecraft/Logging.cpp | 25 ++++ launcher/minecraft/Logging.h | 26 ++++ launcher/minecraft/PackProfile.cpp | 136 +++++++++++++-------- launcher/modplatform/ModIndex.h | 2 +- 11 files changed, 215 insertions(+), 85 deletions(-) create mode 100644 launcher/minecraft/Logging.cpp create mode 100644 launcher/minecraft/Logging.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 366719dec..e18a8b950 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -206,6 +206,11 @@ set(ICONS_SOURCES # Support for Minecraft instances and launch set(MINECRAFT_SOURCES + + # Logging + minecraft/Logging.h + minecraft/Logging.cpp + # Minecraft support minecraft/auth/AccountData.cpp minecraft/auth/AccountData.h @@ -650,6 +655,22 @@ ecm_qt_declare_logging_category(CORE_SOURCES EXPORT "${Launcher_Name}" ) +ecm_qt_export_logging_category( + IDENTIFIER instanceProfileC + CATEGORY_NAME "launcher.instance.profile" + DEFAULT_SEVERITY Debug + DESCRIPTION "Profile actions" + EXPORT "${Launcher_Name}" +) + +ecm_qt_export_logging_category( + IDENTIFIER instanceProfileResolveC + CATEGORY_NAME "launcher.instance.profile.resolve" + DEFAULT_SEVERITY Debug + DESCRIPTION "Profile component resolusion actions" + EXPORT "${Launcher_Name}" +) + ecm_qt_export_logging_category( IDENTIFIER taskLogC CATEGORY_NAME "launcher.task" @@ -662,7 +683,7 @@ ecm_qt_export_logging_category( IDENTIFIER taskNetLogC CATEGORY_NAME "launcher.task.net" DEFAULT_SEVERITY Debug - DESCRIPTION "task network action" + DESCRIPTION "Task network action" EXPORT "${Launcher_Name}" ) @@ -670,14 +691,14 @@ ecm_qt_export_logging_category( IDENTIFIER taskDownloadLogC CATEGORY_NAME "launcher.task.net.download" DEFAULT_SEVERITY Debug - DESCRIPTION "task network download actions" + DESCRIPTION "Task network download actions" EXPORT "${Launcher_Name}" ) ecm_qt_export_logging_category( IDENTIFIER taskUploadLogC CATEGORY_NAME "launcher.task.net.upload" DEFAULT_SEVERITY Debug - DESCRIPTION "task network upload actions" + DESCRIPTION "Task network upload actions" EXPORT "${Launcher_Name}" ) diff --git a/launcher/meta/VersionList.cpp b/launcher/meta/VersionList.cpp index 0cd33a2b3..c133e7d1a 100644 --- a/launcher/meta/VersionList.cpp +++ b/launcher/meta/VersionList.cpp @@ -287,7 +287,11 @@ Version::Ptr VersionList::getRecommendedForParent(const QString& uid, const QStr if (foundExplicit != m_versions.end()) { return *foundExplicit; } + return nullptr; +} +Version::Ptr VersionList::getLatestForParent(const QString& uid, const QString& version) +{ Version::Ptr latestCompat = nullptr; for (auto ver : m_versions) { auto& reqs = ver->requiredSet(); diff --git a/launcher/meta/VersionList.h b/launcher/meta/VersionList.h index b746d3232..05ecd91d2 100644 --- a/launcher/meta/VersionList.h +++ b/launcher/meta/VersionList.h @@ -44,6 +44,7 @@ class VersionList : public BaseVersionList, public BaseEntity { BaseVersion::Ptr getRecommended() const override; Version::Ptr getRecommendedForParent(const QString& uid, const QString& version); + Version::Ptr getLatestForParent(const QString& uid, const QString& version); QVariant data(const QModelIndex& index, int role) const override; diff --git a/launcher/minecraft/Component.cpp b/launcher/minecraft/Component.cpp index f03ffacc0..175e88d08 100644 --- a/launcher/minecraft/Component.cpp +++ b/launcher/minecraft/Component.cpp @@ -403,6 +403,18 @@ void Component::updateCachedData() } } +void Component::waitLoadMeta() { + + if (!m_loaded) { + if (!m_metaVersion || !m_metaVersion->isLoaded()) { + // wait for the loaded version from meta + m_metaVersion = APPLICATION->metadataIndex()->getLoadedVersion(m_uid, m_version); + } + m_loaded = true; + updateCachedData(); + } +} + QDebug operator<<(QDebug d, const Component& comp) { d << "Component(" << comp.m_uid << " : " << comp.m_cachedVersion << ")"; return d; diff --git a/launcher/minecraft/Component.h b/launcher/minecraft/Component.h index 8aa6b4743..581a3db95 100644 --- a/launcher/minecraft/Component.h +++ b/launcher/minecraft/Component.h @@ -64,6 +64,8 @@ class Component : public QObject, public ProblemProvider { bool revert(); void updateCachedData(); + + void waitLoadMeta(); signals: void dataChanged(); diff --git a/launcher/minecraft/ComponentUpdateTask.cpp b/launcher/minecraft/ComponentUpdateTask.cpp index 4d205af6c..7bdc11400 100644 --- a/launcher/minecraft/ComponentUpdateTask.cpp +++ b/launcher/minecraft/ComponentUpdateTask.cpp @@ -8,6 +8,7 @@ #include "cassert" #include "meta/Index.h" #include "meta/Version.h" +#include "minecraft/MinecraftInstance.h" #include "minecraft/OneSixVersionFormat.h" #include "minecraft/ProfileUtils.h" #include "net/Mode.h" @@ -15,6 +16,8 @@ #include "Application.h" #include "tasks/Task.h" +#include "minecraft/Logging.h" + /* * This is responsible for loading the components of a component list AND resolving dependency issues between them */ @@ -36,7 +39,7 @@ ComponentUpdateTask::ComponentUpdateTask(Mode mode, Net::Mode netmode, PackProfile* list, QObject* parent) : Task(parent) { d.reset(new ComponentUpdateTaskData); - d->m_list = list; + d->m_profile = list; d->mode = mode; d->netmode = netmode; } @@ -45,7 +48,7 @@ ComponentUpdateTask::~ComponentUpdateTask() {} void ComponentUpdateTask::executeTask() { - qDebug() << "Loading components"; + qCDebug(instanceProfileResolveC) << "Loading components"; loadComponents(); } @@ -63,7 +66,7 @@ LoadResult composeLoadResult(LoadResult a, LoadResult b) static LoadResult loadComponent(ComponentPtr component, Task::Ptr& loadTask, Net::Mode netmode) { if (component->m_loaded) { - qDebug() << component->getName() << "is already loaded"; + qCDebug(instanceProfileResolveC) << component->getName() << "is already loaded"; return LoadResult::LoadedLocal; } @@ -144,7 +147,7 @@ void ComponentUpdateTask::loadComponents() d->remoteLoadSuccessful = true; // load all the components OR their lists... - for (auto component : d->m_list->d->components) { + for (auto component : d->m_profile->d->components) { Task::Ptr loadTask; LoadResult singleResult; RemoteLoadStatus::Type loadType; @@ -175,7 +178,7 @@ void ComponentUpdateTask::loadComponents() } result = composeLoadResult(result, singleResult); if (loadTask) { - qDebug() << "Remote loading is being run for" << component->getName(); + qCDebug(instanceProfileResolveC) << d->m_profile->d->m_instance->name() << "|" << "Remote loading is being run for" << component->getName(); connect(loadTask.get(), &Task::succeeded, this, [this, taskIndex]() { remoteLoadSucceeded(taskIndex); }); connect(loadTask.get(), &Task::failed, this, [this, taskIndex](const QString& error) { remoteLoadFailed(taskIndex, error); }); connect(loadTask.get(), &Task::aborted, this, [this, taskIndex]() { remoteLoadFailed(taskIndex, tr("Aborted")); }); @@ -270,7 +273,7 @@ static bool gatherRequirementsFromComponents(const ComponentContainer& input, Re output.erase(componenRequireEx); output.insert(result.outcome); } else { - qCritical() << "Conflicting requirements:" << componentRequire.uid << "versions:" << componentRequire.equalsVersion + qCCritical(instanceProfileResolveC) << "Conflicting requirements:" << componentRequire.uid << "versions:" << componentRequire.equalsVersion << ";" << (*found).equalsVersion; } succeeded &= result.ok; @@ -353,22 +356,22 @@ static bool getTrivialComponentChanges(const ComponentIndex& index, const Requir } while (false); switch (decision) { case Decision::Undetermined: - qCritical() << "No decision for" << reqStr; + qCCritical(instanceProfileResolveC) << "No decision for" << reqStr; succeeded = false; break; case Decision::Met: - qDebug() << reqStr << "Is met."; + qCDebug(instanceProfileResolveC) << reqStr << "Is met."; break; case Decision::Missing: - qDebug() << reqStr << "Is missing and should be added at" << req.indexOfFirstDependee; + qCDebug(instanceProfileResolveC) << reqStr << "Is missing and should be added at" << req.indexOfFirstDependee; toAdd.insert(req); break; case Decision::VersionNotSame: - qDebug() << reqStr << "already has different version that can be changed."; + qCDebug(instanceProfileResolveC) << reqStr << "already has different version that can be changed."; toChange.insert(req); break; case Decision::LockedVersionNotSame: - qDebug() << reqStr << "already has different version that cannot be changed."; + qCDebug(instanceProfileResolveC) << reqStr << "already has different version that cannot be changed."; succeeded = false; break; } @@ -381,7 +384,7 @@ static bool getTrivialComponentChanges(const ComponentIndex& index, const Requir // FIXME: throw all this away and use a graph void ComponentUpdateTask::resolveDependencies(bool checkOnly) { - qDebug() << "Resolving dependencies"; + qCDebug(instanceProfileResolveC) << "Resolving dependencies"; /* * this is a naive dependency resolving algorithm. all it does is check for following conditions and react in simple ways: * 1. There are conflicting dependencies on the same uid with different exact version numbers @@ -393,8 +396,8 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) * * NOTE: this is a placeholder and should eventually be replaced with something 'serious' */ - auto& components = d->m_list->d->components; - auto& componentIndex = d->m_list->d->componentIndex; + auto& components = d->m_profile->d->components; + auto& componentIndex = d->m_profile->d->componentIndex; RequireExSet allRequires; QStringList toRemove; @@ -407,10 +410,10 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) } getTrivialRemovals(components, allRequires, toRemove); if (!toRemove.isEmpty()) { - qDebug() << "Removing obsolete components..."; + qCDebug(instanceProfileResolveC) << "Removing obsolete components..."; for (auto& remove : toRemove) { - qDebug() << "Removing" << remove; - d->m_list->remove(remove); + qCDebug(instanceProfileResolveC) << "Removing" << remove; + d->m_profile->remove(remove); } } } while (!toRemove.isEmpty()); @@ -434,14 +437,14 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) if (toAdd.size()) { // add stuff... for (auto& add : toAdd) { - auto component = makeShared(d->m_list, add.uid); + auto component = makeShared(d->m_profile, add.uid); if (!add.equalsVersion.isEmpty()) { // exact version - qDebug() << "Adding" << add.uid << "version" << add.equalsVersion << "at position" << add.indexOfFirstDependee; + qCDebug(instanceProfileResolveC) << "Adding" << add.uid << "version" << add.equalsVersion << "at position" << add.indexOfFirstDependee; component->m_version = add.equalsVersion; } else { // version needs to be decided - qDebug() << "Adding" << add.uid << "at position" << add.indexOfFirstDependee; + qCDebug(instanceProfileResolveC) << "Adding" << add.uid << "at position" << add.indexOfFirstDependee; // ############################################################################################################ // HACK HACK HACK HACK FIXME: this is a placeholder for deciding what version to use. For now, it is hardcoded. if (!add.suggests.isEmpty()) { @@ -464,7 +467,7 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) } component->m_dependencyOnly = true; // FIXME: this should not work directly with the component list - d->m_list->insertComponent(add.indexOfFirstDependee, component); + d->m_profile->insertComponent(add.indexOfFirstDependee, component); componentIndex[add.uid] = component; } recursionNeeded = true; @@ -473,7 +476,7 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) // change a version of something that exists for (auto& change : toChange) { // FIXME: this should not work directly with the component list - qDebug() << "Setting version of " << change.uid << "to" << change.equalsVersion; + qCDebug(instanceProfileResolveC) << "Setting version of " << change.uid << "to" << change.equalsVersion; auto component = componentIndex[change.uid]; component->setVersion(change.equalsVersion); } @@ -490,7 +493,7 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) void ComponentUpdateTask::remoteLoadSucceeded(size_t taskIndex) { if (static_cast(d->remoteLoadStatusList.size()) < taskIndex) { - qWarning() << "Got task index outside of results" << taskIndex; + qCWarning(instanceProfileResolveC) << "Got task index outside of results" << taskIndex; return; } auto& taskSlot = d->remoteLoadStatusList[taskIndex]; @@ -498,16 +501,16 @@ void ComponentUpdateTask::remoteLoadSucceeded(size_t taskIndex) disconnect(taskSlot.task.get(), &Task::failed, this, nullptr); disconnect(taskSlot.task.get(), &Task::aborted, this, nullptr); if (taskSlot.finished) { - qWarning() << "Got multiple results from remote load task" << taskIndex; + qCWarning(instanceProfileResolveC) << "Got multiple results from remote load task" << taskIndex; return; } - qDebug() << "Remote task" << taskIndex << "succeeded"; + qCDebug(instanceProfileResolveC) << "Remote task" << taskIndex << "succeeded"; taskSlot.succeeded = false; taskSlot.finished = true; d->remoteTasksInProgress--; // update the cached data of the component from the downloaded version file. if (taskSlot.type == RemoteLoadStatus::Type::Version) { - auto component = d->m_list->getComponent(taskSlot.PackProfileIndex); + auto component = d->m_profile->getComponent(taskSlot.PackProfileIndex); component->m_loaded = true; component->updateCachedData(); } @@ -517,7 +520,7 @@ void ComponentUpdateTask::remoteLoadSucceeded(size_t taskIndex) void ComponentUpdateTask::remoteLoadFailed(size_t taskIndex, const QString& msg) { if (static_cast(d->remoteLoadStatusList.size()) < taskIndex) { - qWarning() << "Got task index outside of results" << taskIndex; + qCWarning(instanceProfileResolveC) << "Got task index outside of results" << taskIndex; return; } auto& taskSlot = d->remoteLoadStatusList[taskIndex]; @@ -525,10 +528,10 @@ void ComponentUpdateTask::remoteLoadFailed(size_t taskIndex, const QString& msg) disconnect(taskSlot.task.get(), &Task::failed, this, nullptr); disconnect(taskSlot.task.get(), &Task::aborted, this, nullptr); if (taskSlot.finished) { - qWarning() << "Got multiple results from remote load task" << taskIndex; + qCWarning(instanceProfileResolveC) << "Got multiple results from remote load task" << taskIndex; return; } - qDebug() << "Remote task" << taskIndex << "failed: " << msg; + qCDebug(instanceProfileResolveC) << "Remote task" << taskIndex << "failed: " << msg; d->remoteLoadSuccessful = false; taskSlot.succeeded = false; taskSlot.finished = true; diff --git a/launcher/minecraft/ComponentUpdateTask_p.h b/launcher/minecraft/ComponentUpdateTask_p.h index b82553700..2fc0b6d9a 100644 --- a/launcher/minecraft/ComponentUpdateTask_p.h +++ b/launcher/minecraft/ComponentUpdateTask_p.h @@ -6,6 +6,8 @@ #include "net/Mode.h" #include "tasks/Task.h" +#include "minecraft/ComponentUpdateTask.h" + class PackProfile; struct RemoteLoadStatus { @@ -18,7 +20,7 @@ struct RemoteLoadStatus { }; struct ComponentUpdateTaskData { - PackProfile* m_list = nullptr; + PackProfile* m_profile = nullptr; QList remoteLoadStatusList; bool remoteLoadSuccessful = true; size_t remoteTasksInProgress = 0; diff --git a/launcher/minecraft/Logging.cpp b/launcher/minecraft/Logging.cpp new file mode 100644 index 000000000..92596de3e --- /dev/null +++ b/launcher/minecraft/Logging.cpp @@ -0,0 +1,25 @@ + +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2023 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#include "minecraft/Logging.h" +#include + +Q_LOGGING_CATEGORY(instanceProfileC, "launcher.instance.profile") +Q_LOGGING_CATEGORY(instanceProfileResolveC, "launcher.instance.profile.resolve") diff --git a/launcher/minecraft/Logging.h b/launcher/minecraft/Logging.h new file mode 100644 index 000000000..00d43f419 --- /dev/null +++ b/launcher/minecraft/Logging.h @@ -0,0 +1,26 @@ + +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (C) 2023 Rachel Powers <508861+Ryex@users.noreply.github.com> + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + */ + +#pragma once + +#include + +Q_DECLARE_LOGGING_CATEGORY(instanceProfileC) +Q_DECLARE_LOGGING_CATEGORY(instanceProfileResolveC) diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index bdc80b923..09a2ac0cb 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -39,7 +39,6 @@ #include #include -#include #include #include #include @@ -66,6 +65,8 @@ #include "PackProfile_p.h" #include "modplatform/ModIndex.h" +#include "minecraft/Logging.h" + static const QMap modloaderMapping{ { "net.neoforged", ModPlatform::NeoForge }, { "net.minecraftforge", ModPlatform::Forge }, { "net.fabricmc.fabric-loader", ModPlatform::Fabric }, @@ -159,16 +160,16 @@ static bool savePackProfile(const QString& filename, const ComponentContainer& c obj.insert("components", orderArray); QSaveFile outFile(filename); if (!outFile.open(QFile::WriteOnly)) { - qCritical() << "Couldn't open" << outFile.fileName() << "for writing:" << outFile.errorString(); + qCCritical(instanceProfileC) << "Couldn't open" << outFile.fileName() << "for writing:" << outFile.errorString(); return false; } auto data = QJsonDocument(obj).toJson(QJsonDocument::Indented); if (outFile.write(data) != data.size()) { - qCritical() << "Couldn't write all the data into" << outFile.fileName() << "because:" << outFile.errorString(); + qCCritical(instanceProfileC) << "Couldn't write all the data into" << outFile.fileName() << "because:" << outFile.errorString(); return false; } if (!outFile.commit()) { - qCritical() << "Couldn't save" << outFile.fileName() << "because:" << outFile.errorString(); + qCCritical(instanceProfileC) << "Couldn't save" << outFile.fileName() << "because:" << outFile.errorString(); } return true; } @@ -181,12 +182,12 @@ static bool loadPackProfile(PackProfile* parent, { QFile componentsFile(filename); if (!componentsFile.exists()) { - qWarning() << "Components file doesn't exist. This should never happen."; + qCWarning(instanceProfileC) << "Components file" << filename << "doesn't exist. This should never happen."; return false; } if (!componentsFile.open(QFile::ReadOnly)) { - qCritical() << "Couldn't open" << componentsFile.fileName() << " for reading:" << componentsFile.errorString(); - qWarning() << "Ignoring overriden order"; + qCCritical(instanceProfileC) << "Couldn't open" << componentsFile.fileName() << " for reading:" << componentsFile.errorString(); + qCWarning(instanceProfileC) << "Ignoring overridden order"; return false; } @@ -194,8 +195,8 @@ static bool loadPackProfile(PackProfile* parent, QJsonParseError error; QJsonDocument doc = QJsonDocument::fromJson(componentsFile.readAll(), &error); if (error.error != QJsonParseError::NoError) { - qCritical() << "Couldn't parse" << componentsFile.fileName() << ":" << error.errorString(); - qWarning() << "Ignoring overriden order"; + qCCritical(instanceProfileC) << "Couldn't parse" << componentsFile.fileName() << ":" << error.errorString(); + qCWarning(instanceProfileC) << "Ignoring overridden order"; return false; } @@ -213,7 +214,7 @@ static bool loadPackProfile(PackProfile* parent, container.append(componentFromJsonV1(parent, componentJsonPattern, comp_obj)); } } catch ([[maybe_unused]] const JSONValidationError& err) { - qCritical() << "Couldn't parse" << componentsFile.fileName() << ": bad file format"; + qCCritical(instanceProfileC) << "Couldn't parse" << componentsFile.fileName() << ": bad file format"; container.clear(); return false; } @@ -246,12 +247,12 @@ void PackProfile::buildingFromScratch() void PackProfile::scheduleSave() { if (!d->loaded) { - qDebug() << "Component list should never save if it didn't successfully load, instance:" << d->m_instance->name(); + qDebug() << d->m_instance->name() << "|" << "Component list should never save if it didn't successfully load"; return; } if (!d->dirty) { d->dirty = true; - qDebug() << "Component list save is scheduled for" << d->m_instance->name(); + qDebug() << d->m_instance->name() << "|" << "Component list save is scheduled"; } d->m_saveTimer.start(); } @@ -278,7 +279,7 @@ QString PackProfile::patchFilePathForUid(const QString& uid) const void PackProfile::save_internal() { - qDebug() << "Component list save performed now for" << d->m_instance->name(); + qDebug() << d->m_instance->name() << "|" << "Component list save performed now"; auto filename = componentsFilePath(); savePackProfile(filename, d->components); d->dirty = false; @@ -291,7 +292,7 @@ bool PackProfile::load() // load the new component list and swap it with the current one... ComponentContainer newComponents; if (!loadPackProfile(this, filename, patchesPattern(), newComponents)) { - qCritical() << "Failed to load the component config for instance" << d->m_instance->name(); + qCritical() << d->m_instance->name() << "|" << "Failed to load the component config"; return false; } else { // FIXME: actually use fine-grained updates, not this... @@ -304,7 +305,7 @@ bool PackProfile::load() d->componentIndex.clear(); for (auto component : newComponents) { if (d->componentIndex.contains(component->m_uid)) { - qWarning() << "Ignoring duplicate component entry" << component->m_uid; + qWarning() << d->m_instance->name() << "|" << "Ignoring duplicate component entry" << component->m_uid; continue; } connect(component.get(), &Component::dataChanged, this, &PackProfile::componentDataChanged); @@ -352,14 +353,14 @@ void PackProfile::resolve(Net::Mode netmode) void PackProfile::updateSucceeded() { - qDebug() << "Component list update/resolve task succeeded for" << d->m_instance->name(); + qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "Component list update/resolve task succeeded"; d->m_updateTask.reset(); invalidateLaunchProfile(); } void PackProfile::updateFailed(const QString& error) { - qDebug() << "Component list update/resolve task failed for" << d->m_instance->name() << "Reason:" << error; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "Component list update/resolve task failed " << "Reason:" << error; d->m_updateTask.reset(); invalidateLaunchProfile(); } @@ -375,11 +376,11 @@ void PackProfile::insertComponent(size_t index, ComponentPtr component) { auto id = component->getID(); if (id.isEmpty()) { - qWarning() << "Attempt to add a component with empty ID!"; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "Attempt to add a component with empty ID!"; return; } if (d->componentIndex.contains(id)) { - qWarning() << "Attempt to add a component that is already present!"; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "Attempt to add a component that is already present!"; return; } beginInsertRows(QModelIndex(), static_cast(index), static_cast(index)); @@ -394,7 +395,7 @@ void PackProfile::componentDataChanged() { auto objPtr = qobject_cast(sender()); if (!objPtr) { - qWarning() << "PackProfile got dataChanged signal from a non-Component!"; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "PackProfile got dataChanged signal from a non-Component!"; return; } if (objPtr->getID() == "net.minecraft") { @@ -410,19 +411,20 @@ void PackProfile::componentDataChanged() } index++; } - qWarning() << "PackProfile got dataChanged signal from a Component which does not belong to it!"; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" + << "PackProfile got dataChanged signal from a Component which does not belong to it!"; } bool PackProfile::remove(const int index) { auto patch = getComponent(index); if (!patch->isRemovable()) { - qWarning() << "Patch" << patch->getID() << "is non-removable"; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "is non-removable"; return false; } if (!removeComponent_internal(patch)) { - qCritical() << "Patch" << patch->getID() << "could not be removed"; + qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "could not be removed"; return false; } @@ -451,11 +453,11 @@ bool PackProfile::customize(int index) { auto patch = getComponent(index); if (!patch->isCustomizable()) { - qDebug() << "Patch" << patch->getID() << "is not customizable"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "is not customizable"; return false; } if (!patch->customize()) { - qCritical() << "Patch" << patch->getID() << "could not be customized"; + qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "could not be customized"; return false; } invalidateLaunchProfile(); @@ -467,11 +469,11 @@ bool PackProfile::revertToBase(int index) { auto patch = getComponent(index); if (!patch->isRevertible()) { - qDebug() << "Patch" << patch->getID() << "is not revertible"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "is not revertible"; return false; } if (!patch->revert()) { - qCritical() << "Patch" << patch->getID() << "could not be reverted"; + qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "could not be reverted"; return false; } invalidateLaunchProfile(); @@ -684,7 +686,8 @@ bool PackProfile::installComponents(QStringList selectedFiles) const QString target = FS::PathCombine(patchDir, versionFile->uid + ".json"); if (!QFile::copy(source, target)) { - qWarning() << "Component" << source << "could not be copied to target" << target; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "Component" << source << "could not be copied to target" + << target; result = false; continue; } @@ -717,7 +720,8 @@ bool PackProfile::installEmpty(const QString& uid, const QString& name) QString patchFileName = FS::PathCombine(patchDir, uid + ".json"); QFile file(patchFileName); if (!file.open(QFile::WriteOnly)) { - qCritical() << "Error opening" << file.fileName() << "for reading:" << file.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Error opening" << file.fileName() + << "for reading:" << file.errorString(); return false; } file.write(OneSixVersionFormat::versionFileToJson(f).toJson()); @@ -737,7 +741,8 @@ bool PackProfile::removeComponent_internal(ComponentPtr patch) if (fileName.size()) { QFile patchFile(fileName); if (patchFile.exists() && !patchFile.remove()) { - qCritical() << "File" << fileName << "could not be removed because:" << patchFile.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "File" << fileName + << "could not be removed because:" << patchFile.errorString(); return false; } } @@ -753,7 +758,8 @@ bool PackProfile::removeComponent_internal(ComponentPtr patch) if (finfo.exists()) { QFile jarModFile(jar[0]); if (!jarModFile.remove()) { - qCritical() << "File" << jar[0] << "could not be removed because:" << jarModFile.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "File" << jar[0] + << "could not be removed because:" << jarModFile.errorString(); return false; } return true; @@ -810,7 +816,8 @@ bool PackProfile::installJarMods_internal(QStringList filepaths) QFile file(patchFileName); if (!file.open(QFile::WriteOnly)) { - qCritical() << "Error opening" << file.fileName() << "for reading:" << file.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Error opening" << file.fileName() + << "for reading:" << file.errorString(); return false; } file.write(OneSixVersionFormat::versionFileToJson(f).toJson()); @@ -864,7 +871,8 @@ bool PackProfile::installCustomJar_internal(QString filepath) QFile file(patchFileName); if (!file.open(QFile::WriteOnly)) { - qCritical() << "Error opening" << file.fileName() << "for reading:" << file.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Error opening" << file.fileName() + << "for reading:" << file.errorString(); return false; } file.write(OneSixVersionFormat::versionFileToJson(f).toJson()); @@ -919,7 +927,8 @@ bool PackProfile::installAgents_internal(QStringList filepaths) QFile patchFile(FS::PathCombine(patchDir, targetId + ".json")); if (!patchFile.open(QFile::WriteOnly)) { - qCritical() << "Error opening" << patchFile.fileName() << "for reading:" << patchFile.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Error opening" << patchFile.fileName() + << "for reading:" << patchFile.errorString(); return false; } @@ -941,12 +950,13 @@ std::shared_ptr PackProfile::getProfile() const try { auto profile = std::make_shared(); for (auto file : d->components) { - qDebug() << "Applying" << file->getID() << (file->getProblemSeverity() == ProblemSeverity::Error ? "ERROR" : "GOOD"); + qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "Applying" << file->getID() + << (file->getProblemSeverity() == ProblemSeverity::Error ? "ERROR" : "GOOD"); file->applyTo(profile.get()); } d->m_profile = profile; } catch (const Exception& error) { - qWarning() << "Couldn't apply profile patches because: " << error.cause(); + qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "Couldn't apply profile patches because: " << error.cause(); } } return d->m_profile; @@ -959,36 +969,58 @@ bool PackProfile::setComponentVersion(const QString& uid, const QString& version ComponentPtr component = *iter; // set existing if (component->revert()) { - component->setVersion(version); - component->setImportant(important); // remove linked components to let them re-resolve their versions if (important) { + component->waitLoadMeta(); auto linked = collectTreeLinked(uid); for (auto comp : linked) { if (comp->isCustom()) { continue; } if (modloaderMapping.contains(comp->getID())) { - qDebug() << comp->getID() << "is a mod loader, setting new recommended version..."; + qCDebug(instanceProfileC) + << d->m_instance->name() << "|" << comp->getID() << "is a mod loader, updating it to a compatible version"; + auto versionList = APPLICATION->metadataIndex()->get(comp->getID()); + versionList->waitToLoad(); if (versionList) { - auto recommended = versionList->getRecommendedForParent(comp->getID(), version); + auto recommended = versionList->getRecommendedForParent(uid, version); if (recommended) { - qDebug() << "Setting updated loader version: " << comp->getID() << " = " << recommended->version(); - setComponentVersion(comp->getID(), recommended->version()); + qCDebug(instanceProfileC) + << d->m_instance->name() << "|" << "setting updated loader to recommended version: " << comp->getID() + << " = " << recommended->version(); + comp->setVersion(recommended->version()); } else { - qDebug() << "no recommended version for" << comp->getID(); + auto latest = versionList->getLatestForParent(uid, version); + if (latest) { + qCDebug(instanceProfileC) << d->m_instance->name() << "|" + << "setting updated loader to latest compatible version: " << comp->getID() + << " = " << latest->version(); + comp->setVersion(latest->version()); + } else { + qCDebug(instanceProfileC) + << d->m_instance->name() << "|" << "no compatible version for" << comp->getID() << "removing"; + remove(comp->getID()); + } } } else { - qDebug() << "no version list in metadata index for" << comp->getID(); + qCDebug(instanceProfileC) + << d->m_instance->name() << "|" << "no version list in metadata index for" << comp->getID(); } } else { - qDebug() << comp->getID() << ":" << comp->getVersion() << "linked to important component: " << uid - << " | Removing so it re-resolves"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" << comp->getID() << ":" << comp->getVersion() + << "linked to important component: " << uid << " | Removing so it re-resolves"; remove(comp->getID()); } } } + // set new version + component->setVersion(version); + component->setImportant(important); + + if (important) { + resolve(Net::Mode::Online); + } return true; } return false; @@ -1006,11 +1038,12 @@ ComponentContainer PackProfile::collectTreeLinked(const QString& uid) { ComponentContainer linked; for (auto comp : d->components) { - qDebug() << "scanning" << comp->getID() << "for tree link"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "scanning" << comp->getID() << ":" << comp->getVersion() + << "for tree link"; auto dep = std::find_if(comp->m_cachedRequires.cbegin(), comp->m_cachedRequires.cend(), [uid](const Meta::Require& req) -> bool { return req.uid == uid; }); if (dep != comp->m_cachedRequires.cend()) { - qDebug() << comp->getID() << "depends on" << uid; + qCDebug(instanceProfileResolveC) << comp->getID() << ":" << comp->getVersion() << "depends on" << uid; linked.append(comp); } } @@ -1018,12 +1051,13 @@ ComponentContainer PackProfile::collectTreeLinked(const QString& uid) if (iter != d->componentIndex.end()) { ComponentPtr comp = *iter; comp->updateCachedData(); - qDebug() << comp->getID() << "has" << comp->m_cachedRequires.size() << "dependencies"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" << comp->getID() << ":" << comp->getVersion() << "has" + << comp->m_cachedRequires.size() << "dependencies"; for (auto dep : comp->m_cachedRequires) { - qDebug() << uid << "depends on" << comp->getID(); + qCDebug(instanceProfileC) << d->m_instance->name() << "|" << uid << "depends on" << dep.uid; auto found = d->componentIndex.find(dep.uid); if (found != d->componentIndex.end()) { - qDebug() << comp->getID() << "is present"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" << (*found)->getID() << "is present"; linked.append(*found); } } diff --git a/launcher/modplatform/ModIndex.h b/launcher/modplatform/ModIndex.h index 91c9898a9..b3f86933f 100644 --- a/launcher/modplatform/ModIndex.h +++ b/launcher/modplatform/ModIndex.h @@ -44,7 +44,7 @@ namespace ProviderCapabilities { const char* name(ResourceProvider); QString readableName(ResourceProvider); QStringList hashType(ResourceProvider); -}; // namespace ProviderCapabilities +} // namespace ProviderCapabilities struct ModpackAuthor { QString name; From cf319649f9c457bba14d097ae9ce4c839be188b2 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Mon, 24 Jun 2024 17:28:42 -0700 Subject: [PATCH 104/616] fix qt5 lwjgl recommend + spelling Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/meta/VersionList.cpp | 6 +++--- launcher/meta/VersionList.h | 4 ++-- launcher/ui/pages/instance/VersionPage.cpp | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/launcher/meta/VersionList.cpp b/launcher/meta/VersionList.cpp index c133e7d1a..8bc326839 100644 --- a/launcher/meta/VersionList.cpp +++ b/launcher/meta/VersionList.cpp @@ -180,12 +180,12 @@ void VersionList::parse(const QJsonObject& obj) parseVersionList(obj, this); } -void VersionList::addExternalRecomends(const QVector& recomends) +void VersionList::addExternalRecommends(const QStringList& recommends) { - m_externalRecommendsVersions.append(recomends); + m_externalRecommendsVersions.append(recommends); } -void VersionList::clearExternalRecomends() +void VersionList::clearExternalRecommends() { m_externalRecommendsVersions.clear(); } diff --git a/launcher/meta/VersionList.h b/launcher/meta/VersionList.h index 05ecd91d2..2e46a79f0 100644 --- a/launcher/meta/VersionList.h +++ b/launcher/meta/VersionList.h @@ -71,8 +71,8 @@ class VersionList : public BaseVersionList, public BaseEntity { void merge(const VersionList::Ptr& other); void mergeFromIndex(const VersionList::Ptr& other); void parse(const QJsonObject& obj) override; - void addExternalRecomends(const QVector& recomends); - void clearExternalRecomends(); + void addExternalRecommends(const QStringList& recommends); + void clearExternalRecommends(); signals: void nameChanged(const QString& name); diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index 545798499..8ae21d2e4 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -370,7 +370,7 @@ void VersionPage::on_actionChange_version_triggered() auto patch = m_profile->getComponent(versionRow); auto name = patch->getName(); auto list = patch->getVersionList(); - list->clearExternalRecomends(); + list->clearExternalRecommends(); if (!list) { return; } @@ -384,7 +384,7 @@ void VersionPage::on_actionChange_version_triggered() if (lwjglReq != minecraft->m_cachedRequires.cend()) { auto lwjglVersion = !lwjglReq->equalsVersion.isEmpty() ? lwjglReq->equalsVersion : lwjglReq->suggests; if (!lwjglVersion.isEmpty()) { - list->addExternalRecomends({ lwjglVersion }); + list->addExternalRecommends({ lwjglVersion }); } } } From 474effe7c74a8d78a6e35cd742e99669353bf19e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 25 Jun 2024 11:13:15 +0300 Subject: [PATCH 105/616] clang-format Signed-off-by: Trial97 --- launcher/meta/VersionList.cpp | 5 +- launcher/meta/VersionList.h | 1 - launcher/minecraft/Component.cpp | 7 +- launcher/minecraft/Component.h | 2 +- launcher/minecraft/ComponentUpdateTask.cpp | 10 +- launcher/minecraft/PackProfile.cpp | 101 ++++++++++++--------- 6 files changed, 74 insertions(+), 52 deletions(-) diff --git a/launcher/meta/VersionList.cpp b/launcher/meta/VersionList.cpp index 8bc326839..28a42d28d 100644 --- a/launcher/meta/VersionList.cpp +++ b/launcher/meta/VersionList.cpp @@ -254,8 +254,9 @@ void VersionList::setupAddedVersion(const int row, const Version::Ptr& version) connect(version.get(), &Version::requiresChanged, this, [this, row]() { emit dataChanged(index(row), index(row), QVector() << RequiresRole); }); - connect(version.get(), &Version::timeChanged, this, - [this, row]() { emit dataChanged(index(row), index(row), { TimeRole, SortRole }); }); + connect(version.get(), &Version::timeChanged, this, [this, row]() { + emit dataChanged(index(row), index(row), { TimeRole, SortRole }); + }); connect(version.get(), &Version::typeChanged, this, [this, row]() { emit dataChanged(index(row), index(row), { TypeRole }); }); } diff --git a/launcher/meta/VersionList.h b/launcher/meta/VersionList.h index 2e46a79f0..eb79e96f1 100644 --- a/launcher/meta/VersionList.h +++ b/launcher/meta/VersionList.h @@ -46,7 +46,6 @@ class VersionList : public BaseVersionList, public BaseEntity { Version::Ptr getRecommendedForParent(const QString& uid, const QString& version); Version::Ptr getLatestForParent(const QString& uid, const QString& version); - QVariant data(const QModelIndex& index, int role) const override; RoleList providesRoles() const override; QHash roleNames() const override; diff --git a/launcher/minecraft/Component.cpp b/launcher/minecraft/Component.cpp index 175e88d08..6ea9ee60b 100644 --- a/launcher/minecraft/Component.cpp +++ b/launcher/minecraft/Component.cpp @@ -403,8 +403,8 @@ void Component::updateCachedData() } } -void Component::waitLoadMeta() { - +void Component::waitLoadMeta() +{ if (!m_loaded) { if (!m_metaVersion || !m_metaVersion->isLoaded()) { // wait for the loaded version from meta @@ -415,7 +415,8 @@ void Component::waitLoadMeta() { } } -QDebug operator<<(QDebug d, const Component& comp) { +QDebug operator<<(QDebug d, const Component& comp) +{ d << "Component(" << comp.m_uid << " : " << comp.m_cachedVersion << ")"; return d; } diff --git a/launcher/minecraft/Component.h b/launcher/minecraft/Component.h index 581a3db95..67d79e231 100644 --- a/launcher/minecraft/Component.h +++ b/launcher/minecraft/Component.h @@ -64,7 +64,7 @@ class Component : public QObject, public ProblemProvider { bool revert(); void updateCachedData(); - + void waitLoadMeta(); signals: diff --git a/launcher/minecraft/ComponentUpdateTask.cpp b/launcher/minecraft/ComponentUpdateTask.cpp index 7bdc11400..dc59d2dc9 100644 --- a/launcher/minecraft/ComponentUpdateTask.cpp +++ b/launcher/minecraft/ComponentUpdateTask.cpp @@ -178,7 +178,8 @@ void ComponentUpdateTask::loadComponents() } result = composeLoadResult(result, singleResult); if (loadTask) { - qCDebug(instanceProfileResolveC) << d->m_profile->d->m_instance->name() << "|" << "Remote loading is being run for" << component->getName(); + qCDebug(instanceProfileResolveC) << d->m_profile->d->m_instance->name() << "|" + << "Remote loading is being run for" << component->getName(); connect(loadTask.get(), &Task::succeeded, this, [this, taskIndex]() { remoteLoadSucceeded(taskIndex); }); connect(loadTask.get(), &Task::failed, this, [this, taskIndex](const QString& error) { remoteLoadFailed(taskIndex, error); }); connect(loadTask.get(), &Task::aborted, this, [this, taskIndex]() { remoteLoadFailed(taskIndex, tr("Aborted")); }); @@ -273,8 +274,8 @@ static bool gatherRequirementsFromComponents(const ComponentContainer& input, Re output.erase(componenRequireEx); output.insert(result.outcome); } else { - qCCritical(instanceProfileResolveC) << "Conflicting requirements:" << componentRequire.uid << "versions:" << componentRequire.equalsVersion - << ";" << (*found).equalsVersion; + qCCritical(instanceProfileResolveC) << "Conflicting requirements:" << componentRequire.uid + << "versions:" << componentRequire.equalsVersion << ";" << (*found).equalsVersion; } succeeded &= result.ok; } else { @@ -440,7 +441,8 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) auto component = makeShared(d->m_profile, add.uid); if (!add.equalsVersion.isEmpty()) { // exact version - qCDebug(instanceProfileResolveC) << "Adding" << add.uid << "version" << add.equalsVersion << "at position" << add.indexOfFirstDependee; + qCDebug(instanceProfileResolveC) + << "Adding" << add.uid << "version" << add.equalsVersion << "at position" << add.indexOfFirstDependee; component->m_version = add.equalsVersion; } else { // version needs to be decided diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index 09a2ac0cb..ce57288f6 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -247,12 +247,14 @@ void PackProfile::buildingFromScratch() void PackProfile::scheduleSave() { if (!d->loaded) { - qDebug() << d->m_instance->name() << "|" << "Component list should never save if it didn't successfully load"; + qDebug() << d->m_instance->name() << "|" + << "Component list should never save if it didn't successfully load"; return; } if (!d->dirty) { d->dirty = true; - qDebug() << d->m_instance->name() << "|" << "Component list save is scheduled"; + qDebug() << d->m_instance->name() << "|" + << "Component list save is scheduled"; } d->m_saveTimer.start(); } @@ -279,7 +281,8 @@ QString PackProfile::patchFilePathForUid(const QString& uid) const void PackProfile::save_internal() { - qDebug() << d->m_instance->name() << "|" << "Component list save performed now"; + qDebug() << d->m_instance->name() << "|" + << "Component list save performed now"; auto filename = componentsFilePath(); savePackProfile(filename, d->components); d->dirty = false; @@ -292,7 +295,8 @@ bool PackProfile::load() // load the new component list and swap it with the current one... ComponentContainer newComponents; if (!loadPackProfile(this, filename, patchesPattern(), newComponents)) { - qCritical() << d->m_instance->name() << "|" << "Failed to load the component config"; + qCritical() << d->m_instance->name() << "|" + << "Failed to load the component config"; return false; } else { // FIXME: actually use fine-grained updates, not this... @@ -305,7 +309,8 @@ bool PackProfile::load() d->componentIndex.clear(); for (auto component : newComponents) { if (d->componentIndex.contains(component->m_uid)) { - qWarning() << d->m_instance->name() << "|" << "Ignoring duplicate component entry" << component->m_uid; + qWarning() << d->m_instance->name() << "|" + << "Ignoring duplicate component entry" << component->m_uid; continue; } connect(component.get(), &Component::dataChanged, this, &PackProfile::componentDataChanged); @@ -353,14 +358,17 @@ void PackProfile::resolve(Net::Mode netmode) void PackProfile::updateSucceeded() { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "Component list update/resolve task succeeded"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" + << "Component list update/resolve task succeeded"; d->m_updateTask.reset(); invalidateLaunchProfile(); } void PackProfile::updateFailed(const QString& error) { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "Component list update/resolve task failed " << "Reason:" << error; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" + << "Component list update/resolve task failed " + << "Reason:" << error; d->m_updateTask.reset(); invalidateLaunchProfile(); } @@ -376,11 +384,13 @@ void PackProfile::insertComponent(size_t index, ComponentPtr component) { auto id = component->getID(); if (id.isEmpty()) { - qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "Attempt to add a component with empty ID!"; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" + << "Attempt to add a component with empty ID!"; return; } if (d->componentIndex.contains(id)) { - qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "Attempt to add a component that is already present!"; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" + << "Attempt to add a component that is already present!"; return; } beginInsertRows(QModelIndex(), static_cast(index), static_cast(index)); @@ -395,7 +405,8 @@ void PackProfile::componentDataChanged() { auto objPtr = qobject_cast(sender()); if (!objPtr) { - qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "PackProfile got dataChanged signal from a non-Component!"; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" + << "PackProfile got dataChanged signal from a non-Component!"; return; } if (objPtr->getID() == "net.minecraft") { @@ -419,12 +430,14 @@ bool PackProfile::remove(const int index) { auto patch = getComponent(index); if (!patch->isRemovable()) { - qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "is non-removable"; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" + << "Patch" << patch->getID() << "is non-removable"; return false; } if (!removeComponent_internal(patch)) { - qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "could not be removed"; + qCCritical(instanceProfileC) << d->m_instance->name() << "|" + << "Patch" << patch->getID() << "could not be removed"; return false; } @@ -453,11 +466,13 @@ bool PackProfile::customize(int index) { auto patch = getComponent(index); if (!patch->isCustomizable()) { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "is not customizable"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" + << "Patch" << patch->getID() << "is not customizable"; return false; } if (!patch->customize()) { - qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "could not be customized"; + qCCritical(instanceProfileC) << d->m_instance->name() << "|" + << "Patch" << patch->getID() << "could not be customized"; return false; } invalidateLaunchProfile(); @@ -469,11 +484,13 @@ bool PackProfile::revertToBase(int index) { auto patch = getComponent(index); if (!patch->isRevertible()) { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "is not revertible"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" + << "Patch" << patch->getID() << "is not revertible"; return false; } if (!patch->revert()) { - qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Patch" << patch->getID() << "could not be reverted"; + qCCritical(instanceProfileC) << d->m_instance->name() << "|" + << "Patch" << patch->getID() << "could not be reverted"; return false; } invalidateLaunchProfile(); @@ -686,8 +703,8 @@ bool PackProfile::installComponents(QStringList selectedFiles) const QString target = FS::PathCombine(patchDir, versionFile->uid + ".json"); if (!QFile::copy(source, target)) { - qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "Component" << source << "could not be copied to target" - << target; + qCWarning(instanceProfileC) << d->m_instance->name() << "|" + << "Component" << source << "could not be copied to target" << target; result = false; continue; } @@ -720,8 +737,8 @@ bool PackProfile::installEmpty(const QString& uid, const QString& name) QString patchFileName = FS::PathCombine(patchDir, uid + ".json"); QFile file(patchFileName); if (!file.open(QFile::WriteOnly)) { - qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Error opening" << file.fileName() - << "for reading:" << file.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" + << "Error opening" << file.fileName() << "for reading:" << file.errorString(); return false; } file.write(OneSixVersionFormat::versionFileToJson(f).toJson()); @@ -741,8 +758,8 @@ bool PackProfile::removeComponent_internal(ComponentPtr patch) if (fileName.size()) { QFile patchFile(fileName); if (patchFile.exists() && !patchFile.remove()) { - qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "File" << fileName - << "could not be removed because:" << patchFile.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" + << "File" << fileName << "could not be removed because:" << patchFile.errorString(); return false; } } @@ -758,8 +775,8 @@ bool PackProfile::removeComponent_internal(ComponentPtr patch) if (finfo.exists()) { QFile jarModFile(jar[0]); if (!jarModFile.remove()) { - qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "File" << jar[0] - << "could not be removed because:" << jarModFile.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" + << "File" << jar[0] << "could not be removed because:" << jarModFile.errorString(); return false; } return true; @@ -816,8 +833,8 @@ bool PackProfile::installJarMods_internal(QStringList filepaths) QFile file(patchFileName); if (!file.open(QFile::WriteOnly)) { - qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Error opening" << file.fileName() - << "for reading:" << file.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" + << "Error opening" << file.fileName() << "for reading:" << file.errorString(); return false; } file.write(OneSixVersionFormat::versionFileToJson(f).toJson()); @@ -871,8 +888,8 @@ bool PackProfile::installCustomJar_internal(QString filepath) QFile file(patchFileName); if (!file.open(QFile::WriteOnly)) { - qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Error opening" << file.fileName() - << "for reading:" << file.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" + << "Error opening" << file.fileName() << "for reading:" << file.errorString(); return false; } file.write(OneSixVersionFormat::versionFileToJson(f).toJson()); @@ -927,8 +944,8 @@ bool PackProfile::installAgents_internal(QStringList filepaths) QFile patchFile(FS::PathCombine(patchDir, targetId + ".json")); if (!patchFile.open(QFile::WriteOnly)) { - qCCritical(instanceProfileC) << d->m_instance->name() << "|" << "Error opening" << patchFile.fileName() - << "for reading:" << patchFile.errorString(); + qCCritical(instanceProfileC) << d->m_instance->name() << "|" + << "Error opening" << patchFile.fileName() << "for reading:" << patchFile.errorString(); return false; } @@ -950,13 +967,15 @@ std::shared_ptr PackProfile::getProfile() const try { auto profile = std::make_shared(); for (auto file : d->components) { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "Applying" << file->getID() + qCDebug(instanceProfileC) << d->m_instance->name() << "|" + << "Applying" << file->getID() << (file->getProblemSeverity() == ProblemSeverity::Error ? "ERROR" : "GOOD"); file->applyTo(profile.get()); } d->m_profile = profile; } catch (const Exception& error) { - qCWarning(instanceProfileC) << d->m_instance->name() << "|" << "Couldn't apply profile patches because: " << error.cause(); + qCWarning(instanceProfileC) << d->m_instance->name() << "|" + << "Couldn't apply profile patches because: " << error.cause(); } } return d->m_profile; @@ -986,9 +1005,9 @@ bool PackProfile::setComponentVersion(const QString& uid, const QString& version if (versionList) { auto recommended = versionList->getRecommendedForParent(uid, version); if (recommended) { - qCDebug(instanceProfileC) - << d->m_instance->name() << "|" << "setting updated loader to recommended version: " << comp->getID() - << " = " << recommended->version(); + qCDebug(instanceProfileC) << d->m_instance->name() << "|" + << "setting updated loader to recommended version: " << comp->getID() << " = " + << recommended->version(); comp->setVersion(recommended->version()); } else { auto latest = versionList->getLatestForParent(uid, version); @@ -998,14 +1017,14 @@ bool PackProfile::setComponentVersion(const QString& uid, const QString& version << " = " << latest->version(); comp->setVersion(latest->version()); } else { - qCDebug(instanceProfileC) - << d->m_instance->name() << "|" << "no compatible version for" << comp->getID() << "removing"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" + << "no compatible version for" << comp->getID() << "removing"; remove(comp->getID()); } } } else { - qCDebug(instanceProfileC) - << d->m_instance->name() << "|" << "no version list in metadata index for" << comp->getID(); + qCDebug(instanceProfileC) << d->m_instance->name() << "|" + << "no version list in metadata index for" << comp->getID(); } } else { qCDebug(instanceProfileC) << d->m_instance->name() << "|" << comp->getID() << ":" << comp->getVersion() @@ -1038,8 +1057,8 @@ ComponentContainer PackProfile::collectTreeLinked(const QString& uid) { ComponentContainer linked; for (auto comp : d->components) { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" << "scanning" << comp->getID() << ":" << comp->getVersion() - << "for tree link"; + qCDebug(instanceProfileC) << d->m_instance->name() << "|" + << "scanning" << comp->getID() << ":" << comp->getVersion() << "for tree link"; auto dep = std::find_if(comp->m_cachedRequires.cbegin(), comp->m_cachedRequires.cend(), [uid](const Meta::Require& req) -> bool { return req.uid == uid; }); if (dep != comp->m_cachedRequires.cend()) { From a85d6cb1f2a12efd40b12f5a59fbb56a8d1cc4fd Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Thu, 27 Jun 2024 15:42:25 -0700 Subject: [PATCH 106/616] move resolution into update actions in task. Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/Component.cpp | 37 ++++- launcher/minecraft/Component.h | 33 +++++ launcher/minecraft/ComponentUpdateTask.cpp | 151 +++++++++++++++++++++ launcher/minecraft/ComponentUpdateTask.h | 5 + launcher/minecraft/PackProfile.cpp | 83 +---------- launcher/minecraft/PackProfile.h | 4 - 6 files changed, 231 insertions(+), 82 deletions(-) diff --git a/launcher/minecraft/Component.cpp b/launcher/minecraft/Component.cpp index 6ea9ee60b..67f26a02e 100644 --- a/launcher/minecraft/Component.cpp +++ b/launcher/minecraft/Component.cpp @@ -38,6 +38,7 @@ #include #include +#include #include "Application.h" #include "FileSystem.h" @@ -235,7 +236,8 @@ ProblemSeverity Component::getProblemSeverity() const { auto file = getVersionFile(); if (file) { - return file->getProblemSeverity(); + auto severity = file->getProblemSeverity(); + return m_componentProblemSeverity > severity ? m_componentProblemSeverity : severity; } return ProblemSeverity::Error; } @@ -244,11 +246,27 @@ const QList Component::getProblems() const { auto file = getVersionFile(); if (file) { - return file->getProblems(); + auto problems = file->getProblems(); + problems.append(m_componentProblems); + return problems; } return { { ProblemSeverity::Error, QObject::tr("Patch is not loaded yet.") } }; } +void Component::addComponentProblem(ProblemSeverity severity, const QString& description) +{ + if (severity > m_componentProblemSeverity) { + m_componentProblemSeverity = severity; + } + m_componentProblems.append({ severity, description }); +} + +void Component::resetComponentProblems() +{ + m_componentProblems.clear(); + m_componentProblemSeverity = ProblemSeverity::None; +} + void Component::setVersion(const QString& version) { if (version == m_version) { @@ -415,6 +433,21 @@ void Component::waitLoadMeta() } } +void Component::setUpdateAction(UpdateAction action) +{ + m_updateAction = action; +} + +std::optional Component::getUpdateAction() +{ + return m_updateAction; +} + +void Component::clearUpdateAction() +{ + m_updateAction.reset(); +} + QDebug operator<<(QDebug d, const Component& comp) { d << "Component(" << comp.m_uid << " : " << comp.m_cachedVersion << ")"; diff --git a/launcher/minecraft/Component.h b/launcher/minecraft/Component.h index 67d79e231..50c4e02db 100644 --- a/launcher/minecraft/Component.h +++ b/launcher/minecraft/Component.h @@ -4,6 +4,7 @@ #include #include #include +#include #include "ProblemProvider.h" #include "QObjectPtr.h" #include "meta/JsonFormat.h" @@ -16,6 +17,26 @@ class VersionList; } // namespace Meta class VersionFile; +struct UpdateActionChangeVerison { + /// version to change to + QString targetVersion; +}; +struct UpdateActionLatestRecommendedCompatable { + /// Parent uid + QString parentUid; + QString parentName; + /// Parent version + QString version; + /// +}; +struct UpdateActionRemove {}; +struct UpdateActionImportantChanged { + QString oldVersion; +}; + +using UpdateAction = + std::variant; + class Component : public QObject, public ProblemProvider { Q_OBJECT public: @@ -58,6 +79,8 @@ class Component : public QObject, public ProblemProvider { const QList getProblems() const override; ProblemSeverity getProblemSeverity() const override; + void addComponentProblem(ProblemSeverity severity, const QString& description); + void resetComponentProblems(); void setVersion(const QString& version); bool customize(); @@ -67,6 +90,11 @@ class Component : public QObject, public ProblemProvider { void waitLoadMeta(); + void setUpdateAction(UpdateAction action); + void clearUpdateAction(); + std::optional getUpdateAction(); + std::optional takeUpdateAction(); + signals: void dataChanged(); @@ -104,6 +132,11 @@ class Component : public QObject, public ProblemProvider { std::shared_ptr m_metaVersion; std::shared_ptr m_file; bool m_loaded = false; + + private: + QList m_componentProblems; + ProblemSeverity m_componentProblemSeverity = ProblemSeverity::None; + std::optional m_updateAction = std::nullopt; }; using ComponentPtr = shared_qobject_ptr; diff --git a/launcher/minecraft/ComponentUpdateTask.cpp b/launcher/minecraft/ComponentUpdateTask.cpp index dc59d2dc9..8f19f20c8 100644 --- a/launcher/minecraft/ComponentUpdateTask.cpp +++ b/launcher/minecraft/ComponentUpdateTask.cpp @@ -1,9 +1,11 @@ #include "ComponentUpdateTask.h" +#include #include "Component.h" #include "ComponentUpdateTask_p.h" #include "PackProfile.h" #include "PackProfile_p.h" +#include "ProblemProvider.h" #include "Version.h" #include "cassert" #include "meta/Index.h" @@ -196,6 +198,7 @@ void ComponentUpdateTask::loadComponents() switch (result) { case LoadResult::LoadedLocal: { // Everything got loaded. Advance to dependency resolution. + performUpdateActions(); resolveDependencies(d->mode == Mode::Launch || d->netmode == Net::Mode::Offline); break; } @@ -380,6 +383,42 @@ static bool getTrivialComponentChanges(const ComponentIndex& index, const Requir return succeeded; } +ComponentContainer ComponentUpdateTask::collectTreeLinked(const QString& uid) +{ + ComponentContainer linked; + + auto& components = d->m_profile->d->components; + auto& componentIndex = d->m_profile->d->componentIndex; + auto& instance = d->m_profile->d->m_instance; + for (auto comp : components) { + qCDebug(instanceProfileResolveC) << instance->name() << "|" + << "scanning" << comp->getID() << ":" << comp->getVersion() << "for tree link"; + auto dep = std::find_if(comp->m_cachedRequires.cbegin(), comp->m_cachedRequires.cend(), + [uid](const Meta::Require& req) -> bool { return req.uid == uid; }); + if (dep != comp->m_cachedRequires.cend()) { + qCDebug(instanceProfileResolveC) << instance->name() << "|" << comp->getID() << ":" << comp->getVersion() << "depends on" + << uid; + linked.append(comp); + } + } + auto iter = componentIndex.find(uid); + if (iter != componentIndex.end()) { + ComponentPtr comp = *iter; + comp->updateCachedData(); + qCDebug(instanceProfileResolveC) << instance->name() << "|" << comp->getID() << ":" << comp->getVersion() << "has" + << comp->m_cachedRequires.size() << "dependencies"; + for (auto dep : comp->m_cachedRequires) { + qCDebug(instanceProfileC) << instance->name() << "|" << uid << "depends on" << dep.uid; + auto found = componentIndex.find(dep.uid); + if (found != componentIndex.end()) { + qCDebug(instanceProfileC) << instance->name() << "|" << (*found)->getID() << "is present"; + linked.append(*found); + } + } + } + return linked; +} + // FIXME, TODO: decouple dependency resolution from loading // FIXME: This works directly with the PackProfile internals. It shouldn't! It needs richer data types than PackProfile uses. // FIXME: throw all this away and use a graph @@ -488,10 +527,121 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) if (recursionNeeded) { loadComponents(); } else { + finalizeComponents(); emitSucceeded(); } } +// Variant visitation via lambda +template +struct overload : Ts... { + using Ts::operator()...; +}; +template +overload(Ts...) -> overload; + +void ComponentUpdateTask::performUpdateActions() +{ + auto& components = d->m_profile->d->components; + + bool addedActions; + do { + addedActions = false; + for (auto component : components) { + if (auto action = component->getUpdateAction()) { + auto visitor = overload{ + [&component](const UpdateActionChangeVerison& cv) { + component->setVersion(cv.targetVersion); + component->waitLoadMeta(); + }, + [&component](const UpdateActionLatestRecommendedCompatable lrc) { + auto versionList = APPLICATION->metadataIndex()->get(component->getID()); + versionList->waitToLoad(); + if (versionList) { + auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version); + if (recommended) { + component->setVersion(recommended->version()); + component->waitLoadMeta(); + return; + } + + auto latest = versionList->getLatestForParent(lrc.parentUid, lrc.version); + if (latest) { + component->setVersion(latest->version()); + component->waitLoadMeta(); + } else { + component->addComponentProblem(ProblemSeverity::Error, + QObject::tr("No compatible version of %1 found for %2 %3") + .arg(component->getName(), lrc.parentName, lrc.version)); + } + } else { + component->addComponentProblem(ProblemSeverity::Error, + QObject::tr("No version list in metadata index for %1").arg(component->getID())); + } + }, + [this, &component](const UpdateActionRemove&) { d->m_profile->remove(component->getID()); }, + [this, &component, &addedActions](const UpdateActionImportantChanged&) { + auto linked = collectTreeLinked(component->getID()); + for (auto comp : linked) { + if (comp->isCustom()) { + continue; + } + auto compUid = comp->getID(); + auto parentReq = std::find_if(component->m_cachedRequires.begin(), component->m_cachedRequires.end(), + [compUid](const Meta::Require& req) { return req.uid == compUid; }); + if (parentReq != component->m_cachedRequires.end()) { + auto newVersion = parentReq->equalsVersion.isEmpty() ? parentReq->suggests : parentReq->equalsVersion; + if (!newVersion.isEmpty()) { + comp->setUpdateAction(UpdateAction{ UpdateActionChangeVerison{ newVersion } }); + } else { + comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ + component->getID(), + component->getName(), + component->getVersion(), + } }); + } + } else { + comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ + component->getID(), + component->getName(), + component->getVersion(), + } }); + } + addedActions = true; + } + } + }; + std::visit(visitor, *action); + component->clearUpdateAction(); + } + } + } while (addedActions); +} + +void ComponentUpdateTask::finalizeComponents() +{ + auto& components = d->m_profile->d->components; + auto& componentIndex = d->m_profile->d->componentIndex; + for (auto component : components) { + for (auto req : component->m_cachedRequires) { + auto found = componentIndex.find(req.uid); + if (found == componentIndex.cend()) { + component->addComponentProblem( + ProblemSeverity::Error, + QObject::tr("%1 is missing requirement %2 %3") + .arg(component->getName(), req.uid, req.equalsVersion.isEmpty() ? req.suggests : req.equalsVersion)); + } else { + auto reqComp = *found; + if (!reqComp->getProblems().isEmpty()) { + component->addComponentProblem( + reqComp->getProblemSeverity(), + QObject::tr("%1, a dependency of this component, has reported issues").arg(reqComp->getName())); + } + } + } + } +} + void ComponentUpdateTask::remoteLoadSucceeded(size_t taskIndex) { if (static_cast(d->remoteLoadStatusList.size()) < taskIndex) { @@ -551,6 +701,7 @@ void ComponentUpdateTask::checkIfAllFinished() if (d->remoteLoadSuccessful) { // nothing bad happened... clear the temp load status and proceed with looking at dependencies d->remoteLoadStatusList.clear(); + performUpdateActions(); resolveDependencies(d->mode == Mode::Launch); } else { // remote load failed... report error and bail diff --git a/launcher/minecraft/ComponentUpdateTask.h b/launcher/minecraft/ComponentUpdateTask.h index 2f396a049..484c0bedd 100644 --- a/launcher/minecraft/ComponentUpdateTask.h +++ b/launcher/minecraft/ComponentUpdateTask.h @@ -1,5 +1,6 @@ #pragma once +#include "minecraft/Component.h" #include "net/Mode.h" #include "tasks/Task.h" @@ -21,7 +22,11 @@ class ComponentUpdateTask : public Task { private: void loadComponents(); + /// collects components that are dependent on or dependencies of the component + QList collectTreeLinked(const QString& uid); void resolveDependencies(bool checkOnly); + void performUpdateActions(); + void finalizeComponents(); void remoteLoadSucceeded(size_t index); void remoteLoadFailed(size_t index, const QString& msg); diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index ce57288f6..debbf0fa7 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -49,6 +49,7 @@ #include #include #include +#include #include "Application.h" #include "Exception.h" @@ -56,6 +57,7 @@ #include "Json.h" #include "meta/Index.h" #include "meta/JsonFormat.h" +#include "minecraft/Component.h" #include "minecraft/MinecraftInstance.h" #include "minecraft/OneSixVersionFormat.h" #include "minecraft/ProfileUtils.h" @@ -67,6 +69,8 @@ #include "minecraft/Logging.h" +#include "ui/dialogs/CustomMessageBox.h" + static const QMap modloaderMapping{ { "net.neoforged", ModPlatform::NeoForge }, { "net.minecraftforge", ModPlatform::Forge }, { "net.fabricmc.fabric-loader", ModPlatform::Fabric }, @@ -988,58 +992,16 @@ bool PackProfile::setComponentVersion(const QString& uid, const QString& version ComponentPtr component = *iter; // set existing if (component->revert()) { - // remove linked components to let them re-resolve their versions - if (important) { - component->waitLoadMeta(); - auto linked = collectTreeLinked(uid); - for (auto comp : linked) { - if (comp->isCustom()) { - continue; - } - if (modloaderMapping.contains(comp->getID())) { - qCDebug(instanceProfileC) - << d->m_instance->name() << "|" << comp->getID() << "is a mod loader, updating it to a compatible version"; - - auto versionList = APPLICATION->metadataIndex()->get(comp->getID()); - versionList->waitToLoad(); - if (versionList) { - auto recommended = versionList->getRecommendedForParent(uid, version); - if (recommended) { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" - << "setting updated loader to recommended version: " << comp->getID() << " = " - << recommended->version(); - comp->setVersion(recommended->version()); - } else { - auto latest = versionList->getLatestForParent(uid, version); - if (latest) { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" - << "setting updated loader to latest compatible version: " << comp->getID() - << " = " << latest->version(); - comp->setVersion(latest->version()); - } else { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" - << "no compatible version for" << comp->getID() << "removing"; - remove(comp->getID()); - } - } - } else { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" - << "no version list in metadata index for" << comp->getID(); - } - } else { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" << comp->getID() << ":" << comp->getVersion() - << "linked to important component: " << uid << " | Removing so it re-resolves"; - remove(comp->getID()); - } - } - } // set new version + auto oldVersion = component->getVersion(); component->setVersion(version); component->setImportant(important); if (important) { + component->setUpdateAction(UpdateAction{ UpdateActionImportantChanged{ oldVersion } }); resolve(Net::Mode::Online); } + return true; } return false; @@ -1053,37 +1015,6 @@ bool PackProfile::setComponentVersion(const QString& uid, const QString& version } } -ComponentContainer PackProfile::collectTreeLinked(const QString& uid) -{ - ComponentContainer linked; - for (auto comp : d->components) { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" - << "scanning" << comp->getID() << ":" << comp->getVersion() << "for tree link"; - auto dep = std::find_if(comp->m_cachedRequires.cbegin(), comp->m_cachedRequires.cend(), - [uid](const Meta::Require& req) -> bool { return req.uid == uid; }); - if (dep != comp->m_cachedRequires.cend()) { - qCDebug(instanceProfileResolveC) << comp->getID() << ":" << comp->getVersion() << "depends on" << uid; - linked.append(comp); - } - } - auto iter = d->componentIndex.find(uid); - if (iter != d->componentIndex.end()) { - ComponentPtr comp = *iter; - comp->updateCachedData(); - qCDebug(instanceProfileC) << d->m_instance->name() << "|" << comp->getID() << ":" << comp->getVersion() << "has" - << comp->m_cachedRequires.size() << "dependencies"; - for (auto dep : comp->m_cachedRequires) { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" << uid << "depends on" << dep.uid; - auto found = d->componentIndex.find(dep.uid); - if (found != d->componentIndex.end()) { - qCDebug(instanceProfileC) << d->m_instance->name() << "|" << (*found)->getID() << "is present"; - linked.append(*found); - } - } - } - return linked; -} - QString PackProfile::getComponentVersion(const QString& uid) const { const auto iter = d->componentIndex.find(uid); diff --git a/launcher/minecraft/PackProfile.h b/launcher/minecraft/PackProfile.h index f733b3524..e58e9ae9a 100644 --- a/launcher/minecraft/PackProfile.h +++ b/launcher/minecraft/PackProfile.h @@ -48,7 +48,6 @@ #include "Component.h" #include "LaunchProfile.h" -#include "minecraft/PackProfile_p.h" #include "modplatform/ModIndex.h" #include "net/Mode.h" @@ -120,9 +119,6 @@ class PackProfile : public QAbstractListModel { bool setComponentVersion(const QString& uid, const QString& version, bool important = false); - /// collects components that are dependant on or dependencies of the component - ComponentContainer collectTreeLinked(const QString& uid); - bool installEmpty(const QString& uid, const QString& name); QString patchFilePathForUid(const QString& uid) const; From 4ed92a95c2b362d09a8a2ff81926c282f1227c4c Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Thu, 27 Jun 2024 17:28:09 -0700 Subject: [PATCH 107/616] fix segfaults consistently set component problems Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/Component.cpp | 5 +- launcher/minecraft/Component.h | 17 +- launcher/minecraft/ComponentUpdateTask.cpp | 183 +++++++++++++-------- 3 files changed, 131 insertions(+), 74 deletions(-) diff --git a/launcher/minecraft/Component.cpp b/launcher/minecraft/Component.cpp index 67f26a02e..00d3f2e42 100644 --- a/launcher/minecraft/Component.cpp +++ b/launcher/minecraft/Component.cpp @@ -45,6 +45,7 @@ #include "OneSixVersionFormat.h" #include "VersionFile.h" #include "meta/Version.h" +#include "minecraft/Component.h" #include "minecraft/PackProfile.h" #include @@ -438,14 +439,14 @@ void Component::setUpdateAction(UpdateAction action) m_updateAction = action; } -std::optional Component::getUpdateAction() +UpdateAction Component::getUpdateAction() { return m_updateAction; } void Component::clearUpdateAction() { - m_updateAction.reset(); + m_updateAction = UpdateAction{ UpdateActionNone{} }; } QDebug operator<<(QDebug d, const Component& comp) diff --git a/launcher/minecraft/Component.h b/launcher/minecraft/Component.h index 50c4e02db..94a964182 100644 --- a/launcher/minecraft/Component.h +++ b/launcher/minecraft/Component.h @@ -5,6 +5,7 @@ #include #include #include +#include #include "ProblemProvider.h" #include "QObjectPtr.h" #include "meta/JsonFormat.h" @@ -17,7 +18,7 @@ class VersionList; } // namespace Meta class VersionFile; -struct UpdateActionChangeVerison { +struct UpdateActionChangeVersion { /// version to change to QString targetVersion; }; @@ -34,8 +35,13 @@ struct UpdateActionImportantChanged { QString oldVersion; }; -using UpdateAction = - std::variant; +using UpdateActionNone = std::monostate; + +using UpdateAction = std::variant; class Component : public QObject, public ProblemProvider { Q_OBJECT @@ -92,8 +98,7 @@ class Component : public QObject, public ProblemProvider { void setUpdateAction(UpdateAction action); void clearUpdateAction(); - std::optional getUpdateAction(); - std::optional takeUpdateAction(); + UpdateAction getUpdateAction(); signals: void dataChanged(); @@ -136,7 +141,7 @@ class Component : public QObject, public ProblemProvider { private: QList m_componentProblems; ProblemSeverity m_componentProblemSeverity = ProblemSeverity::None; - std::optional m_updateAction = std::nullopt; + UpdateAction m_updateAction = UpdateAction{ UpdateActionNone{} }; }; using ComponentPtr = shared_qobject_ptr; diff --git a/launcher/minecraft/ComponentUpdateTask.cpp b/launcher/minecraft/ComponentUpdateTask.cpp index 8f19f20c8..8001627e4 100644 --- a/launcher/minecraft/ComponentUpdateTask.cpp +++ b/launcher/minecraft/ComponentUpdateTask.cpp @@ -153,6 +153,7 @@ void ComponentUpdateTask::loadComponents() Task::Ptr loadTask; LoadResult singleResult; RemoteLoadStatus::Type loadType; + component->resetComponentProblems(); // FIXME: to do this right, we need to load the lists and decide on which versions to use during dependency resolution. For now, // ignore all that... #if 0 @@ -445,6 +446,7 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) allRequires.clear(); toRemove.clear(); if (!gatherRequirementsFromComponents(components, allRequires)) { + finalizeComponents(); emitFailed(tr("Conflicting requirements detected during dependency checking!")); return; } @@ -461,10 +463,12 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) RequireExSet toChange; bool succeeded = getTrivialComponentChanges(componentIndex, allRequires, toAdd, toChange); if (!succeeded) { + finalizeComponents(); emitFailed(tr("Instance has conflicting dependencies.")); return; } if (checkOnly) { + finalizeComponents(); if (toAdd.size() || toChange.size()) { emitFailed(tr("Instance has unresolved dependencies while loading/checking for launch.")); } else { @@ -542,77 +546,115 @@ overload(Ts...) -> overload; void ComponentUpdateTask::performUpdateActions() { - auto& components = d->m_profile->d->components; - + auto& instance = d->m_profile->d->m_instance; bool addedActions; + QStringList toRemove; do { addedActions = false; + toRemove.clear(); + auto& components = d->m_profile->d->components; + auto& componentIndex = d->m_profile->d->componentIndex; for (auto component : components) { - if (auto action = component->getUpdateAction()) { - auto visitor = overload{ - [&component](const UpdateActionChangeVerison& cv) { - component->setVersion(cv.targetVersion); - component->waitLoadMeta(); - }, - [&component](const UpdateActionLatestRecommendedCompatable lrc) { - auto versionList = APPLICATION->metadataIndex()->get(component->getID()); - versionList->waitToLoad(); - if (versionList) { - auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version); - if (recommended) { - component->setVersion(recommended->version()); - component->waitLoadMeta(); - return; - } + if (!component) { + continue; + } + auto action = component->getUpdateAction(); + auto visitor = + overload{ [](const UpdateActionNone&) { + // noop + }, + [&component, &instance](const UpdateActionChangeVersion& cv) { + qCDebug(instanceProfileResolveC) << instance->name() << "|" + << "UpdateActionChangeVersion" << component->getID() << ":" + << component->getVersion() << "change to" << cv.targetVersion; + component->setVersion(cv.targetVersion); + component->waitLoadMeta(); + }, + [&component, &instance](const UpdateActionLatestRecommendedCompatable lrc) { + qCDebug(instanceProfileResolveC) + << instance->name() << "|" + << "UpdateActionLatestRecommendedCompatable" << component->getID() << ":" << component->getVersion() + << "updating to latest recommend or compatible with" << lrc.parentUid << lrc.version; + auto versionList = APPLICATION->metadataIndex()->get(component->getID()); + versionList->waitToLoad(); + if (versionList) { + auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version); + if (recommended) { + component->setVersion(recommended->version()); + component->waitLoadMeta(); + return; + } - auto latest = versionList->getLatestForParent(lrc.parentUid, lrc.version); - if (latest) { - component->setVersion(latest->version()); - component->waitLoadMeta(); - } else { - component->addComponentProblem(ProblemSeverity::Error, - QObject::tr("No compatible version of %1 found for %2 %3") - .arg(component->getName(), lrc.parentName, lrc.version)); - } - } else { - component->addComponentProblem(ProblemSeverity::Error, - QObject::tr("No version list in metadata index for %1").arg(component->getID())); - } - }, - [this, &component](const UpdateActionRemove&) { d->m_profile->remove(component->getID()); }, - [this, &component, &addedActions](const UpdateActionImportantChanged&) { - auto linked = collectTreeLinked(component->getID()); - for (auto comp : linked) { - if (comp->isCustom()) { - continue; - } - auto compUid = comp->getID(); - auto parentReq = std::find_if(component->m_cachedRequires.begin(), component->m_cachedRequires.end(), - [compUid](const Meta::Require& req) { return req.uid == compUid; }); - if (parentReq != component->m_cachedRequires.end()) { - auto newVersion = parentReq->equalsVersion.isEmpty() ? parentReq->suggests : parentReq->equalsVersion; - if (!newVersion.isEmpty()) { - comp->setUpdateAction(UpdateAction{ UpdateActionChangeVerison{ newVersion } }); - } else { - comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ - component->getID(), - component->getName(), - component->getVersion(), - } }); - } - } else { - comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ - component->getID(), - component->getName(), - component->getVersion(), - } }); - } - addedActions = true; - } - } - }; - std::visit(visitor, *action); - component->clearUpdateAction(); + auto latest = versionList->getLatestForParent(lrc.parentUid, lrc.version); + if (latest) { + component->setVersion(latest->version()); + component->waitLoadMeta(); + } else { + component->addComponentProblem(ProblemSeverity::Error, + QObject::tr("No compatible version of %1 found for %2 %3") + .arg(component->getName(), lrc.parentName, lrc.version)); + } + } else { + component->addComponentProblem( + ProblemSeverity::Error, + QObject::tr("No version list in metadata index for %1").arg(component->getID())); + } + }, + [&component, &instance, &toRemove](const UpdateActionRemove&) { + qCDebug(instanceProfileResolveC) + << instance->name() << "|" + << "UpdateActionRemove" << component->getID() << ":" << component->getVersion() << "removing"; + toRemove.append(component->getID()); + }, + [this, &component, &instance, &addedActions, &componentIndex](const UpdateActionImportantChanged& ic) { + qCDebug(instanceProfileResolveC) + << instance->name() << "|" + << "UpdateImportantChanged" << component->getID() << ":" << component->getVersion() << "was changed from" + << ic.oldVersion << "updating linked components"; + auto oldVersion = APPLICATION->metadataIndex()->getLoadedVersion(component->getID(), ic.oldVersion); + for (auto oldReq : oldVersion->requiredSet()) { + auto currentlyRequired = component->m_cachedRequires.find(oldReq); + if (currentlyRequired == component->m_cachedRequires.cend()) { + auto oldReqComp = componentIndex.find(oldReq.uid); + if (oldReqComp != componentIndex.cend()) { + (*oldReqComp)->setUpdateAction(UpdateAction{ UpdateActionRemove{} }); + addedActions = true; + } + } + } + auto linked = collectTreeLinked(component->getID()); + for (auto comp : linked) { + if (comp->isCustom()) { + continue; + } + auto compUid = comp->getID(); + auto parentReq = std::find_if(component->m_cachedRequires.begin(), component->m_cachedRequires.end(), + [compUid](const Meta::Require& req) { return req.uid == compUid; }); + if (parentReq != component->m_cachedRequires.end()) { + auto newVersion = parentReq->equalsVersion.isEmpty() ? parentReq->suggests : parentReq->equalsVersion; + if (!newVersion.isEmpty()) { + comp->setUpdateAction(UpdateAction{ UpdateActionChangeVersion{ newVersion } }); + } else { + comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ + component->getID(), + component->getName(), + component->getVersion(), + } }); + } + } else { + comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ + component->getID(), + component->getName(), + component->getVersion(), + } }); + } + addedActions = true; + } + } }; + std::visit(visitor, action); + component->clearUpdateAction(); + for (auto uid : toRemove) { + d->m_profile->remove(uid); } } } while (addedActions); @@ -637,6 +679,15 @@ void ComponentUpdateTask::finalizeComponents() reqComp->getProblemSeverity(), QObject::tr("%1, a dependency of this component, has reported issues").arg(reqComp->getName())); } + if (!req.equalsVersion.isEmpty() && req.equalsVersion != reqComp->getVersion()) { + component->addComponentProblem(ProblemSeverity::Error, + QObject::tr("%1, a dependency of this component, is not the required version %2") + .arg(reqComp->getName(), req.equalsVersion)); + } else if (!req.suggests.isEmpty() && req.suggests != reqComp->getVersion()) { + component->addComponentProblem(ProblemSeverity::Warning, + QObject::tr("%1, a dependency of this component, is not the suggested version %2") + .arg(reqComp->getName(), req.suggests)); + } } } } From c4cc1cfe4f30147c85b804825048b3c5288537a8 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Thu, 27 Jun 2024 19:25:38 -0700 Subject: [PATCH 108/616] Warn about known conflicting modloaders Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/Component.cpp | 16 ++ launcher/minecraft/Component.h | 15 ++ launcher/minecraft/ComponentUpdateTask.cpp | 199 +++++++++++---------- launcher/minecraft/PackProfile.cpp | 9 +- 4 files changed, 137 insertions(+), 102 deletions(-) diff --git a/launcher/minecraft/Component.cpp b/launcher/minecraft/Component.cpp index 00d3f2e42..329e6b78e 100644 --- a/launcher/minecraft/Component.cpp +++ b/launcher/minecraft/Component.cpp @@ -225,6 +225,22 @@ bool Component::isVersionChangeable() return false; } +bool Component::isKnownModloader() +{ + auto iter = KNOWN_MODLOADERS.find(m_uid); + return iter != KNOWN_MODLOADERS.cend(); +} + +QStringList Component::knownConfictingComponents() +{ + auto iter = KNOWN_MODLOADERS.find(m_uid); + if (iter != KNOWN_MODLOADERS.cend()) { + return (*iter).knownConfictingComponents; + } else { + return {}; + } +} + void Component::setImportant(bool state) { if (m_important != state) { diff --git a/launcher/minecraft/Component.h b/launcher/minecraft/Component.h index 94a964182..3669638f2 100644 --- a/launcher/minecraft/Component.h +++ b/launcher/minecraft/Component.h @@ -9,6 +9,7 @@ #include "ProblemProvider.h" #include "QObjectPtr.h" #include "meta/JsonFormat.h" +#include "modplatform/ModIndex.h" class PackProfile; class LaunchProfile; @@ -43,6 +44,18 @@ using UpdateAction = std::variant; +struct ModloaderMapEntry { + ModPlatform::ModLoaderType type; + QStringList knownConfictingComponents; +}; +static const QMap KNOWN_MODLOADERS{ + { "net.neoforged", { ModPlatform::NeoForge, { "net.minecraftforge", "net.fabricmc.fabric-loader", "net.fabricmc.fabric-loader" } } }, + { "net.minecraftforge", { ModPlatform::Forge, { "net.neoforged", "net.fabricmc.fabric-loader", "net.fabricmc.fabric-loader" } } }, + { "net.fabricmc.fabric-loader", { ModPlatform::Fabric, { "net.minecraftforge", "net.neoforged", "org.quiltmc.quilt-loader" } } }, + { "org.quiltmc.quilt-loader", { ModPlatform::Quilt, { "net.minecraftforge", "net.neoforged", "net.fabricmc.fabric-loader" } } }, + { "com.mumfrey.liteloader", { ModPlatform::LiteLoader, {} } } +}; + class Component : public QObject, public ProblemProvider { Q_OBJECT public: @@ -65,6 +78,8 @@ class Component : public QObject, public ProblemProvider { bool isRemovable(); bool isCustom(); bool isVersionChangeable(); + bool isKnownModloader(); + QStringList knownConfictingComponents(); // DEPRECATED: explicit numeric order values, used for loading old non-component config. TODO: refactor and move to migration code void setOrder(int order); diff --git a/launcher/minecraft/ComponentUpdateTask.cpp b/launcher/minecraft/ComponentUpdateTask.cpp index 8001627e4..1617a8f82 100644 --- a/launcher/minecraft/ComponentUpdateTask.cpp +++ b/launcher/minecraft/ComponentUpdateTask.cpp @@ -181,8 +181,8 @@ void ComponentUpdateTask::loadComponents() } result = composeLoadResult(result, singleResult); if (loadTask) { - qCDebug(instanceProfileResolveC) << d->m_profile->d->m_instance->name() << "|" - << "Remote loading is being run for" << component->getName(); + qCDebug(instanceProfileResolveC) << d->m_profile->d->m_instance->name() << "|" << "Remote loading is being run for" + << component->getName(); connect(loadTask.get(), &Task::succeeded, this, [this, taskIndex]() { remoteLoadSucceeded(taskIndex); }); connect(loadTask.get(), &Task::failed, this, [this, taskIndex](const QString& error) { remoteLoadFailed(taskIndex, error); }); connect(loadTask.get(), &Task::aborted, this, [this, taskIndex]() { remoteLoadFailed(taskIndex, tr("Aborted")); }); @@ -392,8 +392,8 @@ ComponentContainer ComponentUpdateTask::collectTreeLinked(const QString& uid) auto& componentIndex = d->m_profile->d->componentIndex; auto& instance = d->m_profile->d->m_instance; for (auto comp : components) { - qCDebug(instanceProfileResolveC) << instance->name() << "|" - << "scanning" << comp->getID() << ":" << comp->getVersion() << "for tree link"; + qCDebug(instanceProfileResolveC) << instance->name() << "|" << "scanning" << comp->getID() << ":" << comp->getVersion() + << "for tree link"; auto dep = std::find_if(comp->m_cachedRequires.cbegin(), comp->m_cachedRequires.cend(), [uid](const Meta::Require& req) -> bool { return req.uid == uid; }); if (dep != comp->m_cachedRequires.cend()) { @@ -559,98 +559,94 @@ void ComponentUpdateTask::performUpdateActions() continue; } auto action = component->getUpdateAction(); - auto visitor = - overload{ [](const UpdateActionNone&) { - // noop - }, - [&component, &instance](const UpdateActionChangeVersion& cv) { - qCDebug(instanceProfileResolveC) << instance->name() << "|" - << "UpdateActionChangeVersion" << component->getID() << ":" - << component->getVersion() << "change to" << cv.targetVersion; - component->setVersion(cv.targetVersion); - component->waitLoadMeta(); - }, - [&component, &instance](const UpdateActionLatestRecommendedCompatable lrc) { - qCDebug(instanceProfileResolveC) - << instance->name() << "|" - << "UpdateActionLatestRecommendedCompatable" << component->getID() << ":" << component->getVersion() - << "updating to latest recommend or compatible with" << lrc.parentUid << lrc.version; - auto versionList = APPLICATION->metadataIndex()->get(component->getID()); - versionList->waitToLoad(); - if (versionList) { - auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version); - if (recommended) { - component->setVersion(recommended->version()); - component->waitLoadMeta(); - return; - } + auto visitor = overload{ + [](const UpdateActionNone&) { + // noop + }, + [&component, &instance](const UpdateActionChangeVersion& cv) { + qCDebug(instanceProfileResolveC) << instance->name() << "|" << "UpdateActionChangeVersion" << component->getID() << ":" + << component->getVersion() << "change to" << cv.targetVersion; + component->setVersion(cv.targetVersion); + component->waitLoadMeta(); + }, + [&component, &instance](const UpdateActionLatestRecommendedCompatable lrc) { + qCDebug(instanceProfileResolveC) + << instance->name() << "|" << "UpdateActionLatestRecommendedCompatable" << component->getID() << ":" + << component->getVersion() << "updating to latest recommend or compatible with" << lrc.parentUid << lrc.version; + auto versionList = APPLICATION->metadataIndex()->get(component->getID()); + versionList->waitToLoad(); + if (versionList) { + auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version); + if (recommended) { + component->setVersion(recommended->version()); + component->waitLoadMeta(); + return; + } - auto latest = versionList->getLatestForParent(lrc.parentUid, lrc.version); - if (latest) { - component->setVersion(latest->version()); - component->waitLoadMeta(); - } else { - component->addComponentProblem(ProblemSeverity::Error, - QObject::tr("No compatible version of %1 found for %2 %3") - .arg(component->getName(), lrc.parentName, lrc.version)); - } - } else { - component->addComponentProblem( - ProblemSeverity::Error, - QObject::tr("No version list in metadata index for %1").arg(component->getID())); - } - }, - [&component, &instance, &toRemove](const UpdateActionRemove&) { - qCDebug(instanceProfileResolveC) - << instance->name() << "|" - << "UpdateActionRemove" << component->getID() << ":" << component->getVersion() << "removing"; - toRemove.append(component->getID()); - }, - [this, &component, &instance, &addedActions, &componentIndex](const UpdateActionImportantChanged& ic) { - qCDebug(instanceProfileResolveC) - << instance->name() << "|" - << "UpdateImportantChanged" << component->getID() << ":" << component->getVersion() << "was changed from" - << ic.oldVersion << "updating linked components"; - auto oldVersion = APPLICATION->metadataIndex()->getLoadedVersion(component->getID(), ic.oldVersion); - for (auto oldReq : oldVersion->requiredSet()) { - auto currentlyRequired = component->m_cachedRequires.find(oldReq); - if (currentlyRequired == component->m_cachedRequires.cend()) { - auto oldReqComp = componentIndex.find(oldReq.uid); - if (oldReqComp != componentIndex.cend()) { - (*oldReqComp)->setUpdateAction(UpdateAction{ UpdateActionRemove{} }); - addedActions = true; - } - } - } - auto linked = collectTreeLinked(component->getID()); - for (auto comp : linked) { - if (comp->isCustom()) { - continue; - } - auto compUid = comp->getID(); - auto parentReq = std::find_if(component->m_cachedRequires.begin(), component->m_cachedRequires.end(), - [compUid](const Meta::Require& req) { return req.uid == compUid; }); - if (parentReq != component->m_cachedRequires.end()) { - auto newVersion = parentReq->equalsVersion.isEmpty() ? parentReq->suggests : parentReq->equalsVersion; - if (!newVersion.isEmpty()) { - comp->setUpdateAction(UpdateAction{ UpdateActionChangeVersion{ newVersion } }); - } else { - comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ - component->getID(), - component->getName(), - component->getVersion(), - } }); - } - } else { - comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ - component->getID(), - component->getName(), - component->getVersion(), - } }); - } - addedActions = true; - } - } }; + auto latest = versionList->getLatestForParent(lrc.parentUid, lrc.version); + if (latest) { + component->setVersion(latest->version()); + component->waitLoadMeta(); + } else { + component->addComponentProblem(ProblemSeverity::Error, + QObject::tr("No compatible version of %1 found for %2 %3") + .arg(component->getName(), lrc.parentName, lrc.version)); + } + } else { + component->addComponentProblem(ProblemSeverity::Error, + QObject::tr("No version list in metadata index for %1").arg(component->getID())); + } + }, + [&component, &instance, &toRemove](const UpdateActionRemove&) { + qCDebug(instanceProfileResolveC) << instance->name() << "|" << "UpdateActionRemove" << component->getID() << ":" + << component->getVersion() << "removing"; + toRemove.append(component->getID()); + }, + [this, &component, &instance, &addedActions, &componentIndex](const UpdateActionImportantChanged& ic) { + qCDebug(instanceProfileResolveC) + << instance->name() << "|" << "UpdateImportantChanged" << component->getID() << ":" << component->getVersion() + << "was changed from" << ic.oldVersion << "updating linked components"; + auto oldVersion = APPLICATION->metadataIndex()->getLoadedVersion(component->getID(), ic.oldVersion); + for (auto oldReq : oldVersion->requiredSet()) { + auto currentlyRequired = component->m_cachedRequires.find(oldReq); + if (currentlyRequired == component->m_cachedRequires.cend()) { + auto oldReqComp = componentIndex.find(oldReq.uid); + if (oldReqComp != componentIndex.cend()) { + (*oldReqComp)->setUpdateAction(UpdateAction{ UpdateActionRemove{} }); + addedActions = true; + } + } + } + auto linked = collectTreeLinked(component->getID()); + for (auto comp : linked) { + if (comp->isCustom()) { + continue; + } + auto compUid = comp->getID(); + auto parentReq = std::find_if(component->m_cachedRequires.begin(), component->m_cachedRequires.end(), + [compUid](const Meta::Require& req) { return req.uid == compUid; }); + if (parentReq != component->m_cachedRequires.end()) { + auto newVersion = parentReq->equalsVersion.isEmpty() ? parentReq->suggests : parentReq->equalsVersion; + if (!newVersion.isEmpty()) { + comp->setUpdateAction(UpdateAction{ UpdateActionChangeVersion{ newVersion } }); + } else { + comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ + component->getID(), + component->getName(), + component->getVersion(), + } }); + } + } else { + comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ + component->getID(), + component->getName(), + component->getVersion(), + } }); + } + addedActions = true; + } + } + }; std::visit(visitor, action); component->clearUpdateAction(); for (auto uid : toRemove) { @@ -690,6 +686,19 @@ void ComponentUpdateTask::finalizeComponents() } } } + for (auto conflict : component->knownConfictingComponents()) { + auto found = componentIndex.find(conflict); + if (found != componentIndex.cend()) { + auto foundComp = *found; + if (foundComp ->isCustom()) { + continue; + } + component->addComponentProblem( + ProblemSeverity::Warning, + QObject::tr("%1 and %2 are known to not work together. It is recommended to remove one of them.") + .arg(component->getName(), foundComp->getName())); + } + } } } diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index debbf0fa7..c4a2dd273 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -71,11 +71,6 @@ #include "ui/dialogs/CustomMessageBox.h" -static const QMap modloaderMapping{ { "net.neoforged", ModPlatform::NeoForge }, - { "net.minecraftforge", ModPlatform::Forge }, - { "net.fabricmc.fabric-loader", ModPlatform::Fabric }, - { "org.quiltmc.quilt-loader", ModPlatform::Quilt }, - { "com.mumfrey.liteloader", ModPlatform::LiteLoader } }; PackProfile::PackProfile(MinecraftInstance* instance) : QAbstractListModel() { @@ -1040,12 +1035,12 @@ std::optional PackProfile::getModLoaders() ModPlatform::ModLoaderTypes result; bool has_any_loader = false; - QMapIterator i(modloaderMapping); + QMapIterator i(KNOWN_MODLOADERS); while (i.hasNext()) { i.next(); if (auto c = getComponent(i.key()); c != nullptr && c->isEnabled()) { - result |= i.value(); + result |= i.value().type; has_any_loader = true; } } From 492c78a570f52d23d58b54e38c4a4785865960e6 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 28 Jun 2024 13:41:07 +0300 Subject: [PATCH 109/616] format the code Signed-off-by: Trial97 --- launcher/minecraft/ComponentUpdateTask.cpp | 188 +++++++++++---------- launcher/minecraft/PackProfile.cpp | 1 - 2 files changed, 96 insertions(+), 93 deletions(-) diff --git a/launcher/minecraft/ComponentUpdateTask.cpp b/launcher/minecraft/ComponentUpdateTask.cpp index 1617a8f82..f4efba36f 100644 --- a/launcher/minecraft/ComponentUpdateTask.cpp +++ b/launcher/minecraft/ComponentUpdateTask.cpp @@ -181,8 +181,8 @@ void ComponentUpdateTask::loadComponents() } result = composeLoadResult(result, singleResult); if (loadTask) { - qCDebug(instanceProfileResolveC) << d->m_profile->d->m_instance->name() << "|" << "Remote loading is being run for" - << component->getName(); + qCDebug(instanceProfileResolveC) << d->m_profile->d->m_instance->name() << "|" + << "Remote loading is being run for" << component->getName(); connect(loadTask.get(), &Task::succeeded, this, [this, taskIndex]() { remoteLoadSucceeded(taskIndex); }); connect(loadTask.get(), &Task::failed, this, [this, taskIndex](const QString& error) { remoteLoadFailed(taskIndex, error); }); connect(loadTask.get(), &Task::aborted, this, [this, taskIndex]() { remoteLoadFailed(taskIndex, tr("Aborted")); }); @@ -392,8 +392,8 @@ ComponentContainer ComponentUpdateTask::collectTreeLinked(const QString& uid) auto& componentIndex = d->m_profile->d->componentIndex; auto& instance = d->m_profile->d->m_instance; for (auto comp : components) { - qCDebug(instanceProfileResolveC) << instance->name() << "|" << "scanning" << comp->getID() << ":" << comp->getVersion() - << "for tree link"; + qCDebug(instanceProfileResolveC) << instance->name() << "|" + << "scanning" << comp->getID() << ":" << comp->getVersion() << "for tree link"; auto dep = std::find_if(comp->m_cachedRequires.cbegin(), comp->m_cachedRequires.cend(), [uid](const Meta::Require& req) -> bool { return req.uid == uid; }); if (dep != comp->m_cachedRequires.cend()) { @@ -559,94 +559,98 @@ void ComponentUpdateTask::performUpdateActions() continue; } auto action = component->getUpdateAction(); - auto visitor = overload{ - [](const UpdateActionNone&) { - // noop - }, - [&component, &instance](const UpdateActionChangeVersion& cv) { - qCDebug(instanceProfileResolveC) << instance->name() << "|" << "UpdateActionChangeVersion" << component->getID() << ":" - << component->getVersion() << "change to" << cv.targetVersion; - component->setVersion(cv.targetVersion); - component->waitLoadMeta(); - }, - [&component, &instance](const UpdateActionLatestRecommendedCompatable lrc) { - qCDebug(instanceProfileResolveC) - << instance->name() << "|" << "UpdateActionLatestRecommendedCompatable" << component->getID() << ":" - << component->getVersion() << "updating to latest recommend or compatible with" << lrc.parentUid << lrc.version; - auto versionList = APPLICATION->metadataIndex()->get(component->getID()); - versionList->waitToLoad(); - if (versionList) { - auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version); - if (recommended) { - component->setVersion(recommended->version()); - component->waitLoadMeta(); - return; - } + auto visitor = + overload{ [](const UpdateActionNone&) { + // noop + }, + [&component, &instance](const UpdateActionChangeVersion& cv) { + qCDebug(instanceProfileResolveC) << instance->name() << "|" + << "UpdateActionChangeVersion" << component->getID() << ":" + << component->getVersion() << "change to" << cv.targetVersion; + component->setVersion(cv.targetVersion); + component->waitLoadMeta(); + }, + [&component, &instance](const UpdateActionLatestRecommendedCompatable lrc) { + qCDebug(instanceProfileResolveC) + << instance->name() << "|" + << "UpdateActionLatestRecommendedCompatable" << component->getID() << ":" << component->getVersion() + << "updating to latest recommend or compatible with" << lrc.parentUid << lrc.version; + auto versionList = APPLICATION->metadataIndex()->get(component->getID()); + versionList->waitToLoad(); + if (versionList) { + auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version); + if (recommended) { + component->setVersion(recommended->version()); + component->waitLoadMeta(); + return; + } - auto latest = versionList->getLatestForParent(lrc.parentUid, lrc.version); - if (latest) { - component->setVersion(latest->version()); - component->waitLoadMeta(); - } else { - component->addComponentProblem(ProblemSeverity::Error, - QObject::tr("No compatible version of %1 found for %2 %3") - .arg(component->getName(), lrc.parentName, lrc.version)); - } - } else { - component->addComponentProblem(ProblemSeverity::Error, - QObject::tr("No version list in metadata index for %1").arg(component->getID())); - } - }, - [&component, &instance, &toRemove](const UpdateActionRemove&) { - qCDebug(instanceProfileResolveC) << instance->name() << "|" << "UpdateActionRemove" << component->getID() << ":" - << component->getVersion() << "removing"; - toRemove.append(component->getID()); - }, - [this, &component, &instance, &addedActions, &componentIndex](const UpdateActionImportantChanged& ic) { - qCDebug(instanceProfileResolveC) - << instance->name() << "|" << "UpdateImportantChanged" << component->getID() << ":" << component->getVersion() - << "was changed from" << ic.oldVersion << "updating linked components"; - auto oldVersion = APPLICATION->metadataIndex()->getLoadedVersion(component->getID(), ic.oldVersion); - for (auto oldReq : oldVersion->requiredSet()) { - auto currentlyRequired = component->m_cachedRequires.find(oldReq); - if (currentlyRequired == component->m_cachedRequires.cend()) { - auto oldReqComp = componentIndex.find(oldReq.uid); - if (oldReqComp != componentIndex.cend()) { - (*oldReqComp)->setUpdateAction(UpdateAction{ UpdateActionRemove{} }); - addedActions = true; - } - } - } - auto linked = collectTreeLinked(component->getID()); - for (auto comp : linked) { - if (comp->isCustom()) { - continue; - } - auto compUid = comp->getID(); - auto parentReq = std::find_if(component->m_cachedRequires.begin(), component->m_cachedRequires.end(), - [compUid](const Meta::Require& req) { return req.uid == compUid; }); - if (parentReq != component->m_cachedRequires.end()) { - auto newVersion = parentReq->equalsVersion.isEmpty() ? parentReq->suggests : parentReq->equalsVersion; - if (!newVersion.isEmpty()) { - comp->setUpdateAction(UpdateAction{ UpdateActionChangeVersion{ newVersion } }); - } else { - comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ - component->getID(), - component->getName(), - component->getVersion(), - } }); - } - } else { - comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ - component->getID(), - component->getName(), - component->getVersion(), - } }); - } - addedActions = true; - } - } - }; + auto latest = versionList->getLatestForParent(lrc.parentUid, lrc.version); + if (latest) { + component->setVersion(latest->version()); + component->waitLoadMeta(); + } else { + component->addComponentProblem(ProblemSeverity::Error, + QObject::tr("No compatible version of %1 found for %2 %3") + .arg(component->getName(), lrc.parentName, lrc.version)); + } + } else { + component->addComponentProblem( + ProblemSeverity::Error, + QObject::tr("No version list in metadata index for %1").arg(component->getID())); + } + }, + [&component, &instance, &toRemove](const UpdateActionRemove&) { + qCDebug(instanceProfileResolveC) + << instance->name() << "|" + << "UpdateActionRemove" << component->getID() << ":" << component->getVersion() << "removing"; + toRemove.append(component->getID()); + }, + [this, &component, &instance, &addedActions, &componentIndex](const UpdateActionImportantChanged& ic) { + qCDebug(instanceProfileResolveC) + << instance->name() << "|" + << "UpdateImportantChanged" << component->getID() << ":" << component->getVersion() << "was changed from" + << ic.oldVersion << "updating linked components"; + auto oldVersion = APPLICATION->metadataIndex()->getLoadedVersion(component->getID(), ic.oldVersion); + for (auto oldReq : oldVersion->requiredSet()) { + auto currentlyRequired = component->m_cachedRequires.find(oldReq); + if (currentlyRequired == component->m_cachedRequires.cend()) { + auto oldReqComp = componentIndex.find(oldReq.uid); + if (oldReqComp != componentIndex.cend()) { + (*oldReqComp)->setUpdateAction(UpdateAction{ UpdateActionRemove{} }); + addedActions = true; + } + } + } + auto linked = collectTreeLinked(component->getID()); + for (auto comp : linked) { + if (comp->isCustom()) { + continue; + } + auto compUid = comp->getID(); + auto parentReq = std::find_if(component->m_cachedRequires.begin(), component->m_cachedRequires.end(), + [compUid](const Meta::Require& req) { return req.uid == compUid; }); + if (parentReq != component->m_cachedRequires.end()) { + auto newVersion = parentReq->equalsVersion.isEmpty() ? parentReq->suggests : parentReq->equalsVersion; + if (!newVersion.isEmpty()) { + comp->setUpdateAction(UpdateAction{ UpdateActionChangeVersion{ newVersion } }); + } else { + comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ + component->getID(), + component->getName(), + component->getVersion(), + } }); + } + } else { + comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ + component->getID(), + component->getName(), + component->getVersion(), + } }); + } + addedActions = true; + } + } }; std::visit(visitor, action); component->clearUpdateAction(); for (auto uid : toRemove) { @@ -690,7 +694,7 @@ void ComponentUpdateTask::finalizeComponents() auto found = componentIndex.find(conflict); if (found != componentIndex.cend()) { auto foundComp = *found; - if (foundComp ->isCustom()) { + if (foundComp->isCustom()) { continue; } component->addComponentProblem( diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index c4a2dd273..8623c500f 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -71,7 +71,6 @@ #include "ui/dialogs/CustomMessageBox.h" - PackProfile::PackProfile(MinecraftInstance* instance) : QAbstractListModel() { d.reset(new PackProfileData); From 8488d11c69ad181b4f4f303c4a8984938110b40f Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 28 Jun 2024 09:59:57 -0700 Subject: [PATCH 110/616] review suggestions + spelling Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/Component.cpp | 17 ++++++++++++++--- launcher/minecraft/Component.h | 17 ++++++----------- launcher/minecraft/ComponentUpdateTask.cpp | 21 +++++++++------------ launcher/minecraft/PackProfile.cpp | 2 +- 4 files changed, 30 insertions(+), 27 deletions(-) diff --git a/launcher/minecraft/Component.cpp b/launcher/minecraft/Component.cpp index 329e6b78e..df27ac071 100644 --- a/launcher/minecraft/Component.cpp +++ b/launcher/minecraft/Component.cpp @@ -38,7 +38,6 @@ #include #include -#include #include "Application.h" #include "FileSystem.h" @@ -50,6 +49,14 @@ #include +const QMap Component::KNOWN_MODLOADERS = { + { "net.neoforged", { ModPlatform::NeoForge, { "net.minecraftforge", "net.fabricmc.fabric-loader", "net.fabricmc.fabric-loader" } } }, + { "net.minecraftforge", { ModPlatform::Forge, { "net.neoforged", "net.fabricmc.fabric-loader", "net.fabricmc.fabric-loader" } } }, + { "net.fabricmc.fabric-loader", { ModPlatform::Fabric, { "net.minecraftforge", "net.neoforged", "org.quiltmc.quilt-loader" } } }, + { "org.quiltmc.quilt-loader", { ModPlatform::Quilt, { "net.minecraftforge", "net.neoforged", "net.fabricmc.fabric-loader" } } }, + { "com.mumfrey.liteloader", { ModPlatform::LiteLoader, {} } } +}; + Component::Component(PackProfile* parent, const QString& uid) { assert(parent); @@ -231,11 +238,11 @@ bool Component::isKnownModloader() return iter != KNOWN_MODLOADERS.cend(); } -QStringList Component::knownConfictingComponents() +QStringList Component::knownConflictingComponents() { auto iter = KNOWN_MODLOADERS.find(m_uid); if (iter != KNOWN_MODLOADERS.cend()) { - return (*iter).knownConfictingComponents; + return (*iter).knownConflictingComponents; } else { return {}; } @@ -276,12 +283,16 @@ void Component::addComponentProblem(ProblemSeverity severity, const QString& des m_componentProblemSeverity = severity; } m_componentProblems.append({ severity, description }); + + emit dataChanged(); } void Component::resetComponentProblems() { m_componentProblems.clear(); m_componentProblemSeverity = ProblemSeverity::None; + + emit dataChanged(); } void Component::setVersion(const QString& version) diff --git a/launcher/minecraft/Component.h b/launcher/minecraft/Component.h index 3669638f2..7ff30889f 100644 --- a/launcher/minecraft/Component.h +++ b/launcher/minecraft/Component.h @@ -23,7 +23,7 @@ struct UpdateActionChangeVersion { /// version to change to QString targetVersion; }; -struct UpdateActionLatestRecommendedCompatable { +struct UpdateActionLatestRecommendedCompatible { /// Parent uid QString parentUid; QString parentName; @@ -40,20 +40,13 @@ using UpdateActionNone = std::monostate; using UpdateAction = std::variant; struct ModloaderMapEntry { ModPlatform::ModLoaderType type; - QStringList knownConfictingComponents; -}; -static const QMap KNOWN_MODLOADERS{ - { "net.neoforged", { ModPlatform::NeoForge, { "net.minecraftforge", "net.fabricmc.fabric-loader", "net.fabricmc.fabric-loader" } } }, - { "net.minecraftforge", { ModPlatform::Forge, { "net.neoforged", "net.fabricmc.fabric-loader", "net.fabricmc.fabric-loader" } } }, - { "net.fabricmc.fabric-loader", { ModPlatform::Fabric, { "net.minecraftforge", "net.neoforged", "org.quiltmc.quilt-loader" } } }, - { "org.quiltmc.quilt-loader", { ModPlatform::Quilt, { "net.minecraftforge", "net.neoforged", "net.fabricmc.fabric-loader" } } }, - { "com.mumfrey.liteloader", { ModPlatform::LiteLoader, {} } } + QStringList knownConflictingComponents; }; class Component : public QObject, public ProblemProvider { @@ -66,6 +59,8 @@ class Component : public QObject, public ProblemProvider { virtual ~Component() {} + static const QMap KNOWN_MODLOADERS; + void applyTo(LaunchProfile* profile); bool isEnabled(); @@ -79,7 +74,7 @@ class Component : public QObject, public ProblemProvider { bool isCustom(); bool isVersionChangeable(); bool isKnownModloader(); - QStringList knownConfictingComponents(); + QStringList knownConflictingComponents(); // DEPRECATED: explicit numeric order values, used for loading old non-component config. TODO: refactor and move to migration code void setOrder(int order); diff --git a/launcher/minecraft/ComponentUpdateTask.cpp b/launcher/minecraft/ComponentUpdateTask.cpp index f4efba36f..6656a84f8 100644 --- a/launcher/minecraft/ComponentUpdateTask.cpp +++ b/launcher/minecraft/ComponentUpdateTask.cpp @@ -570,25 +570,22 @@ void ComponentUpdateTask::performUpdateActions() component->setVersion(cv.targetVersion); component->waitLoadMeta(); }, - [&component, &instance](const UpdateActionLatestRecommendedCompatable lrc) { + [&component, &instance](const UpdateActionLatestRecommendedCompatible lrc) { qCDebug(instanceProfileResolveC) << instance->name() << "|" - << "UpdateActionLatestRecommendedCompatable" << component->getID() << ":" << component->getVersion() + << "UpdateActionLatestRecommendedCompatible" << component->getID() << ":" << component->getVersion() << "updating to latest recommend or compatible with" << lrc.parentUid << lrc.version; auto versionList = APPLICATION->metadataIndex()->get(component->getID()); - versionList->waitToLoad(); if (versionList) { + versionList->waitToLoad(); auto recommended = versionList->getRecommendedForParent(lrc.parentUid, lrc.version); + if (!recommended) { + recommended = versionList->getLatestForParent(lrc.parentUid, lrc.version); + } if (recommended) { component->setVersion(recommended->version()); component->waitLoadMeta(); return; - } - - auto latest = versionList->getLatestForParent(lrc.parentUid, lrc.version); - if (latest) { - component->setVersion(latest->version()); - component->waitLoadMeta(); } else { component->addComponentProblem(ProblemSeverity::Error, QObject::tr("No compatible version of %1 found for %2 %3") @@ -635,14 +632,14 @@ void ComponentUpdateTask::performUpdateActions() if (!newVersion.isEmpty()) { comp->setUpdateAction(UpdateAction{ UpdateActionChangeVersion{ newVersion } }); } else { - comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ + comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatible{ component->getID(), component->getName(), component->getVersion(), } }); } } else { - comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatable{ + comp->setUpdateAction(UpdateAction{ UpdateActionLatestRecommendedCompatible{ component->getID(), component->getName(), component->getVersion(), @@ -690,7 +687,7 @@ void ComponentUpdateTask::finalizeComponents() } } } - for (auto conflict : component->knownConfictingComponents()) { + for (auto conflict : component->knownConflictingComponents()) { auto found = componentIndex.find(conflict); if (found != componentIndex.cend()) { auto foundComp = *found; diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index 8623c500f..d992a18f3 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -1034,7 +1034,7 @@ std::optional PackProfile::getModLoaders() ModPlatform::ModLoaderTypes result; bool has_any_loader = false; - QMapIterator i(KNOWN_MODLOADERS); + QMapIterator i(Component::KNOWN_MODLOADERS); while (i.hasNext()) { i.next(); From c886111e18566c10ec15e5c389a3d4d1da3d2ccf Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 6 Jul 2024 09:09:54 +0300 Subject: [PATCH 111/616] format the code Signed-off-by: Trial97 --- launcher/meta/VersionList.cpp | 5 ++--- launcher/minecraft/Component.cpp | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/launcher/meta/VersionList.cpp b/launcher/meta/VersionList.cpp index 28a42d28d..8bc326839 100644 --- a/launcher/meta/VersionList.cpp +++ b/launcher/meta/VersionList.cpp @@ -254,9 +254,8 @@ void VersionList::setupAddedVersion(const int row, const Version::Ptr& version) connect(version.get(), &Version::requiresChanged, this, [this, row]() { emit dataChanged(index(row), index(row), QVector() << RequiresRole); }); - connect(version.get(), &Version::timeChanged, this, [this, row]() { - emit dataChanged(index(row), index(row), { TimeRole, SortRole }); - }); + connect(version.get(), &Version::timeChanged, this, + [this, row]() { emit dataChanged(index(row), index(row), { TimeRole, SortRole }); }); connect(version.get(), &Version::typeChanged, this, [this, row]() { emit dataChanged(index(row), index(row), { TypeRole }); }); } diff --git a/launcher/minecraft/Component.cpp b/launcher/minecraft/Component.cpp index df27ac071..aeb8a398f 100644 --- a/launcher/minecraft/Component.cpp +++ b/launcher/minecraft/Component.cpp @@ -291,7 +291,7 @@ void Component::resetComponentProblems() { m_componentProblems.clear(); m_componentProblemSeverity = ProblemSeverity::None; - + emit dataChanged(); } From c666d060fc1503e307d2acbdb1443a26090e6801 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 19 Jul 2024 17:10:04 +0300 Subject: [PATCH 112/616] fix merge issue Signed-off-by: Trial97 --- launcher/minecraft/PackProfile.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index ad8652488..f1d2473c2 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -1048,8 +1048,8 @@ QList PackProfile::getModLoadersList() { QList result; for (auto c : d->components) { - if (c->isEnabled() && modloaderMapping.contains(c->getID())) { - result.append(modloaderMapping[c->getID()]); + if (c->isEnabled() && Component::KNOWN_MODLOADERS.contains(c->getID())) { + result.append(Component::KNOWN_MODLOADERS[c->getID()].type); } } From 5d3549a5e900cc65cecfccd49da10e28765311e4 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 22 Jul 2024 09:18:20 +0300 Subject: [PATCH 113/616] Add tooltips and fix archive download task Signed-off-by: Trial97 --- launcher/java/download/ArchiveDownloadTask.cpp | 1 + launcher/ui/pages/global/JavaPage.cpp | 2 +- launcher/ui/pages/global/JavaPage.ui | 6 ++++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index af5381dfc..ba1c96faf 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -124,6 +124,7 @@ void ArchiveDownloadTask::extractJava(QString input) stepProgress(*progressStep); }); m_task->start(); + return; } emitFailed(tr("Could not determine archive type!")); diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index ad37fa740..97ffa5d4d 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -264,7 +264,7 @@ void JavaPage::on_removeJavaButton_clicked() for (auto& entry : entries) { if (dcast->path.startsWith(entry.canonicalFilePath())) { auto response = CustomMessageBox::selectable(this, tr("Confirm Deletion"), - tr("You are about to remove \"%1\" java version.\n" + tr("You are about to remove the Java installation named \"%1\".\n" "Are you sure?") .arg(entry.fileName()), QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index c8f62e075..e6bbeb15a 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -253,6 +253,9 @@ + + Automatically selects the Java version that is compatible with the current Minecraft instance, based on the major version required. + Autodetect Java version @@ -299,6 +302,9 @@ false + + Automatically downloads and selects the Java version recommended by Mojang. + Auto-download Mojang Java From 0ac62f9ddf0e6ef80bcb20d2828d013e31726579 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 23 Jul 2024 01:41:41 +0300 Subject: [PATCH 114/616] Recommend java major Signed-off-by: Trial97 --- launcher/Filter.cpp | 11 ++- launcher/Filter.h | 20 +++- launcher/minecraft/MinecraftInstance.h | 2 +- launcher/minecraft/VersionFile.h | 2 +- launcher/ui/java/InstallJavaDialog.cpp | 97 ++++++++++++++++++- launcher/ui/java/InstallJavaDialog.h | 3 +- launcher/ui/pages/BasePageProvider.h | 1 - launcher/ui/pages/global/JavaPage.cpp | 2 +- .../pages/instance/InstanceSettingsPage.cpp | 2 +- launcher/ui/widgets/JavaSettingsWidget.cpp | 2 +- 10 files changed, 122 insertions(+), 20 deletions(-) diff --git a/launcher/Filter.cpp b/launcher/Filter.cpp index fc1c42344..adeb2209e 100644 --- a/launcher/Filter.cpp +++ b/launcher/Filter.cpp @@ -1,16 +1,12 @@ #include "Filter.h" -Filter::~Filter() {} - ContainsFilter::ContainsFilter(const QString& pattern) : pattern(pattern) {} -ContainsFilter::~ContainsFilter() {} bool ContainsFilter::accepts(const QString& value) { return value.contains(pattern); } ExactFilter::ExactFilter(const QString& pattern) : pattern(pattern) {} -ExactFilter::~ExactFilter() {} bool ExactFilter::accepts(const QString& value) { return value == pattern; @@ -27,10 +23,15 @@ RegexpFilter::RegexpFilter(const QString& regexp, bool invert) : invert(invert) pattern.setPattern(regexp); pattern.optimize(); } -RegexpFilter::~RegexpFilter() {} bool RegexpFilter::accepts(const QString& value) { auto match = pattern.match(value); bool matched = match.hasMatch(); return invert ? (!matched) : (matched); } + +ExactListFilter::ExactListFilter(const QStringList& pattern) : m_pattern(pattern) {} +bool ExactListFilter::accepts(const QString& value) +{ + return m_pattern.isEmpty() || m_pattern.contains(value); +} \ No newline at end of file diff --git a/launcher/Filter.h b/launcher/Filter.h index 089c844d4..a8c9c14d8 100644 --- a/launcher/Filter.h +++ b/launcher/Filter.h @@ -5,14 +5,14 @@ class Filter { public: - virtual ~Filter(); + virtual ~Filter() = default; virtual bool accepts(const QString& value) = 0; }; class ContainsFilter : public Filter { public: ContainsFilter(const QString& pattern); - virtual ~ContainsFilter(); + virtual ~ContainsFilter() = default; bool accepts(const QString& value) override; private: @@ -22,7 +22,7 @@ class ContainsFilter : public Filter { class ExactFilter : public Filter { public: ExactFilter(const QString& pattern); - virtual ~ExactFilter(); + virtual ~ExactFilter() = default; bool accepts(const QString& value) override; private: @@ -32,7 +32,7 @@ class ExactFilter : public Filter { class ExactIfPresentFilter : public Filter { public: ExactIfPresentFilter(const QString& pattern); - ~ExactIfPresentFilter() override = default; + virtual ~ExactIfPresentFilter() override = default; bool accepts(const QString& value) override; private: @@ -42,10 +42,20 @@ class ExactIfPresentFilter : public Filter { class RegexpFilter : public Filter { public: RegexpFilter(const QString& regexp, bool invert); - virtual ~RegexpFilter(); + virtual ~RegexpFilter() = default; bool accepts(const QString& value) override; private: QRegularExpression pattern; bool invert = false; }; + +class ExactListFilter : public Filter { + public: + ExactListFilter(const QStringList& pattern = {}); + virtual ~ExactListFilter() = default; + bool accepts(const QString& value) override; + + private: + const QStringList& m_pattern; +}; diff --git a/launcher/minecraft/MinecraftInstance.h b/launcher/minecraft/MinecraftInstance.h index 7af0df389..730116072 100644 --- a/launcher/minecraft/MinecraftInstance.h +++ b/launcher/minecraft/MinecraftInstance.h @@ -56,7 +56,7 @@ class MinecraftInstance : public BaseInstance { Q_OBJECT public: MinecraftInstance(SettingsObjectPtr globalSettings, SettingsObjectPtr settings, const QString& rootDir); - virtual ~MinecraftInstance() {}; + virtual ~MinecraftInstance() = default; virtual void saveNow() override; void loadSpecificSettings() override; diff --git a/launcher/minecraft/VersionFile.h b/launcher/minecraft/VersionFile.h index 85ac55426..40f49aaa4 100644 --- a/launcher/minecraft/VersionFile.h +++ b/launcher/minecraft/VersionFile.h @@ -101,7 +101,7 @@ class VersionFile : public ProblemContainer { /// Mojang: list of compatible java majors QList compatibleJavaMajors; - /// Mojang: the name of recomended java version + /// Mojang: the name of recommended java version QString compatibleJavaName; /// Mojang: type of the Minecraft version diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index 1a4b4cc58..01ec56dfd 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -18,6 +18,7 @@ #include "InstallJavaDialog.h" +#include #include #include #include @@ -27,10 +28,13 @@ #include "Application.h" #include "BaseVersionList.h" #include "FileSystem.h" +#include "Filter.h" #include "java/download/ArchiveDownloadTask.h" #include "java/download/ManifestDownloadTask.h" #include "meta/Index.h" #include "meta/VersionList.h" +#include "minecraft/MinecraftInstance.h" +#include "minecraft/PackProfile.h" #include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/ProgressDialog.h" #include "ui/java/VersionList.h" @@ -119,6 +123,27 @@ class InstallJavaPage : public QWidget, public BasePage { majorVersionSelect->loadList(); javaVersionSelect->loadList(); } + + public slots: + void setRecommendedMajors(const QStringList& majors) + { + m_recommended_majors = majors; + recommendedFilterChanged(); + } + void setRecomend(bool recomend) + { + m_recommend = recomend; + recommendedFilterChanged(); + } + void recommendedFilterChanged() + { + if (m_recommend) { + majorVersionSelect->setFilter(BaseVersionList::ModelRoles::JavaMajorRole, new ExactListFilter(m_recommended_majors)); + } else { + majorVersionSelect->setFilter(BaseVersionList::ModelRoles::JavaMajorRole, new ExactListFilter()); + } + } + signals: void selectionChanged(); @@ -131,6 +156,9 @@ class InstallJavaPage : public QWidget, public BasePage { QHBoxLayout* horizontalLayout = nullptr; VersionSelectWidget* majorVersionSelect = nullptr; VersionSelectWidget* javaVersionSelect = nullptr; + + QStringList m_recommended_majors; + bool m_recommend; }; static InstallJavaPage* pageCast(BasePage* page) @@ -140,8 +168,20 @@ static InstallJavaPage* pageCast(BasePage* page) return result; } namespace Java { +QStringList getRecommendedJavaVersionsFromVersionList(Meta::VersionList::Ptr list) +{ + QStringList recommendedJavas; + for (auto ver : list->versions()) { + auto major = ver->version(); + if (major.startsWith("java")) { + major = "Java " + major.mid(4); + } + recommendedJavas.append(major); + } + return recommendedJavas; +} -InstallDialog::InstallDialog(const QString& uid, QWidget* parent) +InstallDialog::InstallDialog(const QString& uid, BaseInstance* instance, QWidget* parent) : QDialog(parent), container(new PageContainer(this, QString(), this)), buttons(new QDialogButtonBox(this)) { auto layout = new QVBoxLayout(this); @@ -150,10 +190,22 @@ InstallDialog::InstallDialog(const QString& uid, QWidget* parent) layout->addWidget(container); auto buttonLayout = new QHBoxLayout(this); + auto refreshLayout = new QHBoxLayout(this); auto refreshButton = new QPushButton(tr("&Refresh"), this); connect(refreshButton, &QPushButton::clicked, this, [this] { pageCast(container->selectedPage())->loadList(); }); - buttonLayout->addWidget(refreshButton); + refreshLayout->addWidget(refreshButton); + + auto recommendedCheckBox = new QCheckBox("Recommended", this); + recommendedCheckBox->setCheckState(Qt::CheckState::Checked); + connect(recommendedCheckBox, &QCheckBox::stateChanged, this, [this](int state) { + for (BasePage* page : container->getPages()) { + pageCast(page)->setRecomend(state == Qt::Checked); + } + }); + + refreshLayout->addWidget(recommendedCheckBox); + buttonLayout->addLayout(refreshLayout); buttons->setOrientation(Qt::Horizontal); buttons->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); @@ -168,11 +220,49 @@ InstallDialog::InstallDialog(const QString& uid, QWidget* parent) setWindowModality(Qt::WindowModal); resize(840, 480); + QStringList recommendedJavas; + if (auto mcInst = dynamic_cast(instance); mcInst) { + auto mc = mcInst->getPackProfile()->getComponent("net.minecraft"); + if (mc) { + auto file = mc->getVersionFile(); // no need for load as it should already be loaded + if (file) { + for (auto major : file->compatibleJavaMajors) { + recommendedJavas.append(QString("Java %1").arg(major)); + } + } + } + } else { + const auto versions = APPLICATION->metadataIndex()->get("net.minecraft.java"); + if (versions) { + if (versions->isLoaded()) { + recommendedJavas = getRecommendedJavaVersionsFromVersionList(versions); + } else { + auto newTask = versions->getLoadTask(); + if (newTask) { + connect(newTask.get(), &Task::succeeded, this, [this, versions] { + auto recommendedJavas = getRecommendedJavaVersionsFromVersionList(versions); + for (BasePage* page : container->getPages()) { + pageCast(page)->setRecommendedMajors(recommendedJavas); + } + }); + if (!newTask->isRunning()) + newTask->start(); + } else { + recommendedJavas = getRecommendedJavaVersionsFromVersionList(versions); + } + } + } + } for (BasePage* page : container->getPages()) { if (page->id() == uid) container->selectPage(page->id()); - connect(pageCast(page), &InstallJavaPage::selectionChanged, this, [this] { validate(); }); + auto cast = pageCast(page); + cast->setRecomend(true); + connect(cast, &InstallJavaPage::selectionChanged, this, [this] { validate(); }); + if (!recommendedJavas.isEmpty()) { + cast->setRecommendedMajors(recommendedJavas); + } } connect(container, &PageContainer::selectedPageChanged, this, [this] { validate(); }); pageCast(container->selectedPage())->selectSearch(); @@ -243,6 +333,7 @@ void InstallDialog::done(int result) QDialog::done(result); } + } // namespace Java #include "InstallJavaDialog.moc" \ No newline at end of file diff --git a/launcher/ui/java/InstallJavaDialog.h b/launcher/ui/java/InstallJavaDialog.h index 80d010c1a..d6f879207 100644 --- a/launcher/ui/java/InstallJavaDialog.h +++ b/launcher/ui/java/InstallJavaDialog.h @@ -19,6 +19,7 @@ #pragma once #include +#include "BaseInstance.h" #include "ui/pages/BasePageProvider.h" class MinecraftInstance; @@ -31,7 +32,7 @@ class InstallDialog final : public QDialog, private BasePageProvider { Q_OBJECT public: - explicit InstallDialog(const QString& uid = QString(), QWidget* parent = nullptr); + explicit InstallDialog(const QString& uid = QString(), BaseInstance* instance = nullptr, QWidget* parent = nullptr); QList getPages() override; QString dialogTitle() override; diff --git a/launcher/ui/pages/BasePageProvider.h b/launcher/ui/pages/BasePageProvider.h index 422891e6b..ef3c1cd08 100644 --- a/launcher/ui/pages/BasePageProvider.h +++ b/launcher/ui/pages/BasePageProvider.h @@ -16,7 +16,6 @@ #pragma once #include -#include #include "ui/pages/BasePage.h" class BasePageProvider { diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 97ffa5d4d..6699b00c0 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -201,7 +201,7 @@ void JavaPage::on_javaTestBtn_clicked() void JavaPage::on_downloadJavaButton_clicked() { - auto jdialog = new Java::InstallDialog({}, this); + auto jdialog = new Java::InstallDialog({}, nullptr, this); jdialog->exec(); ui->managedJavaList->loadList(); } diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 6e6b1db57..364f64e19 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -390,7 +390,7 @@ void InstanceSettingsPage::loadSettings() void InstanceSettingsPage::on_javaDownloadBtn_clicked() { - auto jdialog = new Java::InstallDialog({}, this); + auto jdialog = new Java::InstallDialog({}, m_instance, this); jdialog->exec(); } diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index ec1ed0605..fb90afe1d 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -351,7 +351,7 @@ void JavaSettingsWidget::on_javaBrowseBtn_clicked() void JavaSettingsWidget::javaDownloadBtn_clicked() { - auto jdialog = new Java::InstallDialog({}, this); + auto jdialog = new Java::InstallDialog({}, nullptr, this); jdialog->exec(); } From fe23e76714598f134f07ba04b482bdb2bf1ee34c Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 5 Aug 2024 12:04:08 +0300 Subject: [PATCH 115/616] fix codeql Signed-off-by: Trial97 --- launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h index 0879474cf..ddfa7ae95 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.h @@ -1,5 +1,6 @@ #pragma once +#include #include "BaseInstance.h" #include "InstanceCreationTask.h" From 7a6627683895fab64f99a87e6b054614ff083f90 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 20 Aug 2024 01:07:23 +0300 Subject: [PATCH 116/616] fix conflicts Signed-off-by: Trial97 --- launcher/minecraft/launch/AutoInstallJava.cpp | 12 +++++++++--- launcher/ui/java/VersionList.cpp | 3 +-- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index eefed9cf5..d43f41ddb 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -121,6 +121,9 @@ void AutoInstallJava::executeTask() connect(m_current_task.get(), &Task::stepProgress, this, &AutoInstallJava::propagateStepProgress); connect(m_current_task.get(), &Task::status, this, &AutoInstallJava::setStatus); connect(m_current_task.get(), &Task::details, this, &AutoInstallJava::setDetails); + if (!m_current_task->isRunning()) { + m_current_task->start(); + } emit progressReportingRequest(); } @@ -213,11 +216,11 @@ void AutoInstallJava::tryNextMajorJava() m_majorJavaVersionIndex++; auto javaMajor = versionList->getVersion(QString("java%1").arg(majorJavaVersion)); - javaMajor->load(Net::Mode::Online); - m_current_task = javaMajor->getCurrentTask(); - if (javaMajor->isLoaded() || !m_current_task) { + + if (javaMajor->isLoaded()) { downloadJava(javaMajor, wantedJavaName); } else { + m_current_task = APPLICATION->metadataIndex()->loadVersion("net.minecraft.java", javaMajor->version(), Net::Mode::Online); connect(m_current_task.get(), &Task::succeeded, this, [this, javaMajor, wantedJavaName] { downloadJava(javaMajor, wantedJavaName); }); connect(m_current_task.get(), &Task::failed, this, &AutoInstallJava::tryNextMajorJava); @@ -225,6 +228,9 @@ void AutoInstallJava::tryNextMajorJava() connect(m_current_task.get(), &Task::stepProgress, this, &AutoInstallJava::propagateStepProgress); connect(m_current_task.get(), &Task::status, this, &AutoInstallJava::setStatus); connect(m_current_task.get(), &Task::details, this, &AutoInstallJava::setDetails); + if (!m_current_task->isRunning()) { + m_current_task->start(); + } } } bool AutoInstallJava::abort() diff --git a/launcher/ui/java/VersionList.cpp b/launcher/ui/java/VersionList.cpp index 6f60a6867..f2c0cb3b9 100644 --- a/launcher/ui/java/VersionList.cpp +++ b/launcher/ui/java/VersionList.cpp @@ -35,8 +35,7 @@ VersionList::VersionList(Meta::Version::Ptr version, QObject* parent) : BaseVers Task::Ptr VersionList::getLoadTask() { - m_version->load(Net::Mode::Online); - auto task = m_version->getCurrentTask(); + auto task = m_version->loadTask(Net::Mode::Online); connect(task.get(), &Task::finished, this, &VersionList::sortVersions); return task; } From ca298d1ed5cffb9a92dc78523a72ee407a673694 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 20 Aug 2024 01:08:03 +0300 Subject: [PATCH 117/616] add automatic java switch on minecraft version switch Signed-off-by: Trial97 --- launcher/minecraft/MinecraftInstance.cpp | 1 + launcher/minecraft/launch/AutoInstallJava.cpp | 1 + launcher/ui/pages/instance/InstanceSettingsPage.cpp | 3 +++ launcher/ui/pages/instance/VersionPage.cpp | 5 +++++ 4 files changed, 10 insertions(+) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 3963b0148..d861056bf 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -138,6 +138,7 @@ void MinecraftInstance::loadSpecificSettings() // Java Settings auto locationOverride = m_settings->registerSetting("OverrideJavaLocation", false); auto argsOverride = m_settings->registerSetting("OverrideJavaArgs", false); + m_settings->registerSetting("AutomaticJava", false); if (auto global_settings = globalSettings()) { m_settings->registerOverride(global_settings->getSetting("JavaPath"), locationOverride); diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index d43f41ddb..3f58a28a6 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -132,6 +132,7 @@ void AutoInstallJava::setJavaPath(QString path) auto settings = m_instance->settings(); settings->set("OverrideJavaLocation", true); settings->set("JavaPath", path); + settings->set("AutomaticJava", true); emit logLine(tr("Compatible Java found at: %1.").arg(path), MessageLevel::Info); emitSucceeded(); } diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 56c3e2b9a..19bc9fdf9 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -38,6 +38,7 @@ #include "InstanceSettingsPage.h" #include "minecraft/MinecraftInstance.h" #include "minecraft/WorldList.h" +#include "settings/Setting.h" #include "ui/dialogs/CustomMessageBox.h" #include "ui/java/InstallJavaDialog.h" #include "ui_InstanceSettingsPage.h" @@ -346,6 +347,8 @@ void InstanceSettingsPage::loadSettings() bool overrideLocation = m_settings->get("OverrideJavaLocation").toBool(); bool overrideArgs = m_settings->get("OverrideJavaArgs").toBool(); + connect(m_settings->getSetting("OverrideJavaLocation").get(), &Setting::SettingChanged, ui->javaSettingsGroupBox, + [this] { ui->javaSettingsGroupBox->setChecked(m_settings->get("OverrideJavaLocation").toBool()); }); ui->javaSettingsGroupBox->setChecked(overrideLocation); ui->javaPathTextBox->setText(m_settings->get("JavaPath").toString()); ui->skipCompatibilityCheckbox->setChecked(m_settings->get("IgnoreJavaCompatibility").toBool()); diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index 807bc5d58..c55d32efb 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -393,6 +393,11 @@ void VersionPage::on_actionChange_version_triggered() bool important = false; if (uid == "net.minecraft") { important = true; + if (APPLICATION->settings()->get("AutomaticJavaSwitch").toBool() && m_inst->settings()->get("AutomaticJava").toBool() && + m_inst->settings()->get("OverrideJavaLocation").toBool()) { + m_inst->settings()->set("OverrideJavaLocation", false); + m_inst->settings()->set("JavaPath", ""); + } } m_profile->setComponentVersion(uid, vselect.selectedVersion()->descriptor(), important); m_profile->resolve(Net::Mode::Online); From 014fc142915ec4a0f96b3082f76d4d32ce7596aa Mon Sep 17 00:00:00 2001 From: maskers <97827489+mskrss@users.noreply.github.com> Date: Tue, 20 Aug 2024 21:53:05 +0300 Subject: [PATCH 118/616] truncate logs for mclo.gs upload to fit 25k line limit Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com> --- launcher/net/PasteUpload.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/launcher/net/PasteUpload.cpp b/launcher/net/PasteUpload.cpp index c67d3b23c..5e8c5a8cd 100644 --- a/launcher/net/PasteUpload.cpp +++ b/launcher/net/PasteUpload.cpp @@ -49,6 +49,27 @@ #include "net/Logging.h" +constexpr int MaxMclogsLines = 25000; +constexpr int InitialMclogsLines = 10000; +constexpr int FinalMclogsLines = 14900; + +QString truncateLogForMclogs(const QString &logContent) { + QStringList lines = logContent.split("\n"); + if (lines.size() > MaxMclogsLines) { + QString truncatedLog = lines.mid(0, InitialMclogsLines).join("\n"); + truncatedLog += "\n\n\n\n\n\n\n\n\n\n" + "------------------------------------------------------------\n" + "--------------------- Log truncated by ---------------------\n" + "---------------------- Prism Launcher ----------------------\n" + "----- Middle portion omitted to fit mclo.gs size limits ----\n" + "------------------------------------------------------------\n" + "\n\n\n\n\n\n\n\n\n\n"; + truncatedLog += lines.mid(lines.size() - FinalMclogsLines, FinalMclogsLines).join("\n"); + return truncatedLog; + } + return logContent; +} + std::array PasteUpload::PasteTypes = { { { "0x0.st", "https://0x0.st", "" }, { "hastebin", "https://hst.sh", "/documents" }, { "paste.gg", "https://paste.gg", "/api/v1/pastes" }, @@ -98,6 +119,7 @@ void PasteUpload::executeTask() } case Mclogs: { QUrlQuery postData; + m_text = truncateLogForMclogs(m_text).toUtf8(); postData.addQueryItem("content", m_text); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); rep = APPLICATION->network()->post(request, postData.toString().toUtf8()); From e6f30c0ebe0ddd43b493f27156d6c0765105ded5 Mon Sep 17 00:00:00 2001 From: maskers <97827489+mskrss@users.noreply.github.com> Date: Tue, 20 Aug 2024 22:14:40 +0300 Subject: [PATCH 119/616] fix formatting Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com> --- launcher/net/PasteUpload.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/launcher/net/PasteUpload.cpp b/launcher/net/PasteUpload.cpp index 5e8c5a8cd..92a44d5ed 100644 --- a/launcher/net/PasteUpload.cpp +++ b/launcher/net/PasteUpload.cpp @@ -53,17 +53,19 @@ constexpr int MaxMclogsLines = 25000; constexpr int InitialMclogsLines = 10000; constexpr int FinalMclogsLines = 14900; -QString truncateLogForMclogs(const QString &logContent) { +QString truncateLogForMclogs(const QString &logContent) +{ QStringList lines = logContent.split("\n"); if (lines.size() > MaxMclogsLines) { QString truncatedLog = lines.mid(0, InitialMclogsLines).join("\n"); - truncatedLog += "\n\n\n\n\n\n\n\n\n\n" - "------------------------------------------------------------\n" - "--------------------- Log truncated by ---------------------\n" - "---------------------- Prism Launcher ----------------------\n" - "----- Middle portion omitted to fit mclo.gs size limits ----\n" - "------------------------------------------------------------\n" - "\n\n\n\n\n\n\n\n\n\n"; + truncatedLog += + "\n\n\n\n\n\n\n\n\n\n" + "------------------------------------------------------------\n" + "--------------------- Log truncated by ---------------------\n" + "---------------------- Prism Launcher ----------------------\n" + "----- Middle portion omitted to fit mclo.gs size limits ----\n" + "------------------------------------------------------------\n" + "\n\n\n\n\n\n\n\n\n\n"; truncatedLog += lines.mid(lines.size() - FinalMclogsLines, FinalMclogsLines).join("\n"); return truncatedLog; } From 858f6aa9b8adcb5d2ac9eadd2702a21a88f9e4c4 Mon Sep 17 00:00:00 2001 From: maskers <97827489+mskrss@users.noreply.github.com> Date: Tue, 20 Aug 2024 22:16:40 +0300 Subject: [PATCH 120/616] fix formatting Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com> --- launcher/net/PasteUpload.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/net/PasteUpload.cpp b/launcher/net/PasteUpload.cpp index 92a44d5ed..953a0d722 100644 --- a/launcher/net/PasteUpload.cpp +++ b/launcher/net/PasteUpload.cpp @@ -53,7 +53,7 @@ constexpr int MaxMclogsLines = 25000; constexpr int InitialMclogsLines = 10000; constexpr int FinalMclogsLines = 14900; -QString truncateLogForMclogs(const QString &logContent) +QString truncateLogForMclogs(const QString& logContent) { QStringList lines = logContent.split("\n"); if (lines.size() > MaxMclogsLines) { From 7dff77ca356d93f0ef9de390276fce0a9c1a5ee6 Mon Sep 17 00:00:00 2001 From: seth Date: Tue, 20 Aug 2024 01:44:11 -0400 Subject: [PATCH 121/616] style(nix): alejandra -> nixfmt-rfc-style Signed-off-by: seth --- nix/dev.nix | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/nix/dev.nix b/nix/dev.nix index cf61449a7..22b4b43fb 100644 --- a/nix/dev.nix +++ b/nix/dev.nix @@ -9,9 +9,9 @@ hooks = { markdownlint.enable = true; - alejandra.enable = true; deadnix.enable = true; nil.enable = true; + nixfmt.enable = true; clang-format = { enable = true; @@ -31,6 +31,6 @@ buildInputs = with pkgs; [ccache ninja]; }; - formatter = pkgs.alejandra; + formatter = pkgs.nixfmt-rfc-style; }; } From 4c81d8c53d09196426568c4a31a4e752ed05397a Mon Sep 17 00:00:00 2001 From: seth Date: Tue, 20 Aug 2024 01:44:24 -0400 Subject: [PATCH 122/616] style(nix): format with nixfmt Signed-off-by: seth --- default.nix | 23 +++---- flake.nix | 13 ++-- nix/README.md | 72 ++++++++++++++-------- nix/dev.nix | 67 ++++++++++++--------- nix/distribution.nix | 54 ++++++++--------- nix/pkg/default.nix | 140 ++++++++++++++++++++++--------------------- nix/pkg/wrapper.nix | 126 +++++++++++++++++++------------------- 7 files changed, 259 insertions(+), 236 deletions(-) diff --git a/default.nix b/default.nix index c7d0c267d..6466507b7 100644 --- a/default.nix +++ b/default.nix @@ -1,14 +1,9 @@ -( - import - ( - let - lock = builtins.fromJSON (builtins.readFile ./flake.lock); - in - fetchTarball { - url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; - sha256 = lock.nodes.flake-compat.locked.narHash; - } - ) - {src = ./.;} -) -.defaultNix +(import ( + let + lock = builtins.fromJSON (builtins.readFile ./flake.lock); + in + fetchTarball { + url = "https://github.com/edolstra/flake-compat/archive/${lock.nodes.flake-compat.locked.rev}.tar.gz"; + sha256 = lock.nodes.flake-compat.locked.narHash; + } +) { src = ./.; }).defaultNix diff --git a/flake.nix b/flake.nix index 7cef5217a..1e3e36d66 100644 --- a/flake.nix +++ b/flake.nix @@ -2,8 +2,8 @@ description = "A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC)"; nixConfig = { - extra-substituters = ["https://cache.garnix.io"]; - extra-trusted-public-keys = ["cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g="]; + extra-substituters = [ "https://cache.garnix.io" ]; + extra-trusted-public-keys = [ "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" ]; }; inputs = { @@ -30,12 +30,9 @@ }; }; - outputs = { - flake-parts, - pre-commit-hooks, - ... - } @ inputs: - flake-parts.lib.mkFlake {inherit inputs;} { + outputs = + { flake-parts, pre-commit-hooks, ... }@inputs: + flake-parts.lib.mkFlake { inherit inputs; } { imports = [ pre-commit-hooks.flakeModule diff --git a/nix/README.md b/nix/README.md index f7923577f..8a0b9ba26 100644 --- a/nix/README.md +++ b/nix/README.md @@ -15,7 +15,6 @@ to temporarily enable it when using `nix` commands. Example (NixOS): ```nix -{...}: { nix.settings = { trusted-substituters = [ @@ -39,6 +38,7 @@ Example: { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + prismlauncher = { url = "github:PrismLauncher/PrismLauncher"; # Optional: Override the nixpkgs input of prismlauncher to use the same revision as the rest of your flake @@ -47,19 +47,24 @@ Example: }; }; - outputs = {nixpkgs, prismlauncher}: { - nixosConfigurations.foo = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; + outputs = + { nixpkgs, prismlauncher }: + { + nixosConfigurations.foo = nixpkgs.lib.nixosSystem { + modules = [ + ./configuration.nix - modules = [ - ({pkgs, ...}: { - nixpkgs.overlays = [prismlauncher.overlays.default]; + ( + { pkgs, ... }: + { + nixpkgs.overlays = [ prismlauncher.overlays.default ]; - environment.systemPackages = [pkgs.prismlauncher]; - }) - ]; + environment.systemPackages = [ pkgs.prismlauncher ]; + } + ) + ]; + }; }; - } } ``` @@ -74,6 +79,7 @@ Example: { inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + prismlauncher = { url = "github:PrismLauncher/PrismLauncher"; # Optional: Override the nixpkgs input of prismlauncher to use the same revision as the rest of your flake @@ -82,17 +88,22 @@ Example: }; }; - outputs = {nixpkgs, prismlauncher}: { - nixosConfigurations.foo = nixpkgs.lib.nixosSystem { - system = "x86_64-linux"; + outputs = + { nixpkgs, prismlauncher }: + { + nixosConfigurations.foo = nixpkgs.lib.nixosSystem { + modules = [ + ./configuration.nix - modules = [ - ({pkgs, ...}: { - environment.systemPackages = [prismlauncher.packages.${pkgs.system}.prismlauncher]; - }) - ]; + ( + { pkgs, ... }: + { + environment.systemPackages = [ prismlauncher.packages.${pkgs.system}.prismlauncher ]; + } + ) + ]; + }; }; - } } ``` @@ -118,7 +129,6 @@ If you want to avoid rebuilds you may add the garnix cache to your substitutors. Example (NixOS): ```nix -{...}: { nix.settings = { trusted-substituters = [ @@ -139,10 +149,15 @@ We use flake-compat to allow using this Flake on a system that doesn't use flake Example: ```nix -{pkgs, ...}: { - nixpkgs.overlays = [(import (builtins.fetchTarball "https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz")).overlays.default]; +{ pkgs, ... }: +{ + nixpkgs.overlays = [ + (import ( + builtins.fetchTarball "https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz" + )).overlays.default + ]; - environment.systemPackages = [pkgs.prismlauncher]; + environment.systemPackages = [ pkgs.prismlauncher ]; } ``` @@ -154,8 +169,13 @@ This way the installed package is fully reproducible. Example: ```nix -{pkgs, ...}: { - environment.systemPackages = [(import (builtins.fetchTarball "https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz")).packages.${pkgs.system}.prismlauncher]; +{ pkgs, ... }: +{ + environment.systemPackages = [ + (import ( + builtins.fetchTarball "https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz" + )).packages.${pkgs.system}.prismlauncher + ]; } ``` diff --git a/nix/dev.nix b/nix/dev.nix index 22b4b43fb..2ae3c845b 100644 --- a/nix/dev.nix +++ b/nix/dev.nix @@ -1,36 +1,47 @@ { - perSystem = { - config, - lib, - pkgs, - ... - }: { - pre-commit.settings = { - hooks = { - markdownlint.enable = true; + perSystem = + { + config, + lib, + pkgs, + ... + }: + { + pre-commit.settings = { + hooks = { + markdownlint.enable = true; - deadnix.enable = true; - nil.enable = true; - nixfmt.enable = true; + deadnix.enable = true; + nil.enable = true; + nixfmt.enable = true; - clang-format = { - enable = true; - types_or = ["c" "c++" "java" "json" "objective-c"]; + clang-format = { + enable = true; + types_or = [ + "c" + "c++" + "java" + "json" + "objective-c" + ]; + }; }; + + tools.clang-tools = lib.mkForce pkgs.clang-tools_18; }; - tools.clang-tools = lib.mkForce pkgs.clang-tools_18; + devShells.default = pkgs.mkShell { + shellHook = '' + ${config.pre-commit.installationScript} + ''; + + inputsFrom = [ config.packages.prismlauncher-unwrapped ]; + buildInputs = with pkgs; [ + ccache + ninja + ]; + }; + + formatter = pkgs.nixfmt-rfc-style; }; - - devShells.default = pkgs.mkShell { - shellHook = '' - ${config.pre-commit.installationScript} - ''; - - inputsFrom = [config.packages.prismlauncher-unwrapped]; - buildInputs = with pkgs; [ccache ninja]; - }; - - formatter = pkgs.nixfmt-rfc-style; - }; } diff --git a/nix/distribution.nix b/nix/distribution.nix index 28ef7ced1..ac7fc9871 100644 --- a/nix/distribution.nix +++ b/nix/distribution.nix @@ -1,37 +1,33 @@ +{ inputs, self, ... }: { - inputs, - self, - ... -}: { - perSystem = { - lib, - pkgs, - ... - }: { - packages = let - ourPackages = lib.fix (final: self.overlays.default final pkgs); - in { - inherit - (ourPackages) - prismlauncher-unwrapped - prismlauncher - ; - default = ourPackages.prismlauncher; + perSystem = + { lib, pkgs, ... }: + { + packages = + let + ourPackages = lib.fix (final: self.overlays.default final pkgs); + in + { + inherit (ourPackages) prismlauncher-unwrapped prismlauncher; + default = ourPackages.prismlauncher; + }; }; - }; flake = { - overlays.default = final: prev: let - version = builtins.substring 0 8 self.lastModifiedDate or "dirty"; - in { - prismlauncher-unwrapped = prev.callPackage ./pkg { - inherit (inputs) libnbtplusplus; - inherit version; - }; + overlays.default = + final: prev: + let + version = builtins.substring 0 8 self.lastModifiedDate or "dirty"; + in + { + prismlauncher-unwrapped = prev.callPackage ./pkg { + inherit (inputs) libnbtplusplus; + inherit version; + }; - prismlauncher = prev.qt6Packages.callPackage ./pkg/wrapper.nix { - inherit (final) prismlauncher-unwrapped; + prismlauncher = prev.qt6Packages.callPackage ./pkg/wrapper.nix { + inherit (final) prismlauncher-unwrapped; + }; }; - }; }; } diff --git a/nix/pkg/default.nix b/nix/pkg/default.nix index f3ff3789c..a5a57eaf0 100644 --- a/nix/pkg/default.nix +++ b/nix/pkg/default.nix @@ -18,16 +18,19 @@ version, libnbtplusplus, }: + assert lib.assertMsg ( gamemodeSupport -> stdenv.isLinux ) "gamemodeSupport is only available on Linux."; - stdenv.mkDerivation { - pname = "prismlauncher-unwrapped"; - inherit version; - src = lib.fileset.toSource { - root = ../../.; - fileset = lib.fileset.unions (map (fileName: ../../${fileName}) [ +stdenv.mkDerivation { + pname = "prismlauncher-unwrapped"; + inherit version; + + src = lib.fileset.toSource { + root = ../../.; + fileset = lib.fileset.unions ( + map (fileName: ../../${fileName}) [ "buildconfig" "cmake" "launcher" @@ -36,71 +39,70 @@ assert lib.assertMsg ( "tests" "COPYING.md" "CMakeLists.txt" - ]); - }; + ] + ); + }; - postUnpack = '' - rm -rf source/libraries/libnbtplusplus - ln -s ${libnbtplusplus} source/libraries/libnbtplusplus - ''; + postUnpack = '' + rm -rf source/libraries/libnbtplusplus + ln -s ${libnbtplusplus} source/libraries/libnbtplusplus + ''; - nativeBuildInputs = [ - cmake - ninja - extra-cmake-modules - jdk17 - stripJavaArchivesHook + nativeBuildInputs = [ + cmake + ninja + extra-cmake-modules + jdk17 + stripJavaArchivesHook + ]; + + buildInputs = + [ + cmark + ghc_filesystem + kdePackages.qtbase + kdePackages.qtnetworkauth + kdePackages.quazip + tomlplusplus + zlib + ] + ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Cocoa ] + ++ lib.optional gamemodeSupport gamemode; + + hardeningEnable = lib.optionals stdenv.isLinux [ "pie" ]; + + cmakeFlags = + [ (lib.cmakeFeature "Launcher_BUILD_PLATFORM" "nixpkgs") ] + ++ lib.optionals (msaClientID != null) [ + (lib.cmakeFeature "Launcher_MSA_CLIENT_ID" (toString msaClientID)) + ] + ++ lib.optionals (lib.versionOlder kdePackages.qtbase.version "6") [ + (lib.cmakeFeature "Launcher_QT_VERSION_MAJOR" "5") + ] + ++ lib.optionals stdenv.isDarwin [ + # we wrap our binary manually + (lib.cmakeFeature "INSTALL_BUNDLE" "nodeps") + # disable built-in updater + (lib.cmakeFeature "MACOSX_SPARKLE_UPDATE_FEED_URL" "''") + (lib.cmakeFeature "CMAKE_INSTALL_PREFIX" "${placeholder "out"}/Applications/") ]; - buildInputs = - [ - cmark - ghc_filesystem - kdePackages.qtbase - kdePackages.qtnetworkauth - kdePackages.quazip - tomlplusplus - zlib - ] - ++ lib.optionals stdenv.isDarwin [darwin.apple_sdk.frameworks.Cocoa] - ++ lib.optional gamemodeSupport gamemode; + dontWrapQtApps = true; - hardeningEnable = lib.optionals stdenv.isLinux ["pie"]; - - cmakeFlags = - [ - (lib.cmakeFeature "Launcher_BUILD_PLATFORM" "nixpkgs") - ] - ++ lib.optionals (msaClientID != null) [ - (lib.cmakeFeature "Launcher_MSA_CLIENT_ID" (toString msaClientID)) - ] - ++ lib.optionals (lib.versionOlder kdePackages.qtbase.version "6") [ - (lib.cmakeFeature "Launcher_QT_VERSION_MAJOR" "5") - ] - ++ lib.optionals stdenv.isDarwin [ - # we wrap our binary manually - (lib.cmakeFeature "INSTALL_BUNDLE" "nodeps") - # disable built-in updater - (lib.cmakeFeature "MACOSX_SPARKLE_UPDATE_FEED_URL" "''") - (lib.cmakeFeature "CMAKE_INSTALL_PREFIX" "${placeholder "out"}/Applications/") - ]; - - dontWrapQtApps = true; - - meta = { - description = "Free, open source launcher for Minecraft"; - longDescription = '' - Allows you to have multiple, separate instances of Minecraft (each with - their own mods, texture packs, saves, etc) and helps you manage them and - their associated options with a simple interface. - ''; - homepage = "https://prismlauncher.org/"; - license = lib.licenses.gpl3Only; - maintainers = with lib.maintainers; [ - Scrumplex - getchoo - ]; - mainProgram = "prismlauncher"; - platforms = lib.platforms.linux ++ lib.platforms.darwin; - }; - } + meta = { + description = "Free, open source launcher for Minecraft"; + longDescription = '' + Allows you to have multiple, separate instances of Minecraft (each with + their own mods, texture packs, saves, etc) and helps you manage them and + their associated options with a simple interface. + ''; + homepage = "https://prismlauncher.org/"; + license = lib.licenses.gpl3Only; + maintainers = with lib.maintainers; [ + Scrumplex + getchoo + ]; + mainProgram = "prismlauncher"; + platforms = lib.platforms.linux ++ lib.platforms.darwin; + }; +} diff --git a/nix/pkg/wrapper.nix b/nix/pkg/wrapper.nix index e7516397e..5632d483b 100644 --- a/nix/pkg/wrapper.nix +++ b/nix/pkg/wrapper.nix @@ -22,8 +22,8 @@ udev, vulkan-loader, xorg, - additionalLibs ? [], - additionalPrograms ? [], + additionalLibs ? [ ], + additionalPrograms ? [ ], controllerSupport ? stdenv.isLinux, gamemodeSupport ? stdenv.isLinux, jdks ? [ @@ -42,55 +42,60 @@ # itself can take slightly longer to start withWaylandGLFW ? false, }: + assert lib.assertMsg ( controllerSupport -> stdenv.isLinux ) "controllerSupport only has an effect on Linux."; + assert lib.assertMsg ( textToSpeechSupport -> stdenv.isLinux ) "textToSpeechSupport only has an effect on Linux."; + assert lib.assertMsg ( withWaylandGLFW -> stdenv.isLinux -) "withWaylandGLFW is only available on Linux."; let - prismlauncher' = prismlauncher-unwrapped.override {inherit msaClientID gamemodeSupport;}; +) "withWaylandGLFW is only available on Linux."; + +let + prismlauncher' = prismlauncher-unwrapped.override { inherit msaClientID gamemodeSupport; }; in - symlinkJoin { - name = "prismlauncher-${prismlauncher'.version}"; +symlinkJoin { + name = "prismlauncher-${prismlauncher'.version}"; - paths = [prismlauncher']; + paths = [ prismlauncher' ]; - nativeBuildInputs = - [kdePackages.wrapQtAppsHook] - # purposefully using a shell wrapper here for variable expansion - # see https://github.com/NixOS/nixpkgs/issues/172583 - ++ lib.optional withWaylandGLFW makeWrapper; + nativeBuildInputs = + [ kdePackages.wrapQtAppsHook ] + # purposefully using a shell wrapper here for variable expansion + # see https://github.com/NixOS/nixpkgs/issues/172583 + ++ lib.optional withWaylandGLFW makeWrapper; - buildInputs = - [ - kdePackages.qtbase - kdePackages.qtsvg - ] - ++ lib.optional ( - lib.versionAtLeast kdePackages.qtbase.version "6" && stdenv.isLinux - ) - kdePackages.qtwayland; + buildInputs = + [ + kdePackages.qtbase + kdePackages.qtsvg + ] + ++ lib.optional ( + lib.versionAtLeast kdePackages.qtbase.version "6" && stdenv.isLinux + ) kdePackages.qtwayland; - env = { - waylandPreExec = lib.optionalString withWaylandGLFW '' - if [ -n "$WAYLAND_DISPLAY" ]; then - export LD_LIBRARY_PATH=${lib.getLib glfw-wayland-minecraft}/lib:"$LD_LIBRARY_PATH" - fi - ''; - }; + env = { + waylandPreExec = lib.optionalString withWaylandGLFW '' + if [ -n "$WAYLAND_DISPLAY" ]; then + export LD_LIBRARY_PATH=${lib.getLib glfw-wayland-minecraft}/lib:"$LD_LIBRARY_PATH" + fi + ''; + }; - postBuild = - lib.optionalString withWaylandGLFW '' - qtWrapperArgs+=(--run "$waylandPreExec") - '' - + '' - wrapQtAppsHook - ''; + postBuild = + lib.optionalString withWaylandGLFW '' + qtWrapperArgs+=(--run "$waylandPreExec") + '' + + '' + wrapQtAppsHook + ''; - qtWrapperArgs = let + qtWrapperArgs = + let runtimeLibs = [ # lwjgl @@ -115,31 +120,28 @@ in ++ lib.optional controllerSupport libusb1 ++ additionalLibs; - runtimePrograms = - [ - glxinfo - pciutils # need lspci - xorg.xrandr # needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 - ] - ++ additionalPrograms; + runtimePrograms = [ + glxinfo + pciutils # need lspci + xorg.xrandr # needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 + ] ++ additionalPrograms; in - ["--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}"] - ++ lib.optionals stdenv.isLinux [ - "--set LD_LIBRARY_PATH ${addOpenGLRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}" - "--prefix PATH : ${lib.makeBinPath runtimePrograms}" - ]; + [ "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ] + ++ lib.optionals stdenv.isLinux [ + "--set LD_LIBRARY_PATH ${addOpenGLRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}" + "--prefix PATH : ${lib.makeBinPath runtimePrograms}" + ]; - meta = { - inherit - (prismlauncher'.meta) - description - longDescription - homepage - changelog - license - maintainers - mainProgram - platforms - ; - }; - } + meta = { + inherit (prismlauncher'.meta) + description + longDescription + homepage + changelog + license + maintainers + mainProgram + platforms + ; + }; +} From 7a83d0cea03648bd6cefc46f454f1166773aa87f Mon Sep 17 00:00:00 2001 From: seth Date: Tue, 20 Aug 2024 01:47:03 -0400 Subject: [PATCH 123/616] ci(nix): drop pre-commit-hooks Signed-off-by: seth --- flake.lock | 51 +-------------------------------------------------- flake.nix | 38 ++++++++++++++++++++++---------------- nix/dev.nix | 36 ++---------------------------------- 3 files changed, 25 insertions(+), 100 deletions(-) diff --git a/flake.lock b/flake.lock index 77e707692..3e9cd8e42 100644 --- a/flake.lock +++ b/flake.lock @@ -36,27 +36,6 @@ "type": "github" } }, - "gitignore": { - "inputs": { - "nixpkgs": [ - "pre-commit-hooks", - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1709087332, - "narHash": "sha256-HG2cCnktfHsKV0s4XW83gU3F57gaTljL9KNSuG6bnQs=", - "owner": "hercules-ci", - "repo": "gitignore.nix", - "rev": "637db329424fd7e46cf4185293b9cc8c88c95394", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "gitignore.nix", - "type": "github" - } - }, "libnbtplusplus": { "flake": false, "locked": { @@ -89,40 +68,12 @@ "type": "github" } }, - "pre-commit-hooks": { - "inputs": { - "flake-compat": [ - "flake-compat" - ], - "gitignore": "gitignore", - "nixpkgs": [ - "nixpkgs" - ], - "nixpkgs-stable": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1723803910, - "narHash": "sha256-yezvUuFiEnCFbGuwj/bQcqg7RykIEqudOy/RBrId0pc=", - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "rev": "bfef0ada09e2c8ac55bbcd0831bd0c9d42e651ba", - "type": "github" - }, - "original": { - "owner": "cachix", - "repo": "pre-commit-hooks.nix", - "type": "github" - } - }, "root": { "inputs": { "flake-compat": "flake-compat", "flake-parts": "flake-parts", "libnbtplusplus": "libnbtplusplus", - "nixpkgs": "nixpkgs", - "pre-commit-hooks": "pre-commit-hooks" + "nixpkgs": "nixpkgs" } } }, diff --git a/flake.nix b/flake.nix index 1e3e36d66..d64874e30 100644 --- a/flake.nix +++ b/flake.nix @@ -12,30 +12,36 @@ url = "github:hercules-ci/flake-parts"; inputs.nixpkgs-lib.follows = "nixpkgs"; }; - pre-commit-hooks = { - url = "github:cachix/pre-commit-hooks.nix"; - inputs = { - nixpkgs.follows = "nixpkgs"; - nixpkgs-stable.follows = "nixpkgs"; - flake-compat.follows = "flake-compat"; - }; - }; - flake-compat = { - url = "github:edolstra/flake-compat"; - flake = false; - }; libnbtplusplus = { url = "github:PrismLauncher/libnbtplusplus"; flake = false; }; + + /* + Inputs below this are optional and can be removed + + ``` + { + inputs.prismlauncher = { + url = "github:PrismLauncher/PrismLauncher"; + inputs = { + flake-compat.follows = ""; + }; + }; + } + ``` + */ + + flake-compat = { + url = "github:edolstra/flake-compat"; + flake = false; + }; }; outputs = - { flake-parts, pre-commit-hooks, ... }@inputs: - flake-parts.lib.mkFlake { inherit inputs; } { + inputs: + inputs.flake-parts.lib.mkFlake { inherit inputs; } { imports = [ - pre-commit-hooks.flakeModule - ./nix/dev.nix ./nix/distribution.nix ]; diff --git a/nix/dev.nix b/nix/dev.nix index 2ae3c845b..32b1bd92b 100644 --- a/nix/dev.nix +++ b/nix/dev.nix @@ -1,41 +1,9 @@ { perSystem = + { pkgs, self', ... }: { - config, - lib, - pkgs, - ... - }: - { - pre-commit.settings = { - hooks = { - markdownlint.enable = true; - - deadnix.enable = true; - nil.enable = true; - nixfmt.enable = true; - - clang-format = { - enable = true; - types_or = [ - "c" - "c++" - "java" - "json" - "objective-c" - ]; - }; - }; - - tools.clang-tools = lib.mkForce pkgs.clang-tools_18; - }; - devShells.default = pkgs.mkShell { - shellHook = '' - ${config.pre-commit.installationScript} - ''; - - inputsFrom = [ config.packages.prismlauncher-unwrapped ]; + inputsFrom = [ self'.packages.prismlauncher-unwrapped ]; buildInputs = with pkgs; [ ccache ninja From 271c38bc568bc348186fb5c06a3f07f7646b2f24 Mon Sep 17 00:00:00 2001 From: seth Date: Tue, 20 Aug 2024 01:59:33 -0400 Subject: [PATCH 124/616] doc(nix): update package names and params Signed-off-by: seth --- nix/README.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/nix/README.md b/nix/README.md index 8a0b9ba26..2daeb73d3 100644 --- a/nix/README.md +++ b/nix/README.md @@ -197,18 +197,20 @@ nix-env -iA prismlauncher.prismlauncher Both Nixpkgs and this repository offer the following packages: -- `prismlauncher` - Preferred build using Qt 6 -- `prismlauncher-qt5` - Legacy build using Qt 5 (i.e. for Qt 5 theming support) - -Both of these packages also have `-unwrapped` counterparts, that are not wrapped and can therefore be customized even further than what the wrapper packages offer. +- `prismlauncher` - The preferred build, wrapped with everything necessary to run the launcher and Minecraft +- `prismlauncher-unwrapped` - A minimal build that allows for advanced customization of the launcher's runtime environment ### Customizing wrapped packages -The wrapped packages (`prismlauncher` and `prismlauncher-qt5`) offer some build parameters to further customize the launcher's environment. +The wrapped package (`prismlauncher`) offers some build parameters to further customize the launcher's environment. The following parameters can be overridden: -- `msaClientID` (default: `null`, requires full rebuild!) Client ID used for Microsoft Authentication -- `gamemodeSupport` (default: `true`) Turn on/off support for [Feral GameMode](https://github.com/FeralInteractive/gamemode) -- `jdks` (default: `[ jdk17 jdk8 ]`) Java runtimes added to `PRISMLAUNCHER_JAVA_PATHS` variable - `additionalLibs` (default: `[ ]`) Additional libraries that will be added to `LD_LIBRARY_PATH` +- `additionalPrograms` (default: `[ ]`) Additional libraries that will be added to `PATH` +- `controllerSupport` (default: `isLinux`) Turn on/off support for controllers on Linux (macOS will always have this) +- `gamemodeSupport` (default: `isLinux`) Turn on/off support for [Feral GameMode](https://github.com/FeralInteractive/gamemode) on Linux +- `jdks` (default: `[ jdk21 jdk17 jdk8 ]`) Java runtimes added to `PRISMLAUNCHER_JAVA_PATHS` variable +- `msaClientID` (default: `null`, requires full rebuild!) Client ID used for Microsoft Authentication +- `textToSpeechSupport` (default: `isLinux`) Turn on/off support for text-to-speech on Linux (macOS will always have this) +- `withWaylandGLFW` (default: `isLinux`) Build with support for native Wayland via a custom GLFW From e85b3647481f4af5638673837814c2f8835e4054 Mon Sep 17 00:00:00 2001 From: seth Date: Tue, 20 Aug 2024 02:04:05 -0400 Subject: [PATCH 125/616] refactor(nix): use `final` in overlay this allows to implictly pass `prismlauncher-unwrapped` it won't have an effect on our package set as directly inheriting from the scope we create filters out the extra attributes usually introduced with a scope Signed-off-by: seth --- nix/distribution.nix | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/nix/distribution.nix b/nix/distribution.nix index ac7fc9871..74e77da1b 100644 --- a/nix/distribution.nix +++ b/nix/distribution.nix @@ -5,7 +5,7 @@ { packages = let - ourPackages = lib.fix (final: self.overlays.default final pkgs); + ourPackages = lib.makeScope pkgs.newScope (final: self.overlays.default final pkgs); in { inherit (ourPackages) prismlauncher-unwrapped prismlauncher; @@ -25,9 +25,7 @@ inherit version; }; - prismlauncher = prev.qt6Packages.callPackage ./pkg/wrapper.nix { - inherit (final) prismlauncher-unwrapped; - }; + prismlauncher = final.callPackage ./pkg/wrapper.nix { }; }; }; } From 0ae421c265e665fc6621337b0c1216e548293690 Mon Sep 17 00:00:00 2001 From: seth Date: Tue, 20 Aug 2024 02:58:55 -0400 Subject: [PATCH 126/616] chore(nix): drop flake-parts The primary goals here include making the flake easier to contribute to by having it follow the standard boilerplate, while also limiting the size of our flake.lock to lower the chance of duplicate inputs for users Signed-off-by: seth --- flake.lock | 21 -------- flake.nix | 75 ++++++++++++++++++++------ nix/README.md | 10 +++- nix/dev.nix | 15 ------ nix/distribution.nix | 31 ----------- nix/{pkg/default.nix => unwrapped.nix} | 4 +- nix/{pkg => }/wrapper.nix | 0 7 files changed, 69 insertions(+), 87 deletions(-) delete mode 100644 nix/dev.nix delete mode 100644 nix/distribution.nix rename nix/{pkg/default.nix => unwrapped.nix} (97%) rename nix/{pkg => }/wrapper.nix (100%) diff --git a/flake.lock b/flake.lock index 3e9cd8e42..7d21aad14 100644 --- a/flake.lock +++ b/flake.lock @@ -16,26 +16,6 @@ "type": "github" } }, - "flake-parts": { - "inputs": { - "nixpkgs-lib": [ - "nixpkgs" - ] - }, - "locked": { - "lastModified": 1722555600, - "narHash": "sha256-XOQkdLafnb/p9ij77byFQjDf5m5QYl9b2REiVClC+x4=", - "owner": "hercules-ci", - "repo": "flake-parts", - "rev": "8471fe90ad337a8074e957b69ca4d0089218391d", - "type": "github" - }, - "original": { - "owner": "hercules-ci", - "repo": "flake-parts", - "type": "github" - } - }, "libnbtplusplus": { "flake": false, "locked": { @@ -71,7 +51,6 @@ "root": { "inputs": { "flake-compat": "flake-compat", - "flake-parts": "flake-parts", "libnbtplusplus": "libnbtplusplus", "nixpkgs": "nixpkgs" } diff --git a/flake.nix b/flake.nix index d64874e30..24227aca7 100644 --- a/flake.nix +++ b/flake.nix @@ -8,10 +8,7 @@ inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - flake-parts = { - url = "github:hercules-ci/flake-parts"; - inputs.nixpkgs-lib.follows = "nixpkgs"; - }; + libnbtplusplus = { url = "github:PrismLauncher/libnbtplusplus"; flake = false; @@ -39,18 +36,64 @@ }; outputs = - inputs: - inputs.flake-parts.lib.mkFlake { inherit inputs; } { - imports = [ - ./nix/dev.nix - ./nix/distribution.nix - ]; + { + self, + nixpkgs, + libnbtplusplus, + ... + }: + let + inherit (nixpkgs) lib; - systems = [ - "x86_64-linux" - "aarch64-linux" - "x86_64-darwin" - "aarch64-darwin" - ]; + # While we only officially support aarch and x86_64 on Linux and MacOS, + # we expose a reasonable amount of other systems for users who want to + # build for most exotic platforms + systems = lib.systems.flakeExposed; + + forAllSystems = lib.genAttrs systems; + nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system}); + in + { + devShells = forAllSystems ( + system: + let + pkgs = nixpkgsFor.${system}; + in + { + default = pkgs.mkShell { + inputsFrom = [ self.packages.${system}.prismlauncher-unwrapped ]; + buildInputs = with pkgs; [ + ccache + ninja + ]; + }; + } + ); + + formatter = forAllSystems (system: nixpkgsFor.${system}.nixfmt-rfc-style); + + overlays.default = + final: prev: + let + version = builtins.substring 0 8 self.lastModifiedDate or "dirty"; + in + { + prismlauncher-unwrapped = prev.callPackage ./nix/unwrapped.nix { inherit libnbtplusplus version; }; + + prismlauncher = final.callPackage ./nix/wrapper.nix { }; + }; + + packages = forAllSystems ( + system: + let + pkgs = nixpkgsFor.${system}; + + prismPackages = lib.makeScope pkgs.newScope (final: self.overlays.default final pkgs); + in + { + inherit (prismPackages) prismlauncher-unwrapped prismlauncher; + default = prismPackages.prismlauncher; + } + ); }; } diff --git a/nix/README.md b/nix/README.md index 2daeb73d3..d6068a968 100644 --- a/nix/README.md +++ b/nix/README.md @@ -44,11 +44,14 @@ Example: # Optional: Override the nixpkgs input of prismlauncher to use the same revision as the rest of your flake # Note that overriding any input of prismlauncher may break reproducibility # inputs.nixpkgs.follows = "nixpkgs"; + + # This is not required for Flakes + inputs.flake-compat.follows = ""; }; }; outputs = - { nixpkgs, prismlauncher }: + { nixpkgs, prismlauncher, ... }: { nixosConfigurations.foo = nixpkgs.lib.nixosSystem { modules = [ @@ -85,11 +88,14 @@ Example: # Optional: Override the nixpkgs input of prismlauncher to use the same revision as the rest of your flake # Note that overriding any input of prismlauncher may break reproducibility # inputs.nixpkgs.follows = "nixpkgs"; + + # This is not required for Flakes + inputs.flake-compat.follows = ""; }; }; outputs = - { nixpkgs, prismlauncher }: + { nixpkgs, prismlauncher, ... }: { nixosConfigurations.foo = nixpkgs.lib.nixosSystem { modules = [ diff --git a/nix/dev.nix b/nix/dev.nix deleted file mode 100644 index 32b1bd92b..000000000 --- a/nix/dev.nix +++ /dev/null @@ -1,15 +0,0 @@ -{ - perSystem = - { pkgs, self', ... }: - { - devShells.default = pkgs.mkShell { - inputsFrom = [ self'.packages.prismlauncher-unwrapped ]; - buildInputs = with pkgs; [ - ccache - ninja - ]; - }; - - formatter = pkgs.nixfmt-rfc-style; - }; -} diff --git a/nix/distribution.nix b/nix/distribution.nix deleted file mode 100644 index 74e77da1b..000000000 --- a/nix/distribution.nix +++ /dev/null @@ -1,31 +0,0 @@ -{ inputs, self, ... }: -{ - perSystem = - { lib, pkgs, ... }: - { - packages = - let - ourPackages = lib.makeScope pkgs.newScope (final: self.overlays.default final pkgs); - in - { - inherit (ourPackages) prismlauncher-unwrapped prismlauncher; - default = ourPackages.prismlauncher; - }; - }; - - flake = { - overlays.default = - final: prev: - let - version = builtins.substring 0 8 self.lastModifiedDate or "dirty"; - in - { - prismlauncher-unwrapped = prev.callPackage ./pkg { - inherit (inputs) libnbtplusplus; - inherit version; - }; - - prismlauncher = final.callPackage ./pkg/wrapper.nix { }; - }; - }; -} diff --git a/nix/pkg/default.nix b/nix/unwrapped.nix similarity index 97% rename from nix/pkg/default.nix rename to nix/unwrapped.nix index a5a57eaf0..f007c05b8 100644 --- a/nix/pkg/default.nix +++ b/nix/unwrapped.nix @@ -28,9 +28,9 @@ stdenv.mkDerivation { inherit version; src = lib.fileset.toSource { - root = ../../.; + root = ../.; fileset = lib.fileset.unions ( - map (fileName: ../../${fileName}) [ + map (fileName: ../${fileName}) [ "buildconfig" "cmake" "launcher" diff --git a/nix/pkg/wrapper.nix b/nix/wrapper.nix similarity index 100% rename from nix/pkg/wrapper.nix rename to nix/wrapper.nix From e29ea4efb08d01bf64948370810a7963e7b72c5f Mon Sep 17 00:00:00 2001 From: seth Date: Tue, 20 Aug 2024 03:16:32 -0400 Subject: [PATCH 127/616] build(nix): add formatting checks Signed-off-by: seth --- flake.nix | 21 +++++++++++++++++---- nix/checks.nix | 42 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 nix/checks.nix diff --git a/flake.nix b/flake.nix index 24227aca7..2fe36902a 100644 --- a/flake.nix +++ b/flake.nix @@ -54,6 +54,14 @@ nixpkgsFor = forAllSystems (system: nixpkgs.legacyPackages.${system}); in { + checks = forAllSystems ( + system: + let + checks' = nixpkgsFor.${system}.callPackage ./nix/checks.nix { inherit self; }; + in + lib.filterAttrs (_: lib.isDerivation) checks' + ); + devShells = forAllSystems ( system: let @@ -88,12 +96,17 @@ let pkgs = nixpkgsFor.${system}; + # Build a scope from our overlay prismPackages = lib.makeScope pkgs.newScope (final: self.overlays.default final pkgs); + + # Grab our packages from it and set the default + packages = { + inherit (prismPackages) prismlauncher-unwrapped prismlauncher; + default = prismPackages.prismlauncher; + }; in - { - inherit (prismPackages) prismlauncher-unwrapped prismlauncher; - default = prismPackages.prismlauncher; - } + # Only output them if they're available on the current system + lib.filterAttrs (_: lib.meta.availableOn pkgs.stdenv.hostPlatform) packages ); }; } diff --git a/nix/checks.nix b/nix/checks.nix new file mode 100644 index 000000000..40a2e272f --- /dev/null +++ b/nix/checks.nix @@ -0,0 +1,42 @@ +{ + runCommand, + deadnix, + llvmPackages_18, + markdownlint-cli, + nixfmt-rfc-style, + statix, + self, +}: +{ + formatting = + runCommand "check-formatting" + { + nativeBuildInputs = [ + deadnix + llvmPackages_18.clang-tools + markdownlint-cli + nixfmt-rfc-style + statix + ]; + } + '' + cd ${self} + + echo "Running clang-format...." + clang-format -i --style='file' --Werror */**.{c,cc,cpp,h,hh,hpp} + + echo "Running deadnix..." + deadnix --fail + + echo "Running markdownlint..." + markdownlint --dot . + + echo "Running nixfmt..." + nixfmt --check . + + echo "Running statix" + statix check . + + touch $out + ''; +} From 13eedbb7de4f6bbc80308aa59745720c3cf7c33d Mon Sep 17 00:00:00 2001 From: seth Date: Tue, 20 Aug 2024 03:41:53 -0400 Subject: [PATCH 128/616] doc(nix): prefer `packages` output overlays can cause issues we don't run into upstream, especially when used on stable channels for example. preferring the pure `packages` output also encourages the use of our binary cache by users, who probably don't like building the launcher all too much Signed-off-by: seth --- nix/README.md | 136 ++++++++++++++++++++++++++------------------------ 1 file changed, 72 insertions(+), 64 deletions(-) diff --git a/nix/README.md b/nix/README.md index d6068a968..76cb8bf27 100644 --- a/nix/README.md +++ b/nix/README.md @@ -28,9 +28,9 @@ Example (NixOS): } ``` -### Using the overlay +### Installing the package directly -After adding `github:PrismLauncher/PrismLauncher` to your flake inputs, you can add the `default` overlay to your nixpkgs instance. +After adding `github:PrismLauncher/PrismLauncher` to your flake inputs, you can access the flake's `packages` output. Example: @@ -41,8 +41,58 @@ Example: prismlauncher = { url = "github:PrismLauncher/PrismLauncher"; + # Optional: Override the nixpkgs input of prismlauncher to use the same revision as the rest of your flake - # Note that overriding any input of prismlauncher may break reproducibility + # Note that this may break the reproducibility mentioned above, and you might not be able to access the binary cache + # + # inputs.nixpkgs.follows = "nixpkgs"; + + # This is not required for Flakes + inputs.flake-compat.follows = ""; + }; + }; + + outputs = + { nixpkgs, prismlauncher, ... }: + { + nixosConfigurations.foo = nixpkgs.lib.nixosSystem { + modules = [ + ./configuration.nix + + ( + { pkgs, ... }: + { + environment.systemPackages = [ prismlauncher.packages.${pkgs.system}.prismlauncher ]; + } + ) + ]; + }; + }; +} +``` + +### Using the overlay + +Alternatively, if you don't want to use our `packages` output, you can add our overlay to your nixpkgs instance. +This will ensure Prism is built with your system's packages. + +> [!WARNING] +> Depending on what revision of nixpkgs your system uses, this may result in binaries that differ from the above `packages` output +> If this is the case, you will not be able to use the binary cache + +Example: + +```nix +{ + inputs = { + nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; + + prismlauncher = { + url = "github:PrismLauncher/PrismLauncher"; + + # Optional: Override the nixpkgs input of prismlauncher to use the same revision as the rest of your flake + # Note that this may break the reproducibility mentioned above, and you might not be able to access the binary cache + # # inputs.nixpkgs.follows = "nixpkgs"; # This is not required for Flakes @@ -71,48 +121,6 @@ Example: } ``` -### Installing the package directly - -Alternatively, if you don't want to use an overlay, you can install Prism Launcher directly by installing the `prismlauncher` package. -This way the installed package is fully reproducible. - -Example: - -```nix -{ - inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable"; - - prismlauncher = { - url = "github:PrismLauncher/PrismLauncher"; - # Optional: Override the nixpkgs input of prismlauncher to use the same revision as the rest of your flake - # Note that overriding any input of prismlauncher may break reproducibility - # inputs.nixpkgs.follows = "nixpkgs"; - - # This is not required for Flakes - inputs.flake-compat.follows = ""; - }; - }; - - outputs = - { nixpkgs, prismlauncher, ... }: - { - nixosConfigurations.foo = nixpkgs.lib.nixosSystem { - modules = [ - ./configuration.nix - - ( - { pkgs, ... }: - { - environment.systemPackages = [ prismlauncher.packages.${pkgs.system}.prismlauncher ]; - } - ) - ]; - }; - }; -} -``` - ### Installing the package ad-hoc (`nix shell`, `nix run`, etc.) You can simply call the default package of this flake. @@ -148,12 +156,30 @@ Example (NixOS): } ``` -### Using the overlay (`fetchTarball`) +### Installing the package directly (`fetchTarball`) We use flake-compat to allow using this Flake on a system that doesn't use flakes. Example: +```nix +{ pkgs, ... }: +{ + environment.systemPackages = [ + (import ( + builtins.fetchTarball "https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz" + )).packages.${pkgs.system}.prismlauncher + ]; +} +``` + +### Using the overlay (`fetchTarball`) + +Alternatively, if you don't want to use our `packages` output, you can add our overlay to your instance of nixpkgs. +This results in Prism using your system's libraries + +Example: + ```nix { pkgs, ... }: { @@ -167,24 +193,6 @@ Example: } ``` -### Installing the package directly (`fetchTarball`) - -Alternatively, if you don't want to use an overlay, you can install Prism Launcher directly by installing the `prismlauncher` package. -This way the installed package is fully reproducible. - -Example: - -```nix -{ pkgs, ... }: -{ - environment.systemPackages = [ - (import ( - builtins.fetchTarball "https://github.com/PrismLauncher/PrismLauncher/archive/develop.tar.gz" - )).packages.${pkgs.system}.prismlauncher - ]; -} -``` - ### Installing the package ad-hoc (`nix-env`) You can add this repository as a channel and install its packages that way. From a49a58bc4571f87f42f45bb9eeb1a957d5d12331 Mon Sep 17 00:00:00 2001 From: seth Date: Wed, 21 Aug 2024 03:42:40 -0400 Subject: [PATCH 129/616] Revert "refactor(nix): nix-filter -> lib.fileset" This reverts commit 8312713dc2274670db6f9167125af8a27c2fd8a6. See nix#9428. Path coercion like `"${./.}"` in flakes causes the path to be copied to the store twice; using the `self` argument works around this. However, as `lib.fileset` doesn't support using `self`, so we need to go back to `nix-filter` Signed-off-by: seth --- flake.lock | 16 ++++++++++++++++ flake.nix | 12 +++++++++++- nix/unwrapped.nix | 28 ++++++++++++++-------------- 3 files changed, 41 insertions(+), 15 deletions(-) diff --git a/flake.lock b/flake.lock index 7d21aad14..3210dc4e2 100644 --- a/flake.lock +++ b/flake.lock @@ -32,6 +32,21 @@ "type": "github" } }, + "nix-filter": { + "locked": { + "lastModified": 1710156097, + "narHash": "sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj+rL8sRQsSM=", + "owner": "numtide", + "repo": "nix-filter", + "rev": "3342559a24e85fc164b295c3444e8a139924675b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "nix-filter", + "type": "github" + } + }, "nixpkgs": { "locked": { "lastModified": 1723637854, @@ -52,6 +67,7 @@ "inputs": { "flake-compat": "flake-compat", "libnbtplusplus": "libnbtplusplus", + "nix-filter": "nix-filter", "nixpkgs": "nixpkgs" } } diff --git a/flake.nix b/flake.nix index 2fe36902a..987fc0eda 100644 --- a/flake.nix +++ b/flake.nix @@ -14,6 +14,8 @@ flake = false; }; + nix-filter.url = "github:numtide/nix-filter"; + /* Inputs below this are optional and can be removed @@ -40,6 +42,7 @@ self, nixpkgs, libnbtplusplus, + nix-filter, ... }: let @@ -86,7 +89,14 @@ version = builtins.substring 0 8 self.lastModifiedDate or "dirty"; in { - prismlauncher-unwrapped = prev.callPackage ./nix/unwrapped.nix { inherit libnbtplusplus version; }; + prismlauncher-unwrapped = prev.callPackage ./nix/unwrapped.nix { + inherit + libnbtplusplus + nix-filter + self + version + ; + }; prismlauncher = final.callPackage ./nix/wrapper.nix { }; }; diff --git a/nix/unwrapped.nix b/nix/unwrapped.nix index f007c05b8..f75acf1de 100644 --- a/nix/unwrapped.nix +++ b/nix/unwrapped.nix @@ -10,6 +10,8 @@ jdk17, kdePackages, ninja, + nix-filter, + self, stripJavaArchivesHook, tomlplusplus, zlib, @@ -27,20 +29,18 @@ stdenv.mkDerivation { pname = "prismlauncher-unwrapped"; inherit version; - src = lib.fileset.toSource { - root = ../.; - fileset = lib.fileset.unions ( - map (fileName: ../${fileName}) [ - "buildconfig" - "cmake" - "launcher" - "libraries" - "program_info" - "tests" - "COPYING.md" - "CMakeLists.txt" - ] - ); + src = nix-filter.lib { + root = self; + include = [ + "buildconfig" + "cmake" + "launcher" + "libraries" + "program_info" + "tests" + ../COPYING.md + ../CMakeLists.txt + ]; }; postUnpack = '' From 99ecab01fc8e5217c95c45263a224e92bf5566ed Mon Sep 17 00:00:00 2001 From: seth Date: Wed, 21 Aug 2024 04:02:48 -0400 Subject: [PATCH 130/616] ci(garnix): explicitly declare systems as we now create outputs for each system in `lib.systems.flakeExposed`, we should ensure garnix only builds the systems we officially support dev shells are also no longer built as they really don't need to be "built" on the developer's machine in any case; everything should be cached Signed-off-by: seth --- garnix.yaml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/garnix.yaml b/garnix.yaml index 6cf8f7214..a7c1b48a9 100644 --- a/garnix.yaml +++ b/garnix.yaml @@ -1,7 +1,10 @@ builds: exclude: + # Currently broken on Garnix's end - "*.x86_64-darwin.*" include: - "checks.x86_64-linux.*" - - "devShells.*.*" - - "packages.*.*" + - "packages.x86_64-linux.*" + - "packages.aarch64-linux.*" + - "packages.x86_64-darwin.*" + - "packages.aarch64-darwin.*" From da7cc529f05c5f2a7cd51d97c1865f70f62b9ec8 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 21 Aug 2024 14:54:47 +0300 Subject: [PATCH 131/616] Enable auto-detect java if java path is not set Signed-off-by: Trial97 --- launcher/Application.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index a40222b41..9cd0445e6 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -647,8 +647,9 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->registerSetting("JvmArgs", ""); m_settings->registerSetting("IgnoreJavaCompatibility", false); m_settings->registerSetting("IgnoreJavaWizard", false); - m_settings->registerSetting("AutomaticJavaSwitch", false); - m_settings->registerSetting("AutomaticJavaDownload", false); + auto defaultEnableAutoJava = m_settings->get("JavaPath").toString().isEmpty(); + m_settings->registerSetting("AutomaticJavaSwitch", defaultEnableAutoJava); + m_settings->registerSetting("AutomaticJavaDownload", defaultEnableAutoJava); // Legacy settings m_settings->registerSetting("OnlineFixes", false); From 26ae6086855bdb4638c1033a03675df04eb4b852 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 21 Aug 2024 15:01:42 +0300 Subject: [PATCH 132/616] fix initial java dialog Signed-off-by: Trial97 --- launcher/ui/widgets/JavaSettingsWidget.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index fb90afe1d..bf58bf9f7 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -186,13 +186,9 @@ void JavaSettingsWidget::initialize() .arg(BuildConfig.LAUNCHER_DISPLAYNAME), QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) ->exec(); - if (button == QMessageBox::Yes) { - m_autodetectJavaCheckBox->setChecked(true); - m_autodownloadCheckBox->setChecked(true); - } else { - m_autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); - m_autodownloadCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool() && s->get("AutomaticJavaDownload").toBool()); - } + auto checked = button == QMessageBox::Yes; + m_autodetectJavaCheckBox->setChecked(checked); + m_autodownloadCheckBox->setChecked(checked); } } From cf914526bf5330600f3cadb9f4baddb5144af21f Mon Sep 17 00:00:00 2001 From: maskers <97827489+mskrss@users.noreply.github.com> Date: Wed, 21 Aug 2024 15:59:51 +0300 Subject: [PATCH 133/616] add a warning about the log being too large Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com> --- launcher/net/PasteUpload.cpp | 24 ----------------- launcher/ui/GuiUtil.cpp | 51 +++++++++++++++++++++++++++++++++++- 2 files changed, 50 insertions(+), 25 deletions(-) diff --git a/launcher/net/PasteUpload.cpp b/launcher/net/PasteUpload.cpp index 953a0d722..c67d3b23c 100644 --- a/launcher/net/PasteUpload.cpp +++ b/launcher/net/PasteUpload.cpp @@ -49,29 +49,6 @@ #include "net/Logging.h" -constexpr int MaxMclogsLines = 25000; -constexpr int InitialMclogsLines = 10000; -constexpr int FinalMclogsLines = 14900; - -QString truncateLogForMclogs(const QString& logContent) -{ - QStringList lines = logContent.split("\n"); - if (lines.size() > MaxMclogsLines) { - QString truncatedLog = lines.mid(0, InitialMclogsLines).join("\n"); - truncatedLog += - "\n\n\n\n\n\n\n\n\n\n" - "------------------------------------------------------------\n" - "--------------------- Log truncated by ---------------------\n" - "---------------------- Prism Launcher ----------------------\n" - "----- Middle portion omitted to fit mclo.gs size limits ----\n" - "------------------------------------------------------------\n" - "\n\n\n\n\n\n\n\n\n\n"; - truncatedLog += lines.mid(lines.size() - FinalMclogsLines, FinalMclogsLines).join("\n"); - return truncatedLog; - } - return logContent; -} - std::array PasteUpload::PasteTypes = { { { "0x0.st", "https://0x0.st", "" }, { "hastebin", "https://hst.sh", "/documents" }, { "paste.gg", "https://paste.gg", "/api/v1/pastes" }, @@ -121,7 +98,6 @@ void PasteUpload::executeTask() } case Mclogs: { QUrlQuery postData; - m_text = truncateLogForMclogs(m_text).toUtf8(); postData.addQueryItem("content", m_text); request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded"); rep = APPLICATION->network()->post(request, postData.toString().toUtf8()); diff --git a/launcher/ui/GuiUtil.cpp b/launcher/ui/GuiUtil.cpp index 584a34710..3b0eccd02 100644 --- a/launcher/ui/GuiUtil.cpp +++ b/launcher/ui/GuiUtil.cpp @@ -51,11 +51,35 @@ #include #include "Application.h" +constexpr int MaxMclogsLines = 25000; +constexpr int InitialMclogsLines = 10000; +constexpr int FinalMclogsLines = 14900; + +QString truncateLogForMclogs(const QString& logContent) +{ + QStringList lines = logContent.split("\n"); + if (lines.size() > MaxMclogsLines) { + QString truncatedLog = lines.mid(0, InitialMclogsLines).join("\n"); + truncatedLog += + "\n\n\n\n\n\n\n\n\n\n" + "------------------------------------------------------------\n" + "--------------------- Log truncated by ---------------------\n" + "---------------------- Prism Launcher ----------------------\n" + "----- Middle portion omitted to fit mclo.gs size limits ----\n" + "------------------------------------------------------------\n" + "\n\n\n\n\n\n\n\n\n\n"; + truncatedLog += lines.mid(lines.size() - FinalMclogsLines, FinalMclogsLines).join("\n"); + return truncatedLog; + } + return logContent; +} + std::optional GuiUtil::uploadPaste(const QString& name, const QString& text, QWidget* parentWidget) { ProgressDialog dialog(parentWidget); auto pasteTypeSetting = static_cast(APPLICATION->settings()->get("PastebinType").toInt()); auto pasteCustomAPIBaseSetting = APPLICATION->settings()->get("PastebinCustomAPIBase").toString(); + bool shouldTruncate = false; { QUrl baseUrl; @@ -75,10 +99,35 @@ std::optional GuiUtil::uploadPaste(const QString& name, const QString& if (response != QMessageBox::Yes) return {}; + + if (baseUrl.toString() == "https://api.mclo.gs" && text.count("\n") > MaxMclogsLines) { + auto truncateResponse = + CustomMessageBox::selectable(parentWidget, QObject::tr("Confirm Truncate"), + QObject::tr("The log exceeds mclo.gs' limit: %1 lines (max %2).\n" + "Prism can keep the first %3 and last %4 lines, trimming the middle.\n\n" + "If you choose 'No', mclo.gs will only keep the first %2 lines, cutting off " + "potentially useful info like crashes at the end.\n\n" + "Proceed with Prism's truncation?") + .arg(text.count("\n")) + .arg(MaxMclogsLines) + .arg(InitialMclogsLines) + .arg(FinalMclogsLines), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + ->exec(); + + if (truncateResponse == QMessageBox::Yes) + shouldTruncate = true; + } } } - std::unique_ptr paste(new PasteUpload(parentWidget, text, pasteCustomAPIBaseSetting, pasteTypeSetting)); + QString textToUpload; + if (shouldTruncate) + textToUpload = truncateLogForMclogs(text); + else + textToUpload = text; + + std::unique_ptr paste(new PasteUpload(parentWidget, textToUpload, pasteCustomAPIBaseSetting, pasteTypeSetting)); dialog.execWithTask(paste.get()); if (!paste->wasSuccessful()) { From 99bd4a89373416cea641f1421d1082ff823eba2e Mon Sep 17 00:00:00 2001 From: maskers <97827489+maskersss@users.noreply.github.com> Date: Wed, 21 Aug 2024 19:42:35 +0300 Subject: [PATCH 134/616] Apply suggestions from code review Co-authored-by: Alexandru Ionut Tripon Signed-off-by: maskers <97827489+maskersss@users.noreply.github.com> --- launcher/ui/GuiUtil.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/launcher/ui/GuiUtil.cpp b/launcher/ui/GuiUtil.cpp index 3b0eccd02..de72a7d5d 100644 --- a/launcher/ui/GuiUtil.cpp +++ b/launcher/ui/GuiUtil.cpp @@ -115,17 +115,15 @@ std::optional GuiUtil::uploadPaste(const QString& name, const QString& QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) ->exec(); - if (truncateResponse == QMessageBox::Yes) - shouldTruncate = true; + shouldTruncate = truncateResponse == QMessageBox::Yes; } } } - QString textToUpload; - if (shouldTruncate) + QString textToUpload = text; + if (shouldTruncate) { textToUpload = truncateLogForMclogs(text); - else - textToUpload = text; + } std::unique_ptr paste(new PasteUpload(parentWidget, textToUpload, pasteCustomAPIBaseSetting, pasteTypeSetting)); From 7472233033762eb5446cd5beefcc603f54d0296b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 21 Aug 2024 17:22:09 +0000 Subject: [PATCH 135/616] chore(deps): update korthout/backport-action action to v3.1.0 --- .github/workflows/backport.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index d91d9507a..4146cddf4 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -25,7 +25,7 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - name: Create backport PRs - uses: korthout/backport-action@v3.0.2 + uses: korthout/backport-action@v3.1.0 with: # Config README: https://github.com/korthout/backport-action#backport-action pull_description: |- From 65f852615247f6c1ba3cd81cf9e51ebc0220341b Mon Sep 17 00:00:00 2001 From: maskers <97827489+maskersss@users.noreply.github.com> Date: Wed, 21 Aug 2024 22:14:11 +0300 Subject: [PATCH 136/616] add a `Cancel` option Co-authored-by: Rachel Powers <508861+Ryex@users.noreply.github.com> Signed-off-by: maskers <97827489+maskersss@users.noreply.github.com> --- launcher/ui/GuiUtil.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/launcher/ui/GuiUtil.cpp b/launcher/ui/GuiUtil.cpp index de72a7d5d..cfc1715fc 100644 --- a/launcher/ui/GuiUtil.cpp +++ b/launcher/ui/GuiUtil.cpp @@ -112,9 +112,10 @@ std::optional GuiUtil::uploadPaste(const QString& name, const QString& .arg(MaxMclogsLines) .arg(InitialMclogsLines) .arg(FinalMclogsLines), - QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No, QMessageBox::No) + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::No) ->exec(); + if (truncateResponse == QMessageBox::Cancel) { return {} ; } shouldTruncate = truncateResponse == QMessageBox::Yes; } } From 6d017b5f0b9fd878d387bf33585221ea079e305b Mon Sep 17 00:00:00 2001 From: maskers <97827489+mskrss@users.noreply.github.com> Date: Wed, 21 Aug 2024 22:39:27 +0300 Subject: [PATCH 137/616] fix formatting Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com> --- launcher/ui/GuiUtil.cpp | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/launcher/ui/GuiUtil.cpp b/launcher/ui/GuiUtil.cpp index cfc1715fc..5cdd30e17 100644 --- a/launcher/ui/GuiUtil.cpp +++ b/launcher/ui/GuiUtil.cpp @@ -101,21 +101,23 @@ std::optional GuiUtil::uploadPaste(const QString& name, const QString& return {}; if (baseUrl.toString() == "https://api.mclo.gs" && text.count("\n") > MaxMclogsLines) { - auto truncateResponse = - CustomMessageBox::selectable(parentWidget, QObject::tr("Confirm Truncate"), - QObject::tr("The log exceeds mclo.gs' limit: %1 lines (max %2).\n" - "Prism can keep the first %3 and last %4 lines, trimming the middle.\n\n" - "If you choose 'No', mclo.gs will only keep the first %2 lines, cutting off " - "potentially useful info like crashes at the end.\n\n" - "Proceed with Prism's truncation?") - .arg(text.count("\n")) - .arg(MaxMclogsLines) - .arg(InitialMclogsLines) - .arg(FinalMclogsLines), - QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::No) - ->exec(); + auto truncateResponse = CustomMessageBox::selectable( + parentWidget, QObject::tr("Confirm Truncate"), + QObject::tr("The log exceeds mclo.gs' limit: %1 lines (max %2).\n" + "Prism can keep the first %3 and last %4 lines, trimming the middle.\n\n" + "If you choose 'No', mclo.gs will only keep the first %2 lines, cutting off " + "potentially useful info like crashes at the end.\n\n" + "Proceed with Prism's truncation?") + .arg(text.count("\n")) + .arg(MaxMclogsLines) + .arg(InitialMclogsLines) + .arg(FinalMclogsLines), + QMessageBox::Warning, QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel, QMessageBox::No) + ->exec(); - if (truncateResponse == QMessageBox::Cancel) { return {} ; } + if (truncateResponse == QMessageBox::Cancel) { + return {}; + } shouldTruncate = truncateResponse == QMessageBox::Yes; } } From 2ad34c724e0cae50db9359147cb180aae15ab55d Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 21 Aug 2024 22:11:43 +0100 Subject: [PATCH 138/616] Make log colours themeable Signed-off-by: TheKodeToad --- launcher/CMakeLists.txt | 2 - launcher/ui/ColorCache.cpp | 32 --- launcher/ui/ColorCache.h | 106 ---------- launcher/ui/pages/global/LauncherPage.cpp | 64 +++--- launcher/ui/pages/global/LauncherPage.h | 3 - launcher/ui/pages/instance/LogPage.cpp | 37 ++-- launcher/ui/themes/BrightTheme.cpp | 5 - launcher/ui/themes/BrightTheme.h | 1 - launcher/ui/themes/CustomTheme.cpp | 234 ++++++++++------------ launcher/ui/themes/CustomTheme.h | 8 +- launcher/ui/themes/DarkTheme.cpp | 7 +- launcher/ui/themes/DarkTheme.h | 1 - launcher/ui/themes/ITheme.cpp | 31 ++- launcher/ui/themes/ITheme.h | 12 +- launcher/ui/themes/SystemTheme.cpp | 5 - launcher/ui/themes/SystemTheme.h | 1 - launcher/ui/themes/ThemeManager.cpp | 28 +-- launcher/ui/themes/ThemeManager.h | 9 +- 18 files changed, 230 insertions(+), 356 deletions(-) delete mode 100644 launcher/ui/ColorCache.cpp delete mode 100644 launcher/ui/ColorCache.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 719af84e6..98ef29452 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -784,8 +784,6 @@ SET(LAUNCHER_SOURCES # GUI - windows ui/GuiUtil.h ui/GuiUtil.cpp - ui/ColorCache.h - ui/ColorCache.cpp ui/MainWindow.h ui/MainWindow.cpp ui/InstanceWindow.h diff --git a/launcher/ui/ColorCache.cpp b/launcher/ui/ColorCache.cpp deleted file mode 100644 index f941a6093..000000000 --- a/launcher/ui/ColorCache.cpp +++ /dev/null @@ -1,32 +0,0 @@ -#include "ColorCache.h" - -/** - * Blend the color with the front color, adapting to the back color - */ -QColor ColorCache::blend(QColor color) -{ - if (Rainbow::luma(m_front) > Rainbow::luma(m_back)) { - // for dark color schemes, produce a fitting color first - color = Rainbow::tint(m_front, color, 0.5); - } - // adapt contrast - return Rainbow::mix(m_front, color, m_bias); -} - -/** - * Blend the color with the back color - */ -QColor ColorCache::blendBackground(QColor color) -{ - // adapt contrast - return Rainbow::mix(m_back, color, m_bias); -} - -void ColorCache::recolorAll() -{ - auto iter = m_colors.begin(); - while (iter != m_colors.end()) { - iter->front = blend(iter->original); - iter->back = blendBackground(iter->original); - } -} diff --git a/launcher/ui/ColorCache.h b/launcher/ui/ColorCache.h deleted file mode 100644 index 1cf292c13..000000000 --- a/launcher/ui/ColorCache.h +++ /dev/null @@ -1,106 +0,0 @@ -#pragma once -#include -#include -#include -#include - -class ColorCache { - public: - ColorCache(QColor front, QColor back, qreal bias) - { - m_front = front; - m_back = back; - m_bias = bias; - }; - - void addColor(int key, QColor color) { m_colors[key] = { color, blend(color), blendBackground(color) }; } - - void setForeground(QColor front) - { - if (m_front != front) { - m_front = front; - recolorAll(); - } - } - - void setBackground(QColor back) - { - if (m_back != back) { - m_back = back; - recolorAll(); - } - } - - QColor getFront(int key) - { - auto iter = m_colors.find(key); - if (iter == m_colors.end()) { - return QColor(); - } - return (*iter).front; - } - - QColor getBack(int key) - { - auto iter = m_colors.find(key); - if (iter == m_colors.end()) { - return QColor(); - } - return (*iter).back; - } - - /** - * Blend the color with the front color, adapting to the back color - */ - QColor blend(QColor color); - - /** - * Blend the color with the back color - */ - QColor blendBackground(QColor color); - - protected: - void recolorAll(); - - protected: - struct ColorEntry { - QColor original; - QColor front; - QColor back; - }; - - protected: - qreal m_bias; - QColor m_front; - QColor m_back; - QMap m_colors; -}; - -class LogColorCache : public ColorCache { - public: - LogColorCache(QColor front, QColor back) : ColorCache(front, back, 1.0) - { - addColor((int)MessageLevel::Launcher, QColor("purple")); - addColor((int)MessageLevel::Debug, QColor("green")); - addColor((int)MessageLevel::Warning, QColor("orange")); - addColor((int)MessageLevel::Error, QColor("red")); - addColor((int)MessageLevel::Fatal, QColor("red")); - addColor((int)MessageLevel::Message, front); - } - - QColor getFront(MessageLevel::Enum level) - { - if (!m_colors.contains((int)level)) { - return ColorCache::getFront((int)MessageLevel::Message); - } - return ColorCache::getFront((int)level); - } - - QColor getBack(MessageLevel::Enum level) - { - if (level == MessageLevel::Fatal) { - return QColor(Qt::black); - } - return QColor(Qt::transparent); - } -}; diff --git a/launcher/ui/pages/global/LauncherPage.cpp b/launcher/ui/pages/global/LauncherPage.cpp index 6a240389a..2f2ce6f70 100644 --- a/launcher/ui/pages/global/LauncherPage.cpp +++ b/launcher/ui/pages/global/LauncherPage.cpp @@ -4,6 +4,7 @@ * Copyright (c) 2022 Jamie Mansfield * Copyright (c) 2022 dada513 * Copyright (C) 2022 Tayou + * Copyright (C) 2024 TheKodeToad * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -50,6 +51,7 @@ #include "DesktopServices.h" #include "settings/SettingsObject.h" #include "ui/themes/ITheme.h" +#include "ui/themes/ThemeManager.h" #include "updater/ExternalUpdater.h" #include @@ -66,9 +68,6 @@ enum InstSortMode { LauncherPage::LauncherPage(QWidget* parent) : QWidget(parent), ui(new Ui::LauncherPage) { ui->setupUi(this); - auto origForeground = ui->fontPreview->palette().color(ui->fontPreview->foregroundRole()); - auto origBackground = ui->fontPreview->palette().color(ui->fontPreview->backgroundRole()); - m_colors.reset(new LogColorCache(origForeground, origBackground)); ui->sortingModeGroup->setId(ui->sortByNameBtn, Sort_Name); ui->sortingModeGroup->setId(ui->sortLastLaunchedBtn, Sort_LastLaunch); @@ -80,8 +79,9 @@ LauncherPage::LauncherPage(QWidget* parent) : QWidget(parent), ui(new Ui::Launch ui->updateSettingsBox->setHidden(!APPLICATION->updater()); - connect(ui->fontSizeBox, SIGNAL(valueChanged(int)), SLOT(refreshFontPreview())); - connect(ui->consoleFont, SIGNAL(currentFontChanged(QFont)), SLOT(refreshFontPreview())); + connect(ui->fontSizeBox, QOverload::of(&QSpinBox::valueChanged), this, &LauncherPage::refreshFontPreview); + connect(ui->consoleFont, &QFontComboBox::currentFontChanged, this, &LauncherPage::refreshFontPreview); + connect(ui->themeCustomizationWidget, &ThemeCustomizationWidget::currentWidgetThemeChanged, this, &LauncherPage::refreshFontPreview); connect(ui->themeCustomizationWidget, &ThemeCustomizationWidget::currentCatChanged, APPLICATION, &Application::currentCatChanged); } @@ -311,37 +311,47 @@ void LauncherPage::loadSettings() void LauncherPage::refreshFontPreview() { + const LogColors& colors = APPLICATION->themeManager()->getLogColors(); + int fontSize = ui->fontSizeBox->value(); QString fontFamily = ui->consoleFont->currentFont().family(); ui->fontPreview->clear(); defaultFormat->setFont(QFont(fontFamily, fontSize)); - { + + auto print = [this, colors](const QString& message, MessageLevel::Enum level) { QTextCharFormat format(*defaultFormat); - format.setForeground(m_colors->getFront(MessageLevel::Error)); + + QColor bg = colors.background.value(level); + QColor fg = colors.foreground.value(level); + + if (bg.isValid()) + format.setBackground(bg); + + if (fg.isValid()) + format.setForeground(fg); + // append a paragraph/line auto workCursor = ui->fontPreview->textCursor(); workCursor.movePosition(QTextCursor::End); - workCursor.insertText(tr("[Something/ERROR] A spooky error!"), format); + workCursor.insertText(message, format); workCursor.insertBlock(); - } - { - QTextCharFormat format(*defaultFormat); - format.setForeground(m_colors->getFront(MessageLevel::Message)); - // append a paragraph/line - auto workCursor = ui->fontPreview->textCursor(); - workCursor.movePosition(QTextCursor::End); - workCursor.insertText(tr("[Test/INFO] A harmless message..."), format); - workCursor.insertBlock(); - } - { - QTextCharFormat format(*defaultFormat); - format.setForeground(m_colors->getFront(MessageLevel::Warning)); - // append a paragraph/line - auto workCursor = ui->fontPreview->textCursor(); - workCursor.movePosition(QTextCursor::End); - workCursor.insertText(tr("[Something/WARN] A not so spooky warning."), format); - workCursor.insertBlock(); - } + }; + + print(QString("%1 version: %2 (%3)\n") + .arg(BuildConfig.LAUNCHER_DISPLAYNAME, BuildConfig.printableVersionString(), BuildConfig.BUILD_PLATFORM), + MessageLevel::Launcher); + + QDate today = QDate::currentDate(); + + if (today.month() == 10 && today.day() == 31) + print(tr("[Test/ERROR] OOoooOOOoooo! A spooky error!"), MessageLevel::Error); + else + print(tr("[Test/ERROR] A spooky error!"), MessageLevel::Error); + + print(tr("[Test/INFO] A harmless message..."), MessageLevel::Info); + print(tr("[Test/WARN] A not so spooky warning."), MessageLevel::Warning); + print(tr("[Test/DEBUG] A secret debugging message..."), MessageLevel::Debug); + print(tr("[Test/FATAL] A terrifying fatal error!"), MessageLevel::Fatal); } void LauncherPage::retranslate() diff --git a/launcher/ui/pages/global/LauncherPage.h b/launcher/ui/pages/global/LauncherPage.h index f9aefb171..4a46d1e48 100644 --- a/launcher/ui/pages/global/LauncherPage.h +++ b/launcher/ui/pages/global/LauncherPage.h @@ -41,7 +41,6 @@ #include #include #include "java/JavaChecker.h" -#include "ui/ColorCache.h" #include "ui/pages/BasePage.h" class QTextCharFormat; @@ -93,7 +92,5 @@ class LauncherPage : public QWidget, public BasePage { // default format for the font preview... QTextCharFormat* defaultFormat; - std::unique_ptr m_colors; - std::shared_ptr m_languageModel; }; diff --git a/launcher/ui/pages/instance/LogPage.cpp b/launcher/ui/pages/instance/LogPage.cpp index 8e1e53762..0c22d1de6 100644 --- a/launcher/ui/pages/instance/LogPage.cpp +++ b/launcher/ui/pages/instance/LogPage.cpp @@ -3,7 +3,7 @@ * Prism Launcher - Minecraft Launcher * Copyright (c) 2022 Jamie Mansfield * Copyright (C) 2022 Sefa Eyeoglu - * Copyright (C) 2022 TheKodeToad + * Copyright (C) 2024 TheKodeToad * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,8 +47,8 @@ #include "launch/LaunchTask.h" #include "settings/Setting.h" -#include "ui/ColorCache.h" #include "ui/GuiUtil.h" +#include "ui/themes/ThemeManager.h" #include @@ -57,26 +57,36 @@ class LogFormatProxyModel : public QIdentityProxyModel { LogFormatProxyModel(QObject* parent = nullptr) : QIdentityProxyModel(parent) {} QVariant data(const QModelIndex& index, int role) const override { + const LogColors& colors = APPLICATION->themeManager()->getLogColors(); + switch (role) { case Qt::FontRole: return m_font; case Qt::ForegroundRole: { - MessageLevel::Enum level = (MessageLevel::Enum)QIdentityProxyModel::data(index, LogModel::LevelRole).toInt(); - return m_colors->getFront(level); + auto level = static_cast(QIdentityProxyModel::data(index, LogModel::LevelRole).toInt()); + QColor result = colors.foreground.value(level); + + if (result.isValid()) + return result; + + break; } case Qt::BackgroundRole: { - MessageLevel::Enum level = (MessageLevel::Enum)QIdentityProxyModel::data(index, LogModel::LevelRole).toInt(); - return m_colors->getBack(level); + auto level = static_cast(QIdentityProxyModel::data(index, LogModel::LevelRole).toInt()); + QColor result = colors.background.value(level); + + if (result.isValid()) + return result; + + break; } - default: - return QIdentityProxyModel::data(index, role); } + + return QIdentityProxyModel::data(index, role); } void setFont(QFont font) { m_font = font; } - void setColors(LogColorCache* colors) { m_colors.reset(colors); } - QModelIndex find(const QModelIndex& start, const QString& value, bool reverse) const { QModelIndex parentIndex = parent(start); @@ -125,7 +135,6 @@ class LogFormatProxyModel : public QIdentityProxyModel { private: QFont m_font; - std::unique_ptr m_colors; }; LogPage::LogPage(InstancePtr instance, QWidget* parent) : QWidget(parent), ui(new Ui::LogPage), m_instance(instance) @@ -134,12 +143,6 @@ LogPage::LogPage(InstancePtr instance, QWidget* parent) : QWidget(parent), ui(ne ui->tabWidget->tabBar()->hide(); m_proxy = new LogFormatProxyModel(this); - // set up text colors in the log proxy and adapt them to the current theme foreground and background - { - auto origForeground = ui->text->palette().color(ui->text->foregroundRole()); - auto origBackground = ui->text->palette().color(ui->text->backgroundRole()); - m_proxy->setColors(new LogColorCache(origForeground, origBackground)); - } // set up fonts in the log proxy { diff --git a/launcher/ui/themes/BrightTheme.cpp b/launcher/ui/themes/BrightTheme.cpp index 39a5bfd14..81bdd773e 100644 --- a/launcher/ui/themes/BrightTheme.cpp +++ b/launcher/ui/themes/BrightTheme.cpp @@ -46,11 +46,6 @@ QString BrightTheme::name() return QObject::tr("Bright"); } -bool BrightTheme::hasColorScheme() -{ - return true; -} - QPalette BrightTheme::colorScheme() { QPalette brightPalette; diff --git a/launcher/ui/themes/BrightTheme.h b/launcher/ui/themes/BrightTheme.h index 750e7bfc5..070eef124 100644 --- a/launcher/ui/themes/BrightTheme.h +++ b/launcher/ui/themes/BrightTheme.h @@ -45,7 +45,6 @@ class BrightTheme : public FusionTheme { QString tooltip() override; bool hasStyleSheet() override; QString appStyleSheet() override; - bool hasColorScheme() override; QPalette colorScheme() override; double fadeAmount() override; QColor fadeColor() override; diff --git a/launcher/ui/themes/CustomTheme.cpp b/launcher/ui/themes/CustomTheme.cpp index 22b366b62..081ba1900 100644 --- a/launcher/ui/themes/CustomTheme.cpp +++ b/launcher/ui/themes/CustomTheme.cpp @@ -2,6 +2,7 @@ /* * Prism Launcher - Minecraft Launcher * Copyright (C) 2024 Tayou + * Copyright (C) 2024 TheKodeToad * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -39,121 +40,6 @@ const char* themeFile = "theme.json"; -static bool readThemeJson(const QString& path, - QPalette& palette, - double& fadeAmount, - QColor& fadeColor, - QString& name, - QString& widgets, - QString& qssFilePath, - bool& dataIncomplete) -{ - QFileInfo pathInfo(path); - if (pathInfo.exists() && pathInfo.isFile()) { - try { - auto doc = Json::requireDocument(path, "Theme JSON file"); - const QJsonObject root = doc.object(); - dataIncomplete = !root.contains("qssFilePath"); - name = Json::requireString(root, "name", "Theme name"); - widgets = Json::requireString(root, "widgets", "Qt widget theme"); - qssFilePath = Json::ensureString(root, "qssFilePath", "themeStyle.css"); - auto colorsRoot = Json::requireObject(root, "colors", "colors object"); - auto readColor = [&](QString colorName) -> QColor { - auto colorValue = Json::ensureString(colorsRoot, colorName, QString()); - if (!colorValue.isEmpty()) { - QColor color(colorValue); - if (!color.isValid()) { - themeWarningLog() << "Color value" << colorValue << "for" << colorName << "was not recognized."; - return QColor(); - } - return color; - } - return QColor(); - }; - auto readAndSetColor = [&](QPalette::ColorRole role, QString colorName) { - auto color = readColor(colorName); - if (color.isValid()) { - palette.setColor(role, color); - } else { - themeDebugLog() << "Color value for" << colorName << "was not present."; - } - }; - - // palette - readAndSetColor(QPalette::Window, "Window"); - readAndSetColor(QPalette::WindowText, "WindowText"); - readAndSetColor(QPalette::Base, "Base"); - readAndSetColor(QPalette::AlternateBase, "AlternateBase"); - readAndSetColor(QPalette::ToolTipBase, "ToolTipBase"); - readAndSetColor(QPalette::ToolTipText, "ToolTipText"); - readAndSetColor(QPalette::Text, "Text"); - readAndSetColor(QPalette::Button, "Button"); - readAndSetColor(QPalette::ButtonText, "ButtonText"); - readAndSetColor(QPalette::BrightText, "BrightText"); - readAndSetColor(QPalette::Link, "Link"); - readAndSetColor(QPalette::Highlight, "Highlight"); - readAndSetColor(QPalette::HighlightedText, "HighlightedText"); - - // fade - fadeColor = readColor("fadeColor"); - fadeAmount = Json::ensureDouble(colorsRoot, "fadeAmount", 0.5, "fade amount"); - - } catch (const Exception& e) { - themeWarningLog() << "Couldn't load theme json: " << e.cause(); - return false; - } - } else { - themeDebugLog() << "No theme json present."; - return false; - } - return true; -} - -static bool writeThemeJson(const QString& path, - const QPalette& palette, - double fadeAmount, - QColor fadeColor, - QString name, - QString widgets, - QString qssFilePath) -{ - QJsonObject rootObj; - rootObj.insert("name", name); - rootObj.insert("widgets", widgets); - rootObj.insert("qssFilePath", qssFilePath); - - QJsonObject colorsObj; - auto insertColor = [&](QPalette::ColorRole role, QString colorName) { colorsObj.insert(colorName, palette.color(role).name()); }; - - // palette - insertColor(QPalette::Window, "Window"); - insertColor(QPalette::WindowText, "WindowText"); - insertColor(QPalette::Base, "Base"); - insertColor(QPalette::AlternateBase, "AlternateBase"); - insertColor(QPalette::ToolTipBase, "ToolTipBase"); - insertColor(QPalette::ToolTipText, "ToolTipText"); - insertColor(QPalette::Text, "Text"); - insertColor(QPalette::Button, "Button"); - insertColor(QPalette::ButtonText, "ButtonText"); - insertColor(QPalette::BrightText, "BrightText"); - insertColor(QPalette::Link, "Link"); - insertColor(QPalette::Highlight, "Highlight"); - insertColor(QPalette::HighlightedText, "HighlightedText"); - - // fade - colorsObj.insert("fadeColor", fadeColor.name()); - colorsObj.insert("fadeAmount", fadeAmount); - - rootObj.insert("colors", colorsObj); - try { - Json::write(rootObj, path); - return true; - } catch ([[maybe_unused]] const Exception& e) { - themeWarningLog() << "Failed to write theme json to" << path; - return false; - } -} - /// @param baseTheme Base Theme /// @param fileInfo FileInfo object for file to load /// @param isManifest whether to load a theme manifest or a qss file @@ -176,23 +62,22 @@ CustomTheme::CustomTheme(ITheme* baseTheme, QFileInfo& fileInfo, bool isManifest auto themeFilePath = FS::PathCombine(path, themeFile); - bool jsonDataIncomplete = false; - m_palette = baseTheme->colorScheme(); - if (readThemeJson(themeFilePath, m_palette, m_fadeAmount, m_fadeColor, m_name, m_widgets, m_qssFilePath, jsonDataIncomplete)) { + + bool hasCustomLogColors = false; + + if (read(themeFilePath, hasCustomLogColors)) { // If theme data was found, fade "Disabled" color of each role according to FadeAmount m_palette = fadeInactive(m_palette, m_fadeAmount, m_fadeColor); + + if (!hasCustomLogColors) + m_logColors = defaultLogColors(m_palette); } else { themeDebugLog() << "Did not read theme json file correctly, not changing theme, keeping previous."; + m_logColors = defaultLogColors(m_palette); return; } - // FIXME: This is kinda jank, it only actually checks if the qss file path is not present. It should actually check for any relevant - // missing data (e.g. name, colors) - if (jsonDataIncomplete) { - writeThemeJson(fileInfo.absoluteFilePath(), m_palette, m_fadeAmount, m_fadeColor, m_name, m_widgets, m_qssFilePath); - } - auto qssFilePath = FS::PathCombine(path, m_qssFilePath); QFileInfo info(qssFilePath); if (info.isFile()) { @@ -251,11 +136,6 @@ QString CustomTheme::name() return m_name; } -bool CustomTheme::hasColorScheme() -{ - return true; -} - QPalette CustomTheme::colorScheme() { return m_palette; @@ -289,3 +169,99 @@ QString CustomTheme::tooltip() { return m_tooltip; } + +bool CustomTheme::read(const QString& path, bool& hasCustomLogColors) +{ + QFileInfo pathInfo(path); + if (pathInfo.exists() && pathInfo.isFile()) { + try { + auto doc = Json::requireDocument(path, "Theme JSON file"); + const QJsonObject root = doc.object(); + m_name = Json::requireString(root, "name", "Theme name"); + m_widgets = Json::requireString(root, "widgets", "Qt widget theme"); + m_qssFilePath = Json::ensureString(root, "qssFilePath", "themeStyle.css"); + + auto readColor = [&](const QJsonObject& colors, const QString& colorName) -> QColor { + auto colorValue = Json::ensureString(colors, colorName, QString()); + if (!colorValue.isEmpty()) { + QColor color(colorValue); + if (!color.isValid()) { + themeWarningLog() << "Color value" << colorValue << "for" << colorName << "was not recognized."; + return {}; + } + return color; + } + return {}; + }; + + if (root.contains("colors")) { + auto colorsRoot = Json::requireObject(root, "colors"); + auto readAndSetPaletteColor = [&](QPalette::ColorRole role, const QString& colorName) { + auto color = readColor(colorsRoot, colorName); + if (color.isValid()) { + m_palette.setColor(role, color); + } else { + themeDebugLog() << "Color value for" << colorName << "was not present."; + } + }; + + // palette + readAndSetPaletteColor(QPalette::Window, "Window"); + readAndSetPaletteColor(QPalette::WindowText, "WindowText"); + readAndSetPaletteColor(QPalette::Base, "Base"); + readAndSetPaletteColor(QPalette::AlternateBase, "AlternateBase"); + readAndSetPaletteColor(QPalette::ToolTipBase, "ToolTipBase"); + readAndSetPaletteColor(QPalette::ToolTipText, "ToolTipText"); + readAndSetPaletteColor(QPalette::Text, "Text"); + readAndSetPaletteColor(QPalette::Button, "Button"); + readAndSetPaletteColor(QPalette::ButtonText, "ButtonText"); + readAndSetPaletteColor(QPalette::BrightText, "BrightText"); + readAndSetPaletteColor(QPalette::Link, "Link"); + readAndSetPaletteColor(QPalette::Highlight, "Highlight"); + readAndSetPaletteColor(QPalette::HighlightedText, "HighlightedText"); + + // fade + m_fadeColor = readColor(colorsRoot, "fadeColor"); + m_fadeAmount = Json::ensureDouble(colorsRoot, "fadeAmount", 0.5, "fade amount"); + } + + if (root.contains("logColors")) { + hasCustomLogColors = true; + + auto logColorsRoot = Json::requireObject(root, "logColors"); + auto readAndSetLogColor = [&](MessageLevel::Enum level, bool fg, const QString& colorName) { + auto color = readColor(logColorsRoot, colorName); + if (color.isValid()) { + if (fg) + m_logColors.foreground[level] = color; + else + m_logColors.background[level] = color; + } else { + themeDebugLog() << "Color value for" << colorName << "was not present."; + } + }; + + readAndSetLogColor(MessageLevel::Message, false, "MessageHighlight"); + readAndSetLogColor(MessageLevel::Launcher, false, "LauncherHighlight"); + readAndSetLogColor(MessageLevel::Debug, false, "DebugHighlight"); + readAndSetLogColor(MessageLevel::Warning, false, "WarningHighlight"); + readAndSetLogColor(MessageLevel::Error, false, "ErrorHighlight"); + readAndSetLogColor(MessageLevel::Fatal, false, "FatalHighlight"); + + readAndSetLogColor(MessageLevel::Message, true, "Message"); + readAndSetLogColor(MessageLevel::Launcher, true, "Launcher"); + readAndSetLogColor(MessageLevel::Debug, true, "Debug"); + readAndSetLogColor(MessageLevel::Warning, true, "Warning"); + readAndSetLogColor(MessageLevel::Error, true, "Error"); + readAndSetLogColor(MessageLevel::Fatal, true, "Fatal"); + } + } catch (const Exception& e) { + themeWarningLog() << "Couldn't load theme json: " << e.cause(); + return false; + } + } else { + themeDebugLog() << "No theme json present."; + return false; + } + return true; +} diff --git a/launcher/ui/themes/CustomTheme.h b/launcher/ui/themes/CustomTheme.h index 761a2bd90..b8d073921 100644 --- a/launcher/ui/themes/CustomTheme.h +++ b/launcher/ui/themes/CustomTheme.h @@ -2,6 +2,7 @@ /* * Prism Launcher - Minecraft Launcher * Copyright (C) 2024 Tayou + * Copyright (C) 2024 TheKodeToad * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -47,14 +48,16 @@ class CustomTheme : public ITheme { QString tooltip() override; bool hasStyleSheet() override; QString appStyleSheet() override; - bool hasColorScheme() override; QPalette colorScheme() override; double fadeAmount() override; QColor fadeColor() override; QString qtTheme() override; + LogColors logColorScheme() override { return m_logColors; } QStringList searchPaths() override; - private: /* data */ + private: + bool read(const QString& path, bool& hasCustomLogColors); + QPalette m_palette; QColor m_fadeColor; double m_fadeAmount; @@ -63,6 +66,7 @@ class CustomTheme : public ITheme { QString m_id; QString m_widgets; QString m_qssFilePath; + LogColors m_logColors; /** * The tooltip could be defined in the theme json, * or composed of other fields that could be in there. diff --git a/launcher/ui/themes/DarkTheme.cpp b/launcher/ui/themes/DarkTheme.cpp index 429d046ac..804126547 100644 --- a/launcher/ui/themes/DarkTheme.cpp +++ b/launcher/ui/themes/DarkTheme.cpp @@ -2,6 +2,7 @@ /* * Prism Launcher - Minecraft Launcher * Copyright (C) 2024 Tayou + * Copyright (C) 2024 TheKodeToad * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -46,11 +47,6 @@ QString DarkTheme::name() return QObject::tr("Dark"); } -bool DarkTheme::hasColorScheme() -{ - return true; -} - QPalette DarkTheme::colorScheme() { QPalette darkPalette; @@ -90,6 +86,7 @@ QString DarkTheme::appStyleSheet() { return "QToolTip { color: #ffffff; background-color: #2a82da; border: 1px solid white; }"; } + QString DarkTheme::tooltip() { return ""; diff --git a/launcher/ui/themes/DarkTheme.h b/launcher/ui/themes/DarkTheme.h index 819f6a934..c97edbcbe 100644 --- a/launcher/ui/themes/DarkTheme.h +++ b/launcher/ui/themes/DarkTheme.h @@ -45,7 +45,6 @@ class DarkTheme : public FusionTheme { QString tooltip() override; bool hasStyleSheet() override; QString appStyleSheet() override; - bool hasColorScheme() override; QPalette colorScheme() override; double fadeAmount() override; QColor fadeColor() override; diff --git a/launcher/ui/themes/ITheme.cpp b/launcher/ui/themes/ITheme.cpp index 046ae16b4..cae6e90db 100644 --- a/launcher/ui/themes/ITheme.cpp +++ b/launcher/ui/themes/ITheme.cpp @@ -44,9 +44,7 @@ void ITheme::apply(bool) { APPLICATION->setStyleSheet(QString()); QApplication::setStyle(new HintOverrideProxyStyle(QStyleFactory::create(qtTheme()))); - if (hasColorScheme()) { - QApplication::setPalette(colorScheme()); - } + QApplication::setPalette(colorScheme()); APPLICATION->setStyleSheet(appStyleSheet()); QDir::setSearchPaths("theme", searchPaths()); } @@ -73,3 +71,30 @@ QPalette ITheme::fadeInactive(QPalette in, qreal bias, QColor color) blend(QPalette::HighlightedText); return in; } + +LogColors ITheme::defaultLogColors(const QPalette& palette) +{ + LogColors result; + + const QColor& bg = palette.color(QPalette::Base); + const QColor& fg = palette.color(QPalette::Text); + + auto blend = [bg, fg](QColor color) { + if (Rainbow::luma(fg) > Rainbow::luma(bg)) { + // for dark color schemes, produce a fitting color first + color = Rainbow::tint(fg, color, 0.5); + } + // adapt contrast + return Rainbow::mix(fg, color, 1); + }; + + result.background[MessageLevel::Fatal] = Qt::black; + + result.foreground[MessageLevel::Launcher] = blend(QColor("purple")); + result.foreground[MessageLevel::Debug] = blend(QColor("green")); + result.foreground[MessageLevel::Warning] = blend(QColor("orange")); + result.foreground[MessageLevel::Error] = blend(QColor("red")); + result.foreground[MessageLevel::Fatal] = blend(QColor("red")); + + return result; +} diff --git a/launcher/ui/themes/ITheme.h b/launcher/ui/themes/ITheme.h index 45d3e2739..7dc5fc64a 100644 --- a/launcher/ui/themes/ITheme.h +++ b/launcher/ui/themes/ITheme.h @@ -2,6 +2,7 @@ /* * Prism Launcher - Minecraft Launcher * Copyright (C) 2022 Tayou + * Copyright (C) 2024 TheKodeToad * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -33,11 +34,19 @@ * limitations under the License. */ #pragma once +#include +#include #include #include class QStyle; +struct LogColors { + QMap background; + QMap foreground; +}; + +// TODO: rename to Theme; this is not an interface as it contains method implementations class ITheme { public: virtual ~ITheme() {} @@ -48,11 +57,12 @@ class ITheme { virtual bool hasStyleSheet() = 0; virtual QString appStyleSheet() = 0; virtual QString qtTheme() = 0; - virtual bool hasColorScheme() = 0; virtual QPalette colorScheme() = 0; virtual QColor fadeColor() = 0; virtual double fadeAmount() = 0; + virtual LogColors logColorScheme() { return defaultLogColors(colorScheme()); } virtual QStringList searchPaths() { return {}; } static QPalette fadeInactive(QPalette in, qreal bias, QColor color); + static LogColors defaultLogColors(const QPalette& palette); }; diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp index 70de21894..791df2ed4 100644 --- a/launcher/ui/themes/SystemTheme.cpp +++ b/launcher/ui/themes/SystemTheme.cpp @@ -125,8 +125,3 @@ bool SystemTheme::hasStyleSheet() { return false; } - -bool SystemTheme::hasColorScheme() -{ - return true; -} diff --git a/launcher/ui/themes/SystemTheme.h b/launcher/ui/themes/SystemTheme.h index 5c58856cb..783f2e4c2 100644 --- a/launcher/ui/themes/SystemTheme.h +++ b/launcher/ui/themes/SystemTheme.h @@ -48,7 +48,6 @@ class SystemTheme : public ITheme { QString qtTheme() override; bool hasStyleSheet() override; QString appStyleSheet() override; - bool hasColorScheme() override; QPalette colorScheme() override; double fadeAmount() override; QColor fadeColor() override; diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index d57e166f4..ad9a6f88e 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -123,11 +123,11 @@ void ThemeManager::initializeWidgets() { themeDebugLog() << "Determining System Widget Theme..."; const auto& style = QApplication::style(); - currentlySelectedSystemTheme = style->objectName(); - themeDebugLog() << "System theme seems to be:" << currentlySelectedSystemTheme; + m_currentlySelectedSystemTheme = style->objectName(); + themeDebugLog() << "System theme seems to be:" << m_currentlySelectedSystemTheme; themeDebugLog() << "<> Initializing Widget Themes"; - themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique(currentlySelectedSystemTheme, true)); + themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique(m_currentlySelectedSystemTheme, true)); auto darkThemeId = addTheme(std::make_unique()); themeDebugLog() << "Loading Built-in Theme:" << darkThemeId; themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique()); @@ -196,8 +196,8 @@ QList ThemeManager::getValidApplicationThemes() QList ThemeManager::getValidCatPacks() { QList ret; - ret.reserve(m_cat_packs.size()); - for (auto&& [id, theme] : m_cat_packs) { + ret.reserve(m_catPacks.size()); + for (auto&& [id, theme] : m_catPacks) { ret.append(theme.get()); } return ret; @@ -246,6 +246,8 @@ void ThemeManager::setApplicationTheme(const QString& name, bool initial) auto& theme = themeIter->second; themeDebugLog() << "applying theme" << theme->name(); theme->apply(initial); + + m_logColors = theme->logColorScheme(); } else { themeWarningLog() << "Tried to set invalid theme:" << name; } @@ -258,7 +260,7 @@ void ThemeManager::applyCurrentlySelectedTheme(bool initial) themeDebugLog() << "<> Icon theme set."; auto applicationTheme = settings->get("ApplicationTheme").toString(); if (applicationTheme == "") { - applicationTheme = currentlySelectedSystemTheme; + applicationTheme = m_currentlySelectedSystemTheme; } setApplicationTheme(applicationTheme, initial); themeDebugLog() << "<> Application theme set."; @@ -266,8 +268,8 @@ void ThemeManager::applyCurrentlySelectedTheme(bool initial) QString ThemeManager::getCatPack(QString catName) { - auto catIter = m_cat_packs.find(!catName.isEmpty() ? catName : APPLICATION->settings()->get("BackgroundCat").toString()); - if (catIter != m_cat_packs.end()) { + auto catIter = m_catPacks.find(!catName.isEmpty() ? catName : APPLICATION->settings()->get("BackgroundCat").toString()); + if (catIter != m_catPacks.end()) { auto& catPack = catIter->second; themeDebugLog() << "applying catpack" << catPack->id(); return catPack->path(); @@ -275,14 +277,14 @@ QString ThemeManager::getCatPack(QString catName) themeWarningLog() << "Tried to get invalid catPack:" << catName; } - return m_cat_packs.begin()->second->path(); + return m_catPacks.begin()->second->path(); } QString ThemeManager::addCatPack(std::unique_ptr catPack) { QString id = catPack->id(); - if (m_cat_packs.find(id) == m_cat_packs.end()) - m_cat_packs.emplace(id, std::move(catPack)); + if (m_catPacks.find(id) == m_catPacks.end()) + m_catPacks.emplace(id, std::move(catPack)); else themeWarningLog() << "CatPack(" << id << ") not added to prevent id duplication"; return id; @@ -340,8 +342,8 @@ void ThemeManager::refresh() { m_themes.clear(); m_icons.clear(); - m_cat_packs.clear(); + m_catPacks.clear(); initializeThemes(); initializeCatPacks(); -}; \ No newline at end of file +} \ No newline at end of file diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index 9d01d38e7..8bbcd34a9 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -2,7 +2,7 @@ /* * Prism Launcher - Minecraft Launcher * Copyright (C) 2024 Tayou - * Copyright (C) 2023 TheKodeToad + * Copyright (C) 2024 TheKodeToad * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -55,6 +55,8 @@ class ThemeManager { QString getCatPack(QString catName = ""); QList getValidCatPacks(); + const LogColors& getLogColors() { return m_logColors; } + void refresh(); private: @@ -63,8 +65,9 @@ class ThemeManager { QDir m_iconThemeFolder{ "iconthemes" }; QDir m_applicationThemeFolder{ "themes" }; QDir m_catPacksFolder{ "catpacks" }; - std::map> m_cat_packs; - QString currentlySelectedSystemTheme; + std::map> m_catPacks; + QString m_currentlySelectedSystemTheme; + LogColors m_logColors; void initializeThemes(); void initializeCatPacks(); From aa3a4585ee8663250636427f67afccb537ce4428 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 22 Aug 2024 18:58:04 +0300 Subject: [PATCH 139/616] Add icons Signed-off-by: Trial97 --- launcher/resources/multimc/multimc.qrc | 6 + .../resources/multimc/scalable/adoptium.svg | 184 ++++++++++++++++++ launcher/resources/multimc/scalable/azul.svg | 17 ++ .../resources/multimc/scalable/mojang.svg | 55 ++++++ launcher/ui/java/InstallJavaDialog.cpp | 6 +- 5 files changed, 265 insertions(+), 3 deletions(-) create mode 100644 launcher/resources/multimc/scalable/adoptium.svg create mode 100644 launcher/resources/multimc/scalable/azul.svg create mode 100644 launcher/resources/multimc/scalable/mojang.svg diff --git a/launcher/resources/multimc/multimc.qrc b/launcher/resources/multimc/multimc.qrc index eeba32186..25edd09e0 100644 --- a/launcher/resources/multimc/multimc.qrc +++ b/launcher/resources/multimc/multimc.qrc @@ -353,5 +353,11 @@ scalable/instances/neoforged.svg 128x128/instances/forge.png 128x128/instances/liteloader.png + + + scalable/adoptium.svg + scalable/azul.svg + scalable/mojang.svg + diff --git a/launcher/resources/multimc/scalable/adoptium.svg b/launcher/resources/multimc/scalable/adoptium.svg new file mode 100644 index 000000000..3fcc956ed --- /dev/null +++ b/launcher/resources/multimc/scalable/adoptium.svg @@ -0,0 +1,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/launcher/resources/multimc/scalable/azul.svg b/launcher/resources/multimc/scalable/azul.svg new file mode 100644 index 000000000..1c4356eb7 --- /dev/null +++ b/launcher/resources/multimc/scalable/azul.svg @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/launcher/resources/multimc/scalable/mojang.svg b/launcher/resources/multimc/scalable/mojang.svg new file mode 100644 index 000000000..0c1f48d3d --- /dev/null +++ b/launcher/resources/multimc/scalable/mojang.svg @@ -0,0 +1,55 @@ + + Created with Fabric.js 3.6.3 diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index 01ec56dfd..decbfb77d 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -273,11 +273,11 @@ QList InstallDialog::getPages() { return { // Mojang - new InstallJavaPage("net.minecraft.java", "", tr("Mojang")), + new InstallJavaPage("net.minecraft.java", "mojang", tr("Mojang")), // Adoptium - new InstallJavaPage("net.adoptium.java", "", tr("Adoptium")), + new InstallJavaPage("net.adoptium.java", "adoptium", tr("Adoptium")), // Azul - new InstallJavaPage("com.azul.java", "", tr("Azul")), + new InstallJavaPage("com.azul.java", "azul", tr("Azul Zulu")), }; } From 7d9e47ac18fc2b3278027bb99c9b5686aa165dc7 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 22 Aug 2024 18:58:38 +0300 Subject: [PATCH 140/616] Change major java column name Signed-off-by: Trial97 --- launcher/VersionProxyModel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/VersionProxyModel.cpp b/launcher/VersionProxyModel.cpp index 62cf4c221..552900d35 100644 --- a/launcher/VersionProxyModel.cpp +++ b/launcher/VersionProxyModel.cpp @@ -121,7 +121,7 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, case JavaName: return tr("Java Name"); case JavaMajor: - return tr("Major"); + return tr("Major Version"); case Time: return tr("Released"); } From 0b05c7cb07030bada88ac253e9a92c24ea4bd473 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 22 Aug 2024 18:59:09 +0300 Subject: [PATCH 141/616] fix bug with buton not updating corectly for java dialog Signed-off-by: Trial97 --- launcher/ui/java/InstallJavaDialog.cpp | 11 +++++------ launcher/ui/java/InstallJavaDialog.h | 2 +- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index decbfb77d..4fb9fc2d2 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -259,14 +259,14 @@ InstallDialog::InstallDialog(const QString& uid, BaseInstance* instance, QWidget auto cast = pageCast(page); cast->setRecomend(true); - connect(cast, &InstallJavaPage::selectionChanged, this, [this] { validate(); }); + connect(cast, &InstallJavaPage::selectionChanged, this, [this, cast] { validate(cast); }); if (!recommendedJavas.isEmpty()) { cast->setRecommendedMajors(recommendedJavas); } } - connect(container, &PageContainer::selectedPageChanged, this, [this] { validate(); }); + connect(container, &PageContainer::selectedPageChanged, this, [this](BasePage* previous, BasePage* selected) { validate(selected); }); pageCast(container->selectedPage())->selectSearch(); - validate(); + validate(container->selectedPage()); } QList InstallDialog::getPages() @@ -286,10 +286,9 @@ QString InstallDialog::dialogTitle() return tr("Install Java"); } -void InstallDialog::validate() +void InstallDialog::validate(BasePage* selected) { - buttons->button(QDialogButtonBox::Ok) - ->setEnabled(!!std::dynamic_pointer_cast(pageCast(container->selectedPage())->selectedVersion())); + buttons->button(QDialogButtonBox::Ok)->setEnabled(!!std::dynamic_pointer_cast(pageCast(selected)->selectedVersion())); } void InstallDialog::done(int result) diff --git a/launcher/ui/java/InstallJavaDialog.h b/launcher/ui/java/InstallJavaDialog.h index d6f879207..7d0edbfdd 100644 --- a/launcher/ui/java/InstallJavaDialog.h +++ b/launcher/ui/java/InstallJavaDialog.h @@ -37,7 +37,7 @@ class InstallDialog final : public QDialog, private BasePageProvider { QList getPages() override; QString dialogTitle() override; - void validate(); + void validate(BasePage* selected); void done(int result) override; private: From 5f64d7dc47b78a9fdd62b3f54ecb6bb1361b9e9b Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 22 Aug 2024 20:38:08 +0300 Subject: [PATCH 142/616] update adoptium icon Signed-off-by: Trial97 --- .../resources/multimc/scalable/adoptium.svg | 28 ++++++++----------- 1 file changed, 12 insertions(+), 16 deletions(-) diff --git a/launcher/resources/multimc/scalable/adoptium.svg b/launcher/resources/multimc/scalable/adoptium.svg index 3fcc956ed..d48f8b7d9 100644 --- a/launcher/resources/multimc/scalable/adoptium.svg +++ b/launcher/resources/multimc/scalable/adoptium.svg @@ -1,6 +1,6 @@ - + transform="matrix(13.679999,0,0,13.679976,-6760.5652,-16025.746)"> @@ -156,7 +152,7 @@ + transform="matrix(13.679999,0,0,13.679976,-6760.5652,-16025.746)"> @@ -168,7 +164,7 @@ + transform="matrix(1.2000009,0,0,1.1999989,-853.84911,665.71675)"> Date: Thu, 22 Aug 2024 19:07:15 +0100 Subject: [PATCH 143/616] Fix invalid Java path message Signed-off-by: TheKodeToad --- launcher/launch/steps/CheckJava.cpp | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/launcher/launch/steps/CheckJava.cpp b/launcher/launch/steps/CheckJava.cpp index 81337a88e..4628e154d 100644 --- a/launcher/launch/steps/CheckJava.cpp +++ b/launcher/launch/steps/CheckJava.cpp @@ -45,20 +45,23 @@ void CheckJava::executeTask() { auto instance = m_parent->instance(); auto settings = instance->settings(); - m_javaPath = FS::ResolveExecutable(settings->get("JavaPath").toString()); + + QString javaPathSetting = settings->get("JavaPath").toString(); + m_javaPath = FS::ResolveExecutable(javaPathSetting); + bool perInstance = settings->get("OverrideJava").toBool() || settings->get("OverrideJavaLocation").toBool(); auto realJavaPath = QStandardPaths::findExecutable(m_javaPath); if (realJavaPath.isEmpty()) { if (perInstance) { - emit logLine(QString("The java binary \"%1\" couldn't be found. Please fix the java path " + emit logLine(QString("The Java binary \"%1\" couldn't be found. Please fix the Java path " "override in the instance's settings or disable it.") - .arg(m_javaPath), + .arg(javaPathSetting), MessageLevel::Warning); } else { - emit logLine(QString("The java binary \"%1\" couldn't be found. Please set up java in " + emit logLine(QString("The Java binary \"%1\" couldn't be found. Please set up Java in " "the settings.") - .arg(m_javaPath), + .arg(javaPathSetting), MessageLevel::Warning); } emitFailed(QString("Java path is not valid.")); From a910337e9d148937fc6a7339a7bcdd9a2db1ec03 Mon Sep 17 00:00:00 2001 From: maskers <97827489+maskersss@users.noreply.github.com> Date: Thu, 22 Aug 2024 21:42:05 +0300 Subject: [PATCH 144/616] apply suggestion from code review Co-authored-by: TheKodeToad Signed-off-by: maskers <97827489+maskersss@users.noreply.github.com> --- launcher/ui/GuiUtil.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/launcher/ui/GuiUtil.cpp b/launcher/ui/GuiUtil.cpp index 5cdd30e17..4d2e64af4 100644 --- a/launcher/ui/GuiUtil.cpp +++ b/launcher/ui/GuiUtil.cpp @@ -103,11 +103,11 @@ std::optional GuiUtil::uploadPaste(const QString& name, const QString& if (baseUrl.toString() == "https://api.mclo.gs" && text.count("\n") > MaxMclogsLines) { auto truncateResponse = CustomMessageBox::selectable( parentWidget, QObject::tr("Confirm Truncate"), - QObject::tr("The log exceeds mclo.gs' limit: %1 lines (max %2).\n" - "Prism can keep the first %3 and last %4 lines, trimming the middle.\n\n" + QObject::tr("The log has %1 lines, exceeding mclo.gs' limit of %2.\n" + "The launcher can keep the first %3 and last %4 lines, trimming the middle.\n\n" "If you choose 'No', mclo.gs will only keep the first %2 lines, cutting off " "potentially useful info like crashes at the end.\n\n" - "Proceed with Prism's truncation?") + "Proceed with truncation?") .arg(text.count("\n")) .arg(MaxMclogsLines) .arg(InitialMclogsLines) From 762d24bd02ae6a0c0f241626c9c06deeaae86574 Mon Sep 17 00:00:00 2001 From: maskers <97827489+mskrss@users.noreply.github.com> Date: Thu, 22 Aug 2024 21:44:53 +0300 Subject: [PATCH 145/616] don't mention prism in the middle of the log Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com> --- launcher/ui/GuiUtil.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/GuiUtil.cpp b/launcher/ui/GuiUtil.cpp index 4d2e64af4..77d4a98e2 100644 --- a/launcher/ui/GuiUtil.cpp +++ b/launcher/ui/GuiUtil.cpp @@ -63,8 +63,8 @@ QString truncateLogForMclogs(const QString& logContent) truncatedLog += "\n\n\n\n\n\n\n\n\n\n" "------------------------------------------------------------\n" - "--------------------- Log truncated by ---------------------\n" - "---------------------- Prism Launcher ----------------------\n" + "----------------------- Log truncated ----------------------\n" + "------------------------------------------------------------\n" "----- Middle portion omitted to fit mclo.gs size limits ----\n" "------------------------------------------------------------\n" "\n\n\n\n\n\n\n\n\n\n"; From d2304b669872a5bc426a855cf2ee10dd40337808 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sat, 24 Aug 2024 22:10:38 +0100 Subject: [PATCH 146/616] Improve Java checking speed by using startsWith for gentoo paths Signed-off-by: TheKodeToad --- launcher/java/JavaUtils.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index e82216fd4..bc8026348 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -403,12 +403,17 @@ QList JavaUtils::FindJavaPaths() { QList javas; javas.append(this->GetDefaultJava()->path); - auto scanJavaDir = [&](const QString& dirPath) { + auto scanJavaDir = [&]( + const QString& dirPath, + const std::function& filter = [](const QFileInfo&) { return true; }) { QDir dir(dirPath); if (!dir.exists()) return; auto entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); for (auto& entry : entries) { + if (!filter(entry)) + continue; + QString prefix; prefix = entry.canonicalFilePath(); javas.append(FS::PathCombine(prefix, "jre/bin/java")); @@ -431,9 +436,13 @@ QList JavaUtils::FindJavaPaths() scanJavaDirs("/usr/lib64/jvm"); scanJavaDirs("/usr/lib32/jvm"); // Gentoo's locations for openjdk and openjdk-bin respectively - scanJavaDir("/usr/lib64"); - scanJavaDir("/usr/lib"); - scanJavaDir("/opt"); + auto gentooFilter = [](const QFileInfo& info) { + QString fileName = info.fileName(); + return fileName.startsWith("openjdk-") || fileName.startsWith("openj9-"); + }; + scanJavaDir("/usr/lib64", gentooFilter); + scanJavaDir("/usr/lib", gentooFilter); + scanJavaDir("/opt", gentooFilter); // javas stored in Prism Launcher's folder scanJavaDirs("java"); // manually installed JDKs in /opt From cbdacf81eea15e1383619cbd0043517509d42f6d Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sat, 24 Aug 2024 22:50:51 +0100 Subject: [PATCH 147/616] Fix system theme detection Signed-off-by: TheKodeToad --- launcher/ui/themes/SystemTheme.cpp | 6 +++--- launcher/ui/themes/SystemTheme.h | 2 +- launcher/ui/themes/ThemeManager.cpp | 18 ++++++++++-------- launcher/ui/themes/ThemeManager.h | 3 ++- 4 files changed, 16 insertions(+), 13 deletions(-) diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp index 791df2ed4..a1674455a 100644 --- a/launcher/ui/themes/SystemTheme.cpp +++ b/launcher/ui/themes/SystemTheme.cpp @@ -40,11 +40,11 @@ #include "HintOverrideProxyStyle.h" #include "ThemeManager.h" -SystemTheme::SystemTheme(QString& styleName, bool isSystemTheme) +SystemTheme::SystemTheme(const QString& styleName, const QPalette& palette, bool isDefaultTheme) { - themeName = isSystemTheme ? "system" : styleName; + themeName = isDefaultTheme ? "system" : styleName; widgetTheme = styleName; - colorPalette = QApplication::palette(); + colorPalette = palette; } void SystemTheme::apply(bool initial) diff --git a/launcher/ui/themes/SystemTheme.h b/launcher/ui/themes/SystemTheme.h index 783f2e4c2..7c260fdc4 100644 --- a/launcher/ui/themes/SystemTheme.h +++ b/launcher/ui/themes/SystemTheme.h @@ -38,7 +38,7 @@ class SystemTheme : public ITheme { public: - SystemTheme(QString& themeName, bool isSystemTheme = false); + SystemTheme(const QString& styleName, const QPalette& palette, bool isDefaultTheme); virtual ~SystemTheme() {} void apply(bool initial) override; diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index ad9a6f88e..691a51668 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -36,6 +36,13 @@ ThemeManager::ThemeManager() { + themeDebugLog() << "Determining System Widget Theme..."; + const auto& style = QApplication::style(); + m_defaultStyle = style->objectName(); + themeDebugLog() << "System theme seems to be:" << m_defaultStyle; + + m_defaultPalette = QApplication::palette(); + initializeThemes(); initializeCatPacks(); } @@ -121,13 +128,8 @@ void ThemeManager::initializeIcons() void ThemeManager::initializeWidgets() { - themeDebugLog() << "Determining System Widget Theme..."; - const auto& style = QApplication::style(); - m_currentlySelectedSystemTheme = style->objectName(); - themeDebugLog() << "System theme seems to be:" << m_currentlySelectedSystemTheme; - themeDebugLog() << "<> Initializing Widget Themes"; - themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique(m_currentlySelectedSystemTheme, true)); + themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique(m_defaultStyle, m_defaultPalette, true)); auto darkThemeId = addTheme(std::make_unique()); themeDebugLog() << "Loading Built-in Theme:" << darkThemeId; themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique()); @@ -140,7 +142,7 @@ void ThemeManager::initializeWidgets() continue; } #endif - themeDebugLog() << "Loading System Theme:" << addTheme(std::make_unique(st)); + themeDebugLog() << "Loading System Theme:" << addTheme(std::make_unique(st, m_defaultPalette, false)); } // TODO: need some way to differentiate same name themes in different subdirectories @@ -260,7 +262,7 @@ void ThemeManager::applyCurrentlySelectedTheme(bool initial) themeDebugLog() << "<> Icon theme set."; auto applicationTheme = settings->get("ApplicationTheme").toString(); if (applicationTheme == "") { - applicationTheme = m_currentlySelectedSystemTheme; + applicationTheme = m_defaultStyle; } setApplicationTheme(applicationTheme, initial); themeDebugLog() << "<> Application theme set."; diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index 8bbcd34a9..c7e32bc8c 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -66,7 +66,8 @@ class ThemeManager { QDir m_applicationThemeFolder{ "themes" }; QDir m_catPacksFolder{ "catpacks" }; std::map> m_catPacks; - QString m_currentlySelectedSystemTheme; + QString m_defaultStyle; + QPalette m_defaultPalette; LogColors m_logColors; void initializeThemes(); From 96414d715376a3554e9ec93665a10fe3915660ed Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 25 Aug 2024 00:22:51 +0000 Subject: [PATCH 148/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/c3aa7b8938b17aebd2deecf7be0636000d62a2b9?narHash=sha256-med8%2B5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c%3D' (2024-08-14) → 'github:NixOS/nixpkgs/c374d94f1536013ca8e92341b540eba4c22f9c62?narHash=sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh%2BaRKoCdaAv5fiO0%3D' (2024-08-21) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 3210dc4e2..58ae840c2 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1723637854, - "narHash": "sha256-med8+5DSWa2UnOqtdICndjDAEjxr5D7zaIiK4pn0Q7c=", + "lastModified": 1724224976, + "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c3aa7b8938b17aebd2deecf7be0636000d62a2b9", + "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62", "type": "github" }, "original": { From 5f874330d50cd497decc5ca708d539de9df6b616 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sat, 24 Aug 2024 20:24:35 -0700 Subject: [PATCH 149/616] security(modrinth) reorder hash algo priority, prefer stronger hashes. Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .../modrinth/ModrinthInstanceCreationTask.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index c0806a638..bf224412e 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -348,14 +348,14 @@ bool ModrinthCreationTask::parseManifest(const QString& index_path, QJsonObject hashes = Json::requireObject(modInfo, "hashes"); QString hash; QCryptographicHash::Algorithm hashAlgorithm; - hash = Json::ensureString(hashes, "sha1"); - hashAlgorithm = QCryptographicHash::Sha1; + hash = Json::ensureString(hashes, "sha512"); + hashAlgorithm = QCryptographicHash::Sha512; if (hash.isEmpty()) { - hash = Json::ensureString(hashes, "sha512"); - hashAlgorithm = QCryptographicHash::Sha512; + hash = Json::ensureString(hashes, "sha256"); + hashAlgorithm = QCryptographicHash::Sha256; if (hash.isEmpty()) { - hash = Json::ensureString(hashes, "sha256"); - hashAlgorithm = QCryptographicHash::Sha256; + hash = Json::ensureString(hashes, "sha1"); + hashAlgorithm = QCryptographicHash::Sha1; if (hash.isEmpty()) { throw JSONValidationError("No hash found for: " + file.path); } From ff9fa6aa4fa912690cc30c0065dca872450cb033 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sun, 25 Aug 2024 11:45:45 +0100 Subject: [PATCH 150/616] Stop accepting malformed hashes object Signed-off-by: TheKodeToad --- .../modrinth/ModrinthInstanceCreationTask.cpp | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index bf224412e..517864790 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -346,23 +346,8 @@ bool ModrinthCreationTask::parseManifest(const QString& index_path, } QJsonObject hashes = Json::requireObject(modInfo, "hashes"); - QString hash; - QCryptographicHash::Algorithm hashAlgorithm; - hash = Json::ensureString(hashes, "sha512"); - hashAlgorithm = QCryptographicHash::Sha512; - if (hash.isEmpty()) { - hash = Json::ensureString(hashes, "sha256"); - hashAlgorithm = QCryptographicHash::Sha256; - if (hash.isEmpty()) { - hash = Json::ensureString(hashes, "sha1"); - hashAlgorithm = QCryptographicHash::Sha1; - if (hash.isEmpty()) { - throw JSONValidationError("No hash found for: " + file.path); - } - } - } - file.hash = QByteArray::fromHex(hash.toLatin1()); - file.hashAlgorithm = hashAlgorithm; + file.hash = QByteArray::fromHex(Json::requireString(hashes, "sha512").toLatin1()); + file.hashAlgorithm = QCryptographicHash::Sha512; // Do not use requireUrl, which uses StrictMode, instead use QUrl's default TolerantMode // (as Modrinth seems to incorrectly handle spaces) From 43fc9ba932ec65d274b60bafb4d3c3f1d5bf55f0 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sun, 25 Aug 2024 13:05:08 +0100 Subject: [PATCH 151/616] Confirm Truncate -> Truncation Signed-off-by: TheKodeToad --- launcher/ui/GuiUtil.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/GuiUtil.cpp b/launcher/ui/GuiUtil.cpp index 77d4a98e2..ccb4e48b5 100644 --- a/launcher/ui/GuiUtil.cpp +++ b/launcher/ui/GuiUtil.cpp @@ -102,7 +102,7 @@ std::optional GuiUtil::uploadPaste(const QString& name, const QString& if (baseUrl.toString() == "https://api.mclo.gs" && text.count("\n") > MaxMclogsLines) { auto truncateResponse = CustomMessageBox::selectable( - parentWidget, QObject::tr("Confirm Truncate"), + parentWidget, QObject::tr("Confirm Truncation"), QObject::tr("The log has %1 lines, exceeding mclo.gs' limit of %2.\n" "The launcher can keep the first %3 and last %4 lines, trimming the middle.\n\n" "If you choose 'No', mclo.gs will only keep the first %2 lines, cutting off " From 6a12c43c787db4a64748d6c3d03b34981948d7ce Mon Sep 17 00:00:00 2001 From: maskers <97827489+mskrss@users.noreply.github.com> Date: Sun, 25 Aug 2024 16:02:32 +0300 Subject: [PATCH 152/616] fix off by one error Signed-off-by: maskers <97827489+mskrss@users.noreply.github.com> --- launcher/ui/GuiUtil.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/GuiUtil.cpp b/launcher/ui/GuiUtil.cpp index ccb4e48b5..94dd01169 100644 --- a/launcher/ui/GuiUtil.cpp +++ b/launcher/ui/GuiUtil.cpp @@ -68,7 +68,7 @@ QString truncateLogForMclogs(const QString& logContent) "----- Middle portion omitted to fit mclo.gs size limits ----\n" "------------------------------------------------------------\n" "\n\n\n\n\n\n\n\n\n\n"; - truncatedLog += lines.mid(lines.size() - FinalMclogsLines, FinalMclogsLines).join("\n"); + truncatedLog += lines.mid(lines.size() - FinalMclogsLines - 1).join("\n"); return truncatedLog; } return logContent; From d55ebefac38c6fbba77c0cf0dc4c66298dea3a79 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 25 Aug 2024 21:42:40 +0300 Subject: [PATCH 153/616] fix java 64 bit condition Signed-off-by: Trial97 --- launcher/ui/widgets/JavaSettingsWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index bf58bf9f7..81bd22ff1 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -504,7 +504,7 @@ void JavaSettingsWidget::updateThresholds() } else if (observedMaxMemory < observedMinMemory) { iconName = "status-yellow"; m_labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation is smaller than the minimum value")); - } else if (observedMaxMemory > 2048 && m_result.is_64bit) { + } else if (observedMaxMemory > 2048 && !m_result.is_64bit) { iconName = "status-bad"; m_labelMaxMemIcon->setToolTip(tr("You are exceeding the maximum allocation supported by 32-bit installations of Java.")); } else { From 430013737a9e7268b6abb80905e99415e4a06caf Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 26 Aug 2024 00:27:23 +0300 Subject: [PATCH 154/616] add checksum validator Signed-off-by: Trial97 --- launcher/ResourceDownloadTask.cpp | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/launcher/ResourceDownloadTask.cpp b/launcher/ResourceDownloadTask.cpp index a02151ca1..6f5b9a189 100644 --- a/launcher/ResourceDownloadTask.cpp +++ b/launcher/ResourceDownloadTask.cpp @@ -24,7 +24,9 @@ #include "minecraft/mod/ModFolderModel.h" #include "minecraft/mod/ResourceFolderModel.h" +#include "modplatform/helpers/HashUtils.h" #include "net/ApiDownload.h" +#include "net/ChecksumValidator.h" ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion version, @@ -53,7 +55,29 @@ ResourceDownloadTask::ResourceDownloadTask(ModPlatform::IndexedPack::Ptr pack, } } - m_filesNetJob->addNetAction(Net::ApiDownload::makeFile(m_pack_version.downloadUrl, dir.absoluteFilePath(getFilename()))); + auto action = Net::ApiDownload::makeFile(m_pack_version.downloadUrl, dir.absoluteFilePath(getFilename())); + if (!m_pack_version.hash_type.isEmpty() && !m_pack_version.hash.isEmpty()) { + switch (Hashing::algorithmFromString(m_pack_version.hash_type)) { + case Hashing::Algorithm::Md4: + action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Md4, m_pack_version.hash)); + break; + case Hashing::Algorithm::Md5: + action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Md5, m_pack_version.hash)); + break; + case Hashing::Algorithm::Sha1: + action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Sha1, m_pack_version.hash)); + break; + case Hashing::Algorithm::Sha256: + action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Sha256, m_pack_version.hash)); + break; + case Hashing::Algorithm::Sha512: + action->addValidator(new Net::ChecksumValidator(QCryptographicHash::Algorithm::Sha512, m_pack_version.hash)); + break; + default: + break; + } + } + m_filesNetJob->addNetAction(action); connect(m_filesNetJob.get(), &NetJob::succeeded, this, &ResourceDownloadTask::downloadSucceeded); connect(m_filesNetJob.get(), &NetJob::progress, this, &ResourceDownloadTask::downloadProgressChanged); connect(m_filesNetJob.get(), &NetJob::stepProgress, this, &ResourceDownloadTask::propagateStepProgress); From c64b7cd693d10b740706a6424c2caf0d228a4c71 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 26 Aug 2024 09:00:46 +0300 Subject: [PATCH 155/616] fix mangohud detection for absolute path Signed-off-by: Trial97 --- launcher/MangoHud.cpp | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/launcher/MangoHud.cpp b/launcher/MangoHud.cpp index ba16ddc4a..29a7c63d9 100644 --- a/launcher/MangoHud.cpp +++ b/launcher/MangoHud.cpp @@ -108,24 +108,31 @@ QString getLibraryString() if (filePath.isEmpty()) { continue; } + try { + auto conf = Json::requireDocument(filePath, vkLayer); + auto confObject = Json::requireObject(conf, vkLayer); + auto layer = Json::ensureObject(confObject, "layer"); + QString libraryName = Json::ensureString(layer, "library_path"); - auto conf = Json::requireDocument(filePath, vkLayer); - auto confObject = Json::requireObject(conf, vkLayer); - auto layer = Json::ensureObject(confObject, "layer"); - QString libraryName = Json::ensureString(layer, "library_path"); + if (libraryName.isEmpty()) { + continue; + } + if (QFileInfo(libraryName).isAbsolute()) { + return libraryName; + } #ifdef __GLIBC__ - // Check whether mangohud is usable on a glibc based system - if (!libraryName.isEmpty()) { + // Check whether mangohud is usable on a glibc based system QString libraryPath = findLibrary(libraryName); if (!libraryPath.isEmpty()) { return libraryPath; } - } #else - // Without glibc return recorded shared library as-is. - return libraryName; + // Without glibc return recorded shared library as-is. + return libraryName; #endif + } catch (const Exception& e) { + } } return {}; From 034e2a44ad934cd289a116d311ed860e8d4c4023 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 26 Aug 2024 17:43:49 +0300 Subject: [PATCH 156/616] update thresholds each time java result changes Signed-off-by: Trial97 --- launcher/ui/widgets/JavaSettingsWidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 81bd22ff1..8e2d94556 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -468,6 +468,7 @@ void JavaSettingsWidget::checkFinished(const JavaChecker::Result& result) break; } } + updateThresholds(); m_checker.reset(); if (!queuedCheck.isNull()) { checkJavaPath(queuedCheck); From 630df290104879332fc7bce05c1c94e3c583851f Mon Sep 17 00:00:00 2001 From: Edgars Cirulis Date: Mon, 26 Aug 2024 01:34:31 +0300 Subject: [PATCH 157/616] feat: Improve left and right cursor navigation in Instances Signed-off-by: Edgars Cirulis --- launcher/ui/instanceview/InstanceView.cpp | 39 +++++++++++++++++++++-- 1 file changed, 36 insertions(+), 3 deletions(-) diff --git a/launcher/ui/instanceview/InstanceView.cpp b/launcher/ui/instanceview/InstanceView.cpp index ed97de17a..c677f3951 100644 --- a/launcher/ui/instanceview/InstanceView.cpp +++ b/launcher/ui/instanceview/InstanceView.cpp @@ -848,7 +848,7 @@ QRegion InstanceView::visualRegionForSelection(const QItemSelection& selection) return region; } -QModelIndex InstanceView::moveCursor(QAbstractItemView::CursorAction cursorAction, [[maybe_unused]] Qt::KeyboardModifiers modifiers) +QModelIndex InstanceView::moveCursor(QAbstractItemView::CursorAction cursorAction, Qt::KeyboardModifiers modifiers) { auto current = currentIndex(); if (!current.isValid()) { @@ -865,6 +865,7 @@ QModelIndex InstanceView::moveCursor(QAbstractItemView::CursorAction cursorActio if (m_currentCursorColumn < 0) { m_currentCursorColumn = column; } + // Handle different movement actions. switch (cursorAction) { case MoveUp: { if (row == 0) { @@ -925,16 +926,47 @@ QModelIndex InstanceView::moveCursor(QAbstractItemView::CursorAction cursorActio if (column > 0) { m_currentCursorColumn = column - 1; return cat->rows[row][column - 1]; + } else if (row > 0) { + row -= 1; + int newRowSize = cat->rows[row].size(); + m_currentCursorColumn = newRowSize - 1; + return cat->rows[row][m_currentCursorColumn]; + } else { + int prevGroupIndex = group_index - 1; + while (prevGroupIndex >= 0) { + auto prevGroup = m_groups[prevGroupIndex]; + if (prevGroup->collapsed) { + prevGroupIndex--; + continue; + } + int lastRow = prevGroup->numRows() - 1; + int lastCol = prevGroup->rows[lastRow].size() - 1; + m_currentCursorColumn = lastCol; + return prevGroup->rows[lastRow][lastCol]; + } } - // TODO: moving to previous line return current; } case MoveRight: { if (column < cat->rows[row].size() - 1) { m_currentCursorColumn = column + 1; return cat->rows[row][column + 1]; + } else if (row < cat->rows.size() - 1) { + row += 1; + m_currentCursorColumn = 0; + return cat->rows[row][m_currentCursorColumn]; + } else { + int nextGroupIndex = group_index + 1; + while (nextGroupIndex < m_groups.size()) { + auto nextGroup = m_groups[nextGroupIndex]; + if (nextGroup->collapsed) { + nextGroupIndex++; + continue; + } + m_currentCursorColumn = 0; + return nextGroup->rows[0][0]; + } } - // TODO: moving to next line return current; } case MoveHome: { @@ -947,6 +979,7 @@ QModelIndex InstanceView::moveCursor(QAbstractItemView::CursorAction cursorActio return cat->rows[row][last]; } default: + // For unsupported cursor actions, return the current index. break; } return current; From 4ea7132bdfdfc53690ababf66f1123c7e0217595 Mon Sep 17 00:00:00 2001 From: Kurumi78 <30587387+Kurumi78@users.noreply.github.com> Date: Fri, 30 Aug 2024 02:08:07 -0500 Subject: [PATCH 158/616] Add webp validIconExtensions Add webp to list of valid file extensions for Icons Signed-off-by: Kurumi78 <30587387+Kurumi78@users.noreply.github.com> --- launcher/icons/IconUtils.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/icons/IconUtils.cpp b/launcher/icons/IconUtils.cpp index 6825dd6da..87e948729 100644 --- a/launcher/icons/IconUtils.cpp +++ b/launcher/icons/IconUtils.cpp @@ -39,7 +39,7 @@ #include "FileSystem.h" namespace { -static const QStringList validIconExtensions = { { "svg", "png", "ico", "gif", "jpg", "jpeg" } }; +static const QStringList validIconExtensions = { { "svg", "png", "ico", "gif", "jpg", "jpeg", "webp" } }; } namespace IconUtils { From 166207753c85d7295208989cd446399f5e833c01 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 5 Sep 2024 09:36:45 +0300 Subject: [PATCH 159/616] ensure that the shortcut destination exists Signed-off-by: Trial97 --- launcher/FileSystem.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp index b5c2c95cf..7f38cff04 100644 --- a/launcher/FileSystem.cpp +++ b/launcher/FileSystem.cpp @@ -921,6 +921,10 @@ bool createShortcut(QString destination, QString target, QStringList args, QStri if (destination.isEmpty()) { destination = PathCombine(getDesktopDir(), RemoveInvalidFilenameChars(name)); } + if (!ensureFilePathExists(destination)) { + qWarning() << "Destination path can't be created!"; + return false; + } #if defined(Q_OS_MACOS) // Create the Application QDir applicationDirectory = From c5592a446ae1f63743d1d777eb5843e25ad376a1 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 6 Sep 2024 21:47:35 +0300 Subject: [PATCH 160/616] Remove all the slowdown code from CocurrentTask Signed-off-by: Trial97 --- launcher/tasks/ConcurrentTask.cpp | 64 ++++--------------------------- launcher/tasks/ConcurrentTask.h | 10 ----- 2 files changed, 7 insertions(+), 67 deletions(-) diff --git a/launcher/tasks/ConcurrentTask.cpp b/launcher/tasks/ConcurrentTask.cpp index 6f4a94e7f..f2ee40c31 100644 --- a/launcher/tasks/ConcurrentTask.cpp +++ b/launcher/tasks/ConcurrentTask.cpp @@ -38,8 +38,7 @@ #include #include "tasks/Task.h" -ConcurrentTask::ConcurrentTask(QObject* parent, QString task_name, int max_concurrent) - : Task(parent), m_name(task_name), m_total_max_size(max_concurrent) +ConcurrentTask::ConcurrentTask(QObject* parent, QString task_name, int max_concurrent) : Task(parent), m_total_max_size(max_concurrent) { setObjectName(task_name); } @@ -104,9 +103,9 @@ void ConcurrentTask::clear() m_done.clear(); m_failed.clear(); m_queue.clear(); + m_task_progress.clear(); m_progress = 0; - m_stepProgress = 0; } void ConcurrentTask::executeNextSubTask() @@ -139,7 +138,7 @@ void ConcurrentTask::startSubTask(Task::Ptr next) connect(next.get(), &Task::status, this, [this, next](QString msg) { subTaskStatus(next, msg); }); connect(next.get(), &Task::details, this, [this, next](QString msg) { subTaskDetails(next, msg); }); - connect(next.get(), &Task::stepProgress, this, [this, next](TaskStepProgress const& tp) { subTaskStepProgress(next, tp); }); + connect(next.get(), &Task::stepProgress, this, &ConcurrentTask::stepProgress); connect(next.get(), &Task::progress, this, [this, next](qint64 current, qint64 total) { subTaskProgress(next, current, total); }); @@ -149,7 +148,6 @@ void ConcurrentTask::startSubTask(Task::Ptr next) m_task_progress.insert(next->getUid(), task_progress); updateState(); - updateStepProgress(*task_progress.get(), Operation::ADDED); QMetaObject::invokeMethod(next.get(), &Task::start, Qt::QueuedConnection); } @@ -161,14 +159,14 @@ void ConcurrentTask::subTaskFinished(Task::Ptr task, TaskStepState state) m_doing.remove(task.get()); - auto task_progress = m_task_progress.value(task->getUid()); - task_progress->state = state; + auto task_progress = *m_task_progress.value(task->getUid()); + task_progress.state = state; + m_task_progress.remove(task->getUid()); disconnect(task.get(), 0, this, 0); - emit stepProgress(*task_progress); + emit stepProgress(task_progress); updateState(); - updateStepProgress(*task_progress, Operation::REMOVED); QMetaObject::invokeMethod(this, &ConcurrentTask::executeNextSubTask, Qt::QueuedConnection); } @@ -215,7 +213,6 @@ void ConcurrentTask::subTaskProgress(Task::Ptr task, qint64 current, qint64 tota task_progress->update(current, total); emit stepProgress(*task_progress); - updateStepProgress(*task_progress, Operation::CHANGED); updateState(); if (totalSize() == 1) { @@ -223,52 +220,6 @@ void ConcurrentTask::subTaskProgress(Task::Ptr task, qint64 current, qint64 tota } } -void ConcurrentTask::subTaskStepProgress(Task::Ptr task, TaskStepProgress const& task_progress) -{ - Operation op = Operation::ADDED; - - if (!m_task_progress.contains(task_progress.uid)) { - m_task_progress.insert(task_progress.uid, std::make_shared(task_progress)); - op = Operation::ADDED; - emit stepProgress(task_progress); - updateStepProgress(task_progress, op); - } else { - auto tp = m_task_progress.value(task_progress.uid); - - tp->old_current = tp->current; - tp->old_total = tp->total; - - tp->current = task_progress.current; - tp->total = task_progress.total; - tp->status = task_progress.status; - tp->details = task_progress.details; - - op = Operation::CHANGED; - emit stepProgress(*tp.get()); - updateStepProgress(*tp.get(), op); - } -} - -void ConcurrentTask::updateStepProgress(TaskStepProgress const& changed_progress, Operation op) -{ - switch (op) { - case Operation::ADDED: - m_stepProgress += changed_progress.current; - m_stepTotalProgress += changed_progress.total; - break; - case Operation::REMOVED: - m_stepProgress -= changed_progress.current; - m_stepTotalProgress -= changed_progress.total; - break; - case Operation::CHANGED: - m_stepProgress -= changed_progress.old_current; - m_stepTotalProgress -= changed_progress.old_total; - m_stepProgress += changed_progress.current; - m_stepTotalProgress += changed_progress.total; - break; - } -} - void ConcurrentTask::updateState() { if (totalSize() > 1) { @@ -276,7 +227,6 @@ void ConcurrentTask::updateState() setStatus(tr("Executing %1 task(s) (%2 out of %3 are done)") .arg(QString::number(m_doing.count()), QString::number(m_done.count()), QString::number(totalSize()))); } else { - setProgress(m_stepProgress, m_stepTotalProgress); QString status = tr("Please wait..."); if (m_queue.size() > 0) { status = tr("Waiting for a task to start..."); diff --git a/launcher/tasks/ConcurrentTask.h b/launcher/tasks/ConcurrentTask.h index 07ea58575..0d6709940 100644 --- a/launcher/tasks/ConcurrentTask.h +++ b/launcher/tasks/ConcurrentTask.h @@ -80,23 +80,16 @@ class ConcurrentTask : public Task { void subTaskStatus(Task::Ptr task, const QString& msg); void subTaskDetails(Task::Ptr task, const QString& msg); void subTaskProgress(Task::Ptr task, qint64 current, qint64 total); - void subTaskStepProgress(Task::Ptr task, TaskStepProgress const& task_step_progress); protected: // NOTE: This is not thread-safe. [[nodiscard]] unsigned int totalSize() const { return static_cast(m_queue.size() + m_doing.size() + m_done.size()); } - enum class Operation { ADDED, REMOVED, CHANGED }; - void updateStepProgress(TaskStepProgress const& changed_progress, Operation); - virtual void updateState(); void startSubTask(Task::Ptr task); protected: - QString m_name; - QString m_step_status; - QQueue m_queue; QHash m_doing; @@ -107,7 +100,4 @@ class ConcurrentTask : public Task { QHash> m_task_progress; int m_total_max_size; - - qint64 m_stepProgress = 0; - qint64 m_stepTotalProgress = 100; }; From c2a2e95183977bee5aebdca57fc6e342d7b9c9ed Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sat, 7 Sep 2024 21:35:01 -0700 Subject: [PATCH 161/616] fix: Forge and neoforge conflict with quilt, not fabric twice Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/Component.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/minecraft/Component.cpp b/launcher/minecraft/Component.cpp index aeb8a398f..1073ef324 100644 --- a/launcher/minecraft/Component.cpp +++ b/launcher/minecraft/Component.cpp @@ -50,8 +50,8 @@ #include const QMap Component::KNOWN_MODLOADERS = { - { "net.neoforged", { ModPlatform::NeoForge, { "net.minecraftforge", "net.fabricmc.fabric-loader", "net.fabricmc.fabric-loader" } } }, - { "net.minecraftforge", { ModPlatform::Forge, { "net.neoforged", "net.fabricmc.fabric-loader", "net.fabricmc.fabric-loader" } } }, + { "net.neoforged", { ModPlatform::NeoForge, { "net.minecraftforge", "net.fabricmc.fabric-loader", "org.quiltmc.quilt-loader" } } }, + { "net.minecraftforge", { ModPlatform::Forge, { "net.neoforged", "net.fabricmc.fabric-loader", "org.quiltmc.quilt-loader" } } }, { "net.fabricmc.fabric-loader", { ModPlatform::Fabric, { "net.minecraftforge", "net.neoforged", "org.quiltmc.quilt-loader" } } }, { "org.quiltmc.quilt-loader", { ModPlatform::Quilt, { "net.minecraftforge", "net.neoforged", "net.fabricmc.fabric-loader" } } }, { "com.mumfrey.liteloader", { ModPlatform::LiteLoader, {} } } From 14fb54afd9673eebf43fad454db966e740c2c8e3 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 8 Sep 2024 01:00:59 +0300 Subject: [PATCH 162/616] Fix launch when no java is loaded Signed-off-by: Trial97 --- launcher/BaseInstance.h | 4 +- launcher/CMakeLists.txt | 6 +- launcher/NullInstance.h | 2 +- launcher/RuntimeContext.h | 23 +----- launcher/launch/LaunchStep.cpp | 3 +- launcher/launch/LaunchStep.h | 7 +- launcher/launch/LaunchTask.cpp | 1 - launcher/launch/LaunchTask.h | 3 +- launcher/launch/TaskStepWrapper.cpp | 65 +++++++++++++++++ .../{steps/Update.h => TaskStepWrapper.h} | 11 +-- launcher/launch/steps/CheckJava.cpp | 3 + launcher/launch/steps/CheckJava.h | 2 +- launcher/launch/steps/QuitAfterGameStop.h | 2 +- launcher/launch/steps/Update.cpp | 73 ------------------- launcher/minecraft/LaunchProfile.cpp | 1 + launcher/minecraft/MinecraftInstance.cpp | 54 ++++++++------ launcher/minecraft/MinecraftInstance.h | 4 +- launcher/minecraft/MinecraftLoadAndCheck.cpp | 35 ++++----- launcher/minecraft/MinecraftLoadAndCheck.h | 22 ++---- launcher/minecraft/MinecraftUpdate.cpp | 63 ---------------- launcher/minecraft/MinecraftUpdate.h | 33 --------- launcher/minecraft/PackProfile.h | 6 +- launcher/minecraft/launch/AutoInstallJava.h | 1 - launcher/minecraft/launch/ClaimAccount.h | 2 +- launcher/minecraft/update/AssetUpdateTask.cpp | 3 +- launcher/minecraft/update/AssetUpdateTask.h | 2 +- launcher/minecraft/update/FMLLibrariesTask.h | 2 +- launcher/minecraft/update/FoldersTask.cpp | 2 +- launcher/minecraft/update/FoldersTask.h | 2 +- launcher/minecraft/update/LibrariesTask.h | 2 +- launcher/ui/pages/instance/VersionPage.cpp | 14 +++- 31 files changed, 163 insertions(+), 290 deletions(-) create mode 100644 launcher/launch/TaskStepWrapper.cpp rename launcher/launch/{steps/Update.h => TaskStepWrapper.h} (73%) delete mode 100644 launcher/launch/steps/Update.cpp delete mode 100644 launcher/minecraft/MinecraftUpdate.cpp delete mode 100644 launcher/minecraft/MinecraftUpdate.h diff --git a/launcher/BaseInstance.h b/launcher/BaseInstance.h index 8c80331bc..2be28d1ec 100644 --- a/launcher/BaseInstance.h +++ b/launcher/BaseInstance.h @@ -181,7 +181,7 @@ class BaseInstance : public QObject, public std::enable_shared_from_this createUpdateTask() = 0; /// returns a valid launcher (task container) virtual shared_qobject_ptr createLaunchTask(AuthSessionPtr account, MinecraftTarget::Ptr targetToJoin) = 0; @@ -215,7 +215,7 @@ class BaseInstance : public QObject, public std::enable_shared_from_this traits() const override { return {}; }; QString instanceConfigFolder() const override { return instanceRoot(); }; shared_qobject_ptr createLaunchTask(AuthSessionPtr, MinecraftTarget::Ptr) override { return nullptr; } - shared_qobject_ptr createUpdateTask([[maybe_unused]] Net::Mode mode) override { return nullptr; } + QList createUpdateTask() override { return {}; } QProcessEnvironment createEnvironment() override { return QProcessEnvironment(); } QProcessEnvironment createLaunchEnvironment() override { return QProcessEnvironment(); } QMap getVariables() override { return QMap(); } diff --git a/launcher/RuntimeContext.h b/launcher/RuntimeContext.h index c57140d28..85304a5bc 100644 --- a/launcher/RuntimeContext.h +++ b/launcher/RuntimeContext.h @@ -20,13 +20,13 @@ #include #include +#include "SysInfo.h" #include "settings/SettingsObject.h" struct RuntimeContext { QString javaArchitecture; QString javaRealArchitecture; - QString javaPath; - QString system; + QString system = SysInfo::currentSystem(); QString mappedJavaRealArchitecture() const { @@ -45,8 +45,6 @@ struct RuntimeContext { { javaArchitecture = instanceSettings->get("JavaArchitecture").toString(); javaRealArchitecture = instanceSettings->get("JavaRealArchitecture").toString(); - javaPath = instanceSettings->get("JavaPath").toString(); - system = currentSystem(); } QString getClassifier() const { return system + "-" + mappedJavaRealArchitecture(); } @@ -68,21 +66,4 @@ struct RuntimeContext { return x; } - - static QString currentSystem() - { -#if defined(Q_OS_LINUX) - return "linux"; -#elif defined(Q_OS_MACOS) - return "osx"; -#elif defined(Q_OS_WINDOWS) - return "windows"; -#elif defined(Q_OS_FREEBSD) - return "freebsd"; -#elif defined(Q_OS_OPENBSD) - return "openbsd"; -#else - return "unknown"; -#endif - } }; diff --git a/launcher/launch/LaunchStep.cpp b/launcher/launch/LaunchStep.cpp index ebc534617..f3e9dfce0 100644 --- a/launcher/launch/LaunchStep.cpp +++ b/launcher/launch/LaunchStep.cpp @@ -16,9 +16,8 @@ #include "LaunchStep.h" #include "LaunchTask.h" -void LaunchStep::bind(LaunchTask* parent) +LaunchStep::LaunchStep(LaunchTask* parent) : Task(parent), m_parent(parent) { - m_parent = parent; connect(this, &LaunchStep::readyForLaunch, parent, &LaunchTask::onReadyForLaunch); connect(this, &LaunchStep::logLine, parent, &LaunchTask::onLogLine); connect(this, &LaunchStep::logLines, parent, &LaunchTask::onLogLines); diff --git a/launcher/launch/LaunchStep.h b/launcher/launch/LaunchStep.h index 6a28afb1f..d49d7545b 100644 --- a/launcher/launch/LaunchStep.h +++ b/launcher/launch/LaunchStep.h @@ -24,11 +24,8 @@ class LaunchTask; class LaunchStep : public Task { Q_OBJECT public: /* methods */ - explicit LaunchStep(LaunchTask* parent) : Task(nullptr), m_parent(parent) { bind(parent); }; - virtual ~LaunchStep() {}; - - private: /* methods */ - void bind(LaunchTask* parent); + explicit LaunchStep(LaunchTask* parent); + virtual ~LaunchStep() = default; signals: void logLines(QStringList lines, MessageLevel::Enum level); diff --git a/launcher/launch/LaunchTask.cpp b/launcher/launch/LaunchTask.cpp index 06a32bd28..4e4f5ead4 100644 --- a/launcher/launch/LaunchTask.cpp +++ b/launcher/launch/LaunchTask.cpp @@ -44,7 +44,6 @@ #include #include #include "MessageLevel.h" -#include "java/JavaChecker.h" #include "tasks/Task.h" void LaunchTask::init() diff --git a/launcher/launch/LaunchTask.h b/launcher/launch/LaunchTask.h index ae24b9a26..2fd8c78c7 100644 --- a/launcher/launch/LaunchTask.h +++ b/launcher/launch/LaunchTask.h @@ -41,7 +41,6 @@ #include "BaseInstance.h" #include "LaunchStep.h" #include "LogModel.h" -#include "LoggedProcess.h" #include "MessageLevel.h" class LaunchTask : public Task { @@ -55,7 +54,7 @@ class LaunchTask : public Task { public: /* methods */ static shared_qobject_ptr create(InstancePtr inst); - virtual ~LaunchTask() {}; + virtual ~LaunchTask() = default; void appendStep(shared_qobject_ptr step); void prependStep(shared_qobject_ptr step); diff --git a/launcher/launch/TaskStepWrapper.cpp b/launcher/launch/TaskStepWrapper.cpp new file mode 100644 index 000000000..136057620 --- /dev/null +++ b/launcher/launch/TaskStepWrapper.cpp @@ -0,0 +1,65 @@ +/* Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "TaskStepWrapper.h" +#include "tasks/Task.h" + +void TaskStepWrapper::executeTask() +{ + if (m_state == Task::State::AbortedByUser) { + emitFailed(tr("Task aborted.")); + return; + } + connect(m_task.get(), &Task::finished, this, &TaskStepWrapper::updateFinished); + connect(m_task.get(), &Task::progress, this, &TaskStepWrapper::setProgress); + connect(m_task.get(), &Task::stepProgress, this, &TaskStepWrapper::propagateStepProgress); + connect(m_task.get(), &Task::status, this, &TaskStepWrapper::setStatus); + connect(m_task.get(), &Task::details, this, &TaskStepWrapper::setDetails); + emit progressReportingRequest(); +} + +void TaskStepWrapper::proceed() +{ + m_task->start(); +} + +void TaskStepWrapper::updateFinished() +{ + if (m_task->wasSuccessful()) { + m_task.reset(); + emitSucceeded(); + } else { + QString reason = tr("Instance update failed because: %1\n\n").arg(m_task->failReason()); + m_task.reset(); + emit logLine(reason, MessageLevel::Fatal); + emitFailed(reason); + } +} + +bool TaskStepWrapper::canAbort() const +{ + if (m_task) { + return m_task->canAbort(); + } + return true; +} + +bool TaskStepWrapper::abort() +{ + if (m_task && m_task->canAbort()) { + return m_task->abort(); + } + return Task::abort(); +} diff --git a/launcher/launch/steps/Update.h b/launcher/launch/TaskStepWrapper.h similarity index 73% rename from launcher/launch/steps/Update.h rename to launcher/launch/TaskStepWrapper.h index 878a43e7e..aec1b7037 100644 --- a/launcher/launch/steps/Update.h +++ b/launcher/launch/TaskStepWrapper.h @@ -21,12 +21,11 @@ #include #include -// FIXME: stupid. should be defined by the instance type? or even completely abstracted away... -class Update : public LaunchStep { +class TaskStepWrapper : public LaunchStep { Q_OBJECT public: - explicit Update(LaunchTask* parent, Net::Mode mode) : LaunchStep(parent), m_mode(mode) {}; - virtual ~Update() {}; + explicit TaskStepWrapper(LaunchTask* parent, Task::Ptr task) : LaunchStep(parent), m_task(task) {}; + virtual ~TaskStepWrapper() = default; void executeTask() override; bool canAbort() const override; @@ -38,7 +37,5 @@ class Update : public LaunchStep { void updateFinished(); private: - Task::Ptr m_updateTask; - bool m_aborted = false; - Net::Mode m_mode = Net::Mode::Offline; + Task::Ptr m_task; }; diff --git a/launcher/launch/steps/CheckJava.cpp b/launcher/launch/steps/CheckJava.cpp index 99ff62b67..55d13b58c 100644 --- a/launcher/launch/steps/CheckJava.cpp +++ b/launcher/launch/steps/CheckJava.cpp @@ -106,6 +106,7 @@ void CheckJava::executeTask() auto vendorString = instance->settings()->get("JavaVendor").toString(); printJavaInfo(verString, archString, realArchString, vendorString); } + m_parent->instance()->updateRuntimeContext(); emitSucceeded(); } @@ -124,6 +125,7 @@ void CheckJava::checkJavaFinished(const JavaChecker::Result& result) emit logLine(QString("Java checker returned some invalid data we don't understand:"), MessageLevel::Error); emit logLines(result.outLog.split('\n'), MessageLevel::Warning); emit logLine("\nMinecraft might not start properly.", MessageLevel::Launcher); + m_parent->instance()->updateRuntimeContext(); emitSucceeded(); return; } @@ -135,6 +137,7 @@ void CheckJava::checkJavaFinished(const JavaChecker::Result& result) instance->settings()->set("JavaRealArchitecture", result.realPlatform); instance->settings()->set("JavaVendor", result.javaVendor); instance->settings()->set("JavaSignature", m_javaSignature); + m_parent->instance()->updateRuntimeContext(); emitSucceeded(); return; } diff --git a/launcher/launch/steps/CheckJava.h b/launcher/launch/steps/CheckJava.h index 7bb1ceb7e..1c59b0053 100644 --- a/launcher/launch/steps/CheckJava.h +++ b/launcher/launch/steps/CheckJava.h @@ -23,7 +23,7 @@ class CheckJava : public LaunchStep { Q_OBJECT public: explicit CheckJava(LaunchTask* parent) : LaunchStep(parent) {}; - virtual ~CheckJava() {}; + virtual ~CheckJava() = default; virtual void executeTask(); virtual bool canAbort() const { return false; } diff --git a/launcher/launch/steps/QuitAfterGameStop.h b/launcher/launch/steps/QuitAfterGameStop.h index d4324cce6..19ca59632 100644 --- a/launcher/launch/steps/QuitAfterGameStop.h +++ b/launcher/launch/steps/QuitAfterGameStop.h @@ -24,7 +24,7 @@ class QuitAfterGameStop : public LaunchStep { Q_OBJECT public: explicit QuitAfterGameStop(LaunchTask* parent) : LaunchStep(parent) {}; - virtual ~QuitAfterGameStop() {}; + virtual ~QuitAfterGameStop() = default; virtual void executeTask(); virtual bool canAbort() const { return false; } diff --git a/launcher/launch/steps/Update.cpp b/launcher/launch/steps/Update.cpp deleted file mode 100644 index f23c0bb4b..000000000 --- a/launcher/launch/steps/Update.cpp +++ /dev/null @@ -1,73 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "Update.h" -#include - -void Update::executeTask() -{ - if (m_aborted) { - emitFailed(tr("Task aborted.")); - return; - } - m_updateTask.reset(m_parent->instance()->createUpdateTask(m_mode)); - if (m_updateTask) { - connect(m_updateTask.get(), &Task::finished, this, &Update::updateFinished); - connect(m_updateTask.get(), &Task::progress, this, &Update::setProgress); - connect(m_updateTask.get(), &Task::stepProgress, this, &Update::propagateStepProgress); - connect(m_updateTask.get(), &Task::status, this, &Update::setStatus); - connect(m_updateTask.get(), &Task::details, this, &Update::setDetails); - emit progressReportingRequest(); - return; - } - emitSucceeded(); -} - -void Update::proceed() -{ - m_updateTask->start(); -} - -void Update::updateFinished() -{ - if (m_updateTask->wasSuccessful()) { - m_updateTask.reset(); - emitSucceeded(); - } else { - QString reason = tr("Instance update failed because: %1\n\n").arg(m_updateTask->failReason()); - m_updateTask.reset(); - emit logLine(reason, MessageLevel::Fatal); - emitFailed(reason); - } -} - -bool Update::canAbort() const -{ - if (m_updateTask) { - return m_updateTask->canAbort(); - } - return true; -} - -bool Update::abort() -{ - m_aborted = true; - if (m_updateTask) { - if (m_updateTask->canAbort()) { - return m_updateTask->abort(); - } - } - return true; -} diff --git a/launcher/minecraft/LaunchProfile.cpp b/launcher/minecraft/LaunchProfile.cpp index 468798850..c11a0f915 100644 --- a/launcher/minecraft/LaunchProfile.cpp +++ b/launcher/minecraft/LaunchProfile.cpp @@ -164,6 +164,7 @@ void LaunchProfile::applyCompatibleJavaMajors(QList& javaMajor) { m_compatibleJavaMajors.append(javaMajor); } + void LaunchProfile::applyCompatibleJavaName(QString javaName) { if (!javaName.isEmpty()) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index d861056bf..c94f3f234 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -43,6 +43,9 @@ #include "minecraft/launch/CreateGameFolders.h" #include "minecraft/launch/ExtractNatives.h" #include "minecraft/launch/PrintInstanceInfo.h" +#include "minecraft/update/AssetUpdateTask.h" +#include "minecraft/update/FMLLibrariesTask.h" +#include "minecraft/update/LibrariesTask.h" #include "settings/Setting.h" #include "settings/SettingsObject.h" @@ -53,13 +56,13 @@ #include "pathmatcher/RegexpMatcher.h" #include "launch/LaunchTask.h" +#include "launch/TaskStepWrapper.h" #include "launch/steps/CheckJava.h" #include "launch/steps/LookupServerAddress.h" #include "launch/steps/PostLaunchCommand.h" #include "launch/steps/PreLaunchCommand.h" #include "launch/steps/QuitAfterGameStop.h" #include "launch/steps/TextPrint.h" -#include "launch/steps/Update.h" #include "minecraft/launch/ClaimAccount.h" #include "minecraft/launch/LauncherPartLaunch.h" @@ -70,9 +73,6 @@ #include "java/JavaUtils.h" -#include "meta/Index.h" -#include "meta/VersionList.h" - #include "icons/IconList.h" #include "mod/ModFolderModel.h" @@ -84,7 +84,6 @@ #include "AssetsUtils.h" #include "MinecraftLoadAndCheck.h" -#include "MinecraftUpdate.h" #include "PackProfile.h" #include "minecraft/gameoptions/GameOptions.h" #include "minecraft/update/FoldersTask.h" @@ -218,6 +217,7 @@ void MinecraftInstance::loadSpecificSettings() void MinecraftInstance::updateRuntimeContext() { m_runtimeContext.updateFromInstanceSettings(m_settings); + m_components->invalidateLaunchProfile(); } QString MinecraftInstance::typeName() const @@ -1030,18 +1030,18 @@ QString MinecraftInstance::getStatusbarDescription() return description; } -Task::Ptr MinecraftInstance::createUpdateTask(Net::Mode mode) +QList MinecraftInstance::createUpdateTask() { - updateRuntimeContext(); - switch (mode) { - case Net::Mode::Offline: { - return Task::Ptr(new MinecraftLoadAndCheck(this)); - } - case Net::Mode::Online: { - return Task::Ptr(new MinecraftUpdate(this)); - } - } - return nullptr; + return { + // create folders + makeShared(this), + // libraries download + makeShared(this), + // FML libraries download and copy into the instance + makeShared(this), + // assets update + makeShared(this), + }; } shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) @@ -1090,14 +1090,10 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(step); } - // if we aren't in offline mode,. - if (session->status != AuthSession::PlayableOffline) { - if (!session->demo) { - process->appendStep(makeShared(pptr, session)); - } - process->appendStep(makeShared(pptr, Net::Mode::Online)); - } else { - process->appendStep(makeShared(pptr, Net::Mode::Offline)); + // load meta + { + auto mode = session->status != AuthSession::PlayableOffline ? Net::Mode::Online : Net::Mode::Offline; + process->appendStep(makeShared(pptr, makeShared(this, mode, pptr))); } // check java @@ -1106,6 +1102,16 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(makeShared(pptr)); } + // if we aren't in offline mode,. + if (session->status != AuthSession::PlayableOffline) { + if (!session->demo) { + process->appendStep(makeShared(pptr, session)); + } + for (auto t : createUpdateTask()) { + process->appendStep(makeShared(pptr, t)); + } + } + // if there are any jar mods { process->appendStep(makeShared(pptr)); diff --git a/launcher/minecraft/MinecraftInstance.h b/launcher/minecraft/MinecraftInstance.h index ad2cda186..75e97ae45 100644 --- a/launcher/minecraft/MinecraftInstance.h +++ b/launcher/minecraft/MinecraftInstance.h @@ -104,7 +104,7 @@ class MinecraftInstance : public BaseInstance { /** Returns whether the instance, with its version, has support for demo mode. */ [[nodiscard]] bool supportsDemo() const; - void updateRuntimeContext(); + void updateRuntimeContext() override; ////// Profile management ////// std::shared_ptr getPackProfile() const; @@ -120,7 +120,7 @@ class MinecraftInstance : public BaseInstance { std::shared_ptr gameOptionsModel(); ////// Launch stuff ////// - Task::Ptr createUpdateTask(Net::Mode mode) override; + QList createUpdateTask() override; shared_qobject_ptr createLaunchTask(AuthSessionPtr account, MinecraftTarget::Ptr targetToJoin) override; QStringList extraArguments() override; QStringList verboseDescription(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) override; diff --git a/launcher/minecraft/MinecraftLoadAndCheck.cpp b/launcher/minecraft/MinecraftLoadAndCheck.cpp index 818e90cfc..655894d2a 100644 --- a/launcher/minecraft/MinecraftLoadAndCheck.cpp +++ b/launcher/minecraft/MinecraftLoadAndCheck.cpp @@ -2,41 +2,42 @@ #include "MinecraftInstance.h" #include "PackProfile.h" -MinecraftLoadAndCheck::MinecraftLoadAndCheck(MinecraftInstance* inst, QObject* parent) : Task(parent), m_inst(inst) {} +MinecraftLoadAndCheck::MinecraftLoadAndCheck(MinecraftInstance* inst, Net::Mode netmode, QObject* parent) + : Task(parent), m_inst(inst), m_netmode(netmode) +{} void MinecraftLoadAndCheck::executeTask() { // add offline metadata load task auto components = m_inst->getPackProfile(); - components->reload(Net::Mode::Offline); + components->reload(m_netmode); m_task = components->getCurrentTask(); if (!m_task) { emitSucceeded(); return; } - connect(m_task.get(), &Task::succeeded, this, &MinecraftLoadAndCheck::subtaskSucceeded); - connect(m_task.get(), &Task::failed, this, &MinecraftLoadAndCheck::subtaskFailed); - connect(m_task.get(), &Task::aborted, this, [this] { subtaskFailed(tr("Aborted")); }); - connect(m_task.get(), &Task::progress, this, &MinecraftLoadAndCheck::progress); + connect(m_task.get(), &Task::succeeded, this, &MinecraftLoadAndCheck::emitSucceeded); + connect(m_task.get(), &Task::failed, this, &MinecraftLoadAndCheck::emitFailed); + connect(m_task.get(), &Task::aborted, this, [this] { emitFailed(tr("Aborted")); }); + connect(m_task.get(), &Task::progress, this, &MinecraftLoadAndCheck::setProgress); connect(m_task.get(), &Task::stepProgress, this, &MinecraftLoadAndCheck::propagateStepProgress); connect(m_task.get(), &Task::status, this, &MinecraftLoadAndCheck::setStatus); + connect(m_task.get(), &Task::details, this, &MinecraftLoadAndCheck::setDetails); } -void MinecraftLoadAndCheck::subtaskSucceeded() +bool MinecraftLoadAndCheck::canAbort() const { - if (isFinished()) { - qCritical() << "MinecraftUpdate: Subtask" << sender() << "succeeded, but work was already done!"; - return; + if (m_task) { + return m_task->canAbort(); } - emitSucceeded(); + return true; } -void MinecraftLoadAndCheck::subtaskFailed(QString error) +bool MinecraftLoadAndCheck::abort() { - if (isFinished()) { - qCritical() << "MinecraftUpdate: Subtask" << sender() << "failed, but work was already done!"; - return; + if (m_task && m_task->canAbort()) { + return m_task->abort(); } - emitFailed(error); -} + return Task::abort(); +} \ No newline at end of file diff --git a/launcher/minecraft/MinecraftLoadAndCheck.h b/launcher/minecraft/MinecraftLoadAndCheck.h index 09edaf909..72e9e0caa 100644 --- a/launcher/minecraft/MinecraftLoadAndCheck.h +++ b/launcher/minecraft/MinecraftLoadAndCheck.h @@ -15,32 +15,24 @@ #pragma once -#include -#include -#include - -#include +#include "net/Mode.h" #include "tasks/Task.h" -#include "QObjectPtr.h" - -class MinecraftVersion; class MinecraftInstance; class MinecraftLoadAndCheck : public Task { Q_OBJECT public: - explicit MinecraftLoadAndCheck(MinecraftInstance* inst, QObject* parent = 0); - virtual ~MinecraftLoadAndCheck() {}; + explicit MinecraftLoadAndCheck(MinecraftInstance* inst, Net::Mode netmode, QObject* parent = nullptr); + virtual ~MinecraftLoadAndCheck() = default; void executeTask() override; - private slots: - void subtaskSucceeded(); - void subtaskFailed(QString error); + bool canAbort() const override; + public slots: + bool abort() override; private: MinecraftInstance* m_inst = nullptr; Task::Ptr m_task; - QString m_preFailure; - QString m_fail_reason; + Net::Mode m_netmode; }; diff --git a/launcher/minecraft/MinecraftUpdate.cpp b/launcher/minecraft/MinecraftUpdate.cpp deleted file mode 100644 index b63430aa8..000000000 --- a/launcher/minecraft/MinecraftUpdate.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MinecraftUpdate.h" -#include "MinecraftInstance.h" - -#include "minecraft/PackProfile.h" - -#include "tasks/SequentialTask.h" -#include "update/AssetUpdateTask.h" -#include "update/FMLLibrariesTask.h" -#include "update/FoldersTask.h" -#include "update/LibrariesTask.h" - -MinecraftUpdate::MinecraftUpdate(MinecraftInstance* inst, QObject* parent) : SequentialTask(parent), m_inst(inst) {} - -void MinecraftUpdate::executeTask() -{ - m_queue.clear(); - // create folders - { - addTask(makeShared(m_inst)); - } - - // add metadata update task if necessary - { - auto components = m_inst->getPackProfile(); - components->reload(Net::Mode::Online); - auto task = components->getCurrentTask(); - if (task) { - addTask(task); - } - } - - // libraries download - { - addTask(makeShared(m_inst)); - } - - // FML libraries download and copy into the instance - { - addTask(makeShared(m_inst)); - } - - // assets update - { - addTask(makeShared(m_inst)); - } - - SequentialTask::executeTask(); -} diff --git a/launcher/minecraft/MinecraftUpdate.h b/launcher/minecraft/MinecraftUpdate.h deleted file mode 100644 index 456a13518..000000000 --- a/launcher/minecraft/MinecraftUpdate.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include "tasks/SequentialTask.h" - -class MinecraftInstance; - -// this needs to be a task because components->reload does stuff that may block -class MinecraftUpdate : public SequentialTask { - Q_OBJECT - public: - explicit MinecraftUpdate(MinecraftInstance* inst, QObject* parent = 0); - virtual ~MinecraftUpdate() = default; - - void executeTask() override; - - private: - MinecraftInstance* m_inst = nullptr; -}; diff --git a/launcher/minecraft/PackProfile.h b/launcher/minecraft/PackProfile.h index 9b6710cc3..b2de26ea0 100644 --- a/launcher/minecraft/PackProfile.h +++ b/launcher/minecraft/PackProfile.h @@ -148,13 +148,13 @@ class PackProfile : public QAbstractListModel { std::optional getSupportedModLoaders(); QList getModLoadersList(); + /// apply the component patches. Catches all the errors and returns true/false for success/failure + void invalidateLaunchProfile(); + private: void scheduleSave(); bool saveIsScheduled() const; - /// apply the component patches. Catches all the errors and returns true/false for success/failure - void invalidateLaunchProfile(); - /// insert component so that its index is ideally the specified one (returns real index) void insertComponent(size_t index, ComponentPtr component); diff --git a/launcher/minecraft/launch/AutoInstallJava.h b/launcher/minecraft/launch/AutoInstallJava.h index 7e4efc50c..cbfcf5ee7 100644 --- a/launcher/minecraft/launch/AutoInstallJava.h +++ b/launcher/minecraft/launch/AutoInstallJava.h @@ -37,7 +37,6 @@ #include #include -#include "java/JavaMetadata.h" #include "meta/Version.h" #include "minecraft/MinecraftInstance.h" #include "tasks/Task.h" diff --git a/launcher/minecraft/launch/ClaimAccount.h b/launcher/minecraft/launch/ClaimAccount.h index 357a4d4c5..561f0e848 100644 --- a/launcher/minecraft/launch/ClaimAccount.h +++ b/launcher/minecraft/launch/ClaimAccount.h @@ -22,7 +22,7 @@ class ClaimAccount : public LaunchStep { Q_OBJECT public: explicit ClaimAccount(LaunchTask* parent, AuthSessionPtr session); - virtual ~ClaimAccount() {}; + virtual ~ClaimAccount() = default; void executeTask() override; void finalize() override; diff --git a/launcher/minecraft/update/AssetUpdateTask.cpp b/launcher/minecraft/update/AssetUpdateTask.cpp index 8add02d84..acdddc833 100644 --- a/launcher/minecraft/update/AssetUpdateTask.cpp +++ b/launcher/minecraft/update/AssetUpdateTask.cpp @@ -1,5 +1,6 @@ #include "AssetUpdateTask.h" +#include "launch/LaunchStep.h" #include "minecraft/AssetsUtils.h" #include "minecraft/MinecraftInstance.h" #include "minecraft/PackProfile.h" @@ -14,8 +15,6 @@ AssetUpdateTask::AssetUpdateTask(MinecraftInstance* inst) m_inst = inst; } -AssetUpdateTask::~AssetUpdateTask() {} - void AssetUpdateTask::executeTask() { setStatus(tr("Updating assets index...")); diff --git a/launcher/minecraft/update/AssetUpdateTask.h b/launcher/minecraft/update/AssetUpdateTask.h index 6f053a54a..88fac0ac5 100644 --- a/launcher/minecraft/update/AssetUpdateTask.h +++ b/launcher/minecraft/update/AssetUpdateTask.h @@ -7,7 +7,7 @@ class AssetUpdateTask : public Task { Q_OBJECT public: AssetUpdateTask(MinecraftInstance* inst); - virtual ~AssetUpdateTask(); + virtual ~AssetUpdateTask() = default; void executeTask() override; diff --git a/launcher/minecraft/update/FMLLibrariesTask.h b/launcher/minecraft/update/FMLLibrariesTask.h index 32712d239..4fe2648e8 100644 --- a/launcher/minecraft/update/FMLLibrariesTask.h +++ b/launcher/minecraft/update/FMLLibrariesTask.h @@ -9,7 +9,7 @@ class FMLLibrariesTask : public Task { Q_OBJECT public: FMLLibrariesTask(MinecraftInstance* inst); - virtual ~FMLLibrariesTask() {}; + virtual ~FMLLibrariesTask() = default; void executeTask() override; diff --git a/launcher/minecraft/update/FoldersTask.cpp b/launcher/minecraft/update/FoldersTask.cpp index c74e8d2ef..7d6fc4394 100644 --- a/launcher/minecraft/update/FoldersTask.cpp +++ b/launcher/minecraft/update/FoldersTask.cpp @@ -37,7 +37,7 @@ #include #include "minecraft/MinecraftInstance.h" -FoldersTask::FoldersTask(MinecraftInstance* inst) : Task() +FoldersTask::FoldersTask(MinecraftInstance* inst) { m_inst = inst; } diff --git a/launcher/minecraft/update/FoldersTask.h b/launcher/minecraft/update/FoldersTask.h index be4e33eb7..7df7ef81d 100644 --- a/launcher/minecraft/update/FoldersTask.h +++ b/launcher/minecraft/update/FoldersTask.h @@ -7,7 +7,7 @@ class FoldersTask : public Task { Q_OBJECT public: FoldersTask(MinecraftInstance* inst); - virtual ~FoldersTask() {}; + virtual ~FoldersTask() = default; void executeTask() override; diff --git a/launcher/minecraft/update/LibrariesTask.h b/launcher/minecraft/update/LibrariesTask.h index 441191154..838f9d9b4 100644 --- a/launcher/minecraft/update/LibrariesTask.h +++ b/launcher/minecraft/update/LibrariesTask.h @@ -7,7 +7,7 @@ class LibrariesTask : public Task { Q_OBJECT public: LibrariesTask(MinecraftInstance* inst); - virtual ~LibrariesTask() {}; + virtual ~LibrariesTask() = default; void executeTask() override; diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index c55d32efb..02bb08cab 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -50,7 +50,9 @@ #include #include +#include "QObjectPtr.h" #include "VersionPage.h" +#include "tasks/SequentialTask.h" #include "ui/dialogs/InstallLoaderDialog.h" #include "ui_VersionPage.h" @@ -415,14 +417,18 @@ void VersionPage::on_actionDownload_All_triggered() return; } - auto updateTask = m_inst->createUpdateTask(Net::Mode::Online); - if (!updateTask) { + auto updateTasks = m_inst->createUpdateTask(); + if (updateTasks.isEmpty()) { return; } + auto task = makeShared(this); + for (auto t : updateTasks) { + task->addTask(t); + } ProgressDialog tDialog(this); - connect(updateTask.get(), &Task::failed, this, &VersionPage::onGameUpdateError); + connect(task.get(), &Task::failed, this, &VersionPage::onGameUpdateError); // FIXME: unused return value - tDialog.execWithTask(updateTask.get()); + tDialog.execWithTask(task.get()); updateButtons(); m_container->refreshContainer(); } From 7fbf0d3bf3c3821916119a5303d6bc302f954580 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Mon, 9 Sep 2024 15:40:31 +0200 Subject: [PATCH 163/616] Sort files chronologically in descending order Signed-off-by: Qaz --- launcher/ui/pages/instance/ScreenshotsPage.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/launcher/ui/pages/instance/ScreenshotsPage.cpp b/launcher/ui/pages/instance/ScreenshotsPage.cpp index c3f955733..9c7df9d09 100644 --- a/launcher/ui/pages/instance/ScreenshotsPage.cpp +++ b/launcher/ui/pages/instance/ScreenshotsPage.cpp @@ -242,6 +242,10 @@ ScreenshotsPage::ScreenshotsPage(QString path, QWidget* parent) : QMainWindow(pa m_model->setReadOnly(false); m_model->setNameFilters({ "*.png" }); m_model->setNameFilterDisables(false); + // Sorts by modified date instead of creation date because that column is not available and would require subclassing, this should work + // considering screenshots aren't modified after creation. + constexpr int file_modified_column_index = 3; + m_model->sort(file_modified_column_index, Qt::DescendingOrder); m_folder = path; m_valid = FS::ensureFolderPathExists(m_folder); From e2ef280da98facec04a0e2b3d0f0e8b8317db043 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Mon, 9 Sep 2024 16:24:40 +0200 Subject: [PATCH 164/616] DCO Remediation Commit for QazCetelic I, QazCetelic , hereby add my Signed-off-by to this commit: 7fbf0d3bf3c3821916119a5303d6bc302f954580 Signed-off-by: QazCetelic --- launcher/ui/pages/instance/ScreenshotsPage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/ui/pages/instance/ScreenshotsPage.cpp b/launcher/ui/pages/instance/ScreenshotsPage.cpp index 9c7df9d09..b619a07b8 100644 --- a/launcher/ui/pages/instance/ScreenshotsPage.cpp +++ b/launcher/ui/pages/instance/ScreenshotsPage.cpp @@ -246,6 +246,7 @@ ScreenshotsPage::ScreenshotsPage(QString path, QWidget* parent) : QMainWindow(pa // considering screenshots aren't modified after creation. constexpr int file_modified_column_index = 3; m_model->sort(file_modified_column_index, Qt::DescendingOrder); + m_folder = path; m_valid = FS::ensureFolderPathExists(m_folder); From 7e49fa04269b23c8cb4048a6a036aaf6d5e5bf8e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 9 Sep 2024 19:05:56 +0000 Subject: [PATCH 165/616] chore(deps): update determinatesystems/update-flake-lock action to v24 --- .github/workflows/update-flake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-flake.yml b/.github/workflows/update-flake.yml index e1ab2e86e..ecc38ff28 100644 --- a/.github/workflows/update-flake.yml +++ b/.github/workflows/update-flake.yml @@ -19,7 +19,7 @@ jobs: - uses: actions/checkout@v4 - uses: cachix/install-nix-action@ba0dd844c9180cbf77aa72a116d6fbc515d0e87b # v27 - - uses: DeterminateSystems/update-flake-lock@v23 + - uses: DeterminateSystems/update-flake-lock@v24 with: commit-msg: "chore(nix): update lockfile" pr-title: "chore(nix): update lockfile" From 6b0007291bf8fd094300c21eb64cc119fb3a378d Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Tue, 10 Sep 2024 22:30:29 +0200 Subject: [PATCH 166/616] Added search and support for subdirectories to icon picker Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 142 ++++++++++++++++++----- launcher/icons/IconList.h | 4 + launcher/ui/dialogs/IconPickerDialog.cpp | 23 +++- launcher/ui/dialogs/IconPickerDialog.h | 5 + 4 files changed, 144 insertions(+), 30 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index e4157ea2d..56ff10e51 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -56,7 +56,7 @@ IconList::IconList(const QStringList& builtinPaths, QString path, QObject* paren QDir instance_icons(builtinPath); auto file_info_list = instance_icons.entryInfoList(QDir::Files, QDir::Name); for (auto file_info : file_info_list) { - builtinNames.insert(file_info.completeBaseName()); + builtinNames.insert(file_info.baseName()); } } for (auto& builtinName : builtinNames) { @@ -77,10 +77,95 @@ IconList::IconList(const QStringList& builtinPaths, QString path, QObject* paren void IconList::sortIconList() { qDebug() << "Sorting icon list..."; - std::sort(icons.begin(), icons.end(), [](const MMCIcon& a, const MMCIcon& b) { return a.m_key.localeAwareCompare(b.m_key) < 0; }); + std::sort(icons.begin(), icons.end(), [](const MMCIcon& a, const MMCIcon& b) { + bool aIsSubdir = a.m_key.contains(std::filesystem::path::preferred_separator); + bool bIsSubdir = b.m_key.contains(std::filesystem::path::preferred_separator); + if (aIsSubdir != bIsSubdir) { + return !aIsSubdir; // root-level icons come first + } + return a.m_key.localeAwareCompare(b.m_key) < 0; + }); reindex(); } +// Helper function to add directories recursively +bool IconList::addPathRecursively(const QString& path) +{ + QDir dir(path); + if (!dir.exists()) + return false; + + bool watching = false; + + // Add the directory itself + watching = m_watcher->addPath(path); + + // Add all subdirectories + QFileInfoList entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + for (const QFileInfo& entry : entries) + { + if (addPathRecursively(entry.absoluteFilePath())) + { + watching = true; + } + } + return watching; +} + +void IconList::removePathRecursively(const QString& path) +{ + QFileInfo file_info(path); + if (file_info.isFile()) { + // Remove the icon belonging to the file + QString key = m_dir.relativeFilePath(file_info.absoluteFilePath()); + int idx = getIconIndex(key); + if (idx == -1) + return; + + } + else if (file_info.isDir()) { + // Remove the directory itself + m_watcher->removePath(path); + + const QDir dir(path); + // Remove all files within the directory + for (const QFileInfo& file : dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) + { + removePathRecursively(file.absoluteFilePath()); + } + } +} + +QStringList IconList::getIconFilePaths() const +{ + QStringList icon_files {}; + QStringList directories {m_dir.absolutePath()}; + while (!directories.isEmpty()) { + QString first = directories.takeFirst(); + QDir dir(first); + for (QString& file_name : dir.entryList(QDir::AllDirs | QDir::Files |QDir::NoDotAndDotDot, QDir::Name)) { + QString full_path = dir.filePath(file_name); // Convert to full path + QFileInfo file_info(full_path); + if (file_info.isDir()) + directories.push_back(full_path); + else + icon_files.push_back(full_path); + } + } + return icon_files; +} + +QString formatName(const QDir& icons_dir, const QFileInfo& file) +{ + if (file.dir() == icons_dir) { + return file.baseName(); + } + else { + const QString delimiter = " » "; + return (icons_dir.relativeFilePath(file.dir().path()) + std::filesystem::path::preferred_separator + file.baseName()).replace(std::filesystem::path::preferred_separator, delimiter); + } +} + void IconList::directoryChanged(const QString& path) { QDir new_dir(path); @@ -95,13 +180,9 @@ void IconList::directoryChanged(const QString& path) if (!FS::ensureFolderPathExists(m_dir.absolutePath())) return; m_dir.refresh(); - auto new_list = m_dir.entryList(QDir::Files, QDir::Name); - for (auto it = new_list.begin(); it != new_list.end(); it++) { - QString& foo = (*it); - foo = m_dir.filePath(foo); - } + QStringList new_file_names_list = getIconFilePaths(); #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - QSet new_set(new_list.begin(), new_list.end()); + QSet new_set(new_file_names_list.begin(), new_file_names_list.end()); #else auto new_set = new_list.toSet(); #endif @@ -123,21 +204,16 @@ void IconList::directoryChanged(const QString& path) QSet to_add = new_set; to_add -= current_set; - for (auto remove : to_remove) { + for (const auto& remove : to_remove) { qDebug() << "Removing " << remove; - QFileInfo rmfile(remove); - QString key = rmfile.completeBaseName(); - - QString suffix = rmfile.suffix(); - // The icon doesnt have a suffix, but it can have other .s in the name, so we account for those as well - if (!IconUtils::isIconSuffix(suffix)) - key = rmfile.fileName(); + QFileInfo removed_file(remove); + QString key = m_dir.relativeFilePath(removed_file.absoluteFilePath()); int idx = getIconIndex(key); if (idx == -1) continue; - icons[idx].remove(IconType::FileBased); - if (icons[idx].type() == IconType::ToBeDeleted) { + icons[idx].remove(FileBased); + if (icons[idx].type() == ToBeDeleted) { beginRemoveRows(QModelIndex(), idx, idx); icons.remove(idx); reindex(); @@ -149,18 +225,14 @@ void IconList::directoryChanged(const QString& path) emit iconUpdated(key); } - for (auto add : to_add) { + for (const auto& add : to_add) { qDebug() << "Adding " << add; QFileInfo addfile(add); - QString key = addfile.completeBaseName(); + QString key = m_dir.relativeFilePath(addfile.absoluteFilePath()); + QString name = formatName(m_dir, addfile); - QString suffix = addfile.suffix(); - // The icon doesnt have a suffix, but it can have other .s in the name, so we account for those as well - if (!IconUtils::isIconSuffix(suffix)) - key = addfile.fileName(); - - if (addIcon(key, QString(), addfile.filePath(), IconType::FileBased)) { + if (addIcon(key, name, addfile.filePath(), IconType::FileBased)) { m_watcher->addPath(add); emit iconUpdated(key); } @@ -175,7 +247,7 @@ void IconList::fileChanged(const QString& path) QFileInfo checkfile(path); if (!checkfile.exists()) return; - QString key = checkfile.completeBaseName(); + QString key = m_dir.relativeFilePath(checkfile.absoluteFilePath()); int idx = getIconIndex(key); if (idx == -1) return; @@ -200,7 +272,7 @@ void IconList::startWatching() { auto abs_path = m_dir.absolutePath(); FS::ensureFolderPathExists(abs_path); - is_watching = m_watcher->addPath(abs_path); + is_watching = addPathRecursively(abs_path); if (is_watching) { qDebug() << "Started watching " << abs_path; } else { @@ -312,6 +384,7 @@ bool IconList::iconFileExists(const QString& key) const return iconEntry && iconEntry->has(IconType::FileBased); } +/// Returns the icon with the given key or nullptr if it doesn't exist. const MMCIcon* IconList::icon(const QString& key) const { int iconIdx = getIconIndex(key); @@ -394,6 +467,7 @@ void IconList::reindex() for (auto& iter : icons) { name_index[iter.m_key] = i; i++; + emit iconUpdated(iter.m_key); // prevents incorrect indices with proxy model } } @@ -425,3 +499,15 @@ QString IconList::getDirectory() const { return m_dir.absolutePath(); } + +/// Returns the directory of the icon with the given key or the default directory if it's a builtin icon. +QString IconList::iconDirectory(const QString& key) const +{ + for (auto mmc_icon : icons) { + if (mmc_icon.m_key == key && mmc_icon.has(IconType::FileBased)) { + QFileInfo icon_file(mmc_icon.getFilePath()); + return icon_file.dir().path(); + } + } + return getDirectory(); +} diff --git a/launcher/icons/IconList.h b/launcher/icons/IconList.h index 553946c42..fcd172561 100644 --- a/launcher/icons/IconList.h +++ b/launcher/icons/IconList.h @@ -72,6 +72,7 @@ class IconList : public QAbstractListModel { bool deleteIcon(const QString& key); bool trashIcon(const QString& key); bool iconFileExists(const QString& key) const; + QString iconDirectory(const QString& key) const; void installIcons(const QStringList& iconFiles); void installIcon(const QString& file, const QString& name); @@ -91,6 +92,9 @@ class IconList : public QAbstractListModel { IconList& operator=(const IconList&) = delete; void reindex(); void sortIconList(); + bool addPathRecursively(const QString& path); + void removePathRecursively(const QString& path); + QStringList getIconFilePaths() const; public slots: void directoryChanged(const QString& path); diff --git a/launcher/ui/dialogs/IconPickerDialog.cpp b/launcher/ui/dialogs/IconPickerDialog.cpp index a196fd587..a3f1d7ea4 100644 --- a/launcher/ui/dialogs/IconPickerDialog.cpp +++ b/launcher/ui/dialogs/IconPickerDialog.cpp @@ -16,6 +16,8 @@ #include #include #include +#include +#include #include "Application.h" @@ -33,6 +35,15 @@ IconPickerDialog::IconPickerDialog(QWidget* parent) : QDialog(parent), ui(new Ui ui->setupUi(this); setWindowModality(Qt::WindowModal); + searchBar = new QLineEdit(this); + searchBar->setPlaceholderText(tr("Search...")); + ui->verticalLayout->insertWidget(0, searchBar); + + proxyModel = new QSortFilterProxyModel(this); + proxyModel->setSourceModel(APPLICATION->icons().get()); + proxyModel->setFilterCaseSensitivity(Qt::CaseInsensitive); + ui->iconView->setModel(proxyModel); + auto contentsWidget = ui->iconView; contentsWidget->setViewMode(QListView::IconMode); contentsWidget->setFlow(QListView::LeftToRight); @@ -57,7 +68,7 @@ IconPickerDialog::IconPickerDialog(QWidget* parent) : QDialog(parent), ui(new Ui contentsWidget->installEventFilter(this); - contentsWidget->setModel(APPLICATION->icons().get()); + contentsWidget->setModel(proxyModel); // NOTE: ResetRole forces the button to be on the left, while the OK/Cancel ones are on the right. We win. auto buttonAdd = ui->buttonBox->addButton(tr("Add Icon"), QDialogButtonBox::ResetRole); @@ -73,6 +84,9 @@ IconPickerDialog::IconPickerDialog(QWidget* parent) : QDialog(parent), ui(new Ui auto buttonFolder = ui->buttonBox->addButton(tr("Open Folder"), QDialogButtonBox::ResetRole); connect(buttonFolder, &QPushButton::clicked, this, &IconPickerDialog::openFolder); + connect(searchBar, &QLineEdit::textChanged, this, &IconPickerDialog::filterIcons); + // Prevent incorrect indices from e.g. filesystem changes + connect(APPLICATION->icons().get(), &IconList::iconUpdated, this, [this]() { proxyModel->invalidate(); }); } bool IconPickerDialog::eventFilter(QObject* obj, QEvent* evt) @@ -159,5 +173,10 @@ IconPickerDialog::~IconPickerDialog() void IconPickerDialog::openFolder() { - DesktopServices::openPath(APPLICATION->icons()->getDirectory(), true); + DesktopServices::openPath(APPLICATION->icons()->iconDirectory(selectedIconKey), true); } + +void IconPickerDialog::filterIcons(const QString& query) +{ + proxyModel->setFilterFixedString(query); +} \ No newline at end of file diff --git a/launcher/ui/dialogs/IconPickerDialog.h b/launcher/ui/dialogs/IconPickerDialog.h index 37e53dcce..db1315338 100644 --- a/launcher/ui/dialogs/IconPickerDialog.h +++ b/launcher/ui/dialogs/IconPickerDialog.h @@ -16,6 +16,8 @@ #pragma once #include #include +#include +#include namespace Ui { class IconPickerDialog; @@ -36,6 +38,8 @@ class IconPickerDialog : public QDialog { private: Ui::IconPickerDialog* ui; QPushButton* buttonRemove; + QLineEdit* searchBar; + QSortFilterProxyModel* proxyModel; private slots: void selectionChanged(QItemSelection, QItemSelection); @@ -44,4 +48,5 @@ class IconPickerDialog : public QDialog { void addNewIcon(); void removeSelectedIcon(); void openFolder(); + void filterIcons(const QString& text); }; From 40c3866f635bcb0c084f9afc5c9bcec4a50fa036 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Wed, 11 Sep 2024 09:22:28 +0200 Subject: [PATCH 167/616] clang-tidy formatting Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 54 +++++++++++------------- launcher/icons/IconList.h | 4 +- launcher/ui/dialogs/IconPickerDialog.cpp | 2 +- 3 files changed, 28 insertions(+), 32 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index 56ff10e51..a9d5bda98 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -47,19 +47,19 @@ #define MAX_SIZE 1024 -IconList::IconList(const QStringList& builtinPaths, QString path, QObject* parent) : QAbstractListModel(parent) +IconList::IconList(const QStringList& builtinPaths, const QString& path, QObject* parent) : QAbstractListModel(parent) { QSet builtinNames; // add builtin icons - for (auto& builtinPath : builtinPaths) { + for (const auto& builtinPath : builtinPaths) { QDir instance_icons(builtinPath); auto file_info_list = instance_icons.entryInfoList(QDir::Files, QDir::Name); - for (auto file_info : file_info_list) { + for (const auto& file_info : file_info_list) { builtinNames.insert(file_info.baseName()); } } - for (auto& builtinName : builtinNames) { + for (const auto& builtinName : builtinNames) { addThemeIcon(builtinName); } @@ -81,7 +81,7 @@ void IconList::sortIconList() bool aIsSubdir = a.m_key.contains(std::filesystem::path::preferred_separator); bool bIsSubdir = b.m_key.contains(std::filesystem::path::preferred_separator); if (aIsSubdir != bIsSubdir) { - return !aIsSubdir; // root-level icons come first + return !aIsSubdir; // root-level icons come first } return a.m_key.localeAwareCompare(b.m_key) < 0; }); @@ -102,10 +102,8 @@ bool IconList::addPathRecursively(const QString& path) // Add all subdirectories QFileInfoList entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); - for (const QFileInfo& entry : entries) - { - if (addPathRecursively(entry.absoluteFilePath())) - { + for (const QFileInfo& entry : entries) { + if (addPathRecursively(entry.absoluteFilePath())) { watching = true; } } @@ -122,15 +120,13 @@ void IconList::removePathRecursively(const QString& path) if (idx == -1) return; - } - else if (file_info.isDir()) { + } else if (file_info.isDir()) { // Remove the directory itself m_watcher->removePath(path); const QDir dir(path); // Remove all files within the directory - for (const QFileInfo& file : dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) - { + for (const QFileInfo& file : dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) { removePathRecursively(file.absoluteFilePath()); } } @@ -138,13 +134,13 @@ void IconList::removePathRecursively(const QString& path) QStringList IconList::getIconFilePaths() const { - QStringList icon_files {}; - QStringList directories {m_dir.absolutePath()}; + QStringList icon_files{}; + QStringList directories{ m_dir.absolutePath() }; while (!directories.isEmpty()) { QString first = directories.takeFirst(); QDir dir(first); - for (QString& file_name : dir.entryList(QDir::AllDirs | QDir::Files |QDir::NoDotAndDotDot, QDir::Name)) { - QString full_path = dir.filePath(file_name); // Convert to full path + for (QString& file_name : dir.entryList(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot, QDir::Name)) { + QString full_path = dir.filePath(file_name); // Convert to full path QFileInfo file_info(full_path); if (file_info.isDir()) directories.push_back(full_path); @@ -159,10 +155,10 @@ QString formatName(const QDir& icons_dir, const QFileInfo& file) { if (file.dir() == icons_dir) { return file.baseName(); - } - else { + } else { const QString delimiter = " » "; - return (icons_dir.relativeFilePath(file.dir().path()) + std::filesystem::path::preferred_separator + file.baseName()).replace(std::filesystem::path::preferred_separator, delimiter); + return (icons_dir.relativeFilePath(file.dir().path()) + std::filesystem::path::preferred_separator + file.baseName()) + .replace(std::filesystem::path::preferred_separator, delimiter); } } @@ -252,7 +248,7 @@ void IconList::fileChanged(const QString& path) if (idx == -1) return; QIcon icon(path); - if (!icon.availableSizes().size()) + if (icon.availableSizes().empty()) return; icons[idx].m_images[IconType::FileBased].icon = icon; @@ -260,7 +256,7 @@ void IconList::fileChanged(const QString& path) emit iconUpdated(key); } -void IconList::SettingChanged(const Setting& setting, QVariant value) +void IconList::SettingChanged(const Setting& setting, const QVariant& value) { if (setting.id() != "IconsDir") return; @@ -335,12 +331,12 @@ Qt::ItemFlags IconList::flags(const QModelIndex& index) const QVariant IconList::data(const QModelIndex& index, int role) const { if (!index.isValid()) - return QVariant(); + return {}; int row = index.row(); if (row < 0 || row >= icons.size()) - return QVariant(); + return {}; switch (role) { case Qt::DecorationRole: @@ -350,7 +346,7 @@ QVariant IconList::data(const QModelIndex& index, int role) const case Qt::UserRole: return icons[row].m_key; default: - return QVariant(); + return {}; } } @@ -361,7 +357,7 @@ int IconList::rowCount(const QModelIndex& parent) const void IconList::installIcons(const QStringList& iconFiles) { - for (QString file : iconFiles) + for (const QString& file : iconFiles) installIcon(file, {}); } @@ -467,7 +463,7 @@ void IconList::reindex() for (auto& iter : icons) { name_index[iter.m_key] = i; i++; - emit iconUpdated(iter.m_key); // prevents incorrect indices with proxy model + emit iconUpdated(iter.m_key); // prevents incorrect indices with proxy model } } @@ -483,7 +479,7 @@ QIcon IconList::getIcon(const QString& key) const if (icon_index != -1) return icons[icon_index].icon(); - return QIcon(); + return {}; } int IconList::getIconIndex(const QString& key) const @@ -503,7 +499,7 @@ QString IconList::getDirectory() const /// Returns the directory of the icon with the given key or the default directory if it's a builtin icon. QString IconList::iconDirectory(const QString& key) const { - for (auto mmc_icon : icons) { + for (const auto& mmc_icon : icons) { if (mmc_icon.m_key == key && mmc_icon.has(IconType::FileBased)) { QFileInfo icon_file(mmc_icon.getFilePath()); return icon_file.dir().path(); diff --git a/launcher/icons/IconList.h b/launcher/icons/IconList.h index fcd172561..6213b7da3 100644 --- a/launcher/icons/IconList.h +++ b/launcher/icons/IconList.h @@ -51,7 +51,7 @@ class QFileSystemWatcher; class IconList : public QAbstractListModel { Q_OBJECT public: - explicit IconList(const QStringList& builtinPaths, QString path, QObject* parent = 0); + explicit IconList(const QStringList& builtinPaths, const QString& path, QObject* parent = 0); virtual ~IconList() {}; QIcon getIcon(const QString& key) const; @@ -101,7 +101,7 @@ class IconList : public QAbstractListModel { protected slots: void fileChanged(const QString& path); - void SettingChanged(const Setting& setting, QVariant value); + void SettingChanged(const Setting& setting, const QVariant& value); private: shared_qobject_ptr m_watcher; diff --git a/launcher/ui/dialogs/IconPickerDialog.cpp b/launcher/ui/dialogs/IconPickerDialog.cpp index a3f1d7ea4..80effec07 100644 --- a/launcher/ui/dialogs/IconPickerDialog.cpp +++ b/launcher/ui/dialogs/IconPickerDialog.cpp @@ -15,9 +15,9 @@ #include #include +#include #include #include -#include #include "Application.h" From 0a576a0f6725aa2db1cdad7c153bfac25f2caef7 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Wed, 11 Sep 2024 09:31:16 +0200 Subject: [PATCH 168/616] fixes for ci errors Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index a9d5bda98..824bee617 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -35,6 +35,7 @@ */ #include "IconList.h" +#include #include #include #include @@ -180,7 +181,7 @@ void IconList::directoryChanged(const QString& path) #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) QSet new_set(new_file_names_list.begin(), new_file_names_list.end()); #else - auto new_set = new_list.toSet(); + auto new_set = new_file_names_list.toSet(); #endif QList current_list; for (auto& it : icons) { From 506ec642733e9c7c11ccb7c72619697c52307687 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Wed, 11 Sep 2024 09:43:45 +0200 Subject: [PATCH 169/616] fixes for ci errors II Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index 824bee617..66f6ad1f3 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -35,7 +35,6 @@ */ #include "IconList.h" -#include #include #include #include @@ -154,13 +153,13 @@ QStringList IconList::getIconFilePaths() const QString formatName(const QDir& icons_dir, const QFileInfo& file) { - if (file.dir() == icons_dir) { + if (file.dir() == icons_dir) return file.baseName(); - } else { - const QString delimiter = " » "; - return (icons_dir.relativeFilePath(file.dir().path()) + std::filesystem::path::preferred_separator + file.baseName()) - .replace(std::filesystem::path::preferred_separator, delimiter); - } + + constexpr auto delimiter = " » "; + constexpr auto fs_separator = std::filesystem::path::preferred_separator; + QString relative_path_without_extension = icons_dir.relativeFilePath(file.dir().path()) + fs_separator + file.baseName(); + return relative_path_without_extension.replace(fs_separator, delimiter); } void IconList::directoryChanged(const QString& path) @@ -311,7 +310,7 @@ bool IconList::dropMimeData(const QMimeData* data, if (data->hasUrls()) { auto urls = data->urls(); QStringList iconFiles; - for (auto url : urls) { + for (const auto& url : urls) { // only local files may be dropped... if (!url.isLocalFile()) continue; From f7f7c4b43ef2871d71fb3214bcafbd32e77bf85d Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Wed, 11 Sep 2024 09:55:27 +0200 Subject: [PATCH 170/616] fixes for ci errors III Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index 66f6ad1f3..df1905502 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -35,6 +35,7 @@ */ #include "IconList.h" +#include #include #include #include From 7b49fd65085b662875ed673b5319d2155efce5bd Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Wed, 11 Sep 2024 10:07:05 +0200 Subject: [PATCH 171/616] fixes for ci errors IV Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index df1905502..e226ab471 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -35,7 +35,6 @@ */ #include "IconList.h" -#include #include #include #include @@ -79,8 +78,8 @@ void IconList::sortIconList() { qDebug() << "Sorting icon list..."; std::sort(icons.begin(), icons.end(), [](const MMCIcon& a, const MMCIcon& b) { - bool aIsSubdir = a.m_key.contains(std::filesystem::path::preferred_separator); - bool bIsSubdir = b.m_key.contains(std::filesystem::path::preferred_separator); + bool aIsSubdir = a.m_key.contains(QDir::separator()); + bool bIsSubdir = b.m_key.contains(QDir::separator()); if (aIsSubdir != bIsSubdir) { return !aIsSubdir; // root-level icons come first } @@ -158,9 +157,8 @@ QString formatName(const QDir& icons_dir, const QFileInfo& file) return file.baseName(); constexpr auto delimiter = " » "; - constexpr auto fs_separator = std::filesystem::path::preferred_separator; - QString relative_path_without_extension = icons_dir.relativeFilePath(file.dir().path()) + fs_separator + file.baseName(); - return relative_path_without_extension.replace(fs_separator, delimiter); + QString relative_path_without_extension = icons_dir.relativeFilePath(file.dir().path()) + QDir::separator() + file.baseName(); + return relative_path_without_extension.replace(QDir::separator(), delimiter); } void IconList::directoryChanged(const QString& path) From c85294af9debc472446585b7851f41596fbcc0be Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 12 Sep 2024 17:57:57 +0300 Subject: [PATCH 172/616] Improve wizzard page Signed-off-by: Trial97 --- launcher/Application.cpp | 35 +++++-- launcher/CMakeLists.txt | 6 ++ .../ui/setupwizard/AutoJavaWizardPage.cpp | 33 +++++++ launcher/ui/setupwizard/AutoJavaWizardPage.h | 22 +++++ launcher/ui/setupwizard/AutoJavaWizardPage.ui | 93 +++++++++++++++++++ launcher/ui/setupwizard/JavaWizardPage.cpp | 4 +- launcher/ui/setupwizard/JavaWizardPage.h | 2 +- launcher/ui/setupwizard/LoginWizardPage.cpp | 45 +++++++++ launcher/ui/setupwizard/LoginWizardPage.h | 24 +++++ launcher/ui/setupwizard/LoginWizardPage.ui | 74 +++++++++++++++ launcher/ui/widgets/JavaSettingsWidget.cpp | 77 ++++++++++----- launcher/ui/widgets/JavaSettingsWidget.h | 8 +- 12 files changed, 384 insertions(+), 39 deletions(-) create mode 100644 launcher/ui/setupwizard/AutoJavaWizardPage.cpp create mode 100644 launcher/ui/setupwizard/AutoJavaWizardPage.h create mode 100644 launcher/ui/setupwizard/AutoJavaWizardPage.ui create mode 100644 launcher/ui/setupwizard/LoginWizardPage.cpp create mode 100644 launcher/ui/setupwizard/LoginWizardPage.h create mode 100644 launcher/ui/setupwizard/LoginWizardPage.ui diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 9cd0445e6..35eb6e91e 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -67,8 +67,10 @@ #include "ui/pages/global/MinecraftPage.h" #include "ui/pages/global/ProxyPage.h" +#include "ui/setupwizard/AutoJavaWizardPage.h" #include "ui/setupwizard/JavaWizardPage.h" #include "ui/setupwizard/LanguageWizardPage.h" +#include "ui/setupwizard/LoginWizardPage.h" #include "ui/setupwizard/PasteWizardPage.h" #include "ui/setupwizard/SetupWizard.h" #include "ui/setupwizard/ThemeWizardPage.h" @@ -650,6 +652,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) auto defaultEnableAutoJava = m_settings->get("JavaPath").toString().isEmpty(); m_settings->registerSetting("AutomaticJavaSwitch", defaultEnableAutoJava); m_settings->registerSetting("AutomaticJavaDownload", defaultEnableAutoJava); + m_settings->registerSetting("UserAskedAboutAutomaticJavaDownload", false); // Legacy settings m_settings->registerSetting("OnlineFixes", false); @@ -1077,13 +1080,15 @@ bool Application::createSetupWizard() } return false; }(); + bool askjava = BuildConfig.JAVA_DOWNLOADER_ENABLED && !javaRequired && !m_settings->get("AutomaticJavaDownload").toBool() && + !m_settings->get("AutomaticJavaSwitch").toBool() && !m_settings->get("UserAskedAboutAutomaticJavaDownload").toBool(); bool languageRequired = settings()->get("Language").toString().isEmpty(); bool pasteInterventionRequired = settings()->get("PastebinURL") != ""; bool validWidgets = m_themeManager->isValidApplicationTheme(settings()->get("ApplicationTheme").toString()); bool validIcons = m_themeManager->isValidIconTheme(settings()->get("IconTheme").toString()); + bool login = !m_accounts->anyAccountIsValid() && capabilities() & Application::SupportsMSA; bool themeInterventionRequired = !validWidgets || !validIcons; - bool wizardRequired = javaRequired || languageRequired || pasteInterventionRequired || themeInterventionRequired; - + bool wizardRequired = javaRequired || languageRequired || pasteInterventionRequired || themeInterventionRequired || askjava || login; if (wizardRequired) { // set default theme after going into theme wizard if (!validIcons) @@ -1100,6 +1105,8 @@ bool Application::createSetupWizard() if (javaRequired) { m_setupWizard->addPage(new JavaWizardPage(m_setupWizard)); + } else if (askjava) { + m_setupWizard->addPage(new AutoJavaWizardPage(m_setupWizard)); } if (pasteInterventionRequired) { @@ -1110,11 +1117,14 @@ bool Application::createSetupWizard() m_setupWizard->addPage(new ThemeWizardPage(m_setupWizard)); } + if (login) { + m_setupWizard->addPage(new LoginWizardPage(m_setupWizard)); + } connect(m_setupWizard, &QDialog::finished, this, &Application::setupWizardFinished); m_setupWizard->show(); - return true; } - return false; + + return wizardRequired || login; } bool Application::updaterEnabled() @@ -1259,16 +1269,23 @@ Application::~Application() void Application::messageReceived(const QByteArray& message) { - if (status() != Initialized) { - qDebug() << "Received message" << message << "while still initializing. It will be ignored."; - return; - } - ApplicationMessage received; received.parse(message); auto& command = received.command; + if (status() != Initialized) { + bool isLoginAtempt = false; + if (command == "import") { + QString url = received.args["url"]; + isLoginAtempt = !url.isEmpty() && normalizeImportUrl(url).scheme() == BuildConfig.LAUNCHER_APP_BINARY_NAME; + } + if (!isLoginAtempt) { + qDebug() << "Received message" << message << "while still initializing. It will be ignored."; + return; + } + } + if (command == "activate") { showMainWindow(); } else if (command == "import") { diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index a65d53d06..975946740 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -842,6 +842,10 @@ SET(LAUNCHER_SOURCES ui/setupwizard/PasteWizardPage.h ui/setupwizard/ThemeWizardPage.cpp ui/setupwizard/ThemeWizardPage.h + ui/setupwizard/AutoJavaWizardPage.cpp + ui/setupwizard/AutoJavaWizardPage.h + ui/setupwizard/LoginWizardPage.cpp + ui/setupwizard/LoginWizardPage.h # GUI - themes ui/themes/FusionTheme.cpp @@ -1154,6 +1158,8 @@ endif() qt_wrap_ui(LAUNCHER_UI ui/MainWindow.ui ui/setupwizard/PasteWizardPage.ui + ui/setupwizard/AutoJavaWizardPage.ui + ui/setupwizard/LoginWizardPage.ui ui/setupwizard/ThemeWizardPage.ui ui/pages/global/AccountListPage.ui ui/pages/global/JavaPage.ui diff --git a/launcher/ui/setupwizard/AutoJavaWizardPage.cpp b/launcher/ui/setupwizard/AutoJavaWizardPage.cpp new file mode 100644 index 000000000..fd173e71d --- /dev/null +++ b/launcher/ui/setupwizard/AutoJavaWizardPage.cpp @@ -0,0 +1,33 @@ +#include "AutoJavaWizardPage.h" +#include "ui_AutoJavaWizardPage.h" + +#include "Application.h" + +AutoJavaWizardPage::AutoJavaWizardPage(QWidget* parent) : BaseWizardPage(parent), ui(new Ui::AutoJavaWizardPage) +{ + ui->setupUi(this); +} + +AutoJavaWizardPage::~AutoJavaWizardPage() +{ + delete ui; +} + +void AutoJavaWizardPage::initializePage() {} + +bool AutoJavaWizardPage::validatePage() +{ + auto s = APPLICATION->settings(); + + if (!ui->previousSettingsRadioButton->isChecked()) { + s->set("AutomaticJavaSwitch", true); + s->set("AutomaticJavaDownload", true); + } + s->set("UserAskedAboutAutomaticJavaDownload", true); + return true; +} + +void AutoJavaWizardPage::retranslate() +{ + ui->retranslateUi(this); +} diff --git a/launcher/ui/setupwizard/AutoJavaWizardPage.h b/launcher/ui/setupwizard/AutoJavaWizardPage.h new file mode 100644 index 000000000..fcdf5bdf1 --- /dev/null +++ b/launcher/ui/setupwizard/AutoJavaWizardPage.h @@ -0,0 +1,22 @@ +#pragma once +#include +#include "BaseWizardPage.h" + +namespace Ui { +class AutoJavaWizardPage; +} + +class AutoJavaWizardPage : public BaseWizardPage { + Q_OBJECT + + public: + explicit AutoJavaWizardPage(QWidget* parent = nullptr); + ~AutoJavaWizardPage(); + + void initializePage() override; + bool validatePage() override; + void retranslate() override; + + private: + Ui::AutoJavaWizardPage* ui; +}; diff --git a/launcher/ui/setupwizard/AutoJavaWizardPage.ui b/launcher/ui/setupwizard/AutoJavaWizardPage.ui new file mode 100644 index 000000000..bd72cf695 --- /dev/null +++ b/launcher/ui/setupwizard/AutoJavaWizardPage.ui @@ -0,0 +1,93 @@ + + + AutoJavaWizardPage + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + <html><head/><body><p><span style=" font-size:14pt; font-weight:600;">New Feature Alert!</span></p></body></html> + + + Qt::RichText + + + true + + + + + + + We've added a feature to automatically download the correct Java version for each version of Minecraft(this can be changed in the Java Settings). Would you like to enable or disable this feature? + + + true + + + + + + + Qt::Horizontal + + + + + + + Enable Auto-Download + + + true + + + buttonGroup + + + + + + + Disable Auto-Download + + + false + + + buttonGroup + + + + + + + Qt::Vertical + + + + 20 + 156 + + + + + + + + + + + + diff --git a/launcher/ui/setupwizard/JavaWizardPage.cpp b/launcher/ui/setupwizard/JavaWizardPage.cpp index a47cebcaa..47718d6da 100644 --- a/launcher/ui/setupwizard/JavaWizardPage.cpp +++ b/launcher/ui/setupwizard/JavaWizardPage.cpp @@ -55,6 +55,7 @@ bool JavaWizardPage::validatePage() auto result = m_java_widget->validate(); settings->set("AutomaticJavaSwitch", m_java_widget->autoDetectJava()); settings->set("AutomaticJavaDownload", m_java_widget->autoDownloadJava()); + settings->set("UserAskedAboutAutomaticJavaDownload", true); switch (result) { default: case JavaSettingsWidget::ValidationStatus::Bad: { @@ -82,7 +83,6 @@ void JavaWizardPage::retranslate() { setTitle(tr("Java")); setSubTitle( - tr("You do not have a working Java set up yet or it went missing.\n" - "Please select one of the following or browse for a Java executable.")); + tr("Please select how much memory to allocate to instances and if Prism Launcher should manage java automatically or manually.")); m_java_widget->retranslate(); } diff --git a/launcher/ui/setupwizard/JavaWizardPage.h b/launcher/ui/setupwizard/JavaWizardPage.h index dde765f27..9bf9cfa2b 100644 --- a/launcher/ui/setupwizard/JavaWizardPage.h +++ b/launcher/ui/setupwizard/JavaWizardPage.h @@ -9,7 +9,7 @@ class JavaWizardPage : public BaseWizardPage { public: explicit JavaWizardPage(QWidget* parent = Q_NULLPTR); - virtual ~JavaWizardPage() {}; + virtual ~JavaWizardPage() = default; bool wantsRefreshButton() override; void refresh() override; diff --git a/launcher/ui/setupwizard/LoginWizardPage.cpp b/launcher/ui/setupwizard/LoginWizardPage.cpp new file mode 100644 index 000000000..6be24a2f7 --- /dev/null +++ b/launcher/ui/setupwizard/LoginWizardPage.cpp @@ -0,0 +1,45 @@ +#include "LoginWizardPage.h" +#include "minecraft/auth/AccountList.h" +#include "ui/dialogs/MSALoginDialog.h" +#include "ui_LoginWizardPage.h" + +#include "Application.h" + +LoginWizardPage::LoginWizardPage(QWidget* parent) : BaseWizardPage(parent), ui(new Ui::LoginWizardPage) +{ + ui->setupUi(this); +} + +LoginWizardPage::~LoginWizardPage() +{ + delete ui; +} + +void LoginWizardPage::initializePage() {} + +bool LoginWizardPage::validatePage() +{ + return true; +} + +void LoginWizardPage::retranslate() +{ + ui->retranslateUi(this); +} + +void LoginWizardPage::on_pushButton_clicked() +{ + wizard()->hide(); + auto account = MSALoginDialog::newAccount(nullptr); + wizard()->show(); + if (account) { + APPLICATION->accounts()->addAccount(account); + APPLICATION->accounts()->setDefaultAccount(account); + } + + if (wizard()->currentId() == wizard()->pageIds().last()) { + wizard()->accept(); + } else { + wizard()->next(); + } +} diff --git a/launcher/ui/setupwizard/LoginWizardPage.h b/launcher/ui/setupwizard/LoginWizardPage.h new file mode 100644 index 000000000..af71fc183 --- /dev/null +++ b/launcher/ui/setupwizard/LoginWizardPage.h @@ -0,0 +1,24 @@ +#pragma once +#include +#include "BaseWizardPage.h" + +namespace Ui { +class LoginWizardPage; +} + +class LoginWizardPage : public BaseWizardPage { + Q_OBJECT + + public: + explicit LoginWizardPage(QWidget* parent = nullptr); + ~LoginWizardPage(); + + void initializePage() override; + bool validatePage() override; + void retranslate() override; + private slots: + void on_pushButton_clicked(); + + private: + Ui::LoginWizardPage* ui; +}; diff --git a/launcher/ui/setupwizard/LoginWizardPage.ui b/launcher/ui/setupwizard/LoginWizardPage.ui new file mode 100644 index 000000000..191316c4e --- /dev/null +++ b/launcher/ui/setupwizard/LoginWizardPage.ui @@ -0,0 +1,74 @@ + + + LoginWizardPage + + + + 0 + 0 + 400 + 300 + + + + Form + + + + + + <html><head/><body><p><span style=" font-size:14pt; font-weight:600;">Add Microsoft account</span></p></body></html> + + + Qt::RichText + + + true + + + + + + + In order to play Minecraft, you must have at least one Microsoft account logged in. Do you want to log in now? + + + true + + + + + + + Qt::Horizontal + + + + + + + Add Microsoft account + + + + + + + Qt::Vertical + + + + 20 + 156 + + + + + + + + + + + + diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 8e2d94556..2b270c482 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -3,9 +3,11 @@ #include #include #include +#include #include #include #include +#include #include #include #include @@ -34,11 +36,13 @@ JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) goodIcon = APPLICATION->getThemedIcon("status-good"); yellowIcon = APPLICATION->getThemedIcon("status-yellow"); badIcon = APPLICATION->getThemedIcon("status-bad"); + m_memoryTimer = new QTimer(this); setupUi(); - connect(m_minMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryValueChanged(int))); - connect(m_maxMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryValueChanged(int))); - connect(m_permGenSpinBox, SIGNAL(valueChanged(int)), this, SLOT(memoryValueChanged(int))); + connect(m_minMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int))); + connect(m_maxMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int))); + connect(m_permGenSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int))); + connect(m_memoryTimer, &QTimer::timeout, this, &JavaSettingsWidget::memoryValueChanged); connect(m_versionWidget, &VersionSelectWidget::selectedVersionChanged, this, &JavaSettingsWidget::javaVersionSelected); connect(m_javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaBrowseBtn_clicked); connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited); @@ -55,7 +59,6 @@ void JavaSettingsWidget::setupUi() m_verticalLayout->setObjectName(QStringLiteral("verticalLayout")); m_versionWidget = new VersionSelectWidget(this); - m_verticalLayout->addWidget(m_versionWidget); m_horizontalLayout = new QHBoxLayout(); m_horizontalLayout->setObjectName(QStringLiteral("horizontalLayout")); @@ -73,8 +76,6 @@ void JavaSettingsWidget::setupUi() m_javaStatusBtn->setIcon(yellowIcon); m_horizontalLayout->addWidget(m_javaStatusBtn); - m_verticalLayout->addLayout(m_horizontalLayout); - m_memoryGroupBox = new QGroupBox(this); m_memoryGroupBox->setObjectName(QStringLiteral("memoryGroupBox")); m_gridLayout_2 = new QGridLayout(m_memoryGroupBox); @@ -136,8 +137,6 @@ void JavaSettingsWidget::setupUi() m_horizontalBtnLayout->addWidget(m_javaDownloadBtn); } - m_verticalLayout->addLayout(m_horizontalBtnLayout); - m_autoJavaGroupBox = new QGroupBox(this); m_autoJavaGroupBox->setObjectName(QStringLiteral("autoJavaGroupBox")); m_veriticalJavaLayout = new QVBoxLayout(m_autoJavaGroupBox); @@ -145,21 +144,42 @@ void JavaSettingsWidget::setupUi() m_autodetectJavaCheckBox = new QCheckBox(m_autoJavaGroupBox); m_autodetectJavaCheckBox->setObjectName("autodetectJavaCheckBox"); + m_autodetectJavaCheckBox->setChecked(true); m_veriticalJavaLayout->addWidget(m_autodetectJavaCheckBox); if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { m_autodownloadCheckBox = new QCheckBox(m_autoJavaGroupBox); m_autodownloadCheckBox->setObjectName("autodownloadCheckBox"); - m_autodownloadCheckBox->setEnabled(false); + m_autodownloadCheckBox->setEnabled(m_autodetectJavaCheckBox->isChecked()); m_veriticalJavaLayout->addWidget(m_autodownloadCheckBox); connect(m_autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] { m_autodownloadCheckBox->setEnabled(m_autodetectJavaCheckBox->isChecked()); if (!m_autodetectJavaCheckBox->isChecked()) m_autodownloadCheckBox->setChecked(false); }); + + connect(m_autodownloadCheckBox, &QCheckBox::stateChanged, this, [this] { + auto isChecked = m_autodownloadCheckBox->isChecked(); + m_versionWidget->setVisible(!isChecked); + m_javaStatusBtn->setVisible(!isChecked); + m_javaBrowseBtn->setVisible(!isChecked); + m_javaPathTextBox->setVisible(!isChecked); + m_javaDownloadBtn->setVisible(!isChecked); + if (!isChecked) { + m_verticalLayout->removeItem(m_verticalSpacer); + } else { + m_verticalLayout->addSpacerItem(m_verticalSpacer); + } + }); } m_verticalLayout->addWidget(m_autoJavaGroupBox); + m_verticalLayout->addLayout(m_horizontalBtnLayout); + + m_verticalLayout->addWidget(m_versionWidget); + m_verticalLayout->addLayout(m_horizontalLayout); + m_verticalSpacer = new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding); + retranslate(); } @@ -177,23 +197,16 @@ void JavaSettingsWidget::initialize() m_maxMemSpinBox->setValue(observedMaxMemory); m_permGenSpinBox->setValue(observedPermGenMemory); updateThresholds(); - if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { - auto button = - CustomMessageBox::selectable(this, tr("Automatic Java Download"), - tr("%1 can automatically download the correct Java version for each version of Minecraft..\n" - "Do you want to enable Java auto-download?\n") - .arg(BuildConfig.LAUNCHER_DISPLAYNAME), - QMessageBox::Question, QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) - ->exec(); - auto checked = button == QMessageBox::Yes; - m_autodetectJavaCheckBox->setChecked(checked); - m_autodownloadCheckBox->setChecked(checked); + m_autodownloadCheckBox->setChecked(true); } } void JavaSettingsWidget::refresh() { + if (BuildConfig.JAVA_DOWNLOADER_ENABLED && m_autodownloadCheckBox->isChecked()) { + return; + } if (JavaUtils::getJavaCheckPath().isEmpty()) { JavaCommon::javaCheckNotFound(this); return; @@ -297,20 +310,21 @@ int JavaSettingsWidget::permGenSize() const return m_permGenSpinBox->value(); } -void JavaSettingsWidget::memoryValueChanged(int) +void JavaSettingsWidget::memoryValueChanged() { bool actuallyChanged = false; unsigned int min = m_minMemSpinBox->value(); unsigned int max = m_maxMemSpinBox->value(); unsigned int permgen = m_permGenSpinBox->value(); - QObject* obj = sender(); - if (obj == m_minMemSpinBox && min != observedMinMemory) { + if (min != observedMinMemory) { observedMinMemory = min; actuallyChanged = true; - } else if (obj == m_maxMemSpinBox && max != observedMaxMemory) { + } + if (max != observedMaxMemory) { observedMaxMemory = max; actuallyChanged = true; - } else if (obj == m_permGenSpinBox && permgen != observedPermGenMemory) { + } + if (permgen != observedPermGenMemory) { observedPermGenMemory = permgen; actuallyChanged = true; } @@ -505,6 +519,9 @@ void JavaSettingsWidget::updateThresholds() } else if (observedMaxMemory < observedMinMemory) { iconName = "status-yellow"; m_labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation is smaller than the minimum value")); + } else if (BuildConfig.JAVA_DOWNLOADER_ENABLED && m_autodownloadCheckBox->isChecked()) { + iconName = "status-good"; + m_labelMaxMemIcon->setToolTip(""); } else if (observedMaxMemory > 2048 && !m_result.is_64bit) { iconName = "status-bad"; m_labelMaxMemIcon->setToolTip(tr("You are exceeding the maximum allocation supported by 32-bit installations of Java.")); @@ -530,3 +547,13 @@ bool JavaSettingsWidget::autoDetectJava() const { return m_autodetectJavaCheckBox->isChecked(); } + +void JavaSettingsWidget::onSpinBoxValueChanged(int) +{ + m_memoryTimer->start(500); +} + +JavaSettingsWidget::~JavaSettingsWidget() +{ + delete m_verticalSpacer; +}; \ No newline at end of file diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index 622c473fe..35be48478 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -17,6 +17,7 @@ class QGroupBox; class QGridLayout; class QLabel; class QToolButton; +class QSpacerItem; /** * This is a widget for all the Java settings dialogs and pages. @@ -26,7 +27,7 @@ class JavaSettingsWidget : public QWidget { public: explicit JavaSettingsWidget(QWidget* parent); - virtual ~JavaSettingsWidget() = default; + virtual ~JavaSettingsWidget(); enum class JavaStatus { NotSet, Pending, Good, DoesNotExist, DoesNotStart, ReturnedInvalidData } javaStatus = JavaStatus::NotSet; @@ -48,7 +49,8 @@ class JavaSettingsWidget : public QWidget { void updateThresholds(); protected slots: - void memoryValueChanged(int); + void onSpinBoxValueChanged(int); + void memoryValueChanged(); void javaPathEdited(const QString& path); void javaVersionSelected(BaseVersion::Ptr version); void on_javaBrowseBtn_clicked(); @@ -65,6 +67,7 @@ class JavaSettingsWidget : public QWidget { private: /* data */ VersionSelectWidget* m_versionWidget = nullptr; QVBoxLayout* m_verticalLayout = nullptr; + QSpacerItem* m_verticalSpacer = nullptr; QLineEdit* m_javaPathTextBox = nullptr; QPushButton* m_javaBrowseBtn = nullptr; @@ -99,4 +102,5 @@ class JavaSettingsWidget : public QWidget { uint64_t m_availableMemory = 0ull; shared_qobject_ptr m_checker; JavaChecker::Result m_result; + QTimer* m_memoryTimer; }; From 973b43ca7a12cdcb6891d069b3bb6782eda6f28a Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 13 Sep 2024 20:01:45 +0300 Subject: [PATCH 173/616] Add techinc client ID Signed-off-by: Trial97 --- launcher/Application.cpp | 3 ++ launcher/ui/pages/global/APIPage.cpp | 2 ++ launcher/ui/pages/global/APIPage.ui | 34 +++++++++++++++++-- .../modplatform/technic/TechnicModel.cpp | 4 +++ 4 files changed, 41 insertions(+), 2 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 9cd0445e6..ba9a9caa9 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -777,6 +777,9 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) // FTBApp instances m_settings->registerSetting("FTBAppInstancesPath", ""); + // Custom Techinc Client ID + m_settings->registerSetting("TechincClientID", ""); + // Init page provider { m_globalSettingsProvider = std::make_shared(tr("Settings")); diff --git a/launcher/ui/pages/global/APIPage.cpp b/launcher/ui/pages/global/APIPage.cpp index 82aa76a4f..4beb0b886 100644 --- a/launcher/ui/pages/global/APIPage.cpp +++ b/launcher/ui/pages/global/APIPage.cpp @@ -143,6 +143,7 @@ void APIPage::loadSettings() ui->modrinthToken->setText(modrinthToken); QString customUserAgent = s->get("UserAgentOverride").toString(); ui->userAgentLineEdit->setText(customUserAgent); + ui->techicClientID->setText(s->get("TechincClientID").toString()); } void APIPage::applySettings() @@ -172,6 +173,7 @@ void APIPage::applySettings() QString modrinthToken = ui->modrinthToken->text(); s->set("ModrinthToken", modrinthToken); s->set("UserAgentOverride", ui->userAgentLineEdit->text()); + s->set("TechincClientID", ui->techicClientID->text()); } bool APIPage::apply() diff --git a/launcher/ui/pages/global/APIPage.ui b/launcher/ui/pages/global/APIPage.ui index a7f3f3f72..f52d41d23 100644 --- a/launcher/ui/pages/global/APIPage.ui +++ b/launcher/ui/pages/global/APIPage.ui @@ -6,8 +6,8 @@ 0 0 - 800 - 600 + 841 + 620 @@ -288,6 +288,36 @@ + + + + Techinc Client ID + + + + + + <html><head/><body><p>Note: you only need to set this to access private data.</p></body></html> + + + + + + + (None) + + + + + + + Enter a custom GUID client ID for Techinc here. + + + + + + diff --git a/launcher/ui/pages/modplatform/technic/TechnicModel.cpp b/launcher/ui/pages/modplatform/technic/TechnicModel.cpp index 4181edab6..55a8b254c 100644 --- a/launcher/ui/pages/modplatform/technic/TechnicModel.cpp +++ b/launcher/ui/pages/modplatform/technic/TechnicModel.cpp @@ -154,6 +154,10 @@ void Technic::ListModel::performSearch() QString("%1search?build=%2&q=%3").arg(BuildConfig.TECHNIC_API_BASE_URL, BuildConfig.TECHNIC_API_BUILD, currentSearchTerm); searchMode = List; } + auto clientId = APPLICATION->settings()->get("TechincClientID").toString(); + if (!clientId.isEmpty()) { + searchUrl += "?cid=" + clientId; + } netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl), response)); jobPtr = netJob; jobPtr->start(); From d20f24d96fa35311935b58aa6cbae5623f437c6a Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Fri, 13 Sep 2024 21:13:21 +0300 Subject: [PATCH 174/616] Apply suggestions from code review Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- launcher/Application.cpp | 4 ++-- launcher/ui/pages/global/APIPage.cpp | 4 ++-- launcher/ui/pages/global/APIPage.ui | 6 +++--- launcher/ui/pages/modplatform/technic/TechnicModel.cpp | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index ba9a9caa9..815f842c5 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -777,8 +777,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) // FTBApp instances m_settings->registerSetting("FTBAppInstancesPath", ""); - // Custom Techinc Client ID - m_settings->registerSetting("TechincClientID", ""); + // Custom Technic Client ID + m_settings->registerSetting("TechnicClientID", ""); // Init page provider { diff --git a/launcher/ui/pages/global/APIPage.cpp b/launcher/ui/pages/global/APIPage.cpp index 4beb0b886..0af34bcd6 100644 --- a/launcher/ui/pages/global/APIPage.cpp +++ b/launcher/ui/pages/global/APIPage.cpp @@ -143,7 +143,7 @@ void APIPage::loadSettings() ui->modrinthToken->setText(modrinthToken); QString customUserAgent = s->get("UserAgentOverride").toString(); ui->userAgentLineEdit->setText(customUserAgent); - ui->techicClientID->setText(s->get("TechincClientID").toString()); + ui->techicClientID->setText(s->get("TechnicClientID").toString()); } void APIPage::applySettings() @@ -173,7 +173,7 @@ void APIPage::applySettings() QString modrinthToken = ui->modrinthToken->text(); s->set("ModrinthToken", modrinthToken); s->set("UserAgentOverride", ui->userAgentLineEdit->text()); - s->set("TechincClientID", ui->techicClientID->text()); + s->set("TechincClientID", ui->technicClientID->text()); } bool APIPage::apply() diff --git a/launcher/ui/pages/global/APIPage.ui b/launcher/ui/pages/global/APIPage.ui index f52d41d23..9c713aa79 100644 --- a/launcher/ui/pages/global/APIPage.ui +++ b/launcher/ui/pages/global/APIPage.ui @@ -291,7 +291,7 @@ - Techinc Client ID + Technic Client ID @@ -302,7 +302,7 @@ - + (None) @@ -311,7 +311,7 @@ - Enter a custom GUID client ID for Techinc here. + Enter a custom GUID client ID for Technic here. diff --git a/launcher/ui/pages/modplatform/technic/TechnicModel.cpp b/launcher/ui/pages/modplatform/technic/TechnicModel.cpp index 55a8b254c..f7e7f4433 100644 --- a/launcher/ui/pages/modplatform/technic/TechnicModel.cpp +++ b/launcher/ui/pages/modplatform/technic/TechnicModel.cpp @@ -154,7 +154,7 @@ void Technic::ListModel::performSearch() QString("%1search?build=%2&q=%3").arg(BuildConfig.TECHNIC_API_BASE_URL, BuildConfig.TECHNIC_API_BUILD, currentSearchTerm); searchMode = List; } - auto clientId = APPLICATION->settings()->get("TechincClientID").toString(); + auto clientId = APPLICATION->settings()->get("TechnicClientID").toString(); if (!clientId.isEmpty()) { searchUrl += "?cid=" + clientId; } From 1db122f1a29b90f2b556aeaddb7336233c0c4769 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 13 Sep 2024 21:37:50 +0300 Subject: [PATCH 175/616] fix typo Signed-off-by: Trial97 --- launcher/ui/pages/global/APIPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/global/APIPage.cpp b/launcher/ui/pages/global/APIPage.cpp index 0af34bcd6..5ec6fbce5 100644 --- a/launcher/ui/pages/global/APIPage.cpp +++ b/launcher/ui/pages/global/APIPage.cpp @@ -143,7 +143,7 @@ void APIPage::loadSettings() ui->modrinthToken->setText(modrinthToken); QString customUserAgent = s->get("UserAgentOverride").toString(); ui->userAgentLineEdit->setText(customUserAgent); - ui->techicClientID->setText(s->get("TechnicClientID").toString()); + ui->technicClientID->setText(s->get("TechnicClientID").toString()); } void APIPage::applySettings() From e18e9b0509b93513e9e99a4f571faa3f34764fc5 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 13 Sep 2024 22:57:08 +0300 Subject: [PATCH 176/616] fix server launch Signed-off-by: Trial97 --- launcher/minecraft/MinecraftInstance.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index c94f3f234..98ac7647f 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -193,7 +193,7 @@ void MinecraftInstance::loadSpecificSettings() } // Join server on launch, this does not have a global override - m_settings->registerSetting({ "JoinServerOnLaunch", "JoinOnLaunch" }, false); + m_settings->registerSetting("JoinServerOnLaunch", false); m_settings->registerSetting("JoinServerOnLaunchAddress", ""); m_settings->registerSetting("JoinWorldOnLaunch", ""); @@ -1063,7 +1063,7 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(makeShared(pptr)); } - if (!targetToJoin && settings()->get("JoinOnLaunch").toBool()) { + if (!targetToJoin && settings()->get("JoinServerOnLaunch").toBool()) { QString fullAddress = settings()->get("JoinServerOnLaunchAddress").toString(); if (!fullAddress.isEmpty()) { targetToJoin.reset(new MinecraftTarget(MinecraftTarget::parse(fullAddress, false))); From 6706317f2076b20095eac8c7ad8495cf8e1172df Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 13 Sep 2024 23:26:04 +0300 Subject: [PATCH 177/616] fix java crash on refresh Signed-off-by: Trial97 --- launcher/Filter.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/Filter.h b/launcher/Filter.h index a8c9c14d8..ae835e724 100644 --- a/launcher/Filter.h +++ b/launcher/Filter.h @@ -57,5 +57,5 @@ class ExactListFilter : public Filter { bool accepts(const QString& value) override; private: - const QStringList& m_pattern; + QStringList m_pattern; }; From 22ebf7e9611432ec6bc9a85df363a2cf6487d0b3 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 14 Sep 2024 00:13:16 +0300 Subject: [PATCH 178/616] fix download java abort being stuck Signed-off-by: Trial97 --- launcher/launch/TaskStepWrapper.cpp | 4 +++- launcher/minecraft/MinecraftLoadAndCheck.cpp | 4 +++- launcher/minecraft/launch/AutoInstallJava.cpp | 14 +++++++------- 3 files changed, 13 insertions(+), 9 deletions(-) diff --git a/launcher/launch/TaskStepWrapper.cpp b/launcher/launch/TaskStepWrapper.cpp index 136057620..db9e8fad2 100644 --- a/launcher/launch/TaskStepWrapper.cpp +++ b/launcher/launch/TaskStepWrapper.cpp @@ -59,7 +59,9 @@ bool TaskStepWrapper::canAbort() const bool TaskStepWrapper::abort() { if (m_task && m_task->canAbort()) { - return m_task->abort(); + auto status = m_task->abort(); + emitFailed("Aborted."); + return status; } return Task::abort(); } diff --git a/launcher/minecraft/MinecraftLoadAndCheck.cpp b/launcher/minecraft/MinecraftLoadAndCheck.cpp index 655894d2a..a9dcdf067 100644 --- a/launcher/minecraft/MinecraftLoadAndCheck.cpp +++ b/launcher/minecraft/MinecraftLoadAndCheck.cpp @@ -37,7 +37,9 @@ bool MinecraftLoadAndCheck::canAbort() const bool MinecraftLoadAndCheck::abort() { if (m_task && m_task->canAbort()) { - return m_task->abort(); + auto status = m_task->abort(); + emitFailed("Aborted."); + return status; } return Task::abort(); } \ No newline at end of file diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index 3f58a28a6..5daf89382 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -180,10 +180,7 @@ void AutoInstallJava::downloadJava(Meta::Version::Ptr version, QString javaName) deletePath(); emitFailed(reason); }); - connect(this, &Task::aborted, this, [this, deletePath] { - m_current_task->abort(); - deletePath(); - }); + connect(m_current_task.get(), &Task::aborted, this, [deletePath] { deletePath(); }); connect(m_current_task.get(), &Task::succeeded, this, &AutoInstallJava::setJavaPathFromPartial); connect(m_current_task.get(), &Task::failed, this, &AutoInstallJava::tryNextMajorJava); connect(m_current_task.get(), &Task::progress, this, &AutoInstallJava::setProgress); @@ -236,7 +233,10 @@ void AutoInstallJava::tryNextMajorJava() } bool AutoInstallJava::abort() { - if (m_current_task && m_current_task->canAbort()) - return m_current_task->abort(); - return true; + if (m_current_task && m_current_task->canAbort()) { + auto status = m_current_task->abort(); + emitFailed("Aborted."); + return status; + } + return Task::abort(); } From e59f90eca8db7f60328ee2ca93c6b20053572ea6 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Sat, 14 Sep 2024 00:19:48 +0300 Subject: [PATCH 179/616] Update launcher/ui/pages/global/APIPage.cpp Co-authored-by: TheKodeToad Signed-off-by: Alexandru Ionut Tripon --- launcher/ui/pages/global/APIPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/global/APIPage.cpp b/launcher/ui/pages/global/APIPage.cpp index 5ec6fbce5..a137c4cde 100644 --- a/launcher/ui/pages/global/APIPage.cpp +++ b/launcher/ui/pages/global/APIPage.cpp @@ -173,7 +173,7 @@ void APIPage::applySettings() QString modrinthToken = ui->modrinthToken->text(); s->set("ModrinthToken", modrinthToken); s->set("UserAgentOverride", ui->userAgentLineEdit->text()); - s->set("TechincClientID", ui->technicClientID->text()); + s->set("TechnicClientID", ui->technicClientID->text()); } bool APIPage::apply() From 5073fc19d437f9e070d2dba27e353eb6e505a7de Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 14 Sep 2024 00:36:31 +0300 Subject: [PATCH 180/616] fix java autodetect when instance settings are open Signed-off-by: Trial97 --- launcher/ui/pages/instance/InstanceSettingsPage.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index 19bc9fdf9..cf8d86cd4 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -351,6 +351,9 @@ void InstanceSettingsPage::loadSettings() [this] { ui->javaSettingsGroupBox->setChecked(m_settings->get("OverrideJavaLocation").toBool()); }); ui->javaSettingsGroupBox->setChecked(overrideLocation); ui->javaPathTextBox->setText(m_settings->get("JavaPath").toString()); + connect(m_settings->getSetting("JavaPath").get(), &Setting::SettingChanged, ui->javaSettingsGroupBox, + [this] { ui->javaPathTextBox->setText(m_settings->get("JavaPath").toString()); }); + ui->skipCompatibilityCheckbox->setChecked(m_settings->get("IgnoreJavaCompatibility").toBool()); ui->javaArgumentsGroupBox->setChecked(overrideArgs); From 312009513d0b3b3a8e08d386bd249ea85aa8bdef Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 14 Sep 2024 18:27:12 +0300 Subject: [PATCH 181/616] add open java folder action Signed-off-by: Trial97 --- launcher/Application.cpp | 1 + launcher/LaunchController.cpp | 1 + launcher/ui/MainWindow.cpp | 7 +++++++ launcher/ui/MainWindow.h | 2 +- launcher/ui/MainWindow.ui | 15 ++++++++++++++- launcher/ui/themes/ThemeManager.h | 4 +++- 6 files changed, 27 insertions(+), 3 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 35eb6e91e..3bed11db2 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1870,6 +1870,7 @@ QUrl Application::normalizeImportUrl(QString const& url) return QUrl::fromUserInput(url); } } + const QString Application::javaPath() { return m_settings->get("JavaDir").toString(); diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index 73800574f..687da1322 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -53,6 +53,7 @@ #include #include #include +#include #include #include "BuildConfig.h" diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index a5ccbc19a..f19ac85d2 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -233,6 +233,8 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi if (qgetenv("XDG_CURRENT_DESKTOP") == "gamescope") { ui->mainToolBar->addAction(ui->actionCloseWindow); } + + ui->actionViewJavaFolder->setVisible(BuildConfig.JAVA_DOWNLOADER_ENABLED); } // add the toolbar toggles to the view menu @@ -1223,6 +1225,11 @@ void MainWindow::on_actionViewLogsFolder_triggered() DesktopServices::openPath("logs", true); } +void MainWindow::on_actionViewJavaFolder_triggered() +{ + DesktopServices::openPath(APPLICATION->javaPath(), true); +} + void MainWindow::refreshInstances() { APPLICATION->instances()->loadList(); diff --git a/launcher/ui/MainWindow.h b/launcher/ui/MainWindow.h index 41bef9980..0e692eda7 100644 --- a/launcher/ui/MainWindow.h +++ b/launcher/ui/MainWindow.h @@ -48,7 +48,6 @@ #include "BaseInstance.h" #include "minecraft/auth/MinecraftAccount.h" -#include "net/NetJob.h" class LaunchController; class NewsChecker; @@ -119,6 +118,7 @@ class MainWindow : public QMainWindow { void on_actionViewCatPackFolder_triggered(); void on_actionViewIconsFolder_triggered(); void on_actionViewLogsFolder_triggered(); + void on_actionViewJavaFolder_triggered(); void on_actionViewSkinsFolder_triggered(); diff --git a/launcher/ui/MainWindow.ui b/launcher/ui/MainWindow.ui index bad8762ad..819a1efe7 100644 --- a/launcher/ui/MainWindow.ui +++ b/launcher/ui/MainWindow.ui @@ -131,7 +131,7 @@ 0 0 800 - 22 + 27 @@ -192,6 +192,7 @@ + @@ -788,6 +789,18 @@ Open the cat packs folder in a file browser. + + + + .. + + + Java + + + Open the java folder in a file browser. + + diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index c7e32bc8c..a9036107c 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -18,10 +18,12 @@ */ #pragma once +#include +#include #include +#include #include "IconTheme.h" -#include "ui/MainWindow.h" #include "ui/themes/CatPack.h" #include "ui/themes/ITheme.h" From 0afdce8a31b94fca64fe064d83a07223b6a490a6 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 14 Sep 2024 21:18:20 +0300 Subject: [PATCH 182/616] Add extra step to macos java install Signed-off-by: Trial97 --- launcher/CMakeLists.txt | 2 + launcher/java/download/SymlinkTask.cpp | 81 +++++++++++++++++++ launcher/java/download/SymlinkTask.h | 36 +++++++++ launcher/minecraft/launch/AutoInstallJava.cpp | 9 +++ launcher/ui/java/InstallJavaDialog.cpp | 8 ++ 5 files changed, 136 insertions(+) create mode 100644 launcher/java/download/SymlinkTask.cpp create mode 100644 launcher/java/download/SymlinkTask.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 975946740..bd6dfc5b6 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -439,6 +439,8 @@ set(JAVA_SOURCES java/download/ArchiveDownloadTask.h java/download/ManifestDownloadTask.cpp java/download/ManifestDownloadTask.h + java/download/SymlinkTask.cpp + java/download/SymlinkTask.h ui/java/InstallJavaDialog.h ui/java/InstallJavaDialog.cpp diff --git a/launcher/java/download/SymlinkTask.cpp b/launcher/java/download/SymlinkTask.cpp new file mode 100644 index 000000000..9841c5015 --- /dev/null +++ b/launcher/java/download/SymlinkTask.cpp @@ -0,0 +1,81 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023-2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include "java/download/SymlinkTask.h" +#include + +#include "FileSystem.h" + +namespace Java { +SymlinkTask::SymlinkTask(QString final_path) : m_path(final_path) {} + +QString findBinPath(QString root, QString pattern) +{ + auto path = FS::PathCombine(root, pattern); + if (QFileInfo::exists(path)) { + return path; + } + + auto entries = QDir(root).entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); + for (auto& entry : entries) { + path = FS::PathCombine(entry.absoluteFilePath(), pattern); + if (QFileInfo::exists(path)) { + return path; + } + } + + return {}; +} + +void SymlinkTask::executeTask() +{ + setStatus(tr("Check Java bin")); + const auto binPath = FS::PathCombine("bin", "java"); + const auto wantedPath = FS::PathCombine(m_path, binPath); + if (QFileInfo::exists(wantedPath)) { + emitSucceeded(); + return; + } + + setStatus(tr("Search for Java bin")); + const auto contentsPartialPath = FS::PathCombine("Contents", "Home", binPath); + const auto relativePathToBin = findBinPath(m_path, contentsPartialPath); + if (relativePathToBin.isEmpty()) { + emitFailed(tr("Failed to find bin java")); + return; + } + const auto folderToLink = relativePathToBin.chopped(binPath.length()); + + setStatus(tr("Collect folders to symlink")); + auto entries = QDir(folderToLink).entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries); + QList files; + setProgress(0, entries.length()); + for (auto& entry : entries) { + files.append({ entry.absoluteFilePath(), FS::PathCombine(m_path, entry.fileName()) }); + } + + setStatus(tr("Symlink Java")); + FS::create_link folderLink(files); + connect(&folderLink, &FS::create_link::fileLinked, [this](QString src, QString dst) { setProgress(m_progress + 1, m_progressTotal); }); + if (!folderLink()) { + emitFailed(folderLink.getOSError().message().c_str()); + } else { + emitSucceeded(); + } +} + +} // namespace Java \ No newline at end of file diff --git a/launcher/java/download/SymlinkTask.h b/launcher/java/download/SymlinkTask.h new file mode 100644 index 000000000..88cb20dd7 --- /dev/null +++ b/launcher/java/download/SymlinkTask.h @@ -0,0 +1,36 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023-2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "tasks/Task.h" +namespace Java { + +class SymlinkTask : public Task { + Q_OBJECT + public: + SymlinkTask(QString final_path); + virtual ~SymlinkTask() = default; + + void executeTask() override; + + protected: + QString m_path; + Task::Ptr m_task; +}; +} // namespace Java \ No newline at end of file diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index 5daf89382..4fad6f15f 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -41,6 +41,7 @@ #include "Application.h" #include "FileSystem.h" #include "MessageLevel.h" +#include "QObjectPtr.h" #include "SysInfo.h" #include "java/JavaInstall.h" #include "java/JavaInstallList.h" @@ -48,10 +49,12 @@ #include "java/JavaVersion.h" #include "java/download/ArchiveDownloadTask.h" #include "java/download/ManifestDownloadTask.h" +#include "java/download/SymlinkTask.h" #include "meta/Index.h" #include "minecraft/MinecraftInstance.h" #include "minecraft/PackProfile.h" #include "net/Mode.h" +#include "tasks/SequentialTask.h" AutoInstallJava::AutoInstallJava(LaunchTask* parent) : LaunchStep(parent) @@ -175,6 +178,12 @@ void AutoInstallJava::downloadJava(Meta::Version::Ptr version, QString javaName) emitFailed(tr("Could not determine Java download type!")); return; } +#if defined(Q_OS_MACOS) + auto seq = makeShared(this, tr("Install Java")); + seq->addTask(m_current_task); + seq->addTask(makeShared(final_path)); + m_current_task = seq; +#endif auto deletePath = [final_path] { FS::deletePath(final_path); }; connect(m_current_task.get(), &Task::failed, this, [this, deletePath](QString reason) { deletePath(); diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index 4fb9fc2d2..f01edc5e5 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -31,10 +31,12 @@ #include "Filter.h" #include "java/download/ArchiveDownloadTask.h" #include "java/download/ManifestDownloadTask.h" +#include "java/download/SymlinkTask.h" #include "meta/Index.h" #include "meta/VersionList.h" #include "minecraft/MinecraftInstance.h" #include "minecraft/PackProfile.h" +#include "tasks/SequentialTask.h" #include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/ProgressDialog.h" #include "ui/java/VersionList.h" @@ -313,6 +315,12 @@ void InstallDialog::done(int result) CustomMessageBox::selectable(this, tr("Error"), error, QMessageBox::Warning)->show(); deletePath(); } +#if defined(Q_OS_MACOS) + auto seq = makeShared(this, tr("Install Java")); + seq->addTask(task); + seq->addTask(makeShared(final_path)); + task = seq; +#endif connect(task.get(), &Task::failed, this, [this, &deletePath](QString reason) { QString error = QString("Java download failed: %1").arg(reason); CustomMessageBox::selectable(this, tr("Error"), error, QMessageBox::Warning)->show(); From 1c6bd74ed8d4818231dd153993ed1643dc4e4543 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Sat, 14 Sep 2024 22:04:18 +0200 Subject: [PATCH 183/616] Disable folder action instead of hiding it and add additional information in the tooltip. Signed-off-by: QazCetelic --- launcher/ui/MainWindow.cpp | 3 ++- launcher/ui/MainWindow.ui | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index f19ac85d2..3f0bb3281 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -234,7 +234,8 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi ui->mainToolBar->addAction(ui->actionCloseWindow); } - ui->actionViewJavaFolder->setVisible(BuildConfig.JAVA_DOWNLOADER_ENABLED); + ui->actionViewJavaFolder->setEnabled(BuildConfig.JAVA_DOWNLOADER_ENABLED); + } // add the toolbar toggles to the view menu diff --git a/launcher/ui/MainWindow.ui b/launcher/ui/MainWindow.ui index 819a1efe7..89e536b01 100644 --- a/launcher/ui/MainWindow.ui +++ b/launcher/ui/MainWindow.ui @@ -798,7 +798,7 @@ Java - Open the java folder in a file browser. + Open the java folder in a file browser. Only available if the built-in Java downloader is used. From 8932a42644411924e64a96c4c905b9f8071fba64 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Sep 2024 00:24:43 +0000 Subject: [PATCH 184/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/c374d94f1536013ca8e92341b540eba4c22f9c62?narHash=sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh%2BaRKoCdaAv5fiO0%3D' (2024-08-21) → 'github:NixOS/nixpkgs/4f807e8940284ad7925ebd0a0993d2a1791acb2f?narHash=sha256-IiA3jfbR7K/B5%2B9byVi9BZGWTD4VSbWe8VLpp9B/iYk%3D' (2024-09-11) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 58ae840c2..58bc4e30f 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1724224976, - "narHash": "sha256-Z/ELQhrSd7bMzTO8r7NZgi9g5emh+aRKoCdaAv5fiO0=", + "lastModified": 1726062873, + "narHash": "sha256-IiA3jfbR7K/B5+9byVi9BZGWTD4VSbWe8VLpp9B/iYk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "c374d94f1536013ca8e92341b540eba4c22f9c62", + "rev": "4f807e8940284ad7925ebd0a0993d2a1791acb2f", "type": "github" }, "original": { From e35faa5522449a8ed65bd855274ce6e54492ba42 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Sun, 15 Sep 2024 09:04:23 +0200 Subject: [PATCH 185/616] Feedback I Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index e226ab471..b60e67bec 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -95,10 +95,8 @@ bool IconList::addPathRecursively(const QString& path) if (!dir.exists()) return false; - bool watching = false; - // Add the directory itself - watching = m_watcher->addPath(path); + bool watching = m_watcher->addPath(path); // Add all subdirectories QFileInfoList entries = dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot); @@ -134,21 +132,19 @@ void IconList::removePathRecursively(const QString& path) QStringList IconList::getIconFilePaths() const { - QStringList icon_files{}; + QStringList iconFiles{}; QStringList directories{ m_dir.absolutePath() }; while (!directories.isEmpty()) { QString first = directories.takeFirst(); QDir dir(first); - for (QString& file_name : dir.entryList(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot, QDir::Name)) { - QString full_path = dir.filePath(file_name); // Convert to full path - QFileInfo file_info(full_path); - if (file_info.isDir()) - directories.push_back(full_path); + for (QFileInfo& fileInfo : dir.entryInfoList(QDir::AllDirs | QDir::Files | QDir::NoDotAndDotDot, QDir::Name)) { + if (fileInfo.isDir()) + directories.push_back(fileInfo.absoluteFilePath()); else - icon_files.push_back(full_path); + iconFiles.push_back(fileInfo.absoluteFilePath()); } } - return icon_files; + return iconFiles; } QString formatName(const QDir& icons_dir, const QFileInfo& file) @@ -157,8 +153,8 @@ QString formatName(const QDir& icons_dir, const QFileInfo& file) return file.baseName(); constexpr auto delimiter = " » "; - QString relative_path_without_extension = icons_dir.relativeFilePath(file.dir().path()) + QDir::separator() + file.baseName(); - return relative_path_without_extension.replace(QDir::separator(), delimiter); + QString relativePathWithoutExtension = icons_dir.relativeFilePath(file.dir().path()) + QDir::separator() + file.baseName(); + return relativePathWithoutExtension.replace(QDir::separator(), delimiter); } void IconList::directoryChanged(const QString& path) From d38e7fa1424c406b86c5556e9c78c870eaa6b317 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Sep 2024 12:41:33 +0300 Subject: [PATCH 186/616] Add more null protection for skin management Signed-off-by: Trial97 --- launcher/minecraft/skins/SkinList.cpp | 6 +++++- launcher/minecraft/skins/SkinModel.cpp | 2 +- launcher/ui/dialogs/skins/SkinManageDialog.cpp | 16 ++++++++++++---- 3 files changed, 18 insertions(+), 6 deletions(-) diff --git a/launcher/minecraft/skins/SkinList.cpp b/launcher/minecraft/skins/SkinList.cpp index fd883ad52..017cb8dc2 100644 --- a/launcher/minecraft/skins/SkinList.cpp +++ b/launcher/minecraft/skins/SkinList.cpp @@ -336,7 +336,11 @@ void SkinList::save() arr << s.toJSON(); } doc["skins"] = arr; - Json::write(doc, m_dir.absoluteFilePath("index.json")); + try { + Json::write(doc, m_dir.absoluteFilePath("index.json")); + } catch (const FS::FileSystemException& e) { + qCritical() << "Failed to write skin index file :" << e.cause(); + } } int SkinList::getSelectedAccountSkin() diff --git a/launcher/minecraft/skins/SkinModel.cpp b/launcher/minecraft/skins/SkinModel.cpp index d53b9e762..937864e2c 100644 --- a/launcher/minecraft/skins/SkinModel.cpp +++ b/launcher/minecraft/skins/SkinModel.cpp @@ -41,7 +41,7 @@ SkinModel::SkinModel(QDir skinDir, QJsonObject obj) QString SkinModel::name() const { - return QFileInfo(m_path).baseName(); + return QFileInfo(m_path).completeBaseName(); } bool SkinModel::rename(QString newName) diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.cpp b/launcher/ui/dialogs/skins/SkinManageDialog.cpp index a947af632..6c85ffa96 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.cpp +++ b/launcher/ui/dialogs/skins/SkinManageDialog.cpp @@ -116,7 +116,7 @@ void SkinManageDialog::selectionChanged(QItemSelection selected, QItemSelection return; m_selected_skin = key; auto skin = m_list.skin(key); - if (!skin) + if (!skin || !skin->isValid()) return; ui->selectedModel->setPixmap(skin->getTexture().scaled(size() * (1. / 3), Qt::KeepAspectRatio, Qt::FastTransformation)); ui->capeCombo->setCurrentIndex(m_capes_idx.value(skin->getCapeId())); @@ -212,7 +212,10 @@ void SkinManageDialog::setupCapes() void SkinManageDialog::on_capeCombo_currentIndexChanged(int index) { auto id = ui->capeCombo->currentData(); - ui->capeImage->setPixmap(m_capes.value(id.toString(), {}).scaled(size() * (1. / 3), Qt::KeepAspectRatio, Qt::FastTransformation)); + auto cape = m_capes.value(id.toString(), {}); + if (!cape.isNull()) { + ui->capeImage->setPixmap(cape.scaled(size() * (1. / 3), Qt::KeepAspectRatio, Qt::FastTransformation)); + } if (auto skin = m_list.skin(m_selected_skin); skin) { skin->setCapeId(id.toString()); } @@ -505,8 +508,13 @@ void SkinManageDialog::resizeEvent(QResizeEvent* event) QSize s = size() * (1. / 3); if (auto skin = m_list.skin(m_selected_skin); skin) { - ui->selectedModel->setPixmap(skin->getTexture().scaled(s, Qt::KeepAspectRatio, Qt::FastTransformation)); + if (skin->isValid()) { + ui->selectedModel->setPixmap(skin->getTexture().scaled(s, Qt::KeepAspectRatio, Qt::FastTransformation)); + } } auto id = ui->capeCombo->currentData(); - ui->capeImage->setPixmap(m_capes.value(id.toString(), {}).scaled(s, Qt::KeepAspectRatio, Qt::FastTransformation)); + auto cape = m_capes.value(id.toString(), {}); + if (!cape.isNull()) { + ui->capeImage->setPixmap(cape.scaled(s, Qt::KeepAspectRatio, Qt::FastTransformation)); + } } From d2f0d1d8d5529dc1bd462c4795c4746b13a3fb65 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Sep 2024 12:42:09 +0300 Subject: [PATCH 187/616] Wrap FS::write in try catch Signed-off-by: Trial97 --- launcher/InstanceCopyTask.cpp | 6 +++++- launcher/ui/dialogs/ExportToModListDialog.cpp | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/launcher/InstanceCopyTask.cpp b/launcher/InstanceCopyTask.cpp index ff2d37723..0220a4144 100644 --- a/launcher/InstanceCopyTask.cpp +++ b/launcher/InstanceCopyTask.cpp @@ -173,7 +173,11 @@ void InstanceCopyTask::copyFinished() allowed_symlinks_file .filePath()); // we dont want to modify the original. also make sure the resulting file is not itself a link. - FS::write(allowed_symlinks_file.filePath(), allowed_symlinks); + try { + FS::write(allowed_symlinks_file.filePath(), allowed_symlinks); + } catch (const FS::FileSystemException& e) { + qCritical() << "Failed to write symlink :" << e.cause(); + } } emitSucceeded(); diff --git a/launcher/ui/dialogs/ExportToModListDialog.cpp b/launcher/ui/dialogs/ExportToModListDialog.cpp index 1e0ae87a3..908743ab0 100644 --- a/launcher/ui/dialogs/ExportToModListDialog.cpp +++ b/launcher/ui/dialogs/ExportToModListDialog.cpp @@ -164,7 +164,12 @@ void ExportToModListDialog::done(int result) if (output.isEmpty()) return; - FS::write(output, ui->finalText->toPlainText().toUtf8()); + + try { + FS::write(output, ui->finalText->toPlainText().toUtf8()); + } catch (const FS::FileSystemException& e) { + qCritical() << "Failed to save mod list file :" << e.cause(); + } } QDialog::done(result); From 2c2defb2660c26731191a9ebf6c48912eb36e20b Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Sep 2024 14:30:23 +0300 Subject: [PATCH 188/616] add Launcher_ prefix to enable java option Signed-off-by: Trial97 --- .github/workflows/build.yml | 10 +++++----- CMakeLists.txt | 6 +++--- buildconfig/BuildConfig.cpp.in | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 942289b0b..25e1c2aab 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -266,23 +266,23 @@ jobs: - name: Configure CMake (macOS) if: runner.os == 'macOS' && matrix.qt_ver == 6 run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_OSX_ARCHITECTURES="x86_64;arm64" -G Ninja - name: Configure CMake (macOS-Legacy) if: runner.os == 'macOS' && matrix.qt_ver == 5 run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DMACOSX_SPARKLE_UPDATE_PUBLIC_KEY="" -DMACOSX_SPARKLE_UPDATE_FEED_URL="" -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DMACOSX_SPARKLE_UPDATE_PUBLIC_KEY="" -DMACOSX_SPARKLE_UPDATE_FEED_URL="" -G Ninja - name: Configure CMake (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' shell: msys2 {0} run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=6 -DCMAKE_OBJDUMP=/mingw64/bin/objdump.exe -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=6 -DCMAKE_OBJDUMP=/mingw64/bin/objdump.exe -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} -G Ninja - name: Configure CMake (Windows MSVC) if: runner.os == 'Windows' && matrix.msystem == '' run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" -A${{ matrix.architecture}} -DLauncher_FORCE_BUNDLED_LIBS=ON -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DCMAKE_MSVC_RUNTIME_LIBRARY="MultiThreadedDLL" -A${{ matrix.architecture}} -DLauncher_FORCE_BUNDLED_LIBS=ON -DLauncher_BUILD_ARTIFACT=${{ matrix.name }}-Qt${{ matrix.qt_ver }} # https://github.com/ccache/ccache/wiki/MS-Visual-Studio (I coudn't figure out the compiler prefix) if ("${{ env.CCACHE_VAR }}") { @@ -297,7 +297,7 @@ jobs: - name: Configure CMake (Linux) if: runner.os == 'Linux' run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -G Ninja ## # BUILD diff --git a/CMakeLists.txt b/CMakeLists.txt index 7445e574a..8727c2ef3 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -220,17 +220,17 @@ set(Launcher_FORCE_BUNDLED_LIBS OFF CACHE BOOL "Prevent using system libraries, set(Launcher_QT_VERSION_MAJOR "6" CACHE STRING "Major Qt version to build against") # Java downloader -set(ENABLE_JAVA_DOWNLOADER_DEFAULT ON) +set(Launcher_ENABLE_JAVA_DOWNLOADER_DEFAULT ON) # Although we recommend enabling this, we cannot guarantee binary compatibility on # differing Linux/BSD/etc distributions. Downstream packagers should be explicitly opt-ing into this # feature if they know it will work with their distribution. if(UNIX AND NOT APPLE) - set(ENABLE_JAVA_DOWNLOADER_DEFAULT OFF) + set(Launcher_ENABLE_JAVA_DOWNLOADER_DEFAULT OFF) endif() # Java downloader -option(ENABLE_JAVA_DOWNLOADER "Build the java downloader feature" ${ENABLE_JAVA_DOWNLOADER_DEFAULT}) +option(Launcher_ENABLE_JAVA_DOWNLOADER "Build the java downloader feature" ${Launcher_ENABLE_JAVA_DOWNLOADER_DEFAULT}) # Native libraries if(UNIX AND APPLE) diff --git a/buildconfig/BuildConfig.cpp.in b/buildconfig/BuildConfig.cpp.in index a2b5c2187..f85b84dfb 100644 --- a/buildconfig/BuildConfig.cpp.in +++ b/buildconfig/BuildConfig.cpp.in @@ -81,8 +81,8 @@ Config::Config() UPDATER_ENABLED = true; } - #cmakedefine01 ENABLE_JAVA_DOWNLOADER - JAVA_DOWNLOADER_ENABLED = ENABLE_JAVA_DOWNLOADER; + #cmakedefine01 Launcher_ENABLE_JAVA_DOWNLOADER + JAVA_DOWNLOADER_ENABLED = Launcher_ENABLE_JAVA_DOWNLOADER; GIT_COMMIT = "@Launcher_GIT_COMMIT@"; GIT_TAG = "@Launcher_GIT_TAG@"; From ca6b62c773554213e507e915034d3a68933d0a1e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Sep 2024 15:51:51 +0300 Subject: [PATCH 189/616] move some URLs in cmake Signed-off-by: Trial97 --- CMakeLists.txt | 3 +++ buildconfig/BuildConfig.cpp.in | 3 +++ buildconfig/BuildConfig.h | 9 +++++++-- launcher/minecraft/auth/steps/MSAStep.cpp | 9 +++++---- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7445e574a..6b9cb8ea8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -176,6 +176,8 @@ endif() set(Launcher_NEWS_RSS_URL "https://prismlauncher.org/feed/feed.xml" CACHE STRING "URL to fetch Prism Launcher's news RSS feed from.") set(Launcher_NEWS_OPEN_URL "https://prismlauncher.org/news" CACHE STRING "URL that gets opened when the user clicks 'More News'") set(Launcher_HELP_URL "https://prismlauncher.org/wiki/help-pages/%1" CACHE STRING "URL (with arg %1 to be substituted with page-id) that gets opened when the user requests help") +set(Launcher_SUCCESSFULL_LOGIN_URL "https://prismlauncher.org/successful-login" CACHE STRING "URL that gets opened when the user succesfully logins.") +set(Launcher_FMLLIBS_BASE_URL "https://files.prismlauncher.org/fmllibs/" CACHE STRING "URL for FML Libraries.") ######## Set version numbers ######## set(Launcher_VERSION_MAJOR 9) @@ -205,6 +207,7 @@ set(Launcher_BUG_TRACKER_URL "https://github.com/PrismLauncher/PrismLauncher/iss # Translations Platform URL set(Launcher_TRANSLATIONS_URL "https://hosted.weblate.org/projects/prismlauncher/launcher/" CACHE STRING "URL for the translations platform.") +set(Launcher_TRANSLATIONS_BASE_URL "https://i18n.prismlauncher.org/" CACHE STRING "URL for the translations files.") # Matrix Space set(Launcher_MATRIX_URL "https://prismlauncher.org/matrix" CACHE STRING "URL to the Matrix Space") diff --git a/buildconfig/BuildConfig.cpp.in b/buildconfig/BuildConfig.cpp.in index a2b5c2187..121ce0729 100644 --- a/buildconfig/BuildConfig.cpp.in +++ b/buildconfig/BuildConfig.cpp.in @@ -116,16 +116,19 @@ Config::Config() NEWS_RSS_URL = "@Launcher_NEWS_RSS_URL@"; NEWS_OPEN_URL = "@Launcher_NEWS_OPEN_URL@"; HELP_URL = "@Launcher_HELP_URL@"; + SUCCESSFULL_LOGIN_URL = "@Launcher_SUCCESSFULL_LOGIN_URL@"; IMGUR_CLIENT_ID = "@Launcher_IMGUR_CLIENT_ID@"; MSA_CLIENT_ID = "@Launcher_MSA_CLIENT_ID@"; FLAME_API_KEY = "@Launcher_CURSEFORGE_API_KEY@"; META_URL = "@Launcher_META_URL@"; + FMLLIBS_BASE_URL = "@Launcher_FMLLIBS_BASE_URL@"; GLFW_LIBRARY_NAME = "@Launcher_GLFW_LIBRARY_NAME@"; OPENAL_LIBRARY_NAME = "@Launcher_OPENAL_LIBRARY_NAME@"; BUG_TRACKER_URL = "@Launcher_BUG_TRACKER_URL@"; TRANSLATIONS_URL = "@Launcher_TRANSLATIONS_URL@"; + TRANSLATIONS_BASE_URL = "@Launcher_TRANSLATIONS_BASE_URL@"; MATRIX_URL = "@Launcher_MATRIX_URL@"; DISCORD_URL = "@Launcher_DISCORD_URL@"; SUBREDDIT_URL = "@Launcher_SUBREDDIT_URL@"; diff --git a/buildconfig/BuildConfig.h b/buildconfig/BuildConfig.h index bb633f297..4684f5709 100644 --- a/buildconfig/BuildConfig.h +++ b/buildconfig/BuildConfig.h @@ -133,6 +133,11 @@ class Config { */ QString HELP_URL; + /** + * URL that gets opened when the user succesfully logins. + */ + QString SUCCESSFULL_LOGIN_URL; + /** * Client ID you can get from Imgur when you register an application */ @@ -165,8 +170,8 @@ class Config { QString RESOURCE_BASE = "https://resources.download.minecraft.net/"; QString LIBRARY_BASE = "https://libraries.minecraft.net/"; QString IMGUR_BASE_URL = "https://api.imgur.com/3/"; - QString FMLLIBS_BASE_URL = "https://files.prismlauncher.org/fmllibs/"; // FIXME: move into CMakeLists - QString TRANSLATIONS_BASE_URL = "https://i18n.prismlauncher.org/"; // FIXME: move into CMakeLists + QString FMLLIBS_BASE_URL; + QString TRANSLATIONS_BASE_URL; QString MODPACKSCH_API_BASE_URL = "https://api.modpacks.ch/"; diff --git a/launcher/minecraft/auth/steps/MSAStep.cpp b/launcher/minecraft/auth/steps/MSAStep.cpp index 3db04bf2f..916f84e4a 100644 --- a/launcher/minecraft/auth/steps/MSAStep.cpp +++ b/launcher/minecraft/auth/steps/MSAStep.cpp @@ -90,15 +90,16 @@ MSAStep::MSAStep(AccountData* data, bool silent) : AuthStep(data), m_silent(sile { auto replyHandler = new QOAuthHttpServerReplyHandler(this); - replyHandler->setCallbackText(R"XXX( + replyHandler->setCallbackText(QString(R"XXX( Login Successful, redirecting... - )XXX"); + )XXX") + .arg(BuildConfig.SUCCESSFULL_LOGIN_URL)); oauth2.setReplyHandler(replyHandler); } else { oauth2.setReplyHandler(new CustomOAuthOobReplyHandler(this)); From 81f30f03600cae726cb841f242235b492aabfd94 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Sep 2024 15:53:54 +0300 Subject: [PATCH 190/616] disable retry for translation files Signed-off-by: Trial97 --- launcher/translations/TranslationsModel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/translations/TranslationsModel.cpp b/launcher/translations/TranslationsModel.cpp index 39719b125..63867636d 100644 --- a/launcher/translations/TranslationsModel.cpp +++ b/launcher/translations/TranslationsModel.cpp @@ -597,6 +597,7 @@ void TranslationsModel::downloadTranslation(QString key) d->m_dl_job.reset(new NetJob("Translation for " + key, APPLICATION->network())); d->m_dl_job->addNetAction(dl); + d->m_dl_job->setAskRetry(false); connect(d->m_dl_job.get(), &NetJob::succeeded, this, &TranslationsModel::dlGood); connect(d->m_dl_job.get(), &NetJob::failed, this, &TranslationsModel::dlFailed); From 75756b49c3f81bd4426728307dcf99b7a4ad31f1 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Sep 2024 16:15:36 +0300 Subject: [PATCH 191/616] reshow login dialog in case account login fails Signed-off-by: Trial97 --- launcher/ui/setupwizard/LoginWizardPage.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/launcher/ui/setupwizard/LoginWizardPage.cpp b/launcher/ui/setupwizard/LoginWizardPage.cpp index 6be24a2f7..f53e31908 100644 --- a/launcher/ui/setupwizard/LoginWizardPage.cpp +++ b/launcher/ui/setupwizard/LoginWizardPage.cpp @@ -35,11 +35,10 @@ void LoginWizardPage::on_pushButton_clicked() if (account) { APPLICATION->accounts()->addAccount(account); APPLICATION->accounts()->setDefaultAccount(account); - } - - if (wizard()->currentId() == wizard()->pageIds().last()) { - wizard()->accept(); - } else { - wizard()->next(); + if (wizard()->currentId() == wizard()->pageIds().last()) { + wizard()->accept(); + } else { + wizard()->next(); + } } } From db3c7d01fd23b42e7f70a2809f6beb5a297375ec Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Mon, 16 Sep 2024 16:36:05 +0300 Subject: [PATCH 192/616] Apply suggestions from code review Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- CMakeLists.txt | 2 +- buildconfig/BuildConfig.cpp.in | 2 +- buildconfig/BuildConfig.h | 2 +- launcher/minecraft/auth/steps/MSAStep.cpp | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6b9cb8ea8..ecca591cb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -176,7 +176,7 @@ endif() set(Launcher_NEWS_RSS_URL "https://prismlauncher.org/feed/feed.xml" CACHE STRING "URL to fetch Prism Launcher's news RSS feed from.") set(Launcher_NEWS_OPEN_URL "https://prismlauncher.org/news" CACHE STRING "URL that gets opened when the user clicks 'More News'") set(Launcher_HELP_URL "https://prismlauncher.org/wiki/help-pages/%1" CACHE STRING "URL (with arg %1 to be substituted with page-id) that gets opened when the user requests help") -set(Launcher_SUCCESSFULL_LOGIN_URL "https://prismlauncher.org/successful-login" CACHE STRING "URL that gets opened when the user succesfully logins.") +set(Launcher_LOGIN_CALLBACK_URL "https://prismlauncher.org/successful-login" CACHE STRING "URL that gets opened when the user successfully logins.") set(Launcher_FMLLIBS_BASE_URL "https://files.prismlauncher.org/fmllibs/" CACHE STRING "URL for FML Libraries.") ######## Set version numbers ######## diff --git a/buildconfig/BuildConfig.cpp.in b/buildconfig/BuildConfig.cpp.in index 121ce0729..a758122d9 100644 --- a/buildconfig/BuildConfig.cpp.in +++ b/buildconfig/BuildConfig.cpp.in @@ -116,7 +116,7 @@ Config::Config() NEWS_RSS_URL = "@Launcher_NEWS_RSS_URL@"; NEWS_OPEN_URL = "@Launcher_NEWS_OPEN_URL@"; HELP_URL = "@Launcher_HELP_URL@"; - SUCCESSFULL_LOGIN_URL = "@Launcher_SUCCESSFULL_LOGIN_URL@"; + LOGIN_CALLBACK_URL = "@Launcher_LOGIN_CALLBACK_URL@"; IMGUR_CLIENT_ID = "@Launcher_IMGUR_CLIENT_ID@"; MSA_CLIENT_ID = "@Launcher_MSA_CLIENT_ID@"; FLAME_API_KEY = "@Launcher_CURSEFORGE_API_KEY@"; diff --git a/buildconfig/BuildConfig.h b/buildconfig/BuildConfig.h index 4684f5709..0626c1d50 100644 --- a/buildconfig/BuildConfig.h +++ b/buildconfig/BuildConfig.h @@ -136,7 +136,7 @@ class Config { /** * URL that gets opened when the user succesfully logins. */ - QString SUCCESSFULL_LOGIN_URL; + QString LOGIN_CALLBACK_URL; /** * Client ID you can get from Imgur when you register an application diff --git a/launcher/minecraft/auth/steps/MSAStep.cpp b/launcher/minecraft/auth/steps/MSAStep.cpp index 916f84e4a..74999414c 100644 --- a/launcher/minecraft/auth/steps/MSAStep.cpp +++ b/launcher/minecraft/auth/steps/MSAStep.cpp @@ -99,7 +99,7 @@ MSAStep::MSAStep(AccountData* data, bool silent) : AuthStep(data), m_silent(sile window.location.replace("%1"); )XXX") - .arg(BuildConfig.SUCCESSFULL_LOGIN_URL)); + .arg(BuildConfig.LOGIN_CALLBACK_URL)); oauth2.setReplyHandler(replyHandler); } else { oauth2.setReplyHandler(new CustomOAuthOobReplyHandler(this)); From 580fc3251810009dc38c590253648b8f5784ce76 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Sep 2024 16:41:16 +0300 Subject: [PATCH 193/616] split the auth loading screen Signed-off-by: Trial97 --- launcher/ui/dialogs/MSALoginDialog.cpp | 14 +- launcher/ui/dialogs/MSALoginDialog.h | 3 +- launcher/ui/dialogs/MSALoginDialog.ui | 262 ++++++++++++++++--------- 3 files changed, 180 insertions(+), 99 deletions(-) diff --git a/launcher/ui/dialogs/MSALoginDialog.cpp b/launcher/ui/dialogs/MSALoginDialog.cpp index 799b5b332..4e38b4187 100644 --- a/launcher/ui/dialogs/MSALoginDialog.cpp +++ b/launcher/ui/dialogs/MSALoginDialog.cpp @@ -78,7 +78,7 @@ int MSALoginDialog::exec() connect(m_authflow_task.get(), &Task::failed, this, &MSALoginDialog::onTaskFailed); connect(m_authflow_task.get(), &Task::succeeded, this, &QDialog::accept); connect(m_authflow_task.get(), &Task::aborted, this, &MSALoginDialog::reject); - connect(m_authflow_task.get(), &Task::status, this, &MSALoginDialog::onTaskStatus); + connect(m_authflow_task.get(), &Task::status, this, &MSALoginDialog::onAuthFlowStatus); connect(m_authflow_task.get(), &AuthFlow::authorizeWithBrowser, this, &MSALoginDialog::authorizeWithBrowser); connect(m_authflow_task.get(), &AuthFlow::authorizeWithBrowserWithExtra, this, &MSALoginDialog::authorizeWithBrowserWithExtra); connect(ui->buttonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, m_authflow_task.get(), &Task::abort); @@ -87,7 +87,7 @@ int MSALoginDialog::exec() connect(m_devicecode_task.get(), &Task::failed, this, &MSALoginDialog::onTaskFailed); connect(m_devicecode_task.get(), &Task::succeeded, this, &QDialog::accept); connect(m_devicecode_task.get(), &Task::aborted, this, &MSALoginDialog::reject); - connect(m_devicecode_task.get(), &Task::status, this, &MSALoginDialog::onTaskStatus); + connect(m_devicecode_task.get(), &Task::status, this, &MSALoginDialog::onDeviceFlowStatus); connect(m_devicecode_task.get(), &AuthFlow::authorizeWithBrowser, this, &MSALoginDialog::authorizeWithBrowser); connect(m_devicecode_task.get(), &AuthFlow::authorizeWithBrowserWithExtra, this, &MSALoginDialog::authorizeWithBrowserWithExtra); connect(ui->buttonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, m_devicecode_task.get(), &Task::abort); @@ -132,7 +132,7 @@ void MSALoginDialog::onTaskFailed(QString reason) void MSALoginDialog::authorizeWithBrowser(const QUrl& url) { - ui->stackedWidget->setCurrentIndex(1); + ui->stackedWidget2->setCurrentIndex(1); ui->loginButton->setToolTip(QString("
%1
").arg(url.toString())); m_url = url; } @@ -152,12 +152,18 @@ void MSALoginDialog::authorizeWithBrowserWithExtra(QString url, QString code, in } } -void MSALoginDialog::onTaskStatus(QString status) +void MSALoginDialog::onDeviceFlowStatus(QString status) { ui->stackedWidget->setCurrentIndex(0); ui->status->setText(status); } +void MSALoginDialog::onAuthFlowStatus(QString status) +{ + ui->stackedWidget2->setCurrentIndex(0); + ui->status2->setText(status); +} + // Public interface MinecraftAccountPtr MSALoginDialog::newAccount(QWidget* parent) { diff --git a/launcher/ui/dialogs/MSALoginDialog.h b/launcher/ui/dialogs/MSALoginDialog.h index 70f480ca9..375ccc57a 100644 --- a/launcher/ui/dialogs/MSALoginDialog.h +++ b/launcher/ui/dialogs/MSALoginDialog.h @@ -40,7 +40,8 @@ class MSALoginDialog : public QDialog { protected slots: void onTaskFailed(QString reason); - void onTaskStatus(QString status); + void onDeviceFlowStatus(QString status); + void onAuthFlowStatus(QString status); void authorizeWithBrowser(const QUrl& url); void authorizeWithBrowserWithExtra(QString url, QString code, int expiresIn); diff --git a/launcher/ui/dialogs/MSALoginDialog.ui b/launcher/ui/dialogs/MSALoginDialog.ui index c6821782f..69cd2e1ab 100644 --- a/launcher/ui/dialogs/MSALoginDialog.ui +++ b/launcher/ui/dialogs/MSALoginDialog.ui @@ -7,7 +7,7 @@ 0 0 440 - 430 + 447 @@ -20,6 +20,171 @@ Add Microsoft Account + + + + 1 + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 16 + 75 + true + + + + Please wait... + + + Qt::AlignCenter + + + true + + + + + + + Status + + + Qt::AlignCenter + + + true + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 250 + 40 + + + + Sign in with Microsoft + + + true + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + + + + 16 + + + + Or + + + Qt::AlignCenter + + + + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + @@ -28,7 +193,7 @@ - + Qt::Vertical @@ -89,98 +254,7 @@ - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 250 - 40 - - - - Sign in with Microsoft - - - true - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - - - - - - 16 - - - - Or - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - Qt::Horizontal - - - - - + From 8d14060ad14e6463825210c2d28c266e1563e3e1 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Mon, 16 Sep 2024 16:46:01 +0300 Subject: [PATCH 194/616] Apply suggestions from code review Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- launcher/java/download/SymlinkTask.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/launcher/java/download/SymlinkTask.cpp b/launcher/java/download/SymlinkTask.cpp index 9841c5015..843c7caa9 100644 --- a/launcher/java/download/SymlinkTask.cpp +++ b/launcher/java/download/SymlinkTask.cpp @@ -43,7 +43,7 @@ QString findBinPath(QString root, QString pattern) void SymlinkTask::executeTask() { - setStatus(tr("Check Java bin")); + setStatus(tr("Checking for Java binary path")); const auto binPath = FS::PathCombine("bin", "java"); const auto wantedPath = FS::PathCombine(m_path, binPath); if (QFileInfo::exists(wantedPath)) { @@ -51,16 +51,16 @@ void SymlinkTask::executeTask() return; } - setStatus(tr("Search for Java bin")); + setStatus(tr("Searching for Java binary path")); const auto contentsPartialPath = FS::PathCombine("Contents", "Home", binPath); const auto relativePathToBin = findBinPath(m_path, contentsPartialPath); if (relativePathToBin.isEmpty()) { - emitFailed(tr("Failed to find bin java")); + emitFailed(tr("Failed to find Java binary path")); return; } const auto folderToLink = relativePathToBin.chopped(binPath.length()); - setStatus(tr("Collect folders to symlink")); + setStatus(tr("Collecting folders to symlink")); auto entries = QDir(folderToLink).entryInfoList(QDir::NoDotAndDotDot | QDir::AllEntries); QList files; setProgress(0, entries.length()); @@ -68,7 +68,7 @@ void SymlinkTask::executeTask() files.append({ entry.absoluteFilePath(), FS::PathCombine(m_path, entry.fileName()) }); } - setStatus(tr("Symlink Java")); + setStatus(tr("Symlinking Java binary path")); FS::create_link folderLink(files); connect(&folderLink, &FS::create_link::fileLinked, [this](QString src, QString dst) { setProgress(m_progress + 1, m_progressTotal); }); if (!folderLink()) { From 2e537e55de415d04d4eebda244c609e2c16ad894 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Mon, 16 Sep 2024 17:47:58 +0300 Subject: [PATCH 195/616] Apply suggestions from code review Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- CMakeLists.txt | 2 +- buildconfig/BuildConfig.cpp.in | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ecca591cb..cc01672c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -207,7 +207,7 @@ set(Launcher_BUG_TRACKER_URL "https://github.com/PrismLauncher/PrismLauncher/iss # Translations Platform URL set(Launcher_TRANSLATIONS_URL "https://hosted.weblate.org/projects/prismlauncher/launcher/" CACHE STRING "URL for the translations platform.") -set(Launcher_TRANSLATIONS_BASE_URL "https://i18n.prismlauncher.org/" CACHE STRING "URL for the translations files.") +set(Launcher_TRANSLATION_FILES_URL "https://i18n.prismlauncher.org/" CACHE STRING "URL for the translations files.") # Matrix Space set(Launcher_MATRIX_URL "https://prismlauncher.org/matrix" CACHE STRING "URL to the Matrix Space") diff --git a/buildconfig/BuildConfig.cpp.in b/buildconfig/BuildConfig.cpp.in index a758122d9..6585ebe31 100644 --- a/buildconfig/BuildConfig.cpp.in +++ b/buildconfig/BuildConfig.cpp.in @@ -128,7 +128,7 @@ Config::Config() BUG_TRACKER_URL = "@Launcher_BUG_TRACKER_URL@"; TRANSLATIONS_URL = "@Launcher_TRANSLATIONS_URL@"; - TRANSLATIONS_BASE_URL = "@Launcher_TRANSLATIONS_BASE_URL@"; + TRANSLATION_FILES_URL = "@Launcher_TRANSLATION_FILES_URL@"; MATRIX_URL = "@Launcher_MATRIX_URL@"; DISCORD_URL = "@Launcher_DISCORD_URL@"; SUBREDDIT_URL = "@Launcher_SUBREDDIT_URL@"; From e53a5b3eca40788c4acc6e2e806e0fd77ca92638 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Sep 2024 17:51:35 +0300 Subject: [PATCH 196/616] replace TRANSLATIONS_BASE_URL with TRANSLATION_FILES_URL Signed-off-by: Trial97 --- buildconfig/BuildConfig.h | 2 +- launcher/translations/TranslationsModel.cpp | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/buildconfig/BuildConfig.h b/buildconfig/BuildConfig.h index 0626c1d50..ae705d098 100644 --- a/buildconfig/BuildConfig.h +++ b/buildconfig/BuildConfig.h @@ -171,7 +171,7 @@ class Config { QString LIBRARY_BASE = "https://libraries.minecraft.net/"; QString IMGUR_BASE_URL = "https://api.imgur.com/3/"; QString FMLLIBS_BASE_URL; - QString TRANSLATIONS_BASE_URL; + QString TRANSLATION_FILES_URL; QString MODPACKSCH_API_BASE_URL = "https://api.modpacks.ch/"; diff --git a/launcher/translations/TranslationsModel.cpp b/launcher/translations/TranslationsModel.cpp index 39719b125..e8dc01873 100644 --- a/launcher/translations/TranslationsModel.cpp +++ b/launcher/translations/TranslationsModel.cpp @@ -550,7 +550,7 @@ void TranslationsModel::downloadIndex() d->m_index_job.reset(new NetJob("Translations Index", APPLICATION->network())); MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("translations", "index_v2.json"); entry->setStale(true); - auto task = Net::Download::makeCached(QUrl(BuildConfig.TRANSLATIONS_BASE_URL + "index_v2.json"), entry); + auto task = Net::Download::makeCached(QUrl(BuildConfig.TRANSLATION_FILES_URL + "index_v2.json"), entry); d->m_index_task = task.get(); d->m_index_job->addNetAction(task); d->m_index_job->setAskRetry(false); @@ -591,7 +591,7 @@ void TranslationsModel::downloadTranslation(QString key) MetaEntryPtr entry = APPLICATION->metacache()->resolveEntry("translations", "mmc_" + key + ".qm"); entry->setStale(true); - auto dl = Net::Download::makeCached(QUrl(BuildConfig.TRANSLATIONS_BASE_URL + lang->file_name), entry); + auto dl = Net::Download::makeCached(QUrl(BuildConfig.TRANSLATION_FILES_URL + lang->file_name), entry); dl->addValidator(new Net::ChecksumValidator(QCryptographicHash::Sha1, lang->file_sha1)); dl->setProgress(dl->getProgress(), lang->file_size); From 914ae6ead62f7270894b07bd7f29a541a12d7164 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Mon, 16 Sep 2024 20:00:38 +0300 Subject: [PATCH 197/616] Use macOS 14 in CI (#2826) * chore: fix mac CI build Signed-off-by: Trial97 * try what the error says Signed-off-by: Trial97 * set -DCMAKE_OSX_ARCHITECTURES=x86_64 Signed-off-by: Trial97 --------- Signed-off-by: Trial97 --- .github/workflows/build.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 25e1c2aab..ccba62541 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -93,7 +93,7 @@ jobs: qt_version: "6.7.2" qt_modules: "qt5compat qtimageformats qtnetworkauth" - - os: macos-12 + - os: macos-14 name: macOS macosx_deployment_target: 11.0 qt_ver: 6 @@ -102,7 +102,7 @@ jobs: qt_version: "6.7.2" qt_modules: "qt5compat qtimageformats qtnetworkauth" - - os: macos-12 + - os: macos-14 name: macOS-Legacy macosx_deployment_target: 10.13 qt_ver: 5 @@ -259,6 +259,12 @@ jobs: run: | echo "QT_HOST_PATH=${{ github.workspace }}\HostQt\Qt\${{ matrix.qt_version }}\msvc2019_64" >> $env:GITHUB_ENV + - name: Setup java (macOS) + if: runner.os == 'macOS' + uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: "17" ## # CONFIGURE ## @@ -271,7 +277,7 @@ jobs: - name: Configure CMake (macOS-Legacy) if: runner.os == 'macOS' && matrix.qt_ver == 5 run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DMACOSX_SPARKLE_UPDATE_PUBLIC_KEY="" -DMACOSX_SPARKLE_UPDATE_FEED_URL="" -G Ninja + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_ENABLE_JAVA_DOWNLOADER=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DMACOSX_SPARKLE_UPDATE_PUBLIC_KEY="" -DMACOSX_SPARKLE_UPDATE_FEED_URL="" -DCMAKE_OSX_ARCHITECTURES="x86_64" -G Ninja - name: Configure CMake (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' From 77463c6d33e8cafc66ac2b3fab59e167941af819 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 18 Sep 2024 21:17:15 +0300 Subject: [PATCH 198/616] display minecraft log before instance run Signed-off-by: Trial97 --- launcher/ui/pages/instance/LogPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/LogPage.cpp b/launcher/ui/pages/instance/LogPage.cpp index 0c22d1de6..6a4888f9c 100644 --- a/launcher/ui/pages/instance/LogPage.cpp +++ b/launcher/ui/pages/instance/LogPage.cpp @@ -234,7 +234,7 @@ bool LogPage::apply() bool LogPage::shouldDisplay() const { - return m_instance->isRunning() || m_proxy->rowCount() > 0; + return true; } void LogPage::on_btnPaste_clicked() From 1243328876c7b655e15ab7211cc9162c32e16f30 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 20 Sep 2024 16:53:36 +0300 Subject: [PATCH 199/616] fix folder duplication for modrinth Signed-off-by: Trial97 --- launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index 7a3f71c3b..ba97c441f 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -302,7 +302,7 @@ bool ModrinthCreationTask::createInstance() loop.exec(); QEventLoop ensureMetaLoop; - QDir folder = FS::PathCombine(m_stagingPath, "minecraft", "mods", ".index"); + QDir folder = FS::PathCombine(instance.modsRoot(), ".index"); auto ensureMetadataTask = makeShared(mods, folder, ModPlatform::ResourceProvider::MODRINTH); connect(ensureMetadataTask.get(), &Task::succeeded, this, [&]() { ended_well = true; }); connect(ensureMetadataTask.get(), &Task::finished, &ensureMetaLoop, &QEventLoop::quit); From 3e1cf6b2a7a13a85d412ee5b7f06032f17fa4635 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 20 Sep 2024 16:58:22 +0300 Subject: [PATCH 200/616] fix updater typo Signed-off-by: Trial97 --- launcher/updater/prismupdater/PrismUpdater.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/updater/prismupdater/PrismUpdater.cpp b/launcher/updater/prismupdater/PrismUpdater.cpp index 6b9754864..8bf8cb473 100644 --- a/launcher/updater/prismupdater/PrismUpdater.cpp +++ b/launcher/updater/prismupdater/PrismUpdater.cpp @@ -1210,7 +1210,7 @@ std::optional PrismUpdaterApp::unpackArchive(QFileInfo archive) QProcess proc = QProcess(); proc.start(cmd, args); if (!proc.waitForStarted(5000)) { // wait 5 seconds to start - auto msg = tr("Failed to launcher child process \"%1 %2\".").arg(cmd).arg(args.join(" ")); + auto msg = tr("Failed to launch child process \"%1 %2\".").arg(cmd).arg(args.join(" ")); logUpdate(msg); showFatalErrorMessage(tr("Failed extract archive"), msg); return std::nullopt; @@ -1241,7 +1241,7 @@ bool PrismUpdaterApp::loadPrismVersionFromExe(const QString& exe_path) proc.setReadChannel(QProcess::StandardOutput); proc.start(exe_path, { "--version" }); if (!proc.waitForStarted(5000)) { - showFatalErrorMessage(tr("Failed to Check Version"), tr("Failed to launcher child launcher process to read version.")); + showFatalErrorMessage(tr("Failed to Check Version"), tr("Failed to launch child process to read version.")); return false; } // wait 5 seconds to start if (!proc.waitForFinished(5000)) { From 9567d763c1b0ed99370c1097abdc2db0a57d9fea Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 21 Sep 2024 22:17:44 +0300 Subject: [PATCH 201/616] fix java archive typo Signed-off-by: Trial97 --- launcher/java/download/ArchiveDownloadTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index ba1c96faf..6d6ab0cef 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -95,7 +95,7 @@ void ArchiveDownloadTask::extractJava(QString input) } auto files = zip->getFileNameList(); if (files.isEmpty()) { - emitFailed(tr("No files were found in the supplied zip file,")); + emitFailed(tr("No files were found in the supplied zip file.")); return; } m_task = makeShared(zip, m_final_path, files[0]); From a58e81d7441ad5887e0bb3d7f7b3ab1887115341 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Tue, 24 Sep 2024 09:58:47 +0200 Subject: [PATCH 202/616] snake_case to camelCase Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index b60e67bec..016affe29 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -147,13 +147,13 @@ QStringList IconList::getIconFilePaths() const return iconFiles; } -QString formatName(const QDir& icons_dir, const QFileInfo& file) +QString formatName(const QDir& iconsDir, const QFileInfo& file) { - if (file.dir() == icons_dir) + if (file.dir() == iconsDir) return file.baseName(); constexpr auto delimiter = " » "; - QString relativePathWithoutExtension = icons_dir.relativeFilePath(file.dir().path()) + QDir::separator() + file.baseName(); + QString relativePathWithoutExtension = iconsDir.relativeFilePath(file.dir().path()) + QDir::separator() + file.baseName(); return relativePathWithoutExtension.replace(QDir::separator(), delimiter); } @@ -171,9 +171,9 @@ void IconList::directoryChanged(const QString& path) if (!FS::ensureFolderPathExists(m_dir.absolutePath())) return; m_dir.refresh(); - QStringList new_file_names_list = getIconFilePaths(); + QStringList newFileNamesList = getIconFilePaths(); #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - QSet new_set(new_file_names_list.begin(), new_file_names_list.end()); + QSet new_set(newFileNamesList.begin(), newFileNamesList.end()); #else auto new_set = new_file_names_list.toSet(); #endif @@ -192,13 +192,13 @@ void IconList::directoryChanged(const QString& path) QSet to_remove = current_set; to_remove -= new_set; - QSet to_add = new_set; - to_add -= current_set; + QSet toAdd = new_set; + toAdd -= current_set; for (const auto& remove : to_remove) { qDebug() << "Removing " << remove; - QFileInfo removed_file(remove); - QString key = m_dir.relativeFilePath(removed_file.absoluteFilePath()); + QFileInfo removedFile(remove); + QString key = m_dir.relativeFilePath(removedFile.absoluteFilePath()); int idx = getIconIndex(key); if (idx == -1) @@ -216,7 +216,7 @@ void IconList::directoryChanged(const QString& path) emit iconUpdated(key); } - for (const auto& add : to_add) { + for (const auto& add : toAdd) { qDebug() << "Adding " << add; QFileInfo addfile(add); @@ -464,16 +464,16 @@ void IconList::reindex() QIcon IconList::getIcon(const QString& key) const { - int icon_index = getIconIndex(key); + int iconIndex = getIconIndex(key); - if (icon_index != -1) - return icons[icon_index].icon(); + if (iconIndex != -1) + return icons[iconIndex].icon(); // Fallback for icons that don't exist. - icon_index = getIconIndex("grass"); + iconIndex = getIconIndex("grass"); - if (icon_index != -1) - return icons[icon_index].icon(); + if (iconIndex != -1) + return icons[iconIndex].icon(); return {}; } @@ -494,9 +494,9 @@ QString IconList::getDirectory() const /// Returns the directory of the icon with the given key or the default directory if it's a builtin icon. QString IconList::iconDirectory(const QString& key) const { - for (const auto& mmc_icon : icons) { - if (mmc_icon.m_key == key && mmc_icon.has(IconType::FileBased)) { - QFileInfo icon_file(mmc_icon.getFilePath()); + for (const auto& mmcIcon : icons) { + if (mmcIcon.m_key == key && mmcIcon.has(IconType::FileBased)) { + QFileInfo icon_file(mmcIcon.getFilePath()); return icon_file.dir().path(); } } From b675406b1ad3b56e67ee56605d2f85a8f0947246 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Tue, 24 Sep 2024 10:16:26 +0200 Subject: [PATCH 203/616] Split set creation into a separate function for readability Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index 016affe29..0903131ce 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -157,6 +157,16 @@ QString formatName(const QDir& iconsDir, const QFileInfo& file) return relativePathWithoutExtension.replace(QDir::separator(), delimiter); } +QSet toStringSet(const QList& list) // Split into a separate function because the preprocessing impedes readability +{ +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + QSet set(list.begin(), list.end()); +#else + auto set = list.toSet(); +#endif + return set; +} + void IconList::directoryChanged(const QString& path) { QDir new_dir(path); @@ -171,31 +181,23 @@ void IconList::directoryChanged(const QString& path) if (!FS::ensureFolderPathExists(m_dir.absolutePath())) return; m_dir.refresh(); - QStringList newFileNamesList = getIconFilePaths(); -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - QSet new_set(newFileNamesList.begin(), newFileNamesList.end()); -#else - auto new_set = new_file_names_list.toSet(); -#endif + const QStringList newFileNamesList = getIconFilePaths(); + const QSet newSet = toStringSet(newFileNamesList); QList current_list; for (auto& it : icons) { if (!it.has(IconType::FileBased)) continue; current_list.push_back(it.m_images[IconType::FileBased].filename); } -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - QSet current_set(current_list.begin(), current_list.end()); -#else - QSet current_set = current_list.toSet(); -#endif + const QSet currentSet = toStringSet(current_list); - QSet to_remove = current_set; - to_remove -= new_set; + QSet toRemove = currentSet; + toRemove -= newSet; - QSet toAdd = new_set; - toAdd -= current_set; + QSet toAdd = newSet; + toAdd -= currentSet; - for (const auto& remove : to_remove) { + for (const auto& remove : toRemove) { qDebug() << "Removing " << remove; QFileInfo removedFile(remove); QString key = m_dir.relativeFilePath(removedFile.absoluteFilePath()); From f641f3acda6e96ad18dd24e16eee62e50e7bb29b Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Tue, 24 Sep 2024 12:32:49 +0200 Subject: [PATCH 204/616] Refactoring Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 29 +++++++++++------------------ 1 file changed, 11 insertions(+), 18 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index 0903131ce..0edc97681 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -169,8 +169,8 @@ QSet toStringSet(const QList& list) // Split into a separate f void IconList::directoryChanged(const QString& path) { - QDir new_dir(path); - if (m_dir.absolutePath() != new_dir.absolutePath()) { + QDir newDir(path); + if (m_dir.absolutePath() != newDir.absolutePath()) { m_dir.setPath(path); m_dir.refresh(); if (is_watching) @@ -183,19 +183,14 @@ void IconList::directoryChanged(const QString& path) m_dir.refresh(); const QStringList newFileNamesList = getIconFilePaths(); const QSet newSet = toStringSet(newFileNamesList); - QList current_list; - for (auto& it : icons) { + QSet currentSet; + for (const MMCIcon& it : icons) { if (!it.has(IconType::FileBased)) continue; - current_list.push_back(it.m_images[IconType::FileBased].filename); + currentSet.insert(it.m_images[IconType::FileBased].filename); } - const QSet currentSet = toStringSet(current_list); - - QSet toRemove = currentSet; - toRemove -= newSet; - - QSet toAdd = newSet; - toAdd -= currentSet; + QSet toRemove = currentSet - newSet; + QSet toAdd = newSet - currentSet; for (const auto& remove : toRemove) { qDebug() << "Removing " << remove; @@ -456,11 +451,9 @@ void IconList::saveIcon(const QString& key, const QString& path, const char* for void IconList::reindex() { name_index.clear(); - int i = 0; - for (auto& iter : icons) { - name_index[iter.m_key] = i; - i++; - emit iconUpdated(iter.m_key); // prevents incorrect indices with proxy model + for (int i = 0; i < icons.size(); i++) { + name_index[icons[i].m_key] = i; + emit iconUpdated(icons[i].m_key); // prevents incorrect indices with proxy model } } @@ -471,7 +464,7 @@ QIcon IconList::getIcon(const QString& key) const if (iconIndex != -1) return icons[iconIndex].icon(); - // Fallback for icons that don't exist. + // Fallback for icons that don't exist.b iconIndex = getIconIndex("grass"); if (iconIndex != -1) From 1b2e9b95e2dd62f844c5d019d9b0b503084dd382 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 25 Sep 2024 19:37:25 +0300 Subject: [PATCH 205/616] add prefix to non-standard packwiz fields Signed-off-by: Trial97 --- launcher/modplatform/packwiz/Packwiz.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index 77a0935f3..325b0a6e4 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -208,9 +208,9 @@ void V1::updateModIndex(QDir& index_dir, Mod& mod) auto tbl = toml::table{ { "name", mod.name.toStdString() }, { "filename", mod.filename.toStdString() }, { "side", sideToString(mod.side).toStdString() }, - { "loaders", loaders }, - { "mcVersions", mcVersions }, - { "releaseType", mod.releaseType.toString().toStdString() }, + { "x-prismlauncher-loaders", loaders }, + { "x-prismlauncher-mc-versions", mcVersions }, + { "x-prismlauncher-release-type", mod.releaseType.toString().toStdString() }, { "download", toml::table{ { "mode", mod.mode.toStdString() }, @@ -295,15 +295,15 @@ auto V1::getIndexForMod(QDir& index_dir, QString slug) -> Mod mod.name = stringEntry(table, "name"); mod.filename = stringEntry(table, "filename"); mod.side = stringToSide(stringEntry(table, "side")); - mod.releaseType = ModPlatform::IndexedVersionType(stringEntry(table, "releaseType")); - if (auto loaders = table["loaders"]; loaders && loaders.is_array()) { + mod.releaseType = ModPlatform::IndexedVersionType(stringEntry(table, "x-prismlauncher-release-type")); + if (auto loaders = table["x-prismlauncher-loaders"]; loaders && loaders.is_array()) { for (auto&& loader : *loaders.as_array()) { if (loader.is_string()) { mod.loaders |= ModPlatform::getModLoaderFromString(QString::fromStdString(loader.as_string()->value_or(""))); } } } - if (auto versions = table["mcVersions"]; versions && versions.is_array()) { + if (auto versions = table["x-prismlauncher-mc-versions"]; versions && versions.is_array()) { for (auto&& version : *versions.as_array()) { if (version.is_string()) { auto ver = QString::fromStdString(version.as_string()->value_or("")); From 6475dc5786600ee19d512f9b11f662a240922fa1 Mon Sep 17 00:00:00 2001 From: Cart <81428538+cartrigger@users.noreply.github.com> Date: Thu, 26 Sep 2024 01:58:21 -0400 Subject: [PATCH 206/616] Lots of J's for Java needed to be uppercased --- launcher/VersionProxyModel.cpp | 4 ++-- launcher/java/download/ArchiveDownloadTask.cpp | 2 +- launcher/ui/MainWindow.ui | 2 +- launcher/ui/java/InstallJavaDialog.cpp | 8 ++++---- launcher/ui/pages/global/JavaPage.cpp | 4 ++-- launcher/ui/setupwizard/AutoJavaWizardPage.ui | 2 +- launcher/ui/setupwizard/JavaWizardPage.cpp | 2 +- 7 files changed, 12 insertions(+), 12 deletions(-) diff --git a/launcher/VersionProxyModel.cpp b/launcher/VersionProxyModel.cpp index 552900d35..12a82f73d 100644 --- a/launcher/VersionProxyModel.cpp +++ b/launcher/VersionProxyModel.cpp @@ -140,9 +140,9 @@ QVariant VersionProxyModel::headerData(int section, Qt::Orientation orientation, case Path: return tr("Filesystem path to this version"); case JavaName: - return tr("The alternative name of the java version"); + return tr("The alternative name of the Java version"); case JavaMajor: - return tr("The java major version"); + return tr("The Java major version"); case Time: return tr("Release date of this version"); } diff --git a/launcher/java/download/ArchiveDownloadTask.cpp b/launcher/java/download/ArchiveDownloadTask.cpp index 6d6ab0cef..bb7cc568d 100644 --- a/launcher/java/download/ArchiveDownloadTask.cpp +++ b/launcher/java/download/ArchiveDownloadTask.cpp @@ -65,7 +65,7 @@ void ArchiveDownloadTask::executeTask() void ArchiveDownloadTask::extractJava(QString input) { - setStatus(tr("Extracting java")); + setStatus(tr("Extracting Java")); if (input.endsWith("tar")) { setStatus(tr("Extracting Java (Progress is not reported for tar archives)")); QFile in(input); diff --git a/launcher/ui/MainWindow.ui b/launcher/ui/MainWindow.ui index 89e536b01..f20c34206 100644 --- a/launcher/ui/MainWindow.ui +++ b/launcher/ui/MainWindow.ui @@ -798,7 +798,7 @@ Java - Open the java folder in a file browser. Only available if the built-in Java downloader is used. + Open the Java folder in a file browser. Only available if the built-in Java downloader is used. diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index f01edc5e5..0ece3220b 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -57,13 +57,13 @@ class InstallJavaPage : public QWidget, public BasePage { majorVersionSelect = new VersionSelectWidget(this); majorVersionSelect->selectCurrent(); - majorVersionSelect->setEmptyString(tr("No java versions are currently available in the meta.")); - majorVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); + majorVersionSelect->setEmptyString(tr("No Java versions are currently available in the meta.")); + majorVersionSelect->setEmptyErrorString(tr("Couldn't load or download the Java version lists!")); horizontalLayout->addWidget(majorVersionSelect, 1); javaVersionSelect = new VersionSelectWidget(this); - javaVersionSelect->setEmptyString(tr("No java versions are currently available for your OS.")); - javaVersionSelect->setEmptyErrorString(tr("Couldn't load or download the java version lists!")); + javaVersionSelect->setEmptyString(tr("No Java versions are currently available for your OS.")); + javaVersionSelect->setEmptyErrorString(tr("Couldn't load or download the Java version lists!")); horizontalLayout->addWidget(javaVersionSelect, 4); connect(majorVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallJavaPage::setSelectedVersion); connect(majorVersionSelect, &VersionSelectWidget::selectedVersionChanged, this, &InstallJavaPage::selectionChanged); diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 6699b00c0..0ae296815 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -67,8 +67,8 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) ui->managedJavaList->initialize(new JavaInstallList(this, true)); ui->managedJavaList->setResizeOn(2); ui->managedJavaList->selectCurrent(); - ui->managedJavaList->setEmptyString(tr("No managed java versions are installed")); - ui->managedJavaList->setEmptyErrorString(tr("Couldn't load the managed java list!")); + ui->managedJavaList->setEmptyString(tr("No managed Java versions are installed")); + ui->managedJavaList->setEmptyErrorString(tr("Couldn't load the managed Java list!")); connect(ui->autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] { ui->autodownloadCheckBox->setEnabled(ui->autodetectJavaCheckBox->isChecked()); if (!ui->autodetectJavaCheckBox->isChecked()) diff --git a/launcher/ui/setupwizard/AutoJavaWizardPage.ui b/launcher/ui/setupwizard/AutoJavaWizardPage.ui index bd72cf695..a862524b0 100644 --- a/launcher/ui/setupwizard/AutoJavaWizardPage.ui +++ b/launcher/ui/setupwizard/AutoJavaWizardPage.ui @@ -30,7 +30,7 @@ - We've added a feature to automatically download the correct Java version for each version of Minecraft(this can be changed in the Java Settings). Would you like to enable or disable this feature? + We've added a feature to automatically download the correct Java version for each version of Minecraft (this can be changed in the Java Settings). Would you like to enable or disable this feature? true diff --git a/launcher/ui/setupwizard/JavaWizardPage.cpp b/launcher/ui/setupwizard/JavaWizardPage.cpp index 47718d6da..8caae173c 100644 --- a/launcher/ui/setupwizard/JavaWizardPage.cpp +++ b/launcher/ui/setupwizard/JavaWizardPage.cpp @@ -83,6 +83,6 @@ void JavaWizardPage::retranslate() { setTitle(tr("Java")); setSubTitle( - tr("Please select how much memory to allocate to instances and if Prism Launcher should manage java automatically or manually.")); + tr("Please select how much memory to allocate to instances and if Prism Launcher should manage Java automatically or manually.")); m_java_widget->retranslate(); } From 2dc6f7504b4cfb64b59b3eb905f1b1ac387b8c83 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 27 Sep 2024 00:18:35 -0700 Subject: [PATCH 207/616] add vc_redist as a NSIS install section Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- program_info/CMakeLists.txt | 15 +++++++++++++++ program_info/win_install.nsi.in | 2 ++ 2 files changed, 17 insertions(+) diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index 91b213274..90d038f4d 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -41,6 +41,21 @@ configure_file(org.prismlauncher.PrismLauncher.metainfo.xml.in org.prismlauncher configure_file(prismlauncher.rc.in prismlauncher.rc @ONLY) configure_file(prismlauncher.manifest.in prismlauncher.manifest @ONLY) configure_file(prismlauncher.ico prismlauncher.ico COPYONLY) + +if(MSVC) + set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION vc_redist) + include(InstallRequiredSystemLibraries) + file(TO_NATIVE_PATH ${MSVC_REDIST_DIR} Native_MSVC_REDIST_DIR) + set(Launcher_MSVC_Redist_NSIS_Section "\ +Section \"Visual Studio Runtime\" + SetOutPath \"$INSTDIR\\vc_redist\" + File \"${Native_MSVC_REDIST_DIR}\\vc_redist.x64.exe\" + ExecWait \"$INSTDIR\\vc_redist\\vc_redist.x64.exe /install /passive\" + ; Delete \"$INSTDIR\\vc_redist\\vc_redist.x64.exe\" +SectionEnd\ +") +endif() + configure_file(win_install.nsi.in win_install.nsi @ONLY) if(SCDOC_FOUND) diff --git a/program_info/win_install.nsi.in b/program_info/win_install.nsi.in index cc56b9bd5..c75e066bd 100644 --- a/program_info/win_install.nsi.in +++ b/program_info/win_install.nsi.in @@ -396,6 +396,8 @@ Section "@Launcher_DisplayName@" SectionEnd +@Launcher_MSVC_Redist_NSIS_Section@ + Section "Start Menu Shortcut" SM_SHORTCUTS CreateShortcut "$SMPROGRAMS\@Launcher_DisplayName@.lnk" "$INSTDIR\@Launcher_APP_BINARY_NAME@.exe" "" "$INSTDIR\@Launcher_APP_BINARY_NAME@.exe" 0 From 37d3b2a4f631d2a8ce3570a9c377576d4f5a3aa1 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 27 Sep 2024 00:49:00 -0700 Subject: [PATCH 208/616] prevent the unauthorised reditribution of MSVC CRT files Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- program_info/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index 90d038f4d..c9a1d597d 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -43,7 +43,7 @@ configure_file(prismlauncher.manifest.in prismlauncher.manifest @ONLY) configure_file(prismlauncher.ico prismlauncher.ico COPYONLY) if(MSVC) - set(CMAKE_INSTALL_SYSTEM_RUNTIME_DESTINATION vc_redist) + set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP true) include(InstallRequiredSystemLibraries) file(TO_NATIVE_PATH ${MSVC_REDIST_DIR} Native_MSVC_REDIST_DIR) set(Launcher_MSVC_Redist_NSIS_Section "\ From c5daca3b013bd9cc8b17283d2a63e873480c2c16 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 27 Sep 2024 00:57:28 -0700 Subject: [PATCH 209/616] include vc_redist in portable build Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- CMakeLists.txt | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d70fe79b..49d3f731f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -372,6 +372,11 @@ endif() if(NOT (UNIX AND APPLE)) # Install "portable.txt" if selected component is "portable" install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/${Launcher_Portable_File}" DESTINATION "." COMPONENT portable EXCLUDE_FROM_ALL) + if (MSVC) + set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP true) + include(InstallRequiredSystemLibraries) + install(FILES "${MSVC_REDIST_DIR}/vc_redist.x64.exe" DESTINATION "vc_redist/." COMPONENT portable EXCLUDE_FROM_ALL ) + endif() endif() if(UNIX AND APPLE) From 8fa4467a362a55d10a3491a3b1d2301d3510383a Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 27 Sep 2024 13:29:00 -0700 Subject: [PATCH 210/616] use `/norestart` with redist install Co-authored-by: seth Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- program_info/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index c9a1d597d..0ce559406 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -50,7 +50,7 @@ if(MSVC) Section \"Visual Studio Runtime\" SetOutPath \"$INSTDIR\\vc_redist\" File \"${Native_MSVC_REDIST_DIR}\\vc_redist.x64.exe\" - ExecWait \"$INSTDIR\\vc_redist\\vc_redist.x64.exe /install /passive\" + ExecWait \"$INSTDIR\\vc_redist\\vc_redist.x64.exe /install /passive /norestart\" ; Delete \"$INSTDIR\\vc_redist\\vc_redist.x64.exe\" SectionEnd\ ") From b9c19fd3f73877f80fb2363617d893f91e5037e2 Mon Sep 17 00:00:00 2001 From: Mason Rocha Date: Fri, 27 Sep 2024 16:42:59 -0500 Subject: [PATCH 211/616] fix: don't annoy when java tmpdir jvmarg is set & /tmp is noexec Signed-off-by: Mason Rocha Got annoyed, didn't want to see it anymore. Java tmpdir noexec warning modified to include information about possible remedies available --- launcher/Application.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 6379678c9..4a66271a3 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1025,7 +1025,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) } // notify user if /tmp is mounted with `noexec` (#1693) - { + QString jvmArgs = m_settings->get("JvmArgs").toString(); + if(jvmArgs.indexOf("java.io.tmpdir") == -1) { /* java.io.tmpdir is a valid workaround, so don't annoy */ bool is_tmp_noexec = false; #if defined(Q_OS_LINUX) @@ -1045,7 +1046,11 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) if (is_tmp_noexec) { auto infoMsg = tr("Your /tmp directory is currently mounted with the 'noexec' flag enabled.\n" - "Some versions of Minecraft may not launch.\n"); + "Some versions of Minecraft may not launch.\n" + "\n" + "You may solve this issue by remounting /tmp as 'exec' or setting " + "the java.io.tmpdir JVM argument to a writeable directory in a " + "filesystem where the 'exec' flag is set (e.g., /home/user/.local/tmp)\n"); auto msgBox = new QMessageBox(QMessageBox::Information, tr("Incompatible system configuration"), infoMsg, QMessageBox::Ok); msgBox->setDefaultButton(QMessageBox::Ok); msgBox->setAttribute(Qt::WA_DeleteOnClose); From 00f4221a836bc747ec8d220a52e7b96ed24f871a Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 27 Sep 2024 19:16:50 -0700 Subject: [PATCH 212/616] reorg MSVC set(CMAKE_INSTALL_SYSTEM_RUNTIMES_LIBS_SKIP true) call Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- CMakeLists.txt | 6 ++++-- program_info/CMakeLists.txt | 1 - 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 49d3f731f..cea61ddbf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -358,6 +358,10 @@ include(ECMQtDeclareLoggingCategory) ####################################### Program Info ####################################### set(Launcher_APP_BINARY_NAME "prismlauncher" CACHE STRING "Name of the Launcher binary") +if(MSVC) + set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP true) + include(InstallRequiredSystemLibraries) +endif() add_subdirectory(program_info) ####################################### Install layout ####################################### @@ -373,8 +377,6 @@ if(NOT (UNIX AND APPLE)) # Install "portable.txt" if selected component is "portable" install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/${Launcher_Portable_File}" DESTINATION "." COMPONENT portable EXCLUDE_FROM_ALL) if (MSVC) - set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP true) - include(InstallRequiredSystemLibraries) install(FILES "${MSVC_REDIST_DIR}/vc_redist.x64.exe" DESTINATION "vc_redist/." COMPONENT portable EXCLUDE_FROM_ALL ) endif() endif() diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index 0ce559406..8a7d4868f 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -43,7 +43,6 @@ configure_file(prismlauncher.manifest.in prismlauncher.manifest @ONLY) configure_file(prismlauncher.ico prismlauncher.ico COPYONLY) if(MSVC) - set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP true) include(InstallRequiredSystemLibraries) file(TO_NATIVE_PATH ${MSVC_REDIST_DIR} Native_MSVC_REDIST_DIR) set(Launcher_MSVC_Redist_NSIS_Section "\ From a897b012d988861a47df887f0e8d2cd55d7bd584 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Edgars=20C=C4=ABrulis?= Date: Sat, 28 Sep 2024 12:11:25 +0300 Subject: [PATCH 213/616] chore: update Qt to 6.7.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Only bug fixes no new / breaking changes Signed-off-by: Edgars Cīrulis --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ccba62541..a8ee6e6cf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -79,7 +79,7 @@ jobs: qt_ver: 6 qt_host: windows qt_arch: "" - qt_version: "6.7.2" + qt_version: "6.7.3" qt_modules: "qt5compat qtimageformats qtnetworkauth" - os: windows-2022 @@ -90,7 +90,7 @@ jobs: qt_ver: 6 qt_host: windows qt_arch: "win64_msvc2019_arm64" - qt_version: "6.7.2" + qt_version: "6.7.3" qt_modules: "qt5compat qtimageformats qtnetworkauth" - os: macos-14 @@ -99,7 +99,7 @@ jobs: qt_ver: 6 qt_host: mac qt_arch: "" - qt_version: "6.7.2" + qt_version: "6.7.3" qt_modules: "qt5compat qtimageformats qtnetworkauth" - os: macos-14 From ed15a28eb3af1487cff7b81ed06b91afd35de4a0 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Sat, 28 Sep 2024 14:58:13 -0700 Subject: [PATCH 214/616] fix : baking the redist into the installer breaks GPL, download at runtime instead Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .github/workflows/build.yml | 3 +++ CMakeLists.txt | 7 ------- program_info/CMakeLists.txt | 25 +++++++++++++++---------- program_info/win_install.nsi.in | 23 +++++++++++++++++++++++ 4 files changed, 41 insertions(+), 17 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ccba62541..7345ffe90 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -471,6 +471,9 @@ jobs: - name: Package (Windows, installer) if: runner.os == 'Windows' run: | + New-Item -Name NSISPlugins -ItemType Directory + Invoke-Webrequest https://github.com/negrutiu/nsis-nscurl/releases/latest/download/NScurl.zip -OutFile NSISPlugins\NScurl.zip + Expand-Archive -Path NSISPlugins\NScurl.zip -DestinationPath NSISPlugins\NSIScurl cd ${{ env.INSTALL_DIR }} makensis -NOCD "${{ github.workspace }}/${{ env.BUILD_DIR }}/program_info/win_install.nsi" diff --git a/CMakeLists.txt b/CMakeLists.txt index cea61ddbf..3d70fe79b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -358,10 +358,6 @@ include(ECMQtDeclareLoggingCategory) ####################################### Program Info ####################################### set(Launcher_APP_BINARY_NAME "prismlauncher" CACHE STRING "Name of the Launcher binary") -if(MSVC) - set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP true) - include(InstallRequiredSystemLibraries) -endif() add_subdirectory(program_info) ####################################### Install layout ####################################### @@ -376,9 +372,6 @@ endif() if(NOT (UNIX AND APPLE)) # Install "portable.txt" if selected component is "portable" install(FILES "${CMAKE_CURRENT_SOURCE_DIR}/${Launcher_Portable_File}" DESTINATION "." COMPONENT portable EXCLUDE_FROM_ALL) - if (MSVC) - install(FILES "${MSVC_REDIST_DIR}/vc_redist.x64.exe" DESTINATION "vc_redist/." COMPONENT portable EXCLUDE_FROM_ALL ) - endif() endif() if(UNIX AND APPLE) diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index 8a7d4868f..30a435866 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -43,16 +43,21 @@ configure_file(prismlauncher.manifest.in prismlauncher.manifest @ONLY) configure_file(prismlauncher.ico prismlauncher.ico COPYONLY) if(MSVC) - include(InstallRequiredSystemLibraries) - file(TO_NATIVE_PATH ${MSVC_REDIST_DIR} Native_MSVC_REDIST_DIR) - set(Launcher_MSVC_Redist_NSIS_Section "\ -Section \"Visual Studio Runtime\" - SetOutPath \"$INSTDIR\\vc_redist\" - File \"${Native_MSVC_REDIST_DIR}\\vc_redist.x64.exe\" - ExecWait \"$INSTDIR\\vc_redist\\vc_redist.x64.exe /install /passive /norestart\" - ; Delete \"$INSTDIR\\vc_redist\\vc_redist.x64.exe\" -SectionEnd\ -") + set(Launcher_MSVC_Redist_NSIS_Section [=[ +!ifdef haveNSIScurl +Section "Visual Studio Runtime" + DetailPrint 'Downloading Microsoft Visual C++ Redistributable...' + NScurl::http GET "https://aka.ms/vs/17/release/vc_redist.x64.exe" "$INSTDIR\vc_redist\vc_redist.x64.exe" /INSIST /CANCEL /Zone.Identifier /END + Pop $0 + ${If} $0 == "OK" + DetailPrint "Download successful" + ExecWait "$INSTDIR\vc_redist\vc_redist.x64.exe /install /passive /norestart\" + ${Else} + DetailPrint "Download failed with error $0" + ${EndIf} +SectionEnd +!endif +]=]) endif() configure_file(win_install.nsi.in win_install.nsi @ONLY) diff --git a/program_info/win_install.nsi.in b/program_info/win_install.nsi.in index c75e066bd..a5c38599d 100644 --- a/program_info/win_install.nsi.in +++ b/program_info/win_install.nsi.in @@ -112,6 +112,16 @@ VIAddVersionKey /LANG=${LANG_ENGLISH} "LegalCopyright" "@Launcher_Copyright@" VIAddVersionKey /LANG=${LANG_ENGLISH} "FileVersion" "@Launcher_VERSION_NAME4@" VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "@Launcher_VERSION_NAME4@" +;-------------------------------- +; Conditional comp with file exist + +!macro CompileTimeIfFileExist path define +!tempfile tmpinc +!system 'IF EXIST "${path}" echo !define ${define} > "${tmpinc}"' +!include "${tmpinc}" +!delfile "${tmpinc}" +!undef tmpinc +!macroend ;-------------------------------- ; Shell Associate Macros @@ -336,6 +346,19 @@ Section "" UninstallPrevious SectionEnd +;------------------------------------ +; include nice plugins + +; NSIScurl - curl in NSIS +; used for MSVS redist download +; extract to ../NSISPlugins/NSIScurl +; https://github.com/negrutiu/nsis-nscurl/releases/latest/download/NScurl.zip +!insertmacro CompileTimeIfFileExist "../NSISPlugins/NSIScurl/Plugins/" haveNSIScurl +!ifdef haveNSIScurl +!AddPluginDir /x86-unicode "../NSISPlugins/NSIScurl/Plugins/x86-unicode" +!AddPluginDir /x86-ansi "../NSISPlugins/NSIScurl/Plugins/x86-ansi" +!AddPluginDir /amd64-unicode "../NSISPlugins/NSIScurl/Plugins/amd64-unicode" +!endif ;------------------------------------ From c8990438165cce1d303e8754a125758fd69b8ad9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 29 Sep 2024 00:25:33 +0000 Subject: [PATCH 215/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/4f807e8940284ad7925ebd0a0993d2a1791acb2f?narHash=sha256-IiA3jfbR7K/B5%2B9byVi9BZGWTD4VSbWe8VLpp9B/iYk%3D' (2024-09-11) → 'github:NixOS/nixpkgs/1925c603f17fc89f4c8f6bf6f631a802ad85d784?narHash=sha256-J%2BPeFKSDV%2BpHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI%3D' (2024-09-26) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 58bc4e30f..7667a8688 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1726062873, - "narHash": "sha256-IiA3jfbR7K/B5+9byVi9BZGWTD4VSbWe8VLpp9B/iYk=", + "lastModified": 1727348695, + "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4f807e8940284ad7925ebd0a0993d2a1791acb2f", + "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", "type": "github" }, "original": { From 732008db203d1ff6cc7c5d4957cb394d016eaf79 Mon Sep 17 00:00:00 2001 From: seth Date: Thu, 19 Sep 2024 16:27:06 -0400 Subject: [PATCH 216/616] ci: drop garnix Signed-off-by: seth --- garnix.yaml | 10 ---------- 1 file changed, 10 deletions(-) delete mode 100644 garnix.yaml diff --git a/garnix.yaml b/garnix.yaml deleted file mode 100644 index a7c1b48a9..000000000 --- a/garnix.yaml +++ /dev/null @@ -1,10 +0,0 @@ -builds: - exclude: - # Currently broken on Garnix's end - - "*.x86_64-darwin.*" - include: - - "checks.x86_64-linux.*" - - "packages.x86_64-linux.*" - - "packages.aarch64-linux.*" - - "packages.x86_64-darwin.*" - - "packages.aarch64-darwin.*" From 2663ac5405cbfc3c29a38b32a755b7c7ebda0779 Mon Sep 17 00:00:00 2001 From: seth Date: Thu, 19 Sep 2024 16:34:59 -0400 Subject: [PATCH 217/616] build(nix): add debug builds This will lead to build times on par with our other CI jobs, as now we're not always building for release Signed-off-by: seth --- flake.nix | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/flake.nix b/flake.nix index 987fc0eda..d07834b4c 100644 --- a/flake.nix +++ b/flake.nix @@ -118,5 +118,24 @@ # Only output them if they're available on the current system lib.filterAttrs (_: lib.meta.availableOn pkgs.stdenv.hostPlatform) packages ); + + # We put these under legacyPackages as they are meant for CI, not end user consumption + legacyPackages = forAllSystems ( + system: + let + prismPackages = self.packages.${system}; + legacyPackages = self.legacyPackages.${system}; + in + { + prismlauncher-debug = prismPackages.prismlauncher.override { + prismlauncher-unwrapped = legacyPackages.prismlauncher-unwrapped-debug; + }; + + prismlauncher-unwrapped-debug = prismPackages.prismlauncher-unwrapped.overrideAttrs { + cmakeBuildType = "Debug"; + dontStrip = true; + }; + } + ); }; } From 5adca58337e9fe2a71f7bdd0951494ceddb34659 Mon Sep 17 00:00:00 2001 From: seth Date: Thu, 19 Sep 2024 16:44:19 -0400 Subject: [PATCH 218/616] ci: add nix job Signed-off-by: seth --- .github/workflows/build.yml | 53 +++++++++++++++++++++++++++ .github/workflows/trigger_builds.yml | 1 + .github/workflows/trigger_release.yml | 1 + 3 files changed, 55 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ccba62541..f26884c2c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,6 +39,9 @@ on: APPLE_NOTARIZE_PASSWORD: description: Password used for notarizing macOS builds required: false + CACHIX_AUTH_TOKEN: + description: Private token for authenticating against Cachix cache + required: false GPG_PRIVATE_KEY: description: Private key for AppImage signing required: false @@ -631,3 +634,53 @@ jobs: with: bundle: "Prism Launcher.flatpak" manifest-path: flatpak/org.prismlauncher.PrismLauncher.yml + + nix: + name: Nix (${{ matrix.system }}) + + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-22.04 + system: x86_64-linux + + - os: macos-13 + system: x86_64-darwin + + - os: macos-14 + system: aarch64-darwin + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Nix + uses: cachix/install-nix-action@v27 + + # For PRs + - name: Setup Nix Magic Cache + uses: DeterminateSystems/magic-nix-cache-action@v8 + + # For in-tree builds + - name: Setup Cachix + uses: cachix/cachix-action@v15 + with: + name: prismlauncher + authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} + + - name: Run flake checks + run: | + nix flake check --print-build-logs --show-trace + + - name: Build debug package + if: ${{ inputs.build_type == 'Debug' }} + run: | + nix build --print-build-logs .#prismlauncher-debug + + - name: Build release package + if: ${{ inputs.build_type != 'Debug' }} + run: | + nix build --print-build-logs .#prismlauncher diff --git a/.github/workflows/trigger_builds.yml b/.github/workflows/trigger_builds.yml index 9efafc8cc..0b8386d69 100644 --- a/.github/workflows/trigger_builds.yml +++ b/.github/workflows/trigger_builds.yml @@ -38,5 +38,6 @@ jobs: APPLE_NOTARIZE_APPLE_ID: ${{ secrets.APPLE_NOTARIZE_APPLE_ID }} APPLE_NOTARIZE_TEAM_ID: ${{ secrets.APPLE_NOTARIZE_TEAM_ID }} APPLE_NOTARIZE_PASSWORD: ${{ secrets.APPLE_NOTARIZE_PASSWORD }} + CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} GPG_PRIVATE_KEY_ID: ${{ secrets.GPG_PRIVATE_KEY_ID }} diff --git a/.github/workflows/trigger_release.yml b/.github/workflows/trigger_release.yml index 134281b2c..e800653e3 100644 --- a/.github/workflows/trigger_release.yml +++ b/.github/workflows/trigger_release.yml @@ -22,6 +22,7 @@ jobs: APPLE_NOTARIZE_APPLE_ID: ${{ secrets.APPLE_NOTARIZE_APPLE_ID }} APPLE_NOTARIZE_TEAM_ID: ${{ secrets.APPLE_NOTARIZE_TEAM_ID }} APPLE_NOTARIZE_PASSWORD: ${{ secrets.APPLE_NOTARIZE_PASSWORD }} + CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} GPG_PRIVATE_KEY_ID: ${{ secrets.GPG_PRIVATE_KEY_ID }} From 68bf500f7ee48f17abf2a27e942d953a9962ef55 Mon Sep 17 00:00:00 2001 From: seth Date: Thu, 19 Sep 2024 16:50:45 -0400 Subject: [PATCH 219/616] chore: add nix reformat to .git-blame-ignore-revs Signed-off-by: seth --- .git-blame-ignore-revs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.git-blame-ignore-revs b/.git-blame-ignore-revs index 2163db45b..528b128b1 100644 --- a/.git-blame-ignore-revs +++ b/.git-blame-ignore-revs @@ -2,3 +2,6 @@ # tabs -> spaces bbb3b3e6f6e3c0f95873f22e6d0a4aaf350f49d9 + +# (nix) alejandra -> nixfmt +4c81d8c53d09196426568c4a31a4e752ed05397a From bf432b5514d7c9c90761a285d17afbd736e4a687 Mon Sep 17 00:00:00 2001 From: seth Date: Mon, 30 Sep 2024 16:21:07 -0400 Subject: [PATCH 220/616] chore(nix): use cachix for binary cache Signed-off-by: seth --- flake.nix | 6 ++++-- nix/README.md | 20 ++++++++------------ 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/flake.nix b/flake.nix index d07834b4c..f4ca782ec 100644 --- a/flake.nix +++ b/flake.nix @@ -2,8 +2,10 @@ description = "A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC)"; nixConfig = { - extra-substituters = [ "https://cache.garnix.io" ]; - extra-trusted-public-keys = [ "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" ]; + extra-substituters = [ "https://prismlauncher.cachix.org" ]; + extra-trusted-public-keys = [ + "prismlauncher.cachix.org-1:9/n/FGyABA2jLUVfY+DEp4hKds/rwO+SCOtbOkDzd+c=" + ]; }; inputs = { diff --git a/nix/README.md b/nix/README.md index 76cb8bf27..8bb658477 100644 --- a/nix/README.md +++ b/nix/README.md @@ -8,8 +8,8 @@ See [Package variants](#package-variants) for a list of available packages. ## Installing a development release (flake) -We use [garnix](https://garnix.io/) to build and cache our development builds. -If you want to avoid rebuilds you may add the garnix cache to your substitutors, or use `--accept-flake-config` +We use [cachix](https://cachix.org/) to cache our development and release builds. +If you want to avoid rebuilds you may add the Cachix bucket to your substitutors, or use `--accept-flake-config` to temporarily enable it when using `nix` commands. Example (NixOS): @@ -17,12 +17,10 @@ Example (NixOS): ```nix { nix.settings = { - trusted-substituters = [ - "https://cache.garnix.io" - ]; + trusted-substituters = [ "https://prismlauncher.cachix.org" ]; trusted-public-keys = [ - "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "prismlauncher.cachix.org-1:9/n/FGyABA2jLUVfY+DEp4hKds/rwO+SCOtbOkDzd+c=" ]; }; } @@ -137,20 +135,18 @@ nix profile install github:PrismLauncher/PrismLauncher ## Installing a development release (without flakes) -We use [garnix](https://garnix.io/) to build and cache our development builds. -If you want to avoid rebuilds you may add the garnix cache to your substitutors. +We use [Cachix](https://cachix.org/) to cache our development and release builds. +If you want to avoid rebuilds you may add the Cachix bucket to your substitutors. Example (NixOS): ```nix { nix.settings = { - trusted-substituters = [ - "https://cache.garnix.io" - ]; + trusted-substituters = [ "https://prismlauncher.cachix.org" ]; trusted-public-keys = [ - "cache.garnix.io:CTFPyKSLcx5RMJKfLo5EEPUObbA78b0YQ2DTCJXqr9g=" + "prismlauncher.cachix.org-1:9/n/FGyABA2jLUVfY+DEp4hKds/rwO+SCOtbOkDzd+c=" ]; }; } From 988ef320193e5bfb7de600bc38f99f9ba122c379 Mon Sep 17 00:00:00 2001 From: seth Date: Mon, 30 Sep 2024 16:30:22 -0400 Subject: [PATCH 221/616] fix(nix): don't write to files in formatting check Signed-off-by: seth --- nix/checks.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/nix/checks.nix b/nix/checks.nix index 40a2e272f..ec219d6f8 100644 --- a/nix/checks.nix +++ b/nix/checks.nix @@ -23,7 +23,7 @@ cd ${self} echo "Running clang-format...." - clang-format -i --style='file' --Werror */**.{c,cc,cpp,h,hh,hpp} + clang-format --dry-run --style='file' --Werror */**.{c,cc,cpp,h,hh,hpp} echo "Running deadnix..." deadnix --fail From 38fa2e0cd494d400110496a35c7f112b2b801d97 Mon Sep 17 00:00:00 2001 From: seth Date: Mon, 30 Sep 2024 16:32:35 -0400 Subject: [PATCH 222/616] style: format with clang-format Signed-off-by: seth --- launcher/Application.cpp | 2 +- launcher/ui/MainWindow.cpp | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 4a66271a3..b8dcc1099 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1026,7 +1026,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) // notify user if /tmp is mounted with `noexec` (#1693) QString jvmArgs = m_settings->get("JvmArgs").toString(); - if(jvmArgs.indexOf("java.io.tmpdir") == -1) { /* java.io.tmpdir is a valid workaround, so don't annoy */ + if (jvmArgs.indexOf("java.io.tmpdir") == -1) { /* java.io.tmpdir is a valid workaround, so don't annoy */ bool is_tmp_noexec = false; #if defined(Q_OS_LINUX) diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 3f0bb3281..09c47b609 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -235,7 +235,6 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi } ui->actionViewJavaFolder->setEnabled(BuildConfig.JAVA_DOWNLOADER_ENABLED); - } // add the toolbar toggles to the view menu From 79be2fc0622103b2d969044490fa179d31482f50 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 1 Oct 2024 00:32:42 +0000 Subject: [PATCH 223/616] chore(deps): update cachix/install-nix-action action to v29 --- .github/workflows/build.yml | 2 +- .github/workflows/update-flake.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f26884c2c..ad77d282b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -658,7 +658,7 @@ jobs: uses: actions/checkout@v4 - name: Install Nix - uses: cachix/install-nix-action@v27 + uses: cachix/install-nix-action@v29 # For PRs - name: Setup Nix Magic Cache diff --git a/.github/workflows/update-flake.yml b/.github/workflows/update-flake.yml index ecc38ff28..0c8cfde67 100644 --- a/.github/workflows/update-flake.yml +++ b/.github/workflows/update-flake.yml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: cachix/install-nix-action@ba0dd844c9180cbf77aa72a116d6fbc515d0e87b # v27 + - uses: cachix/install-nix-action@9f70348d77d0422624097c4b7a75563948901306 # v29 - uses: DeterminateSystems/update-flake-lock@v24 with: From 0eefa52dbcdc595f4b388ae306eae5f556f816e4 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 25 Sep 2024 15:04:31 +0300 Subject: [PATCH 224/616] fix some transtaions warnings Signed-off-by: Trial97 --- launcher/MMCZip.h | 2 ++ launcher/modplatform/flame/FlamePackExportTask.h | 1 + launcher/modplatform/modrinth/ModrinthPackExportTask.h | 1 + launcher/ui/dialogs/InstallLoaderDialog.cpp | 2 ++ launcher/ui/pages/instance/ModFolderPage.h | 2 ++ 5 files changed, 8 insertions(+) diff --git a/launcher/MMCZip.h b/launcher/MMCZip.h index 1635f8b32..d81df9d81 100644 --- a/launcher/MMCZip.h +++ b/launcher/MMCZip.h @@ -153,6 +153,7 @@ bool collectFileListRecursively(const QString& rootDir, const QString& subDir, Q #if defined(LAUNCHER_APPLICATION) class ExportToZipTask : public Task { + Q_OBJECT public: ExportToZipTask(QString outputPath, QDir dir, @@ -207,6 +208,7 @@ class ExportToZipTask : public Task { }; class ExtractZipTask : public Task { + Q_OBJECT public: ExtractZipTask(QString input, QDir outputDir, QString subdirectory = "") : ExtractZipTask(std::make_shared(input), outputDir, subdirectory) diff --git a/launcher/modplatform/flame/FlamePackExportTask.h b/launcher/modplatform/flame/FlamePackExportTask.h index 78b46e91f..b11eb17fa 100644 --- a/launcher/modplatform/flame/FlamePackExportTask.h +++ b/launcher/modplatform/flame/FlamePackExportTask.h @@ -26,6 +26,7 @@ #include "tasks/Task.h" class FlamePackExportTask : public Task { + Q_OBJECT public: FlamePackExportTask(const QString& name, const QString& version, diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.h b/launcher/modplatform/modrinth/ModrinthPackExportTask.h index 81c2f25bf..ee740a456 100644 --- a/launcher/modplatform/modrinth/ModrinthPackExportTask.h +++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.h @@ -27,6 +27,7 @@ #include "tasks/Task.h" class ModrinthPackExportTask : public Task { + Q_OBJECT public: ModrinthPackExportTask(const QString& name, const QString& version, diff --git a/launcher/ui/dialogs/InstallLoaderDialog.cpp b/launcher/ui/dialogs/InstallLoaderDialog.cpp index 541119d10..8e5463b31 100644 --- a/launcher/ui/dialogs/InstallLoaderDialog.cpp +++ b/launcher/ui/dialogs/InstallLoaderDialog.cpp @@ -31,6 +31,7 @@ #include "ui/widgets/VersionSelectWidget.h" class InstallLoaderPage : public VersionSelectWidget, public BasePage { + Q_OBJECT public: InstallLoaderPage(const QString& id, const QString& iconName, @@ -164,3 +165,4 @@ void InstallLoaderDialog::done(int result) QDialog::done(result); } +#include "InstallLoaderDialog.moc" \ No newline at end of file diff --git a/launcher/ui/pages/instance/ModFolderPage.h b/launcher/ui/pages/instance/ModFolderPage.h index 2ec2b402d..41b605991 100644 --- a/launcher/ui/pages/instance/ModFolderPage.h +++ b/launcher/ui/pages/instance/ModFolderPage.h @@ -74,6 +74,7 @@ class ModFolderPage : public ExternalResourcesPage { }; class CoreModFolderPage : public ModFolderPage { + Q_OBJECT public: explicit CoreModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent = 0); virtual ~CoreModFolderPage() = default; @@ -87,6 +88,7 @@ class CoreModFolderPage : public ModFolderPage { }; class NilModFolderPage : public ModFolderPage { + Q_OBJECT public: explicit NilModFolderPage(BaseInstance* inst, std::shared_ptr mods, QWidget* parent = 0); virtual ~NilModFolderPage() = default; From 5ea2dece54f27c812af3eb5ba697ec7aab07e04b Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 26 Sep 2024 22:59:00 +0300 Subject: [PATCH 225/616] fix search term not remaining the same between providers on resource download Signed-off-by: Trial97 --- launcher/ui/dialogs/ResourceDownloadDialog.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp index 90d3b79a9..02a8454b4 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp +++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp @@ -258,7 +258,9 @@ void ResourceDownloadDialog::selectedPageChanged(BasePage* previous, BasePage* s } // Same effect as having a global search bar - selectedPage()->setSearchTerm(prev_page->getSearchTerm()); + ResourcePage* result = dynamic_cast(selected); + Q_ASSERT(result != nullptr); + result->setSearchTerm(prev_page->getSearchTerm()); } ModDownloadDialog::ModDownloadDialog(QWidget* parent, const std::shared_ptr& mods, BaseInstance* instance) From 946e791d39a19f50d7604b1f57714f8f3a7f63cb Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 30 Sep 2024 21:50:07 +0300 Subject: [PATCH 226/616] sync modpack search field Signed-off-by: Trial97 --- launcher/CMakeLists.txt | 3 ++ launcher/ui/dialogs/NewInstanceDialog.cpp | 16 ++++++++++ launcher/ui/dialogs/NewInstanceDialog.h | 3 ++ .../modplatform/ModpackProviderBasePage.h | 29 +++++++++++++++++++ .../pages/modplatform/atlauncher/AtlPage.cpp | 10 +++++++ .../ui/pages/modplatform/atlauncher/AtlPage.h | 10 +++++-- .../ui/pages/modplatform/flame/FlamePage.cpp | 9 ++++++ .../ui/pages/modplatform/flame/FlamePage.h | 9 ++++-- .../modplatform/import_ftb/ImportFTBPage.cpp | 9 ++++++ .../modplatform/import_ftb/ImportFTBPage.h | 9 ++++-- .../ui/pages/modplatform/legacy_ftb/Page.cpp | 9 ++++++ .../ui/pages/modplatform/legacy_ftb/Page.h | 9 ++++-- .../modplatform/modrinth/ModrinthPage.cpp | 10 +++++++ .../pages/modplatform/modrinth/ModrinthPage.h | 9 ++++-- .../pages/modplatform/technic/TechnicPage.cpp | 10 +++++++ .../pages/modplatform/technic/TechnicPage.h | 9 ++++-- 16 files changed, 150 insertions(+), 13 deletions(-) create mode 100644 launcher/ui/pages/modplatform/ModpackProviderBasePage.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index bd6dfc5b6..dcbfe8fde 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -965,6 +965,9 @@ SET(LAUNCHER_SOURCES ui/pages/modplatform/ShaderPackPage.cpp ui/pages/modplatform/ShaderPackModel.cpp + + ui/pages/modplatform/ModpackProviderBasePage.h + ui/pages/modplatform/atlauncher/AtlFilterModel.cpp ui/pages/modplatform/atlauncher/AtlFilterModel.h ui/pages/modplatform/atlauncher/AtlListModel.cpp diff --git a/launcher/ui/dialogs/NewInstanceDialog.cpp b/launcher/ui/dialogs/NewInstanceDialog.cpp index 2e799d2a8..f16c50860 100644 --- a/launcher/ui/dialogs/NewInstanceDialog.cpp +++ b/launcher/ui/dialogs/NewInstanceDialog.cpp @@ -36,6 +36,7 @@ #include "NewInstanceDialog.h" #include "Application.h" +#include "ui/pages/modplatform/ModpackProviderBasePage.h" #include "ui/pages/modplatform/import_ftb/ImportFTBPage.h" #include "ui_NewInstanceDialog.h" @@ -140,6 +141,8 @@ NewInstanceDialog::NewInstanceDialog(const QString& initialGroup, auto geometry = screen->availableSize(); resize(width(), qMin(geometry.height() - 50, 710)); } + + connect(m_container, &PageContainer::selectedPageChanged, this, &NewInstanceDialog::selectedPageChanged); } void NewInstanceDialog::reject() @@ -316,3 +319,16 @@ void NewInstanceDialog::importIconNow() } APPLICATION->settings()->set("NewInstanceGeometry", saveGeometry().toBase64()); } + +void NewInstanceDialog::selectedPageChanged(BasePage* previous, BasePage* selected) +{ + auto prevPage = dynamic_cast(previous); + if (prevPage) { + m_searchTerm = prevPage->getSerachTerm(); + } + + auto nextPage = dynamic_cast(selected); + if (nextPage) { + nextPage->setSearchTerm(m_searchTerm); + } +} diff --git a/launcher/ui/dialogs/NewInstanceDialog.h b/launcher/ui/dialogs/NewInstanceDialog.h index 923579567..e97c9f543 100644 --- a/launcher/ui/dialogs/NewInstanceDialog.h +++ b/launcher/ui/dialogs/NewInstanceDialog.h @@ -82,6 +82,7 @@ class NewInstanceDialog : public QDialog, public BasePageProvider { private slots: void on_iconButton_clicked(); void on_instNameTextBox_textChanged(const QString& arg1); + void selectedPageChanged(BasePage* previous, BasePage* selected); private: Ui::NewInstanceDialog* ui = nullptr; @@ -98,5 +99,7 @@ class NewInstanceDialog : public QDialog, public BasePageProvider { QString importVersion; + QString m_searchTerm; + void importIconNow(); }; diff --git a/launcher/ui/pages/modplatform/ModpackProviderBasePage.h b/launcher/ui/pages/modplatform/ModpackProviderBasePage.h new file mode 100644 index 000000000..a3daa9a81 --- /dev/null +++ b/launcher/ui/pages/modplatform/ModpackProviderBasePage.h @@ -0,0 +1,29 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +#include "ui/pages/BasePage.h" + +class ModpackProviderBasePage : public BasePage { + public: + /** Programatically set the term in the search bar. */ + virtual void setSearchTerm(QString) = 0; + /** Get the current term in the search bar. */ + [[nodiscard]] virtual QString getSerachTerm() const = 0; +}; \ No newline at end of file diff --git a/launcher/ui/pages/modplatform/atlauncher/AtlPage.cpp b/launcher/ui/pages/modplatform/atlauncher/AtlPage.cpp index d79b7621a..7c69b315e 100644 --- a/launcher/ui/pages/modplatform/atlauncher/AtlPage.cpp +++ b/launcher/ui/pages/modplatform/atlauncher/AtlPage.cpp @@ -164,3 +164,13 @@ void AtlPage::onVersionSelectionChanged(QString version) selectedVersion = version; suggestCurrent(); } + +void AtlPage::setSearchTerm(QString term) +{ + ui->searchEdit->setText(term); +} + +QString AtlPage::getSerachTerm() const +{ + return ui->searchEdit->text(); +} diff --git a/launcher/ui/pages/modplatform/atlauncher/AtlPage.h b/launcher/ui/pages/modplatform/atlauncher/AtlPage.h index 6bc449649..73460232b 100644 --- a/launcher/ui/pages/modplatform/atlauncher/AtlPage.h +++ b/launcher/ui/pages/modplatform/atlauncher/AtlPage.h @@ -42,8 +42,7 @@ #include #include "Application.h" -#include "tasks/Task.h" -#include "ui/pages/BasePage.h" +#include "ui/pages/modplatform/ModpackProviderBasePage.h" namespace Ui { class AtlPage; @@ -51,7 +50,7 @@ class AtlPage; class NewInstanceDialog; -class AtlPage : public QWidget, public BasePage { +class AtlPage : public QWidget, public ModpackProviderBasePage { Q_OBJECT public: @@ -66,6 +65,11 @@ class AtlPage : public QWidget, public BasePage { void openedImpl() override; + /** Programatically set the term in the search bar. */ + virtual void setSearchTerm(QString) override; + /** Get the current term in the search bar. */ + [[nodiscard]] virtual QString getSerachTerm() const override; + private: void suggestCurrent(); diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.cpp b/launcher/ui/pages/modplatform/flame/FlamePage.cpp index decb5de3b..4195683e7 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.cpp +++ b/launcher/ui/pages/modplatform/flame/FlamePage.cpp @@ -299,3 +299,12 @@ void FlamePage::updateUi() ui->packDescription->setHtml(StringUtils::htmlListPatch(text + current.description)); ui->packDescription->flush(); } +QString FlamePage::getSerachTerm() const +{ + return ui->searchEdit->text(); +} + +void FlamePage::setSearchTerm(QString term) +{ + ui->searchEdit->setText(term); +} diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.h b/launcher/ui/pages/modplatform/flame/FlamePage.h index 7590e1a95..45a3c6b22 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.h +++ b/launcher/ui/pages/modplatform/flame/FlamePage.h @@ -40,7 +40,7 @@ #include #include #include -#include "ui/pages/BasePage.h" +#include "ui/pages/modplatform/ModpackProviderBasePage.h" #include "ui/widgets/ProgressWidget.h" namespace Ui { @@ -53,7 +53,7 @@ namespace Flame { class ListModel; } -class FlamePage : public QWidget, public BasePage { +class FlamePage : public QWidget, public ModpackProviderBasePage { Q_OBJECT public: @@ -72,6 +72,11 @@ class FlamePage : public QWidget, public BasePage { bool eventFilter(QObject* watched, QEvent* event) override; + /** Programatically set the term in the search bar. */ + virtual void setSearchTerm(QString) override; + /** Get the current term in the search bar. */ + [[nodiscard]] virtual QString getSerachTerm() const override; + private: void suggestCurrent(); diff --git a/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.cpp b/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.cpp index db59fe10a..15303bb22 100644 --- a/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.cpp +++ b/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.cpp @@ -135,4 +135,13 @@ void ImportFTBPage::triggerSearch() currentModel->setSearchTerm(ui->searchEdit->text()); } +void ImportFTBPage::setSearchTerm(QString term) +{ + ui->searchEdit->setText(term); +} + +QString ImportFTBPage::getSerachTerm() const +{ + return ui->searchEdit->text(); +} } // namespace FTBImportAPP diff --git a/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.h b/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.h index 00f013f6f..7afff5a9d 100644 --- a/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.h +++ b/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.h @@ -25,7 +25,7 @@ #include #include "modplatform/import_ftb/PackHelpers.h" -#include "ui/pages/BasePage.h" +#include "ui/pages/modplatform/ModpackProviderBasePage.h" #include "ui/pages/modplatform/import_ftb/ListModel.h" class NewInstanceDialog; @@ -35,7 +35,7 @@ namespace Ui { class ImportFTBPage; } -class ImportFTBPage : public QWidget, public BasePage { +class ImportFTBPage : public QWidget, public ModpackProviderBasePage { Q_OBJECT public: @@ -49,6 +49,11 @@ class ImportFTBPage : public QWidget, public BasePage { void openedImpl() override; void retranslate() override; + /** Programatically set the term in the search bar. */ + virtual void setSearchTerm(QString) override; + /** Get the current term in the search bar. */ + [[nodiscard]] virtual QString getSerachTerm() const override; + private: void suggestCurrent(); void onPackSelectionChanged(Modpack* pack = nullptr); diff --git a/launcher/ui/pages/modplatform/legacy_ftb/Page.cpp b/launcher/ui/pages/modplatform/legacy_ftb/Page.cpp index a587b5baf..226a30ee3 100644 --- a/launcher/ui/pages/modplatform/legacy_ftb/Page.cpp +++ b/launcher/ui/pages/modplatform/legacy_ftb/Page.cpp @@ -369,4 +369,13 @@ void Page::triggerSearch() currentModel->setSearchTerm(ui->searchEdit->text()); } +void Page::setSearchTerm(QString term) +{ + ui->searchEdit->setText(term); +} + +QString Page::getSerachTerm() const +{ + return ui->searchEdit->text(); +} } // namespace LegacyFTB diff --git a/launcher/ui/pages/modplatform/legacy_ftb/Page.h b/launcher/ui/pages/modplatform/legacy_ftb/Page.h index daef23342..a2dee24e9 100644 --- a/launcher/ui/pages/modplatform/legacy_ftb/Page.h +++ b/launcher/ui/pages/modplatform/legacy_ftb/Page.h @@ -43,7 +43,7 @@ #include "QObjectPtr.h" #include "modplatform/legacy_ftb/PackFetchTask.h" #include "modplatform/legacy_ftb/PackHelpers.h" -#include "ui/pages/BasePage.h" +#include "ui/pages/modplatform/ModpackProviderBasePage.h" class NewInstanceDialog; @@ -57,7 +57,7 @@ class ListModel; class FilterModel; class PrivatePackManager; -class Page : public QWidget, public BasePage { +class Page : public QWidget, public ModpackProviderBasePage { Q_OBJECT public: @@ -71,6 +71,11 @@ class Page : public QWidget, public BasePage { void openedImpl() override; void retranslate() override; + /** Programatically set the term in the search bar. */ + virtual void setSearchTerm(QString) override; + /** Get the current term in the search bar. */ + [[nodiscard]] virtual QString getSerachTerm() const override; + private: void suggestCurrent(); void onPackSelectionChanged(Modpack* pack = nullptr); diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp index 03461d85a..a000044fa 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp @@ -351,3 +351,13 @@ void ModrinthPage::onVersionSelectionChanged(int index) selectedVersion = ui->versionSelectionBox->currentData().toString(); suggestCurrent(); } + +void ModrinthPage::setSearchTerm(QString term) +{ + ui->searchEdit->setText(term); +} + +QString ModrinthPage::getSerachTerm() const +{ + return ui->searchEdit->text(); +} diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h index dadaeb0a0..dd99e0d29 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h @@ -38,9 +38,9 @@ #include "Application.h" #include "ui/dialogs/NewInstanceDialog.h" -#include "ui/pages/BasePage.h" #include "modplatform/modrinth/ModrinthPackManifest.h" +#include "ui/pages/modplatform/ModpackProviderBasePage.h" #include "ui/widgets/ProgressWidget.h" #include @@ -54,7 +54,7 @@ namespace Modrinth { class ModpackListModel; } -class ModrinthPage : public QWidget, public BasePage { +class ModrinthPage : public QWidget, public ModpackProviderBasePage { Q_OBJECT public: @@ -78,6 +78,11 @@ class ModrinthPage : public QWidget, public BasePage { void openedImpl() override; bool eventFilter(QObject* watched, QEvent* event) override; + /** Programatically set the term in the search bar. */ + virtual void setSearchTerm(QString) override; + /** Get the current term in the search bar. */ + [[nodiscard]] virtual QString getSerachTerm() const override; + private slots: void onSelectionChanged(QModelIndex first, QModelIndex second); void onVersionSelectionChanged(int index); diff --git a/launcher/ui/pages/modplatform/technic/TechnicPage.cpp b/launcher/ui/pages/modplatform/technic/TechnicPage.cpp index a8f06619f..50d267b1f 100644 --- a/launcher/ui/pages/modplatform/technic/TechnicPage.cpp +++ b/launcher/ui/pages/modplatform/technic/TechnicPage.cpp @@ -342,3 +342,13 @@ void TechnicPage::onVersionSelectionChanged(QString version) selectedVersion = version; selectVersion(); } + +void TechnicPage::setSearchTerm(QString term) +{ + ui->searchEdit->setText(term); +} + +QString TechnicPage::getSerachTerm() const +{ + return ui->searchEdit->text(); +} diff --git a/launcher/ui/pages/modplatform/technic/TechnicPage.h b/launcher/ui/pages/modplatform/technic/TechnicPage.h index 01439337d..d1f691b22 100644 --- a/launcher/ui/pages/modplatform/technic/TechnicPage.h +++ b/launcher/ui/pages/modplatform/technic/TechnicPage.h @@ -41,7 +41,7 @@ #include #include "TechnicData.h" #include "net/NetJob.h" -#include "ui/pages/BasePage.h" +#include "ui/pages/modplatform/ModpackProviderBasePage.h" #include "ui/widgets/ProgressWidget.h" namespace Ui { @@ -54,7 +54,7 @@ namespace Technic { class ListModel; } -class TechnicPage : public QWidget, public BasePage { +class TechnicPage : public QWidget, public ModpackProviderBasePage { Q_OBJECT public: @@ -71,6 +71,11 @@ class TechnicPage : public QWidget, public BasePage { bool eventFilter(QObject* watched, QEvent* event) override; + /** Programatically set the term in the search bar. */ + virtual void setSearchTerm(QString) override; + /** Get the current term in the search bar. */ + [[nodiscard]] virtual QString getSerachTerm() const override; + private: void suggestCurrent(); void metadataLoaded(); From dfe3cd849def92682c45610e65bde3f6f5344a39 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 2 Oct 2024 01:06:45 +0300 Subject: [PATCH 227/616] add curseforge modpack filter Signed-off-by: Trial97 --- launcher/modplatform/ModIndex.h | 2 +- launcher/modplatform/flame/FlameAPI.cpp | 10 ++- launcher/modplatform/flame/FlameAPI.h | 17 +++-- launcher/modplatform/flame/FlamePackIndex.cpp | 22 +++++- launcher/modplatform/flame/FlamePackIndex.h | 1 + launcher/modplatform/modrinth/ModrinthAPI.cpp | 11 ++- launcher/modplatform/modrinth/ModrinthAPI.h | 1 + .../ui/pages/modplatform/flame/FlameModel.cpp | 27 +++---- .../ui/pages/modplatform/flame/FlameModel.h | 4 +- .../ui/pages/modplatform/flame/FlamePage.cpp | 65 +++++++++++++++- .../ui/pages/modplatform/flame/FlamePage.h | 5 ++ .../ui/pages/modplatform/flame/FlamePage.ui | 69 ++++++++++------- .../modplatform/flame/FlameResourcePages.cpp | 6 +- .../modplatform/flame/FlameResourcePages.h | 3 + launcher/ui/widgets/ModFilterWidget.cpp | 74 +++++++++++++++---- 15 files changed, 242 insertions(+), 75 deletions(-) diff --git a/launcher/modplatform/ModIndex.h b/launcher/modplatform/ModIndex.h index e3fe69e0c..d5ee12473 100644 --- a/launcher/modplatform/ModIndex.h +++ b/launcher/modplatform/ModIndex.h @@ -35,7 +35,7 @@ Q_DECLARE_FLAGS(ModLoaderTypes, ModLoaderType) enum class ResourceProvider { MODRINTH, FLAME }; -enum class ResourceType { MOD, RESOURCE_PACK, SHADER_PACK }; +enum class ResourceType { MOD, RESOURCE_PACK, SHADER_PACK, MODPACK }; enum class DependencyType { REQUIRED, OPTIONAL, INCOMPATIBLE, EMBEDDED, TOOL, INCLUDE, UNKNOWN }; diff --git a/launcher/modplatform/flame/FlameAPI.cpp b/launcher/modplatform/flame/FlameAPI.cpp index 72437976d..ddd48c2b1 100644 --- a/launcher/modplatform/flame/FlameAPI.cpp +++ b/launcher/modplatform/flame/FlameAPI.cpp @@ -221,14 +221,20 @@ QList FlameAPI::getSortingMethods() const { 8, "GameVersion", QObject::tr("Sort by Game Version") } }; } -Task::Ptr FlameAPI::getModCategories(std::shared_ptr response) +Task::Ptr FlameAPI::getCategories(std::shared_ptr response, ModPlatform::ResourceType type) { auto netJob = makeShared(QString("Flame::GetCategories"), APPLICATION->network()); - netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl("https://api.curseforge.com/v1/categories?gameId=432&classId=6"), response)); + netJob->addNetAction(Net::ApiDownload::makeByteArray( + QUrl(QString("https://api.curseforge.com/v1/categories?gameId=432&classId=%1").arg(getClassId(type))), response)); QObject::connect(netJob.get(), &Task::failed, [](QString msg) { qDebug() << "Flame failed to get categories:" << msg; }); return netJob; } +Task::Ptr FlameAPI::getModCategories(std::shared_ptr response) +{ + return getCategories(response, ModPlatform::ResourceType::MOD); +} + QList FlameAPI::loadModCategories(std::shared_ptr response) { QList categories; diff --git a/launcher/modplatform/flame/FlameAPI.h b/launcher/modplatform/flame/FlameAPI.h index 1160151c5..c66ece8a3 100644 --- a/launcher/modplatform/flame/FlameAPI.h +++ b/launcher/modplatform/flame/FlameAPI.h @@ -25,6 +25,7 @@ class FlameAPI : public NetworkResourceAPI { Task::Ptr getFiles(const QStringList& fileIds, std::shared_ptr response) const; Task::Ptr getFile(const QString& addonId, const QString& fileId, std::shared_ptr response) const; + static Task::Ptr getCategories(std::shared_ptr response, ModPlatform::ResourceType type); static Task::Ptr getModCategories(std::shared_ptr response); static QList loadModCategories(std::shared_ptr response); @@ -46,6 +47,8 @@ class FlameAPI : public NetworkResourceAPI { return 12; case ModPlatform::ResourceType::SHADER_PACK: return 6552; + case ModPlatform::ResourceType::MODPACK: + return 4471; } } @@ -82,8 +85,8 @@ class FlameAPI : public NetworkResourceAPI { static const QString getModLoaderFilters(ModPlatform::ModLoaderTypes types) { return "[" + getModLoaderStrings(types).join(',') + "]"; } - private: - [[nodiscard]] std::optional getSearchURL(SearchArgs const& args) const override + public: + static std::optional getStaticSearchURL(SearchArgs const& args) { auto gameVersionStr = args.versions.has_value() ? QString("gameVersion=%1").arg(args.versions.value().front().toString()) : QString(); @@ -105,12 +108,14 @@ class FlameAPI : public NetworkResourceAPI { get_arguments.append(gameVersionStr); return "https://api.curseforge.com/v1/mods/search?gameId=432&" + get_arguments.join('&'); - }; + } + [[nodiscard]] std::optional getSearchURL(SearchArgs const& args) const override { return getStaticSearchURL(args); } + private: [[nodiscard]] std::optional getInfoURL(QString const& id) const override { return QString("https://api.curseforge.com/v1/mods/%1").arg(id); - }; + } [[nodiscard]] std::optional getVersionsURL(VersionSearchArgs const& args) const override { @@ -125,7 +130,7 @@ class FlameAPI : public NetworkResourceAPI { url += QString("&modLoaderType=%1").arg(mappedModLoader); } return url; - }; + } [[nodiscard]] std::optional getDependencyURL(DependencySearchArgs const& args) const override { @@ -137,5 +142,5 @@ class FlameAPI : public NetworkResourceAPI { url += QString("&modLoaderType=%1").arg(mappedModLoader); } return url; - }; + } }; diff --git a/launcher/modplatform/flame/FlamePackIndex.cpp b/launcher/modplatform/flame/FlamePackIndex.cpp index ca8e0a853..8c25b0482 100644 --- a/launcher/modplatform/flame/FlamePackIndex.cpp +++ b/launcher/modplatform/flame/FlamePackIndex.cpp @@ -3,6 +3,7 @@ #include #include "Json.h" +#include "modplatform/ModIndex.h" void Flame::loadIndexedPack(Flame::IndexedPack& pack, QJsonObject& obj) { @@ -88,8 +89,27 @@ void Flame::loadIndexedPackVersions(Flame::IndexedPack& pack, QJsonArray& arr) continue; } + for (auto mcVer : versionArray) { + auto str = mcVer.toString(); + + if (str.contains('.')) + file.mcVersion.append(str); + + if (auto loader = str.toLower(); loader == "neoforge") + file.loaders |= ModPlatform::NeoForge; + else if (loader == "forge") + file.loaders |= ModPlatform::Forge; + else if (loader == "cauldron") + file.loaders |= ModPlatform::Cauldron; + else if (loader == "liteloader") + file.loaders |= ModPlatform::LiteLoader; + else if (loader == "fabric") + file.loaders |= ModPlatform::Fabric; + else if (loader == "quilt") + file.loaders |= ModPlatform::Quilt; + } + // pick the latest version supported - file.mcVersion = versionArray[0].toString(); file.version = Json::requireString(version, "displayName"); ModPlatform::IndexedVersionType::VersionType ver_type; diff --git a/launcher/modplatform/flame/FlamePackIndex.h b/launcher/modplatform/flame/FlamePackIndex.h index b2a12a67f..11633deee 100644 --- a/launcher/modplatform/flame/FlamePackIndex.h +++ b/launcher/modplatform/flame/FlamePackIndex.h @@ -18,6 +18,7 @@ struct IndexedVersion { int fileId; QString version; ModPlatform::IndexedVersionType version_type; + ModPlatform::ModLoaderTypes loaders = {}; QString mcVersion; QString downloadUrl; }; diff --git a/launcher/modplatform/modrinth/ModrinthAPI.cpp b/launcher/modplatform/modrinth/ModrinthAPI.cpp index 4798ace84..323711e02 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.cpp +++ b/launcher/modplatform/modrinth/ModrinthAPI.cpp @@ -129,7 +129,7 @@ Task::Ptr ModrinthAPI::getModCategories(std::shared_ptr response) return netJob; } -QList ModrinthAPI::loadModCategories(std::shared_ptr response) +QList ModrinthAPI::loadCategories(std::shared_ptr response, QString projectType) { QList categories; QJsonParseError parse_error{}; @@ -147,7 +147,7 @@ QList ModrinthAPI::loadModCategories(std::shared_ptr ModrinthAPI::loadModCategories(std::shared_ptr ModrinthAPI::loadModCategories(std::shared_ptr response) +{ + return loadCategories(response, "mod"); +}; diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h index d1f8f712a..07be06756 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.h +++ b/launcher/modplatform/modrinth/ModrinthAPI.h @@ -31,6 +31,7 @@ class ModrinthAPI : public NetworkResourceAPI { Task::Ptr getProjects(QStringList addonIds, std::shared_ptr response) const override; static Task::Ptr getModCategories(std::shared_ptr response); + static QList loadCategories(std::shared_ptr response, QString projectType); static QList loadModCategories(std::shared_ptr response); public: diff --git a/launcher/ui/pages/modplatform/flame/FlameModel.cpp b/launcher/ui/pages/modplatform/flame/FlameModel.cpp index a92d5b579..8383b756f 100644 --- a/launcher/ui/pages/modplatform/flame/FlameModel.cpp +++ b/launcher/ui/pages/modplatform/flame/FlameModel.cpp @@ -1,6 +1,7 @@ #include "FlameModel.h" #include #include "Application.h" +#include "modplatform/ModIndex.h" #include "modplatform/ResourceAPI.h" #include "modplatform/flame/FlameAPI.h" #include "ui/widgets/ProjectItem.h" @@ -183,34 +184,28 @@ void ListModel::performPaginatedSearch() return; } } - auto netJob = makeShared("Flame::Search", APPLICATION->network()); - auto searchUrl = QString( - "https://api.curseforge.com/v1/mods/search?" - "gameId=432&" - "classId=4471&" - "index=%1&" - "pageSize=25&" - "searchFilter=%2&" - "sortField=%3&" - "sortOrder=desc") - .arg(nextSearchOffset) - .arg(currentSearchTerm) - .arg(currentSort + 1); + ResourceAPI::SortingMethod sort{}; + sort.index = currentSort + 1; - netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl), response)); + auto netJob = makeShared("Flame::Search", APPLICATION->network()); + auto searchUrl = FlameAPI::getStaticSearchURL({ ModPlatform::ResourceType::MODPACK, nextSearchOffset, currentSearchTerm, sort, + m_filter->loaders, m_filter->versions, "", m_filter->categoryIds }); + + netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl.value()), response)); jobPtr = netJob; jobPtr->start(); QObject::connect(netJob.get(), &NetJob::succeeded, this, &ListModel::searchRequestFinished); QObject::connect(netJob.get(), &NetJob::failed, this, &ListModel::searchRequestFailed); } -void ListModel::searchWithTerm(const QString& term, int sort) +void ListModel::searchWithTerm(const QString& term, int sort, std::shared_ptr filter, bool filterChanged) { - if (currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull() && currentSort == sort) { + if (currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull() && currentSort == sort && !filterChanged) { return; } currentSearchTerm = term; currentSort = sort; + m_filter = filter; if (hasActiveSearchJob()) { jobPtr->abort(); searchState = ResetRequested; diff --git a/launcher/ui/pages/modplatform/flame/FlameModel.h b/launcher/ui/pages/modplatform/flame/FlameModel.h index 9b6d70fec..026f6d1ee 100644 --- a/launcher/ui/pages/modplatform/flame/FlameModel.h +++ b/launcher/ui/pages/modplatform/flame/FlameModel.h @@ -14,6 +14,7 @@ #include #include +#include "ui/widgets/ModFilterWidget.h" #include @@ -38,7 +39,7 @@ class ListModel : public QAbstractListModel { void fetchMore(const QModelIndex& parent) override; void getLogo(const QString& logo, const QString& logoUrl, LogoCallback callback); - void searchWithTerm(const QString& term, int sort); + void searchWithTerm(const QString& term, int sort, std::shared_ptr filter, bool filterChanged); [[nodiscard]] bool hasActiveSearchJob() const { return jobPtr && jobPtr->isRunning(); } [[nodiscard]] Task::Ptr activeSearchJob() { return hasActiveSearchJob() ? jobPtr : nullptr; } @@ -65,6 +66,7 @@ class ListModel : public QAbstractListModel { QString currentSearchTerm; int currentSort = 0; + std::shared_ptr m_filter; int nextSearchOffset = 0; enum SearchState { None, CanPossiblyFetchMore, ResetRequested, Finished } searchState = None; Task::Ptr jobPtr; diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.cpp b/launcher/ui/pages/modplatform/flame/FlamePage.cpp index 4195683e7..62798f4bc 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.cpp +++ b/launcher/ui/pages/modplatform/flame/FlamePage.cpp @@ -34,10 +34,13 @@ */ #include "FlamePage.h" +#include "modplatform/flame/FlamePackIndex.h" #include "ui/dialogs/CustomMessageBox.h" +#include "ui/widgets/ModFilterWidget.h" #include "ui_FlamePage.h" #include +#include #include "Application.h" #include "FlameModel.h" @@ -88,6 +91,7 @@ FlamePage::FlamePage(NewInstanceDialog* dialog, QWidget* parent) ui->packView->setItemDelegate(new ProjectItemDelegate(this)); ui->packDescription->setMetaEntry("FlamePacks"); + createFilterWidget(); } FlamePage::~FlamePage() @@ -131,10 +135,35 @@ void FlamePage::openedImpl() void FlamePage::triggerSearch() { - listModel->searchWithTerm(ui->searchEdit->text(), ui->sortByBox->currentIndex()); + ui->packView->selectionModel()->setCurrentIndex({}, QItemSelectionModel::SelectionFlag::ClearAndSelect); + ui->packView->clearSelection(); + ui->packDescription->clear(); + ui->versionSelectionBox->clear(); + listModel->searchWithTerm(ui->searchEdit->text(), ui->sortByBox->currentIndex(), m_filterWidget->getFilter(), + m_filterWidget->changed()); m_fetch_progress.watch(listModel->activeSearchJob().get()); } +bool checkMcVersions(std::list filter, QString value) +{ + for (auto mcVersion : filter) { + if (value == mcVersion.toString()) { + return true; + } + } + return filter.empty(); +} + +bool checkVersionFilters(const Flame::IndexedVersion& v, std::shared_ptr filter) +{ + if (!filter) + return true; + return ((!filter->loaders || !v.loaders || filter->loaders & v.loaders) && // loaders + (filter->releases.empty() || // releases + std::find(filter->releases.cbegin(), filter->releases.cend(), v.version_type) != filter->releases.cend()) && + checkMcVersions(filter->versions, v.mcVersion)); // mcVersions} +} + void FlamePage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelIndex prev) { ui->versionSelectionBox->clear(); @@ -148,7 +177,7 @@ void FlamePage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelInde current = listModel->data(curr, Qt::UserRole).value(); - if (current.versionsLoaded == false) { + if (!current.versionsLoaded || m_filterWidget->changed()) { qDebug() << "Loading flame modpack versions"; auto netJob = new NetJob(QString("Flame::PackVersions(%1)").arg(current.name), APPLICATION->network()); auto response = std::make_shared(); @@ -176,6 +205,16 @@ void FlamePage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelInde qWarning() << "Error while reading flame modpack version: " << e.cause(); } + auto pred = [this](const Flame::IndexedVersion& v) { return !checkVersionFilters(v, m_filterWidget->getFilter()); }; +#if QT_VERSION >= QT_VERSION_CHECK(6, 1, 0) + current.versions.removeIf(pred); +#else + for (auto it = current.versions.begin(); it != current.versions.end();) + if (pred(*it)) + it = current.versions.erase(it); + else + ++it; +#endif for (auto version : current.versions) { auto release_type = version.version_type.isValid() ? QString(" [%1]").arg(version.version_type.toString()) : ""; auto mcVersion = !version.mcVersion.isEmpty() && !version.version.contains(version.mcVersion) @@ -308,3 +347,25 @@ void FlamePage::setSearchTerm(QString term) { ui->searchEdit->setText(term); } + +void FlamePage::createFilterWidget() +{ + auto widget = ModFilterWidget::create(nullptr, false, this); + m_filterWidget.swap(widget); + auto old = ui->splitter->replaceWidget(0, m_filterWidget.get()); + // because we replaced the widget we also need to delete it + if (old) { + delete old; + } + + connect(ui->filterButton, &QPushButton::clicked, this, [this] { m_filterWidget->setHidden(!m_filterWidget->isHidden()); }); + + connect(m_filterWidget.get(), &ModFilterWidget::filterChanged, this, &FlamePage::triggerSearch); + auto response = std::make_shared(); + m_categoriesTask = FlameAPI::getCategories(response, ModPlatform::ResourceType::MODPACK); + QObject::connect(m_categoriesTask.get(), &Task::succeeded, [this, response]() { + auto categories = FlameAPI::loadModCategories(response); + m_filterWidget->setCategories(categories); + }); + m_categoriesTask->start(); +} diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.h b/launcher/ui/pages/modplatform/flame/FlamePage.h index 45a3c6b22..27c96d2f1 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.h +++ b/launcher/ui/pages/modplatform/flame/FlamePage.h @@ -41,6 +41,7 @@ #include #include #include "ui/pages/modplatform/ModpackProviderBasePage.h" +#include "ui/widgets/ModFilterWidget.h" #include "ui/widgets/ProgressWidget.h" namespace Ui { @@ -84,6 +85,7 @@ class FlamePage : public QWidget, public ModpackProviderBasePage { void triggerSearch(); void onSelectionChanged(QModelIndex first, QModelIndex second); void onVersionSelectionChanged(int index); + void createFilterWidget(); private: Ui::FlamePage* ui = nullptr; @@ -97,4 +99,7 @@ class FlamePage : public QWidget, public ModpackProviderBasePage { // Used to do instant searching with a delay to cache quick changes QTimer m_search_timer; + + unique_qobject_ptr m_filterWidget; + Task::Ptr m_categoriesTask; }; diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.ui b/launcher/ui/pages/modplatform/flame/FlamePage.ui index d4ddb37a4..b028e7569 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.ui +++ b/launcher/ui/pages/modplatform/flame/FlamePage.ui @@ -30,42 +30,59 @@ - - - Search and filter... - - - - - + - - - Qt::ScrollBarAlwaysOff - - - true - - - - 48 - 48 - + + + Search and filter... - - - true - - - true + + + Filter + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + Qt::ScrollBarAlwaysOff + + + true + + + + 48 + 48 + + + + + + true + + + true + + + + diff --git a/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp b/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp index 62c22902e..ce8c03fa1 100644 --- a/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp +++ b/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp @@ -215,11 +215,11 @@ unique_qobject_ptr FlameModPage::createFilterWidget() void FlameModPage::prepareProviderCategories() { auto response = std::make_shared(); - auto task = FlameAPI::getModCategories(response); - QObject::connect(task.get(), &Task::succeeded, [this, response]() { + m_categoriesTask = FlameAPI::getModCategories(response); + QObject::connect(m_categoriesTask.get(), &Task::succeeded, [this, response]() { auto categories = FlameAPI::loadModCategories(response); m_filter_widget->setCategories(categories); }); - task->start(); + m_categoriesTask->start(); }; } // namespace ResourceDownload diff --git a/launcher/ui/pages/modplatform/flame/FlameResourcePages.h b/launcher/ui/pages/modplatform/flame/FlameResourcePages.h index 6eef3e435..052706549 100644 --- a/launcher/ui/pages/modplatform/flame/FlameResourcePages.h +++ b/launcher/ui/pages/modplatform/flame/FlameResourcePages.h @@ -100,6 +100,9 @@ class FlameModPage : public ModPage { protected: virtual void prepareProviderCategories() override; + + private: + Task::Ptr m_categoriesTask; }; class FlameResourcePackPage : public ResourcePackResourcePage { diff --git a/launcher/ui/widgets/ModFilterWidget.cpp b/launcher/ui/widgets/ModFilterWidget.cpp index bbb91eac2..a048dbe10 100644 --- a/launcher/ui/widgets/ModFilterWidget.cpp +++ b/launcher/ui/widgets/ModFilterWidget.cpp @@ -68,6 +68,40 @@ class VersionBasicModel : public QIdentityProxyModel { } }; +class AllVersionProxyModel : public QSortFilterProxyModel { + Q_OBJECT + + public: + AllVersionProxyModel(QObject* parent = nullptr) : QSortFilterProxyModel(parent) {} + + int rowCount(const QModelIndex& parent = QModelIndex()) const override { return QSortFilterProxyModel::rowCount(parent) + 1; } + + QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override + { + if (!index.isValid()) { + return {}; + } + + if (index.row() == 0) { + if (role == Qt::DisplayRole) { + return tr("All Versions"); + } + return {}; + } + + QModelIndex newIndex = QSortFilterProxyModel::index(index.row() - 1, index.column()); + return QSortFilterProxyModel::data(newIndex, role); + } + + Qt::ItemFlags flags(const QModelIndex& index) const override + { + if (index.row() == 0) { + return Qt::ItemIsSelectable | Qt::ItemIsEnabled; + } + return QSortFilterProxyModel::flags(index); + } +}; + ModFilterWidget::ModFilterWidget(MinecraftInstance* instance, bool extended, QWidget* parent) : QTabWidget(parent), ui(new Ui::ModFilterWidget), m_instance(instance), m_filter(new Filter()) { @@ -76,9 +110,15 @@ ModFilterWidget::ModFilterWidget(MinecraftInstance* instance, bool extended, QWi m_versions_proxy = new VersionProxyModel(this); m_versions_proxy->setFilter(BaseVersionList::TypeRole, new ExactFilter("release")); - auto proxy = new VersionBasicModel(this); + QAbstractProxyModel* proxy = new VersionBasicModel(this); proxy->setSourceModel(m_versions_proxy); + if (!m_instance && !extended) { + auto allVersions = new AllVersionProxyModel(this); + allVersions->setSourceModel(proxy); + proxy = allVersions; + } + if (extended) { ui->versions->setSourceModel(proxy); ui->versions->setSeparator(", "); @@ -162,18 +202,22 @@ void ModFilterWidget::loadVersionList() void ModFilterWidget::prepareBasicFilter() { - m_filter->hideInstalled = false; - m_filter->side = ""; // or "both" - auto loaders = m_instance->getPackProfile()->getSupportedModLoaders().value(); - ui->neoForge->setChecked(loaders & ModPlatform::NeoForge); - ui->forge->setChecked(loaders & ModPlatform::Forge); - ui->fabric->setChecked(loaders & ModPlatform::Fabric); - ui->quilt->setChecked(loaders & ModPlatform::Quilt); - m_filter->loaders = loaders; - auto def = m_instance->getPackProfile()->getComponentVersion("net.minecraft"); - m_filter->versions.emplace_front(def); - ui->versions->setCheckedItems({ def }); - ui->version->setCurrentIndex(ui->version->findText(def)); + if (m_instance) { + m_filter->hideInstalled = false; + m_filter->side = ""; // or "both" + auto loaders = m_instance->getPackProfile()->getSupportedModLoaders().value(); + ui->neoForge->setChecked(loaders & ModPlatform::NeoForge); + ui->forge->setChecked(loaders & ModPlatform::Forge); + ui->fabric->setChecked(loaders & ModPlatform::Fabric); + ui->quilt->setChecked(loaders & ModPlatform::Quilt); + m_filter->loaders = loaders; + auto def = m_instance->getPackProfile()->getComponentVersion("net.minecraft"); + m_filter->versions.emplace_front(def); + ui->versions->setCheckedItems({ def }); + ui->version->setCurrentIndex(ui->version->findText(def)); + } else { + ui->hideInstalled->hide(); + } } void ModFilterWidget::onShowAllVersionsChanged() @@ -249,7 +293,9 @@ void ModFilterWidget::onHideInstalledFilterChanged() void ModFilterWidget::onVersionFilterTextChanged(const QString& version) { m_filter->versions.clear(); - m_filter->versions.emplace_back(version); + if (version != tr("All Versions")) { + m_filter->versions.emplace_back(version); + } m_filter_changed = true; emit filterChanged(); } From 010678da53c864f08b0f900265aacdca256a4dd8 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 3 Oct 2024 13:46:28 +0000 Subject: [PATCH 228/616] chore(deps): update cachix/install-nix-action action to v30 --- .github/workflows/build.yml | 2 +- .github/workflows/update-flake.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ad77d282b..f578839fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -658,7 +658,7 @@ jobs: uses: actions/checkout@v4 - name: Install Nix - uses: cachix/install-nix-action@v29 + uses: cachix/install-nix-action@v30 # For PRs - name: Setup Nix Magic Cache diff --git a/.github/workflows/update-flake.yml b/.github/workflows/update-flake.yml index 0c8cfde67..5e978f356 100644 --- a/.github/workflows/update-flake.yml +++ b/.github/workflows/update-flake.yml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: cachix/install-nix-action@9f70348d77d0422624097c4b7a75563948901306 # v29 + - uses: cachix/install-nix-action@08dcb3a5e62fa31e2da3d490afc4176ef55ecd72 # v30 - uses: DeterminateSystems/update-flake-lock@v24 with: From bcb1d456d4773f985d3b18d42382400a2c8148e7 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Thu, 3 Oct 2024 21:56:19 -0700 Subject: [PATCH 229/616] fix: version NSCurl plugin in workflow, detect and use arm64 vc_redist for arm64 Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .github/workflows/build.yml | 13 +++++++++++-- program_info/CMakeLists.txt | 12 +++++++++--- program_info/win_install.nsi.in | 14 +++++++------- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7345ffe90..16c9290f2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -81,6 +81,8 @@ jobs: qt_arch: "" qt_version: "6.7.2" qt_modules: "qt5compat qtimageformats qtnetworkauth" + nscurl_tag: "v24.9.26.122" + nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" - os: windows-2022 name: "Windows-MSVC-arm64" @@ -92,6 +94,8 @@ jobs: qt_arch: "win64_msvc2019_arm64" qt_version: "6.7.2" qt_modules: "qt5compat qtimageformats qtnetworkauth" + nscurl_tag: "v24.9.26.122" + nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" - os: macos-14 name: macOS @@ -472,8 +476,13 @@ jobs: if: runner.os == 'Windows' run: | New-Item -Name NSISPlugins -ItemType Directory - Invoke-Webrequest https://github.com/negrutiu/nsis-nscurl/releases/latest/download/NScurl.zip -OutFile NSISPlugins\NScurl.zip - Expand-Archive -Path NSISPlugins\NScurl.zip -DestinationPath NSISPlugins\NSIScurl + Invoke-Webrequest https://github.com/negrutiu/nsis-nscurl/releases/download/${{ matrix.nscurl_tag }}/NScurl.zip -OutFile NSISPlugins\NScurl.zip + $nscurl_hash = Get-FileHash NSISPlugins\NScurl.zip -Algorithm Sha256 | Select-Object -ExpandProperty Hash + if ( $nscurl_hash -ne "${{ matrix.nscurl_sha256 }}") { + echo "::error:: NSCurl.zib sha256 mismatch" + exit 1 + } + Expand-Archive -Path NSISPlugins\NScurl.zip -DestinationPath NSISPlugins\NScurl cd ${{ env.INSTALL_DIR }} makensis -NOCD "${{ github.workspace }}/${{ env.BUILD_DIR }}/program_info/win_install.nsi" diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index 30a435866..8fb6f68aa 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -44,14 +44,20 @@ configure_file(prismlauncher.ico prismlauncher.ico COPYONLY) if(MSVC) set(Launcher_MSVC_Redist_NSIS_Section [=[ -!ifdef haveNSIScurl +!ifdef haveNScurl Section "Visual Studio Runtime" + Var /GLOBAL vc_redist_exe + ${If} ${IsNativeARM64} + StrCpy $vc_redist_exe "vc_redist.arm64.exe" + ${Else} + StrCpy $vc_redist_exe "vc_redist.x64.exe" + ${EndIf} DetailPrint 'Downloading Microsoft Visual C++ Redistributable...' - NScurl::http GET "https://aka.ms/vs/17/release/vc_redist.x64.exe" "$INSTDIR\vc_redist\vc_redist.x64.exe" /INSIST /CANCEL /Zone.Identifier /END + NScurl::http GET "https://aka.ms/vs/17/release/${vc_redist_exe}" "$INSTDIR\vc_redist\${vc_redist_exe}" /INSIST /CANCEL /Zone.Identifier /END Pop $0 ${If} $0 == "OK" DetailPrint "Download successful" - ExecWait "$INSTDIR\vc_redist\vc_redist.x64.exe /install /passive /norestart\" + ExecWait "$INSTDIR\vc_redist\${vc_redist_exe} /install /passive /norestart\" ${Else} DetailPrint "Download failed with error $0" ${EndIf} diff --git a/program_info/win_install.nsi.in b/program_info/win_install.nsi.in index a5c38599d..c0e2b892f 100644 --- a/program_info/win_install.nsi.in +++ b/program_info/win_install.nsi.in @@ -349,15 +349,15 @@ SectionEnd ;------------------------------------ ; include nice plugins -; NSIScurl - curl in NSIS +; NScurl - curl in NSIS ; used for MSVS redist download -; extract to ../NSISPlugins/NSIScurl +; extract to ../NSISPlugins/NScurl ; https://github.com/negrutiu/nsis-nscurl/releases/latest/download/NScurl.zip -!insertmacro CompileTimeIfFileExist "../NSISPlugins/NSIScurl/Plugins/" haveNSIScurl -!ifdef haveNSIScurl -!AddPluginDir /x86-unicode "../NSISPlugins/NSIScurl/Plugins/x86-unicode" -!AddPluginDir /x86-ansi "../NSISPlugins/NSIScurl/Plugins/x86-ansi" -!AddPluginDir /amd64-unicode "../NSISPlugins/NSIScurl/Plugins/amd64-unicode" +!insertmacro CompileTimeIfFileExist "../NSISPlugins/NScurl/Plugins/" haveNScurl +!ifdef haveNScurl +!AddPluginDir /x86-unicode "../NSISPlugins/NScurl/Plugins/x86-unicode" +!AddPluginDir /x86-ansi "../NSISPlugins/NScurl/Plugins/x86-ansi" +!AddPluginDir /amd64-unicode "../NSISPlugins/NScurl/Plugins/amd64-unicode" !endif ;------------------------------------ From 63172540fb467386864ae22356999451dd2ebe08 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Thu, 3 Oct 2024 22:38:30 -0700 Subject: [PATCH 230/616] fix: nisi needs `!include` "x64.nsh" now. also, there were some broken varible Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- program_info/CMakeLists.txt | 4 ++-- program_info/win_install.nsi.in | 8 +++++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index 8fb6f68aa..ee2e336b1 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -53,11 +53,11 @@ Section "Visual Studio Runtime" StrCpy $vc_redist_exe "vc_redist.x64.exe" ${EndIf} DetailPrint 'Downloading Microsoft Visual C++ Redistributable...' - NScurl::http GET "https://aka.ms/vs/17/release/${vc_redist_exe}" "$INSTDIR\vc_redist\${vc_redist_exe}" /INSIST /CANCEL /Zone.Identifier /END + NScurl::http GET "https://aka.ms/vs/17/release/$vc_redist_exe" "$INSTDIR\vc_redist\$vc_redist_exe" /INSIST /CANCEL /Zone.Identifier /END Pop $0 ${If} $0 == "OK" DetailPrint "Download successful" - ExecWait "$INSTDIR\vc_redist\${vc_redist_exe} /install /passive /norestart\" + ExecWait "$INSTDIR\vc_redist\$vc_redist_exe /install /passive /norestart\" ${Else} DetailPrint "Download failed with error $0" ${EndIf} diff --git a/program_info/win_install.nsi.in b/program_info/win_install.nsi.in index c0e2b892f..24f6ee4e8 100644 --- a/program_info/win_install.nsi.in +++ b/program_info/win_install.nsi.in @@ -2,6 +2,8 @@ !include "LogicLib.nsh" !include "MUI2.nsh" +!include "x64.nsh" + Unicode true Name "@Launcher_DisplayName@" @@ -185,7 +187,7 @@ VIAddVersionKey /LANG=${LANG_ENGLISH} "ProductVersion" "@Launcher_VERSION_NAME4@ !macroend -!macro APP_UNASSOCIATE EXT APP_ID +!macro APP_UNASSOCIATE EXT APP_ID APP_EXE # Unregister file type ClearErrors @@ -489,8 +491,8 @@ Section -un.ShellAssoc !insertmacro APP_TEARDOWN_DEFAULT `${APPID}` `${APPNAME}` `${APPEXE}` - !insertmacro APP_UNASSOCIATE ".zip" `${APPID}` - !insertmacro APP_UNASSOCIATE ".mrpack" `${APPID}` + !insertmacro APP_UNASSOCIATE ".zip" `${APPID}` `${APPEXE}` + !insertmacro APP_UNASSOCIATE ".mrpack" `${APPID}` `${APPEXE}` !insertmacro NotifyShell_AssocChanged SectionEnd From 023aa18e852ab1b570b378609edee1e7bbcd1588 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Thu, 3 Oct 2024 23:14:29 -0700 Subject: [PATCH 231/616] ci: NSCurl only needed on MSVC Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .github/workflows/build.yml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 16c9290f2..4063df355 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -475,14 +475,16 @@ jobs: - name: Package (Windows, installer) if: runner.os == 'Windows' run: | - New-Item -Name NSISPlugins -ItemType Directory - Invoke-Webrequest https://github.com/negrutiu/nsis-nscurl/releases/download/${{ matrix.nscurl_tag }}/NScurl.zip -OutFile NSISPlugins\NScurl.zip - $nscurl_hash = Get-FileHash NSISPlugins\NScurl.zip -Algorithm Sha256 | Select-Object -ExpandProperty Hash - if ( $nscurl_hash -ne "${{ matrix.nscurl_sha256 }}") { - echo "::error:: NSCurl.zib sha256 mismatch" - exit 1 + if ('${{ matrix.nscurl_tag }}') { + New-Item -Name NSISPlugins -ItemType Directory + Invoke-Webrequest https://github.com/negrutiu/nsis-nscurl/releases/download/${{ matrix.nscurl_tag }}/NScurl.zip -OutFile NSISPlugins\NScurl.zip + $nscurl_hash = Get-FileHash NSISPlugins\NScurl.zip -Algorithm Sha256 | Select-Object -ExpandProperty Hash + if ( $nscurl_hash -ne "${{ matrix.nscurl_sha256 }}") { + echo "::error:: NSCurl.zib sha256 mismatch" + exit 1 + } + Expand-Archive -Path NSISPlugins\NScurl.zip -DestinationPath NSISPlugins\NScurl } - Expand-Archive -Path NSISPlugins\NScurl.zip -DestinationPath NSISPlugins\NScurl cd ${{ env.INSTALL_DIR }} makensis -NOCD "${{ github.workspace }}/${{ env.BUILD_DIR }}/program_info/win_install.nsi" From a61c93bedefced10b59c310daa567e31cb30f967 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 4 Oct 2024 07:06:19 -0700 Subject: [PATCH 232/616] Update .github/workflows/build.yml Co-authored-by: Sefa Eyeoglu Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4063df355..98caa901d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -480,7 +480,7 @@ jobs: Invoke-Webrequest https://github.com/negrutiu/nsis-nscurl/releases/download/${{ matrix.nscurl_tag }}/NScurl.zip -OutFile NSISPlugins\NScurl.zip $nscurl_hash = Get-FileHash NSISPlugins\NScurl.zip -Algorithm Sha256 | Select-Object -ExpandProperty Hash if ( $nscurl_hash -ne "${{ matrix.nscurl_sha256 }}") { - echo "::error:: NSCurl.zib sha256 mismatch" + echo "::error:: NSCurl.zip sha256 mismatch" exit 1 } Expand-Archive -Path NSISPlugins\NScurl.zip -DestinationPath NSISPlugins\NScurl From 859fac604bf698755e73083625c75969b59c5e8a Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 4 Oct 2024 17:06:47 +0300 Subject: [PATCH 233/616] add modrinth modpack filter Signed-off-by: Trial97 --- launcher/Version.cpp | 15 +++- launcher/Version.h | 2 + launcher/modplatform/flame/FlameAPI.h | 8 +-- launcher/modplatform/modrinth/ModrinthAPI.h | 19 +++-- .../modrinth/ModrinthPackManifest.cpp | 15 ++++ .../modrinth/ModrinthPackManifest.h | 1 + launcher/ui/pages/modplatform/ModModel.cpp | 12 ---- .../ui/pages/modplatform/flame/FlamePage.cpp | 13 +--- .../modplatform/modrinth/ModrinthModel.cpp | 41 +++++------ .../modplatform/modrinth/ModrinthModel.h | 5 +- .../modplatform/modrinth/ModrinthPage.cpp | 53 +++++++++++++- .../pages/modplatform/modrinth/ModrinthPage.h | 5 ++ .../modplatform/modrinth/ModrinthPage.ui | 69 ++++++++++++------- 13 files changed, 170 insertions(+), 88 deletions(-) diff --git a/launcher/Version.cpp b/launcher/Version.cpp index 511aa9c35..e43d9d3f7 100644 --- a/launcher/Version.cpp +++ b/launcher/Version.cpp @@ -123,8 +123,19 @@ QDebug operator<<(QDebug debug, const Version& v) first = false; } - debug.nospace() << " ]" - << " }"; + debug.nospace() << " ]" << " }"; return debug; } + +bool checkMcVersions(std::list filter, QStringList value) +{ + bool valid = false; + for (auto mcVersion : filter) { + if (value.contains(mcVersion.toString())) { + valid = true; + break; + } + } + return filter.empty() || valid; +} diff --git a/launcher/Version.h b/launcher/Version.h index b06e256aa..f596bfeba 100644 --- a/launcher/Version.h +++ b/launcher/Version.h @@ -161,3 +161,5 @@ class Version { void parse(); }; + +bool checkMcVersions(std::list filter, QStringList value); diff --git a/launcher/modplatform/flame/FlameAPI.h b/launcher/modplatform/flame/FlameAPI.h index c66ece8a3..4abaff4ea 100644 --- a/launcher/modplatform/flame/FlameAPI.h +++ b/launcher/modplatform/flame/FlameAPI.h @@ -88,9 +88,6 @@ class FlameAPI : public NetworkResourceAPI { public: static std::optional getStaticSearchURL(SearchArgs const& args) { - auto gameVersionStr = - args.versions.has_value() ? QString("gameVersion=%1").arg(args.versions.value().front().toString()) : QString(); - QStringList get_arguments; get_arguments.append(QString("classId=%1").arg(getClassId(args.type))); get_arguments.append(QString("index=%1").arg(args.offset)); @@ -100,12 +97,13 @@ class FlameAPI : public NetworkResourceAPI { if (args.sorting.has_value()) get_arguments.append(QString("sortField=%1").arg(args.sorting.value().index)); get_arguments.append("sortOrder=desc"); - if (args.loaders.has_value()) + if (args.loaders.has_value() && args.loaders.value() != 0) get_arguments.append(QString("modLoaderTypes=%1").arg(getModLoaderFilters(args.loaders.value()))); if (args.categoryIds.has_value() && !args.categoryIds->empty()) get_arguments.append(QString("categoryIds=[%1]").arg(args.categoryIds->join(","))); - get_arguments.append(gameVersionStr); + if (args.versions.has_value() && !args.versions.value().empty()) + get_arguments.append(QString("gameVersion=%1").arg(args.versions.value().front().toString())); return "https://api.curseforge.com/v1/mods/search?gameId=432&" + get_arguments.join('&'); } diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h index 07be06756..b84d281aa 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.h +++ b/launcher/modplatform/modrinth/ModrinthAPI.h @@ -91,6 +91,8 @@ class ModrinthAPI : public NetworkResourceAPI { return "resourcepack"; case ModPlatform::ResourceType::SHADER_PACK: return "shader"; + case ModPlatform::ResourceType::MODPACK: + return "modpack"; default: qWarning() << "Invalid resource type for Modrinth API!"; break; @@ -99,13 +101,13 @@ class ModrinthAPI : public NetworkResourceAPI { return ""; } - [[nodiscard]] QString createFacets(SearchArgs const& args) const + [[nodiscard]] static QString createFacets(SearchArgs const& args) { QStringList facets_list; - if (args.loaders.has_value()) + if (args.loaders.has_value() && args.loaders.value() != 0) facets_list.append(QString("[%1]").arg(getModLoaderFilters(args.loaders.value()))); - if (args.versions.has_value()) + if (args.versions.has_value() && !args.versions.value().empty()) facets_list.append(QString("[%1]").arg(getGameVersionsArray(args.versions.value()))); if (args.side.has_value()) { auto side = getSideFilters(args.side.value()); @@ -121,9 +123,9 @@ class ModrinthAPI : public NetworkResourceAPI { } public: - [[nodiscard]] inline auto getSearchURL(SearchArgs const& args) const -> std::optional override + static std::optional getStaticSearchURL(SearchArgs const& args) { - if (args.loaders.has_value()) { + if (args.loaders.has_value() && args.loaders.value() != 0) { if (!validateModLoaders(args.loaders.value())) { qWarning() << "Modrinth - or our interface - does not support any the provided mod loaders!"; return {}; @@ -142,6 +144,11 @@ class ModrinthAPI : public NetworkResourceAPI { return BuildConfig.MODRINTH_PROD_URL + "/search?" + get_arguments.join('&'); }; + [[nodiscard]] inline auto getSearchURL(SearchArgs const& args) const -> std::optional override + { + return getStaticSearchURL(args); + } + inline auto getInfoURL(QString const& id) const -> std::optional override { return BuildConfig.MODRINTH_PROD_URL + "/project/" + id; @@ -164,7 +171,7 @@ class ModrinthAPI : public NetworkResourceAPI { .arg(BuildConfig.MODRINTH_PROD_URL, args.pack.addonId.toString(), get_arguments.isEmpty() ? "" : "?", get_arguments.join('&')); }; - auto getGameVersionsArray(std::list mcVersions) const -> QString + static QString getGameVersionsArray(std::list mcVersions) { QString s; for (auto& ver : mcVersions) { diff --git a/launcher/modplatform/modrinth/ModrinthPackManifest.cpp b/launcher/modplatform/modrinth/ModrinthPackManifest.cpp index f360df43a..c52a1743b 100644 --- a/launcher/modplatform/modrinth/ModrinthPackManifest.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackManifest.cpp @@ -135,6 +135,21 @@ auto loadIndexedVersion(QJsonObject& obj) -> ModpackVersion if (!gameVersions.isEmpty()) { file.gameVersion = Json::ensureString(gameVersions[0]); } + auto loaders = Json::requireArray(obj, "loaders"); + for (auto loader : loaders) { + if (loader == "neoforge") + file.loaders |= ModPlatform::NeoForge; + else if (loader == "forge") + file.loaders |= ModPlatform::Forge; + else if (loader == "cauldron") + file.loaders |= ModPlatform::Cauldron; + else if (loader == "liteloader") + file.loaders |= ModPlatform::LiteLoader; + else if (loader == "fabric") + file.loaders |= ModPlatform::Fabric; + else if (loader == "quilt") + file.loaders |= ModPlatform::Quilt; + } file.version_type = ModPlatform::IndexedVersionType(Json::requireString(obj, "version_type")); file.changelog = Json::ensureString(obj, "changelog"); diff --git a/launcher/modplatform/modrinth/ModrinthPackManifest.h b/launcher/modplatform/modrinth/ModrinthPackManifest.h index 2bd61c5d9..2e5e2da84 100644 --- a/launcher/modplatform/modrinth/ModrinthPackManifest.h +++ b/launcher/modplatform/modrinth/ModrinthPackManifest.h @@ -87,6 +87,7 @@ struct ModpackVersion { QString gameVersion; ModPlatform::IndexedVersionType version_type; QString changelog; + ModPlatform::ModLoaderTypes loaders = {}; QString id; QString project_id; diff --git a/launcher/ui/pages/modplatform/ModModel.cpp b/launcher/ui/pages/modplatform/ModModel.cpp index e87a423fa..dfc308566 100644 --- a/launcher/ui/pages/modplatform/ModModel.cpp +++ b/launcher/ui/pages/modplatform/ModModel.cpp @@ -104,18 +104,6 @@ bool checkSide(QString filter, QString value) return filter.isEmpty() || value.isEmpty() || filter == "both" || value == "both" || filter == value; } -bool checkMcVersions(std::list filter, QStringList value) -{ - bool valid = false; - for (auto mcVersion : filter) { - if (value.contains(mcVersion.toString())) { - valid = true; - break; - } - } - return filter.empty() || valid; -} - bool ModModel::checkFilters(ModPlatform::IndexedPack::Ptr pack) { if (!m_filter) diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.cpp b/launcher/ui/pages/modplatform/flame/FlamePage.cpp index 62798f4bc..b92401988 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.cpp +++ b/launcher/ui/pages/modplatform/flame/FlamePage.cpp @@ -34,6 +34,7 @@ */ #include "FlamePage.h" +#include "Version.h" #include "modplatform/flame/FlamePackIndex.h" #include "ui/dialogs/CustomMessageBox.h" #include "ui/widgets/ModFilterWidget.h" @@ -144,16 +145,6 @@ void FlamePage::triggerSearch() m_fetch_progress.watch(listModel->activeSearchJob().get()); } -bool checkMcVersions(std::list filter, QString value) -{ - for (auto mcVersion : filter) { - if (value == mcVersion.toString()) { - return true; - } - } - return filter.empty(); -} - bool checkVersionFilters(const Flame::IndexedVersion& v, std::shared_ptr filter) { if (!filter) @@ -161,7 +152,7 @@ bool checkVersionFilters(const Flame::IndexedVersion& v, std::shared_ptrloaders || !v.loaders || filter->loaders & v.loaders) && // loaders (filter->releases.empty() || // releases std::find(filter->releases.cbegin(), filter->releases.cend(), v.version_type) != filter->releases.cend()) && - checkMcVersions(filter->versions, v.mcVersion)); // mcVersions} + checkMcVersions(filter->versions, { v.mcVersion })); // mcVersions} } void FlamePage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelIndex prev) diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp index b53eea4ef..132150bd2 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp @@ -152,33 +152,26 @@ void ModpackListModel::performPaginatedSearch() return; } } // TODO: Move to standalone API - auto netJob = makeShared("Modrinth::SearchModpack", APPLICATION->network()); - auto searchAllUrl = QString(BuildConfig.MODRINTH_PROD_URL + - "/search?" - "offset=%1&" - "limit=%2&" - "query=%3&" - "index=%4&" - "facets=[[\"project_type:modpack\"]]") - .arg(nextSearchOffset) - .arg(m_modpacks_per_page) - .arg(currentSearchTerm) - .arg(currentSort); + ResourceAPI::SortingMethod sort{}; + sort.name = currentSort; + auto searchUrl = ModrinthAPI::getStaticSearchURL({ ModPlatform::ResourceType::MODPACK, nextSearchOffset, currentSearchTerm, sort, + m_filter->loaders, m_filter->versions, "", m_filter->categoryIds }); - netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchAllUrl), m_all_response)); + auto netJob = makeShared("Modrinth::SearchModpack", APPLICATION->network()); + netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl.value()), m_allResponse)); QObject::connect(netJob.get(), &NetJob::succeeded, this, [this] { - QJsonParseError parse_error_all{}; + QJsonParseError parseError{}; - QJsonDocument doc_all = QJsonDocument::fromJson(*m_all_response, &parse_error_all); - if (parse_error_all.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response from " << debugName() << " at " << parse_error_all.offset - << " reason: " << parse_error_all.errorString(); - qWarning() << *m_all_response; + QJsonDocument doc = QJsonDocument::fromJson(*m_allResponse, &parseError); + if (parseError.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response from " << debugName() << " at " << parseError.offset + << " reason: " << parseError.errorString(); + qWarning() << *m_allResponse; return; } - searchRequestFinished(doc_all); + searchRequestFinished(doc); }); QObject::connect(netJob.get(), &NetJob::failed, this, &ModpackListModel::searchRequestFailed); @@ -220,19 +213,23 @@ static auto sortFromIndex(int index) -> QString } } -void ModpackListModel::searchWithTerm(const QString& term, const int sort) +void ModpackListModel::searchWithTerm(const QString& term, + const int sort, + std::shared_ptr filter, + bool filterChanged) { if (sort > 5 || sort < 0) return; auto sort_str = sortFromIndex(sort); - if (currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull() && currentSort == sort_str) { + if (currentSearchTerm == term && currentSearchTerm.isNull() == term.isNull() && currentSort == sort_str && !filterChanged) { return; } currentSearchTerm = term; currentSort = sort_str; + m_filter = filter; refresh(); } diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.h b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.h index 514ee4484..640ddf688 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.h +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.h @@ -71,7 +71,7 @@ class ModpackListModel : public QAbstractListModel { /* Ask the API for more information */ void fetchMore(const QModelIndex& parent) override; void refresh(); - void searchWithTerm(const QString& term, int sort); + void searchWithTerm(const QString& term, int sort, std::shared_ptr filter, bool filterChanged); [[nodiscard]] bool hasActiveSearchJob() const { return jobPtr && jobPtr->isRunning(); } [[nodiscard]] Task::Ptr activeSearchJob() { return hasActiveSearchJob() ? jobPtr : nullptr; } @@ -112,12 +112,13 @@ class ModpackListModel : public QAbstractListModel { QString currentSearchTerm; QString currentSort; + std::shared_ptr m_filter; int nextSearchOffset = 0; enum SearchState { None, CanPossiblyFetchMore, ResetRequested, Finished } searchState = None; Task::Ptr jobPtr; - std::shared_ptr m_all_response = std::make_shared(); + std::shared_ptr m_allResponse = std::make_shared(); QByteArray m_specific_response; int m_modpacks_per_page = 20; diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp index a000044fa..ff21e8c37 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp @@ -35,6 +35,8 @@ */ #include "ModrinthPage.h" +#include "Version.h" +#include "modplatform/modrinth/ModrinthAPI.h" #include "ui/dialogs/CustomMessageBox.h" #include "ui_ModrinthPage.h" @@ -58,6 +60,7 @@ ModrinthPage::ModrinthPage(NewInstanceDialog* dialog, QWidget* parent) : QWidget(parent), ui(new Ui::ModrinthPage), dialog(dialog), m_fetch_progress(this, false) { ui->setupUi(this); + createFilterWidget(); ui->searchEdit->installEventFilter(this); m_model = new Modrinth::ModpackListModel(this); @@ -126,6 +129,16 @@ bool ModrinthPage::eventFilter(QObject* watched, QEvent* event) return QObject::eventFilter(watched, event); } +bool checkVersionFilters(const Modrinth::ModpackVersion& v, std::shared_ptr filter) +{ + if (!filter) + return true; + return ((!filter->loaders || !v.loaders || filter->loaders & v.loaders) && // loaders + (filter->releases.empty() || // releases + std::find(filter->releases.cbegin(), filter->releases.cend(), v.version_type) != filter->releases.cend()) && + checkMcVersions(filter->versions, { v.gameVersion })); // gameVersion} +} + void ModrinthPage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelIndex prev) { ui->versionSelectionBox->clear(); @@ -190,7 +203,7 @@ void ModrinthPage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelI } else updateUI(); - if (!current.versionsLoaded) { + if (!current.versionsLoaded || m_filterWidget->changed()) { qDebug() << "Loading modrinth modpack versions"; auto netJob = new NetJob(QString("Modrinth::PackVersions(%1)").arg(current.name), APPLICATION->network()); @@ -221,6 +234,16 @@ void ModrinthPage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelI qDebug() << *response; qWarning() << "Error while reading modrinth modpack version: " << e.cause(); } + auto pred = [this](const Modrinth::ModpackVersion& v) { return !checkVersionFilters(v, m_filterWidget->getFilter()); }; +#if QT_VERSION >= QT_VERSION_CHECK(6, 1, 0) + current.versions.removeIf(pred); +#else + for (auto it = current.versions.begin(); it != current.versions.end();) + if (pred(*it)) + it = current.versions.erase(it); + else + ++it; +#endif for (auto version : current.versions) { auto release_type = version.version_type.isValid() ? QString(" [%1]").arg(version.version_type.toString()) : ""; auto mcVersion = !version.gameVersion.isEmpty() && !version.name.contains(version.gameVersion) @@ -338,7 +361,11 @@ void ModrinthPage::suggestCurrent() void ModrinthPage::triggerSearch() { - m_model->searchWithTerm(ui->searchEdit->text(), ui->sortByBox->currentIndex()); + ui->packView->selectionModel()->setCurrentIndex({}, QItemSelectionModel::SelectionFlag::ClearAndSelect); + ui->packView->clearSelection(); + ui->packDescription->clear(); + ui->versionSelectionBox->clear(); + m_model->searchWithTerm(ui->searchEdit->text(), ui->sortByBox->currentIndex(), m_filterWidget->getFilter(), m_filterWidget->changed()); m_fetch_progress.watch(m_model->activeSearchJob().get()); } @@ -361,3 +388,25 @@ QString ModrinthPage::getSerachTerm() const { return ui->searchEdit->text(); } + +void ModrinthPage::createFilterWidget() +{ + auto widget = ModFilterWidget::create(nullptr, false, this); + m_filterWidget.swap(widget); + auto old = ui->splitter->replaceWidget(0, m_filterWidget.get()); + // because we replaced the widget we also need to delete it + if (old) { + delete old; + } + + connect(ui->filterButton, &QPushButton::clicked, this, [this] { m_filterWidget->setHidden(!m_filterWidget->isHidden()); }); + + connect(m_filterWidget.get(), &ModFilterWidget::filterChanged, this, &ModrinthPage::triggerSearch); + auto response = std::make_shared(); + m_categoriesTask = ModrinthAPI::getModCategories(response); + QObject::connect(m_categoriesTask.get(), &Task::succeeded, [this, response]() { + auto categories = ModrinthAPI::loadCategories(response, "modpack"); + m_filterWidget->setCategories(categories); + }); + m_categoriesTask->start(); +} \ No newline at end of file diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h index dd99e0d29..7f504cdbd 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.h @@ -41,6 +41,7 @@ #include "modplatform/modrinth/ModrinthPackManifest.h" #include "ui/pages/modplatform/ModpackProviderBasePage.h" +#include "ui/widgets/ModFilterWidget.h" #include "ui/widgets/ProgressWidget.h" #include @@ -87,6 +88,7 @@ class ModrinthPage : public QWidget, public ModpackProviderBasePage { void onSelectionChanged(QModelIndex first, QModelIndex second); void onVersionSelectionChanged(int index); void triggerSearch(); + void createFilterWidget(); private: Ui::ModrinthPage* ui; @@ -100,4 +102,7 @@ class ModrinthPage : public QWidget, public ModpackProviderBasePage { // Used to do instant searching with a delay to cache quick changes QTimer m_search_timer; + + unique_qobject_ptr m_filterWidget; + Task::Ptr m_categoriesTask; }; diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.ui b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.ui index 7f4f903f6..ef44abb52 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.ui +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.ui @@ -12,42 +12,59 @@ - - - Search and filter ... - - - - - + - - - Qt::ScrollBarAlwaysOff - - - true - - - - 48 - 48 - + + + Search and filter... - - - true - - - true + + + Filter + + + + + 0 + 0 + + + + Qt::Horizontal + + + + + Qt::ScrollBarAlwaysOff + + + true + + + + 48 + 48 + + + + + + true + + + true + + + + From cc0c9d208dc4b686a254138f71465199a895ee3a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 4 Oct 2024 22:22:10 +0000 Subject: [PATCH 234/616] chore(deps): update actions/cache action to v4.1.0 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ad77d282b..a659e162c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -169,7 +169,7 @@ jobs: - name: Retrieve ccache cache (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug' - uses: actions/cache@v4.0.2 + uses: actions/cache@v4.1.0 with: path: '${{ github.workspace }}\.ccache' key: ${{ matrix.os }}-mingw-w64-ccache-${{ github.run_id }} From f7bd76c7d4ce0d834f259e4d085b726e8117bd29 Mon Sep 17 00:00:00 2001 From: arnfaldur Date: Sat, 5 Oct 2024 17:58:53 +0000 Subject: [PATCH 235/616] flatpak: don't cleanup libGLU The mod AAA Particles (found in the modpack Prominence II RPG) fails to start due to a missing `libGLU.so.1` file. Removing this cleanup command fixes the issue and makes the modpack run without issue. I reproduced the issue at the head of the develop branch, with and without the change. No other issue was detected by adding the library, and I could not find the initial justification for removing it. Signed-off-by: arnfaldur --- flatpak/org.prismlauncher.PrismLauncher.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/flatpak/org.prismlauncher.PrismLauncher.yml b/flatpak/org.prismlauncher.PrismLauncher.yml index bd09f7fd8..71e6dd11e 100644 --- a/flatpak/org.prismlauncher.PrismLauncher.yml +++ b/flatpak/org.prismlauncher.PrismLauncher.yml @@ -22,9 +22,6 @@ finish-args: # FTBApp import - --filesystem=~/.ftba:ro -cleanup: - - /lib/libGLU* - modules: # Might be needed by some Controller mods (see https://github.com/isXander/Controlify/issues/31) - shared-modules/libusb/libusb.json From 03294f0000eba56edc39cbd80cc53418a2429528 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 6 Oct 2024 00:24:57 +0000 Subject: [PATCH 236/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/1925c603f17fc89f4c8f6bf6f631a802ad85d784?narHash=sha256-J%2BPeFKSDV%2BpHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI%3D' (2024-09-26) → 'github:NixOS/nixpkgs/bc947f541ae55e999ffdb4013441347d83b00feb?narHash=sha256-NOiTvBbRLIOe5F6RbHaAh6%2B%2BBNjsb149fGZd1T4%2BKBg%3D' (2024-10-04) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 7667a8688..6897c162d 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1727348695, - "narHash": "sha256-J+PeFKSDV+pHL7ukkfpVzCOO7mBSrrpJ3svwBFABbhI=", + "lastModified": 1728018373, + "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "1925c603f17fc89f4c8f6bf6f631a802ad85d784", + "rev": "bc947f541ae55e999ffdb4013441347d83b00feb", "type": "github" }, "original": { From d5990cca4318121dea8d6b669abdada64944c88b Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sun, 6 Oct 2024 13:51:36 +0100 Subject: [PATCH 237/616] Disable retry for private pack fetch This is already handled with a dialog asking whether you want it to be removed. Signed-off-by: TheKodeToad --- launcher/modplatform/legacy_ftb/PackFetchTask.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/modplatform/legacy_ftb/PackFetchTask.cpp b/launcher/modplatform/legacy_ftb/PackFetchTask.cpp index 8f1a6e2ff..a0beeddcc 100644 --- a/launcher/modplatform/legacy_ftb/PackFetchTask.cpp +++ b/launcher/modplatform/legacy_ftb/PackFetchTask.cpp @@ -74,6 +74,7 @@ void PackFetchTask::fetchPrivate(const QStringList& toFetch) auto data = std::make_shared(); NetJob* job = new NetJob("Fetching private pack", m_network); job->addNetAction(Net::ApiDownload::makeByteArray(privatePackBaseUrl.arg(packCode), data)); + job->setAskRetry(false); QObject::connect(job, &NetJob::succeeded, this, [this, job, data, packCode] { ModpackList packs; From 6e5f616ced96acee9a9aad76193f82e6a0c2cd27 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 6 Oct 2024 23:33:24 +0300 Subject: [PATCH 238/616] move checkMcVersions to Filter struct Signed-off-by: Trial97 --- launcher/Version.cpp | 12 ------------ launcher/Version.h | 2 -- launcher/ui/pages/modplatform/ModModel.cpp | 2 +- launcher/ui/pages/modplatform/flame/FlamePage.cpp | 2 +- .../ui/pages/modplatform/modrinth/ModrinthPage.cpp | 2 +- launcher/ui/widgets/ModFilterWidget.h | 9 +++++++++ 6 files changed, 12 insertions(+), 17 deletions(-) diff --git a/launcher/Version.cpp b/launcher/Version.cpp index e43d9d3f7..2edb17e72 100644 --- a/launcher/Version.cpp +++ b/launcher/Version.cpp @@ -127,15 +127,3 @@ QDebug operator<<(QDebug debug, const Version& v) return debug; } - -bool checkMcVersions(std::list filter, QStringList value) -{ - bool valid = false; - for (auto mcVersion : filter) { - if (value.contains(mcVersion.toString())) { - valid = true; - break; - } - } - return filter.empty() || valid; -} diff --git a/launcher/Version.h b/launcher/Version.h index f596bfeba..b06e256aa 100644 --- a/launcher/Version.h +++ b/launcher/Version.h @@ -161,5 +161,3 @@ class Version { void parse(); }; - -bool checkMcVersions(std::list filter, QStringList value); diff --git a/launcher/ui/pages/modplatform/ModModel.cpp b/launcher/ui/pages/modplatform/ModModel.cpp index dfc308566..1f0329321 100644 --- a/launcher/ui/pages/modplatform/ModModel.cpp +++ b/launcher/ui/pages/modplatform/ModModel.cpp @@ -123,7 +123,7 @@ bool ModModel::checkVersionFilters(const ModPlatform::IndexedVersion& v) checkSide(m_filter->side, v.side) && // side (m_filter->releases.empty() || // releases std::find(m_filter->releases.cbegin(), m_filter->releases.cend(), v.version_type) != m_filter->releases.cend()) && - checkMcVersions(m_filter->versions, v.mcVersion)); // mcVersions + m_filter->checkMcVersions(v.mcVersion)); // mcVersions } } // namespace ResourceDownload diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.cpp b/launcher/ui/pages/modplatform/flame/FlamePage.cpp index b92401988..9abf4a9c6 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.cpp +++ b/launcher/ui/pages/modplatform/flame/FlamePage.cpp @@ -152,7 +152,7 @@ bool checkVersionFilters(const Flame::IndexedVersion& v, std::shared_ptrloaders || !v.loaders || filter->loaders & v.loaders) && // loaders (filter->releases.empty() || // releases std::find(filter->releases.cbegin(), filter->releases.cend(), v.version_type) != filter->releases.cend()) && - checkMcVersions(filter->versions, { v.mcVersion })); // mcVersions} + filter->checkMcVersions({ v.mcVersion })); // mcVersions} } void FlamePage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelIndex prev) diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp index ff21e8c37..2c19d54ad 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp @@ -136,7 +136,7 @@ bool checkVersionFilters(const Modrinth::ModpackVersion& v, std::shared_ptrloaders || !v.loaders || filter->loaders & v.loaders) && // loaders (filter->releases.empty() || // releases std::find(filter->releases.cbegin(), filter->releases.cend(), v.version_type) != filter->releases.cend()) && - checkMcVersions(filter->versions, { v.gameVersion })); // gameVersion} + filter->checkMcVersions({ v.gameVersion })); // gameVersion} } void ModrinthPage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelIndex prev) diff --git a/launcher/ui/widgets/ModFilterWidget.h b/launcher/ui/widgets/ModFilterWidget.h index fdfd2c8bb..50f0e06c9 100644 --- a/launcher/ui/widgets/ModFilterWidget.h +++ b/launcher/ui/widgets/ModFilterWidget.h @@ -71,6 +71,15 @@ class ModFilterWidget : public QTabWidget { releases == other.releases && categoryIds == other.categoryIds; } bool operator!=(const Filter& other) const { return !(*this == other); } + + bool checkMcVersions(QStringList value) + { + for (auto mcVersion : versions) + if (value.contains(mcVersion.toString())) + return true; + + return versions.empty(); + } }; static unique_qobject_ptr create(MinecraftInstance* instance, bool extended, QWidget* parent = nullptr); From 5bd5627a9646361ccee2d96bb555de58072bc7ab Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 8 Oct 2024 15:06:50 +0300 Subject: [PATCH 239/616] extended the modrinth search and applied the suggested change Signed-off-by: Trial97 --- .../modplatform/modrinth/ModrinthPage.cpp | 2 +- launcher/ui/widgets/ModFilterWidget.cpp | 24 ++++++++++++------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp index 2c19d54ad..8803c6dd9 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp @@ -391,7 +391,7 @@ QString ModrinthPage::getSerachTerm() const void ModrinthPage::createFilterWidget() { - auto widget = ModFilterWidget::create(nullptr, false, this); + auto widget = ModFilterWidget::create(nullptr, true, this); m_filterWidget.swap(widget); auto old = ui->splitter->replaceWidget(0, m_filterWidget.get()); // because we replaced the widget we also need to delete it diff --git a/launcher/ui/widgets/ModFilterWidget.cpp b/launcher/ui/widgets/ModFilterWidget.cpp index a048dbe10..68adcdb71 100644 --- a/launcher/ui/widgets/ModFilterWidget.cpp +++ b/launcher/ui/widgets/ModFilterWidget.cpp @@ -64,6 +64,8 @@ class VersionBasicModel : public QIdentityProxyModel { { if (role == Qt::DisplayRole) return QIdentityProxyModel::data(index, BaseVersionList::VersionIdRole); + if (role == Qt::UserRole) + return QIdentityProxyModel::data(index, BaseVersionList::VersionIdRole); return {}; } }; @@ -86,6 +88,9 @@ class AllVersionProxyModel : public QSortFilterProxyModel { if (role == Qt::DisplayRole) { return tr("All Versions"); } + if (role == Qt::UserRole) { + return "all"; + } return {}; } @@ -113,17 +118,18 @@ ModFilterWidget::ModFilterWidget(MinecraftInstance* instance, bool extended, QWi QAbstractProxyModel* proxy = new VersionBasicModel(this); proxy->setSourceModel(m_versions_proxy); - if (!m_instance && !extended) { + if (extended) { + if (!m_instance) { + ui->environmentGroup->hide(); + } + ui->versions->setSourceModel(proxy); + ui->versions->setSeparator(", "); + ui->versions->setDefaultText(tr("All Versions")); + ui->version->hide(); + } else { auto allVersions = new AllVersionProxyModel(this); allVersions->setSourceModel(proxy); proxy = allVersions; - } - - if (extended) { - ui->versions->setSourceModel(proxy); - ui->versions->setSeparator(", "); - ui->version->hide(); - } else { ui->version->setModel(proxy); ui->versions->hide(); ui->showAllVersions->hide(); @@ -293,7 +299,7 @@ void ModFilterWidget::onHideInstalledFilterChanged() void ModFilterWidget::onVersionFilterTextChanged(const QString& version) { m_filter->versions.clear(); - if (version != tr("All Versions")) { + if (ui->version->currentData(Qt::UserRole) != "all") { m_filter->versions.emplace_back(version); } m_filter_changed = true; From df9f54454ac8cfe40fad525e64e6cc3578f26a77 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 8 Oct 2024 19:19:03 +0300 Subject: [PATCH 240/616] removed static functions Signed-off-by: Trial97 --- launcher/modplatform/flame/FlameAPI.h | 3 +-- launcher/modplatform/modrinth/ModrinthAPI.h | 11 +++-------- launcher/ui/pages/modplatform/flame/FlameModel.cpp | 4 ++-- .../ui/pages/modplatform/modrinth/ModrinthModel.cpp | 4 ++-- 4 files changed, 8 insertions(+), 14 deletions(-) diff --git a/launcher/modplatform/flame/FlameAPI.h b/launcher/modplatform/flame/FlameAPI.h index 4abaff4ea..3ca0d5448 100644 --- a/launcher/modplatform/flame/FlameAPI.h +++ b/launcher/modplatform/flame/FlameAPI.h @@ -86,7 +86,7 @@ class FlameAPI : public NetworkResourceAPI { static const QString getModLoaderFilters(ModPlatform::ModLoaderTypes types) { return "[" + getModLoaderStrings(types).join(',') + "]"; } public: - static std::optional getStaticSearchURL(SearchArgs const& args) + [[nodiscard]] std::optional getSearchURL(SearchArgs const& args) const override { QStringList get_arguments; get_arguments.append(QString("classId=%1").arg(getClassId(args.type))); @@ -107,7 +107,6 @@ class FlameAPI : public NetworkResourceAPI { return "https://api.curseforge.com/v1/mods/search?gameId=432&" + get_arguments.join('&'); } - [[nodiscard]] std::optional getSearchURL(SearchArgs const& args) const override { return getStaticSearchURL(args); } private: [[nodiscard]] std::optional getInfoURL(QString const& id) const override diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h index b84d281aa..070f59dad 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.h +++ b/launcher/modplatform/modrinth/ModrinthAPI.h @@ -101,7 +101,7 @@ class ModrinthAPI : public NetworkResourceAPI { return ""; } - [[nodiscard]] static QString createFacets(SearchArgs const& args) + [[nodiscard]] QString createFacets(SearchArgs const& args) const { QStringList facets_list; @@ -123,7 +123,7 @@ class ModrinthAPI : public NetworkResourceAPI { } public: - static std::optional getStaticSearchURL(SearchArgs const& args) + [[nodiscard]] inline auto getSearchURL(SearchArgs const& args) const -> std::optional override { if (args.loaders.has_value() && args.loaders.value() != 0) { if (!validateModLoaders(args.loaders.value())) { @@ -144,11 +144,6 @@ class ModrinthAPI : public NetworkResourceAPI { return BuildConfig.MODRINTH_PROD_URL + "/search?" + get_arguments.join('&'); }; - [[nodiscard]] inline auto getSearchURL(SearchArgs const& args) const -> std::optional override - { - return getStaticSearchURL(args); - } - inline auto getInfoURL(QString const& id) const -> std::optional override { return BuildConfig.MODRINTH_PROD_URL + "/project/" + id; @@ -171,7 +166,7 @@ class ModrinthAPI : public NetworkResourceAPI { .arg(BuildConfig.MODRINTH_PROD_URL, args.pack.addonId.toString(), get_arguments.isEmpty() ? "" : "?", get_arguments.join('&')); }; - static QString getGameVersionsArray(std::list mcVersions) + QString getGameVersionsArray(std::list mcVersions) const { QString s; for (auto& ver : mcVersions) { diff --git a/launcher/ui/pages/modplatform/flame/FlameModel.cpp b/launcher/ui/pages/modplatform/flame/FlameModel.cpp index 8383b756f..cfdb185ff 100644 --- a/launcher/ui/pages/modplatform/flame/FlameModel.cpp +++ b/launcher/ui/pages/modplatform/flame/FlameModel.cpp @@ -188,8 +188,8 @@ void ListModel::performPaginatedSearch() sort.index = currentSort + 1; auto netJob = makeShared("Flame::Search", APPLICATION->network()); - auto searchUrl = FlameAPI::getStaticSearchURL({ ModPlatform::ResourceType::MODPACK, nextSearchOffset, currentSearchTerm, sort, - m_filter->loaders, m_filter->versions, "", m_filter->categoryIds }); + auto searchUrl = FlameAPI().getSearchURL({ ModPlatform::ResourceType::MODPACK, nextSearchOffset, currentSearchTerm, sort, + m_filter->loaders, m_filter->versions, "", m_filter->categoryIds }); netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl.value()), response)); jobPtr = netJob; diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp index 132150bd2..417ff4080 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp @@ -154,8 +154,8 @@ void ModpackListModel::performPaginatedSearch() } // TODO: Move to standalone API ResourceAPI::SortingMethod sort{}; sort.name = currentSort; - auto searchUrl = ModrinthAPI::getStaticSearchURL({ ModPlatform::ResourceType::MODPACK, nextSearchOffset, currentSearchTerm, sort, - m_filter->loaders, m_filter->versions, "", m_filter->categoryIds }); + auto searchUrl = ModrinthAPI().getSearchURL({ ModPlatform::ResourceType::MODPACK, nextSearchOffset, currentSearchTerm, sort, + m_filter->loaders, m_filter->versions, "", m_filter->categoryIds }); auto netJob = makeShared("Modrinth::SearchModpack", APPLICATION->network()); netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl.value()), m_allResponse)); From d31c947b36c907f59e82150f4fc60781d70185ab Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 8 Oct 2024 22:02:38 +0300 Subject: [PATCH 241/616] fix crash when no resorce version is available Signed-off-by: Trial97 --- launcher/ui/pages/modplatform/ResourcePage.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index bed118465..dea28d6d5 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -254,7 +254,10 @@ void ResourcePage::updateSelectionButton() m_ui->resourceSelectionButton->setEnabled(true); if (auto current_pack = getCurrentPack(); current_pack) { - if (!current_pack->isVersionSelected(m_selected_version_index)) + if (current_pack->versionsLoaded && current_pack->versions.empty()) { + m_ui->resourceSelectionButton->setEnabled(false); + qWarning() << tr("No version available for the selected pack"); + } else if (!current_pack->isVersionSelected(m_selected_version_index)) m_ui->resourceSelectionButton->setText(tr("Select %1 for download").arg(resourceString())); else m_ui->resourceSelectionButton->setText(tr("Deselect %1 for download").arg(resourceString())); From a76f37760cb043749e15582afda349caf67e330c Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Tue, 8 Oct 2024 22:30:50 +0100 Subject: [PATCH 242/616] Fix log spam when opening files from older versions Signed-off-by: TheKodeToad --- launcher/modplatform/packwiz/Packwiz.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index 19929f173..7e7411b03 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -299,7 +299,7 @@ auto V1::getIndexForMod(const QDir& index_dir, QString slug) -> Mod mod.name = stringEntry(table, "name"); mod.filename = stringEntry(table, "filename"); mod.side = stringToSide(stringEntry(table, "side")); - mod.releaseType = ModPlatform::IndexedVersionType(stringEntry(table, "x-prismlauncher-release-type")); + mod.releaseType = ModPlatform::IndexedVersionType(table["x-prismlauncher-release-type"].value_or("")); if (auto loaders = table["x-prismlauncher-loaders"]; loaders && loaders.is_array()) { for (auto&& loader : *loaders.as_array()) { if (loader.is_string()) { @@ -352,7 +352,10 @@ auto V1::getIndexForMod(const QDir& index_dir, QString slug) -> Mod mod.provider = Provider::MODRINTH; mod.mod_id() = stringEntry(*mod_provider_table, "mod-id"); mod.version() = stringEntry(*mod_provider_table, "version"); - mod.version_number = stringEntry(*mod_provider_table, "x-prismlauncher-version-number"); + + auto version_number_node = (*mod_provider_table)["x-prismlauncher-version-number"]; + if (version_number_node) + mod.version_number = version_number_node.value_or(""); } else { qCritical() << QString("No mod provider on mod metadata!"); return {}; From 4b66320f63031b63090f42bc164b62f82ddfc1df Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Tue, 8 Oct 2024 22:51:03 +0100 Subject: [PATCH 243/616] Move x-prism-launcher to unnamed table for consistency Signed-off-by: TheKodeToad --- launcher/modplatform/packwiz/Packwiz.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index 7e7411b03..fe5ef34e7 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -120,7 +120,7 @@ auto V1::createModFormat([[maybe_unused]] const QDir& index_dir, mod.releaseType = mod_version.version_type; mod.version_number = mod_version.version_number; - if (mod.version_number.isNull()) // on CurseForge, there is only a version name - not a version number + if (mod.version_number.isNull()) // on CurseForge, there is only a version name - not a version number mod.version_number = mod_version.version; return mod; @@ -172,9 +172,10 @@ void V1::updateModIndex(const QDir& index_dir, Mod& mod) qCritical() << QString("Did not write file %1 because missing information!").arg(normalized_fname); return; } - update = toml::table{ { "file-id", mod.file_id.toInt() }, - { "project-id", mod.project_id.toInt() }, - { "x-prismlauncher-version-number", mod.version_number.toStdString() } }; + update = toml::table{ + { "file-id", mod.file_id.toInt() }, + { "project-id", mod.project_id.toInt() }, + }; break; case (ModPlatform::ResourceProvider::MODRINTH): if (mod.mod_id().toString().isEmpty() || mod.version().toString().isEmpty()) { @@ -184,7 +185,6 @@ void V1::updateModIndex(const QDir& index_dir, Mod& mod) update = toml::table{ { "mod-id", mod.mod_id().toString().toStdString() }, { "version", mod.version().toString().toStdString() }, - { "x-prismlauncher-version-number", mod.version_number.toStdString() }, }; break; } @@ -215,6 +215,7 @@ void V1::updateModIndex(const QDir& index_dir, Mod& mod) { "x-prismlauncher-loaders", loaders }, { "x-prismlauncher-mc-versions", mcVersions }, { "x-prismlauncher-release-type", mod.releaseType.toString().toStdString() }, + { "x-prismlauncher-version-number", mod.version_number.toStdString() }, { "download", toml::table{ { "mode", mod.mode.toStdString() }, @@ -319,6 +320,7 @@ auto V1::getIndexForMod(const QDir& index_dir, QString slug) -> Mod mod.mcVersions.sort(); } } + mod.version_number = table["x-prismlauncher-version-number"].value_or(""); { // [download] info auto download_table = table["download"].as_table(); @@ -347,15 +349,10 @@ auto V1::getIndexForMod(const QDir& index_dir, QString slug) -> Mod mod.provider = Provider::FLAME; mod.file_id = intEntry(*mod_provider_table, "file-id"); mod.project_id = intEntry(*mod_provider_table, "project-id"); - mod.version_number = stringEntry(*mod_provider_table, "x-prismlauncher-version-number"); } else if ((mod_provider_table = update_table[ModPlatform::ProviderCapabilities::name(Provider::MODRINTH)].as_table())) { mod.provider = Provider::MODRINTH; mod.mod_id() = stringEntry(*mod_provider_table, "mod-id"); mod.version() = stringEntry(*mod_provider_table, "version"); - - auto version_number_node = (*mod_provider_table)["x-prismlauncher-version-number"]; - if (version_number_node) - mod.version_number = version_number_node.value_or(""); } else { qCritical() << QString("No mod provider on mod metadata!"); return {}; From 093313e5914b3759bdb1147cd0fd1ff6627bdb31 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 9 Oct 2024 07:14:47 +0000 Subject: [PATCH 244/616] chore(deps): update actions/cache action to v4.1.1 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5dc02edf3..dc45252fa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -173,7 +173,7 @@ jobs: - name: Retrieve ccache cache (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug' - uses: actions/cache@v4.1.0 + uses: actions/cache@v4.1.1 with: path: '${{ github.workspace }}\.ccache' key: ${{ matrix.os }}-mingw-w64-ccache-${{ github.run_id }} From 909114bf2ae1090e7c4d2d757645b413c71aaba1 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 9 Oct 2024 15:07:09 +0100 Subject: [PATCH 245/616] Change LaunchTask to only accept MinecraftInstance Signed-off-by: TheKodeToad --- launcher/launch/LaunchTask.cpp | 4 +-- launcher/launch/LaunchTask.h | 9 +++--- launcher/minecraft/launch/AutoInstallJava.cpp | 2 +- .../minecraft/launch/CreateGameFolders.cpp | 5 ++-- launcher/minecraft/launch/ExtractNatives.cpp | 9 +++--- .../minecraft/launch/LauncherPartLaunch.cpp | 29 +++++++++---------- launcher/minecraft/launch/ModMinecraftJar.cpp | 4 +-- .../minecraft/launch/ReconstructAssets.cpp | 5 ++-- launcher/minecraft/launch/ScanModFolders.cpp | 2 +- .../minecraft/launch/VerifyJavaInstall.cpp | 2 +- 10 files changed, 34 insertions(+), 37 deletions(-) diff --git a/launcher/launch/LaunchTask.cpp b/launcher/launch/LaunchTask.cpp index 4e4f5ead4..0251b302d 100644 --- a/launcher/launch/LaunchTask.cpp +++ b/launcher/launch/LaunchTask.cpp @@ -51,14 +51,14 @@ void LaunchTask::init() m_instance->setRunning(true); } -shared_qobject_ptr LaunchTask::create(InstancePtr inst) +shared_qobject_ptr LaunchTask::create(MinecraftInstancePtr inst) { shared_qobject_ptr proc(new LaunchTask(inst)); proc->init(); return proc; } -LaunchTask::LaunchTask(InstancePtr instance) : m_instance(instance) {} +LaunchTask::LaunchTask(MinecraftInstancePtr instance) : m_instance(instance) {} void LaunchTask::appendStep(shared_qobject_ptr step) { diff --git a/launcher/launch/LaunchTask.h b/launcher/launch/LaunchTask.h index 2fd8c78c7..56065af5b 100644 --- a/launcher/launch/LaunchTask.h +++ b/launcher/launch/LaunchTask.h @@ -37,6 +37,7 @@ #pragma once #include +#include #include #include "BaseInstance.h" #include "LaunchStep.h" @@ -46,21 +47,21 @@ class LaunchTask : public Task { Q_OBJECT protected: - explicit LaunchTask(InstancePtr instance); + explicit LaunchTask(MinecraftInstancePtr instance); void init(); public: enum State { NotStarted, Running, Waiting, Failed, Aborted, Finished }; public: /* methods */ - static shared_qobject_ptr create(InstancePtr inst); + static shared_qobject_ptr create(MinecraftInstancePtr inst); virtual ~LaunchTask() = default; void appendStep(shared_qobject_ptr step); void prependStep(shared_qobject_ptr step); void setCensorFilter(QMap filter); - InstancePtr instance() { return m_instance; } + MinecraftInstancePtr instance() { return m_instance; } void setPid(qint64 pid) { m_pid = pid; } @@ -115,7 +116,7 @@ class LaunchTask : public Task { void finalizeSteps(bool successful, const QString& error); protected: /* data */ - InstancePtr m_instance; + MinecraftInstancePtr m_instance; shared_qobject_ptr m_logModel; QList> m_steps; QMap m_censorFilter; diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index 4fad6f15f..b23b23ed2 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -58,7 +58,7 @@ AutoInstallJava::AutoInstallJava(LaunchTask* parent) : LaunchStep(parent) - , m_instance(std::dynamic_pointer_cast(m_parent->instance())) + , m_instance(m_parent->instance()) , m_supported_arch(SysInfo::getSupportedJavaArchitecture()) {}; void AutoInstallJava::executeTask() diff --git a/launcher/minecraft/launch/CreateGameFolders.cpp b/launcher/minecraft/launch/CreateGameFolders.cpp index 36f5e6407..07bdbb600 100644 --- a/launcher/minecraft/launch/CreateGameFolders.cpp +++ b/launcher/minecraft/launch/CreateGameFolders.cpp @@ -8,16 +8,15 @@ CreateGameFolders::CreateGameFolders(LaunchTask* parent) : LaunchStep(parent) {} void CreateGameFolders::executeTask() { auto instance = m_parent->instance(); - std::shared_ptr minecraftInstance = std::dynamic_pointer_cast(instance); - if (!FS::ensureFolderPathExists(minecraftInstance->gameRoot())) { + if (!FS::ensureFolderPathExists(instance->gameRoot())) { emit logLine("Couldn't create the main game folder", MessageLevel::Error); emitFailed(tr("Couldn't create the main game folder")); return; } // HACK: this is a workaround for MCL-3732 - 'server-resource-packs' folder is created. - if (!FS::ensureFolderPathExists(FS::PathCombine(minecraftInstance->gameRoot(), "server-resource-packs"))) { + if (!FS::ensureFolderPathExists(FS::PathCombine(instance->gameRoot(), "server-resource-packs"))) { emit logLine("Couldn't create the 'server-resource-packs' folder", MessageLevel::Error); } emitSucceeded(); diff --git a/launcher/minecraft/launch/ExtractNatives.cpp b/launcher/minecraft/launch/ExtractNatives.cpp index 405008f40..afe091758 100644 --- a/launcher/minecraft/launch/ExtractNatives.cpp +++ b/launcher/minecraft/launch/ExtractNatives.cpp @@ -70,17 +70,16 @@ static bool unzipNatives(QString source, QString targetFolder, bool applyJnilibH void ExtractNatives::executeTask() { auto instance = m_parent->instance(); - std::shared_ptr minecraftInstance = std::dynamic_pointer_cast(instance); - auto toExtract = minecraftInstance->getNativeJars(); + auto toExtract = instance->getNativeJars(); if (toExtract.isEmpty()) { emitSucceeded(); return; } - auto settings = minecraftInstance->settings(); + auto settings = instance->settings(); - auto outputPath = minecraftInstance->getNativePath(); + auto outputPath = instance->getNativePath(); FS::ensureFolderPathExists(outputPath); - auto javaVersion = minecraftInstance->getJavaVersion(); + auto javaVersion = instance->getJavaVersion(); bool jniHackEnabled = javaVersion.major() >= 8; for (const auto& source : toExtract) { if (!unzipNatives(source, outputPath, jniHackEnabled)) { diff --git a/launcher/minecraft/launch/LauncherPartLaunch.cpp b/launcher/minecraft/launch/LauncherPartLaunch.cpp index 2b932ae47..10c14a95f 100644 --- a/launcher/minecraft/launch/LauncherPartLaunch.cpp +++ b/launcher/minecraft/launch/LauncherPartLaunch.cpp @@ -50,16 +50,16 @@ LauncherPartLaunch::LauncherPartLaunch(LaunchTask* parent) : LaunchStep(parent) { - auto instance = parent->instance(); - if (instance->settings()->get("CloseAfterLaunch").toBool()) { + if (parent->instance()->settings()->get("CloseAfterLaunch").toBool()) { std::shared_ptr connection{ new QMetaObject::Connection }; - *connection = connect(&m_process, &LoggedProcess::log, this, [=](QStringList lines, [[maybe_unused]] MessageLevel::Enum level) { - qDebug() << lines; - if (lines.filter(QRegularExpression(".*Setting user.+", QRegularExpression::CaseInsensitiveOption)).length() != 0) { - APPLICATION->closeAllWindows(); - disconnect(*connection); - } - }); + *connection = + connect(&m_process, &LoggedProcess::log, this, [=](const QStringList& lines, [[maybe_unused]] MessageLevel::Enum level) { + qDebug() << lines; + if (lines.filter(QRegularExpression(".*Setting user.+", QRegularExpression::CaseInsensitiveOption)).length() != 0) { + APPLICATION->closeAllWindows(); + disconnect(*connection); + } + }); } connect(&m_process, &LoggedProcess::log, this, &LauncherPartLaunch::logLines); @@ -77,10 +77,9 @@ void LauncherPartLaunch::executeTask() } auto instance = m_parent->instance(); - std::shared_ptr minecraftInstance = std::dynamic_pointer_cast(instance); QString legacyJarPath; - if (minecraftInstance->getLauncher() == "legacy" || minecraftInstance->shouldApplyOnlineFixes()) { + if (instance->getLauncher() == "legacy" || instance->shouldApplyOnlineFixes()) { legacyJarPath = APPLICATION->getJarPath("NewLaunchLegacy.jar"); if (legacyJarPath.isEmpty()) { const char* reason = QT_TR_NOOP("Legacy launcher library could not be found. Please check your installation."); @@ -90,8 +89,8 @@ void LauncherPartLaunch::executeTask() } } - m_launchScript = minecraftInstance->createLaunchScript(m_session, m_targetToJoin); - QStringList args = minecraftInstance->javaArguments(); + m_launchScript = instance->createLaunchScript(m_session, m_targetToJoin); + QStringList args = instance->javaArguments(); QString allArgs = args.join(", "); emit logLine("Java Arguments:\n[" + m_parent->censorPrivateInfo(allArgs) + "]\n\n", MessageLevel::Launcher); @@ -102,13 +101,13 @@ void LauncherPartLaunch::executeTask() // make detachable - this will keep the process running even if the object is destroyed m_process.setDetachable(true); - auto classPath = minecraftInstance->getClassPath(); + auto classPath = instance->getClassPath(); classPath.prepend(jarPath); if (!legacyJarPath.isEmpty()) classPath.prepend(legacyJarPath); - auto natPath = minecraftInstance->getNativePath(); + auto natPath = instance->getNativePath(); #ifdef Q_OS_WIN natPath = FS::getPathNameInLocal8bit(natPath); #endif diff --git a/launcher/minecraft/launch/ModMinecraftJar.cpp b/launcher/minecraft/launch/ModMinecraftJar.cpp index 6e73333b1..e06080ba7 100644 --- a/launcher/minecraft/launch/ModMinecraftJar.cpp +++ b/launcher/minecraft/launch/ModMinecraftJar.cpp @@ -42,7 +42,7 @@ void ModMinecraftJar::executeTask() { - auto m_inst = std::dynamic_pointer_cast(m_parent->instance()); + auto m_inst = m_parent->instance(); if (!m_inst->getJarMods().size()) { emitSucceeded(); @@ -82,7 +82,7 @@ void ModMinecraftJar::finalize() bool ModMinecraftJar::removeJar() { - auto m_inst = std::dynamic_pointer_cast(m_parent->instance()); + auto m_inst = m_parent->instance(); auto finalJarPath = QDir(m_inst->binRoot()).absoluteFilePath("minecraft.jar"); QFile finalJar(finalJarPath); if (finalJar.exists()) { diff --git a/launcher/minecraft/launch/ReconstructAssets.cpp b/launcher/minecraft/launch/ReconstructAssets.cpp index 843ccc554..21ae395f0 100644 --- a/launcher/minecraft/launch/ReconstructAssets.cpp +++ b/launcher/minecraft/launch/ReconstructAssets.cpp @@ -22,12 +22,11 @@ void ReconstructAssets::executeTask() { auto instance = m_parent->instance(); - std::shared_ptr minecraftInstance = std::dynamic_pointer_cast(instance); - auto components = minecraftInstance->getPackProfile(); + auto components = instance->getPackProfile(); auto profile = components->getProfile(); auto assets = profile->getMinecraftAssets(); - if (!AssetsUtils::reconstructAssets(assets->id, minecraftInstance->resourcesDir())) { + if (!AssetsUtils::reconstructAssets(assets->id, instance->resourcesDir())) { emit logLine("Failed to reconstruct Minecraft assets.", MessageLevel::Error); } diff --git a/launcher/minecraft/launch/ScanModFolders.cpp b/launcher/minecraft/launch/ScanModFolders.cpp index 7e08a4e36..1a2ddf194 100644 --- a/launcher/minecraft/launch/ScanModFolders.cpp +++ b/launcher/minecraft/launch/ScanModFolders.cpp @@ -42,7 +42,7 @@ void ScanModFolders::executeTask() { - auto m_inst = std::dynamic_pointer_cast(m_parent->instance()); + auto m_inst = m_parent->instance(); auto loaders = m_inst->loaderModList(); connect(loaders.get(), &ModFolderModel::updateFinished, this, &ScanModFolders::modsDone); diff --git a/launcher/minecraft/launch/VerifyJavaInstall.cpp b/launcher/minecraft/launch/VerifyJavaInstall.cpp index 1e7448089..bc950d673 100644 --- a/launcher/minecraft/launch/VerifyJavaInstall.cpp +++ b/launcher/minecraft/launch/VerifyJavaInstall.cpp @@ -46,7 +46,7 @@ void VerifyJavaInstall::executeTask() { - auto instance = std::dynamic_pointer_cast(m_parent->instance()); + auto instance = m_parent->instance(); auto packProfile = instance->getPackProfile(); auto settings = instance->settings(); auto storedVersion = settings->get("JavaVersion").toString(); From 98adcc60a30a95a86b564ebe69bb0ad276263424 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 9 Oct 2024 16:59:56 +0100 Subject: [PATCH 246/616] Use UTF-8 to decode logs on Java 18 or newer Signed-off-by: TheKodeToad --- launcher/LoggedProcess.cpp | 3 ++- launcher/LoggedProcess.h | 6 +++--- launcher/java/JavaVersion.cpp | 6 ++++++ launcher/java/JavaVersion.h | 2 +- launcher/minecraft/launch/LauncherPartLaunch.cpp | 4 +++- 5 files changed, 15 insertions(+), 6 deletions(-) diff --git a/launcher/LoggedProcess.cpp b/launcher/LoggedProcess.cpp index fadd64e68..35ce4e0e5 100644 --- a/launcher/LoggedProcess.cpp +++ b/launcher/LoggedProcess.cpp @@ -39,7 +39,8 @@ #include #include "MessageLevel.h" -LoggedProcess::LoggedProcess(QObject* parent) : QProcess(parent) +LoggedProcess::LoggedProcess(const QTextCodec* output_codec, QObject* parent) + : QProcess(parent), m_err_decoder(output_codec), m_out_decoder(output_codec) { // QProcess has a strange interface... let's map a lot of those into a few. connect(this, &QProcess::readyReadStandardOutput, this, &LoggedProcess::on_stdOut); diff --git a/launcher/LoggedProcess.h b/launcher/LoggedProcess.h index 46bdaa830..75ba15dfd 100644 --- a/launcher/LoggedProcess.h +++ b/launcher/LoggedProcess.h @@ -49,7 +49,7 @@ class LoggedProcess : public QProcess { enum State { NotRunning, Starting, FailedToStart, Running, Finished, Crashed, Aborted }; public: - explicit LoggedProcess(QObject* parent = 0); + explicit LoggedProcess(const QTextCodec* output_codec = QTextCodec::codecForLocale(), QObject* parent = 0); virtual ~LoggedProcess(); State state() const; @@ -80,8 +80,8 @@ class LoggedProcess : public QProcess { QStringList reprocess(const QByteArray& data, QTextDecoder& decoder); private: - QTextDecoder m_err_decoder = QTextDecoder(QTextCodec::codecForLocale()); - QTextDecoder m_out_decoder = QTextDecoder(QTextCodec::codecForLocale()); + QTextDecoder m_err_decoder; + QTextDecoder m_out_decoder; QString m_leftover_line; bool m_killed = false; State m_state = NotRunning; diff --git a/launcher/java/JavaVersion.cpp b/launcher/java/JavaVersion.cpp index 5e9700012..bca50f2c9 100644 --- a/launcher/java/JavaVersion.cpp +++ b/launcher/java/JavaVersion.cpp @@ -48,6 +48,12 @@ bool JavaVersion::requiresPermGen() const return !m_parseable || m_major < 8; } +bool JavaVersion::defaultsToUtf8() const +{ + // starting from Java 18, UTF-8 is the default charset: https://openjdk.org/jeps/400 + return m_parseable && m_major >= 18; +} + bool JavaVersion::isModular() const { return m_parseable && m_major >= 9; diff --git a/launcher/java/JavaVersion.h b/launcher/java/JavaVersion.h index dfb4770da..c070bdeec 100644 --- a/launcher/java/JavaVersion.h +++ b/launcher/java/JavaVersion.h @@ -25,7 +25,7 @@ class JavaVersion { bool operator>(const JavaVersion& rhs); bool requiresPermGen() const; - + bool defaultsToUtf8() const; bool isModular() const; QString toString() const; diff --git a/launcher/minecraft/launch/LauncherPartLaunch.cpp b/launcher/minecraft/launch/LauncherPartLaunch.cpp index 10c14a95f..d9a2b9b6b 100644 --- a/launcher/minecraft/launch/LauncherPartLaunch.cpp +++ b/launcher/minecraft/launch/LauncherPartLaunch.cpp @@ -48,7 +48,9 @@ #include "gamemode_client.h" #endif -LauncherPartLaunch::LauncherPartLaunch(LaunchTask* parent) : LaunchStep(parent) +LauncherPartLaunch::LauncherPartLaunch(LaunchTask* parent) + : LaunchStep(parent) + , m_process(parent->instance()->getJavaVersion().defaultsToUtf8() ? QTextCodec::codecForName("UTF-8") : QTextCodec::codecForLocale()) { if (parent->instance()->settings()->get("CloseAfterLaunch").toBool()) { std::shared_ptr connection{ new QMetaObject::Connection }; From 5b6d551650e4590567321647ce68ae2043a8180c Mon Sep 17 00:00:00 2001 From: Edgars Cirulis Date: Thu, 10 Oct 2024 03:45:35 +0300 Subject: [PATCH 247/616] chore: update Qt to 6.8.0 Signed-off-by: Edgars Cirulis --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5dc02edf3..39dc2305e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -82,7 +82,7 @@ jobs: qt_ver: 6 qt_host: windows qt_arch: "" - qt_version: "6.7.3" + qt_version: "6.8.0" qt_modules: "qt5compat qtimageformats qtnetworkauth" nscurl_tag: "v24.9.26.122" nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" @@ -95,7 +95,7 @@ jobs: qt_ver: 6 qt_host: windows qt_arch: "win64_msvc2019_arm64" - qt_version: "6.7.3" + qt_version: "6.8.0" qt_modules: "qt5compat qtimageformats qtnetworkauth" nscurl_tag: "v24.9.26.122" nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" @@ -106,7 +106,7 @@ jobs: qt_ver: 6 qt_host: mac qt_arch: "" - qt_version: "6.7.3" + qt_version: "6.8.0" qt_modules: "qt5compat qtimageformats qtnetworkauth" - os: macos-14 From b39098dbc5b371e31ce585f7534ffdb00096c2b5 Mon Sep 17 00:00:00 2001 From: Edgars Cirulis Date: Thu, 10 Oct 2024 03:47:11 +0300 Subject: [PATCH 248/616] ci: fix qt-6.8 workflow Signed-off-by: Edgars Cirulis --- .github/workflows/build.yml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 39dc2305e..017bc68e9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -80,8 +80,8 @@ jobs: architecture: "x64" vcvars_arch: "amd64" qt_ver: 6 - qt_host: windows - qt_arch: "" + qt_host: "windows" + qt_arch: "win64_msvc2022_64" qt_version: "6.8.0" qt_modules: "qt5compat qtimageformats qtnetworkauth" nscurl_tag: "v24.9.26.122" @@ -93,8 +93,8 @@ jobs: architecture: "arm64" vcvars_arch: "amd64_arm64" qt_ver: 6 - qt_host: windows - qt_arch: "win64_msvc2019_arm64" + qt_host: "windows" + qt_arch: "win64_msvc2022_arm64_cross_compiled" qt_version: "6.8.0" qt_modules: "qt5compat qtimageformats qtnetworkauth" nscurl_tag: "v24.9.26.122" @@ -223,7 +223,7 @@ jobs: version: ${{ matrix.qt_version }} host: "windows" target: "desktop" - arch: "" + arch: ${{ matrix.qt_arch }} modules: ${{ matrix.qt_modules }} cache: ${{ inputs.is_qt_cached }} cache-key-prefix: host-qt-arm64-windows @@ -264,7 +264,7 @@ jobs: - name: Add QT_HOST_PATH var (Windows MSVC arm64) if: runner.os == 'Windows' && matrix.architecture == 'arm64' run: | - echo "QT_HOST_PATH=${{ github.workspace }}\HostQt\Qt\${{ matrix.qt_version }}\msvc2019_64" >> $env:GITHUB_ENV + echo "QT_HOST_PATH=${{ github.workspace }}\HostQt\Qt\${{ matrix.qt_version }}\msvc2022_64" >> $env:GITHUB_ENV - name: Setup java (macOS) if: runner.os == 'macOS' From 0beaa94311a00cdc02ef5ff7d182849fce419aa9 Mon Sep 17 00:00:00 2001 From: Edgars Cirulis Date: Thu, 10 Oct 2024 15:23:48 +0300 Subject: [PATCH 249/616] ci: uprev qt install action to v4 Signed-off-by: Edgars Cirulis --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 017bc68e9..a96278ba3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -216,7 +216,7 @@ jobs: - name: Install host Qt (Windows MSVC arm64) if: runner.os == 'Windows' && matrix.architecture == 'arm64' - uses: jurplel/install-qt-action@v3 + uses: jurplel/install-qt-action@v4 with: aqtversion: "==3.1.*" py7zrversion: ">=0.20.2" @@ -232,7 +232,7 @@ jobs: - name: Install Qt (macOS, Linux & Windows MSVC) if: matrix.msystem == '' - uses: jurplel/install-qt-action@v3 + uses: jurplel/install-qt-action@v4 with: aqtversion: "==3.1.*" py7zrversion: ">=0.20.2" From 2bc6ae97568f9c9e522c4a64988cb325eb4d25ec Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 11 Oct 2024 19:53:28 +0100 Subject: [PATCH 250/616] Prevent directories from being removed on instance update Signed-off-by: TheKodeToad --- launcher/InstanceCreationTask.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/launcher/InstanceCreationTask.cpp b/launcher/InstanceCreationTask.cpp index 9c17dfc9f..d89a00d6c 100644 --- a/launcher/InstanceCreationTask.cpp +++ b/launcher/InstanceCreationTask.cpp @@ -42,11 +42,11 @@ void InstanceCreationTask::executeTask() setStatus(tr("Removing old conflicting files...")); qDebug() << "Removing old files"; - for (auto path : m_files_to_remove) { + for (const QString& path : m_files_to_remove) { if (!QFile::exists(path)) continue; qDebug() << "Removing" << path; - if (!FS::deletePath(path)) { + if (!QFile::remove(path)) { qCritical() << "Couldn't remove the old conflicting files."; emitFailed(tr("Failed to remove old conflicting files.")); return; @@ -55,5 +55,4 @@ void InstanceCreationTask::executeTask() } emitSucceeded(); - return; } From 09c9da268fdc833304f6159735cfb7e80d0e69bc Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Fri, 11 Oct 2024 13:26:20 -0700 Subject: [PATCH 251/616] fix: prevent inf recursion when mod icon load fails; cut max pixmapcache to 1/4 previous value Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/MTPixmapCache.h | 6 +-- launcher/minecraft/mod/Mod.cpp | 41 +++++++++++-------- launcher/minecraft/mod/Mod.h | 8 ++-- .../minecraft/mod/tasks/LocalModParseTask.cpp | 41 ++++++++++--------- .../minecraft/mod/tasks/LocalModParseTask.h | 4 +- 5 files changed, 55 insertions(+), 45 deletions(-) diff --git a/launcher/MTPixmapCache.h b/launcher/MTPixmapCache.h index b6bd13045..0ba9c5ac8 100644 --- a/launcher/MTPixmapCache.h +++ b/launcher/MTPixmapCache.h @@ -101,7 +101,7 @@ class PixmapCache final : public QObject { */ bool _markCacheMissByEviciton() { - static constexpr uint maxInt = static_cast(std::numeric_limits::max()); + static constexpr uint maxCache = static_cast(std::numeric_limits::max()) / 4; static constexpr uint step = 10240; static constexpr int oneSecond = 1000; @@ -118,8 +118,8 @@ class PixmapCache final : public QObject { if (m_consecutive_fast_evicitons >= m_consecutive_fast_evicitons_threshold) { // increase the cache size uint newSize = _cacheLimit() + step; - if (newSize >= maxInt) { // increase it until you overflow :D - newSize = maxInt; + if (newSize >= maxCache) { // increase it until you overflow :D + newSize = maxCache; qDebug() << m_consecutive_fast_evicitons << tr("pixmap cache misses by eviction happened too fast, doing nothing as the cache size reached it's limit"); } else { diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp index 5442df7fe..9663026cd 100644 --- a/launcher/minecraft/mod/Mod.cpp +++ b/launcher/minecraft/mod/Mod.cpp @@ -36,6 +36,7 @@ */ #include "Mod.h" +#include #include #include @@ -241,7 +242,7 @@ void Mod::finishResolvingWithDetails(ModDetails&& details) if (metadata) setMetadata(std::move(metadata)); if (!iconPath().isEmpty()) { - m_pack_image_cache_key.was_read_attempt = false; + m_packImageCacheKey.wasReadAttempt = false; } } @@ -290,45 +291,53 @@ auto Mod::issueTracker() const -> QString return details().issue_tracker; } -void Mod::setIcon(QImage new_image) const +QPixmap Mod::setIcon(QImage new_image) const { QMutexLocker locker(&m_data_lock); Q_ASSERT(!new_image.isNull()); - if (m_pack_image_cache_key.key.isValid()) - PixmapCache::remove(m_pack_image_cache_key.key); + if (m_packImageCacheKey.key.isValid()) + PixmapCache::remove(m_packImageCacheKey.key); // scale the image to avoid flooding the pixmapcache auto pixmap = QPixmap::fromImage(new_image.scaled({ 64, 64 }, Qt::AspectRatioMode::KeepAspectRatioByExpanding, Qt::SmoothTransformation)); - m_pack_image_cache_key.key = PixmapCache::insert(pixmap); - m_pack_image_cache_key.was_ever_used = true; - m_pack_image_cache_key.was_read_attempt = true; + m_packImageCacheKey.key = PixmapCache::insert(pixmap); + m_packImageCacheKey.wasEverUsed = true; + m_packImageCacheKey.wasReadAttempt = true; + return pixmap; } QPixmap Mod::icon(QSize size, Qt::AspectRatioMode mode) const { - QPixmap cached_image; - if (PixmapCache::find(m_pack_image_cache_key.key, &cached_image)) { + auto pixmap_transform = [&size, &mode](QPixmap pixmap) { if (size.isNull()) - return cached_image; - return cached_image.scaled(size, mode, Qt::SmoothTransformation); + return pixmap; + return pixmap.scaled(size, mode, Qt::SmoothTransformation); + }; + + QPixmap cached_image; + if (PixmapCache::find(m_packImageCacheKey.key, &cached_image)) { + return pixmap_transform(cached_image); } // No valid image we can get - if ((!m_pack_image_cache_key.was_ever_used && m_pack_image_cache_key.was_read_attempt) || iconPath().isEmpty()) + if ((!m_packImageCacheKey.wasEverUsed && m_packImageCacheKey.wasReadAttempt) || iconPath().isEmpty()) return {}; - if (m_pack_image_cache_key.was_ever_used) { + if (m_packImageCacheKey.wasEverUsed) { qDebug() << "Mod" << name() << "Had it's icon evicted from the cache. reloading..."; PixmapCache::markCacheMissByEviciton(); } // Image got evicted from the cache or an attempt to load it has not been made. load it and retry. - m_pack_image_cache_key.was_read_attempt = true; - ModUtils::loadIconFile(*this); - return icon(size); + m_packImageCacheKey.wasReadAttempt = true; + if (ModUtils::loadIconFile(*this, &cached_image)) { + return pixmap_transform(cached_image); + } + // Image failed to load + return {}; } bool Mod::valid() const diff --git a/launcher/minecraft/mod/Mod.h b/launcher/minecraft/mod/Mod.h index 9bd76c2fd..a0d9797ed 100644 --- a/launcher/minecraft/mod/Mod.h +++ b/launcher/minecraft/mod/Mod.h @@ -82,7 +82,7 @@ class Mod : public Resource { /** Gets the icon of the mod, converted to a QPixmap for drawing, and scaled to size. */ [[nodiscard]] QPixmap icon(QSize size, Qt::AspectRatioMode mode = Qt::AspectRatioMode::IgnoreAspectRatio) const; /** Thread-safe. */ - void setIcon(QImage new_image) const; + QPixmap setIcon(QImage new_image) const; auto metadata() -> std::shared_ptr; auto metadata() const -> const std::shared_ptr; @@ -111,7 +111,7 @@ class Mod : public Resource { struct { QPixmapCache::Key key; - bool was_ever_used = false; - bool was_read_attempt = false; - } mutable m_pack_image_cache_key; + bool wasEverUsed = false; + bool wasReadAttempt = false; + } mutable m_packImageCacheKey; }; diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp index 60257ce0c..d456211f8 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -647,11 +647,11 @@ bool validate(QFileInfo file) return ModUtils::process(mod, ProcessingLevel::BasicInfoOnly) && mod.valid(); } -bool processIconPNG(const Mod& mod, QByteArray&& raw_data) +bool processIconPNG(const Mod& mod, QByteArray&& raw_data, QPixmap* pixmap) { auto img = QImage::fromData(raw_data); if (!img.isNull()) { - mod.setIcon(img); + *pixmap = mod.setIcon(img); } else { qWarning() << "Failed to parse mod logo:" << mod.iconPath() << "from" << mod.name(); return false; @@ -659,15 +659,15 @@ bool processIconPNG(const Mod& mod, QByteArray&& raw_data) return true; } -bool loadIconFile(const Mod& mod) +bool loadIconFile(const Mod& mod, QPixmap* pixmap) { if (mod.iconPath().isEmpty()) { qWarning() << "No Iconfile set, be sure to parse the mod first"; return false; } - auto png_invalid = [&mod]() { - qWarning() << "Mod at" << mod.fileinfo().filePath() << "does not have a valid icon"; + auto png_invalid = [&mod](const QString& reason) { + qWarning() << "Mod at" << mod.fileinfo().filePath() << "does not have a valid icon:" << reason; return false; }; @@ -676,24 +676,26 @@ bool loadIconFile(const Mod& mod) QFileInfo icon_info(FS::PathCombine(mod.fileinfo().filePath(), mod.iconPath())); if (icon_info.exists() && icon_info.isFile()) { QFile icon(icon_info.filePath()); - if (!icon.open(QIODevice::ReadOnly)) - return false; + if (!icon.open(QIODevice::ReadOnly)) { + return png_invalid("failed to open file " + icon_info.filePath()); + } auto data = icon.readAll(); - bool icon_result = ModUtils::processIconPNG(mod, std::move(data)); + bool icon_result = ModUtils::processIconPNG(mod, std::move(data), pixmap); icon.close(); if (!icon_result) { - return png_invalid(); // icon invalid + return png_invalid("invalid png image"); // icon invalid } + return true; } - return false; + return png_invalid("file '" + icon_info.filePath() + "' does not exists or is not a file"); } case ResourceType::ZIPFILE: { QuaZip zip(mod.fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) - return false; + return png_invalid("failed to open '" + mod.fileinfo().filePath() + "' as a zip archive"); QuaZipFile file(&zip); @@ -701,28 +703,27 @@ bool loadIconFile(const Mod& mod) if (!file.open(QIODevice::ReadOnly)) { qCritical() << "Failed to open file in zip."; zip.close(); - return png_invalid(); + return png_invalid("Failed to open '" + mod.iconPath() + "' in zip archive"); } auto data = file.readAll(); - bool icon_result = ModUtils::processIconPNG(mod, std::move(data)); + bool icon_result = ModUtils::processIconPNG(mod, std::move(data), pixmap); file.close(); if (!icon_result) { - return png_invalid(); // icon png invalid + return png_invalid("invalid png image"); // icon png invalid } - } else { - return png_invalid(); // could not set icon as current file. + return true; } - return false; + return png_invalid("Failed to set '" + mod.iconPath() + + "' as current file in zip archive"); // could not set icon as current file. } case ResourceType::LITEMOD: { - return false; // can lightmods even have icons? + return png_invalid("litemods do not have icons"); // can lightmods even have icons? } default: - qWarning() << "Invalid type for mod, can not load icon."; - return false; + return png_invalid("Invalid type for mod, can not load icon."); } } diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.h b/launcher/minecraft/mod/tasks/LocalModParseTask.h index a03217093..91ee6f253 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.h @@ -26,8 +26,8 @@ bool processLitemod(Mod& mod, ProcessingLevel level = ProcessingLevel::Full); /** Checks whether a file is valid as a mod or not. */ bool validate(QFileInfo file); -bool processIconPNG(const Mod& mod, QByteArray&& raw_data); -bool loadIconFile(const Mod& mod); +bool processIconPNG(const Mod& mod, QByteArray&& raw_data, QPixmap* pixmap); +bool loadIconFile(const Mod& mod, QPixmap* pixmap); } // namespace ModUtils class LocalModParseTask : public Task { From 72cfad8fee7f81d85df7389ab9e32294d13a4707 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 11 Oct 2024 21:35:13 +0100 Subject: [PATCH 252/616] Continue deleting before failing Signed-off-by: TheKodeToad --- launcher/InstanceCreationTask.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/launcher/InstanceCreationTask.cpp b/launcher/InstanceCreationTask.cpp index d89a00d6c..3e7b3142f 100644 --- a/launcher/InstanceCreationTask.cpp +++ b/launcher/InstanceCreationTask.cpp @@ -38,6 +38,8 @@ void InstanceCreationTask::executeTask() // files scheduled to, and we'd better not let the user abort in the middle of it, since it'd // put the instance in an invalid state. if (shouldOverride()) { + bool deleteFailed = false; + setAbortable(false); setStatus(tr("Removing old conflicting files...")); qDebug() << "Removing old files"; @@ -45,13 +47,19 @@ void InstanceCreationTask::executeTask() for (const QString& path : m_files_to_remove) { if (!QFile::exists(path)) continue; + qDebug() << "Removing" << path; + if (!QFile::remove(path)) { - qCritical() << "Couldn't remove the old conflicting files."; - emitFailed(tr("Failed to remove old conflicting files.")); - return; + qCritical() << "Could not remove" << path; + deleteFailed = true; } } + + if (deleteFailed) { + emitFailed(tr("Failed to remove old conflicting files.")); + return; + } } emitSucceeded(); From 97f4ead0fbec5508f7ff6785f07dcf869ed663c2 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 12 Oct 2024 00:19:54 +0300 Subject: [PATCH 253/616] remove client overrides instead of double deleting the normal ones Signed-off-by: Trial97 --- launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index ba97c441f..3442fd19c 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -136,7 +136,7 @@ bool ModrinthCreationTask::updateInstance() } auto old_client_overrides = Override::readOverrides("client-overrides", old_index_folder); - for (const auto& entry : old_overrides) { + for (const auto& entry : old_client_overrides) { if (entry.isEmpty()) continue; qDebug() << "Scheduling" << entry << "for removal"; From 3a1c06de027ab2755c2a27624f41cbd445a156b4 Mon Sep 17 00:00:00 2001 From: Mia Moir <63592337+archessmn@users.noreply.github.com> Date: Sat, 12 Oct 2024 23:47:58 +0100 Subject: [PATCH 254/616] fix: Tab order on custom command inputs The tab order on the custom command UI in the instance settings is off, it goes 0 -> 2 -> 1, This re-orders the ui file to fix the order the inputs are in. Signed-off-by: Mia Moir <63592337+archessmn@users.noreply.github.com> --- launcher/ui/widgets/CustomCommands.ui | 30 +++++++++++++-------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/launcher/ui/widgets/CustomCommands.ui b/launcher/ui/widgets/CustomCommands.ui index 4a39ff7f7..b485c293e 100644 --- a/launcher/ui/widgets/CustomCommands.ui +++ b/launcher/ui/widgets/CustomCommands.ui @@ -38,19 +38,6 @@ false - - - - P&ost-exit command: - - - postExitCmdTextBox - - - - - - @@ -61,8 +48,8 @@ - - + + @@ -77,6 +64,19 @@ + + + + P&ost-exit command: + + + postExitCmdTextBox + + + + + + From 3c836ece71c61c19eacd7bb4f324940071c6e89a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 13 Oct 2024 00:24:52 +0000 Subject: [PATCH 255/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/bc947f541ae55e999ffdb4013441347d83b00feb?narHash=sha256-NOiTvBbRLIOe5F6RbHaAh6%2B%2BBNjsb149fGZd1T4%2BKBg%3D' (2024-10-04) → 'github:NixOS/nixpkgs/5633bcff0c6162b9e4b5f1264264611e950c8ec7?narHash=sha256-9UTxR8eukdg%2BXZeHgxW5hQA9fIKHsKCdOIUycTryeVw%3D' (2024-10-09) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 6897c162d..7bf13f75c 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1728018373, - "narHash": "sha256-NOiTvBbRLIOe5F6RbHaAh6++BNjsb149fGZd1T4+KBg=", + "lastModified": 1728492678, + "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bc947f541ae55e999ffdb4013441347d83b00feb", + "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7", "type": "github" }, "original": { From a108b5b420b7d2785c9850d4a0bcb9c628d073a4 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Mon, 14 Oct 2024 00:32:12 -0700 Subject: [PATCH 256/616] fix: ensure all connections to the ProgressDialogs's Task the dialog made are dissconnected Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/ui/dialogs/ProgressDialog.cpp | 21 ++++++++++++--------- launcher/ui/dialogs/ProgressDialog.h | 2 ++ 2 files changed, 14 insertions(+), 9 deletions(-) diff --git a/launcher/ui/dialogs/ProgressDialog.cpp b/launcher/ui/dialogs/ProgressDialog.cpp index 0ca3a1bd9..9897687e3 100644 --- a/launcher/ui/dialogs/ProgressDialog.cpp +++ b/launcher/ui/dialogs/ProgressDialog.cpp @@ -90,6 +90,9 @@ void ProgressDialog::on_skipButton_clicked(bool checked) ProgressDialog::~ProgressDialog() { + for (auto conn : this->m_taskConnections) { + disconnect(conn); + } delete ui; } @@ -140,15 +143,15 @@ int ProgressDialog::execWithTask(Task* task) } // Connect signals. - connect(task, &Task::started, this, &ProgressDialog::onTaskStarted); - connect(task, &Task::failed, this, &ProgressDialog::onTaskFailed); - connect(task, &Task::succeeded, this, &ProgressDialog::onTaskSucceeded); - connect(task, &Task::status, this, &ProgressDialog::changeStatus); - connect(task, &Task::details, this, &ProgressDialog::changeStatus); - connect(task, &Task::stepProgress, this, &ProgressDialog::changeStepProgress); - connect(task, &Task::progress, this, &ProgressDialog::changeProgress); - connect(task, &Task::aborted, this, &ProgressDialog::hide); - connect(task, &Task::abortStatusChanged, ui->skipButton, &QPushButton::setEnabled); + this->m_taskConnections.push_back(connect(task, &Task::started, this, &ProgressDialog::onTaskStarted)); + this->m_taskConnections.push_back(connect(task, &Task::failed, this, &ProgressDialog::onTaskFailed)); + this->m_taskConnections.push_back(connect(task, &Task::succeeded, this, &ProgressDialog::onTaskSucceeded)); + this->m_taskConnections.push_back(connect(task, &Task::status, this, &ProgressDialog::changeStatus)); + this->m_taskConnections.push_back(connect(task, &Task::details, this, &ProgressDialog::changeStatus)); + this->m_taskConnections.push_back(connect(task, &Task::stepProgress, this, &ProgressDialog::changeStepProgress)); + this->m_taskConnections.push_back(connect(task, &Task::progress, this, &ProgressDialog::changeProgress)); + this->m_taskConnections.push_back(connect(task, &Task::aborted, this, &ProgressDialog::hide)); + this->m_taskConnections.push_back(connect(task, &Task::abortStatusChanged, ui->skipButton, &QPushButton::setEnabled)); m_is_multi_step = task->isMultiStep(); ui->taskProgressScrollArea->setHidden(!m_is_multi_step); diff --git a/launcher/ui/dialogs/ProgressDialog.h b/launcher/ui/dialogs/ProgressDialog.h index 15eadf4e7..4a696a49d 100644 --- a/launcher/ui/dialogs/ProgressDialog.h +++ b/launcher/ui/dialogs/ProgressDialog.h @@ -93,6 +93,8 @@ class ProgressDialog : public QDialog { Ui::ProgressDialog* ui; Task* m_task; + + QList m_taskConnections; bool m_is_multi_step = false; QHash taskProgress; From ac13579b9963a312b909e712c372cb115f21f0db Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 14 Oct 2024 11:10:54 +0300 Subject: [PATCH 257/616] fix heap-use-after-free in modrinth creation task Signed-off-by: Trial97 --- .../modplatform/modrinth/ModrinthInstanceCreationTask.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index 3442fd19c..994dd774f 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -301,6 +301,13 @@ bool ModrinthCreationTask::createInstance() loop.exec(); + if (!ended_well) { + for (auto m : mods) { + delete m; + } + return ended_well; + } + QEventLoop ensureMetaLoop; QDir folder = FS::PathCombine(instance.modsRoot(), ".index"); auto ensureMetadataTask = makeShared(mods, folder, ModPlatform::ResourceProvider::MODRINTH); From 7519c63f2e8a5ebc9480a470a1e7702436178c51 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 19 Oct 2024 01:11:27 +0300 Subject: [PATCH 258/616] Replace http with https on skins Signed-off-by: Trial97 --- launcher/minecraft/auth/Parsers.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/launcher/minecraft/auth/Parsers.cpp b/launcher/minecraft/auth/Parsers.cpp index 3aa458ace..f9d89baa2 100644 --- a/launcher/minecraft/auth/Parsers.cpp +++ b/launcher/minecraft/auth/Parsers.cpp @@ -180,6 +180,7 @@ bool parseMinecraftProfile(QByteArray& data, MinecraftProfile& output) if (!getString(skinObj.value("url"), skinOut.url)) { continue; } + skinOut.url.replace("http://textures.minecraft.net", "https://textures.minecraft.net"); if (!getString(skinObj.value("variant"), skinOut.variant)) { continue; } @@ -221,9 +222,9 @@ namespace { // these skin URLs are for the MHF_Steve and MHF_Alex accounts (made by a Mojang employee) // they are needed because the session server doesn't return skin urls for default skins static const QString SKIN_URL_STEVE = - "http://textures.minecraft.net/texture/1a4af718455d4aab528e7a61f86fa25e6a369d1768dcb13f7df319a713eb810b"; + "https://textures.minecraft.net/texture/1a4af718455d4aab528e7a61f86fa25e6a369d1768dcb13f7df319a713eb810b"; static const QString SKIN_URL_ALEX = - "http://textures.minecraft.net/texture/83cee5ca6afcdb171285aa00e8049c297b2dbeba0efb8ff970a5677a1b644032"; + "https://textures.minecraft.net/texture/83cee5ca6afcdb171285aa00e8049c297b2dbeba0efb8ff970a5677a1b644032"; bool isDefaultModelSteve(QString uuid) { From 522d105dbe50d6392e1d74dd9f1dec2a3ef7a357 Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 19 Oct 2024 11:59:32 -0400 Subject: [PATCH 259/616] fix(nix): enable checks Signed-off-by: seth --- nix/unwrapped.nix | 2 ++ 1 file changed, 2 insertions(+) diff --git a/nix/unwrapped.nix b/nix/unwrapped.nix index f75acf1de..7fc383ff3 100644 --- a/nix/unwrapped.nix +++ b/nix/unwrapped.nix @@ -87,6 +87,8 @@ stdenv.mkDerivation { (lib.cmakeFeature "CMAKE_INSTALL_PREFIX" "${placeholder "out"}/Applications/") ]; + doCheck = true; + dontWrapQtApps = true; meta = { From 0bae14999f8e4997be96a8fadb4e4ed14dfd5b40 Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 19 Oct 2024 12:33:40 -0400 Subject: [PATCH 260/616] chore(flatpak): don't bundle JREs After https://github.com/PrismLauncher/PrismLauncher/pull/2069, JREs can be managed at runtime. This is great for the Flatpak, as previously *all* JREs had to be installed and could not be updated independently of the launcher's Flatpak. It also makes using unsupported Java versions easier as the launcher can download any version in the sandbox We don't need to include these anymore Signed-off-by: seth --- flatpak/org.prismlauncher.PrismLauncher.yml | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/flatpak/org.prismlauncher.PrismLauncher.yml b/flatpak/org.prismlauncher.PrismLauncher.yml index 71e6dd11e..f33432d23 100644 --- a/flatpak/org.prismlauncher.PrismLauncher.yml +++ b/flatpak/org.prismlauncher.PrismLauncher.yml @@ -3,9 +3,7 @@ runtime: org.kde.Platform runtime-version: 6.7 sdk: org.kde.Sdk sdk-extensions: - - org.freedesktop.Sdk.Extension.openjdk21 - org.freedesktop.Sdk.Extension.openjdk17 - - org.freedesktop.Sdk.Extension.openjdk8 command: prismlauncher finish-args: @@ -43,19 +41,6 @@ modules: - type: dir path: ../ - - name: openjdk - buildsystem: simple - build-commands: - - mkdir -p /app/jdk/ - - /usr/lib/sdk/openjdk21/install.sh - - mv /app/jre /app/jdk/21 - - /usr/lib/sdk/openjdk17/install.sh - - mv /app/jre /app/jdk/17 - - /usr/lib/sdk/openjdk8/install.sh - - mv /app/jre /app/jdk/8 - cleanup: - - /jre - - name: glfw buildsystem: cmake-ninja config-opts: From 01721b593b16bbbf9cd15c4f262176d0345681f8 Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 19 Oct 2024 12:38:17 -0400 Subject: [PATCH 261/616] fix(flatpak): run tests for launcher Signed-off-by: seth --- flatpak/org.prismlauncher.PrismLauncher.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/flatpak/org.prismlauncher.PrismLauncher.yml b/flatpak/org.prismlauncher.PrismLauncher.yml index f33432d23..09dd8d73b 100644 --- a/flatpak/org.prismlauncher.PrismLauncher.yml +++ b/flatpak/org.prismlauncher.PrismLauncher.yml @@ -37,6 +37,7 @@ modules: env: JAVA_HOME: /usr/lib/sdk/openjdk17/jvm/openjdk-17 JAVA_COMPILER: /usr/lib/sdk/openjdk17/jvm/openjdk-17/bin/javac + run-tests: true sources: - type: dir path: ../ From 2030041fcc14aa9d56f59e0a61c8a26ba6522a0f Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 19 Oct 2024 01:10:04 +0300 Subject: [PATCH 262/616] Fix tests segfault Signed-off-by: Trial97 --- CMakeLists.txt | 12 ++++++------ launcher/Application.h | 6 ++++++ launcher/CMakeLists.txt | 10 +++------- launcher/minecraft/mod/ResourceFolderModel.cpp | 7 +++---- launcher/net/NetJob.cpp | 5 +++-- .../ui/pages/modplatform/ResourceModel.cpp | 18 +++++++++++------- 6 files changed, 32 insertions(+), 26 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 3d70fe79b..4c1ad3373 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,7 +99,7 @@ if ((CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebI message(STATUS "Address Sanitizer enabled for Debug builds, Turn it off with -DDEBUG_ADDRESS_SANITIZER=off") if ("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") if (CMAKE_CXX_COMPILER_FRONTEND_VARIANT STREQUAL "MSVC") - # using clang with clang-cl front end + # using clang with clang-cl front end message(STATUS "Address Sanitizer available on Clang MSVC frontend") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fsanitize=address /Oy-") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /fsanitize=address /Oy-") @@ -225,7 +225,7 @@ set(Launcher_QT_VERSION_MAJOR "6" CACHE STRING "Major Qt version to build agains # Java downloader set(Launcher_ENABLE_JAVA_DOWNLOADER_DEFAULT ON) -# Although we recommend enabling this, we cannot guarantee binary compatibility on +# Although we recommend enabling this, we cannot guarantee binary compatibility on # differing Linux/BSD/etc distributions. Downstream packagers should be explicitly opt-ing into this # feature if they know it will work with their distribution. if(UNIX AND NOT APPLE) @@ -438,10 +438,10 @@ elseif(UNIX) set(PLUGIN_DEST_DIR "plugins") set(BUNDLE_DEST_DIR ".") set(RESOURCES_DEST_DIR ".") - + # Apps to bundle set(APPS "\${CMAKE_INSTALL_PREFIX}/bin/${Launcher_APP_BINARY_NAME}") - + # directories to look for dependencies set(DIRS ${QT_LIBS_DIR} ${QT_LIBEXECS_DIR} ${CMAKE_LIBRARY_OUTPUT_DIRECTORY} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) endif() @@ -495,7 +495,7 @@ if(FORCE_BUNDLED_ZLIB) set(SKIP_INSTALL_ALL ON) add_subdirectory(libraries/zlib EXCLUDE_FROM_ALL) - # On OS where unistd.h exists, zlib's generated header defines `Z_HAVE_UNISTD_H`, while the included header does not. + # On OS where unistd.h exists, zlib's generated header defines `Z_HAVE_UNISTD_H`, while the included header does not. # We cannot safely undo the rename on those systems, and they generally have packages for zlib anyway. check_include_file(unistd.h NEED_GENERATED_ZCONF) if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/libraries/zlib/zconf.h.included" AND NOT NEED_GENERATED_ZCONF) @@ -533,7 +533,7 @@ endif() if(NOT cmark_FOUND) message(STATUS "Using bundled cmark") set(BUILD_TESTING 0) - set(BUILD_SHARED_LIBS 0) + set(BUILD_SHARED_LIBS 0) add_subdirectory(libraries/cmark EXCLUDE_FROM_ALL) # Markdown parser add_library(cmark::cmark ALIAS cmark) else() diff --git a/launcher/Application.h b/launcher/Application.h index 7432c9683..bd1cb2dea 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -81,6 +81,12 @@ class Index; #endif #define APPLICATION (static_cast(QCoreApplication::instance())) +// Used for checking if is a test +#if defined(APPLICATION_DYN) +#undef APPLICATION_DYN +#endif +#define APPLICATION_DYN (dynamic_cast(QCoreApplication::instance())) + class Application : public QApplication { // friends for the purpose of limiting access to deprecated stuff Q_OBJECT diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index dcbfe8fde..a70fe668a 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -608,7 +608,7 @@ set(PRISMUPDATER_SOURCES updater/prismupdater/UpdaterDialogs.cpp updater/prismupdater/GitHubRelease.h updater/prismupdater/GitHubRelease.cpp - + Json.h Json.cpp FileSystem.h @@ -625,7 +625,7 @@ set(PRISMUPDATER_SOURCES # Zip MMCZip.h MMCZip.cpp - + # Time MMCTime.h MMCTime.cpp @@ -1265,14 +1265,10 @@ include(CompilerWarnings) # Add executable add_library(Launcher_logic STATIC ${LOGIC_SOURCES} ${LAUNCHER_SOURCES} ${LAUNCHER_UI} ${LAUNCHER_RESOURCES}) -if(BUILD_TESTING) -target_compile_definitions(Launcher_logic PUBLIC LAUNCHER_TEST) -endif() set_project_warnings(Launcher_logic "${Launcher_MSVC_WARNINGS}" "${Launcher_CLANG_WARNINGS}" "${Launcher_GCC_WARNINGS}") -target_compile_definitions(Launcher_logic PUBLIC LAUNCHER_APPLICATION) target_include_directories(Launcher_logic PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) target_compile_definitions(Launcher_logic PUBLIC LAUNCHER_APPLICATION) target_link_libraries(Launcher_logic @@ -1376,7 +1372,7 @@ if(Launcher_BUILD_UPDATER) add_executable("${Launcher_Name}_updater" WIN32 updater/prismupdater/updater_main.cpp) target_sources("${Launcher_Name}_updater" PRIVATE updater/prismupdater/updater.exe.manifest) target_link_libraries("${Launcher_Name}_updater" prism_updater_logic) - + if(DEFINED Launcher_APP_BINARY_NAME) set_target_properties("${Launcher_Name}_updater" PROPERTIES OUTPUT_NAME "${Launcher_APP_BINARY_NAME}_updater") endif() diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index 941e7ce58..ce3e16bce 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -35,10 +35,9 @@ ResourceFolderModel::ResourceFolderModel(QDir dir, BaseInstance* instance, QObje connect(&m_watcher, &QFileSystemWatcher::directoryChanged, this, &ResourceFolderModel::directoryChanged); connect(&m_helper_thread_task, &ConcurrentTask::finished, this, [this] { m_helper_thread_task.clear(); }); -#ifndef LAUNCHER_TEST - // in tests the application macro doesn't work - m_helper_thread_task.setMaxConcurrent(APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); -#endif + if (APPLICATION_DYN) { // in tests the application macro doesn't work + m_helper_thread_task.setMaxConcurrent(APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + } } ResourceFolderModel::~ResourceFolderModel() diff --git a/launcher/net/NetJob.cpp b/launcher/net/NetJob.cpp index e363c911d..3cd3958f7 100644 --- a/launcher/net/NetJob.cpp +++ b/launcher/net/NetJob.cpp @@ -48,7 +48,7 @@ NetJob::NetJob(QString job_name, shared_qobject_ptr netwo : ConcurrentTask(nullptr, job_name), m_network(network) { #if defined(LAUNCHER_APPLICATION) - if (max_concurrent < 0) + if (APPLICATION_DYN && max_concurrent < 0) max_concurrent = APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt(); #endif if (max_concurrent > 0) @@ -161,7 +161,8 @@ bool NetJob::isOnline() void NetJob::emitFailed(QString reason) { #if defined(LAUNCHER_APPLICATION) - if (m_ask_retry && m_manual_try < APPLICATION->settings()->get("NumberOfManualRetries").toInt() && isOnline()) { + + if (APPLICATION_DYN && m_ask_retry && m_manual_try < APPLICATION->settings()->get("NumberOfManualRetries").toInt() && isOnline()) { m_manual_try++; auto response = CustomMessageBox::selectable(nullptr, "Confirm retry", "The tasks failed.\n" diff --git a/launcher/ui/pages/modplatform/ResourceModel.cpp b/launcher/ui/pages/modplatform/ResourceModel.cpp index c8eb91570..50a170fff 100644 --- a/launcher/ui/pages/modplatform/ResourceModel.cpp +++ b/launcher/ui/pages/modplatform/ResourceModel.cpp @@ -31,9 +31,9 @@ QHash ResourceModel::s_running_models; ResourceModel::ResourceModel(ResourceAPI* api) : QAbstractListModel(), m_api(api) { s_running_models.insert(this, true); -#ifndef LAUNCHER_TEST - m_current_info_job.setMaxConcurrent(APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); -#endif + if (APPLICATION_DYN) { + m_current_info_job.setMaxConcurrent(APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + } } ResourceModel::~ResourceModel() @@ -60,11 +60,15 @@ auto ResourceModel::data(const QModelIndex& index, int role) const -> QVariant return pack->description; } case Qt::DecorationRole: { - if (auto icon_or_none = const_cast(this)->getIcon(const_cast(index), pack->logoUrl); - icon_or_none.has_value()) - return icon_or_none.value(); + if (APPLICATION_DYN) { + if (auto icon_or_none = const_cast(this)->getIcon(const_cast(index), pack->logoUrl); + icon_or_none.has_value()) + return icon_or_none.value(); - return APPLICATION->getThemedIcon("screenshot-placeholder"); + return APPLICATION->getThemedIcon("screenshot-placeholder"); + } else { + return {}; + } } case Qt::SizeHintRole: return QSize(0, 58); From 2d234b127b1561fcedd0beae5bd242d1012c7426 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 19 Oct 2024 22:07:31 +0300 Subject: [PATCH 263/616] make sure that tests are only disabled fro cmark Signed-off-by: Trial97 --- CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4c1ad3373..b677b0b7c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -532,10 +532,12 @@ else() endif() if(NOT cmark_FOUND) message(STATUS "Using bundled cmark") + set(ORIGINAL_BUILD_TESTING ${BUILD_TESTING}) set(BUILD_TESTING 0) set(BUILD_SHARED_LIBS 0) add_subdirectory(libraries/cmark EXCLUDE_FROM_ALL) # Markdown parser add_library(cmark::cmark ALIAS cmark) + set(BUILD_TESTING ${ORIGINAL_BUILD_TESTING}) else() message(STATUS "Using system cmark") endif() From 0501c1e17a75172b8c3b8c15da27a86cf64c420b Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 20 Oct 2024 00:25:22 +0000 Subject: [PATCH 264/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/5633bcff0c6162b9e4b5f1264264611e950c8ec7?narHash=sha256-9UTxR8eukdg%2BXZeHgxW5hQA9fIKHsKCdOIUycTryeVw%3D' (2024-10-09) → 'github:NixOS/nixpkgs/4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0?narHash=sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c%2BcHUJwA%3D' (2024-10-18) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 7bf13f75c..a82e6f65f 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1728492678, - "narHash": "sha256-9UTxR8eukdg+XZeHgxW5hQA9fIKHsKCdOIUycTryeVw=", + "lastModified": 1729256560, + "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5633bcff0c6162b9e4b5f1264264611e950c8ec7", + "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0", "type": "github" }, "original": { From 0586d38e03de6890bf5697c7e1a965aac9bd36fb Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 20 Oct 2024 23:14:05 +0300 Subject: [PATCH 265/616] fix sparkle signature Signed-off-by: Trial97 --- .github/workflows/build.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dc45252fa..a1ed0a25a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -410,9 +410,8 @@ jobs: if: matrix.name == 'macOS' run: | if [ '${{ secrets.SPARKLE_ED25519_KEY }}' != '' ]; then - brew install openssl@3 echo '${{ secrets.SPARKLE_ED25519_KEY }}' > ed25519-priv.pem - signature=$(/usr/local/opt/openssl@3/bin/openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.zip -inkey ed25519-priv.pem | openssl base64 | tr -d \\n) + signature=$(/opt/homebrew/opt/openssl@3/bin/openssl pkeyutl -sign -rawin -in ${{ github.workspace }}/PrismLauncher.zip -inkey ed25519-priv.pem | openssl base64 | tr -d \\n) rm ed25519-priv.pem cat >> $GITHUB_STEP_SUMMARY << EOF ### Artifact Information :information_source: From fcadbbb739076096a9057ec340f7f6d39bc4b72f Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 21 Oct 2024 16:17:48 +0300 Subject: [PATCH 266/616] do not require java if auto-download is enabled Signed-off-by: Trial97 --- launcher/Application.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index b8dcc1099..cfae3a807 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1071,6 +1071,9 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) bool Application::createSetupWizard() { bool javaRequired = [&]() { + if (BuildConfig.JAVA_DOWNLOADER_ENABLED && m_settings->get("AutomaticJavaDownload").toBool()) { + return false; + } bool ignoreJavaWizard = m_settings->get("IgnoreJavaWizard").toBool(); if (ignoreJavaWizard) { return false; @@ -1083,10 +1086,7 @@ bool Application::createSetupWizard() } QString currentJavaPath = settings()->get("JavaPath").toString(); QString actualPath = FS::ResolveExecutable(currentJavaPath); - if (actualPath.isNull()) { - return true; - } - return false; + return actualPath.isNull(); }(); bool askjava = BuildConfig.JAVA_DOWNLOADER_ENABLED && !javaRequired && !m_settings->get("AutomaticJavaDownload").toBool() && !m_settings->get("AutomaticJavaSwitch").toBool() && !m_settings->get("UserAskedAboutAutomaticJavaDownload").toBool(); From 78e24962f93b5cc2350d04bebd7e5231d1bc4819 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 21 Oct 2024 14:41:48 +0100 Subject: [PATCH 267/616] Fix /norestart Signed-off-by: TheKodeToad --- program_info/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index ee2e336b1..e693d757a 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -57,7 +57,7 @@ Section "Visual Studio Runtime" Pop $0 ${If} $0 == "OK" DetailPrint "Download successful" - ExecWait "$INSTDIR\vc_redist\$vc_redist_exe /install /passive /norestart\" + ExecWait "$INSTDIR\vc_redist\$vc_redist_exe /install /passive /norestart" ${Else} DetailPrint "Download failed with error $0" ${EndIf} From f3f4c446206647b69b9c19e63617b163b99c6164 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 21 Oct 2024 16:30:08 +0100 Subject: [PATCH 268/616] Fix removing portable.txt on Linux portable build Signed-off-by: TheKodeToad --- launcher/Launcher.in | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/launcher/Launcher.in b/launcher/Launcher.in index 1a23f2555..706d7022b 100755 --- a/launcher/Launcher.in +++ b/launcher/Launcher.in @@ -39,8 +39,16 @@ if [ "x$DEPS_LIST" = "x" ]; then # Just to be sure... chmod +x "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}" + ARGS=("${LAUNCHER_DIR}/${LAUNCHER_NAME}" "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}") + + if [ -f portable.txt ]; then + ARGS+=("-d" "${LAUNCHER_DIR}") + fi + + ARGS+=("$@") + # Run the launcher - exec -a "${LAUNCHER_DIR}/${LAUNCHER_NAME}" "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}" -d "${LAUNCHER_DIR}" "$@" + exec -a "${ARGS[@]}" # Run the launcher in valgrind # valgrind --log-file="valgrind.log" --leak-check=full --track-origins=yes "${LAUNCHER_DIR}/bin/${LAUNCHER_NAME}" -d "${LAUNCHER_DIR}" "$@" From 9a5b773e69e7198cc37413ab7d69ba6d0a66f854 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 21 Oct 2024 19:28:34 +0300 Subject: [PATCH 269/616] do not try to import skin if path is empty Signed-off-by: Trial97 --- launcher/ui/dialogs/skins/SkinManageDialog.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.cpp b/launcher/ui/dialogs/skins/SkinManageDialog.cpp index 6c85ffa96..fbf4ef1f4 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.cpp +++ b/launcher/ui/dialogs/skins/SkinManageDialog.cpp @@ -139,6 +139,9 @@ void SkinManageDialog::on_fileBtn_clicked() { auto filter = QMimeDatabase().mimeTypeForName("image/png").filterString(); QString raw_path = QFileDialog::getOpenFileName(this, tr("Select Skin Texture"), QString(), filter); + if (raw_path.isEmpty()) { + return; + } auto message = m_list.installSkin(raw_path, {}); if (!message.isEmpty()) { CustomMessageBox::selectable(this, tr("Selected file is not a valid skin"), message, QMessageBox::Critical)->show(); From 69028969f1a6c42b698b900256ad2e6d9ee208eb Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Mon, 21 Oct 2024 22:59:51 +0300 Subject: [PATCH 270/616] Update launcher/ui/dialogs/skins/SkinManageDialog.cpp Co-authored-by: TheKodeToad Signed-off-by: Alexandru Ionut Tripon --- launcher/ui/dialogs/skins/SkinManageDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.cpp b/launcher/ui/dialogs/skins/SkinManageDialog.cpp index fbf4ef1f4..65840eb08 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.cpp +++ b/launcher/ui/dialogs/skins/SkinManageDialog.cpp @@ -139,7 +139,7 @@ void SkinManageDialog::on_fileBtn_clicked() { auto filter = QMimeDatabase().mimeTypeForName("image/png").filterString(); QString raw_path = QFileDialog::getOpenFileName(this, tr("Select Skin Texture"), QString(), filter); - if (raw_path.isEmpty()) { + if (raw_path.isNull()) { return; } auto message = m_list.installSkin(raw_path, {}); From 562c3013269dbb9cad411f58ded333dee1aea158 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 21 Oct 2024 23:53:23 +0300 Subject: [PATCH 271/616] skip QSaveFile temprary files Signed-off-by: Trial97 --- launcher/Application.cpp | 23 ++++++ launcher/Application.h | 11 +++ launcher/CMakeLists.txt | 1 + launcher/FileSystem.cpp | 22 +++--- launcher/PSaveFile.h | 70 +++++++++++++++++++ launcher/minecraft/World.cpp | 4 +- .../minecraft/mod/tasks/BasicFolderLoadTask.h | 4 ++ .../minecraft/mod/tasks/ModFolderLoadTask.cpp | 4 ++ launcher/modplatform/packwiz/Packwiz.cpp | 4 +- launcher/net/FileSink.cpp | 2 +- launcher/net/FileSink.h | 5 +- launcher/settings/INIFile.cpp | 1 - launcher/ui/dialogs/ExportInstanceDialog.cpp | 1 - 13 files changed, 129 insertions(+), 23 deletions(-) create mode 100644 launcher/PSaveFile.h diff --git a/launcher/Application.cpp b/launcher/Application.cpp index cfae3a807..686d934c2 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1883,3 +1883,26 @@ const QString Application::javaPath() { return m_settings->get("JavaDir").toString(); } + +void Application::addQSavePath(QString path) +{ + QMutexLocker locker(&m_qsaveResourcesMutex); + m_qsaveResources.insert(path); +} + +void Application::removeQSavePath(QString path) +{ + QMutexLocker locker(&m_qsaveResourcesMutex); + m_qsaveResources.remove(path); +} + +bool Application::checkQSavePath(QString path) +{ + QMutexLocker locker(&m_qsaveResourcesMutex); + for (auto r : m_qsaveResources) { + if (path.contains(r)) { + return true; + } + } + return false; +} \ No newline at end of file diff --git a/launcher/Application.h b/launcher/Application.h index bd1cb2dea..363130cdd 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -42,6 +42,8 @@ #include #include #include +#include +#include #include #include @@ -303,4 +305,13 @@ class Application : public QApplication { QList m_urlsToImport; QString m_instanceIdToShowWindowOf; std::unique_ptr logFile; + + public: + void addQSavePath(QString); + void removeQSavePath(QString); + bool checkQSavePath(QString); + + private: + QSet m_qsaveResources; + mutable QMutex m_qsaveResourcesMutex; }; diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index a70fe668a..0f0949a3a 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -30,6 +30,7 @@ set(CORE_SOURCES StringUtils.cpp QVariantUtils.h RuntimeContext.h + PSaveFile.h # Basic instance manipulation tasks (derived from InstanceTask) InstanceCreationTask.h diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp index 7f38cff04..512de28c2 100644 --- a/launcher/FileSystem.cpp +++ b/launcher/FileSystem.cpp @@ -45,7 +45,6 @@ #include #include #include -#include #include #include #include @@ -54,6 +53,7 @@ #include #include "DesktopServices.h" +#include "PSaveFile.h" #include "StringUtils.h" #if defined Q_OS_WIN32 @@ -191,8 +191,8 @@ void ensureExists(const QDir& dir) void write(const QString& filename, const QByteArray& data) { ensureExists(QFileInfo(filename).dir()); - QSaveFile file(filename); - if (!file.open(QSaveFile::WriteOnly)) { + PSaveFile file(filename); + if (!file.open(PSaveFile::WriteOnly)) { throw FileSystemException("Couldn't open " + filename + " for writing: " + file.errorString()); } if (data.size() != file.write(data)) { @@ -213,8 +213,8 @@ void appendSafe(const QString& filename, const QByteArray& data) buffer = QByteArray(); } buffer.append(data); - QSaveFile file(filename); - if (!file.open(QSaveFile::WriteOnly)) { + PSaveFile file(filename); + if (!file.open(PSaveFile::WriteOnly)) { throw FileSystemException("Couldn't open " + filename + " for writing: " + file.errorString()); } if (buffer.size() != file.write(buffer)) { @@ -971,8 +971,7 @@ bool createShortcut(QString destination, QString target, QStringList args, QStri if (!args.empty()) argstring = " \"" + args.join("\" \"") + "\""; - stream << "#!/bin/bash" - << "\n"; + stream << "#!/bin/bash" << "\n"; stream << "\"" << target << "\" " << argstring << "\n"; stream.flush(); @@ -1016,12 +1015,9 @@ bool createShortcut(QString destination, QString target, QStringList args, QStri if (!args.empty()) argstring = " '" + args.join("' '") + "'"; - stream << "[Desktop Entry]" - << "\n"; - stream << "Type=Application" - << "\n"; - stream << "Categories=Game;ActionGame;AdventureGame;Simulation" - << "\n"; + stream << "[Desktop Entry]" << "\n"; + stream << "Type=Application" << "\n"; + stream << "Categories=Game;ActionGame;AdventureGame;Simulation" << "\n"; stream << "Exec=\"" << target.toLocal8Bit() << "\"" << argstring.toLocal8Bit() << "\n"; stream << "Name=" << name.toLocal8Bit() << "\n"; if (!icon.isEmpty()) { diff --git a/launcher/PSaveFile.h b/launcher/PSaveFile.h new file mode 100644 index 000000000..e0b5a7a2c --- /dev/null +++ b/launcher/PSaveFile.h @@ -0,0 +1,70 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2023-2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#pragma once + +#include +#include "Application.h" + +#if defined(LAUNCHER_APPLICATION) + +/* PSaveFile + * A class that mimics QSaveFile for Windows. + * + * When reading resources, we need to avoid accessing temporary files + * generated by QSaveFile. If we start reading such a file, we may + * inadvertently keep it open while QSaveFile is trying to remove it, + * or we might detect the file just before it is removed, leading to + * race conditions and errors. + * + * Unfortunately, QSaveFile doesn't provide a way to retrieve the + * temporary file name or to set a specific template for the temporary + * file name it uses. By default, QSaveFile appends a `.XXXXXX` suffix + * to the original file name, where the `XXXXXX` part is dynamically + * generated to ensure uniqueness. + * + * This class acts like a lock by adding and removing the target file + * name into/from a global string set, helping to manage access to + * files during critical operations. + * + * Note: Please do not use the `setFileName` function directly, as it + * is not virtual and cannot be overridden. + */ +class PSaveFile : public QSaveFile { + public: + PSaveFile(const QString& name) : QSaveFile(name) + { + if (auto app = APPLICATION_DYN) { + app->addQSavePath(name + "."); + } + } + PSaveFile(const QString& name, QObject* parent) : QSaveFile(name, parent) + { + if (auto app = APPLICATION_DYN) { + app->addQSavePath(name + "."); + } + } + virtual ~PSaveFile() + { + if (auto app = APPLICATION_DYN) { + app->removeQSavePath(fileName() + "."); + } + } +}; +#else +#define PSaveFile QSaveFile +#endif \ No newline at end of file diff --git a/launcher/minecraft/World.cpp b/launcher/minecraft/World.cpp index 1eba148a5..bd28f9e9a 100644 --- a/launcher/minecraft/World.cpp +++ b/launcher/minecraft/World.cpp @@ -38,7 +38,6 @@ #include #include #include -#include #include #include @@ -57,6 +56,7 @@ #include #include "FileSystem.h" +#include "PSaveFile.h" using std::nullopt; using std::optional; @@ -183,7 +183,7 @@ bool putLevelDatDataToFS(const QFileInfo& file, QByteArray& data) if (fullFilePath.isNull()) { return false; } - QSaveFile f(fullFilePath); + PSaveFile f(fullFilePath); if (!f.open(QIODevice::WriteOnly)) { return false; } diff --git a/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h b/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h index 2bce2c137..fb2e22de6 100644 --- a/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h +++ b/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h @@ -7,6 +7,7 @@ #include +#include "Application.h" #include "FileSystem.h" #include "minecraft/mod/Resource.h" @@ -52,6 +53,9 @@ class BasicFolderLoadTask : public Task { m_dir.refresh(); for (auto entry : m_dir.entryInfoList()) { auto filePath = entry.absoluteFilePath(); + if (auto app = APPLICATION_DYN; app && app->checkQSavePath(filePath)) { + continue; + } auto newFilePath = FS::getUniqueResourceName(filePath); if (newFilePath != filePath) { FS::move(filePath, newFilePath); diff --git a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp b/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp index 501d5be13..63996e584 100644 --- a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp +++ b/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp @@ -36,6 +36,7 @@ #include "ModFolderLoadTask.h" +#include "Application.h" #include "FileSystem.h" #include "minecraft/mod/MetadataHandler.h" @@ -65,6 +66,9 @@ void ModFolderLoadTask::executeTask() m_mods_dir.refresh(); for (auto entry : m_mods_dir.entryInfoList()) { auto filePath = entry.absoluteFilePath(); + if (auto app = APPLICATION_DYN; app && app->checkQSavePath(filePath)) { + continue; + } auto newFilePath = FS::getUniqueResourceName(filePath); if (newFilePath != filePath) { FS::move(filePath, newFilePath); diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index 325b0a6e4..272900f0e 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -72,7 +72,7 @@ auto stringEntry(toml::table table, QString entry_name) -> QString { auto node = table[StringUtils::toStdString(entry_name)]; if (!node) { - qCritical() << "Failed to read str property '" + entry_name + "' in mod metadata."; + qWarning() << "Failed to read str property '" + entry_name + "' in mod metadata."; return {}; } @@ -83,7 +83,7 @@ auto intEntry(toml::table table, QString entry_name) -> int { auto node = table[StringUtils::toStdString(entry_name)]; if (!node) { - qCritical() << "Failed to read int property '" + entry_name + "' in mod metadata."; + qWarning() << "Failed to read int property '" + entry_name + "' in mod metadata."; return {}; } diff --git a/launcher/net/FileSink.cpp b/launcher/net/FileSink.cpp index 1ecb21fdf..95c1a8f44 100644 --- a/launcher/net/FileSink.cpp +++ b/launcher/net/FileSink.cpp @@ -55,7 +55,7 @@ Task::State FileSink::init(QNetworkRequest& request) } wroteAnyData = false; - m_output_file.reset(new QSaveFile(m_filename)); + m_output_file.reset(new PSaveFile(m_filename)); if (!m_output_file->open(QIODevice::WriteOnly)) { qCCritical(taskNetLogC) << "Could not open " + m_filename + " for writing"; return Task::State::Failed; diff --git a/launcher/net/FileSink.h b/launcher/net/FileSink.h index 816254ff9..272f8ddc3 100644 --- a/launcher/net/FileSink.h +++ b/launcher/net/FileSink.h @@ -35,8 +35,7 @@ #pragma once -#include - +#include "PSaveFile.h" #include "Sink.h" namespace Net { @@ -60,6 +59,6 @@ class FileSink : public Sink { protected: QString m_filename; bool wroteAnyData = false; - std::unique_ptr m_output_file; + std::unique_ptr m_output_file; }; } // namespace Net diff --git a/launcher/settings/INIFile.cpp b/launcher/settings/INIFile.cpp index e97741f20..2c7620e65 100644 --- a/launcher/settings/INIFile.cpp +++ b/launcher/settings/INIFile.cpp @@ -39,7 +39,6 @@ #include #include -#include #include #include #include diff --git a/launcher/ui/dialogs/ExportInstanceDialog.cpp b/launcher/ui/dialogs/ExportInstanceDialog.cpp index 9f2b3ac42..7e00f18f4 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.cpp +++ b/launcher/ui/dialogs/ExportInstanceDialog.cpp @@ -51,7 +51,6 @@ #include #include #include -#include #include #include #include From 73d33f93b30f658f9671358ac52bf4e03afeaefd Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 22 Oct 2024 09:41:00 +0300 Subject: [PATCH 272/616] Replaced QSet with QHash Signed-off-by: Trial97 --- launcher/Application.cpp | 13 +++++++++---- launcher/Application.h | 3 +-- launcher/PSaveFile.h | 27 ++++++++++++++------------- 3 files changed, 24 insertions(+), 19 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 686d934c2..ea749ca4c 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1887,20 +1887,25 @@ const QString Application::javaPath() void Application::addQSavePath(QString path) { QMutexLocker locker(&m_qsaveResourcesMutex); - m_qsaveResources.insert(path); + m_qsaveResources[path] = m_qsaveResources.value(path, 0) + 1; } void Application::removeQSavePath(QString path) { QMutexLocker locker(&m_qsaveResourcesMutex); - m_qsaveResources.remove(path); + auto count = m_qsaveResources.value(path, 0) - 1; + if (count <= 0) { + m_qsaveResources.remove(path); + } else { + m_qsaveResources[path] = count; + } } bool Application::checkQSavePath(QString path) { QMutexLocker locker(&m_qsaveResourcesMutex); - for (auto r : m_qsaveResources) { - if (path.contains(r)) { + for (auto partialPath : m_qsaveResources.keys()) { + if (path.startsWith(partialPath) && m_qsaveResources.value(partialPath, 0) > 0) { return true; } } diff --git a/launcher/Application.h b/launcher/Application.h index 363130cdd..692625f4a 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -43,7 +43,6 @@ #include #include #include -#include #include #include @@ -312,6 +311,6 @@ class Application : public QApplication { bool checkQSavePath(QString); private: - QSet m_qsaveResources; + QHash m_qsaveResources; mutable QMutex m_qsaveResourcesMutex; }; diff --git a/launcher/PSaveFile.h b/launcher/PSaveFile.h index e0b5a7a2c..ba6154ad8 100644 --- a/launcher/PSaveFile.h +++ b/launcher/PSaveFile.h @@ -17,6 +17,7 @@ */ #pragma once +#include #include #include "Application.h" @@ -46,24 +47,24 @@ */ class PSaveFile : public QSaveFile { public: - PSaveFile(const QString& name) : QSaveFile(name) - { - if (auto app = APPLICATION_DYN) { - app->addQSavePath(name + "."); - } - } - PSaveFile(const QString& name, QObject* parent) : QSaveFile(name, parent) - { - if (auto app = APPLICATION_DYN) { - app->addQSavePath(name + "."); - } - } + PSaveFile(const QString& name) : QSaveFile(name) { addPath(name); } + PSaveFile(const QString& name, QObject* parent) : QSaveFile(name, parent) { addPath(name); } virtual ~PSaveFile() { if (auto app = APPLICATION_DYN) { - app->removeQSavePath(fileName() + "."); + app->removeQSavePath(m_absoluteFilePath); } } + + private: + void addPath(const QString& path) + { + m_absoluteFilePath = QFileInfo(path).absoluteFilePath() + "."; // add dot for tmp files only + if (auto app = APPLICATION_DYN) { + app->addQSavePath(m_absoluteFilePath); + } + } + QString m_absoluteFilePath; }; #else #define PSaveFile QSaveFile From 836aebc0d91fe8658052b8c4a5a4ab31da4a4b15 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 22 Oct 2024 13:43:16 +0300 Subject: [PATCH 273/616] fix small leak Signed-off-by: Trial97 --- launcher/ui/pages/instance/ModFolderPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index f2feb8c7f..a6fbf5088 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -124,7 +124,7 @@ ModFolderPage::ModFolderPage(BaseInstance* inst, std::shared_ptr ui->actionsToolbar->addAction(ui->actionVisitItemPage); connect(ui->actionVisitItemPage, &QAction::triggered, this, &ModFolderPage::visitModPages); - auto changeVersion = new QAction(tr("Change Version")); + auto changeVersion = new QAction(tr("Change Version"), this); changeVersion->setToolTip(tr("Change mod version")); changeVersion->setEnabled(false); ui->actionsToolbar->insertActionAfter(ui->actionUpdateItem, changeVersion); From 210d0d8aa25578cbbf8250797504ae1652544600 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 22 Oct 2024 13:48:29 +0000 Subject: [PATCH 274/616] chore(deps): update actions/cache action to v4.1.2 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a1ed0a25a..6c167d8f1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -173,7 +173,7 @@ jobs: - name: Retrieve ccache cache (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug' - uses: actions/cache@v4.1.1 + uses: actions/cache@v4.1.2 with: path: '${{ github.workspace }}\.ccache' key: ${{ matrix.os }}-mingw-w64-ccache-${{ github.run_id }} From f13e875f0d06c02803409dbb7be375691838d09d Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Tue, 22 Oct 2024 18:46:10 +0100 Subject: [PATCH 275/616] Try to fix ModrinthCheckUpdate (not working) Signed-off-by: TheKodeToad --- launcher/modplatform/CheckUpdateTask.h | 3 +- launcher/modplatform/flame/FlameCheckUpdate.h | 2 +- .../modrinth/ModrinthCheckUpdate.cpp | 109 ++++++++---------- .../modrinth/ModrinthCheckUpdate.h | 14 +-- 4 files changed, 59 insertions(+), 69 deletions(-) diff --git a/launcher/modplatform/CheckUpdateTask.h b/launcher/modplatform/CheckUpdateTask.h index 1ffcc97ce..540998287 100644 --- a/launcher/modplatform/CheckUpdateTask.h +++ b/launcher/modplatform/CheckUpdateTask.h @@ -21,7 +21,8 @@ class CheckUpdateTask : public Task { , m_resources(resources) , m_game_versions(mcVersions) , m_loaders_list(std::move(loadersList)) - , m_resource_model(resourceModel){}; + , m_resource_model(std::move(resourceModel)) + {} struct Update { QString name; diff --git a/launcher/modplatform/flame/FlameCheckUpdate.h b/launcher/modplatform/flame/FlameCheckUpdate.h index 0094bb13a..2b5c6ac17 100644 --- a/launcher/modplatform/flame/FlameCheckUpdate.h +++ b/launcher/modplatform/flame/FlameCheckUpdate.h @@ -12,7 +12,7 @@ class FlameCheckUpdate : public CheckUpdateTask { std::list& mcVersions, QList loadersList, std::shared_ptr resourceModel) - : CheckUpdateTask(resources, mcVersions, loadersList, resourceModel) + : CheckUpdateTask(resources, mcVersions, std::move(loadersList), std::move(resourceModel)) {} public slots: diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index c004bd8f2..f77c5598a 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -29,7 +29,7 @@ bool ModrinthCheckUpdate::abort() void ModrinthCheckUpdate::executeTask() { setStatus(tr("Preparing resources for Modrinth...")); - setProgress(0, 9); + setProgress(0, (m_loaders_list.isEmpty() ? 1 : m_loaders_list.length()) * 2 + 1); auto hashing_task = makeShared(this, "MakeModrinthHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); @@ -54,10 +54,30 @@ void ModrinthCheckUpdate::executeTask() hashing_task->start(); } -void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr response, - ModPlatform::ModLoaderTypes loader, - bool forceModLoaderCheck) +void ModrinthCheckUpdate::getUpdateModsForLoader(std::optional loader) { + setStatus(tr("Waiting for the API response from Modrinth...")); + setProgress(m_progress + 1, m_progressTotal); + + auto response = std::make_shared(); + QStringList hashes = m_mappings.keys(); + auto job = api.latestVersions(hashes, m_hash_type, m_game_versions, loader, response); + + connect(job.get(), &Task::succeeded, this, + [this, response, loader] { checkVersionsResponse(response, loader); }); + + connect(job.get(), &Task::failed, this, &ModrinthCheckUpdate::checkNextLoader); + + m_job = job; + job->start(); +} + +void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr response, + std::optional loader) +{ + setStatus(tr("Parsing the API response from Modrinth...")); + setProgress(m_progress + 1, m_progressTotal); + QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -69,17 +89,11 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp return; } - setStatus(tr("Parsing the API response from Modrinth...")); - setProgress(m_next_loader_idx * 2, 9); - try { for (auto iter = m_mappings.begin(); iter != m_mappings.end(); iter++) { const QString& hash = iter.key(); Resource* resource = iter.value(); - if (forceModLoaderCheck && !(resource->metadata()->loaders & loader)) - continue; - auto project_obj = doc[hash].toObject(); // If the returned project is empty, but we have Modrinth metadata, @@ -97,7 +111,7 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp static auto flags = { ModPlatform::ModLoaderType::NeoForge, ModPlatform::ModLoaderType::Forge, ModPlatform::ModLoaderType::Quilt, ModPlatform::ModLoaderType::Fabric }; for (auto flag : flags) { - if (loader.testFlag(flag)) { + if (loader.has_value() && loader->testFlag(flag)) { loader_filter = ModPlatform::getModLoaderAsString(flag); break; } @@ -153,63 +167,38 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp checkNextLoader(); } -void ModrinthCheckUpdate::getUpdateModsForLoader(ModPlatform::ModLoaderTypes loader, bool forceModLoaderCheck) -{ - auto response = std::make_shared(); - QStringList hashes; - if (forceModLoaderCheck) { - for (auto hash : m_mappings.keys()) { - if (m_mappings[hash]->metadata()->loaders & loader) { - hashes.append(hash); - } - } - } else { - hashes = m_mappings.keys(); - } - auto job = api.latestVersions(hashes, m_hash_type, m_game_versions, loader, response); - - connect(job.get(), &Task::succeeded, this, - [this, response, loader, forceModLoaderCheck] { checkVersionsResponse(response, loader, forceModLoaderCheck); }); - - connect(job.get(), &Task::failed, this, &ModrinthCheckUpdate::checkNextLoader); - - setStatus(tr("Waiting for the API response from Modrinth...")); - setProgress(m_next_loader_idx * 2 - 1, 9); - - m_job = job; - job->start(); -} - void ModrinthCheckUpdate::checkNextLoader() { if (m_mappings.isEmpty()) { emitSucceeded(); return; } - if (m_next_loader_idx < m_loaders_list.size()) { - getUpdateModsForLoader(m_loaders_list.at(m_next_loader_idx)); - m_next_loader_idx++; - return; - } - static auto flags = { ModPlatform::ModLoaderType::NeoForge, ModPlatform::ModLoaderType::Forge, ModPlatform::ModLoaderType::Quilt, - ModPlatform::ModLoaderType::Fabric }; - for (auto flag : flags) { - if (!m_loaders_list.contains(flag)) { - m_loaders_list.append(flag); - m_next_loader_idx++; - setProgress(m_next_loader_idx * 2 - 1, 9); - for (auto resource : m_mappings) { - if (resource->metadata()->loaders & flag) { - getUpdateModsForLoader(flag, true); - return; - } - } - setProgress(m_next_loader_idx * 2, 9); + + if (m_loaders_list.size() == 0) { + if (m_loader_idx == 0) { + getUpdateModsForLoader({}); + m_loader_idx++; + return; } } - for (auto m : m_mappings) { - emit checkFailed(m, - tr("No valid version found for this mod. It's probably unavailable for the current game version / mod loader.")); + if (m_loader_idx < m_loaders_list.size()) { + getUpdateModsForLoader(m_loaders_list.at(m_loader_idx)); + m_loader_idx++; + return; } + + for (auto resource : m_mappings) { + QString reason; + + if (dynamic_cast(resource) != nullptr) + reason = + tr("No valid version found for this resource. It's probably unavailable for the current game " + "version / mod loader."); + else + reason = tr("No valid version found for this resource. It's probably unavailable for the current game version."); + + emit checkFailed(resource, reason); + } + emitSucceeded(); } diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.h b/launcher/modplatform/modrinth/ModrinthCheckUpdate.h index 0bbd21321..204b24784 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.h +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.h @@ -7,10 +7,10 @@ class ModrinthCheckUpdate : public CheckUpdateTask { public: ModrinthCheckUpdate(QList& resources, - std::list& mcVersions, - QList loadersList, - std::shared_ptr resourceModel) - : CheckUpdateTask(resources, mcVersions, loadersList, resourceModel) + std::list& mcVersions, + QList loadersList, + std::shared_ptr resourceModel) + : CheckUpdateTask(resources, mcVersions, std::move(loadersList), std::move(resourceModel)) , m_hash_type(ModPlatform::ProviderCapabilities::hashType(ModPlatform::ResourceProvider::MODRINTH).first()) {} @@ -19,13 +19,13 @@ class ModrinthCheckUpdate : public CheckUpdateTask { protected slots: void executeTask() override; - void getUpdateModsForLoader(ModPlatform::ModLoaderTypes loader, bool forceModLoaderCheck = false); - void checkVersionsResponse(std::shared_ptr response, ModPlatform::ModLoaderTypes loader, bool forceModLoaderCheck = false); + void getUpdateModsForLoader(std::optional loader); + void checkVersionsResponse(std::shared_ptr response, std::optional loader); void checkNextLoader(); private: Task::Ptr m_job = nullptr; QHash m_mappings; QString m_hash_type; - int m_next_loader_idx = 0; + int m_loader_idx = 0; }; From 3d82bc37af193acab7341ac1f48e3897952dfc6e Mon Sep 17 00:00:00 2001 From: Kaiyang Wu Date: Mon, 17 Jun 2024 22:41:46 -0700 Subject: [PATCH 276/616] javautils: add a filter for detecting Java paths on AOSC OS Signed-off-by: Kaiyang Wu --- launcher/java/JavaUtils.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index bc8026348..627f0c789 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -440,9 +440,15 @@ QList JavaUtils::FindJavaPaths() QString fileName = info.fileName(); return fileName.startsWith("openjdk-") || fileName.startsWith("openj9-"); }; + // AOSC OS's locations for openjdk + auto aoscFilter = [](const QFileInfo& info) { + QString fileName = info.fileName(); + return fileName == "java" || fileName.startsWith("java-"); + }; scanJavaDir("/usr/lib64", gentooFilter); scanJavaDir("/usr/lib", gentooFilter); scanJavaDir("/opt", gentooFilter); + scanJavaDir("/usr/lib", aoscFilter); // javas stored in Prism Launcher's folder scanJavaDirs("java"); // manually installed JDKs in /opt From e7cd8fe078e3a68bd3179816020a9ed08f1b2847 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 23 Oct 2024 13:44:39 +0100 Subject: [PATCH 277/616] Fix CleanEnviroment()'s usage of stripVariableEntries Signed-off-by: TheKodeToad --- launcher/java/JavaUtils.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index bc8026348..f3200428e 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -102,6 +102,8 @@ QProcessEnvironment CleanEnviroment() QString newValue = stripVariableEntries(key, value, rawenv.value("LAUNCHER_" + key)); qDebug() << "Env: stripped" << key << value << "to" << newValue; + + value = newValue; } #if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD) // Strip IBus From 24cecf7b63f91766d1b941c3b2f8e7e5d0971f36 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 23 Oct 2024 14:42:54 +0100 Subject: [PATCH 278/616] Fix compile Signed-off-by: TheKodeToad --- .../modplatform/modrinth/ModrinthInstanceCreationTask.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index f34fccfc5..4494f9371 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -303,8 +303,8 @@ bool ModrinthCreationTask::createInstance() loop.exec(); if (!ended_well) { - for (auto m : mods) { - delete m; + for (auto resource : resources) { + delete resource; } return ended_well; } @@ -324,8 +324,8 @@ bool ModrinthCreationTask::createInstance() m_task = ensureMetadataTask; ensureMetaLoop.exec(); - for (auto m : resources) { - delete m; + for (auto resource : resources) { + delete resource; } resources.clear(); From 92a906e0d499e5d93f1796246aa3630ae5f1bbd0 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 23 Oct 2024 14:58:52 +0100 Subject: [PATCH 279/616] Move everything in CheckUpdateTask::Update Signed-off-by: TheKodeToad --- launcher/modplatform/CheckUpdateTask.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/launcher/modplatform/CheckUpdateTask.h b/launcher/modplatform/CheckUpdateTask.h index 540998287..9d0b1c51a 100644 --- a/launcher/modplatform/CheckUpdateTask.h +++ b/launcher/modplatform/CheckUpdateTask.h @@ -45,14 +45,14 @@ class CheckUpdateTask : public Task { ModPlatform::ResourceProvider p, shared_qobject_ptr t, bool enabled = true) - : name(name) - , old_hash(old_h) - , old_version(old_v) - , new_version(new_v) - , new_version_type(new_v_type) - , changelog(changelog) + : name(std::move(name)) + , old_hash(std::move(old_h)) + , old_version(std::move(old_v)) + , new_version(std::move(new_v)) + , new_version_type(std::move(new_v_type)) + , changelog(std::move(changelog)) , provider(p) - , download(t) + , download(std::move(t)) , enabled(enabled) {} }; From 7bd04ae928527b065174021fba98dc78d0d119a3 Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Wed, 23 Oct 2024 16:23:10 -0700 Subject: [PATCH 280/616] fix don't hang the ui for a full version load Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- launcher/minecraft/Component.cpp | 5 +++-- launcher/minecraft/Component.h | 2 +- launcher/ui/pages/instance/VersionPage.cpp | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/launcher/minecraft/Component.cpp b/launcher/minecraft/Component.cpp index 1073ef324..ad7ef545c 100644 --- a/launcher/minecraft/Component.cpp +++ b/launcher/minecraft/Component.cpp @@ -222,11 +222,12 @@ bool Component::isMoveable() return true; } -bool Component::isVersionChangeable() +bool Component::isVersionChangeable(bool wait) { auto list = getVersionList(); if (list) { - list->waitToLoad(); + if (wait) + list->waitToLoad(); return list->count() != 0; } return false; diff --git a/launcher/minecraft/Component.h b/launcher/minecraft/Component.h index 7ff30889f..203cc2241 100644 --- a/launcher/minecraft/Component.h +++ b/launcher/minecraft/Component.h @@ -72,7 +72,7 @@ class Component : public QObject, public ProblemProvider { bool isRevertible(); bool isRemovable(); bool isCustom(); - bool isVersionChangeable(); + bool isVersionChangeable(bool wait = true); bool isKnownModloader(); QStringList knownConflictingComponents(); diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index 0c25b4c0c..cb04f9db1 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -243,7 +243,7 @@ void VersionPage::updateButtons(int row) ui->actionRemove->setEnabled(patch && patch->isRemovable()); ui->actionMove_down->setEnabled(patch && patch->isMoveable()); ui->actionMove_up->setEnabled(patch && patch->isMoveable()); - ui->actionChange_version->setEnabled(patch && patch->isVersionChangeable()); + ui->actionChange_version->setEnabled(patch && patch->isVersionChangeable(false)); ui->actionEdit->setEnabled(patch && patch->isCustom()); ui->actionCustomize->setEnabled(patch && patch->isCustomizable()); ui->actionRevert->setEnabled(patch && patch->isRevertible()); From 8e586c883c5da83f1c91404625f5030f6985920e Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 24 Oct 2024 01:16:06 +0100 Subject: [PATCH 281/616] Fix Modrinth update crashing Signed-off-by: TheKodeToad --- .../modrinth/ModrinthCheckUpdate.cpp | 34 ++++++++----------- 1 file changed, 14 insertions(+), 20 deletions(-) diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index f77c5598a..e38ca526f 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -63,8 +63,7 @@ void ModrinthCheckUpdate::getUpdateModsForLoader(std::optionalstart(); } -void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr response, - std::optional loader) +void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr response, std::optional loader) { setStatus(tr("Parsing the API response from Modrinth...")); setProgress(m_progress + 1, m_progressTotal); @@ -90,8 +88,10 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp } try { - for (auto iter = m_mappings.begin(); iter != m_mappings.end(); iter++) { - const QString& hash = iter.key(); + auto iter = m_mappings.begin(); + + while (iter != m_mappings.end()) { + const QString hash = iter.key(); Resource* resource = iter.value(); auto project_obj = doc[hash].toObject(); @@ -101,7 +101,7 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp if (project_obj.isEmpty()) { qDebug() << "Mod " << m_mappings.find(hash).value()->name() << " got an empty response." << "Hash: " << hash; - + ++iter; continue; } @@ -126,23 +126,15 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp auto project_ver = Modrinth::loadIndexedPackVersion(project_obj, m_hash_type, loader_filter); if (project_ver.downloadUrl.isEmpty()) { qCritical() << "Modrinth mod without download url!" << project_ver.fileName; - + ++iter; continue; } - auto mod_iter = m_mappings.find(hash); - if (mod_iter == m_mappings.end()) { - qCritical() << "Failed to remap mod from Modrinth!"; - continue; - } - auto mod = *mod_iter; - m_mappings.remove(hash); - // Fake pack with the necessary info to pass to the download task :) auto pack = std::make_shared(); - pack->name = mod->name(); - pack->slug = mod->metadata()->slug; - pack->addonId = mod->metadata()->project_id; + pack->name = resource->name(); + pack->slug = resource->metadata()->slug; + pack->addonId = resource->metadata()->project_id; pack->provider = ModPlatform::ResourceProvider::MODRINTH; if ((project_ver.hash != hash && project_ver.is_preferred) || (resource->status() == ResourceStatus::NOT_INSTALLED)) { auto download_task = makeShared(pack, project_ver, m_resource_model); @@ -159,6 +151,8 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp project_ver.changelog, ModPlatform::ResourceProvider::MODRINTH, download_task); } m_deps.append(std::make_shared(pack, project_ver)); + + iter = m_mappings.erase(iter); } } catch (Json::JsonException& e) { emitFailed(e.cause() + ": " + e.what()); @@ -184,7 +178,7 @@ void ModrinthCheckUpdate::checkNextLoader() if (m_loader_idx < m_loaders_list.size()) { getUpdateModsForLoader(m_loaders_list.at(m_loader_idx)); m_loader_idx++; - return; + return; } for (auto resource : m_mappings) { From 5eff9b093451f7c9248832cb9712d5a5fdac5b22 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 24 Oct 2024 01:23:11 +0100 Subject: [PATCH 282/616] Fix column crashes Signed-off-by: TheKodeToad --- launcher/minecraft/mod/ResourceFolderModel.h | 2 +- launcher/minecraft/mod/ResourcePackFolderModel.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index c3ce822c8..a92648de9 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -256,7 +256,7 @@ class ResourceFolderModel : public QAbstractListModel { QList m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::DATE, SortType::PROVIDER, SortType::SIZE }; QStringList m_column_names = { "Enable", "Name", "Last Modified", "Provider", "Size" }; QStringList m_column_names_translated = { tr("Enable"), tr("Name"), tr("Last Modified"), tr("Provider"), tr("Size") }; - QList m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, + QList m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, QHeaderView::Interactive }; QList m_columnsHideable = { false, false, true, true, true }; QList m_columnsHiddenByDefault = { false, false, false, false, true }; diff --git a/launcher/minecraft/mod/ResourcePackFolderModel.cpp b/launcher/minecraft/mod/ResourcePackFolderModel.cpp index d41420c5f..84c34582b 100644 --- a/launcher/minecraft/mod/ResourcePackFolderModel.cpp +++ b/launcher/minecraft/mod/ResourcePackFolderModel.cpp @@ -55,7 +55,7 @@ ResourcePackFolderModel::ResourcePackFolderModel(const QDir& dir, BaseInstance* QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified"), tr("Provider"), tr("Size") }); m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::PACK_FORMAT, SortType::DATE, SortType::PROVIDER, SortType::SIZE }; - m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, + m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive }; m_columnsHideable = { false, true, false, true, true, true, true }; } From d8702e1357d36423a0d40b916d49fd937284a204 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 24 Oct 2024 01:33:01 +0100 Subject: [PATCH 283/616] Use Launcher log level in AutoInstallJava Signed-off-by: TheKodeToad --- launcher/minecraft/launch/AutoInstallJava.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index b23b23ed2..1083b7efb 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -78,7 +78,7 @@ void AutoInstallJava::executeTask() auto java = std::dynamic_pointer_cast(javas->at(i)); if (java && packProfile->getProfile()->getCompatibleJavaMajors().contains(java->id.major())) { if (!java->is_64bit) { - emit logLine(tr("The automatic Java mechanism detected a 32-bit installation of Java."), MessageLevel::Info); + emit logLine(tr("The automatic Java mechanism detected a 32-bit installation of Java."), MessageLevel::Launcher); } setJavaPath(java->path); return; @@ -136,7 +136,7 @@ void AutoInstallJava::setJavaPath(QString path) settings->set("OverrideJavaLocation", true); settings->set("JavaPath", path); settings->set("AutomaticJava", true); - emit logLine(tr("Compatible Java found at: %1.").arg(path), MessageLevel::Info); + emit logLine(tr("Compatible Java found at: %1.").arg(path), MessageLevel::Launcher); emitSucceeded(); } From 4ce025c0a209a4eec20f7f1b9a7777bbe886be8c Mon Sep 17 00:00:00 2001 From: Arcitec <38923130+Arcitec@users.noreply.github.com> Date: Thu, 24 Oct 2024 09:52:40 +0200 Subject: [PATCH 284/616] fix: bring back Flathub manifest improvements to the repo - Brings back all manifest improvements, such as the incredibly important Mojang Java Downloader (without it, the Flatpak doesn't work), and important fixes for Wayland. Signed-off-by: Arcitec <38923130+Arcitec@users.noreply.github.com> --- flatpak/flite.json | 20 +++++++ flatpak/libdecor.json | 36 +++++------ flatpak/org.prismlauncher.PrismLauncher.yml | 27 +++++---- ...on-t-crash-on-calls-to-focus-or-icon.patch | 24 -------- ...ning-about-being-an-unofficial-patch.patch | 17 ------ ...007-Platform-Prefer-Wayland-over-X11.patch | 20 ------- ...rsor-position-until-the-cursor-is-lo.patch | 59 +++++++++++++++++++ flatpak/patches/weird_libdecor.patch | 40 ------------- 8 files changed, 112 insertions(+), 131 deletions(-) create mode 100644 flatpak/flite.json delete mode 100644 flatpak/patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch delete mode 100644 flatpak/patches/0005-Add-warning-about-being-an-unofficial-patch.patch delete mode 100644 flatpak/patches/0007-Platform-Prefer-Wayland-over-X11.patch create mode 100644 flatpak/patches/0009-Defer-setting-cursor-position-until-the-cursor-is-lo.patch delete mode 100644 flatpak/patches/weird_libdecor.patch diff --git a/flatpak/flite.json b/flatpak/flite.json new file mode 100644 index 000000000..1bf280af1 --- /dev/null +++ b/flatpak/flite.json @@ -0,0 +1,20 @@ +{ + "name": "flite", + "config-opts": [ + "--enable-shared", + "--with-audio=pulseaudio" + ], + "no-parallel-make": true, + "sources": [ + { + "type": "git", + "url": "https://github.com/festvox/flite.git", + "tag": "v2.2", + "commit": "e9e2e37c329dbe98bfeb27a1828ef9a71fa84f88", + "x-checker-data": { + "type": "git", + "tag-pattern": "^v([\\d.]+)$" + } + } + ] +} diff --git a/flatpak/libdecor.json b/flatpak/libdecor.json index 589310a35..1652a2f04 100644 --- a/flatpak/libdecor.json +++ b/flatpak/libdecor.json @@ -1,22 +1,18 @@ { - "name": "libdecor", - "buildsystem": "meson", - "config-opts": [ - "-Ddemo=false" - ], - "sources": [ - { - "type": "git", - "url": "https://gitlab.freedesktop.org/libdecor/libdecor.git", - "commit": "73260393a97291c887e1074ab7f318e031be0ac6" - }, - { - "type": "patch", - "path": "patches/weird_libdecor.patch" - } - ], - "cleanup": [ - "/include", - "/lib/pkgconfig" - ] + "name": "libdecor", + "buildsystem": "meson", + "config-opts": [ + "-Ddemo=false" + ], + "sources": [ + { + "type": "git", + "url": "https://gitlab.freedesktop.org/libdecor/libdecor.git", + "commit": "c2bd8ad6fa42c0cb17553ce77ad8a87d1f543b1f" + } + ], + "cleanup": [ + "/include", + "/lib/pkgconfig" + ] } diff --git a/flatpak/org.prismlauncher.PrismLauncher.yml b/flatpak/org.prismlauncher.PrismLauncher.yml index 09dd8d73b..7aaa4f379 100644 --- a/flatpak/org.prismlauncher.PrismLauncher.yml +++ b/flatpak/org.prismlauncher.PrismLauncher.yml @@ -1,6 +1,6 @@ id: org.prismlauncher.PrismLauncher runtime: org.kde.Platform -runtime-version: 6.7 +runtime-version: '6.7' sdk: org.kde.Sdk sdk-extensions: - org.freedesktop.Sdk.Extension.openjdk17 @@ -19,6 +19,12 @@ finish-args: - --filesystem=xdg-download:ro # FTBApp import - --filesystem=~/.ftba:ro + # Userspace visibility for manual hugepages configuration + # Required for -XX:+UseLargePages + - --filesystem=/sys/kernel/mm/hugepages:ro + # Userspace visibility for transparent hugepages configuration + # Required for -XX:+UseTransparentHugePages + - --filesystem=/sys/kernel/mm/transparent_hugepage:ro modules: # Might be needed by some Controller mods (see https://github.com/isXander/Controlify/issues/31) @@ -27,11 +33,16 @@ modules: # Needed for proper Wayland support - libdecor.json + # Text to Speech in the game + - flite.json + - name: prismlauncher buildsystem: cmake-ninja builddir: true config-opts: - -DLauncher_BUILD_PLATFORM=flatpak + # This allows us to manage and update Java independently of this Flatpak + - -DLauncher_ENABLE_JAVA_DOWNLOADER=ON - -DCMAKE_BUILD_TYPE=RelWithDebInfo build-options: env: @@ -47,18 +58,14 @@ modules: config-opts: - -DCMAKE_BUILD_TYPE=RelWithDebInfo - -DBUILD_SHARED_LIBS:BOOL=ON - - -DGLFW_USE_WAYLAND:BOOL=ON + - -DGLFW_BUILD_WAYLAND:BOOL=ON - -DGLFW_BUILD_DOCS:BOOL=OFF sources: - type: git url: https://github.com/glfw/glfw.git - commit: 3fa2360720eeba1964df3c0ecf4b5df8648a8e52 + commit: 7b6aead9fb88b3623e3b3725ebb42670cbe4c579 # 3.4 - type: patch - path: patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch - - type: patch - path: patches/0005-Add-warning-about-being-an-unofficial-patch.patch - - type: patch - path: patches/0007-Platform-Prefer-Wayland-over-X11.patch + path: patches/0009-Defer-setting-cursor-position-until-the-cursor-is-lo.patch cleanup: - /include - /lib/cmake @@ -91,8 +98,8 @@ modules: sources: - type: archive dest-filename: gamemode.tar.gz - url: https://api.github.com/repos/FeralInteractive/gamemode/tarball/1.8.1 - sha256: 969cf85b5ca3944f3e315cd73a0ee9bea4f9c968cd7d485e9f4745bc1e679c4e + url: https://api.github.com/repos/FeralInteractive/gamemode/tarball/1.8.2 + sha256: 2886d4ce543c78bd2a364316d5e7fd59ef06b71de63f896b37c6d3dc97658f60 x-checker-data: type: json url: https://api.github.com/repos/FeralInteractive/gamemode/releases/latest diff --git a/flatpak/patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch b/flatpak/patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch deleted file mode 100644 index 9130e856c..000000000 --- a/flatpak/patches/0003-Don-t-crash-on-calls-to-focus-or-icon.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff --git a/src/wl_window.c b/src/wl_window.c -index 52d3b9eb..4ac4eb5d 100644 ---- a/src/wl_window.c -+++ b/src/wl_window.c -@@ -2117,8 +2117,7 @@ void _glfwSetWindowTitleWayland(_GLFWwindow* window, const char* title) - void _glfwSetWindowIconWayland(_GLFWwindow* window, - int count, const GLFWimage* images) - { -- _glfwInputError(GLFW_FEATURE_UNAVAILABLE, -- "Wayland: The platform does not support setting the window icon"); -+ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the window icon\n"); - } - - void _glfwGetWindowPosWayland(_GLFWwindow* window, int* xpos, int* ypos) -@@ -2361,8 +2360,7 @@ void _glfwRequestWindowAttentionWayland(_GLFWwindow* window) - - void _glfwFocusWindowWayland(_GLFWwindow* window) - { -- _glfwInputError(GLFW_FEATURE_UNAVAILABLE, -- "Wayland: The platform does not support setting the input focus"); -+ fprintf(stderr, "!!! Ignoring Error: Wayland: The platform does not support setting the input focus\n"); - } - - void _glfwSetWindowMonitorWayland(_GLFWwindow* window, diff --git a/flatpak/patches/0005-Add-warning-about-being-an-unofficial-patch.patch b/flatpak/patches/0005-Add-warning-about-being-an-unofficial-patch.patch deleted file mode 100644 index b031d739f..000000000 --- a/flatpak/patches/0005-Add-warning-about-being-an-unofficial-patch.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/src/init.c b/src/init.c -index 06dbb3f2..a7c6da86 100644 ---- a/src/init.c -+++ b/src/init.c -@@ -449,6 +449,12 @@ GLFWAPI int glfwInit(void) - _glfw.initialized = GLFW_TRUE; - - glfwDefaultWindowHints(); -+ -+ fprintf(stderr, "!!! Patched GLFW from https://github.com/Admicos/minecraft-wayland\n" -+ "!!! If any issues with the window, or some issues with rendering, occur, " -+ "first try with the built-in GLFW, and if that solves the issue, report there first.\n" -+ "!!! Use outside Minecraft is untested, and things might break.\n"); -+ - return GLFW_TRUE; - } - diff --git a/flatpak/patches/0007-Platform-Prefer-Wayland-over-X11.patch b/flatpak/patches/0007-Platform-Prefer-Wayland-over-X11.patch deleted file mode 100644 index 4eeb81309..000000000 --- a/flatpak/patches/0007-Platform-Prefer-Wayland-over-X11.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/src/platform.c b/src/platform.c -index c5966ae7..3e7442f9 100644 ---- a/src/platform.c -+++ b/src/platform.c -@@ -49,12 +49,12 @@ static const struct - #if defined(_GLFW_COCOA) - { GLFW_PLATFORM_COCOA, _glfwConnectCocoa }, - #endif --#if defined(_GLFW_X11) -- { GLFW_PLATFORM_X11, _glfwConnectX11 }, --#endif - #if defined(_GLFW_WAYLAND) - { GLFW_PLATFORM_WAYLAND, _glfwConnectWayland }, - #endif -+#if defined(_GLFW_X11) -+ { GLFW_PLATFORM_X11, _glfwConnectX11 }, -+#endif - }; - - GLFWbool _glfwSelectPlatform(int desiredID, _GLFWplatform* platform) diff --git a/flatpak/patches/0009-Defer-setting-cursor-position-until-the-cursor-is-lo.patch b/flatpak/patches/0009-Defer-setting-cursor-position-until-the-cursor-is-lo.patch new file mode 100644 index 000000000..70cec9981 --- /dev/null +++ b/flatpak/patches/0009-Defer-setting-cursor-position-until-the-cursor-is-lo.patch @@ -0,0 +1,59 @@ +From 9997ae55a47de469ea26f8437c30b51483abda5f Mon Sep 17 00:00:00 2001 +From: Dan Klishch +Date: Sat, 30 Sep 2023 23:38:05 -0400 +Subject: Defer setting cursor position until the cursor is locked + +--- + src/wl_platform.h | 3 +++ + src/wl_window.c | 14 ++++++++++++-- + 2 files changed, 15 insertions(+), 2 deletions(-) + +diff --git a/src/wl_platform.h b/src/wl_platform.h +index ca34f66e..cd1f227f 100644 +--- a/src/wl_platform.h ++++ b/src/wl_platform.h +@@ -403,6 +403,9 @@ typedef struct _GLFWwindowWayland + int scaleSize; + int compositorPreferredScale; + ++ double askedCursorPosX, askedCursorPosY; ++ GLFWbool didAskForSetCursorPos; ++ + struct zwp_relative_pointer_v1* relativePointer; + struct zwp_locked_pointer_v1* lockedPointer; + struct zwp_confined_pointer_v1* confinedPointer; +diff --git a/src/wl_window.c b/src/wl_window.c +index 1de26558..0df16747 100644 +--- a/src/wl_window.c ++++ b/src/wl_window.c +@@ -2586,8 +2586,9 @@ void _glfwGetCursorPosWayland(_GLFWwindow* window, double* xpos, double* ypos) + + void _glfwSetCursorPosWayland(_GLFWwindow* window, double x, double y) + { +- _glfwInputError(GLFW_FEATURE_UNAVAILABLE, +- "Wayland: The platform does not support setting the cursor position"); ++ window->wl.didAskForSetCursorPos = true; ++ window->wl.askedCursorPosX = x; ++ window->wl.askedCursorPosY = y; + } + + void _glfwSetCursorModeWayland(_GLFWwindow* window, int mode) +@@ -2819,6 +2820,15 @@ static const struct zwp_relative_pointer_v1_listener relativePointerListener = + static void lockedPointerHandleLocked(void* userData, + struct zwp_locked_pointer_v1* lockedPointer) + { ++ _GLFWwindow* window = userData; ++ ++ if (window->wl.didAskForSetCursorPos) ++ { ++ window->wl.didAskForSetCursorPos = false; ++ zwp_locked_pointer_v1_set_cursor_position_hint(window->wl.lockedPointer, ++ wl_fixed_from_double(window->wl.askedCursorPosX), ++ wl_fixed_from_double(window->wl.askedCursorPosY)); ++ } + } + + static void lockedPointerHandleUnlocked(void* userData, +-- +2.42.0 + diff --git a/flatpak/patches/weird_libdecor.patch b/flatpak/patches/weird_libdecor.patch deleted file mode 100644 index 3a400b820..000000000 --- a/flatpak/patches/weird_libdecor.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/src/libdecor.c b/src/libdecor.c -index a9c1106..1aa38b3 100644 ---- a/src/libdecor.c -+++ b/src/libdecor.c -@@ -1391,22 +1391,32 @@ calculate_priority(const struct libdecor_plugin_description *plugin_description) - static bool - check_symbol_conflicts(const struct libdecor_plugin_description *plugin_description) - { -+ bool ret = true; - char * const *symbol; -+ void* main_prog = dlopen(NULL, RTLD_LAZY); -+ if (!main_prog) { -+ fprintf(stderr, "Plugin \"%s\" couldn't check conflicting symbols: \"%s\".\n", -+ plugin_description->description, dlerror()); -+ return false; -+ } -+ - - symbol = plugin_description->conflicting_symbols; - while (*symbol) { - dlerror(); -- dlsym (RTLD_DEFAULT, *symbol); -+ dlsym (main_prog, *symbol); - if (!dlerror()) { - fprintf(stderr, "Plugin \"%s\" uses conflicting symbol \"%s\".\n", - plugin_description->description, *symbol); -- return false; -+ ret = false; -+ break; - } - - symbol++; - } - -- return true; -+ dlclose(main_prog); -+ return ret; - } - - static struct plugin_loader * From 3bc40120cd0208812a8d1137b8f9989ee5d12dfb Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 25 Oct 2024 00:17:34 +0300 Subject: [PATCH 285/616] bump develop to 10 Signed-off-by: Trial97 --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b677b0b7c..cec384b33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -180,7 +180,7 @@ set(Launcher_LOGIN_CALLBACK_URL "https://prismlauncher.org/successful-login" CAC set(Launcher_FMLLIBS_BASE_URL "https://files.prismlauncher.org/fmllibs/" CACHE STRING "URL for FML Libraries.") ######## Set version numbers ######## -set(Launcher_VERSION_MAJOR 9) +set(Launcher_VERSION_MAJOR 10) set(Launcher_VERSION_MINOR 0) set(Launcher_VERSION_NAME "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}") From 8daa1219a508ddb37070c01046c78b731a277887 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 25 Oct 2024 01:05:58 +0300 Subject: [PATCH 286/616] add extra protection against empty download link Signed-off-by: Trial97 --- launcher/ui/pages/modplatform/ResourcePage.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index dea28d6d5..6d5966056 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -39,6 +39,7 @@ #include "ResourcePage.h" #include "modplatform/ModIndex.h" +#include "ui/dialogs/CustomMessageBox.h" #include "ui_ResourcePage.h" #include @@ -324,9 +325,9 @@ void ResourcePage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelI updateUi(); } -void ResourcePage::onVersionSelectionChanged(int index) +void ResourcePage::onVersionSelectionChanged(int) { - m_selected_version_index = index; + m_selected_version_index = m_ui->versionSelectionBox->currentData().toInt(); updateSelectionButton(); } @@ -358,10 +359,18 @@ void ResourcePage::onResourceSelected() return; auto current_pack = getCurrentPack(); - if (!current_pack || !current_pack->versionsLoaded) + if (!current_pack || !current_pack->versionsLoaded || current_pack->versions.size() < m_selected_version_index) return; auto& version = current_pack->versions[m_selected_version_index]; + if (version.downloadUrl.isNull()) { + CustomMessageBox::selectable(this, tr("How?"), + "You managed to select a resource that doesn't have a download link. Because of this missing " + "information prism will not try to download it.", + QMessageBox::Warning) + ->show(); + return; + } if (version.is_currently_selected) removeResourceFromDialog(current_pack->name); else From a5c554cf6ee32afa41c5a2af1ea8e8feb0087a49 Mon Sep 17 00:00:00 2001 From: seth Date: Fri, 25 Oct 2024 02:33:29 -0400 Subject: [PATCH 287/616] chore(nix): sync with nixpkgs Signed-off-by: seth --- nix/unwrapped.nix | 22 +++++---- nix/wrapper.nix | 115 ++++++++++++++++++++-------------------------- 2 files changed, 64 insertions(+), 73 deletions(-) diff --git a/nix/unwrapped.nix b/nix/unwrapped.nix index 7fc383ff3..237f36c1f 100644 --- a/nix/unwrapped.nix +++ b/nix/unwrapped.nix @@ -9,20 +9,21 @@ ghc_filesystem, jdk17, kdePackages, + libnbtplusplus, ninja, nix-filter, self, stripJavaArchivesHook, tomlplusplus, - zlib, - msaClientID ? null, - gamemodeSupport ? stdenv.isLinux, version, - libnbtplusplus, + zlib, + + msaClientID ? null, + gamemodeSupport ? stdenv.hostPlatform.isLinux, }: assert lib.assertMsg ( - gamemodeSupport -> stdenv.isLinux + gamemodeSupport -> stdenv.hostPlatform.isLinux ) "gamemodeSupport is only available on Linux."; stdenv.mkDerivation { @@ -66,20 +67,23 @@ stdenv.mkDerivation { tomlplusplus zlib ] - ++ lib.optionals stdenv.isDarwin [ darwin.apple_sdk.frameworks.Cocoa ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk.frameworks.Cocoa ] ++ lib.optional gamemodeSupport gamemode; - hardeningEnable = lib.optionals stdenv.isLinux [ "pie" ]; + hardeningEnable = lib.optionals stdenv.hostPlatform.isLinux [ "pie" ]; cmakeFlags = - [ (lib.cmakeFeature "Launcher_BUILD_PLATFORM" "nixpkgs") ] + [ + # downstream branding + (lib.cmakeFeature "Launcher_BUILD_PLATFORM" "nixpkgs") + ] ++ lib.optionals (msaClientID != null) [ (lib.cmakeFeature "Launcher_MSA_CLIENT_ID" (toString msaClientID)) ] ++ lib.optionals (lib.versionOlder kdePackages.qtbase.version "6") [ (lib.cmakeFeature "Launcher_QT_VERSION_MAJOR" "5") ] - ++ lib.optionals stdenv.isDarwin [ + ++ lib.optionals stdenv.hostPlatform.isDarwin [ # we wrap our binary manually (lib.cmakeFeature "INSTALL_BUNDLE" "nodeps") # disable built-in updater diff --git a/nix/wrapper.nix b/nix/wrapper.nix index 5632d483b..ab9b7144b 100644 --- a/nix/wrapper.nix +++ b/nix/wrapper.nix @@ -1,73 +1,65 @@ { - lib, - stdenv, - symlinkJoin, - prismlauncher-unwrapped, - addOpenGLRunpath, + addDriverRunpath, + alsa-lib, flite, gamemode, - glfw, - glfw-wayland-minecraft, - glxinfo, - jdk8, + glfw3-minecraft, jdk17, jdk21, + jdk8, kdePackages, + lib, libGL, + libX11, + libXcursor, + libXext, + libXrandr, + libXxf86vm, + libjack2, libpulseaudio, libusb1, - makeWrapper, + mesa-demos, openal, pciutils, + pipewire, + prismlauncher-unwrapped, + stdenv, + symlinkJoin, udev, vulkan-loader, - xorg, + xrandr, + additionalLibs ? [ ], additionalPrograms ? [ ], - controllerSupport ? stdenv.isLinux, - gamemodeSupport ? stdenv.isLinux, + controllerSupport ? stdenv.hostPlatform.isLinux, + gamemodeSupport ? stdenv.hostPlatform.isLinux, jdks ? [ jdk21 jdk17 jdk8 ], msaClientID ? null, - textToSpeechSupport ? stdenv.isLinux, - # Adds `glfw-wayland-minecraft` to `LD_LIBRARY_PATH` - # when launched on wayland, allowing for the game to be run natively. - # Make sure to enable "Use system installation of GLFW" in instance settings - # for this to take effect - # - # Warning: This build of glfw may be unstable, and the launcher - # itself can take slightly longer to start - withWaylandGLFW ? false, + textToSpeechSupport ? stdenv.hostPlatform.isLinux, }: assert lib.assertMsg ( - controllerSupport -> stdenv.isLinux + controllerSupport -> stdenv.hostPlatform.isLinux ) "controllerSupport only has an effect on Linux."; assert lib.assertMsg ( - textToSpeechSupport -> stdenv.isLinux + textToSpeechSupport -> stdenv.hostPlatform.isLinux ) "textToSpeechSupport only has an effect on Linux."; -assert lib.assertMsg ( - withWaylandGLFW -> stdenv.isLinux -) "withWaylandGLFW is only available on Linux."; - let prismlauncher' = prismlauncher-unwrapped.override { inherit msaClientID gamemodeSupport; }; in + symlinkJoin { name = "prismlauncher-${prismlauncher'.version}"; paths = [ prismlauncher' ]; - nativeBuildInputs = - [ kdePackages.wrapQtAppsHook ] - # purposefully using a shell wrapper here for variable expansion - # see https://github.com/NixOS/nixpkgs/issues/172583 - ++ lib.optional withWaylandGLFW makeWrapper; + nativeBuildInputs = [ kdePackages.wrapQtAppsHook ]; buildInputs = [ @@ -75,45 +67,39 @@ symlinkJoin { kdePackages.qtsvg ] ++ lib.optional ( - lib.versionAtLeast kdePackages.qtbase.version "6" && stdenv.isLinux + lib.versionAtLeast kdePackages.qtbase.version "6" && stdenv.hostPlatform.isLinux ) kdePackages.qtwayland; - env = { - waylandPreExec = lib.optionalString withWaylandGLFW '' - if [ -n "$WAYLAND_DISPLAY" ]; then - export LD_LIBRARY_PATH=${lib.getLib glfw-wayland-minecraft}/lib:"$LD_LIBRARY_PATH" - fi - ''; - }; - - postBuild = - lib.optionalString withWaylandGLFW '' - qtWrapperArgs+=(--run "$waylandPreExec") - '' - + '' - wrapQtAppsHook - ''; + postBuild = '' + wrapQtAppsHook + ''; qtWrapperArgs = let runtimeLibs = [ - # lwjgl - glfw - libpulseaudio - libGL - openal stdenv.cc.cc.lib + ## native versions + glfw3-minecraft + openal - vulkan-loader # VulkanMod's lwjgl + ## openal + alsa-lib + libjack2 + libpulseaudio + pipewire + + ## glfw + libGL + libX11 + libXcursor + libXext + libXrandr + libXxf86vm udev # oshi - xorg.libX11 - xorg.libXext - xorg.libXcursor - xorg.libXrandr - xorg.libXxf86vm + vulkan-loader # VulkanMod's lwjgl ] ++ lib.optional textToSpeechSupport flite ++ lib.optional gamemodeSupport gamemode.lib @@ -121,14 +107,15 @@ symlinkJoin { ++ additionalLibs; runtimePrograms = [ - glxinfo + mesa-demos pciutils # need lspci - xorg.xrandr # needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 + xrandr # needed for LWJGL [2.9.2, 3) https://github.com/LWJGL/lwjgl/issues/128 ] ++ additionalPrograms; + in [ "--prefix PRISMLAUNCHER_JAVA_PATHS : ${lib.makeSearchPath "bin/java" jdks}" ] - ++ lib.optionals stdenv.isLinux [ - "--set LD_LIBRARY_PATH ${addOpenGLRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}" + ++ lib.optionals stdenv.hostPlatform.isLinux [ + "--set LD_LIBRARY_PATH ${addDriverRunpath.driverLink}/lib:${lib.makeLibraryPath runtimeLibs}" "--prefix PATH : ${lib.makeBinPath runtimePrograms}" ]; From 63b10738b2a1065d55077e729fcada6e7f64d10a Mon Sep 17 00:00:00 2001 From: seth Date: Fri, 25 Oct 2024 02:34:15 -0400 Subject: [PATCH 288/616] chore(nix): use `self` for version Signed-off-by: seth --- flake.nix | 26 ++++++++++---------------- nix/unwrapped.nix | 3 +-- 2 files changed, 11 insertions(+), 18 deletions(-) diff --git a/flake.nix b/flake.nix index f4ca782ec..54add656d 100644 --- a/flake.nix +++ b/flake.nix @@ -85,24 +85,18 @@ formatter = forAllSystems (system: nixpkgsFor.${system}.nixfmt-rfc-style); - overlays.default = - final: prev: - let - version = builtins.substring 0 8 self.lastModifiedDate or "dirty"; - in - { - prismlauncher-unwrapped = prev.callPackage ./nix/unwrapped.nix { - inherit - libnbtplusplus - nix-filter - self - version - ; - }; - - prismlauncher = final.callPackage ./nix/wrapper.nix { }; + overlays.default = final: prev: { + prismlauncher-unwrapped = prev.callPackage ./nix/unwrapped.nix { + inherit + libnbtplusplus + nix-filter + self + ; }; + prismlauncher = final.callPackage ./nix/wrapper.nix { }; + }; + packages = forAllSystems ( system: let diff --git a/nix/unwrapped.nix b/nix/unwrapped.nix index 237f36c1f..1b14886ef 100644 --- a/nix/unwrapped.nix +++ b/nix/unwrapped.nix @@ -15,7 +15,6 @@ self, stripJavaArchivesHook, tomlplusplus, - version, zlib, msaClientID ? null, @@ -28,7 +27,7 @@ assert lib.assertMsg ( stdenv.mkDerivation { pname = "prismlauncher-unwrapped"; - inherit version; + version = self.shortRev or self.dirtyShortRev or "unknown"; src = nix-filter.lib { root = self; From 13e13ea8fcda9ae8c25b90f697b9f19172eb56cd Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 25 Oct 2024 19:13:41 +0100 Subject: [PATCH 289/616] Use non-mod metadata in ModrinthPackExportTask Signed-off-by: TheKodeToad --- launcher/minecraft/MinecraftInstance.cpp | 14 +- launcher/minecraft/MinecraftInstance.h | 1 + launcher/modplatform/helpers/HashUtils.cpp | 2 +- .../modrinth/ModrinthPackExportTask.cpp | 179 ++++++++++-------- .../modrinth/ModrinthPackExportTask.h | 13 +- launcher/ui/MainWindow.cpp | 27 ++- launcher/ui/dialogs/ExportPackDialog.cpp | 11 +- launcher/ui/dialogs/ExportPackDialog.h | 5 +- 8 files changed, 143 insertions(+), 109 deletions(-) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 2b24ec090..87bd1b703 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -522,7 +522,8 @@ QStringList MinecraftInstance::javaArguments() if (javaVersion.isModular() && shouldApplyOnlineFixes()) // allow reflective access to java.net - required by the skin fix - args << "--add-opens" << "java.base/java.net=ALL-UNNAMED"; + args << "--add-opens" + << "java.base/java.net=ALL-UNNAMED"; return args; } @@ -796,8 +797,10 @@ QString MinecraftInstance::createLaunchScript(AuthSessionPtr session, MinecraftT QStringList MinecraftInstance::verboseDescription(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) { QStringList out; - out << "Main Class:" << " " + getMainClass() << ""; - out << "Native path:" << " " + getNativePath() << ""; + out << "Main Class:" + << " " + getMainClass() << ""; + out << "Native path:" + << " " + getNativePath() << ""; auto profile = m_components->getProfile(); @@ -1227,6 +1230,11 @@ std::shared_ptr MinecraftInstance::shaderPackList() return m_shader_pack_list; } +QList> MinecraftInstance::resourceLists() +{ + return { loaderModList(), coreModList(), nilModList(), resourcePackList(), texturePackList(), shaderPackList() }; +} + std::shared_ptr MinecraftInstance::worldList() { if (!m_world_list) { diff --git a/launcher/minecraft/MinecraftInstance.h b/launcher/minecraft/MinecraftInstance.h index 75e97ae45..5d9bb45ef 100644 --- a/launcher/minecraft/MinecraftInstance.h +++ b/launcher/minecraft/MinecraftInstance.h @@ -116,6 +116,7 @@ class MinecraftInstance : public BaseInstance { std::shared_ptr resourcePackList(); std::shared_ptr texturePackList(); std::shared_ptr shaderPackList(); + QList> resourceLists(); std::shared_ptr worldList(); std::shared_ptr gameOptionsModel(); diff --git a/launcher/modplatform/helpers/HashUtils.cpp b/launcher/modplatform/helpers/HashUtils.cpp index a3b8d904c..1db7ca453 100644 --- a/launcher/modplatform/helpers/HashUtils.cpp +++ b/launcher/modplatform/helpers/HashUtils.cpp @@ -115,7 +115,7 @@ QString hash(QIODevice* device, Algorithm type) QCryptographicHash hash(alg); if (!hash.addData(device)) - qCritical() << "Failed to read JAR to create hash!"; + qCritical() << "Failed to read file to create hash!"; Q_ASSERT(hash.result().length() == hash.hashLength(alg)); auto result = hash.result().toHex(); diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp index d103170af..8df6405ad 100644 --- a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp @@ -34,22 +34,21 @@ const QStringList ModrinthPackExportTask::PREFIXES({ "mods/", "coremods/", "resourcepacks/", "texturepacks/", "shaderpacks/" }); const QStringList ModrinthPackExportTask::FILE_EXTENSIONS({ "jar", "litemod", "zip" }); -ModrinthPackExportTask::ModrinthPackExportTask(const QString& name, - const QString& version, - const QString& summary, +ModrinthPackExportTask::ModrinthPackExportTask(QString name, + QString version, + QString summary, bool optionalFiles, - InstancePtr instance, - const QString& output, + MinecraftInstancePtr instance, + QString output, MMCZip::FilterFunction filter) - : name(name) - , version(version) - , summary(summary) + : name(std::move(name)) + , version(std::move(version)) + , summary(std::move(summary)) , optionalFiles(optionalFiles) - , instance(instance) - , mcInstance(dynamic_cast(instance.get())) - , gameRoot(instance->gameRoot()) - , output(output) - , filter(filter) + , instance(std::move(instance)) + , gameRoot(this->instance->gameRoot()) + , output(std::move(output)) + , filter(std::move(filter)) {} void ModrinthPackExportTask::executeTask() @@ -83,20 +82,86 @@ void ModrinthPackExportTask::collectFiles() pendingHashes.clear(); resolvedFiles.clear(); - if (mcInstance) { - mcInstance->loaderModList()->update(); - connect(mcInstance->loaderModList().get(), &ModFolderModel::updateFinished, this, &ModrinthPackExportTask::collectHashes); - } else - collectHashes(); + collectHashes(); } void ModrinthPackExportTask::collectHashes() { setStatus(tr("Finding file hashes...")); + + for (const auto& model : instance->resourceLists()) { + QCoreApplication::processEvents(); // TODO: maybe don't do this? + + QEventLoop loop; + connect(model.get(), &ModFolderModel::updateFinished, &loop, &QEventLoop::quit); + model->update(); + loop.exec(); + + for (const Resource* resource : model->allResources()) { + QCoreApplication::processEvents(); + + if (resource->metadata() == nullptr) + continue; + + const QUrl& url = resource->metadata()->url; + + if (url.isEmpty() || !BuildConfig.MODRINTH_MRPACK_HOSTS.contains(url.host())) + continue; + + const QFileInfo& fileInfo = resource->fileinfo(); + const QString relativePath = gameRoot.relativeFilePath(fileInfo.absoluteFilePath()); + + if (filter(relativePath)) + continue; + + qDebug() << "Resolving" << relativePath << "from index"; + + QString sha1; + QString sha512; + qint64 size; + + if (resource->metadata()->hash_format == "sha1") + sha1 = resource->metadata()->hash; + else if (resource->metadata()->hash_format == "sha512") + sha512 = resource->metadata()->hash; + + { + QFile file(fileInfo.absoluteFilePath()); + + if (!file.open(QFile::ReadOnly)) { + qWarning() << "Could not open" << relativePath << "for hashing"; + continue; + } + + const QByteArray data = file.readAll(); + + if (file.error() != QFileDevice::NoError) { + qWarning() << "Could not read" << relativePath; + continue; + } + + if (sha1.isEmpty()) + sha1 = Hashing::hash(data, Hashing::Algorithm::Sha1); + + if (sha512.isEmpty()) + sha512 = Hashing::hash(data, Hashing::Algorithm::Sha512); + + size = file.size(); + } + + ResolvedFile resolvedFile{ sha1, sha512, url.toEncoded(), size, resource->metadata()->side }; + resolvedFiles[relativePath] = resolvedFile; + } + } + for (const QFileInfo& file : files) { QCoreApplication::processEvents(); const QString relative = gameRoot.relativeFilePath(file.absoluteFilePath()); + + if (resolvedFiles.contains(relative)) + continue; + // require sensible file types if (!std::any_of(PREFIXES.begin(), PREFIXES.end(), [&relative](const QString& prefix) { return relative.startsWith(prefix); })) continue; @@ -105,42 +170,8 @@ void ModrinthPackExportTask::collectHashes() })) continue; - QFile openFile(file.absoluteFilePath()); - if (!openFile.open(QFile::ReadOnly)) { - qWarning() << "Could not open" << file << "for hashing"; - continue; - } - - const QByteArray data = openFile.readAll(); - if (openFile.error() != QFileDevice::NoError) { - qWarning() << "Could not read" << file; - continue; - } - auto sha512 = Hashing::hash(data, Hashing::Algorithm::Sha512); - - auto allMods = mcInstance->loaderModList()->allMods(); - if (auto modIter = std::find_if(allMods.begin(), allMods.end(), [&file](Mod* mod) { return mod->fileinfo() == file; }); - modIter != allMods.end()) { - const Mod* mod = *modIter; - if (mod->metadata() != nullptr) { - const QUrl& url = mod->metadata()->url; - // ensure the url is permitted on modrinth.com - if (!url.isEmpty() && BuildConfig.MODRINTH_MRPACK_HOSTS.contains(url.host())) { - qDebug() << "Resolving" << relative << "from index"; - - auto sha1 = Hashing::hash(data, Hashing::Algorithm::Sha1); - - ResolvedFile resolvedFile{ sha1, sha512, url.toEncoded(), openFile.size(), mod->metadata()->side }; - resolvedFiles[relative] = resolvedFile; - - // nice! we've managed to resolve based on local metadata! - // no need to enqueue it - continue; - } - } - } - qDebug() << "Enqueueing" << relative << "for Modrinth query"; + auto sha512 = Hashing::hash(file.absoluteFilePath(), Hashing::Algorithm::Sha512); pendingHashes[relative] = sha512; } @@ -241,30 +272,28 @@ QByteArray ModrinthPackExportTask::generateIndex() if (!summary.isEmpty()) out["summary"] = summary; - if (mcInstance) { - auto profile = mcInstance->getPackProfile(); - // collect all supported components - const ComponentPtr minecraft = profile->getComponent("net.minecraft"); - const ComponentPtr quilt = profile->getComponent("org.quiltmc.quilt-loader"); - const ComponentPtr fabric = profile->getComponent("net.fabricmc.fabric-loader"); - const ComponentPtr forge = profile->getComponent("net.minecraftforge"); - const ComponentPtr neoForge = profile->getComponent("net.neoforged"); + auto profile = instance->getPackProfile(); + // collect all supported components + const ComponentPtr minecraft = profile->getComponent("net.minecraft"); + const ComponentPtr quilt = profile->getComponent("org.quiltmc.quilt-loader"); + const ComponentPtr fabric = profile->getComponent("net.fabricmc.fabric-loader"); + const ComponentPtr forge = profile->getComponent("net.minecraftforge"); + const ComponentPtr neoForge = profile->getComponent("net.neoforged"); - // convert all available components to mrpack dependencies - QJsonObject dependencies; - if (minecraft != nullptr) - dependencies["minecraft"] = minecraft->m_version; - if (quilt != nullptr) - dependencies["quilt-loader"] = quilt->m_version; - if (fabric != nullptr) - dependencies["fabric-loader"] = fabric->m_version; - if (forge != nullptr) - dependencies["forge"] = forge->m_version; - if (neoForge != nullptr) - dependencies["neoforge"] = neoForge->m_version; + // convert all available components to mrpack dependencies + QJsonObject dependencies; + if (minecraft != nullptr) + dependencies["minecraft"] = minecraft->m_version; + if (quilt != nullptr) + dependencies["quilt-loader"] = quilt->m_version; + if (fabric != nullptr) + dependencies["fabric-loader"] = fabric->m_version; + if (forge != nullptr) + dependencies["forge"] = forge->m_version; + if (neoForge != nullptr) + dependencies["neoforge"] = neoForge->m_version; - out["dependencies"] = dependencies; - } + out["dependencies"] = dependencies; QJsonArray filesOut; for (auto iterator = resolvedFiles.constBegin(); iterator != resolvedFiles.constEnd(); iterator++) { diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.h b/launcher/modplatform/modrinth/ModrinthPackExportTask.h index ee740a456..14bc36009 100644 --- a/launcher/modplatform/modrinth/ModrinthPackExportTask.h +++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.h @@ -29,12 +29,12 @@ class ModrinthPackExportTask : public Task { Q_OBJECT public: - ModrinthPackExportTask(const QString& name, - const QString& version, - const QString& summary, + ModrinthPackExportTask(QString name, + QString version, + QString summary, bool optionalFiles, - InstancePtr instance, - const QString& output, + MinecraftInstancePtr instance, + QString output, MMCZip::FilterFunction filter); protected: @@ -54,8 +54,7 @@ class ModrinthPackExportTask : public Task { // inputs const QString name, version, summary; const bool optionalFiles; - const InstancePtr instance; - MinecraftInstance* mcInstance; + const MinecraftInstancePtr instance; const QDir gameRoot; const QString output; const MMCZip::FilterFunction filter; diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 96f1348d2..6134d9d31 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -1403,27 +1403,26 @@ void MainWindow::on_actionExportInstanceZip_triggered() void MainWindow::on_actionExportInstanceMrPack_triggered() { - if (m_selectedInstance) { - ExportPackDialog dlg(m_selectedInstance, this); + auto instance = std::dynamic_pointer_cast(m_selectedInstance); + if (instance) { + ExportPackDialog dlg(std::move(instance), this); dlg.exec(); } } void MainWindow::on_actionExportInstanceFlamePack_triggered() { - if (m_selectedInstance) { - auto instance = dynamic_cast(m_selectedInstance.get()); - if (instance) { - if (auto cmp = instance->getPackProfile()->getComponent("net.minecraft"); - cmp && cmp->getVersionFile() && cmp->getVersionFile()->type == "snapshot") { - QMessageBox msgBox(this); - msgBox.setText("Snapshots are currently not supported by CurseForge modpacks."); - msgBox.exec(); - return; - } - ExportPackDialog dlg(m_selectedInstance, this, ModPlatform::ResourceProvider::FLAME); - dlg.exec(); + auto instance = std::dynamic_pointer_cast(m_selectedInstance); + if (instance) { + if (auto cmp = instance->getPackProfile()->getComponent("net.minecraft"); + cmp && cmp->getVersionFile() && cmp->getVersionFile()->type == "snapshot") { + QMessageBox msgBox(this); + msgBox.setText("Snapshots are currently not supported by CurseForge modpacks."); + msgBox.exec(); + return; } + ExportPackDialog dlg(std::move(instance), this, ModPlatform::ResourceProvider::FLAME); + dlg.exec(); } } diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index 0278c6cb0..c01b83f5c 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -34,7 +34,7 @@ #include "MMCZip.h" #include "modplatform/modrinth/ModrinthPackExportTask.h" -ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPlatform::ResourceProvider provider) +ExportPackDialog::ExportPackDialog(const MinecraftInstancePtr& instance, QWidget* parent, ModPlatform::ResourceProvider provider) : QDialog(parent), instance(instance), ui(new Ui::ExportPackDialog), m_provider(provider) { Q_ASSERT(m_provider == ModPlatform::ResourceProvider::MODRINTH || m_provider == ModPlatform::ResourceProvider::FLAME); @@ -86,12 +86,9 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla proxy->blockedPaths().insert(file); } - MinecraftInstance* mcInstance = dynamic_cast(instance.get()); - if (mcInstance) { - const QDir index = mcInstance->loaderModList()->indexDir(); - if (index.exists()) - proxy->ignoreFilesWithPath().insert(root.relativeFilePath(index.absolutePath())); - } + for (auto& resourceModel : instance->resourceLists()) + if (resourceModel->indexDir().exists()) + proxy->ignoreFilesWithPath().insert(root.relativeFilePath(resourceModel->indexDir().absolutePath())); ui->files->setModel(proxy); ui->files->setRootIndex(proxy->mapFromSource(model->index(instance->gameRoot()))); diff --git a/launcher/ui/dialogs/ExportPackDialog.h b/launcher/ui/dialogs/ExportPackDialog.h index 830c24d25..ab20f44bd 100644 --- a/launcher/ui/dialogs/ExportPackDialog.h +++ b/launcher/ui/dialogs/ExportPackDialog.h @@ -18,6 +18,7 @@ #pragma once +#include #include #include "BaseInstance.h" #include "FastFileIconProvider.h" @@ -32,7 +33,7 @@ class ExportPackDialog : public QDialog { Q_OBJECT public: - explicit ExportPackDialog(InstancePtr instance, + explicit ExportPackDialog(const MinecraftInstancePtr& instance, QWidget* parent = nullptr, ModPlatform::ResourceProvider provider = ModPlatform::ResourceProvider::MODRINTH); ~ExportPackDialog(); @@ -41,7 +42,7 @@ class ExportPackDialog : public QDialog { void validate(); private: - const InstancePtr instance; + const MinecraftInstancePtr instance; Ui::ExportPackDialog* ui; FileIgnoreProxy* proxy; FastFileIconProvider icons; From b66d6b2812acbea33359a0deb8d68ef12aaf4084 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sat, 26 Oct 2024 13:24:03 +0100 Subject: [PATCH 290/616] Unhardcode PREFIXES Signed-off-by: TheKodeToad --- .../modplatform/flame/FlamePackExportTask.cpp | 40 +++++++++---------- .../modplatform/flame/FlamePackExportTask.h | 13 +++--- .../modrinth/ModrinthPackExportTask.cpp | 11 +++-- .../modrinth/ModrinthPackExportTask.h | 1 - 4 files changed, 32 insertions(+), 33 deletions(-) diff --git a/launcher/modplatform/flame/FlamePackExportTask.cpp b/launcher/modplatform/flame/FlamePackExportTask.cpp index d661f1f05..61eaa826d 100644 --- a/launcher/modplatform/flame/FlamePackExportTask.cpp +++ b/launcher/modplatform/flame/FlamePackExportTask.cpp @@ -28,6 +28,7 @@ #include #include #include +#include #include "Application.h" #include "Json.h" #include "MMCZip.h" @@ -39,24 +40,23 @@ #include "tasks/Task.h" const QString FlamePackExportTask::TEMPLATE = "
  • {name}{authors}
  • \n"; -const QStringList FlamePackExportTask::FILE_EXTENSIONS({ "jar", "zip" }); +const QStringList FlamePackExportTask::FILE_EXTENSIONS({ "jar", "litemod", "zip" }); -FlamePackExportTask::FlamePackExportTask(const QString& name, - const QString& version, - const QString& author, +FlamePackExportTask::FlamePackExportTask(QString name, + QString version, + QString author, bool optionalFiles, - InstancePtr instance, - const QString& output, + MinecraftInstancePtr instance, + QString output, MMCZip::FilterFunction filter) - : name(name) - , version(version) - , author(author) + : name(std::move(name)) + , version(std::move(version)) + , author(std::move(author)) , optionalFiles(optionalFiles) - , instance(instance) - , mcInstance(dynamic_cast(instance.get())) - , gameRoot(instance->gameRoot()) - , output(output) - , filter(filter) + , instance(std::move(instance)) + , gameRoot(this->instance->gameRoot()) + , output(std::move(output)) + , filter(std::move(filter)) {} void FlamePackExportTask::executeTask() @@ -90,11 +90,7 @@ void FlamePackExportTask::collectFiles() pendingHashes.clear(); resolvedFiles.clear(); - if (mcInstance != nullptr) { - mcInstance->loaderModList()->update(); - connect(mcInstance->loaderModList().get(), &ModFolderModel::updateFinished, this, &FlamePackExportTask::collectHashes); - } else - collectHashes(); + collectHashes(); } void FlamePackExportTask::collectHashes() @@ -102,7 +98,7 @@ void FlamePackExportTask::collectHashes() setAbortable(true); setStatus(tr("Finding file hashes...")); setProgress(1, 5); - auto allMods = mcInstance->loaderModList()->allMods(); + auto allMods = instance->loaderModList()->allMods(); ConcurrentTask::Ptr hashingTask( new ConcurrentTask(this, "MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); task.reset(hashingTask); @@ -379,9 +375,9 @@ QByteArray FlamePackExportTask::generateIndex() obj["version"] = version; obj["author"] = author; obj["overrides"] = "overrides"; - if (mcInstance) { + if (instance) { QJsonObject version; - auto profile = mcInstance->getPackProfile(); + auto profile = instance->getPackProfile(); // collect all supported components const ComponentPtr minecraft = profile->getComponent("net.minecraft"); const ComponentPtr quilt = profile->getComponent("org.quiltmc.quilt-loader"); diff --git a/launcher/modplatform/flame/FlamePackExportTask.h b/launcher/modplatform/flame/FlamePackExportTask.h index b11eb17fa..83d870b09 100644 --- a/launcher/modplatform/flame/FlamePackExportTask.h +++ b/launcher/modplatform/flame/FlamePackExportTask.h @@ -28,12 +28,12 @@ class FlamePackExportTask : public Task { Q_OBJECT public: - FlamePackExportTask(const QString& name, - const QString& version, - const QString& author, + FlamePackExportTask(QString name, + QString version, + QString author, bool optionalFiles, - InstancePtr instance, - const QString& output, + MinecraftInstancePtr instance, + QString output, MMCZip::FilterFunction filter); protected: @@ -47,8 +47,7 @@ class FlamePackExportTask : public Task { // inputs const QString name, version, author; const bool optionalFiles; - const InstancePtr instance; - MinecraftInstance* mcInstance; + const MinecraftInstancePtr instance; const QDir gameRoot; const QString output; const MMCZip::FilterFunction filter; diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp index 8df6405ad..c1333963e 100644 --- a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp @@ -31,7 +31,6 @@ #include "modplatform/helpers/HashUtils.h" #include "tasks/Task.h" -const QStringList ModrinthPackExportTask::PREFIXES({ "mods/", "coremods/", "resourcepacks/", "texturepacks/", "shaderpacks/" }); const QStringList ModrinthPackExportTask::FILE_EXTENSIONS({ "jar", "litemod", "zip" }); ModrinthPackExportTask::ModrinthPackExportTask(QString name, @@ -87,16 +86,22 @@ void ModrinthPackExportTask::collectFiles() void ModrinthPackExportTask::collectHashes() { + // TODO make this just use EnsureMetadataTask + setStatus(tr("Finding file hashes...")); + QStringList prefixes; + for (const auto& model : instance->resourceLists()) { - QCoreApplication::processEvents(); // TODO: maybe don't do this? + QCoreApplication::processEvents(); QEventLoop loop; connect(model.get(), &ModFolderModel::updateFinished, &loop, &QEventLoop::quit); model->update(); loop.exec(); + prefixes.append(gameRoot.relativeFilePath(model->dir().absolutePath()) + '/'); + for (const Resource* resource : model->allResources()) { QCoreApplication::processEvents(); @@ -163,7 +168,7 @@ void ModrinthPackExportTask::collectHashes() continue; // require sensible file types - if (!std::any_of(PREFIXES.begin(), PREFIXES.end(), [&relative](const QString& prefix) { return relative.startsWith(prefix); })) + if (!std::any_of(prefixes.begin(), prefixes.end(), [&relative](const QString& prefix) { return relative.startsWith(prefix); })) continue; if (!std::any_of(FILE_EXTENSIONS.begin(), FILE_EXTENSIONS.end(), [&relative](const QString& extension) { return relative.endsWith('.' + extension) || relative.endsWith('.' + extension + ".disabled"); diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.h b/launcher/modplatform/modrinth/ModrinthPackExportTask.h index 14bc36009..d5dc08678 100644 --- a/launcher/modplatform/modrinth/ModrinthPackExportTask.h +++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.h @@ -48,7 +48,6 @@ class ModrinthPackExportTask : public Task { Metadata::ModSide side; }; - static const QStringList PREFIXES; static const QStringList FILE_EXTENSIONS; // inputs From 685d3c79ac78d7e41ab257de82dc743020189a33 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 27 Oct 2024 03:02:13 +0300 Subject: [PATCH 291/616] fix unzipping typo Signed-off-by: Trial97 --- launcher/MMCZip.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/MMCZip.cpp b/launcher/MMCZip.cpp index dcf3d566f..09dc23f0e 100644 --- a/launcher/MMCZip.cpp +++ b/launcher/MMCZip.cpp @@ -577,7 +577,7 @@ auto ExtractZipTask::extractZip() -> ZipResult auto relative_file_name = QDir::fromNativeSeparators(file_name.mid(m_subdirectory.size())); auto original_name = relative_file_name; - setStatus("Unziping: " + relative_file_name); + setStatus("Unzipping: " + relative_file_name); // Fix subdirs/files ending with a / getting transformed into absolute paths if (relative_file_name.startsWith('/')) From 44894a29b1784cfa8a04807c17d21169230ff922 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 27 Oct 2024 03:05:30 +0200 Subject: [PATCH 292/616] rename snake_case to camelCase Signed-off-by: Trial97 --- launcher/ui/pages/modplatform/ModPage.cpp | 2 +- .../ui/pages/modplatform/ResourcePackPage.cpp | 2 +- .../ui/pages/modplatform/ResourcePage.cpp | 52 +++++++++---------- launcher/ui/pages/modplatform/ResourcePage.h | 14 ++--- .../ui/pages/modplatform/ShaderPackPage.cpp | 2 +- .../modplatform/flame/FlameResourcePages.cpp | 2 +- .../modrinth/ModrinthResourcePages.cpp | 2 +- 7 files changed, 38 insertions(+), 38 deletions(-) diff --git a/launcher/ui/pages/modplatform/ModPage.cpp b/launcher/ui/pages/modplatform/ModPage.cpp index c9817cdf7..f0cc2df54 100644 --- a/launcher/ui/pages/modplatform/ModPage.cpp +++ b/launcher/ui/pages/modplatform/ModPage.cpp @@ -99,7 +99,7 @@ void ModPage::triggerSearch() updateSelectionButton(); static_cast(m_model)->searchWithTerm(getSearchTerm(), m_ui->sortByBox->currentData().toUInt(), changed); - m_fetch_progress.watch(m_model->activeSearchJob().get()); + m_fetchProgress.watch(m_model->activeSearchJob().get()); } QMap ModPage::urlHandlers() const diff --git a/launcher/ui/pages/modplatform/ResourcePackPage.cpp b/launcher/ui/pages/modplatform/ResourcePackPage.cpp index 849ea1111..99039476e 100644 --- a/launcher/ui/pages/modplatform/ResourcePackPage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePackPage.cpp @@ -30,7 +30,7 @@ void ResourcePackResourcePage::triggerSearch() updateSelectionButton(); static_cast(m_model)->searchWithTerm(getSearchTerm(), m_ui->sortByBox->currentData().toUInt()); - m_fetch_progress.watch(m_model->activeSearchJob().get()); + m_fetchProgress.watch(m_model->activeSearchJob().get()); } QMap ResourcePackResourcePage::urlHandlers() const diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index 6d5966056..d1d27c1e6 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -55,7 +55,7 @@ namespace ResourceDownload { ResourcePage::ResourcePage(ResourceDownloadDialog* parent, BaseInstance& base_instance) - : QWidget(parent), m_base_instance(base_instance), m_ui(new Ui::ResourcePage), m_parent_dialog(parent), m_fetch_progress(this, false) + : QWidget(parent), m_baseInstance(base_instance), m_ui(new Ui::ResourcePage), m_parentDialog(parent), m_fetchProgress(this, false) { m_ui->setupUi(this); @@ -64,18 +64,18 @@ ResourcePage::ResourcePage(ResourceDownloadDialog* parent, BaseInstance& base_in m_ui->versionSelectionBox->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); m_ui->versionSelectionBox->view()->parentWidget()->setMaximumHeight(300); - m_search_timer.setTimerType(Qt::TimerType::CoarseTimer); - m_search_timer.setSingleShot(true); + m_searchTimer.setTimerType(Qt::TimerType::CoarseTimer); + m_searchTimer.setSingleShot(true); - connect(&m_search_timer, &QTimer::timeout, this, &ResourcePage::triggerSearch); + connect(&m_searchTimer, &QTimer::timeout, this, &ResourcePage::triggerSearch); // hide progress bar to prevent weird artifact - m_fetch_progress.hide(); - m_fetch_progress.hideIfInactive(true); - m_fetch_progress.setFixedHeight(24); - m_fetch_progress.progressFormat(""); + m_fetchProgress.hide(); + m_fetchProgress.hideIfInactive(true); + m_fetchProgress.setFixedHeight(24); + m_fetchProgress.progressFormat(""); - m_ui->verticalLayout->insertWidget(1, &m_fetch_progress); + m_ui->verticalLayout->insertWidget(1, &m_fetchProgress); m_ui->packView->setItemDelegate(new ProjectItemDelegate(this)); m_ui->packView->installEventFilter(this); @@ -121,10 +121,10 @@ auto ResourcePage::eventFilter(QObject* watched, QEvent* event) -> bool keyEvent->accept(); return true; } else { - if (m_search_timer.isActive()) - m_search_timer.stop(); + if (m_searchTimer.isActive()) + m_searchTimer.stop(); - m_search_timer.start(350); + m_searchTimer.start(350); } } else if (watched == m_ui->packView) { if (keyEvent->key() == Qt::Key_Return) { @@ -248,7 +248,7 @@ void ResourcePage::updateUi() void ResourcePage::updateSelectionButton() { - if (!isOpened || m_selected_version_index < 0) { + if (!isOpened || m_selectedVersionIndex < 0) { m_ui->resourceSelectionButton->setEnabled(false); return; } @@ -258,7 +258,7 @@ void ResourcePage::updateSelectionButton() if (current_pack->versionsLoaded && current_pack->versions.empty()) { m_ui->resourceSelectionButton->setEnabled(false); qWarning() << tr("No version available for the selected pack"); - } else if (!current_pack->isVersionSelected(m_selected_version_index)) + } else if (!current_pack->isVersionSelected(m_selectedVersionIndex)) m_ui->resourceSelectionButton->setText(tr("Select %1 for download").arg(resourceString())); else m_ui->resourceSelectionButton->setText(tr("Deselect %1 for download").arg(resourceString())); @@ -327,18 +327,18 @@ void ResourcePage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelI void ResourcePage::onVersionSelectionChanged(int) { - m_selected_version_index = m_ui->versionSelectionBox->currentData().toInt(); + m_selectedVersionIndex = m_ui->versionSelectionBox->currentData().toInt(); updateSelectionButton(); } void ResourcePage::addResourceToDialog(ModPlatform::IndexedPack::Ptr pack, ModPlatform::IndexedVersion& version) { - m_parent_dialog->addResource(pack, version); + m_parentDialog->addResource(pack, version); } void ResourcePage::removeResourceFromDialog(const QString& pack_name) { - m_parent_dialog->removeResource(pack_name); + m_parentDialog->removeResource(pack_name); } void ResourcePage::addResourceToPage(ModPlatform::IndexedPack::Ptr pack, @@ -355,14 +355,14 @@ void ResourcePage::removeResourceFromPage(const QString& name) void ResourcePage::onResourceSelected() { - if (m_selected_version_index < 0) + if (m_selectedVersionIndex < 0) return; auto current_pack = getCurrentPack(); - if (!current_pack || !current_pack->versionsLoaded || current_pack->versions.size() < m_selected_version_index) + if (!current_pack || !current_pack->versionsLoaded || current_pack->versions.size() < m_selectedVersionIndex) return; - auto& version = current_pack->versions[m_selected_version_index]; + auto& version = current_pack->versions[m_selectedVersionIndex]; if (version.downloadUrl.isNull()) { CustomMessageBox::selectable(this, tr("How?"), "You managed to select a resource that doesn't have a download link. Because of this missing " @@ -409,14 +409,14 @@ void ResourcePage::openUrl(const QUrl& url) } } - if (!page.isNull() && !m_do_not_jump_to_mod) { + if (!page.isNull() && !m_doNotJumpToMod) { const QString slug = match.captured(1); // ensure the user isn't opening the same mod if (auto current_pack = getCurrentPack(); current_pack && slug != current_pack->slug) { - m_parent_dialog->selectPage(page); + m_parentDialog->selectPage(page); - auto newPage = m_parent_dialog->selectedPage(); + auto newPage = m_parentDialog->selectedPage(); QLineEdit* searchEdit = newPage->m_ui->searchEdit; auto model = newPage->m_model; @@ -460,7 +460,7 @@ void ResourcePage::openProject(QVariant projectID) m_ui->resourceFilterButton->hide(); m_ui->packView->hide(); m_ui->resourceSelectionButton->hide(); - m_do_not_jump_to_mod = true; + m_doNotJumpToMod = true; auto buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); @@ -477,10 +477,10 @@ void ResourcePage::openProject(QVariant projectID) connect(okBtn, &QPushButton::clicked, this, [this] { onResourceSelected(); - m_parent_dialog->accept(); + m_parentDialog->accept(); }); - connect(cancelBtn, &QPushButton::clicked, m_parent_dialog, &ResourceDownloadDialog::reject); + connect(cancelBtn, &QPushButton::clicked, m_parentDialog, &ResourceDownloadDialog::reject); m_ui->gridLayout_4->addWidget(buttonBox, 1, 2); auto jump = [this, okBtn] { diff --git a/launcher/ui/pages/modplatform/ResourcePage.h b/launcher/ui/pages/modplatform/ResourcePage.h index b625240eb..09c512df4 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.h +++ b/launcher/ui/pages/modplatform/ResourcePage.h @@ -62,7 +62,7 @@ class ResourcePage : public QWidget, public BasePage { [[nodiscard]] bool setCurrentPack(ModPlatform::IndexedPack::Ptr); [[nodiscard]] auto getCurrentPack() const -> ModPlatform::IndexedPack::Ptr; - [[nodiscard]] auto getDialog() const -> const ResourceDownloadDialog* { return m_parent_dialog; } + [[nodiscard]] auto getDialog() const -> const ResourceDownloadDialog* { return m_parentDialog; } [[nodiscard]] auto getModel() const -> ResourceModel* { return m_model; } protected: @@ -99,22 +99,22 @@ class ResourcePage : public QWidget, public BasePage { virtual void openUrl(const QUrl&); public: - BaseInstance& m_base_instance; + BaseInstance& m_baseInstance; protected: Ui::ResourcePage* m_ui; - ResourceDownloadDialog* m_parent_dialog = nullptr; + ResourceDownloadDialog* m_parentDialog = nullptr; ResourceModel* m_model = nullptr; - int m_selected_version_index = -1; + int m_selectedVersionIndex = -1; - ProgressWidget m_fetch_progress; + ProgressWidget m_fetchProgress; // Used to do instant searching with a delay to cache quick changes - QTimer m_search_timer; + QTimer m_searchTimer; - bool m_do_not_jump_to_mod = false; + bool m_doNotJumpToMod = false; }; } // namespace ResourceDownload diff --git a/launcher/ui/pages/modplatform/ShaderPackPage.cpp b/launcher/ui/pages/modplatform/ShaderPackPage.cpp index ebd8d4ea2..cedf985fb 100644 --- a/launcher/ui/pages/modplatform/ShaderPackPage.cpp +++ b/launcher/ui/pages/modplatform/ShaderPackPage.cpp @@ -31,7 +31,7 @@ void ShaderPackResourcePage::triggerSearch() updateSelectionButton(); static_cast(m_model)->searchWithTerm(getSearchTerm(), m_ui->sortByBox->currentData().toUInt()); - m_fetch_progress.watch(m_model->activeSearchJob().get()); + m_fetchProgress.watch(m_model->activeSearchJob().get()); } QMap ShaderPackResourcePage::urlHandlers() const diff --git a/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp b/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp index ce8c03fa1..4e01f3a65 100644 --- a/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp +++ b/launcher/ui/pages/modplatform/flame/FlameResourcePages.cpp @@ -209,7 +209,7 @@ auto FlameShaderPackPage::shouldDisplay() const -> bool unique_qobject_ptr FlameModPage::createFilterWidget() { - return ModFilterWidget::create(&static_cast(m_base_instance), false, this); + return ModFilterWidget::create(&static_cast(m_baseInstance), false, this); } void FlameModPage::prepareProviderCategories() diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp index 85dcde471..4ee620677 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthResourcePages.cpp @@ -144,7 +144,7 @@ auto ModrinthShaderPackPage::shouldDisplay() const -> bool unique_qobject_ptr ModrinthModPage::createFilterWidget() { - return ModFilterWidget::create(&static_cast(m_base_instance), true, this); + return ModFilterWidget::create(&static_cast(m_baseInstance), true, this); } void ModrinthModPage::prepareProviderCategories() From b593ff09e9c4b5fa30ca082eea4cd69f12a286e5 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 27 Oct 2024 03:05:56 +0200 Subject: [PATCH 293/616] fix #3001 Signed-off-by: Trial97 --- launcher/ui/pages/modplatform/ResourcePage.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index d1d27c1e6..fe566cd7a 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -483,11 +483,13 @@ void ResourcePage::openProject(QVariant projectID) connect(cancelBtn, &QPushButton::clicked, m_parentDialog, &ResourceDownloadDialog::reject); m_ui->gridLayout_4->addWidget(buttonBox, 1, 2); - auto jump = [this, okBtn] { + connect(m_ui->versionSelectionBox, QOverload::of(&QComboBox::currentIndexChanged), this, + [this, okBtn] { okBtn->setEnabled(m_ui->versionSelectionBox->currentData().toInt() >= 0); }); + + auto jump = [this] { for (int row = 0; row < m_model->rowCount({}); row++) { const QModelIndex index = m_model->index(row); m_ui->packView->setCurrentIndex(index); - okBtn->setEnabled(true); return; } m_ui->packDescription->setText(tr("The resource was not found")); From b1c8ab9350a51822fae1d53d3e0c832e66deb159 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 27 Oct 2024 10:56:14 +0200 Subject: [PATCH 294/616] add installed text to version select Signed-off-by: Trial97 --- launcher/ui/pages/modplatform/ResourcePage.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index fe566cd7a..48f658abd 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -283,11 +283,15 @@ void ResourcePage::updateVersionList() if (!m_model->checkVersionFilters(version)) continue; - auto release_type = current_pack->versions[i].version_type.isValid() - ? QString(" [%1]").arg(current_pack->versions[i].version_type.toString()) - : ""; + auto versionText = version.version; + if (version.version_type.isValid()) { + versionText += QString(" [%1]").arg(version.version_type.toString()); + } + if (version.fileId == installedVersion) { + versionText += tr(" [installed]", "Mod version select"); + } - m_ui->versionSelectionBox->addItem(QString("%1%2").arg(version.version, release_type), QVariant(i)); + m_ui->versionSelectionBox->addItem(versionText, QVariant(i)); } } if (m_ui->versionSelectionBox->count() == 0) { From 935b2e8fb20741b14472a745a5720ef7da9a86ec Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 27 Oct 2024 11:56:48 +0200 Subject: [PATCH 295/616] add open source filter Signed-off-by: Trial97 --- launcher/modplatform/ResourceAPI.h | 1 + launcher/modplatform/modrinth/ModrinthAPI.h | 2 ++ launcher/ui/pages/modplatform/ModModel.cpp | 4 +++- launcher/ui/pages/modplatform/flame/FlameModel.cpp | 2 +- .../pages/modplatform/modrinth/ModrinthModel.cpp | 2 +- launcher/ui/widgets/ModFilterWidget.cpp | 14 +++++++++++++- launcher/ui/widgets/ModFilterWidget.h | 4 +++- launcher/ui/widgets/ModFilterWidget.ui | 7 +++++++ 8 files changed, 31 insertions(+), 5 deletions(-) diff --git a/launcher/modplatform/ResourceAPI.h b/launcher/modplatform/ResourceAPI.h index b7364d9ab..502d1c301 100644 --- a/launcher/modplatform/ResourceAPI.h +++ b/launcher/modplatform/ResourceAPI.h @@ -76,6 +76,7 @@ class ResourceAPI { std::optional > versions; std::optional side; std::optional categoryIds; + bool openSource; }; struct SearchCallbacks { std::function on_succeed; diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h index 070f59dad..3a5c21ed1 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.h +++ b/launcher/modplatform/modrinth/ModrinthAPI.h @@ -116,6 +116,8 @@ class ModrinthAPI : public NetworkResourceAPI { } if (args.categoryIds.has_value() && !args.categoryIds->empty()) facets_list.append(QString("[%1]").arg(getCategoriesFilters(args.categoryIds.value()))); + if (args.openSource) + facets_list.append("[\"open_source:true\"]"); facets_list.append(QString("[\"project_type:%1\"]").arg(resourceTypeParameter(args.type))); diff --git a/launcher/ui/pages/modplatform/ModModel.cpp b/launcher/ui/pages/modplatform/ModModel.cpp index 1f0329321..cfc262b62 100644 --- a/launcher/ui/pages/modplatform/ModModel.cpp +++ b/launcher/ui/pages/modplatform/ModModel.cpp @@ -39,7 +39,9 @@ ResourceAPI::SearchArgs ModModel::createSearchArguments() auto sort = getCurrentSortingMethodByIndex(); - return { ModPlatform::ResourceType::MOD, m_next_search_offset, m_search_term, sort, loaders, versions, side, categories }; + return { + ModPlatform::ResourceType::MOD, m_next_search_offset, m_search_term, sort, loaders, versions, side, categories, m_filter->openSource + }; } ResourceAPI::VersionSearchArgs ModModel::createVersionsArguments(QModelIndex& entry) diff --git a/launcher/ui/pages/modplatform/flame/FlameModel.cpp b/launcher/ui/pages/modplatform/flame/FlameModel.cpp index cfdb185ff..18a2adc49 100644 --- a/launcher/ui/pages/modplatform/flame/FlameModel.cpp +++ b/launcher/ui/pages/modplatform/flame/FlameModel.cpp @@ -189,7 +189,7 @@ void ListModel::performPaginatedSearch() auto netJob = makeShared("Flame::Search", APPLICATION->network()); auto searchUrl = FlameAPI().getSearchURL({ ModPlatform::ResourceType::MODPACK, nextSearchOffset, currentSearchTerm, sort, - m_filter->loaders, m_filter->versions, "", m_filter->categoryIds }); + m_filter->loaders, m_filter->versions, "", m_filter->categoryIds, m_filter->openSource }); netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl.value()), response)); jobPtr = netJob; diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp index 417ff4080..416c69d28 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp @@ -155,7 +155,7 @@ void ModpackListModel::performPaginatedSearch() ResourceAPI::SortingMethod sort{}; sort.name = currentSort; auto searchUrl = ModrinthAPI().getSearchURL({ ModPlatform::ResourceType::MODPACK, nextSearchOffset, currentSearchTerm, sort, - m_filter->loaders, m_filter->versions, "", m_filter->categoryIds }); + m_filter->loaders, m_filter->versions, "", m_filter->categoryIds, m_filter->openSource }); auto netJob = makeShared("Modrinth::SearchModpack", APPLICATION->network()); netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl.value()), m_allResponse)); diff --git a/launcher/ui/widgets/ModFilterWidget.cpp b/launcher/ui/widgets/ModFilterWidget.cpp index 68adcdb71..89d9bdb61 100644 --- a/launcher/ui/widgets/ModFilterWidget.cpp +++ b/launcher/ui/widgets/ModFilterWidget.cpp @@ -134,6 +134,7 @@ ModFilterWidget::ModFilterWidget(MinecraftInstance* instance, bool extended, QWi ui->versions->hide(); ui->showAllVersions->hide(); ui->environmentGroup->hide(); + ui->openSource->hide(); } ui->versions->setStyleSheet("combobox-popup: 0;"); @@ -159,6 +160,7 @@ ModFilterWidget::ModFilterWidget(MinecraftInstance* instance, bool extended, QWi } connect(ui->hideInstalled, &QCheckBox::stateChanged, this, &ModFilterWidget::onHideInstalledFilterChanged); + connect(ui->openSource, &QCheckBox::stateChanged, this, &ModFilterWidget::onOpenSourceFilterChanged); setHidden(true); loadVersionList(); @@ -208,6 +210,7 @@ void ModFilterWidget::loadVersionList() void ModFilterWidget::prepareBasicFilter() { + m_filter->openSource = false; if (m_instance) { m_filter->hideInstalled = false; m_filter->side = ""; // or "both" @@ -337,4 +340,13 @@ void ModFilterWidget::setCategories(const QList& categori } } -#include "ModFilterWidget.moc" \ No newline at end of file +void ModFilterWidget::onOpenSourceFilterChanged() +{ + auto open = ui->openSource->isChecked(); + m_filter_changed = open != m_filter->openSource; + m_filter->openSource = open; + if (m_filter_changed) + emit filterChanged(); +} + +#include "ModFilterWidget.moc" diff --git a/launcher/ui/widgets/ModFilterWidget.h b/launcher/ui/widgets/ModFilterWidget.h index 50f0e06c9..76668db92 100644 --- a/launcher/ui/widgets/ModFilterWidget.h +++ b/launcher/ui/widgets/ModFilterWidget.h @@ -64,11 +64,12 @@ class ModFilterWidget : public QTabWidget { QString side; bool hideInstalled; QStringList categoryIds; + bool openSource; bool operator==(const Filter& other) const { return hideInstalled == other.hideInstalled && side == other.side && loaders == other.loaders && versions == other.versions && - releases == other.releases && categoryIds == other.categoryIds; + releases == other.releases && categoryIds == other.categoryIds && openSource == other.openSource; } bool operator!=(const Filter& other) const { return !(*this == other); } @@ -107,6 +108,7 @@ class ModFilterWidget : public QTabWidget { void onSideFilterChanged(); void onHideInstalledFilterChanged(); void onShowAllVersionsChanged(); + void onOpenSourceFilterChanged(); private: Ui::ModFilterWidget* ui; diff --git a/launcher/ui/widgets/ModFilterWidget.ui b/launcher/ui/widgets/ModFilterWidget.ui index 236847094..604c35ef5 100644 --- a/launcher/ui/widgets/ModFilterWidget.ui +++ b/launcher/ui/widgets/ModFilterWidget.ui @@ -188,6 +188,13 @@
    + + + + Open Source only + + + From f373a5cea0e816158cdabca3423107989aed0a85 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 27 Oct 2024 11:58:34 +0200 Subject: [PATCH 296/616] change contributors name Signed-off-by: Trial97 --- launcher/ui/dialogs/AboutDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/dialogs/AboutDialog.cpp b/launcher/ui/dialogs/AboutDialog.cpp index b652ba991..84bae70d0 100644 --- a/launcher/ui/dialogs/AboutDialog.cpp +++ b/launcher/ui/dialogs/AboutDialog.cpp @@ -101,7 +101,7 @@ QString getCreditsHtml() stream << "

    " << QObject::tr("With thanks to", "About Credits") << "

    \n"; stream << QString("

    Boba %1

    \n").arg(getWebsite("https://bobaonline.neocities.org/")); - stream << QString("

    Davi Rafael %1

    \n").arg(getWebsite("https://auti.one/")); + stream << QString("

    AutiOne %1

    \n").arg(getWebsite("https://auti.one/")); stream << QString("

    Fulmine %1

    \n").arg(getWebsite("https://fulmine.xyz/")); stream << QString("

    ely %1

    \n").arg(getGitHub("elyrodso")); stream << QString("

    gon sawa %1

    \n").arg(getGitHub("gonsawa")); From 61448a61ea400eebd91f97aa07e9419cc2f35823 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 27 Oct 2024 12:06:45 +0200 Subject: [PATCH 297/616] swap search with filter button for modpacks Signed-off-by: Trial97 --- launcher/ui/pages/modplatform/flame/FlamePage.ui | 12 ++++++------ .../ui/pages/modplatform/modrinth/ModrinthPage.ui | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.ui b/launcher/ui/pages/modplatform/flame/FlamePage.ui index b028e7569..cf882ef1c 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.ui +++ b/launcher/ui/pages/modplatform/flame/FlamePage.ui @@ -32,16 +32,16 @@ - - - Search and filter... + + + Filter options - - - Filter + + + Search and filter... diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.ui b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.ui index ef44abb52..d6e983929 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.ui +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.ui @@ -14,16 +14,16 @@ - - - Search and filter... + + + Filter options - - - Filter + + + Search and filter... From 11d4d948aa1a1ba67cee59193eb98a7fdad2d909 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 27 Oct 2024 12:36:14 +0200 Subject: [PATCH 298/616] lock m_instanceExtras Signed-off-by: Trial97 --- launcher/Application.cpp | 11 ++++++++++- launcher/Application.h | 1 + 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index ea749ca4c..b64b9decb 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -48,6 +48,7 @@ #include "net/PasteUpload.h" #include "pathmatcher/MultiMatcher.h" #include "pathmatcher/SimplePrefixMatcher.h" +#include "tasks/Task.h" #include "tools/GenericProfiler.h" #include "ui/InstanceWindow.h" #include "ui/MainWindow.h" @@ -1380,6 +1381,7 @@ bool Application::launch(InstancePtr instance, bool online, bool demo, Minecraft if (m_updateRunning) { qDebug() << "Cannot launch instances while an update is running. Please try again when updates are completed."; } else if (instance->canLaunch()) { + QMutexLocker locker(&m_instanceExtrasMutex); auto& extras = m_instanceExtras[instance->id()]; auto window = extras.window; if (window) { @@ -1404,7 +1406,7 @@ bool Application::launch(InstancePtr instance, bool online, bool demo, Minecraft connect(controller.get(), &LaunchController::failed, this, &Application::controllerFailed); connect(controller.get(), &LaunchController::aborted, this, [this] { controllerFailed(tr("Aborted")); }); addRunningInstance(); - controller->start(); + QMetaObject::invokeMethod(controller.get(), &Task::start, Qt::QueuedConnection); return true; } else if (instance->isRunning()) { showInstanceWindow(instance, "console"); @@ -1422,9 +1424,11 @@ bool Application::kill(InstancePtr instance) qWarning() << "Attempted to kill instance" << instance->id() << ", which isn't running."; return false; } + QMutexLocker locker(&m_instanceExtrasMutex); auto& extras = m_instanceExtras[instance->id()]; // NOTE: copy of the shared pointer keeps it alive auto controller = extras.controller; + locker.unlock(); if (controller) { return controller->abort(); } @@ -1478,6 +1482,8 @@ void Application::controllerSucceeded() if (!controller) return; auto id = controller->id(); + + QMutexLocker locker(&m_instanceExtrasMutex); auto& extras = m_instanceExtras[id]; // on success, do... @@ -1503,6 +1509,7 @@ void Application::controllerFailed(const QString& error) if (!controller) return; auto id = controller->id(); + QMutexLocker locker(&m_instanceExtrasMutex); auto& extras = m_instanceExtras[id]; // on failure, do... nothing @@ -1560,6 +1567,7 @@ InstanceWindow* Application::showInstanceWindow(InstancePtr instance, QString pa if (!instance) return nullptr; auto id = instance->id(); + QMutexLocker locker(&m_instanceExtrasMutex); auto& extras = m_instanceExtras[id]; auto& window = extras.window; @@ -1597,6 +1605,7 @@ void Application::on_windowClose() m_openWindows--; auto instWindow = qobject_cast(QObject::sender()); if (instWindow) { + QMutexLocker locker(&m_instanceExtrasMutex); auto& extras = m_instanceExtras[instWindow->instanceId()]; extras.window = nullptr; if (extras.controller) { diff --git a/launcher/Application.h b/launcher/Application.h index 692625f4a..164ec3a4f 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -279,6 +279,7 @@ class Application : public QApplication { shared_qobject_ptr controller; }; std::map m_instanceExtras; + mutable QMutex m_instanceExtrasMutex; // main state variables size_t m_openWindows = 0; From c4cd7cf6c173b7052f31614b4641d2172defa91a Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 27 Oct 2024 13:17:58 +0200 Subject: [PATCH 299/616] change ZekeZ name Signed-off-by: Trial97 --- launcher/ui/dialogs/AboutDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/dialogs/AboutDialog.cpp b/launcher/ui/dialogs/AboutDialog.cpp index 84bae70d0..a8d60aef1 100644 --- a/launcher/ui/dialogs/AboutDialog.cpp +++ b/launcher/ui/dialogs/AboutDialog.cpp @@ -77,7 +77,7 @@ QString getCreditsHtml() stream << QString("

    d-513 %1

    \n").arg(getGitHub("d-513")); stream << QString("

    txtsd %1

    \n").arg(getWebsite("https://ihavea.quest")); stream << QString("

    timoreo %1

    \n").arg(getGitHub("timoreo22")); - stream << QString("

    Ezekiel Smith (ZekeSmith) %1

    \n").arg(getGitHub("ZekeSmith")); + stream << QString("

    ZekeZ %1

    \n").arg(getGitHub("ZekeZDev")); stream << QString("

    cozyGalvinism %1

    \n").arg(getGitHub("cozyGalvinism")); stream << QString("

    DioEgizio %1

    \n").arg(getGitHub("DioEgizio")); stream << QString("

    flowln %1

    \n").arg(getGitHub("flowln")); From 6338e2b3626e8ef6b17e8d9c3aa0a083586b3d4e Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Mon, 28 Oct 2024 00:34:41 +0200 Subject: [PATCH 300/616] Update launcher/ui/widgets/ModFilterWidget.ui Co-authored-by: TheKodeToad Signed-off-by: Alexandru Ionut Tripon --- launcher/ui/widgets/ModFilterWidget.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/widgets/ModFilterWidget.ui b/launcher/ui/widgets/ModFilterWidget.ui index 604c35ef5..c4d921e96 100644 --- a/launcher/ui/widgets/ModFilterWidget.ui +++ b/launcher/ui/widgets/ModFilterWidget.ui @@ -191,7 +191,7 @@ - Open Source only + Open source only From 6a6fe60a5beddd29de48939d5726ca5671d3d01f Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 28 Oct 2024 10:29:49 +0000 Subject: [PATCH 301/616] Revert "Use non-mod metadata in ModrinthPackExportTask" Out-of-scope Signed-off-by: TheKodeToad --- launcher/minecraft/MinecraftInstance.cpp | 14 +- launcher/minecraft/MinecraftInstance.h | 1 - .../modplatform/flame/FlamePackExportTask.cpp | 40 ++-- .../modplatform/flame/FlamePackExportTask.h | 13 +- launcher/modplatform/helpers/HashUtils.cpp | 2 +- .../modrinth/ModrinthPackExportTask.cpp | 188 +++++++----------- .../modrinth/ModrinthPackExportTask.h | 14 +- launcher/ui/MainWindow.cpp | 27 +-- launcher/ui/dialogs/ExportPackDialog.cpp | 11 +- launcher/ui/dialogs/ExportPackDialog.h | 5 +- 10 files changed, 141 insertions(+), 174 deletions(-) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 87bd1b703..2b24ec090 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -522,8 +522,7 @@ QStringList MinecraftInstance::javaArguments() if (javaVersion.isModular() && shouldApplyOnlineFixes()) // allow reflective access to java.net - required by the skin fix - args << "--add-opens" - << "java.base/java.net=ALL-UNNAMED"; + args << "--add-opens" << "java.base/java.net=ALL-UNNAMED"; return args; } @@ -797,10 +796,8 @@ QString MinecraftInstance::createLaunchScript(AuthSessionPtr session, MinecraftT QStringList MinecraftInstance::verboseDescription(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) { QStringList out; - out << "Main Class:" - << " " + getMainClass() << ""; - out << "Native path:" - << " " + getNativePath() << ""; + out << "Main Class:" << " " + getMainClass() << ""; + out << "Native path:" << " " + getNativePath() << ""; auto profile = m_components->getProfile(); @@ -1230,11 +1227,6 @@ std::shared_ptr MinecraftInstance::shaderPackList() return m_shader_pack_list; } -QList> MinecraftInstance::resourceLists() -{ - return { loaderModList(), coreModList(), nilModList(), resourcePackList(), texturePackList(), shaderPackList() }; -} - std::shared_ptr MinecraftInstance::worldList() { if (!m_world_list) { diff --git a/launcher/minecraft/MinecraftInstance.h b/launcher/minecraft/MinecraftInstance.h index 5d9bb45ef..75e97ae45 100644 --- a/launcher/minecraft/MinecraftInstance.h +++ b/launcher/minecraft/MinecraftInstance.h @@ -116,7 +116,6 @@ class MinecraftInstance : public BaseInstance { std::shared_ptr resourcePackList(); std::shared_ptr texturePackList(); std::shared_ptr shaderPackList(); - QList> resourceLists(); std::shared_ptr worldList(); std::shared_ptr gameOptionsModel(); diff --git a/launcher/modplatform/flame/FlamePackExportTask.cpp b/launcher/modplatform/flame/FlamePackExportTask.cpp index 61eaa826d..d661f1f05 100644 --- a/launcher/modplatform/flame/FlamePackExportTask.cpp +++ b/launcher/modplatform/flame/FlamePackExportTask.cpp @@ -28,7 +28,6 @@ #include #include #include -#include #include "Application.h" #include "Json.h" #include "MMCZip.h" @@ -40,23 +39,24 @@ #include "tasks/Task.h" const QString FlamePackExportTask::TEMPLATE = "
  • {name}{authors}
  • \n"; -const QStringList FlamePackExportTask::FILE_EXTENSIONS({ "jar", "litemod", "zip" }); +const QStringList FlamePackExportTask::FILE_EXTENSIONS({ "jar", "zip" }); -FlamePackExportTask::FlamePackExportTask(QString name, - QString version, - QString author, +FlamePackExportTask::FlamePackExportTask(const QString& name, + const QString& version, + const QString& author, bool optionalFiles, - MinecraftInstancePtr instance, - QString output, + InstancePtr instance, + const QString& output, MMCZip::FilterFunction filter) - : name(std::move(name)) - , version(std::move(version)) - , author(std::move(author)) + : name(name) + , version(version) + , author(author) , optionalFiles(optionalFiles) - , instance(std::move(instance)) - , gameRoot(this->instance->gameRoot()) - , output(std::move(output)) - , filter(std::move(filter)) + , instance(instance) + , mcInstance(dynamic_cast(instance.get())) + , gameRoot(instance->gameRoot()) + , output(output) + , filter(filter) {} void FlamePackExportTask::executeTask() @@ -90,7 +90,11 @@ void FlamePackExportTask::collectFiles() pendingHashes.clear(); resolvedFiles.clear(); - collectHashes(); + if (mcInstance != nullptr) { + mcInstance->loaderModList()->update(); + connect(mcInstance->loaderModList().get(), &ModFolderModel::updateFinished, this, &FlamePackExportTask::collectHashes); + } else + collectHashes(); } void FlamePackExportTask::collectHashes() @@ -98,7 +102,7 @@ void FlamePackExportTask::collectHashes() setAbortable(true); setStatus(tr("Finding file hashes...")); setProgress(1, 5); - auto allMods = instance->loaderModList()->allMods(); + auto allMods = mcInstance->loaderModList()->allMods(); ConcurrentTask::Ptr hashingTask( new ConcurrentTask(this, "MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); task.reset(hashingTask); @@ -375,9 +379,9 @@ QByteArray FlamePackExportTask::generateIndex() obj["version"] = version; obj["author"] = author; obj["overrides"] = "overrides"; - if (instance) { + if (mcInstance) { QJsonObject version; - auto profile = instance->getPackProfile(); + auto profile = mcInstance->getPackProfile(); // collect all supported components const ComponentPtr minecraft = profile->getComponent("net.minecraft"); const ComponentPtr quilt = profile->getComponent("org.quiltmc.quilt-loader"); diff --git a/launcher/modplatform/flame/FlamePackExportTask.h b/launcher/modplatform/flame/FlamePackExportTask.h index 83d870b09..b11eb17fa 100644 --- a/launcher/modplatform/flame/FlamePackExportTask.h +++ b/launcher/modplatform/flame/FlamePackExportTask.h @@ -28,12 +28,12 @@ class FlamePackExportTask : public Task { Q_OBJECT public: - FlamePackExportTask(QString name, - QString version, - QString author, + FlamePackExportTask(const QString& name, + const QString& version, + const QString& author, bool optionalFiles, - MinecraftInstancePtr instance, - QString output, + InstancePtr instance, + const QString& output, MMCZip::FilterFunction filter); protected: @@ -47,7 +47,8 @@ class FlamePackExportTask : public Task { // inputs const QString name, version, author; const bool optionalFiles; - const MinecraftInstancePtr instance; + const InstancePtr instance; + MinecraftInstance* mcInstance; const QDir gameRoot; const QString output; const MMCZip::FilterFunction filter; diff --git a/launcher/modplatform/helpers/HashUtils.cpp b/launcher/modplatform/helpers/HashUtils.cpp index 1db7ca453..a3b8d904c 100644 --- a/launcher/modplatform/helpers/HashUtils.cpp +++ b/launcher/modplatform/helpers/HashUtils.cpp @@ -115,7 +115,7 @@ QString hash(QIODevice* device, Algorithm type) QCryptographicHash hash(alg); if (!hash.addData(device)) - qCritical() << "Failed to read file to create hash!"; + qCritical() << "Failed to read JAR to create hash!"; Q_ASSERT(hash.result().length() == hash.hashLength(alg)); auto result = hash.result().toHex(); diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp index c1333963e..d103170af 100644 --- a/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.cpp @@ -31,23 +31,25 @@ #include "modplatform/helpers/HashUtils.h" #include "tasks/Task.h" +const QStringList ModrinthPackExportTask::PREFIXES({ "mods/", "coremods/", "resourcepacks/", "texturepacks/", "shaderpacks/" }); const QStringList ModrinthPackExportTask::FILE_EXTENSIONS({ "jar", "litemod", "zip" }); -ModrinthPackExportTask::ModrinthPackExportTask(QString name, - QString version, - QString summary, +ModrinthPackExportTask::ModrinthPackExportTask(const QString& name, + const QString& version, + const QString& summary, bool optionalFiles, - MinecraftInstancePtr instance, - QString output, + InstancePtr instance, + const QString& output, MMCZip::FilterFunction filter) - : name(std::move(name)) - , version(std::move(version)) - , summary(std::move(summary)) + : name(name) + , version(version) + , summary(summary) , optionalFiles(optionalFiles) - , instance(std::move(instance)) - , gameRoot(this->instance->gameRoot()) - , output(std::move(output)) - , filter(std::move(filter)) + , instance(instance) + , mcInstance(dynamic_cast(instance.get())) + , gameRoot(instance->gameRoot()) + , output(output) + , filter(filter) {} void ModrinthPackExportTask::executeTask() @@ -81,102 +83,64 @@ void ModrinthPackExportTask::collectFiles() pendingHashes.clear(); resolvedFiles.clear(); - collectHashes(); + if (mcInstance) { + mcInstance->loaderModList()->update(); + connect(mcInstance->loaderModList().get(), &ModFolderModel::updateFinished, this, &ModrinthPackExportTask::collectHashes); + } else + collectHashes(); } void ModrinthPackExportTask::collectHashes() { - // TODO make this just use EnsureMetadataTask - setStatus(tr("Finding file hashes...")); - - QStringList prefixes; - - for (const auto& model : instance->resourceLists()) { - QCoreApplication::processEvents(); - - QEventLoop loop; - connect(model.get(), &ModFolderModel::updateFinished, &loop, &QEventLoop::quit); - model->update(); - loop.exec(); - - prefixes.append(gameRoot.relativeFilePath(model->dir().absolutePath()) + '/'); - - for (const Resource* resource : model->allResources()) { - QCoreApplication::processEvents(); - - if (resource->metadata() == nullptr) - continue; - - const QUrl& url = resource->metadata()->url; - - if (url.isEmpty() || !BuildConfig.MODRINTH_MRPACK_HOSTS.contains(url.host())) - continue; - - const QFileInfo& fileInfo = resource->fileinfo(); - const QString relativePath = gameRoot.relativeFilePath(fileInfo.absoluteFilePath()); - - if (filter(relativePath)) - continue; - - qDebug() << "Resolving" << relativePath << "from index"; - - QString sha1; - QString sha512; - qint64 size; - - if (resource->metadata()->hash_format == "sha1") - sha1 = resource->metadata()->hash; - else if (resource->metadata()->hash_format == "sha512") - sha512 = resource->metadata()->hash; - - { - QFile file(fileInfo.absoluteFilePath()); - - if (!file.open(QFile::ReadOnly)) { - qWarning() << "Could not open" << relativePath << "for hashing"; - continue; - } - - const QByteArray data = file.readAll(); - - if (file.error() != QFileDevice::NoError) { - qWarning() << "Could not read" << relativePath; - continue; - } - - if (sha1.isEmpty()) - sha1 = Hashing::hash(data, Hashing::Algorithm::Sha1); - - if (sha512.isEmpty()) - sha512 = Hashing::hash(data, Hashing::Algorithm::Sha512); - - size = file.size(); - } - - ResolvedFile resolvedFile{ sha1, sha512, url.toEncoded(), size, resource->metadata()->side }; - resolvedFiles[relativePath] = resolvedFile; - } - } - for (const QFileInfo& file : files) { QCoreApplication::processEvents(); const QString relative = gameRoot.relativeFilePath(file.absoluteFilePath()); - - if (resolvedFiles.contains(relative)) - continue; - // require sensible file types - if (!std::any_of(prefixes.begin(), prefixes.end(), [&relative](const QString& prefix) { return relative.startsWith(prefix); })) + if (!std::any_of(PREFIXES.begin(), PREFIXES.end(), [&relative](const QString& prefix) { return relative.startsWith(prefix); })) continue; if (!std::any_of(FILE_EXTENSIONS.begin(), FILE_EXTENSIONS.end(), [&relative](const QString& extension) { return relative.endsWith('.' + extension) || relative.endsWith('.' + extension + ".disabled"); })) continue; + QFile openFile(file.absoluteFilePath()); + if (!openFile.open(QFile::ReadOnly)) { + qWarning() << "Could not open" << file << "for hashing"; + continue; + } + + const QByteArray data = openFile.readAll(); + if (openFile.error() != QFileDevice::NoError) { + qWarning() << "Could not read" << file; + continue; + } + auto sha512 = Hashing::hash(data, Hashing::Algorithm::Sha512); + + auto allMods = mcInstance->loaderModList()->allMods(); + if (auto modIter = std::find_if(allMods.begin(), allMods.end(), [&file](Mod* mod) { return mod->fileinfo() == file; }); + modIter != allMods.end()) { + const Mod* mod = *modIter; + if (mod->metadata() != nullptr) { + const QUrl& url = mod->metadata()->url; + // ensure the url is permitted on modrinth.com + if (!url.isEmpty() && BuildConfig.MODRINTH_MRPACK_HOSTS.contains(url.host())) { + qDebug() << "Resolving" << relative << "from index"; + + auto sha1 = Hashing::hash(data, Hashing::Algorithm::Sha1); + + ResolvedFile resolvedFile{ sha1, sha512, url.toEncoded(), openFile.size(), mod->metadata()->side }; + resolvedFiles[relative] = resolvedFile; + + // nice! we've managed to resolve based on local metadata! + // no need to enqueue it + continue; + } + } + } + qDebug() << "Enqueueing" << relative << "for Modrinth query"; - auto sha512 = Hashing::hash(file.absoluteFilePath(), Hashing::Algorithm::Sha512); pendingHashes[relative] = sha512; } @@ -277,28 +241,30 @@ QByteArray ModrinthPackExportTask::generateIndex() if (!summary.isEmpty()) out["summary"] = summary; - auto profile = instance->getPackProfile(); - // collect all supported components - const ComponentPtr minecraft = profile->getComponent("net.minecraft"); - const ComponentPtr quilt = profile->getComponent("org.quiltmc.quilt-loader"); - const ComponentPtr fabric = profile->getComponent("net.fabricmc.fabric-loader"); - const ComponentPtr forge = profile->getComponent("net.minecraftforge"); - const ComponentPtr neoForge = profile->getComponent("net.neoforged"); + if (mcInstance) { + auto profile = mcInstance->getPackProfile(); + // collect all supported components + const ComponentPtr minecraft = profile->getComponent("net.minecraft"); + const ComponentPtr quilt = profile->getComponent("org.quiltmc.quilt-loader"); + const ComponentPtr fabric = profile->getComponent("net.fabricmc.fabric-loader"); + const ComponentPtr forge = profile->getComponent("net.minecraftforge"); + const ComponentPtr neoForge = profile->getComponent("net.neoforged"); - // convert all available components to mrpack dependencies - QJsonObject dependencies; - if (minecraft != nullptr) - dependencies["minecraft"] = minecraft->m_version; - if (quilt != nullptr) - dependencies["quilt-loader"] = quilt->m_version; - if (fabric != nullptr) - dependencies["fabric-loader"] = fabric->m_version; - if (forge != nullptr) - dependencies["forge"] = forge->m_version; - if (neoForge != nullptr) - dependencies["neoforge"] = neoForge->m_version; + // convert all available components to mrpack dependencies + QJsonObject dependencies; + if (minecraft != nullptr) + dependencies["minecraft"] = minecraft->m_version; + if (quilt != nullptr) + dependencies["quilt-loader"] = quilt->m_version; + if (fabric != nullptr) + dependencies["fabric-loader"] = fabric->m_version; + if (forge != nullptr) + dependencies["forge"] = forge->m_version; + if (neoForge != nullptr) + dependencies["neoforge"] = neoForge->m_version; - out["dependencies"] = dependencies; + out["dependencies"] = dependencies; + } QJsonArray filesOut; for (auto iterator = resolvedFiles.constBegin(); iterator != resolvedFiles.constEnd(); iterator++) { diff --git a/launcher/modplatform/modrinth/ModrinthPackExportTask.h b/launcher/modplatform/modrinth/ModrinthPackExportTask.h index d5dc08678..ee740a456 100644 --- a/launcher/modplatform/modrinth/ModrinthPackExportTask.h +++ b/launcher/modplatform/modrinth/ModrinthPackExportTask.h @@ -29,12 +29,12 @@ class ModrinthPackExportTask : public Task { Q_OBJECT public: - ModrinthPackExportTask(QString name, - QString version, - QString summary, + ModrinthPackExportTask(const QString& name, + const QString& version, + const QString& summary, bool optionalFiles, - MinecraftInstancePtr instance, - QString output, + InstancePtr instance, + const QString& output, MMCZip::FilterFunction filter); protected: @@ -48,12 +48,14 @@ class ModrinthPackExportTask : public Task { Metadata::ModSide side; }; + static const QStringList PREFIXES; static const QStringList FILE_EXTENSIONS; // inputs const QString name, version, summary; const bool optionalFiles; - const MinecraftInstancePtr instance; + const InstancePtr instance; + MinecraftInstance* mcInstance; const QDir gameRoot; const QString output; const MMCZip::FilterFunction filter; diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 6134d9d31..96f1348d2 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -1403,26 +1403,27 @@ void MainWindow::on_actionExportInstanceZip_triggered() void MainWindow::on_actionExportInstanceMrPack_triggered() { - auto instance = std::dynamic_pointer_cast(m_selectedInstance); - if (instance) { - ExportPackDialog dlg(std::move(instance), this); + if (m_selectedInstance) { + ExportPackDialog dlg(m_selectedInstance, this); dlg.exec(); } } void MainWindow::on_actionExportInstanceFlamePack_triggered() { - auto instance = std::dynamic_pointer_cast(m_selectedInstance); - if (instance) { - if (auto cmp = instance->getPackProfile()->getComponent("net.minecraft"); - cmp && cmp->getVersionFile() && cmp->getVersionFile()->type == "snapshot") { - QMessageBox msgBox(this); - msgBox.setText("Snapshots are currently not supported by CurseForge modpacks."); - msgBox.exec(); - return; + if (m_selectedInstance) { + auto instance = dynamic_cast(m_selectedInstance.get()); + if (instance) { + if (auto cmp = instance->getPackProfile()->getComponent("net.minecraft"); + cmp && cmp->getVersionFile() && cmp->getVersionFile()->type == "snapshot") { + QMessageBox msgBox(this); + msgBox.setText("Snapshots are currently not supported by CurseForge modpacks."); + msgBox.exec(); + return; + } + ExportPackDialog dlg(m_selectedInstance, this, ModPlatform::ResourceProvider::FLAME); + dlg.exec(); } - ExportPackDialog dlg(std::move(instance), this, ModPlatform::ResourceProvider::FLAME); - dlg.exec(); } } diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index c01b83f5c..0278c6cb0 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -34,7 +34,7 @@ #include "MMCZip.h" #include "modplatform/modrinth/ModrinthPackExportTask.h" -ExportPackDialog::ExportPackDialog(const MinecraftInstancePtr& instance, QWidget* parent, ModPlatform::ResourceProvider provider) +ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPlatform::ResourceProvider provider) : QDialog(parent), instance(instance), ui(new Ui::ExportPackDialog), m_provider(provider) { Q_ASSERT(m_provider == ModPlatform::ResourceProvider::MODRINTH || m_provider == ModPlatform::ResourceProvider::FLAME); @@ -86,9 +86,12 @@ ExportPackDialog::ExportPackDialog(const MinecraftInstancePtr& instance, QWidget proxy->blockedPaths().insert(file); } - for (auto& resourceModel : instance->resourceLists()) - if (resourceModel->indexDir().exists()) - proxy->ignoreFilesWithPath().insert(root.relativeFilePath(resourceModel->indexDir().absolutePath())); + MinecraftInstance* mcInstance = dynamic_cast(instance.get()); + if (mcInstance) { + const QDir index = mcInstance->loaderModList()->indexDir(); + if (index.exists()) + proxy->ignoreFilesWithPath().insert(root.relativeFilePath(index.absolutePath())); + } ui->files->setModel(proxy); ui->files->setRootIndex(proxy->mapFromSource(model->index(instance->gameRoot()))); diff --git a/launcher/ui/dialogs/ExportPackDialog.h b/launcher/ui/dialogs/ExportPackDialog.h index ab20f44bd..830c24d25 100644 --- a/launcher/ui/dialogs/ExportPackDialog.h +++ b/launcher/ui/dialogs/ExportPackDialog.h @@ -18,7 +18,6 @@ #pragma once -#include #include #include "BaseInstance.h" #include "FastFileIconProvider.h" @@ -33,7 +32,7 @@ class ExportPackDialog : public QDialog { Q_OBJECT public: - explicit ExportPackDialog(const MinecraftInstancePtr& instance, + explicit ExportPackDialog(InstancePtr instance, QWidget* parent = nullptr, ModPlatform::ResourceProvider provider = ModPlatform::ResourceProvider::MODRINTH); ~ExportPackDialog(); @@ -42,7 +41,7 @@ class ExportPackDialog : public QDialog { void validate(); private: - const MinecraftInstancePtr instance; + const InstancePtr instance; Ui::ExportPackDialog* ui; FileIgnoreProxy* proxy; FastFileIconProvider icons; From 9eb1ce3ad7dde0b2ca551b0b281081724e6fd58e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 28 Oct 2024 12:39:26 +0200 Subject: [PATCH 302/616] replace unzipping with unpacking Signed-off-by: Trial97 --- launcher/MMCZip.cpp | 8 ++++---- launcher/modplatform/legacy_ftb/PackInstallTask.cpp | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/launcher/MMCZip.cpp b/launcher/MMCZip.cpp index 09dc23f0e..b38aca17a 100644 --- a/launcher/MMCZip.cpp +++ b/launcher/MMCZip.cpp @@ -378,7 +378,7 @@ std::optional extractDir(QString fileCompressed, QString dir) if (fileInfo.size() == 22) { return QStringList(); } - qWarning() << "Could not open archive for unzipping:" << fileCompressed << "Error:" << zip.getZipError(); + qWarning() << "Could not open archive for unpacking:" << fileCompressed << "Error:" << zip.getZipError(); ; return std::nullopt; } @@ -395,7 +395,7 @@ std::optional extractDir(QString fileCompressed, QString subdir, QS if (fileInfo.size() == 22) { return QStringList(); } - qWarning() << "Could not open archive for unzipping:" << fileCompressed << "Error:" << zip.getZipError(); + qWarning() << "Could not open archive for unpacking:" << fileCompressed << "Error:" << zip.getZipError(); ; return std::nullopt; } @@ -412,7 +412,7 @@ bool extractFile(QString fileCompressed, QString file, QString target) if (fileInfo.size() == 22) { return true; } - qWarning() << "Could not open archive for unzipping:" << fileCompressed << "Error:" << zip.getZipError(); + qWarning() << "Could not open archive for unpacking:" << fileCompressed << "Error:" << zip.getZipError(); return false; } return extractRelFile(&zip, file, target); @@ -577,7 +577,7 @@ auto ExtractZipTask::extractZip() -> ZipResult auto relative_file_name = QDir::fromNativeSeparators(file_name.mid(m_subdirectory.size())); auto original_name = relative_file_name; - setStatus("Unzipping: " + relative_file_name); + setStatus("Unpacking: " + relative_file_name); // Fix subdirs/files ending with a / getting transformed into absolute paths if (relative_file_name.startsWith('/')) diff --git a/launcher/modplatform/legacy_ftb/PackInstallTask.cpp b/launcher/modplatform/legacy_ftb/PackInstallTask.cpp index 7157f7f2d..d6252663f 100644 --- a/launcher/modplatform/legacy_ftb/PackInstallTask.cpp +++ b/launcher/modplatform/legacy_ftb/PackInstallTask.cpp @@ -138,7 +138,7 @@ void PackInstallTask::install() if (unzipMcDir.exists()) { // ok, found minecraft dir, move contents to instance dir if (!FS::move(m_stagingPath + "/unzip/minecraft", m_stagingPath + "/minecraft")) { - emitFailed(tr("Failed to move unzipped Minecraft!")); + emitFailed(tr("Failed to move unpacked Minecraft!")); return; } } From 0cafac84ac6328fefb8992de2c6a2385b1c0053c Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 28 Oct 2024 12:54:21 +0200 Subject: [PATCH 303/616] replace currentData with itemData on QComboBox::currentIndexChanged slots Signed-off-by: Trial97 --- launcher/ui/pages/modplatform/ResourcePage.cpp | 14 +++++++------- launcher/ui/pages/modplatform/flame/FlamePage.cpp | 2 +- .../ui/pages/modplatform/modrinth/ModrinthPage.cpp | 2 +- launcher/ui/widgets/ThemeCustomizationWidget.cpp | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index fe566cd7a..481fbc1f4 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -325,9 +325,9 @@ void ResourcePage::onSelectionChanged(QModelIndex curr, [[maybe_unused]] QModelI updateUi(); } -void ResourcePage::onVersionSelectionChanged(int) +void ResourcePage::onVersionSelectionChanged(int index) { - m_selectedVersionIndex = m_ui->versionSelectionBox->currentData().toInt(); + m_selectedVersionIndex = m_ui->versionSelectionBox->itemData(index).toInt(); updateSelectionButton(); } @@ -364,10 +364,10 @@ void ResourcePage::onResourceSelected() auto& version = current_pack->versions[m_selectedVersionIndex]; if (version.downloadUrl.isNull()) { - CustomMessageBox::selectable(this, tr("How?"), - "You managed to select a resource that doesn't have a download link. Because of this missing " - "information prism will not try to download it.", - QMessageBox::Warning) + CustomMessageBox::selectable( + this, tr("Download Link Missing"), + tr("It looks like the resource you selected doesn't have a download link, so Prism won't attempt to download it."), + QMessageBox::Warning) ->show(); return; } @@ -484,7 +484,7 @@ void ResourcePage::openProject(QVariant projectID) m_ui->gridLayout_4->addWidget(buttonBox, 1, 2); connect(m_ui->versionSelectionBox, QOverload::of(&QComboBox::currentIndexChanged), this, - [this, okBtn] { okBtn->setEnabled(m_ui->versionSelectionBox->currentData().toInt() >= 0); }); + [this, okBtn](int index) { okBtn->setEnabled(m_ui->versionSelectionBox->itemData(index).toInt() >= 0); }); auto jump = [this] { for (int row = 0; row < m_model->rowCount({}); row++) { diff --git a/launcher/ui/pages/modplatform/flame/FlamePage.cpp b/launcher/ui/pages/modplatform/flame/FlamePage.cpp index 9abf4a9c6..de6b3d633 100644 --- a/launcher/ui/pages/modplatform/flame/FlamePage.cpp +++ b/launcher/ui/pages/modplatform/flame/FlamePage.cpp @@ -273,7 +273,7 @@ void FlamePage::suggestCurrent() void FlamePage::onVersionSelectionChanged(int index) { bool is_blocked = false; - ui->versionSelectionBox->currentData().toInt(&is_blocked); + ui->versionSelectionBox->itemData(index).toInt(&is_blocked); if (index == -1 || is_blocked) { m_selected_version_index = -1; diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp index 8803c6dd9..7d70abec4 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthPage.cpp @@ -375,7 +375,7 @@ void ModrinthPage::onVersionSelectionChanged(int index) selectedVersion = ""; return; } - selectedVersion = ui->versionSelectionBox->currentData().toString(); + selectedVersion = ui->versionSelectionBox->itemData(index).toString(); suggestCurrent(); } diff --git a/launcher/ui/widgets/ThemeCustomizationWidget.cpp b/launcher/ui/widgets/ThemeCustomizationWidget.cpp index 7a54bd390..097678b8d 100644 --- a/launcher/ui/widgets/ThemeCustomizationWidget.cpp +++ b/launcher/ui/widgets/ThemeCustomizationWidget.cpp @@ -87,7 +87,7 @@ void ThemeCustomizationWidget::applyIconTheme(int index) { auto settings = APPLICATION->settings(); auto originalIconTheme = settings->get("IconTheme").toString(); - auto newIconTheme = ui->iconsComboBox->currentData().toString(); + auto newIconTheme = ui->iconsComboBox->itemData(index).toString(); if (originalIconTheme != newIconTheme) { settings->set("IconTheme", newIconTheme); APPLICATION->themeManager()->applyCurrentlySelectedTheme(); @@ -100,7 +100,7 @@ void ThemeCustomizationWidget::applyWidgetTheme(int index) { auto settings = APPLICATION->settings(); auto originalAppTheme = settings->get("ApplicationTheme").toString(); - auto newAppTheme = ui->widgetStyleComboBox->currentData().toString(); + auto newAppTheme = ui->widgetStyleComboBox->itemData(index).toString(); if (originalAppTheme != newAppTheme) { settings->set("ApplicationTheme", newAppTheme); APPLICATION->themeManager()->applyCurrentlySelectedTheme(); @@ -113,7 +113,7 @@ void ThemeCustomizationWidget::applyCatTheme(int index) { auto settings = APPLICATION->settings(); auto originalCat = settings->get("BackgroundCat").toString(); - auto newCat = ui->backgroundCatComboBox->currentData().toString(); + auto newCat = ui->backgroundCatComboBox->itemData(index).toString(); if (originalCat != newCat) { settings->set("BackgroundCat", newCat); } From 1809858fc7d550713730750e238d9cfc57e0e0f5 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 28 Oct 2024 11:01:30 +0000 Subject: [PATCH 304/616] Ignore .index in ExportPackDialog Signed-off-by: TheKodeToad --- launcher/minecraft/MinecraftInstance.cpp | 5 +++++ launcher/minecraft/MinecraftInstance.h | 1 + launcher/ui/dialogs/ExportPackDialog.cpp | 6 +++--- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 2b24ec090..0888714c8 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -1227,6 +1227,11 @@ std::shared_ptr MinecraftInstance::shaderPackList() return m_shader_pack_list; } +QList> MinecraftInstance::resourceLists() +{ + return { loaderModList(), coreModList(), nilModList(), resourcePackList(), texturePackList(), shaderPackList() }; +} + std::shared_ptr MinecraftInstance::worldList() { if (!m_world_list) { diff --git a/launcher/minecraft/MinecraftInstance.h b/launcher/minecraft/MinecraftInstance.h index 75e97ae45..5d9bb45ef 100644 --- a/launcher/minecraft/MinecraftInstance.h +++ b/launcher/minecraft/MinecraftInstance.h @@ -116,6 +116,7 @@ class MinecraftInstance : public BaseInstance { std::shared_ptr resourcePackList(); std::shared_ptr texturePackList(); std::shared_ptr shaderPackList(); + QList> resourceLists(); std::shared_ptr worldList(); std::shared_ptr gameOptionsModel(); diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index 0278c6cb0..8368d7bb7 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -88,9 +88,9 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla MinecraftInstance* mcInstance = dynamic_cast(instance.get()); if (mcInstance) { - const QDir index = mcInstance->loaderModList()->indexDir(); - if (index.exists()) - proxy->ignoreFilesWithPath().insert(root.relativeFilePath(index.absolutePath())); + for (auto& resourceModel : mcInstance->resourceLists()) + if (resourceModel->indexDir().exists()) + proxy->ignoreFilesWithPath().insert(root.relativeFilePath(resourceModel->indexDir().absolutePath())); } ui->files->setModel(proxy); From f75e049675e00abd71b350e388aa5dd1ebe465bf Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 27 Oct 2024 11:37:16 +0200 Subject: [PATCH 305/616] add release_type filer for mod/modpacks Signed-off-by: Trial97 --- launcher/ui/widgets/ModFilterWidget.cpp | 22 +++++++++++++ launcher/ui/widgets/ModFilterWidget.h | 1 + launcher/ui/widgets/ModFilterWidget.ui | 41 +++++++++++++++++++++++-- 3 files changed, 62 insertions(+), 2 deletions(-) diff --git a/launcher/ui/widgets/ModFilterWidget.cpp b/launcher/ui/widgets/ModFilterWidget.cpp index 89d9bdb61..5ae49d3a5 100644 --- a/launcher/ui/widgets/ModFilterWidget.cpp +++ b/launcher/ui/widgets/ModFilterWidget.cpp @@ -162,6 +162,11 @@ ModFilterWidget::ModFilterWidget(MinecraftInstance* instance, bool extended, QWi connect(ui->hideInstalled, &QCheckBox::stateChanged, this, &ModFilterWidget::onHideInstalledFilterChanged); connect(ui->openSource, &QCheckBox::stateChanged, this, &ModFilterWidget::onOpenSourceFilterChanged); + connect(ui->releaseCb, &QCheckBox::stateChanged, this, &ModFilterWidget::onReleaseFilterChanged); + connect(ui->betaCb, &QCheckBox::stateChanged, this, &ModFilterWidget::onReleaseFilterChanged); + connect(ui->alphaCb, &QCheckBox::stateChanged, this, &ModFilterWidget::onReleaseFilterChanged); + connect(ui->unknownCb, &QCheckBox::stateChanged, this, &ModFilterWidget::onReleaseFilterChanged); + setHidden(true); loadVersionList(); prepareBasicFilter(); @@ -349,4 +354,21 @@ void ModFilterWidget::onOpenSourceFilterChanged() emit filterChanged(); } +void ModFilterWidget::onReleaseFilterChanged() +{ + std::list releases; + if (ui->releaseCb->isChecked()) + releases.push_back(ModPlatform::IndexedVersionType(ModPlatform::IndexedVersionType::VersionType::Release)); + if (ui->betaCb->isChecked()) + releases.push_back(ModPlatform::IndexedVersionType(ModPlatform::IndexedVersionType::VersionType::Beta)); + if (ui->alphaCb->isChecked()) + releases.push_back(ModPlatform::IndexedVersionType(ModPlatform::IndexedVersionType::VersionType::Alpha)); + if (ui->unknownCb->isChecked()) + releases.push_back(ModPlatform::IndexedVersionType(ModPlatform::IndexedVersionType::VersionType::Unknown)); + m_filter_changed = releases != m_filter->releases; + m_filter->releases = releases; + if (m_filter_changed) + emit filterChanged(); +} + #include "ModFilterWidget.moc" diff --git a/launcher/ui/widgets/ModFilterWidget.h b/launcher/ui/widgets/ModFilterWidget.h index 76668db92..41a2f1bbd 100644 --- a/launcher/ui/widgets/ModFilterWidget.h +++ b/launcher/ui/widgets/ModFilterWidget.h @@ -109,6 +109,7 @@ class ModFilterWidget : public QTabWidget { void onHideInstalledFilterChanged(); void onShowAllVersionsChanged(); void onOpenSourceFilterChanged(); + void onReleaseFilterChanged(); private: Ui::ModFilterWidget* ui; diff --git a/launcher/ui/widgets/ModFilterWidget.ui b/launcher/ui/widgets/ModFilterWidget.ui index c4d921e96..807a0019a 100644 --- a/launcher/ui/widgets/ModFilterWidget.ui +++ b/launcher/ui/widgets/ModFilterWidget.ui @@ -63,8 +63,8 @@ 0 0 - 308 - 598 + 294 + 781
    @@ -195,6 +195,43 @@
    + + + + Release type + + + + + + Release + + + + + + + Beta + + + + + + + Alpha + + + + + + + Unknown + + + + + + From bd82737efbb99dfc488d6d073046e5fe62693a9e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 18 Sep 2024 21:01:34 +0300 Subject: [PATCH 306/616] translate standard buttons Signed-off-by: Trial97 --- launcher/ui/dialogs/BlockedModsDialog.cpp | 2 ++ launcher/ui/dialogs/CopyInstanceDialog.cpp | 3 +++ launcher/ui/dialogs/EditAccountDialog.cpp | 4 ++++ launcher/ui/dialogs/ExportInstanceDialog.cpp | 5 +++++ launcher/ui/dialogs/ExportPackDialog.cpp | 3 +++ launcher/ui/dialogs/ExportToModListDialog.cpp | 3 +++ launcher/ui/dialogs/IconPickerDialog.cpp | 3 +++ launcher/ui/dialogs/ImportResourceDialog.cpp | 3 +++ launcher/ui/dialogs/InstallLoaderDialog.cpp | 2 ++ launcher/ui/dialogs/MSALoginDialog.cpp | 2 ++ launcher/ui/dialogs/NewComponentDialog.cpp | 3 +++ launcher/ui/dialogs/NewInstanceDialog.cpp | 3 +++ launcher/ui/dialogs/OfflineLoginDialog.cpp | 3 +++ launcher/ui/dialogs/ProfileSelectDialog.cpp | 4 ++++ launcher/ui/dialogs/ProfileSetupDialog.cpp | 3 +++ launcher/ui/dialogs/ReviewMessageBox.cpp | 3 +++ launcher/ui/dialogs/ScrollMessageBox.cpp | 4 ++++ launcher/ui/dialogs/VersionSelectDialog.cpp | 3 +++ launcher/ui/dialogs/skins/SkinManageDialog.cpp | 3 +++ launcher/ui/java/InstallJavaDialog.cpp | 1 + launcher/ui/pagedialog/PageDialog.cpp | 2 ++ launcher/ui/pages/modplatform/OptionalModDialog.cpp | 3 +++ launcher/ui/pages/modplatform/ResourcePage.cpp | 1 + launcher/updater/prismupdater/UpdaterDialogs.cpp | 4 ++++ 24 files changed, 70 insertions(+) diff --git a/launcher/ui/dialogs/BlockedModsDialog.cpp b/launcher/ui/dialogs/BlockedModsDialog.cpp index 5c93053d1..a02f527de 100644 --- a/launcher/ui/dialogs/BlockedModsDialog.cpp +++ b/launcher/ui/dialogs/BlockedModsDialog.cpp @@ -51,6 +51,8 @@ BlockedModsDialog::BlockedModsDialog(QWidget* parent, const QString& title, cons ui->setupUi(this); + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); m_openMissingButton = ui->buttonBox->addButton(tr("Open Missing"), QDialogButtonBox::ActionRole); connect(m_openMissingButton, &QPushButton::clicked, this, [this]() { openAll(true); }); diff --git a/launcher/ui/dialogs/CopyInstanceDialog.cpp b/launcher/ui/dialogs/CopyInstanceDialog.cpp index 770741a61..e5c2c301b 100644 --- a/launcher/ui/dialogs/CopyInstanceDialog.cpp +++ b/launcher/ui/dialogs/CopyInstanceDialog.cpp @@ -109,6 +109,9 @@ CopyInstanceDialog::CopyInstanceDialog(InstancePtr original, QWidget* parent) auto HelpButton = ui->buttonBox->button(QDialogButtonBox::Help); connect(HelpButton, &QPushButton::clicked, this, &CopyInstanceDialog::help); + HelpButton->setText(tr("Help")); + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } CopyInstanceDialog::~CopyInstanceDialog() diff --git a/launcher/ui/dialogs/EditAccountDialog.cpp b/launcher/ui/dialogs/EditAccountDialog.cpp index 58036fd82..9d0175bbc 100644 --- a/launcher/ui/dialogs/EditAccountDialog.cpp +++ b/launcher/ui/dialogs/EditAccountDialog.cpp @@ -15,6 +15,7 @@ #include "EditAccountDialog.h" #include +#include #include #include "ui_EditAccountDialog.h" @@ -27,6 +28,9 @@ EditAccountDialog::EditAccountDialog(const QString& text, QWidget* parent, int f ui->userTextBox->setEnabled(flags & UsernameField); ui->passTextBox->setEnabled(flags & PasswordField); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } EditAccountDialog::~EditAccountDialog() diff --git a/launcher/ui/dialogs/ExportInstanceDialog.cpp b/launcher/ui/dialogs/ExportInstanceDialog.cpp index 7e00f18f4..d25cd32b6 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.cpp +++ b/launcher/ui/dialogs/ExportInstanceDialog.cpp @@ -51,6 +51,8 @@ #include #include #include +#include +#include #include #include #include @@ -84,6 +86,9 @@ ExportInstanceDialog::ExportInstanceDialog(InstancePtr instance, QWidget* parent auto headerView = ui->treeView->header(); headerView->setSectionResizeMode(QHeaderView::ResizeToContents); headerView->setSectionResizeMode(0, QHeaderView::Stretch); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } ExportInstanceDialog::~ExportInstanceDialog() diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index 0278c6cb0..ed79a741f 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -103,6 +103,9 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla QHeaderView* headerView = ui->files->header(); headerView->setSectionResizeMode(QHeaderView::ResizeToContents); headerView->setSectionResizeMode(0, QHeaderView::Stretch); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } ExportPackDialog::~ExportPackDialog() diff --git a/launcher/ui/dialogs/ExportToModListDialog.cpp b/launcher/ui/dialogs/ExportToModListDialog.cpp index 908743ab0..c2ba68f7a 100644 --- a/launcher/ui/dialogs/ExportToModListDialog.cpp +++ b/launcher/ui/dialogs/ExportToModListDialog.cpp @@ -64,6 +64,9 @@ ExportToModListDialog::ExportToModListDialog(QString name, QList mods, QWi this->ui->finalText->selectAll(); this->ui->finalText->copy(); }); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Save)->setText(tr("Save")); triggerImp(); } diff --git a/launcher/ui/dialogs/IconPickerDialog.cpp b/launcher/ui/dialogs/IconPickerDialog.cpp index a196fd587..a7b44eab0 100644 --- a/launcher/ui/dialogs/IconPickerDialog.cpp +++ b/launcher/ui/dialogs/IconPickerDialog.cpp @@ -63,6 +63,9 @@ IconPickerDialog::IconPickerDialog(QWidget* parent) : QDialog(parent), ui(new Ui auto buttonAdd = ui->buttonBox->addButton(tr("Add Icon"), QDialogButtonBox::ResetRole); buttonRemove = ui->buttonBox->addButton(tr("Remove Icon"), QDialogButtonBox::ResetRole); + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); + connect(buttonAdd, SIGNAL(clicked(bool)), SLOT(addNewIcon())); connect(buttonRemove, SIGNAL(clicked(bool)), SLOT(removeSelectedIcon())); diff --git a/launcher/ui/dialogs/ImportResourceDialog.cpp b/launcher/ui/dialogs/ImportResourceDialog.cpp index 84b692730..e3a1e9a6c 100644 --- a/launcher/ui/dialogs/ImportResourceDialog.cpp +++ b/launcher/ui/dialogs/ImportResourceDialog.cpp @@ -45,6 +45,9 @@ ImportResourceDialog::ImportResourceDialog(QString file_path, PackedResourceType ui->label->setText( tr("Choose the instance you would like to import this %1 to.").arg(ResourceUtils::getPackedTypeName(m_resource_type))); ui->label_file_path->setText(tr("File: %1").arg(m_file_path)); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } void ImportResourceDialog::activated(QModelIndex index) diff --git a/launcher/ui/dialogs/InstallLoaderDialog.cpp b/launcher/ui/dialogs/InstallLoaderDialog.cpp index 8e5463b31..7082125f2 100644 --- a/launcher/ui/dialogs/InstallLoaderDialog.cpp +++ b/launcher/ui/dialogs/InstallLoaderDialog.cpp @@ -104,6 +104,8 @@ InstallLoaderDialog::InstallLoaderDialog(std::shared_ptr profile, c buttons->setOrientation(Qt::Horizontal); buttons->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); + buttons->button(QDialogButtonBox::Ok)->setText(tr("Ok")); + buttons->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); connect(buttons, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject); buttonLayout->addWidget(buttons); diff --git a/launcher/ui/dialogs/MSALoginDialog.cpp b/launcher/ui/dialogs/MSALoginDialog.cpp index 4e38b4187..2f6c6d9b2 100644 --- a/launcher/ui/dialogs/MSALoginDialog.cpp +++ b/launcher/ui/dialogs/MSALoginDialog.cpp @@ -68,6 +68,8 @@ MSALoginDialog::MSALoginDialog(QWidget* parent) : QDialog(parent), ui(new Ui::MS } } }); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); } int MSALoginDialog::exec() diff --git a/launcher/ui/dialogs/NewComponentDialog.cpp b/launcher/ui/dialogs/NewComponentDialog.cpp index b47b85ff1..b5f8ff889 100644 --- a/launcher/ui/dialogs/NewComponentDialog.cpp +++ b/launcher/ui/dialogs/NewComponentDialog.cpp @@ -68,6 +68,9 @@ NewComponentDialog::NewComponentDialog(const QString& initialName, const QString ui->nameTextBox->setFocus(); + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); + originalPlaceholderText = ui->uidTextBox->placeholderText(); updateDialogState(); } diff --git a/launcher/ui/dialogs/NewInstanceDialog.cpp b/launcher/ui/dialogs/NewInstanceDialog.cpp index f16c50860..d9ea0aafb 100644 --- a/launcher/ui/dialogs/NewInstanceDialog.cpp +++ b/launcher/ui/dialogs/NewInstanceDialog.cpp @@ -109,16 +109,19 @@ NewInstanceDialog::NewInstanceDialog(const QString& initialGroup, auto OkButton = m_buttons->button(QDialogButtonBox::Ok); OkButton->setDefault(true); OkButton->setAutoDefault(true); + OkButton->setText(tr("OK")); connect(OkButton, &QPushButton::clicked, this, &NewInstanceDialog::accept); auto CancelButton = m_buttons->button(QDialogButtonBox::Cancel); CancelButton->setDefault(false); CancelButton->setAutoDefault(false); + CancelButton->setText(tr("Cancel")); connect(CancelButton, &QPushButton::clicked, this, &NewInstanceDialog::reject); auto HelpButton = m_buttons->button(QDialogButtonBox::Help); HelpButton->setDefault(false); HelpButton->setAutoDefault(false); + HelpButton->setText(tr("Help")); connect(HelpButton, &QPushButton::clicked, m_container, &PageContainer::help); if (!url.isEmpty()) { diff --git a/launcher/ui/dialogs/OfflineLoginDialog.cpp b/launcher/ui/dialogs/OfflineLoginDialog.cpp index b9d1c2915..d8fbc04fd 100644 --- a/launcher/ui/dialogs/OfflineLoginDialog.cpp +++ b/launcher/ui/dialogs/OfflineLoginDialog.cpp @@ -9,6 +9,9 @@ OfflineLoginDialog::OfflineLoginDialog(QWidget* parent) : QDialog(parent), ui(ne ui->progressBar->setVisible(false); ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); + connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject); } diff --git a/launcher/ui/dialogs/ProfileSelectDialog.cpp b/launcher/ui/dialogs/ProfileSelectDialog.cpp index fe03e1b6b..95bdf99a9 100644 --- a/launcher/ui/dialogs/ProfileSelectDialog.cpp +++ b/launcher/ui/dialogs/ProfileSelectDialog.cpp @@ -18,6 +18,7 @@ #include #include +#include #include "Application.h" @@ -70,6 +71,9 @@ ProfileSelectDialog::ProfileSelectDialog(const QString& message, int flags, QWid ui->listView->setCurrentIndex(ui->listView->model()->index(0, 0)); connect(ui->listView, SIGNAL(doubleClicked(QModelIndex)), SLOT(on_buttonBox_accepted())); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } ProfileSelectDialog::~ProfileSelectDialog() diff --git a/launcher/ui/dialogs/ProfileSetupDialog.cpp b/launcher/ui/dialogs/ProfileSetupDialog.cpp index 385094e23..a6512784f 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.cpp +++ b/launcher/ui/dialogs/ProfileSetupDialog.cpp @@ -70,6 +70,9 @@ ProfileSetupDialog::ProfileSetupDialog(MinecraftAccountPtr accountToSetup, QWidg connect(&checkStartTimer, &QTimer::timeout, this, &ProfileSetupDialog::startCheck); setNameStatus(NameStatus::NotSet, QString()); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } ProfileSetupDialog::~ProfileSetupDialog() diff --git a/launcher/ui/dialogs/ReviewMessageBox.cpp b/launcher/ui/dialogs/ReviewMessageBox.cpp index 66c36d400..fa79e4ed1 100644 --- a/launcher/ui/dialogs/ReviewMessageBox.cpp +++ b/launcher/ui/dialogs/ReviewMessageBox.cpp @@ -20,6 +20,9 @@ ReviewMessageBox::ReviewMessageBox(QWidget* parent, [[maybe_unused]] QString con connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &ReviewMessageBox::accept); connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &ReviewMessageBox::reject); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } ReviewMessageBox::~ReviewMessageBox() diff --git a/launcher/ui/dialogs/ScrollMessageBox.cpp b/launcher/ui/dialogs/ScrollMessageBox.cpp index c04d87842..1cfb848f4 100644 --- a/launcher/ui/dialogs/ScrollMessageBox.cpp +++ b/launcher/ui/dialogs/ScrollMessageBox.cpp @@ -1,4 +1,5 @@ #include "ScrollMessageBox.h" +#include #include "ui_ScrollMessageBox.h" ScrollMessageBox::ScrollMessageBox(QWidget* parent, const QString& title, const QString& text, const QString& body) @@ -8,6 +9,9 @@ ScrollMessageBox::ScrollMessageBox(QWidget* parent, const QString& title, const this->setWindowTitle(title); ui->label->setText(text); ui->textBrowser->setText(body); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } ScrollMessageBox::~ScrollMessageBox() diff --git a/launcher/ui/dialogs/VersionSelectDialog.cpp b/launcher/ui/dialogs/VersionSelectDialog.cpp index 876d7470e..30377288b 100644 --- a/launcher/ui/dialogs/VersionSelectDialog.cpp +++ b/launcher/ui/dialogs/VersionSelectDialog.cpp @@ -68,6 +68,9 @@ VersionSelectDialog::VersionSelectDialog(BaseVersionList* vlist, QString title, m_buttonBox->setObjectName(QStringLiteral("buttonBox")); m_buttonBox->setOrientation(Qt::Horizontal); m_buttonBox->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); + + m_buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Ok")); + m_buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); m_horizontalLayout->addWidget(m_buttonBox); m_verticalLayout->addLayout(m_horizontalLayout); diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.cpp b/launcher/ui/dialogs/skins/SkinManageDialog.cpp index 65840eb08..f112e1acf 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.cpp +++ b/launcher/ui/dialogs/skins/SkinManageDialog.cpp @@ -93,6 +93,9 @@ SkinManageDialog::SkinManageDialog(QWidget* parent, MinecraftAccountPtr acct) setupCapes(); ui->listView->setCurrentIndex(m_list.index(m_list.getSelectedAccountSkin())); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } SkinManageDialog::~SkinManageDialog() diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index 0ece3220b..d38670d05 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -212,6 +212,7 @@ InstallDialog::InstallDialog(const QString& uid, BaseInstance* instance, QWidget buttons->setOrientation(Qt::Horizontal); buttons->setStandardButtons(QDialogButtonBox::Cancel | QDialogButtonBox::Ok); buttons->button(QDialogButtonBox::Ok)->setText(tr("Download")); + buttons->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); connect(buttons, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject); buttonLayout->addWidget(buttons); diff --git a/launcher/ui/pagedialog/PageDialog.cpp b/launcher/ui/pagedialog/PageDialog.cpp index 6514217cd..d211cb4d3 100644 --- a/launcher/ui/pagedialog/PageDialog.cpp +++ b/launcher/ui/pagedialog/PageDialog.cpp @@ -39,6 +39,8 @@ PageDialog::PageDialog(BasePageProvider* pageProvider, QString defaultId, QWidge QDialogButtonBox* buttons = new QDialogButtonBox(QDialogButtonBox::Help | QDialogButtonBox::Close); buttons->button(QDialogButtonBox::Close)->setDefault(true); + buttons->button(QDialogButtonBox::Close)->setText(tr("Close")); + buttons->button(QDialogButtonBox::Help)->setText(tr("Help")); buttons->setContentsMargins(6, 0, 6, 0); m_container->addButtons(buttons); diff --git a/launcher/ui/pages/modplatform/OptionalModDialog.cpp b/launcher/ui/pages/modplatform/OptionalModDialog.cpp index fc1c8b3cb..5dc53d9dc 100644 --- a/launcher/ui/pages/modplatform/OptionalModDialog.cpp +++ b/launcher/ui/pages/modplatform/OptionalModDialog.cpp @@ -43,6 +43,9 @@ OptionalModDialog::OptionalModDialog(QWidget* parent, const QStringList& mods) : else item->setCheckState(Qt::Checked); }); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } OptionalModDialog::~OptionalModDialog() diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index dea28d6d5..817079439 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -465,6 +465,7 @@ void ResourcePage::openProject(QVariant projectID) auto cancelBtn = buttonBox->button(QDialogButtonBox::Cancel); cancelBtn->setDefault(false); cancelBtn->setAutoDefault(false); + cancelBtn->setText(tr("Cancel")); connect(okBtn, &QPushButton::clicked, this, [this] { onResourceSelected(); diff --git a/launcher/updater/prismupdater/UpdaterDialogs.cpp b/launcher/updater/prismupdater/UpdaterDialogs.cpp index 06dc161b1..eab3e6bbb 100644 --- a/launcher/updater/prismupdater/UpdaterDialogs.cpp +++ b/launcher/updater/prismupdater/UpdaterDialogs.cpp @@ -24,6 +24,7 @@ #include "ui_SelectReleaseDialog.h" +#include #include #include "Markdown.h" #include "StringUtils.h" @@ -55,6 +56,9 @@ SelectReleaseDialog::SelectReleaseDialog(const Version& current_version, const Q connect(ui->buttonBox, &QDialogButtonBox::accepted, this, &SelectReleaseDialog::accept); connect(ui->buttonBox, &QDialogButtonBox::rejected, this, &SelectReleaseDialog::reject); + + ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } SelectReleaseDialog::~SelectReleaseDialog() From 0ee5665c95c4e0461f23986f0f5f43b4bf36c0fd Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 14 Dec 2023 00:02:53 +0200 Subject: [PATCH 307/616] Revert "Removed auto reauthenticate" This reverts commit 400b518bc21b8a56131384fd4a56988d31bceb9f. Signed-off-by: Trial97 --- launcher/LaunchController.cpp | 35 +++++++++++++++++++++++++++++++---- launcher/LaunchController.h | 1 + 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index 687da1322..d49e9e8ba 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -43,6 +43,7 @@ #include "ui/InstanceWindow.h" #include "ui/MainWindow.h" #include "ui/dialogs/CustomMessageBox.h" +#include "ui/dialogs/MSALoginDialog.h" #include "ui/dialogs/ProfileSelectDialog.h" #include "ui/dialogs/ProfileSetupDialog.h" #include "ui/dialogs/ProgressDialog.h" @@ -287,10 +288,8 @@ void LaunchController::login() continue; } case AccountState::Expired: { - auto errorString = tr("The account has expired and needs to be logged into manually again."); - QMessageBox::warning(m_parentWidget, tr("Account refresh failed"), errorString, QMessageBox::StandardButton::Ok, - QMessageBox::StandardButton::Ok); - emitFailed(errorString); + if (reauthenticateCurrentAccount()) + continue; return; } case AccountState::Disabled: { @@ -314,6 +313,34 @@ void LaunchController::login() emitFailed(tr("Failed to launch.")); } +bool LaunchController::reauthenticateCurrentAccount() +{ + auto button = + QMessageBox::warning(m_parentWidget, tr("Account refresh failed"), + tr("The account has expired and needs to be reauthenticated. Do you want to reauthenticate this account?"), + QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No, QMessageBox::StandardButton::Yes); + if (button == QMessageBox::StandardButton::Yes) { + auto accounts = APPLICATION->accounts(); + bool isDefault = accounts->defaultAccount() == m_accountToUse; + accounts->removeAccount(accounts->index(accounts->findAccountByProfileId(m_accountToUse->profileId()))); + if (m_accountToUse->accountType() == AccountType::MSA) { + auto newAccount = + MSALoginDialog::newAccount(m_parentWidget, tr("Please enter your Mojang account email and password to add your account.")); + accounts->addAccount(newAccount); + if (isDefault) { + accounts->setDefaultAccount(newAccount); + } + m_accountToUse = nullptr; + decideAccount(); + return true; + } + emitFailed(tr("Account expired and re-login attempt failed")); + } else { + emitFailed(tr("The account has expired and needs to be reauthenticated")); + } + return false; +} + void LaunchController::launchInstance() { Q_ASSERT_X(m_instance != NULL, "launchInstance", "instance is NULL"); diff --git a/launcher/LaunchController.h b/launcher/LaunchController.h index 6e2a94258..08fd19cae 100644 --- a/launcher/LaunchController.h +++ b/launcher/LaunchController.h @@ -76,6 +76,7 @@ class LaunchController : public Task { void decideAccount(); bool askPlayDemo(); QString askOfflineName(QString playerName, bool demo, bool& ok); + bool reauthenticateCurrentAccount(); private slots: void readyForLaunch(); From 14ad720c5899300bfaa13d34bf2ca8e416d26b77 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Sep 2024 21:58:09 +0300 Subject: [PATCH 308/616] fix conflict Signed-off-by: Trial97 --- launcher/LaunchController.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index d49e9e8ba..e736135fa 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -324,8 +324,7 @@ bool LaunchController::reauthenticateCurrentAccount() bool isDefault = accounts->defaultAccount() == m_accountToUse; accounts->removeAccount(accounts->index(accounts->findAccountByProfileId(m_accountToUse->profileId()))); if (m_accountToUse->accountType() == AccountType::MSA) { - auto newAccount = - MSALoginDialog::newAccount(m_parentWidget, tr("Please enter your Mojang account email and password to add your account.")); + auto newAccount = MSALoginDialog::newAccount(m_parentWidget); accounts->addAccount(newAccount); if (isDefault) { accounts->setDefaultAccount(newAccount); From 08f5148a9a4e574dd3ef4e7dc1e46a05ffd9dd5e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 6 Oct 2023 09:17:03 +0300 Subject: [PATCH 309/616] Added mouse interactions for labels in ProgressDialog Signed-off-by: Trial97 --- launcher/ui/dialogs/ProfileSetupDialog.ui | 3 +++ launcher/ui/widgets/SubTaskProgressBar.ui | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/launcher/ui/dialogs/ProfileSetupDialog.ui b/launcher/ui/dialogs/ProfileSetupDialog.ui index 9dbabb4b3..947110da7 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.ui +++ b/launcher/ui/dialogs/ProfileSetupDialog.ui @@ -30,6 +30,9 @@ Choose your name carefully: true + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + nameEdit diff --git a/launcher/ui/widgets/SubTaskProgressBar.ui b/launcher/ui/widgets/SubTaskProgressBar.ui index 5431eab60..aabb68329 100644 --- a/launcher/ui/widgets/SubTaskProgressBar.ui +++ b/launcher/ui/widgets/SubTaskProgressBar.ui @@ -47,6 +47,9 @@ true + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + @@ -68,6 +71,9 @@ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse +
    From c12beb43a0f3dad6e66fd42192dbbf1f78fb6c53 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 21 Aug 2023 19:47:47 +0300 Subject: [PATCH 310/616] correctly expand env vars Signed-off-by: Trial97 --- launcher/launch/LaunchTask.cpp | 62 +++++++++++++++++---- launcher/launch/LaunchTask.h | 3 +- launcher/launch/steps/PostLaunchCommand.cpp | 12 ++-- launcher/launch/steps/PreLaunchCommand.cpp | 13 ++--- 4 files changed, 60 insertions(+), 30 deletions(-) diff --git a/launcher/launch/LaunchTask.cpp b/launcher/launch/LaunchTask.cpp index 0251b302d..976221471 100644 --- a/launcher/launch/LaunchTask.cpp +++ b/launcher/launch/LaunchTask.cpp @@ -254,20 +254,60 @@ void LaunchTask::emitFailed(QString reason) Task::emitFailed(reason); } -void LaunchTask::substituteVariables(QStringList& args) const +QString expandVariables(const QString& input, QProcessEnvironment dict) { - auto env = m_instance->createEnvironment(); + QString result = input; - for (auto key : env.keys()) { - args.replaceInStrings("$" + key, env.value(key)); + enum { base, maybeBrace, variable, brace } state = base; + int startIdx = -1; + for (int i = 0; i < result.length();) { + QChar c = result.at(i++); + switch (state) { + case base: + if (c == '$') + state = maybeBrace; + break; + case maybeBrace: + if (c == '{') { + state = brace; + startIdx = i; + } else if (c.isLetterOrNumber() || c == '_') { + state = variable; + startIdx = i - 1; + } else { + state = base; + } + break; + case brace: + if (c == '}') { + const auto res = dict.value(result.mid(startIdx, i - 1 - startIdx), ""); + if (!res.isEmpty()) { + result.replace(startIdx - 2, i - startIdx + 2, res); + i = startIdx - 2 + res.length(); + } + state = base; + } + break; + case variable: + if (!c.isLetterOrNumber() && c != '_') { + const auto res = dict.value(result.mid(startIdx, i - startIdx - 1), ""); + if (!res.isEmpty()) { + result.replace(startIdx - 1, i - startIdx, res); + i = startIdx - 1 + res.length(); + } + state = base; + } + break; + } } + if (state == variable) { + if (const auto res = dict.value(result.mid(startIdx), ""); !res.isEmpty()) + result.replace(startIdx - 1, result.length() - startIdx + 1, res); + } + return result; } -void LaunchTask::substituteVariables(QString& cmd) const +QString LaunchTask::substituteVariables(QString& cmd) const { - auto env = m_instance->createEnvironment(); - - for (auto key : env.keys()) { - cmd.replace("$" + key, env.value(key)); - } -} + return expandVariables(cmd, m_instance->createEnvironment()); +} \ No newline at end of file diff --git a/launcher/launch/LaunchTask.h b/launcher/launch/LaunchTask.h index 56065af5b..1f1b5222b 100644 --- a/launcher/launch/LaunchTask.h +++ b/launcher/launch/LaunchTask.h @@ -87,8 +87,7 @@ class LaunchTask : public Task { shared_qobject_ptr getLogModel(); public: - void substituteVariables(QStringList& args) const; - void substituteVariables(QString& cmd) const; + QString substituteVariables(QString& cmd) const; QString censorPrivateInfo(QString in); protected: /* methods */ diff --git a/launcher/launch/steps/PostLaunchCommand.cpp b/launcher/launch/steps/PostLaunchCommand.cpp index 725101224..946560c10 100644 --- a/launcher/launch/steps/PostLaunchCommand.cpp +++ b/launcher/launch/steps/PostLaunchCommand.cpp @@ -47,19 +47,15 @@ PostLaunchCommand::PostLaunchCommand(LaunchTask* parent) : LaunchStep(parent) void PostLaunchCommand::executeTask() { - // FIXME: where to put this? + auto cmd = m_parent->substituteVariables(m_command); + emit logLine(tr("Running Post-Launch command: %1").arg(cmd), MessageLevel::Launcher); #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) - auto args = QProcess::splitCommand(m_command); - m_parent->substituteVariables(args); + auto args = QProcess::splitCommand(cmd); - emit logLine(tr("Running Post-Launch command: %1").arg(args.join(' ')), MessageLevel::Launcher); const QString program = args.takeFirst(); m_process.start(program, args); #else - m_parent->substituteVariables(m_command); - - emit logLine(tr("Running Post-Launch command: %1").arg(m_command), MessageLevel::Launcher); - m_process.start(m_command); + m_process.start(cmd); #endif } diff --git a/launcher/launch/steps/PreLaunchCommand.cpp b/launcher/launch/steps/PreLaunchCommand.cpp index 6d071a66e..3505febf7 100644 --- a/launcher/launch/steps/PreLaunchCommand.cpp +++ b/launcher/launch/steps/PreLaunchCommand.cpp @@ -47,19 +47,14 @@ PreLaunchCommand::PreLaunchCommand(LaunchTask* parent) : LaunchStep(parent) void PreLaunchCommand::executeTask() { - // FIXME: where to put this? + auto cmd = m_parent->substituteVariables(m_command); + emit logLine(tr("Running Pre-Launch command: %1").arg(cmd), MessageLevel::Launcher); #if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) - auto args = QProcess::splitCommand(m_command); - m_parent->substituteVariables(args); - - emit logLine(tr("Running Pre-Launch command: %1").arg(args.join(' ')), MessageLevel::Launcher); + auto args = QProcess::splitCommand(cmd); const QString program = args.takeFirst(); m_process.start(program, args); #else - m_parent->substituteVariables(m_command); - - emit logLine(tr("Running Pre-Launch command: %1").arg(m_command), MessageLevel::Launcher); - m_process.start(m_command); + m_process.start(cmd); #endif } From 09a118e85e3646ded9d7b2704d2f95a589ca19b9 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 18 Nov 2023 11:18:50 +0200 Subject: [PATCH 311/616] expand env from wrapped cmd Signed-off-by: Trial97 --- launcher/launch/LaunchTask.cpp | 6 +++--- launcher/launch/LaunchTask.h | 2 +- launcher/minecraft/launch/LauncherPartLaunch.cpp | 1 + 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/launcher/launch/LaunchTask.cpp b/launcher/launch/LaunchTask.cpp index 976221471..4b93d2077 100644 --- a/launcher/launch/LaunchTask.cpp +++ b/launcher/launch/LaunchTask.cpp @@ -307,7 +307,7 @@ QString expandVariables(const QString& input, QProcessEnvironment dict) return result; } -QString LaunchTask::substituteVariables(QString& cmd) const +QString LaunchTask::substituteVariables(QString& cmd, bool isLaunch) const { - return expandVariables(cmd, m_instance->createEnvironment()); -} \ No newline at end of file + return expandVariables(cmd, isLaunch ? m_instance->createLaunchEnvironment() : m_instance->createEnvironment()); +} diff --git a/launcher/launch/LaunchTask.h b/launcher/launch/LaunchTask.h index 1f1b5222b..2e87ece95 100644 --- a/launcher/launch/LaunchTask.h +++ b/launcher/launch/LaunchTask.h @@ -87,7 +87,7 @@ class LaunchTask : public Task { shared_qobject_ptr getLogModel(); public: - QString substituteVariables(QString& cmd) const; + QString substituteVariables(QString& cmd, bool isLaunch = false) const; QString censorPrivateInfo(QString in); protected: /* methods */ diff --git a/launcher/minecraft/launch/LauncherPartLaunch.cpp b/launcher/minecraft/launch/LauncherPartLaunch.cpp index d9a2b9b6b..2e842632a 100644 --- a/launcher/minecraft/launch/LauncherPartLaunch.cpp +++ b/launcher/minecraft/launch/LauncherPartLaunch.cpp @@ -131,6 +131,7 @@ void LauncherPartLaunch::executeTask() QString wrapperCommandStr = instance->getWrapperCommand().trimmed(); if (!wrapperCommandStr.isEmpty()) { + wrapperCommandStr = m_parent->substituteVariables(wrapperCommandStr); auto wrapperArgs = Commandline::splitArgs(wrapperCommandStr); auto wrapperCommand = wrapperArgs.takeFirst(); auto realWrapperCommand = QStandardPaths::findExecutable(wrapperCommand); From 3c17f606edf8a4231fb2bde667db75cdc0feeea5 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 25 Nov 2023 10:55:47 +0200 Subject: [PATCH 312/616] Patched the maximized option on the newer Minecraft versions Signed-off-by: Trial97 --- .../launcher/impl/StandardLauncher.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/libraries/launcher/org/prismlauncher/launcher/impl/StandardLauncher.java b/libraries/launcher/org/prismlauncher/launcher/impl/StandardLauncher.java index dc518be64..618524a6e 100644 --- a/libraries/launcher/org/prismlauncher/launcher/impl/StandardLauncher.java +++ b/libraries/launcher/org/prismlauncher/launcher/impl/StandardLauncher.java @@ -57,6 +57,13 @@ package org.prismlauncher.launcher.impl; import org.prismlauncher.utils.Parameters; import org.prismlauncher.utils.ReflectionUtils; +import java.awt.Dimension; +import java.awt.GraphicsConfiguration; +import java.awt.GraphicsDevice; +import java.awt.GraphicsEnvironment; +import java.awt.Insets; +import java.awt.Rectangle; +import java.awt.Toolkit; import java.lang.invoke.MethodHandle; import java.util.Collections; import java.util.List; @@ -82,6 +89,18 @@ public final class StandardLauncher extends AbstractLauncher { gameArgs.add(Integer.toString(width)); gameArgs.add("--height"); gameArgs.add(Integer.toString(height)); + } else { + try { + // Dimension rct = Toolkit.getDefaultToolkit().getScreenSize(); + Rectangle rct = getDefaultDeviceBounds(); + + gameArgs.add("--width"); + gameArgs.add(Integer.toString(rct.width)); + gameArgs.add("--height"); + gameArgs.add(Integer.toString(rct.height)); + } catch (Exception e) { + // If for some reason the get fails just continue without seting the dimensions + } } if (serverAddress != null) { @@ -104,4 +123,18 @@ public final class StandardLauncher extends AbstractLauncher { MethodHandle method = ReflectionUtils.findMainMethod(mainClassName); method.invokeExact(gameArgs.toArray(new String[0])); } + + private static Rectangle getDefaultDeviceBounds() { + GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); + GraphicsConfiguration gc = gd.getDefaultConfiguration(); + + Rectangle bounds = gc.getBounds(); + Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc); + bounds.x += insets.left; + bounds.y += insets.top; + bounds.width -= (insets.left + insets.right); + bounds.height -= (insets.top + insets.bottom); + + return bounds; + } } From 1be29076ea246a637d326f9738babe54bb46b298 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 25 Nov 2023 16:01:36 +0200 Subject: [PATCH 313/616] When java disappoints try C++ Signed-off-by: Trial97 --- launcher/minecraft/MinecraftInstance.cpp | 27 ++++++++++-- .../launcher/impl/StandardLauncher.java | 44 ++----------------- 2 files changed, 28 insertions(+), 43 deletions(-) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 98ac7647f..fc0ea6789 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -91,6 +91,9 @@ #include "tools/BaseProfiler.h" #include +#include +#include +#include #ifdef Q_OS_LINUX #include "MangoHud.h" @@ -752,11 +755,29 @@ QString MinecraftInstance::createLaunchScript(AuthSessionPtr session, MinecraftT // window size, title and state, legacy { QString windowParams; - if (settings()->get("LaunchMaximized").toBool()) - windowParams = "maximized"; - else + if (settings()->get("LaunchMaximized").toBool()) { + // FIXME doesn't support maximisation + if (getLauncher() == "standard") { + auto screen = QGuiApplication::primaryScreen(); + auto screenGeometry = screen->availableSize(); + + // small hack to get the widow decorations + for (auto w : QApplication::topLevelWidgets()) { + auto mainWindow = qobject_cast(w); + if (mainWindow) { + screenGeometry = screenGeometry.shrunkBy(mainWindow->windowHandle()->frameMargins()); + break; + } + } + + windowParams = QString("%1x%2").arg(screenGeometry.width()).arg(screenGeometry.height()); + } else { + windowParams = "maximized"; + } + } else { windowParams = QString("%1x%2").arg(settings()->get("MinecraftWinWidth").toInt()).arg(settings()->get("MinecraftWinHeight").toInt()); + } launchScript += "windowTitle " + windowTitle() + "\n"; launchScript += "windowParams " + windowParams + "\n"; } diff --git a/libraries/launcher/org/prismlauncher/launcher/impl/StandardLauncher.java b/libraries/launcher/org/prismlauncher/launcher/impl/StandardLauncher.java index 618524a6e..084fbc849 100644 --- a/libraries/launcher/org/prismlauncher/launcher/impl/StandardLauncher.java +++ b/libraries/launcher/org/prismlauncher/launcher/impl/StandardLauncher.java @@ -57,13 +57,6 @@ package org.prismlauncher.launcher.impl; import org.prismlauncher.utils.Parameters; import org.prismlauncher.utils.ReflectionUtils; -import java.awt.Dimension; -import java.awt.GraphicsConfiguration; -import java.awt.GraphicsDevice; -import java.awt.GraphicsEnvironment; -import java.awt.Insets; -import java.awt.Rectangle; -import java.awt.Toolkit; import java.lang.invoke.MethodHandle; import java.util.Collections; import java.util.List; @@ -83,25 +76,10 @@ public final class StandardLauncher extends AbstractLauncher { @Override public void launch() throws Throwable { // window size, title and state - // FIXME doesn't support maximisation - if (!maximize) { - gameArgs.add("--width"); - gameArgs.add(Integer.toString(width)); - gameArgs.add("--height"); - gameArgs.add(Integer.toString(height)); - } else { - try { - // Dimension rct = Toolkit.getDefaultToolkit().getScreenSize(); - Rectangle rct = getDefaultDeviceBounds(); - - gameArgs.add("--width"); - gameArgs.add(Integer.toString(rct.width)); - gameArgs.add("--height"); - gameArgs.add(Integer.toString(rct.height)); - } catch (Exception e) { - // If for some reason the get fails just continue without seting the dimensions - } - } + gameArgs.add("--width"); + gameArgs.add(Integer.toString(width)); + gameArgs.add("--height"); + gameArgs.add(Integer.toString(height)); if (serverAddress != null) { if (quickPlayMultiplayerSupported) { @@ -123,18 +101,4 @@ public final class StandardLauncher extends AbstractLauncher { MethodHandle method = ReflectionUtils.findMainMethod(mainClassName); method.invokeExact(gameArgs.toArray(new String[0])); } - - private static Rectangle getDefaultDeviceBounds() { - GraphicsDevice gd = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice(); - GraphicsConfiguration gc = gd.getDefaultConfiguration(); - - Rectangle bounds = gc.getBounds(); - Insets insets = Toolkit.getDefaultToolkit().getScreenInsets(gc); - bounds.x += insets.left; - bounds.y += insets.top; - bounds.width -= (insets.left + insets.right); - bounds.height -= (insets.top + insets.bottom); - - return bounds; - } } From 81c5866fa9cd22f788730e1664e9b011f0cf3c55 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 25 Nov 2023 16:08:12 +0200 Subject: [PATCH 314/616] Made sure that the qt version check is in place Signed-off-by: Trial97 --- launcher/minecraft/MinecraftInstance.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index fc0ea6789..d3f7cc20e 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -765,7 +765,12 @@ QString MinecraftInstance::createLaunchScript(AuthSessionPtr session, MinecraftT for (auto w : QApplication::topLevelWidgets()) { auto mainWindow = qobject_cast(w); if (mainWindow) { - screenGeometry = screenGeometry.shrunkBy(mainWindow->windowHandle()->frameMargins()); + auto m = mainWindow->windowHandle()->frameMargins(); +#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)) + screenGeometry = screenGeometry.shrunkBy(m); +#else + screenGeometry = { screenGeometry.width() - m.left() - m.right(), screenGeometry.height() - m.top() - m.bottom() }; +#endif break; } } From 0f42f3cc5ca269b4e4002d74299e9aa9713a08c5 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 25 Nov 2023 16:48:51 +0200 Subject: [PATCH 315/616] Added warning regarding maximized option Signed-off-by: Trial97 --- launcher/BaseInstance.cpp | 5 +++++ launcher/BaseInstance.h | 2 ++ launcher/minecraft/MinecraftInstance.cpp | 4 ++-- launcher/ui/pages/global/MinecraftPage.ui | 10 ++++++++++ launcher/ui/pages/instance/InstanceSettingsPage.cpp | 1 + launcher/ui/pages/instance/InstanceSettingsPage.ui | 12 +++++++++++- 6 files changed, 31 insertions(+), 3 deletions(-) diff --git a/launcher/BaseInstance.cpp b/launcher/BaseInstance.cpp index 69cf95e3c..ccfd0b847 100644 --- a/launcher/BaseInstance.cpp +++ b/launcher/BaseInstance.cpp @@ -411,3 +411,8 @@ void BaseInstance::updateRuntimeContext() { // NOOP } + +bool BaseInstance::isLegacy() +{ + return traits().contains("legacyLaunch") || traits().contains("alphaLaunch"); +} diff --git a/launcher/BaseInstance.h b/launcher/BaseInstance.h index 2be28d1ec..9827a08b4 100644 --- a/launcher/BaseInstance.h +++ b/launcher/BaseInstance.h @@ -269,6 +269,8 @@ class BaseInstance : public QObject, public std::enable_shared_from_thisget("LaunchMaximized").toBool()) { // FIXME doesn't support maximisation - if (getLauncher() == "standard") { + if (!isLegacy()) { auto screen = QGuiApplication::primaryScreen(); auto screenGeometry = screen->availableSize(); diff --git a/launcher/ui/pages/global/MinecraftPage.ui b/launcher/ui/pages/global/MinecraftPage.ui index 7d2741250..3a28c92c7 100644 --- a/launcher/ui/pages/global/MinecraftPage.ui +++ b/launcher/ui/pages/global/MinecraftPage.ui @@ -55,6 +55,16 @@
    + + + + On newer versions the game only supports resolution. In order to simulate the maximized behaviour the current implementation approximates the maximum display size. + + + <html><head/><body><p><span style=" font-weight:600; color:#f5c211;">Warning</span><span style=" color:#f5c211;">: On the newer Minecraft versions the start maximized option is not fully supported.</span></p></body></html> + + + diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp index cf8d86cd4..1a5be050f 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ b/launcher/ui/pages/instance/InstanceSettingsPage.cpp @@ -323,6 +323,7 @@ void InstanceSettingsPage::loadSettings() // Window Size ui->windowSizeGroupBox->setChecked(m_settings->get("OverrideWindow").toBool()); ui->maximizedCheckBox->setChecked(m_settings->get("LaunchMaximized").toBool()); + ui->maximizedWarning->setVisible(m_settings->get("LaunchMaximized").toBool() && !m_instance->isLegacy()); ui->windowWidthSpinBox->setValue(m_settings->get("MinecraftWinWidth").toInt()); ui->windowHeightSpinBox->setValue(m_settings->get("MinecraftWinHeight").toInt()); diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui index 4905eae87..e5ef98b00 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.ui +++ b/launcher/ui/pages/instance/InstanceSettingsPage.ui @@ -36,7 +36,7 @@ - 0 + 1 @@ -285,6 +285,16 @@ + + + + The base game only supports resolution. In order to simulate the maximized behaviour the current implementation approximates the maximum display size.. + + + <html><head/><body><p><span style=" font-weight:600; color:#f5c211;">Warning</span><span style=" color:#f5c211;">: The maximized option may not be fully supported for the current minecraft version.</span></p></body></html> + + + From f57ca1e79e277cdfd91e3b71d13b5ec97c1870ea Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 28 Oct 2024 16:07:41 +0000 Subject: [PATCH 316/616] Add Change Version action to all pages Signed-off-by: TheKodeToad --- .../ui/dialogs/ResourceDownloadDialog.cpp | 2 +- launcher/ui/dialogs/ResourceDownloadDialog.h | 4 +- .../pages/instance/ExternalResourcesPage.cpp | 4 ++ .../pages/instance/ExternalResourcesPage.ui | 13 +++-- launcher/ui/pages/instance/ModFolderPage.cpp | 2 +- .../ui/pages/instance/ResourcePackPage.cpp | 57 +++++++++++++++++++ launcher/ui/pages/instance/ResourcePackPage.h | 1 + launcher/ui/pages/instance/ShaderPackPage.cpp | 57 +++++++++++++++++++ launcher/ui/pages/instance/ShaderPackPage.h | 1 + .../ui/pages/instance/TexturePackPage.cpp | 57 +++++++++++++++++++ launcher/ui/pages/instance/TexturePackPage.h | 1 + 11 files changed, 190 insertions(+), 9 deletions(-) diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp index 02a8454b4..f9b6716af 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp +++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp @@ -377,7 +377,7 @@ QList ShaderPackDownloadDialog::getPages() return pages; } -void ModDownloadDialog::setModMetadata(std::shared_ptr meta) +void ResourceDownloadDialog::setResourceMetadata(const std::shared_ptr& meta) { switch (meta->provider) { case ModPlatform::ResourceProvider::MODRINTH: diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.h b/launcher/ui/dialogs/ResourceDownloadDialog.h index 7a0d6e895..0c3e314bc 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.h +++ b/launcher/ui/dialogs/ResourceDownloadDialog.h @@ -69,6 +69,8 @@ class ResourceDownloadDialog : public QDialog, public BasePageProvider { const QList getTasks(); [[nodiscard]] const std::shared_ptr getBaseModel() const { return m_base_model; } + void setResourceMetadata(const std::shared_ptr& meta); + public slots: void accept() override; void reject() override; @@ -107,8 +109,6 @@ class ModDownloadDialog final : public ResourceDownloadDialog { QList getPages() override; GetModDependenciesTask::Ptr getModDependenciesTask() override; - void setModMetadata(std::shared_ptr); - private: BaseInstance* m_instance; }; diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp index 62bd6ac04..132297849 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp +++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp @@ -316,6 +316,10 @@ void ExternalResourcesPage::updateActions() const bool hasSelection = ui->treeView->selectionModel()->hasSelection(); ui->actionUpdateItem->setEnabled(!m_model->empty()); ui->actionResetItemMetadata->setEnabled(hasSelection); + + const QModelIndexList rows = ui->treeView->selectionModel()->selectedRows(); + ui->actionChangeVersion->setEnabled(rows.count() == 1 && m_model->at(m_filterModel->mapToSource(rows[0]).row()).metadata() != nullptr); + ui->actionRemoveItem->setEnabled(hasSelection); ui->actionEnableItem->setEnabled(hasSelection); ui->actionDisableItem->setEnabled(hasSelection); diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.ui b/launcher/ui/pages/instance/ExternalResourcesPage.ui index c33df2c26..b7b219717 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.ui +++ b/launcher/ui/pages/instance/ExternalResourcesPage.ui @@ -60,7 +60,7 @@ true - QAbstractItemView::DragDropMode::DropOnly + QAbstractItemView::NoDragDrop true @@ -74,7 +74,7 @@ Actions - Qt::ToolButtonStyle::ToolButtonTextOnly + Qt::ToolButtonIconOnly true @@ -177,7 +177,7 @@ Reset Update Metadata - QAction::MenuRole::NoRole + QAction::NoRole @@ -185,7 +185,7 @@ Verify Dependencies - QAction::MenuRole::NoRole + QAction::NoRole @@ -200,6 +200,9 @@ + + false + Change Version @@ -207,7 +210,7 @@ Change a resource's version. - QAction::MenuRole::NoRole + QAction::NoRole diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index 1ede31d49..40bf01f9a 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -308,7 +308,7 @@ void ModFolderPage::changeModVersion() return; ResourceDownload::ModDownloadDialog mdownload(this, m_model, m_instance); - mdownload.setModMetadata((*mods_list.begin())->metadata()); + mdownload.setResourceMetadata((*mods_list.begin())->metadata()); if (mdownload.exec()) { auto tasks = new ConcurrentTask(this, "Download Mods", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { diff --git a/launcher/ui/pages/instance/ResourcePackPage.cpp b/launcher/ui/pages/instance/ResourcePackPage.cpp index d03511ca4..97d61058e 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.cpp +++ b/launcher/ui/pages/instance/ResourcePackPage.cpp @@ -67,6 +67,10 @@ ResourcePackPage::ResourcePackPage(MinecraftInstance* instance, std::shared_ptr< connect(ui->actionResetItemMetadata, &QAction::triggered, this, &ResourcePackPage::deleteResourcePackMetadata); ui->actionUpdateItem->setMenu(updateMenu); + + ui->actionChangeVersion->setToolTip(tr("Change a mod's version.")); + connect(ui->actionChangeVersion, &QAction::triggered, this, &ResourcePackPage::changeResourcePackVersion); + ui->actionsToolbar->insertActionAfter(ui->actionUpdateItem, ui->actionChangeVersion); } void ResourcePackPage::updateFrame(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) @@ -214,3 +218,56 @@ void ResourcePackPage::deleteResourcePackMetadata() m_model->deleteMetadata(selection); } + +void ResourcePackPage::changeResourcePackVersion() +{ + if (m_instance->typeName() != "Minecraft") + return; // this is a null instance or a legacy instance + + if (APPLICATION->settings()->get("ModMetadataDisabled").toBool()) { + QMessageBox::critical(this, tr("Error"), tr("Resource pack updates are unavailable when metadata is disabled!")); + return; + } + + const QModelIndexList rows = ui->treeView->selectionModel()->selectedRows(); + + if (rows.count() != 1) + return; + + Resource &resource = m_model->at(m_filterModel->mapToSource(rows[0]).row()); + + if (resource.metadata() == nullptr) + return; + + ResourceDownload::ResourcePackDownloadDialog mdownload(this, m_model, m_instance); + mdownload.setResourceMetadata(resource.metadata()); + if (mdownload.exec()) { + auto tasks = + new ConcurrentTask(this, "Download Resource Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + connect(tasks, &Task::failed, [this, tasks](QString reason) { + CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::aborted, [this, tasks]() { + CustomMessageBox::selectable(this, tr("Aborted"), tr("Download stopped by user."), QMessageBox::Information)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::succeeded, [this, tasks]() { + QStringList warnings = tasks->warnings(); + if (warnings.count()) + CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->show(); + + tasks->deleteLater(); + }); + + for (auto& task : mdownload.getTasks()) { + tasks->addTask(task); + } + + ProgressDialog loadDialog(this); + loadDialog.setSkipButton(true, tr("Abort")); + loadDialog.execWithTask(tasks); + + m_model->update(); + } +} \ No newline at end of file diff --git a/launcher/ui/pages/instance/ResourcePackPage.h b/launcher/ui/pages/instance/ResourcePackPage.h index e95809cf8..55abe007c 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.h +++ b/launcher/ui/pages/instance/ResourcePackPage.h @@ -64,6 +64,7 @@ class ResourcePackPage : public ExternalResourcesPage { void downloadResourcePacks(); void updateResourcePacks(); void deleteResourcePackMetadata(); + void changeResourcePackVersion(); protected: std::shared_ptr m_model; diff --git a/launcher/ui/pages/instance/ShaderPackPage.cpp b/launcher/ui/pages/instance/ShaderPackPage.cpp index 768d7c710..c734f539e 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.cpp +++ b/launcher/ui/pages/instance/ShaderPackPage.cpp @@ -70,6 +70,10 @@ ShaderPackPage::ShaderPackPage(MinecraftInstance* instance, std::shared_ptractionResetItemMetadata, &QAction::triggered, this, &ShaderPackPage::deleteShaderPackMetadata); ui->actionUpdateItem->setMenu(updateMenu); + + ui->actionChangeVersion->setToolTip(tr("Change a shader pack's version.")); + connect(ui->actionChangeVersion, &QAction::triggered, this, &ShaderPackPage::changeShaderPackVersion); + ui->actionsToolbar->insertActionAfter(ui->actionUpdateItem, ui->actionChangeVersion); } void ShaderPackPage::downloadShaderPack() @@ -207,3 +211,56 @@ void ShaderPackPage::deleteShaderPackMetadata() m_model->deleteMetadata(selection); } + +void ShaderPackPage::changeShaderPackVersion() +{ + if (m_instance->typeName() != "Minecraft") + return; // this is a null instance or a legacy instance + + if (APPLICATION->settings()->get("ModMetadataDisabled").toBool()) { + QMessageBox::critical(this, tr("Error"), tr("Shader pack updates are unavailable when metadata is disabled!")); + return; + } + + const QModelIndexList rows = ui->treeView->selectionModel()->selectedRows(); + + if (rows.count() != 1) + return; + + Resource &resource = m_model->at(m_filterModel->mapToSource(rows[0]).row()); + + if (resource.metadata() == nullptr) + return; + + ResourceDownload::ShaderPackDownloadDialog mdownload(this, m_model, m_instance); + mdownload.setResourceMetadata(resource.metadata()); + if (mdownload.exec()) { + auto tasks = + new ConcurrentTask(this, "Download Shader Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + connect(tasks, &Task::failed, [this, tasks](QString reason) { + CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::aborted, [this, tasks]() { + CustomMessageBox::selectable(this, tr("Aborted"), tr("Download stopped by user."), QMessageBox::Information)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::succeeded, [this, tasks]() { + QStringList warnings = tasks->warnings(); + if (warnings.count()) + CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->show(); + + tasks->deleteLater(); + }); + + for (auto& task : mdownload.getTasks()) { + tasks->addTask(task); + } + + ProgressDialog loadDialog(this); + loadDialog.setSkipButton(true, tr("Abort")); + loadDialog.execWithTask(tasks); + + m_model->update(); + } +} diff --git a/launcher/ui/pages/instance/ShaderPackPage.h b/launcher/ui/pages/instance/ShaderPackPage.h index f35a4b79f..ebf7f1d58 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.h +++ b/launcher/ui/pages/instance/ShaderPackPage.h @@ -56,6 +56,7 @@ class ShaderPackPage : public ExternalResourcesPage { void downloadShaderPack(); void updateShaderPacks(); void deleteShaderPackMetadata(); + void changeShaderPackVersion(); private: std::shared_ptr m_model; diff --git a/launcher/ui/pages/instance/TexturePackPage.cpp b/launcher/ui/pages/instance/TexturePackPage.cpp index cdd2b0964..648cd2ec7 100644 --- a/launcher/ui/pages/instance/TexturePackPage.cpp +++ b/launcher/ui/pages/instance/TexturePackPage.cpp @@ -69,6 +69,11 @@ TexturePackPage::TexturePackPage(MinecraftInstance* instance, std::shared_ptractionResetItemMetadata, &QAction::triggered, this, &TexturePackPage::deleteTexturePackMetadata); ui->actionUpdateItem->setMenu(updateMenu); + + ui->actionChangeVersion->setToolTip(tr("Change a texture pack's version.")); + connect(ui->actionChangeVersion, &QAction::triggered, this, &TexturePackPage::changeTexturePackVersion); + ui->actionsToolbar->insertActionAfter(ui->actionUpdateItem, ui->actionChangeVersion); + } void TexturePackPage::updateFrame(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) @@ -216,3 +221,55 @@ void TexturePackPage::deleteTexturePackMetadata() m_model->deleteMetadata(selection); } + +void TexturePackPage::changeTexturePackVersion() { + if (m_instance->typeName() != "Minecraft") + return; // this is a null instance or a legacy instance + + if (APPLICATION->settings()->get("ModMetadataDisabled").toBool()) { + QMessageBox::critical(this, tr("Error"), tr("Texture pack updates are unavailable when metadata is disabled!")); + return; + } + + const QModelIndexList rows = ui->treeView->selectionModel()->selectedRows(); + + if (rows.count() != 1) + return; + + Resource &resource = m_model->at(m_filterModel->mapToSource(rows[0]).row()); + + if (resource.metadata() == nullptr) + return; + + ResourceDownload::TexturePackDownloadDialog mdownload(this, m_model, m_instance); + mdownload.setResourceMetadata(resource.metadata()); + if (mdownload.exec()) { + auto tasks = + new ConcurrentTask(this, "Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + connect(tasks, &Task::failed, [this, tasks](QString reason) { + CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::aborted, [this, tasks]() { + CustomMessageBox::selectable(this, tr("Aborted"), tr("Download stopped by user."), QMessageBox::Information)->show(); + tasks->deleteLater(); + }); + connect(tasks, &Task::succeeded, [this, tasks]() { + QStringList warnings = tasks->warnings(); + if (warnings.count()) + CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->show(); + + tasks->deleteLater(); + }); + + for (auto& task : mdownload.getTasks()) { + tasks->addTask(task); + } + + ProgressDialog loadDialog(this); + loadDialog.setSkipButton(true, tr("Abort")); + loadDialog.execWithTask(tasks); + + m_model->update(); + } +} diff --git a/launcher/ui/pages/instance/TexturePackPage.h b/launcher/ui/pages/instance/TexturePackPage.h index 4dc2c16c2..28d7ba209 100644 --- a/launcher/ui/pages/instance/TexturePackPage.h +++ b/launcher/ui/pages/instance/TexturePackPage.h @@ -59,6 +59,7 @@ class TexturePackPage : public ExternalResourcesPage { void downloadTexturePacks(); void updateTexturePacks(); void deleteTexturePackMetadata(); + void changeTexturePackVersion(); private: std::shared_ptr m_model; From 49044e23de491e09119d620c6cad02a9d0f4f8e7 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 28 Oct 2024 16:21:00 +0000 Subject: [PATCH 317/616] Fix Export List placement Signed-off-by: TheKodeToad --- launcher/ui/pages/instance/ExternalResourcesPage.cpp | 2 ++ launcher/ui/pages/instance/ExternalResourcesPage.ui | 2 +- launcher/ui/pages/instance/ModFolderPage.cpp | 6 +++--- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp index 132297849..c455045b5 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp +++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp @@ -323,6 +323,8 @@ void ExternalResourcesPage::updateActions() ui->actionRemoveItem->setEnabled(hasSelection); ui->actionEnableItem->setEnabled(hasSelection); ui->actionDisableItem->setEnabled(hasSelection); + + ui->actionExportMetadata->setEnabled(!m_model->empty()); } void ExternalResourcesPage::updateFrame(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.ui b/launcher/ui/pages/instance/ExternalResourcesPage.ui index b7b219717..22ab556b9 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.ui +++ b/launcher/ui/pages/instance/ExternalResourcesPage.ui @@ -190,7 +190,7 @@ - true + false Export List diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index 40bf01f9a..17bbb3bbc 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -107,11 +107,11 @@ ModFolderPage::ModFolderPage(BaseInstance* inst, std::shared_ptr connect(ui->actionChangeVersion, &QAction::triggered, this, &ModFolderPage::changeModVersion); ui->actionsToolbar->insertActionAfter(ui->actionUpdateItem, ui->actionChangeVersion); - ui->actionsToolbar->addSeparator(); - ui->actionExportMetadata->setToolTip(tr("Export mod's metadata to text.")); connect(ui->actionExportMetadata, &QAction::triggered, this, &ModFolderPage::exportModMetadata); - ui->actionsToolbar->addAction(ui->actionExportMetadata); + ui->actionsToolbar->insertActionAfter(ui->actionDisableItem, ui->actionExportMetadata); + + ui->actionsToolbar->insertSeparator(ui->actionExportMetadata); } bool ModFolderPage::shouldDisplay() const From 9cdda4377b0090a035e286a86fd78f126f995356 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 28 Oct 2024 19:19:06 +0200 Subject: [PATCH 318/616] remove message box Signed-off-by: Trial97 --- launcher/ui/pages/modplatform/ResourcePage.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index 481fbc1f4..049dff644 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -364,11 +364,7 @@ void ResourcePage::onResourceSelected() auto& version = current_pack->versions[m_selectedVersionIndex]; if (version.downloadUrl.isNull()) { - CustomMessageBox::selectable( - this, tr("Download Link Missing"), - tr("It looks like the resource you selected doesn't have a download link, so Prism won't attempt to download it."), - QMessageBox::Warning) - ->show(); + qCritical() << tr("It looks like the resource you selected doesn't have a download link, so Prism won't attempt to download it."); return; } if (version.is_currently_selected) From 354a0ed46e02c72fcef0ad5703fc5b31c8382917 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 28 Oct 2024 18:01:01 +0000 Subject: [PATCH 319/616] Fix column sizes Signed-off-by: TheKodeToad --- launcher/minecraft/mod/ResourceFolderModel.h | 2 +- launcher/minecraft/mod/ResourcePackFolderModel.cpp | 2 +- launcher/minecraft/mod/TexturePackFolderModel.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index a92648de9..3fd366385 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -256,7 +256,7 @@ class ResourceFolderModel : public QAbstractListModel { QList m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::DATE, SortType::PROVIDER, SortType::SIZE }; QStringList m_column_names = { "Enable", "Name", "Last Modified", "Provider", "Size" }; QStringList m_column_names_translated = { tr("Enable"), tr("Name"), tr("Last Modified"), tr("Provider"), tr("Size") }; - QList m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, + QList m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive }; QList m_columnsHideable = { false, false, true, true, true }; QList m_columnsHiddenByDefault = { false, false, false, false, true }; diff --git a/launcher/minecraft/mod/ResourcePackFolderModel.cpp b/launcher/minecraft/mod/ResourcePackFolderModel.cpp index 84c34582b..9850bd22d 100644 --- a/launcher/minecraft/mod/ResourcePackFolderModel.cpp +++ b/launcher/minecraft/mod/ResourcePackFolderModel.cpp @@ -55,7 +55,7 @@ ResourcePackFolderModel::ResourcePackFolderModel(const QDir& dir, BaseInstance* QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified"), tr("Provider"), tr("Size") }); m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::PACK_FORMAT, SortType::DATE, SortType::PROVIDER, SortType::SIZE }; - m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, + m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive }; m_columnsHideable = { false, true, false, true, true, true, true }; } diff --git a/launcher/minecraft/mod/TexturePackFolderModel.cpp b/launcher/minecraft/mod/TexturePackFolderModel.cpp index 293567cc8..073ea7ca7 100644 --- a/launcher/minecraft/mod/TexturePackFolderModel.cpp +++ b/launcher/minecraft/mod/TexturePackFolderModel.cpp @@ -47,8 +47,8 @@ TexturePackFolderModel::TexturePackFolderModel(const QDir& dir, BaseInstance* in { m_column_names = QStringList({ "Enable", "Image", "Name", "Last Modified", "Provider", "Size" }); m_column_names_translated = QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Last Modified"), tr("Provider"), tr("Size") }); - m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::DATE, SortType::SIZE }; - m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, QHeaderView::Interactive }; + m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::DATE, SortType::PROVIDER, SortType::SIZE }; + m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive }; m_columnsHideable = { false, true, false, true, true, true }; m_columnsHiddenByDefault = { false, false, false, false, false, true }; } From 2b22a1aebea12d95456791fce88695bcb856cec2 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 28 Oct 2024 20:14:56 +0000 Subject: [PATCH 320/616] Reimplement View Homepage I removed it for some reason, but now it's back for all pages! Signed-off-by: TheKodeToad --- launcher/minecraft/mod/Mod.cpp | 14 ++++------ launcher/minecraft/mod/Mod.h | 3 +- launcher/minecraft/mod/Resource.cpp | 8 ++++++ launcher/minecraft/mod/Resource.h | 1 + .../modplatform/helpers/ExportToModList.cpp | 12 ++++---- .../pages/instance/ExternalResourcesPage.cpp | 26 ++++++++++++++++- .../ui/pages/instance/ExternalResourcesPage.h | 2 ++ .../pages/instance/ExternalResourcesPage.ui | 13 +++++++++ launcher/ui/pages/instance/ModFolderPage.cpp | 6 ++-- .../ui/pages/instance/TexturePackPage.cpp | 1 + launcher/ui/widgets/InfoFrame.cpp | 28 ++++++++++++++++--- 11 files changed, 90 insertions(+), 24 deletions(-) diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp index c5b13ddd3..8d998f586 100644 --- a/launcher/minecraft/mod/Mod.cpp +++ b/launcher/minecraft/mod/Mod.cpp @@ -141,16 +141,14 @@ auto Mod::version() const -> QString return details().version; } -auto Mod::homeurl() const -> QString +auto Mod::homepage() const -> QString { - return details().homeurl; -} + QString metaUrl = Resource::homepage(); -auto Mod::metaurl() const -> QString -{ - if (metadata() == nullptr) - return homeurl(); - return ModPlatform::getMetaURL(metadata()->provider, metadata()->project_id); + if (metaUrl.isEmpty()) + return details().homeurl; + else + return metaUrl; } auto Mod::loaders() const -> QString diff --git a/launcher/minecraft/mod/Mod.h b/launcher/minecraft/mod/Mod.h index a86a2fad0..228686bec 100644 --- a/launcher/minecraft/mod/Mod.h +++ b/launcher/minecraft/mod/Mod.h @@ -61,12 +61,11 @@ class Mod : public Resource { auto details() const -> const ModDetails&; auto name() const -> QString override; auto version() const -> QString; - auto homeurl() const -> QString; + auto homepage() const -> QString override; auto description() const -> QString; auto authors() const -> QStringList; auto licenses() const -> const QList&; auto issueTracker() const -> QString; - auto metaurl() const -> QString; auto side() const -> QString; auto loaders() const -> QString; auto mcVersions() const -> QString; diff --git a/launcher/minecraft/mod/Resource.cpp b/launcher/minecraft/mod/Resource.cpp index c7ef145b6..d1a7b8f9c 100644 --- a/launcher/minecraft/mod/Resource.cpp +++ b/launcher/minecraft/mod/Resource.cpp @@ -95,6 +95,14 @@ auto Resource::provider() const -> QString return tr("Unknown"); } +auto Resource::homepage() const -> QString +{ + if (metadata()) + return ModPlatform::getMetaURL(metadata()->provider, metadata()->project_id); + + return {}; +} + void Resource::setMetadata(std::shared_ptr&& metadata) { if (status() == ResourceStatus::NO_METADATA) diff --git a/launcher/minecraft/mod/Resource.h b/launcher/minecraft/mod/Resource.h index f6667871a..269f65859 100644 --- a/launcher/minecraft/mod/Resource.h +++ b/launcher/minecraft/mod/Resource.h @@ -100,6 +100,7 @@ class Resource : public QObject { [[nodiscard]] auto metadata() -> std::shared_ptr { return m_metadata; } [[nodiscard]] auto metadata() const -> std::shared_ptr { return m_metadata; } [[nodiscard]] auto provider() const -> QString; + [[nodiscard]] virtual auto homepage() const -> QString; void setStatus(ResourceStatus status) { m_status = status; } void setMetadata(std::shared_ptr&& metadata); diff --git a/launcher/modplatform/helpers/ExportToModList.cpp b/launcher/modplatform/helpers/ExportToModList.cpp index aea16ab50..bddc7e320 100644 --- a/launcher/modplatform/helpers/ExportToModList.cpp +++ b/launcher/modplatform/helpers/ExportToModList.cpp @@ -28,7 +28,7 @@ QString toHTML(QList mods, OptionalData extraData) auto meta = mod->metadata(); auto modName = mod->name().toHtmlEscaped(); if (extraData & Url) { - auto url = mod->metaurl().toHtmlEscaped(); + auto url = mod->homepage().toHtmlEscaped(); if (!url.isEmpty()) modName = QString("%2").arg(url, modName); } @@ -65,7 +65,7 @@ QString toMarkdown(QList mods, OptionalData extraData) auto meta = mod->metadata(); auto modName = toMarkdownEscaped(mod->name()); if (extraData & Url) { - auto url = mod->metaurl(); + auto url = mod->homepage(); if (!url.isEmpty()) modName = QString("[%1](%2)").arg(modName, url); } @@ -95,7 +95,7 @@ QString toPlainTXT(QList mods, OptionalData extraData) auto line = modName; if (extraData & Url) { - auto url = mod->metaurl(); + auto url = mod->homepage(); if (!url.isEmpty()) line += QString(" (%1)").arg(url); } @@ -124,7 +124,7 @@ QString toJSON(QList mods, OptionalData extraData) QJsonObject line; line["name"] = modName; if (extraData & Url) { - auto url = mod->metaurl(); + auto url = mod->homepage(); if (!url.isEmpty()) line["url"] = url; } @@ -156,7 +156,7 @@ QString toCSV(QList mods, OptionalData extraData) data << modName; if (extraData & Url) - data << mod->metaurl(); + data << mod->homepage(); if (extraData & Version) { auto ver = mod->version(); if (ver.isEmpty() && meta != nullptr) @@ -203,7 +203,7 @@ QString exportToModList(QList mods, QString lineTemplate) for (auto mod : mods) { auto meta = mod->metadata(); auto modName = mod->name(); - auto url = mod->metaurl(); + auto url = mod->homepage(); auto ver = mod->version(); if (ver.isEmpty() && meta != nullptr) ver = meta->version().toString(); diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp index c455045b5..0e6c5131b 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp +++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp @@ -74,6 +74,7 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared connect(ui->actionRemoveItem, &QAction::triggered, this, &ExternalResourcesPage::removeItem); connect(ui->actionEnableItem, &QAction::triggered, this, &ExternalResourcesPage::enableItem); connect(ui->actionDisableItem, &QAction::triggered, this, &ExternalResourcesPage::disableItem); + connect(ui->actionViewHomepage, &QAction::triggered, this, &ExternalResourcesPage::viewHomepage); connect(ui->actionViewConfigs, &QAction::triggered, this, &ExternalResourcesPage::viewConfigs); connect(ui->actionViewFolder, &QAction::triggered, this, &ExternalResourcesPage::viewFolder); @@ -301,6 +302,27 @@ void ExternalResourcesPage::disableItem() m_model->setResourceEnabled(selection.indexes(), EnableAction::DISABLE); } +void ExternalResourcesPage::viewHomepage() +{ + auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); + bool openedAny = false; + for (auto resource : m_model->selectedResources(selection)) { + auto url = resource->homepage(); + if (!url.isEmpty()) { + DesktopServices::openUrl(url); + openedAny = true; + } + } + + // TODO: just disable button + // just doing this for now to prevent race conditions which may be worse with implementation changes + if (!openedAny) { + CustomMessageBox::selectable(this, tr("No homepages found"), tr("None of the selected resources had an available homepage."), + QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) + ->exec(); + } +} + void ExternalResourcesPage::viewConfigs() { DesktopServices::openPath(m_instance->instanceConfigFolder(), true); @@ -314,16 +336,18 @@ void ExternalResourcesPage::viewFolder() void ExternalResourcesPage::updateActions() { const bool hasSelection = ui->treeView->selectionModel()->hasSelection(); + const QModelIndexList rows = ui->treeView->selectionModel()->selectedRows(); + ui->actionUpdateItem->setEnabled(!m_model->empty()); ui->actionResetItemMetadata->setEnabled(hasSelection); - const QModelIndexList rows = ui->treeView->selectionModel()->selectedRows(); ui->actionChangeVersion->setEnabled(rows.count() == 1 && m_model->at(m_filterModel->mapToSource(rows[0]).row()).metadata() != nullptr); ui->actionRemoveItem->setEnabled(hasSelection); ui->actionEnableItem->setEnabled(hasSelection); ui->actionDisableItem->setEnabled(hasSelection); + ui->actionViewHomepage->setEnabled(hasSelection); ui->actionExportMetadata->setEnabled(!m_model->empty()); } diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.h b/launcher/ui/pages/instance/ExternalResourcesPage.h index 9bbd13984..00bb5d17d 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.h +++ b/launcher/ui/pages/instance/ExternalResourcesPage.h @@ -56,6 +56,8 @@ class ExternalResourcesPage : public QMainWindow, public BasePage { virtual void enableItem(); virtual void disableItem(); + virtual void viewHomepage(); + virtual void viewFolder(); virtual void viewConfigs(); diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.ui b/launcher/ui/pages/instance/ExternalResourcesPage.ui index 22ab556b9..9c41f3a71 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.ui +++ b/launcher/ui/pages/instance/ExternalResourcesPage.ui @@ -90,6 +90,8 @@ + + @@ -213,6 +215,17 @@ QAction::NoRole + + + false + + + View Homepage + + + View the homepages of all selected items. + + diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index 17bbb3bbc..b9e0cfeef 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -107,11 +107,11 @@ ModFolderPage::ModFolderPage(BaseInstance* inst, std::shared_ptr connect(ui->actionChangeVersion, &QAction::triggered, this, &ModFolderPage::changeModVersion); ui->actionsToolbar->insertActionAfter(ui->actionUpdateItem, ui->actionChangeVersion); + ui->actionViewHomepage->setToolTip(tr("View the homepages of all selected mods.")); + ui->actionExportMetadata->setToolTip(tr("Export mod's metadata to text.")); connect(ui->actionExportMetadata, &QAction::triggered, this, &ModFolderPage::exportModMetadata); - ui->actionsToolbar->insertActionAfter(ui->actionDisableItem, ui->actionExportMetadata); - - ui->actionsToolbar->insertSeparator(ui->actionExportMetadata); + ui->actionsToolbar->insertActionAfter(ui->actionViewHomepage, ui->actionExportMetadata); } bool ModFolderPage::shouldDisplay() const diff --git a/launcher/ui/pages/instance/TexturePackPage.cpp b/launcher/ui/pages/instance/TexturePackPage.cpp index 648cd2ec7..990ee2b2e 100644 --- a/launcher/ui/pages/instance/TexturePackPage.cpp +++ b/launcher/ui/pages/instance/TexturePackPage.cpp @@ -74,6 +74,7 @@ TexturePackPage::TexturePackPage(MinecraftInstance* instance, std::shared_ptractionChangeVersion, &QAction::triggered, this, &TexturePackPage::changeTexturePackVersion); ui->actionsToolbar->insertActionAfter(ui->actionUpdateItem, ui->actionChangeVersion); + ui->actionViewHomepage->setToolTip(tr("View the homepages of all selected texture packs.")); } void TexturePackPage::updateFrame(const QModelIndex& current, [[maybe_unused]] const QModelIndex& previous) diff --git a/launcher/ui/widgets/InfoFrame.cpp b/launcher/ui/widgets/InfoFrame.cpp index 44f702659..2ae5d939b 100644 --- a/launcher/ui/widgets/InfoFrame.cpp +++ b/launcher/ui/widgets/InfoFrame.cpp @@ -84,7 +84,7 @@ void InfoFrame::updateWithMod(Mod const& m) QString text = ""; QString name = ""; - QString link = m.metaurl(); + QString link = m.homepage(); if (m.name().isEmpty()) name = m.internal_id(); else @@ -93,7 +93,7 @@ void InfoFrame::updateWithMod(Mod const& m) if (link.isEmpty()) text = name; else { - text = "" + name + ""; + text = "" + name + ""; } if (!m.authors().isEmpty()) text += " by " + m.authors().join(", "); @@ -145,6 +145,12 @@ void InfoFrame::updateWithMod(Mod const& m) void InfoFrame::updateWithResource(const Resource& resource) { + const QString homepage = resource.homepage(); + + if (!homepage.isEmpty()) { + + } + setName(resource.name()); setImage(); } @@ -209,14 +215,28 @@ QString InfoFrame::renderColorCodes(QString input) void InfoFrame::updateWithResourcePack(ResourcePack& resource_pack) { - setName(renderColorCodes(resource_pack.name())); + QString name = renderColorCodes(resource_pack.name()); + + const QString homepage = resource_pack.homepage(); + if (!homepage.isEmpty()) { + name = "" + name + ""; + } + + setName(name); setDescription(renderColorCodes(resource_pack.description())); setImage(resource_pack.image({ 64, 64 })); } void InfoFrame::updateWithTexturePack(TexturePack& texture_pack) { - setName(renderColorCodes(texture_pack.name())); + QString name = renderColorCodes(texture_pack.name()); + + const QString homepage = texture_pack.homepage(); + if (!homepage.isEmpty()) { + name = "" + name + ""; + } + + setName(name); setDescription(renderColorCodes(texture_pack.description())); setImage(texture_pack.image({ 64, 64 })); } From 94f65f8727bfd12cc50eb8b62d52bca308cef9b5 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 28 Oct 2024 22:27:40 +0200 Subject: [PATCH 321/616] add qassert Signed-off-by: Trial97 --- launcher/ui/pages/modplatform/ResourcePage.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index 049dff644..a20dc19bf 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -363,10 +363,7 @@ void ResourcePage::onResourceSelected() return; auto& version = current_pack->versions[m_selectedVersionIndex]; - if (version.downloadUrl.isNull()) { - qCritical() << tr("It looks like the resource you selected doesn't have a download link, so Prism won't attempt to download it."); - return; - } + Q_ASSERT(!version.downloadUrl.isNull()); if (version.is_currently_selected) removeResourceFromDialog(current_pack->name); else From ad1d5ddcdfc86328490c05359d58cfd68de72aad Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 28 Oct 2024 20:42:59 +0000 Subject: [PATCH 322/616] Revert unwise refactor Signed-off-by: TheKodeToad --- .../minecraft/mod/ResourceFolderModel.cpp | 34 +++++++++---------- launcher/minecraft/mod/ResourceFolderModel.h | 2 +- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index 4c7af3c02..9bc9cd9a9 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -483,19 +483,19 @@ QVariant ResourceFolderModel::data(const QModelIndex& index, int role) const switch (role) { case Qt::DisplayRole: switch (column) { - case NAME_COLUMN: + case NameColumn: return m_resources[row]->name(); - case DATE_COLUMN: + case DateColumn: return m_resources[row]->dateTimeChanged(); - case PROVIDER_COLUMN: + case ProviderColumn: return m_resources[row]->provider(); - case SIZE_COLUMN: + case SizeColumn: return m_resources[row]->sizeStr(); default: return {}; } case Qt::ToolTipRole: - if (column == NAME_COLUMN) { + if (column == NameColumn) { if (at(row).isSymLinkUnder(instDirPath())) { return m_resources[row]->internal_id() + tr("\nWarning: This resource is symbolically linked from elsewhere. Editing it will also change the original." @@ -511,14 +511,14 @@ QVariant ResourceFolderModel::data(const QModelIndex& index, int role) const return m_resources[row]->internal_id(); case Qt::DecorationRole: { - if (column == NAME_COLUMN && (at(row).isSymLinkUnder(instDirPath()) || at(row).isMoreThanOneHardLink())) + if (column == NameColumn && (at(row).isSymLinkUnder(instDirPath()) || at(row).isMoreThanOneHardLink())) return APPLICATION->getThemedIcon("status-yellow"); return {}; } case Qt::CheckStateRole: switch (column) { - case ACTIVE_COLUMN: + case ActiveColumn: return m_resources[row]->enabled() ? Qt::Checked : Qt::Unchecked; default: return {}; @@ -557,11 +557,11 @@ QVariant ResourceFolderModel::headerData(int section, [[maybe_unused]] Qt::Orien switch (role) { case Qt::DisplayRole: switch (section) { - case ACTIVE_COLUMN: - case NAME_COLUMN: - case DATE_COLUMN: - case PROVIDER_COLUMN: - case SIZE_COLUMN: + case ActiveColumn: + case NameColumn: + case DateColumn: + case ProviderColumn: + case SizeColumn: return columnNames().at(section); default: return {}; @@ -569,15 +569,15 @@ QVariant ResourceFolderModel::headerData(int section, [[maybe_unused]] Qt::Orien case Qt::ToolTipRole: { //: Here, resource is a generic term for external resources, like Mods, Resource Packs, Shader Packs, etc. switch (section) { - case ACTIVE_COLUMN: + case ActiveColumn: return tr("Is the resource enabled?"); - case NAME_COLUMN: + case NameColumn: return tr("The name of the resource."); - case DATE_COLUMN: + case DateColumn: return tr("The date and time this resource was last changed (or added)."); - case PROVIDER_COLUMN: + case ProviderColumn: return tr("The source provider of the resource."); - case SIZE_COLUMN: + case SizeColumn: return tr("The size of the resource."); default: return {}; diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index 3fd366385..80698eac5 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -151,7 +151,7 @@ class ResourceFolderModel : public QAbstractListModel { /* Qt behavior */ /* Basic columns */ - enum Columns { ACTIVE_COLUMN = 0, NAME_COLUMN, DATE_COLUMN, PROVIDER_COLUMN, SIZE_COLUMN, NUM_COLUMNS }; + enum Columns { ActiveColumn = 0, NameColumn, DateColumn, ProviderColumn, SizeColumn, NUM_COLUMNS }; QStringList columnNames(bool translated = true) const { return translated ? m_column_names_translated : m_column_names; } From f3cae427f197c614cc05ad55084edc32051093bd Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 28 Oct 2024 21:09:45 +0000 Subject: [PATCH 323/616] Fix tests (make them green) Signed-off-by: TheKodeToad --- launcher/minecraft/mod/ModFolderModel.h | 1 - tests/ResourceFolderModel_test.cpp | 16 ++++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/launcher/minecraft/mod/ModFolderModel.h b/launcher/minecraft/mod/ModFolderModel.h index 629a2621c..c9a5fc226 100644 --- a/launcher/minecraft/mod/ModFolderModel.h +++ b/launcher/minecraft/mod/ModFolderModel.h @@ -75,7 +75,6 @@ class ModFolderModel : public ResourceFolderModel { ReleaseTypeColumn, NUM_COLUMNS }; - enum ModStatusAction { Disable, Enable, Toggle }; ModFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent = nullptr); virtual QString id() const override { return "mods"; } diff --git a/tests/ResourceFolderModel_test.cpp b/tests/ResourceFolderModel_test.cpp index 350ab615e..f2201a5e9 100644 --- a/tests/ResourceFolderModel_test.cpp +++ b/tests/ResourceFolderModel_test.cpp @@ -87,7 +87,7 @@ class ResourceFolderModelTest : public QObject { QEventLoop loop; - ModFolderModel m(tempDir.path(), nullptr, true); + ModFolderModel m(tempDir.path(), nullptr, true, true); connect(&m, &ModFolderModel::updateFinished, &loop, &QEventLoop::quit); @@ -96,7 +96,7 @@ class ResourceFolderModelTest : public QObject { expire_timer.setSingleShot(true); expire_timer.start(4000); - m.installMod(folder); + m.installResource(folder); loop.exec(); @@ -111,7 +111,7 @@ class ResourceFolderModelTest : public QObject { QString folder = source + '/'; QTemporaryDir tempDir; QEventLoop loop; - ModFolderModel m(tempDir.path(), nullptr, true); + ModFolderModel m(tempDir.path(), nullptr, true, true); connect(&m, &ModFolderModel::updateFinished, &loop, &QEventLoop::quit); @@ -120,7 +120,7 @@ class ResourceFolderModelTest : public QObject { expire_timer.setSingleShot(true); expire_timer.start(4000); - m.installMod(folder); + m.installResource(folder); loop.exec(); @@ -134,7 +134,7 @@ class ResourceFolderModelTest : public QObject { void test_addFromWatch() { QString source = QFINDTESTDATA("testdata/ResourceFolderModel"); - ModFolderModel model(source, nullptr); + ModFolderModel model(source, nullptr, false, true); QCOMPARE(model.size(), 0); @@ -154,7 +154,7 @@ class ResourceFolderModelTest : public QObject { QString file_mod = QFINDTESTDATA("testdata/ResourceFolderModel/supercoolmod.jar"); QTemporaryDir tmp; - ResourceFolderModel model(QDir(tmp.path()), nullptr); + ResourceFolderModel model(QDir(tmp.path()), nullptr, false, false); QCOMPARE(model.size(), 0); @@ -199,7 +199,7 @@ class ResourceFolderModelTest : public QObject { QString file_mod = QFINDTESTDATA("testdata/ResourceFolderModel/supercoolmod.jar"); QTemporaryDir tmp; - ResourceFolderModel model(tmp.path(), nullptr); + ResourceFolderModel model(tmp.path(), nullptr, false, false); QCOMPARE(model.size(), 0); @@ -210,7 +210,7 @@ class ResourceFolderModelTest : public QObject { EXEC_UPDATE_TASK(model.installResource(file_mod), QVERIFY) } - for (auto res : model.all()) + for (auto res : model.allResources()) qDebug() << res->name(); QCOMPARE(model.size(), 2); From bd8b30c606dda9532e50477fb05bf7513c4837e6 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 28 Oct 2024 22:17:16 +0000 Subject: [PATCH 324/616] Implement link for InfoFrame::updateWithResource Signed-off-by: TheKodeToad --- launcher/ui/widgets/InfoFrame.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/ui/widgets/InfoFrame.cpp b/launcher/ui/widgets/InfoFrame.cpp index 2ae5d939b..3ef5dcb88 100644 --- a/launcher/ui/widgets/InfoFrame.cpp +++ b/launcher/ui/widgets/InfoFrame.cpp @@ -147,11 +147,11 @@ void InfoFrame::updateWithResource(const Resource& resource) { const QString homepage = resource.homepage(); - if (!homepage.isEmpty()) { + if (!homepage.isEmpty()) + setName("" + resource.name() + ""); + else + setName(resource.name()); - } - - setName(resource.name()); setImage(); } From d157159106df4ec8108309b3e0928f1589274f34 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 28 Oct 2024 22:29:43 +0000 Subject: [PATCH 325/616] Fix license headers and formatting Signed-off-by: TheKodeToad --- launcher/CMakeLists.txt | 8 ++++---- launcher/minecraft/mod/MetadataHandler.h | 1 + launcher/minecraft/mod/Mod.cpp | 1 + launcher/minecraft/mod/Mod.h | 1 + launcher/minecraft/mod/ModFolderModel.cpp | 1 + 5 files changed, 8 insertions(+), 4 deletions(-) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index db3762a8b..486aaff3e 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -349,8 +349,8 @@ set(MINECRAFT_SOURCES minecraft/mod/tasks/ResourceFolderLoadTask.cpp minecraft/mod/tasks/LocalModParseTask.h minecraft/mod/tasks/LocalModParseTask.cpp - minecraft/mod/tasks/LocalResourceUpdateTask.h - minecraft/mod/tasks/LocalResourceUpdateTask.cpp + minecraft/mod/tasks/LocalResourceUpdateTask.h + minecraft/mod/tasks/LocalResourceUpdateTask.cpp minecraft/mod/tasks/LocalDataPackParseTask.h minecraft/mod/tasks/LocalDataPackParseTask.cpp minecraft/mod/tasks/LocalResourcePackParseTask.h @@ -1068,8 +1068,8 @@ SET(LAUNCHER_SOURCES ui/dialogs/BlockedModsDialog.h ui/dialogs/ChooseProviderDialog.h ui/dialogs/ChooseProviderDialog.cpp - ui/dialogs/ResourceUpdateDialog.cpp - ui/dialogs/ResourceUpdateDialog.h + ui/dialogs/ResourceUpdateDialog.cpp + ui/dialogs/ResourceUpdateDialog.h ui/dialogs/InstallLoaderDialog.cpp ui/dialogs/InstallLoaderDialog.h diff --git a/launcher/minecraft/mod/MetadataHandler.h b/launcher/minecraft/mod/MetadataHandler.h index 653c3c1ee..0b8cb124d 100644 --- a/launcher/minecraft/mod/MetadataHandler.h +++ b/launcher/minecraft/mod/MetadataHandler.h @@ -2,6 +2,7 @@ /* * Prism Launcher - Minecraft Launcher * Copyright (c) 2022 flowln + * Copyright (c) 2023 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp index 8d998f586..4986d8ee1 100644 --- a/launcher/minecraft/mod/Mod.cpp +++ b/launcher/minecraft/mod/Mod.cpp @@ -3,6 +3,7 @@ * Prism Launcher - Minecraft Launcher * Copyright (c) 2022 flowln * Copyright (C) 2022 Sefa Eyeoglu + * Copyright (c) 2023 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/minecraft/mod/Mod.h b/launcher/minecraft/mod/Mod.h index 228686bec..8a352c66c 100644 --- a/launcher/minecraft/mod/Mod.h +++ b/launcher/minecraft/mod/Mod.h @@ -2,6 +2,7 @@ /* * Prism Launcher - Minecraft Launcher * Copyright (c) 2022 flowln + * Copyright (c) 2023 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/minecraft/mod/ModFolderModel.cpp b/launcher/minecraft/mod/ModFolderModel.cpp index 11c784b96..8fe68203c 100644 --- a/launcher/minecraft/mod/ModFolderModel.cpp +++ b/launcher/minecraft/mod/ModFolderModel.cpp @@ -3,6 +3,7 @@ * Prism Launcher - Minecraft Launcher * Copyright (c) 2022 flowln * Copyright (C) 2022 Sefa Eyeoglu + * Copyright (c) 2023 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by From 8e7d84d05beffac492522f4b2c0d9e638b15146b Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 29 Oct 2024 00:40:13 +0200 Subject: [PATCH 326/616] fix leak on resource search Signed-off-by: Trial97 --- .../helpers/NetworkResourceAPI.cpp | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/launcher/modplatform/helpers/NetworkResourceAPI.cpp b/launcher/modplatform/helpers/NetworkResourceAPI.cpp index 974e732a7..7a234a8f8 100644 --- a/launcher/modplatform/helpers/NetworkResourceAPI.cpp +++ b/launcher/modplatform/helpers/NetworkResourceAPI.cpp @@ -43,11 +43,16 @@ Task::Ptr NetworkResourceAPI::searchProjects(SearchArgs&& args, SearchCallbacks& callbacks.on_succeed(doc); }); - QObject::connect(netJob.get(), &NetJob::failed, [netJob, callbacks](const QString& reason) { + // Capture a weak_ptr instead of a shared_ptr to avoid circular dependency issues. + // This prevents the lambda from extending the lifetime of the shared resource, + // as it only temporarily locks the resource when needed. + auto weak = netJob.toWeakRef(); + QObject::connect(netJob.get(), &NetJob::failed, [weak, callbacks](const QString& reason) { int network_error_code = -1; - if (auto* failed_action = netJob->getFailedActions().at(0); failed_action) - network_error_code = failed_action->replyStatusCode(); - + if (auto netJob = weak.lock()) { + if (auto* failed_action = netJob->getFailedActions().at(0); failed_action) + network_error_code = failed_action->replyStatusCode(); + } callbacks.on_fail(reason, network_error_code); }); QObject::connect(netJob.get(), &NetJob::aborted, [callbacks] { callbacks.on_abort(); }); @@ -102,11 +107,17 @@ Task::Ptr NetworkResourceAPI::getProjectVersions(VersionSearchArgs&& args, Versi callbacks.on_succeed(doc, args.pack); }); - QObject::connect(netJob.get(), &NetJob::failed, [netJob, callbacks](const QString& reason) { - int network_error_code = -1; - if (auto* failed_action = netJob->getFailedActions().at(0); failed_action) - network_error_code = failed_action->replyStatusCode(); + // Capture a weak_ptr instead of a shared_ptr to avoid circular dependency issues. + // This prevents the lambda from extending the lifetime of the shared resource, + // as it only temporarily locks the resource when needed. + auto weak = netJob.toWeakRef(); + QObject::connect(netJob.get(), &NetJob::failed, [weak, callbacks](const QString& reason) { + int network_error_code = -1; + if (auto netJob = weak.lock()) { + if (auto* failed_action = netJob->getFailedActions().at(0); failed_action) + network_error_code = failed_action->replyStatusCode(); + } callbacks.on_fail(reason, network_error_code); }); @@ -153,11 +164,17 @@ Task::Ptr NetworkResourceAPI::getDependencyVersion(DependencySearchArgs&& args, callbacks.on_succeed(doc, args.dependency); }); - QObject::connect(netJob.get(), &NetJob::failed, [netJob, callbacks](const QString& reason) { - int network_error_code = -1; - if (auto* failed_action = netJob->getFailedActions().at(0); failed_action) - network_error_code = failed_action->replyStatusCode(); + // Capture a weak_ptr instead of a shared_ptr to avoid circular dependency issues. + // This prevents the lambda from extending the lifetime of the shared resource, + // as it only temporarily locks the resource when needed. + auto weak = netJob.toWeakRef(); + QObject::connect(netJob.get(), &NetJob::failed, [weak, callbacks](const QString& reason) { + int network_error_code = -1; + if (auto netJob = weak.lock()) { + if (auto* failed_action = netJob->getFailedActions().at(0); failed_action) + network_error_code = failed_action->replyStatusCode(); + } callbacks.on_fail(reason, network_error_code); }); return netJob; From c1c198b84b65ebac576354381c56c45fe18320a7 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Tue, 29 Oct 2024 15:45:30 +0000 Subject: [PATCH 327/616] Combine if statements Signed-off-by: TheKodeToad --- launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index e38ca526f..ead8238ff 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -168,13 +168,12 @@ void ModrinthCheckUpdate::checkNextLoader() return; } - if (m_loaders_list.size() == 0) { - if (m_loader_idx == 0) { - getUpdateModsForLoader({}); - m_loader_idx++; - return; - } + if (m_loaders_list.isEmpty() && m_loader_idx == 0) { + getUpdateModsForLoader({}); + m_loader_idx++; + return; } + if (m_loader_idx < m_loaders_list.size()) { getUpdateModsForLoader(m_loaders_list.at(m_loader_idx)); m_loader_idx++; From d49e6187cdccfc35ae5a670a7c8445399146dfec Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Tue, 29 Oct 2024 17:14:59 +0000 Subject: [PATCH 328/616] Make requested changes Signed-off-by: TheKodeToad --- .../minecraft/mod/ResourceFolderModel.cpp | 2 +- launcher/minecraft/mod/ResourceFolderModel.h | 2 +- launcher/modplatform/CheckUpdateTask.h | 2 +- launcher/modplatform/ModIndex.h | 1 - .../modrinth/ModrinthCheckUpdate.cpp | 4 ++-- launcher/ui/MainWindow.cpp | 2 +- .../pages/instance/ExternalResourcesPage.cpp | 21 ++++++------------- 7 files changed, 12 insertions(+), 22 deletions(-) diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index 9bc9cd9a9..d349b2c56 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -166,7 +166,7 @@ bool ResourceFolderModel::installResource(QString original_path) return false; } -bool ResourceFolderModel::installResource(QString path, ModPlatform::IndexedVersion& vers) +bool ResourceFolderModel::installResourceWithFlameMetadata(QString path, ModPlatform::IndexedVersion& vers) { if (vers.addonId.isValid()) { ModPlatform::IndexedPack pack{ diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index 80698eac5..1da748e05 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -113,7 +113,7 @@ class ResourceFolderModel : public QAbstractListModel { */ virtual bool installResource(QString path); - virtual bool installResource(QString path, ModPlatform::IndexedVersion& vers); + virtual bool installResourceWithFlameMetadata(QString path, ModPlatform::IndexedVersion& vers); /** Uninstall (i.e. remove all data about it) a resource, given its file name. * diff --git a/launcher/modplatform/CheckUpdateTask.h b/launcher/modplatform/CheckUpdateTask.h index 9d0b1c51a..1ee820a63 100644 --- a/launcher/modplatform/CheckUpdateTask.h +++ b/launcher/modplatform/CheckUpdateTask.h @@ -17,7 +17,7 @@ class CheckUpdateTask : public Task { std::list& mcVersions, QList loadersList, std::shared_ptr resourceModel) - : Task(nullptr) + : Task() , m_resources(resources) , m_game_versions(mcVersions) , m_loaders_list(std::move(loadersList)) diff --git a/launcher/modplatform/ModIndex.h b/launcher/modplatform/ModIndex.h index 11a230798..d5ee12473 100644 --- a/launcher/modplatform/ModIndex.h +++ b/launcher/modplatform/ModIndex.h @@ -25,7 +25,6 @@ #include #include #include -#include class QIODevice; diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index ead8238ff..52db95077 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -148,7 +148,7 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp } m_updates.emplace_back(pack->name, hash, old_version, project_ver.version_number, project_ver.version_type, - project_ver.changelog, ModPlatform::ResourceProvider::MODRINTH, download_task); + project_ver.changelog, ModPlatform::ResourceProvider::MODRINTH, download_task, resource->enabled()); } m_deps.append(std::make_shared(pack, project_ver)); @@ -177,7 +177,7 @@ void ModrinthCheckUpdate::checkNextLoader() if (m_loader_idx < m_loaders_list.size()) { getUpdateModsForLoader(m_loaders_list.at(m_loader_idx)); m_loader_idx++; - return; + return; } for (auto resource : m_mappings) { diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 96f1348d2..a0bc83171 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -1048,7 +1048,7 @@ void MainWindow::processURLs(QList urls) qWarning() << "Importing of Data Packs not supported at this time. Ignoring" << localFileName; break; case PackedResourceType::Mod: - minecraftInst->loaderModList()->installResource(localFileName, version); + minecraftInst->loaderModList()->installResourceWithFlameMetadata(localFileName, version); break; case PackedResourceType::ShaderPack: minecraftInst->shaderPackList()->installResource(localFileName); diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp index 0e6c5131b..d85726eb8 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp +++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp @@ -305,21 +305,10 @@ void ExternalResourcesPage::disableItem() void ExternalResourcesPage::viewHomepage() { auto selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); - bool openedAny = false; for (auto resource : m_model->selectedResources(selection)) { auto url = resource->homepage(); - if (!url.isEmpty()) { + if (!url.isEmpty()) DesktopServices::openUrl(url); - openedAny = true; - } - } - - // TODO: just disable button - // just doing this for now to prevent race conditions which may be worse with implementation changes - if (!openedAny) { - CustomMessageBox::selectable(this, tr("No homepages found"), tr("None of the selected resources had an available homepage."), - QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) - ->exec(); } } @@ -336,18 +325,20 @@ void ExternalResourcesPage::viewFolder() void ExternalResourcesPage::updateActions() { const bool hasSelection = ui->treeView->selectionModel()->hasSelection(); - const QModelIndexList rows = ui->treeView->selectionModel()->selectedRows(); + const QModelIndexList selection = m_filterModel->mapSelectionToSource(ui->treeView->selectionModel()->selection()).indexes(); + const QList selectedResources = m_model->selectedResources(selection); ui->actionUpdateItem->setEnabled(!m_model->empty()); ui->actionResetItemMetadata->setEnabled(hasSelection); - ui->actionChangeVersion->setEnabled(rows.count() == 1 && m_model->at(m_filterModel->mapToSource(rows[0]).row()).metadata() != nullptr); + ui->actionChangeVersion->setEnabled(selectedResources.size() == 1 && selectedResources[0]->metadata() != nullptr); ui->actionRemoveItem->setEnabled(hasSelection); ui->actionEnableItem->setEnabled(hasSelection); ui->actionDisableItem->setEnabled(hasSelection); - ui->actionViewHomepage->setEnabled(hasSelection); + ui->actionViewHomepage->setEnabled(hasSelection && std::any_of(selectedResources.begin(), selectedResources.end(), + [](Resource* resource) { return !resource->homepage().isEmpty() })); ui->actionExportMetadata->setEnabled(!m_model->empty()); } From 2368521a9ae7cd1dbc2c3bae3edaa914924ebcff Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Tue, 29 Oct 2024 17:53:57 +0000 Subject: [PATCH 329/616] Add missing semicolon Signed-off-by: TheKodeToad --- launcher/ui/pages/instance/ExternalResourcesPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp index d85726eb8..4ea12cb6d 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp +++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp @@ -338,7 +338,7 @@ void ExternalResourcesPage::updateActions() ui->actionDisableItem->setEnabled(hasSelection); ui->actionViewHomepage->setEnabled(hasSelection && std::any_of(selectedResources.begin(), selectedResources.end(), - [](Resource* resource) { return !resource->homepage().isEmpty() })); + [](Resource* resource) { return !resource->homepage().isEmpty(); })); ui->actionExportMetadata->setEnabled(!m_model->empty()); } From fd109c47401c755e35da9c2884e9b38532bed56c Mon Sep 17 00:00:00 2001 From: Ben Westover Date: Tue, 29 Oct 2024 18:20:00 +0000 Subject: [PATCH 330/616] Shorten metainfo.xml app summary Signed-off-by: Ben Westover --- program_info/org.prismlauncher.PrismLauncher.metainfo.xml.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/program_info/org.prismlauncher.PrismLauncher.metainfo.xml.in b/program_info/org.prismlauncher.PrismLauncher.metainfo.xml.in index a482f0e38..3c542c060 100644 --- a/program_info/org.prismlauncher.PrismLauncher.metainfo.xml.in +++ b/program_info/org.prismlauncher.PrismLauncher.metainfo.xml.in @@ -4,7 +4,7 @@ org.prismlauncher.PrismLauncher.desktop Prism Launcher Prism Launcher Contributors - A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once + Custom Minecraft Launcher to easily manage multiple Minecraft installations at once CC0-1.0 GPL-3.0-only https://prismlauncher.org/ From f6511c601e1fd63a864f1681beef0f85adfe6f7e Mon Sep 17 00:00:00 2001 From: Ben Westover Date: Tue, 29 Oct 2024 18:24:19 +0000 Subject: [PATCH 331/616] Fix some typos Signed-off-by: Ben Westover --- .../auth/steps/MSADeviceCodeStep.cpp | 20 +++++++++---------- .../minecraft/auth/steps/MSADeviceCodeStep.h | 2 +- launcher/ui/java/InstallJavaDialog.cpp | 10 +++++----- 3 files changed, 16 insertions(+), 16 deletions(-) diff --git a/launcher/minecraft/auth/steps/MSADeviceCodeStep.cpp b/launcher/minecraft/auth/steps/MSADeviceCodeStep.cpp index c283b153e..38ff90a47 100644 --- a/launcher/minecraft/auth/steps/MSADeviceCodeStep.cpp +++ b/launcher/minecraft/auth/steps/MSADeviceCodeStep.cpp @@ -74,12 +74,12 @@ void MSADeviceCodeStep::perform() m_task->setAskRetry(false); m_task->addNetAction(m_request); - connect(m_task.get(), &Task::finished, this, &MSADeviceCodeStep::deviceAutorizationFinished); + connect(m_task.get(), &Task::finished, this, &MSADeviceCodeStep::deviceAuthorizationFinished); m_task->start(); } -struct DeviceAutorizationResponse { +struct DeviceAuthorizationResponse { QString device_code; QString user_code; QString verification_uri; @@ -90,17 +90,17 @@ struct DeviceAutorizationResponse { QString error_description; }; -DeviceAutorizationResponse parseDeviceAutorizationResponse(const QByteArray& data) +DeviceAuthorizationResponse parseDeviceAuthorizationResponse(const QByteArray& data) { QJsonParseError err; QJsonDocument doc = QJsonDocument::fromJson(data, &err); if (err.error != QJsonParseError::NoError) { - qWarning() << "Failed to parse device autorization response due to err:" << err.errorString(); + qWarning() << "Failed to parse device authorization response due to err:" << err.errorString(); return {}; } if (!doc.isObject()) { - qWarning() << "Device autorization response is not an object"; + qWarning() << "Device authorization response is not an object"; return {}; } auto obj = doc.object(); @@ -111,9 +111,9 @@ DeviceAutorizationResponse parseDeviceAutorizationResponse(const QByteArray& dat }; } -void MSADeviceCodeStep::deviceAutorizationFinished() +void MSADeviceCodeStep::deviceAuthorizationFinished() { - auto rsp = parseDeviceAutorizationResponse(*m_response); + auto rsp = parseDeviceAuthorizationResponse(*m_response); if (!rsp.error.isEmpty() || !rsp.error_description.isEmpty()) { qWarning() << "Device authorization failed:" << rsp.error; emit finished(AccountTaskState::STATE_FAILED_HARD, @@ -208,12 +208,12 @@ AuthenticationResponse parseAuthenticationResponse(const QByteArray& data) QJsonParseError err; QJsonDocument doc = QJsonDocument::fromJson(data, &err); if (err.error != QJsonParseError::NoError) { - qWarning() << "Failed to parse device autorization response due to err:" << err.errorString(); + qWarning() << "Failed to parse device authorization response due to err:" << err.errorString(); return {}; } if (!doc.isObject()) { - qWarning() << "Device autorization response is not an object"; + qWarning() << "Device authorization response is not an object"; return {}; } auto obj = doc.object(); @@ -274,4 +274,4 @@ void MSADeviceCodeStep::authenticationFinished() m_data->msaToken.refresh_token = rsp.refresh_token; m_data->msaToken.token = rsp.access_token; emit finished(AccountTaskState::STATE_WORKING, tr("Got")); -} \ No newline at end of file +} diff --git a/launcher/minecraft/auth/steps/MSADeviceCodeStep.h b/launcher/minecraft/auth/steps/MSADeviceCodeStep.h index 616008def..7f755563f 100644 --- a/launcher/minecraft/auth/steps/MSADeviceCodeStep.h +++ b/launcher/minecraft/auth/steps/MSADeviceCodeStep.h @@ -58,7 +58,7 @@ class MSADeviceCodeStep : public AuthStep { void authorizeWithBrowser(QString url, QString code, int expiresIn); private slots: - void deviceAutorizationFinished(); + void deviceAuthorizationFinished(); void startPoolTimer(); void authenticateUser(); void authenticationFinished(); diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index d38670d05..dc43ea4c9 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -132,9 +132,9 @@ class InstallJavaPage : public QWidget, public BasePage { m_recommended_majors = majors; recommendedFilterChanged(); } - void setRecomend(bool recomend) + void setRecommend(bool recommend) { - m_recommend = recomend; + m_recommend = recommend; recommendedFilterChanged(); } void recommendedFilterChanged() @@ -202,7 +202,7 @@ InstallDialog::InstallDialog(const QString& uid, BaseInstance* instance, QWidget recommendedCheckBox->setCheckState(Qt::CheckState::Checked); connect(recommendedCheckBox, &QCheckBox::stateChanged, this, [this](int state) { for (BasePage* page : container->getPages()) { - pageCast(page)->setRecomend(state == Qt::Checked); + pageCast(page)->setRecommend(state == Qt::Checked); } }); @@ -261,7 +261,7 @@ InstallDialog::InstallDialog(const QString& uid, BaseInstance* instance, QWidget container->selectPage(page->id()); auto cast = pageCast(page); - cast->setRecomend(true); + cast->setRecommend(true); connect(cast, &InstallJavaPage::selectionChanged, this, [this, cast] { validate(cast); }); if (!recommendedJavas.isEmpty()) { cast->setRecommendedMajors(recommendedJavas); @@ -344,4 +344,4 @@ void InstallDialog::done(int result) } // namespace Java -#include "InstallJavaDialog.moc" \ No newline at end of file +#include "InstallJavaDialog.moc" From 43e4481b7093cb84c22cc54906fc2bf41208481e Mon Sep 17 00:00:00 2001 From: Michael Tyson Date: Tue, 23 Apr 2024 14:23:53 +1000 Subject: [PATCH 332/616] Support for launching from command line in offline mode This allows launching an offline instance with --offline --name=OfflineName. This is useful for playing split screen by creating two side-by-side instances, which is impossible online, unless one is using two separate paid accounts. With this PR, it makes it possible to launch from a script - otherwise, one has to launch manually, which is a pain, or create offline profiles for each instance, which interferes with some functionality like skins (my autistic son takes great issue with his skin not being visible, when using offline profiles!). Implementation is based on MultiMC, which supports this feature. See also https://github.com/PrismLauncher/PrismLauncher/issues/1059 for discussion. Signed-off-by: Michael Tyson --- launcher/Application.cpp | 28 +++++++++++++++++++++++----- launcher/Application.h | 5 ++++- launcher/LaunchController.cpp | 13 +++++++++---- launcher/LaunchController.h | 3 +++ 4 files changed, 39 insertions(+), 10 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index ea749ca4c..5fa9da4ce 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -242,6 +242,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) { { "s", "server" }, "Join the specified server on launch (only valid in combination with --launch)", "address" }, { { "w", "world" }, "Join the specified world on launch (only valid in combination with --launch)", "world" }, { { "a", "profile" }, "Use the account specified by its profile name (only valid in combination with --launch)", "profile" }, + { { "o", "offline" }, "Launch offline (only valid in combination with --launch)", "offline" }, + { { "n", "name" }, "When launching offline, use specified name (only makes sense in combination with --launch and --offline)", "name" }, { "alive", "Write a small '" + liveCheckFile + "' file after the launcher starts" }, { { "I", "import" }, "Import instance or resource from specified local path or URL", "url" }, { "show", "Opens the window for the specified instance (by instance ID)", "show" } }); @@ -257,6 +259,10 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_serverToJoin = parser.value("server"); m_worldToJoin = parser.value("world"); m_profileToUse = parser.value("profile"); + if (parser.isSet("offline")) { + m_offline = true; + m_offlineName = parser.value("name"); + } m_liveCheck = parser.isSet("alive"); m_instanceIdToShowWindowOf = parser.value("show"); @@ -271,8 +277,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) } // error if --launch is missing with --server or --profile - if (((!m_serverToJoin.isEmpty() || !m_worldToJoin.isEmpty()) || !m_profileToUse.isEmpty()) && m_instanceIdToLaunch.isEmpty()) { - std::cerr << "--server and --profile can only be used in combination with --launch!" << std::endl; + if ((!m_serverToJoin.isEmpty() || !m_worldToJoin.isEmpty() || !m_profileToUse.isEmpty() || m_offline || !m_offlineName.isEmpty()) && m_instanceIdToLaunch.isEmpty()) { + std::cerr << "--server, --profile, --offline and --name can only be used in combination with --launch!" << std::endl; m_status = Application::Failed; return; } @@ -397,6 +403,10 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) if (!m_profileToUse.isEmpty()) { launch.args["profile"] = m_profileToUse; } + if (m_offline) { + launch.args["offline_enabled"] = "true"; + launch.args["offline_name"] = m_offlineName; + } m_peerInstance->sendMessage(launch.serialize(), timeout); } m_status = Application::Succeeded; @@ -1209,7 +1219,7 @@ void Application::performMainStartupAction() qDebug() << " Launching with account" << m_profileToUse; } - launch(inst, true, false, targetToJoin, accountToUse); + launch(inst, !m_offline, false, targetToJoin, accountToUse, m_offlineName); return; } } @@ -1308,6 +1318,8 @@ void Application::messageReceived(const QByteArray& message) QString server = received.args["server"]; QString world = received.args["world"]; QString profile = received.args["profile"]; + bool offline = received.args["offline_enabled"] == "true"; + QString offlineName = received.args["offline_name"]; InstancePtr instance; if (!id.isEmpty()) { @@ -1337,7 +1349,7 @@ void Application::messageReceived(const QByteArray& message) } } - launch(instance, true, false, serverObject, accountObject); + launch(instance, !offline, false, serverObject, accountObject, offlineName); } else { qWarning() << "Received invalid message" << message; } @@ -1375,7 +1387,12 @@ bool Application::openJsonEditor(const QString& filename) } } -bool Application::launch(InstancePtr instance, bool online, bool demo, MinecraftTarget::Ptr targetToJoin, MinecraftAccountPtr accountToUse) +bool Application::launch(InstancePtr instance, + bool online, + bool demo, + MinecraftTarget::Ptr targetToJoin, + MinecraftAccountPtr accountToUse, + const QString& offlineName) { if (m_updateRunning) { qDebug() << "Cannot launch instances while an update is running. Please try again when updates are completed."; @@ -1395,6 +1412,7 @@ bool Application::launch(InstancePtr instance, bool online, bool demo, Minecraft controller->setProfiler(profilers().value(instance->settings()->get("Profiler").toString(), nullptr).get()); controller->setTargetToJoin(targetToJoin); controller->setAccountToUse(accountToUse); + controller->setOfflineName(offlineName); if (window) { controller->setParentWidget(window); } else if (m_mainWindow) { diff --git a/launcher/Application.h b/launcher/Application.h index 692625f4a..5d672a148 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -211,7 +211,8 @@ class Application : public QApplication { bool online = true, bool demo = false, MinecraftTarget::Ptr targetToJoin = nullptr, - MinecraftAccountPtr accountToUse = nullptr); + MinecraftAccountPtr accountToUse = nullptr, + const QString &offlineName = QString()); bool kill(InstancePtr instance); void closeCurrentWindow(); @@ -300,6 +301,8 @@ class Application : public QApplication { QString m_serverToJoin; QString m_worldToJoin; QString m_profileToUse; + bool m_offline = false; + QString m_offlineName; bool m_liveCheck = false; QList m_urlsToImport; QString m_instanceIdToShowWindowOf; diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index e736135fa..dcec62e9e 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -235,10 +235,15 @@ void LaunchController::login() if (!m_session->wants_online) { // we ask the user for a player name bool ok = false; - auto name = askOfflineName(m_session->player_name, m_session->demo, ok); - if (!ok) { - tryagain = false; - break; + QString name; + if (m_offlineName.isEmpty()) { + name = askOfflineName(m_session->player_name, m_session->demo, ok); + if (!ok) { + tryagain = false; + break; + } + } else { + name = m_offlineName; } m_session->MakeOffline(name); // offline flavored game from here :3 diff --git a/launcher/LaunchController.h b/launcher/LaunchController.h index 08fd19cae..82cd2e23d 100644 --- a/launcher/LaunchController.h +++ b/launcher/LaunchController.h @@ -56,6 +56,8 @@ class LaunchController : public Task { void setOnline(bool online) { m_online = online; } + void setOfflineName(const QString &offlineName) { m_offlineName = offlineName; } + void setDemo(bool demo) { m_demo = demo; } void setProfiler(BaseProfilerFactory* profiler) { m_profiler = profiler; } @@ -88,6 +90,7 @@ class LaunchController : public Task { private: BaseProfilerFactory* m_profiler = nullptr; bool m_online = true; + QString m_offlineName; bool m_demo = false; InstancePtr m_instance; QWidget* m_parentWidget = nullptr; From afa1e0599a5c0f1f5276f86b3709ff07c43879bc Mon Sep 17 00:00:00 2001 From: Michael Tyson Date: Tue, 23 Apr 2024 16:05:26 +1000 Subject: [PATCH 333/616] Improved formatting Signed-off-by: Michael Tyson --- launcher/Application.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 5fa9da4ce..e48ed73f0 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -243,7 +243,9 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) { { "w", "world" }, "Join the specified world on launch (only valid in combination with --launch)", "world" }, { { "a", "profile" }, "Use the account specified by its profile name (only valid in combination with --launch)", "profile" }, { { "o", "offline" }, "Launch offline (only valid in combination with --launch)", "offline" }, - { { "n", "name" }, "When launching offline, use specified name (only makes sense in combination with --launch and --offline)", "name" }, + { { "n", "name" }, + "When launching offline, use specified name (only makes sense in combination with --launch and --offline)", + "name" }, { "alive", "Write a small '" + liveCheckFile + "' file after the launcher starts" }, { { "I", "import" }, "Import instance or resource from specified local path or URL", "url" }, { "show", "Opens the window for the specified instance (by instance ID)", "show" } }); From 56614444147afa9379877e591174a4ece7a54f32 Mon Sep 17 00:00:00 2001 From: Michael Tyson Date: Tue, 23 Apr 2024 16:53:29 +1000 Subject: [PATCH 334/616] =?UTF-8?q?Removed=20=E2=80=9C--name=E2=80=9D=20fl?= =?UTF-8?q?ag=20in=20favour=20of=20specifying=20offline=20player=20name=20?= =?UTF-8?q?via=20=E2=80=9C--offline=E2=80=9D=20flag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Michael Tyson --- launcher/Application.cpp | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index e48ed73f0..7e85938ce 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -242,10 +242,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) { { "s", "server" }, "Join the specified server on launch (only valid in combination with --launch)", "address" }, { { "w", "world" }, "Join the specified world on launch (only valid in combination with --launch)", "world" }, { { "a", "profile" }, "Use the account specified by its profile name (only valid in combination with --launch)", "profile" }, - { { "o", "offline" }, "Launch offline (only valid in combination with --launch)", "offline" }, - { { "n", "name" }, - "When launching offline, use specified name (only makes sense in combination with --launch and --offline)", - "name" }, + { { "o", "offline" }, "Launch offline, with given player name (only valid in combination with --launch)", "offline" }, { "alive", "Write a small '" + liveCheckFile + "' file after the launcher starts" }, { { "I", "import" }, "Import instance or resource from specified local path or URL", "url" }, { "show", "Opens the window for the specified instance (by instance ID)", "show" } }); @@ -263,7 +260,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_profileToUse = parser.value("profile"); if (parser.isSet("offline")) { m_offline = true; - m_offlineName = parser.value("name"); + m_offlineName = parser.value("offline"); } m_liveCheck = parser.isSet("alive"); @@ -279,8 +276,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) } // error if --launch is missing with --server or --profile - if ((!m_serverToJoin.isEmpty() || !m_worldToJoin.isEmpty() || !m_profileToUse.isEmpty() || m_offline || !m_offlineName.isEmpty()) && m_instanceIdToLaunch.isEmpty()) { - std::cerr << "--server, --profile, --offline and --name can only be used in combination with --launch!" << std::endl; + if ((!m_serverToJoin.isEmpty() || !m_worldToJoin.isEmpty() || !m_profileToUse.isEmpty() || m_offline) && m_instanceIdToLaunch.isEmpty()) { + std::cerr << "--server, --profile and --offline can only be used in combination with --launch!" << std::endl; m_status = Application::Failed; return; } From ced2f9d1a0c9ef65eb0f42efbf57c149362e88b9 Mon Sep 17 00:00:00 2001 From: Michael Tyson Date: Wed, 30 Oct 2024 12:51:34 +1100 Subject: [PATCH 335/616] Applied clang formatting Signed-off-by: Michael Tyson --- launcher/Application.cpp | 3 ++- launcher/Application.h | 2 +- launcher/LaunchController.h | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 7e85938ce..9a1ed440e 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -276,7 +276,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) } // error if --launch is missing with --server or --profile - if ((!m_serverToJoin.isEmpty() || !m_worldToJoin.isEmpty() || !m_profileToUse.isEmpty() || m_offline) && m_instanceIdToLaunch.isEmpty()) { + if ((!m_serverToJoin.isEmpty() || !m_worldToJoin.isEmpty() || !m_profileToUse.isEmpty() || m_offline) && + m_instanceIdToLaunch.isEmpty()) { std::cerr << "--server, --profile and --offline can only be used in combination with --launch!" << std::endl; m_status = Application::Failed; return; diff --git a/launcher/Application.h b/launcher/Application.h index 5d672a148..6b218f9f8 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -212,7 +212,7 @@ class Application : public QApplication { bool demo = false, MinecraftTarget::Ptr targetToJoin = nullptr, MinecraftAccountPtr accountToUse = nullptr, - const QString &offlineName = QString()); + const QString& offlineName = QString()); bool kill(InstancePtr instance); void closeCurrentWindow(); diff --git a/launcher/LaunchController.h b/launcher/LaunchController.h index 82cd2e23d..0abdeeb15 100644 --- a/launcher/LaunchController.h +++ b/launcher/LaunchController.h @@ -56,7 +56,7 @@ class LaunchController : public Task { void setOnline(bool online) { m_online = online; } - void setOfflineName(const QString &offlineName) { m_offlineName = offlineName; } + void setOfflineName(const QString& offlineName) { m_offlineName = offlineName; } void setDemo(bool demo) { m_demo = demo; } From 14c95b9d376975144faddc33e7154cca86621804 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 30 Oct 2024 17:15:42 +0200 Subject: [PATCH 336/616] fix macos system detection Signed-off-by: Trial97 --- launcher/SysInfo.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/SysInfo.cpp b/launcher/SysInfo.cpp index 0dfa74de7..cfcf63805 100644 --- a/launcher/SysInfo.cpp +++ b/launcher/SysInfo.cpp @@ -81,9 +81,9 @@ QString getSupportedJavaArchitecture() if (arch == "arm64") return "mac-os-arm64"; if (arch.contains("64")) - return "mac-os-64"; + return "mac-os-x64"; if (arch.contains("86")) - return "mac-os-86"; + return "mac-os-x86"; // Unknown, maybe something new, appending arch return "mac-os-" + arch; } else if (sys == "linux") { From 82bffabb69d2443f241c763f1812fb2c167f749d Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 30 Oct 2024 17:55:02 +0200 Subject: [PATCH 337/616] do not capture by default all values in lambdas Signed-off-by: Trial97 --- launcher/Application.cpp | 12 +- launcher/DataMigrationTask.cpp | 4 +- launcher/FileSystem.cpp | 10 +- launcher/InstanceCopyTask.cpp | 2 +- launcher/InstanceList.cpp | 2 +- launcher/Version.cpp | 2 +- launcher/filelink/FileLink.cpp | 6 +- launcher/java/JavaUtils.cpp | 8 +- launcher/launch/steps/PostLaunchCommand.cpp | 2 +- launcher/launch/steps/PreLaunchCommand.cpp | 2 +- launcher/meta/VersionList.cpp | 4 +- launcher/minecraft/Library.cpp | 8 +- launcher/minecraft/MinecraftInstance.cpp | 4 +- launcher/minecraft/OneSixVersionFormat.cpp | 2 +- launcher/minecraft/PackProfile.cpp | 2 +- .../minecraft/launch/LauncherPartLaunch.cpp | 4 +- .../minecraft/mod/ResourceFolderModel.cpp | 11 +- launcher/minecraft/mod/ResourceFolderModel.h | 56 ++++----- .../minecraft/mod/tasks/LocalModParseTask.cpp | 2 +- launcher/minecraft/update/LibrariesTask.cpp | 2 +- launcher/modplatform/EnsureMetadataTask.cpp | 4 +- .../atlauncher/ATLPackInstallTask.cpp | 12 +- .../flame/FlameInstanceCreationTask.cpp | 4 +- .../helpers/NetworkResourceAPI.cpp | 2 +- .../modrinth/ModrinthInstanceCreationTask.cpp | 10 +- launcher/translations/TranslationsModel.cpp | 2 +- launcher/ui/GuiUtil.cpp | 2 +- launcher/ui/MainWindow.cpp | 2 +- launcher/ui/dialogs/ModUpdateDialog.cpp | 16 ++- .../ui/dialogs/ResourceDownloadDialog.cpp | 10 +- launcher/ui/pages/instance/LogPage.cpp | 2 +- launcher/ui/pages/instance/OtherLogsPage.cpp | 4 +- .../ui/pages/modplatform/ResourceModel.cpp | 4 +- launcher/ui/setupwizard/SetupWizard.cpp | 2 +- launcher/ui/themes/CustomTheme.cpp | 6 +- tests/DummyResourceAPI.h | 2 +- tests/FileSystem_test.cpp | 113 +++++++----------- tests/Task_test.cpp | 14 +-- 38 files changed, 170 insertions(+), 186 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index ea749ca4c..8933586fc 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -835,7 +835,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) ":/icons/multimc/128x128/instances/", ":/icons/multimc/scalable/instances/" }; m_icons.reset(new IconList(instFolders, setting->get().toString())); connect(setting.get(), &Setting::SettingChanged, - [&](const Setting&, QVariant value) { m_icons->directoryChanged(value.toString()); }); + [this](const Setting&, QVariant value) { m_icons->directoryChanged(value.toString()); }); qDebug() << "<> Instance icons initialized."; } @@ -1070,11 +1070,11 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) bool Application::createSetupWizard() { - bool javaRequired = [&]() { - if (BuildConfig.JAVA_DOWNLOADER_ENABLED && m_settings->get("AutomaticJavaDownload").toBool()) { + bool javaRequired = [this]() { + if (BuildConfig.JAVA_DOWNLOADER_ENABLED && settings()->get("AutomaticJavaDownload").toBool()) { return false; } - bool ignoreJavaWizard = m_settings->get("IgnoreJavaWizard").toBool(); + bool ignoreJavaWizard = settings()->get("IgnoreJavaWizard").toBool(); if (ignoreJavaWizard) { return false; } @@ -1088,8 +1088,8 @@ bool Application::createSetupWizard() QString actualPath = FS::ResolveExecutable(currentJavaPath); return actualPath.isNull(); }(); - bool askjava = BuildConfig.JAVA_DOWNLOADER_ENABLED && !javaRequired && !m_settings->get("AutomaticJavaDownload").toBool() && - !m_settings->get("AutomaticJavaSwitch").toBool() && !m_settings->get("UserAskedAboutAutomaticJavaDownload").toBool(); + bool askjava = BuildConfig.JAVA_DOWNLOADER_ENABLED && !javaRequired && !settings()->get("AutomaticJavaDownload").toBool() && + !settings()->get("AutomaticJavaSwitch").toBool() && !settings()->get("UserAskedAboutAutomaticJavaDownload").toBool(); bool languageRequired = settings()->get("Language").toString().isEmpty(); bool pasteInterventionRequired = settings()->get("PastebinURL") != ""; bool validWidgets = m_themeManager->isValidApplicationTheme(settings()->get("ApplicationTheme").toString()); diff --git a/launcher/DataMigrationTask.cpp b/launcher/DataMigrationTask.cpp index 27ce5f01b..30f3a32e6 100644 --- a/launcher/DataMigrationTask.cpp +++ b/launcher/DataMigrationTask.cpp @@ -27,7 +27,7 @@ void DataMigrationTask::executeTask() // 1. Scan // Check how many files we gotta copy - m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [&] { + m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [this] { return m_copy(true); // dry run to collect amount of files }); connect(&m_copyFutureWatcher, &QFutureWatcher::finished, this, &DataMigrationTask::dryRunFinished); @@ -60,7 +60,7 @@ void DataMigrationTask::dryRunFinished() setProgress(m_copy.totalCopied(), m_toCopy); setStatus(tr("Copying %1…").arg(shortenedName)); }); - m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [&] { + m_copyFuture = QtConcurrent::run(QThreadPool::globalInstance(), [this] { return m_copy(false); // actually copy now }); connect(&m_copyFutureWatcher, &QFutureWatcher::finished, this, &DataMigrationTask::copyFinished); diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp index 512de28c2..954e7936e 100644 --- a/launcher/FileSystem.cpp +++ b/launcher/FileSystem.cpp @@ -341,7 +341,7 @@ bool copy::operator()(const QString& offset, bool dryRun) opt |= copy_opts::overwrite_existing; // Function that'll do the actual copying - auto copy_file = [&](QString src_path, QString relative_dst_path) { + auto copy_file = [this, dryRun, src, dst, opt, &err](QString src_path, QString relative_dst_path) { if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist)) return; @@ -428,7 +428,7 @@ void create_link::make_link_list(const QString& offset) m_recursive = true; // Function that'll do the actual linking - auto link_file = [&](QString src_path, QString relative_dst_path) { + auto link_file = [this, dst](QString src_path, QString relative_dst_path) { if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist)) { qDebug() << "path" << relative_dst_path << "in black list or not in whitelist"; return; @@ -523,7 +523,7 @@ void create_link::runPrivileged(const QString& offset) QString serverName = BuildConfig.LAUNCHER_APP_BINARY_NAME + "_filelink_server" + StringUtils::getRandomAlphaNumeric(); - connect(&m_linkServer, &QLocalServer::newConnection, this, [&]() { + connect(&m_linkServer, &QLocalServer::newConnection, this, [this, &gotResults]() { qDebug() << "Client connected, sending out pairs"; // construct block of data to send QByteArray block; @@ -605,7 +605,7 @@ void create_link::runPrivileged(const QString& offset) } ExternalLinkFileProcess* linkFileProcess = new ExternalLinkFileProcess(serverName, m_useHardLinks, this); - connect(linkFileProcess, &ExternalLinkFileProcess::processExited, this, [&]() { emit finishedPrivileged(gotResults); }); + connect(linkFileProcess, &ExternalLinkFileProcess::processExited, this, [this, gotResults]() { emit finishedPrivileged(gotResults); }); connect(linkFileProcess, &ExternalLinkFileProcess::finished, linkFileProcess, &QObject::deleteLater); linkFileProcess->start(); @@ -1295,7 +1295,7 @@ bool clone::operator()(const QString& offset, bool dryRun) std::error_code err; // Function that'll do the actual cloneing - auto cloneFile = [&](QString src_path, QString relative_dst_path) { + auto cloneFile = [this, dryRun, dst, &err](QString src_path, QString relative_dst_path) { if (m_matcher && (m_matcher->matches(relative_dst_path) != m_whitelist)) return; diff --git a/launcher/InstanceCopyTask.cpp b/launcher/InstanceCopyTask.cpp index 0220a4144..d335b11c4 100644 --- a/launcher/InstanceCopyTask.cpp +++ b/launcher/InstanceCopyTask.cpp @@ -91,7 +91,7 @@ void InstanceCopyTask::executeTask() QEventLoop loop; bool got_priv_results = false; - connect(&folderLink, &FS::create_link::finishedPrivileged, this, [&](bool gotResults) { + connect(&folderLink, &FS::create_link::finishedPrivileged, this, [&got_priv_results, &loop](bool gotResults) { if (!gotResults) { qDebug() << "Privileged run exited without results!"; } diff --git a/launcher/InstanceList.cpp b/launcher/InstanceList.cpp index e1fa755dd..918fa1073 100644 --- a/launcher/InstanceList.cpp +++ b/launcher/InstanceList.cpp @@ -487,7 +487,7 @@ InstanceList::InstListError InstanceList::loadList() int front_bookmark = -1; int back_bookmark = -1; int currentItem = -1; - auto removeNow = [&]() { + auto removeNow = [this, &front_bookmark, &back_bookmark, ¤tItem]() { beginRemoveRows(QModelIndex(), front_bookmark, back_bookmark); m_instances.erase(m_instances.begin() + front_bookmark, m_instances.begin() + back_bookmark + 1); endRemoveRows(); diff --git a/launcher/Version.cpp b/launcher/Version.cpp index 2edb17e72..03a16e8a0 100644 --- a/launcher/Version.cpp +++ b/launcher/Version.cpp @@ -79,7 +79,7 @@ void Version::parse() if (m_string.isEmpty()) return; - auto classChange = [&](QChar lastChar, QChar currentChar) { + auto classChange = [¤tSection](QChar lastChar, QChar currentChar) { if (lastChar.isNull()) return false; if (lastChar.isDigit() != currentChar.isDigit()) diff --git a/launcher/filelink/FileLink.cpp b/launcher/filelink/FileLink.cpp index bdf173ebc..b641b41d5 100644 --- a/launcher/filelink/FileLink.cpp +++ b/launcher/filelink/FileLink.cpp @@ -104,11 +104,11 @@ void FileLinkApp::joinServer(QString server) in.setDevice(&socket); - connect(&socket, &QLocalSocket::connected, this, [&]() { qDebug() << "connected to server"; }); + connect(&socket, &QLocalSocket::connected, this, []() { qDebug() << "connected to server"; }); connect(&socket, &QLocalSocket::readyRead, this, &FileLinkApp::readPathPairs); - connect(&socket, &QLocalSocket::errorOccurred, this, [&](QLocalSocket::LocalSocketError socketError) { + connect(&socket, &QLocalSocket::errorOccurred, this, [this](QLocalSocket::LocalSocketError socketError) { m_status = Failed; switch (socketError) { case QLocalSocket::ServerNotFoundError: @@ -132,7 +132,7 @@ void FileLinkApp::joinServer(QString server) } }); - connect(&socket, &QLocalSocket::disconnected, this, [&]() { + connect(&socket, &QLocalSocket::disconnected, this, [this]() { qDebug() << "disconnected from server, should exit"; m_status = Succeeded; exit(); diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp index f3200428e..4e5f32115 100644 --- a/launcher/java/JavaUtils.cpp +++ b/launcher/java/JavaUtils.cpp @@ -405,7 +405,7 @@ QList JavaUtils::FindJavaPaths() { QList javas; javas.append(this->GetDefaultJava()->path); - auto scanJavaDir = [&]( + auto scanJavaDir = [&javas]( const QString& dirPath, const std::function& filter = [](const QFileInfo&) { return true; }) { QDir dir(dirPath); @@ -424,7 +424,7 @@ QList JavaUtils::FindJavaPaths() }; // java installed in a snap is installed in the standard directory, but underneath $SNAP auto snap = qEnvironmentVariable("SNAP"); - auto scanJavaDirs = [&](const QString& dirPath) { + auto scanJavaDirs = [scanJavaDir, snap](const QString& dirPath) { scanJavaDir(dirPath); if (!snap.isNull()) { scanJavaDir(snap + dirPath); @@ -546,12 +546,12 @@ QStringList getPrismJavaBundle() { QList javas; - auto scanDir = [&](QString prefix) { + auto scanDir = [&javas](QString prefix) { javas.append(FS::PathCombine(prefix, "jre", "bin", JavaUtils::javaExecutable)); javas.append(FS::PathCombine(prefix, "bin", JavaUtils::javaExecutable)); javas.append(FS::PathCombine(prefix, JavaUtils::javaExecutable)); }; - auto scanJavaDir = [&](const QString& dirPath) { + auto scanJavaDir = [scanDir](const QString& dirPath) { QDir dir(dirPath); if (!dir.exists()) return; diff --git a/launcher/launch/steps/PostLaunchCommand.cpp b/launcher/launch/steps/PostLaunchCommand.cpp index 725101224..b3985bbac 100644 --- a/launcher/launch/steps/PostLaunchCommand.cpp +++ b/launcher/launch/steps/PostLaunchCommand.cpp @@ -65,7 +65,7 @@ void PostLaunchCommand::executeTask() void PostLaunchCommand::on_state(LoggedProcess::State state) { - auto getError = [&]() { return tr("Post-Launch command failed with code %1.\n\n").arg(m_process.exitCode()); }; + auto getError = [this]() { return tr("Post-Launch command failed with code %1.\n\n").arg(m_process.exitCode()); }; switch (state) { case LoggedProcess::Aborted: case LoggedProcess::Crashed: diff --git a/launcher/launch/steps/PreLaunchCommand.cpp b/launcher/launch/steps/PreLaunchCommand.cpp index 6d071a66e..0c22d5c16 100644 --- a/launcher/launch/steps/PreLaunchCommand.cpp +++ b/launcher/launch/steps/PreLaunchCommand.cpp @@ -65,7 +65,7 @@ void PreLaunchCommand::executeTask() void PreLaunchCommand::on_state(LoggedProcess::State state) { - auto getError = [&]() { return tr("Pre-Launch command failed with code %1.\n\n").arg(m_process.exitCode()); }; + auto getError = [this]() { return tr("Pre-Launch command failed with code %1.\n\n").arg(m_process.exitCode()); }; switch (state) { case LoggedProcess::Aborted: case LoggedProcess::Crashed: diff --git a/launcher/meta/VersionList.cpp b/launcher/meta/VersionList.cpp index 6856b5f8d..a832c675c 100644 --- a/launcher/meta/VersionList.cpp +++ b/launcher/meta/VersionList.cpp @@ -159,8 +159,8 @@ Version::Ptr VersionList::getVersion(const QString& version) bool VersionList::hasVersion(QString version) const { - auto ver = - std::find_if(m_versions.constBegin(), m_versions.constEnd(), [&](Meta::Version::Ptr const& a) { return a->version() == version; }); + auto ver = std::find_if(m_versions.constBegin(), m_versions.constEnd(), + [version](Meta::Version::Ptr const& a) { return a->version() == version; }); return (ver != m_versions.constEnd()); } diff --git a/launcher/minecraft/Library.cpp b/launcher/minecraft/Library.cpp index 4f04f0eb9..0bc462474 100644 --- a/launcher/minecraft/Library.cpp +++ b/launcher/minecraft/Library.cpp @@ -65,7 +65,7 @@ void Library::getApplicableFiles(const RuntimeContext& runtimeContext, { bool local = isLocal(); // Lambda function to get the absolute file path - auto actualPath = [&](QString relPath) { + auto actualPath = [this, local, overridePath](QString relPath) { relPath = FS::RemoveInvalidPathChars(relPath); QFileInfo out(FS::PathCombine(storagePrefix(), relPath)); if (local && !overridePath.isEmpty()) { @@ -115,7 +115,7 @@ QList Library::getDownloads(const RuntimeContext& runtimeC bool local = isLocal(); // Lambda function to check if a local file exists - auto check_local_file = [&](QString storage) { + auto check_local_file = [overridePath, &failedLocalFiles](QString storage) { QFileInfo fileinfo(storage); QString fileName = fileinfo.fileName(); auto fullPath = FS::PathCombine(overridePath, fileName); @@ -128,7 +128,7 @@ QList Library::getDownloads(const RuntimeContext& runtimeC }; // Lambda function to add a download request - auto add_download = [&](QString storage, QString url, QString sha1) { + auto add_download = [this, local, check_local_file, cache, stale, &out](QString storage, QString url, QString sha1) { if (local) { return check_local_file(storage); } @@ -198,7 +198,7 @@ QList Library::getDownloads(const RuntimeContext& runtimeC } } } else { - auto raw_dl = [&]() { + auto raw_dl = [this, raw_storage]() { if (!m_absoluteURL.isEmpty()) { return m_absoluteURL; } diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 5be3802bc..2b607b948 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -854,7 +854,7 @@ QStringList MinecraftInstance::verboseDescription(AuthSessionPtr session, Minecr out << "Libraries:"; QStringList jars, nativeJars; profile->getLibraryFiles(runtimeContext(), jars, nativeJars, getLocalLibraryPath(), binRoot()); - auto printLibFile = [&](const QString& path) { + auto printLibFile = [&out](const QString& path) { QFileInfo info(path); if (info.exists()) { out << " " + path; @@ -874,7 +874,7 @@ QStringList MinecraftInstance::verboseDescription(AuthSessionPtr session, Minecr } // mods and core mods - auto printModList = [&](const QString& label, ModFolderModel& model) { + auto printModList = [&out](const QString& label, ModFolderModel& model) { if (model.size()) { out << QString("%1:").arg(label); auto modList = model.allMods(); diff --git a/launcher/minecraft/OneSixVersionFormat.cpp b/launcher/minecraft/OneSixVersionFormat.cpp index bd587beb2..684869c8d 100644 --- a/launcher/minecraft/OneSixVersionFormat.cpp +++ b/launcher/minecraft/OneSixVersionFormat.cpp @@ -176,7 +176,7 @@ VersionFilePtr OneSixVersionFormat::versionFileFromJson(const QJsonDocument& doc } } - auto readLibs = [&](const char* which, QList& outList) { + auto readLibs = [&root, &out, &filename](const char* which, QList& outList) { for (auto libVal : requireArray(root.value(which))) { QJsonObject libObj = requireObject(libVal); // parse the library diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index f1d2473c2..1acc87166 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -746,7 +746,7 @@ bool PackProfile::removeComponent_internal(ComponentPtr patch) } // FIXME: we need a generic way of removing local resources, not just jar mods... - auto preRemoveJarMod = [&](LibraryPtr jarMod) -> bool { + auto preRemoveJarMod = [this](LibraryPtr jarMod) -> bool { if (!jarMod->isLocal()) { return true; } diff --git a/launcher/minecraft/launch/LauncherPartLaunch.cpp b/launcher/minecraft/launch/LauncherPartLaunch.cpp index d9a2b9b6b..7f0edbdab 100644 --- a/launcher/minecraft/launch/LauncherPartLaunch.cpp +++ b/launcher/minecraft/launch/LauncherPartLaunch.cpp @@ -54,8 +54,8 @@ LauncherPartLaunch::LauncherPartLaunch(LaunchTask* parent) { if (parent->instance()->settings()->get("CloseAfterLaunch").toBool()) { std::shared_ptr connection{ new QMetaObject::Connection }; - *connection = - connect(&m_process, &LoggedProcess::log, this, [=](const QStringList& lines, [[maybe_unused]] MessageLevel::Enum level) { + *connection = connect( + &m_process, &LoggedProcess::log, this, [connection](const QStringList& lines, [[maybe_unused]] MessageLevel::Enum level) { qDebug() << lines; if (lines.filter(QRegularExpression(".*Setting user.+", QRegularExpression::CaseInsensitiveOption)).length() != 0) { APPLICATION->closeAllWindows(); diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index ce3e16bce..40ea3adab 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -245,7 +245,7 @@ bool ResourceFolderModel::update() connect(m_current_update_task.get(), &Task::failed, this, &ResourceFolderModel::onUpdateFailed, Qt::ConnectionType::QueuedConnection); connect( m_current_update_task.get(), &Task::finished, this, - [=] { + [this] { m_current_update_task.reset(); if (m_scheduled_update) { m_scheduled_update = false; @@ -277,11 +277,14 @@ void ResourceFolderModel::resolveResource(Resource* res) m_active_parse_tasks.insert(ticket, task); connect( - task.get(), &Task::succeeded, this, [=] { onParseSucceeded(ticket, res->internal_id()); }, Qt::ConnectionType::QueuedConnection); - connect(task.get(), &Task::failed, this, [=] { onParseFailed(ticket, res->internal_id()); }, Qt::ConnectionType::QueuedConnection); + task.get(), &Task::succeeded, this, [this, ticket, res] { onParseSucceeded(ticket, res->internal_id()); }, + Qt::ConnectionType::QueuedConnection); + connect( + task.get(), &Task::failed, this, [this, ticket, res] { onParseFailed(ticket, res->internal_id()); }, + Qt::ConnectionType::QueuedConnection); connect( task.get(), &Task::finished, this, - [=] { + [this, ticket] { m_active_parse_tasks.remove(ticket); emit parseFinished(); }, diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index ca919d3e3..5e67ca9c3 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -222,34 +222,34 @@ class ResourceFolderModel : public QAbstractListModel { }; /* A macro to define useful functions to handle Resource* -> T* more easily on derived classes */ -#define RESOURCE_HELPERS(T) \ - [[nodiscard]] T* operator[](int index) \ - { \ - return static_cast(m_resources[index].get()); \ - } \ - [[nodiscard]] T* at(int index) \ - { \ - return static_cast(m_resources[index].get()); \ - } \ - [[nodiscard]] const T* at(int index) const \ - { \ - return static_cast(m_resources.at(index).get()); \ - } \ - [[nodiscard]] T* first() \ - { \ - return static_cast(m_resources.first().get()); \ - } \ - [[nodiscard]] T* last() \ - { \ - return static_cast(m_resources.last().get()); \ - } \ - [[nodiscard]] T* find(QString id) \ - { \ - auto iter = std::find_if(m_resources.constBegin(), m_resources.constEnd(), \ - [&](Resource::Ptr const& r) { return r->internal_id() == id; }); \ - if (iter == m_resources.constEnd()) \ - return nullptr; \ - return static_cast((*iter).get()); \ +#define RESOURCE_HELPERS(T) \ + [[nodiscard]] T* operator[](int index) \ + { \ + return static_cast(m_resources[index].get()); \ + } \ + [[nodiscard]] T* at(int index) \ + { \ + return static_cast(m_resources[index].get()); \ + } \ + [[nodiscard]] const T* at(int index) const \ + { \ + return static_cast(m_resources.at(index).get()); \ + } \ + [[nodiscard]] T* first() \ + { \ + return static_cast(m_resources.first().get()); \ + } \ + [[nodiscard]] T* last() \ + { \ + return static_cast(m_resources.last().get()); \ + } \ + [[nodiscard]] T* find(QString id) \ + { \ + auto iter = std::find_if(m_resources.constBegin(), m_resources.constEnd(), \ + [id](Resource::Ptr const& r) { return r->internal_id() == id; }); \ + if (iter == m_resources.constEnd()) \ + return nullptr; \ + return static_cast((*iter).get()); \ } /* Template definition to avoid some code duplication */ diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp index d456211f8..de62ffdde 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -24,7 +24,7 @@ namespace ModUtils { // https://github.com/MinecraftForge/FML/wiki/FML-mod-information-file/5bf6a2d05145ec79387acc0d45c958642fb049fc ModDetails ReadMCModInfo(QByteArray contents) { - auto getInfoFromArray = [&](QJsonArray arr) -> ModDetails { + auto getInfoFromArray = [](QJsonArray arr) -> ModDetails { if (!arr.at(0).isObject()) { return {}; } diff --git a/launcher/minecraft/update/LibrariesTask.cpp b/launcher/minecraft/update/LibrariesTask.cpp index 1581b32ee..e64691d51 100644 --- a/launcher/minecraft/update/LibrariesTask.cpp +++ b/launcher/minecraft/update/LibrariesTask.cpp @@ -25,7 +25,7 @@ void LibrariesTask::executeTask() auto metacache = APPLICATION->metacache(); - auto processArtifactPool = [&](const QList& pool, QStringList& errors, const QString& localPath) { + auto processArtifactPool = [this, inst, metacache](const QList& pool, QStringList& errors, const QString& localPath) { for (auto lib : pool) { if (!lib) { emitFailed(tr("Null jar is specified in the metadata, aborting.")); diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index f6f49f38d..6aa83da10 100644 --- a/launcher/modplatform/EnsureMetadataTask.cpp +++ b/launcher/modplatform/EnsureMetadataTask.cpp @@ -144,7 +144,7 @@ void EnsureMetadataTask::executeTask() return; } - connect(project_task.get(), &Task::finished, this, [=] { + connect(project_task.get(), &Task::finished, this, [this, invalidade_leftover, project_task] { invalidade_leftover(); project_task->deleteLater(); if (m_current_task) @@ -156,7 +156,7 @@ void EnsureMetadataTask::executeTask() project_task->start(); }); - connect(version_task.get(), &Task::finished, [=] { + connect(version_task.get(), &Task::finished, [this, version_task] { version_task->deleteLater(); if (m_current_task) m_current_task.reset(); diff --git a/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp b/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp index abe7d0177..a0898edbd 100644 --- a/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp +++ b/launcher/modplatform/atlauncher/ATLPackInstallTask.cpp @@ -641,22 +641,22 @@ void PackInstallTask::installConfigs() jobPtr->addNetAction(dl); archivePath = entry->getFullPath(); - connect(jobPtr.get(), &NetJob::succeeded, this, [&]() { + connect(jobPtr.get(), &NetJob::succeeded, this, [this]() { abortable = false; jobPtr.reset(); extractConfigs(); }); - connect(jobPtr.get(), &NetJob::failed, [&](QString reason) { + connect(jobPtr.get(), &NetJob::failed, [this](QString reason) { abortable = false; jobPtr.reset(); emitFailed(reason); }); - connect(jobPtr.get(), &NetJob::progress, [&](qint64 current, qint64 total) { + connect(jobPtr.get(), &NetJob::progress, [this](qint64 current, qint64 total) { abortable = true; setProgress(current, total); }); connect(jobPtr.get(), &NetJob::stepProgress, this, &PackInstallTask::propagateStepProgress); - connect(jobPtr.get(), &NetJob::aborted, [&] { + connect(jobPtr.get(), &NetJob::aborted, [this] { abortable = false; jobPtr.reset(); emitAborted(); @@ -685,8 +685,8 @@ void PackInstallTask::extractConfigs() m_extractFuture = QtConcurrent::run(QThreadPool::globalInstance(), MMCZip::extractDir, archivePath, extractDir.absolutePath() + "/minecraft"); #endif - connect(&m_extractFutureWatcher, &QFutureWatcher::finished, this, [&]() { downloadMods(); }); - connect(&m_extractFutureWatcher, &QFutureWatcher::canceled, this, [&]() { emitAborted(); }); + connect(&m_extractFutureWatcher, &QFutureWatcher::finished, this, [this]() { downloadMods(); }); + connect(&m_extractFutureWatcher, &QFutureWatcher::canceled, this, [this]() { emitAborted(); }); m_extractFutureWatcher.setFuture(m_extractFuture); } diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index b8c40ee42..381d91d22 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -439,7 +439,7 @@ bool FlameCreationTask::createInstance() m_mod_id_resolver.reset(new Flame::FileResolvingTask(APPLICATION->network(), m_pack)); connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::succeeded, this, [this, &loop] { idResolverSucceeded(loop); }); - connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::failed, [&](QString reason) { + connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::failed, [this, &loop](QString reason) { m_mod_id_resolver.reset(); setError(tr("Unable to resolve mod IDs:\n") + reason); loop.quit(); @@ -561,7 +561,7 @@ void FlameCreationTask::setupDownloadJob(QEventLoop& loop) m_files_job.reset(); validateZIPResources(loop); }); - connect(m_files_job.get(), &NetJob::failed, [&](QString reason) { + connect(m_files_job.get(), &NetJob::failed, [this](QString reason) { m_files_job.reset(); setError(reason); }); diff --git a/launcher/modplatform/helpers/NetworkResourceAPI.cpp b/launcher/modplatform/helpers/NetworkResourceAPI.cpp index 974e732a7..d56e39782 100644 --- a/launcher/modplatform/helpers/NetworkResourceAPI.cpp +++ b/launcher/modplatform/helpers/NetworkResourceAPI.cpp @@ -141,7 +141,7 @@ Task::Ptr NetworkResourceAPI::getDependencyVersion(DependencySearchArgs&& args, netJob->addNetAction(Net::ApiDownload::makeByteArray(versions_url, response)); - QObject::connect(netJob.get(), &NetJob::succeeded, [=] { + QObject::connect(netJob.get(), &NetJob::succeeded, [response, callbacks, args] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); if (parse_error.error != QJsonParseError::NoError) { diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index 994dd774f..a9298b443 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -283,13 +283,13 @@ bool ModrinthCreationTask::createInstance() bool ended_well = false; - connect(downloadMods.get(), &NetJob::succeeded, this, [&]() { ended_well = true; }); - connect(downloadMods.get(), &NetJob::failed, [&](const QString& reason) { + connect(downloadMods.get(), &NetJob::succeeded, this, [&ended_well]() { ended_well = true; }); + connect(downloadMods.get(), &NetJob::failed, [this, &ended_well](const QString& reason) { ended_well = false; setError(reason); }); connect(downloadMods.get(), &NetJob::finished, &loop, &QEventLoop::quit); - connect(downloadMods.get(), &NetJob::progress, [&](qint64 current, qint64 total) { + connect(downloadMods.get(), &NetJob::progress, [this](qint64 current, qint64 total) { setDetails(tr("%1 out of %2 complete").arg(current).arg(total)); setProgress(current, total); }); @@ -311,9 +311,9 @@ bool ModrinthCreationTask::createInstance() QEventLoop ensureMetaLoop; QDir folder = FS::PathCombine(instance.modsRoot(), ".index"); auto ensureMetadataTask = makeShared(mods, folder, ModPlatform::ResourceProvider::MODRINTH); - connect(ensureMetadataTask.get(), &Task::succeeded, this, [&]() { ended_well = true; }); + connect(ensureMetadataTask.get(), &Task::succeeded, this, [&ended_well]() { ended_well = true; }); connect(ensureMetadataTask.get(), &Task::finished, &ensureMetaLoop, &QEventLoop::quit); - connect(ensureMetadataTask.get(), &Task::progress, [&](qint64 current, qint64 total) { + connect(ensureMetadataTask.get(), &Task::progress, [this](qint64 current, qint64 total) { setDetails(tr("%1 out of %2 complete").arg(current).arg(total)); setProgress(current, total); }); diff --git a/launcher/translations/TranslationsModel.cpp b/launcher/translations/TranslationsModel.cpp index d03469b78..429ead47d 100644 --- a/launcher/translations/TranslationsModel.cpp +++ b/launcher/translations/TranslationsModel.cpp @@ -419,7 +419,7 @@ int TranslationsModel::columnCount([[maybe_unused]] const QModelIndex& parent) c QVector::Iterator TranslationsModel::findLanguage(const QString& key) { - return std::find_if(d->m_languages.begin(), d->m_languages.end(), [&](Language& lang) { return lang.key == key; }); + return std::find_if(d->m_languages.begin(), d->m_languages.end(), [key](Language& lang) { return lang.key == key; }); } std::optional TranslationsModel::findLanguageAsOptional(const QString& key) diff --git a/launcher/ui/GuiUtil.cpp b/launcher/ui/GuiUtil.cpp index 584a34710..93b9a452b 100644 --- a/launcher/ui/GuiUtil.cpp +++ b/launcher/ui/GuiUtil.cpp @@ -112,7 +112,7 @@ static QStringList BrowseForFileInternal(QString context, QFileDialog w(parentWidget, caption); QSet locations; - auto f = [&](QStandardPaths::StandardLocation l) { + auto f = [&locations](QStandardPaths::StandardLocation l) { QString location = QStandardPaths::writableLocation(l); QFileInfo finfo(location); if (!finfo.exists()) { diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 09c47b609..075dbf7a2 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -154,7 +154,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi // Qt doesn't like vertical moving toolbars, so we have to force them... // See https://github.com/PolyMC/PolyMC/issues/493 connect(ui->instanceToolBar, &QToolBar::orientationChanged, - [=](Qt::Orientation) { ui->instanceToolBar->setOrientation(Qt::Vertical); }); + [this](Qt::Orientation) { ui->instanceToolBar->setOrientation(Qt::Vertical); }); // if you try to add a widget to a toolbar in a .ui file // qt designer will delete it when you save the file >:( diff --git a/launcher/ui/dialogs/ModUpdateDialog.cpp b/launcher/ui/dialogs/ModUpdateDialog.cpp index f906cfcea..bbceab379 100644 --- a/launcher/ui/dialogs/ModUpdateDialog.cpp +++ b/launcher/ui/dialogs/ModUpdateDialog.cpp @@ -106,9 +106,9 @@ void ModUpdateDialog::checkCandidates() } connect(&check_task, &Task::failed, this, - [&](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); + [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); - connect(&check_task, &Task::succeeded, this, [&]() { + connect(&check_task, &Task::succeeded, this, [this, &check_task]() { QStringList warnings = check_task.warnings(); if (warnings.count()) { CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec(); @@ -190,10 +190,14 @@ void ModUpdateDialog::checkCandidates() auto depTask = makeShared(this, m_instance, m_mod_model.get(), selectedVers); connect(depTask.get(), &Task::failed, this, - [&](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); + [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); - connect(depTask.get(), &Task::succeeded, this, [&]() { - QStringList warnings = depTask->warnings(); + auto weak = depTask.toWeakRef(); + connect(depTask.get(), &Task::succeeded, this, [this, weak]() { + QStringList warnings; + if (auto depTask = weak.lock()) { + warnings = depTask->warnings(); + } if (warnings.count()) { CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec(); } @@ -273,7 +277,7 @@ auto ModUpdateDialog::ensureMetadata() -> bool bool skip_rest = false; ModPlatform::ResourceProvider provider_rest = ModPlatform::ResourceProvider::MODRINTH; - auto addToTmp = [&](Mod* m, ModPlatform::ResourceProvider p) { + auto addToTmp = [&modrinth_tmp, &flame_tmp](Mod* m, ModPlatform::ResourceProvider p) { switch (p) { case ModPlatform::ResourceProvider::MODRINTH: modrinth_tmp.push_back(m); diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp index 02a8454b4..2e8af8d94 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp +++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp @@ -148,10 +148,14 @@ void ResourceDownloadDialog::confirm() QStringList depNames; if (auto task = getModDependenciesTask(); task) { connect(task.get(), &Task::failed, this, - [&](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); + [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); - connect(task.get(), &Task::succeeded, this, [&]() { - QStringList warnings = task->warnings(); + auto weak = task.toWeakRef(); + connect(task.get(), &Task::succeeded, this, [this, weak]() { + QStringList warnings; + if (auto task = weak.lock()) { + warnings = task->warnings(); + } if (warnings.count()) { CustomMessageBox::selectable(this, tr("Warnings"), warnings.join('\n'), QMessageBox::Warning)->exec(); } diff --git a/launcher/ui/pages/instance/LogPage.cpp b/launcher/ui/pages/instance/LogPage.cpp index 6a4888f9c..4962f90ce 100644 --- a/launcher/ui/pages/instance/LogPage.cpp +++ b/launcher/ui/pages/instance/LogPage.cpp @@ -90,7 +90,7 @@ class LogFormatProxyModel : public QIdentityProxyModel { QModelIndex find(const QModelIndex& start, const QString& value, bool reverse) const { QModelIndex parentIndex = parent(start); - auto compare = [&](int r) -> QModelIndex { + auto compare = [this, start, parentIndex, value](int r) -> QModelIndex { QModelIndex idx = index(r, start.column(), parentIndex); if (!idx.isValid() || idx == start) { return QModelIndex(); diff --git a/launcher/ui/pages/instance/OtherLogsPage.cpp b/launcher/ui/pages/instance/OtherLogsPage.cpp index ab5d98289..ed8ef68d9 100644 --- a/launcher/ui/pages/instance/OtherLogsPage.cpp +++ b/launcher/ui/pages/instance/OtherLogsPage.cpp @@ -138,7 +138,7 @@ void OtherLogsPage::on_btnReload_clicked() m_currentFile = QString(); QMessageBox::critical(this, tr("Error"), tr("Unable to open %1 for reading: %2").arg(m_currentFile, file.errorString())); } else { - auto setPlainText = [&](const QString& text) { + auto setPlainText = [this](const QString& text) { QString fontFamily = APPLICATION->settings()->get("ConsoleFont").toString(); bool conversionOk = false; int fontSize = APPLICATION->settings()->get("ConsoleFontSize").toInt(&conversionOk); @@ -149,7 +149,7 @@ void OtherLogsPage::on_btnReload_clicked() doc->setDefaultFont(QFont(fontFamily, fontSize)); ui->text->setPlainText(text); }; - auto showTooBig = [&]() { + auto showTooBig = [setPlainText, &file]() { setPlainText(tr("The file (%1) is too big. You may want to open it in a viewer optimized " "for large files.") .arg(file.fileName())); diff --git a/launcher/ui/pages/modplatform/ResourceModel.cpp b/launcher/ui/pages/modplatform/ResourceModel.cpp index 50a170fff..6b8309fb7 100644 --- a/launcher/ui/pages/modplatform/ResourceModel.cpp +++ b/launcher/ui/pages/modplatform/ResourceModel.cpp @@ -337,7 +337,7 @@ std::optional ResourceModel::getIcon(QModelIndex& index, const QUrl& url) auto icon_fetch_action = Net::ApiDownload::makeCached(url, cache_entry); auto full_file_path = cache_entry->getFullPath(); - connect(icon_fetch_action.get(), &Task::succeeded, this, [=] { + connect(icon_fetch_action.get(), &Task::succeeded, this, [this, url, full_file_path, index] { auto icon = QIcon(full_file_path); QPixmapCache::insert(url.toString(), icon.pixmap(icon.actualSize({ 64, 64 }))); @@ -345,7 +345,7 @@ std::optional ResourceModel::getIcon(QModelIndex& index, const QUrl& url) emit dataChanged(index, index, { Qt::DecorationRole }); }); - connect(icon_fetch_action.get(), &Task::failed, this, [=] { + connect(icon_fetch_action.get(), &Task::failed, this, [this, url] { m_currently_running_icon_actions.remove(url); m_failed_icon_actions.insert(url); }); diff --git a/launcher/ui/setupwizard/SetupWizard.cpp b/launcher/ui/setupwizard/SetupWizard.cpp index 4e5bd1dca..f2e51ee41 100644 --- a/launcher/ui/setupwizard/SetupWizard.cpp +++ b/launcher/ui/setupwizard/SetupWizard.cpp @@ -57,7 +57,7 @@ void SetupWizard::pageChanged(int id) if (basePagePtr->wantsRefreshButton()) { setButtonLayout({ QWizard::CustomButton1, QWizard::Stretch, QWizard::BackButton, QWizard::NextButton, QWizard::FinishButton }); auto customButton = button(QWizard::CustomButton1); - connect(customButton, &QAbstractButton::clicked, [&]() { + connect(customButton, &QAbstractButton::clicked, [this]() { auto basePagePtr = getCurrentBasePage(); if (basePagePtr) { basePagePtr->refresh(); diff --git a/launcher/ui/themes/CustomTheme.cpp b/launcher/ui/themes/CustomTheme.cpp index 081ba1900..b8c5738b7 100644 --- a/launcher/ui/themes/CustomTheme.cpp +++ b/launcher/ui/themes/CustomTheme.cpp @@ -181,7 +181,7 @@ bool CustomTheme::read(const QString& path, bool& hasCustomLogColors) m_widgets = Json::requireString(root, "widgets", "Qt widget theme"); m_qssFilePath = Json::ensureString(root, "qssFilePath", "themeStyle.css"); - auto readColor = [&](const QJsonObject& colors, const QString& colorName) -> QColor { + auto readColor = [](const QJsonObject& colors, const QString& colorName) -> QColor { auto colorValue = Json::ensureString(colors, colorName, QString()); if (!colorValue.isEmpty()) { QColor color(colorValue); @@ -196,7 +196,7 @@ bool CustomTheme::read(const QString& path, bool& hasCustomLogColors) if (root.contains("colors")) { auto colorsRoot = Json::requireObject(root, "colors"); - auto readAndSetPaletteColor = [&](QPalette::ColorRole role, const QString& colorName) { + auto readAndSetPaletteColor = [this, readColor, colorsRoot](QPalette::ColorRole role, const QString& colorName) { auto color = readColor(colorsRoot, colorName); if (color.isValid()) { m_palette.setColor(role, color); @@ -229,7 +229,7 @@ bool CustomTheme::read(const QString& path, bool& hasCustomLogColors) hasCustomLogColors = true; auto logColorsRoot = Json::requireObject(root, "logColors"); - auto readAndSetLogColor = [&](MessageLevel::Enum level, bool fg, const QString& colorName) { + auto readAndSetLogColor = [this, readColor, logColorsRoot](MessageLevel::Enum level, bool fg, const QString& colorName) { auto color = readColor(logColorsRoot, colorName); if (color.isValid()) { if (fg) diff --git a/tests/DummyResourceAPI.h b/tests/DummyResourceAPI.h index 35de95151..f8ab71e59 100644 --- a/tests/DummyResourceAPI.h +++ b/tests/DummyResourceAPI.h @@ -37,7 +37,7 @@ class DummyResourceAPI : public ResourceAPI { [[nodiscard]] Task::Ptr searchProjects(SearchArgs&&, SearchCallbacks&& callbacks) const override { auto task = makeShared(); - QObject::connect(task.get(), &Task::succeeded, [=] { + QObject::connect(task.get(), &Task::succeeded, [callbacks] { auto json = searchRequestResult(); callbacks.on_succeed(json); }); diff --git a/tests/FileSystem_test.cpp b/tests/FileSystem_test.cpp index 1d3cee85f..ca0313bb4 100644 --- a/tests/FileSystem_test.cpp +++ b/tests/FileSystem_test.cpp @@ -63,7 +63,7 @@ class LinkTask : public Task { qDebug() << "EXPECTED: Link failure, Windows requires permissions for symlinks"; qDebug() << "atempting to run with privelage"; - connect(m_lnk, &FS::create_link::finishedPrivileged, this, [&](bool gotResults) { + connect(m_lnk, &FS::create_link::finishedPrivileged, this, [this](bool gotResults) { if (gotResults) { emitSucceeded(); } else { @@ -113,22 +113,12 @@ class FileSystemTest : public QObject { QTest::addColumn("path1"); QTest::addColumn("path2"); - QTest::newRow("qt 1") << "/abc/def/ghi/jkl" - << "/abc/def" - << "ghi/jkl"; - QTest::newRow("qt 2") << "/abc/def/ghi/jkl" - << "/abc/def/" - << "ghi/jkl"; + QTest::newRow("qt 1") << "/abc/def/ghi/jkl" << "/abc/def" << "ghi/jkl"; + QTest::newRow("qt 2") << "/abc/def/ghi/jkl" << "/abc/def/" << "ghi/jkl"; #if defined(Q_OS_WIN) - QTest::newRow("win native, from C:") << "C:/abc" - << "C:" - << "abc"; - QTest::newRow("win native 1") << "C:/abc/def/ghi/jkl" - << "C:\\abc\\def" - << "ghi\\jkl"; - QTest::newRow("win native 2") << "C:/abc/def/ghi/jkl" - << "C:\\abc\\def\\" - << "ghi\\jkl"; + QTest::newRow("win native, from C:") << "C:/abc" << "C:" << "abc"; + QTest::newRow("win native 1") << "C:/abc/def/ghi/jkl" << "C:\\abc\\def" << "ghi\\jkl"; + QTest::newRow("win native 2") << "C:/abc/def/ghi/jkl" << "C:\\abc\\def\\" << "ghi\\jkl"; #endif } @@ -148,39 +138,15 @@ class FileSystemTest : public QObject { QTest::addColumn("path2"); QTest::addColumn("path3"); - QTest::newRow("qt 1") << "/abc/def/ghi/jkl" - << "/abc" - << "def" - << "ghi/jkl"; - QTest::newRow("qt 2") << "/abc/def/ghi/jkl" - << "/abc/" - << "def" - << "ghi/jkl"; - QTest::newRow("qt 3") << "/abc/def/ghi/jkl" - << "/abc" - << "def/" - << "ghi/jkl"; - QTest::newRow("qt 4") << "/abc/def/ghi/jkl" - << "/abc/" - << "def/" - << "ghi/jkl"; + QTest::newRow("qt 1") << "/abc/def/ghi/jkl" << "/abc" << "def" << "ghi/jkl"; + QTest::newRow("qt 2") << "/abc/def/ghi/jkl" << "/abc/" << "def" << "ghi/jkl"; + QTest::newRow("qt 3") << "/abc/def/ghi/jkl" << "/abc" << "def/" << "ghi/jkl"; + QTest::newRow("qt 4") << "/abc/def/ghi/jkl" << "/abc/" << "def/" << "ghi/jkl"; #if defined(Q_OS_WIN) - QTest::newRow("win 1") << "C:/abc/def/ghi/jkl" - << "C:\\abc" - << "def" - << "ghi\\jkl"; - QTest::newRow("win 2") << "C:/abc/def/ghi/jkl" - << "C:\\abc\\" - << "def" - << "ghi\\jkl"; - QTest::newRow("win 3") << "C:/abc/def/ghi/jkl" - << "C:\\abc" - << "def\\" - << "ghi\\jkl"; - QTest::newRow("win 4") << "C:/abc/def/ghi/jkl" - << "C:\\abc\\" - << "def" - << "ghi\\jkl"; + QTest::newRow("win 1") << "C:/abc/def/ghi/jkl" << "C:\\abc" << "def" << "ghi\\jkl"; + QTest::newRow("win 2") << "C:/abc/def/ghi/jkl" << "C:\\abc\\" << "def" << "ghi\\jkl"; + QTest::newRow("win 3") << "C:/abc/def/ghi/jkl" << "C:\\abc" << "def\\" << "ghi\\jkl"; + QTest::newRow("win 4") << "C:/abc/def/ghi/jkl" << "C:\\abc\\" << "def" << "ghi\\jkl"; #endif } @@ -369,11 +335,12 @@ class FileSystemTest : public QObject { LinkTask lnk_tsk(folder, target_dir.path()); lnk_tsk.linkRecursively(false); - QObject::connect(&lnk_tsk, &Task::finished, - [&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); + QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] { + QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); + }); lnk_tsk.start(); - QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); for (auto entry : target_dir.entryList()) { qDebug() << entry; @@ -465,11 +432,12 @@ class FileSystemTest : public QObject { RegexpMatcher re("[.]?mcmeta"); lnk_tsk.matcher(&re); lnk_tsk.linkRecursively(true); - QObject::connect(&lnk_tsk, &Task::finished, - [&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); + QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] { + QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); + }); lnk_tsk.start(); - QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); for (auto entry : target_dir.entryList()) { qDebug() << entry; @@ -512,11 +480,12 @@ class FileSystemTest : public QObject { lnk_tsk.matcher(&re); lnk_tsk.linkRecursively(true); lnk_tsk.whitelist(true); - QObject::connect(&lnk_tsk, &Task::finished, - [&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); + QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] { + QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); + }); lnk_tsk.start(); - QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); for (auto entry : target_dir.entryList()) { qDebug() << entry; @@ -556,11 +525,12 @@ class FileSystemTest : public QObject { LinkTask lnk_tsk(folder, target_dir.path()); lnk_tsk.linkRecursively(true); - QObject::connect(&lnk_tsk, &Task::finished, - [&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); + QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] { + QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); + }); lnk_tsk.start(); - QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); auto filter = QDir::Filter::Files | QDir::Filter::Dirs | QDir::Filter::Hidden; @@ -604,11 +574,12 @@ class FileSystemTest : public QObject { qDebug() << target_dir.path(); LinkTask lnk_tsk(file, target_dir.filePath("pack.mcmeta")); - QObject::connect(&lnk_tsk, &Task::finished, - [&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); + QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] { + QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); + }); lnk_tsk.start(); - QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); auto filter = QDir::Filter::Files; @@ -639,11 +610,12 @@ class FileSystemTest : public QObject { LinkTask lnk_tsk(folder, target_dir.path()); lnk_tsk.linkRecursively(true); lnk_tsk.setMaxDepth(0); - QObject::connect(&lnk_tsk, &Task::finished, - [&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); + QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] { + QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); + }); lnk_tsk.start(); - QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); QVERIFY(!QFileInfo(target_dir.path()).isSymLink()); @@ -689,13 +661,14 @@ class FileSystemTest : public QObject { LinkTask lnk_tsk(folder, target_dir.path()); lnk_tsk.linkRecursively(true); lnk_tsk.setMaxDepth(-1); - QObject::connect(&lnk_tsk, &Task::finished, - [&] { QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); }); + QObject::connect(&lnk_tsk, &Task::finished, [&lnk_tsk] { + QVERIFY2(lnk_tsk.wasSuccessful(), "Task finished but was not successful when it should have been."); + }); lnk_tsk.start(); - QVERIFY2(QTest::qWaitFor([&]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&lnk_tsk]() { return lnk_tsk.isFinished(); }, 100000), "Task didn't finish as it should."); - std::function verify_check = [&](QString check_path) { + std::function verify_check = [&verify_check](QString check_path) { QDir check_dir(check_path); auto filter = QDir::Filter::Files | QDir::Filter::Dirs | QDir::Filter::Hidden; for (auto entry : check_dir.entryList(filter)) { diff --git a/tests/Task_test.cpp b/tests/Task_test.cpp index 0740ba0a3..5b938293e 100644 --- a/tests/Task_test.cpp +++ b/tests/Task_test.cpp @@ -66,7 +66,7 @@ class BigConcurrentTaskThread : public QThread { } connect(&big_task, &Task::finished, this, &QThread::quit); - connect(&m_deadline, &QTimer::timeout, this, [&] { + connect(&m_deadline, &QTimer::timeout, this, [this] { passed_the_deadline = true; quit(); }); @@ -128,10 +128,10 @@ class TaskTest : public QObject { { BasicTask t; QObject::connect(&t, &Task::finished, - [&] { QVERIFY2(t.wasSuccessful(), "Task finished but was not successful when it should have been."); }); + [&t] { QVERIFY2(t.wasSuccessful(), "Task finished but was not successful when it should have been."); }); t.start(); - QVERIFY2(QTest::qWaitFor([&]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&t]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); } void test_basicConcurrentRun() @@ -154,7 +154,7 @@ class TaskTest : public QObject { }); t.start(); - QVERIFY2(QTest::qWaitFor([&]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&t]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); } // Tests if starting new tasks after the 6 initial ones is working @@ -196,7 +196,7 @@ class TaskTest : public QObject { }); t.start(); - QVERIFY2(QTest::qWaitFor([&]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&t]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); } void test_basicSequentialRun() @@ -219,7 +219,7 @@ class TaskTest : public QObject { }); t.start(); - QVERIFY2(QTest::qWaitFor([&]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&t]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); } void test_basicMultipleOptionsRun() @@ -242,7 +242,7 @@ class TaskTest : public QObject { }); t.start(); - QVERIFY2(QTest::qWaitFor([&]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); + QVERIFY2(QTest::qWaitFor([&t]() { return t.isFinished(); }, 1000), "Task didn't finish as it should."); } void test_stackOverflowInConcurrentTask() From 9ae16921bce00f38d7e83c4a14fe56f63edd03d4 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 30 Oct 2024 21:10:43 +0000 Subject: [PATCH 338/616] Remove BasicFolderLoadTask Signed-off-by: TheKodeToad --- .../minecraft/mod/tasks/BasicFolderLoadTask.h | 85 ------------------- 1 file changed, 85 deletions(-) delete mode 100644 launcher/minecraft/mod/tasks/BasicFolderLoadTask.h diff --git a/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h b/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h deleted file mode 100644 index fb2e22de6..000000000 --- a/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h +++ /dev/null @@ -1,85 +0,0 @@ -#pragma once - -#include -#include -#include -#include - -#include - -#include "Application.h" -#include "FileSystem.h" -#include "minecraft/mod/Resource.h" - -#include "tasks/Task.h" - -/** Very simple task that just loads a folder's contents directly. - */ -class BasicFolderLoadTask : public Task { - Q_OBJECT - public: - struct Result { - QMap resources; - }; - using ResultPtr = std::shared_ptr; - - [[nodiscard]] ResultPtr result() const { return m_result; } - - public: - BasicFolderLoadTask(QDir dir) : Task(nullptr, false), m_dir(dir), m_result(new Result), m_thread_to_spawn_into(thread()) - { - m_create_func = [](QFileInfo const& entry) -> Resource::Ptr { return makeShared(entry); }; - } - BasicFolderLoadTask(QDir dir, std::function create_function) - : Task(nullptr, false) - , m_dir(dir) - , m_result(new Result) - , m_create_func(std::move(create_function)) - , m_thread_to_spawn_into(thread()) - {} - - [[nodiscard]] bool canAbort() const override { return true; } - bool abort() override - { - m_aborted.store(true); - return true; - } - - void executeTask() override - { - if (thread() != m_thread_to_spawn_into) - connect(this, &Task::finished, this->thread(), &QThread::quit); - - m_dir.refresh(); - for (auto entry : m_dir.entryInfoList()) { - auto filePath = entry.absoluteFilePath(); - if (auto app = APPLICATION_DYN; app && app->checkQSavePath(filePath)) { - continue; - } - auto newFilePath = FS::getUniqueResourceName(filePath); - if (newFilePath != filePath) { - FS::move(filePath, newFilePath); - entry = QFileInfo(newFilePath); - } - auto resource = m_create_func(entry); - resource->moveToThread(m_thread_to_spawn_into); - m_result->resources.insert(resource->internal_id(), resource); - } - - if (m_aborted) - emit finished(); - else - emitSucceeded(); - } - - private: - QDir m_dir; - ResultPtr m_result; - - std::atomic m_aborted = false; - - std::function m_create_func; - - /** This is the thread in which we should put new mod objects */ - QThread* m_thread_to_spawn_into; -}; From 670c932f32753fd67979f95810b052d7a62a0006 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 31 Oct 2024 14:51:18 +0200 Subject: [PATCH 339/616] Fix installed typo Signed-off-by: Trial97 --- launcher/ui/dialogs/ResourceUpdateDialog.cpp | 2 +- launcher/ui/dialogs/ReviewMessageBox.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/dialogs/ResourceUpdateDialog.cpp b/launcher/ui/dialogs/ResourceUpdateDialog.cpp index 958bc9683..6d5ef7569 100644 --- a/launcher/ui/dialogs/ResourceUpdateDialog.cpp +++ b/launcher/ui/dialogs/ResourceUpdateDialog.cpp @@ -422,7 +422,7 @@ void ResourceUpdateDialog::appendResource(CheckUpdateTask::Update const& info, Q auto item_top = new QTreeWidgetItem(ui->modTreeWidget); item_top->setCheckState(0, info.enabled ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); if (!info.enabled) { - item_top->setToolTip(0, tr("Mod was disabled as it may be already instaled.")); + item_top->setToolTip(0, tr("Mod was disabled as it may be already installed.")); } item_top->setText(0, info.name); item_top->setExpanded(true); diff --git a/launcher/ui/dialogs/ReviewMessageBox.cpp b/launcher/ui/dialogs/ReviewMessageBox.cpp index fa79e4ed1..96cc8149f 100644 --- a/launcher/ui/dialogs/ReviewMessageBox.cpp +++ b/launcher/ui/dialogs/ReviewMessageBox.cpp @@ -41,7 +41,7 @@ void ReviewMessageBox::appendResource(ResourceInformation&& info) itemTop->setCheckState(0, info.enabled ? Qt::CheckState::Checked : Qt::CheckState::Unchecked); itemTop->setText(0, info.name); if (!info.enabled) { - itemTop->setToolTip(0, tr("Mod was disabled as it may be already instaled.")); + itemTop->setToolTip(0, tr("Mod was disabled as it may be already installed.")); } auto filenameItem = new QTreeWidgetItem(itemTop); From 2b590f24edb156ab3ff9ce9846908f1f2906738e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 28 Oct 2024 19:13:14 +0200 Subject: [PATCH 340/616] remove task parent from constuctor Signed-off-by: Trial97 --- launcher/Application.cpp | 2 +- launcher/DataMigrationTask.cpp | 7 ++----- launcher/DataMigrationTask.h | 2 +- launcher/JavaCommon.cpp | 4 ++-- launcher/LaunchController.cpp | 2 +- launcher/LaunchController.h | 2 +- launcher/java/JavaChecker.cpp | 4 ++-- launcher/java/JavaChecker.h | 3 +-- launcher/java/JavaInstallList.cpp | 4 ++-- launcher/launch/LaunchStep.cpp | 2 +- launcher/launch/steps/CheckJava.cpp | 2 +- launcher/meta/Index.cpp | 4 ++-- launcher/meta/VersionList.cpp | 3 +-- launcher/minecraft/ComponentUpdateTask.cpp | 2 +- launcher/minecraft/ComponentUpdateTask.h | 2 +- launcher/minecraft/MinecraftInstance.cpp | 2 +- launcher/minecraft/MinecraftLoadAndCheck.cpp | 4 +--- launcher/minecraft/MinecraftLoadAndCheck.h | 2 +- launcher/minecraft/auth/AuthFlow.cpp | 2 +- launcher/minecraft/auth/AuthFlow.h | 2 +- launcher/minecraft/auth/MinecraftAccount.cpp | 4 ++-- launcher/minecraft/launch/AutoInstallJava.cpp | 6 ++---- .../minecraft/mod/tasks/GetModDependenciesTask.cpp | 7 +++---- .../minecraft/mod/tasks/GetModDependenciesTask.h | 5 +---- .../minecraft/mod/tasks/LocalDataPackParseTask.cpp | 2 +- launcher/minecraft/mod/tasks/LocalModParseTask.cpp | 2 +- .../mod/tasks/LocalResourcePackParseTask.cpp | 4 +--- .../mod/tasks/LocalShaderPackParseTask.cpp | 2 +- .../mod/tasks/LocalTexturePackParseTask.cpp | 3 +-- .../mod/tasks/LocalWorldSaveParseTask.cpp | 2 +- .../minecraft/mod/tasks/ResourceFolderLoadTask.cpp | 2 +- launcher/modplatform/EnsureMetadataTask.cpp | 8 ++++---- .../flame/FlameInstanceCreationTask.cpp | 2 +- launcher/modplatform/flame/FlamePackExportTask.cpp | 3 +-- .../modplatform/modrinth/ModrinthCheckUpdate.cpp | 7 +++---- launcher/net/NetJob.cpp | 2 +- launcher/tasks/ConcurrentTask.cpp | 2 +- launcher/tasks/ConcurrentTask.h | 2 +- launcher/tasks/MultipleOptionsTask.cpp | 2 +- launcher/tasks/MultipleOptionsTask.h | 2 +- launcher/tasks/SequentialTask.cpp | 2 +- launcher/tasks/SequentialTask.h | 2 +- launcher/tasks/Task.cpp | 2 +- launcher/tasks/Task.h | 2 +- launcher/ui/dialogs/BlockedModsDialog.cpp | 2 +- launcher/ui/dialogs/MSALoginDialog.cpp | 2 +- launcher/ui/dialogs/ResourceDownloadDialog.cpp | 2 +- launcher/ui/dialogs/ResourceUpdateDialog.cpp | 9 ++++----- launcher/ui/java/InstallJavaDialog.cpp | 2 +- launcher/ui/pages/instance/ModFolderPage.cpp | 6 +++--- launcher/ui/pages/instance/ResourcePackPage.cpp | 13 ++++--------- launcher/ui/pages/instance/ShaderPackPage.cpp | 9 ++++----- launcher/ui/pages/instance/TexturePackPage.cpp | 14 ++++++-------- launcher/ui/pages/instance/VersionPage.cpp | 2 +- launcher/ui/widgets/JavaSettingsWidget.cpp | 2 +- tests/Task_test.cpp | 2 +- 56 files changed, 86 insertions(+), 113 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 11b80a006..b8fdb7def 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1871,7 +1871,7 @@ bool Application::handleDataMigration(const QString& currentData, matcher->add(std::make_shared("themes/")); ProgressDialog diag; - DataMigrationTask task(nullptr, oldData, currentData, matcher); + DataMigrationTask task(oldData, currentData, matcher); if (diag.execWithTask(&task)) { qDebug() << "<> Migration succeeded"; setDoNotMigrate(); diff --git a/launcher/DataMigrationTask.cpp b/launcher/DataMigrationTask.cpp index 27ce5f01b..4ffa26fd4 100644 --- a/launcher/DataMigrationTask.cpp +++ b/launcher/DataMigrationTask.cpp @@ -12,11 +12,8 @@ #include -DataMigrationTask::DataMigrationTask(QObject* parent, - const QString& sourcePath, - const QString& targetPath, - const IPathMatcher::Ptr pathMatcher) - : Task(parent), m_sourcePath(sourcePath), m_targetPath(targetPath), m_pathMatcher(pathMatcher), m_copy(sourcePath, targetPath) +DataMigrationTask::DataMigrationTask(const QString& sourcePath, const QString& targetPath, const IPathMatcher::Ptr pathMatcher) + : Task(), m_sourcePath(sourcePath), m_targetPath(targetPath), m_pathMatcher(pathMatcher), m_copy(sourcePath, targetPath) { m_copy.matcher(m_pathMatcher.get()).whitelist(true); } diff --git a/launcher/DataMigrationTask.h b/launcher/DataMigrationTask.h index aba9f2399..fc613cd5e 100644 --- a/launcher/DataMigrationTask.h +++ b/launcher/DataMigrationTask.h @@ -18,7 +18,7 @@ class DataMigrationTask : public Task { Q_OBJECT public: - explicit DataMigrationTask(QObject* parent, const QString& sourcePath, const QString& targetPath, IPathMatcher::Ptr pathmatcher); + explicit DataMigrationTask(const QString& sourcePath, const QString& targetPath, IPathMatcher::Ptr pathmatcher); ~DataMigrationTask() override = default; protected: diff --git a/launcher/JavaCommon.cpp b/launcher/JavaCommon.cpp index 3cbf9f9d5..188edb943 100644 --- a/launcher/JavaCommon.cpp +++ b/launcher/JavaCommon.cpp @@ -116,7 +116,7 @@ void JavaCommon::TestCheck::run() emit finished(); return; } - checker.reset(new JavaChecker(m_path, "", 0, 0, 0, 0, this)); + checker.reset(new JavaChecker(m_path, "", 0, 0, 0, 0)); connect(checker.get(), &JavaChecker::checkFinished, this, &JavaCommon::TestCheck::checkFinished); checker->start(); } @@ -128,7 +128,7 @@ void JavaCommon::TestCheck::checkFinished(const JavaChecker::Result& result) emit finished(); return; } - checker.reset(new JavaChecker(m_path, m_args, m_maxMem, m_maxMem, result.javaVersion.requiresPermGen() ? m_permGen : 0, 0, this)); + checker.reset(new JavaChecker(m_path, m_args, m_maxMem, m_maxMem, result.javaVersion.requiresPermGen() ? m_permGen : 0, 0)); connect(checker.get(), &JavaChecker::checkFinished, this, &JavaCommon::TestCheck::checkFinishedWithArgs); checker->start(); } diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index dcec62e9e..0aded4a95 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -62,7 +62,7 @@ #include "launch/steps/TextPrint.h" #include "tasks/Task.h" -LaunchController::LaunchController(QObject* parent) : Task(parent) {} +LaunchController::LaunchController() : Task() {} void LaunchController::executeTask() { diff --git a/launcher/LaunchController.h b/launcher/LaunchController.h index 0abdeeb15..7e6a27d91 100644 --- a/launcher/LaunchController.h +++ b/launcher/LaunchController.h @@ -47,7 +47,7 @@ class LaunchController : public Task { public: void executeTask() override; - LaunchController(QObject* parent = nullptr); + LaunchController(); virtual ~LaunchController() = default; void setInstance(InstancePtr instance) { m_instance = instance; } diff --git a/launcher/java/JavaChecker.cpp b/launcher/java/JavaChecker.cpp index c54a5b04b..772c90e42 100644 --- a/launcher/java/JavaChecker.cpp +++ b/launcher/java/JavaChecker.cpp @@ -44,8 +44,8 @@ #include "FileSystem.h" #include "java/JavaUtils.h" -JavaChecker::JavaChecker(QString path, QString args, int minMem, int maxMem, int permGen, int id, QObject* parent) - : Task(parent), m_path(path), m_args(args), m_minMem(minMem), m_maxMem(maxMem), m_permGen(permGen), m_id(id) +JavaChecker::JavaChecker(QString path, QString args, int minMem, int maxMem, int permGen, int id) + : Task(), m_path(path), m_args(args), m_minMem(minMem), m_maxMem(maxMem), m_permGen(permGen), m_id(id) {} void JavaChecker::executeTask() diff --git a/launcher/java/JavaChecker.h b/launcher/java/JavaChecker.h index 171a18b76..a04b68170 100644 --- a/launcher/java/JavaChecker.h +++ b/launcher/java/JavaChecker.h @@ -1,7 +1,6 @@ #pragma once #include #include -#include #include "JavaVersion.h" #include "QObjectPtr.h" @@ -26,7 +25,7 @@ class JavaChecker : public Task { enum class Validity { Errored, ReturnedInvalidData, Valid } validity = Validity::Errored; }; - explicit JavaChecker(QString path, QString args, int minMem = 0, int maxMem = 0, int permGen = 0, int id = 0, QObject* parent = 0); + explicit JavaChecker(QString path, QString args, int minMem = 0, int maxMem = 0, int permGen = 0, int id = 0); signals: void checkFinished(const Result& result); diff --git a/launcher/java/JavaInstallList.cpp b/launcher/java/JavaInstallList.cpp index 569fda306..aa7fab8a0 100644 --- a/launcher/java/JavaInstallList.cpp +++ b/launcher/java/JavaInstallList.cpp @@ -163,7 +163,7 @@ void JavaListLoadTask::executeTask() JavaUtils ju; QList candidate_paths = m_only_managed_versions ? getPrismJavaBundle() : ju.FindJavaPaths(); - ConcurrentTask::Ptr job(new ConcurrentTask(this, "Java detection", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); + ConcurrentTask::Ptr job(new ConcurrentTask("Java detection", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); m_job.reset(job); connect(m_job.get(), &Task::finished, this, &JavaListLoadTask::javaCheckerFinished); connect(m_job.get(), &Task::progress, this, &Task::setProgress); @@ -171,7 +171,7 @@ void JavaListLoadTask::executeTask() qDebug() << "Probing the following Java paths: "; int id = 0; for (QString candidate : candidate_paths) { - auto checker = new JavaChecker(candidate, "", 0, 0, 0, id, this); + auto checker = new JavaChecker(candidate, "", 0, 0, 0, id); connect(checker, &JavaChecker::checkFinished, [this](const JavaChecker::Result& result) { m_results << result; }); job->addTask(Task::Ptr(checker)); id++; diff --git a/launcher/launch/LaunchStep.cpp b/launcher/launch/LaunchStep.cpp index f3e9dfce0..0b352ea9f 100644 --- a/launcher/launch/LaunchStep.cpp +++ b/launcher/launch/LaunchStep.cpp @@ -16,7 +16,7 @@ #include "LaunchStep.h" #include "LaunchTask.h" -LaunchStep::LaunchStep(LaunchTask* parent) : Task(parent), m_parent(parent) +LaunchStep::LaunchStep(LaunchTask* parent) : Task(), m_parent(parent) { connect(this, &LaunchStep::readyForLaunch, parent, &LaunchTask::onReadyForLaunch); connect(this, &LaunchStep::logLine, parent, &LaunchTask::onLogLine); diff --git a/launcher/launch/steps/CheckJava.cpp b/launcher/launch/steps/CheckJava.cpp index 55d13b58c..0f8d27e94 100644 --- a/launcher/launch/steps/CheckJava.cpp +++ b/launcher/launch/steps/CheckJava.cpp @@ -94,7 +94,7 @@ void CheckJava::executeTask() // if timestamps are not the same, or something is missing, check! if (m_javaSignature != storedSignature || storedVersion.size() == 0 || storedArchitecture.size() == 0 || storedRealArchitecture.size() == 0 || storedVendor.size() == 0) { - m_JavaChecker.reset(new JavaChecker(realJavaPath, "", 0, 0, 0, 0, this)); + m_JavaChecker.reset(new JavaChecker(realJavaPath, "", 0, 0, 0, 0)); emit logLine(QString("Checking Java version..."), MessageLevel::Launcher); connect(m_JavaChecker.get(), &JavaChecker::checkFinished, this, &CheckJava::checkJavaFinished); m_JavaChecker->start(); diff --git a/launcher/meta/Index.cpp b/launcher/meta/Index.cpp index bd0745b6b..1707854be 100644 --- a/launcher/meta/Index.cpp +++ b/launcher/meta/Index.cpp @@ -140,8 +140,8 @@ Task::Ptr Index::loadVersion(const QString& uid, const QString& version, Net::Mo } auto versionList = get(uid); - auto loadTask = makeShared( - this, tr("Load meta for %1:%2", "This is for the task name that loads the meta index.").arg(uid, version)); + auto loadTask = + makeShared(tr("Load meta for %1:%2", "This is for the task name that loads the meta index.").arg(uid, version)); if (status() != BaseEntity::LoadStatus::Remote || force) { loadTask->addTask(this->loadTask(mode)); } diff --git a/launcher/meta/VersionList.cpp b/launcher/meta/VersionList.cpp index 6856b5f8d..f96355658 100644 --- a/launcher/meta/VersionList.cpp +++ b/launcher/meta/VersionList.cpp @@ -34,8 +34,7 @@ VersionList::VersionList(const QString& uid, QObject* parent) : BaseVersionList( Task::Ptr VersionList::getLoadTask() { - auto loadTask = - makeShared(this, tr("Load meta for %1", "This is for the task name that loads the meta index.").arg(m_uid)); + auto loadTask = makeShared(tr("Load meta for %1", "This is for the task name that loads the meta index.").arg(m_uid)); loadTask->addTask(APPLICATION->metadataIndex()->loadTask(Net::Mode::Online)); loadTask->addTask(this->loadTask(Net::Mode::Online)); return loadTask; diff --git a/launcher/minecraft/ComponentUpdateTask.cpp b/launcher/minecraft/ComponentUpdateTask.cpp index 6656a84f8..36a07ee72 100644 --- a/launcher/minecraft/ComponentUpdateTask.cpp +++ b/launcher/minecraft/ComponentUpdateTask.cpp @@ -38,7 +38,7 @@ * If the component list changes, start over. */ -ComponentUpdateTask::ComponentUpdateTask(Mode mode, Net::Mode netmode, PackProfile* list, QObject* parent) : Task(parent) +ComponentUpdateTask::ComponentUpdateTask(Mode mode, Net::Mode netmode, PackProfile* list) : Task() { d.reset(new ComponentUpdateTaskData); d->m_profile = list; diff --git a/launcher/minecraft/ComponentUpdateTask.h b/launcher/minecraft/ComponentUpdateTask.h index 484c0bedd..64c55877b 100644 --- a/launcher/minecraft/ComponentUpdateTask.h +++ b/launcher/minecraft/ComponentUpdateTask.h @@ -14,7 +14,7 @@ class ComponentUpdateTask : public Task { enum class Mode { Launch, Resolution }; public: - explicit ComponentUpdateTask(Mode mode, Net::Mode netmode, PackProfile* list, QObject* parent = 0); + explicit ComponentUpdateTask(Mode mode, Net::Mode netmode, PackProfile* list); virtual ~ComponentUpdateTask(); protected: diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index a1a6a6c7b..7470bef06 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -1119,7 +1119,7 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt // load meta { auto mode = session->status != AuthSession::PlayableOffline ? Net::Mode::Online : Net::Mode::Offline; - process->appendStep(makeShared(pptr, makeShared(this, mode, pptr))); + process->appendStep(makeShared(pptr, makeShared(this, mode))); } // check java diff --git a/launcher/minecraft/MinecraftLoadAndCheck.cpp b/launcher/minecraft/MinecraftLoadAndCheck.cpp index a9dcdf067..b9fb7eb0c 100644 --- a/launcher/minecraft/MinecraftLoadAndCheck.cpp +++ b/launcher/minecraft/MinecraftLoadAndCheck.cpp @@ -2,9 +2,7 @@ #include "MinecraftInstance.h" #include "PackProfile.h" -MinecraftLoadAndCheck::MinecraftLoadAndCheck(MinecraftInstance* inst, Net::Mode netmode, QObject* parent) - : Task(parent), m_inst(inst), m_netmode(netmode) -{} +MinecraftLoadAndCheck::MinecraftLoadAndCheck(MinecraftInstance* inst, Net::Mode netmode) : m_inst(inst), m_netmode(netmode) {} void MinecraftLoadAndCheck::executeTask() { diff --git a/launcher/minecraft/MinecraftLoadAndCheck.h b/launcher/minecraft/MinecraftLoadAndCheck.h index 72e9e0caa..c05698bca 100644 --- a/launcher/minecraft/MinecraftLoadAndCheck.h +++ b/launcher/minecraft/MinecraftLoadAndCheck.h @@ -23,7 +23,7 @@ class MinecraftInstance; class MinecraftLoadAndCheck : public Task { Q_OBJECT public: - explicit MinecraftLoadAndCheck(MinecraftInstance* inst, Net::Mode netmode, QObject* parent = nullptr); + explicit MinecraftLoadAndCheck(MinecraftInstance* inst, Net::Mode netmode); virtual ~MinecraftLoadAndCheck() = default; void executeTask() override; diff --git a/launcher/minecraft/auth/AuthFlow.cpp b/launcher/minecraft/auth/AuthFlow.cpp index 45926206c..19fbe15dd 100644 --- a/launcher/minecraft/auth/AuthFlow.cpp +++ b/launcher/minecraft/auth/AuthFlow.cpp @@ -19,7 +19,7 @@ #include -AuthFlow::AuthFlow(AccountData* data, Action action, QObject* parent) : Task(parent), m_data(data) +AuthFlow::AuthFlow(AccountData* data, Action action) : Task(), m_data(data) { if (data->type == AccountType::MSA) { if (action == Action::DeviceCode) { diff --git a/launcher/minecraft/auth/AuthFlow.h b/launcher/minecraft/auth/AuthFlow.h index 4d18ac845..bff4c04e4 100644 --- a/launcher/minecraft/auth/AuthFlow.h +++ b/launcher/minecraft/auth/AuthFlow.h @@ -17,7 +17,7 @@ class AuthFlow : public Task { public: enum class Action { Refresh, Login, DeviceCode }; - explicit AuthFlow(AccountData* data, Action action = Action::Refresh, QObject* parent = 0); + explicit AuthFlow(AccountData* data, Action action = Action::Refresh); virtual ~AuthFlow() = default; void executeTask() override; diff --git a/launcher/minecraft/auth/MinecraftAccount.cpp b/launcher/minecraft/auth/MinecraftAccount.cpp index 5b063604c..1ed39b5ca 100644 --- a/launcher/minecraft/auth/MinecraftAccount.cpp +++ b/launcher/minecraft/auth/MinecraftAccount.cpp @@ -121,7 +121,7 @@ shared_qobject_ptr MinecraftAccount::login(bool useDeviceCode) { Q_ASSERT(m_currentTask.get() == nullptr); - m_currentTask.reset(new AuthFlow(&data, useDeviceCode ? AuthFlow::Action::DeviceCode : AuthFlow::Action::Login, this)); + m_currentTask.reset(new AuthFlow(&data, useDeviceCode ? AuthFlow::Action::DeviceCode : AuthFlow::Action::Login)); connect(m_currentTask.get(), &Task::succeeded, this, &MinecraftAccount::authSucceeded); connect(m_currentTask.get(), &Task::failed, this, &MinecraftAccount::authFailed); connect(m_currentTask.get(), &Task::aborted, this, [this] { authFailed(tr("Aborted")); }); @@ -135,7 +135,7 @@ shared_qobject_ptr MinecraftAccount::refresh() return m_currentTask; } - m_currentTask.reset(new AuthFlow(&data, AuthFlow::Action::Refresh, this)); + m_currentTask.reset(new AuthFlow(&data, AuthFlow::Action::Refresh)); connect(m_currentTask.get(), &Task::succeeded, this, &MinecraftAccount::authSucceeded); connect(m_currentTask.get(), &Task::failed, this, &MinecraftAccount::authFailed); diff --git a/launcher/minecraft/launch/AutoInstallJava.cpp b/launcher/minecraft/launch/AutoInstallJava.cpp index 1083b7efb..854590dd2 100644 --- a/launcher/minecraft/launch/AutoInstallJava.cpp +++ b/launcher/minecraft/launch/AutoInstallJava.cpp @@ -57,9 +57,7 @@ #include "tasks/SequentialTask.h" AutoInstallJava::AutoInstallJava(LaunchTask* parent) - : LaunchStep(parent) - , m_instance(m_parent->instance()) - , m_supported_arch(SysInfo::getSupportedJavaArchitecture()) {}; + : LaunchStep(parent), m_instance(m_parent->instance()), m_supported_arch(SysInfo::getSupportedJavaArchitecture()) {}; void AutoInstallJava::executeTask() { @@ -179,7 +177,7 @@ void AutoInstallJava::downloadJava(Meta::Version::Ptr version, QString javaName) return; } #if defined(Q_OS_MACOS) - auto seq = makeShared(this, tr("Install Java")); + auto seq = makeShared(tr("Install Java")); seq->addTask(m_current_task); seq->addTask(makeShared(final_path)); m_current_task = seq; diff --git a/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp b/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp index b9288d2b3..b63d36361 100644 --- a/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp +++ b/launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp @@ -52,11 +52,10 @@ static bool checkDependencies(std::shared_ptrversion.loaders || sel->version.loaders & loaders); } -GetModDependenciesTask::GetModDependenciesTask(QObject* parent, - BaseInstance* instance, +GetModDependenciesTask::GetModDependenciesTask(BaseInstance* instance, ModFolderModel* folder, QList> selected) - : SequentialTask(parent, tr("Get dependencies")) + : SequentialTask(tr("Get dependencies")) , m_selected(selected) , m_flame_provider{ ModPlatform::ResourceProvider::FLAME, std::make_shared(*instance), std::make_shared() } @@ -185,7 +184,7 @@ Task::Ptr GetModDependenciesTask::prepareDependencyTask(const ModPlatform::Depen auto provider = providerName == m_flame_provider.name ? m_flame_provider : m_modrinth_provider; auto tasks = makeShared( - this, QString("DependencyInfo: %1").arg(dep.addonId.toString().isEmpty() ? dep.version : dep.addonId.toString())); + QString("DependencyInfo: %1").arg(dep.addonId.toString().isEmpty() ? dep.version : dep.addonId.toString())); if (!dep.addonId.toString().isEmpty()) { tasks->addTask(getProjectInfoTask(pDep)); diff --git a/launcher/minecraft/mod/tasks/GetModDependenciesTask.h b/launcher/minecraft/mod/tasks/GetModDependenciesTask.h index 7202b01e0..29c77f9fe 100644 --- a/launcher/minecraft/mod/tasks/GetModDependenciesTask.h +++ b/launcher/minecraft/mod/tasks/GetModDependenciesTask.h @@ -61,10 +61,7 @@ class GetModDependenciesTask : public SequentialTask { std::shared_ptr api; }; - explicit GetModDependenciesTask(QObject* parent, - BaseInstance* instance, - ModFolderModel* folder, - QList> selected); + explicit GetModDependenciesTask(BaseInstance* instance, ModFolderModel* folder, QList> selected); auto getDependecies() const -> QList> { return m_pack_dependencies; } QHash getExtraInfo(); diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp index 82f6b9df9..19b15709d 100644 --- a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp @@ -157,7 +157,7 @@ bool validate(QFileInfo file) } // namespace DataPackUtils -LocalDataPackParseTask::LocalDataPackParseTask(int token, DataPack& dp) : Task(nullptr, false), m_token(token), m_data_pack(dp) {} +LocalDataPackParseTask::LocalDataPackParseTask(int token, DataPack& dp) : Task(false), m_token(token), m_data_pack(dp) {} bool LocalDataPackParseTask::abort() { diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp index d456211f8..fa5d479ba 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -730,7 +730,7 @@ bool loadIconFile(const Mod& mod, QPixmap* pixmap) } // namespace ModUtils LocalModParseTask::LocalModParseTask(int token, ResourceType type, const QFileInfo& modFile) - : Task(nullptr, false), m_token(token), m_type(type), m_modFile(modFile), m_result(new Result()) + : Task(false), m_token(token), m_type(type), m_modFile(modFile), m_result(new Result()) {} bool LocalModParseTask::abort() diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp index 27fbf3c6d..0b80db82d 100644 --- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp @@ -358,9 +358,7 @@ bool validate(QFileInfo file) } // namespace ResourcePackUtils -LocalResourcePackParseTask::LocalResourcePackParseTask(int token, ResourcePack& rp) - : Task(nullptr, false), m_token(token), m_resource_pack(rp) -{} +LocalResourcePackParseTask::LocalResourcePackParseTask(int token, ResourcePack& rp) : Task(false), m_token(token), m_resource_pack(rp) {} bool LocalResourcePackParseTask::abort() { diff --git a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp index 4deebcd1d..a6ecc5353 100644 --- a/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalShaderPackParseTask.cpp @@ -93,7 +93,7 @@ bool validate(QFileInfo file) } // namespace ShaderPackUtils -LocalShaderPackParseTask::LocalShaderPackParseTask(int token, ShaderPack& sp) : Task(nullptr, false), m_token(token), m_shader_pack(sp) {} +LocalShaderPackParseTask::LocalShaderPackParseTask(int token, ShaderPack& sp) : Task(false), m_token(token), m_shader_pack(sp) {} bool LocalShaderPackParseTask::abort() { diff --git a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp index 00cc2def2..18020808a 100644 --- a/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalTexturePackParseTask.cpp @@ -230,8 +230,7 @@ bool validate(QFileInfo file) } // namespace TexturePackUtils -LocalTexturePackParseTask::LocalTexturePackParseTask(int token, TexturePack& rp) : Task(nullptr, false), m_token(token), m_texture_pack(rp) -{} +LocalTexturePackParseTask::LocalTexturePackParseTask(int token, TexturePack& rp) : Task(false), m_token(token), m_texture_pack(rp) {} bool LocalTexturePackParseTask::abort() { diff --git a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp index 9d564ddb3..74d8d8d60 100644 --- a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp @@ -170,7 +170,7 @@ bool validate(QFileInfo file) } // namespace WorldSaveUtils -LocalWorldSaveParseTask::LocalWorldSaveParseTask(int token, WorldSave& save) : Task(nullptr, false), m_token(token), m_save(save) {} +LocalWorldSaveParseTask::LocalWorldSaveParseTask(int token, WorldSave& save) : Task(false), m_token(token), m_save(save) {} bool LocalWorldSaveParseTask::abort() { diff --git a/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp b/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp index 1cdde7541..98dab9abb 100644 --- a/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp +++ b/launcher/minecraft/mod/tasks/ResourceFolderLoadTask.cpp @@ -47,7 +47,7 @@ ResourceFolderLoadTask::ResourceFolderLoadTask(const QDir& resource_dir, bool is_indexed, bool clean_orphan, std::function create_function) - : Task(nullptr, false) + : Task(false) , m_resource_dir(resource_dir) , m_index_dir(index_dir) , m_is_indexed(is_indexed) diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index ec3538010..2b2e04c25 100644 --- a/launcher/modplatform/EnsureMetadataTask.cpp +++ b/launcher/modplatform/EnsureMetadataTask.cpp @@ -19,7 +19,7 @@ static ModrinthAPI modrinth_api; static FlameAPI flame_api; EnsureMetadataTask::EnsureMetadataTask(Resource* resource, QDir dir, ModPlatform::ResourceProvider prov) - : Task(nullptr), m_index_dir(dir), m_provider(prov), m_hashing_task(nullptr), m_current_task(nullptr) + : Task(), m_index_dir(dir), m_provider(prov), m_hashing_task(nullptr), m_current_task(nullptr) { auto hash_task = createNewHash(resource); if (!hash_task) @@ -30,9 +30,9 @@ EnsureMetadataTask::EnsureMetadataTask(Resource* resource, QDir dir, ModPlatform } EnsureMetadataTask::EnsureMetadataTask(QList& resources, QDir dir, ModPlatform::ResourceProvider prov) - : Task(nullptr), m_index_dir(dir), m_provider(prov), m_current_task(nullptr) + : Task(), m_index_dir(dir), m_provider(prov), m_current_task(nullptr) { - m_hashing_task.reset(new ConcurrentTask(this, "MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); + m_hashing_task.reset(new ConcurrentTask("MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); for (auto* resource : resources) { auto hash_task = createNewHash(resource); if (!hash_task) @@ -44,7 +44,7 @@ EnsureMetadataTask::EnsureMetadataTask(QList& resources, QDir dir, Mo } EnsureMetadataTask::EnsureMetadataTask(QHash& resources, QDir dir, ModPlatform::ResourceProvider prov) - : Task(nullptr), m_resources(resources), m_index_dir(dir), m_provider(prov), m_current_task(nullptr) + : Task(), m_resources(resources), m_index_dir(dir), m_provider(prov), m_current_task(nullptr) {} Hashing::Hasher::Ptr EnsureMetadataTask::createNewHash(Resource* resource) diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 7007a8c84..1865ba1df 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -677,7 +677,7 @@ void FlameCreationTask::validateZIPResources(QEventLoop& loop) } } // TODO make this work with other sorts of resource - auto task = makeShared(this, "CreateModMetadata", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + auto task = makeShared("CreateModMetadata", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); auto results = m_mod_id_resolver->getResults().files; auto folder = FS::PathCombine(m_stagingPath, "minecraft", "mods", ".index"); for (auto file : results) { diff --git a/launcher/modplatform/flame/FlamePackExportTask.cpp b/launcher/modplatform/flame/FlamePackExportTask.cpp index d661f1f05..3405b702f 100644 --- a/launcher/modplatform/flame/FlamePackExportTask.cpp +++ b/launcher/modplatform/flame/FlamePackExportTask.cpp @@ -103,8 +103,7 @@ void FlamePackExportTask::collectHashes() setStatus(tr("Finding file hashes...")); setProgress(1, 5); auto allMods = mcInstance->loaderModList()->allMods(); - ConcurrentTask::Ptr hashingTask( - new ConcurrentTask(this, "MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); + ConcurrentTask::Ptr hashingTask(new ConcurrentTask("MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); task.reset(hashingTask); for (const QFileInfo& file : files) { const QString relative = gameRoot.relativeFilePath(file.absoluteFilePath()); diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index 52db95077..b76883e65 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -32,7 +32,7 @@ void ModrinthCheckUpdate::executeTask() setProgress(0, (m_loaders_list.isEmpty() ? 1 : m_loaders_list.length()) * 2 + 1); auto hashing_task = - makeShared(this, "MakeModrinthHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + makeShared("MakeModrinthHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); for (auto* resource : m_resources) { auto hash = resource->metadata()->hash; @@ -99,8 +99,7 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp // If the returned project is empty, but we have Modrinth metadata, // it means this specific version is not available if (project_obj.isEmpty()) { - qDebug() << "Mod " << m_mappings.find(hash).value()->name() << " got an empty response." - << "Hash: " << hash; + qDebug() << "Mod " << m_mappings.find(hash).value()->name() << " got an empty response." << "Hash: " << hash; ++iter; continue; } @@ -173,7 +172,7 @@ void ModrinthCheckUpdate::checkNextLoader() m_loader_idx++; return; } - + if (m_loader_idx < m_loaders_list.size()) { getUpdateModsForLoader(m_loaders_list.at(m_loader_idx)); m_loader_idx++; diff --git a/launcher/net/NetJob.cpp b/launcher/net/NetJob.cpp index 3cd3958f7..335e360b2 100644 --- a/launcher/net/NetJob.cpp +++ b/launcher/net/NetJob.cpp @@ -45,7 +45,7 @@ #endif NetJob::NetJob(QString job_name, shared_qobject_ptr network, int max_concurrent) - : ConcurrentTask(nullptr, job_name), m_network(network) + : ConcurrentTask(job_name), m_network(network) { #if defined(LAUNCHER_APPLICATION) if (APPLICATION_DYN && max_concurrent < 0) diff --git a/launcher/tasks/ConcurrentTask.cpp b/launcher/tasks/ConcurrentTask.cpp index f2ee40c31..ad2a14c42 100644 --- a/launcher/tasks/ConcurrentTask.cpp +++ b/launcher/tasks/ConcurrentTask.cpp @@ -38,7 +38,7 @@ #include #include "tasks/Task.h" -ConcurrentTask::ConcurrentTask(QObject* parent, QString task_name, int max_concurrent) : Task(parent), m_total_max_size(max_concurrent) +ConcurrentTask::ConcurrentTask(QString task_name, int max_concurrent) : Task(), m_total_max_size(max_concurrent) { setObjectName(task_name); } diff --git a/launcher/tasks/ConcurrentTask.h b/launcher/tasks/ConcurrentTask.h index 0d6709940..d988623b9 100644 --- a/launcher/tasks/ConcurrentTask.h +++ b/launcher/tasks/ConcurrentTask.h @@ -48,7 +48,7 @@ class ConcurrentTask : public Task { public: using Ptr = shared_qobject_ptr; - explicit ConcurrentTask(QObject* parent = nullptr, QString task_name = "", int max_concurrent = 6); + explicit ConcurrentTask(QString task_name = "", int max_concurrent = 6); ~ConcurrentTask() override; // safe to call before starting the task diff --git a/launcher/tasks/MultipleOptionsTask.cpp b/launcher/tasks/MultipleOptionsTask.cpp index 5afe03964..ba0c23542 100644 --- a/launcher/tasks/MultipleOptionsTask.cpp +++ b/launcher/tasks/MultipleOptionsTask.cpp @@ -36,7 +36,7 @@ #include -MultipleOptionsTask::MultipleOptionsTask(QObject* parent, const QString& task_name) : ConcurrentTask(parent, task_name, 1) {} +MultipleOptionsTask::MultipleOptionsTask(const QString& task_name) : ConcurrentTask(task_name, 1) {} void MultipleOptionsTask::executeNextSubTask() { diff --git a/launcher/tasks/MultipleOptionsTask.h b/launcher/tasks/MultipleOptionsTask.h index 9a88a9999..7a19ed6ad 100644 --- a/launcher/tasks/MultipleOptionsTask.h +++ b/launcher/tasks/MultipleOptionsTask.h @@ -42,7 +42,7 @@ class MultipleOptionsTask : public ConcurrentTask { Q_OBJECT public: - explicit MultipleOptionsTask(QObject* parent = nullptr, const QString& task_name = ""); + explicit MultipleOptionsTask(const QString& task_name = ""); ~MultipleOptionsTask() override = default; private slots: diff --git a/launcher/tasks/SequentialTask.cpp b/launcher/tasks/SequentialTask.cpp index 509d91cf7..2e48414f2 100644 --- a/launcher/tasks/SequentialTask.cpp +++ b/launcher/tasks/SequentialTask.cpp @@ -38,7 +38,7 @@ #include #include "tasks/ConcurrentTask.h" -SequentialTask::SequentialTask(QObject* parent, QString task_name) : ConcurrentTask(parent, task_name, 1) {} +SequentialTask::SequentialTask(QString task_name) : ConcurrentTask(task_name, 1) {} void SequentialTask::subTaskFailed(Task::Ptr task, const QString& msg) { diff --git a/launcher/tasks/SequentialTask.h b/launcher/tasks/SequentialTask.h index a7c101ab4..77cd4387f 100644 --- a/launcher/tasks/SequentialTask.h +++ b/launcher/tasks/SequentialTask.h @@ -47,7 +47,7 @@ class SequentialTask : public ConcurrentTask { Q_OBJECT public: - explicit SequentialTask(QObject* parent = nullptr, QString task_name = ""); + explicit SequentialTask(QString task_name = ""); ~SequentialTask() override = default; protected slots: diff --git a/launcher/tasks/Task.cpp b/launcher/tasks/Task.cpp index b17096ca7..1871c5df8 100644 --- a/launcher/tasks/Task.cpp +++ b/launcher/tasks/Task.cpp @@ -40,7 +40,7 @@ Q_LOGGING_CATEGORY(taskLogC, "launcher.task") -Task::Task(QObject* parent, bool show_debug) : QObject(parent), m_show_debug(show_debug) +Task::Task(bool show_debug) : m_show_debug(show_debug) { m_uid = QUuid::createUuid(); setAutoDelete(false); diff --git a/launcher/tasks/Task.h b/launcher/tasks/Task.h index 883408c97..e712700a1 100644 --- a/launcher/tasks/Task.h +++ b/launcher/tasks/Task.h @@ -87,7 +87,7 @@ class Task : public QObject, public QRunnable { enum class State { Inactive, Running, Succeeded, Failed, AbortedByUser }; public: - explicit Task(QObject* parent = 0, bool show_debug_log = true); + explicit Task(bool show_debug_log = true); virtual ~Task() = default; bool isRunning() const; diff --git a/launcher/ui/dialogs/BlockedModsDialog.cpp b/launcher/ui/dialogs/BlockedModsDialog.cpp index a02f527de..b3b6d2bcc 100644 --- a/launcher/ui/dialogs/BlockedModsDialog.cpp +++ b/launcher/ui/dialogs/BlockedModsDialog.cpp @@ -46,7 +46,7 @@ BlockedModsDialog::BlockedModsDialog(QWidget* parent, const QString& title, cons : QDialog(parent), ui(new Ui::BlockedModsDialog), m_mods(mods), m_hash_type(hash_type) { m_hashing_task = shared_qobject_ptr( - new ConcurrentTask(this, "MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); + new ConcurrentTask("MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); connect(m_hashing_task.get(), &Task::finished, this, &BlockedModsDialog::hashTaskFinished); ui->setupUi(this); diff --git a/launcher/ui/dialogs/MSALoginDialog.cpp b/launcher/ui/dialogs/MSALoginDialog.cpp index 2f6c6d9b2..40d1eff1e 100644 --- a/launcher/ui/dialogs/MSALoginDialog.cpp +++ b/launcher/ui/dialogs/MSALoginDialog.cpp @@ -85,7 +85,7 @@ int MSALoginDialog::exec() connect(m_authflow_task.get(), &AuthFlow::authorizeWithBrowserWithExtra, this, &MSALoginDialog::authorizeWithBrowserWithExtra); connect(ui->buttonBox->button(QDialogButtonBox::Cancel), &QPushButton::clicked, m_authflow_task.get(), &Task::abort); - m_devicecode_task.reset(new AuthFlow(m_account->accountData(), AuthFlow::Action::DeviceCode, this)); + m_devicecode_task.reset(new AuthFlow(m_account->accountData(), AuthFlow::Action::DeviceCode)); connect(m_devicecode_task.get(), &Task::failed, this, &MSALoginDialog::onTaskFailed); connect(m_devicecode_task.get(), &Task::succeeded, this, &QDialog::accept); connect(m_devicecode_task.get(), &Task::aborted, this, &MSALoginDialog::reject); diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp index f9b6716af..bd398aa75 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp +++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp @@ -298,7 +298,7 @@ GetModDependenciesTask::Ptr ModDownloadDialog::getModDependenciesTask() selectedVers.append(std::make_shared(selected->getPack(), selected->getVersion())); } - return makeShared(this, m_instance, model, selectedVers); + return makeShared(m_instance, model, selectedVers); } } return nullptr; diff --git a/launcher/ui/dialogs/ResourceUpdateDialog.cpp b/launcher/ui/dialogs/ResourceUpdateDialog.cpp index 958bc9683..e2e337fa3 100644 --- a/launcher/ui/dialogs/ResourceUpdateDialog.cpp +++ b/launcher/ui/dialogs/ResourceUpdateDialog.cpp @@ -45,8 +45,7 @@ ResourceUpdateDialog::ResourceUpdateDialog(QWidget* parent, , m_parent(parent) , m_resource_model(resource_model) , m_candidates(search_for) - , m_second_try_metadata( - new ConcurrentTask(nullptr, "Second Metadata Search", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())) + , m_second_try_metadata(new ConcurrentTask("Second Metadata Search", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())) , m_instance(instance) , m_include_deps(include_deps) , m_filter_loaders(filter_loaders) @@ -90,7 +89,7 @@ void ResourceUpdateDialog::checkCandidates() auto versions = mcVersions(m_instance); auto loadersList = m_filter_loaders ? mcLoadersList(m_instance) : QList(); - SequentialTask check_task(m_parent, tr("Checking for updates")); + SequentialTask check_task(tr("Checking for updates")); if (!m_modrinth_to_update.empty()) { m_modrinth_check_task.reset(new ModrinthCheckUpdate(m_modrinth_to_update, versions, loadersList, m_resource_model)); @@ -195,7 +194,7 @@ void ResourceUpdateDialog::checkCandidates() auto* mod_model = dynamic_cast(m_resource_model.get()); if (mod_model != nullptr) { - auto depTask = makeShared(this, m_instance, mod_model, selectedVers); + auto depTask = makeShared(m_instance, mod_model, selectedVers); connect(depTask.get(), &Task::failed, this, [&](const QString& reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); @@ -265,7 +264,7 @@ auto ResourceUpdateDialog::ensureMetadata() -> bool { auto index_dir = indexDir(); - SequentialTask seq(m_parent, tr("Looking for metadata")); + SequentialTask seq(tr("Looking for metadata")); // A better use of data structures here could remove the need for this QHash QHash should_try_others; diff --git a/launcher/ui/java/InstallJavaDialog.cpp b/launcher/ui/java/InstallJavaDialog.cpp index dc43ea4c9..5f69b9d46 100644 --- a/launcher/ui/java/InstallJavaDialog.cpp +++ b/launcher/ui/java/InstallJavaDialog.cpp @@ -317,7 +317,7 @@ void InstallDialog::done(int result) deletePath(); } #if defined(Q_OS_MACOS) - auto seq = makeShared(this, tr("Install Java")); + auto seq = makeShared(tr("Install Java")); seq->addTask(task); seq->addTask(makeShared(final_path)); task = seq; diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index b9e0cfeef..64d8f6b6c 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -155,7 +155,7 @@ void ModFolderPage::downloadMods() ResourceDownload::ModDownloadDialog mdownload(this, m_model, m_instance); if (mdownload.exec()) { - auto tasks = new ConcurrentTask(this, tr("Download Mods"), APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask(tr("Download Mods"), APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); @@ -238,7 +238,7 @@ void ModFolderPage::updateMods(bool includeDeps) } if (update_dialog.exec()) { - auto tasks = new ConcurrentTask(this, "Download Mods", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Mods", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); @@ -310,7 +310,7 @@ void ModFolderPage::changeModVersion() ResourceDownload::ModDownloadDialog mdownload(this, m_model, m_instance); mdownload.setResourceMetadata((*mods_list.begin())->metadata()); if (mdownload.exec()) { - auto tasks = new ConcurrentTask(this, "Download Mods", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Mods", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); diff --git a/launcher/ui/pages/instance/ResourcePackPage.cpp b/launcher/ui/pages/instance/ResourcePackPage.cpp index 97d61058e..79e677765 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.cpp +++ b/launcher/ui/pages/instance/ResourcePackPage.cpp @@ -37,8 +37,6 @@ #include "ResourcePackPage.h" -#include "ResourceDownloadTask.h" - #include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/ProgressDialog.h" #include "ui/dialogs/ResourceDownloadDialog.h" @@ -88,8 +86,7 @@ void ResourcePackPage::downloadResourcePacks() ResourceDownload::ResourcePackDownloadDialog mdownload(this, m_model, m_instance); if (mdownload.exec()) { - auto tasks = - new ConcurrentTask(this, "Download Resource Pack", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Resource Pack", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); @@ -168,8 +165,7 @@ void ResourcePackPage::updateResourcePacks() } if (update_dialog.exec()) { - auto tasks = - new ConcurrentTask(this, "Download Resource Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Resource Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); @@ -234,7 +230,7 @@ void ResourcePackPage::changeResourcePackVersion() if (rows.count() != 1) return; - Resource &resource = m_model->at(m_filterModel->mapToSource(rows[0]).row()); + Resource& resource = m_model->at(m_filterModel->mapToSource(rows[0]).row()); if (resource.metadata() == nullptr) return; @@ -242,8 +238,7 @@ void ResourcePackPage::changeResourcePackVersion() ResourceDownload::ResourcePackDownloadDialog mdownload(this, m_model, m_instance); mdownload.setResourceMetadata(resource.metadata()); if (mdownload.exec()) { - auto tasks = - new ConcurrentTask(this, "Download Resource Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Resource Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); diff --git a/launcher/ui/pages/instance/ShaderPackPage.cpp b/launcher/ui/pages/instance/ShaderPackPage.cpp index c734f539e..a287d3edf 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.cpp +++ b/launcher/ui/pages/instance/ShaderPackPage.cpp @@ -83,7 +83,7 @@ void ShaderPackPage::downloadShaderPack() ResourceDownload::ShaderPackDownloadDialog mdownload(this, m_model, m_instance); if (mdownload.exec()) { - auto tasks = new ConcurrentTask(this, "Download Shader Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Shader Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); @@ -162,7 +162,7 @@ void ShaderPackPage::updateShaderPacks() } if (update_dialog.exec()) { - auto tasks = new ConcurrentTask(this, "Download Shader Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Shader Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); @@ -227,7 +227,7 @@ void ShaderPackPage::changeShaderPackVersion() if (rows.count() != 1) return; - Resource &resource = m_model->at(m_filterModel->mapToSource(rows[0]).row()); + Resource& resource = m_model->at(m_filterModel->mapToSource(rows[0]).row()); if (resource.metadata() == nullptr) return; @@ -235,8 +235,7 @@ void ShaderPackPage::changeShaderPackVersion() ResourceDownload::ShaderPackDownloadDialog mdownload(this, m_model, m_instance); mdownload.setResourceMetadata(resource.metadata()); if (mdownload.exec()) { - auto tasks = - new ConcurrentTask(this, "Download Shader Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Shader Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); diff --git a/launcher/ui/pages/instance/TexturePackPage.cpp b/launcher/ui/pages/instance/TexturePackPage.cpp index 990ee2b2e..fd1e0a2fc 100644 --- a/launcher/ui/pages/instance/TexturePackPage.cpp +++ b/launcher/ui/pages/instance/TexturePackPage.cpp @@ -92,8 +92,7 @@ void TexturePackPage::downloadTexturePacks() ResourceDownload::TexturePackDownloadDialog mdownload(this, m_model, m_instance); if (mdownload.exec()) { - auto tasks = - new ConcurrentTask(this, "Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); @@ -172,8 +171,7 @@ void TexturePackPage::updateTexturePacks() } if (update_dialog.exec()) { - auto tasks = - new ConcurrentTask(this, "Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); @@ -223,7 +221,8 @@ void TexturePackPage::deleteTexturePackMetadata() m_model->deleteMetadata(selection); } -void TexturePackPage::changeTexturePackVersion() { +void TexturePackPage::changeTexturePackVersion() +{ if (m_instance->typeName() != "Minecraft") return; // this is a null instance or a legacy instance @@ -237,7 +236,7 @@ void TexturePackPage::changeTexturePackVersion() { if (rows.count() != 1) return; - Resource &resource = m_model->at(m_filterModel->mapToSource(rows[0]).row()); + Resource& resource = m_model->at(m_filterModel->mapToSource(rows[0]).row()); if (resource.metadata() == nullptr) return; @@ -245,8 +244,7 @@ void TexturePackPage::changeTexturePackVersion() { ResourceDownload::TexturePackDownloadDialog mdownload(this, m_model, m_instance); mdownload.setResourceMetadata(resource.metadata()); if (mdownload.exec()) { - auto tasks = - new ConcurrentTask(this, "Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Texture Packs", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); connect(tasks, &Task::failed, [this, tasks](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->show(); tasks->deleteLater(); diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index cb04f9db1..ab1c48ed4 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -435,7 +435,7 @@ void VersionPage::on_actionDownload_All_triggered() if (updateTasks.isEmpty()) { return; } - auto task = makeShared(this); + auto task = makeShared(); for (auto t : updateTasks) { task->addTask(t); } diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 2b270c482..6efd3f581 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -460,7 +460,7 @@ void JavaSettingsWidget::checkJavaPath(const QString& path) } setJavaStatus(JavaStatus::Pending); m_checker.reset( - new JavaChecker(path, "", minHeapSize(), maxHeapSize(), m_permGenSpinBox->isVisible() ? m_permGenSpinBox->value() : 0, 0, this)); + new JavaChecker(path, "", minHeapSize(), maxHeapSize(), m_permGenSpinBox->isVisible() ? m_permGenSpinBox->value() : 0, 0)); connect(m_checker.get(), &JavaChecker::checkFinished, this, &JavaSettingsWidget::checkFinished); m_checker->start(); } diff --git a/tests/Task_test.cpp b/tests/Task_test.cpp index 0740ba0a3..463e78b42 100644 --- a/tests/Task_test.cpp +++ b/tests/Task_test.cpp @@ -16,7 +16,7 @@ class BasicTask : public Task { friend class TaskTest; public: - BasicTask(bool show_debug_log = true) : Task(nullptr, show_debug_log) {} + BasicTask(bool show_debug_log = true) : Task(show_debug_log) {} private: void executeTask() override { emitSucceeded(); } From 99cfb6237030f03c148e531da78b8da8f7d4c2f1 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 1 Nov 2024 11:03:47 +0200 Subject: [PATCH 341/616] use isPortable to determine if the MSAStep should check for url handler Signed-off-by: Trial97 --- launcher/minecraft/auth/steps/MSAStep.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/launcher/minecraft/auth/steps/MSAStep.cpp b/launcher/minecraft/auth/steps/MSAStep.cpp index 74999414c..151ee4e68 100644 --- a/launcher/minecraft/auth/steps/MSAStep.cpp +++ b/launcher/minecraft/auth/steps/MSAStep.cpp @@ -85,8 +85,7 @@ class CustomOAuthOobReplyHandler : public QOAuthOobReplyHandler { MSAStep::MSAStep(AccountData* data, bool silent) : AuthStep(data), m_silent(silent) { m_clientId = APPLICATION->getMSAClientID(); - if (QCoreApplication::applicationFilePath().startsWith("/tmp/.mount_") || - QFile::exists(FS::PathCombine(APPLICATION->root(), "portable.txt")) || !isSchemeHandlerRegistered()) + if (QCoreApplication::applicationFilePath().startsWith("/tmp/.mount_") || APPLICATION->isPortable() || !isSchemeHandlerRegistered()) { auto replyHandler = new QOAuthHttpServerReplyHandler(this); From f77f0207f779e2fe0df58f89295be3ef44853489 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 1 Nov 2024 13:44:06 +0200 Subject: [PATCH 342/616] fix the flame loaders match Signed-off-by: Trial97 --- launcher/minecraft/mod/Mod.cpp | 8 ++-- launcher/modplatform/ModIndex.cpp | 13 ++++++ launcher/modplatform/ModIndex.h | 1 + launcher/modplatform/flame/FlameAPI.cpp | 40 +++++++++++++------ launcher/modplatform/flame/FlameCheckUpdate.h | 1 - .../modrinth/ModrinthCheckUpdate.cpp | 12 +++--- launcher/modplatform/packwiz/Packwiz.cpp | 7 +--- launcher/ui/dialogs/ResourceUpdateDialog.cpp | 1 + 8 files changed, 52 insertions(+), 31 deletions(-) diff --git a/launcher/minecraft/mod/Mod.cpp b/launcher/minecraft/mod/Mod.cpp index 4986d8ee1..50fb45d77 100644 --- a/launcher/minecraft/mod/Mod.cpp +++ b/launcher/minecraft/mod/Mod.cpp @@ -48,6 +48,7 @@ #include "Version.h" #include "minecraft/mod/ModDetails.h" #include "minecraft/mod/tasks/LocalModParseTask.h" +#include "modplatform/ModIndex.h" Mod::Mod(const QFileInfo& file) : Resource(file), m_local_details() { @@ -157,11 +158,8 @@ auto Mod::loaders() const -> QString if (metadata()) { QStringList loaders; auto modLoaders = metadata()->loaders; - for (auto loader : { ModPlatform::NeoForge, ModPlatform::Forge, ModPlatform::Cauldron, ModPlatform::LiteLoader, ModPlatform::Fabric, - ModPlatform::Quilt }) { - if (modLoaders & loader) { - loaders << getModLoaderAsString(loader); - } + for (auto loader : ModPlatform::modLoaderTypesToList(modLoaders)) { + loaders << getModLoaderAsString(loader); } return loaders.join(", "); } diff --git a/launcher/modplatform/ModIndex.cpp b/launcher/modplatform/ModIndex.cpp index 8c85ae122..c3ecccf8e 100644 --- a/launcher/modplatform/ModIndex.cpp +++ b/launcher/modplatform/ModIndex.cpp @@ -31,6 +31,19 @@ static const QMap s_indexed_version_ty { "alpha", IndexedVersionType::VersionType::Alpha } }; +static const QList loaderList = { NeoForge, Forge, Cauldron, LiteLoader, Quilt, Fabric }; + +QList modLoaderTypesToList(ModLoaderTypes flags) +{ + QList flagList; + for (auto flag : loaderList) { + if (flags.testFlag(flag)) { + flagList.append(flag); + } + } + return flagList; +} + IndexedVersionType::IndexedVersionType(const QString& type) : IndexedVersionType(enumFromString(type)) {} IndexedVersionType::IndexedVersionType(const IndexedVersionType::VersionType& type) diff --git a/launcher/modplatform/ModIndex.h b/launcher/modplatform/ModIndex.h index d5ee12473..8fae1bf6c 100644 --- a/launcher/modplatform/ModIndex.h +++ b/launcher/modplatform/ModIndex.h @@ -32,6 +32,7 @@ namespace ModPlatform { enum ModLoaderType { NeoForge = 1 << 0, Forge = 1 << 1, Cauldron = 1 << 2, LiteLoader = 1 << 3, Fabric = 1 << 4, Quilt = 1 << 5 }; Q_DECLARE_FLAGS(ModLoaderTypes, ModLoaderType) +QList modLoaderTypesToList(ModLoaderTypes flags); enum class ResourceProvider { MODRINTH, FLAME }; diff --git a/launcher/modplatform/flame/FlameAPI.cpp b/launcher/modplatform/flame/FlameAPI.cpp index ddd48c2b1..53eadcf02 100644 --- a/launcher/modplatform/flame/FlameAPI.cpp +++ b/launcher/modplatform/flame/FlameAPI.cpp @@ -270,21 +270,35 @@ std::optional FlameAPI::getLatestVersion(QList instanceLoaders, ModPlatform::ModLoaderTypes modLoaders) { - // edge case: mod has installed for forge but the instance is fabric => fabric version will be prioritizated on update - auto bestVersion = [&versions](ModPlatform::ModLoaderTypes loader) { - std::optional ver; - for (auto file_tmp : versions) { - if (file_tmp.loaders & loader && (!ver.has_value() || file_tmp.date > ver->date)) { - ver = file_tmp; + QHash bestMatch; + auto checkVersion = [&bestMatch](const ModPlatform::IndexedVersion& version, const ModPlatform::ModLoaderType& loader) { + if (bestMatch.contains(loader)) { + auto best = bestMatch.value(loader); + if (version.date > best.date) { + bestMatch[loader] = version; + } + } else { + bestMatch[loader] = version; + } + }; + for (auto file_tmp : versions) { + auto loaders = ModPlatform::modLoaderTypesToList(file_tmp.loaders); + if (loaders.isEmpty()) { + checkVersion(file_tmp, ModPlatform::ModLoaderType(0)); + } else { + for (auto loader : loaders) { + checkVersion(file_tmp, loader); } } - return ver; - }; - for (auto l : instanceLoaders) { - auto ver = bestVersion(l); - if (ver.has_value()) { - return ver; + } + // edge case: mod has installed for forge but the instance is fabric => fabric version will be prioritizated on update + auto currentLoaders = instanceLoaders + ModPlatform::modLoaderTypesToList(modLoaders); + currentLoaders.append(ModPlatform::ModLoaderType(0)); // add a fallback in case the versions do not define a loader + + for (auto loader : currentLoaders) { + if (bestMatch.contains(loader)) { + return bestMatch.value(loader); } } - return bestVersion(modLoaders); + return {}; } diff --git a/launcher/modplatform/flame/FlameCheckUpdate.h b/launcher/modplatform/flame/FlameCheckUpdate.h index 2b5c6ac17..6543a0e04 100644 --- a/launcher/modplatform/flame/FlameCheckUpdate.h +++ b/launcher/modplatform/flame/FlameCheckUpdate.h @@ -1,6 +1,5 @@ #pragma once -#include "Application.h" #include "modplatform/CheckUpdateTask.h" #include "net/NetJob.h" diff --git a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index 52db95077..e86447989 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -8,6 +8,7 @@ #include "QObjectPtr.h" #include "ResourceDownloadTask.h" +#include "modplatform/ModIndex.h" #include "modplatform/helpers/HashUtils.h" #include "tasks/ConcurrentTask.h" @@ -99,8 +100,7 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp // If the returned project is empty, but we have Modrinth metadata, // it means this specific version is not available if (project_obj.isEmpty()) { - qDebug() << "Mod " << m_mappings.find(hash).value()->name() << " got an empty response." - << "Hash: " << hash; + qDebug() << "Mod " << m_mappings.find(hash).value()->name() << " got an empty response." << "Hash: " << hash; ++iter; continue; } @@ -108,10 +108,8 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr resp // Sometimes a version may have multiple files, one with "forge" and one with "fabric", // so we may want to filter it QString loader_filter; - static auto flags = { ModPlatform::ModLoaderType::NeoForge, ModPlatform::ModLoaderType::Forge, - ModPlatform::ModLoaderType::Quilt, ModPlatform::ModLoaderType::Fabric }; - for (auto flag : flags) { - if (loader.has_value() && loader->testFlag(flag)) { + if (loader.has_value()) { + for (auto flag : ModPlatform::modLoaderTypesToList(*loader)) { loader_filter = ModPlatform::getModLoaderAsString(flag); break; } @@ -173,7 +171,7 @@ void ModrinthCheckUpdate::checkNextLoader() m_loader_idx++; return; } - + if (m_loader_idx < m_loaders_list.size()) { getUpdateModsForLoader(m_loaders_list.at(m_loader_idx)); m_loader_idx++; diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index bbccb72b8..a3bb74399 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -190,11 +190,8 @@ void V1::updateModIndex(const QDir& index_dir, Mod& mod) } toml::array loaders; - for (auto loader : { ModPlatform::NeoForge, ModPlatform::Forge, ModPlatform::Cauldron, ModPlatform::LiteLoader, ModPlatform::Fabric, - ModPlatform::Quilt }) { - if (mod.loaders & loader) { - loaders.push_back(getModLoaderAsString(loader).toStdString()); - } + for (auto loader : ModPlatform::modLoaderTypesToList(mod.loaders)) { + loaders.push_back(getModLoaderAsString(loader).toStdString()); } toml::array mcVersions; for (auto version : mod.mcVersions) { diff --git a/launcher/ui/dialogs/ResourceUpdateDialog.cpp b/launcher/ui/dialogs/ResourceUpdateDialog.cpp index 958bc9683..bfa1fae2b 100644 --- a/launcher/ui/dialogs/ResourceUpdateDialog.cpp +++ b/launcher/ui/dialogs/ResourceUpdateDialog.cpp @@ -1,4 +1,5 @@ #include "ResourceUpdateDialog.h" +#include "Application.h" #include "ChooseProviderDialog.h" #include "CustomMessageBox.h" #include "ProgressDialog.h" From 6f2f3c2d3bf6a170060523ad47fe69fef57bd9b4 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 1 Nov 2024 17:34:29 +0200 Subject: [PATCH 343/616] disable retry for modrinth currentVersions API Signed-off-by: Trial97 --- launcher/modplatform/modrinth/ModrinthAPI.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/modplatform/modrinth/ModrinthAPI.cpp b/launcher/modplatform/modrinth/ModrinthAPI.cpp index 323711e02..a954f65a5 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.cpp +++ b/launcher/modplatform/modrinth/ModrinthAPI.cpp @@ -34,7 +34,7 @@ Task::Ptr ModrinthAPI::currentVersions(const QStringList& hashes, QString hash_f auto body_raw = body.toJson(); netJob->addNetAction(Net::ApiUpload::makeByteArray(QString(BuildConfig.MODRINTH_PROD_URL + "/version_files"), response, body_raw)); - + netJob->setAskRetry(false); return netJob; } From d63a3364111a99337c2096c807550f3d7c62b47a Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Tue, 5 Nov 2024 01:10:38 -0700 Subject: [PATCH 344/616] ci: bump linux qt version Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6c167d8f1..90f74fae5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,14 +59,14 @@ jobs: qt_ver: 5 qt_host: linux qt_arch: "" - qt_version: "5.12.8" + qt_version: "5.15.2" qt_modules: "qtnetworkauth" - os: ubuntu-20.04 qt_ver: 6 qt_host: linux qt_arch: "" - qt_version: "6.2.4" + qt_version: "6.5.3" qt_modules: "qt5compat qtimageformats qtnetworkauth" - os: windows-2022 From ba6743d134589294ac3ba754e6ad83c2e59d4ffd Mon Sep 17 00:00:00 2001 From: Rachel Powers <508861+Ryex@users.noreply.github.com> Date: Tue, 5 Nov 2024 01:30:55 -0700 Subject: [PATCH 345/616] ci: libxcb-curcsor_dev ? Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 90f74fae5..2cefa8100 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -206,7 +206,7 @@ jobs: if: runner.os == 'Linux' run: | sudo apt-get -y update - sudo apt-get -y install ninja-build extra-cmake-modules scdoc appstream + sudo apt-get -y install ninja-build extra-cmake-modules scdoc appstream libxcb-cursor-dev - name: Install Dependencies (macOS) if: runner.os == 'macOS' From b67d400f607b92b717a65a49af72cb8ae3186794 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 6 Nov 2024 15:56:10 +0000 Subject: [PATCH 346/616] Update formatting guidelines Signed-off-by: TheKodeToad --- CONTRIBUTING.md | 54 +++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 8 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 072916772..d76f992eb 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,16 +2,54 @@ ## Code formatting -Try to follow the existing formatting. -If there is no existing formatting, you may use `clang-format` with our included `.clang-format` configuration. +All files are formatted with `clang-format` using the configuration in `.clang-format`. Ensure it is run on changed files before committing! -In general, in order of importance: +We have no tool for enforcing names but please follow the following conventions for C++: +- Class and type names should be formatted as `PascalCase`: `MyClass`. +- Private, non-`static const` class data members should be formatted as `camelCase` prefixed with `m_`: `m_myCounter`. +- Public, non-`static const` should be the same but without the prefix: `dateOfBirth`. +- Class function members should be formatted as `camelCase` without a prefix: `incrementCounter`. +- Non-`const` global variables should be formatted as `camelCase` without a prefix: `globalData`. And, of course, should be avoided where possible. +- `const` global variables, `static const` class data members, macros, and enum constants should be formatted as `SCREAMING_SNAKE_CASE`: `LIGHT_GRAY`. +- Avoid inventing acronyms or abbreviations especially for a name of multiple words - like `tp` for `texturePack`. -- Make sure your IDE is not messing up line endings or whitespace and avoid using linters. -- Prefer readability over dogma. -- Keep to the existing formatting. -- Indent with 4 space unless it's in a submodule. -- Keep lists (of arguments, parameters, initializers...) as lists, not paragraphs. It should either read from top to bottom, or left to right. Not both. +Here is what these conventions with the formatting configuration look like: + +```c++ +#define AWESOMENESS 10 + +constexpr double PI = 3.14159; + +enum class PizzaToppings { HAM_AND_PINEAPPLE, OREO_AND_KETCHUP }; + +struct Person { + QString name; + QDateTime dateOfBirth; + + long daysOld() const { return dateOfBirth.daysTo(QDateTime::currentDateTime()); } +}; + +class ImportantClass { + public: + void incrementCounter() + { + if (m_counter + 1 > MAX_COUNTER_VALUE) + throw std::runtime_error("Counter has reached limit!"); + + ++m_counter; + } + + int counter() const { return m_counter; } + + private: + static constexpr int MAX_COUNTER_VALUE = 100; + int m_counter; +}; + +ImportantClass importantClassInstance; +``` + +If you see any names which do not follow these conventions, it is preferred that you leave them be - renames increase the number of changes therefore make reviewing harder and make your PR more prone to conflicts. However, if you're refactoring a whole class anyway, it's fine. ## Signing your work From 0a80da28fa168456584dd05938bce790d09b5ca4 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Wed, 6 Nov 2024 19:29:57 +0100 Subject: [PATCH 347/616] chore: update Nix readme Signed-off-by: Sefa Eyeoglu --- nix/README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/nix/README.md b/nix/README.md index 8bb658477..7c43658f9 100644 --- a/nix/README.md +++ b/nix/README.md @@ -4,7 +4,7 @@ Prism Launcher is packaged in [nixpkgs](https://github.com/NixOS/nixpkgs/) since 22.11. -See [Package variants](#package-variants) for a list of available packages. +Check the [NixOS Wiki](https://wiki.nixos.org/wiki/Prism_Launcher) for up-to-date instructions. ## Installing a development release (flake) @@ -223,4 +223,3 @@ The following parameters can be overridden: - `jdks` (default: `[ jdk21 jdk17 jdk8 ]`) Java runtimes added to `PRISMLAUNCHER_JAVA_PATHS` variable - `msaClientID` (default: `null`, requires full rebuild!) Client ID used for Microsoft Authentication - `textToSpeechSupport` (default: `isLinux`) Turn on/off support for text-to-speech on Linux (macOS will always have this) -- `withWaylandGLFW` (default: `isLinux`) Build with support for native Wayland via a custom GLFW From 8ecc21c09371914fc8cc44e1596ced949f0cbb39 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 6 Nov 2024 22:12:22 +0000 Subject: [PATCH 348/616] Make Ryex's suggested change Signed-off-by: TheKodeToad --- CONTRIBUTING.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d76f992eb..f016391d3 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -6,11 +6,13 @@ All files are formatted with `clang-format` using the configuration in `.clang-f We have no tool for enforcing names but please follow the following conventions for C++: - Class and type names should be formatted as `PascalCase`: `MyClass`. -- Private, non-`static const` class data members should be formatted as `camelCase` prefixed with `m_`: `m_myCounter`. -- Public, non-`static const` should be the same but without the prefix: `dateOfBirth`. +- Private or protected class data members should be formatted as `camelCase` prefixed with `m_`: `m_myCounter`. +- Private or protected `static` class data members should be formatted as `camelCase` prefixed with `s_`: `s_instance`. +- Public class data members should be formatted as `camelCase` without the prefix: `dateOfBirth`. +- Public, private or protected `static const` class data members should be formatted as `SCREAMING_SNAKE_CASE`: `MAX_VALUE`. - Class function members should be formatted as `camelCase` without a prefix: `incrementCounter`. - Non-`const` global variables should be formatted as `camelCase` without a prefix: `globalData`. And, of course, should be avoided where possible. -- `const` global variables, `static const` class data members, macros, and enum constants should be formatted as `SCREAMING_SNAKE_CASE`: `LIGHT_GRAY`. +- `const` global variables, macros, and enum constants should be formatted as `SCREAMING_SNAKE_CASE`: `LIGHT_GRAY`. - Avoid inventing acronyms or abbreviations especially for a name of multiple words - like `tp` for `texturePack`. Here is what these conventions with the formatting configuration look like: From e6d4e5d78dfacc4836a3a2240d6531cdc2dcee76 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 6 Nov 2024 23:46:30 +0000 Subject: [PATCH 349/616] Unify instance and global settings pt.1 Signed-off-by: TheKodeToad --- launcher/Application.cpp | 4 - launcher/CMakeLists.txt | 12 +- launcher/InstancePageProvider.h | 2 +- .../ui/pages/global/CustomCommandsPage.cpp | 84 -- .../pages/global/EnvironmentVariablesPage.cpp | 71 -- .../pages/global/EnvironmentVariablesPage.h | 42 - launcher/ui/pages/global/MinecraftPage.cpp | 185 ---- launcher/ui/pages/global/MinecraftPage.h | 28 +- .../pages/instance/InstanceSettingsPage.cpp | 611 ------------ .../ui/pages/instance/InstanceSettingsPage.h | 74 +- .../ui/widgets/MinecraftSettingsWidget.cpp | 320 +++++++ .../MinecraftSettingsWidget.h} | 34 +- .../ui/widgets/MinecraftSettingsWidget.ui | 876 ++++++++++++++++++ 13 files changed, 1244 insertions(+), 1099 deletions(-) delete mode 100644 launcher/ui/pages/global/CustomCommandsPage.cpp delete mode 100644 launcher/ui/pages/global/EnvironmentVariablesPage.cpp delete mode 100644 launcher/ui/pages/global/EnvironmentVariablesPage.h delete mode 100644 launcher/ui/pages/global/MinecraftPage.cpp delete mode 100644 launcher/ui/pages/instance/InstanceSettingsPage.cpp create mode 100644 launcher/ui/widgets/MinecraftSettingsWidget.cpp rename launcher/ui/{pages/global/CustomCommandsPage.h => widgets/MinecraftSettingsWidget.h} (69%) create mode 100644 launcher/ui/widgets/MinecraftSettingsWidget.ui diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 11b80a006..c45bb1c8c 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -59,8 +59,6 @@ #include "ui/pages/BasePageProvider.h" #include "ui/pages/global/APIPage.h" #include "ui/pages/global/AccountListPage.h" -#include "ui/pages/global/CustomCommandsPage.h" -#include "ui/pages/global/EnvironmentVariablesPage.h" #include "ui/pages/global/ExternalToolsPage.h" #include "ui/pages/global/JavaPage.h" #include "ui/pages/global/LanguagePage.h" @@ -801,8 +799,6 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_globalSettingsProvider->addPage(); m_globalSettingsProvider->addPage(); m_globalSettingsProvider->addPage(); - m_globalSettingsProvider->addPage(); - m_globalSettingsProvider->addPage(); m_globalSettingsProvider->addPage(); m_globalSettingsProvider->addPage(); m_globalSettingsProvider->addPage(); diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 486aaff3e..7a23b2300 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -908,7 +908,6 @@ SET(LAUNCHER_SOURCES ui/pages/instance/NotesPage.h ui/pages/instance/LogPage.cpp ui/pages/instance/LogPage.h - ui/pages/instance/InstanceSettingsPage.cpp ui/pages/instance/InstanceSettingsPage.h ui/pages/instance/ScreenshotsPage.cpp ui/pages/instance/ScreenshotsPage.h @@ -922,17 +921,12 @@ SET(LAUNCHER_SOURCES # GUI - global settings pages ui/pages/global/AccountListPage.cpp ui/pages/global/AccountListPage.h - ui/pages/global/CustomCommandsPage.cpp - ui/pages/global/CustomCommandsPage.h - ui/pages/global/EnvironmentVariablesPage.cpp - ui/pages/global/EnvironmentVariablesPage.h ui/pages/global/ExternalToolsPage.cpp ui/pages/global/ExternalToolsPage.h ui/pages/global/JavaPage.cpp ui/pages/global/JavaPage.h ui/pages/global/LanguagePage.cpp ui/pages/global/LanguagePage.h - ui/pages/global/MinecraftPage.cpp ui/pages/global/MinecraftPage.h ui/pages/global/LauncherPage.cpp ui/pages/global/LauncherPage.h @@ -1128,6 +1122,8 @@ SET(LAUNCHER_SOURCES ui/widgets/WideBar.cpp ui/widgets/ThemeCustomizationWidget.h ui/widgets/ThemeCustomizationWidget.cpp + ui/widgets/MinecraftSettingsWidget.h + ui/widgets/MinecraftSettingsWidget.cpp # GUI - instance group view ui/instanceview/InstanceProxyModel.cpp @@ -1171,7 +1167,6 @@ qt_wrap_ui(LAUNCHER_UI ui/pages/global/LauncherPage.ui ui/pages/global/APIPage.ui ui/pages/global/ProxyPage.ui - ui/pages/global/MinecraftPage.ui ui/pages/global/ExternalToolsPage.ui ui/pages/instance/ExternalResourcesPage.ui ui/pages/instance/NotesPage.ui @@ -1179,7 +1174,6 @@ qt_wrap_ui(LAUNCHER_UI ui/pages/instance/ServersPage.ui ui/pages/instance/GameOptionsPage.ui ui/pages/instance/OtherLogsPage.ui - ui/pages/instance/InstanceSettingsPage.ui ui/pages/instance/VersionPage.ui ui/pages/instance/ManagedPackPage.ui ui/pages/instance/WorldListPage.ui @@ -1202,6 +1196,7 @@ qt_wrap_ui(LAUNCHER_UI ui/widgets/ModFilterWidget.ui ui/widgets/SubTaskProgressBar.ui ui/widgets/ThemeCustomizationWidget.ui + ui/widgets/MinecraftSettingsWidget.ui ui/dialogs/CopyInstanceDialog.ui ui/dialogs/ProfileSetupDialog.ui ui/dialogs/ProgressDialog.ui @@ -1222,7 +1217,6 @@ qt_wrap_ui(LAUNCHER_UI ui/dialogs/ScrollMessageBox.ui ui/dialogs/BlockedModsDialog.ui ui/dialogs/ChooseProviderDialog.ui - ui/dialogs/skins/SkinManageDialog.ui ) diff --git a/launcher/InstancePageProvider.h b/launcher/InstancePageProvider.h index 174041f89..1d7c193f8 100644 --- a/launcher/InstancePageProvider.h +++ b/launcher/InstancePageProvider.h @@ -43,7 +43,7 @@ class InstancePageProvider : protected QObject, public BasePageProvider { values.append(new ServersPage(onesix)); // values.append(new GameOptionsPage(onesix.get())); values.append(new ScreenshotsPage(FS::PathCombine(onesix->gameRoot(), "screenshots"))); - values.append(new InstanceSettingsPage(onesix.get())); + values.append(new InstanceSettingsPage(onesix)); auto logMatcher = inst->getLogFileMatcher(); if (logMatcher) { values.append(new OtherLogsPage(inst->getLogFileRoot(), logMatcher)); diff --git a/launcher/ui/pages/global/CustomCommandsPage.cpp b/launcher/ui/pages/global/CustomCommandsPage.cpp deleted file mode 100644 index cc8518c2f..000000000 --- a/launcher/ui/pages/global/CustomCommandsPage.cpp +++ /dev/null @@ -1,84 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (c) 2022 Jamie Mansfield - * Copyright (C) 2022 Sefa Eyeoglu - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * This file incorporates work covered by the following copyright and - * permission notice: - * - * Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "CustomCommandsPage.h" -#include -#include -#include - -CustomCommandsPage::CustomCommandsPage(QWidget* parent) : QWidget(parent) -{ - auto verticalLayout = new QVBoxLayout(this); - verticalLayout->setObjectName(QStringLiteral("verticalLayout")); - verticalLayout->setContentsMargins(0, 0, 0, 0); - - auto tabWidget = new QTabWidget(this); - tabWidget->setObjectName(QStringLiteral("tabWidget")); - commands = new CustomCommands(this); - commands->setContentsMargins(6, 6, 6, 6); - tabWidget->addTab(commands, "Foo"); - tabWidget->tabBar()->hide(); - verticalLayout->addWidget(tabWidget); - loadSettings(); -} - -CustomCommandsPage::~CustomCommandsPage() {} - -bool CustomCommandsPage::apply() -{ - applySettings(); - return true; -} - -void CustomCommandsPage::applySettings() -{ - auto s = APPLICATION->settings(); - s->set("PreLaunchCommand", commands->prelaunchCommand()); - s->set("WrapperCommand", commands->wrapperCommand()); - s->set("PostExitCommand", commands->postexitCommand()); -} - -void CustomCommandsPage::loadSettings() -{ - auto s = APPLICATION->settings(); - commands->initialize(false, true, s->get("PreLaunchCommand").toString(), s->get("WrapperCommand").toString(), - s->get("PostExitCommand").toString()); -} - -void CustomCommandsPage::retranslate() -{ - commands->retranslate(); -} diff --git a/launcher/ui/pages/global/EnvironmentVariablesPage.cpp b/launcher/ui/pages/global/EnvironmentVariablesPage.cpp deleted file mode 100644 index 2d44ed624..000000000 --- a/launcher/ui/pages/global/EnvironmentVariablesPage.cpp +++ /dev/null @@ -1,71 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (C) 2023 TheKodeToad - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#include -#include -#include - -#include "EnvironmentVariablesPage.h" - -EnvironmentVariablesPage::EnvironmentVariablesPage(QWidget* parent) : QWidget(parent) -{ - auto verticalLayout = new QVBoxLayout(this); - verticalLayout->setObjectName(QStringLiteral("verticalLayout")); - verticalLayout->setContentsMargins(0, 0, 0, 0); - - auto tabWidget = new QTabWidget(this); - tabWidget->setObjectName(QStringLiteral("tabWidget")); - variables = new EnvironmentVariables(this); - variables->setContentsMargins(6, 6, 6, 6); - tabWidget->addTab(variables, "Foo"); - tabWidget->tabBar()->hide(); - verticalLayout->addWidget(tabWidget); - - variables->initialize(false, false, APPLICATION->settings()->get("Env").toMap()); -} - -QString EnvironmentVariablesPage::displayName() const -{ - return tr("Environment Variables"); -} - -QIcon EnvironmentVariablesPage::icon() const -{ - return APPLICATION->getThemedIcon("environment-variables"); -} - -QString EnvironmentVariablesPage::id() const -{ - return "environment-variables"; -} - -QString EnvironmentVariablesPage::helpPage() const -{ - return "Environment-variables"; -} - -bool EnvironmentVariablesPage::apply() -{ - APPLICATION->settings()->set("Env", variables->value()); - return true; -} - -void EnvironmentVariablesPage::retranslate() -{ - variables->retranslate(); -} diff --git a/launcher/ui/pages/global/EnvironmentVariablesPage.h b/launcher/ui/pages/global/EnvironmentVariablesPage.h deleted file mode 100644 index 6e80775ec..000000000 --- a/launcher/ui/pages/global/EnvironmentVariablesPage.h +++ /dev/null @@ -1,42 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (C) 2023 TheKodeToad - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - */ - -#pragma once - -#include - -#include "ui/pages/BasePage.h" -#include "ui/widgets/EnvironmentVariables.h" - -class EnvironmentVariablesPage : public QWidget, public BasePage { - Q_OBJECT - - public: - explicit EnvironmentVariablesPage(QWidget* parent = nullptr); - - QString displayName() const override; - QIcon icon() const override; - QString id() const override; - QString helpPage() const override; - - bool apply() override; - void retranslate() override; - - private: - EnvironmentVariables* variables; -}; diff --git a/launcher/ui/pages/global/MinecraftPage.cpp b/launcher/ui/pages/global/MinecraftPage.cpp deleted file mode 100644 index 3431dcb9c..000000000 --- a/launcher/ui/pages/global/MinecraftPage.cpp +++ /dev/null @@ -1,185 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (c) 2022 Jamie Mansfield - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * This file incorporates work covered by the following copyright and - * permission notice: - * - * Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "MinecraftPage.h" -#include "BuildConfig.h" -#include "ui_MinecraftPage.h" - -#include -#include -#include - -#include "Application.h" -#include "settings/SettingsObject.h" - -#ifdef Q_OS_LINUX -#include "MangoHud.h" -#endif - -MinecraftPage::MinecraftPage(QWidget* parent) : QWidget(parent), ui(new Ui::MinecraftPage) -{ - ui->setupUi(this); - connect(ui->useNativeGLFWCheck, &QAbstractButton::toggled, this, &MinecraftPage::onUseNativeGLFWChanged); - connect(ui->useNativeOpenALCheck, &QAbstractButton::toggled, this, &MinecraftPage::onUseNativeOpenALChanged); - loadSettings(); - updateCheckboxStuff(); -} - -MinecraftPage::~MinecraftPage() -{ - delete ui; -} - -bool MinecraftPage::apply() -{ - applySettings(); - return true; -} - -void MinecraftPage::updateCheckboxStuff() -{ - ui->windowWidthSpinBox->setEnabled(!ui->maximizedCheckBox->isChecked()); - ui->windowHeightSpinBox->setEnabled(!ui->maximizedCheckBox->isChecked()); -} - -void MinecraftPage::on_maximizedCheckBox_clicked(bool checked) -{ - Q_UNUSED(checked); - updateCheckboxStuff(); -} - -void MinecraftPage::onUseNativeGLFWChanged(bool checked) -{ - ui->lineEditGLFWPath->setEnabled(checked); -} - -void MinecraftPage::onUseNativeOpenALChanged(bool checked) -{ - ui->lineEditOpenALPath->setEnabled(checked); -} - -void MinecraftPage::applySettings() -{ - auto s = APPLICATION->settings(); - - // Window Size - s->set("LaunchMaximized", ui->maximizedCheckBox->isChecked()); - s->set("MinecraftWinWidth", ui->windowWidthSpinBox->value()); - s->set("MinecraftWinHeight", ui->windowHeightSpinBox->value()); - - // Native library workarounds - s->set("UseNativeGLFW", ui->useNativeGLFWCheck->isChecked()); - s->set("CustomGLFWPath", ui->lineEditGLFWPath->text()); - s->set("UseNativeOpenAL", ui->useNativeOpenALCheck->isChecked()); - s->set("CustomOpenALPath", ui->lineEditOpenALPath->text()); - - // Peformance related options - s->set("EnableFeralGamemode", ui->enableFeralGamemodeCheck->isChecked()); - s->set("EnableMangoHud", ui->enableMangoHud->isChecked()); - s->set("UseDiscreteGpu", ui->useDiscreteGpuCheck->isChecked()); - s->set("UseZink", ui->useZink->isChecked()); - - // Game time - s->set("ShowGameTime", ui->showGameTime->isChecked()); - s->set("ShowGlobalGameTime", ui->showGlobalGameTime->isChecked()); - s->set("RecordGameTime", ui->recordGameTime->isChecked()); - s->set("ShowGameTimeWithoutDays", ui->showGameTimeWithoutDays->isChecked()); - - // Miscellaneous - s->set("CloseAfterLaunch", ui->closeAfterLaunchCheck->isChecked()); - s->set("QuitAfterGameStop", ui->quitAfterGameStopCheck->isChecked()); - - // Legacy settings - s->set("OnlineFixes", ui->onlineFixes->isChecked()); -} - -void MinecraftPage::loadSettings() -{ - auto s = APPLICATION->settings(); - - // Window Size - ui->maximizedCheckBox->setChecked(s->get("LaunchMaximized").toBool()); - ui->windowWidthSpinBox->setValue(s->get("MinecraftWinWidth").toInt()); - ui->windowHeightSpinBox->setValue(s->get("MinecraftWinHeight").toInt()); - - ui->useNativeGLFWCheck->setChecked(s->get("UseNativeGLFW").toBool()); - ui->lineEditGLFWPath->setText(s->get("CustomGLFWPath").toString()); - ui->lineEditGLFWPath->setPlaceholderText(tr("Path to %1 library file").arg(BuildConfig.GLFW_LIBRARY_NAME)); -#ifdef Q_OS_LINUX - if (!APPLICATION->m_detectedGLFWPath.isEmpty()) - ui->lineEditGLFWPath->setPlaceholderText(tr("Auto detected path: %1").arg(APPLICATION->m_detectedGLFWPath)); -#endif - ui->useNativeOpenALCheck->setChecked(s->get("UseNativeOpenAL").toBool()); - ui->lineEditOpenALPath->setText(s->get("CustomOpenALPath").toString()); - ui->lineEditOpenALPath->setPlaceholderText(tr("Path to %1 library file").arg(BuildConfig.OPENAL_LIBRARY_NAME)); -#ifdef Q_OS_LINUX - if (!APPLICATION->m_detectedOpenALPath.isEmpty()) - ui->lineEditOpenALPath->setPlaceholderText(tr("Auto detected path: %1").arg(APPLICATION->m_detectedOpenALPath)); -#endif - - ui->enableFeralGamemodeCheck->setChecked(s->get("EnableFeralGamemode").toBool()); - ui->enableMangoHud->setChecked(s->get("EnableMangoHud").toBool()); - ui->useDiscreteGpuCheck->setChecked(s->get("UseDiscreteGpu").toBool()); - ui->useZink->setChecked(s->get("UseZink").toBool()); - -#if !defined(Q_OS_LINUX) - ui->perfomanceGroupBox->setVisible(false); -#endif - - if (!(APPLICATION->capabilities() & Application::SupportsGameMode)) { - ui->enableFeralGamemodeCheck->setDisabled(true); - ui->enableFeralGamemodeCheck->setToolTip(tr("Feral Interactive's GameMode could not be found on your system.")); - } - - if (!(APPLICATION->capabilities() & Application::SupportsMangoHud)) { - ui->enableMangoHud->setDisabled(true); - ui->enableMangoHud->setToolTip(tr("MangoHud could not be found on your system.")); - } - - ui->showGameTime->setChecked(s->get("ShowGameTime").toBool()); - ui->showGlobalGameTime->setChecked(s->get("ShowGlobalGameTime").toBool()); - ui->recordGameTime->setChecked(s->get("RecordGameTime").toBool()); - ui->showGameTimeWithoutDays->setChecked(s->get("ShowGameTimeWithoutDays").toBool()); - - ui->closeAfterLaunchCheck->setChecked(s->get("CloseAfterLaunch").toBool()); - ui->quitAfterGameStopCheck->setChecked(s->get("QuitAfterGameStop").toBool()); - - ui->onlineFixes->setChecked(s->get("OnlineFixes").toBool()); -} - -void MinecraftPage::retranslate() -{ - ui->retranslateUi(this); -} diff --git a/launcher/ui/pages/global/MinecraftPage.h b/launcher/ui/pages/global/MinecraftPage.h index 5facfbb3f..9c01bdec6 100644 --- a/launcher/ui/pages/global/MinecraftPage.h +++ b/launcher/ui/pages/global/MinecraftPage.h @@ -39,6 +39,7 @@ #include #include +#include #include "java/JavaChecker.h" #include "ui/pages/BasePage.h" @@ -48,31 +49,20 @@ namespace Ui { class MinecraftPage; } -class MinecraftPage : public QWidget, public BasePage { +class MinecraftPage : public MinecraftSettingsWidget, public BasePage { Q_OBJECT public: - explicit MinecraftPage(QWidget* parent = 0); - ~MinecraftPage(); + explicit MinecraftPage(QWidget* parent = nullptr) : MinecraftSettingsWidget(nullptr, parent) {} + ~MinecraftPage() override {} QString displayName() const override { return tr("Minecraft"); } QIcon icon() const override { return APPLICATION->getThemedIcon("minecraft"); } QString id() const override { return "minecraft-settings"; } QString helpPage() const override { return "Minecraft-settings"; } - bool apply() override; - void retranslate() override; - - private: - void updateCheckboxStuff(); - void applySettings(); - void loadSettings(); - - private slots: - void on_maximizedCheckBox_clicked(bool checked); - - void onUseNativeGLFWChanged(bool checked); - void onUseNativeOpenALChanged(bool checked); - - private: - Ui::MinecraftPage* ui; + bool apply() override + { + saveSettings(); + return true; + } }; diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.cpp b/launcher/ui/pages/instance/InstanceSettingsPage.cpp deleted file mode 100644 index 1a5be050f..000000000 --- a/launcher/ui/pages/instance/InstanceSettingsPage.cpp +++ /dev/null @@ -1,611 +0,0 @@ -// SPDX-License-Identifier: GPL-3.0-only -/* - * Prism Launcher - Minecraft Launcher - * Copyright (c) 2022 Jamie Mansfield - * Copyright (C) 2022 Sefa Eyeoglu - * Copyright (C) 2022 TheKodeToad - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see . - * - * This file incorporates work covered by the following copyright and - * permission notice: - * - * Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "InstanceSettingsPage.h" -#include "minecraft/MinecraftInstance.h" -#include "minecraft/WorldList.h" -#include "settings/Setting.h" -#include "ui/dialogs/CustomMessageBox.h" -#include "ui/java/InstallJavaDialog.h" -#include "ui_InstanceSettingsPage.h" - -#include -#include -#include - -#include - -#include "ui/dialogs/VersionSelectDialog.h" -#include "ui/widgets/CustomCommands.h" - -#include "Application.h" -#include "BuildConfig.h" -#include "JavaCommon.h" -#include "minecraft/auth/AccountList.h" - -#include "FileSystem.h" -#include "java/JavaInstallList.h" -#include "java/JavaUtils.h" - -InstanceSettingsPage::InstanceSettingsPage(BaseInstance* inst, QWidget* parent) - : QWidget(parent), ui(new Ui::InstanceSettingsPage), m_instance(inst) -{ - m_settings = inst->settings(); - ui->setupUi(this); - - ui->javaDownloadBtn->setHidden(!BuildConfig.JAVA_DOWNLOADER_ENABLED); - - connect(ui->openGlobalJavaSettingsButton, &QCommandLinkButton::clicked, this, &InstanceSettingsPage::globalSettingsButtonClicked); - connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::applySettings); - connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings); - connect(ui->instanceAccountSelector, QOverload::of(&QComboBox::currentIndexChanged), this, - &InstanceSettingsPage::changeInstanceAccount); - - connect(ui->useNativeGLFWCheck, &QAbstractButton::toggled, this, &InstanceSettingsPage::onUseNativeGLFWChanged); - connect(ui->useNativeOpenALCheck, &QAbstractButton::toggled, this, &InstanceSettingsPage::onUseNativeOpenALChanged); - - auto mInst = dynamic_cast(inst); - m_world_quickplay_supported = mInst && mInst->traits().contains("feature:is_quick_play_singleplayer"); - if (m_world_quickplay_supported) { - auto worlds = mInst->worldList(); - worlds->update(); - for (const auto& world : worlds->allWorlds()) { - ui->worldsCb->addItem(world.folderName()); - } - } else { - ui->worldsCb->hide(); - ui->worldJoinButton->hide(); - ui->serverJoinAddressButton->setChecked(true); - ui->serverJoinAddress->setEnabled(true); - ui->serverJoinAddressButton->setStyleSheet("QRadioButton::indicator { width: 0px; height: 0px; }"); - } - - loadSettings(); - - updateThresholds(); -} - -InstanceSettingsPage::~InstanceSettingsPage() -{ - delete ui; -} - -void InstanceSettingsPage::globalSettingsButtonClicked(bool) -{ - switch (ui->settingsTabs->currentIndex()) { - case 0: - APPLICATION->ShowGlobalSettings(this, "java-settings"); - return; - case 2: - APPLICATION->ShowGlobalSettings(this, "custom-commands"); - return; - case 3: - APPLICATION->ShowGlobalSettings(this, "environment-variables"); - return; - default: - APPLICATION->ShowGlobalSettings(this, "minecraft-settings"); - return; - } -} - -bool InstanceSettingsPage::apply() -{ - applySettings(); - return true; -} - -void InstanceSettingsPage::applySettings() -{ - SettingsObject::Lock lock(m_settings); - - // Miscellaneous - bool miscellaneous = ui->miscellaneousSettingsBox->isChecked(); - m_settings->set("OverrideMiscellaneous", miscellaneous); - if (miscellaneous) { - m_settings->set("CloseAfterLaunch", ui->closeAfterLaunchCheck->isChecked()); - m_settings->set("QuitAfterGameStop", ui->quitAfterGameStopCheck->isChecked()); - } else { - m_settings->reset("CloseAfterLaunch"); - m_settings->reset("QuitAfterGameStop"); - } - - // Console - bool console = ui->consoleSettingsBox->isChecked(); - m_settings->set("OverrideConsole", console); - if (console) { - m_settings->set("ShowConsole", ui->showConsoleCheck->isChecked()); - m_settings->set("AutoCloseConsole", ui->autoCloseConsoleCheck->isChecked()); - m_settings->set("ShowConsoleOnError", ui->showConsoleErrorCheck->isChecked()); - } else { - m_settings->reset("ShowConsole"); - m_settings->reset("AutoCloseConsole"); - m_settings->reset("ShowConsoleOnError"); - } - - // Window Size - bool window = ui->windowSizeGroupBox->isChecked(); - m_settings->set("OverrideWindow", window); - if (window) { - m_settings->set("LaunchMaximized", ui->maximizedCheckBox->isChecked()); - m_settings->set("MinecraftWinWidth", ui->windowWidthSpinBox->value()); - m_settings->set("MinecraftWinHeight", ui->windowHeightSpinBox->value()); - } else { - m_settings->reset("LaunchMaximized"); - m_settings->reset("MinecraftWinWidth"); - m_settings->reset("MinecraftWinHeight"); - } - - // Memory - bool memory = ui->memoryGroupBox->isChecked(); - m_settings->set("OverrideMemory", memory); - if (memory) { - int min = ui->minMemSpinBox->value(); - int max = ui->maxMemSpinBox->value(); - if (min < max) { - m_settings->set("MinMemAlloc", min); - m_settings->set("MaxMemAlloc", max); - } else { - m_settings->set("MinMemAlloc", max); - m_settings->set("MaxMemAlloc", min); - } - m_settings->set("PermGen", ui->permGenSpinBox->value()); - } else { - m_settings->reset("MinMemAlloc"); - m_settings->reset("MaxMemAlloc"); - m_settings->reset("PermGen"); - } - - // Java Install Settings - bool javaInstall = ui->javaSettingsGroupBox->isChecked(); - m_settings->set("OverrideJavaLocation", javaInstall); - if (javaInstall) { - m_settings->set("JavaPath", ui->javaPathTextBox->text()); - m_settings->set("IgnoreJavaCompatibility", ui->skipCompatibilityCheckbox->isChecked()); - } else { - m_settings->reset("JavaPath"); - m_settings->reset("IgnoreJavaCompatibility"); - } - - // Java arguments - bool javaArgs = ui->javaArgumentsGroupBox->isChecked(); - m_settings->set("OverrideJavaArgs", javaArgs); - if (javaArgs) { - m_settings->set("JvmArgs", ui->jvmArgsTextBox->toPlainText().replace("\n", " ")); - } else { - m_settings->reset("JvmArgs"); - } - - // Custom Commands - bool custcmd = ui->customCommands->checked(); - m_settings->set("OverrideCommands", custcmd); - if (custcmd) { - m_settings->set("PreLaunchCommand", ui->customCommands->prelaunchCommand()); - m_settings->set("WrapperCommand", ui->customCommands->wrapperCommand()); - m_settings->set("PostExitCommand", ui->customCommands->postexitCommand()); - } else { - m_settings->reset("PreLaunchCommand"); - m_settings->reset("WrapperCommand"); - m_settings->reset("PostExitCommand"); - } - - // Environment Variables - auto env = ui->environmentVariables->override(); - m_settings->set("OverrideEnv", env); - if (env) - m_settings->set("Env", ui->environmentVariables->value()); - else - m_settings->reset("Env"); - - // Workarounds - bool workarounds = ui->nativeWorkaroundsGroupBox->isChecked(); - m_settings->set("OverrideNativeWorkarounds", workarounds); - if (workarounds) { - m_settings->set("UseNativeGLFW", ui->useNativeGLFWCheck->isChecked()); - m_settings->set("CustomGLFWPath", ui->lineEditGLFWPath->text()); - m_settings->set("UseNativeOpenAL", ui->useNativeOpenALCheck->isChecked()); - m_settings->set("CustomOpenALPath", ui->lineEditOpenALPath->text()); - } else { - m_settings->reset("UseNativeGLFW"); - m_settings->reset("CustomGLFWPath"); - m_settings->reset("UseNativeOpenAL"); - m_settings->reset("CustomOpenALPath"); - } - - // Performance - bool performance = ui->perfomanceGroupBox->isChecked(); - m_settings->set("OverridePerformance", performance); - if (performance) { - m_settings->set("EnableFeralGamemode", ui->enableFeralGamemodeCheck->isChecked()); - m_settings->set("EnableMangoHud", ui->enableMangoHud->isChecked()); - m_settings->set("UseDiscreteGpu", ui->useDiscreteGpuCheck->isChecked()); - m_settings->set("UseZink", ui->useZink->isChecked()); - - } else { - m_settings->reset("EnableFeralGamemode"); - m_settings->reset("EnableMangoHud"); - m_settings->reset("UseDiscreteGpu"); - m_settings->reset("UseZink"); - } - - // Game time - bool gameTime = ui->gameTimeGroupBox->isChecked(); - m_settings->set("OverrideGameTime", gameTime); - if (gameTime) { - m_settings->set("ShowGameTime", ui->showGameTime->isChecked()); - m_settings->set("RecordGameTime", ui->recordGameTime->isChecked()); - } else { - m_settings->reset("ShowGameTime"); - m_settings->reset("RecordGameTime"); - } - - // Join server on launch - bool joinServerOnLaunch = ui->serverJoinGroupBox->isChecked(); - m_settings->set("JoinServerOnLaunch", joinServerOnLaunch); - if (joinServerOnLaunch) { - if (ui->serverJoinAddressButton->isChecked() || !m_world_quickplay_supported) { - m_settings->set("JoinServerOnLaunchAddress", ui->serverJoinAddress->text()); - m_settings->reset("JoinWorldOnLaunch"); - } else { - m_settings->set("JoinWorldOnLaunch", ui->worldsCb->currentText()); - m_settings->reset("JoinServerOnLaunchAddress"); - } - } else { - m_settings->reset("JoinServerOnLaunchAddress"); - m_settings->reset("JoinWorldOnLaunch"); - } - - // Use an account for this instance - bool useAccountForInstance = ui->instanceAccountGroupBox->isChecked(); - m_settings->set("UseAccountForInstance", useAccountForInstance); - if (!useAccountForInstance) { - m_settings->reset("InstanceAccountId"); - } - - bool overrideLegacySettings = ui->legacySettingsGroupBox->isChecked(); - m_settings->set("OverrideLegacySettings", overrideLegacySettings); - if (overrideLegacySettings) { - m_settings->set("OnlineFixes", ui->onlineFixes->isChecked()); - } else { - m_settings->reset("OnlineFixes"); - } - - // FIXME: This should probably be called by a signal instead - m_instance->updateRuntimeContext(); -} - -void InstanceSettingsPage::loadSettings() -{ - // Miscellaneous - ui->miscellaneousSettingsBox->setChecked(m_settings->get("OverrideMiscellaneous").toBool()); - ui->closeAfterLaunchCheck->setChecked(m_settings->get("CloseAfterLaunch").toBool()); - ui->quitAfterGameStopCheck->setChecked(m_settings->get("QuitAfterGameStop").toBool()); - - // Console - ui->consoleSettingsBox->setChecked(m_settings->get("OverrideConsole").toBool()); - ui->showConsoleCheck->setChecked(m_settings->get("ShowConsole").toBool()); - ui->autoCloseConsoleCheck->setChecked(m_settings->get("AutoCloseConsole").toBool()); - ui->showConsoleErrorCheck->setChecked(m_settings->get("ShowConsoleOnError").toBool()); - - // Window Size - ui->windowSizeGroupBox->setChecked(m_settings->get("OverrideWindow").toBool()); - ui->maximizedCheckBox->setChecked(m_settings->get("LaunchMaximized").toBool()); - ui->maximizedWarning->setVisible(m_settings->get("LaunchMaximized").toBool() && !m_instance->isLegacy()); - ui->windowWidthSpinBox->setValue(m_settings->get("MinecraftWinWidth").toInt()); - ui->windowHeightSpinBox->setValue(m_settings->get("MinecraftWinHeight").toInt()); - - // Memory - ui->memoryGroupBox->setChecked(m_settings->get("OverrideMemory").toBool()); - int min = m_settings->get("MinMemAlloc").toInt(); - int max = m_settings->get("MaxMemAlloc").toInt(); - if (min < max) { - ui->minMemSpinBox->setValue(min); - ui->maxMemSpinBox->setValue(max); - } else { - ui->minMemSpinBox->setValue(max); - ui->maxMemSpinBox->setValue(min); - } - ui->permGenSpinBox->setValue(m_settings->get("PermGen").toInt()); - bool permGenVisible = m_settings->get("PermGenVisible").toBool(); - ui->permGenSpinBox->setVisible(permGenVisible); - ui->labelPermGen->setVisible(permGenVisible); - ui->labelPermgenNote->setVisible(permGenVisible); - - // Java Settings - bool overrideLocation = m_settings->get("OverrideJavaLocation").toBool(); - bool overrideArgs = m_settings->get("OverrideJavaArgs").toBool(); - - connect(m_settings->getSetting("OverrideJavaLocation").get(), &Setting::SettingChanged, ui->javaSettingsGroupBox, - [this] { ui->javaSettingsGroupBox->setChecked(m_settings->get("OverrideJavaLocation").toBool()); }); - ui->javaSettingsGroupBox->setChecked(overrideLocation); - ui->javaPathTextBox->setText(m_settings->get("JavaPath").toString()); - connect(m_settings->getSetting("JavaPath").get(), &Setting::SettingChanged, ui->javaSettingsGroupBox, - [this] { ui->javaPathTextBox->setText(m_settings->get("JavaPath").toString()); }); - - ui->skipCompatibilityCheckbox->setChecked(m_settings->get("IgnoreJavaCompatibility").toBool()); - - ui->javaArgumentsGroupBox->setChecked(overrideArgs); - ui->jvmArgsTextBox->setPlainText(m_settings->get("JvmArgs").toString()); - - // Custom commands - ui->customCommands->initialize(true, m_settings->get("OverrideCommands").toBool(), m_settings->get("PreLaunchCommand").toString(), - m_settings->get("WrapperCommand").toString(), m_settings->get("PostExitCommand").toString()); - - // Environment variables - ui->environmentVariables->initialize(true, m_settings->get("OverrideEnv").toBool(), m_settings->get("Env").toMap()); - - // Workarounds - ui->nativeWorkaroundsGroupBox->setChecked(m_settings->get("OverrideNativeWorkarounds").toBool()); - ui->useNativeGLFWCheck->setChecked(m_settings->get("UseNativeGLFW").toBool()); - ui->lineEditGLFWPath->setText(m_settings->get("CustomGLFWPath").toString()); -#ifdef Q_OS_LINUX - ui->lineEditGLFWPath->setPlaceholderText(APPLICATION->m_detectedGLFWPath); -#else - ui->lineEditGLFWPath->setPlaceholderText(tr("Path to %1 library file").arg(BuildConfig.GLFW_LIBRARY_NAME)); -#endif - ui->useNativeOpenALCheck->setChecked(m_settings->get("UseNativeOpenAL").toBool()); - ui->lineEditOpenALPath->setText(m_settings->get("CustomOpenALPath").toString()); -#ifdef Q_OS_LINUX - ui->lineEditOpenALPath->setPlaceholderText(APPLICATION->m_detectedOpenALPath); -#else - ui->lineEditOpenALPath->setPlaceholderText(tr("Path to %1 library file").arg(BuildConfig.OPENAL_LIBRARY_NAME)); -#endif - - // Performance - ui->perfomanceGroupBox->setChecked(m_settings->get("OverridePerformance").toBool()); - ui->enableFeralGamemodeCheck->setChecked(m_settings->get("EnableFeralGamemode").toBool()); - ui->enableMangoHud->setChecked(m_settings->get("EnableMangoHud").toBool()); - ui->useDiscreteGpuCheck->setChecked(m_settings->get("UseDiscreteGpu").toBool()); - ui->useZink->setChecked(m_settings->get("UseZink").toBool()); - -#if !defined(Q_OS_LINUX) - ui->settingsTabs->setTabVisible(ui->settingsTabs->indexOf(ui->performancePage), false); -#endif - - if (!(APPLICATION->capabilities() & Application::SupportsGameMode)) { - ui->enableFeralGamemodeCheck->setDisabled(true); - ui->enableFeralGamemodeCheck->setToolTip(tr("Feral Interactive's GameMode could not be found on your system.")); - } - - if (!(APPLICATION->capabilities() & Application::SupportsMangoHud)) { - ui->enableMangoHud->setDisabled(true); - ui->enableMangoHud->setToolTip(tr("MangoHud could not be found on your system.")); - } - - // Miscellanous - ui->gameTimeGroupBox->setChecked(m_settings->get("OverrideGameTime").toBool()); - ui->showGameTime->setChecked(m_settings->get("ShowGameTime").toBool()); - ui->recordGameTime->setChecked(m_settings->get("RecordGameTime").toBool()); - - ui->serverJoinGroupBox->setChecked(m_settings->get("JoinServerOnLaunch").toBool()); - - if (auto server = m_settings->get("JoinServerOnLaunchAddress").toString(); !server.isEmpty()) { - ui->serverJoinAddress->setText(server); - ui->serverJoinAddressButton->setChecked(true); - ui->worldJoinButton->setChecked(false); - ui->serverJoinAddress->setEnabled(true); - ui->worldsCb->setEnabled(false); - } else if (auto world = m_settings->get("JoinWorldOnLaunch").toString(); !world.isEmpty() && m_world_quickplay_supported) { - ui->worldsCb->setCurrentText(world); - ui->serverJoinAddressButton->setChecked(false); - ui->worldJoinButton->setChecked(true); - ui->serverJoinAddress->setEnabled(false); - ui->worldsCb->setEnabled(true); - } else { - ui->serverJoinAddressButton->setChecked(true); - ui->worldJoinButton->setChecked(false); - ui->serverJoinAddress->setEnabled(true); - ui->worldsCb->setEnabled(false); - } - - ui->instanceAccountGroupBox->setChecked(m_settings->get("UseAccountForInstance").toBool()); - updateAccountsMenu(); - - ui->legacySettingsGroupBox->setChecked(m_settings->get("OverrideLegacySettings").toBool()); - ui->onlineFixes->setChecked(m_settings->get("OnlineFixes").toBool()); -} - -void InstanceSettingsPage::on_javaDownloadBtn_clicked() -{ - auto jdialog = new Java::InstallDialog({}, m_instance, this); - jdialog->exec(); -} - -void InstanceSettingsPage::on_javaDetectBtn_clicked() -{ - if (JavaUtils::getJavaCheckPath().isEmpty()) { - JavaCommon::javaCheckNotFound(this); - return; - } - - JavaInstallPtr java; - - VersionSelectDialog vselect(APPLICATION->javalist().get(), tr("Select a Java version"), this, true); - vselect.setResizeOn(2); - vselect.exec(); - - if (vselect.result() == QDialog::Accepted && vselect.selectedVersion()) { - java = std::dynamic_pointer_cast(vselect.selectedVersion()); - ui->javaPathTextBox->setText(java->path); - bool visible = java->id.requiresPermGen() && m_settings->get("OverrideMemory").toBool(); - ui->permGenSpinBox->setVisible(visible); - ui->labelPermGen->setVisible(visible); - ui->labelPermgenNote->setVisible(visible); - m_settings->set("PermGenVisible", visible); - - if (!java->is_64bit && m_settings->get("MaxMemAlloc").toInt() > 2048) { - CustomMessageBox::selectable(this, tr("Confirm Selection"), - tr("You selected a 32-bit version of Java.\n" - "This installation does not support more than 2048MiB of RAM.\n" - "Please make sure that the maximum memory value is lower."), - QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) - ->exec(); - } - } -} - -void InstanceSettingsPage::on_javaBrowseBtn_clicked() -{ - QString raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable")); - - // do not allow current dir - it's dirty. Do not allow dirs that don't exist - if (raw_path.isEmpty()) { - return; - } - QString cooked_path = FS::NormalizePath(raw_path); - - QFileInfo javaInfo(cooked_path); - if (!javaInfo.exists() || !javaInfo.isExecutable()) { - return; - } - ui->javaPathTextBox->setText(cooked_path); - - // custom Java could be anything... enable perm gen option - ui->permGenSpinBox->setVisible(true); - ui->labelPermGen->setVisible(true); - ui->labelPermgenNote->setVisible(true); - m_settings->set("PermGenVisible", true); -} - -void InstanceSettingsPage::on_javaTestBtn_clicked() -{ - if (checker) { - return; - } - checker.reset(new JavaCommon::TestCheck(this, ui->javaPathTextBox->text(), ui->jvmArgsTextBox->toPlainText().replace("\n", " "), - ui->minMemSpinBox->value(), ui->maxMemSpinBox->value(), ui->permGenSpinBox->value())); - connect(checker.get(), SIGNAL(finished()), SLOT(checkerFinished())); - checker->run(); -} - -void InstanceSettingsPage::onUseNativeGLFWChanged(bool checked) -{ - ui->lineEditGLFWPath->setEnabled(checked); -} - -void InstanceSettingsPage::onUseNativeOpenALChanged(bool checked) -{ - ui->lineEditOpenALPath->setEnabled(checked); -} - -void InstanceSettingsPage::updateAccountsMenu() -{ - ui->instanceAccountSelector->clear(); - auto accounts = APPLICATION->accounts(); - int accountIndex = accounts->findAccountByProfileId(m_settings->get("InstanceAccountId").toString()); - - for (int i = 0; i < accounts->count(); i++) { - MinecraftAccountPtr account = accounts->at(i); - ui->instanceAccountSelector->addItem(getFaceForAccount(account), account->profileName(), i); - if (i == accountIndex) - ui->instanceAccountSelector->setCurrentIndex(i); - } -} - -QIcon InstanceSettingsPage::getFaceForAccount(MinecraftAccountPtr account) -{ - if (auto face = account->getFace(); !face.isNull()) { - return face; - } - - return APPLICATION->getThemedIcon("noaccount"); -} - -void InstanceSettingsPage::changeInstanceAccount(int index) -{ - auto accounts = APPLICATION->accounts(); - if (index != -1 && accounts->at(index) && ui->instanceAccountGroupBox->isChecked()) { - auto account = accounts->at(index); - m_settings->set("InstanceAccountId", account->profileId()); - } -} - -void InstanceSettingsPage::on_maxMemSpinBox_valueChanged([[maybe_unused]] int i) -{ - updateThresholds(); -} - -void InstanceSettingsPage::checkerFinished() -{ - checker.reset(); -} - -void InstanceSettingsPage::retranslate() -{ - ui->retranslateUi(this); - ui->customCommands->retranslate(); // TODO: why is this seperate from the others? - ui->environmentVariables->retranslate(); -} - -void InstanceSettingsPage::updateThresholds() -{ - auto sysMiB = Sys::getSystemRam() / Sys::mebibyte; - unsigned int maxMem = ui->maxMemSpinBox->value(); - unsigned int minMem = ui->minMemSpinBox->value(); - - QString iconName; - - if (maxMem >= sysMiB) { - iconName = "status-bad"; - ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation exceeds your system memory capacity.")); - } else if (maxMem > (sysMiB * 0.9)) { - iconName = "status-yellow"; - ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation approaches your system memory capacity.")); - } else if (maxMem < minMem) { - iconName = "status-yellow"; - ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation is smaller than the minimum value")); - } else { - iconName = "status-good"; - ui->labelMaxMemIcon->setToolTip(""); - } - - { - auto height = ui->labelMaxMemIcon->fontInfo().pixelSize(); - QIcon icon = APPLICATION->getThemedIcon(iconName); - QPixmap pix = icon.pixmap(height, height); - ui->labelMaxMemIcon->setPixmap(pix); - } -} - -void InstanceSettingsPage::on_serverJoinAddressButton_toggled(bool checked) -{ - ui->serverJoinAddress->setEnabled(checked); -} - -void InstanceSettingsPage::on_worldJoinButton_toggled(bool checked) -{ - ui->worldsCb->setEnabled(checked); -} diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.h b/launcher/ui/pages/instance/InstanceSettingsPage.h index 6499f9e8f..b13dc572f 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.h +++ b/launcher/ui/pages/instance/InstanceSettingsPage.h @@ -35,63 +35,29 @@ #pragma once +#include +#include +#include +#include #include -#include -#include -#include "Application.h" -#include "BaseInstance.h" -#include "JavaCommon.h" -#include "java/JavaChecker.h" -#include "ui/pages/BasePage.h" - -class JavaChecker; -namespace Ui { -class InstanceSettingsPage; -} - -class InstanceSettingsPage : public QWidget, public BasePage { +class InstanceSettingsPage : public MinecraftSettingsWidget, public BasePage { Q_OBJECT public: - explicit InstanceSettingsPage(BaseInstance* inst, QWidget* parent = 0); - virtual ~InstanceSettingsPage(); - virtual QString displayName() const override { return tr("Settings"); } - virtual QIcon icon() const override { return APPLICATION->getThemedIcon("instance-settings"); } - virtual QString id() const override { return "settings"; } - virtual bool apply() override; - virtual QString helpPage() const override { return "Instance-settings"; } - void retranslate() override; - - void updateThresholds(); - - private slots: - void on_javaDetectBtn_clicked(); - void on_javaTestBtn_clicked(); - void on_javaBrowseBtn_clicked(); - void on_javaDownloadBtn_clicked(); - void on_maxMemSpinBox_valueChanged(int i); - void on_serverJoinAddressButton_toggled(bool checked); - void on_worldJoinButton_toggled(bool checked); - - void onUseNativeGLFWChanged(bool checked); - void onUseNativeOpenALChanged(bool checked); - - void applySettings(); - void loadSettings(); - - void checkerFinished(); - - void globalSettingsButtonClicked(bool checked); - - void updateAccountsMenu(); - QIcon getFaceForAccount(MinecraftAccountPtr account); - void changeInstanceAccount(int index); - - private: - Ui::InstanceSettingsPage* ui; - BaseInstance* m_instance; - SettingsObjectPtr m_settings; - unique_qobject_ptr checker; - bool m_world_quickplay_supported; + explicit InstanceSettingsPage(InstancePtr instance, QWidget* parent = nullptr) : MinecraftSettingsWidget(std::move(instance), parent) + { + connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::saveSettings); + connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings); + } + ~InstanceSettingsPage() override {} + QString displayName() const override { return tr("Settings"); } + QIcon icon() const override { return APPLICATION->getThemedIcon("instance-settings"); } + QString id() const override { return "settings"; } + bool apply() override + { + saveSettings(); + return true; + } + QString helpPage() const override { return "Instance-settings"; } }; diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp new file mode 100644 index 000000000..32c99f03f --- /dev/null +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -0,0 +1,320 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2022 Jamie Mansfield + * Copyright (C) 2022 Sefa Eyeoglu + * Copyright (C) 2024 TheKodeToad + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "MinecraftSettingsWidget.h" +#include + +#include "settings/Setting.h" +#include "ui_MinecraftSettingsWidget.h" + +MinecraftSettingsWidget::MinecraftSettingsWidget(InstancePtr instance, QWidget* parent) + : QWidget(parent), m_instance(std::move(instance)), m_ui(new Ui::MinecraftSettingsWidget) +{ + m_ui->setupUi(this); + + if (m_instance == nullptr) { + // Java + m_ui->settingsTabs->removeTab(1); + // Launch + m_ui->settingsTabs->removeTab(2); + m_ui->openGlobalJavaSettingsButton->setVisible(false); + } else { + m_ui->showGameTime->setText(tr("Show time &playing this instance")); + m_ui->recordGameTime->setText(tr("&Record time playing this instance")); + m_ui->showGlobalGameTime->hide(); + m_ui->showGameTimeWithoutDays->hide(); + + m_ui->maximizedWarning->setText( + tr("Warning: The maximized option is " + "not fully supported on this Minecraft version.")); + } + + m_ui->maximizedWarning->hide(); + + connect(m_ui->maximizedCheckBox, &QCheckBox::toggled, this, + [this](const bool value) { m_ui->maximizedWarning->setVisible(value && (m_instance == nullptr || !m_instance->isLegacy())); }); + + loadSettings(); +} + +MinecraftSettingsWidget::~MinecraftSettingsWidget() +{ + delete m_ui; +} + +void MinecraftSettingsWidget::loadSettings() +{ + const SettingsObjectPtr settings = getSettings(); + + // Miscellaneous + m_ui->miscellaneousSettingsBox->setCheckable(m_instance != nullptr); + m_ui->miscellaneousSettingsBox->setChecked(settings->get("OverrideMiscellaneous").toBool()); + m_ui->closeAfterLaunchCheck->setChecked(settings->get("CloseAfterLaunch").toBool()); + m_ui->quitAfterGameStopCheck->setChecked(settings->get("QuitAfterGameStop").toBool()); + + // Console + m_ui->consoleSettingsBox->setCheckable(m_instance != nullptr); + m_ui->consoleSettingsBox->setChecked(m_instance == nullptr || settings->get("OverrideConsole").toBool()); + m_ui->showConsoleCheck->setChecked(settings->get("ShowConsole").toBool()); + m_ui->autoCloseConsoleCheck->setChecked(settings->get("AutoCloseConsole").toBool()); + m_ui->showConsoleErrorCheck->setChecked(settings->get("ShowConsoleOnError").toBool()); + + // Window Size + m_ui->windowSizeGroupBox->setCheckable(m_instance != nullptr); + m_ui->windowSizeGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideWindow").toBool()); + m_ui->windowSizeGroupBox->setChecked(settings->get("OverrideWindow").toBool()); + m_ui->maximizedCheckBox->setChecked(settings->get("LaunchMaximized").toBool()); + m_ui->windowWidthSpinBox->setValue(settings->get("MinecraftWinWidth").toInt()); + m_ui->windowHeightSpinBox->setValue(settings->get("MinecraftWinHeight").toInt()); + + // Custom commands + m_ui->customCommands->initialize(m_instance != nullptr, m_instance == nullptr || settings->get("OverrideCommands").toBool(), + settings->get("PreLaunchCommand").toString(), settings->get("WrapperCommand").toString(), + settings->get("PostExitCommand").toString()); + + // Environment variables + m_ui->environmentVariables->initialize(m_instance != nullptr, m_instance == nullptr || settings->get("OverrideEnv").toBool(), + settings->get("Env").toMap()); + + // Workarounds + m_ui->nativeWorkaroundsGroupBox->setCheckable(m_instance != nullptr); + m_ui->nativeWorkaroundsGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideNativeWorkarounds").toBool()); + m_ui->useNativeGLFWCheck->setChecked(settings->get("UseNativeGLFW").toBool()); + m_ui->lineEditGLFWPath->setText(settings->get("CustomGLFWPath").toString()); +#ifdef Q_OS_LINUX + m_ui->lineEditGLFWPath->setPlaceholderText(APPLICATION->m_detectedGLFWPath); +#else + m_ui->lineEditGLFWPath->setPlaceholderText(tr("Path to %1 library file").arg(BuildConfig.GLFW_LIBRARY_NAME)); +#endif + m_ui->useNativeOpenALCheck->setChecked(settings->get("UseNativeOpenAL").toBool()); + m_ui->lineEditOpenALPath->setText(settings->get("CustomOpenALPath").toString()); +#ifdef Q_OS_LINUX + m_ui->lineEditOpenALPath->setPlaceholderText(APPLICATION->m_detectedOpenALPath); +#else + m_ui->lineEditOpenALPath->setPlaceholderText(tr("Path to %1 library file").arg(BuildConfig.OPENAL_LIBRARY_NAME)); +#endif + + // Performance + m_ui->perfomanceGroupBox->setCheckable(m_instance != nullptr); + m_ui->perfomanceGroupBox->setChecked(m_instance == nullptr || settings->get("OverridePerformance").toBool()); + m_ui->enableFeralGamemodeCheck->setChecked(settings->get("EnableFeralGamemode").toBool()); + m_ui->enableMangoHud->setChecked(settings->get("EnableMangoHud").toBool()); + m_ui->useDiscreteGpuCheck->setChecked(settings->get("UseDiscreteGpu").toBool()); + m_ui->useZink->setChecked(settings->get("UseZink").toBool()); + +#if !defined(Q_OS_LINUX) + m_ui->settingsTabs->setTabVisible(ui->settingsTabs->indexOf(ui->performancePage), false); +#endif + + if (!(APPLICATION->capabilities() & Application::SupportsGameMode)) { + m_ui->enableFeralGamemodeCheck->setDisabled(true); + m_ui->enableFeralGamemodeCheck->setToolTip(tr("Feral Interactive's GameMode could not be found on your system.")); + } + + if (!(APPLICATION->capabilities() & Application::SupportsMangoHud)) { + m_ui->enableMangoHud->setDisabled(true); + m_ui->enableMangoHud->setToolTip(tr("MangoHud could not be found on your system.")); + } + + // Miscellanous + m_ui->gameTimeGroupBox->setCheckable(m_instance != nullptr); + m_ui->gameTimeGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideGameTime").toBool()); + m_ui->showGameTime->setChecked(settings->get("ShowGameTime").toBool()); + m_ui->recordGameTime->setChecked(settings->get("RecordGameTime").toBool()); + m_ui->showGlobalGameTime->setChecked(m_instance != nullptr && settings->get("ShowGlobalGameTime").toBool()); + m_ui->showGameTimeWithoutDays->setChecked(m_instance != nullptr && settings->get("ShowGameTimeWithoutDays").toBool()); + + m_ui->legacySettingsGroupBox->setCheckable(m_instance != nullptr); + m_ui->legacySettingsGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideLegacySettings").toBool()); + m_ui->onlineFixes->setChecked(settings->get("OnlineFixes").toBool()); +} + +void MinecraftSettingsWidget::saveSettings() +{ + SettingsObjectPtr settings = getSettings(); + SettingsObject::Lock lock(settings); + + // Miscellaneous + bool miscellaneous = m_instance == nullptr || m_ui->miscellaneousSettingsBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideMiscellaneous", miscellaneous); + + if (miscellaneous) { + settings->set("CloseAfterLaunch", m_ui->closeAfterLaunchCheck->isChecked()); + settings->set("QuitAfterGameStop", m_ui->quitAfterGameStopCheck->isChecked()); + } else { + settings->reset("CloseAfterLaunch"); + settings->reset("QuitAfterGameStop"); + } + + // Console + bool console = m_instance == nullptr || m_ui->consoleSettingsBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideConsole", console); + + if (console) { + settings->set("ShowConsole", m_ui->showConsoleCheck->isChecked()); + settings->set("AutoCloseConsole", m_ui->autoCloseConsoleCheck->isChecked()); + settings->set("ShowConsoleOnError", m_ui->showConsoleErrorCheck->isChecked()); + } else { + settings->reset("ShowConsole"); + settings->reset("AutoCloseConsole"); + settings->reset("ShowConsoleOnError"); + } + + // Window Size + bool window = m_instance == nullptr || m_ui->windowSizeGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideWindow", window); + + if (window) { + settings->set("LaunchMaximized", m_ui->maximizedCheckBox->isChecked()); + settings->set("MinecraftWinWidth", m_ui->windowWidthSpinBox->value()); + settings->set("MinecraftWinHeight", m_ui->windowHeightSpinBox->value()); + } else { + settings->reset("LaunchMaximized"); + settings->reset("MinecraftWinWidth"); + settings->reset("MinecraftWinHeight"); + } + + // Custom Commands + bool custcmd = m_instance == nullptr || m_ui->customCommands->checked(); + + if (m_instance != nullptr) + settings->set("OverrideCommands", custcmd); + + if (custcmd) { + settings->set("PreLaunchCommand", m_ui->customCommands->prelaunchCommand()); + settings->set("WrapperCommand", m_ui->customCommands->wrapperCommand()); + settings->set("PostExitCommand", m_ui->customCommands->postexitCommand()); + } else { + settings->reset("PreLaunchCommand"); + settings->reset("WrapperCommand"); + settings->reset("PostExitCommand"); + } + + // Environment Variables + auto env = m_instance == nullptr || m_ui->environmentVariables->override(); + + if (m_instance != nullptr) + settings->set("OverrideEnv", env); + + if (env) + settings->set("Env", m_ui->environmentVariables->value()); + else + settings->reset("Env"); + + // Workarounds + bool workarounds = m_instance == nullptr || m_ui->nativeWorkaroundsGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideNativeWorkarounds", workarounds); + + if (workarounds) { + settings->set("UseNativeGLFW", m_ui->useNativeGLFWCheck->isChecked()); + settings->set("CustomGLFWPath", m_ui->lineEditGLFWPath->text()); + settings->set("UseNativeOpenAL", m_ui->useNativeOpenALCheck->isChecked()); + settings->set("CustomOpenALPath", m_ui->lineEditOpenALPath->text()); + } else { + settings->reset("UseNativeGLFW"); + settings->reset("CustomGLFWPath"); + settings->reset("UseNativeOpenAL"); + settings->reset("CustomOpenALPath"); + } + + // Performance + bool performance = m_instance == nullptr || m_ui->perfomanceGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverridePerformance", performance); + + if (performance) { + settings->set("EnableFeralGamemode", m_ui->enableFeralGamemodeCheck->isChecked()); + settings->set("EnableMangoHud", m_ui->enableMangoHud->isChecked()); + settings->set("UseDiscreteGpu", m_ui->useDiscreteGpuCheck->isChecked()); + settings->set("UseZink", m_ui->useZink->isChecked()); + } else { + settings->reset("EnableFeralGamemode"); + settings->reset("EnableMangoHud"); + settings->reset("UseDiscreteGpu"); + settings->reset("UseZink"); + } + + // Game time + bool gameTime = m_instance == nullptr || m_ui->gameTimeGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideGameTime", gameTime); + + if (gameTime) { + settings->set("ShowGameTime", m_ui->showGameTime->isChecked()); + settings->set("RecordGameTime", m_ui->recordGameTime->isChecked()); + } else { + settings->reset("ShowGameTime"); + settings->reset("RecordGameTime"); + } + + if (m_instance == nullptr) { + settings->set("ShowGlobalGameTime", m_ui->showGlobalGameTime->isChecked()); + settings->set("ShowGameTimeWithoutDays", m_ui->showGameTimeWithoutDays->isChecked()); + } + + bool overrideLegacySettings = m_instance == nullptr || m_ui->legacySettingsGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideLegacySettings", overrideLegacySettings); + + if (overrideLegacySettings) { + settings->set("OnlineFixes", m_ui->onlineFixes->isChecked()); + } else { + settings->reset("OnlineFixes"); + } + + if (m_instance != nullptr) + m_instance->updateRuntimeContext(); +} + +SettingsObjectPtr MinecraftSettingsWidget::getSettings() const +{ + if (m_instance != nullptr) + return m_instance->settings(); + + return APPLICATION->settings(); +} diff --git a/launcher/ui/pages/global/CustomCommandsPage.h b/launcher/ui/widgets/MinecraftSettingsWidget.h similarity index 69% rename from launcher/ui/pages/global/CustomCommandsPage.h rename to launcher/ui/widgets/MinecraftSettingsWidget.h index ec1204ffe..3a4bf30a5 100644 --- a/launcher/ui/pages/global/CustomCommandsPage.h +++ b/launcher/ui/widgets/MinecraftSettingsWidget.h @@ -2,6 +2,7 @@ /* * Prism Launcher - Minecraft Launcher * Copyright (c) 2022 Jamie Mansfield + * Copyright (C) 2024 TheKodeToad * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -35,29 +36,24 @@ #pragma once -#include -#include +#include +#include -#include -#include "ui/pages/BasePage.h" -#include "ui/widgets/CustomCommands.h" - -class CustomCommandsPage : public QWidget, public BasePage { - Q_OBJECT +namespace Ui { +class MinecraftSettingsWidget; +} +class MinecraftSettingsWidget : public QWidget { public: - explicit CustomCommandsPage(QWidget* parent = 0); - ~CustomCommandsPage(); + MinecraftSettingsWidget(InstancePtr instance, QWidget* parent = nullptr); + ~MinecraftSettingsWidget() override; - QString displayName() const override { return tr("Custom Commands"); } - QIcon icon() const override { return APPLICATION->getThemedIcon("custom-commands"); } - QString id() const override { return "custom-commands"; } - QString helpPage() const override { return "Custom-commands"; } - bool apply() override; - void retranslate() override; + void loadSettings(); + void saveSettings(); private: - void applySettings(); - void loadSettings(); - CustomCommands* commands; + SettingsObjectPtr getSettings() const; + + InstancePtr m_instance; + Ui::MinecraftSettingsWidget* m_ui; }; diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.ui b/launcher/ui/widgets/MinecraftSettingsWidget.ui new file mode 100644 index 000000000..a70d2418e --- /dev/null +++ b/launcher/ui/widgets/MinecraftSettingsWidget.ui @@ -0,0 +1,876 @@ + + + MinecraftSettingsWidget + + + + 0 + 0 + 648 + 400 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Open &Global Settings + + + The settings here are overrides for global settings. + + + + + + + 0 + + + + General + + + + + + + 0 + 0 + + + + Qt::ScrollBarAlwaysOff + + + true + + + + + 0 + -131 + 610 + 607 + + + + + + + true + + + Game &Window + + + false + + + false + + + + + + Start Minecraft maximized + + + + + + + The base game only supports resolution. In order to simulate the maximized behaviour the current implementation approximates the maximum display size. + + + <html><head/><body><p><span style=" font-weight:600; color:#f5c211;">Warning</span><span style=" color:#f5c211;">: The maximized option may not be fully supported on all Minecraft versions.</span></p></body></html> + + + + + + + + + Window height: + + + + + + + Window width: + + + + + + + 1 + + + 65536 + + + 1 + + + 854 + + + + + + + 1 + + + 65536 + + + 480 + + + + + + + + + + + + true + + + Game &Time + + + false + + + false + + + + + + Show time spent &playing instances + + + + + + + &Record time spent playing instances + + + + + + + Show &total of time played across instances + + + + + + + Always show durations in &hours + + + + + + + + + + true + + + &Console + + + false + + + false + + + + + + Show console while the game is running + + + + + + + Automatically close console when the game quits + + + + + + + Show console when the game crashes + + + + + + + + + + &Miscellaneous + + + false + + + false + + + + + + Close the launcher after game window opens + + + + + + + Quit the launcher after game window closes + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + Java + + + + + + true + + + + + 0 + 0 + 610 + 454 + + + + + + + true + + + Java Insta&llation + + + true + + + false + + + + + + If enabled, the launcher will not check if an instance is compatible with the selected Java version. + + + Skip Java compatibility checks + + + + + + + + + + + + Browse + + + + + + + + + + + Download Java + + + + + + + Auto-detect... + + + + + + + Test + + + + + + + + + + + + true + + + Memor&y + + + true + + + false + + + + + + PermGen: + + + + + + + Minimum memory allocation: + + + + + + + Maximum memory allocation: + + + + + + + Note: Permgen is set automatically by Java 8 and later + + + + + + + The amount of memory Minecraft is started with. + + + MiB + + + 8 + + + 1048576 + + + 128 + + + 256 + + + + + + + The maximum amount of memory Minecraft is allowed to use. + + + MiB + + + 8 + + + 1048576 + + + 128 + + + 1024 + + + + + + + The amount of memory available to store loaded Java classes. + + + MiB + + + 4 + + + 999999999 + + + 8 + + + 64 + + + + + + + + + + Qt::AlignCenter + + + maxMemSpinBox + + + + + + + + + + true + + + Java Argumen&ts + + + true + + + false + + + + + + + + + + + + + + + + + Tweaks + + + + + + Qt::ScrollBarAlwaysOff + + + true + + + + + 0 + 0 + 610 + 439 + + + + + + + &Legacy Tweaks + + + false + + + false + + + + + + <html><head/><body><p>Emulates usages of old online services which are no longer operating.</p><p>Current fixes include: skin and online mode support.</p></body></html> + + + Enable online fixes (experimental) + + + + + + + + + + true + + + &Native Libraries + + + false + + + false + + + + + + Use system installation of OpenAL + + + + + + + &GLFW library path + + + lineEditGLFWPath + + + + + + + Use system installation of GLFW + + + + + + + false + + + + + + + &OpenAL library path + + + lineEditOpenALPath + + + + + + + false + + + + + + + + + + true + + + &Performance + + + true + + + false + + + + + + <html><head/><body><p>Enable Feral Interactive's GameMode, to potentially improve gaming performance.</p></body></html> + + + Enable Feral GameMode + + + + + + + <html><head/><body><p>Enable MangoHud's advanced performance overlay.</p></body></html> + + + Enable MangoHud + + + + + + + <html><head/><body><p>Use the discrete GPU instead of the primary GPU.</p></body></html> + + + Use discrete GPU + + + + + + + Use Zink, a Mesa OpenGL driver that implements OpenGL on top of Vulkan. Performance may vary depending on the situation. Note: If no suitable Vulkan driver is found, software rendering will be used. + + + Use Zink + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + Launch + + + + + + true + + + + + 0 + 0 + 624 + 291 + + + + + + + Override default &account + + + true + + + false + + + + + + + + + 0 + 0 + + + + Account: + + + + + + + + + + + + + + + Set a &target to join on launch + + + true + + + false + + + + + + Server address: + + + + + + + + + + Singleplayer world + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + Custom Commands + + + + + + + + + + Environment Variables + + + + + + + + + + + + + + CustomCommands + QWidget +
    ui/widgets/CustomCommands.h
    + 1 +
    + + EnvironmentVariables + QWidget +
    ui/widgets/EnvironmentVariables.h
    + 1 +
    +
    + + maximizedCheckBox + windowWidthSpinBox + windowHeightSpinBox + showConsoleCheck + autoCloseConsoleCheck + showConsoleErrorCheck + useNativeGLFWCheck + useNativeOpenALCheck + closeAfterLaunchCheck + quitAfterGameStopCheck + + + +
    From 71e55f88294976577ad0b2f8c21b635cf8fc9735 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 6 Nov 2024 23:57:24 +0000 Subject: [PATCH 350/616] Add scrollbar to Settings -> Launcher -> Features Signed-off-by: TheKodeToad --- launcher/ui/pages/global/LauncherPage.ui | 638 ++++++++++++----------- 1 file changed, 330 insertions(+), 308 deletions(-) diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui index 3cba468ff..09e7bca5b 100644 --- a/launcher/ui/pages/global/LauncherPage.ui +++ b/launcher/ui/pages/global/LauncherPage.ui @@ -46,317 +46,339 @@ - - - Update Settings + + + Qt::ScrollBarAlwaysOff - - - - - Check for updates automatically - - - - - - - - - Update interval - - - - - - - Set it to 0 to only check on launch - - - h - - - 0 - - - 99999999 - - - - - - + + true + + + + + 0 + 0 + 473 + 770 + + + + + + + Update Settings + + + + + + Check for updates automatically + + + + + + + + + Update interval + + + + + + + Set it to 0 to only check on launch + + + h + + + 0 + + + 99999999 + + + + + + + + + + + + Folders + + + + + + &Downloads: + + + downloadsDirTextBox + + + + + + + Browse + + + + + + + + + + + + + &Skins: + + + skinsDirTextBox + + + + + + + &Icons: + + + iconsDirTextBox + + + + + + + When enabled, in addition to the downloads folder, its sub folders will also be searched when looking for resources (e.g. when looking for blocked mods on CurseForge). + + + Check downloads folder recursively + + + + + + + + + + &Java: + + + javaDirTextBox + + + + + + + &Mods: + + + modsDirTextBox + + + + + + + + + + + + + + + + Browse + + + + + + + Browse + + + + + + + Browse + + + + + + + I&nstances: + + + instDirTextBox + + + + + + + Browse + + + + + + + Browse + + + + + + + + + + Mods + + + + + + Disable using metadata provided by mod providers (like Modrinth or CurseForge) for mods. + + + Disable using metadata for mods + + + + + + + <html><head/><body><p><span style=" font-weight:600; color:#f5c211;">Warning</span><span style=" color:#f5c211;">: Disabling mod metadata may also disable some QoL features, such as mod updating!</span></p></body></html> + + + true + + + + + + + Disable the automatic detection, installation, and updating of mod dependencies. + + + Disable automatic mod dependency management + + + + + + + When creating a new modpack instance, do not suggest updating existing instances instead. + + + Skip modpack update prompt + + + + + + + + + + Miscellaneous + + + + + + 1 + + + + + + + Number of concurrent tasks + + + + + + + 1 + + + + + + + Number of concurrent downloads + + + + + + + Number of manual retries + + + + + + + 0 + + + + + + + Seconds to wait until the requests are terminated + + + Timeout for HTTP requests + + + + + + + s + + + + + + + + + + Qt::Vertical + + + + 0 + 0 + + + + + + - - - - Folders - - - - - - &Downloads: - - - downloadsDirTextBox - - - - - - - Browse - - - - - - - - - - - - - &Skins: - - - skinsDirTextBox - - - - - - - &Icons: - - - iconsDirTextBox - - - - - - - When enabled, in addition to the downloads folder, its sub folders will also be searched when looking for resources (e.g. when looking for blocked mods on CurseForge). - - - Check downloads folder recursively - - - - - - - - - - &Java: - - - javaDirTextBox - - - - - - - &Mods: - - - modsDirTextBox - - - - - - - - - - - - - - - - Browse - - - - - - - Browse - - - - - - - Browse - - - - - - - I&nstances: - - - instDirTextBox - - - - - - - Browse - - - - - - - Browse - - - - - - - - - - Mods - - - - - - Disable using metadata provided by mod providers (like Modrinth or CurseForge) for mods. - - - Disable using metadata for mods - - - - - - - <html><head/><body><p><span style=" font-weight:600; color:#f5c211;">Warning</span><span style=" color:#f5c211;">: Disabling mod metadata may also disable some QoL features, such as mod updating!</span></p></body></html> - - - true - - - - - - - Disable the automatic detection, installation, and updating of mod dependencies. - - - Disable automatic mod dependency management - - - - - - - When creating a new modpack instance, do not suggest updating existing instances instead. - - - Skip modpack update prompt - - - - - - - - - - Miscellaneous - - - - - - 1 - - - - - - - Number of concurrent tasks - - - - - - - 1 - - - - - - - Number of concurrent downloads - - - - - - - Number of manual retries - - - - - - - 0 - - - - - - - Seconds to wait until the requests are terminated - - - Timeout for HTTP requests - - - - - - - s - - - - - - - - - - Qt::Vertical - - - - 0 - 0 - - - - From 223b6b3b2b4b5ffa943c8185b7718d61835333e2 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 7 Nov 2024 00:22:22 +0000 Subject: [PATCH 351/616] Fix non-Linux build Signed-off-by: TheKodeToad --- launcher/ui/widgets/MinecraftSettingsWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index 32c99f03f..79ff4c060 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -137,7 +137,7 @@ void MinecraftSettingsWidget::loadSettings() m_ui->useZink->setChecked(settings->get("UseZink").toBool()); #if !defined(Q_OS_LINUX) - m_ui->settingsTabs->setTabVisible(ui->settingsTabs->indexOf(ui->performancePage), false); + m_ui->perfomanceGroupBox->hide(); #endif if (!(APPLICATION->capabilities() & Application::SupportsGameMode)) { From e06b3e7a7aba613fc054b63edf4ff0c0df3f7828 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 7 Nov 2024 00:47:32 +0000 Subject: [PATCH 352/616] Implement open global settings Signed-off-by: TheKodeToad --- launcher/Application.cpp | 9 +++++--- .../ui/widgets/MinecraftSettingsWidget.cpp | 22 ++++++++++++++----- launcher/ui/widgets/MinecraftSettingsWidget.h | 2 ++ .../ui/widgets/MinecraftSettingsWidget.ui | 4 ++-- 4 files changed, 27 insertions(+), 10 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index c45bb1c8c..de60f86eb 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -972,7 +972,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) [[fallthrough]]; default: { qDebug() << "Exiting because update lockfile is present"; - QMetaObject::invokeMethod(this, []() { exit(1); }, Qt::QueuedConnection); + QMetaObject::invokeMethod( + this, []() { exit(1); }, Qt::QueuedConnection); return; } } @@ -1004,7 +1005,8 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) [[fallthrough]]; default: { qDebug() << "Exiting because update lockfile is present"; - QMetaObject::invokeMethod(this, []() { exit(1); }, Qt::QueuedConnection); + QMetaObject::invokeMethod( + this, []() { exit(1); }, Qt::QueuedConnection); return; } } @@ -1734,7 +1736,8 @@ QString Application::getJarPath(QString jarFile) #if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD) FS::PathCombine(m_rootPath, "share", BuildConfig.LAUNCHER_NAME), #endif - FS::PathCombine(m_rootPath, "jars"), FS::PathCombine(applicationDirPath(), "jars"), + FS::PathCombine(m_rootPath, "jars"), + FS::PathCombine(applicationDirPath(), "jars"), FS::PathCombine(applicationDirPath(), "..", "jars") // from inside build dir, for debuging }; for (QString p : potentialPaths) { diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index 79ff4c060..cfe7a49c1 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -51,7 +51,7 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(InstancePtr instance, QWidget* m_ui->settingsTabs->removeTab(1); // Launch m_ui->settingsTabs->removeTab(2); - m_ui->openGlobalJavaSettingsButton->setVisible(false); + m_ui->openGlobalSettingsButton->setVisible(false); } else { m_ui->showGameTime->setText(tr("Show time &playing this instance")); m_ui->recordGameTime->setText(tr("&Record time playing this instance")); @@ -61,6 +61,8 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(InstancePtr instance, QWidget* m_ui->maximizedWarning->setText( tr("Warning: The maximized option is " "not fully supported on this Minecraft version.")); + + connect(m_ui->openGlobalSettingsButton, &QCommandLinkButton::clicked, this, &MinecraftSettingsWidget::openGlobalSettings); } m_ui->maximizedWarning->hide(); @@ -68,6 +70,10 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(InstancePtr instance, QWidget* connect(m_ui->maximizedCheckBox, &QCheckBox::toggled, this, [this](const bool value) { m_ui->maximizedWarning->setVisible(value && (m_instance == nullptr || !m_instance->isLegacy())); }); +#if !defined(Q_OS_LINUX) + m_ui->perfomanceGroupBox->hide(); +#endif + loadSettings(); } @@ -136,10 +142,6 @@ void MinecraftSettingsWidget::loadSettings() m_ui->useDiscreteGpuCheck->setChecked(settings->get("UseDiscreteGpu").toBool()); m_ui->useZink->setChecked(settings->get("UseZink").toBool()); -#if !defined(Q_OS_LINUX) - m_ui->perfomanceGroupBox->hide(); -#endif - if (!(APPLICATION->capabilities() & Application::SupportsGameMode)) { m_ui->enableFeralGamemodeCheck->setDisabled(true); m_ui->enableFeralGamemodeCheck->setToolTip(tr("Feral Interactive's GameMode could not be found on your system.")); @@ -311,6 +313,16 @@ void MinecraftSettingsWidget::saveSettings() m_instance->updateRuntimeContext(); } +void MinecraftSettingsWidget::openGlobalSettings() +{ + const QString id = m_ui->settingsTabs->currentWidget()->objectName(); + + if (id == "javaPage") + APPLICATION->ShowGlobalSettings(this, "java-settings"); + else // TODO select tab + APPLICATION->ShowGlobalSettings(this, "minecraft-settings"); +} + SettingsObjectPtr MinecraftSettingsWidget::getSettings() const { if (m_instance != nullptr) diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.h b/launcher/ui/widgets/MinecraftSettingsWidget.h index 3a4bf30a5..a76ff647a 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.h +++ b/launcher/ui/widgets/MinecraftSettingsWidget.h @@ -51,6 +51,8 @@ class MinecraftSettingsWidget : public QWidget { void loadSettings(); void saveSettings(); + void openGlobalSettings(); + private: SettingsObjectPtr getSettings() const; diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.ui b/launcher/ui/widgets/MinecraftSettingsWidget.ui index a70d2418e..d86fe20f4 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.ui +++ b/launcher/ui/widgets/MinecraftSettingsWidget.ui @@ -24,7 +24,7 @@ 0 - + Open &Global Settings @@ -61,7 +61,7 @@ 0 - -131 + 0 610 607 From 900235642cc806aa671c05ee8f90cc6168a8e3ae Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 7 Nov 2024 12:16:22 +0000 Subject: [PATCH 353/616] Fix formatting oversight Signed-off-by: TheKodeToad --- CONTRIBUTING.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index f016391d3..31881270a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,7 @@ We have no tool for enforcing names but please follow the following conventions - Public class data members should be formatted as `camelCase` without the prefix: `dateOfBirth`. - Public, private or protected `static const` class data members should be formatted as `SCREAMING_SNAKE_CASE`: `MAX_VALUE`. - Class function members should be formatted as `camelCase` without a prefix: `incrementCounter`. -- Non-`const` global variables should be formatted as `camelCase` without a prefix: `globalData`. And, of course, should be avoided where possible. +- Global functions and non-`const` global variables should be formatted as `camelCase` without a prefix: `globalData`. - `const` global variables, macros, and enum constants should be formatted as `SCREAMING_SNAKE_CASE`: `LIGHT_GRAY`. - Avoid inventing acronyms or abbreviations especially for a name of multiple words - like `tp` for `texturePack`. From 9601fbf2d5b36d3609cce6b1a3b458db0d170531 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 7 Nov 2024 14:45:14 +0200 Subject: [PATCH 354/616] Close the window using the invokeMethod to not block Signed-off-by: Trial97 --- launcher/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 11b80a006..0943c4ebf 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1507,7 +1507,7 @@ void Application::controllerSucceeded() // on success, do... if (controller->instance()->settings()->get("AutoCloseConsole").toBool()) { if (extras.window) { - extras.window->close(); + QMetaObject::invokeMethod(extras.window, &QWidget::close, Qt::QueuedConnection); } } extras.controller.reset(); From 8132828ad7f6f53513d8c3012c3110e1f583050f Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 7 Nov 2024 13:36:30 +0000 Subject: [PATCH 355/616] Phrasing fix Signed-off-by: TheKodeToad --- launcher/ui/widgets/MinecraftSettingsWidget.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.ui b/launcher/ui/widgets/MinecraftSettingsWidget.ui index d86fe20f4..6b93f55bb 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.ui +++ b/launcher/ui/widgets/MinecraftSettingsWidget.ui @@ -181,7 +181,7 @@ - Show &total of time played across instances + Show the &total time played across instances From 012bbca197b64a22e4b7befd001414283f300712 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 7 Nov 2024 14:51:43 +0000 Subject: [PATCH 356/616] JavaSettingsWidget -> JavaWizardWidget Signed-off-by: TheKodeToad --- launcher/CMakeLists.txt | 4 +- launcher/ui/setupwizard/JavaWizardPage.cpp | 10 +- launcher/ui/setupwizard/JavaWizardPage.h | 4 +- ...ettingsWidget.cpp => JavaWizardWidget.cpp} | 68 ++--- ...avaSettingsWidget.h => JavaWizardWidget.h} | 6 +- .../ui/widgets/MinecraftSettingsWidget.ui | 239 ------------------ 6 files changed, 46 insertions(+), 285 deletions(-) rename launcher/ui/widgets/{JavaSettingsWidget.cpp => JavaWizardWidget.cpp} (91%) rename launcher/ui/widgets/{JavaSettingsWidget.h => JavaWizardWidget.h} (95%) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 7a23b2300..28d184501 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1085,8 +1085,8 @@ SET(LAUNCHER_SOURCES ui/widgets/FocusLineEdit.h ui/widgets/IconLabel.cpp ui/widgets/IconLabel.h - ui/widgets/JavaSettingsWidget.cpp - ui/widgets/JavaSettingsWidget.h + ui/widgets/JavaWizardWidget.cpp + ui/widgets/JavaWizardWidget.h ui/widgets/LabeledToolButton.cpp ui/widgets/LabeledToolButton.h ui/widgets/LanguageSelectionWidget.cpp diff --git a/launcher/ui/setupwizard/JavaWizardPage.cpp b/launcher/ui/setupwizard/JavaWizardPage.cpp index 8caae173c..6b8ece9f7 100644 --- a/launcher/ui/setupwizard/JavaWizardPage.cpp +++ b/launcher/ui/setupwizard/JavaWizardPage.cpp @@ -14,7 +14,7 @@ #include "JavaCommon.h" -#include "ui/widgets/JavaSettingsWidget.h" +#include "ui/widgets/JavaWizardWidget.h" #include "ui/widgets/VersionSelectWidget.h" JavaWizardPage::JavaWizardPage(QWidget* parent) : BaseWizardPage(parent) @@ -27,7 +27,7 @@ void JavaWizardPage::setupUi() setObjectName(QStringLiteral("javaPage")); QVBoxLayout* layout = new QVBoxLayout(this); - m_java_widget = new JavaSettingsWidget(this); + m_java_widget = new JavaWizardWidget(this); layout->addWidget(m_java_widget); setLayout(layout); @@ -58,13 +58,13 @@ bool JavaWizardPage::validatePage() settings->set("UserAskedAboutAutomaticJavaDownload", true); switch (result) { default: - case JavaSettingsWidget::ValidationStatus::Bad: { + case JavaWizardWidget::ValidationStatus::Bad: { return false; } - case JavaSettingsWidget::ValidationStatus::AllOK: { + case JavaWizardWidget::ValidationStatus::AllOK: { settings->set("JavaPath", m_java_widget->javaPath()); } /* fallthrough */ - case JavaSettingsWidget::ValidationStatus::JavaBad: { + case JavaWizardWidget::ValidationStatus::JavaBad: { // Memory auto s = APPLICATION->settings(); s->set("MinMemAlloc", m_java_widget->minHeapSize()); diff --git a/launcher/ui/setupwizard/JavaWizardPage.h b/launcher/ui/setupwizard/JavaWizardPage.h index 9bf9cfa2b..914630d0b 100644 --- a/launcher/ui/setupwizard/JavaWizardPage.h +++ b/launcher/ui/setupwizard/JavaWizardPage.h @@ -2,7 +2,7 @@ #include "BaseWizardPage.h" -class JavaSettingsWidget; +class JavaWizardWidget; class JavaWizardPage : public BaseWizardPage { Q_OBJECT @@ -21,5 +21,5 @@ class JavaWizardPage : public BaseWizardPage { void retranslate() override; private: /* data */ - JavaSettingsWidget* m_java_widget = nullptr; + JavaWizardWidget* m_java_widget = nullptr; }; diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaWizardWidget.cpp similarity index 91% rename from launcher/ui/widgets/JavaSettingsWidget.cpp rename to launcher/ui/widgets/JavaWizardWidget.cpp index 2b270c482..edf49fab8 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaWizardWidget.cpp @@ -1,4 +1,4 @@ -#include "JavaSettingsWidget.h" +#include "JavaWizardWidget.h" #include #include @@ -29,7 +29,7 @@ #include "Application.h" #include "BuildConfig.h" -JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) +JavaWizardWidget::JavaWizardWidget(QWidget* parent) : QWidget(parent) { m_availableMemory = Sys::getSystemRam() / Sys::mebibyte; @@ -42,17 +42,17 @@ JavaSettingsWidget::JavaSettingsWidget(QWidget* parent) : QWidget(parent) connect(m_minMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int))); connect(m_maxMemSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int))); connect(m_permGenSpinBox, SIGNAL(valueChanged(int)), this, SLOT(onSpinBoxValueChanged(int))); - connect(m_memoryTimer, &QTimer::timeout, this, &JavaSettingsWidget::memoryValueChanged); - connect(m_versionWidget, &VersionSelectWidget::selectedVersionChanged, this, &JavaSettingsWidget::javaVersionSelected); - connect(m_javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::on_javaBrowseBtn_clicked); - connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaSettingsWidget::javaPathEdited); - connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaSettingsWidget::on_javaStatusBtn_clicked); + connect(m_memoryTimer, &QTimer::timeout, this, &JavaWizardWidget::memoryValueChanged); + connect(m_versionWidget, &VersionSelectWidget::selectedVersionChanged, this, &JavaWizardWidget::javaVersionSelected); + connect(m_javaBrowseBtn, &QPushButton::clicked, this, &JavaWizardWidget::on_javaBrowseBtn_clicked); + connect(m_javaPathTextBox, &QLineEdit::textEdited, this, &JavaWizardWidget::javaPathEdited); + connect(m_javaStatusBtn, &QToolButton::clicked, this, &JavaWizardWidget::on_javaStatusBtn_clicked); if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { - connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaSettingsWidget::javaDownloadBtn_clicked); + connect(m_javaDownloadBtn, &QPushButton::clicked, this, &JavaWizardWidget::javaDownloadBtn_clicked); } } -void JavaSettingsWidget::setupUi() +void JavaWizardWidget::setupUi() { setObjectName(QStringLiteral("javaSettingsWidget")); m_verticalLayout = new QVBoxLayout(this); @@ -183,7 +183,7 @@ void JavaSettingsWidget::setupUi() retranslate(); } -void JavaSettingsWidget::initialize() +void JavaWizardWidget::initialize() { m_versionWidget->initialize(APPLICATION->javalist().get()); m_versionWidget->selectSearch(); @@ -202,7 +202,7 @@ void JavaSettingsWidget::initialize() } } -void JavaSettingsWidget::refresh() +void JavaWizardWidget::refresh() { if (BuildConfig.JAVA_DOWNLOADER_ENABLED && m_autodownloadCheckBox->isChecked()) { return; @@ -214,7 +214,7 @@ void JavaSettingsWidget::refresh() m_versionWidget->loadList(); } -JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate() +JavaWizardWidget::ValidationStatus JavaWizardWidget::validate() { switch (javaStatus) { default: @@ -277,12 +277,12 @@ JavaSettingsWidget::ValidationStatus JavaSettingsWidget::validate() } } -QString JavaSettingsWidget::javaPath() const +QString JavaWizardWidget::javaPath() const { return m_javaPathTextBox->text(); } -int JavaSettingsWidget::maxHeapSize() const +int JavaWizardWidget::maxHeapSize() const { auto min = m_minMemSpinBox->value(); auto max = m_maxMemSpinBox->value(); @@ -291,7 +291,7 @@ int JavaSettingsWidget::maxHeapSize() const return max; } -int JavaSettingsWidget::minHeapSize() const +int JavaWizardWidget::minHeapSize() const { auto min = m_minMemSpinBox->value(); auto max = m_maxMemSpinBox->value(); @@ -300,17 +300,17 @@ int JavaSettingsWidget::minHeapSize() const return min; } -bool JavaSettingsWidget::permGenEnabled() const +bool JavaWizardWidget::permGenEnabled() const { return m_permGenSpinBox->isVisible(); } -int JavaSettingsWidget::permGenSize() const +int JavaWizardWidget::permGenSize() const { return m_permGenSpinBox->value(); } -void JavaSettingsWidget::memoryValueChanged() +void JavaWizardWidget::memoryValueChanged() { bool actuallyChanged = false; unsigned int min = m_minMemSpinBox->value(); @@ -334,7 +334,7 @@ void JavaSettingsWidget::memoryValueChanged() } } -void JavaSettingsWidget::javaVersionSelected(BaseVersion::Ptr version) +void JavaWizardWidget::javaVersionSelected(BaseVersion::Ptr version) { auto java = std::dynamic_pointer_cast(version); if (!java) { @@ -347,7 +347,7 @@ void JavaSettingsWidget::javaVersionSelected(BaseVersion::Ptr version) checkJavaPath(java->path); } -void JavaSettingsWidget::on_javaBrowseBtn_clicked() +void JavaWizardWidget::on_javaBrowseBtn_clicked() { auto filter = QString("Java (%1)").arg(JavaUtils::javaExecutable); auto raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable"), QString(), filter); @@ -359,13 +359,13 @@ void JavaSettingsWidget::on_javaBrowseBtn_clicked() checkJavaPath(cooked_path); } -void JavaSettingsWidget::javaDownloadBtn_clicked() +void JavaWizardWidget::javaDownloadBtn_clicked() { auto jdialog = new Java::InstallDialog({}, nullptr, this); jdialog->exec(); } -void JavaSettingsWidget::on_javaStatusBtn_clicked() +void JavaWizardWidget::on_javaStatusBtn_clicked() { QString text; bool failed = false; @@ -412,7 +412,7 @@ void JavaSettingsWidget::on_javaStatusBtn_clicked() ->show(); } -void JavaSettingsWidget::setJavaStatus(JavaSettingsWidget::JavaStatus status) +void JavaWizardWidget::setJavaStatus(JavaWizardWidget::JavaStatus status) { javaStatus = status; switch (javaStatus) { @@ -429,12 +429,12 @@ void JavaSettingsWidget::setJavaStatus(JavaSettingsWidget::JavaStatus status) } } -void JavaSettingsWidget::javaPathEdited(const QString& path) +void JavaWizardWidget::javaPathEdited(const QString& path) { checkJavaPathOnEdit(path); } -void JavaSettingsWidget::checkJavaPathOnEdit(const QString& path) +void JavaWizardWidget::checkJavaPathOnEdit(const QString& path) { auto realPath = FS::ResolveExecutable(path); QFileInfo pathInfo(realPath); @@ -447,7 +447,7 @@ void JavaSettingsWidget::checkJavaPathOnEdit(const QString& path) } } -void JavaSettingsWidget::checkJavaPath(const QString& path) +void JavaWizardWidget::checkJavaPath(const QString& path) { if (m_checker) { queuedCheck = path; @@ -461,11 +461,11 @@ void JavaSettingsWidget::checkJavaPath(const QString& path) setJavaStatus(JavaStatus::Pending); m_checker.reset( new JavaChecker(path, "", minHeapSize(), maxHeapSize(), m_permGenSpinBox->isVisible() ? m_permGenSpinBox->value() : 0, 0, this)); - connect(m_checker.get(), &JavaChecker::checkFinished, this, &JavaSettingsWidget::checkFinished); + connect(m_checker.get(), &JavaChecker::checkFinished, this, &JavaWizardWidget::checkFinished); m_checker->start(); } -void JavaSettingsWidget::checkFinished(const JavaChecker::Result& result) +void JavaWizardWidget::checkFinished(const JavaChecker::Result& result) { m_result = result; switch (result.validity) { @@ -490,7 +490,7 @@ void JavaSettingsWidget::checkFinished(const JavaChecker::Result& result) } } -void JavaSettingsWidget::retranslate() +void JavaWizardWidget::retranslate() { m_memoryGroupBox->setTitle(tr("Memory")); m_maxMemSpinBox->setToolTip(tr("The maximum amount of memory Minecraft is allowed to use.")); @@ -506,7 +506,7 @@ void JavaSettingsWidget::retranslate() m_autoJavaGroupBox->setTitle(tr("Autodetect Java")); } -void JavaSettingsWidget::updateThresholds() +void JavaWizardWidget::updateThresholds() { QString iconName; @@ -538,22 +538,22 @@ void JavaSettingsWidget::updateThresholds() } } -bool JavaSettingsWidget::autoDownloadJava() const +bool JavaWizardWidget::autoDownloadJava() const { return m_autodownloadCheckBox && m_autodownloadCheckBox->isChecked(); } -bool JavaSettingsWidget::autoDetectJava() const +bool JavaWizardWidget::autoDetectJava() const { return m_autodetectJavaCheckBox->isChecked(); } -void JavaSettingsWidget::onSpinBoxValueChanged(int) +void JavaWizardWidget::onSpinBoxValueChanged(int) { m_memoryTimer->start(500); } -JavaSettingsWidget::~JavaSettingsWidget() +JavaWizardWidget::~JavaWizardWidget() { delete m_verticalSpacer; }; \ No newline at end of file diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaWizardWidget.h similarity index 95% rename from launcher/ui/widgets/JavaSettingsWidget.h rename to launcher/ui/widgets/JavaWizardWidget.h index 35be48478..9c76c0610 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaWizardWidget.h @@ -22,12 +22,12 @@ class QSpacerItem; /** * This is a widget for all the Java settings dialogs and pages. */ -class JavaSettingsWidget : public QWidget { +class JavaWizardWidget : public QWidget { Q_OBJECT public: - explicit JavaSettingsWidget(QWidget* parent); - virtual ~JavaSettingsWidget(); + explicit JavaWizardWidget(QWidget* parent); + virtual ~JavaWizardWidget(); enum class JavaStatus { NotSet, Pending, Good, DoesNotExist, DoesNotStart, ReturnedInvalidData } javaStatus = JavaStatus::NotSet; diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.ui b/launcher/ui/widgets/MinecraftSettingsWidget.ui index 6b93f55bb..78fae9639 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.ui +++ b/launcher/ui/widgets/MinecraftSettingsWidget.ui @@ -282,245 +282,6 @@
    - - - Java - - - - - - true - - - - - 0 - 0 - 610 - 454 - - - - - - - true - - - Java Insta&llation - - - true - - - false - - - - - - If enabled, the launcher will not check if an instance is compatible with the selected Java version. - - - Skip Java compatibility checks - - - - - - - - - - - - Browse - - - - - - - - - - - Download Java - - - - - - - Auto-detect... - - - - - - - Test - - - - - - - - - - - - true - - - Memor&y - - - true - - - false - - - - - - PermGen: - - - - - - - Minimum memory allocation: - - - - - - - Maximum memory allocation: - - - - - - - Note: Permgen is set automatically by Java 8 and later - - - - - - - The amount of memory Minecraft is started with. - - - MiB - - - 8 - - - 1048576 - - - 128 - - - 256 - - - - - - - The maximum amount of memory Minecraft is allowed to use. - - - MiB - - - 8 - - - 1048576 - - - 128 - - - 1024 - - - - - - - The amount of memory available to store loaded Java classes. - - - MiB - - - 4 - - - 999999999 - - - 8 - - - 64 - - - - - - - - - - Qt::AlignCenter - - - maxMemSpinBox - - - - - - - - - - true - - - Java Argumen&ts - - - true - - - false - - - - - - - - - - - - - - Tweaks From 4c8c6e543ecef1b447d27b7e72739317e670d039 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 8 Nov 2024 00:18:12 +0200 Subject: [PATCH 357/616] fix contrributing Signed-off-by: Trial97 --- CONTRIBUTING.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 31881270a..713c9ba7c 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -5,10 +5,11 @@ All files are formatted with `clang-format` using the configuration in `.clang-format`. Ensure it is run on changed files before committing! We have no tool for enforcing names but please follow the following conventions for C++: + - Class and type names should be formatted as `PascalCase`: `MyClass`. - Private or protected class data members should be formatted as `camelCase` prefixed with `m_`: `m_myCounter`. - Private or protected `static` class data members should be formatted as `camelCase` prefixed with `s_`: `s_instance`. -- Public class data members should be formatted as `camelCase` without the prefix: `dateOfBirth`. +- Public class data members should be formatted as `camelCase` without the prefix: `dateOfBirth`. - Public, private or protected `static const` class data members should be formatted as `SCREAMING_SNAKE_CASE`: `MAX_VALUE`. - Class function members should be formatted as `camelCase` without a prefix: `incrementCounter`. - Global functions and non-`const` global variables should be formatted as `camelCase` without a prefix: `globalData`. From 66883db645e72eee221604812efa0bf648de22b4 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 9 Nov 2024 00:11:30 +0200 Subject: [PATCH 358/616] Fix removed signal handler for filter resource Signed-off-by: Trial97 --- launcher/ui/pages/instance/ExternalResourcesPage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.cpp b/launcher/ui/pages/instance/ExternalResourcesPage.cpp index 4ea12cb6d..50217f982 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.cpp +++ b/launcher/ui/pages/instance/ExternalResourcesPage.cpp @@ -112,6 +112,7 @@ ExternalResourcesPage::ExternalResourcesPage(BaseInstance* instance, std::shared m_model->loadColumns(ui->treeView); connect(ui->treeView->header(), &QHeaderView::sectionResized, this, [this] { m_model->saveColumns(ui->treeView); }); + connect(ui->filterEdit, &QLineEdit::textChanged, this, &ExternalResourcesPage::filterTextChanged); } ExternalResourcesPage::~ExternalResourcesPage() From f41380d91c72a35d6a5ff814c6b484b9171892f6 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 10 Nov 2024 00:24:54 +0000 Subject: [PATCH 359/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-filter': 'github:numtide/nix-filter/3342559a24e85fc164b295c3444e8a139924675b?narHash=sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj%2BrL8sRQsSM%3D' (2024-03-11) → 'github:numtide/nix-filter/776e68c1d014c3adde193a18db9d738458cd2ba4?narHash=sha256-SCHiL%2B1f7q9TAnxpasriP6fMarWE5H43t25F5/9e28I%3D' (2024-10-29) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0?narHash=sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c%2BcHUJwA%3D' (2024-10-18) → 'github:NixOS/nixpkgs/4aa36568d413aca0ea84a1684d2d46f55dbabad7?narHash=sha256-Zwl8YgTVJTEum%2BL%2B0zVAWvXAGbWAuXHax3KzuejaDyo%3D' (2024-11-05) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index a82e6f65f..e599acaef 100644 --- a/flake.lock +++ b/flake.lock @@ -34,11 +34,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1710156097, - "narHash": "sha256-1Wvk8UP7PXdf8bCCaEoMnOT1qe5/Duqgj+rL8sRQsSM=", + "lastModified": 1730207686, + "narHash": "sha256-SCHiL+1f7q9TAnxpasriP6fMarWE5H43t25F5/9e28I=", "owner": "numtide", "repo": "nix-filter", - "rev": "3342559a24e85fc164b295c3444e8a139924675b", + "rev": "776e68c1d014c3adde193a18db9d738458cd2ba4", "type": "github" }, "original": { @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1729256560, - "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=", + "lastModified": 1730785428, + "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0", + "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", "type": "github" }, "original": { From 885fc66c14ab55596197465d5456611e48eb4e7d Mon Sep 17 00:00:00 2001 From: Awqre <32497511+Awqre@users.noreply.github.com> Date: Tue, 12 Nov 2024 20:02:50 -0500 Subject: [PATCH 360/616] Lossless image compression Applied lossless zopfli/ect/deflopt compression to PNG files including ones contained in ICO files. Repacked ICO files with optidash icopack Signed-off-by: Awqre <32497511+Awqre@users.noreply.github.com> --- .../resources/assets/underconstruction.png | Bin 14490 -> 12372 bytes .../resources/backgrounds/kitteh-bday.png | Bin 99736 -> 65715 bytes .../resources/backgrounds/kitteh-spooky.png | Bin 94677 -> 77430 bytes .../resources/backgrounds/kitteh-xmas.png | Bin 72818 -> 68931 bytes launcher/resources/backgrounds/kitteh.png | Bin 62973 -> 58885 bytes launcher/resources/backgrounds/rory-bday.png | Bin 83235 -> 75145 bytes .../resources/backgrounds/rory-flat-bday.png | Bin 57713 -> 49757 bytes .../backgrounds/rory-flat-spooky.png | Bin 66906 -> 47832 bytes .../resources/backgrounds/rory-flat-xmas.png | Bin 59495 -> 51816 bytes launcher/resources/backgrounds/rory-flat.png | Bin 52337 -> 44719 bytes .../resources/backgrounds/rory-spooky.png | Bin 95940 -> 76908 bytes launcher/resources/backgrounds/rory-xmas.png | Bin 85543 -> 76541 bytes launcher/resources/backgrounds/rory.png | Bin 76448 -> 68309 bytes .../resources/backgrounds/teawie-bday.png | Bin 190586 -> 163564 bytes .../resources/backgrounds/teawie-spooky.png | Bin 204756 -> 174906 bytes .../resources/backgrounds/teawie-xmas.png | Bin 200137 -> 168267 bytes launcher/resources/backgrounds/teawie.png | Bin 187972 -> 159697 bytes .../128x128/instances/chicken_legacy.png | Bin 6369 -> 5184 bytes .../128x128/instances/creeper_legacy.png | Bin 9046 -> 7449 bytes .../128x128/instances/enderpearl_legacy.png | Bin 21425 -> 18944 bytes .../128x128/instances/flame_legacy.png | Bin 6226 -> 2890 bytes .../multimc/128x128/instances/forge.png | Bin 3229 -> 1556 bytes .../multimc/128x128/instances/ftb_glow.png | Bin 12708 -> 11319 bytes .../128x128/instances/ftb_logo_legacy.png | Bin 7883 -> 6664 bytes .../multimc/128x128/instances/gear_legacy.png | Bin 18321 -> 16940 bytes .../128x128/instances/herobrine_legacy.png | Bin 4937 -> 4514 bytes .../128x128/instances/infinity_legacy.png | Bin 8012 -> 6118 bytes .../multimc/128x128/instances/liteloader.png | Bin 7619 -> 5579 bytes .../128x128/instances/magitech_legacy.png | Bin 23097 -> 21813 bytes .../multimc/128x128/instances/meat_legacy.png | Bin 10583 -> 7876 bytes .../128x128/instances/netherstar_legacy.png | Bin 14062 -> 10041 bytes .../128x128/instances/skeleton_legacy.png | Bin 3673 -> 2882 bytes .../instances/squarecreeper_legacy.png | Bin 9136 -> 7099 bytes .../128x128/instances/steve_legacy.png | Bin 4312 -> 3640 bytes .../resources/multimc/128x128/shaderpacks.png | Bin 12390 -> 10629 bytes .../multimc/128x128/unknown_server.png | Bin 11085 -> 6726 bytes launcher/resources/multimc/16x16/about.png | Bin 1270 -> 752 bytes launcher/resources/multimc/16x16/bug.png | Bin 734 -> 618 bytes launcher/resources/multimc/16x16/cat.png | Bin 736 -> 707 bytes .../resources/multimc/16x16/centralmods.png | Bin 1145 -> 561 bytes .../resources/multimc/16x16/checkupdate.png | Bin 1212 -> 741 bytes launcher/resources/multimc/16x16/copy.png | Bin 957 -> 396 bytes launcher/resources/multimc/16x16/coremods.png | Bin 702 -> 654 bytes launcher/resources/multimc/16x16/help.png | Bin 1297 -> 779 bytes .../multimc/16x16/instance-settings.png | Bin 1410 -> 912 bytes launcher/resources/multimc/16x16/jarmods.png | Bin 693 -> 586 bytes .../resources/multimc/16x16/loadermods.png | Bin 731 -> 609 bytes launcher/resources/multimc/16x16/log.png | Bin 630 -> 327 bytes .../resources/multimc/16x16/minecraft.png | Bin 782 -> 742 bytes launcher/resources/multimc/16x16/new.png | Bin 1175 -> 625 bytes launcher/resources/multimc/16x16/news.png | Bin 727 -> 598 bytes .../resources/multimc/16x16/noaccount.png | Bin 334 -> 191 bytes launcher/resources/multimc/16x16/patreon.png | Bin 840 -> 278 bytes launcher/resources/multimc/16x16/refresh.png | Bin 931 -> 828 bytes .../resources/multimc/16x16/resourcepacks.png | Bin 1207 -> 906 bytes .../resources/multimc/16x16/screenshots.png | Bin 976 -> 533 bytes launcher/resources/multimc/16x16/settings.png | Bin 1410 -> 912 bytes launcher/resources/multimc/16x16/star.png | Bin 729 -> 628 bytes .../resources/multimc/16x16/status-bad.png | Bin 643 -> 400 bytes .../resources/multimc/16x16/status-good.png | Bin 714 -> 483 bytes .../multimc/16x16/status-running.png | Bin 675 -> 475 bytes .../resources/multimc/16x16/status-yellow.png | Bin 590 -> 398 bytes .../resources/multimc/16x16/viewfolder.png | Bin 852 -> 319 bytes launcher/resources/multimc/16x16/worlds.png | Bin 870 -> 768 bytes launcher/resources/multimc/22x22/about.png | Bin 1693 -> 1151 bytes launcher/resources/multimc/22x22/bug.png | Bin 1180 -> 1022 bytes launcher/resources/multimc/22x22/cat.png | Bin 1034 -> 916 bytes .../resources/multimc/22x22/centralmods.png | Bin 1561 -> 984 bytes .../resources/multimc/22x22/checkupdate.png | Bin 1635 -> 1157 bytes launcher/resources/multimc/22x22/copy.png | Bin 1004 -> 461 bytes launcher/resources/multimc/22x22/help.png | Bin 1735 -> 1217 bytes .../multimc/22x22/instance-settings.png | Bin 1964 -> 1431 bytes launcher/resources/multimc/22x22/new.png | Bin 1440 -> 907 bytes launcher/resources/multimc/22x22/news.png | Bin 1173 -> 932 bytes launcher/resources/multimc/22x22/patreon.png | Bin 939 -> 332 bytes launcher/resources/multimc/22x22/refresh.png | Bin 1283 -> 1182 bytes .../resources/multimc/22x22/screenshots.png | Bin 1320 -> 849 bytes launcher/resources/multimc/22x22/settings.png | Bin 1964 -> 1431 bytes .../resources/multimc/22x22/status-bad.png | Bin 968 -> 561 bytes .../resources/multimc/22x22/status-good.png | Bin 994 -> 724 bytes .../multimc/22x22/status-running.png | Bin 957 -> 702 bytes .../resources/multimc/22x22/status-yellow.png | Bin 803 -> 592 bytes .../resources/multimc/22x22/viewfolder.png | Bin 1006 -> 475 bytes launcher/resources/multimc/22x22/worlds.png | Bin 1397 -> 1262 bytes launcher/resources/multimc/24x24/cat.png | Bin 1252 -> 1175 bytes launcher/resources/multimc/24x24/coremods.png | Bin 1281 -> 1176 bytes launcher/resources/multimc/24x24/jarmods.png | Bin 1170 -> 1024 bytes .../resources/multimc/24x24/loadermods.png | Bin 1240 -> 1092 bytes launcher/resources/multimc/24x24/log.png | Bin 1117 -> 607 bytes .../resources/multimc/24x24/minecraft.png | Bin 1500 -> 1452 bytes .../resources/multimc/24x24/noaccount.png | Bin 344 -> 186 bytes launcher/resources/multimc/24x24/patreon.png | Bin 977 -> 377 bytes .../resources/multimc/24x24/resourcepacks.png | Bin 2000 -> 1679 bytes launcher/resources/multimc/24x24/star.png | Bin 1217 -> 1062 bytes .../resources/multimc/24x24/status-bad.png | Bin 1102 -> 632 bytes .../resources/multimc/24x24/status-good.png | Bin 1066 -> 794 bytes .../multimc/24x24/status-running.png | Bin 1059 -> 749 bytes .../resources/multimc/24x24/status-yellow.png | Bin 872 -> 648 bytes .../resources/multimc/256x256/minecraft.png | Bin 49869 -> 42727 bytes launcher/resources/multimc/32x32/about.png | Bin 2658 -> 2088 bytes launcher/resources/multimc/32x32/bug.png | Bin 1772 -> 1584 bytes launcher/resources/multimc/32x32/cat.png | Bin 1678 -> 1573 bytes .../resources/multimc/32x32/centralmods.png | Bin 2119 -> 1477 bytes .../resources/multimc/32x32/checkupdate.png | Bin 2480 -> 1989 bytes launcher/resources/multimc/32x32/copy.png | Bin 1401 -> 777 bytes launcher/resources/multimc/32x32/coremods.png | Bin 1758 -> 1595 bytes launcher/resources/multimc/32x32/help.png | Bin 2720 -> 2161 bytes .../multimc/32x32/instance-settings.png | Bin 2983 -> 2429 bytes .../multimc/32x32/instances/brick_legacy.png | Bin 2388 -> 233 bytes .../32x32/instances/chicken_legacy.png | Bin 1181 -> 987 bytes .../32x32/instances/creeper_legacy.png | Bin 1524 -> 1361 bytes .../32x32/instances/diamond_legacy.png | Bin 2444 -> 228 bytes .../multimc/32x32/instances/dirt_legacy.png | Bin 482 -> 211 bytes .../32x32/instances/enderpearl_legacy.png | Bin 2120 -> 1893 bytes .../multimc/32x32/instances/ftb_glow.png | Bin 1747 -> 1515 bytes .../32x32/instances/ftb_logo_legacy.png | Bin 1607 -> 1452 bytes .../multimc/32x32/instances/gear_legacy.png | Bin 2414 -> 2281 bytes .../multimc/32x32/instances/gold_legacy.png | Bin 2366 -> 228 bytes .../multimc/32x32/instances/grass_legacy.png | Bin 618 -> 408 bytes .../32x32/instances/herobrine_legacy.png | Bin 1034 -> 850 bytes .../32x32/instances/infinity_legacy.png | Bin 1714 -> 1319 bytes .../multimc/32x32/instances/iron_legacy.png | Bin 1772 -> 195 bytes .../32x32/instances/magitech_legacy.png | Bin 2646 -> 2503 bytes .../multimc/32x32/instances/meat_legacy.png | Bin 1514 -> 1129 bytes .../32x32/instances/netherstar_legacy.png | Bin 1942 -> 1201 bytes .../multimc/32x32/instances/planks_legacy.png | Bin 2299 -> 226 bytes .../32x32/instances/skeleton_legacy.png | Bin 696 -> 442 bytes .../32x32/instances/squarecreeper_legacy.png | Bin 1623 -> 1388 bytes .../multimc/32x32/instances/steve_legacy.png | Bin 969 -> 757 bytes .../multimc/32x32/instances/stone_legacy.png | Bin 1866 -> 185 bytes .../multimc/32x32/instances/tnt_legacy.png | Bin 378 -> 230 bytes launcher/resources/multimc/32x32/jarmods.png | Bin 1566 -> 1406 bytes .../resources/multimc/32x32/loadermods.png | Bin 1708 -> 1539 bytes launcher/resources/multimc/32x32/log.png | Bin 1460 -> 850 bytes .../resources/multimc/32x32/minecraft.png | Bin 2495 -> 2352 bytes launcher/resources/multimc/32x32/new.png | Bin 1769 -> 1293 bytes launcher/resources/multimc/32x32/news.png | Bin 1752 -> 1342 bytes .../resources/multimc/32x32/noaccount.png | Bin 363 -> 182 bytes launcher/resources/multimc/32x32/patreon.png | Bin 1086 -> 441 bytes launcher/resources/multimc/32x32/refresh.png | Bin 2182 -> 2075 bytes .../resources/multimc/32x32/resourcepacks.png | Bin 2818 -> 2419 bytes .../resources/multimc/32x32/screenshots.png | Bin 1892 -> 1388 bytes launcher/resources/multimc/32x32/settings.png | Bin 2983 -> 2429 bytes launcher/resources/multimc/32x32/star.png | Bin 1698 -> 1492 bytes .../resources/multimc/32x32/status-bad.png | Bin 1422 -> 890 bytes .../resources/multimc/32x32/status-good.png | Bin 1400 -> 1048 bytes .../multimc/32x32/status-running.png | Bin 1425 -> 1045 bytes .../resources/multimc/32x32/status-yellow.png | Bin 1158 -> 920 bytes .../resources/multimc/32x32/viewfolder.png | Bin 1518 -> 958 bytes launcher/resources/multimc/32x32/worlds.png | Bin 2336 -> 2195 bytes launcher/resources/multimc/48x48/about.png | Bin 3995 -> 3331 bytes launcher/resources/multimc/48x48/bug.png | Bin 3124 -> 2680 bytes launcher/resources/multimc/48x48/cat.png | Bin 2733 -> 2521 bytes .../resources/multimc/48x48/centralmods.png | Bin 3201 -> 2506 bytes .../resources/multimc/48x48/checkupdate.png | Bin 4196 -> 3582 bytes launcher/resources/multimc/48x48/copy.png | Bin 1952 -> 1271 bytes launcher/resources/multimc/48x48/help.png | Bin 4170 -> 3535 bytes .../multimc/48x48/instance-settings.png | Bin 4797 -> 4146 bytes launcher/resources/multimc/48x48/log.png | Bin 2825 -> 1713 bytes .../resources/multimc/48x48/minecraft.png | Bin 5077 -> 4563 bytes launcher/resources/multimc/48x48/new.png | Bin 2870 -> 2215 bytes launcher/resources/multimc/48x48/news.png | Bin 3333 -> 2408 bytes .../resources/multimc/48x48/noaccount.png | Bin 387 -> 183 bytes launcher/resources/multimc/48x48/patreon.png | Bin 1390 -> 622 bytes launcher/resources/multimc/48x48/refresh.png | Bin 3743 -> 3627 bytes .../resources/multimc/48x48/screenshots.png | Bin 3010 -> 2474 bytes launcher/resources/multimc/48x48/settings.png | Bin 4797 -> 4146 bytes launcher/resources/multimc/48x48/star.png | Bin 3227 -> 2799 bytes .../resources/multimc/48x48/status-bad.png | Bin 2389 -> 1536 bytes .../resources/multimc/48x48/status-good.png | Bin 2248 -> 1807 bytes .../multimc/48x48/status-running.png | Bin 2288 -> 1732 bytes .../resources/multimc/48x48/status-yellow.png | Bin 1773 -> 1491 bytes .../resources/multimc/48x48/viewfolder.png | Bin 1945 -> 1342 bytes launcher/resources/multimc/48x48/worlds.png | Bin 4043 -> 3823 bytes .../50x50/instances/enderman_legacy.png | Bin 2429 -> 1327 bytes launcher/resources/multimc/64x64/about.png | Bin 5513 -> 4775 bytes launcher/resources/multimc/64x64/bug.png | Bin 4263 -> 3810 bytes launcher/resources/multimc/64x64/cat.png | Bin 4033 -> 3764 bytes .../resources/multimc/64x64/centralmods.png | Bin 4408 -> 3607 bytes .../resources/multimc/64x64/checkupdate.png | Bin 5858 -> 5102 bytes launcher/resources/multimc/64x64/copy.png | Bin 2884 -> 2078 bytes launcher/resources/multimc/64x64/coremods.png | Bin 5036 -> 4263 bytes launcher/resources/multimc/64x64/help.png | Bin 5402 -> 4351 bytes .../multimc/64x64/instance-settings.png | Bin 7125 -> 6346 bytes launcher/resources/multimc/64x64/jarmods.png | Bin 4003 -> 3618 bytes .../resources/multimc/64x64/loadermods.png | Bin 4406 -> 3894 bytes launcher/resources/multimc/64x64/log.png | Bin 3686 -> 2420 bytes launcher/resources/multimc/64x64/new.png | Bin 3949 -> 3157 bytes launcher/resources/multimc/64x64/news.png | Bin 4968 -> 3446 bytes launcher/resources/multimc/64x64/patreon.png | Bin 1667 -> 785 bytes launcher/resources/multimc/64x64/refresh.png | Bin 5745 -> 5352 bytes .../resources/multimc/64x64/resourcepacks.png | Bin 6805 -> 6022 bytes .../resources/multimc/64x64/screenshots.png | Bin 4518 -> 3878 bytes launcher/resources/multimc/64x64/settings.png | Bin 7125 -> 6346 bytes launcher/resources/multimc/64x64/star.png | Bin 4554 -> 3851 bytes .../resources/multimc/64x64/status-bad.png | Bin 2827 -> 1972 bytes .../resources/multimc/64x64/status-good.png | Bin 2954 -> 2304 bytes .../multimc/64x64/status-running.png | Bin 3178 -> 2408 bytes .../resources/multimc/64x64/status-yellow.png | Bin 2358 -> 1922 bytes .../resources/multimc/64x64/viewfolder.png | Bin 2134 -> 1470 bytes launcher/resources/multimc/64x64/worlds.png | Bin 7303 -> 6933 bytes launcher/resources/multimc/8x8/noaccount.png | Bin 284 -> 138 bytes launcher/resources/sources/burfcat_hat.png | Bin 15813 -> 9969 bytes program_info/prismlauncher.icns | Bin 400974 -> 194065 bytes program_info/prismlauncher.ico | Bin 372526 -> 18235 bytes 205 files changed, 0 insertions(+), 0 deletions(-) diff --git a/launcher/resources/assets/underconstruction.png b/launcher/resources/assets/underconstruction.png index 6ae06476eb256384ce693014bf2642365ba83220..5f2fdf9e45a21e32d32f058761235bd42c33714c 100644 GIT binary patch literal 12372 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 diff --git a/launcher/resources/backgrounds/kitteh-bday.png b/launcher/resources/backgrounds/kitteh-bday.png index 09a36566934a0b25088486c10c452d71752464f8..f4a7bbc1fe48de1780c0dd3d38c798a782ec68c2 100644 GIT binary patch literal 65715 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 z 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 ap>ck_YpAo0@9 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%0Dwcfrbx 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

    1*dQ|-?1OEU-Y=VqWplus8 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%0Df8H}7H( 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

    &O#cvM)EHNlP*;k(IYMW#x+i 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≤s2LEpRC0?Va7t*)*v)fcYw?dtC4ciATDHRWIjLoLK8gkQ${L?gXn!DJcd z4t=SFTCJp7<(eTw{@JIe$SeW#=HioMXBKqmDCR-pCN#K4(ZLKR|F$f z$Ph%Y+z)!`-8b{|++YO~Q&R`R(}N|x)@EY^_MNuYEK(OD$GUg#-qqE*$a>1+6&>O+ zD!w?z>yD(bc>5MDvilQ5NNhsF*z|O7#`ScDJ^b_f@n8SRz_2oGvcBmGi*5-C2_#}# zlY27kR1wRQ`J&it##2?&(W*f2RgZcVy&cB%T<2+r)bLBSi=0kRID~~2Xh_ZJu>Z4q z{{<=3A00rBz~BYwpIbv|{Ns2J{Lkk1yt^HTUr72WVresU6w9a79LDRs{Z^1wp8a{E zP9T*4LsBu#cwo!S+So55B4Uo2_Z2o;V7rsEGmzp@TwL5w1qIq4O)c`!e3!7s?+U(lO9D!?fmzJwkeOQ%~Zm&k3V z8~!%$T$BNC`Dft_tdrM1zD8(Txgu>L)jo&- zfdd2@>QdkMQYluGBT1Fr;cg0ha)M9S@kRtwR}af~CKeW!*-ER)E&%uPb#L-D@x;kJ z{yz2a^hE#Mp8ZuxAu@c)=U5Ghp=P}^lk1B!L)($B1&qT&hYvkZcg>8A{c08!rIj8R z60!)`8T}ghC6+YS>t^ob;c+pSy3*Gt12Ujg-dHiPEi0<1Z|!g8drm*B_HMmU(KF8d zUXEj8_n%Od*nyjKn^GF>AiI}7mfttWqwGLJeT*1Y`D|{^rO#m(Jj;DNWEP&)#c?P% zGGFBAlG4-H&etg&APrK>$b<1_jxhF7@Yq8cl78#93W^J)G|B6?21{yu`=nunAQSE2f{!HTcqWy{KbB2bIXYi}R6G==JWmpyx) zh_zJJb56oH!0j>=ypv^5bef%%oJ^ObPD~WRzQGywbHK3+-OP>>2K5qR?O(*BueU*_ z9D<7N>xX)A(tWT2yp9VER$)OcPIu=a2J!{cRcJIiv={`;zgtl$vMVYM$+SA*gFkQh zha_^fga!Ry6v{Xw;}qC&8CQSkpUa3s>-5~M4TL8S8p$(e<_0Q

    $M01w1KQ^)5SV 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ňGX*jL(l zk9LcX+~U)@u2wt&r-K+2pqmedZJe-6%0Ikx8KQ(@Tcp>3bUZEeL9yEpisG6<@tuZs zxYDb4Cz_1*=HS|Ut>GWUf7m!@j40tyU=g$EYK|kl4%Nc#$5omSlcKjx1pmd4%obx{ z^3%{glh6vKi8b3xmsgECvR|6V2xrc=VdPhnP%&$Nk&JcsTctsP_eQ%G?sog?ZNIX6 zLZL4n9v_?0&Hp{!vJ`1zZl}^oM5Q4>OII(}xCQ`u9PiG%xQ3rliRJ5rrI-2EbAR}T z$&PQnqx?8!>jZrVs33u*-87FU`_GckFIaVD$x6Q#lHSYGs`s@=p7c4(a^z^9>t=1KG#KCL8ia61c)biI{i+{xU5 zcn%+RWape_!6t`+9mliT+@IBK-MGt6VVHr9yCVT@k@<#RRr8KGr5&a_(U4CnjRV&3 z*%w>n(L0KZH&CoHo~}hU+AD8y2k#0Ds)r0*;}N_?Qg+QVL1-jG6wAI0XmP;&LpjOq zoP)s>7kIhbO;_u(KzWySQ1*}um$THEvTdz^t z;#G7JGngf=FKc3s_Z;U2Frz5K70v*3$JIA_I7@N1#-98S!ltNtcOPWaJt@ZcxG4}M z9ssr8f)`0w`$qM^zCe*?63z1nC*cc>g2AD#7Ur=L$N&Z;*1vSeOuuTVbw61#wUl`R-~2na+JwXJDPs-`-tvt-XYd}-rf=V;(hX$*4avB0A(N5y0GMmCDpF~^5n{(G8Dhm9cvoVVyjW_=vpW!; zQvwWe4UL3v-^AdMJN;4ctP5%cAj>d?T>=mFEhQz|jdu3j@%8Uk+^8B0_~|x2raR4asIo?)MRi?GL(T??W9_5~KZ(NB$M58}@W-_dEtd>|pAuQaXb4F8756w+zu z@ln>lPyV>bMcp-Xu&iD2%iJR^e2?oVMi;^{6m6Y7^w&iYdM}PFaCTrU*}ic--`sPw z*6!eknzBmq1lrqcote|jrX!oOZYjO+5t#^K2^B8?#}}<37Z1}_`u>+kGyYeXhkyT~ z(!fG>Qy~0wI!2o76yklEcm>S^@Zekp#8NX{eq!O?0rp%w=-jK+qFm;f6!*(Sy%ac| zd+-^%*dt+TPlBjl0`~?=(%?B@+|eio&GXLLy0XQ^zjKkS ztXZBRNmsM;2Pefzdq1x4GSMCw#$QX24?+Q~j57aDR-OPoTdqcTo57Z_^WU^dr6-7F zIQ0`waCSiu6z)iF<4FD<+~3K`&9;Bl!0VzO;Oyw=NEh}_eE&olW`xCXKGI`AMcTd& zIs{#=2GDbFwNVu>w_&7c-FXZb*ZW1S3Z%>8R$TLx!`5M(B zyJ)_Tn-o!{nT@xRFWhG72Ao)OKl3)=%k;P!CB#pqzCFmMC62gt}T#T61>K`>4=J=6R(8j#lDu0{nNacqH zAw;AMw3n2fM>n8ITvaoi_W8;3Y1@dyyLm5FRp+Za9%FDm{C$9ZR8BMKm1nqOp87cJ zbkH)s+y6xs|o*VHx$5Y_+nFJ~g!~2Zx8TB}ePJ%i2rO*fs+70N; z-=sLX7M=rZ65=5^vR^NJ4G7v!`0$my#{|v|D1$hUEAbjsJx6V{%&1}ytIeo%AwBcj zpSWVtV#%?|ZwrfWE#{rx!pNh9p>L{!mvkMyEsM+I!(X|7bgD>9Dv|{6a;clC@Px_B z>nz-7%ZnyUEX0>`6tMZZ#Wxw|@Uno3IfoVb+wspP!F*unEVzGfOD>Q6m3hy05n{EG z$7Eu4KJw;Upkyqq+!%M%UqGAMPF9%c%#H8({cR!##`W_8d|Cr^Y>v$%8c9L!|J|t7 zSIal9j^xmDOli47>%f`+>uB(we-{iLzHxc5+8Krq9~`!LGZ_^Crnv|_1b&1p`qm7|rwX5=H!!lHifxr0ZEO!J$C1({3Vvn4=V z&E8Pk7&`OCvX6W<$$TZ9s$+#({MODlerF!adWWgU3_}YWksBIka~EbO z_v;50baLSj%FF2bSN1RDbs(rY@LWaNu zk^R8;@9Ma;3^}T0wiDA@{a-Akg4p~wT1=)yY_lZvTkOBngnrJbd%K{&ulr|l^ENV% znUakLVlgdZooV(CJuxhO?3w7^Lq>Lr=W@@oEWy-F2&jf&zw%%C=7+ev3IU2ev9-08 z6A`}II9VIDa}FoT-f|DLhoDWfl3MoFtH*BTMT(KfZ_PiguJ@v9m1^b)w_D7~>3^yR zeUlGxQrU`FQGBQow|B8CA0%r^%4nmhe)7GA?DU<{xemXR9+VU93TFJalJHF6Xa& z_fIc){9o`WEoPVU?tfh+^Kkr&{%?QBaJ6gpNpexGno4JaBtg#)T?3fSeRWF==9Yf5 z%KEk9OfiOk9&X=lPl(FtooO{8G`e^q(n0jEPt!$-3hgas*DLIs6nFmx4-g6DzI(Z* zY2+ZWQnSmW&HTC^gkg}e+zp8*w79z%eGRRR*8nm8bU~G<1@NOND_j)Dtq%N|x#bNK z&7qHFRin!nEkPX27u`|Uc4-H#oU7ycf79l1f<_6YxKgXW?lJqVO)~tRZqZj~84rEj zr?11*fD~gTg?=14OAlcT&EM6ptWLv<@uKql)XyyAs6Q1m!e|?Xw-tWd{$A;f?`G=Z zjW*8%3&<>nESwAbH{BLqq6Zkt{n!(wj82%z_Th#h;6(dg8f27=$Yjhu%k zw?ASLa4S_otpAA~NGj}5!8o74@?%WskG};B`yKE3b5z@G;uT?!BVN*BEPeP`+M4H& zO&F!Jm~Zu+0V%{zIEF11sFm;5MeYx@RRqC+qE)r65SwUxV9%nS9g}oisAR*3ja+Ce zJgduRoT;`?4yldaXNs|3(GqcFBST=bQOBZk2bhtA$~!`Dp>qu<`ToUCh0p-j8*RZ> zWXHcI5_;(E&nm%xCpGK_?|Md!pJ6c_z?`0)KB`J+KHz{Owg&WH@ zPua0*_+X?Z0Vt{{-+!RZx_?V3w@&r>EkUsa=HCUQRtt^x@`e#?WlQb9Ue%zw#3-wA zi1T+^-NLAy5AMqqNi^6 zs{!we-V6$XbKY733T5e73TcBFji< z9aGJHWwr3eL~j-y_=*%*B&Y+IyVh(f`ej__^BfPf6!LgJ z>-hU-td=AHrv<2{qNP$C`i_};^l|;Rr;Eqt*kx*Pojseqv$bJ)e!v}j-as-D*(aip z@s=jPyywf@?yO{)uB6jBc)>U!l&J>7gW+eYaz*iUI+Y4z|4K9zYK!DGYDUT~XWQog z-DCS!{VQQA;Oge*q06t&vXoE1hdk?q#_y_PGm0>uGfLlR9e&oeT82M<$&fPCz!oCP ziAmlel=ao3sxToTp|PmwsfGq5VJPSZbmoAo{`isxW!{W3cmfHazc96F;*ohq+;v(! z^kzf0+1Xi?9dv$UW9rc+g6%8n&uaTRjqa@AF> z2{m{G*@{!Aq;!bvbg?>!(K{=q6|*^uJDBRz@B5hBLqTAvk!JvoSl-H7KZg4ucG8ye zZcQ05>D*=v5g(XFgF$zsN}GA%B*84kRz`Q$5ymLlK`>m64WcZgYEMhU)ohE{Zu^D> zW0+)kQZCwhPf6&4Y@Vulu!)%gYm$Iu^eQC^!pbcnCcLV&ds&j9;fa7|lzqi#HP=4KST7y>wSRX)z(jy1jgO zH|Ox2#*F)3Q$-{Tu9M(Hb*+R-3n@aw80Y60zjP4*my82nM4)gq3yj6^J7+IeEyS~#T>Zd=_P9!R0@Qcwlgdd=@{K>enU3(Xu#O&eBx zECEOqFoTAOg5hXWx6c0I)miyfKk8To|9Wuwhd&$~GK3+RmzM_*%A{%v=znmh70zqV zVc>i8cGlgeX_~r98YDa#=G=yA?o#s+Z1Pb<2iOLs+1uEQtt6S#=OwX+k`lHYe;Y`+bF1GHN=zz7c558&|aAlqu@R{`K1 z&2qyigrJyndUDuq*2`CxhZq&%VHzxlkns;%*V!{o(De9j5IjQX=g9Mr3n#eA#jK70 zHcwAHUOo>kNE{V`ViK_`ZpLV;tM3ju_`M(T{o{;kw!=H*R-yqT!JjbNrbPtyWVTNS zU}wB;n%$QlRGYEqMPbCiyM4g@uj+!dB;swv!u7JggGpO+2<&uM69>4~1~C`oAVU^9 zm!*g>tNksJE@#F`60&jx$&EI1Hw@SDyKWFbj^Dm^pmZA3sL%TBs8HGQe7kP^`*##G z2&{IXxPfvW1uD~jQ$#?ss5CAfVGB2?9_j`kqn_am!S#&|agB++w?D4gwln_{BpC== z;py&l63AEwky8EY#>{=nM=^T*;r)Dj^8HNAut=KIzbf{Y{BWI3WTNdei=Ue_1fh(C zyZhg2nwx}D;35-%8VvD)Hep_AX%yf(0V1qrHhOBT^2!g;I9!#iLtk^{1(E#&B=#RfE7IaEkMm&dO=1PjrsFXf##4*-MDk%> z!}rp+N|gpy^+Owok#EJ#1h_JjE(UFvz@ye?*PqhJCvb{(u33`s*TU zOC**HI55HLlV&F#bPdx>)Jk2SF#jOC7q5T)S5WA^`1jRVt0r#r1k|Kam4KJ`{6ojk z`_O$xg?=7$P@ZhrAmk`{h)K(|mZFa^*7+-I)(Ed&E9A@;fIp=nH15_h%zG?tpV;bRsPqinj&ZoDsQN{8eaL_sKtpyRG3VcWc$PEg#4& z)I7=ZajI3kd@EQ6lVx#lavhflW3|-b7yUw$9=o*}+90fTjDk(RBM>3;J5NZXP&aN4 zmZ|D+Bx-6Vj=285R(AW}_3@y;{@2}&kN+@|{hb^}kx!hl^{<+;tx6b4MH~^w^uRWxeoun0{`scZAksICfK4tAzoR7Q-X}}! zmyPnTQsIfGYsMM&Eula;A3h|jeHLBl)<}*EK^O;rUu(pSf@a>(o|gZSmTS_dxfM`N zL04A0>+@{}V>CXN@_hKgz4u*Pq-iFHK3|n^K;Hbpo&HGz%^Z{Y^=E;>Xm-d(2Jlr=E#9HEvA78amMoehE=2cNl1?7x!Viyy=u zHg3dzf4Z7%LM-`d)LJV!iJ29;x-lbbpPHM=n`RB^Rlg5Sk_Jlycm*Y?{%{VJuS&WO z3L%g08xj_FKTGI44isAg^5Of5#Be4UH#bGQo))_d5Ha*yH#G0@g_-5(XsC#po71^9 z&2GfGa?o)?tPt7r$XoFg+8ypwzm_3D0HOAC&Xnp6*Wk_z?3*&kgbzz}DI)2n+;v?z zMo5kuiO&mQ;A9PiWlq(!o^Wa;FljBl=3`C8r^k3o2Hg3!OOU94Y;L}&Y#9-y6xGus zOHu50B9Z1eczF4>X011r3hwnENM$S|T zf>KjSSD^P*?Y~SmZwz$pq$AS{2fF-9*Td_?iJUxQd|*{K0T*U+uWps=h=)4ui80)|VM#a56b*lb zsq=##p*4Yiq;C%`oRLz&*SE~MC0m8&g{quh{+ga%36sNhT&5>5jf9|FUst#WRV3txw2|Z8f0g{f&Fd4ueD4c0(DuxvCfkIheCo(|W0(TQWUz}h|W zw0ef=e#p(VA!+6ZpBfr;qLcqSG7z#UpZ7i&$+HvZ*46#3Y%7NhWjISjSs-KhUR<5u zBWX9~L|7_y`d?kLB==`QpfSoFrTDl5x|cNP-g5h>BNaI`UHMcD!Z@&2Haz}Y1Kd%F z+)5?AH9|GiZ6{6l`{iJD7@ctpEW5-PxHjfne=Z6y+jMbpiDY}l7KS2vvbv<9v^HA5wtEzernVNfURHJ14z&+j>Q5}$5%RPvQ`e2o6 zLmh`!T3Xs^`lZB#_~~GCS!D8N`9LvUmqI0Mnos3R%Uw)K5YHJI&7VBoz(Y5_WB237 z5B8}GI3AK#S^#A*IzK)bCP3-HN^Q})V|MB}%0A>^jW6OX_^84bp(O!(x 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 diff --git a/launcher/resources/backgrounds/kitteh-xmas.png b/launcher/resources/backgrounds/kitteh-xmas.png index 8bdb1d5c88e2b0d1b00e4aefee2a8a6229bdeee8..1e92e90817c7e84e660d3577de69e253cccb635a 100644 GIT binary patch literal 68931 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 P1AnTDTJU;#tH}QW%mYEh diff --git a/launcher/resources/backgrounds/rory-bday.png b/launcher/resources/backgrounds/rory-bday.png index 66b880948e72ab0833ded55169024d339fac11a5..8c796927ccd087be597ca2abadab8827c9a921ea 100644 GIT binary patch literal 75145 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

    ~yK-4qz$K^U|D`C6tlj*zJBJI##iAJByMPNFi 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

    7fHCL*T18wv`5G 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 diff --git a/launcher/resources/backgrounds/rory-flat-bday.png b/launcher/resources/backgrounds/rory-flat-bday.png index 8a6e366db60e8fb958fc970b4d72b48921e28d76..700192256ad4523d30c76b1dfca67f05c83af3d2 100644 GIT binary patch literal 49757 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 Dd!!%Q literal 57713 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

    V!aMf4DM{1Cx*IHDP!I9S=V+&Ir_zl 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�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∓&HT1x``DzeJQ`0s2YO}hOfCBx=$=xeerJyi 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

    b^H0ZoB}hUYta!WILBg%DF8(J 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� zF?1cM?>Kp0l_qmxhpkj^pi^NWmpBvf)_|*LqtpT#U{t_Yv-)Kb(D+!Sh4E2ybo*?q z^t4X;X*AumPMo&drfPn;!5M9e#gzK9*U-1x&jQk+y_jUyzF*--sgH(LIi^yV>+|LF ziS@O}#M;=|?Nx~~Z)~Y93d>Rvd=hML8M%T4eBd5MA>gw!?4>!(9T+w`(}lf)@4;|^ z`F{S>aM~J6X$TiRsHw6Hy(bKyoXMzYrS52-Jxn{jZf8Q$<2$g{F_l;>S}4H-m#%zn zv{>F53Tg%eR6m^UI+cu#s1b*v&8#iqQbzXfNa}r2+wIAY?Nsg-(S#o`3{3Ghk845S z)~QIq)0wz(bbt8EUTX25WQ>Itt($sfwUv3h=?K~?Hqs|PwE>}df1$$&xroTl*!sK4hHR_r9pmju7oRKHUXH1@WiRz` zwIF$QZ+->3LDvNCoG0=8>u7Xf48MotF!US!-Egh1g58Cg2;O|y@*Gf9Y~W(15$y`? zbfh4i$kD+qdMvv_yCrQCCZC&_Rp;GTl3s3;RJr0P;sIoOkAxHVe!HKEsH;gW?$F}e z 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%0D&BI) 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 $bHaPqz9}T{sx-X!%aU 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%0DD3f4{QJ@OC{*5St*?!U_28I^5|AL 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

    =n#wj+8SV|b-Qi- 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 Y07~}8N86vFQUBdll2ZrO%0MFi4@$#(Pyhe` literal 85543 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≪ZWS~XYB?JQepocg{5ka5gxrW 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 MAfpVgl`;+cU%-xiF#rGn diff --git a/launcher/resources/backgrounds/rory.png b/launcher/resources/backgrounds/rory.png index 577f4dce9e2008e7e878ad2e00bbc24c609bd0d5..5570499c22c24045bb2b09e2c670c26d683743f4 100644 GIT binary patch literal 68309 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 literal 76448 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%0A~uB%#x%*_0&&j~h#Auj4 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 z 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

    ju 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

    RtpF@!w_^YdgtTi@ z3WUhiT8Ao_)C-kbmKkp>t=X;f5BGnyOE~s}RIvN}Myni0A&|{)l?R96UAh&cciahX zJJ4&i5wBcq+N>_}uT%ussJP!*e_18oxkg9Z%9)q-(rcantFyCBHtLuk-vd2;0$e6I za9}Tf^y6I!f~IaYTgUuH;~xp{y%!T zS=S)MKg}HZiGw`nuJlG9w{!D3guhzOp%9t?5z`20c-GlPB52Eiw z9|7U~v}k2564=Ng6&pk-r$sL-7x)@V&Z|zujYLXTp7|<4?a)EgUU(WM!C`{{iN<5k zJcfg>?$wR@^3kx>dJ@2&OeE24zQQj^!r>;Zb^j57+gA`udvnj$$;_f7%F!K5u>BQh z8_TBvJOSX_V>|l&_k?J+KU8y(`YilKmiueJaJoVEp>u;+MOyfOCSN`|Ho|uv_{%PB z^fy4sFB@Zq+A} zdyo#ZUfS_%-9akAYKIfrvFtU{j=ae%rS^mD_K!Is$2Y2(lXvLNSxBAdzKOKpPuEG2 zt(7t}D-OV60H37g-}$SHwANoIjC_)S3~6Ji>!$j2gfe)ST!!LJH-os| znl*jeVS+~12)WnDbe*QBZozkdQuhUo1oK}Rtf^GleX zsUnI)96Wju#Nk1s(RlI1q1V3ja^xS(S3{00x*;Yl{C@?hNn7t4OSrup+d+WJNM#1V zG*VxnU0HT%96(43k~6(7pL3$w{!nccz}Eo$8q)l{T)~FzTyd1Wp&F$O#I0z;L2|Q*?Q!(##xwzA(p02pnl>g>aQJy3kBQaV1%NzP)8C; z7^6|0okBu2rWUKy`^Lv#Y%MJQEh`qD9ba0=H)c6H35S`q%lG#Hd=hE>23ZA^ z0Gvds#dZW~*IAVj626^z#dm^eZb#Zpwjb&I%aM$57PIp!L|OzES@`83?O(T%7LW}9 zMF92Gjy#IV@zdd>mA(!a>O(an@|MYXb#Wh+0 zxHBW1D9aq}%r^IX2@n$keJ-;|BtPsq-p|;^?JEKEdDkm{x?Jh*TbQc~%eJY8A&haj z1us=d$Xdk+_h78LsiQ7m`C7!BL9!8k|HzzF(AHbcn-PO%8vapBl5 zsFgmpJxkQtEMPjSl1Ugrg#m);DagfnEFOLZ0va-kz@b2N=8~cmWRgHw7Ro){V2;2G zFFjX(?Ty#>9zL+|pBf8`kNiZ2asG+tI19qD0jRNaJe-*mO^yo^*Lx+Z<9IuO-vsap zN~uQ~<6H<@D3z$~*reS6KnaCX$tm?{lj+9^AwVdDRtlgD+;+i*0A(E9aj|LiGJNdk zK7mr-0Hjt>jG?gUB3NDlgc16c#KJ@bR_fA@QHlgIzg>Z-i{(tItC{&SqS$cZM$g+n-{ z3eiD$Er7cKe3}q4z=RNv=TXbHZAz)2lrYW(Z!1nmQEK7`04h-+lt2gzT5BXKK_Vr9 z)W+c2t3QmbqnE>ST*P4jOW0tHAx#%lRA6%pjB*Gepj7H> zWZ4dE*98$2#O7!O%i-}8$CoFM9ea7~KOg=3FbQ`~$S}-5*&I31|} z5jH%x0M0q0I7X64NGajEE-cFi=K{rI5u9-(u>_+O1+NI(vQtq|!C@B)FcgbH64L3} z>Dl8aj~$(wsXjh+;FVpkPac|l^-XJy9655L$&urH$ImzgW|XQR^+)OgFkp-sCWKf> zRS$ZRwuf#4Fw7WtL5WK#HIz|GKuX*a!m=IK)zvLZ#Y)m_G?+G8Rf=UX)IUUoWkYLC zjWMuLS?2lhXHZ2I`@RzZ;BSJ`t7{s>c zS+?sA#!-ZFrOS)MFoA)rl)4&@c00000NkvXXu0mjf^(t0$ diff --git a/launcher/resources/backgrounds/teawie-spooky.png b/launcher/resources/backgrounds/teawie-spooky.png index cefc6c855789b3bbb325dece0664542d64ebf025..8b6bda6304e4ec0414cae33b8f79cf6e93236d48 100644 GIT binary patch literal 174906 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 R4ru@Y002ovPDHLkV1j-{ET8}Y literal 204756 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

    7~K-ONzbUKf*y29FG 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�`WSQPQ;C65;EEXOBnNa3Qs#ue03KmYC$MR%+ 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

    Q)XSK+j=lo{LQY{OR87p#59dW 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 K?ArB) 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

    vyR)8njw1Xb5UkHS*Owd`&7mHZ!yPnTn^8 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‰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�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�xow}-ktZ}U)<%u1Jjf; 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 diff --git a/launcher/resources/multimc/128x128/instances/chicken_legacy.png b/launcher/resources/multimc/128x128/instances/chicken_legacy.png index 71f6dedc54f470a6f8219a427bbabbae1f025a02..51c632055a3a257a4f16407fdb3f85f470acd12a 100644 GIT binary patch literal 5184 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 i9v2e2k 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 V$PTXg^yBXcz{2z*w#gWm^na^=xRC$= diff --git a/launcher/resources/multimc/128x128/instances/creeper_legacy.png b/launcher/resources/multimc/128x128/instances/creeper_legacy.png index 41b7d07dbfcc841eb6dded16284b1a49fe4e8b4a..92d92313264035e44c92e5f5d1af96b2d6560c1b 100644 GIT binary patch literal 7449 zcmWleXIRn=7se5A;KEU&IdD{(TADitV6L8eaobC#F>YV`j{fbZ{a zMcwQMf#m4_Sejo6<5_u@;BR6hmW1Bxx%m#Q`?#8XtKB<0Nw<=i6nJ)6x|l)M;a!YrAn_XQg(xG~A~ABHW9efS?nQ)75BwUL)2&HG7S z7lpqE8R&pLD8hJN)ldqd4tM~rILo@|V2Ol$S0Ldn}<_~hnF^IL4S?_s{}Z^Qgl zXF!U{>WV*J`()OX99Vg14mZ+>$(ht8l@P4o4)M)pr^;bR=aEVI4`m+d%a=614s{0) zojB>JcJhh%;Im;k#Y1_c;|l?z1{B5;q>(~4E$OydItIGmSZ!jqYL=kr=>L9twv2Li zTOD1!fLNdc=I-*Q-oD7lu_#;p=DkFzt#qkar(Cc-uulo1=wF|UmkW{q*;UbM0!uh6 zX20OtI(ipEFR$gRKEd*IabSGoAZaLCv-6(Xv)E^A$pvX#zNX zz`fEk{V_tm6!!^EK}3zg?u4vPnUN1VQP!$9t&*2L*p)BXTwf(gNvI0=mi9w-e(K$s z6K3 zc;VEuli>L}jad6VDhfBo;-~T%1vUpNe?KRQx66yZY!o=xMs{?G2tSBX*;9qeTyMGy z0lzr=W>^_i)H4EREL57-z%~ymeOAUW(OI-KXc?!+Rq{|AI-M$2G)CIa1 zA6x(gn_%2Gar`F%#Sr03(VKKe3>pKsT>6|wiQknoAPBUijw{62T`+o;w)Yo12t zG)*YxbT}qREA2;SwqTEuak0x*Z4Y*#VL#y9H$h3JV;5OAT#w;X4{p~rX-5;fFjDht zEX_^ix1OG!A|2hjBArG|!{KW~)CHj@PFFlV`3k1a*^K1A{&T$Q3yBVE?MG$iRU0EG z@uMQW*Xn9SLFxU7cL@72tL4CVpPomQoxz$w7qDYvp^WHV4aN+d zCX^CAxAypbdfV~O<$>B@7d|?9a(Lno-SsmZA1xQYJB^bM>iZsX17CN7Bw5-maK9Un zRe4H9oCDD;?u*72Zqk7BO+RjeHVXT^Jt-eAPNLjlw=+zz6VhFGSXO%cNgh+V z?V<7hZ(29yG*Lw7bojZQmv#+_`xex#4kG&T3k03tNmb%8l zTU#->|2CWbLTO*Lps1#U=Dl~_$76jbte#`>>@%+$#HZKX>LzB*K#iFV4Y3V7XN1bD zQJ3tS%T-}D+uD1h`en~_&-0K3rVdz_X}h45EKZJgBwbBFqr z7)M*iic-LaWeqs6D9^wg!ens_1>aa{T<$|wf9d4|B~wGwTURSH1SIa_;s6%h<0k$I zC0CooFov=(s%@vs;I&cu9-i`XT2ckd);uIg;e>aFwsSh6rZd_o(zGI3p=VW$4CnK{pOlEONNUgR zW#u)`GY+?G7dBe)kdoi}%(wXV_luJvTj0#)4H5R6O;uSYmM6;ON~wBh$&NHdPc0+; zxB@cy(`V8XYH6;%@Rf8eX;I|6t`n4`GN+hI7+6r0FI;*+YR+YK)7qfTi+v_(F@H&4 z!e0t&7<*`Xc|B#yNRf4-g4$WKs2(k2e;!T$4U63>yeu?55fV;im`I0ZX?ebA550vN z(MA^BPJ9Hr+!ANPTl2C`cfO<{Tz0XJN33ld(logZrwc{j{_F;!kET2pXwbWykO6AT zsf-fbuqJjdtwopwjR?g?c54C#XVnz@&bJp>MH?&1Z9-g zRlBQ3XpkFyt0S)1g%22#e{jU~Mmr!{(UYr}ZXb>FU$6&;Ua3(=SJT+uQ!GH#U+pj6 z^GO!*tl(=pS8=S+$AJJ?Co0C!tP5QCF;&KzwwGm5X9>RoFQ@fnhs&ly>54; zmuCw0!DR2S=7iBlw3+mDLY00#cE94#jzH@B;3p0t6lpdtLthTw1OPH3wS|}Q@xDSw#71yf&}rBXoF{X zrLpQNp%8K=(U3cmZ0O&)>J@QBn*}joB|QYd5Ns)TluESY>F|}Kiy}8UknzuYeNI}P6p~Gcd+}3}CI+B#5h)G&c5O(9)lbhlr z>JpQ$jbzi$)4eP!>t0Mp^eAe%XH}r3^YZ|SLR+{PfH~YS(ULopR=fgBKK1*v_3x*f zu(m^J8)*?AJUJ*qYu2^rGuL-npR`P)hW21Gh#h{4nBbXK37XC8#@FdQ^@gn7lrQwe zsZZY1N6{T>3c z0AvOp>oaul1^8oxp_fw}B?))iD%Nvl#TOnFG(OqR(W8zYy+)8SE3N|KR+_K<*)CGQ zzdsLHp!)4tBKb^63W4pX7&R0YqSw2*UCIP|DexnmeAhPsHuEa$UEnd6FC+P2yOyn8 z?po&`&Rsc!k?V@_zB~1B`J^-^F~yL|GY5QNC&et!GuC)2oJN2u)#x;_&9>aO;R_IC zWgFsGU^IpQ8K8X)5EtJ4@5m=aqZ5Pb&CqB?Rw>c-Q7Y_LDlzud(X_71HEo0hk+F=w zsHHUzUy#HK^i7v<>kR;Id|dZv_HZkL@$HVy*w*be0v+4HP4hbVCGZATTS$XQKR|Oe zd@u#i{@#$hPA9iqzRpiL1YDvRJ_LzLobfUP>(6hFr5`NG4gh~cd4Tr~E7(NrL45&{ z<;1-3c&cQLC*3Ya%YivRy!|vyYiX&|^(1?~^{3-0UQ%-|V4fA8QuI#?VAy7Dh?7)_kWy_1)e~Ao^i!XA&HZ-}$-;zr~t21@<6( zIja|}yDPY%Xl}Mr{ozLG1J^14?#d?UIla`-J}hTvez5dG6~8{1yR)Ecs-BA}lwR3c z`R)bKPNOV9N4ariGuBnHyr3HjqbsmQFyxd3WEKqJ7V zq_uV|1Z*=kptja$0=#cAbU~siO$tP7Qw+o7i98T9@qh9a-Gp@{zKI*J3RSQ0T?4`^ z_=YI75of?7bG^S12`}ui!7}Ij=YS<<+L6B%p5km(*Yt6+m?_d!l*UrQ_CsmOd+Zae zq+K@1vE2(ARU9P3>0EK5!}$VC@O=d*vtE9godp*(0o?sVSY7duQ&A zx6O;;agW#68HQ`%+N(9XxYQG*N=Lxz%L@l6?)>d8*5H&2ga)48g=yKDFt+U6XO196TekNk(Y4}~@lM4WFaE)1!}E;p0}a-` zcgMQb+L1}(0_;fO-s$yd(J0-p%T%TY+o6g-dyRDRsKUmf=0jFLhrfnH^E!WF$p;e@ zU6$rVr&<4CnhFV7hl|Likq^^6nD#n%db3q z!4t+0tc8+})^5#So~a!uD? zx3WbNUollD1!)ssy{=F1MP@{2=K=o>R`@R?dD;0vvti}vAiIDS()Pm zGSt4!QKIX$)7({o-z?tuf=HX*KoAr1k}lhnr8Sg3sUOvHL=MOF%lpy}1p17b?ndtB zpy$_grJdzk`A`&Aq8j_yaR7X}y4Wz0t;JVu=-`WnhZ)dQ%G$l(A zFF`ibip~QzXTB`32R{i{;H2q^`R`{$+{Wplgwqf@?(vpYKQ0t~E||op`XHrxe81WF_774BC~y zIN4S(Be@~FI|?%0+jtS9`og>bO$ag25lG4D2P^D*1kQNf8yO`xZco9b;P*aHB+d7e zU5eALCYG>!4W}@gYaj`7q=+`M&d?WvJ#rH7&3c)8jP&GsH7lp6bPNg4wlL@AzGrXR z76QjtC!O35el(YMWYPLrzxKB+T08+OQSLwS0Wn(S(n;=eGH!w5$mmYg#eZb$fA(6p z;niYO$B7q-tn$3}?$M?PtP))SQVb&vQE|N@nyf|oh2-xoNMW~m9r%nSBDOU7 zDm`?b51fLG!wjm?c}XJxn+0S4%oRnwO(IrypiR|{*e~ew1}~X*y5Wz3IHGwOJ7c)r zD}~s|`{buX^99ZuppOG4aA?y(SMkr8^V&i5?YFU3El2cOst#v6N>jAtL9A38o~mlr zVL+uq=q2!yZumCVi6P{gjGN)*>T!0o!(v1&>Kebvn`^)Pr!cD}7jw@IYQQQn10a?R zYHNDr!jIsG;GIP*O0@63Jf{a@1nOmVLkja{fw@;WMM#Hh%o@q}p>x4B+0uYZg`@f= ztnKN0N&>$&-qJX?eS*~#wH)gV`o1)ey6{r zmnZcbAO*Hk+(XwA9_E1=z2Zq|%&L1Gp4SpYq5r71+qEuqjRccucj z^N_CweqAwD0n^dHTg|#UCn$>le``!Y7EHMV(Wkg-Y{*%G<65EZ3Sp=D)LD5$4Q>5j z=FZq~tLjq}FfTxh@HCucb-v#QXXLj?wy z4@^3Wuo12?zxI_DVVG}G|J}2+92XgYyz=juG~Yv@tMqZU7Fnl+V}c_yr5xtM~W|ssOh&iVZIpR1F~)D8FlQ6hf9Ip)1mf$4N8JJiCAc6^3%` zC`gCq-&)x~ujVB^sx}gizcY8gZ*d>FcAu2T^I^maQ9?AT9x8}aKY4+e^Xp`nLB+9b zp6XOA{NGai>`lH6@!3VvLvxhv_s(FgjU@Xb{;pEH@lk!-Y@Ae+V!_!5j|4Zy3CL~r zjTc>8ADt#T>pW*ORd7cqX-xj$%e-Y<(<1S?Xl$qeL zm(oiNDtR@Cf2Y=t%ObE34aaP6x7lcQ+37}pG(Nm@<4)2$j(F=0P{kADXFmKpIj^^0 zX%Bcn%}L{lb|>V$k>7{bA098T$-C_xHEoDKj)qNs!2W7U9?x%nRAi+{m;^<2YnS=? ziw4F~9b@n&dRowd0KG;B(4d|Yr22{xXDJ0=^?F2Kqx42qQzs1^)g}IgaKuxk(+dfK z_HezWd&OoH;otSv{*1@)>^#Tpq%ucd%Y6f4!ptif zO3$X8d()pQ2jTY}ouR9bv-ZOa#G8}vt)&r1Ne8^?G0o6H#HtOd4H9#cBHra3KB*I} zG@*1^IDMqE>a5FwL;#z-RsKR!8HbH2$K zG&DACeOu<=7v7p6aX1=K9*#BVcW{kv$P2fR7eG3g)3BcIS5c#(ojuZ15R?exh);{o z#u+t~&~;Ya?ozM#EVYQerg`}&nm^v86TMYd_VhXCJlbO_^+^s?Y+HlJFV2|^bGrn+ zqD!ZQB|8MEbNs)7;=2ETU%^ZLR(Ri8}Xi{R1f#4=6B-#cjUhL^A9e( zM{#>K>!F}{xXRATOtB~^9-6=R!K0GC{cCb184t{^naC_F-qLCdkd@!wpPXteI7GQ} z@rZ3MXx8!U{?dY`HD7KrG+hj;9grg5lj_C)%qi(`&jGn@1z0^L0F|x{_CCt0FBajD zFbYpWtW$K3x;tm_c>=urt)Q>Nj;pQa&#t;^=$m>F3MxU@j5-9RkeOzZEYM)hJL{X@ z72ZSZ%TDq51yxSL{^ck_w1qyc%Sj9JmZ!R2Vpa7sL?m8+=z>SmbzRl*lt(y*2v-FE zO7MHj(eV?Poxp(ppItx2Igm~KNZTd?AY1zsuOMBlIr&lTWZ2vUhp)iui&WVQMD;v!*;dc_}l zjNcxtE^*K2V(HI-!(o&5Cb{{H+XXL&rC@|hAXWaS`z1Be^LJp`<{*E&A?19^0dLw_ zaQ~ycJP7oZ*~<9mFz_n6sYAG}yUWc!!dr`%^}|h&Ua}9{TXL=cGL}L9`|eeJHweU&0& zcSVZg z$Qh#w($Kf0J3Cmqd#Pt{dVf9JAOKKs_&>ooV|C61fHPRzCfLHyEjY|M&=m*^3zP8l z^$v1z_IH)=3v@5qP~`#uK0sgVmSy;}KgD-mI}Y3)IQ^>aE0~ENjl0i?RuO zaZk$!m_PbHXPi|$ySo3!R`s{-P472_U-LJy17;Ezim{}&gWrX6>uq12j+FE`u(4GZ z*VJ?}krBW+yqy-$xfS8DcB!}bqbN{93&ulO7Q900&#q5(ub(EvEN{yp$O}LT7_)j{ z|Fh^uK8}f8`j6C>`f4#KO-ptQ8Jhs~(vg*c$eqo)6NiINbh}XUh4@lxP+ykv>$BB6 z?th!q6L&+;KS}6{t*Jr5$)do9c@Ph%P6*!GCzI8{0)ph$p(|u2|q7$E;z+&4QBOyoL_6{y#wI9O0 zc~0apb02=}iRXB`?p=%}U3*dA;@VW*_J0pF5GRZsJ3%`^iUB{UtTxr+T&l9}x`nde z4yriK_*F*`is%_?)`c2}e-SvuZ->BRYw5%4{FcT|6axOPUH?|6$^TE9OHfn4d!YaZ0kQ<~xQ~+(+SDMcQOR+ISIwa4y>oQhe-yB9 zy34?3Hp=Zp$(8Ch?{CLbBjJY~^K|b&>_!7f{ujvW?pj`Q0P86l;K?80U=>^1?&2j< z1XGHzoKVosW`&vY;;v8Csp19UgM`BmD(6ya@OwZh)hM6zE>{m%~ z{*5Pn-Aw}b_$;#fp2S>m_T0dK`Qsht+k^d+H>NVHwCymjtK5b&0tT4`H#wHJlGVQ zs6-S00yU}TcI*auiPD1L6L>bDbdF8Fq&H;mS4_;t7ZV&5oJ;_RKaiA)KIu7FNMK~e;5}rUz%U6+FLvd7>0wJt1tOgh z;472D(x&Xyu5;aEJQHfy*L5g=K+N2%Fp+hV`Z%3K;xZ(o;Q{dx8Q0gNs)CNH@hY=x-)%fI>wfp%m$uWRKF9Wm^&d)E)Su}Tx1BzTa|=Q_ z?nf%@yMw&o4p#27N>gY2nePq#Dt29)zuWqbt75`8X4e{B$47<-2||<`u8{9tNLBCA zUQ2)20_YhCNgyy>UXHqE3M?|E8D5DUg3Tk@F&o9JZkumiH)plo(A1`}!r6~d; z2aFk5ctPAiKjfIn_p9E5&6jplbY=uw}B}b9V}(0|PW|BW1N1MSiH6Es4$6x_Wu+ zw&KyCb3szUU$yVkKuwJ@9ocYuxp2qb9~vy9>w|w;#O$@$OF%RbDP}2 z3iXH!f4l*Wb(o${4KCq1Hmy^gVZelA;iNC0Xpm(N(W+?N3;MsCO5otPUsGZ2+ z7|vpGx^!=eUT`+EsDLQqf&aCK<-Xv~W3{1b6h(bfXD^$Hr5Dx5@l@cc6rNOi%#h2W;onKe) zF%IK}G`v%JX^`|-VRuUEb+Y@iAvu9!!BEPCWxHf-uiQBb(kFJf+Ng7Nt>y9p$0r^X>K z>euZdey~`0&2KuyMlnf#k>4EHaGJ)iv@s)S)xvRf{0Vpu(v zVm`?U&6##mYR`EIn6US5OEHoR-+Z8BH&EqZ&(VlV>?ja+9pILE=MCARRMb}Fb=qlg zK@TNgUO}b$|6IN$XLWf@$guxl^hJb?V0lu7_Ex(8@fk>;KQ`}E6^A16l@uY~(l{iI ztGxt$Go5Izz)NYW+A1zV?rJg} zodftrBLyF(AAJqV9X5?G)v7)L9e#5CC8WgK#!J$s$n+(h*_Aaac@qm<7QgC%FSIRi z-*agz5CzFpusoK`_o#GCZ<6owVo8ZeR9F+WOA zAxZPgOmh49nBoIC_ScGwjYK4G?RO*j) z0gyxq%gcZT2p4kbK~wWPV1!Q}61$J*GkKv`-Ap*DwZZXYXt5>vRp8E)`gpepKUsEV zg1DM#e_gpD$ep6%;JCd|HTtB1uGG+cO_tw>?s)e6o400{`gTZHc`vSLq}s?}??7Bq zEzi;q81K!o9wMA}X1F+J134#fYCN;EeSKV#)S=irg z`4Zh9{hl7Z;D>CzsTza*x=85T-l2@`YrenJE1UGBXA{Ky8FfoO^H6K4e%4wX4KDN^ zi?r+Ge{am{64BekF4_i?Pc7prGM^|x0hCH4HXi6U*(Mo5>aC2apjo2d>Vgt<*ekpH zSi|||B`MKvk9#^_ijTg7$PZWkk^6^*x{`?y|4g)z#fcS^b+^wkUecFkNJ2gOL2fp{ zM2d0Owt)g2Nwg^Ld>&O>?QuF*?nkLlWn{6E(rFVZ)@P`%uSh3dc}m5 ze$ApYDS*xnQ=aErE~V@3xM`DIYIiGwYmhXriu6dTC%ysstei}*zBqpvg`vHx-Hc$0 zGl?cY?nU7*HEn9+o=d;rJH1Fr*@L0JRx$GJoVLeu4#1jBcxXyrSXP zoKLB$eRS1DM+nPtN&E=%9O)|sgL>5E;aW;_luzoA1QW*AWy?h5;lv(8sXdFniHI7V z1_Q3!4;eEMbO!5|HbaushqrrM<>?Na!Dy01e`k`UHNy3xX9DZRs<>YD(`q%%aJIwM zg9`J6#@UeI{q|p#44nZp^_ZE29>6M#byoQOr+0yK1_F}5jVhd*n2qif-2nvdhah8} z876hJdH1>!p6+z4+a&{s5`6f4^_yVc!LsTQ-b4V8Dz}2lNZBq=0rV#|8%TB%xNa0p zQJ}DBLjq10HPxNjW65uPK-d)-@#A(eQ7ia?S_{FX%|C>wu<)+e5EH)%)zWW?gWsQO zbo747Q@1ju8j60g#W!!lP9`x^vn+I|P@$Yp1!qm6tM+Pf^%_7^vZ*8eZYfvqH!ckU zuHA$fYgG>b>mU5RE{^%mQwLBR3qaN^2TB@nQPW1Gd<|d30zI17mu*V@MUpa6(rYA;N+fJy!26uzObjd*Jn}tCUyOJ=-BFPjPlZ*4^v7< z*X74eVpbo2?Fw#6Cv(eDk*n6N6WkFuo}b(AS;aW?i43!Wf0+4C52jg57_1&gXYpx_ zRc_1XY%gA=2u1y51oz(9^u!n76$UP1Wn8b#m?r+$IM$uScy6l7@02O}G=}aN{Du5^ zpQvf-3-9}RXbTYw3_#Zc=A>V_r8G1US0z?5M>h2Y9KtIYHn8L926%{!p!UJd{Rb=B zcNSZz{ip(0$DUhm;SgWU6tFalG#E9!^hFev|KY;Ptz36=w>#m9tn`6*A({;UBG5$= z!}z8pRnA2l(W(jHY>O_-G33J-*1)W2Q8{#-u~nM-`7d8pi)XvB%K zhod8kYo(doGb`x&IK?v@e(wa8CbW6ezfbfKxl|m-PDVtfNVcX4ffWyL6k<=*&2dxJ zu7;Nxr&%y00SUrH#!(dBL{R&;*V%vasWfnKcr5jsZi~RIl#P7rTF(%M3r~}M`xVaS3BjNy#z>z$BM1djeg=SX|u77Q-7gX1sozQw<486#z#T~fL2~UWfSQzH^yu}rc4AAa+hsW|&EB1&K($dh3EEId2jjlj0^AzBl{+7q<48U3 z=!L$jBaj$2?t=WtQ`mieZSpEJf3AKf3i_UPZeKyzM9hehy4?!m@5^9vg+6-lq3(%{ z!mlUQ3ns=(ZZ5-m$SFBl?FIcM;vAu|iVcsmy+k!EDh2o%(>ejCs~hr>g6g+p z{krIqS()OII5%?b_lQ;6$)g9C**_AqCsX=`V5HolIFsDo971oJX5`}Fk1K^7iiOqA zr1I`kX2Q(Pn_fId4>a~nY$>&p%Pthkpxz5O;RiF$t^xcZqrsG z&+fQ`^oz~84sM#j+q-L=&P?YO`^~2Cp|Ge1s*V}IWprF6b|3ezldFD+=h%rKj(WGr z3sy7sW@sc?VwDS$#`@b7g0CkbN6tnOsrd$F|B6)urDm0#-rbv0Z(ya>=@sQWb?8}1 z7=ZOqxXC}Fs4}e}<>P@!4TtM_q>F3bMO?@JuhH1;EwiN1pOX@#AwhzHAE|b=_T8T8 zv4k2DOjbWB)<%#=cB08aCj!`qfnePDD!f4#^4!()-3+yUH6h zKs~36&DAWyP}rwB62nwGD#ITJMHuzO(K(zThhWOmXrXL6Q zGi-JIH(mf6eMcvMnJ{GvTBvd|ekWzYMfa9?i zy~IHIVpn_+cx7vM>^_e;KFm)Mnze>vZw#CoKPl{Z_TO5IsN&ulo!nWk7e!ppoZ3x7 zXX@i|2Li>l*_z~=s_b@e)|gZ3GhXE=hf=@1gyT8CA8QhMsK|(J{ul8v*IvKS<-+v{ zQrvRmqpL%YRjHwGrHD^)CgmXoX6mcWaXz4aD18D&rM`#<>q1a_JhnKspLT(N@gL&j zJVE3SE%q<3dQgJ?_|@`BB~F!6X4P;|{c<6#raI54xR`h5vWe(Tn9Xr3$_Zej_G{>?-V+JL*s}uOPo3T8{z&H7Dk4KK5U}zpz$2k_{ zv?|0V|2*d>i*Ssg^3S)lSecO4Gq7oqfRrbN^D1}V|8B%2^w-AgKpUw|D8wOFL4Irc$;HGp=m_#jtg7#raD1k zb0&>>!w*)|w~0XSJjkQM{b;Fm@#5Rbx(W)+GMF3g#P}wz(`9oi_F>5txvuY6DnsuW-{9 zR5DR$9t?#p_|RSk(5!@I>lInnxa0wX{f?<#_&=VC1Og7E9zBnRHB({6FK&YtjKbsa zS*F1Cy^lMO!#3Q=JGp*R#~JTiEBp^F$*VMuQ-GA0>Y~|>DP0)sMAI9!PS7BG_H!)U zdBrGQ|KC?zpkEh1GhNV^FNq>dzTb(}q!?1~>iIAr8PIjb?&QDQUZqI{+Qyrp{&brk znAw|*r|k@-MqB|s{lJxY9U5FUV}p;`10=kZ`WHPZod*e94Ju6HJCBJZn1t@rk)_Uh zn(F6gdHmeR+P~eV4lG0T+9-+PSrHE%!JChQBD@lCVmgGd^RFLL=MGQ9N>vAjXC&pf zXbNZfUTmb`6=*u#A)O@7ko^aMMZ(1G-6SNQPlNprd6K&>;Z+qYc57)hkb{lV9G8;@ zlratt-2_lck<{2OvDb5y`H$`m&*E5vwE>a-?9ER|fK*0{rH{WDe8_PU4Wk5H9rjAv zy!+L&n6sl|`>?H@bGhiVDx=5B!$K)n=&b^zeuoNdvF{6b`FTgd*H^vo$jGkCmnXHM zsp-Y@k=|M3j?`GvQ5%M1Avs^dx|R0tQYOcpT#q^gm_@tDmYMCM3RHMFza7Cirny?^ zu&etlV)qM0hxvRsUJ9_&RT-BIAJ>vO6L$aDsdPOdaD7rJJ+y*&U+VmKNQWoBkR?C1 zAfA8-@9z~N%a6ytQ?JANs`~(px|wqyGtT%IJ=Q$XEo`Heu&Vl-3PEPoSAx{nMeo}D zl!uH;0F1D|2w0evxVf`R7EPix74BzEi6XMzb|V|Q6raNhTeN5o@@KlJKM1T?jr>jL zm0*%U)=k<=+-&Frm0~c^^3B;3EFZQ-z-z94USPR^;duAx>+ov_nzCrOHqq8VK_cs& z_g-(*UBB9QDQp5NI_WtwZkMdSH1@@PB$@94(x+e#z`^x40Ys>vud@$(it|`((ywTZpQ?_-VQk#oc#$(x$Z$ zKeFNV-ls`0^5#lXG=B)Kltnb~{w&r> zutjV!Fzjoo_uOvlx29pqQ1A}uk(vXNbB}!oDnRXbO(QLD4Lk4qx_|r=o-!9ggR-+& za0c>ZBkwUe$$mTyW!PG;JHEZ=_J*ADNKwmA<%(Cw^KTZ7fQN3>EAz_4P4wCyWf6;& zTb7lkFXmfmZUp}f{%Z8@l~KvXUQ4H*S~Ud)MN3}$I}<4f248V-(tpn#Zn~}M`F?W- zy1fb3o)JQ9v74b%!wYYu^^S$!Jfidem=JGSy&9CT=JTD9X8m}3%>fywp>+If_ZlG~ z)P8a2%@&^PaxO7XXh&K|0N`-yrFCd1{rzA#_NN$jaN1&~E`K#>O&0k0;mgaj(GHBb z@#AtgD44{`A9+WZXVSpRadA0J#jQs@DSGQuzS1I(w=NxcZML9nv8I2*ewH-^>I`f9 zzzNB)T5|4X{cL+3$Jn76;$oKLA#{yoi*8-opI)H0y!FjZ(q)xzQY&_BA!F54`0e8B z?@HBL((;yS16iLOAB9_psptUw&tvQB4)T+87Ac2f>*00dk*L+SzNPj7*tRN|4O$y0uY3pT3*rMV8iA_%%6!y><8!E}6ka z$uE0F7Rfo0a_GfecHRAA)vap=3ytUg!&w+R425L)cJvS5(_#P2E-$qz6Cqs0K{dUs zd@o0c?ThnKWt}Zv&&RyhDZt$ww#4xv^c?%#(@0c|31xsuP{CNnM)I)%Pc2=JG zLzz7%@6O2WnGm=*iT%{)`q+i$drX6h9$yMv_v2`!*0^MuHsBinjAG;$FJ98~zotDz zYJGT*iO)X&Ko#(xZy6Gum`_k=miG9s#$<(sVS=;uA$8)9KhsIA*Y<{vg)gV-f0Bba-Qv-rTdK$rsIkBa#lmwkdW);wd)!^up(|y~hLM4l2UdvUPg3_0`k_pdt*xOR$s<7{v`h^s+&$g+y1KuBS#9p9@$Wpxa)EZe#_bg> z_#%4AeO7TPv(pXM!p=8O?aw7F3Rvbzf6bEdS}%KlJVrmW7T_5^tbNitOe}CBetL0jP#fWT!{tzGNTUEv@opzf=#O3m&HJbSfVz#%wBw1tAZO$(ObLU7; vAm{Mw7s0;5Mc|haB0Ql=ftk!)a)SK3=FlGHZCY`*0|V%58*9~RIK}@DQ}B3G diff --git a/launcher/resources/multimc/128x128/instances/enderpearl_legacy.png b/launcher/resources/multimc/128x128/instances/enderpearl_legacy.png index 0a5bf91a440a6a2a6cb303c7b551b6c7976307fb..814709965e5af0d277e7f9568d2ffe880983bf92 100644 GIT binary patch literal 18944 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 literal 21425 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 QQvd(}07*qoM6N<$f>i5V+5i9m diff --git a/launcher/resources/multimc/128x128/instances/flame_legacy.png b/launcher/resources/multimc/128x128/instances/flame_legacy.png index 6482975c494e02522f34a10894bb434f1ccc7194..a6ad0ecc0d9eb41dd1f8a66df51a994ba3ae63bb 100644 GIT binary patch literal 2890 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 YzkS2@~ diff --git a/launcher/resources/multimc/128x128/instances/forge.png b/launcher/resources/multimc/128x128/instances/forge.png index d8ff79a537bedb9b16ed0f2824580cd8037f5847..8de89d87d010347d5d27c7786efd98463b1eeb8f 100644 GIT binary patch delta 1550 zcmV+p2J!iw8I%l=8Gi!+008vhk@)}s0##5>+SEQthD?5{N&~6+T7sK)7Znu z%(uM5t+TqNtFxA!ri_%Hf{T`SfsJW&fmdU3N>^tzLR2U>N`EOhOTEFzEj&)h%+dJx z`RVHH;p67Z&eOcW#;vlto}{ggmY{!#lyG{7XmfyJY_XjG)QD`eN$gNB8*nZg_=~nxoU!+OxR7>g(-HS!hmL zYM`gD*xTOg?C$;j{`&g+O<8G+lbx=#yZ-+ESY&f}f`5*?z{c(G@YmYi9xg(fp{lB| zx6IGf+~4ACc7q@hhPb`M`T6=eM_H?}xI|H6Rbg;eVsWUhw!Om0EwneQ+=!8z#K_IBwY*edZ=|ZSbbgA5keW9|SH{ZETxWJ(X?H+PUQ1YL^!4_2 ze~Zo0)jv#KU1)cOjhKFjlWTQ@NL6N-pQ(O_lA)-ueTI?ZH|*F6t58f~G3U|m2atu=oEY&W!U8qHdy3s_7mEm;b?EE}Ua1IziB z6|~OEeAp?jXcf&!<6l}8 zpxu^uKnWW>M7?k)OKZ~aGwCF}L z)NymcrfHJD_4TXx#fr>jLr~VannPaeX~^pq_4wVUzSVbv?=H|lDf0qoEGff}2JThT zSOyfb^*)W=d2oV89`3qDBafhr$277&qpzJNrapN}LxT^XglE%eXytQs(|^>oXIryY z)4<9naNLVqG!%3b{WRxz0bcH;fl?PZYQ|0)c=Z}^FQHj)H0TSVfnYf3Ks*fuyahCG zC}AytcT1@6Jsk6a2Ci#lALPM_0M7YS&$JOmzn~uhd|FLOUNZsQr@jq}2222kR#4x- zAoYC)@KD8otH4+M!^It6e}D6Cq;)p{%zLtC@7?sC^&~m?7Wk}Uz(jZqlizk5Vt_m5aLSJdAR%_+5njPK6$8#`${#?^P|bAwq+&qq3>R1sgP+w4ShW>a zn4o09yHI_+I8c`Z{0om00000Ne4wvM6N<$f{30U Ac>n+a literal 3229 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 diff --git a/launcher/resources/multimc/128x128/instances/ftb_glow.png b/launcher/resources/multimc/128x128/instances/ftb_glow.png index 86632b21ded4a18156a011115bdf671a8c998cce..7f9f16ee4fe1f1754c0006d39d888edb2aae0c43 100644 GIT binary patch literal 11319 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�Ugw6eQs!CCNES%)UvC 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�jIYC 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 literal 7883 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 NfP#!Fyha)k@_&Gtop%5L diff --git a/launcher/resources/multimc/128x128/instances/gear_legacy.png b/launcher/resources/multimc/128x128/instances/gear_legacy.png index 75c68a66f0dcc656fbd42028d313a469dd50dc85..bb46fe0262087df86b944063122dadf4152bee0c 100644 GIT binary patch literal 16940 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

    NaO6%(?ND*KfV(=Pzb7d7z8uVO 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 diff --git a/launcher/resources/multimc/128x128/instances/herobrine_legacy.png b/launcher/resources/multimc/128x128/instances/herobrine_legacy.png index 13f1494c4dd62b54e2e16942b23036e2968d640d..bdbe009d95c99dd971f9a3337d5c9807d294dd0d 100644 GIT binary patch literal 4514 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 Az5oCK literal 4937 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 literal 8012 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 Z_y>26J`V}q4O9RC002ovPDHLkV1jTYI#&Py literal 7619 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 diff --git a/launcher/resources/multimc/128x128/instances/magitech_legacy.png b/launcher/resources/multimc/128x128/instances/magitech_legacy.png index 0f81a1997fd0fe38cf927d4d29cbb1db394e32dd..7eeacedb5b856d802f3475651248e8e33661b746 100644 GIT binary patch literal 21813 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 literal 23097 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 literal 10583 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 literal 14062 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 diff --git a/launcher/resources/multimc/128x128/instances/skeleton_legacy.png b/launcher/resources/multimc/128x128/instances/skeleton_legacy.png index 55fcf5a991a78c85f1491aaac2069ba4891374f3..416ca66e0e5ce932f3274fa42a09c8eb0451407a 100644 GIT binary patch literal 2882 zcmZ`)c{tSl7XJ-0wy~s`ELkcl>sSV1BxEN-5h7uxNm4?|%vdrZqbwsXlgMr)gfPZ- zP07Af8AHf_j}1~6(@ASub)B<_2kBP|FoT~l*nQ?qugm(}+%~p1!8dLi%quo+Y!VU@g0*IH zwm&*+ki2zJUshVmetV=GmC*uzF+M)tKne;MXyDQ2X_EH8hU3Td7ud7<;0?IBxFXS- z7kaZyTwOdr;s^1X!QIY~L4 z6*j@!%8gvA^UBRC^7=vACfd6ne21d5$VT@eA>u57?oW;dKyO5y zsepQXdkqAjpze(Q?XSjFiCr@2;bT9m?_K^t{(AZNX+GVkNzh*@>4SQf4qDa7wI;Ej z%632LXIp-72R|%&KtgUgKg_RPJt@pnQqLy(tfcYR=-xFS`Le7fNd_J(BYk|tJ(uFm zlcashhZp6Xo$jER0^t62v?X9E!<7w(KM8AyA zbIXC?rzftug+VS}b&nK}ym}*Aq2-$p?yXr-TTM1)Hr-C~mNDZ)Usr|Z3WaURE#j!x zko(h9IYXNTz+=Z!#zz+&i=l)`)A6nT*}A2? zxoTG*N8%f(@?YUL0Py^e7|pDUyQD;fUftJ}DXlYyjwv1aD;&TKt8$BJ-H?pNT&Y2& z=qIL0U*U+l;NPVjmB2mE=^&sWsIGNAd#1kFn>c8GO7~%3aq0f!aQSU9VVvY$&8ab5 zLc_?ly|+IZ74v!!(7QfxR00Ck_XVi^a)F1?TGTIo^m}5PB~xmg}cDBwZ3pu-yBB z_RLSHZ6ylkU#y2RMU8Ccl_Hg81sY1;L#+?<&|uA4#8mEns+mvP1ZhV&AfS3yB3k;H zQ;dE^{?l1L{@iM|-owRcpX)urZc4~knB&2=_+BPrWMduSK4ABkW$V0oK%>$pg zqv3G3)>VfC`zqGyS3;p(@}`G5EGO=;u!E1%=(@ssxwqrY2S$Y zP6@YfUJW=2o)D2*fV`yY3o0WP@gb?KNJ}x=quabZJkyI(?i<&*`!%&@jCPA4#d=I} z+|#E$se$o+nH`F)r53R#D|h0K35EW+zP27vTN+l}fS43}$tJ>Sbh2o_z&19W5MGJh zgiYDbRDxt({lxF{h?dpyGB(M_*GBWu?e2A}OPXdTdxjfWW*)6pqu}hnE9%4Lgi4L4 zt#DQUW}JSwyV}gQRny zKAluA4UG-y2pzB?q4t(X>L6_=!e`$`Y9iMyngHCmj*LHF@+AtAyJ^bLJ#awKd z@U)e+X@Cw0S!B)(y%T=D8T5i!*S#+Tn|(?xU%Rx=g9T77p|bwT48rnGuu?FTdFo+a0s98QW z-kT7}f;{4MIB#j`GN7`_Vs}@;IB$y-Yi&8{TA#~7I28Jv0?6luaDl-L;KG$7G{46cKG~+j?VIEG z%E~r~-%69)vpqf9V#<6FSZZ$YY+H|G`W0&7sCMNJldcX$SXrq&4t2g>?LTuZPAhpr z*hj6$OmzV>n{6|i!S6d}f*@2rEMEA>YXdxdwcz_|x1ne(LWP@{is@7jbtU${qu;>? zj4-R(kuez6&6MFUwb2=4=y;LgK`R4=tc5|Y`a*y0jYqo7FeQ8>GDDwgMeVpU`hxL{ znl<98a+&sdiarkJwk+>9k!vsSy<~3rzJIIi3-Cr_F6#Bo!*j6@Md7!vng*ymewHSg z`w?~T#gcO-Hpy95!)zZ_jD8&j7eQsG1c=GeK z6-*zsUk^iBe-d1Mii(?0o=8AuzHmrI<-R6%+y6lBH=G@7O_ECwTpIn*ao5jAcBz1! zWUm@@e({C&GdjF<E1@3x#Cj|2xqN95)xwtKsdRN0hN2Po~=)FliHYsu>NU7ByDI zFwFatuaKFs7oAW!>5)#i3dk)^xs_;asdznR{OZ6l)nTl&A=dPPg&TfOFp`mA@JvF= z*u3>+Bb^r7uH96cAt*bH7#f*B*{ z^*q8)ZOfcP<+yP9A~q}5hNVrorCM6dR;_R4xJMtvvTQwuB{HeoL|@^J-BgFg3XkF6 Pj;N`Tm0|G(x3GT!fW%P? literal 3673 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

    qgOD9{EgU9=(_6 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 RfAg_O>dFA61_kSw{{tAM#r*&P diff --git a/launcher/resources/multimc/16x16/about.png b/launcher/resources/multimc/16x16/about.png index a6a986e1947e8e70579d73555a4cc2be8bd76228..ed7e56dd6d0cf1ac41d166eb16b2c5301988c9d9 100644 GIT binary patch delta 729 zcmV;~0w(?T3GfAwBYy(7NklabOCTbY<~s#{}!lQu6FZ>YWJHz zw@l}mWmVO7ilByY=F7E^Ui0yp(%t5d3F@|gR0z=qP=5}TE>*eCs;XTk_0d(^>HF5h zSWBzwDW-O+Na=(}&Pwv78_J;F#O6VbW}AVkzXg=%huW2E)OCbkrG?5Hi+fohXj(bR zh9Pw*n+kyi>wnDF5!pt)x<-;ge;^`&AX};So_fRA&M9W=ih>LL8mSV5aW8*$=o;7W z7El6wEs5qXaOSNC-n(${hnW&c#)1khWTKoX8jJlkkd6Dat(Bo&i9y`MO_x%jO4P9| zvC>uQ0%-|^bu^JNDujEnXn!$RFw`m&Wk%Pkq@x~EfPZ`0DYeFrrQ%YMk^t5ei^dqt zuY0=xE4Ol-xO|V_kP@^D{HicT1J{^#*DH5&p(c)$ai}%I)u>00000 LNkvXXu0mjf9>RR3 literal 1270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE~MgCGO;z zCl|M53JG13Pz~wrX6trw5x=`bqv^ujyPQqG^J2L5{_w|ebag2_atmnLSF$jyWt*pB zZm{~yq-PT=pQgRLQ|%}2sd9ul{k!da{pYDa>Zi={*L~Xcc>QmmL`Ms$bd@b{u}R z@#4zX{*B5FwQbW<)104xZm#HV1?#32(XR;Q1v8C*k{gwCe`q?*B-f-`Y(0Izku}AhC6(IF=1BV?sd&CzZ|`CB1X$>o`KN6f6I^dezodft+-JmQvZut-Z%67 z`rnb;BY!hx$TBXf%g-<0-2f~^-SoT{bucdnY??yo}K>n?QnnN zr<3sv65K{Vy$?_Be*aW$zP-GN+NN`s%6GGF+>ELYxWDK3&$!k9WH;1)nW)alz*um~ z(q4Lrad1LSeSN-l-*0ILR*wGe`HZif;*{?ehPMNgy=;kVM2T~LZfb88S*r3as??!FFYqr6vQtl%H3umtT~w zp94`+tnVJ+qi>{Vpr4b)wgP4$#4Z9}ViS+)2WpT2Ss0vOT9lm1;F(ual$lKI8$wNdXpj%gUB#KX1v#mid3pI|i6xo&d3t%NCHk3pDXA5D1sMhQ m1&QgYwnj#3#bCp2jnpzzY>lQm{yYXWk-^i|&t;ucLK6VJZUj&O diff --git a/launcher/resources/multimc/16x16/bug.png b/launcher/resources/multimc/16x16/bug.png index 0c5b78b40bb508c4b5d9e26698fa6eab7a48ff4b..d7a253f232bd7f8f6fedf7818fd218c03643313f 100644 GIT binary patch delta 594 zcmV-Y0MB7Nt8rkf~LYI!C#oPM1jp_n`*b)&-@biw;$m_xj8<(9@C;j zmb6&G^UpuuR8bVhVljRe^WRw=0@sJZHL~vF!o@OX{FhOLq<`?RpvlVXXti4B-GBf6 zOe7NNJQR-y$SgjK2k&f)f-^(l@dUVC zwpRqf8D8)+BhCW&InM~cq@tBxkA<&2AUA({U;Iwj2Lrb^Jzz<{`Izvr8SLi~p$G;z zal-|Ckw?(Xh<`u2S;0oaWW~wVFDhL4M35UqvNH+}@q+XH;B;A!aDuPsZ~(v$S+A+% zV;YQYZw8;&fz55;ocmqrlDUrsxg=%bvH&>O2e!6Li39x1fC~U-WC@m8fh|(O&Q?jZ zgQH!Nd!LI-o>w^W;UK5PEu7>5U)F(jEa3MB>;+%~$$xCB=&-bfDMRwSE@PYtDHmrv zqj2y8K@JLA*w3DE{&g)D7WfVxQe$8pJ=jbn6@`vgu(wU-kGnYPNrhdNAUpajtYyR{ zBhVm6kn;&&ctedtHFaP^1K3<7<&5A{8nA2F#a@pp{MYX~?bWI~0`TP*ye)JWzWG*- z=B2f`RZBxeHKgcIS=SR`b+6-+Pp2DL?7xtO9%%QV3P;~nVflM%YxJ4^ApigX07*qoM6N<$g6W4LKmY&$ delta 711 zcmV;&0yzEZ1l|RZBYyw{b3#c}2nYxWdc0jv=5@7 znINJTuHZBdW@Jh)6Gx0`9A-&wpSx$@KykfX4Nr zB63_rYO2Yh>O?FS+b<$JvI%=&q)EOu875joWPf-Z1YQ8Yw-m@^GDGQfy3ci8=5^`Z z?l2}Ka4!w77Jn(cU*afmOGMfL8~7+IBOj@+ukUPbZa(a~E&y@$8LUikw+xq4P!3?; zgV74lt`_M4J_Fg+9b}9#dsd49TJeHT3(m$NRs*&H%RsNifvk-OTvOG&QPpu(?a4Ma zTx<>8#W2tj(%_J->P70<8wLdiXJOI>0gl-ulThBUgMaqi)LeH6I}dbiOPJm{Je8ynfaSq1w@f8~x69Bd zkTN8IQ>znXzWFp%0yt?wOu#8P_zHE&Bn2O8dA9#o(w3=t>*Ck%k9_7qjSW__NP zeJBPnTz`Vs(+>H9gB6M5STW|TI?hC3yTC7>DOIg(aN-l6PbD9UK6Hm54$S2Li4^S^ zMXQdSN9m2n7_76hhzxxQ=zHn$rRYH-fCV2WT)6(zVJ7cTYe$)saPGEeZY;vhYA22Z zspkP>Y3OQF&c^~mQGtC1rV9>B%R%YkpM}RWu0TJq*0}l`S7C`N6EcY t9xcI$s+QJ>s=8^cSo{vqxD`iL`3ren84{O4A%Xw^002ovPDHLkV1i&=G%ElA diff --git a/launcher/resources/multimc/16x16/cat.png b/launcher/resources/multimc/16x16/cat.png index e6e31b44b25b476affa6d4db6f53a2aa40add758..47c449549e1de162b928dd302956f539f9a2e718 100644 GIT binary patch delta 683 zcmV;c0#yCr1;Yi9B!7xYL_t(|0d$F}>k!`yC&39WvMpH{!&=k*`x^jZi)KY#5X@&323-uL>a&&1uN zT|RKTV=e{of`C9NU!hzWMG$61*>!#o;w)jcx`;Z*vu{1NUG{Q28a*QybsiCFCvWZr z;6(&8NYfM;3JF4Y5GRiL$?bG;{rhX`z4h~K?}Ux44tpBm*k%miMTI~3z}@G!}lv+h5VBaaC$H9 zZUT6x3J7r;14ce9jC}FqM-ROA*|W!YdTsuP?|`3n-E~(0ys998S5M#rzW({MTVD9! zvEx%q`9GYx=TzLF+W_#QN@f`%O0!cxGSkP;0L9!^$@R(Czi86vsGvpHrjlW_SJ?us>8$ zD@J8gbq3h{#5P~~((F8z6g(6WY&C=ssVxjjT!9Wom zC=Ats-UY;x&1PP%a`;^e~03^#&ygDjG`H0+gmcB!8z#L_t(IjdhVvZ&XznhoAR7=ia%Ue{`tTQUi=6G73s!jT;k* zL>pIP6Zrsc+_-n4AHZ)x+>o$z!3sA*8jTQfK_j77i&DyjjzgzI=U?wV_jPfJsaj6* zCMPF3Pu}12bKOUed2p+bNzPWUjfim25z(dh7e3lqTv+0z7k^G3?+v@}^#{E>UYrs~ z5vPv7!HFZUASMj<25ffj@vytWXfi+$_QKxVxBvL@^3A*7rQ>W^d$W1=Qvfdr2vn!) z)XLKc!kj3r`BS8MMyJz~%Xe=E(>{Yq~C z)oXwCFMt480ZB^bczd_=<;}axU)*@+Yv_YPA6Hs)7JsJ&})Cf4F*adFAT4V1MDjI-R=fDlS+so<>k|%Mnp_ zNB#3RRTo(H@->LgPMrCGy{1oERf uHZ9wqG}~S{OL4Z}wr$(CZQHiZ zkGFOK8fgm;9bE9 zI{goXepPhIn!=CBO7}u$nkRnt&RlZFw4D{;rT5TRXnUn&p?}#03r)^!|J^%tm`l!? zcSx?;(@+Q*{e)uhFe)NmK^7MnY|rk#$}oqy^CNORidX$$=#c@J#DQuKpQtb#4%P!y%5vLY#_+I87Okh0q@X zuGt&8CRb>-2h3qExo*=XM^r8$sB{q_$#p2yI|RN?9YU8Ogh4ZiLlzJ^mB5u=MS=Q3 zgrwAgWtqcVa?`FGiS_&^(jAqsl(`dJ#V+tITPSP5ReusJWf5dJD}I$_F1c;rjW2Of zd4Q!<0!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3D}^FQ?Z2PPm)l=>W=WBQ>c_ygE*DS1pa?-1l?;)c9SasLuwSsiRUkLY#c_vk zluHZiqPK@ONeHVwTNXi(#;HPb51`19}DXp4PL2Cwwa+deNi|L{H2$+GS7y81@e7e{<1iB_E|W}fn#?V9NQ+_^`D zCj7c~vi>xG#43yB-*UdKalP@*B)Mnd{Z+A-ADo=cdHhnyk9h}whMwN=^Tf>BLW4Gs zbn`&X*sb?xiaWS&2yu03nXtE}MPhnZzHr$^U4~WF`j=;D9PZF7b_o#O7~&9m;)CkR zd3A0#z61)CX{=arct&g9DZVR$uXY|jut8DFTH;=TNT|J5!b*;5?wT{}&Mf?+dFj(? z!Q1?dM|T7Yd|+u7d1vRD=sD*`0(xHldYjCR*-dA5d~|dY zU*)%J#!r@aZ+PC{vi`Ae^}L3q6=KRi_I9PD7)BM&e)r5fNaBRabIoCH=O!VW$vr=FW7lIUlPtVkQL095zv#cA)oQ%{$Rc#a+|8 zVzfT~TRl;ALzabC>P3l&1uq-KV_0W4|66Dnx8}hr9hEc8+nBg66osvmx6ECY=JG=z z@e=DP{>_<-uYdT{xJ5qS;CfJ%_>U|`=L0tuWuKUQ?c+ApWy-b79zIm?-7j-y=k+Vk zro5`Wz13Rr+RjJwC+%mPKX12^j_mPHU{X>oag8WRE=o--N!3jO5)4KL29~;phPsBP zA%^Bw21ZuKCb|YdhQYSyeL^q|AeB}ST|fw##Y8aE=WW97C|Qz z4Y~O#nQ4_!4L}8HLp08A)}p;f%&4myj(9ItXek{q#Epv_vWik1GO-Cy85}Sb4q9e04M0brvLx| diff --git a/launcher/resources/multimc/16x16/checkupdate.png b/launcher/resources/multimc/16x16/checkupdate.png index f37420588e11fd5f96862adf69e83627f3c7fb9d..9d08c56f0798f4b7664aae50f8381b1058acb6b8 100644 GIT binary patch delta 718 zcmV;<0x|u(3FQTlBYy&{Nkl0dl)WfAa#AI*HXm&q_s577tyviIt@<^ zXjSHYTBjoT+<^rPZr|o8bpfdD`&lUDekNmfDB)vuc6OjyQh$L~aS_D%A;|K60@o)? zpt9@B+%5oy`>DLPsuZoQEs)7%r1ya8yhxPA7^5syh^hz`)TP*f;eLWH0Qz%%y%=I~ z?RyD%pP{3z1&!4?5a;-yGC~<8u18Q6{E*;10h01e)E32|wlD^@1<`P0HX+#P7}7$u zVdA_CkIm-bihtf%JT{(+yZ8RX75xdnbp<3EqB`su8nWFWZK_1OI1lE}XX3ifSm=0h z;hK02LD>vBWn48FC%LRMdj5MrZIlWU47b2nv=-KnH{rpRZMbbb4fb(o;gNO~KACsX zA#En7Og#ufXF>o}M+i}1vmJ%DTol>wf}!bRsJU%|Q-9)F*u)+}yR;EBGx+ zQFn|s0Z-nnLJq(rVizPWC6Fs*pdqJBJ?&3w4$mh5Dp){{ z*&1XStwe^wG8_^Pgh}WDkL$kR^W=kRH(SE z!86DCsFY+uD(@htOg%2@Pj2Tv`A3VRw)-pgRsN*QtNfJz3AWz;6*o<1;i>&1==PK5YOZJNfw_i4xh+AgUKu(!@+V}A_ ze$a|5-~P7r+7H@Gul|s~`0{sB*7I0tQBQl)E2M(4=?myx?EnA(07*qoM6N<$g8DFB AEC2ui literal 1212 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St315xGm{5`9_22iI%U7OEx#ZcDtA6!bXJ&F#t3sWC($qc$(Ibz%mShONJ;YI{EWsS> zvAZC#`PSS3*6s(3SXmuCxN|qGXlc<>yO4R=Bsb~onLTQszuw#P{oP)@EN9KH?CIq{ z=KgOiZZT~8J+tC&UF5Ajt39x6>oBY*Kb{ zaJc)vZ&mNV-E0i6{Quyi>&qo(g8k|YKOQB>G_+OEy|9FLYFmJ8GEe`TG&*UPdhGIi$%>!&X@WAxn;@2b5C z=iz&j>8ZAHEz9|L746*N_KTONThEQ1ZN2QjMRnSnCkgXeE<|0tn00Y>?&F#J%r-Hn z?y|1lptGVfwXJyZk+)$$^2#2gX{^!muS%!%_1zO((Q#q@F?tsI_wQIo=$i#zx>fu&*esi_FSKZ4lp=12?({gp8W23AmE)rrh4}!MFy|-C3AJ0 zcOF(a@Vz?iv0{@Xoq6&9 zt89j;87>#^%{=sH=GmD(-M8zkCw3gqU{hS`wY2hdsqGZI50BNick}-_w)>5|cd2%! z?9mC=qw*&Q=`l{87Wmj+cC{GeKh`g&lhj4iZe0Ur4Am0Xh?11Vl2ohYqEsNoU}Ruu zple{LYiJl^U}+EyIc0n}guvcV@aIW@01 zl_8^~q`*pFA8c1rx_%BsNwL0rfRDbBo`HT&7TXG-eqoUQ;QZ2} z#jA YCWH0r2gq)H4b;rw>FVdQ&MBb@06*3KfdBvi diff --git a/launcher/resources/multimc/16x16/copy.png b/launcher/resources/multimc/16x16/copy.png index ccaed9e11ba442b10c50ffb18c5372277d1e0fa9..24251adcfa9c718f9c63bd8c016bba3b44eef008 100644 GIT binary patch delta 370 zcmV-&0ge8>2aE%dBYy!?NklEAOBNqG#|7S;l|{ zJc8c96J+fP6d7>q0R&73Lc#An+;WMPD}`#VMIg&E07)RorXUG|5VjT@EA)w_-=LW!f+&oV zy+>`(0<|d$trEvo3v?q2V)(E?H;oFHWr=f+b~~lp&8RRQC`C}!O`oQziIasyO_lIq zFhJOD3vQ>=XKNrA!Al*!22uhi-utmWvTa#}q9~Z$Ox_+J9;bj4fdigs7y@H`Z}~b2 z&t`Y;b@(30`G@n}Zdds|e#&3}`L*!%WC>lc|M-BW51gq77Cd3<2T(!a4^NrD9qFT~ Q4FCWD07*qoM6N<$f!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3ZElfdzWd)AuKpN~2hL~e(4+HHi^K@|xu{hm3 z$uUdXQNT6+x`&upM)ICZhE8Ud4YK-=?kGsFf9t!ah{w|D-J-4h0v(Abtk^r6ukbnb z_Abf%dOj&_%DE#(dKnq3R>gn)KZTjE!Mx$|Pk|4jKkn-8xy;RM@z(C$*2(GjlGA1s zTNuwN{+cP}zF5%z@22Zfjl6b}$3TLIA&zmi&n5GQV9#0SpGUPUIGOS( z$d$?O-*3is^IpDxuX!dbGOa$<^zY$^0tdD+7_V03U0`syD~Y>st@&=74QmRy&nT>2 zX~TYEc2vSe#&X4IhwTYF|MBb*zM#A7++zvld)42*{d)7B-_wF|Bl{AG#lQaU%T{Op z>XaJ1_j}LrWCl5T`5!g4wail(+7GZlSYsKllDRV`Yj2$Pu@z_27VnNP_tMmCS@600 zbMymK>qjn=!d6dRwJNA5P*c@6J-Ah%r1IxS>ko1pVjCU%1Pk zwSQ*MXu;68i_Ls@Jd=IH6}A5i8Qd>AS{|i(0HZ^-#5JNMxhOTUBvm&BNH7=~7+C5W z8tNLFh8UV#85mg^o9G$<83x;)_X)u?fK*yRbOALO8t57r=^7b?7#Uj`nOPZ{LNu^h z$26j7$jwj5Osj-y0NP*}Vqj@yWMXAv2+`oR@`D3VLpsPwKAFj>dBv#=86_nJR{Hv2 zyE4mClk;=#NSK0so diff --git a/launcher/resources/multimc/16x16/coremods.png b/launcher/resources/multimc/16x16/coremods.png index af0f116675630adcdc4618fc718860b316126f70..3d3932dbeb1061ff4edbb0fae162ee7f44425b9e 100644 GIT binary patch delta 629 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 diff --git a/launcher/resources/multimc/16x16/jarmods.png b/launcher/resources/multimc/16x16/jarmods.png index 1a97c9c00143fdb9771880cc7034c501dc9699cb..d68c3d2bbc671fea422241ea52f20485be627466 100644 GIT binary patch delta 562 zcmV-20?qxk1DzPbHEs`=X+n zcSl6jZjFejTM`-?h)o49#>JgToiL$ZkVp{ghB$wJB>eu3s8ou;hXet{V6E{Vym)bz zLBNmW@ZPAXbES(HR|tRqLXx&nCPQG;fB&>Txg7kOdEJEz^N3!+m*bE>$N8v#{elF` zWOFK&8cHd}Tz|5g8$KQrGiOy;*oKg#q&O%9>P7V3VJ84nQ8^R9-CkZDn}!eHPa-1` zQYb*#v>OycfkE)mjTv?rF%!kE4h_&ZuJVs*tf~a|E^SjuebM#zDk1 z$o~KDP%A;M1& delta 670 zcmV;P0%85i1hoZ_BYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru-UbK~D;Go+1poj50zyedK~y-)jZ;BSQ$Y~^_PwQ#QVJwhprw%z2!Ygt zA<=^u4e?+!`UB+XAMk`H6TO>w6_3W72?ygrA5Cv+Kn12XjY{CURP}=Rjx4V5a z9$KDMf%qkp>}0_Tu=9IDag#JUY5GIX{1yw1yA@-oOB;Rs)A2NNa!y@!lRtYf!C*SIf)ylMebl zPbi{54i18pYLTi{P!xfb0yi2Ut-;2C!w_gTQE^Tt0)3u`0nf|E`};}712P-aY0iP2 zL&z-TL|2!1GCcf15fx64kB^ept)wsnMG?5s02>2}B7Xq*BkCLsvyfA%)Ya15+&x(+ z0M;f6Y)s3KW3Y38wIHqWtz7>3PV0}QAej0TMJuu(N1DegGB1KWs1selq1^@`( z$Mbr9aiLnh+kQbK4YL=mtN_-wT5OXO5Oth0Li9|hQt6_U={H*MinBp*?ZxEeOFx$r zq&2+0K7X8q#@1FnWDXs3>gM+Ln7IUE>U+hJY3y+Kbl zo9Q;D`*pqkUIMU7T0a7ix}M2gB&CLqs?2fxkDv4XiGw|00L_ruMoOJHLfpP13m_08 z*YOuNtgQ{UcZ-=pM+nfNm|<>;zv8C=^yB})02g+D13~<6Zf~5T`~Uy|07*qoM6N<$ Ef=A&k(EtDd diff --git a/launcher/resources/multimc/16x16/loadermods.png b/launcher/resources/multimc/16x16/loadermods.png index b5ab3fcedc3af1193fb03fb4a168b24439ae4659..ad0e6237df26b43cfbc1d5830b8013c26a87bb38 100644 GIT binary patch delta 585 zcmV-P0=E6z1>ppcBYy%YNkl$|pX+ct+C*0wdMZQHhO+qU_9 znI?O``OZwRI(q_03uQWPbPk#Sc+;k1AKjaee-fvxe|e|#*jsfVR5a*!b>P8E-{_mq ze)`~*o1VY>i*^}z`$qCSlGrHQX;VHT7_$RtGJsIKeUoxCT7T5Y4BmhOk6wFV&Hfih zRM|IMl>-u0Wg-XvJV-)NyVsR7Q+gGt8xU0>gh05%0B)ZG-1dtas49g&9+}(d-+A!j zL_=J$!4g44F<{OTX$G%fFZ%1nmD@<*4=NCpG#oM`3;ca&h$k?bU0}1>od3LXd`D4Y zYfuA8*7u@J`F|dVqG;@(eqyji6(XhDteB)qp6uldyYl#gDs~94H4zc|D5Xe(3KR;e zA`+6hNULV^7cM=VJ;s7g#*7J)zNR2Mdimqq-*3;~aAYo7^xc*D6ATtt_R7)WCVoMf zgd@n4u^78+6c7f1z?X+RcE7*AWCS?X zR*N&c_2;V---$Cz>E>2c=FcgVR->|T+`L{ZSxW4GezaE-`C>I zQ7}ijuI($9$eJY$1@RDA)z5zt99`YLB>^2sRJQY$Yo$sSD+4Kkca#`h?S&nq2FB^- zQAJaN(n24%4Cz7DCE;HX43?-Q2loAZ=KgBW980OcdrF`m X&XaH@dzA{c00000NkvXXu0mjfrlJ@l delta 708 zcmV;#0z3WT1lt9WBYyw}VoOIv0RI600RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_ z000McNliru-UbK~Ei9u%OQHY(0%%D@K~y-)jZ;lXR8bWE?)YZrIe)41BMngqnu7g^ zQi~Q+;39;`MJ=jjD`{h^RzX3~CTLmEPHIyTEnEaaVMs*=N`F6!MmA%GX8z91d-vV{ z7Vl+FHPL~~z2|c7_nq&Ya|vqL{u8&8eZAc`yW3O82qDqpBAuF;-59!irDt?&oK*`T zv%U4~k)HJF&Xy!9RANWY?wb5ix(47tO@OYGcUnj&oCma6U7EKhX41%KY*eVk`?)ec zeO~$AbLL^65`UB%C5Z6W-jb~Vy@M~FUL9;dOql{91PuubB}alX1(#_kWw2HjpiH6U zNZcP8yR?~sWj7MWXtcR0ii+z$TCezf#g%ZGhU-aqT*KoULK)EYqO}PSj;0Wc#gZEp zvB}7|g6nB;;h&i>;KKK%)X>5uRxI5{_8z}=S@Ckddw+Lom*XjTT!VV53drLc#uzYR z{0yXll8ji1Ovlmlr`j&&vo?e@paB4vews=f2FNM{@v++c3Pe*xS^0j5B z@&_{w5h!Iqna@f+pV{L+yEZ|cLIex%?md`)b>l+NL1rn*LgUjLkkXIR##GIN-r_24 zP#2EJ5`VeQdOMk~U;g-bi6oo%^$(mI9!aOdgffLxyyk2H0HzC0nKDI%G?ACX11)vj z`BwZ|oL!%tdNb!(tvj=g@r01RZXr!j`Cls)x1!mGNIVpRU6>vnvjFgwxhK~FM6&Ju zhsreD{5NK$s-+2O5UFo!{h6-;Ahq=PT1os`hEY? qf_tN(r60000z;)fV;apyPF|6^Np1=nX@Op#Q#3jD_a1_d{_*S1*)2sww~Dxkm=lX z&n35-n_lV6q;=a)Zvt@i{EK)V&*E2q+1zXMW<9V05(m$(T7O@V4Z@U+PX>=4?q0bo zGGU}h7)d@i9}(uWL?IiCCdn#Bdc}e(G78_kMsLoHD)}V)>{Amc@KyHB$SZA1rhUPn zqL9tW7Iaov5~$#+ibC~OGNbp|J4MKn&KCm;otG&1Vp?ZHr|5iA{r#foEt*0Ca8X4j zbSfrAQ~w$oGB6|UIAgA0`>%u8Gi-<001BJ|6u?C0zFAYK~#9!eUr;-B0&^}%li$@MqG7pPUek4+=VygN;WC|03lvbV*Ex^J!)i2|lXnR37yzIaSVuiXn|vyj zVno1^?rb)jTqqPeS-?g)2!ag+B15y;Oh%&-ACJeGWHKoMs?{pz_xst`mJyT5L<=XM zy4&q2aKGPE*lafA#nTxvi#LGN>1449o6!aMmFIwQ&b=VxB@&)nbN zOMqgr$T18hRr8mYs-|u;U+lqJCec2lf_dCwUJs_ul-dwll6Oqo|OUcK&FC?PvbPTEw_|b4Q z4E_GFRBp zc_tAn-${ua`nZu@;%L zE>vs}!_bX%l=KFgtr7T!E%@+Jh(N2?|@1ID32#r6Mx*uu*ndjlOx8jg+GjfTFHlA z#eq)DfRWFFTPc7|!G%%6{thUOvIO!&bjb9nQ4nTCZJYxoAr_<6%=er zE@(Ly9-Rm#1@#?}=G6r167497G$DqTqAbdU!Y~8Mqb>03D46AZ7$jV1g$y{=e9#IK zf>!h$kbgQK&ynX5SUTSf?qGh_Z-C1 zJ90zx$n+?Y8)`y+mwH95q%h04Pze|$93J#y*6yFWu|3t{$_#fL zPY*UB(I!DoupX5p7Zw=@YKlPw>`y|IlzrT(rbk?VpNZ_q&@7MQVlGK)2MNipB-Tjm zMuq62+aL>_^Hh=qMx}c-&+JP6GmnNJ^|y5&0AnyrDy>I~8~^|S07*qoM6N<$f~!7E Ai2wiq delta 758 zcmV)PJTx>R*7I5yZ(^tMZXn$w@yLff|#1lafoHNEe ztF=Zcg%E;jwff0uG`jfi^IzXM5U}>q(~sy(pPex~6NVu{5TKMoN=cSwNGa*}`^2&O z;Qpicy?No(r{C`b);>J>&f#WlEuChh6HT7yq-lzjl3J~XQVOLe%w~rAQial-Pj@qZ z@9h_^ykY^Iet+Y!S?zF%YBON2;^VnK(J&?qLjbznE{9g@EUz}WbF0nGFMeVBdXMgg zvRnXj%k+L|_3{sFecPq8)h9G=1mFUc zIvPhCdTPR8>Oi*3U{|qnWS(?daP#99cfRT{7{)9v)_*xPD z-HxbKLbiTtv$Ne{yjjrN*hMHq8G-&|!kqAt(q-Sk0HWlx(3Cjcl)Wzp$hwDWjT!xB zSg?I&UXG(}!oWk%3RI%+0dixJC1bL@KvqH?Zb+sR&2TSgl#FnNk0k__my?3e7l z05-r#C4W@Q0b$8!Zy1y2DTST0upCk?dl;)A%X21)Mz}UfrU`_7&%m**M)&TRV@vaR zG9b$`d{LnDf?{T23XSjB7%w2p3yM4^^xew7L2XW6_Jzw%r_VT^pmmPz2vW;ul4N*7 zP%8(RTr){hgm4+e$@}|&OP_!D^2&U0oKkH)Gj9+@5s{iw_AD$5;%Q2Epm1yp={f7J z;~f97wfEwIXIgvi#8bWY&TEe6J+rz{;o8QpOp^@T4?hc~d*R0B_O<_g<3D-n)T1Yd oadN)38zCHCzy5RQ>Os4|0E|&f-=SO?jQ{`u07*qoM6N<$f*&=33;+NC diff --git a/launcher/resources/multimc/16x16/new.png b/launcher/resources/multimc/16x16/new.png index 2e56f589360b9b290f02afe66dba73d1c8062658..dfde06f61adb3b182e05fd43b285005622bb59b6 100644 GIT binary patch delta 601 zcmV-f0;c_!3GoDwBYy%oNklN_H1(c*BtKPo0*>g+Q-gKI`h+ z`$7kx`N)1UIN}$%$`pDu0+_@9;pG|^DQDsKUH$i*XR!xymDON}TCB{gmB^o-8xpBZD zeu!cg$@jg#v6e|>X1C??PsM(fzvc z|Lhq&|Hv!W)3N&aaR0*331CVB1WXhuL<@+F5*b8^CV~{x zP(YICW>QuF2tNGy*WZ6m^!E?0naYOjpMU-)1pjNj-l!LVMx$}&U3cGcW9vIbvZ4bR n#Vr*kO literal 1175 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3psJ)Hx}NG+W7Nb_td=X4~4rvT240Dy2$Exg!J8XsoU~OR}b7RPCqaIwydh> z^eJAQ`f~=q!`-d_>)(3u_EE-*j5jrm_NrE!b*B9nWIVOW=2m8TSYp8^i7O-_9>F`n~qV{d==s&x`G5c-HrL%1V_;&dm0N`~%*%yx$A%VQV^f ziHk2~y|~C9AC>~+0*{p{ONBPhQILG_^=Bfdk~(w4OvZp^fk%}jpLrF3Gr9S|qQhs| z9YtxGAvqJAgIF9q;XEL=>6vWcV@Sng?-BP8U4OhP276- zv|aM+`Yez0*$rMztAtb<8Uzf*PSj5OahZ8izM{kXBck(cs$RXl_RhY&YQFsyxd>i? zz|f@H)qcvo$|`?b178?lvNQQzb1UoT<^R*d9zSgVc~6QpDZs}mcUM5HU9nN|ta0JOm{#K6+Zz{1Md0%F7TB~On6 zHJE^$s{hTbe z6)+1Sb`kJWLB{E7payY}g~9oyMaiiQ?tcEht_q&X`FWs_%1u4^Q!NvyL;;~BJ~YS& h=B&h`620`i{M=NqgN&X`tOTlM@O1TaS?83{1OSOz!NmXo diff --git a/launcher/resources/multimc/16x16/news.png b/launcher/resources/multimc/16x16/news.png index 872e85dbc05d1e94b766e1ddd0fd59ecf91fd91a..04e016da7a501da58d488b13bbec00d704c5a0b2 100644 GIT binary patch delta 574 zcmV-E0>S;)1=a+RBYy%NNklB;*ed~C!g>p08tl+87=wX{EM&BKU}P#6O+#_m zTWdn|a6EE5e9<|Y0{)jh@_@_y@>|Lap$aFU^4At{jYX=U}Wi4-@?b zm>et=YP>I>pZUtqngKOskr?XEMq6zn2D`E`F;GA%L}z0P+UgV0R+osTs#wi{&ZZPB zPgMyGGb1IK8h^+!smgGEQ}JMy)H>TV0)mQ z)>nKtc!0Z4Z^J(P4ex|@P)w_)qrM^rP1W%jY>k4q<5v^%98m#8mjA}hTi0>@#x?x6 zdV-2(AF4tzhNz@PIYHQ6C_rACeLnqvf_*B0kiuUuaCt4fbf4yfh|>4Yv&-X^-OVk zah9?4QTk#@7D~%Z431NBD@+WIF<)FFUn_B>cZd`H$B@M208lbJ0s`>q=U1L(Ua?wP zr|dddCc<2Pfq&=oZ^+k5I9`pp`~tgY%xdJ2pD59#vrC0N!SVz5mXfuF$^6XKoXOKs#@$I$Q6o&DCM$4 z)AvzTRH5qBD3vR0m8;}(g$@F1_ola}n{+Bgqu!)D5q~FC#fV^87Rh)wVHo0heuqE@ zfhgn)MFj9X9|2ln2m*~}lXlzuUBI?&?1)7?(S`4M7$dZT7E#;6h(Q6@_4c>m`vGg) z%S4R9iW=O8&tY?jzOH^8r$(~3Z6Owm?oZ$cEnZH~^7zSXGTAxq-FnLU)&|X{2O@0d z3RIjrjemyA%IXgvXzj6Z?&1go!wKHKSmegtGjzpmVzC%@#DEAv5YQ9%_%QqaA+Wti zAkiD;^K6!ll`6TcgNR@ZShj_;UFY<8nx(b%k2h~WdZ4Poo*I2mxqSU3qsLPea}8R7 z5(F(`u_%2>n=juNmM=`*xuUA>@8;Ssu|KS3ia8Cp*%6R!MX>Gm9W!rdzD-@be;%l+ ms{SePukWlt18{c_1N;Ka@eZ}d^8MWa00001%}8Gir(0026epuGS90ES6KK~#7FZODNJg)kHV(DxN-T17GTekB74 zkuV~G7$6|HqAY3)fIf8ZdH}ZrIG-%zJkJ@6qB!O}NoerDqWGdTW$Z1E!~5s){=S!` zENK8(3$ShT?3_U~tPMfyeRodl5CCXQ)4HCgLf2(X)6f`(aVHc)BPsj7ZD}Y~RRT%W cb#+bR2UMh6b@X9`lmGw#07*qoM6N<$f|KG%2LJ#7 delta 318 zcmV-E0m1&i0nP%D8Gix*005AYXf^-<010qNS#tmY3ljhU3ljkVnw%H_000McNliru z-T@N>Fdxe#gJA#w0PRUcK~yNuosvDyML-mWAAdKl*Z_qMScBd|Zhxb&2YRK#Hbkkm z1ve7WC=?V(@D-EHSMwG#$vK(lJ@4cwp63DQc>$*VOw(`OK41)dreu2;D1Ngo#*-g^`d7cAlnm)=9MG@dQ4q#apP?n`^hhYf( zem`IshDRC1&o^{k2UJxB1VJF%S(eF)*tGi&ec#J%6{_o6@`Sc+ljm)RKf)_l-!NL$ Q_y7O^07*qoM6N<$f?xcD5C8xG diff --git a/launcher/resources/multimc/16x16/patreon.png b/launcher/resources/multimc/16x16/patreon.png index 9150c478fae1b5da24d9c6c4921413e186571b1b..0c306e7ccbe124a0549a535a9dc10b21725ab55c 100644 GIT binary patch delta 250 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 KMNUMnLSTXrz^-Qi delta 1188 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 diff --git a/launcher/resources/multimc/16x16/settings.png b/launcher/resources/multimc/16x16/settings.png index b916cd2450cfe3e19d5933734cee12a3e1a725d3..6875e80062fc8d148b5543fa44d9c22b3d7ae185 100644 GIT binary patch delta 890 zcmV-=1BLv83y=qpBYy)|Nkli(sQ}?YVUuC(pKR+qP|u zo^9K?e*>=%-G8!{3q}>nO9eJxTfsj( zum;d-x7(-XWb!|16bkvD6N#C!W!aTSpG!fw5gMG}c7QBGT4Ujh6sPRC%o*?p&K;i^ zKTR}ElbV)g{XI1`n+gWnsS7kg&vN~p5bTBF<#zhmWv6yF*?2=?U@&md@;|+@sy0!> z?bgbRi`mhJMt`NF%O{dq$b#wwX}KAlO}q)#?{M(JC*yqc&DVcwnl>voH@8x=t*w(> zHvgByUS(O23vy*h6<{vOu8se)c~^py?;d3=r7$wkn+J-bAv;;AWJlLclJkq-77KaH zAMXT@7l&%+5Py=GI>ECuD!Jw;;dlhUKj;U+Ckx+yL4Osn><--FbwHAGGow>=19fzMmTX)+LOMm_>Y$DIm z+BnTrb2A+yX1bgt+UUYoSUtF@$uWAy!Y-a7bFtX-wDS7YMt-O z-OfGp+%-2|-23x~@=>#`=S@>)K( z+joTU`Mx_B)<0xFmv;Z1y#CRbT#_=Tesg%P4GsD?+jyf*w%c`=-Rg!%2FaurnVOkl zVsm25{O;Rt3-5pM{*O~rUu=23|-7c|J zlr>xMZ{m?zp8DCzoWRa1d&3*oI?(*lKi~Q?b>K-!h*Z)%&Usqq#%FMp& z#fy3yuNc;=BD1%$a;05lRnN{ znkHp1l(8!aHML2tSl>9I|K4%!7q4tIu3U4SZ|u9-E$r%nbL@HB!#tL6zWgsJJ$0&o zO0FgMDrOb-H7`plgSUj=+G%8U`p1v=!LydB9^JI5Xd5S+^OH@l>u*j~dU#jwgs8&g z_M@u5y#7Bd2<-~DpPQ!kI3+&!tkniZsZGqzWeFZ!yYe=b*xPQL7{6UfSMfu|#?@TM zmAsE!wQLg$DM~$Svdu)W)5OK$!^uPP$s&y28z1M@aHwc*H<-Ji>X(}DQ^j4<+AnTQ zRZeZKT&?P}G}^%|%u{cjN0UO;)4iL^4H*tUUi|6kbwA@^jUuRdVZ)ltpnHH7B+;w2twxieHevFuU|7V@|iS<)*pLovw zJ!y&5gXy=;CvSRCr6h32c+JaO<=NS*m+N@XIP-jS8&3j5nP<(a*AM>nTi;U3Q_C}` zN^E&@FYQ&-ZOeO~Q>H5IY;Rs@dvEE{l)^XL=eyVME&1r8WooavhiQfCzJrUI^Le(E zZM(hc{+#E>KKL(*tC(Ez|MU+L&e?AkE$Dt?=2LRkTV~hSdgQBli@6&pY$nJigvPQ3H#pcDUm#_bx;rVx;)it9`A#Uz7XV1=< zEG+!n_GKm2OgacjrI*^G|Vm)*q8! z4$P9OC9V-A$wjG&C8@e8K!U-@z`#=1&`{UVG{n%%%D}?P#8B73+{(Z}W!=LEFbyD; zRuEl44Tc7~21dF@1|deqRz_x4Moez3>hUQ1y=g{V7oHQQj_y@bMy0x_413-^>ZLfiuHZm1AO$2 z^bGZ_4{niw*$A-L1;Fyx1l&avFo0y&&l$w}QS$Hzl z2B?S^qNubeIhDb$v@Aa-agD#}N1%iWLLxpi$Oq=+^73-M%;fw$-R#V~bUmQM^$Uvf dvr>~wiuLor+V#t9w}47n22WQ%mvv4FO#pV7P~!jq diff --git a/launcher/resources/multimc/16x16/star.png b/launcher/resources/multimc/16x16/star.png index 4963e6ec97c21fd1a6f986841e4f2b751f3985ca..20278be0cb7e2c06504e6e5ac3ad0c4e15957b3d 100644 GIT binary patch delta 603 zcmV-h0;K)f1@r`vB!4?eL_t(|0i4o9pd3pWhT-?Gt}(7{+c$Qy&N}OC&nC8Q+qP}n zwrvf&=S+9ScAnDeEAt|g+J*Gw_F>JNSTjHeuBN~8(Tq2Os-2k6fOAC;`9brj2r5cs5Yo!!Iqm#;Lz+z7>iuy?{J25nvvfD3M5*1FL5?uhi0=qX5?K%eUXYd`a(g;v|qo70Dsr$r&*tKvM=DCw#kz8*6~$-kG;3mb*Xtp*Q50YY^`_jT`hOokbS5i6fYXC*eUV{r|;hdS0Mn1Hi zRlf12Mpd0@I$p0$OhpB<2HF6iQbGnjPEB8JP+!8A$~Z=l(`FecA*j3C`(Mu zOb@t0W@74*VQ`2{^bg7DmCX?NZH=84v>hyccX#z{_GDpwEi-rybPz z$f`KA4u3EUz?qA1RLG|(M9*|OmW&G-N_`=*>;f3*#UCy0bVp-1h+%*V0k&KyM(2Jb z<+%ia74{np46*T9MNTfDW|0AA0fq-re9=aAH@jdV3{Y+a{$d%KOG~F}$0&FPtn`V` z0}q*j5+4KQ*(Nk+WPomR1m%|JvhG$dc)|cBdpZEmt6ot>c%IcLSTH6ZOwr$(CZJS{qp>ewB zCjGm1ldp4iPIU){VZ5RXaA^jTs({fFK+7d*jN@2~V(;y|6)?1o0TF|MzQpn_xgwWj zjr5TO_Gl6T&MKWHrf_`T6g_^z2`L~UoK+@}QyX2!Uku)=_kfJ-Bw zUz!6;#LI3sf*c(!vBXkaGV>!6L5(l9CrPsTACQP_ zV06PQ3Q8cy#`3Ztp)$1Q=7>MFNCC79DZVjLLS>}Hic>-Z4Y53(|HmL27+w6sBh0Et z2m_MZ{_ql;iEod*MEMl*NsfN`8AH`)lx3h(M4Bwg4;Lw&h{oDP9yU*4Jeld?7pr_k z(unWdRaPb*boB@HI+mx&smTm!Bth)?eDG&_g&W{Pqa=4=l)swb$=HiE>AjtQ0trp? Uu4?Vi1P_()#(&B^6fjom<+C7N4J;!1g|?c96Mch0?{s`R5Il4?P|0hu;rT0jeGO{j&i za!2(;KVNzcMC3UX_h9x2B!_{6fC68EFTh)9e21C4a9>Sf)Ida@LHQ8mjsZjLk8i*$ z;3KTf!)aC37=OSMC?0^^2~*tJr?_JjodrfAcNvNRG7qU?*f<5r1n>!1avTyt!1b*y z0B&0rP21*Nsl+I-3p|3x4@ffyH(!8mgKmPlj-z21YQ^)kU|CwQEUkE+hGD3#q(dQGE%S_+k@IpUsO%oCY{Yv z^?jCImu1(b>ieX#S(>)pi?|N_gg~ZEj8l*t`G*)ELZb<3QB|fzu8hH4K5~|hNn~)5 z;>NG1z+^UDT~NIzs)~rn1t^a}?hJ7FFMjO;F^PywL2(FXPeSrIQPu#T zfgRutG}01>*ydBYy#^NklffIC60(6T;ZCn@4zF$7wrzVK z!47(seE;`U?7`c7&uLT@BGM4@WR!!B1wJbnebgTIl~jFiOp#)Z#*VU6)vWL!8p zyp6|+o^X0*S~9teoV{|kBsmuq7CT#Ezy9I3;ad5E1zO;2J}bpyu_kyN5|%hGVaH&O zAAT)kZyY>+(0>B_?hIS;H@~PL2O9@U0xi#7JXZ>Zf&~=p1UCsb^uOd;sQLz4w19#g zVVg&lPgvc*jSDe*u}RVqwmB0O7V1y5L!m>WL(?qj2;1(;@-T`BYFf+Igq5Mw zv`xFp)Mg_1m}g$INpF1ecb*S=&pv38(=e55lDYaOi$jwhCnCawpzzgK%0oRq6&02l zPoLbnnCio9p+8uGX0k?D$ovH$=807*qoM6N<$f?((0 A;{X5v delta 691 zcmV;k0!;nm1Ih)EBYyw{b3#c}2nYxWdxQg_+1{J&-eH6`#oPJBJ7oVd?Z5I>ZN2wsYsNv zK$#3%lA&l$Nh-gzuYcP>p%l-%g_5Xpg2uJK!vMMsr#B&7O>i}sbS58b zj-aarB0qf8{R6H-Y&6DV$0Ehp7CiHpDAKNB(n~|}zp#-un7%trDwIN>_rh`0hf)_b zDiTFEcbh*rz@PBs$Rw>Tt-JL@7AQJ2$`Zxz5c*4? z5%b15T#e9Rv$VcM^Kvus&NyACy68FEbMWSEeRIR-y4NmFdXM3kI4xDoqb75Ub2KeC z5$}u>sDBUCh5?p6kaJBb1_BXu7C2wXq3P;bjZQI7R zPr9$Iw$4}eqhXVR&)y>Vq!ytETL{~cAbdlDh}A7bE!HA>?kyaqkjrNXylqG54Ix8F zC{Yk9HLR-HSVqXYBt$P0qNdvsKl#i`_529}t~U`c(gjtM{eQ|~DZ30bxr@lb=VpMD z9wgios)$tvNM3Uc;b&5}2{Ge6dh2^%5q@k^u2hj?{v70(`>b=zVCpi_bVk+E{Ih8SX;bhWkHK+9tQ(1!IaB ze2mzkb)>BuoH$fwLOggI@qJeJA%5fuVg_4~FiyxlB0H3dn3{@L-8hG>#Z9u{krwS) shbeyeC392F9kD9b)nPua*6vxQ|Mn6xm~#a5FaQ7m07*qoM6N<$f>2&n+or9xY6uAmEhKpLQu-+#Dq1~ysf9|c7jI%|kA;B6gMWx;MbRP_6%U?j6{QMp zbMPi!Ohuze$r=OwP}2?B+3~Q_CT)uEG|c_rs8pb|4r>L_&I^KGigcH~1(>iSD8pip znIP5#QcyQM4}X4sgNLG1Lf_T_R+8^r!q=ZNZG_`jS2tDu}Oy*7! z2+q?P^DBFbOJAqS661Mn7|fPBP82M^2UQ-DNOhL><{I1G-90>=8s$#ZBDwSgwBF_< z0IgAgVTo{i2%9^Kn5M~vGeay~9$6 zq<-vUr+=)MG#waZe-hB}BMZ^P^}E(U@e`Dauej2C+@D0(8)2i6rI-cn?S9x(P+Wpi z@iT$)C{%x@^kM|1?qP&Z(Gmx9F9iS1N5z4S6Av=cS4IZf#Gu;vQ-C}E`NaKmEg1n=3T31r|B3P z=(AA^naH!u+(IML&da<~AJ zo)Q}9L*M&8$an!7uv&_fZ%6w{i3xIabQBWkL*K7)ogg14SS*e+!CWyK9{b}MVY(3N zv?KZ@9y^!FQ*H1hA7jy-amsl{KEtSfiq)FPABnz<@p|RqJXp)s%pS6`Jvh(jm7Or8 zvyK(w=CBQN*JuBIZkr1`(z=Nv+&C)-OhD+*grO6ukvuf$u1*N#siWg9wf#5J@I~fP#aAgJ32nCx44WaIh+ve_*jg0uBzL zP%w%W+DLm#jJc*aIX9of#gf_>^TOf4_nr6ozTvz|M3~g>E0r1;Ptq8Q+6ZpUjvDJ9;lsvkbLJ}K)8IIu6s``1T>NCz ze6fC=`wwd~0goOO$*0$FY(U6aW<3Au)1*Ua{2FlUOn(BF^J~0$a(Sj9y7PXySykI#0+QATZ_VBc(W@Ss#2@K`-79juif zBpnN2sUr3L9@W;Th(2rbMjN_4s!Nq94@biE{+TLhiv7?{u58!7Xw)gPD zkn$h%F)skXyQeC(5Tj@bu0RezL1V0FhC^yM?i`KtZ=bWm2rF8~y#N3J07*qoM6N<$ Eg0sm0DgXcg diff --git a/launcher/resources/multimc/16x16/viewfolder.png b/launcher/resources/multimc/16x16/viewfolder.png index 98b8a9448a5756451eadce70af3772be1f543993..f5f4014272a2acac47568ec0ab093161daa63ebe 100644 GIT binary patch delta 293 zcmV+=0owl52EPK3BYyz~Nkl4RIP zN2Cw#?(Qsiap&30d4A3nGZBH21C0iR1oE2aZY1=P;(#AuELmsD>SOIRI|EiCX}Gsz7*l*oCIYYwhpfzq&sRp+20AC?A?Z~?uMiSpisH_ r_b0n66NKjA>mJU8zweT|!V7DU%}$<^rT)WQ00000NkvXXu0mjfw&{uw literal 852 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE0z%d<2gY`4S99w&sfq~J`)5S5w;`Gv>-CoX)0=DVp@A8@$w+gyk zW?Ac-n7w$Ze1a7Bf29fX7vwoQ4Hb2pPwpZlyzw76$+xg?=UZ@v)2#b0dFKL^yir1f2 zt+>ggS-@fCtq(Ex_jLpt?sq=QxidndJz~ivPG#4%|6CrooJiGKz_z#ckGRXBLZ=S# z=AO+0v)?T_Dip_agq^3>;pDE8aM_iI*m+c6pSkz-@$0O_tezzH&kKY#UzwjTyf!m7 z^Zxy?Tjg_SuDX&L3oGvKvI+89`ut4Jd~asWlEpt6A96=DZ(*2U2MkHo64!{5 z9nO2Eg!<&1*zW_C)gPi1(nVgzeoXU_vn(|^KQ}i&uUId?C|y4XqNG?qsZzH%QQuh4KwlxhNP!p~KJEcN`bK(&`qBM1 z$uKuUoQD(&2FALEmLY})R;ET)ra(`b0X=n7{@W&?21$?`gY(l$$`gxH8OqDc^)mCa zi<1)zQbA6e{mw=Ts7M&1sI(|KmBGKFGCeg|$W2|}x2nJ9EKk(*We)y{6_#Z8Q zk*n`{PA|LsO4P*|5j@}L-%WAjUaq+IM4o%?4|e93 zm>lb-TBs2u0{nD_+^$dX)l2ikA31C%20($RS|`Zo8J_MZHilx$A?c7mHWjE8YowD& zx=op6n8v6I04i$@d_#7_E~*{Nr57Jf)UsT1@lhlPx_`;HEzK}wq1hoqXxd?nDp;qh zbt^R<-+i@#xorzn>TP`AqZwP;>YzJ=bf;+qj5Gy01=^e^uav+_!sQjQ)OznpUA>McgRgAPw-pHYKj-HJM+f226}M00000NkvXXu0mjf`51Cw delta 848 zcmV-W1F!sm2IdBkBYyw^b5ch_0Itp)=>Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L z01ejw01ejxLMWSf00007bV*G`2ipY*6Cw)WepAE%00QPoL_t(I%Z-xFPh4db#((F% z@4XB|rwB?dQbJvjKt-_C`q79fwY4_du83~kxioQSVr1)o(SL8uw7yHv;R2P-Dq%~A&9||>{5@8KJh!ITacKtoz~V}caASk6-VQQjC?y`rM@;{< z$#$tqK9{3lw#Y?!jA}Dhr8%KB6z7+zq>eYo28k2LnXv(Kodq@;j(QaFxSkRt)Lj=w z6`WU`SAV=$yb1X2=XquyJ!ZSsz}kR%=4hygLK{-ZlNcBrK0?cZ4y>x;osv040P&ti z!}Irg%;fYMHC2jxj;DJ%Fk1;GvZRd^iCPF-ELKD?VhF?l5K2HxE@VfQYrijY>XkmG zN(q(J6Lqwa1wtXqGc&t{6ie7*xx$UxbIpPP#(x;h6FDLg+VUa4E>-#b{Sg)_Dc{~L zviMMm(gv#!inJ#cY~SHdo*x>-yR3PF2+82Hd~x|FmRBnr>FOYM&{>EWKmH6;tpV4r zuHfpP-aatZTH{92aMTk=z2VrcXC#5;-Agah-IfFIxwjcJ@Kh@Y0$5nt)>a#GdUODd zvPo}*LnqIYrK5nLY7m6xZ-waK!QP>Z{coImb-1smy{lB--I@9G!JXO3tMk>ZALn|t1he?G-u0)$zhZ4G=EJ0YyiPi0T@o6a3tM- zO?LFGD-xsUP1Dn(Oh*r~3TNmk+2D=?wN?P@t*e#({rr!fKfidmr|FL;ToR?-mfqd`p|jt z z>tn#7NOtIIGdDI^bs1cEZDnH*(^;_b=qHW1`^7);`j2g>+8pv7Pm}yhjStmBxsl6- zw%if0rfKOwa=Q9 zQ-bBj>FjI!?^CC@(H0++i{}9)6o#t6)KxmhenW+2Cy}?Wc|4aGei=(mF>Ow3PfGr6E8)Ngbw?Jdxu*&y9mA)Iwmttk z^*_D;c1OcsuK*~Yc)KZLM)jMtmG5{0QHK1%N4#h%1%tfdo1px9w;S(`h1RDSV002ovPDHLkV1k&^C)5A{ literal 1693 zcmai!eKgeh9>;$yM$^#)R+Ez1x=Cc7aA}zJ&}bT>St~M2Lo+`!zcRm>W`^;Qhf#Ao zJ-8G$TgqCBA|$jePJ_89r1q=fXlQNZ+@{n+b6F41tW}uKuV3dJGPYio*?uj{Q?Y6%%KBmtoV!pLWclO2Jbo&!RQL!i`qzB11!?nYUPmVuRskxwRo9Kq0{d?@EaUZS!$vElIhOD_iSU zON_K^)Sy*n$qdR_BcJvOb}3ql_DuV@ap&Nzlm7X^Ub>%J)P&@BJq3yC@#$T`a8CN$ zyonLc)O-7x2v&+XP7^WnvGZ<;rt;{7_3;Oa$aCGP6^kk32314qyzZs_!|$~Eui8qL zgIDbRU#f#@u8|E3UfJr5w8L=`y8Ut|DcU*ry8xyy>>u@nFx~mXuxR@)Sg7j5{A-sV zwd{!>nSv;C+GO9Gp+4R8J8a=Ma;qZqz0TinTHj|^)8Du2>XYXt=;%=WlOxvhR&is? zv%n^lRMx6hbQTumaWmA5V?i~|g>q$mLYBFw>}J=DhJ{}k=`g)0n;wcoc{z>j%n_wk zN7X&MuGfFiYz?}SIWYC^=#ZU0hbj!c~`&uIK`?p|E4e)5%~(rHIl7vl~9;i}$f@87o(Yg&y^^y4Or_5Q~K zFu@o|5dOSjwD@dorIB~vv9P!e8MtZ4z0ns~&v3l4!`oq7PD%$CCQ&P6T_IDZbG`8@ zr!d>{5Ne+CnyInHi_qjFUsu>&x#Q%^;hnVF+uC}r+#z}DUQqMWzXzfY{m|x$Hs!gW zvZds+F30D$AJv&mK)$KhMF&x!%BYuE=O;8j*>+rd_mLmI+$QDywu(^pTj}WglA*%{ zQ{Gy|?qeNaJ|AP;B)l>^K2cOVu%%YjgHhhVFk{>bFDRKZOVrQCzF*)Dt4g)DJ(9+u6#cK#ZRXRi&FD@AzioI&tTaN zwDDUPMDm>NeEt@P`EeZ)BMawhCl8LoHq6S{q>wJ!Zwj8jD#n^BE7{CDA5Qyv({18# ziKNkf?6sE6vX{x=W{pO9RRFtX2X~=qm%YsHxAQty2f5o0T6)c$&$|m=V^vuu9WBEI zc0Ohq>cqA4gEWPHYQsYivSh1M!is$&!v1Xj)hVV7-J!d>B|<;?yf^OBoM)*=E$_N{ zTDB^k=TXDb*Dnn|7^iX8<|Ee(6owQt4Pw0`fzUYk^UW%9P1duv+s>D&5;sl)Bm&d|pjFJyOY z_U=m2R>!*;bls4Bh|-jZ0B*}8?T6SPECvCdL?R^P@t?AwM39ZFB!I;@fryKbU$KbsG{$~B z2}i)kA2qA^9JrG8e^xTv5S4=fnB~B41qmWH2+(1P2;wGySUOt(W4{F@)jLXj5YOKK zdRPZT_kW&C4Dp5WAOypL#8?R=fN?M=!9y?yOu`9yLLXr)7o?C#4&qPEDI^DoLm?IT REp;Lt0eV0Pwc0->>p!al?ArhU diff --git a/launcher/resources/multimc/22x22/bug.png b/launcher/resources/multimc/22x22/bug.png index 90481bba6fca36561a39d26c4820f16133bf0210..2219dcebb3dcbc397ba6e4c03de62020cadfe544 100644 GIT binary patch delta 1001 zcmVDs^dS|WAwryJ|oo$xRwk;ITwr$(C z?HKEs>HDWPpM|daMR@wnn`GBmYgr#)p-hnK*K8p+68==)mHF$714f*!4SylqtQ`h^ zldGk-IGY`wIdf*Ga5!9($zjkY=W8Xe(C129B^00ATFVmVZaeHdGh2g zZP8JqM%n)T`>%9f@09mUckDSGu^;xrejsfZJ<^rJsTr;UVsetaCI?DLSR`M{_xkZ0 zI(6z~2MidnMt}I&ejWWiQ&_;>+70_bm-7C(IfEB&w3~>!mC*O+~kH>8y zk-%EZ>SvT2*aOpWRwtMrhnRtg17UGx=LCb6$EXLMmg~hgihPPbCsPIu8g#dQVXS^a z(#LvE?^K+FGu5aC&S`|#i(ml9f!$+dIvIWjYOIb6pnumM;GLBW)s!M`?)PXS=7b}5 za>CdNozfw%HErsPEtp80aIwJe6?ibGf)A6z01$C-7e?6q!6LUhj#Fn??Kna3LzhZ9 zIX2%I`nR^mP3Bv}pP%~FV``PVnJDz3@6yBnOG1>Zu@Zg`0C!1J=Z0niOoWT$66 z`c*7^R)5xKiW^t?)YVsIfZ0CvubA;02tk zNhq|tIS)rP1bo%lN^^@eX>zTlq@C9VhIBm6zA@iF$p zhJ;|O3o$>SNh@h;i#NBB%qX5n)2MhUT3yS#6@F?TGBB)mwC_&e!{e`cSVhUpAYk`M zb$<;lm4FxOTKKV{S(j8NuPEMNP4Iye`TjGXH-UFFU|?2@rhpe^#OIdR-}U$;??WyS zzv_Dr?kHFutj}rc>g2I>Cb+Jp^xT8F@)^LDQV>>#bxSL7oLn!zzF|37J3FJKV|P#;3288I${8hUbEIZB7l*SFc^l!9ljgwp#MKYF^H5b z#d>J`66c3+eES%1$I9qxlWr8yQLMZ!+sRVdLFPzLao6)KvRUDX93+=XKM9H1)N|hd Xa+~QJed!@300000NkvXXu0mjf(be#= delta 1161 zcmV;41a|xW2b>9zBYyw{b3#c}2nYxWdn+a z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11Q|(0K~y-6g_TW=6h#!r zf3Lcyx0~td*&Ws;EFy8ipfTb`M-w+B2BQW&s0R)lj9fVAU4Ii3JQ$50j2a^G;%yU< z!~{_c2idF%0gW6CUje_^)kqX%*_~y+d%C-xhZ$s927O7VlIp5|RlWCn?}@6?&qQPk zPyx=Us_nbzzf4v8e!ywq1n@Xu`usP5+-|@5pL6p-)aNyS03QRRA|m}Zy8R|6CMHU` zTy8W70<&iI>VH>u&HuXj(1@J3Fte!40!82vU@dS7xW%8h2v1B*l;Sv^j-qJT_kEHq zdj`imxl(M-5m*Hryo2mOgW)3`idRw$V0$kKfR3tWrZ*uXV#?+6a2&_e?RI-S3`1Pk zB}o!~cYRY=m}VSz7}J^EHDYY>-2)N2`GhOm=D7+SRRjU zZp&^lu^IE=g*-R{Rv`mYg?n6v7L|pWl!L%-pk`F{G_VaQkByD(kD{9)aDY2Cl{I0& z&Io+djepczi*T&nV@_bZPgFAe2F$6dx&W%00_mH1XD;^K#>IgZzT`Z8c!kmNQo%{< z1+&nuVZ4A`yT!!>4m4mcgNJh63wVON#bf({Hj^SUe-jmA?S#1>i#KPRxtKqwfxMDB1!!~kytTTf@ORbi70D;?P6DvfF# zRmc>=Vv%_Z%|;F13+OakOtoQ89kvJXr~|;~z=uxH3+I3z5;$BoZ1x0y#B>9bsdBZG z;D6H<52A=`nbL?8a9rFpWzj;}g^tobns5yG(p6OzkyF4KfYg$23m-@?PxrOqyTtO2 zt+QUivk(@FT*;tbuTcmBUa~D>h4UE|U=C2zqe4|RQ`PKn%4Zcz*0S9s*xxg+ro*2S%2UZU~i^Eqy&8Br|8pew*ZU@Z1lQrs3n$@ z^EEbhEUT8>yjiQ+bK=dM$vWQx->d2kVG#*|Y2e(q4eYbI66C zGCc(By`IYd>fEm9EjefiSOAU#?*mOB>_va3H)gs_sBZ^ZW({B`a363I_>&tQLzfF) bw|@X}&ij*F3R_|T0000j-n6ZQHhO+h(*c+Ia0~ZQGV2 ztZge?p||RKE@zT|+Fw@}ptZ)9*@v-f{wWOYF$QTrA;iM|U54eh%{hkcbB|-^yptHv zW%!apRG!PsI`EEp$1#1_LUgV4M$ZoY(W}D%bSd{h;6^R6uYc{|dH6lkhb%gOc+c^- z_3JqFrb@2kYfHv&=$inuw#_+8H=n2zTd{G*0n8n>68$<4Md)T>n=V}2hat_&ELUki zvNZ_fWTfs;>hi|gsk^%*z|Cpv>?3uTv8y&r--i{GwqotnU5M<$iwwNxo^!gkEymg3 zC-^cWiX^Uy�lNh#45n5|?V512P< z<+JVbomv92ekPSk{Iw3=HuorH#QrVAdyV_uvE0_6tbdnCXamg9V^}|Z@4g=G`tqSP zy0SSi`>{^jW*_BtJQc{_DWTd>=6utzP^)IaoU@Y#&3Pp)luGy`%58haq;05G9hhsK z3xTz1=D|t%u#`B=IZKvkDOF-#NkfnBJNdFb3(sOV6%bb{s}8(;;uiAhKJ29plmQn2 zNP?x*zJC+wTv*hqLAu$dqi2s;c9`Qbyw`YiEOteQVwZX_Sp?4xFlF$3jP5(-spg(6 zAhc)u+O@p8Igc(I(R2J(atE3XUhU^78=VSW-)z~Zf&*1Ij{KZ1dbzarceLaC$_RJ0L$+@S z%S?dVBTzB2y<=p~l~wi~4v=GcoDD64d5wb^2l4OiRpBl=JEwracVO0o%WxDebR``k zs~-vAe9LftD$92xQdp(Hi>fT;lynT|??AYpx0CtH=n%??-+QL_i)Z@3`iB2gV0hnz%6~U2f+xy|F03H4kM>VyKig1}S&85Y zQbazYjZqO%2in-1`oqb8lgbFDvtk5OV;aYZM$_7W62h(}M1>-J$ApwsoEq@||99@V T*2YV000000NkvXXu0mjf6x+uZ delta 1012 zcmV_epmyeeEKxx`q zicktttfHWG(;~QVBM4o%ap6it5fo8(3jPBwDy{^v6sgs=YLiBiV5X0xc}^ZPbMM@H z&-uBSWSpdF%@5Ave9!NE_@49oo#Ux0qra4SX3r6vv)n1)W`8{)A}1d0ePZgwfm6|w zyAJZyu0zz5=%iD-y%tr5{pCcbmQBSiZ0p&L@A(KqoJ7nlPEiRL?gFdo%c#6jx-)!z zt~#?LjB07QI=%Do-eYF~n&8x?^mgy$p`JahzKG(G>4gbO6T{q^8YNEa7-LA1xH3HT z$C=Vx|4Y?{I)B-ALszi%QZ6Wj0H)Q2Q%7Qx=16Tq#?SEJ=3Wl(J;n=tr#NxoRZjN3 zPCiq7JPs|NeDf{``e6foi;uzh5F@XKEZe?IQi5r0PzM==14GZDEBh3{u8Q|HzJ zRs_NGe5pm1w+BjB-tRA6ZclBxR`U5M4o?q{4V3>EEaCzB*w}RG^Q$8lkB-mYyjSWh z@QSJ{t2Tstf*X~upB}hz<*R|x)oc`p_w#Tam~0i+1RLW~kHfbvUjONfk@3O%0hi;? z)q)QoNPklh1abDh1E8MNpY0#L+}E09#Nc^8)>)jh|Cum8J05uWht2Ihb#)fET)AcNTxEuAkf)e$ z=g#c#i?fSUD{Tn`en61PvQV4DF14HQ`E(SzhJT{C#$W&Z#$! z^qwPxadrRd<2vW4MO9RlzzYbMz@FzbGe5EL`_Khu7A9A2(iZz!Zv$Jqwq2s}*wz@L zzL#mvi-k_zobPOsnJpNT0TEHGps}dTdroc! zYOWb%2&5m}V43Q4igT&D23Vx=s5cU1^5k+Uy3vOMNSnhIKr>6ncOVv|E=bklsvwJs it){de2_10UVz*#)L&M0)HTMZJD4;i-ZL%KSQ9( zoiDCy4)BeOeb1A8AwX65HG%*<=kW#Uv;Xtes#?MCNJOfg2&G$2=vY@C_sWd$n*<8$ z>vDBBJ-xKlS!1eSU!JElW>gHq4{(~LOxLp6wBv_p0QKoY&Ki?+BC^O?*CiT>ASgd% zmL5<4F3q^~{eKaxafA3iijc|{jEF3DzH{{un5b_=Rrx;cvJW%3{{YIn{fBAGcjNk? zAA$Jams~ zZk-b&i;Sp=`9h&6d`2ltzD;HNb-G4hqx0w;P)(u%B!5~BV0`zNDgEG7)|!6Q#QKqm zv;@Fe!3bikEOCjb-vF41FW92cKK(RZHeN{Mwta{$BsOI-!_bn#Awo~ zFK84E9O5iu1Pv4lMS^TTEE!(D<60Is`#&a8g>M6lsPU{Uca2JHDj%pdn#DuGKyK>k zJaX+;%-SMHNwZd%Ac}Y%VgwY5>1y(u7V`Ri&wsM8^#4fv33%i%DhTSDmbpg5TKTsw_5P2(n6Hb1_UsAxu~8 zifyk+9l_V+GN}&>`P>T*2*S>@VR?zK8Cy{~)rg=0EPOf5>krp&T=r&q;ec6XLkCVR zGYJa`Lp)Vqb0goB2h{PI;-}?n5|-sFK0MIkJCAL8A)6|mAJ@Wl$G=lwxTc%m=8;!Y ldo<}*vPHUDmH`>Q$HxL?c&;BX>zM!m002ovPDHLkV1l*-)Xe|@ literal 1561 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3_ZT?HxcLaH_|eEsju(R26yv&3zGS+KJ@GF$Bfm&D$`s&%$?mWCdA z7j8%_?agC}JC|Sg^xaH`x|G1sK+%wOS>jusX3n2i-mrVB@UpZ&KQ8agRQ_ClAW^`> z*3WQq^us$Geu^IszSt_Zci-}aG~vANGUNYUB6~P`{nyU3zA}e<)|YR5*2iQE>QfGAk4NDDT`m+7DzHoiAqI{pNuDRqhePCYl&PSSjmuJdr=xmpvspADOD9ZlHQ z?RBNhl+Q1~@yf}<`R7~08G4-#sves2N$-|^-Ki&$-6wpbJ?f6F&JanAVKY3_a`L;) zxx<_F0&HqK9$udPN_-xp<(C?)GTb0`;voEXLDSm0wZ!NWZ;# zP0uEundSNsY~HqyWEV9pWh-=wT01#R`_1n}?c-6`7ycA;n!YGW%Hrkc$x<;Z=gkUU zEtIezAo{bS^)@@-@4uvY*BW0iX=Y(u#Kh*g)1h|3^m)0vU*^WNpNaH!;5BtLu-|%f zdhO3QjX@^48%4TIAF1pW+cV+Ls_QRq|L6NW{ro{wj#-RLT%x2^b{e@9sXleu*?aK! z{Dve^fjz==x?+CRrXPHN!SKDUSBa@4tFgYpMO?s@(PLmv+S6mc5>B-)|aWn)pac^kC47 zyWz{ye}6bSnf=sW?_IN}-QT{<^E2NkuXQFiKi-zIMzH5RvGv>WZutr8Uw*P1pL{si zxc6$%r^0iO)|<)6^=&U{DSvY#zN*s8{qV0MM?a>iALljhXJksPSU2a5?rdOIS1oak zC`m3#O)N>(O#u=NMg|6!x`u|jhNdBg=2iyARt6@z20(_v^;M6~!!&?YT0wLHH5eM` z8W`ysnuQozS{a*Ifw*7|zPxTI8glbfGSe!d8h|z!h8S2{8JSv{SVA;RYq=^3)Q}Ex zl22xGYF=?FLqFVdQ&MBb@0Ab;eod5s; diff --git a/launcher/resources/multimc/22x22/checkupdate.png b/launcher/resources/multimc/22x22/checkupdate.png index badb200cfa3e5169953420d1395b5b14cb9a188d..a44d47fe058abd3dad0b8e70edf81ba0d0bcc5c1 100644 GIT binary patch delta 1137 zcmV-%1djXT4221hBYy-;Nkl2-4RzI28WrXT?Hl7!oal_wKmk$>wj)t@J3K$k z19{)AzZa7~SHxSOFh~(a;kqb_vq4F!9~x>as5ru18xhveVflI`D&tI$>u?zo!vhNtWnB!3$0gYMNK(7!z%c^=P^ZFLe! z+8h2ZF7bbleD^0vwts+V%lin>zXp@%DU5vyMv1Kz>*;2i0NR|os!>A{iUK3jxGYEz)$d=yU6ZxEQKK_N5E z?kJ4GEq~RqOMZLD`JT^_VX_aIru&d(b`ZIaHxcY~4bOGw!8ztNyi<6vj=l!7h_e(j zGa21I)|pk!%6}3Uc)dir(QZlxktdn%$7A&=u#bEOhu8(H-f~?rFjB$}dua z5PubWzoV}rNoyUs^R+m`847*h3s806jne8&{N~Ud>Corh>irW!7QL*nwq#A6ar08#hlKf2E zRGAJ%r(Jk!v51mc6vle#%;pNDb6sV6{eSLPeI9%(?#|gG)STz>g533c6!^YJKDqmJ z^83h}!FXx70v|0`yw@}YwmSfMxEchV=+Q6!YIN-!fIr~ z6v9-(wDIdDPOrM#sr10xK@FFcCgPsfEDAF-+3I_pikDn!znXEe;&0_51POu^LHb8V zt(5G&_;UMaD{go6U3#m16$3LbxzhgW^aJg?vQmamJ`3L%&(F#;00000NkvXXu0mjf Dyf;5a literal 1635 zcmZ`(dpOg39R5kR8I^3|AzfSwW!rC3nwZUG%7!J;k=V>EmuNgPK(=DuV_9F>3%o zd<+0)AWA$60Q+$OFdhg1gtGvk&zIcx+5!nM=5|*KgwXlsTptgCCZFmjgra-rOO0%i ze`uaOz$bAa{J99w-#q3E?NH%HA$i-$bF%%yvv(RCKQHWPZ12LCX`zuA&pyL#UT9AQ zrP#7?Xo2QQGMT#J(Zfp3H5h%}Vt@WK#HR5iHZJko#E=y$%s z)M{0>eb{t;eL?w&-6Owe)WuKezEoW5ylosjVFj9__a(e-UTK{(Wk1+otweHzZVAde zV;`l9xFNkOjR%iR$wFhtSg3y820=+?6>8i?o=oHvhsG7pV0hz_9OjW9%Rlr*U@tAm z0vLY59xDpjP1~;c8c2mRUq9?s^HAve?_??Fxr3Idw2dRU`}~ z11sVuT&==Bu*_m}r*8XMm?JRK(zt!}_7vvENNel1tp zm~#F=M3dFU=Iz}@6zcQ~ya=7#S8mcGQ7eF#crk+NL6bdB2)E%;I`bAQP1V<~_@Z1I zuq;w$D3{Fz|FQYC1az0l z!Q7j+cIVbR1K;l|nm#7QpY%>7hoW>U8t&!}=qrVtrSO|`3YRTe25_e}2c?Qx45lq? z=zV9ob$`Po|FL;OZ+Jl8KDIQTjcQI{A)r_0&D?Uwz1LuX$TXKN(F9sB=oo*eTXQST1Ee-DNdI5Jb)D2fE^4^3C}sUBa{sJ=N>-XLRy^Q687n^osa5x z8^K4?Gpy9{MIT+h`$TVZJ1p~67ULKt@1&KSHN+%dzs#MBa{%NVUQxA7LtJ|l{!J!S z2c&zpVtPG7+nVG)h!<&Utr9SprnJlCX@K1W5hk5Q=5PE zTI!LHc@15p44AIEXV8SI(}Ovufg5&On#O|dgFoi9 z`$$zZ1C|b%TKKAfJ$b^`?T*5rqd}B1vpY%FACQGoySWnY*kvL25`c%tsY=&gK z<9pfAm_t5ni9by1o|=^yJ(RI{hkx~OSoMLF*t1aK3FB>N6q_p@b*Ws*nlhDgXUuG%nRp52``+Zyn^bApAOpoxmCeCy+TQ0?PoGCD_9-pzpd*FRl+gvVYb2I~YJ2``-6x+ZKDA zd+*Pd^V+z@@6J^PLcpJ#3z$*o38?F4I~TCtK%Db;_Erc~+JxFVY!w>YxwesgDz>3| zfP!Uxw)9v)zN;#-U<&1~bGY{kR-hRRN|^T^&N+6QF!S5 zR5#`GcdFmb%s=KNq*TOz!0w-3(IoSKNw?1YPK}%wm9416@F82Q(c+|Z_1QbGzs_T- z5EgD*wMev#UAj<^(UT$Kd~S2Vl6A9h6deA0FV@0SK}n;FY4YdK=bV=82XXvl2_iyIUwqz5||IL+BQD0_uKQ=1Mth;P7<$-bk&RZ`- ze=JfIH$1-ZtH?wS!}mh(OJua)2=$tJY*RhrQtMOVC+>Pt_1WwV*A7K-hxQuZ`^Np- zauruHr=p`j~685^Vz)&E)&BD(ozPOrjgqnP;m{j3JXt@b=@&C_!)CT*;+n14S0 z=bc+>*PPFLA~-1Idx=dq5`j=j4N zU%k3r-rfEDJQ3HAAGcS{PY$lwfB(IF+1z7M-KS5l&+lDn-}9jLfVIp&Hn%V;WI3huCmz_c~D8 zOb0p1Co?%UuQ-(=0i`}Mu~s?$I%44$rjF6*2UngA%RdszSg diff --git a/launcher/resources/multimc/22x22/help.png b/launcher/resources/multimc/22x22/help.png index da79b3e3f3b103361a80031815eec14cd069465f..a6ba7c65ef548a3da984c824cd2672486925abe9 100644 GIT binary patch delta 1198 zcmV;f1X26P4Z#VJBYy;lNklJH1vPea_=`i9NxssFZZ!ZqC{(qS5Y5c%4isyI-4*;&H zOx5kEp1$ng@#(7;NvUayE0qz$6Ob)A@LU(vE`Ve^?NZyHjhUvuUdZ$|zQq^@Zgfv? zg+{B#ADOUp*AuCw2j{ZHbjczLu{{cp5%`W_x&#hY;A$zVrlurRU0cqK3@K#>&jKji z2`raKQ=29(-+%pdbkY8arW_}Z$Kd+%8~o-!Ggxl$CLE|OM2J*XuW5=r$IbSQ82Ql) z0L+`fl+wxL=B;}yz3lK}OGyd=FsP_5VPEd|ZV<2y%u4$7MW8kBCsCX*J^J z$CrjX|8gv&C-86;ti|i69H?Kq`=3I3j$*l?yJUroe}Am1!_N6>%&IHL;t7>lH8tkL zf!3iSEXU&=QAvfaMyl-5j(mQ&=MMm-tKeA8^dSr-EMuG@< z2n-m?S%3K8ct0%H<3kTbeaIubC-Yc-7e+bMZ(ye^xMempi62w3N8c+y9q%x%{<VJz|6O|M}5ap_XDS*RVmw65gv&D6J z+;w0EtEWb>*9U)neh4r9(uJ{-6U4%GH4ehKH3tDXcx4;KVY`?s3e4l~LS1p~OQr(m zHdLUwzlgX0?8QjI2EFDKTp}f4R^E1uVm|;!48XymVvO{5l{ zX=#mTeKlLcp98P}YK^g6U-P+AA=eUu!^&rRTRzUU9_yhlU-;am59KRDq5|rwRMbWl zL_{Hs;F@C~LOql^Pvu6tE`JDM_{J^mS${?`1J{mf(dtExo)#@PbOaEXwu=kBdA>nL zi#7*}TmlqHfRt@_yZ`#&i=NBJp95n<09XhP%kWRA4iV0zifC#Q(c{$dIGpF5DLE*Z z4$oAi1QHFQO0mc5JNm)N&Qm`=X*YdM^I?Oevq?2hRgsO}r{ZS(#Lxs9mmBRWFj%vNRC{ z(X&cJrOd$D+(6f#Mlp9Dz}VH{KPM>o>IRa1DZU~I%MORk<>4;%H@3%Mtk_^|OaK4? M07*qoM6N<$f*_bfng9R* literal 1735 zcmai!dr*^C8pgi}2Bia3AY6oP1Ld|va#LwYgpeyqxK|B!P^$r| zEzJOitVIQ(;j$0}GRT64wIHCZ1VuCmSQ`|Ot6W6-q2qM=$IhOabDo(q&+mQSch1cD zE+U+4X1d)J001+}KGH!@Z8r86D0tp!;1WQA9uFatKn2$_QF98Et-^hW#Q^Y`)y9SZ z#h2|iF4Kg8EKoo2z_8Xp1pwn33Mnue*PT~L5jX}}OWP_ZrVORp#f&0MBXN-wVCh0U zXYJzh`8n6UkoG(We<0;~e!%6XuigWrfSlw=HQ(n$dJLCZo<_Ih!aMVQ=~+LOmeMCu z?EYiAEvF$m`Nq}v6WKNT>}yNYTYP=@7ZT(b+cK+kDH+L>k#kG*C&?l?wlS} zW{rJ!M|r;)22{Gr$=ACaOK;SQcLX4U2)%bj5bGEpy)+X*e&~u2{tP0PBV|qxfdm4 z!R7TjoW=Z8-rXZ647x2;Tu91!B|_jCWb$6yvFd(lNqIL3i+a!)4ys)BD~ z>TBER&f%h;yjMN0p-pAbAAd$4`Rv{PRFe^$G|ee4+*x?CEsjn--db|JF)R=vl$e>P4(5+buO#ydJoAd~nUBQ4Uo$1E_B4cJnXm_#Ae(8vF+4nQ!C$$I4jZis zNSl^eZF?-!$xjZf34cDgVBZJG4!Au3K}PU%P4T}dm>!N{R{P(V{CD$fCXuYU z9iQt3U&NNMdXidah})4oe5;xk>Hgy1?Z$59SFO%xdL*u8^(zSC`jq8YeGY9$mzoB* z_8GOBG#3MB9Q*W9_DZ~sEVQ>Ju(`S+joZ&z>?lM`7M9qKR;(dvGu_{rY}T{k7H@Jo zbo3UO=-vtBL1`PrX)5k!@o&!Gg8$gxBtcXOQNZId`4WIAV#Z6D3Gj5bBncj!#DtS6 zVG+{_u6)qwx?yB|FnA?^E&z*0`*>k6UYM_=v1mNn8^3$E7y4^F8h!Y>r{)u|;lzKW zKmddGLW2M%8nX+J1p(|w!0wn)*IxjhAc38j`M&|SuOKO;eHj}(A_-9})PAXUU* z0u;VP#Ac;3;S`2|507F>s@<>ngP!0&J#mK)hJNZx%;pKXOg5h{NQ;-S1$-o*DM7LM s3Cs+nFiGeyjAt=@u~;|phvL3iH+F(AwlHwH6RZeOg2GAFdyk#|1FZV+jQ{`u diff --git a/launcher/resources/multimc/22x22/instance-settings.png b/launcher/resources/multimc/22x22/instance-settings.png index daf56aad3dff7b7dfe8232f5e9e58c4d4ed9e078..cff081eda92f5bd8282b4a95c82ebdabe73e31f3 100644 GIT binary patch delta 1413 zcmV;01$z3d50?v&BYy>6Nkl^Y}>YNJlnQy z8+Bh(hK;$W7@O<+*0%RA2_g7@ptiNO^QYwVd2BXwV^dSp(cDbmRgDGNY-)C4Rn_=Ygb>8z zu}5DW^3u}WfPYjtM7FF7=IP)v!ES)6fDn*Q!`uW<4|-X<+$z|=fBy$=yz%<}SS&gq z%d*0ss;WB4WMZJVdmvm_w}6@&19TZ&#+0@x9pEm2!YQ2vIOe5!-N7Q-+Ly3n=aGY^ zX?p{JT3_GHUy?{9yx!r_ewW+TUSIB{w?7W56LcLcJAW8DBs1Xkv9%(=;msR(;`uR7 zJ@scjKA-O~0JXRGmA|oYe8lS=>a|;Xdu^=?o(RK`0g*HWBOvP#iE*HMjN_dW@B93j zl+4kwOluIBSy;|wGW?~vT#l)odlK<9EzJesQoyDo88WCUmJ;DpYl0kWiSo7UM>y?? zDr!16vwvgr=2D;#KyGSXO4BKwG&QwO**0Tq>ta%=%*)CiR|4-T1un=j^rBFK14nwI)%BEbNSQ#V}Uc9GAdgg@AwdinYB_}ydU zkvs3Ytt%Q04+5w;Aa&d2#2>tcWG2mmgKt2t@>I4hY&p_@+4(fJcd)`xx%}pvcrvvX z?|;BxaNvRq?i?KK>rbasLyD>m2mBMEWHJ^2yubtiA4KBgGda8yi4Otquk{?f_#+?B zKJ~RPis93KDPA~!NL;MR;+w}$iuZi^{!7Tzxnl*t{poLN%Q6vQB+ih zqG(8xjLM&oLC7xCc5PpTQH4J;jLW#L!K4Y~ANbhm)W0=vcA6 zsHEaGiA1bq?V8Pxkr$`O5{bJ)p}R#kE08{jgoYpv74@FF?;iT{7mt?JR7(?g-p2Ta z=kdV680imxk@~e8QH8)=ScKhKNIEZ(6*}3xLM#%-|7ut6fxEA}>fCdG_32=6qJK;J z01_ZtS8d;P&faf+qeGqyF@EJG#BRTZCwwvd@BRWy4<4s%o)gPuk;y?aJ!J~w@g%9_ zblhiANwdJEalr-WJpTF5fBdKl!n66n?o0Q4`y( zw7fuyMU~-r1XWY8JMDmAG8878&3~cm1+jfF&4 zSD(1;w!89Q|N8g*>(*_4&@jx;099PuQuC7d`Uga2|1!~4V;3KF+roB5`+hM{#~*Q9 zmSgYg)tk=#;SYZ~`jemhD)jcZzxU;J>$cokTibZ1&1QWV*bUSG3IHo)UVlZgEqF$e zkyvMFkI2aH0p{`tB>n^qSoFI^I)PHa!QVmx#e`KF(g~miQ2uhnpCU;L{|dha$qHk$ Ta0H}i00000NkvXXu0mjfR8-6~ literal 1964 zcmai#XH?Tk7smfosV-8a8d2#ADbfrzfe@NOL&6KYtO_BpkdOc=7+M4c5ftRGbXkf5 zQf(2XNTdj45fM?4Y5|N(69g9t0vlvK?|DDHbI!fbnVI{W=gyazOD8aBc^M5E0087& zoE@=3-Mbx9lEU1C+LUsNg zPCSzB_98P35hT>_=K*6+{_+L@i5o7C2%Kfl{VX3c?xIQ(x2ew-)M=FqecdWaCVPq1 z9(SlwHj-+^7@U03?C6ZgO5DfdrVm`vz^CN5;Km(OXG{}0uF~D1#Ru(uN_A3{kg~fA zEUeGl)Y%ZyyM~U^f)>W2*X=dbb+JWJH@2po`2!ix*ekMWlZ#shB@L|JSozWV@P@Hb zO-;>JyqDL*7~7&LW|K<#==GcVZeA+KPb%ZRaCpxEpDY!;l6a(xN8h{2M~~2_#Z!R0 zp|Y#-^6ff`!Pbi-B)d0u6@6i|PI6ij_fB*i@y;zz%(#>5W|doRKheGTB`su-!?7M2 zjpponD6L(A<*h$nYi?ax!M!wHzGfGl$d6kzj9}Q*qdUSI!b~Ls_9%RsH_!NRQ2^2iX4veWh0av$eZ*^*L&13gAb8L4Su#OiC`7qCPyl;ao?_E1r1EZIjBQlkd5q}E^((ml*a%u+MC$4=4d|lde zC8I>J@MNQp>VFSn?y_qiubzr3tU?)q9_UMsi4~Nu>E0&#=w$NV`PSPH%xGWZCAguU zJ8JoK9{Ong=8tkS%RUcGS;OAc=gVy&qE)}fZhm{?V2`AbC&aU*nR^sk79(t_6QFec z;NY~k;Guq-Q(EbritK#V!5h5Z4%Pyvn=>M*LVNnG%o}@;ey8*y>G)9#ZOwKI1-CY- z3E=f0dn@VErLWJYUeZl;3Kp<_a)pZKSQ9LHtz|#+|@aD^i#_dg#HtpXMDNf=arXohrMcv zZZ5#+Q>%f>l5g{~p2KdLo`S?wz9gSN00rJ@7fbB*V{NDf#(%D>*mFqUZFFSl4^ZrS zZ&pEwYvqf8G;VaZRqejZXhP-3!V=j#uM7K;2ki8Ct}%gdC`m0({fw3~P|i^oF)V7o z=Hb~LXb>l`UB3PRWK^*@o{hcbeag#q=0)^JeGfmJ*NK}|985D~3e8~1bLZy9mU&9+ zMVB=j$*Zc3tsQ&BDD!#y3V%60d^_~IBMdQj1ytv|sj5V=%byA4 zw@1e$a+a{9+3bBPc(cQ_26sFQyrm+EeLVg>npb1K+10FC z2QmkW-me?_`if3VuUOTQZFkxK@!aRrz#w%^rd!{QoJ^9R<%C%#R~aQI z*y|M#C?+UV4TeBqQt|BCF`LDH^#10|KK_LAMDWi{(vVVp9B8)fIFDxu{wHUf2RCBrPh%;xj<5nqjQ_%jVK(%4STeyPQk^1Bq zzGKOz?wW{cnNKmHSQ zubi`G+LNuSEkJE6oT4s=Y!g1-x^$E`oe)9vqZ5q-gb9E_AjgcMP-CbW4r&gESi((V z#t;iQ1ft@!9{U5>u7vMULI4UehQN$r5FG3%9A*xOL3eDfY1So zgB*iHg%1A$yhvuB5HQm`^V5SXc`#%O;P#DKLLApigX diff --git a/launcher/resources/multimc/22x22/new.png b/launcher/resources/multimc/22x22/new.png index c707fbbfb7946c535f738d6825916ff64e4af65e..d132ec1fcaafd204168a40218351debaf2955ff3 100644 GIT binary patch delta 885 zcmV-*1B(2h3yTMkBYy)@Nklw720Pu@Q>eem8_zWmy2dcA(2PpslNasR~BZA$1<^~(K*dPkJyQSyZ9z#qWc^oQ4HrjK1xmi1m@5AG!{Zs4bSXdqce zgnqv-GqrU~SbrAL0E-26y;C@#K6H+`*RP8h<&GHZkH7sRMX_;HM2-=#y1M+P3ww~6 zpovmy!E#N+f-;VYBi{uzreAYy3#Ivi(@x(xH?+ySHFfkQum25B<5?{@YfxuRLZVW{ zlHT#}8h^!khKJv;D28C$}2?o_Y)#5#`{bmE-L4Q2AfUFbPwjt3MHq_7AVQuHf zL=+xN4YW7>{gW~{J*QOAM+v;Gi>v35W2mvvI7YK_oR~0Y#kp>1v zUi>BzeG7L#8;rmF2M*k~&$FI+d=GJ9lOP+tt`$WTLZ~w1Mu1Zh|O^ZLo*{5zmt*h<|ZnT3R4iQK6^tUs1lq&ON2~zyD8H z0(28ZL?I%!DUfnMam>1>Xnt%tIt0BoPXe1ID|Sdg6Ct%(^Fpy-Gm1K%_Y3Nx!+>000000 LNkvXXu0mjfWof?d literal 1440 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 delta 1153 zcmV-{1b+LZ2bBqsBYyw{b3#c}2nYxWd|A!vxI4SK3Wdj})U}J)c9VKxAYJHHmlp-)n|}%-C>`E{35HscX?C;R+(vWn&d!`UGw1sB!d;bSZNUc~cz8H`c+T(t@P8yB1d=34 zfB|Fyg$o-YFaxxN5MmC|o_ccQ`t>(o`?T--`h}>Prg=NR-1E${n_l}I@Z{NjMc1^- z(AvS3&yBurmwzu`WbfAx+m)*>vA4E%+GC|@d&Qb%_FnCfz3zrJb~GUD%(Aq-OWJ39 zivzn@DcD162UqHvR+;YQ~yV92!3Yz^oyi3!fRirp3dn?_#)i95ta}8Gm^Iyx6B;WU-7q`%nIaW#oxO zgq14bhOLfhItq2Yeg)&h(>yV7Kh-0n+}phY0;nDtG=GVLkT{NLw>^B%#}6Xv^(IZXP0ML749gO@%@&D70yC9DlBC%QvLunzb!1tl zyO6~y=4mt>G`;icckDQhOQY$cYAPrG8N)~=sn;Evu7@ncpGW_uP{`8ueZ01ZB*{!p z)>yiv|Nr4)caB^xgX^{^_m&Vskjr&prgWl6V1HS8GHH`o2y{&&Wh4pwVBr(Htu|&l zMM6oSDJqSoOWHJ;t53>E;`u%xVVVZDnFa~DBhgN{r>BGv5kd$646{HOgy_0TZN{N` zVw8L?OUWwGs5|(6K-=>dhPQwF8DnFUl={+SayozgI)#zexM}c4`tto)#R9o(7xjii zDt~3*havraB>)l$DFy`0b1Uj~hiz{jpgJ;vVn%%Y_CfZ2bre~V08mv0L5vWBrrRRh zmBDNKOiWCO+RUkAobGa+C(c_bZhx@C^mvQyZ~VfB`<9c*oo;xZ=i@jo^?DOcQyD&X zf=o)I$I>}@{M7H8U)s70@aKh7X^kk1*?;%N2!1=FS@*g7u~h(Qs*0wmlzU6;-t#@T z-f|tf;!v$tgH=P1-wBM1+2YLG)LkbaX(;3^gWBZT2BT>SWLd^_TgZ}xuC_TfH7+(j z`tlvXun;0VZ}9-EvdL`^ROr7r%hw+bpUuC~q&CyQ>dvDoG1F5g+4SPJhj#AzZhAN1 zoomd&LRAwXK&7~v%Sx-ye6akUYXDf(Rirzcr`%h@aa>kh+81qpWyd2gYDiS;9LKE>KK$hQSKs<{$9yP&bb*g)0Mr0)J`~_z#<;gy ThJLTO00000NkvXXu0mjf!*(+` diff --git a/launcher/resources/multimc/22x22/patreon.png b/launcher/resources/multimc/22x22/patreon.png index f2c2076c0b094b5b0229759f7873a8de0a9bd10f..8da8780ec259ca9b214c39a8038419e97d14a32e 100644 GIT binary patch delta 306 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 FV1oP6mGb}q literal 1320 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 Ta0H}i00000NkvXXu0mjfR8-6~ literal 1964 zcmai#XH?Tk7smfosV-8a8d2#ADbfrzfe@NOL&6KYtO_BpkdOc=7+M4c5ftRGbXkf5 zQf(2XNTdj45fM?4Y5|N(69g9t0vlvK?|DDHbI!fbnVI{W=gyazOD8aBc^M5E0087& zoE@=3-Mbx9lEU1C+LUsNg zPCSzB_98P35hT>_=K*6+{_+L@i5o7C2%Kfl{VX3c?xIQ(x2ew-)M=FqecdWaCVPq1 z9(SlwHj-+^7@U03?C6ZgO5DfdrVm`vz^CN5;Km(OXG{}0uF~D1#Ru(uN_A3{kg~fA zEUeGl)Y%ZyyM~U^f)>W2*X=dbb+JWJH@2po`2!ix*ekMWlZ#shB@L|JSozWV@P@Hb zO-;>JyqDL*7~7&LW|K<#==GcVZeA+KPb%ZRaCpxEpDY!;l6a(xN8h{2M~~2_#Z!R0 zp|Y#-^6ff`!Pbi-B)d0u6@6i|PI6ij_fB*i@y;zz%(#>5W|doRKheGTB`su-!?7M2 zjpponD6L(A<*h$nYi?ax!M!wHzGfGl$d6kzj9}Q*qdUSI!b~Ls_9%RsH_!NRQ2^2iX4veWh0av$eZ*^*L&13gAb8L4Su#OiC`7qCPyl;ao?_E1r1EZIjBQlkd5q}E^((ml*a%u+MC$4=4d|lde zC8I>J@MNQp>VFSn?y_qiubzr3tU?)q9_UMsi4~Nu>E0&#=w$NV`PSPH%xGWZCAguU zJ8JoK9{Ong=8tkS%RUcGS;OAc=gVy&qE)}fZhm{?V2`AbC&aU*nR^sk79(t_6QFec z;NY~k;Guq-Q(EbritK#V!5h5Z4%Pyvn=>M*LVNnG%o}@;ey8*y>G)9#ZOwKI1-CY- z3E=f0dn@VErLWJYUeZl;3Kp<_a)pZKSQ9LHtz|#+|@aD^i#_dg#HtpXMDNf=arXohrMcv zZZ5#+Q>%f>l5g{~p2KdLo`S?wz9gSN00rJ@7fbB*V{NDf#(%D>*mFqUZFFSl4^ZrS zZ&pEwYvqf8G;VaZRqejZXhP-3!V=j#uM7K;2ki8Ct}%gdC`m0({fw3~P|i^oF)V7o z=Hb~LXb>l`UB3PRWK^*@o{hcbeag#q=0)^JeGfmJ*NK}|985D~3e8~1bLZy9mU&9+ zMVB=j$*Zc3tsQ&BDD!#y3V%60d^_~IBMdQj1ytv|sj5V=%byA4 zw@1e$a+a{9+3bBPc(cQ_26sFQyrm+EeLVg>npb1K+10FC z2QmkW-me?_`if3VuUOTQZFkxK@!aRrz#w%^rd!{QoJ^9R<%C%#R~aQI z*y|M#C?+UV4TeBqQt|BCF`LDH^#10|KK_LAMDWi{(vVVp9B8)fIFDxu{wHUf2RCBrPh%;xj<5nqjQ_%jVK(%4STeyPQk^1Bq zzGKOz?wW{cnNKmHSQ zubi`G+LNuSEkJE6oT4s=Y!g1-x^$E`oe)9vqZ5q-gb9E_AjgcMP-CbW4r&gESi((V z#t;iQ1ft@!9{U5>u7vMULI4UehQN$r5FG3%9A*xOL3eDfY1So zgB*iHg%1A$yhvuB5HQm`^V5SXc`#%O;P#DKLLApigX diff --git a/launcher/resources/multimc/22x22/status-bad.png b/launcher/resources/multimc/22x22/status-bad.png index 2707539e1995690d1c95e9b68cf1fe9ec232b9e1..9d001ccd2d855988fa95bfc4c9ec4e18f6d63437 100644 GIT binary patch delta 537 zcmV+!0_Oe52eAZ@BYy$-NklO1LTE2UH;hovt2q}(oP&Q|Hd2I=Q2SW0^V*=+j8Fs8Qp8pE?v z{)ALOo{qwKxCJ-h2&{v-FoQ9Z8C$RTvef;Gbm#){J$MJ7Yk%Q2?1!l^ftnH2)+jzg z$2sZiRidXsP#^bU4veMN@~l`)`4HmtJ`{a2QB+I*3TDDc98s*jQvLwVhhgwXn9;Uv z+T(U6cjmsB--XdItbEP2k)7Qx6|Q88r*-I%mM&bFMhqUDb~`J_ZD;QDm?+=wK3u(U zYOR#pMDR9D(|_N_g@6A1NyTEZOdh1p+~+YKTd^!JVI&O0sa4XP?V0u469oKK$ZO2@ zWY&8I48kaWcxleU7Tmn)6`MCw${|lLTj;nAhe0^yr*D*0*ni#v7i0?ztGFP(e!hky2yZvz zO1pMA48|27ArTy!=;<`!5pvCB7@B>AOi!u%0O_mO`(_l?!)=&kX^qcjkoS`g4Jf}s zFX|AwZ-1 b>PrAYpc2@q4`OR)00000NkvXXu0mjf7dHsN delta 947 zcmV;k15Es}1jq-FBYyw{b3#c}2nYxWdn+a z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H114T(hK~y-6t<_IxoJAPN z@y{e_Hm;j3Eh5p53I&r(Kx?DmF@h&?z38^22MakEQh#!;lokm_kk~FQ)YOxp zIp|H=Q$ex~Qb7<~irYhjvDP+g*v%#x5BtZrajO>}7~c1N=6$~N&hIzxOo%b+6cgDlkhv33w6L7|1Z(v%ydr zy@~1WtJRdsWz}j`CX;b$db$C}sp)B%Oh%V5PkeE}9@G{WU07araAZU# zlhNDTt5T_$7$5gSvFMP*vTDX3xJiFk9UK1t=pN=^iv3R~k}daJMzu6uTU(RKWE>nB zabbB`ZE?|_<_ueL70X=es#3b0=!m%70Xi{0ZhvBYT%}TJ8+x@+aM^=D(Ng15>RDsq zcdTl-3fEI9yK^~xeSHsT3KO)K+wNS>^;F8C=E_*r(0GG|@E+MsetMpP*Ah~kNvCa} zoOG*PZW|>b(e7N%y^|*$SzT=#_zkYHRAGOJF&YbDw2QCaz%vPWF_p5fR`asI-QR3V zb$>mTQmED1`5X8G>%4w8#`*T{b~uF3vgF@QNYc_SX-=p7D$e6RbDzfew#0{6<=9=y zXYq5Qa4U3c{szu9pyh6kwckl@^lyc*V;eJF VbOm<#vtIxJ002ovPDHLkV1gp=$gBVW diff --git a/launcher/resources/multimc/22x22/status-good.png b/launcher/resources/multimc/22x22/status-good.png index f55debc37aa1861f71ca3ee5a359e573030544fb..9ac765abe1b6278868e8da82205bad9536f0d3df 100644 GIT binary patch delta 701 zcmV;u0z&=b2h;_SBYy&$Nkl4!?hGUMc6d1HMMQqwry)|DXcBU zURR1y-QK&>{G8;>-dFs{c~xWzra6XYe3mBV_*D(0Rq)d&j|tC@+@rizPE zA5o}!2fYXC(SNT8jT%3Sa0P^?tdk*xMe0XPVJ43AmO2wfc;xFHw0{qJ^ZpI}{P~k6 zPM=7)Ciy;u#VYq&9RwUPx8a;&H$Qa`ZTqtGvPl`Gw0PEYIA7g{<_&*c>1r+nrS(Z8 zWXb%wh8C9SWJ>Qngo>^P3Ahp1 zYBVCN75oI$yKir*sjX=?e);;P1%AUl)DGULm*Q-gWHt{wXjKsH-oKlE{rc4opE7ld zXHe0hwy9XDZ^KTt)1uko9C`*7tq*Tqyv4jVR%(R%KF;8tLxr(WCCp)_Tzy!gedNt8 zh0fsap?{)d%vjKRK!^x(4Ee+m3IiO%XU&;KNyFVh#Vfs?t5{txp}A^0Rw^y&gBYyw{b3#c}2nYxWdn+a z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H117Ar*K~y-6mDNpXTvZgn z@&A2q-h4S9`LH;cCS?|(ASzQk!7>O^YU{@MbmO9o3x!Hnaetw-F5C#Zs2`hIXvC6& zPD&9Z8KYfjK@l9RNs9$VD%94bEkkNLotc=-cq$pyGqF z2^9sJ5?aROoquwnE3CfU)r)H8aNI2ZRfyNXbUk;(x&gn0;CBl&dFnDQ@82%}3s$Fg z^%B-UVYx%ZDiEl9gLg*Bf*(UrQwwNP9o*O`w~@nb4$*(}?ooh*h9_$fmLZhNbv_#a z>SV%3lcl!;#x`5`iUx26@C!V;28LwSSj+}cR#~ zADo5hPPDAmU^Un#~am z2dq0uQAdDDjl_unDO}+-nSCViUknK@`nb{eR z=8sZ)wSU$+v3r{UX#*{3!p;`-(8q@;OcbzZ>=y2BkB*-hXYtq~_}ck>Ef`+!z0RqS za1Nn}?0synT>ay!h=?rRToU^^TR4fN4yNS7#S7Aj>CdNS@aaL}ds?}jaUvkR6uWMc z2|kV`yBW}+;8yt-@yl^C`!YnMQ4Z`sz>N=XaDV)bL@rThW%kX+@p$BeR*4?3X1?Pj{@V3dm zdzNU*3#_XMgY84~z-Q0Qc1Hnz2*I*hV%2v{i3n;eW@D%so>+sOdSjsrflmV*t{&#> z(tlYNU+aQiv*7CxIP#2qR4r`WZb#yu5Roj;u0T+>;QUPMmo>b^b_)s-SW$WTu<|@x zmaeLCDzd<55m?w%mH|A}1zq&POaxZc0;U?@oCbhQ-7eEGQ&h-vCIsIGVNJCrl?S+{ z;JXlf6^6f59#f?}FZ#`)UX0lY6F`Ev3r0KI17O*JKTW6_0416-CX?0fPt%r(Y<~>P v$$&e8QfY*AyZU)V=E0al`-+nHeoX%cb|9PyB$~;p00000NkvXXu0mjfHJ;3d diff --git a/launcher/resources/multimc/22x22/status-running.png b/launcher/resources/multimc/22x22/status-running.png index 0dffba18fbca0ca7c102088e722569f23748419c..21caa06b89e54267cde0ee559ccf4acf42f4b99a 100644 GIT binary patch delta 679 zcmV;Y0$BaM2fhW6BYy&gNklZKY)%BCvld{? z3TdB>(Dr)>YjGpIks!Ab4(bUOeHRI_D7|k8Qi)ASeY4Pjw+a zal_F53~x3gx`S}B+vOGS*x{Gl49_KYZHAK6uiwM#o*=T3ox1y8-d{$`Hf|y8EgqwD z8zCW$x8%oN(0|CvMTo2>954)gk-=AP-=}jo?$YvI`?#oiboh~41}Cxezl#`L7K5m& zp##O>2QS`|P(x!A1xW{Jy5C*yBA+(+vYWvv4E`4dM3sDp+8`cif`xoOAEjny(`LUI znx^Jx!}k_3Jn_X@a%X*wjR^ z`;O9#fI9=b=XkRKo59gE<5>GtgH1qORv8XAO>tNJD`9Z@H|!~!y20C5C>(zU;!~oK zkS@|Q`RT?C4v3h?5rC4ikl{WYshfO24%di)_@Mk*h)%`-dk8sI#B$=1K5r#RA{>eL z(W|(B^MAR+O;9trIj-^lgf8UmcqZP_(0`Fr9DMRG-NFC> N002ovPDHLkV1m(SPo4k( delta 936 zcmV;Z16TaM1-%E5BYyw{b3#c}2nYxWdn+a z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H113F1WK~y-6os~~)R86Bg1KYBZ+N=uV9W7Jt&ThD=Oru$suiL=$5~ z(I67z0wmOh2{kT^M3J@;i8j!teM4IybcX44-n;j@c$ivehK_v8_rCA<&b{~C^MrEh z@R~5D4WqZB^j(Nvh8Vz1A;A!$zsHy(?Avg@R9uRl?3!AM(2MA&5bd%k0@W@!3dDl( zA)kYM1_%N~AAg3~J@mAUl?U&>ydA4P#WBlR5{0GJA+VIRhN}~hnFQ-kLGT>i4<0WD z?@n(8_gkWFjAR^QPT5_WCw~?${sqA`AA%?7ZaFar?(mujWB@l3r)e>`3akMsQ*BZ8 z0eHVdkjvuQyGcECK1>F|J17$;nFyf(lf$h0x*gJgEPo7kT)1@&h!aOkZ&>l`!*_r> zOWk5vUOQ)=_>+%T{Y*g{KKS7RgZI7)vG|QYaAg#x$H3~f3iOkRg(WpbzIaW7m!5x? zzU~)z?c)2?{rUx1TOM5704P9O6=ELamT39Y2O1mdc`vnxz89O>dAbW{>`ZB+av_!g zk!=d4SASC-z3~zO5#jy~>pA%DUOu^Vn2r5!K=x9xF}4UGsle3ZR@hoVRaF)3ZLJ)8 z`xQE`9iaZV&*yKC69s5ch_+Z$F}Olm7cptHzoybeKA-2v(G%=Hc8Xs%?t=A8=NohZ zu$~KggxTzZU~4U>PM@LoaL8U17BW(< z%=7I(bexyR?qjf}b75#92iY`O`z5JI&V_60`tddt1Gv>S)Hj0@`F}&m_}~peFq6SC z&3~jejfBabhc6&@2Rb)PdI0=f<+N3OIHrsZAsB-$B2(|8bCmh_jrUMo6p- zuW2c1AEw74lLo6N5ozbmmcD;p7awnDe*+QOhvgZN2vxNZO@NAA2NuGX%1;B+VkjWsrcV+MnAf diff --git a/launcher/resources/multimc/22x22/status-yellow.png b/launcher/resources/multimc/22x22/status-yellow.png index 481eb7f3fae0a1271548db2640463859136b328c..e125cf098a94f0bdbc0fd262900e4ad7eebbde49 100644 GIT binary patch delta 568 zcmV-80>}NM2G9hMBYy%HNklX1wimGuB-flSXZp9AGf*tal6>BpVtW8=VD<)`0^mxZM zvHYWcx$Q!pkh0+fZF)evWuU_v(1Fle324><5^x$ZK^f8`FMl!k4_+R5A?WEdIVk*FFKaR1^at%VyRGF`yV6ypkQw*VxN2eVKb;p2MxI3*Gul9P5Gej zUp~?AAK#J@+p^Cce8#JWL&mrXYrEC=VCP>@Wkm@k`Cwc2xdX3Pg1WR=!>AE!JGlUl z7$GnD9*5%F=cGfywvR$FeH)4a5$Jzb{xUlnx=mh>n153JdQhM{JLT4WQ*LU5h>lU_ ze3^r1WdYXSGzbx)U9@43Xvc$w^r7tAEf~ytG=w^Jkot}3g@k=>@G; zu=xG;4KX{lsuZ@3#)!L2xopJkHA1pDWR1n|)$a=8FVp|3iT--fnxn1&0000 delta 781 zcmV+o1M>XP1fvF!BYyw{b3#c}2nYxWdn+a z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10-#AmK~y-6t(7}WQ&AXz zzjJ$gd9)P^5`$vmWI}C14A|Td1{m=<7&ayr;)Y4r#t>E#nSV?ioWuc{j1N{49d4SC z2tlGI7oqst)n^IjM=6OWVHl9ujaOnaF zh?*ub)fMP|-~R7Q39fgt;4nS~gaFMCRetb5S6zu7sM(iJO~dG`E`q^OS<+l?gTdQV zbhYis1GP|CM^`-$U8~v;T+6_~{XuTryjzy|?VFdZ%}(vD1GSLOqAQNvsi^;rD#6I- zxmVmcUw;pe9*^?;+0(KF8yg!uxU;{`6Mlx=u4YeX0~#vnT2!~%Tefy z^h!$s=E+iI~D|-^#hOa9CBszC{^ImuBSbt$;+h+2^C&>Im=9w(aeg?~7QeR=D zxPPS4ziT3{2!+in))__THvNOLI72)*i z43R%Uk-;&Oul@8k5eKwR7l&2@Q2>VjGjo#M815U~VU1f2SPSfFhZ4{haCdiim#fJf ze1r4yzUa8eN#p>y@wm;&8?Vj4_(w&eueWWPI~G9s#yf{|!hd%&CuN@>0fc|F5#-) zX_h8!@9=p`sekKc6?^Y^@dlr@lD3v<@=9Q0mOxd3F?5lFNYElpo@tpU4+N&9QD7i7 zG_2SOenj4SsAcMJcDjS5i67tzG@(A=2tLoE8=6Y@O5Zt`#!%HXoMUieE|0L*dxRpZ4I9I8Sh?PGf9*#3Rf)@=@HI?{^>O_&*F+B*+V&z?FcW`>B&%Zg$)fPpkP sAff&K{be(|{=MP|C~3}scVn+a07*qoM6N<$f-kq(>i_@% literal 1006 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H1|*Mc$*~4fY)RhkEh{frxQ+DSCI|{V@zd6(Pwe4}g z9mf|b2DNxNPj6~!6T9VMV#6S$>hI_~JAAo zMS#`pSi<`S?9)9oSC(5!7la9igv!jg`QSUF#oC=QQup2pZ@5*H}D%lpS%J^~l z!|S)ROM^lME*3?tzt6%j_t9(_bGH-y{q`$gO=rBplyOA0=YO0<(A7`+UtQ)($BFy_ z#j$FMYeY$MQEFmIs%{F9U@$T;u+%j))HO5>F*LU_Ft#!<)inSz3<~eQtcGa-skDOV z0%|Zc&@}*RFbpxUv@$ZaGBJZ_5S%FMgQ6ifKP5A*61RqgGfO`JHKc=_wH$SgfFTW^VKL?_uSU;&!w>VMXSkFLTA-_n07#%+D0Y3Uh zdWQPZ{Wi%kH$t3;6bc5$x`vh^h6YxqMph;!x&~&zPlpinR(g8$%zH2Ag9fKXCnnvBn(khT9lm1;9pUho|>oNnGAIO8;NxG;qf iADCA`hUJ4*>t=#fgZ=v6eAQ{776wmOKbLh*2~7Z%?|@SP diff --git a/launcher/resources/multimc/22x22/worlds.png b/launcher/resources/multimc/22x22/worlds.png index e8825bab459693cbff4665014bf68a60fbc29513..ebb32f10cdb3d2f89fc6a23f970eeabee5a6d6a5 100644 GIT binary patch delta 1243 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 Uwr*|h7XSbN07*qoM6N<$f*x=gg8%>k delta 1232 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 delta 1150 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 delta 1107 zcmV-Z1g!ht1lB3_gtXpD}Iel991a)pP7C(x@YUWXE5?X$VvZtuatL4R{rR+dA2Fz|tBYHHGY zdV2J*urS4>!5cJ!*K+oFJmTf$MOifi2+-c%uDe_=B{DM7q(@v|U$evU@$usB?oJ_4 zGa@2Fp?8idEq^UdJU>4x$;rtkMPY7jZB^&z=Z}R1XlQ6)ik_aH_##k1p7Pp?gu!5o ziHTtVI?KT6>FIoCe}CVzv9VECP*CvW4M2T;z1G#$U0oehM1Nker?IiI;8&rKP2>fh%PK+y zu%)D=u>IlTfg>gx7XU@!B9O0bZEfBFfR2t1{p{>ap^LeA$a{r8GOZ*l2?+`2&CLyi z;v0D>MPpi#DN#{T=FZNJv9Pe9c6N4pd;qnzwHg_mS65dYDiTZ8!Qo>71a|UP&?UT< z)db40e}8dtArcc4#opfD_U!DeN)gxqH8nL_cXzi=mny`)i5!rJvi4E7Oc6ZB3=l+s zGjuth$;il1=-pghT{Whsr`490mOubh5h%a~@CtW>B6tP5f|VSscAN*m+S-~iGcywi zP+eWEwYIkEL=l%J04Ne(W1l=`FjN3+s3=q!?0?7^=z>OQHjj^w8G!Dy0jjF1kYp}X zzXXc7xH#q++=FN2gleDp$FM}`Q$HT+Pj7QjSy{+9=#1K=b8pSYj}Bo}Q1v$Uf{ z!(-S%pG>aoT?DYbxVWee3=G%+Wo2dDi+`vBe8Q1Jv$&U3_|q0ZqtpadkU@D+2L}gj zfYQ=Zt|F2GE83w zmtBZ8w*$X_v+s=Do0ypRwZ6XoeR6Wr2FS_DiKKt(H(Gvr&6_QzP~$zjrSLx|Cnqjx Z`wKm^M@ED`9s2+P002ovPDHLkV1hkg1zG?A diff --git a/launcher/resources/multimc/24x24/minecraft.png b/launcher/resources/multimc/24x24/minecraft.png index b31177c9cac2456db32e062614c322e993a323f1..4bd9fefd3ccfe2cb91e1f72ad5a7e79a09c5f61a 100644 GIT binary patch delta 1434 zcmV;L1!el&3#BL_t(|0j*X8v?FO3{B6a2Nq0JVv28nfw#K&Yncud(oLSqp zZRZ$^W7gjO7GqDJb5FafZq;pk;Y^p2Kf3%AfAzhv^2*Z7KYMIW=nEHWS$J_Oy6BSh zeM>LTVe)T&%=u3g8*XS~?tf$VFF#a>oip&-YiqIf*EjCpdVgyl_TD>&ZMXGf zx~h!PKe<8Y7!j=>Ty`*@I2*+Ys>ewoQ%g59aIphY%(iLG2uK80UtPiCOEY3ePf(|+ zlLD{5p`KlGS@wDHMp}!-K$g7ooS?P9-Dxj!qrJ|L zpy4P)QItZ$P@vVa^|mn7yxn^nVHqTH8EW`u`GUew~K5VSvW^J?M4c z1IJ59wH$&^3cXeVhh7UWCr8w(J4~>uH_~Z@c#LFxn8}ARv&OJSBt!0UbhgX}x7X%ujq)Cih22zP4_6U-`kJM&6Tte>c2 zvVWCBJItYM;}9{*k&0STbJ>w;>5(5b!x89$nN!1Jlfh|K!mgGT+j});RuWR6V^^&tQ)%~Gng*8k#^|O z2$~?0uIP=hW8+yTC@X}>-)^l0X*Y+2i-VQy;FaH}P_?4(aB&I*EPCqZh>)9MbAM-$ z6fdj?uz4hjReezmC#@Jw+b~Wx^+YY`k6W>*9z@n{M1V-*b{z!u511VegAxgcfl3b( z9Se7BC=dQH!Ge0AGmx;NGEbY%?aovkG12N1ixzM6X%MgJG;v-A^ zCKVzUHCe^MP1(2%aw3!yQ5S+1?SJ7{#q5&zzG3osrszSDNR~JKm@Ee|MKzsw(&##{ zYP5v0as&yRmJ}#R}4euu!zXL{eqClkm3xE%}klK=n!07*qoM6N<$f~BRtY5)KL delta 1482 zcmV;*1vUDt3)~BkB!8nxL_t(YiJjHSZ(Vm4!13=L-yNRcU|&B^d9Ff2T^g%2n6^N} zph`iFSXBiiBv_IS3kpgW{0qBe$#z- zo_;KfVuT{a;z+;U@0^d$k&ceU3FC`DSU<0->dzdmw&H5^^?DyBu{$Shs)P4 zJR?cc%Zj30m`o<Hh-0`Rel@lV$m3UDuyA41+k1Nz;@# zj_GtdG@DH%NkRzm$1n`9yz+(Ly>%ks^0f<}0KS)H*@h4T%d)7|YK%rBWLc(KtumQR zFbspDC@6}8D1VAblH?st)4u-0FWq?afxwktUi!4}1+Un)ea`oN0BqZ4I-SyNHtBY| z^m;uuHa2iwmxF@?8jS`*2!bFW2m;bHWodEg_R{Ib*S_)ikFVbczWSrjyjEMWK6`3) znbDC;zuTv5mnj(~JkMh|9AX#-l}d$DsRTflWyrG3_J8&^ilT7l%vn@j!lCee0_@)%pK}K>{gz8*rNsR5EU}*wh9Oy&QLEJuLf|+KolXZK1d=4t?RHsv zbPcOw5($rSZ%XTp0k?jCkHNnGB!CK_9OVQM@XK0hXma{KK)4z~KNeyD+W zRPgTWZF<{d6c6fp8MUM^-Ww736e_ZgT?M109|NZvb+!)rbMM9oQ#P1CTW7j6Md=ChBqNV9%DRc77pSsEA;d8-_G6Z67WKvg zZ8s+N`jn?SlfO@BwN=W#f{}q@OW2Z4GDyjN4@;;NT8>C^sxvlD-DEh8n1(Ti_Fp5? zRGG0?Q1sduvP7v~qrPe~7`Pm|VAM3s-G79h?}MaZNh)R}@bd!IRB$YtFi9DE2||Fb zDv1B=unbT(bQD>lKM9!lG5h@qyPXke8t0lO6+K0%>Z~l)(6fX*^~o&@)hZ(uIbM{I zW(9tfFk>h}AW8`1gbW#hjHbveIWwr5LRx^S2!AY1 z5NCq%G{n#q%BIfHPjKBSwUTr^q9n~Rbd~ndW5ua3Td_Fok3ke1O?>-`yTtB*VANc8S-~Hs`?92!fBICy?6F)+dKnOum2nqoe+ke=TW$A^j z!{O5pJUCyu_>s@~+U$2F_wcNtLKx?SNyhr>EMqU`%{y%*31kWUC_&dWOkG9SOA!5zxeE9&)bIn9YbIp;P&1TNtRKuO78_parK?8gV!Eb<3w@!()o+eJ@Lry khd;2md*NL3;z{%V4a#%8=>9JiQvd(}07*qoM6N<$f+eWrMgRZ+ diff --git a/launcher/resources/multimc/24x24/noaccount.png b/launcher/resources/multimc/24x24/noaccount.png index ac12437cf9565c0cd340eb6b7b5c92a36d3350ce..05d5cc584bdff9b18f9918dfb39169d321d2d54b 100644 GIT binary patch delta 169 zcmV;a09OCl0=fZ^8Gir(006}tVk7_n0D(zFK~#7FoXH^!0bv*b(07O1Khrm6`liS0 zirzOxGC{92eS+SL>6+eXiXgBtY5010qNS#tmY3ljhU3ljkVnw%H_000McNliru z-T@N>F%qnf&Yb`N0QX5mK~y-)&D1^4M?eq;@bwwQ1t?s=8T1aK7lk{}D;2IGO0_Ex ziD(oG3MBX!&zmi#_9i>kFWJdvpUh??&+`~#jIrl=07X%N>wmg{`@R8LmH|~&f%kp? zj@U=_*+nW(#ESVNm-VW z(HzGCXqpDB>k7E83-o>eUoZM@YCKUK$3PTCfbaVxQP*`qS(ZSa=fX}cNfO9$9Kf)V{ zNgV(LfB+#75&%HL0Rkc6NI(Gv5CH{&PWR^)6nQ)Q5Yg}h<9%=Kn~8pU%Ca%AURa(cmK#%sUF2EoEZ1P|emV35q_-fqgD4uXZ&Obp&qqKy xi=;W<|2j`=5a6kB;2&_CAZ-<4*^B;CeFA^f>u;eLn@Iow002ovPDHLkV1hUDn9cwI delta 956 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 S@SW^V1>lHrv9Gc9WBwNePL7-a diff --git a/launcher/resources/multimc/24x24/star.png b/launcher/resources/multimc/24x24/star.png index 7f16618a6d8557c24eae17b40429720c319e1b24..8527f5092e2b3e98d6905c5be51b97bb1eeadeb8 100644 GIT binary patch delta 1042 zcmV+t1nv9538n~;BYy+!NklfYZ7Gm`=5v%b3KZaCh zA-!45!UnVc{$WU`s_P%FWmS5%Q|bNpubuxu`1vlC4?rTg{jM?{B8o+e=xP3F&7ctboyqRY)(4olhLlNPjs%OL9d~bl+-YY}>XS z+qP}nwy_Y~PR6!veI^-wc6U|1JE+yG#yzKTZgHPS$S45eWNpH=dY(~UFlQJrjzbIK z&|>lXfn+cg8Q*B=O}#?#IKIG1rOBK4<{~FkIkd~QZpje=#yw+6wWJjmp^k_Qv;uN% zy{@N^sMe&N_gT6$RK2;+@Z?cTwCuPFXsodGkk)Q`Mh>BOW#BF%NS2 z^6BHpc7GWfZl9>q2m}=iLH)$y0m$~f`Yp+V1OsW;=+bdttaj7xrK6rQsUW~nPn&|j z?y*l_IBE3go}-Rw9F5loB`d@q3j{njSzz{DjC4f-3nq>)OqEoee*6n2f1ibR+zV#K zueYVnTrgqm-+hlewpu_F2>t+zwa*JZmk6Y`Vt=;h;rzFp`Af=5O1J7+r@W@i4!O{N zxIu2{Fr>{}Ejso@LINR>fC0+}sRUC2P6?XYj+W-3l{Q)ldBqk>=IUK%yrZuicB^n~ zoxCG|Ehe#6Bn}c+C2B+>cy|kmK?IaAf(tlkX$6wWFg531lt~e{ECtIT0gxa_7$l0< z8h;Da1pY22m_1Z*Xs zsFNW?F1>!VT)W_t+GgzI;(mAzi(Wg5n|J+cu%BK%imJQLU-jPU%=+h1aTb47SKm0s zx`$kP^(cwHaa`c!mxt5im0?84p_hgcdSy7B-aI~d(yPZ!hA~?982f|2ni^)ZhoxycTADqaVqi*ZMo3^7E69lq14@|zaaM#{5f=8v z?!BjT?=FHpcAT`kbMHC#e&6@|o%8$7`4-`SzVK!z4t^aa$$z%F8?`k-ckhwp)&AgZ zCAe}TYKwVx>0UsAp5D4`DQotvpAz&1{cbS`n+gk9>E~H8Iw|cve}U=avb& zju?d5C_YNa-?Gk_m<&Wffoo25w(YA?6y@=Z^+Dy92+kjoms)1r*POJd)BwQf{6Ii- zp8ZO35B#_y>wn2W(|;!T<$z=}$j0W>!mW#Bi{*x~pwADEmObZ!6W+oF6^iSo2%4$| z#@a*_A|xT={X)Wuw<~w-Y$JH37pR_nFq{;X+t4_0M zf`D%f+{2f^*?-nMK6LRh{I*&uyL0aRnzT&2HUl+4lz54NkT1gil$h5g;vecMsr*#g zS3*7~jDG`;Zn|==ejPTyER2Zac=i%|aZFsM1`ZIubzl5L7JrGJv_cKvn(y}epu6#K z6Orr~<8m5vpZ&T~PHd_~<@*D`F>qz8MzWoh5bT@O~pVFItGuq#_#iY(n*;Y0tRi=S&!!JV4zS z1om{$lC_8Ehlm6pZ-D&Fg`)M|OcjNdCsF4nY%N%gyJsd7ifEmH*dp4(L~>Xfj#?dOJEjxR?@q*q&!}p1EmTJ&*#8i`vZ@@b zl47_WnSjBGnBcby2yLf{R4$|ZLd5wwM8Z8q;PN2Wy-&NJJ`T@DB-m2|uRpRLUw?=< zGg3T2-vGjyCKwv(rw@$=_>>nY{BK+yp8}f}+c7O8gIi^Uz&(L*Y(MSab`mNh61-E4 z6-65o-n-g&m3q6Vi_83=w)fjl!L{l0cG)3@7nhr&;i)+}m^))$lGOZx^QC7R)SVFt zcG=M+8ANfwr#SdX=zhKh{1D-KqbCStfsiSi4e3EeZF;UjtE;K&PYFW-7YQMV_W%F@ M07*qoM6N<$f`OGpH~;_u diff --git a/launcher/resources/multimc/24x24/status-bad.png b/launcher/resources/multimc/24x24/status-bad.png index d1547a4744ae6b20201a74267c5ac1b71b364704..eae695286ae2f1916f999d353976dc5799675f84 100644 GIT binary patch delta 608 zcmV-m0-ycP2>1k$BYy%vNklrLtAZZI<%uq)98Jql=}&c`%FhG-4CU4X36ojS_=v zqz3z>$-AU4m}Hw^Cmex;uoh;*WEe-yNX&ZDQz3)1Qo%9lv44dw!E^WspAtU61K0th zVHiDw=`GXXu+$gvFQ*AVwNM4Q4pU(Wz5UTB(O?Je`zW~R-MO)nyoD7o5RJZJl7DBu zjS&y<^L=Rg=t)X3bj-PriOB@$gO;yJG?=`R<)cJk2efY9JR8xpX%>yWcFegQ$p)@M zf52dpwY5sht$$>!lgZBA*tu=ntf;6cn>B4(Hu8^&@!B!xT(cvYWIgmo6LMN4<(Ck6 z5(+%JcV_|ref|2?g5I_9+A*gx*SI#`6nCJHr$AeC7-dm1rq@v@n#5Q%PWuP^IVR1J zj;?VcAs$5(jO%!GY5x=(psmSL;qH(~P0~ryok#J=8h;z0t?~TZQJV&%7-L~=9??)~ z(&(DL$l+Pg04YC&A9ri`HtqfQHf52+?aPK5e9+cHufGo(o3P2`egv=7z^lR?w-C-Q8_`?L~^(Wqqny!`k u=tnw8xlU5PGXiiF3XRu}Ip>(^b z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11ItN7K~zYIwU%FKTXhu2 zKfjxM=XSNuR*W*H;vXDiNJ`V{47=J2KJD3;JV+hPE(%-07Jt_EL7~h9tSsV`HlP+| z3fn^w=~Gc0wA->~uH6u)PSi1{&aA7{6_?-5JwDu<^fpcAUOaHQ;hx|5e$U_Ei4qYS z$;V1XJ?PNTUV^xWb`7{taN)Fu!ZOUhDRQL|hN?%9Q_5k{0e*tT=S#peMjWIH3Xk1)w&K&-3``*fN_i9716*H@EvFuo_IHi!~j3% z9*i4cJrDvHUCzN0~L}8#DGBnV^pbV83ykI?h1K+5|~ORIXW>x%fJA+fTRrMY@3#W0gg^g zFqKSlG8D=EK&$WhP)eyN2Vv*iAoCzU1QOEPocI%W>pv$UYB}0(l8`MxKSF0iBPt(ux*vxme`e_3PQ5NMM>K+Y<@SD8&ZH zp>O|wOw+`5T@GclG#@!aLhGvi2H=z*?e~!`cy%Lec{G$`1+;0+Og_&UrB;z7cI>Ev zk7P1jOQ-2sUar=zV*i8R1WS>p;jPWkw7I5BjDLV+x`xCsj4Jp-9q@|$0sIDc8g5Xy z|4SlI!85>?tu=~pw}f-p&qMXLl;K3Vb1*W+9zsB$L5)T};ztcPd38 z9)IV0$i4`;{?9_B4gLap4TwAx99RcLFJ5Hy(j}bEP7Y% zD~NRfZTM@mUW)z%=76sOfq9@ice9mQkshV25)9$r>6QuH3v3GXzXMnBhfzQa95XO) zb?JxY1*M_}bSP*C;`ncX0&rTO;KA%iH~HK0FR|*=`bL^f*8l(j07*qoM6N<$f>~nY A9{>OV diff --git a/launcher/resources/multimc/24x24/status-good.png b/launcher/resources/multimc/24x24/status-good.png index 3545bc4c5276cdd01feda6ca99fe8294d9a32033..e315beaf3cda43d4e77daf0d16c1f49ded131c30 100644 GIT binary patch delta 771 zcmV+e1N{7|2$}|vBYy(nNkl~ywr$(C z6`L;`ZLBFy@B5dtoNkgc!uRF=S0LGGa3Uie$5I10nC@VA+6`<=4Pj$S2y0VrU}ds{ zT04MZExjv7#}D@-1{X7fIGf=r32`KiIAIg#b>fUh>@kTo$$vyprOI|uYB`vN7+(TB z$Qg*6S>JFai@0MDFQSQeAl`c;&mKk*hZ2c$B`>nRVTm=cO98HB&cn@Y7kAPXI8H#m zax0o}3}UJ2Vu3NQLjg{w4OC@uan~l^MR)+d@;ZXpl0+<0l6fsHX{q_ijBmJ*O1$j> z{Ed{1BB|7gxqs$2>5~>gdJsp_iKnsu4}SvM!))Rlh_@;?qKO42G0Sj-jlCJ^*pues zvfd+j-{F1v;Nb&~89RnJ-6+|aK+G{*%+b<;t*HTQPbHp4_Xz&s(+84dU0t0>q$PKw zh`C0%6#-y3;>h1XIVQve(dF0`md)lt{j- z(ZYfoP_r?FV@d7cM@}5!`%mu$CX#pl;ganMVL=F}wnI290{I|jN(^`J+s(g!|B|G@ zL~`3dT(Yf6P-fl02BT&ApM(6Qes1Cjbnvjj{^3%hq{b30vmBIL%^%76bbCpCeZ6nE zJe%Lt$$txt0G2Aj{U~|aiNr5lBExh}<1m%Uu)uV&D?wg%BJl(FcJS=RiAEC27Q}p$ zxE|f9W*Ndi?R4Zm|S zP4m0ydxMEuIwl(dRXRtBZm5JLa;-V?PJPoA;~zlkeUZ8W2}l3{002ovPDHLkV1jLc BbOrzb delta 1046 zcmV+x1nK*l2C4{(^b z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11E)zuK~zYIot8~#TvZgu zfA_w5Gx?Y#PDzGn1=Cgxk%0s<)9NZ+Bp?G;sC!AXuxJso6MquXjcK$Z7MhqgU>p>c zqKHMz#*N@Yl9@t7rBxGbx`~-6HqB=<_q}^uyyjy}rkVD@-Mn+|@BiMp=brPFh)~MZ z=Z$f!pTg)Q1!>1f5+mS|!;`BR$+2d#^1<>#Nyc6RYE-!#Xza(6J`66Ng^&jk4}5_| zCs+l*h{4DJi+_t}<&v0v1=NpEwy|L|7+R@Vh3FcDJy8GKDZsJ=w<9nU0V7lRbjwF~ zu9Xx}R~~;IN1w;>T%va&vQaX9MfP_HvQ@C83`Tn8!rhN|38*jQZG@dkq8l!;MNp;B zW>51JOjN;a$l$4?G8}w~hWk0UI)ivFk39n12ONQ8Ykv^6E+QFqTDe;S5bwuGD-BDa z9}>O_vA1I|OR)F3b#Q2f+CBiSE;h#TrH{IGs46@(JTaKy@|%}Qf1QRufd&tn3!v#& zuhqmg_xuz_Tn?;15`1iMjIPcu#)ij8f18Hez|#d#xLBRi6l@Y7sPu{fKCr8*cf(Wd zsonlMAAcMGk{VC76EVegUV!?cdRpFTfz|!t`Fx(9Gd+x-9EYa};4ur(t}&9N+AD^S z)N}5Ib7bDnkQht^B2otYFk59qy$_Itw_H1JRsEC0v5IFXsN*!>3xeukx^bEtAKsv|V_W3Jizhg8 z_(*wh3rtjk~Aw48we=q{#JOua^g(55aFP2m>;*yr4vcpfS~CsgqV- zS_OAUKeE6rXu8nE>>IOi=mBt};7TpKcO3ZLg_~gznF8A_qbsFH=GMd0%B4`-57Gy?I0RR}!3F{U zIPk9%h=>?O1_-T`H}s2~uhhiRI)$=HQ0+kSzAFcE7124Y&B|w`e_Q?oxButysSo9f QEdT%j07*qoM6N<$g4aRk>;M1& diff --git a/launcher/resources/multimc/24x24/status-running.png b/launcher/resources/multimc/24x24/status-running.png index ecd64451f0f6ee861adf9a3090986da80b3ce991..9c6059462361b04b35d786f429bf764c25ca8483 100644 GIT binary patch delta 726 zcmV;{0xA8Y2<-)sBYy(4Nkl(#M~>k&9?3C*jQ!vY>jQ( zw(Xho&i%*J9@O_$>pxv}@6km>D7)@w8lY@XgsQa->ZWOE8kn_h&{iixTVa5%^nS#R z??#`3d>{piK7yi~VBmMhAi+IM@bJ5{mtbxtXe$Z2a)Q1%1%JkZrw|nux*D=^3uL3q zP_US5lJMse;Xew^zvcIsG- zX8sviQm+n?@4mk|Ed(oz|GN^q_&WbxCODhfpnzb^`y1P!>Usu>9zGb}F0M!>1iIrh zvDdIk9>J9N0)JLPS3uEG26b0ZzVCj=Nna^6bj$lci8REVE@J^Rw@he5)BFgxAi+Hv z6nyWyPU`FHqtfyUdh;_GT_-yqn~ASOG9c))9%h3E2h^OqKNrIqNLW}{pi>tT>9IGy zCU{z++{K(!2WGaN4eHZjY!e5O4AwC`JWP%sex*C#^?wlloDFYcD<_z8(gAHvBb+@k z8?2+YzLC@R9o_Kp|Dg@sO$1|30~=IL!rLFW!Ft+Gp1nvD_+=zc82p^ra1OweNq5JdIM3>)D_<9hRB{EV8k{4t)^^&+TKI&aTdZDa!`v^B?8~ zMeuj-wOX&V(s{b5#gfGN0y(6YLd)f0p;Q z>>O1jv<$h=V;jube{vQ`S8-8}G6{|fajUV4i&#gcxN_#{ z&<`AjI51^en9DG8aG+ImL^xs5rv5g9Ni4P%&QC(nBQrFN8BeiE3X=rw#RP9Xi?y!O z!=G&>k|>``%t{gei5r&e`?=K&%tSV7V@|KJP5j1ZA|?VZ14;(tY}wq{y#N3J07*qo IM6N<$f=nA+H~;_u delta 1039 zcmV+q1n~Rq1)~U%BYyw{b3#c}2nYxWd(^b z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H11E5JnK~zYIm6l&jTtyhg ze>3;qg@v^(2nfgn4PY8;D?ErzuuIn1L=$Y&8huh9OvG4i+J7e2)IXGMP+~Pk5v|e0 z8l%yqrcG+8J{U_VVu&xc7)dKM)!0JU1;lMx;NG1XAMO&0unRrOWRm-xIp>?XGvACL z8}?nU1)4xLB6JNx6(cmD;s`wist2LEXs=SYHSjTS3$QRwWKfr1wnAErPE8f@b5Sz;y}tERVP;dKBDX0 z#RiWWi;D512)Tox4Hfy|$ZQL^(CF_!z`X{jF6`uXqLCE9yh3H{FjDVewGEY_m5T$| z0Vu16U;!YSP{9x8LcYq2mm?V6Or8bhArR?_oj(neBY!J15fVx&AtwZeW)AdkNgEh} z*6(0xC|^A<4phba*>$y(ik~|CWmt(xah2a2^A;FkvH!_?fEEf?!7X_U_(gy9^67z{ zJbYIPQ>WhM!lXtO*JL-57HAFbwNf_!*(E`3LugnN$~dNW;|7j&yur~e4h`MAVeC?N zlT{^v0DmdANidrUSm4-M$2g9|)(0QpoA+9IEpUppKOO>aW@)mW15OZx2up-2CpVBi zqZ?3ISja1TpXb|`9^vtUmkIv-d4`Pg!B8eamtto)NLjG%j%to{9OA33C4^7!g4obP zg5>~|NrVEUZ`xp4_?yw#2tA5+m)RPNasKyVUVnf0FvnCK)Ax5SCMXv$qc-SK+^H2C zOiWDh;b&j+$-oqs?rjGrcWI)V1R<{4NOcA;8OEChCnuw@=XrehLl19$agx3bd*Hsc znX^dEfR_ZJdnDSNKq$B#&&WSJ@GDR4-p^y-d-O#*peTztKqBV%#+(pf1TFo)fPFW& zZ-4X)R~l8l?L2gAg5#5AjMP87AeK4%Sr|D7MxUc?Q=JXMVD;`nnQr12;I{Q3{Tg_& zcoXlJu7f+vmlpM35)_e z7i5My<;_6i3XBg!YQ`YxM6P+7XuUT_S^Cm%In#&`tw00-Cl3N4km;YSTyUqrn@%g3 zZj3%iTX>mE|Nn^g)uMD0(1@T0C{9P>7>0lzEZIf0A>*^D% JPDHLkV1o2c)gb@? diff --git a/launcher/resources/multimc/24x24/status-yellow.png b/launcher/resources/multimc/24x24/status-yellow.png index dd5fde67bf940f3540f523c0451c96871185b180..118efd8903d8df8b9a9ca389f199fed8be59f069 100644 GIT binary patch delta 624 zcmV-$0+0RZ28acaBYy%XAJI$@l7LDx~xCF8&iS~r7MjG)C{#OJ#4q<>_AgcbEE4~%gaNQ;3! zkAl8WgJ?#@_bJf(VbDw$5CZ3_xqyJ1MWagg>g@sJRe2CW~oYyr)5<6xo_ zhMWT8`Lz=VdQ`j8=&@ain$vZ-+Soj$*76 zPqAT!ciXDw{?j-Mj+F(rQCpacEm3$OQ+eQ4$?xB~L9buEEDLO-h%DP65v+lyQ9t`H z|KiQ#hYzUShuDbiAD;anL_i0Rx_%n2y};fdf%zV+ZGSn{6y3d9c8b_0Pl{%H;hpbQ zid-$!B2V|=Den+^H(bLu9b)o7Z7RdSlNaCf*G^zZ2Ceh=pb-&dtXYIoebti-hj>5A zoXWD}aE!Ai(AO%L-5hfWSJpP2Xh8jFCk{3|m5GSWrbkkfXI%@1J7E~$t`EA=L#DbzHQ^gP$iG||BEX1j!c?)PK z@CyqvL|u^Y1#vEDsYhRhv>Au|l%w&o&>BPkjWzjBev|(c;`jkWlm(^b z8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H10_90WK~zYIt(L!Q8)q2D zKhNvClciqV7}Y5TwJKyN)=(%37)l3^?ckx@Sg4`I7(96EUw_f5E);^jI1ma6n!IE* zB#R+k0mFn=jlW6Of;L;5;69*Fecs218CIIKYRKd{P1 zREI}tC>{^1^JNm~v2G#pAVI7{OeDeMc5HlRSr`STc4~IvDn&OMz zo19`gW31wg1_u~3kpBe6UGmyywKs17!rvu`l?8ulG=F%XNe&DwY_CZGAkQD*XCnT& z_95Bq^yu(6wf7PZs#Mw?J~M8Ic?(&8^8LU8KAr-BY|3Nau}UBUo_Dq(I)Mw$-?!pItH&{ndPv7ArACvP-hv2J${~w)ez+2_QV#pd zNuvQk$+5ytqs5HcBs37TAh)3@2J@Zn?zqU^%k44 zQu(+1{tR9n0!pP5v1#U(wXT+>autqhm)?7+j(=)Uu7XvT=9aZ?0A?4p7%Lll`$<(C zRk4M?_d%77uNIRAbXwX>i7XSbN diff --git a/launcher/resources/multimc/256x256/minecraft.png b/launcher/resources/multimc/256x256/minecraft.png index 77e3f03e232da96142e969a91461f4d3255818e1..0b24f5501ab5a91ef6e03bc1d9d6fb79da01ea1a 100644 GIT binary patch literal 42727 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%0Dc~|n<{ro6_=)(UYc$l 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≫ z-yY71ZvbFigD2Q5{4u3R;6p_q?8AQog3P6c_n;}m)u)DyJLvV7wDKdEg3utOnldce zEi02V448iA@~NpW80jsM|D8Rr=QSWGR>{oE|no1k(RUz&wQf}JcCK~THNlQ6(@ zUmxHii61$J%lLgI@iT{A|03~EbLX9YvTNYi6rK(G&AsQj!1Io?7@+`QF^$c_n+XJ} zV2?n?Xs5~eP&5k%yY0&07NKtb9;m=)o!l+VNKP#hzYiI7ktaJWV3ehhbS@uF%{>DE zizx(xTlKyMp6o*pem>sq@Ya*28y$93KbBV$o(3wB3(h(jdkClm08HBF$gP)W z)HeXIm`Gm(J`HqnnA?LG*KI0Z-7K$EWv+yVF?mk^|MMq%Ks!eXm znyvCoXf>)~#*d>%0R1@c3Y7ZkZ+r^_09z=!uQ)fMBG3W>h&M>`^;>qjc`G);w-833 zpx$DiK%xAh>gvCEbjNuX1^^aQSP|T!0s>lyw;DA9!7ev%IVi+i00bZs9nBm6S-$b# zJ2uTd3j+X)Nd$sBW4Q*N2gwc{0gMUPZrtc&)E{>^00000NkvXXu0mjf Dm*z4q literal 49869 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

    i|JSt@Wyl>H+LB%=w3qORK-y$lGFh&!F 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 diff --git a/launcher/resources/multimc/32x32/about.png b/launcher/resources/multimc/32x32/about.png index 5174c4f197d575dacceee5880f4e938af5a3d6e6..261d2a44c09928ca05b72c9c5597715be6a24d90 100644 GIT binary patch delta 2076 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 diff --git a/launcher/resources/multimc/32x32/cat.png b/launcher/resources/multimc/32x32/cat.png index 78ff98e9e9d480131ad818759a777cc2fa67c5dd..d48f8a668f4efb2f01520d899b3fa9618f7588ee 100644 GIT binary patch delta 1557 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 O0000&tPIn9HQ2+?n0Dzcy z09b{VVx|Eg2m=5gTmgV^6#%ve0MK*VD3QnA z*Bdt$g9Aujkg9yI#MQiO5DHkDkZ2AalUIC`ob6HF(Y~J}`x{wPf9iYU@W*nJZ|+E} z4I4K5qMF6uQ%qTilgDsnYcHp4q863gZd0sFl0))SQ2UJN2^Ma$$VcY8?dTZn`@uo> zu=+q)5U&4q#O%!L8o^RWV}^B3cCVfBg9g`**0nSI)dHcTFo>TZ49QsO6P)*)ot_;- z#JawPOVebx2pRD<`r)pOMMqJ}eD3edVES2-w-VCcLuqJo&zuXTt+h==v}|z zZ&25C>dR^RJHf|uhqLJUVH45Z_d>hNqJl_|#V1-47YWfi06=b#(~vwF0T;d9VoSxF z3P&5)rK>1e7j9m;Z4fp)iK@EMZM?~ZiGYQO zXwJyx$(B$YK&Cy5C&?&QiKJ<-?1&}HdmrvtYb=n``!re5kv8Wv<8{!WKC7ZnPlO1N z_M-HF^37LHDaXi~hxn)D#%ansH0K749piHit*E~ie>f3vZ^8eTG;h{K4oHHbd`suv zfNS44nz!9`Yx6xKS3bWJj|PZQGpc;0mmN}-y2oo+CZ-sHP~t4VBKg-1K_bXD7- zPUq5?ZI}DUU_-eR3#LXqVep*YUyltRoHcaz$}iRvO0sMXYZhHz%QjJW6=%BQ#c=>X zERU`fQ`DO?Jb%kZ*mn4p`N^R9`nk*o>j?66(_)mkjRBDom9@2zdow`s81D>7jy=H% z>eP_jlOmgms-C^nvGhTKSMY6jWM1(U!PrV*7WlRP;>?=UL}AX*$x6Jy}Tjp$YR8qaIiO@ z(1sWXkk=_-@7%|dQMZrxy0J~R#~sx-iz!v7z>-IMiLPR!%?T{U2koDg?@Qa~a@bp* zA5sTnKn^#3Wpcdh8RHdJogZ&S`g z0jOb&HA{+rVbayToxH0wXTU0`-FvFc!bK>*Ia9UV)9MNlMck(#U-s~P;jX73CA;+Q z*Nlcvke^h0+`_yvt?zBOa?Y#JwIlSJ;*;&Py7=-PFDx;PLRf{Qh6tm^=|vZNN~e6= zvx_vz>;AU&!~FeA2^|miY~@NlH|p)Ke;v_BCvM;FD-Zg#DZ4dm>MtppA+1OYeApdGT+H8aL-OuQ9Ke|K=`= zyDEeph23mZ2ex}4!;Q@VJ)jA|VK9e4EEdG-(6D+0432=;12NDCCQ&*w?I*C|B>bQt z0E+=JI1sB#!yY2wbs_5yV5jWJ9aPyZ_AiBi?`A0!A0a;5Rbr93)`zAZDYr133(P2>4|q<8fwCpgRMw2@UgN z_^VjDL%}}E^Pm?S(EQK#DLbn5&n`kjLbRCQ-Js8g`+FOo^(r1i2w-V?%!Fs;%J~}y C{-3Y_ diff --git a/launcher/resources/multimc/32x32/checkupdate.png b/launcher/resources/multimc/32x32/checkupdate.png index 754005f97832b2d4e2238419b1b975990711fe75..c60f965b2bbaaf8deeab1451765b9d43df668b09 100644 GIT binary patch delta 1976 zcmV;p2S@m@6U7gZBYy{sNkl&S~GJml5N3u9gjA84Zn#g-= zMw-}kWWL%L2BMT?@mXJzXJjla0_(%Zjz zdE4jCYy0@GW9Q%S{&drVCDK&JDGeXS2ypP_x9(8p`+vJ5MjKR6E&w2;v_yNv%&5Hd z@@rDbWajrjY!{nO%Rt?Hby2QqUSh@CozZOC#T19}@D;8jU~~XdffGZ7#EC;B zj=>G~uS_V+>$4{_tx|^}Ix3(ydvSQ_$Fv#nufnqis_qKJLcEmt3JUYeDct0ZpT@=G- zP6mBMghyT{5z!opx=kde`tVg8KX9o<}HYJy#2-=;1?$} z;D1Qx&TO_(z4hj6ym4@Vm@FfOhc=Qyy@bFBFpzU&xEcblOr>Jj?+?)D=jrvQ81$wv zKw8C!CnSuI)AdH4>n`1b?|IvPa*c?7=x$S<`vr_?NG2jIiz}8dJQLx#mUaeI974)S z9HF9iD2K}v{P)nmh$b>LwX9%8T`SvDEq`EOY^tBp@jm*74pW*OrVw*UXL5R|GLQxO z<}@Is#7@2;j1>qx1bGk=sy{Cy9l+s*sbjoa>|y)5t7&dr#6+o=vNuZi_)!32s*a}S zCeB*Cf&QUm{Nv4gNwvfkqsSA_fB}%`po}pZqeGg&uF(cVfC=MEepo1-;p+3>MSsB` z;^^>`XcJ(wg|cz7+-EtGKSX1CCD)w)ZXS>QL-jYf9|S&s!k;0+!4}m)HEO%o+D8Wg zLtdU&gFNSKxtYO22LqFD&lDFza{gH#ou*v_b}!Ue?fKhpLqy{r{=m;ytUjRuBP3dz zkO8ylYoB{61MJvv6;snUEcT>? zQdMuSYhS^}!<9+gObddqS7r`g)p`vpTdzRLC{@_?ik8dmUR5`pV}Em-vkQ_2 zcFH;Hi%3mTP3^iXC{vftkuQ(V9C}9Md2CtSR$IK*#PpukRP{EuE|rxCagn43A_Qn` z3#b{wn%L`=NX6oKnN#> z5E7(77>SUUNXMZ?#uyswLy8DJBX9AG2X5de_g!UqB2@RSHq5cPgJZoIBVL!YZm-Z` z{fG-fBBeq&P8c18R5s36E`uYz2%~HZYI!2eXnaeXJ2=`Oc!B@uY<~k01PCXJGhGyE zBi4jMIuRDCB)vmDI5K8ia#{v#VXLt@j)>7U*j4f>!E>_a`KRe>gfQ9%A?@uE_63kO zDpsX)h+=`x-cF)U#vWYdsb0V`sxox;cj}Rek>kU9;2v2!tUwHd6xze~T}Y&I!l*#m zcG!t-Z(7Eihu^~Yuz&qL-4=veoAdI4*ULj)<@U$EgjTcu9YxB4Hi1_n-n@?LC(+Uv z6EZ-AaVeV1wczRfue0jR6(}hvc~gAlZ@ZWqf>r?$I+JE*b$E9y*h=ZNSNpzOS zANh0s*VTFmV+_?9aDXJRAswaONFs1z7g`fDhIsZ&XX)yzlkZGr;`I%6X*ZKdh;$+W zz(k?IWT9Y&$0ohW$>LbY-T6QC?hD=oUI#jXF>9bYh_Y%T0w_Rma>Rf-AgvVXvo4KZ zoN9K~rR(K-Co#?<0KZ7rd7&^8Wygw|Yvwxy=j!0000< KMNUMnLSTY$@$I4j literal 2480 zcmZ{mc{J2}AIEK*1Ft@V?fG`CBh>8V( z9d;>d9snqC0Ql1#0MJ>b-`Gw=H5I-Ft{FlY5QD>m!umsz8f-ioojD)flg z<=;~UJ-DGww459guQ@I6<{sC!S>izoIPpG$r{Jb^`px8b$+p2zk=(ZGltDpl#%N{z z(h}?LLi1*5x6VPJ)v)@KDzAPAj2XI0XKwBuw7gkfrmumS(y||Z)+7{8bYy;gBNLjx z)hN7{yQK(7M;Mme3D=-ij4vGS&bvkGr{_ehOTk|MHXEU0khEy9mWHgZDhg+2V(OQ| zSMLv6`w^dfQE50N0Z+mWHTBkXnu&+ZW>}A{Qh=i|9YJ9{A=TAYe%qO=aic{_LEmRY zEO>G+ihJM-!;8`ygB2s{Gkva6mg*W^4j*z!-ief;u6;6{q@E606}T{V+oZd${NTqy zZ+({lw;!yJH`Hh%u zp>p1&)tF#Eed}<1#+8Z2&G=!V{j%kR-Srr^dk9oODBaX_Yd{S%T#+O+zLMBj#v0R( z$EQ@x<4!WAha~9;lkCdLTG_>!fn6tzW$(9#?k>xleXo%yDfbw$b{HY~(idf+!)@WX zYyJhyzuaCC4)I)rYCChI@#59px9a2Zyu#;^@lSh19<8C6hKyFFv_#a?$StRkdo1p< zoMBO{a9(-^xKtDaEiwT|*CB)bzD_CSFJFBOZceS=&HnM^Roi4aN2!sih%%=#U%sMH zLKR0`_1bad^5=o-l)jcLsCzR&H1_nnz}Qsr^fY_r(qf?{Ckf!zQge#RsPe3>2hJn* zfn2k^@=#Rf&9^$OPSoo94i`O3k3H3n_QBXDICEl8DdyR)xR>Lq{Cw6?Lq4AJUR%y-wE#$kf4=+kld_A26YstK%ZVS7GA3K_=QdnKqtgDYDYb8o zWX_Dy?~r0?s?fM!DQUK24+1%*2f{@4_}gK&>bl*aGet3a#zqfp4HCG-&=^ex51*uH zNa&BR)rqZ}q=?EZv9jSGG9-wtuN&^DzRxc4@?#BxXC1I+sc1fQl7OiwIvFS0ZrQ)L zvG^&LU?G`}UMTnXB0E4(S)GDNM214Hju}GtB6RAZ`OqjfRGz!&1h-sqx#C20jVD~6 zst4w+S(+{4JZ=`WO!l2Sozoc7=Qz8@I6gb_G9pBD_zUTBFrk$xaO&_)?AY)!YSgJK-0&PZKnx|XAqdkS=#spGZkI~FWl7^i>n z#j`moKlID^U#Kx%88cc^I7{Hn7kskB&PdC4qzP)L_K$-Sa$6cePj$TN6auSn*}bi^NPAI5?lGm>*{S1mhUgtF(JNM6qj9( z7wN={?*hz^PE9u;KTEyhpIss(|5lTta=ZWWX!2tj=dhQ>+Wp@eh;QkW3;hGbnu!hB z8Gc$P{%9a1irL4$$`a&84*c$%)hR3nn$=;ja>AX4_mo~Xy_EC*<@cI}%R}ckySw!N>eQRIm+Hj+lZ8`0V(JqId=exRk zG8IZHEiGbSIjIY%f<`QPvtaM6rc>RDlsIyN4 zFV-+$(^M}_9^6UEMB;QVnQN&?$51lr$d#w%34*hE<|11I4iz56VaU7+=*|0BMup2I zoLj8~1hi$uOXw=5OBe9`?JCjbs{^ zdJEn@-JM?Ie^Th0*4F{0Ll{h?9FQW8iPIAiQ_{jH71@JJAKLX5T)4JeTY zi_AHYIK&2tM)*cR_I?HdP!L%BqD7oxK@n$hs@)j}+T~M3MY8DGGZ|^B$69^e2?9gT zk7#f>8n^ywZaGM1pL0bOgOZ9$1s5CIpG+;_yneSp0)fxFSMs#V(ltm%HHL!#X36ij z?T18!?Y+x76-v?P;-h^}eYaC{?w7;?KB(rrrOu=Ek+G`ybmlm8#VD!wg_WEstu>*3 z{DSL8fkzt$OG=A-UFMwmY1Q3ZrUfZ3o&Jg6Rl9ZQNHEheW%jblo$1cNA-8XdkEsPu zr^Aoww}3!K^7e6B*@bt_l#(As25m9$ME4Cx{i{?s?siYg&gRo=ENyh&?f_V7Q zg*I)0F3BQ^7B+9{KLX43?E`SZxyv7!+@v7df>SOc9D@7C*v3V*0Sq5wdrc&ywi-2QqegoXknw}6of5ybVrIDquo5H~?gpD2I|r@Gz< z*<-W-hT9DYLtOn~n2_;X@%F=8@0JLZ0H{c6UnzPx95|yaOV0cpy*y8Efqa;3BnsDc zjm>6*q9_Q!9QR{al<4>SutF=4>}m>8aJ5=txm;qsUVjq?d7i_0kLh%Z>#HmKzo0|h zJUvBcvl)iNAxlpH!eH|DhTEGPdLZf#rg-t978jP&?{+(uo)ACc6&8yH#?MbdJV5cS z$o>4q#TivyM_K@lxZBzD{eI7fA4iGL&o4YaJ>vfEp8G9-lmH3=NRMzbj=^An`FxI- z$!id|{D0AWZ^EQW^MJ;1G3~xVvVtD=HIYUZfG7;(HHA8bp+xEG$X2-xRM|Qw1U^~qRM=~&7 zzkYokP!opZgoK0`BErLoN*|rQT}Nk5ndbc;2x~C1A++~$8&?AK_V$J+Ak0uAoIdKB z8rLsdv?Lhaa!5AB11L=&>>M2b3rkBTt@Y(c~{SuS#Q& z%)3$&Ub;PS--NjYpE8fQ-D;$*mSH*4!M z>!2nF1;=QgjNjsVyD#jJw&)628REt;MX8~0O2*bG1tkGaj_EF!f*CjL1e(Xe1^TZqnYq?_l;?x#sf67VmS9 z`&Uel*vMa_;?&!)cFCWAA2cSsvP=He;H)aJj)`$;6{m%Z(`qGt6Up-J<%%uker*mj zg`Ql!!#?4ScIElhX^N~JPgpspD)gspW3l9FVG?82SDLQb=+7!&5h-N1d0G5_N8z?5 zXPC>IcfX%z6EyLC+ANn2AEvCetj5lotZ8h53xn3aTfoxD<7^b2o!H~J`DV)$Aur8{ zY)6+2@7AcbZHvT07HCvw>rM%}ap#W9;)@P4#|@4xh+5m!a^TM&8@|52f5)_b^v3Eb z3LG~S6B9GAu;55*Gi2*^W4?TTesWFDnsi~W-^|hLpS;mJ!CbaEfBWqWv)LVwe~9lm zw%niBrsfledY^2&z@iKCH-%VIKJAS4>hxRAyw-F}SVVO6@#bI5bL=XmTtc4kvpS@S zYTOjs*=zXX{rlsmPI1liv472Y{v&(*{=&y{4d!{dZA+)z$=km3^2-fVCQS`mGbL%Q zsdVxUiNn{Twq4saWzzNQ*DLe#`tI+mJ}q3X7MXpwxIQ_#IXyl7X4L6p64Qb{y?Uk9 zFK=BX-;j`Iu=%s^i<+J#soy0x2faT0{Js5!h~FK`$&Z)*Dg5|psd%}1zI;;J>~9C! zHM-oG%x(m)zpk&sR>aB6!}H+4zrR3LPj6lQE^MC9TU@2@w}hjVLD^dK{G&%o=g*w^ z@adCKznt9{0fwKCrW-!&*D+41dV{=^tAj6=Ye@Z`014yM6L>Ewlp@FV} zk*<+Jh>@|Ck(rgDDMSOCbxb3QhTQy=%(P0V2A~awAqJLK#s*e~77z{bTaNewHKc=_ zwH$SgfFTW^VKL?_uSU;&!w>VMXSkFLTA-_n0 z7#%+D0Y3UhdWQPZ{Wi%kH$t3;6bc5$x`vh^h6YxqMph<3H<|%MK`m;BH&BBl$c@4I zX(i=}MX3zs<>h*rdD+Fui3O=3r_Fw6BL!3>3{g~Cl$^@oUs0K!ny28I40Qb)iFGf4 p(&`B5_|PC9m{&oD<%3o0W`b0M{rcW~)oGv>22WQ%mvv4FO#tRLFiHRb diff --git a/launcher/resources/multimc/32x32/coremods.png b/launcher/resources/multimc/32x32/coremods.png index 770d695ebd6b609c9cd214fe4db0b90c81032fe3..9718ec6714ca701f7c6d1f09f1401c51bfe3d15e 100644 GIT binary patch delta 1578 zcmV+_2G#lA4Z94GB!2=)L_t(|0kx6?lq<^?hQDeg=~3pG*S2ljwzc$Z+qP}nw(WN` z$jo{(6HL&o+V7n7&6=!Ueedxf>|Ol+T~&%5)IHxgX01}{Nd~#tQiXjL%GQ$1i`0w+0C(mWtBL6&9#)h{SP!E&)nq( z&Ux{^Rw5kyhq=E~4Xd=14xOZpza{E+H(%de$A23e@$1QwU2dRVjhXm){qvK}zwzVB z5Aic_Uw8P{*ngKP5-01wSA8#AkwdjvK;jQO4$gZAh8HKZt2nHWVmd^DN-&D zcY&b}2~9|(BO(*A!dpbOrh*kGj6QMiOP61xT-8)cB?1OP31Vw)e*MiG|NIR_zPR`u z2S3MKJNVM8_q_w9RCjYNnxb7|iMNuy%Lfsfh*r`f1%HQKc%(xLc7XxQqaMuCj#~st zr#l{-7;QA;t&Oak`CF&*liEnGfzkavb->ljUv|)i2R`dfXMUo4w6TeaP1LP4)P8@( zeeg8Ky*}N`qjbHbbHo__H2y38^qLJtha4F#Drh9OYZdWzyL-Q}4tua3u-EQFQZpF? z5~WaiG=Dc~ZsTAC!djy84J3eLd9LjeXrDm0d)23aEXXW?(ijn^(A<7S2`!*QlV>0u z5Q~wbQzFovu7O?!DLBVS+Fr=>&7drWNP-a%A>V*U9F zBt2*km;v;D^tVG2B8<{_ZV6wvmk?gSju85T;GKznJN<&+L{Dq z8DibRmln;qh9Cgg7R<~gZ20)p>#9Gket*7v{OHBrKHgC#G@bg-Y9A4i$Vpn-9oWk| zV&(91n!36GGd)lmd-rQdi1G2I*}Yfaw7QiFf=chVC*lO=+lKmY8Xwn9{h#U&=KjGC zZ~+4ZK;)Q29Luv7TehL2Yw6=M0ikIV7(b1AOWr0lKE7#o-$cJ`1)zZb2$42Kv42EK zGpPV!_m`0)S}bi88(V*4y8aLPg^<~_*K#uBsj_n|Z7?X;9<-e#G~~%aAeh(HT6=yu zmJ1@}O8SE$Pgz5@wkSHba@Ukju$L9SHE?wKu+4F8JQe(`@ww@GY5$%!5zy^Ty*1NudLSnrScR1z~=eUzuS=m zM6=(W{qVYD%I6har99VWt{pMe2sm`r2t`Nb7P<9PO0{g*<($(FKNfM1J$U(Y>d_2U zzj;PYaUAdq1t?%i`TV6%S#kZUCl-o!saf$SMB$uz+#V|ji^*2Ol1cK$27jC(A{`K$ zn7>xq{QZL)pBMbH_6kKR8(6GL*53A@y(Fo|)5{*&>vd;ccF4J*8r`NL0Ve%X4*hVz`v z9&yi%j!aX;C5R1d9lBMM(trOiAVbb_1lJ)?3emB|iUMI`GO+BiZv8z-wn`(&fIW<0 z=Nk|(q0tsaI+0}Wcve5Wi;}yxs6zkM#w^ByDH9}SgZvNMGThn znEY}7PwQuABW0^XKREs7Z!D65KhDV{n>v32v?5;$SPJY7c_Sk^$+gqz0Q cq6Ep({&~r7de|kxgW&0+oRd zLP4R_>L{Qnh*KP37-tlR5kzqW8D>NUf1oJx0~A4i2@I8iLMcg`7AP%{?h8#`^7iX} zSxVBrq{{FnH+OyK`_6aIJvSlX37^t4lhO!+cwYjvfFv{-1b+~eh=d-5BnNK)AtChj z(SnMef$R`Z0$zN2VlF|Ef8`G?HqS^YfJA)~2$Be1fd(ht2p1lnf{Ny|wW5fg`)Tow z)~8Nj)#-^>rlu{=Ta&o~Jc0*Uk;8=rPOc>uL`>$0eGjy|YQH?bq;m69B{1jX4AMF& zw%cgPHtopU34bDzFz{n=naD%>A$))93()p>j-D#9l{{4fQ#PfOYCZK`%(Lc_SI2CG z9LwY|a8BajSnUz$=&2U&o@|+GJKA*Ni3q%WV*DUdMZ5_FK>-350pbw?k#~z`*F$zj zVs?DNs_ZgIF{b%|Wdbr0nZRY|d8l??cDtLHb9#%WfqzgFE*!7|0>Ci~1hz$qqIBiY zqMK(T5?F9>%yxa6ac5yhG3G${jEhJFEv1759CX9tMq^M8+=4p*?Dt;Y4h^LN1F45@ zrX6VB4GfMGd7hVeUwqtm--A1CHjnc{SF9od^D}y4WTExb(JzkL`qivsIM8U{%e)kn z+8gF^D1W$I^T9DO*yjB2BmWvCNl-vJ6uN&%}>~syJFIoPo^CJS|$)M z?gtCDxqxR}m#3xmVMKTa^KxDc^4+&>h<1lD6;X# z9!DP6fDUdp*x+iJL$63cZ`DvEmJdEWXXVV2wSQyFFo7Q65T{@~6vW@}Z6jqeay+S! z1}f_vaIMT?P$XbT(W*wjmh$VO!i7r~k67W40Tk{{B%t8BzH22AK}Q+D#dkxyryW|F zSh)ILwXv7Lgl!orQ-*%2#7To{4m~(CvLxkH@%+`}$66+a843dS0)zmD&IQTHCr3l- zz<(>cp@VDjVF^5f#``Q>d)pr4Bam8^uYr!d)=3g>Iib*K$wY}t%$YLbF} zo`nISKAs2qa*C0S)1nJn-EAPBezltLZGlYS_FV=lHrP#sK1EAdrkP9gN;41doqY&8 zcqiD~ZGbNl$hKxdGusei*bgp*_5FYXu73r5)JUAS7>UOD;SqQ+xSN)s{vOLoI040& zD7Dc*0*?taJGpM#rs{M;Yf-C5tsioxblEHOW~I*tx7gzYAPLfEg!dT^cpU&0P^iQL zPHvJ9OqSUtbm2boNsVyoynT;@szVQUbzbcJEiTu*KtEhRL1HCO_oc2M*%tP1f`8JJ zhTQ#G^&98DWlc6Eg&7w@0Rys27?4F?4CV*)N^T#x4B9uMd7ON&*%+wYSUrw!=j!l~ z3KuoVDH(vlg(GmDj-7gBT*t|~+hN_z#<%G6n=41X$$*T)fe zs_;E{!kN$2(ws~{V;pN*F{*6Dk<4U#EY%cr&>S>9VjwFy7PKm&zu~B;;cEo!2*)Jg zK{brATA`b3gVS~g+}-V%&N=AIL_p7kxctNq1}{tAq`?=y%jtc9aLS%OIX%g!6$S)G z{Tlt}45}D>V=}&L`IeIg`+pDjb};2#yMpfFd>|?(vFny|U{ry??tdN0|TtT0>#d zz6GVT*SV#J{$L8S_9KN9#sX~*CqmU7SDWXfnlX_S(CP}Tdl#)+_)at9fJl2h5LoY6 zpFu{DpvLL(GFxrKA`;Ndw|+i)W#$G_<>`0kkrJUO9`{v@#|f&TgOT_TZK;t6sHrSd ziLP|W0fHhlVZebsR!1_7`s_c7qKwesxenjd&yPev9#6z&7%qBv`j3c98%Al2_Sa0F kQ^OPff&CAUoZ-ZO0XX&Be;!uR9{>OV07*qoM6N<$g3*UUIRF3v diff --git a/launcher/resources/multimc/32x32/help.png b/launcher/resources/multimc/32x32/help.png index b38542784dbdff26ad5abf9f568255cf5873c966..6e4cdbff6162783ec1a32e06e081aa2752c3daad 100644 GIT binary patch delta 2149 zcmV-r2%7hx74Z;|BYy}uNklVq#(< zRVWnFlanQLdD+$)4Lc|nTW)V}%076|^xpTr_jv$(LWqxt4u2daKq96x0!1u=Z++{8 z#Oaq^IYKM-1I>W!BXMIJiN*4iaZLwlu(mVLsCTbr=y#^m!!y@i_rsDb;1LMWpvakm ztla$8x4z~7_L!w@W~}|Xu6*CC@*{)0yZZYq!^-FmGvF~!nCEfkw3t_0cU#5P#a6L& zNpZS%oZXtf8GpE`_D}*k#5`gFwNG=~|i~#z=m{+{>*3%XXt6xLqtf`|#Xrc9C<9+UPe@h>8@+~jz-MZrw zJD&cGe1DM4KyYl#h~SqZLJ$xTqActvB7}f3E(KOS9du-GeAA&LuNmy^`7H3iZSBMu22YM>?UyO6o`&L@MK4IwJuP zDXLC2Xrp@)1G{&=JvTJ;8sN<)B4LE&0yyRvCx6qs&3ec7Cmz`!%k`0#&%>6K#4(*< zByVDSe+r{HQ;-{Q1BQi)jhklbxM!(}QqzOv2M2+2tbqi2cJI#)luIAt_QEyQD(;L5 z2m~}yJt3rVuz&RM%QKs|8cxuu=zo<%<$XgIUjL*)jN}p^8Udvox<&+g@S+1Q&b)OM z$A4T?K->4gIgw6jM7_^X_mJ*w+YYTSt-c7==gtC`H4)iz!PuCYNe!4U=-aVv2+1_4 z%QnavQx51lflnE(7_VS#xrIv0gBjCtVA#U*_Vwaj&m6&8-NT7DEXxrkM2R2*ZAy?E z-jcNX?tR6ovvwMa2nEO>_pX<-*?j&P-G76FM!Qq}M#J6L@psHOFt=t4n|;ywKKy{o zhP!5BT@t?WDMNVn-aIb8yM*PMs~pfEvs@LaZj$NiKV;4{JaMOGphYL1VYl7p&RKJXcbEAomUyM3V{L{Q{XF_>{31j>H00l?Q{uz&jc zbJ?V|Uo>MpoC5sf7r!tJ%Nk8~WwI2yS}I)4GGmHdW#x!^4d7}Y$S)tsClS{*c?Gsh zp(|1~W-5b$AePC*VqJ+H0L)MTJNe|32|1T9qz}+U$|9P|Ie!yaoN2U`Tnr^RF>;XX2AhX*G!D`>!ASb*|Ud%5ei1Z zd1$*JmE`wT9$t&s{c`@Fwj+lRJZBV!VEOIEb2#?8B~Zl7;nlluTubNF#zEp)u6TWxLU+j{}!^P@_tM4i*+ju~MqsP+whP0PZ74 z2-z3vr&eV38{nYa^g_ZYB7zhQLqp7WP+MJ@;f{7U03`q$aYECndw&<#7Z++K>DUQH zEPFwAy(A5&Gz?GJ+Kn&2Vh6tX^6hdJYY3|i5jLSZn+AbfECkhJ<&tXESb~bE0C*MN zyrw)mcP*)`@Pwf$QUP)IvhkSW-q><6U6U|6B(l@*#|1#XCq-K*O-wFTO7*ivv9*v? zM>Lw_ZTLG}Bf+1O-hVV`)qNeVAm`D)*r66m)%Gx1v~k5)1$P!2^2+p1)tZ8?AjRcO z0%ztPZ}#@P|6ZQ2od`@e?_U5w9ecD$sFShMi6^A{`VEH?NeI=|B2>0LhM6@R^JPbo zOJan?N`$T#i(M7k=!z=gtA(_bWifq}?Q&XMYXX-jYctc3QoCdYh^S zl=Mn%=+NMlG z+mY+*F_>l`P?I5}lhksFR;?^I;|6+?fWEfC1o@rIQ#0SG6v`I?a}HEIgaClUoh;S; z-aBZ$uEpA|?SJ|1l$q{I3l<%mD+iPS4Tew=H*}=qI&!A4oi)*%xYL=v{-#UkC+EIX zUyWY?oNeQNg5V+JxdXYuz87>4_Pj4QGWuj|cr>F~S)Ij`AiAMM5DtTSAWnnZD@*P2 z-2C|3+~V=YX6r;$&YBHp{?Q3g5l8v730YtTq0%#QOspswe% z%5Jqj)~MF5bk>`f*XzaE=)Yx;Q9wip_FKSk1{pn{rg4j>0!?#>(@YFhP^NXj7C6Dd b|4aNAj)K|OzZy&*00000NkvXXu0mjfs<|E* literal 2720 zcmai$c{J4PAIHDL(4@iGt}PjaC}WthO${@{&6ZGHuEby#BgS9`QOuNG$uf~GTCF9w zkVL~+ZsL*~itIm>Jz0{n?8@BIGwo!@iL=Xsy=ocHVV{ygVAe>}-f$F0T1l*9l4 z5Vy6lIw4T__kxHD_OPg^HGzow+FM%*RIs)z8)5~rn_=^N7y#^%`CcF(uR!7ZVK@U% z6)5~iC4Md_1OP~qtrgzIo!{nmDv8uDcY3?v)Rj}Lh9?!Djj$v4{vMfoYNX`w3MMBf zec5IoBpJMyP@Jrq44ZT_SCS&Yy`_;B92;{jO4oQ&3XIy-x_j|}pH;_M*5R*tbJi?Z z7IyjGwkdUXYP1}oomIN^oYURt%BmO`ny+l^LHJS#kDpW>WmescR%~p4`_@ypsHbFh zHg#qwPj8NO_<(HQ5)apD&fu*{s9^pDT1o!1W7eH12NHs%-p7LvfrykDo5`zLCG9Tt zwa=t_y;78AWK*ZP6g50+Bs9Bb72%$6B>(soM1lF&3STa7Rtv7qP>Bce3UYHl6j?mQ z__TYBEj<@E&s0{fFQfYR8dhFnJ_0$SXgz+5=o+_?(ERwz2fGO$?zK$MrG|f8-R9-a zQKewOWBc&5mZ-_(F^}Nuk=xff$r;)mk_(O4x-*74mFAE0#%aaVXIz3*o5Y^^;xuN4 zd)wBDA1AlkR_(sUw@eT1;Z;=Z*oym76v>Bf5`me&9d}|nQmYC+FTK0|yoCOAe#0kM zo(KQ8O8|{@mu@TB zmNl06h4(abXF%UMW-+V6HVGjOhDXkoS=^RX{W@zR8t#BKV-1ef!*e*6^n7L;gm?TO|$bRiI6fWɚO`c0j zqZv}SQ=jS`TvSx|m)^of zAG`+2waLstCU6Lq4U!7CSp)^qEnV=-MIziu?FKxcSqbVLul04N+w#+M;RaZaQ0$iu zxq_!oM~ff(HLch=^VK1Ic6v+e>-2@d=B1GaBeagc$V}}5v<+8WiwX|5e<;TjM=uq0 zPFinX;=|%*9S==7mbf`r3$t4mM4U_G-l_AU>Yvhe`n7l(8XBBkt{*(;z<_gmkO;)C zjw4qd4ww+v?)XMBb^t>PG;!?t)a&i}QuNo-jXDtDSUEG}0*}+t=_+^VO-zR{3Wd_` z4ebv?D}_v^iE(^Qz1Vp|VcS6L-!)Ll+>j7-izzUjA+-L8k5u6KPuKWK4iCjm>3q^%Snhgj4sPy(aF13mO}x$(cL`M8x;Ie5 z!xX)&;tVbwn|vUx=XUj9UKa^(H3Pgh_X6WK{Iav!0dBvQYl*;9*c$qu?D*n@SRigV ze0@@0(s5!|(n0XhMLdCHq#zR3wf`iTNTy< zQ!DNB-%_H(viCy@5%O6=20BED(C#n!(z00PEFqnKs}Oojjb~+}#NPK^$C;I_azVaU9?QN1(|px_eAL>m=vwFC*L^R{y1b`f3&hY zo=;Yqn<6`W6)+Enj#Tx=JW^`St9cN$ntK`OA>y+3~ z_E3P_?8I>iuRYBRYt$f=x42m8^!$TSKH(b+L)v?KxF7FK@iN1VUe)Xdpb<^(A9tCb zsL4yJ$;+xA<>oHg%EW=gn0-=sF_5KLt9UZgQ~it>i79-!{^4Jf4b*S7N1m-63)1-J zHqP4iz{T}=Zc0$CMVFUV-dk{0l%MgHRC*v4j&qUH`!A=14WQGU0?hDy#l611)jQpH z4#pzTdHOfL4EZ+9>{tr{Y}14#)$X>aWhCnSW-fLhClfo6lyU6Z1-Plx{aLg<{Z4qb zSK0N@TBX>kezDY|^}2;r*lVo|=YK)w;g8Pr>C!`VVJ&JU848G7w*%Oxh0{#ES0Z*| z=e^5hcoC7t*EoXDi3;;qccx`CZ9J&X+aGnovGzW$FaS~%HH zaHU{+7$P{7svr2%5~gqMbWGn6fz%HS5H0;D@MqTlxe}F!brb*!-vdtuvqJsIfGwRF zN~5yKa9h7%I{YM=d0+d6g}`(4KOS$_6UY9UD~uMz2qe?!^x$wGCM}qbpp%*UG&+eK qiD39MEEqmiGS<*gE9^&etf3Z-gf+a1-)a|h1Z;mjZgrnPyzp;18ma~W diff --git a/launcher/resources/multimc/32x32/instance-settings.png b/launcher/resources/multimc/32x32/instance-settings.png index a9c0817c931c2251632083698b571da359b12fd4..3447c5543a4a07b6d2be1d30129dfc8465e04f9d 100644 GIT binary patch delta 2419 zcmV-(35@oq7yS~DBYz1*NklsqLIVVYzI<<$z;A(hn+t%ROwr$(C zt~s{QLG3h6(=Mb*T0P1Ur&{D0A&xuL2qUHtdP-6=FvS!VlpYQ28_)Z`Wd8q*5@bq&AsHjjpRaN!0wYBolLr=4D z<8Dl|gj_aDHh*V{Y6>i2CNOQpB@sXp$N~i;mEe*~8@TYIbE&CmSR?{eo)91u3h`W$ zW#xD_U44xuzYoO)9C4(%1B&y{IfM5*orb({7)3)I&^TO-U9EPoJm2s-OT6|@T$RKwg#m{SJx zYZ#9Dz_CRS)CBx~-%?fR?*im<=5t~gM*qab*vNDwMr&&|_0?&>0!$u09#*bgT=U6Ke&MSN7PP+(a2Em$4fQ=IV`C#$I2`Jo42CH$FQ;Qs z4Mwi72JYKh`9w;gTpAS*gt-w<+2AOky&KbP3OV@WDRhs;L!v+xZQcf;$kQ%$yb*S!6YkuA+EdpOv);%2v0}( z-gmzkKGJ=7JCH6+!rIy;tJ z;?!mianq_AcJJ(Acs$Cs9b4(^>*;ae5n!wkpuhhp&n3}a_UO%iPL+p;`$ABN4zsf} zJb$0W`kskKqZ9FXYF=AYfU>d_LCFJt1w8q=fLoxsArt4CmLcAD(OkCeKFG%&9AV5j zgR`4uuDf~#0|UXp0}n`*;82(Y7hZVX^RjH&S<}Jb#7HC(qaskr()m7+oVM ziA4Hhu{cN?r=HXdvJHBE>Dj7Ioi)TqS46pJK{X%x$rF5exQ=Agc_?ZQO;4hjqs&I9 zsSH$m-EL0R%u$Fdb-i4?Q( z6yp1`1ay5B!5XlwM^`*?}H_)af}RPQrNbQu4{{zuV~+BI8O1% zN8iCM>+fajcfP?udlyTuzlRM^ZbEU%oORYYq*ECu9G)`5(=*1z#CW=YU?4UX3dLq- zro}uO4UUfX9|va}u(i+wMq(Bb085fFH~bOv@J4?p zaL=PCI3vB70$JBd^d5xf1<1FrS-JK7?_%yqKP&ILlj-f-NsNy%FPCBBq2J)UXFbQ` z5v{v>&raY=H8u57ueTv38h@1&ASN>5@FdSB^~Cd6K~h!FJ(!sk3?9A5{fF-@>A3WK zTCTj5nPW$p-nfCN2w@LT&}un^CdasU?aP$m!M;nLc;eBo+3WG?7zYyAARANkP2+LKNpdSD;1y}OAEqT9EzUH6f=c^&hYosOMOQe0YrBWs+t z`dl=RZy~abg$oBABY$U7S{JPe)U~~C$0y7Vi zs-StRaTixm5~wX*)7tR*s;a8h-}=_)?@Xr?$K`^#Sg@*@`+wLi>+kybrQi6rZYL5% zAA5k*?(HOZZ6hN>?D7X-{hK-Uob%~F+|RM@0cNIVaU4ki04_x!gJh;~G7+5QBz9y3 zzd206m!q|{fmgr!<;#~XJNAgG2963nl&;jhB zVIH$IYtNFi%zx{apQV?3J(#*lG9Duqjp8dVqN=(Q+cvRsCX>Ms*=!coRfHt@uuX%e zxuukrmEd;k^!5%Sj`%j9<(ZA>^^$bMO?O=XGpY@^H#4u`^;6VPH*h$>ZGK^hmkRaVSffq(}byts;bDcgv;f^>(vnu zjmCxX08c-?A^D46{B&T?o*lmutK|F71o(P|f9IO-e&tltmPqf}PUi4_tmEB;W)l1) z<4%7gmVP3VHGTp-445D-sjY3iVCBlQuDIZW3p>s@W3}4S(tw!p!dNDg$qQ?xAFy7tWJ=53MHzhWpsc<;h zYns^}U<8-|Mu7-m77m(I;Fbq!+}ZePHBNV1k!Db0X+N{^k=aGf(ikwc{u<8002ovPDHLkV1n`Q(e3~M literal 2983 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 C8*<$M diff --git a/launcher/resources/multimc/32x32/instances/brick_legacy.png b/launcher/resources/multimc/32x32/instances/brick_legacy.png index c324fda06304c72b6ca19d95bbfc610b60d22a4b..cd4bbc42521890bbc57efa936ea33874842d0f47 100644 GIT binary patch delta 217 zcmV;~04D#`66pbu7=Hu<0001iRA&HqokXmaOs>0*;Rf8gQ+Z7g*I TN->!p00000NkvXXu0mjf4+&K) literal 2388 zcmV-a39I&rP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1b>a`QF}{LfSL2qeH4j>G3nZ_wj+`I2SF{*rWR zMG{3(O8~n78P)#zyQ{zOBQjoD7or#MHGWpCP(mZ>^^fT`kqEsD5F;Qc5<4U|O;B_XP5m&>4afSohmRZd%vn@eDp4>Zkt?vPP z3i4^G*XUoZm*7*{{rnP3zhi{P+ZV>Y5B?1CZDPJGqURUE=5A~;)zd2Oz zWrWD+c*P2K(NHeT7|e|;Mu8C1H*anR_#B&lebW!53I^Q_bA*FQ=LM0Sd1#9#&x~;n z_mx6Mg}MO{BFybz43ut-_J*DD5CcĆoaD8X`KOBoCp=cvL+LV|cwfg+8$@l7yu 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 Bjrjlo delta 1507 zcmV<91swX(3iJz*BYyw{b3#c}2nYxWdaba+4Vt-5w#u$hT<4)a}7$vwc z7!zZH3lk%V0ZQoyBlKgSozBO-?;IEJzWd&5XOIOqc{6wJJNN$2{hxFG_YSH`@&JRt zN#I*x0nmr^EVwmK0)sis4EQu~;~|3fdTs#I32vaO1VJzjoCg@6*ggBs`){`ozH+c? z!%oGh!HQ-6)_*)!EmjRnt4mlh7%}X9dM{QCRt*cc7UFR=3=9om#A3w|w!-?{#oFy( z&s^+VsjciGZbwx0$1n(jLEtRFi$@P%IDh5b#H+`TOzwEBQZZ^UVliSoxE15U{qKxj zI>&lvijNj5k004NdF-3%iOLHD7n}oUgCH0TTwFfbJ%7Gy_J_;gP0Zbz4{Q_zF4X2d zz{uFB2Ok(3@Ze#&=*O4qOCI>zjjLF-7&YwMKZR9`SY_t=jQ;Y*?>E<08+(9vL*OvL zTc_S^3*x|&T_rn8ckag%7Npaa1)G~^5i4k<1QEgHu_xM&g~LVQ5WvBgpQ~nplYX*5 zLZ{78Z-2xfqHLL$IH;B=vPdMT1&tK3%Fr`IRp-E=BCrcU%2KH<{Y(EN{eF@6o;^h= zgb)aVc!nx`eDxDT2?;f%zE<~6oqp*vN`v#40006(sD%fZ8;3)zGVTW#B&c zY9(gCC80*?yOaSC02nRX5w`=?95qs{@5{0TE%x*beW&>6uSG zz<*y?F8Th~(`RTHFzGq~ocQg8k9Tdc21$RR=3{?(`S0#YnB+iO?=~a3HYY?40|O-} zg`25Pl1)5#GUk8xO2Q8@#BY&Hz zb=w8%{>>+$RS&LKdM9C4TukIt(S;*BA!%DjG7J#sfJ6$Brr;61%WzwN86zP<*(Ib} zmM<+K;_5onp8w)?pIEckXMO+nM}Ne}cL1v^b-&x%V$Ivsm+QF=c`5O?oXjzs)^$2T zHJjC%>(|?{IwmJz&L(->dC)xsntzsFEE?h_q?9Wujhaz5jg(g8N|5e%0JVykeDH!K zoF{%h?vB@`I966@Hd_8VH8nZqkJP0*%T8pJk>L@4-I~8SpQAlFc&ejSKR!G>48XY$ zf66n^SZQF?(pil!kVHzSY5d~Nm8S1^RywG}PPU}unKJjRXGI$7@&|06MSooynP$GC zyaOxO>Zri_y(UP!yH3lX5-ZxO-a|z}V7P5JJ7Coc<>hezsUo({{Z|vn4HAh)Cm9p002ov JPDHLkV1jRc#-RWJ diff --git a/launcher/resources/multimc/32x32/instances/diamond_legacy.png b/launcher/resources/multimc/32x32/instances/diamond_legacy.png index 1eb26469788c26f4fb96a3a3fad652ca8b6e023c..3ad9c002f36c9c3feeb8ea220f5112534defe830 100644 GIT binary patch delta 212 zcmV;_04x8D6XXGq7=Hu<0001iRAt*%h zaQpBMy1o0f65Id)0E9_IK~#9!ZO{h+z%UF0!KYvfp%4nCU<#rj3W43d-Tl`c03xFg3$U|*Nax zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1Yuvg@c4{AU%t1Slv9mctm)J9x|QWRNV$KECHh zJS!|AKs996fNKByx2u2fBZ^u%mf)lJ8b23Zq=Z4x>lf$UXgBZkM|%nHw|R9g5T-1i zcD+j4`xEB*^}(UTeWch)0#JK3yN(Gd<=3mHE&bP-Z)L! z|I(I+W-A-->N?>BC{@NTOVli;aVNViu;fUCZ{BzUd|aD;eTg50Dj4JmbAW?M=OrSudBv8UJX`Ez zJXZ=CC3On`M9|GJ##k_*y|HY((LyA~0LK7=5-ca{D1!mROch2F62y}d3N&=%8!>Y) zF?kx(s7)Y(tw%luFqA-+bBy>A7Z5{mX`#iII%2Kc?mBnhrH3ASI$7JSzFmL8n%S(;WNPe_ zlQqmLkwb(T<%9=kV2qpr<1!dPK-1t%2jd(K<_2dv5|V-mM)KfBRWld^g{~RmZcgrA z%>9Zt#o<@H(Vv)8gS!6*a|+bG^Y($YI{I9hjIAsjm}-mcYn=k(D5TD=kA{M`ko4O# ziDTo~7kFmIP#alm#U-8Q5WCbGP^@DUXOz47-ROMxCztsVc7#Jmb7_uhDNeQQmv~)6 zt83h?>lw^W3mDzo9nu6YFZ-lqeOQ=49ZD@b)AC{Vxft{Of@5>9xg`%+#?x?NJ4eX= z*g2ikuxgsoO6)oaFL7uDMUvS|YxMgrng3>rG8p{0gJ5y+3`Pay{R7#!5q|)hx zzl4RB*b)zLtAg9nwS`%T2Mg4ex`57=)-alicwT-WZ#w&%`RXt1|7x~++P&ctHVwJ6 zObz6AG>J2%Jp*IfthUi-wDjeFL||(~_+ol06l9IA!g)4C~n;#(T*f1z=@e17fo(ijka@PC`85@HlpSI!S%Cxy*|lZa}x!Pc*EKr}pav*B>3t1Kt9t^N>(%DGdmlT%kZ4wq3d8?Suy zIIN_@l@yP0^RfHn{d)6)1N%of-%7~|&`J3PsF{oEnT!`A#*aGiSdeD^|>ovCEOy)^RhFcYm4C> z$T(D}-A!=Dzl6mV{$E2R|084ld5RI=Bjg;0K74qm!bGl=#1-&?3fz<9@um z_qclp_!||bnqA|7s#!)lnGmwMRiWnT{x)g6H_UhmWs!ah~OU?$6Pu zlb$Dz5(~u+ zmOGf043&6_IHsr?<@>WPE1b7DtCbpS-IKpCl-E|4xlVHkNi1RsA_T~&p^OSF#A($? zF_EVIgol5?@r&e=$yEj;#{#NQAvu2VKlt6PS(uz~lR^og`^C0DhJl`4pjo%=?_=9; zo&bSo;7V)zs|{f0lk|F9iyZ;sZQ$a%t;u`9hg8%>k32;bRa{vGi!vFvd!vV){sAK>D00(qQO+^Rf2on!0Gw~st#sB~TmPtfG zR9M5+mpx9yKoEt;act~Zu`q}xeHsc{l#ZT~GeFHbxB?Qn3k3)ynn?5%kOpY5OiU~* z6!AlviPt}(@MN0ode^J{X5YMZtkci=iYnqO=ELF8YBW!VeDCr3g@}lH)N%CDxZ2w# zBBDd`*@S8I!TQHmP`c1Vl(7E&B4z!{!9MGs6u){h0P>6PS2iJVheSkl-gnoet8&tL zY6~s&*x6sZOSTTF%YckJ@>%W_t+Z0@<8Z*WBG&0X12{9N9pp!LR_r({B~O+yJA1^) z%h@^z%qQPdt^ttCXi7f$Bg{&xWct3YhM#nyBm+<_9L}tEUL7Nf+4G4wTeCmVmiT}q z-%zv2$SkKyjhK8wj}PEBYfEk#H<6=Sc06CX2L4M9QfL8pf}F1>1E|};bxL%L<2i(>u{zs2l=K}>@9J^_TJ9bZgNJwJ^-R|Snchme@Y;e)g!eceMC*Uv734Esj0000< KMNUMnLSTY38>03A diff --git a/launcher/resources/multimc/32x32/instances/dirt_legacy.png b/launcher/resources/multimc/32x32/instances/dirt_legacy.png index 9e19eb8fa79ce150c2d1820499c68294eae8155f..719a45ed5910e01a94e1014420a219128c9c0ca4 100644 GIT binary patch delta 195 zcmV;!06hQV1JePJ7=Hu<0001iRAFzk}g&iL@oAd*0MOV}dk(|PLp*)T|u;~}rtlQMb3sKXz xTpF8gxZibW?9;ba!ELWdKlNX>N2bPDNB8b~7$D zE-^4L^m3s900B`+L_t(YOTCu64FWL`MBNT8AdwM~BY{K-7k`pa0HOnWp*v1D*6FQ= zb;KTWVC~t=er9LgKF`~{-qUGakMn+AcO`Q2WFLI7oLT7LA}tCG<{CmA0tZ6g4dTAnJK^d+N%qR+ne z2nqqn0q zYo{A`y1(t6%yIL0R=Hh#P$KQAjuYct|(;+hTkK9cn-|<8u z0fHzMfwk50(7sAp=yat#bcIqLyornN`5k}bHN2Mh@LtCF-vr1!mDXr9kHLK9!L0@4 zJOO)1K;Dq|pDGohZ{_n(Tzt>(_#3a`wY-P-G6rM)S2ogvheD>OJP?uHtfG{MPmzF+ z3&>|`W#l)lrhoEpy*ZJzx*A~*b;23xhSlE+v$G+oHzxj82&@%{;f(jf8S8<6vJV-{41AY=&Zcs>!!7pUAx~jhzgRvNsv5AqEKuWdYaK2IzUWKeh zRG({!ihs2G&QEK3rj zn6dgK%zv(?e;A7~8JifyT7&@8LdCjDPu2WA?wsJ-F6-gsKR>~rNTTDDhv2*IB&dgO z4SnSy7;UvM>*Fx$;xHTL!0KoKNjNDI11^a*Cg)}1J;o*mvF4Rx!S3Ucz+AOI!J3;b zHPDyu!{$G~4nB7K_&F#S9t3rpHJ}Z&La#1|UVjmRF*^o59)l4t14-C(GvUlD$0|~e z6^21gFg7uWH7^T%cxfDJMW912IG;5$8sbT-uNA%r&cZc+e2Fz*xd+P8J3?Ja>RMX~ zEm8_CP%NtmI^Rcw&}F4aGzy7!W}*!&N5*nPn6c_OtiF~cV-tf|#3Z(BHnCW)5(})I z>VNauk>6~otGRqXygxjM?AuR+a@e*|$GV`EhoBZ0KrP6Dnx6wDKO1UMKGc#z@Ou(7 zs$z39(FA8uggMcR49NgVutkYMEMlgx>EA{?8dGDTeZ@##XP?{B*Tzok!}sX

    c`rG)~N?E=osfX{EkYnkvl z7JM0gC|R?FKmqjfFpTO7DMdBd9k!Ih8SSPX*bzx$5Q~_^PW3*ONk5nM9ox#5+JBjA zO+w#zCFp}~va7J9IG;OpckXxKHFS7Y6<$r2X}~wbFQv(a&N5U=77~@Pni8LlFe7djq)b|=TMBByoalyr(3UW_TN{p)VQ~UWl)xUM za{J))wMh!AMb%|20kg1xNOq=6LemJ&47g>ODWa6_V0)&tASE!jTpjlH$A7`zd^HZO zG$mL}gcJ$|L-o>L&H6bk1BK;gBV5APqZTMY0(0@bWM`%jWC@C;1W}mMf`KcKM&09= zAa|2hV6@hx5#eHO$W~#?q_QBBk0h*?I`;Mg5|RnFog#Yhan0mw2H2t`r!iYy4JbT% zS8Vd$y{NtEWca22Vq$69aDOo)qFK;1XdZqMqa#|dyG2N?bA5kKIS4=?8WNSS=5uAs zd+xpzYG=K)@fH}80e1T5PatvBF0jRvXmX1iQCce&8%~l0ZIpJJBGJ`E5>z%7&Ma_I z@$Rem1kH+$sf%;=zj-Sz|L%Eg`|#z+mssK@X{|WzFyi3wuQ22e5`XGpVG=T=j6@}c z$wjfbgjy3&H(miVE;}5nesn+X`0-_&_2EN^Y_k?P*f`)8A4XG-V~$W6r5vdott7Fa z9L++ab~b1>hIER)Y#+=+wn6C0OK`w9&*IUaU%|N_KaBb#c7oO22pR2DjN>T|Bs@&; zP~nmoWH~rsNWwjY^nbQO-()4I=N^E@ckaO1KRu7zzI_2(KYkSow_gvYn2=Uok@i3` z?IRg8;ZL3Q+;aG7R3lwtt76yE+uGUtVdkS3p!wxnQ1!qC$U1C$IIE6I+7sOQR7bMu zA4;hStG6Y|Oz`08U#1_n=)>G=Gw8?e4CAovVC}L2j188DIZ)b3!TrOUPxDYZ{bM;> zlt*u~yD4cd*AG)hHZ9haL8HreT4VL!vg_#|%a{HilcoRHZ0Y|wUFv_&{{^g--wTy7 RUeW*n002ovPDHLkV1kHCp7j6# delta 2108 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 AT>t<8 delta 1732 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 delta 1591 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 delta 2404 zcmV-q37hum5$+O@BYyw{b3#c}2nYxWd zWqBkjMTpV{kZ@ZBG^Bu&IE_;~Byk*PahB_A-#asB`SWn?N1F)wwt@X4*S*tkPLI z%T7{8ng$xavog0OARxTEM;He*D%?Vvh$1p~Hnzm!Cs54i>dVFF&(i!NFbHO}JPO0~YF85{>{Oc7((c<*vzT~Vy>@Xm)Af7N+8+?sG; z!AzYJq<^Mdulfc8y!PX$yK7^ITC*O{2E6usuVe47nY3f!8?(E|3$7MC(f<6lhYMqG zZU)D~Z-$Z;y8f_Q`0B)clWJ|78Xx9jb;+k5KP5ktWZ4r@ zbM@uczC6bCsp??h>HdDlcOH7QIJ(PcMK|=G9)EaO=GdD%sg`aA$HIffsWlJgrq+D9 z>*afXe_`<4$GVOV22RDtHuKf-?KySUg1uPEx=YpJ;glsmG$}A5rtnadjTcKm>H8gf zcRgAh-Gzm~t9&Sb@Lrr!nTDwYj=A$NH>XGleJh2YUReF6fS%%F;S*isYnRD=Y2~3o zSAVnN*N?sBDo%T>PxFkA%WbDX7Z!ym0-wqm)4AY{Xy8>E)hb7R=Q%j)Ddu5apRj4Y zQ0@>Ug3Ad^ANRDE0|t7Ql~KGCovs!v#)LR8s1pcpW5N*#KNvb~P3mfV{LM=rIkZ_% z4Lp)PcppyL|6R-UDcHJ7xOWJm9FSQWA%6n{Z7`4#Y@jUGgkqrJ;HRgCF8t)w+6(IJ zyf{}0Bx{ zf4i++7fO|B<=~%`t^LC4@)A%h@YWFWzyfetp{5WmsT%?%fkmY+jI)n*pIZ5gfA^-E zx{O%Up2?(tHt*Z^hKST67?#qpsN_t%E)vJvpNwsv42=sv-FtX#;8cheTIBkav#ffC5zt_SZZzPoeeNncmpDKUR3k9jK$eRocA|(=<5@t$>m&D zC<~w2d}t`CX^`_K`b_WZ1AolJY+W#(>qe~V4P!Obb*VU8MKvLp(+G~L%WPZ-jGV#y za>wx>?p0%pFZS+z-~HLC!Ja<29K%3cqbh&glSU!=oXQusj;*EIFk_s;fh+LHJ;8Od z^Ns2J)pTd_*x%k%6=Py`ZVK=J8K!2A?$thkVXdy1tBUcHfwf2Q?tdhynScJurjuA$ zy)NKtdR>9Q!`!Qms0UOo}?Hx$#lry_Z+uY_~dJ&TEim=QY%ucEd}l5JiGk5cadHVCU6`A5mVsq3P)Ar<<2eLNt!SrIm{Agy=Y|g%Y;$th0uYP}Ny62J7Y2!R zRoQ~cO=lTgb2gK(tLm?(BEH!eO-+{`%vKSu4Z>?GBOe{^_N1v8gx67 zE=|Z|j7Sovp~_qw)h;kPUb|hTcO3Kox}NXe9l+5Lw!p$ah0{4@%NEDJeg1B*=l=oN W?0IygGoJAP0000 diff --git a/launcher/resources/multimc/32x32/instances/gold_legacy.png b/launcher/resources/multimc/32x32/instances/gold_legacy.png index 593410fac9a7a929696dee968e112d24780a01da..99d91795cd11f8d099f9e6dabbae02544f1b7f4c 100644 GIT binary patch delta 212 zcmV;_04x8#6667p7=Hu<0001iRAFg3$U|*NaxP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1Y;vNIPDd2KYw@i7d}K@E5{*v@m}NO#0e!-qFx`F|3j)@cz)Q&JIG8MQPV- zNZUT4ov#6h50f9;Rop!k_e8tnn9vT-!&|+BL_4i^eyUcc^(oE!%KH*}u}( z3e9#l-qpRq1w^SbtSnKpXvRO;jliy7!Y|_ASb?3f0d;4cLSb##NDz>RQr#|V|T9fscre}?$x*q(^!u>-*mFU#4#-fQf=t<@#x5mCPt zrPUFgF$RViA-8jw#}n{l)WduPPt-{lP+oP>8BZ}{2&{BvoT(<6ZrUu1DS+sxQ9wyl z$j-KC0|^y7cyi-0oq`ox!64Z}O@T9K>BM5DUzz@jiSS$vOvzv}gCQRu^;74cJgWCH zLS%G2V+C9^lnWSxx$zGx5Muh~jc0(5XVb55`hirzAkQ#IEHLT3rpRnAZQ04Qg&m_@ zTga$T_XG$Ld^5lp3kI||mW?+$5Cvlp#|VNFkdt+k!GK|=3XtTi^`rtt8on_mm}yH) zo<=ir6Nq5zv7aIsN+8QQhJJ#J&`@H_j+s3Nj*5kox88a7-UmODTnaY0z`=(QVvvxc zjV^NZF~k@pCLyuNfh=BvL=j1eRDz>~xf1LXS~6vuUFPg_$T3S!1@bAbaPcLSSfr#% z)mEg5>T9U6N=?nEhD_01HU$$v^58~QGZ+Jft{LKPPVO$| zzT!=B{E9dFjX5=_`#+ddpzf8oH>}lh&Xvj7+Jz&g+G6*0$BCj!lsmRhZ5nU*>gSSj zHI5AANEXEsz2jpj(9<|qe%_F zm~%D97S9C~-V3mj!W{0Krw12z=;~|it^5dCyPporFDS?fA0$1j;*v;2+TTk@V9zzw(Wfvq zIazYa*KD*|!BLy*)_iF}+Ky*3wS_%bh>c|gdv+z$5Q`-Q{ZwM$bmVCG+g zr6j#JE!?+bGJ>xygz!emx52l)jL21^7Kt;f9yq}~%T{~|xC6aa82{Rr?!d~VYx5?_tf8`0i!+%1>c*tbUGJ%!;Khx|Nr6jRmRx;+~A zw-;evk~&XC9QK7QnCpe#ZA3F7?Ukxx8?iTY9>L zu1sM**v?Y*$*K40kOmIbGZS4yuLTceK$LE$Q`%tyhH1-XR1cZx}JW_l-{SB$1^ z|6?Z6K=g7gIMVq&n_u#{A$*XhderAB&-0MTtBrBbI@;c5aP`aCczJ!j2?!NtJXU#X)qy zh}TwB3#5yO@APu#qmNg&+dTVzEX>4Tx0C=2zkv&MmKpe$iTg4)k4(%Z7kfFM0K~%(1t5Adrp;l;lcSTOizPKZb#xU7%UF?eAmTZk_;vXW&X}`>PFL=9Bb# zTZmKh8cJ}t~nO1*4f)jGB+;`-K00006VoOIv0Qdm^0RIx5dxHP~010qNS#tmY z4#NNd4#NS*Z>VGd000McNliruXvdG;^-41d8-@GHD|FaAIky+{v&QiL=lP*@MmY?(2;+u$MN+%`KI z_Pu%YcBA#vsevcr?+sgTCh=Z*GUR`6^AP}GfS$u1E4#P>0GPo!ONhSi*!p04*3;DeCQhK<&f) z*sGQP8K9n#+AZ>N;zwSUtoL@B#xqvOPE(T)s;gE5kvL&jI`#>j4(oySo k8KmZ2o@>8ot1xmtm+QG>EmSv@Ies6Jw%IFrI-kiTGSt3i#t zU7X8oWTZN9uttBsRg%GCm&RvTmn~qRHf(Hcaj{2vRXUbzN`JY9T!)8;lScdG0002q zNkl_EKk#t^y2YNix;Tn1jz6 z$*c+t%=HvD1AiUnI?z;rk*N-?D;nIQOtMr1VjxFOW_qHn0t};>OP=c_WGKBFz$~6d z2Out539@*eZ00GZXk2T+{Xu2;szo-}m+~ delta 604 zcmV-i0;Bzy1L_2j8Gix*008_L?V|ty00DDSM?wIu&K&6g000DMK}|sb0I`n?{9y$E z000SaNLh0L01m?d01m?e$8V@)0000QbVXQnQ*UN;cVTj608n9RZgehAMN}YmGcGkQ zF)%Rna-jeK0oh4JK~zXfy_HEz13?gl=hp}xJh~8!D=J10ihl-C6k`ashFN%l= zf)EtUMQ}mf#kfL140`b5pYo9xOAN_#qXKtE6>@o zVC$(53ZXE^2^aLhd6cr6?N zx}GzhbAiKn2vCjV^!6~Iu>Q3+s&RUP`s6tmP`fB*C4cQraF_1Y8IBnV&$)m`T&>v2 zemcXIL~Ya=>%CVd0c(-H51S{2*YI!71BU`O(`_7Ww)oj@SLW4$2EmTCd`cGJ20g;B zx7d6yoKZOs$|T@t3sYH*ur;AU(;CY2z@dOfR&B9W%9q1lvhBXP7tJqCwRLMol`LSJ zogQap{8h5ZuWS9&O`Qn%yz!an=H=&0000EtG59wr$(CZQHhO z^H|H-r1)!3*K^KSCb>5$V-p%0nk4erW|g=(Nrl?m*yMGz+E|^k0$rPC#1x4eZf9c? z=&aM_)fgGc&E3`N?dBr+a4w>+Qs|m=ZEsC>T_DMd%!Hkjc7K=+FuOBS9?Xap%}A)v zA*m6E#KuaYYhuPynRDd}&?2-1?A~Y;RA$8I^wE2d6g_mWt==j*uADv^AbKJY$hiRC zodF5w3m*E9-a5ZSm=)&|9XW>2uhsf$qYDhN^H7Nf>>`yT;jdt#G6jI(uK$FQa2d10 z9CFGP%*YQ%7k{W}kJ%h%%m|fWg0ckwhlJ-GE3CsTU)$iydq4p*%7)FZQdJn7g1mt` zP{yJMB`qe9&07uP7RE??gIRGCd0kKM8tD0p3J9D3i~_sHb^r$_bpxkn4FLzocZ)Tt z2iVZ79>^D@2dNhLUtrz9R&tCTBRYb(AKy5nBUsR_0e{#(wi{T`wn9?=paL6*wwF&X znFJ2b9}BjO=$5F!;$BVVb1SBS?c;lb#ht39y+F*4?;hPLC->Ytuub0CzcmFret3LO zvg2*Ck?Lq(v{(}lkX;fB@F{^PYP}+|L<0=$SO1v?X z8L3X{!94B^;76WoljO%CL);zfEin3YD* z3j`UoL`fugK1RYAvbiQ^B;=r%At*pEjr7h&OPExa;vB<=(Ju*6Q6Uw`n&BKPmgHEA zl{MrTX=Z|(aVZCS5}K$YMtVf_zNiGc7DYFSaSlYoY32{j^UvbF4T3=c0000m7=s2)!bX zW9oTf01-tIx3TI$Du8E11(p9qz%23{$FT)qqbOo(S0IjK0Zawscx;nz-)=Z z0}~=h+LWv=27jsnsO}xvt&4w z5Vk0#nH)5^6QOiSzytxuAnZtH1Ld9qW=mip`z0H;4v*wRhfASvkqkb4y_Wb~>uq9C z06>9BGE9fD|7-XsYe)iosK2}T$@^y=&IP{gh5VSqjoodZApL$eSME6c@mH~*-`vYF z^a>1JK!2A7AD(^FVXJ+Iuh(i0OQ{{+-1aqnr2K%xf9`l|-h1h^!ykOUu!ryPRiGVG z1sFg1m>Um{^AA9 zfBy{tU-na{U&g8DU+KAi_PYzX`oq_)(IK;7=zjvbELd5*1^`%HTEyzyjGLFisKe*a ze*vBD^)$Hn6W)Gn){XC0mmHqH{2RG?s^`r<`t&o0UqAD-!-Sx(fT34l=mNSdSX{0;Y_0za z>VNzwjc2AEmVxTIrq=LQCI@ap0tYJ8eb(N05J>=FfcV~ThX5kM1U7TG?XOCPw$DB8 zi~N^sNeUnVkPxvEByFpH6%NEzV+?ASt~Ygy|Z?t*?Bl6;6+)+My^@naKt9k4)AbF_ZknO jESMxuX|)=pz_j@b#{Y1t14Ab{00000NkvXXu0mjf_5Ros diff --git a/launcher/resources/multimc/32x32/instances/infinity_legacy.png b/launcher/resources/multimc/32x32/instances/infinity_legacy.png index bd94a3dc2dd1a7a9a6d7c9f02e4fd9d33f793e24..62291c782ea09238a6ed06c3c175c75dee6fde11 100644 GIT binary patch delta 1311 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 delta 1767 zcmVs44I z9G0Ususbwk<*`~l2MIlIda}z=Y+J|0;LoAv6>3?AGn93gw(XGCV&h$%71jf#DzGxl z%|MMOn-ziC?u0wwNhZRMj7Q%ZQ4nn0iUfc>ZEu%ap8J{YPYv{dgyGzyqQMWQms~w#&2ZkAtn>o#)4X1*> zpDm&Vopb@^RTrJn3PobD(iK^%l&DjivQR;YmK%FW=E7#`g7F-=n8A}BjXHZ1O$CE& z3O8j8)O^H3bKN-CD-^JDC73e78DYxDrhXdyO;f#>0e=zcaA1YFcw{cZ7|e|)tUw6$ z#hXlk_qOQQr~E;xfrZiXhn<<5+nPJl4h>Pt%r#9S=3mrcp)4p`HR5N+8QxLH>9f zkV8p~Sbq_5;w31FlALkYiF3}oamXcay!GOp_dfXOQ!v2>2`=~$LJTQ#G&ln#y69tw zF{Z>SVW9+H3HAw^%-Lj{CA;i%$T6pa^eMJTamANVVo8;&sW>L8tGFGgS!WFw|G+$Zt=$7m{Wtg|ARRN z>Rx$!!&)8RxiT5ss&HVc4XUq;P8?Jksc$(zCKQPk{An#cO%(;1Drmk)by3iZ&#OGv zcz-PKow4e@^;Lqc_XEal&hW`@tH)ntbLpyy?x9h)oZOHb)YPQl_OsH|_a9YJcWtX}si!GJgoo36YKd35nc<0LB%8Ef2GsE@1^+Fpe*w7gjknbSlY#&M0fcEoLr_UWLm+T+Z)Rz1 zWdHzpoPCi!NW(xJ#a~;+B9#v9AnK5zx@bXE#8InIgbJZnXw|{w(l2PzkfgXc3a$kQ zKNhPFF3!3-xC(;c2Z)oSlcI~1_T{x)g6H_UhmWs!ah~OU?$6Pulb$Dz5(~u+mOGf043&6_IHsr?<$wFLE-Re3 zIIEQ!Yu%H-FqGF;mbp%I2uUnr2_gi@sG*DsEW~NmNHLM7{e*{q!10UZlF3yDBgX=& zP$4;f@IUz7ty!3yaFap_p!>zPKZb#xU7%UF?eAmTZk_;vXW&X}`>PFL=9Bb#TZ

    7V&> zdFrNlo@)(sT{qhwh5>-S?*X`E*{V)imWFIVeKbw;(SxOwrg)&L01!gFCg6Fq{VhG& zwuWpVP7(mpG~G40L|}vJ`@X+AAB5qbQ=rN|3YJ{2>wbGESaSIm4O{Ma6xdI}yE5T- zvp_c!90m4Ma5NL_qd?d7x|!f8Fo%NaTW#;l=J`*9V771k1|AkxdXQjK9_9c5002ov JPDHLkV1f_IP!j+E diff --git a/launcher/resources/multimc/32x32/instances/magitech_legacy.png b/launcher/resources/multimc/32x32/instances/magitech_legacy.png index 6fd8ff60465cf71651ad4db3502d296bc88f084e..bd630da8f6db7356f3e443c12075c707f6a9ee8a 100644 GIT binary patch delta 2494 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 IM6N<$g38kd&Hw-a delta 2638 zcmV-U3bFOa6V?=vBYyw{b3#c}2nYxWd3tG21y z($bbHB&m{IG(m-g5~n%Tq@_uy$BNC2ZLmGqo*9ol$33(6p8vGg`g$>j8sijsN$YOu zf8X!@*8i^W6;B&8(welgK{J11%xkuxl|oWJ4_?* z^m!6%BR8^|TYsPD%d1hb#E++P0Cw+I4j$C^BlQ0g5D=bvN&t8gIJ_zDY%~Xrmz&*c zx>a)5p{*p+G|x0oCs@tKbfLB2o2?)Snt4-`1|tV@eey|vLj(kb(b2HCI$h3P7C{Fl zpYg$>sT7UmHi}}eWa&oDvZ}6Tv9?ltn$K!$^(4*4f`6{&ZIY*Tle#ml6+1<}zQX9J zy`CE3b-~YkC+_QM>t;0?jGc6lXU1oh)VXGCeDMKwcDVk)AO0p*!2uSkUwrI)6vd!g z@5H;Z=C)bn*&BgRUW?m!JsBC96_M;(65;j0dwi)^ZLv*_Y}UeeOHoAL78ymM>U3DG zty~R`1AonnYTR8JZohNSQ2N#s$xp}T$&1YUx`k) z0`0!{_UiPRsan!p?bkf-(Y$C6oL5)!KVt9R8GoR74*>z`tqznaiUCy}F`mAs*ZtM~ zzg~OgfNvMw?k0!tt-i6Phi3I!a4bBs{>|=3?B_XI9eBjuiO7Pgx@#18N{Y7o!#Hi#jQ1T+cm4H!zgB(a02Yi_`Bc}@Td~UW6rBAZ z$AA1Kn4ec9fPq1we?4s6Wa#V+!roGuOQo_j@`8A#UC}Ut;ZEoYWBzmSVJgm(%q-&59El<%4v9J{rJ~;0 zgt`w$8XPY+Y*-SJ)Vy>1AH5?A+wwM_xzJ~Ys}!x^qoq^ZvC7!Xj>&WI&@SQ5t$z^4 zKmY`?Mj%+*&A5+N&s{W6O^`KOP*~Jj)H;Hmbs{3&AUi#5q1{&i2?Y`Om#D}0^r~xZ zBez?9VF#b+dg-=qZC013lq3J4>=_a^_Fk#D2HYAz8EAqoC_W7s8+n|vH~i$AFOxT0 zXkZX4s0b3rn6|dEU0v-*{3ZxHIDbGrgoDyC)lv1f*kV+7;oJ~~t=(H1+ku0#KlM~% z*tg{>@Q<%`&es)dA@_z8gHLd&|C1d1=C`z#Mm8u~9q4Vu| zW3Pm;OM;c4ip@7@?$q-O=f-uwyqb#=!(=I4A2mY8T8Lz8d-FCHGkgw;HPVL zh9d3S3 z*}3_uUiS*l!Ji!3wK&uBThT)gJy=a`&JUmaD$oDZKeJR{hQJ^(7$YDhbX^T=(YovHyOJ=JGPRbx0f|fq;=U@Hj*^4-?$B173O+SASmyQHzq|y`|i) zA)HVb?P!{opVqt>==#}TKBGy}@$$&Czi@Zu+;IN@ET%Bj88LnP7g>=z_=hk21>b-1 z-KRimh~?eV-`<`S)y*ELO!`y`qD`}4P* zn_F$mI%?207%~@&WLbHc!*~OrpuBQEx9VH8G9)jmNus4gmp08}VR%@XmVRayrkG!D zkXz6ogeY3;dmJNCjMOUV%_EqH@8OQvc$<##tp4Sin>qUz^7!Fq2j8nlXSlHl> z&;n?Uryg1%ifua zMMQY~@qf6ZQ*LrLzgv^!W142$|7gpx?H3jUeQvC;=<4sNb+<*G(U4BroHOQ zBR*UGh)>h~BAl4$1QV+V;);>Exxr#eV^Q=Lo*96O$I0g%#Y~B64vKH$A6{ zPk`CA%Jq=*!H-Zq&$)Bi&mBq?RH|E(X7lX1n)OaIJMRlOsD-O(W^d9Y+rM(+%}P|Q z)if(aR#VK`20A&5y*#g^x%#}wRj8wK9??;}9(DnvIK6l+_BH3Cw^EQ$Jy8ZaSNCaeZiR9g!iznrM* zjYYHT9^AJtVqu{|5Y*zpRn+;4hLlk?I7j0|NQ}BhCU%)LY%(>K1Mi!bZ!8^)2w*sX w(AX=asgPwtsic(4N^Mj*j0fH~6~Ddy7wvJWA)v4$YybcN07*qoM6N<$f_=R-g#Z8m diff --git a/launcher/resources/multimc/32x32/instances/meat_legacy.png b/launcher/resources/multimc/32x32/instances/meat_legacy.png index 6694859db96b06391866d074da591ea12a9a352b..422c88eebff03dd88f80efc305d213d159f5b162 100644 GIT binary patch delta 1109 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 delta 1929 zcmV;42X^?e36>9#BYyw{b3#c}2nYxWdQPM!LL zSJ!m_%d*Vz(a}$Z5I2Po6YcHo=6*@+n?O7scb7_~8kft})A;t=*L7Xjg%AKJrO4;= z*4XIipMV<&A))OH9b8h%Fwh-6apLzLk4GP$o+dsvMt>@k;Y?i}?{;>2kJi?Hyf`!C z0EMZksmWL@mjAB_2qDCsJ9iGbT&}Yx>+7%ieZKJ1r6s24=C;=S>%jxk*(^q%N&lrZW1gx;fE$m4^DJ6!7hy9wSHTiwMV+g_G$_mk{D!R{|17P^;uemieL}hI) zW}#3Ka(|p^A%qTyy$HzN4&T?;Cjselxjag#0MB=<3{;IH>LQ)X zk+Up>5FXPsH9$V!L%bH`6-6ip1_nHlNF?Amj_!85U8ZSPYnpcXdo3*=3L(gvCIFiA zHvo$A0|0J4evAN4c|3nD7K?w^b$zZ-D3o^7iGQ6b5Q#*>8xDu-l~Nr_scPG{-I}IV z2q9WuVrt&o_&Bsdz$z4QNr@1mRns(V+g=9>N~yVUI6RU_Bwo^q7jHns<8fUn)u@!Z zc(T6!!+_r(L@5vg1xO*V3kB?Ak+n>QQ05{4D}kFF@%tHFSYUi%0jE^LG)-*FBA?Gw zAAbt1H3Wlyd6iDco#4QwlXZ2!_WS)oAp~OML@$A_Wipf%W+*Gnkji9OOr7&#B|bxqbgW3#+SG`8>%~s?2em>U=)017bHFc%x8`dad+q_Kp`r15|l=xv7+z zvnmX+x>m6gmVlf=izX>V$xD1U3=&tu5|jBFMs`2Z*RU>o?4y1F*N*(k!vr%&;Dy?=~POi&dL z+n2h#uQ`r0;`jSAfYJbBv6vl?$ESgt<6~p8vZm%^Uqywl^PP9dm?r;x{20@=X^2EP z9f@FMv&=6qQ*;gkYy%${9OUNbpCg1obGgto4Ufme4_aHZtql#=ftx~z=~yggZ>9i1 zwYRsM@pybfDRpCMcGl639Dn&JXWJFUVi5;$xm-*xEs?iv+KwN`$Yxn9g;9>$20l1E z%wfMDA-^lH&gN$0Y%I13zDqsH^`PHi&4g~nc<;%B~QV*3<>p($DIrlotwtur1sG6D@>(Qe} zlaWYdNeJ;`Gs3d03sx@oT}A6%09!eS4R@rJdiY{95<-~E%gdRLj*gd_(W{=J>gnmp zx3#sc^!N8CT3T9W3x&cwkhV;dylJwuwgy1Sb)J&zJOE$ZyN8sL=O#5>C=}*fT3TlN z`}-4ZZEY((Jw5rI;D4{Wfo(*d`+am>FDj+%yk$|cZIY=JmSqvGss%O-$>80)c--#I zTd;LqF9J?)Z?Cfp#=bnEl2V#VskvAvv>snssYn|JYw0u(pFAOz$*`7AQ*-nvmSND@ z+-yiG=Y$aZGNt=b!Y!R>42S>R5{*9l$7i2mTh`WsP$0lJlYf(RwX|egW3lTmzVp2{ z->)s-)~;{dzI}CZb=70rHpOBQuh+}5aM-?d;ldv|pe;YhV6x4y+!z}AB$-N;0aONq z`Agm1*Z!}A$>#c3=mfjH^SxrfgUM#Rq!R$Uz4N`|O{U|mfBzTb`F{YP_S!?B7pb%W P00007J- zo@wx~@tRZ$prt;sM1vQ^qJAD{0a^#4WLh?G!Wzk88XU46)L5^;2g~(WsfYT29RL6T M07*qoM6N<$g3W4LR{#J2 literal 2299 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 V|6)f+;rjpp002ovPDHLkV1iNGT7dun diff --git a/launcher/resources/multimc/32x32/instances/skeleton_legacy.png b/launcher/resources/multimc/32x32/instances/skeleton_legacy.png index 0c8d3505ab44d363cad65fff3c0eaa4a020c9851..2327a036a7c17c307b409a4904b7e2aefb1e1c4c 100644 GIT binary patch delta 427 zcmV;c0aX6D1-b)}8Gi!+002a!ipBr{0HRP#R7L;){{R30RaI3^PEJoxPfScqOG`_D zfPhL$N=;2oO-)TsPEJlvPC!6FGcz-xp`n|bo1>$nk&%&zh=`AmkC>R4s;a8N!NI=1 zzQ@PM%F4>v*x1j{&$_z0#Kgp}udl(w!?(G)$H~d3si^=00)GH}d;ora1Ox;G1_l9t ze*pjg0Dyo+MMX(TNvEf$f`Wpco}K^z06{@Pe}8|4g@u%qlywLu5C8xG4s=pZQvd-2 z4J|o30xg)s#lrlQ$n4Po006m3L_t(|0j<-s0$gDb1>oN;s8Ie+_ISFKJi64YrlyB7%7WlQQtI2Z+O)>SlIX;%qa5Kz-Qg%gC7f6fid{ELx9C_b0tulTp*|!5%7zjge1Jmi>ts%_ZsxBf%hu>{{tS- VJC^154m1D&002ovPDHLkV1o0>yJr9Z delta 683 zcmV;c0#yCF1Goi{8Gi-<0047(dh`GQ00eVFNmK|32nc)#WQYI&010qNS#tmY4c7nw z4c7reD4Tcy000?uMObuGZ)S9NVRB^vcXxL#X>MzCV_|S*E^l&Yo9;Xs0006tNklk0vYd7j5Al?ruUtyaX5NQ8JYnGnzC zbK-C~Ol+Dav6Pay*=#Z)1p8O&n=ZUV3futSZO~)awOA~OlgT7;B9S20qaF+f#LMOK zsDZ!}2;9J433O$%Sz^ZCcc&17SlqE%+jkZCA`ILB2iP2!06J;WX&u`Cp*=>LcVr R;-vrp002ovPDHLkV1lf%IVAu9 diff --git a/launcher/resources/multimc/32x32/instances/squarecreeper_legacy.png b/launcher/resources/multimc/32x32/instances/squarecreeper_legacy.png index b78c4ae09d46cdb8184615248eca9e81c8253e26..258c9b34d6042e336c16bec3e303fbe88eaa3ac0 100644 GIT binary patch delta 1380 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 P00000NkvXXu0mjf28|Fs diff --git a/launcher/resources/multimc/32x32/instances/steve_legacy.png b/launcher/resources/multimc/32x32/instances/steve_legacy.png index 07c6acdeeb9ba480f86db105b6493f168e7722c9..3467335f0aba8ca55831191604ba2d1e0f5ad5fb 100644 GIT binary patch delta 734 zcmV<40wMj$2lWMzBYy(CNkl z#WpxuMFaXa0DnQP`>+fG@PKt$02Ehei7YKAvKu?$ZKF@3oD4{~lQD7Obx6~|sPP&$ zAwUFs&#?e_DsbS8lT-RT0BXF0t$4su>{BtM16*4-k=)%pojlmRl-%7gT@Ke~k~6c5 zh>xuS=`_GtfK!Y9t&_X5auUHYIlFWcIXJz9++H`G9Df{_(xy%Wj0I>~wCR!+x{h33 z@E>Vf6xT@8rD^z11B?YY_*Yz=+~oyTCrh(^NT&hD0&Fdd zu9Mqc9zh~4waEIE&^F;3*-{opmSqQ$P6Lbum=fz!CpRhDiNspzkSK`;!Eu{br{k737(cLT-=Wf&$0cC?N9jC2Y$jg_yiYVGHX!KCCM8TMOjzm zgNy&;;!bQ&!9}>#N6x`vJjnUj#^YHRpn)jpj*KWo{)r_3UOS9ZF!&I`4Y^V zDSPTII8#$i_Q0DorwZ()u(8o$L9DGM*h<;Wy@h%3?DDMp!ZXd@b0`jidNMPGPV|f| QV*mgE07*qoM6N<$f?7mioB#j- delta 948 zcmV;l155n%1<41HBYyw{b3#c}2nYxWdbuptm6 z7YV4~kAsP_32}_sO(wHUW-~v!tDcA1sh)9mz3eV?@j=6%ay#Zw|)}2;FX#IDXA>Ow*e1G_X$+ApnwJgpZ#JNU-+wV@>eH{4ovDLtnwx7G$2>j)hPXk|g|I9>&|4T3(GbOll z<67X0@0||(=F5);{`&IOZ4Z0r#0!DHI9p!zR)5!8I|`V)19KNJQ-W?@{&fzUWw&3r z@_pb}mY>=7un*6F9{AN4pA9U;I|`V)19KNJQ-T|RuLbtLyai2OO0%DS2yEkM+cn)@ zS;|2^+)==!1B!@`;&_Kk*&c+kiiih1A|7LOB)}NOxdP~4y`TSLqgeMLIhSs4_JBSj zJ%7B$P)?|(#Oi0Tqh*&_h}1+anYABbEd&sz)z`M85TN%9cq{zTQGdJB;SMB-h~h2!wv zA+m|;IwF6O=NmMeg^b7ZEXxeb%MpV?6)oouU`&GdW={l&=+=CgquR&&KF#J3@c#h& WNJj!~S1W=50000dy2Ls65Ep3dYGkzTFDL?ovhDanQ=_Nq#=4FNN7zY27`JrGb$AqOL? z>mq1Cdq2T+J(nTy*~UXqYjuGF7WLx_KI1bZ2ha>?RES*DA6EBoL3~U@+(09c1|_Z0zawqurClj14UWlB$pxn*aXO=r25C zoRHHHee&Mmamgjg7(}x^Y5B5o%XfKXOyT#Noc0NU$fCFF&wr4Ieui9s7Hl?ndY4li zGZM!}V`AITcFWybeRUFYS>^1;MrmFLKE?3r>NH#}Lve9syk%Y^?{*HwP|<)K;FXJdShMzdINbI(GmT9bO2xSklO>6 zeqe;bzk-Sd;Tz?8@ysg#P+Pp@Wod=?RoG3#ZI(-ckCqQnOWgacy zRgA;Z5?VCb6i{AGF%w$h!~#|tvE#~_8_!E$xWGjxvjp@aMeHJrHb|0UJ5R1RZW3&= z6%2|kGLy9s%kB#=cGF_7aD?T`P!+~zj3u{?K283nQGaWtL&PTTSivvpCl_vX=K2>} zAcWiCO&5T-Ht07m=Lbg>4C(@NM1a{$>lTyp&)KpI&lY-$eoY~!P{#&<2(}f@umuCg zvsLzNf=FNnju8Z9crMn-1O`}DDx4H&trrRsrQ61uz>BV^c?4BcCD|${@=* z#rX*?;(rWfwdz#WYtTrVG<)lvSMPoBy~yQYg9{pb2qA_PaU<~XN0H=MO*n`_#93oW+P^3K{|^?%fU!5RDTHkc?&U-~ zXJAYmgYnQAz=4*|nThP2bmlr|CJB;41x{+`hAMZ)K%tviwDHc}4|8AfMjF53O`e#e zPTl{(9D%wsZx^i9e$SPKu{8@jrp6-srsk9#X}_8CES$k5Un>EKi zry~S*b9UDCKw@g!e%iGC9!cCpIvudWU4Qawj9#pk4H0_^uDB=YclwY0IZ^LVZa=B? zZNln2uBakS+(6tI(cP>|zNWs}bk+TzoE=q!X226v-}%`|vgd7n7SN|Hi+PCRDN1&JTIF1!53x#+N;XGV=odY(8+EPoU`Sngm} zGF0Lz;+Udpl<&{FtZ?4qtX68Qbx;1nP+nVE<~q$mB(aDkh!7y7hB7L!5T{im#YCF+ z6CVBn$1jpgCRZ7Z91EyIh2;3b|KNAGW?^!|O$sG|?ibts7zTQFfo9#dzmILZc>)BU zfh(=;uQq_0PtxmcEp`Niw|{|)>$WEE0hc>K|C25mk|PCZ`U?f%{fxdT2Sjdx-Zi(k z);>-jfDCn&x&aOjfsrC*uY0^Z*xB2^XIlOJ0ECQkuA*2d+W-In24YJ`L;&~z{{a6I zoqK}-000SaNLh0L01m?d01m?e$8V@)00007bV*G`2jmD74=Fp%%ztrq0003bNklFUb0BaC9-5~_;1HlU6~X@z3Ntj0+p%5JG`+pXas0*!mSu^Eh;7?; z>rK<_*4K57h={gr5BE8|<6(TnP!JLPP;_U zg1lD81B9!kn6g{=Jxo3-CZ+2pp|YGc)U%Wz!>oJiO+zRxMi?y8rB8Kdlf0zkdu617eaxEkq%PMPe+ zBX7AWS?4}*wWgUj9Nes_lLL1dIi*}qP~md7;veok+bFyL;otxO002ovPDHLkV1hU6 Bg{c4l diff --git a/launcher/resources/multimc/32x32/instances/tnt_legacy.png b/launcher/resources/multimc/32x32/instances/tnt_legacy.png index e40d404d8f9c0e247f2579761f53954889a050a0..644d6a0e764adb0d15ca82b5e9c79b7809e50d0f 100644 GIT binary patch delta 213 zcmV;`04o3b0_Fjb8Gi!+002a!ipBr{05ecbR7KlF8p%Evw>TB2G!wx*7pOE8ku4G1 z+uP30&Hw-audlDRI2E8V6N@VlcqINS%G}c0*}aI z1_r*vAk26?e?UO?Ld-Jl6eW zO#<}nvKS94$nq{aDB!aF;z3J;0|ISa38$P~3ObDwq+C+DC-f#CU=WDxFj(f55}C4A zz}-3ZWeQ`Fh0<>E%e^z|4yiUhYIaOy)Vm*WmR%%rgB+*AaYh%3@HGi+I-4vt3LTue z4c;an(Px_2x}#5GDv!zbgxMf>8Hlhg%FAU`SQYS;St$$ZzMg9t%?sTY2XXU-dr$Z_ zvF3=IOo!RbZYDt$bB9~Yt_YbP0l+XkKffs%7 diff --git a/launcher/resources/multimc/32x32/jarmods.png b/launcher/resources/multimc/32x32/jarmods.png index 5cda173a96e9301a2f7a56d9868e8e81ec1aed8a..848be629fa82df8c7f95f98f5efec9edebf61af0 100644 GIT binary patch delta 1388 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 A$p8QV diff --git a/launcher/resources/multimc/32x32/loadermods.png b/launcher/resources/multimc/32x32/loadermods.png index c4ca12e26886c1463c6390e54c899411f8de6f6c..73d70a30a6fa23750c61ecd9ff8640bec7aa396c 100644 GIT binary patch delta 1522 zcmVY}>YN-{3S} zjII9tRaKWiV=DH?Zuj*vBQlDeFY6_KGgv@5_Qv`pH3sM5bXUgM@`et&=gV;+p$Yfi zmr~yI)K%+_!{U%5ul-}gV{WJ$dG4c5*)nTVj!n99aMY2r`hP6>^WP)#ju+eIQPw4DU_$pm64503mG!z7kS-- zp3~6qs((+PBtWDcd|!aaCD^W@dC!mo9X(l?wEXf#&VZ8{fQGtXU+?U<;fKZ%a9j?S zBOvSWK*@c}VrWapdq2N-+r}T{t%6OC z|MH6EmrUQd`{tFP;Vs8Q<3d6#q6P7VrK;itma%z2JAZ-WNcW;90|bSU2@kS1F+{&b zCu!^&aG-hSq}AH^c{(Qpsme9jL|kmMdcf zz&RNuClmnZ6n7fw)e>kfCEZi3&^oY(y#WTtTz^{QLuWg%=H3q&sme9?M_NjoKfUsU zXsT+ts|@wN5F42Q|E8Wejxmeqhw2S1a%^7`;{i3B$W` zsv5Gkz%$BpD!0x78(P1+`?i7R_g*hsc7NMlQu1oe%QPdN*!b9wJ1#kD zrOKM}=xnMLr8uWO4#WgXsPstbwK;_Dd|fvT-#@wUT5hJVWvca?s3JH;RXg8pF(m4bj;96i1zi!mK=P>ZUB1NHdGJjy| zk)$EAPR=_FwPd4XK5W`&yA>)`MlXouaG1jPUBd{}zkSx8Sl%C%F1^JXv2^W{+0hx_ zb^iXusQMiH<2`i^O*5-^TpE*48S=THdd(+N%EAmuNeMl?{&Cma6WvGQ=lS4NGQqlA zzyAh5csow^|K$b_xV?Y9`gGf}TYv3C1M(N%pfd{Z4=P+#VuD2b$oFPQ;CdPrs>gT^=MJKXASnQxb0Q9ZGX1?0o!96 zE%ed?c`>(hGkUYo^7C^q&HD9`qt&;7qYeu0j0(%qa31lpLxWOK35Jao1}_{c>Xwm2 z*)mdc!w5eNRn;NmzB7SFax|HR16SwR{wqNW)5x1ozUu}3CF2kSi_8i2;WDDBBAn|+ zJ_FphI1a>skPDW4d2)ur%4;+;g;T@G-^I9W?VJQn(+VYCVQ?wt`pbtB1c0|X!QM>ZdCsii)_NQ`gWSSUD^Qn3jl-fBjyixkQ#p{&36sXfBR(qs Y4>E4dZWn&fi2wiq07*qoM6N<$f(3)_iU0rr delta 1693 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 M07*qoM6N<$g5=?7qyPW_ delta 2486 zcmV;n2}$;_62B9WBYz2oNklldEGZ%X<8OLF88&Ig) zBq$+-7KEtO_MuWG5Dy?#fGky%JX9_U2-MJ`JQz`dP?3=IoCb=zW3UD^FrLZ7@=D5e_UGnzTf)3|F_nHhkw+kFQ5PYi?2K%Uwq~H zuRLrF0P&-2{`J3p$`C?a%=7%kx~}J&rlHsCarW%l)1952uK<7gm%s9_`Tq;R#aEtx zp|0zfOw%+~RVB}JMxzmq;{Z_CHJ;~{nx_5UI4L_KR7T zy=0oEEv3ZsJcJOGWl0!@=(^6*(h_-|QxpZJY2vyr)9I8nO{uDis;Ual^IlX{_2obL z%(t5V72vo3{ui|Abb84!j7y&9+0*G1P18^mg&+vDURc?zP`?6 zGGR0tVObWYY0~faiQ|~TU_f2hsH&O^A^v!4YwM*iJ^9VzzX5#t)lapWy7@vFBwsd7 z!}Wci@pw!e$F$pRJkMh`n_=5Fj^l9W&K-gvU~O%U&CN}2+_=GHGU2hu9wSK-j*gCK zng+u#(0??IAP87pU1QGkQmx&5O^J=mFMRB;LI4e5@b>ui`BnGAeBa~D@>zz*6N;js z-EN~O3W}nj>pGLkgqt^Sva+&5uh&Be!NI`+zVBlg29wDI$8nfUCI}(8aNz>J?~^7e znj@GcCw6$P_=7uFg3kl1_W{1p9w(UZ#;5ZJgR*R~t*xTEqEK4>vHW-h`BuT<( zG=IXjZO*Km!L&@wmWns;^7?C6dF$0(#ycfhP~pz&sHF&Qes|>Gt3dSK2$4xPf9@>P z@hOAXj=8C4bkBSAR!gio71PlH2!c~oRlVm6fTAb>!TS0Jy=9+iJm%omgp=)kw*UE< z;X#h!s(8x=LV@PGyk|lUAh{M}EUt2NV}DAuR-&CW$XUT`xuAMC!C$l~k|FVYL}$KB z7>1mjoKO@6d6r{44nO;OYSJi5hF9APywmr+?>hO_RfG zA<=Qd>bV{{k}yt@MU9a*XpTajNNm?e$x{?Vpcw|5BKW~OSpztlg!rDtvZpiE7DyVM z$zZ@~(NOG`=(^zO$`~iMF{*~({RqXZu~LPWZZo?XBb5?i34F(*R%(JILlp|$o`dgL zOv02fEig2dx@qnQkX22X7JqoQ$&#D1KN@4&Hczb1QIs`zM>B#EG)p~t^$e~C)MUt} zqHG+LFr{NEEq_y|*LFDxV$woF zoTDm&rFoZF3hMfYJOBbk2-=Q`rYanaBWzRWcp4I=C0QZ)@J63A3m)5hLuA#k()S3` zlEFA2jvF#f2d9gXpCa>w+ecF@Q^&D%qO_pjcCamjNZL$>$M*mffFMelh6%oB^RcZ} zJjdk5{)oB;SygoAY=35P&NMD?Oat50>39ylYY}CVtf+8I9ft&4hq@6IrKFM-P2J#_ zIzgN>4l`spVov9NfMF05r3F=8b2vVw=es=pp*0@gTto;cWkn$?jwT`F(*#8bs{is% z&v)@X8{ai3vy{^)BPk@Bsz6h-IPc+@I^;TTQVu}qybmqckv zoaO{kntlMF0(^MA|F@2*8|Th+pHvlvAkH}&PVgKHrGLtq%udN`$O}mjMwsm$rQRZ$ z91&&}ihza&S=FeDf^F(lbxmGKng*n-Fbx&YvB*pL^)xSkIY{#O-edHEE`9Eq`B{{` z6h!fF1*L{8C3O*lP}x}WnVcqMWktucn1(4wvy?(gnz}(%6=YSTsVa(SNOFm(t297a zR>ep4b zbLo3m-+bVS9}3_DefF8H?o!9Qlw{=>i&84nIA`ZzLceX-s;XX&lI*MhaqD>eqr`kD zeJ}nOpYT5Z`1&_KdVZyO{E_}Qp8e3O_pq`46L{Lud_vTSF8}}l07*qoM6N<$g3ZD0 AMF0Q* diff --git a/launcher/resources/multimc/32x32/new.png b/launcher/resources/multimc/32x32/new.png index a3555ba49095de05b6e5462bf4ae9b349ee48738..8fc4be64a11a2162f7d3719a21604046b803d5c4 100644 GIT binary patch delta 1274 zcmVS{Wfgh5q}cTb%00Y?A#*V2% zbOd&2XE&p8FIjkiENqi$kIjui$Xc(X(|z;FayoqNeE!+H2->#UG<1TXszP~i@XABD z;vg*c%p_BXZK-0FaY+z9{L{8{lUk zp5n+w;5@BxZg20oYprDfCV~M{Fb07P(mrB@G^CS1i*EPBgzVW!r)dhZ)=TNNeirP( z3Hz>>SAX;0b!M|4-=`Qiv#ft+#S|oO14fC&L_`59k*1iV|AwUS<&riC;l*8h(6-gH z)$jG<#xj6ZosRl)!JAWV21%|^7LeRaAy1%Dzi*)I1DS#xD z0@b8JfVqf0!bD;e)AAn5*(V7MKu-lCI8aV+r6|5culEcF!woQZMsX|aSM2~S1qc$P zP^BsaBKd%MHjV*>Hg+F4LB$v`K^T)^cYm-q2;mtV9zIBxbA2yAd-JM)LjV*4b!e*4 z^mMSEgS7!{A|C=1Oo1_wVdvmALU<3967Mj&OUHuXr5 zypn-M+7z59oa!=wKvV1KA=KCj&2yn|ss=V*3bC9Xkb=U3&RfzWe=ee*(K-Q?Fjh>9>^<8eenuwO?8My{YwdwSk<+SJTw< kQMzEo8qauQRM8aw20;hU%3r|RjQ{`u07*qoM6N<$g0~D_Gynhq literal 1769 zcmai!dr;Ep9>&3t1TC$+;w7}S+af>Ev~W`~P)wIvLpLi864X`@67*1kqDWth*+nhOnopJ~Qt;pLxFTKX1kXvd^bn(lo^-Ads%DF9Ala>FUL}Dk|H_y2h%;ZI9G=7tJ7`GwKB&*q!~Y{!NE|D zsLL_gRRac#-uH1pmO@wjamxX340Q>zDHEA_qgXFP*W#8HNmN>KrJIwQ6P_R9svnpC zw4ZcVrSsI$w2lHvG&Zq3((;wa^i za$~^t5SjV|sYpNcT{m&EJ1`>dE-mhL7IT&nyKCVYKjqdGUzxIL--R5m31wc8 zO!C~;15$!Eh8%^5uKg{ATidT#yCeKxMZf)6o7T5aCuM=Sn3+IJPd4_npz%s7mn@O5 zR6tMjbgJ}uM57(0X<=*KWUfOosNj7)(D_{347=EDD}k%HPbCu3ZzYEyT>NbRt#@{&&|u*^bn-&|nSf_&(QOEi<)s=hO7 zvYHrk%X_(Z@*~$O?l5&|?F+ZUr4fPs(;DPhC9LM$=^u0I9L!(Wja|4-?E|^As%$lS z(wWPFn5gGNy9eL;%wM+rIN#gg6D!3ebDhcy?e@zln2@Gkoxa?9fxCBJtz}NIfjE_0 zI}<CP{XshpFmjCrf*2U~>J_)BKkyopstwN2VeQF< zJ9Hyu<;qS?OR@K*9mu9voiZnA5)S;k1F)C==-0%%F2f!8!MRcN$S$~Ld zdvc_j+0(A~+#CX*!PdMliS(jE6YqP;O5CO`UR5ZZwi&gvxzo~pP#hG) zKPd_&QvYq~QvKO8!Cv7j0UdR}p%4@}w~js(?-L+6>$~4v&?kxg)CCL!#-w=#jYad31c3ffqBdjzvX=zmD`T-8;iLdFCcW9SDB$dOO(Qy`oWF z|BL6kFT2m0)y>Q;B;i+gwx^%eIja3N?RmsQys#JsjmJRIwF86&fZZqz28G#4!8+jp zXPgrT1-Rk>Akd;z@(ox{;=WQ^00W=^ED8%O16UUvX6IJ`>ULD{KLCqOKM|hrH=u36 zP=MVy3Bz+Kr?@a)_g1c+Vy{)1g}wLY5}w5!h`JCm@o#&hrIs>BGNaE9gUA?(ZC1Z@`NOC%F+dQpXc0WPlroB#j- diff --git a/launcher/resources/multimc/32x32/news.png b/launcher/resources/multimc/32x32/news.png index c579fd44d6310d8b061a9dc05d10cf1e070f2f25..24080312407551f1676c93b6bfed16b272fc6bbb 100644 GIT binary patch delta 1324 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 Td$+(h00000NkvXXu0mjfl*mG2 delta 347 zcmV-h0i^!60qX*g8Gix*008_L?V|ty010qNS#tmY3ljhU3ljkVnw%H_000McNliru z-T@N>F)Q$+e`l7HaiIN$Sip96O8VHm?462t t@Z7;L4CLLEO#PMUY{m@noWSN~~%;+Fsb002ovPDHLkV1n_WpauW{ diff --git a/launcher/resources/multimc/32x32/patreon.png b/launcher/resources/multimc/32x32/patreon.png index 70085aa1c296206fc2b4c84aec77ad3e2136b81b..440195d2e863495f19474b13cc19121d4cdad50d 100644 GIT binary patch delta 416 zcmV;R0bl;U2)P50BYy#aNklwopLaJ?M2%C%X&Osy zcu^JBM%2cvV>U4h#&rc_l?b?oJ93kx>c^ zNFXt}xPSpSU}RwUb`3-_FkIFREMeuxqZS+BECN~xq(1<$NIIC!$O2*~LD&)?c6mub z36QM=VkZ|Af!IJ7Gw>9J1UUoQK0vlYIubhxiJg*KoD5{=0Dsx>2*2geXJD}S!oa{h z5h0c|je%i%I|GBn9fX+5LIwu@RtAP`ml0y0{lWfa6gyOsT2TTL@zZx?C`c?y1WPl6 z0yHg+f#K6~1_s_p1_t2^3=CY+5O;t9YcVjONem}K0045>HiV-eN3#F`010qNS#tmY z7ZLyf7ZL$ypMTO)0002pdQ@0+SWQeiV{dIPVPtP&WiEJaZ~y=pm1R)N4uUWcyz>=J zJ<|o$15M!~@n$rhyaE;_N=w=r>fcLwnP^YDv(uT`WtQ5eZMeyiZJt6?o8bH^3r_pm z!GO^~F^>da4kxseilZ&rkN~G1LWrqrMbFuO`rda5zJD9jQh=`ONVg_Z-5`wP7=j3* z$nP1xehZUZU+C2+GV5eqm#S_}Ed_FYUdWe8FrGN$8;wj|eVv3RLugXU2HXTf62PME zoABEf$*; z-2|~y2aUQE>YuGxsnz7?@cfg6ws|*s;Lx7o!Mo?)^L_UoE?n5^VF1eJE`YArWn>dp zDqLw+Km-0UWJ5q2(S^waJ|UaO6i^JF8B{k~-+vKS(H_jY8%iJC6nx@T9|`X^RrO-w zM#8TFq%iuxM#%ba1$iq5ho3NP~ zhZX?*Si1*&jR9Yw^7Gc8pU49C;^`97wSO1{#_aj@Yi9ufD+TwF9=41YvwVD)uN`uK z50rvoU<}FOR!E?6mNjS#3u|o&7*wrT7)3S+dJ}=YgmlS@!5MoMd}~ZQKS=(H%oPH` z6dC^{*bqi9s0++MpTXv-YLdmu6Dv=D->6Q@0uY`CrC k%ZLwk8M80{Lul*8FE@&#L06`^F8}}l07*qoM6N<$f+geENB{r; diff --git a/launcher/resources/multimc/32x32/refresh.png b/launcher/resources/multimc/32x32/refresh.png index afa2a9d77403a12cf6808fd4e551f8582e2599d6..960ba040c0db701fbddf472781f8719a3f842520 100644 GIT binary patch delta 2063 zcmV+q2=MoY5t|T@BYy|tNklc-?nYrwr$(CZTs#H zF9xmYbka$x&Y#K5^;&P9Z`j@E%}L=YVrJYN2taeMwr(VbJ z*!BNc%9q~rh<|%MZ-7DPOLzQoZCPOdb_=^J-*I65;78u)?E67D0*cj*9UIs_za3xx z&6hAc+V;MYrylK)@v_63M?Ujmr#u`_`}va)J|Q9Fng*4(!~FIsn@_*!{8KJO$RQBo zCQ&Yw@z4t&hTs0Jm15fMA@}OFdQOB0hW+^&w|!t z$xjxX$$#5jeAk-kTl*Jhf#3b{clh(a{=EBd5Fn!E@gb4N^Wh%(PD(}|NQ&t2Ym<-oY;Vf3B(kE!K|d4`i!`i zA~Zw%@b5pwrtT)3bofayrMX;KW7l_;Do9A2*M9^=Ui=;;bsG;@leKRc4G~7+u0%nE z@BH*Td2xpflu{=y)a|zy*SRP5e;B#_A4Oj20PoOZ)qYE9&K_Ax0u^999LKN5e}#}j z@wdPK4M7;dB@;#4p76$uGp~M6 zXMYBJF!SNge*ipjd*bzQ6#Yfz# z1gKT(s3kQ}KdOLbR0ML-&%gWrQiScCt6{||DW27SmtdJ%tlz*i_ z7C<4AZSC&Aa4i%Ia(#nq(cn>$lgI$GGGGWWNq{5~NswU?nwAgY0HPpfVy*A_!x!@M zI#9jb9q6*@lOghfM+PA^QuI_0uz~WpllIm}4!`?`ZwRdi7cl$50j>`N8QS39upjuT zp#cfN!}50@fD5qCMk6U44d73>0e>{_;b1tW9sev#3tK2*lO`MJelg^06IigcSd)^@ z3&PtYEm$i$XbfHBwianhdD+CzfRdGT6dj zOfB~=?(dNU0b+X8+Go`cy#Cf#h3L_VbOfz4e7RbVi6$R{T5^mkj*e1ZcYkAK%aX9l zkFjaDfTKQc@``{1z}+2F3dE*@f2cG#On$oVg~c&k3u6zj37$>vS2@`^iK}$5DaEEN zYqN|=lN#_)^-E?k9w;xi1@GF72t>t8%|13zVX+be1>`Y=$OQ~3;hF|SPrzNU6kGb? zti_iK$1Zg6SzxfS>Lva3Y=1FFPp=*2rkzdET&nesRO$Idsdl1uCsnGKDBW-Nyg_$j zG#h;=ncX!87|do-exMZ=p0GF;=UtG3U@R3EGM5mP$bx<86e7=(ge4^`L*yICNTl#KT1W)YI>PtBj3H7qv~Me|YgutaYMuEjO#}v@nZcTw z$I=4-uiFl|#lh|^eFgpuM}ZqZLyilS$$=!X*CQ}OtQ_4n`x_==>ZLL+RZv98U#0CB-zm|F54&?A>`F(U(I_co)`Xd((80LC; z7sM`!Jc+B2I2x&~p`-=~AWe`-COpa#$+86r2DD~Y6;afaziD%zllSx6IofX>*c1Ld zKZ@=`8;@{Xmqi;BBtkC<>`Llr#GXRDB(Wr5t_UcC5eu-CSbxG+M%mCpRqaAL{)dik z528==hj;?}Ah18+FYx96_}}d7X$yF*QG^tfhYZS#X2}Iceu}7=A}l5t71B&Bi?b|d zdj`5wq5t2X&sU~r`d`IneBnl)jOgBUC$D6^K~%B%tW!2(&J6PBy;L+RWbxCy8!R}# zdpj`T1r`q4QGdnEPy6`Sf9HP$;DP)Jp1kQtvwM&U6OZv->zPL$*j&BE=s+GoP-Bes z8%kgs_{+==7*`933E&9b!k>S)eX9mPi9f}kz2y$48MrG>gvRZ`I0=L`1;<<)#!4!! tw*y$puK;`pP5hkS&FM`)oZg1~AM-QJ^`$+S?f?J)00>D%PDHLkV1fm2?+yR} delta 2170 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 KI#pWF!v71wk!bt? diff --git a/launcher/resources/multimc/32x32/screenshots.png b/launcher/resources/multimc/32x32/screenshots.png index 4fcd6224669e2e08c3f39a476e2f818ba3c9b3bd..64970c72a0ce956489207b3c4733f1c861c8f442 100644 GIT binary patch delta 1370 zcmV-g1*Q7r4(tk$BYy=mNkl>0*1ftWG3rbOS9LuZKHHc&o)a>Dqh>R zZQHiB=Iq!(_d6%+ES`lg^~c@)w`6Lq`Bx(T=M9)Y`@+F(HNvW37EdX$Ry$0LLUBW&eMoqvBY0U4VftN7aYFBATU z70_t>s#40oYOPS(zX!eW&X=0I4_+7U$45V=A!4Xo?s#=O6TrX~`|Z6Ip>UXg1{a-o zGGG88gN-ne93+(<{fDSnOab6HHgiZ|NySTP^8V+7=ig>cz4Bp*+un(;s;A#JdFY)8 z_q^BT|DVj&Q-8Me0Jx45Fc4rYW;1EmlPX*DO6#U2&#|n;G9(|^o35y*odbBq-j(;t zn=xd!Gg@k54#! zHjSYI0(`YqIc#2+;*f^-dEwsQa{t3Ouo%Y;R)Gi_h>$TmajX`~#T?C6foa*zq>Lg3 zG}r@dX?{RKM3^px_#_*_a~%I$k1D1U=aH!W&p{k@-Xy`HARnPv;)1FX@MfQMvCPevP$skb*B-o4R_K0r5hGr9$-4>=PDNj3;<1SuS zQ-33?iPS`xWAWf;vI5Cuj*mYcVws(nFXqFs?TF+*ChvZPTP)Jz zRbx4lseF;iR0iQHv<0DvM8q^wzy`gW;FOEZAp~n1P+HT}RLy6fkNaanC=@1_b=Z2# zO*v?Pi=B5mj;U$QJ&zdN^Jq02ZTbi=zJFT8s@jFtnhG*Hg`InvjFG~1J^BaUC&X@n zu|}=l2)Ed*m!8hvbp|GR?1|UeeBJX_TSVDv%P94cI+E!m6XQwt-b1t7P96_F-cNM9 zjT!oMe=^cUxp8E8BdQ`VkcvHv?Rpf2%VIpwUA+XPl-zd5)8z6cjy!xW%l`V`O5Cmp<$#JCemKx>(T$oV-n5NE){7K)EASI{g&# zQNIUB(LjZ@86lv~9^hlwcdsX#N!}v;m-R<9)n)@4P}P<>Gk?r99uE@;p4{;ZtANNvXg) z*IW2kskt!zJ9qv+7jO2Re_f}t!9~^c^I#)P=e*w?E*nc&E0o4ABWc|yx cX8$+vM>kDEGa!;*L;wH)07*qoM6N<$g0ah?M*si- literal 1892 zcmXw3XH=8f7X1um0=!V92n;1415!hW35dWXl;}_+0y4&!d?ukJF$qOLBtmFDX;KuC zB7(3e!bp=AK$;ps5JrSBDl-vbU;t%8(FZT^e0QyL&$;XDz0W>>Zn}?`J4{+#8UO&8 zrw7VUl;QgUl@#5~*w_tG5@))4VxgiF4<)9F-codrAf_mj_T$jhu}OVVp~gZ7vixZm zSi$Lo8AS{Iy4g&79a3V;B`%nn1NCpUZW8fpe zPs>sHA{1;N@5+bgGEfgc`!ZjV0z)Q>HnNx zjr;sar0RKKfkwZ~ppeKcz$fxTIE4U5(IW5^D*W3R!hypmkU)!wpi!9zqeLi>$^@AR z`T>J@KtKdN*?k585;r|jF4#cMO5t0Y#u??|6Pu&F%;@Oixfes+!>_}NtkdsybYrK@P1yV|v44 z`d7A5Wz8z}(ygIfxx2!+sr4@9fK=0|rnVAXQCnPYT)f~=P)waTTwbQs}e zpGWgws&DteM)*s9V={=n5a@Wfu4IyhWb=?}l7)JN?QgfLc&azXOY0mSzKD#vl!EP_ z;9mJM;ro5BuF~6>d8n5jLvB4Gp=*~(w z-Hipi+2!x>Bq^k79vZSd=kfYzUHzls`lcnhipFe+-|o*T8hti4ZY{E}e}t2N@|9<8+2@)~Jv>r$#UzC5EF8kwUs-~kLLZ&K=D`cSSa!EpcsLo~n^a>t80zfR zxfK&nKAtWSVn^6GYXLa=|G~?`Rqai`s-A=wj(yEer*#huww-&jmEtkuCc{?FAwL*Q zFkpL0PH?Xy;%a6aharTr3Co+Ot&0n*X6QPQLckloS+XQ;ZC|v~<`0i(H9-Rv6meDI$ z0NWhPn=9^rAJZvUe@7g7(maZs{GBk9P7um2n1y^;D_6+;H)wBJqH}v1op5}NVLPUn zrIzV!G+JDGl(_+X)-Jt&EP@qtMD2~Y$+{DVAGcM0Pru(*8^duRIb)u#{+>|Cs2q(h z*;W4|)jg-*jiRjsd&u2Z$ya_d&yQ$s_J~!Ge(wJ-m|0^;yw)j*fm1r&&0|xm;?|y_ zZ|x$6by!~0FffFtkeso4Wz#oBa$>sm&u5dVCMJmW%`j%33Z^T;{K{SLyH*~&G^~)?SY6)I9~DP`8CWn-JucLmt`Tq9K^kb$PQ2d{ zE(@jyh;5-Oi62R!%YoO*+3S0~<41l9lk<2bFxjG&y%FpE$W~n1SiNf4BI}E(XmPEP zuUEp<-l+8>&*{jV_CNDi{qbPqe$#F`bF~UqNfu`tD#zJDr=#|^Ir&R=M@Dgvhi{3$ z3*U8;Q1Orn_(cCpcp)G>Ep4u16CsWJx;M7?AN@62l=5W#>h+#?qCX$-M0=qcT+d(o EFH16AegFUf diff --git a/launcher/resources/multimc/32x32/settings.png b/launcher/resources/multimc/32x32/settings.png index a9c0817c931c2251632083698b571da359b12fd4..3447c5543a4a07b6d2be1d30129dfc8465e04f9d 100644 GIT binary patch delta 2419 zcmV-(35@oq7yS~DBYz1*NklsqLIVVYzI<<$z;A(hn+t%ROwr$(C zt~s{QLG3h6(=Mb*T0P1Ur&{D0A&xuL2qUHtdP-6=FvS!VlpYQ28_)Z`Wd8q*5@bq&AsHjjpRaN!0wYBolLr=4D z<8Dl|gj_aDHh*V{Y6>i2CNOQpB@sXp$N~i;mEe*~8@TYIbE&CmSR?{eo)91u3h`W$ zW#xD_U44xuzYoO)9C4(%1B&y{IfM5*orb({7)3)I&^TO-U9EPoJm2s-OT6|@T$RKwg#m{SJx zYZ#9Dz_CRS)CBx~-%?fR?*im<=5t~gM*qab*vNDwMr&&|_0?&>0!$u09#*bgT=U6Ke&MSN7PP+(a2Em$4fQ=IV`C#$I2`Jo42CH$FQ;Qs z4Mwi72JYKh`9w;gTpAS*gt-w<+2AOky&KbP3OV@WDRhs;L!v+xZQcf;$kQ%$yb*S!6YkuA+EdpOv);%2v0}( z-gmzkKGJ=7JCH6+!rIy;tJ z;?!mianq_AcJJ(Acs$Cs9b4(^>*;ae5n!wkpuhhp&n3}a_UO%iPL+p;`$ABN4zsf} zJb$0W`kskKqZ9FXYF=AYfU>d_LCFJt1w8q=fLoxsArt4CmLcAD(OkCeKFG%&9AV5j zgR`4uuDf~#0|UXp0}n`*;82(Y7hZVX^RjH&S<}Jb#7HC(qaskr()m7+oVM ziA4Hhu{cN?r=HXdvJHBE>Dj7Ioi)TqS46pJK{X%x$rF5exQ=Agc_?ZQO;4hjqs&I9 zsSH$m-EL0R%u$Fdb-i4?Q( z6yp1`1ay5B!5XlwM^`*?}H_)af}RPQrNbQu4{{zuV~+BI8O1% zN8iCM>+fajcfP?udlyTuzlRM^ZbEU%oORYYq*ECu9G)`5(=*1z#CW=YU?4UX3dLq- zro}uO4UUfX9|va}u(i+wMq(Bb085fFH~bOv@J4?p zaL=PCI3vB70$JBd^d5xf1<1FrS-JK7?_%yqKP&ILlj-f-NsNy%FPCBBq2J)UXFbQ` z5v{v>&raY=H8u57ueTv38h@1&ASN>5@FdSB^~Cd6K~h!FJ(!sk3?9A5{fF-@>A3WK zTCTj5nPW$p-nfCN2w@LT&}un^CdasU?aP$m!M;nLc;eBo+3WG?7zYyAARANkP2+LKNpdSD;1y}OAEqT9EzUH6f=c^&hYosOMOQe0YrBWs+t z`dl=RZy~abg$oBABY$U7S{JPe)U~~C$0y7Vi zs-StRaTixm5~wX*)7tR*s;a8h-}=_)?@Xr?$K`^#Sg@*@`+wLi>+kybrQi6rZYL5% zAA5k*?(HOZZ6hN>?D7X-{hK-Uob%~F+|RM@0cNIVaU4ki04_x!gJh;~G7+5QBz9y3 zzd206m!q|{fmgr!<;#~XJNAgG2963nl&;jhB zVIH$IYtNFi%zx{apQV?3J(#*lG9Duqjp8dVqN=(Q+cvRsCX>Ms*=!coRfHt@uuX%e zxuukrmEd;k^!5%Sj`%j9<(ZA>^^$bMO?O=XGpY@^H#4u`^;6VPH*h$>ZGK^hmkRaVSffq(}byts;bDcgv;f^>(vnu zjmCxX08c-?A^D46{B&T?o*lmutK|F71o(P|f9IO-e&tltmPqf}PUi4_tmEB;W)l1) z<4%7gmVP3VHGTp-445D-sjY3iVCBlQuDIZW3p>s@W3}4S(tw!p!dNDg$qQ?xAFy7tWJ=53MHzhWpsc<;h zYns^}U<8-|Mu7-m77m(I;Fbq!+}ZePHBNV1k!Db0X+N{^k=aGf(ikwc{u<8002ovPDHLkV1n`Q(e3~M literal 2983 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 C8*<$M diff --git a/launcher/resources/multimc/32x32/star.png b/launcher/resources/multimc/32x32/star.png index b271f0d1b89c88a7d466066dd653a34c6566a2a4..6ea62a9e2a1eb18cd7a3b6f3ddf524980c83fe7e 100644 GIT binary patch delta 1475 zcmV;!1w8tq4b%&eBYy>(NklJG;B`4DGHyTkBrVRe#mIkXe?0g4xdnLDjR_ zhnv6NRg1+dwNSF<+r6~vx$G0Op9wPj-OPA0*rD=;1*6`!E40vkS=sh0wd$ospf$HEMn#pVXcxIipZu2o6f!TCUY;c`gVx1gP&HC#($@A;wQAt_^4Z*`wI9%E#Ii< z52`exTG-$O>-t^s#kFRfhioH8_CjP6` z&(_@jC`eugNi>N`f6M_~GIohtR`Lrm{{0*1Yir!mL{`TayNctRD?dkLTh>}|siI{` z1%@9>A}&>J$=K1>G?kvF#>ugD-w42a7kJxxfq(bP8k_G@k*`=9F@Tp;?e%{NF(bc# z4yash(znp(W%=pN+X}AOx7Rio*mn$oTK8exYfm2k`P()OYr)0k)Pq#5lv`xbHeJ^N zI!hd6_~pI(ZP?X!s91DWYYd_jR=ef zR&lLU`00&XX|JlkE4J>EoiEpr1Oq9%UG0iC)-zhGx}KZ#{Rbd@(66GT%HK3Gq#`Dn z_p;z3w0jmh`xWfuyO}!aBbutiSK>%d*?;{SEkcT60DIl2J#nbVRQ}XFtD|EYXauB{ zNlDCaI`BM1`oJ|qI34Z&23P+OTK5Rr`aT*~QOF9jCQ}oKdeq)GYBvM$83Y?^J@9(- ztjR~twRkg{HAqI0z@b5mcoCQaXa_2Qrr&b$L4)#GEVOk9QIYo@S_3eu0AUE8M}OqP zF0`iuaex8>c&Sp7B!F5FlWa@EXbcEMk%kJ&AQ%QAj*vKHt{?zRqE}XYkW6Bh#AFA@r!Ue8PhKNhHOrtz&?q?@0)K*0i$Ch0 zVH^|1q1U5%vaxYgHVETiS8bf;zE-%s0$xy|
    nfE#z@7Y8@DOx9gqovcUCvxIE1 z`ew#kc4^3G4Pk-MMsXjb<=SoWAKZVg`(M3e5qI;h)Lpk7kKC{wJ6yjl6^y|3+mS1| zX~{cp+L@UzU$AKW&_VM&S3J5S%UHN!N0Yl|8y3HMYv#FjYdprtbz5Vu*_t^^#VmUL dP9_h7^DD>BnLo}DGQ$7>002ovPDHLkV1jAC>0JN- delta 1683 zcmV;E25kA%3!)8>BYy^INklHt^Jd2q!kVTh94+r7uG zI6&jan#LtxXLFRzOd4DYbIGnl``~Ka`MwZhR$hhAdqn{n-q*&fmbA~a#x7HtCIUBg z1+9Bl8M?c5N`JvL-}Wm8@cUb;UEzFJ+Tc5j?2Z9Zzqw8yLwnuEABB{q17`X<|8;<0 z*DJK`d~QOjqcUgAJjURQ8KL3Kw;SMTZ&*ZI@yftCdRze+H^48Is)KR9FK6Vv{j8Z; zy^irXJJ3|~aRP){$Wk5+$0 zTQQF!v{6Xt!ydS_H=?FF@B-~Hg9VIdkdKFujUc}l)2QOqyrR^c!ZP~F=>2IK>QuBG z-i!8zJzeC9{dB8V8u(r^Stli0AfiP3>6nzkHgj81h?}9+-=8o;nN#v%zi1wHuBKtBbSNu ztoB(YlY}>0)3e87Uth`t{+>+A@UXaAR>{=2gQ3lbB*W48S5mVj*I;Aks)wiZDRnnxUh+6ZO^We*+Um{%LkE zSH>xtvhDiOw0yA7H+Zx+dIN}dcR<(#5LzxIbG!%nBS3$pVx>S=k$Sx*)Q=aiK9n13MpX>YPfhC&O2vR0>k0bc8U?b8TujB!*M9-o z-45B+NUNrM-as00(Jt?;W~YTNi|<$?PsVEX3h?24zk^>HG%Dr({<)ceg@YwX`0Kx> z69iR4?k0tfa15CHPKnYilBTd}AUj2?ulojX3y8a?y$%r z@W}NdZrXVd!;Ve(jsQyLya#Vw0F@Q6DjcWRopX^4cLabvU`=Nk_Ur_HsG-VEtG}U$v69I^ejbI|g%|*8TQ)Os z?xf6H_!&;c1@K}yuCk}0aew+OW|6J{08gX8V=mg4T@v*NiSC@@8b%Q)fq0;R9*?*qFjmOex3%Y=4wPK3E5D`$;{2 zNfrKx3t+`Ks9BDb%B%s2cQ@=i)9mx0ih_Lu<@=hY)o|f2+6!f70l+Y_*@}i+3X1z& z-G0Kowe`4j`a`?T3=s!_*;Y;9R^2BuN%R7VcP{(-;xqhLZRJ?1c~ltam?m+JJC}YT d+`Wza6Jk=^nO;IqObh@3002ovPDHLkV1i#MJXin# diff --git a/launcher/resources/multimc/32x32/status-bad.png b/launcher/resources/multimc/32x32/status-bad.png index 8c2c9d4f7852a6ec135b9134521dc221d68ccb24..d85c1d5df0103ef308cdceca52a2167be300e3a9 100644 GIT binary patch delta 868 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 KMNUMnLSTaY?z{v5 diff --git a/launcher/resources/multimc/32x32/status-good.png b/launcher/resources/multimc/32x32/status-good.png index 1a805e68ba793bb6bed79fcef67bed49d0a76678..1927ce78d3ae89664787a9d714180b36fe703564 100644 GIT binary patch delta 1027 zcmV+e1pNE>3YZ9xBYy+mNkl{;_mM5 zMz+8!JAmRT(mB;vfUCm<<;N zJCw!t;3sSerm-=Q!~)pO#_jord*K9b#8bE$%j05HaF(2k2!BqHqhY~8vNt5yMYaV6 zo5;FA9;*W>EDk3u8^DJF4m?h5$GvzFx8s8AF~MyHf9e*zvk5*o2!7NFzLSsKf7K+o z;S?M)1RDZ^wPdBgh^4;mm<&f%2JkEr$MaqpJV^*1kY|3u*G9olnBzSS9rp;cAXv_4 z7yB}p>yDc;fPaUvp?H+Y;VFfmGu>Zo8q^ZcX?n9ESV|KMeL2hz4DHqcZu8CW#&i1C zFG5Uly;boNU+M&VJi;sp=F+fnb_+RHiKY>ky33P z;f{y%I2qBtT@&%KedN-WOY-a2FWvIEWa3Rd4fq7Jj667E0{bIL4yl53{+f#a`SVBk z(`}oHr+?7m#s-gIwq_v-?B)2qp9b!_%oUS)@vaS=v9}oTrhy%tMD~PqC^b<`*2T-~ z;Blj{5CzkHpTG$uiybuZp`nUmvMx@v4%EO*BMZ)61#AuKq+-69tcxq(>RJsHfc1d_ z=kSt&40+l^FNASSzLKU zt=X+bxHyp3Is2lcn(DSLPAa?Md?Tq-<#um1UCgq$vcWBw)iMz2aJayi$0C||TVI=g zuJqXcdDRvX@I*>yseLZ9Bb_C2Wj8fumrX|c$ElGgi#ka>X*6TPlDNj!x38Rz6-+m_ zYk#|}@aW>92NP9`Gp5E?4Qh2<5pkJ>Y2FM|BiQWfa`I8Zr;2HDjkU$4;+WaVlB{IH z9miB}jt&JI`M{?xGLcbCzj;ZVu_t%FC@nWJ6qCF;8WAk=2p(Bqq~I~1UG8b=a*R3C z-R-ixG82=%86ucMwmAi_%`a5--kmOCx_l{2rWuT7?!%1$+BYyw{b3#c}2nYxWd00)Kf+h!`64QV6stR3B>S z2NXdPDn)$IA{dN~PojMg{Gdy>el%%zlilp@+&MnXY_glLZnixz+`BV(?(cukJ#+S4 zB_h;f>fHVy(S;)z)q{}^9O5_<#|Sv2aU_l57DlF+pZ`YAN};BCA0$A15sOo_hcVKN zBTYEqLswfzz<>Cy_dAQ>GRxM8jQ^XiOMtquFGRL5L`nKFL~sP`5=06REdvFh6Hv2TJJqP9H2qq z#YNa@K$8G#QuV3OIsvGqAsmw6z~lEpJtWu#@_ws<7nY#W1*MXNnun?cs83>X9Mz8z z*qH(AA%9nHfIGmL-x?q&a5(QROwq62iN;q1U>L?oglGZ6bp~7|{5B-U5)2$1ATgGJ z+y4ES1A9xLh#>YbfL7=B2XX1e0PTy927V^N=&4c0J{)88)F_EF6(XKp1{7#|)kzh! z=(b))c$26DyYi0)esYu($4_8c7M%w=iA7?}j(^XRNoJr`y!?<;K}x}Cjca-^K+7hs zuMDPbz_r$!kKbGJJJO>m(SZ?YDy<*5Q7~--?z%3Qu3Td9>>#Ou6tv+5;ZEbVqB}G$ zaWCDv8&AAZFx3O!16clhVV|WX4)3>R8EF%yl`w;MO(R@I5?u+IxHuuDQb{H*PDr9F zA%9%;pRXBXjFGY#W7dzKskpvZ!n@7F+s#=RYRxj-x+>rYgfG`mTs7$xge!Hz*9fq2 zR2ob6v#cSy(I)%e(wY;;PXI7@W)OhU{%yFu(sC@GpX^@1Y=nFASS z$7hK}VsswpL@9+*%KNMuV{|{?T^}4^-hYDM0$|iH7G2@zP#mJs^)eNB`LSth5eGXD z)&~dpJpgGNM82{()L?*K91TxbV zh`Qk!4L^mzB}*vto+UG4KDaiv7t|s08lG5_kTww^BHM=pOo!pV2A2!+@$!@nfPZmD z5c>`O2t;_sh8=5aKMU9cse#nW7XWM@{*MiR+2E2xIU`U}lBu^^PGd1hvkR{-Rc}Sv zDl#9iJ$OOEwWzlRhEe%+VW?U_p9*0$-9W1(yB&BXS6MGri~f$x4}YNzJW;+?OW9UX@NL+KONye~B^OqU()DF|Ut=fY zm*q_YNAl3Vd4}B5{bR5(PZvK(YWWHP(s?8fHWA zr|o&mWd>u8RjzzX0iFmILNyN|Za=693Wyol=Rn-`(ssmuH>V({;jZOH`Corld7E+w zUB-4sM!1pA zzir#LduQKOUgle4gi31AdiC7!8L>^b!`1u|Tn)PrTc3&8x<e-2!JP4R;7E{$4sHST`ZqG$q(}n)C=ZPYTwL3YPQyoEjQ0A`1jb z`DAV?5_4z4FZ@369XSa{AC312<_^-}DZvi$jhiWOVS`sd9);&j!pi;@KEcsFM-4mr z8QuYUX6r)(;(ta)Wp)WgOPjr33S;i~vD$+HaRJ z-f}-&?Y8FIP4Bns146^?td#|o6p%#$88(tr@5gzVBiFOKOIhix;x56K3q0ROFP{8` z#n&HPB<2)(qmW*TIe%S$ZjXNsZLb!=hRI9ZJSC4j`hTcA^U51?{g=Ddqrhrnn8q{7 z3`RNq({lvW7ie$K>$!~jDS7#|H>9txPu6eQCet5#S&*0>n25#IDgahmJ`{1aGda~* z@%3zPf>X@Nk;-;y(F=SKps;OQ{{H7* zdG+o0KdWWH1609*;*d zva;pXx89YT-B2H&T-f_R;)-zp7e|T;nVZYJ z4Fzmm@12{chLu+8Z1@5i|B@mmRLE=!S$R?+*fQo{t7)~Td6_z{&-4p({+-5~{!tNz z3s|5ln>b1bR1mkClE3wso|{)_j4Hur=(7UGoRo)HpeHHdG%079ay6##x|b0$Bxc;g u2fojgZ0C16Sx1gQslU^`=ib+AeZ>Fa(w8PbPG?R40000K~z|Ut(SjHl~owW zKj*#g{lSl`fTBdoR?b?eWhpZdX=Bw~{y{5rHM3Rr%jQy&qJOz*C}?38p_V_uMsubm z)m*J&Yt#_IEc>Zx8MPrgAq4d5GwOL&&iR3CJ#lJPYPA1PvI01~%MrCX%osti_7XT#zLQIS(NPD1xNn zo(B=Kf^{=Kjeku*ardoAwG|gX#=+t;vArBpzDAF(*VN&pBFBjhkkERhyr9Y ziY2U{@k`_aih7>~su0qFkTA*)sR`h)h21a!0)FT|3*H`rJJt{CdCIf4hZpd|Kc!%M z1q9dyOh|w@Ju>2<@Oz>2Z!mnJ-Kd~^*2^OcC_cL!Wq+$g35d7D#6+-Zv5|*h8kPwE zd8}hGizv%^>uLeT?b%>!L}@w+4w#q}Ns2}WrJ&;^_|Ain2AFx2&29m(mRG8DgsK6h z;}DQO>Pm8Hz@BB`?Tt-<5RiH!=q^w~2d#$Eul36Uyr&icnP?KOA8lp$kQL+^KXdO_ zi_u$Zt$!6o3!4t9Hv|_ZGLf!@mjz%hLr6$;fy*(h|LEi~?5(Y#GAqE8-39R1q3A_8 z6Cpmu8cVg@5>V1Q4b*K238|y5>7SgO%+hC`Vt-8~OFVlSzwc@AbVes4X#yw#LQH2> z^E3@%+>4OlvV+|oQH)8GCb8+wjeM|j5e3c5aDRTY38WdB0J{qu@xh6@M+21&5)$H~ zT8OUe+?6+nT|0NM;LPA`00zz=R-8}m60zRs)qFAeE z!iP^l_o-_;x!hRUsBY2_G94t?A}q5bAR{A#it;tol|M(p;TLgzz7~xB;f-wriJq>3 zbblih*kdfWgP>^|v$AHg>)mR$JusQ9y7_RT;c7#DAlKZw)j9#i|5y3KVNe;-L3u!? zUQ{-?N7O1?Yt1Fvq_NWIL&SGW)KVd{z*2#q{C!aM_73Pu3zu?uKxYh&}aYW5yE zP5a%iL(0UFjm>^Qf#S3d{0?#|{)-To7=Jaf$K&CX&%R)D?H<0reFZGY4e#XhSWh8N z>Ikz1vVAlh`8%Q`2k1Q&Bz!rG@$cDh#VBlL*y`A@m+nO1b7Vu*y3R9WN^A;Blml(BQ<>1T&YsZXRjG-GW;H| zZdwfLZNP~T5H}W*GC+^8We57KZ1{J<))tD{Qdu5td_4iZvFPPcBb)^XJpD#edxdJqw$%pIZ!C%gWzmN;p%|Wx9 zg@mabynhhSy@R^&?zLjXt`@<&TnM{FT_}K^%ZHtzR`Os=xqq;Q9GFYZX2Yhl;7w&B z*7YaejRbJF1b^Hr#=?za*mde=1%d3 zCcj_F#QicooPQqnz~=G^kO3RbK+QD0cLfmTtrFB|)T_0y*TXW3rWZr7W%?1oM$%EE z96JKsC_=K<`yP|qs0@xquj#c!h!H{zrz3e=fJ+7VgFD@BmUCn6GV&-hF`Wki*ihR4 z8#6d+JYEYrX3zTc!13ro&jvsS7IZ`dfU|js>1^MsRe#{|YPpO6gcwLiEC4u{2Tz6N znREOAkNVdE2GigvH&$3Wy*${ZG6kHBX7V8b&BFUw%0a?10d6;igH+-C9@xFED3XV~ z!rqta2*6oz(vW}!Hj%|#mC|sK9{%kM*e{>Ke*OF~(zEiASJ>O{-q;6eXoi~&cRok; zJREePo__|v{9=ydM3Fq?6)x4z20$uYuzUIHV)4^-zHS{L;+H(+74m*L5&-y^$%0Ra z(*t1JblJb{sdGw8z;@ZJwz=9J4!Y9``~D-?Hy^;hJ*4!kJmeL>2?sYfA-hz zKzZy6AHz`=1NCdS@ZGodnh{C}mmFQ@@t&&lYY4mZ; zNUd>@EmCBwJ;#+?-ofa@?O5vPB|&79xwbUf$AVvU>vQ72JD@_Xi_Vi5Tm(zIluyoQmfdI{vOZn2q@6Gy5F$eMd Y4>~%)ZG?-wd;kCd07*qoM6N<$f^gr%zW@LL delta 1138 zcmV-&1daQc2ZjldBYyw{b3#c}2nYxWdLmUd2U_gJfzAw!Orga((AI%6s}?M{a#NwD;4It}1b-Jp?IL7R!G++`MY|{k zTZ${8vv5(Qv@Qx(%D|A04Kp3ns$FPe@=VO1d%AcpF^TP%iAq0s+;`u7_k7J_Gqa?dE(K?rt(9eB30%E;wldk2#Hpsr_T2A(oSM9ql;cD|Be zpp^xIVX-0j0@$sM5!b_U;K?TB4nbil;AiyJ57eoC$A7As5f#hV!h%tTeXY=Oxp{Jc zU=VIxhmH^c!-shmh)NA-P3P|$OdDm`*9Pr9Ain0w%dl;@e$^8p4F4Qvx_Z2_1c?P1 z@>zUm`{7bASZ6?9jbafVZg|U~y!XakcVoI9SP>gx)+ltoc=qJrdgAI8uVXR05*525 z;BkU+qkr_3L+rc|3c|%sK6~Zr{ zzW{&-F>tb=!t1ty5dqplwJ#Y1nXKEM29^b(Hn%O~VkbB`P-Vn6FdzzT7iuT&JMjLe zt^kqd$W>k9uRnvX_M_(=?I1fKFkl;{R{-08Tz`NGy+b4tX^!1PG#X{!S*{TfD03;j zwt=vP8z%MY0R{&LPbHw*RvG@Ij}6=2Ve!AgHjohIW}yHrEk^_8bzfawJvB-F9x4x(M!c6uM9)CSP{`Wc!RAJ+Zn++k%+`fC1rq|?zg9)aL zvXsog!{5)w6U8FL;*d&%5tiOeFjYNXn-xdYIIWD9l%-@Ee*F#7ndZsU4m@}SNsl}e zV6?tA_|L-R$CsD}?g`M{1y_0?*kHQmWFfKT#XF$F%wVFy!lW8MeJ(?)%mRJj3Tx=@ zg02t*0!PPcz5w|=q%yFZti(A$OkuKm&7VsEz)DnXe-Gm-OaRv^6OUQ)TGw10Wv;Mw z%Hp&hKYStmz7iuU3;?}A*c(a!o1(0hd@Q~_)_8gT51l2>r%u8)U;qFB07*qoM6N<$ Eg3|E}8vp-gR?tl7=@qnA<1QJ+qN~XJE(29e?~|3sJ1(( zZQHhSIrkTAcE7htx3>0HPqM~y_RPHe@6kSIyo)F)5(12Gk%Z+10DLr&v(y5Ci;h{6 zzY6Vl=6n2*A{nI=42T}(1!h3AotS6X_d+beUxD^GwQNA5HhK#&Z2!P45x#K!aQcCQ>ZO$)>y#|#>I!3&mbON=ZyCtPWD z?QX(MN`@#+*3QfgH)QKA7ekSlUtoa#;MZH0qi5glt}xTK;glE;P9O;kvfKc}3@A~V z8c9%=Ql8@vU|`=qF9RbuebWG0p0M&R(Dy=sA^v#%7=Iu^UX*qxgcCsy$^xL18!3TN z4Fd86P&yqDhU#^iowhK@x<=uu4NxR7LuRI-MuU(SIWc&Xj3OCOeE>;T3(orPaQ&mt zG?rR$;dxhCVjjKqX&W%AMVK|*i| zt>+HWhlyIij|@6%b%dl!2hq%^MKPy^4?TCkfq(H@kRKj!NWw{#){qPu(J>L^`|jQn zdMouBkf01vC1ysWCiR`AJA}`Jcj`5ul*$IGB$*hfi@x(qcl3VDIZ=;NJvyAD;sEqr z&PhZc#zHN|G0a&?<_s{SS`3PW3`Z^Y0tD~J&0LYpyaR*)jH-}f$()%i20x~A9?aK| zQGfS!$t~*^1Cp%5F)#pu>MjMXS}i0SL?vd85&o0gTnwUY~O> zyN1J0{9;uMxfKlzEfZ#e3JaPPK&=yJ10wBcWXLG0Vwk^T9oTLFpnb7k2X*fJ00000 LNkvXXu0mjfq2S8G literal 1518 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzwj^(N7a$D;Kb?2i11Zh|kH}&M z2J;vYW;}g-$xe`9S%G6ZkX8WW_Fr@6GB7Zo_H=O!i8%Z;%)2ATRmArBwYAsRFW)V! z?sLqugeQ=V^CpW>2+Q3arBA&M@^kDGis|Us!Ox`^^61=LYw;$9yiFy^O@d0D3Tm@@ zCbdj>x%{xt_t)1$OJn!U^N*SF)7D&0qrx?`@SN@XcWb%-+&?IOUZ-iYr;h@|?LB^n zoYttDcQ+`ri_YKw@xnY#0mXwS1Kfk%Cph>x_-rU-xpGzN`7+U?UWdHX>+V~#&-=fl ztifel(6TtA8?%(z3bY;fAnF)aK9W{_)iRdhBj(7Q5dEO)VaN@$p}0^D*PK!|BUs z93&K&w8Mn!cSP~BD_194Y}?#7!$_ep`it}#rwx}MDM+@lIheonWN|o<^|>+SfRF#B z&c$~7w^;mJlpUkCLHJ!MFWVEvN1IfurP{n)IaWq4l~JED@ub5QpRh2syK~Au39dIx zTy}3)t>EMrYq=iuUq8mJy|gsgDZaII-N6Pe35LVVx{q~cO?tiTk8$XBnX+Gn%wA&v`{o(4M8AAgx% zR$Tw#YWlOkwX*hH2XFNT-tT?FGIz6hetOmv`~AD6KIKIRb!_|_zoFYhWA(=e&!ra! zh2ANWT=IBvzv8AsW}XJ)jaRjHP1vz!)w&bL=KJ%#R%i7*`}a?cb=5g19=qW173EPW zT-Rp{N%y@vw&bLXiE+xj2-!m`FFS?C+6V8-i*^t?6dQV{T1j$3wd2B)RqNKj+Opp3 z`s`KR$!{Hs4UC^iuJj5oUVSf6{mr&k&9#;nWF`r|6+LE|TWoHAVw!k& z@}J!d3!Z8^9kPzSbmq6}j0i6^wuJ4z&utS+f9DIN#7z&G`+BygPnsWtkCtPxQO1Up zB)8A6rhPe?eD_fGv42?~u3D^%J#_3I)0Ov)dNSu8A5s*{+P?3te3Zq$JwYdZP6dT- z=juJ=@nhchq>rbbHZg2s@3;9Ab9(n=&7-kqd!vmVkKD|V(f?EU_qskO!`rgihaYa> zc92escRumCW~q+%l#{y7#dia8d;fG=o**- zLqRQShc{4zB*=}y`DrEPiAAXl<>lpinR(g8$%zH2Ag9fKXCnnvBn(khT9lm1;9pUh zo|>oNnGAIO8;NxG;qfADCA`hUJ4*>t=#fgZ=v6eAQ{776wmOKbLh*2~7Z} Ca&|WW diff --git a/launcher/resources/multimc/32x32/worlds.png b/launcher/resources/multimc/32x32/worlds.png index c986596c9dec3c89269e177af423bf885d543909..c40ab653a7bd76ac13f59ab5ecd0bbca05b4d087 100644 GIT binary patch delta 2184 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 KMNUMnLSTZR9gKef literal 3995 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 ev48oO)?WZG4r81=;meScGlQ9w+*1-xNQjENeR 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 KMNUMnLSTZRr_gNx diff --git a/launcher/resources/multimc/48x48/cat.png b/launcher/resources/multimc/48x48/cat.png index 25912a3c023d49a05d82d10cf67b20e88f564d49..11d0919b92a39dfe4825f33abb05b1fcdf85cb05 100644 GIT binary patch delta 2512 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 g+Czuv!+rq%50J}d5W01W%vZQHhO+qP{RJ+^II zMT*#SXHIrba(mSFQ!n1NerxY=o_Ekx@&EdN{dslXTMb1obZ+SLcFzXAJa6`B@ZJAi z!+CVHy6pXieZCs()2;DIe_!g}Z+#bcv3hEYKkQql z+v1&Gb^4{w^?!?Jf2*H!{@cFQSXN!~u5bT$d)4ZW?1~S3`?IXN_+8(AZ*;5C9huF@ zvg)kY798-2zo-cpO2AH^wT(KGrRr%i5*$sVeeQ{2Nwm|K?YQYoul_cnZ4 zLDU4F!#?HTbI}&VIjZtQwy7G)8YMLp+a~O4$o7rp&U}V)Lek@?(2`q7T5Z0!;fp;n z)-0LJ4kcaLE%pklt-S}EiNWkDK4#0xk*rp{kRs(a(T=fH9+N$o*+RKJC6sh%uL6~3 z<)Q{QEPtKI=FJ~avh71SowlcVxA$4uKbVcYL)f5fDxC_O@haWEaonBa3YZ2&*dPNO zN3@H_gfH_3S+jT+8%BPmxMC9uHoh1Dr+jmYwz!q5+U~4XJe}2x=TPE_;BjJN(D8nni@xW^90IvybIC^S}IuQ zP=AW5wxhCc096IGRC*gIT(kOl)=Tzgi^!)` zZM+*LTb+$2Zp4geo*0&@T$ieS?`QpZHGk{Hda{a`Mv*7%ZY9wQsPt$PTo?0g%WmejJ> z)U!Bj(*Eo{?^3pGc$L*6L+}z?&L52Y?QT~<63jci!l0$H{u5Fv97+eVBi=opr#bZe@1xu5ke9K@z4 zy~vI`?Z`eWjpFd;D>-ib#_ToyY}N?&#LbpZIc6@r|qtwaE(2Yo_|tE+fZ@Cgg00$w{>vk?lbQPji+)`$~HZjRrY$2 zbx!)3jnDm!?RVXUgY>(s7ax+JC;u=Dn_YSo!OV|?+nt1bG7-c#_BSfGIGuvhO(B{6 zs}e_;0QQQ`O0W;KM#9)Gec&}_SL z_mpV40?Cp!nU&gs@!vmyP6i>B86?9F>NepL*+$YySIU*Z66u!VV~BLr{hsLJ@18sI zGo}t6if`4!TCBk0Lo94|=~W`4BwA%od8WG->UV#dsblMzSp764!;p$#2eX77*p+K0 zu@p)7>NaiZ{Le=q6~$ib=YI@h_(w0WaIbfeg{9M*f95$75T8$U?l1g!?bSp#Jq>-(EjG*2GUN`i z5`KV81C9u}heQ}GkAK|uXbMhy$~5sN;l}ZhYBCxT<|@)TSlV72Gqn4f_8SpIVm5>a zLhU=~x-aPV@~1@CIuK>P+i~RbG6=(F4rd#%odpbpKuQ5CwC^RT9gk&NpYQD~8qJ2! zs0W=PECPlNJr|K03yFRZ{uY{EfWQ|J82~iV)L4T*R7~Mz?|&d2XSrkBjP7a#7B`Sc z6AUK>p}3ZjB(w&5T!3ht4$+Yi83nNs#$cnb(bf0~B5y(THHdu#@t+~t5A-x}Vnz~V z3M=k!qIB2eh^UGcj%zd8tTuDD0TGQSBmPK2`NMG)h{R}(P|86klMtT`i5ZZbo{={6 zY!LIo2^tAdaevF+8_5jmHXsbr#M81>BbVQog@J1Vv z1r7*6ra>4oW#vMuL@v0?4Q`|tQ$-F=q_I`w+Ke{q^ilmr0a60#d(J!X%PaRTKj*sr zDz7kZFm7Ctu`iwRwYSVerZk9b6V_6iQ2Dc;%Do?rw}0GAc*y5dTQRQ9cBRdF_jw0= z0i-3Mjd{lJ#%IPy#)tO0JbSM$W*3xsA-{yB^H#$K&W2Cq1=ksF6_k2ewHUG7F>{$d zHLBgrTIHsYn5$J)EOe)W@&eETFmmOF)47$fq4DIxW97P5g8 zEh-$Zg0y2u>{V+`%``v1K2XaqSNR(k^hmyu4(M}&lk`0U9*&Ru@`7f@|L!LdPr9FT zr4-VOOa$VEw6PTJtW<(TItezscB0hJn8&p0I)4_7N==i3=ht7?dHEb#_|~uUG}NBozlOq~`Cc&d0C*%$R33)?=P1(_K%OsUPZSym+PAKkgyr-`Bvg6%}1h zSvv2=Uk)y~^tZ#j>%X@LZLVJqQN=$Wq>k=-TKSEgPbl4v|Hb+jmJuyIz7f(&00000 LNkvXXu0mjf=Y{c_ literal 3201 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 IM6N<$f@8ks6951J literal 4170 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 diff --git a/launcher/resources/multimc/48x48/instance-settings.png b/launcher/resources/multimc/48x48/instance-settings.png index 6674eb236d40a571d619059b3e16e5c0b56282fb..ec298cd62d8c943ce7671811775059eaf5ccb44b 100644 GIT binary patch literal 4146 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 F{{i`D)Gh!3 diff --git a/launcher/resources/multimc/48x48/log.png b/launcher/resources/multimc/48x48/log.png index 45f60e6b4acb4366b420f7c93d4a49731f826c80..611b2ba89f10ed519956ba2cb838d34cb4fe2279 100644 GIT binary patch delta 1708 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 diff --git a/launcher/resources/multimc/48x48/minecraft.png b/launcher/resources/multimc/48x48/minecraft.png index 38fc9f6cc0ca81b11a5661cfcb9cd9f59e2cafba..5be3fbb51e0dc0a7c36605f066006f15c6e69fd8 100644 GIT binary patch literal 4563 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 literal 5077 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 Qga7~l07*qoM6N<$f@$%bCjbBd delta 3330 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 M07*qoM6N<$f>Gc}`~Uy| diff --git a/launcher/resources/multimc/48x48/noaccount.png b/launcher/resources/multimc/48x48/noaccount.png index 4703796c7187bb7f852b4040d83d55b9f517ab4e..c13e4d6d5bf53dbcc99cd7dc9eaed01af39cd7a2 100644 GIT binary patch delta 166 zcmZo>-p)8dvYr75iZYi)1F1Ss7srr_TTf4K6=h-+aBy68;O;`vdrNohcJc6N+wJYQ z@W9`U>KiAIKWde>vq)%_&D*iSc!whEL=l?;hvFR%TKVHDlG_AI+Dy+yJZ{jOH-p3K zuw=YR!4YBJnvHGe433DEOB`YrezMT`i-Cg(uVSN_*9A#=o+SdJLQbriD|qZ#c9=We Sci*W5a+0U3pUXO@geCx-oD delta 371 zcmV-(0gV2)0fPgO8Gix*007uvZqNV#010qNS#tmY3ljhU3ljkVnw%H_000McNliru z-T@N>E;>|UX!!sD0U}96K~z}7?btnzM^F?6@W0O>Hb7wm)}Xf#y(sK~Ua7DRQL1f$ zNJOJhP$0q7b6)W#nP&3l-tw1tImyk*lP7te_xV20^MELd0)KK{7s!3zAhIljsHzI` zzAt|D`C~(YD9~?5Wjnw z31nFokgBR^WfVyCKvI@v+*|254iHV#K-P5yaa|Xr?|WJq1^S0~8QZBijzOX*0`YyH z+o`VWK+3WN$!znSRz`t@zsr&&0dgD%#Ih`qx~{oLhhYdZ3Y{*{tb@f z2+}kSNDu_vql=>8e#O3C(#j~1crBZz3Fs%Uj&0j=`@+t7o?M}oQ6S+0eF5BMSRWi{ RS5N=|002ovPDHLkV1m)&o~Qr- diff --git a/launcher/resources/multimc/48x48/patreon.png b/launcher/resources/multimc/48x48/patreon.png index 7aec4d7d367732e2846536284817f9e933665301..7e8f253670e78c793abc7438d1b8bba547d2219b 100644 GIT binary patch delta 598 zcmV-c0;&D(3ho4uBYy%lNkl?w=37y1TZ-C7jcS`= z8P&ECp^8x3x4X5qYWw#lCtSSqqykZ*codLM1Ix+paLCoS+o#k5Nf)rr1j{y%9tO)1 zkZcF(V#LTmbh4Vb6JT9ygKt9m=(oRDpg=*eq=RHPSYO)UCx5&G>3N$0Fs4MP0_dzQ zL3$h{ufU4mhV+_EW+(z+9ShQDV1*mr$uIlZ8a@l4K!HMFSp?RPweAVB53Q5R`7b~+ z8?5jJ(miOJUCcKDu=M&^^FBc`*B1ep#M)rJ?`PpZjtPnPUVwB1SP=|z2?eqXdnN!% zY4mZ94~mp*?|%eXW`GreLb}640ljR4fO(FXn98mN&`IljTxkP_G}XNTX)0I|lE4)A z0<42W6jt z1yJ}KFv&IiIZ{$$Be2}@vG6ZImgVoEKE@*FIiHS_g95o1f)N9fTOQ6h&tSA~z!zId z^+0;qy?|T+r*sPEYSF&ra%v7N*Z-i_?}2ryGew7bx$DHaj6#f+2hxpB!G3Updup>6 zoH7U|txtkKx6>};EdL;F1{Q@$=?d0vAkBnHX@R!cB@4KSYk}|+2}A;sKqL?eL;@t! k!FuxB$e{vJqWqtE4Yyc2r4L!tWB>pF07*qoM6N<$f>9b3hyVZp delta 1372 zcmV-i1*7`z1nvruBYyzlX+uL$b5ch_000=3V_;xB%>V>U4h#&rc_l?b?oJ93kx>c^ zNFXt}xPSpSU}RwUb`3-_FkIFREMeuxqZS+BECN~xq(1<$NIIC!$O2*~LD&)?c6mub z36QM=VkZ|Af!IJ7Gw>9J1UUoQK0vlYIubhxiJg*KoD5{=0Dsx>2*2geXJD}S!oa{h z5h0c|je%i%I|GBn9fX+5LIwu@RtAP`ml0y0{lWfa6gyOsT2TTL@zZx?C`c?y1WPl6 z0yHg+f#K6~1_s_p1_t2^3=CY+5O;t9YcVjONem}K0045>HiV-eN3#F`010qNS#tmY z7ZLyf7ZL$ypMTO)0002pdQ@0+SWQeiV{dIPVPtP&WiEJaZ~y=pm1R)N4uUWcyz>=J zJ<|o$15M!~@n$rhyaE;_N=w=r>fcLwnP^YDv(uT`WtQ5eZMeyiZJt6?o8bH^3r_pm z!GO^~F^>da4kxseilZ&rkN~G1LWrqrMbFuO`rda5zJD9jQh=`ONVg_Z-5`wP7=j3* z$nP1xehZUZU+C2+GV5eqm#S_}Ed_FYUdWe8FrGN$8;wj|eVv3RLugXU2HXTf62PME zCmK~!jg?U+w! zTvZswe}88(ty)?abs-2=YZpZ+3eqB2ZDyuLs>~Gsb86o#mXth#2sW$p()*{}2j<$2@jlx2n~Rm_x~Uc2fJ>D($?-j6FOoX{qYdJ2@Q6#5k6kF- zx_?$^Gy{g5OXUxN(}+#M2^Y=3NN(#le&os9R||_b1I6-L&~aKG3~|uoY{_5n14lQv z8;xSXrSfs4S7PL9ix}q4YiHUG1sibT@V%gSh<@h(!%3IQPps?=p8;)p8`v70r(+!n zIAe|uwRQ&?aPi1)#PdPIdP4V8ntQgjCx2`Pl%5FA(JS^#tT0oxiWv66gLgEW znGN_rWheGMaa8q0o^;D&%|`Ya7~;XqD{VLrH4m~I5Idqs$;NW+kb7X&<-HFqKej^* z{1ZV)HbmMy3^3r!F|>r%&Tb&(_b6HdYiBpmxIPK)|7B#GoPTOIGaJyvw^y-#jDMr5 zm%>~j{rh6G8TcyUPlE;ZiZ!AnS)TbY1L^E1KtFHh6nM9_BglY~WR^5N9VDqYK2yCq z)!GsMCfS%d3rq&*>C9!)g*R4q1{=`C#5|rq2EH1aYYi4~`ht=#XI2hGd6!rH>tB(d z$?^fLBeub>t3Ec?ZaCUzMBk0ov45Y!z7i`ZW*+Nh)kfc2EhOr0O37$~7WQExtPh?> zI;5m}Zmp>3+d$R=`qX~ zn8xDu+?E@_IOtV8v_rM(TS}7IZffN_hh#^WMs9G4^T2r*3VF0`H~2o%+*NjROP|-R zY36R3(hnn<9suiVpp~WNe`@I$jsAWTSqBCNHkyHfjb>nAqxs((xVezoe%?J%#iD0000zlDhR1Bn7B;;5%a%$t zt{Eo|R_&?!eA|4_>)WCyQC0qz@wge0H%NXo9X)m+KX7DUuJ6d6OwX3U5A0%farbOx zcKiO~{%iI}`>&|Hxw4m=iJN=|3J*Q?p=>>7E8U&l zbYwcnWHMxe3?f1t#Y9m=9LLNr&2!Pti}>-yKW6v*Zt&RC$a^U8VSSw@To32{I14BnoPUigvYe|!G#FI%^Oyg>?H z#eP*{z3=gdoxo%7`grpFc^YHDO`#ALh>8*4_}ka{`_8|jzWhDOq-X0}bUz0WzTJN_ zp1$fWcYZtnS@;(}y!!j6m!Dt%{kjCgmxsrjdiulA&u)3nY0qbDWQ^(BG&d(3IyNvd zF~R$O^=>MzwBKaRgUWA?{teLartod*>B}E+^dmX#m@|0#ub+${r4ldKL3Z$aCPzOiV1m=irfaPFFE^|^EqkL$yj4~!{1(o z8a<={=DPQyMF&w@sS4~ zaSlfhAH!T}j_yo1Rt0DDy6*>io)MfX75U<^W5?V3-|c}+RwlW{5LU5wX)kv@ek-@# zcssGyhXCfw^B_=<>R4kif~+af^^C3oDVZPl<@$4H-TA&um8V!QCN=EcznAH`Xo8Jl98O z(8SGil6XA(P#T{Cp|7rP$ z=n{85^X~Viq$M;~*1|I$y{4C+{N^WIe9gsNF9ynSnG3gH$VIy@VtizrQ%^XRzCz#H z&FgBBdR)iDlDajn0a;Am*_RujdqaU*TxTtEeva}~na}N(T{8d0n4oZZQuzwF`8r`(y%!<*M?z8Tl7MhzB&X>gFh@YB1V?n)ea{5?)$ zv9`ooWP>dK+4dj)b=kjYfvAv;J^Z>w6Ga`EP#3_dSCxV%zKDgS+ff}z(2RnCR8szY z#h)ogMULBa-0G%RH{VPQ7Qq?AK?3Q5d&xlWAlaTAQ5%BG08&w*iuOQtR%*PUaicL>}X zXTX7qVyywIvPxj=S=~ptGFy5!4N$I?S&QOyk-uK_S6a|%0y2q*bgvv6-?2NxqpL2VdPLlAaNGWEZ0+7k#$;AC-mWPqiWLLSu}VM^ zc>*!yd%D+LeGiYnZfiGBXe>Di@cPYH_f{4kt)Euqdf5Gmxl4g#hR*G}QfB0+>ZvUO zW##{Fo7l$fMsEj769Lk;1c^&9P7q^O3%C*w%y$-uOpHd#q1d%=7qz$sfFN|6EPmE( z-?QBOH&t0DqmL?lJt^u@PV%q{Iyg`Cw zDR*4&hWyGs-JvjQxO&Icw4jR+Q4-tZJwQLa{^my>*8R=eWO82R_7Sx+6G%Z~VZa+; zG&4%*LeeB9jZ#p6_V_eKV{mnc;!InhG}U)_TCdu~IN~_wP%IV~NnJ_{0=3w@{n3sO z&tA?t89FEb`PxKsUiI{t`a=@L34NxIVKYpahERt%iXmA&_mxV8;(U>%g{75j9xhH3dr55`=&cHWr*JYTPea zCl9#qF<+a$<07A%|2x4yJnF8>?r0|_mPQN`39?-4u(Y%UE1!c+z)O9^0SKNoB$30< z=%3pHE>6eQIT8}m$Z-%BA{#-#N^ISLrL^x;OINW@F4#8x(uLi%w`MQ(dl3*(kQ5Ay zDw3#CD@HsFe$E6Q7J~=I3gQF4U;;3q{LLw^+WxBfrM5r!E0v&?g5Z|4WAJI6 zCr*5#bO|?+{CzUkct9WyBly1P^w-Mk7jTyCDvF08!L4e3InH;h1SC{+uad;c>A+1A zD4g3N>AcH0BTk)jDrnqD=hi?aYg97o8Wk@iI{W#`p#>7s|2l<0EHx7F+XC%+pa30! z4^GWlzz4Yrq*a#-vtHiaN7GU*N~EYMMR8Ihm9nPU#HtoGt(TnU&kmKW=;Bvuy6S~3 zd7Ai{E4@lbHt^;$70A#`c!&hx`G($oS>kyb&H>AN*DnBgvQb(m->l;fYk|C$9TdD zo0YITut`1r+Sm)l;|3y66WmPYwjF-BF+G|A&zSy3daW@9Yoyy4=^`YT_^zYs#TnP7 zVKtWosX9-M8d|guv_pSbj}vmOC(-x^ix?|dvm8Syjp;tY#~K-Nrt^Da?-RrNp?|L9 zHh$G^E!-s>O*?hiGiHM|<}lAlU!(RklD8sxLOPd42*~EMVJ504p@zyq0+LBSU5X;@ z^|Py+Z$+$NWI3iSF=uKF9^Hveya%wid)LTodNy%AjJ~K444l*XG`nD*GklNymhzTp zqi@Z)XU&Lb%#d9c5z}uQBBmi?M7jy+YNRuWy$)x|D$X79#oge(_Uh4G{)n9;MO;Q9 z3xps6SYuj|_OWM#(DNAgyD4t3Q(25vv-)=9%ePXST(R>ti&cQ5-;lS}B{S?6^z>xH zy(r%qYR@ShrRkwkDRsKwoGT`(i)reXQsV(?nu8_4F!Ee0&?sZm<0qp<)w zNlY!RveCs(JF|YhQi!Ylr*>9Kre1ccjpkf&S)x%Flg9CiK)P~VN*hU*MH&)Eq`j4E zE}E-I7Z*n#O{<68;E2ASe9_*|yxdOPV}o8x&b?S)-BCZh*SX59D1uRa6a(SjMETe(e zk_}qD&K(-prO&-~V*Xdh9DW#=c~cmXR!mF49FPNqZ1eMKnou_(9V6hz6g2<}2qld$ zPJEk6r&BRToHb4naB{%&E?tQ_RdK%OX?`)IJIf1bj=$*Zl zxqUCYrP!7@_!?-XeI^XX3aO_!&*7}1!b$+du`GZ|#oE~9ywq9|XK13@{GclsqfXJ| zvi$96I=Rg95UdB&??H`*1gH6-_(+vEBC%? z_v}CK*gsZChm@McD@~hbnvILBYCZ{5lE9Jpx-8KYSdIV+W<|hY5=A3}g7}z>jg4tG zF0Q%q>bB$#b2~4Z)7iyJjOCm92~9Z!hBeS{>(%6V_&+Y*9dDi~FywV2BCU(L6=T{` z%MB;X30za8kvNkQwGwBSt0T@Vf6uKX4VpiXC0M!RGLknUUB~7R%kSJa-*xStg$y2_ z(ogHejo##wbLA}H>n9$yp|5aEhMj2<-pv}FQ^wghZ!+N-{tpk^4; z0^2W~qjxIHMVC*+2;U)SH2*m*-6H$M@&q{r$2&Z0?seM9Tez$`$(?Suk*k9l%3;); z^#g@6%~3L`v{${a-oc6WLH_iY9Sra7;*!fJ0WJmJs9)1>-YPrwjj=itcr|eMp3bbj z-3cT7v%Uv2BxtX)^@vSO=PQtbt~B5``?ljv3tS`IAsXd^ZTl%z>!57I@MgZw_qD;T z|5k$sNk2XhKzInsy?`u$XAOP%4${=IP_B_QYKt1mA2Iv_!_W1bdfBc2UWv7@6HA>9 xz%a@PvQj-@5@BMcF0xa9r?s2^%^v@w{69LNIZswtHvj+t002ovPDHLkV1gS86`%kB literal 3743 zcmV;Q4q)+#P)(O1YvSJBDY?#US%vZm&yMO5WIghz>_AD_oewSt8IEwD3REO#~ zr8(7nQe&d=qRKp?_j z;s*G*6B^5*fGgKui4ChZAYGS6+>68WJa~==B0}H?@O>Xa5MW|z0=s*6+Qi@FK^!6XUi%(ceAhS6xficxU%})1f4Z^o)yi{=0&wqi*NBRG+_hufUpfD) z=xp!AXn7RJQ!Vip3=Iw8`%ixdMV%iMp18blkN+x+;(zCUi!HwM3oHKw=dbzX_m8nZx4$S{e3^+p0m*l4 zT6GOhU3MCzkhuHByTF1!le?w#tcCYc@>X|~DDbv*%htqN{MlgymZu~Ny z-t|=c`Ge0rL^kM;R$PUZZL2VzA4l3tLoz`Ne*fn{{mssLD$;|ebgq$q`1_y3aB&zP znFw>#Kh=-()@;BTC!9%A+JFO06ea)yDt-l02nYf#2#~xv*-UxyL}Q{Uap5_aV5BgD z#Y!lF{=t5Xj*miz8qzc&1zgWXJP}7%M;AhbbAuC((r|tlU;ts{su(DnCP82l3j^4t z@ZUw?v|Vw*W=!}K_#o9ebr>2L!rr&{V()>yDEs9FM>-Kp;G|_Iq5H&cG`BP_2oQHI0ArSn-mzXBdf^bxIsF_gZ(F`#_{h3i1q(vemV~^M#Kb01^Z(1dakwS$#)y!&1cR6Yv8c z^U0Pr_Pw=lPIw0r@xTTtgw_)4F?jqGl6Y$52l*iwExj(;%!)6DkBj^^KwPBQ}+qg$NC_&;iE;lBVmqDE}R|!^#HE@GQf&B;e&pzznf*7H!w=U!R79YO-kJH=A z!{O%QSw6}agi$aG2+dYAI=l|J+Jy=gl&@xILC*k$h{EfN21AP)Kz^k0L{%xtQ0VB; zF`p)LlTcdCZd{g-Df#mQ_l>=YMXL3x)C1+AaC2#6fXWpiND~@GBick8T;&24M28=Q zbJu;bSVV3jhpFsT0rI6h-~zA#84xrxSmS^w#U!c0Cb?bSZjo)DPQ9#Nx+vr;2^TB2tXn~@S~}H zSfu`U=jhk6edWK8yCt31kDX3Bmz{OD}51 zT|IYAOwBGKKrsWkTo%H%qA8R@f+RsY5^S1wG+;*nrZTh-fe)eo{F_&|05CqjiU64S zATuL-IE&EMsL3&Q0pW?L!kKY~pr<&#^v1e%LtFB%;~15?*ptEn;E;wO*f#O#!-d5I zXo(&sh6RBT`pEE+wXNp>kjvnHMi_(}0UQ%R=IS`93GHb?nzhzU;J~~*h zN1F0bRA3bgC9`?2lGmKt)@A5VA8h}6 z{W5%jI&RN6%~#dkD6{e_ZJ$nc7rOluY$>`dDcTK0tDFWQ(IgFsFd%{`4F^f%Iw!E= zS|Y~KdfqR0olE5YjznrjZ+i~fV<1)?d2$d1u9|9n%k*8#LYJLJuBU?HWWXHbdxcH^ zs$}?9@7E_wFj{$cN|vTXo6hpaa7f>ts&l#i^mu->HJ?|Svs&w1$ULc(o>E#*g?hSj zL9sTU>!RtG>g`xr|DP@ul%K6^RfF>beBQcF4A8%{u20}VGFJugPz!AtOEQ*Z`qEe! zS3hfxC6JhOkUdmJeyRcv2mlWwKv|V=f(|s-#q3Hk6O@|P*A?@kQqasrWx`KGm^vAn zegvSReqI@e24osyg=#3ivwOTqN$l}|s7mu*aQKge56Vl$opMy3;xtJ3mYQ8QQH}OM zEx09TpiDm(ni)ujNT24Sl>+qk3+NoTaL90D0wO`w&>Zuo;LCuOuvrKb+#(_nX=5BQ zr~sR43<*uGi4;b56~GRc!xk>R?+uMk@~!U8z zq9RC(o$#!0h*3DcX4Fa%%pA0;?$(ay@f0|ffx82 zjQ0iLM|nG4LEFdn6)x;Ps{wtKt3e#S2O`hTgt3qWWihm+p(TR}(~d+M(*O{PqzpvD zQc@CWfvT9Re>jp5JWa7W)`T6e_JLiz!}oD^ad%`6t{g5D_MH4{Z+Xipb(o+MgrGUg zX%=J_1{NW3G?Z;@aTP#RA?Q5-MG&EYmMkn^#H>Jw_YRHG$TMrrLQ7Luq?`1cFCAtL zE`jmlqA&S)8|Ue2`s}{Gv6nyD)R|GOj4}mLXc2iPJkgx+p{o!YfY9a$A_AB;RU?WB zKo|f9`vMG*4dF=xQ4LPII`XW$6H9dO?r|QQEC!I+##>ln9tkWU{x{x_1U~<(J$=FQ z!x^+%bs(bJW{xaG4Qe`YXdD5!Dstc{_%jY-(^W_Bg|3dQ98--U;Y1HEK`B9$JSDXx z)w^>d`R<{t2Ma&qtvvKwU-FrmxDdc2>rQTI%&hXzt8%cVFqShGfP*Ml;A-QUfHO-; zTSv@*BFIp{^2u1jstDL+3ENbwEEF@9PIT&XFYh>%Juoma0SmYB{rt)?-%`>SXc;tq z-qn^_d)gUA^vfocIjjMMo`xS&HHdJ!&Wx_M8Co!i0TB|cK$zeXb~U_lwRTd5y~DEd zmdnTW#~#1S`hPm0IZyf2jS>I=002ov JPDHLkV1mXr+o%8l diff --git a/launcher/resources/multimc/48x48/screenshots.png b/launcher/resources/multimc/48x48/screenshots.png index 03c0059fa860e978239217640f0a6a5f1150725b..50403b6017c1d7098354c55feedafbb426f4cca0 100644 GIT binary patch delta 2465 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 literal 3010 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 Z;iqqG54t+ZVfH6V0LB2TUx9KA|1W*}i5ma_ diff --git a/launcher/resources/multimc/48x48/settings.png b/launcher/resources/multimc/48x48/settings.png index 6674eb236d40a571d619059b3e16e5c0b56282fb..ec298cd62d8c943ce7671811775059eaf5ccb44b 100644 GIT binary patch literal 4146 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 F{{i`D)Gh!3 diff --git a/launcher/resources/multimc/48x48/star.png b/launcher/resources/multimc/48x48/star.png index d9468e7e3a721c480c3b5839ad27e1c51b76e528..31ba3568359d1dfc2451d0bbda8c4f0eb2212f28 100644 GIT binary patch delta 2792 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 V4?Qwe$7lcm002ovPDHLkV1mdE(;ff- delta 2379 zcmV-R3AFZr4Al~lBYyw{b3#c}2nYxWdGYEIP$Z%yjb<8JlLd`4ple}s9)CC`B*Z^}^2bs`z_=b6 zmUe8#B?^l|=AT+uvW^U8S3T)kJ3*B95`#fL&_n%T-Jr7DJDqYLXDsBxj%g&IfRap1BGgDza2gh35wN8shdTBm0_ zx4KyZ-AaW+(0}N_CI=c^upPiPFQ?$$=UU2zUI%(KoOwd)`NQyB$oU^%c9u;u`Kt~kJJ zz^lL{nbjC`q2)=fp9>lnNZ?mWJ*41g7N8KVe;BBoW8j5y1^6v6N_Ja0@XaFuBzy^+ zQYxz86@LrLEyO@S3fytaVCTzq;Mc$q*_D`t4Nv)Orzr$}u2eN}-h!1D;#KYiLbn`t zzDxk8fOpB-ga!8(8g|}RKBZJ>(ip63eq2p3cr6cR(o9mSxMcTvkOj^IzJe%F$!nzp zr#CB=2Pcm}3YuN0^SsU7WPQ0G_%UD*@gV;-fPbbF$J~3)j2$aNVxb`s%95yC0?obz zPAFA5DM1PsG1!Ggz^8#XfL%b$w&_9qc`*`>xu?gB*=3%QE<&OjSZ4?z@2y*u%J`BD zffVd=O@zI}3@irzO<+H;u)dz{J9p9<4)a105+3*$fX;B3?K^j}u)d!C=2^u^M1Tck zR)1kdx#$fL@5m9Q!WQiIF5ZQ|pU(x~3M{U#XV0EJL?RK&=g+4j9!DjUJb=UsZ?k&f ze*<)d!)%Ym_--sle}6x1Kx__ab+=s-+ z5xaR;zE<4fo zNhA^>8jbRnZ8J!)EvzQbm>YheR7Gebd`ZJrknMAC5dxLKqKOHPU%ZG5)YjHw+jic4 zwrx{eTZ;ocGcdq_ZSzPG@X2J7Bk?#-A3e&W*RHV+u>(IFEJw1}l;D{+4u1;O!^6OO zkaS^r009e$2{piibedxW131%=aDRdOqtT+^5que}%pPF)hmH9*irRLlTA8W&<9?jSmGcXWn*oEMa#^ZcFnWWKxFDr3Q48B*%tib#-FN>Ugcj*5kq4ls;n=Nz?r5EQ8 z*$8_g94_iAJ<0V>-2($GNT<1zV7KWfBftf6jCdV<6=TGAA+ewo@P)a}bl?j~I6$W% zQ8NP)L*yCpUqb7k0k}^CAAdspaH-&@i?GRLl5{#dWoY?liDXgtpOM53g$!z1w# z#3cri=mXv-vjRT~t%FM%zOP|k8p(zH4B18cHv4UxhaY>4?>+uFOMjOx4Fum|TxD%K zP4_gxZq1rCq;A~csS6iaJ263Z0D)oP_vW*PR26*3I;?ftfnKj8_Rj$33JF}RQYjLN z1pWQ}MZvculROAK2(%=Vbj0Jt+uKPdr#7Mc`};{G60Az4sKGy-2dPC2cr^4L);jGK zG(AA02L1|s(&r%-uzw8LixeMi=DL^9`=tlo=6XPGkU9bKwq9>e@5JWUVh5{X1c^Fj46NDrwCu>lRZu&+bw19=3tC{=008y2ikzy=`d^RPk^2aqZ)mP$>V zRpz?kxNWm4m16HS;6ZYqR|Gg3uBPGcZgUWl*IL}B)OHJgY9ZSH8o_bFEAoes;PNpf zj!c&fdhYmj#D6I)BY4|@`21gx?f$v&$T6)uyx;Q(Y*s3?2>z&`&O%DaEy$J%B4MC$yKrt8K9hTTlQ-u{tsNJdTsd4|6e-Hb113<2#>-{^-kY?H zY|GG3#(`hvfY;{0qwwfy%Di3D{cUn#%mJI$5S{67Ou4rfq(tODT0GgGm zc7;S;W`7{k#rqWELO(D=;KRT_fIlOyI44B_IOhiJ`9dlApnJ1YAsd>NG^R8CUvCAL zBSe-VRh{<&X+~W~yxI_QCNPu_*!z4{!M>5XKIqPsElO2d(x2b0eA-CfHp~4!ooE=< zaBvb1b>FJL8WhS_Ia6pvI@=A%ahCri{+ClguSA9(7tTC;yZ-FqC!3Y3sDh0e)@!Iy x(k`kYd(d+k`J2sU1%nFCj>5|)=iu)){{vp(AQM9}6(V zW@crXnVETg9q_(@eQyX+=c`klDQQO;gC<&6eFnkI|4pCn>26t!F*zgW`jyLp#3!<^ z=Q`OPKQ23K9?JH3qil({$fj6}tdBLy+So%`9Xl?|W9wvD^nVkX-mg4}b9euZNBhR) zL?S6i6IbL=O}nIOjO_1eWH0Q79dRSuU^8rt8Cef&U{wzz%VBAcc3B*~A`5yXWxf;3 zn}8fkRLZ$tOXPH-RZb?19D^f-{|*jXi9N6jwiA9UY=RAhUkj@VzY>VnaEd@z!$$6u8F^4*KoyFsq@HgXv*68;=q ziW7`LF9`Tny2j%|E&{R}BeoS_4id9qMspb$=uXPszM03OcNR|5)MB3WT2mlW2)?*~`iM!0C7&hR7xzWzNIZxTj?D!b{G% z9Eqv_wgP=(QiZ2udxy&7i3T0tPs8~d4wT0$|K`2F9~IKEBiafw5ynRv(uY{Dz>&ll z9n+7&Ny0x37nAUw>!rz09VnTgGX3*e4M!w+hv+yiU z;uXwuY#GrCqa#Z)1Y}p=81t7_W|KxG?v&*{{MfN$O)8Z#AAS5$c8Sv=%E$_gjkL;e zCVzmgz>c0toqX+qqtOo%{@uHG=J(%!H^)yL&nlrT3fq1F_0A|)fEnWzo&N4b;9B_y z32(o=66fK$eeaP{+Yhviu4s1I(yyF_N4rjYx5Kld4;4PU#8BJG-@t=H`hgV~6KR*} zQZBL~{)sL)HWPk-v~y$iYs;I!!}|-og@1)%`hg123eG3OB4eGdmNvrK%8tW7hg)zN z9%`@v!~2(zvbW53WEEH^x=vkdmweYs{lhUtmGBQ5V&V;ZafM)qepy#Z-hV%(`{!Oj}!< zCxl00xj>-dy(Kh0y@cjgKhzxoB!5`Wb+rY&5;Y+RHoSi)o?U$$31)i;TnPE}fzC?= zAKq^moe^E9y8v_GP?^st)Om^E!~5OHraGVK4!|r}>FA4cln64smjz+wLg`Zpc8OWC zF)^|mN)HQzk_bNh1MR?>lR2G|PL5pB)&F!jrqhW4B!UfZmzK7C(x%h;ZGU2QQrDbQ zU|CoX9)Lu!;osPq=(ubPnu$(~g+i+?*(Spo9gT932sXTODwH<*WG*Qco>-!HxQPhN zb@U$4O^M*czk=EB)%Psw6=AD_C!5uB0(_@^p*s@6h6l2wUH$CaDvH!sjo}5D!bG@M z+%*Y1)dqeKCOjE5i#v3Z@qfQ}=GeBAdbaOITia=lXIS->I1fWC=W`FQ=brAQm5%?` zq9VzPK2qm2Nxe0m7uFeIrzD=kearLQ!gEf0({f9vNyyf@?e)4ytt6da5HTt;H|%K% zUl9$S}>L)+j=gWF+)5O9as5zZLGH+w`tW+Jn*R9i+a z7qh4*;EMu<-}N!Q(s{dh&75#XV3#_MUGD_{K{sUHu}6fLAk(S>;1NouQP&BQ9BUNE zYbN>Ur_K0?OJc$|r0000BK(|8vjRJ$Hmsieg2aSy9PQb~948;HY|}5l6~;9O6g?4t+>^k@R8Hi;^EO9J#1o z{d~0OvFA%b9DiRP#k5;-*ovdJAPM6rkm$oZcK|u=+yNvhq`H73x>4D4>Xk-2}fCm=bwP0vG8Lp72*rwk2Z(q>_#Ct26QL+n3U2XtjLv;coMf)Hqpx1&= zDj^|!KEyp7xlO%3e0kmkM0b2A21gNu^k53Y35X;?6d%0`L<+bagc~8S@q8qWRD0Cx z!*9=-fPXj}--+NP1|R@KLd_spnbHCuFApo=QUp>WZ>o;^fjT@niAf2FGj+`f-p3$> zAs}Ew?U!KA(az^9DFgl^dUh8tb-YC5twwkUxaT8b0#A&otoulFep0b@~*Yot^YN)dTH7HIOjiY_(VPrHDLQ zY+$E1T?>cw5JE3K|9tl;AgQ0mc(TxE zAwtv}NEOF%9oU)zi68vi(0HSfU0Zfx9kSq>3vjYWiv?c?Smd=25cb)vQt=8L>UAtq z5S#>sAN)Je_^(DfIyzYYjrCZT#ecEaj*;AvW9a)JRs&F%(Kd$fB>~8e zWclLa7c5!2gmvrIVVVUc`2-T?6_Z`9WdIK_Xu_ufcLvlolZ~M*z}Ha%mfBF`4^u!8 zSP2jBJ>=%uo76^YrzbI#W`F&<_2mH%@W6!sxC9XYF!@&HH-Q!asvS+jPrv}ez^d7k z*sx(kdB6kw+k*S1Hv@k)X%2)C#tQ&s1UxY=8w+$fI|mZcXtX@w0WODNRCqq{Ta%4T zKSz!I5+wqR8L-ml$nzvoHt-_`e5fNniWF5NKQ+~*Vf(=O-!ub_0DnXjES{vGnD8}lSl za_|oDk>%4q2h|_-hJQ%Dt9@9J-6HdN(Ua`Mi8zBy+u?% zqxrTS#SwK69!PJ;JGAJ&9Ln9NZbdy+-uv=i;-f$Cw~lhH4 znb_Rj9f>2%s|dHbTPxw&Bm`zy0DGmk*VG76*j<~eWCfg$_#O8iw*9nvtFXB{d3$|N zO*2Zpk068)5S8%V)XX#C5upg+pf!In><6F5;Td&wVtd_~li+G6@)%}#{UTTEUiZp!HBGz%_s5(l@5>xOVo z^RP!9na37W?uPc7W(?H@)aA5WEj5uf+2XW~3-oqC15e~kM%%n%+f6n&%8hOXkQS;pcU8(Y72<))HhFdQKdj!K+%oloLAe-8AnMz zx7jW#sWz(KjG_faJ%Tt;55(PD`hZ>(eF%CHd_ZF4qB^aL-s=A!^FheClCXv300000 LNkvXXu0mjfGwJde diff --git a/launcher/resources/multimc/48x48/status-running.png b/launcher/resources/multimc/48x48/status-running.png index b8c0bf7cdb220b37b35222d7c1adceed13ad507d..94598c927769f5b4fb6b770f46e0340ee29cb8c0 100644 GIT binary patch delta 1717 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 diff --git a/launcher/resources/multimc/48x48/status-yellow.png b/launcher/resources/multimc/48x48/status-yellow.png index 4f3b11d698815c22c1b237b96f4c10a5d517a092..bb76fcd692fd57812391e8d1547f920ac9146430 100644 GIT binary patch delta 1474 zcmV;z1wH!h4buydBYy>&Nkl(SM{%G^t!+6e$YLFh+K+BEToJVA~b3teK-Pp z$U^6!h4p~~P@O#%?Ct`jcjY70m5r3kvU{N~&lVyuU4-yd5r2jziXaLgW2(^zWLTvT zGN|e=fb^+)^C3N|t~^L*9)>z{5N^vyAn5>e#R$%oz?m(E%%~JVCRG!K3Sj_73b0KZHaN2VaOgO-DF}__YMP#8AC-WtcITZn>RdW@Pwfm6mXOP`0$U!aS zxPgj3-+2kycz+66xCZ1evmtE;peY;Dkd6CI z>3IKK0CZl{rE{5%6QBZeSVd!r)y8v3d%hb5LUg_k;(yadbNoJYojJdD9dcYp1If`| zEu^Q&je^u`B$!U82AC^BDp#2W)ynnLq)cK`s=LrcAxj}Lk$NhCnIino^?i=3Oc~_J zV}(g(B!61-Ocb&}{r*~jX>P9`Fr0HehSju+yDXPTMPQ{;V;=R<3LGzv}@PMmZEUj>N388c^@ z%_sb#zcl}V0B#hVIDnBt1bFxwRZW%q&v}X&(SL5a08*QUfD14bL3r4lAlDxF6M&kv z4S=d917R0n(83VU?u6jU(XRlzHSRo++Dr@y0s1YZXvHK7A>*aI(BEp0fKecTRB2_0 z9t$BB8vUw8+dKETq0ByjbeBQeiV`W>pe@?;UI`~|x$}T&6awp1mU@I>!Qr)p%|C?v z`+qCsyDuPLe+Ky`A>!DyL0hy*+pqew^w^9`*AmqzN~SXT(4u74yzo2C$pYIXZcnN|=qTMYm&CJnRDW6kd&^gcEy|5D_$HVaPz3iR>?VPhfMHGk*YK zR{w;Uv;7M&W5=C?!m$7W)|{;VJ0d(p`Lm#Dv)uHFFK8$wbLtJm!UJEHl;(fmqokyq z90c`(6GF6_UD;1XeY5)HL;<{udWtOzUPRIi=Dyu!m4CLIa^2Js`gW@3u7)X9MPjxx%$X#qqD`}DnbbLL zbC+T(yD9_s2|=}4$&CbU8RyNWb;kBO^(YKezXQ{Uk5 zhF~OALJ$r(aVHT=tU2{^waJWg{v5ZMJkm*>PbCCJkcM2y?ETBxu{p-veSc0?I_!#3 zzramC4^^k*cLmsq1!>BMOx=a-)ST~N##(a6RfIMY{!@dhbOhCL$AyT8i5H#o6hCvX zb2w(wf9&xx3juXHtQzuwc{>x_5WmYYlKf*2Z&jrsMI8!Nr6XM*Z7#w3xK5epw)rf? cYcI?0f6MNGy}=-tuK)l507*qoM6N<$f*f47g#Z8m delta 1758 zcmV<41|j*=3+)Y%BYyw{b3#c}2nYxWdRNt z{j#Y7ad01Jk5|THDfe-uidSe7+ z#9a^uQ7)8;yO8L#Y%K9wEI)_G|A%6! zJiZ<{MSptgiEtvHk`cFP7*RN^3Qi2R?`uAJfR1)J^b<%X!0+V4C6AFzM%<|DBLzG& z3@V&d1t)IFJ6`ih*P<;BhkjfUAF?w0V@t{?`pigzX}`&4!#eb zi?4zU_ijjk?R8aS;OkqGMwt*HDM06Y5Z|_Sq<^EZybO<~proKm-f=k;UMH%0z$lj$ zlB)35uGW(W=;(mGUH*6wlBE)t!{^Hap4^gSMmb}!^L+cxEoQm_y55FZtSsWp_>de6 z&Q*G##1#cmg^t~=vHN;(9C)|O{uU4%u9VLKJRX*#3f-#U#-Tmc8loHF?M_Ivm3O=U zd4EHWf-k@*y@6xZ-T?QY84!UzyMi51LofIOROtE7r{@IsDu!!6^q2jsEvlp|A$?%aB`ywPJG##ysdu!Ojkd z$JS3KJGWZ_0yrg3d8!;x1q9j>(E=8q!+#(C2!9=elBslKqoIK7z^_lh@B3hPgx9+* zv^I%wz{3XLpp^)!_M!Pzc=!Z9{>|?=apFXi=v$19jq&hb*U0-pPA%f$z)47ZMoBxq zO0SN?Rx)-2IDPtbBl)hw*w|QAd$ov#IVx$7O6sGofHw&>0`_}>{Wm5%wDoX|@P9PO zEHrzDX#}b`3Qs*XWDyRdP+YUYL@gY#8^FlONYhD%+p9&5fUE~(12c;10l|)q_x3>M z<~449eywSao~jLCKJKw?Mm1Ad3*SK2Q(-E|Fulmzid! zl!M{6@pGArb(0rw4(69Czm3an=YNB9dS8`ERl8uV7FtK{Wms9YZiGK&PWGJB`$0f6 z8f4uT7FtE`<(Lmyh$^E{iO5ESl=xiE3VG9@3Ul98>|dOafDilho`G>y+fCo*T1hn; z-{dSe6a>bP_t~04IVM(ziwdd=(=#?#`KG`a_-dx?EhvVI!MU=4?z8%(Du2TUSS`ZL z+?MmKiY)oz*PD zKu~#k^rW@Z>S_W0_ry*vcH}ZpTfJGA8$I5q*A=cBY`0BJ*7wbuiIRbdDOf8Jn9kMX z5mlSW?DTYs0i)be;Q0zXn19&Xo>(owe;>gMf6-F7Go4}}>e{*mjxUBJmB24>h;_0K zy$`7-r(Kqot?3qv}^g9DlA(r#4yS3*#R{ z(yziGkOV6v(FR?+p>qc$+cv(x7AvceTYzWZ`73ONcwU5or~$hv0RVsdlcc4{Wq~t< z;tj!;gLdtJx01GpVljyO0r*RFkVKNwf#Vpq@kCckP>i@)EHqhhnfy}(Pesx?9;6-L!z^p|~G{IW+B?p~K8 zIGjQ`fRIK>BkTu2d5Vxl$s$Z)xZTs=nAdH-2T|q+{Vg$R{r~^~07*qoM6N<$g0Njs AdH?_b diff --git a/launcher/resources/multimc/48x48/viewfolder.png b/launcher/resources/multimc/48x48/viewfolder.png index 0492a736c2d7b5599ce6548199fc43c6485f67a9..893f4caf25f8edb4eefb887dd5999984aeaf7c24 100644 GIT binary patch delta 1324 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 V+gg_i!T}HgC@vn(^^Ote{{=K$OYi^y diff --git a/launcher/resources/multimc/48x48/worlds.png b/launcher/resources/multimc/48x48/worlds.png index 4fc3375119f2148837880bec9adee528d94b3321..d8b426ff38d740d6a56a10d82bb90fbcd5f2fe72 100644 GIT binary patch literal 3823 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 literal 4043 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 TdJild00000NkvXXu0mjfcmR$^ literal 2429 zcmbVOdo)!09-ro*u5-MH9yhg{sdOC7-Xp`zC1#9g5gJTfGB0Cf9%cq(iYOZCm>f~7 z;}PSQdl1Qu9^{Hr6sA&9UxGV>B zpp6&kC3I#-aNT7h_AZ$>l_}fHB(Ttq+W>nh5mvxsOXz@<7sVG7r4Hy%dWrCUQH(_c zpCFRG4(QKL(Y$;BXMu+f=>?U2#G{U#A4&(;;iDVtpp+t79tP`SP+NB;VfZE{r5LNBkciuvL%iGovxmC}V+$O^>rc#Cm; zLW?DS?Ekp&O|+OAFJxo=*kVD9hzZvt9J54*bN9!F7J;xg#GN88Toif~MZk>VvH21Y ziUS(Hv0`yqM9|s}gdp3kpe+u>+d&Wk0tt2$TZrTW5y;lg~*^f_J%Tf~iJvs^_29`Gr{MD8~{0B!zPCCAkxEp5eUsP4+@DY?NJ9^1>y<66*tIe~L+zC1X-fKxdTuj7`&l3!4eICi-260YPz+;>X6TSR^OmfdrXLRw1DUHq-vEL(A%T10Wkp4h_rs1JkPZY&}XZQ2La2-{u zp>1c!RHm+;(qA(r?4XhYppNOsp`30Ze9SH%9^**rM0eg^9KR!A3f3Eypsr_^JyhCc zP_FnJ(WD}ap`V9Q2b`U{7``ZfH_!C(xyvh)%NpIa4r&5NGh-f1PEKx5X{r;6>o~c? zQ&UwMX|Hx7%R6@{Of&Fle0>oXMPIP>YcC>+2OT?xB#TNvS-|-!$IDZDwZ1v!G|r zsBBDzI6p5N=(N=#J&+d)Luw3s&nw~|>TMFIsCA+@xrCovtqDbH@~*ZrdOqA#8e`74 zKa?wlBMmgNnNUIAKl)g6 z`({Q;I?|mPJ^AIBIrUq&+u_2;y&bP&Lhr2}cJGUAf0*HsFte|CboaRj3x(~=?G4UF z)pyAvow7`op&I>{3*P6{J%52bD>9xo_$lyr6WiMp-Sy0Xw$SCtqh`gbv6X@N_|%N5 zmoFct@N!Rwt;@&s+;XILU*zj~i)T8gJ6X8oWAl$=@@Ic4>W}dO?K_FiQ9&r)lZnF2 z-2sk8gOWXaRet1LPe(>&IOF?(8`M(FZ%z#PZ{ZHzk*OwB$D)*;C_h_fwtjkUshx6C zJsg55)4a^-=a{{f)%$7PqFHF%Is8$2AUfJt^tZGwix$+11h+w2TS1y}wYefiIg+)0 z>K90_#QTkfd`&dv$fF-1lm6Z0GBPTos76(EbFJ#JnO1s(%(G(|!!l$Ag{g4jug3KD z_U2T?y*rhZh$I%Lpx65XbwXytW`_FF)XQBl=z3$f?CA}rszPC~V#{b5rL?L`JDzUS zQ2sHP$jETMZ{HAn@<57-U$3g|qCOo0WIh4iWqDD9V{g^!@^|gYG`AQe;ZkBilA@Wf zJFD74LFs8!txYCNGMk=^F>;&DYX|5qcl(gz+?J7mR4|6_4eW27NE*t`ZglDRouxZ2 zF+&|XbM~zNh^^N3?YAzLK$S@3@uXD?`9|`}1-BM*^Sghp4eXu8C-C`MuZ^M>+V5W~ zZFK|G{msiOeojcdcQ^EA^_$t2<{U?RPI||E6Ze)w%glsF9bWDpI`DpSdAhw_^d!OB zERgIJR3QA2TKxL@hwD{Y4MLRcf~xJ~$B{SJ3mP<6A=(s3y>g;K&EgM{hl@9*f*f}6 E-vjLh{r~^~ diff --git a/launcher/resources/multimc/64x64/about.png b/launcher/resources/multimc/64x64/about.png index b83e92690f3924b705dbafa712f98f50683c8744..b9be9abef611f84f6f96cfc93b79046931003f4e 100644 GIT binary patch literal 4775 zcmV;Y5?JktP){4^9zh0 zdHbmmd~=Pet^v>u!=%)-DIt^ymJ60fEN6@Xke#cm_&y6D5|$8Rv%9H2Oop!PbETYL>cTT<66o%$(aBX0Am7S z#t3ZoqfdLS(Py|>SqPcd6QsiIfRi-m5)xbpNK^r%^!Sea{lP+uk;>x=u_^t zp5D&1fz6N^LBdEbp`pM51*IO;dqTQ480TOD627o2|8%1Oj;@F#=OoFAB{ZwouGA(f zjlQ~DZG>6W-U+sD#sJtiA%N;u2ma72Q*%dNd$TdN_(@_^AKnN>bvw$bjJpsLwrE0i z*_4z*001te1VAWTN`$|4nj1 za!}W_-2uPasJWiMn}s{;==yfnV;9<1s zz%z9)-d!1T4)D+BiLOM&UL-+@%@`*F)OKB`l|*UxQaNt6N*UzGsbGcej% ze){dl`{y42lv#~~>jC%M1$+^4MK2V5c|-wIr)YKH9~`UVg{2mb&h%hqw1TmY1WCCa zW{6UTT&)}mUV`6#^%hc?ARxN!xlWJgc?o!WW$nW8Z2;LjvXX%*f_weFUFCLw!p}%UO;Tq_xn(!?htGlV}a&G`GP@W9; zH33TGmB{oEUDw@;=T&UWSj)nlD?4jfgL{<%y$^VOa`{kmWbxoZyFU0-JJVXbQFoau zinc%&#lR>jq$^34v|~_=G;B=vI`Aw_mW1qZJNNS4bia#=t;u-;w_#Q?MJWeFEt5Mj zH$pg5{=oE$!wZKN+)CXCK)#d!%d(uYg-56BL(|Ws)S29lm@bz(fT%9+Ht7{Ix?xds zfF?@;1m#%EcQPSzg2e6NOA@3YN{anLoOL85!sT}T;nw8x(Xpk&{Q!(FBS4>6KGN(z zu=1Gh^*p?n!V6PYhAY9NnDh$p(sPz`S?Ab`a|m&(r0%wOGf0u-OiA3|ioL?E>WV2i zOc@QC-e>oW9O<8WV6NKJ=K>&KRDjhxJ~!^RMh+%02KHh`yV1Y3?#mE`6xj)i*4+|I zffqL-9KYJedOL+ola#U*<~Vk(jT6@c?8fSVByI&S*M2cKptyp_RRMdcu$bY`*M_Da z9h`Zn7l8gnCP6yB@JMs&k>{TD2d3WG&Gf;YjsOV(kbNmolK0g;%F80;ZJGV4lvaUaNmV1R;!hacX%Oi zdw7U_OBWYH?ff_x=b-3rk98GiQp(ePjJ|r7H!1~4ICU+*FK~o5Z(cqd0uc8l!1il3-Kh@ef;wrQmzE`=h|9-Yaz`;# zZGk;`_^~y))}!KRvi{{x5JL?ceVwaZ9)I?ao7jzVIZ=X((oZanKGap!z9KIqs85`z zphm;4G>2;aV{S*l*8K|5ol3o~nNDBCVdPxJ9Hfv?f-fRkh$%!+N>FulEDrgY?)T8D znCR)i_xRmw#nxfy6qhz4G(8ihK|za8`&0@hP`d8PFIJy^2KApbW^wJe(eRcu?+JOhBo=jx zx2HKCf6Vaiw1`Wcsz7zg z5o7B80g;p-oLjlsVlkNjb2AO%<_35(N?YSaFVO%9o)OU)Vhh|{2IN(U%iZyBpT%Wx z%!r0ZO``&Q&Bt^_=&3N#S%A(a697>$K#j*@H<#unpN&NXYepo&8o*Z}lF_9^tnxP+ ztGW!E9^QuUk(ObnBrs9pm_mS9Fg0t%5c&WR2LBD69wP+N_&zsI!O#YYYEKB$M!$oO zkI9j?zwri1YKDrLinR)a$plzaw!6FCGnL_nCIvrCk7y)?KfrK>*aJL4O6vU-IA4oU zc{YVrV(sXJS;z3_muF2?MGBt5`fE-k4?F~xJdHDKQ*@S$Eqj`qS!vllQ3>3+7JE zNt;#M%a7gAXuA&qZIPW{RGW)84q>zK3K5n$A~FoSAr?J?XG25qyW51-FB-v3&wbM7 z6j*v`rLB+ii{p2v?_O{xIE8?4`r*Y@c6#sp&z>H)@ZmYq!TvyqfI(UMMM&1VsENAj1pSF4B`K@An|jUskU2*|FH?}O3;xg^wr^Bl+`XB- zf4Rd*=zg^W+)nxRu>AD;Jt@BajJDyu^+`?KZrUy)L}^&vMUEL@bmtPb%29X zpxtv_KO|@hk(x9eUTT0WqWL2YpVJmxCyk6LE8u;=IER+lIcCrcz^5aE8|Ce)(J3Cz z-adWk$<<>y&vnh;TO{S<{2=hcSdPRERgb4sRa?VBC|ZtB6eEm<#7$%q$_PWOGV=`k zxqzXOpCjjV#9x5-qJmR5yOrbl`xo{;xqSF3me^0oulfUIavshP=Jwp^i)wVL>G6c7 zscD3eVi`cL_OftVur7`z=pcFF9Njuq}-*!}q8{`)xT8T`RYQPv3+!=8=Wf+%$qO@r7A zaYd3;1Ytm=a^6B6&VUc)`r+t@L5E6P0wVgMVEy2yH8_>M>GMe=dmw-B{Jtlb4?V&O zPXONeGu7hmq*tHK`i(XOpe9PvR82I@3L?TNR;tPDe7^(_R(JDIfrI7_Z-i3` z4M#m9SW(e!`qS?9Ug7cX*SAj}dw%WMi*c_tVj}-%Ie?gFjC*se%Fsy)%$5&CJ^3z@BAWpcQvf0jLl*(yc)(E$*fK2L zzKM5Z;FwL<92bm1>sh~^f7&U(%r;&>Y;>x*F$M1ZonM=SL61mm*cnM~dM6o4tzV-h z)@@MYnGK?<2h?+t=S7`^ya+gev18!AYq<7&L@Kz`VPiIE*2cX?eblP7o7qQ$@t`xK z!2N&Hi<2B3XM|{agB)GAO;PlODoCor3z7^VA`&qOJQsi4P9X7~O^oTFIqOxjhA|z@ z>B#P}!2d}O2pa?;YM(ZrHjg%X{=fZi|JxsI-vUVky0;^5c#8l4002ovPDHLkV1kgv BN*(|J literal 5513 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 diff --git a/launcher/resources/multimc/64x64/bug.png b/launcher/resources/multimc/64x64/bug.png index 156b031599420011e2a7bdf76714c7973a092775..6c9ac6af2087cb98416d2e5e08c77771181f36c1 100644 GIT binary patch literal 3810 zcmV<84ju7{P)yRy=N@UrGY_@oKDptpmYjT5mIYH{v~vaH6eb)zQ_5lhqehKVc}~gOzgTN& zY;2^Vp#i-kJeO#d4I5fS4c+3FAt}qGtj9vx(9YweK@lE0JCJkKK>4ik+=sjjZ3rly9fswyfgD|s%IYGw>M&$wkYBEIB(wni z+2TA2$%H7JnMK23`AKP}_V?)oWF;vPcXpWV6!(Bov3rEw)$)Q0(zR<>TDNXZI-Mq! zN}-_?c-2oB54Ym5{b3Lo29UKxr$!leVV2WR&2VTE`T*@D?FQkA!IgK#&ypq5Q93ns zkFdMC@>*fE($v+}q3;ySU&eE#rLd^u{tFDrA#4ea3$yN;7TmQy&IX{Tw2_4PZq>uC z{Bd%!jFOQuD0q*s1Y(M0jkqa`I>uZ2So}$fK2z zqlqCn7RmeG%+gK+IOCiQ=X)>^=qy=R?rb?)aHW^X(5CJYw%Fa4?oMD_PEtY z13)J|rKZCAc&^BkDu3#4@J_AB$@=_66?pkW2tEafSmVgR5L2}+E=YNd0D8%Ja-`&E zntMu`yYfCRw#ePP(y2gRef8B7UU}segx6ksZCiN_f>KkP1M7<1T|q(a`nyQ+ywVoO z>F&}0+%#up4W|SDr!c>Wl}6XGF@FFUh0=rPdFZist6zFLP>*pdXlNouR^Jj}z&KXg zTRNVcW@gk7%=_||RJcL>Ce_loQ-`3n7T@;+`@XbvaRU(6Cn?C*R9<-}zp%K%f+NQ1 z?7@HI1?AtAKjdrqRK9b=XvirRWoL%4GwI|tU_v1burvIPFz|(tAep z&p@X1KOzuyz{=mkBTl8YX+F4332e3p^%#cEMOq&ja#02 z`Y%o%*_=Sf0LBu+8^T)UC}Sc*wIM!ImqyN;P+0AiU&(8~Z5O9UTIg znlSOjRsIE-3uxCsxh;Sqh-g3<;q9#dKDz(!-nH}T-v8`A+W3>Kp9$VV9Hbaif|pld*k@L~M_*Skl(yY~p6>^{KPyY`09)egCDH;(up_>+9OQcFHo zO{@QwxN72T$r+1x7H15nL#SI%BSOF?IfPga`SsmnDcD=b$az7K+S*^1nKLF~Dlh|> zs`0*Dl64LMx&k2KrG!wLXtMGMYZ9Lsnhx8h!!~z1zgn!Grw>3FJ0(Ks_v9c{4z^lF z&f|dBjfU?|hJUES-&f%q6XBJk?QvE|0MrP&^h5AOtuk;`KkRa_(*`c+Hay(j$RqEp zK$sjx3xqMT9H<9qLmALw`=;GsJnPcajgWE5;+&0JRJ(oyB5cFV&wOOWW((C0R9#D+m81EDeRHcQ9x*)GFT_4 zhk#&=VOoSh&H7jl>IuFTLLnQZ2%*p)MwMVviB_8cj7wUaA2HZI;HHcp`r;4e1r-W5 zFoDr@)F|CsAsExV3PNU>I;-V$5ClVli4bxj_<~>pJe0y$df@Bbup|Z3QUX4}hdeln8So!fc>gH)({iqlj)wmmp(qt0Unc)uYbS{WF_AZCEWUgU`xPzvzh z75LH^`07~r|0)num8O$fOn;?*QwC!r6cZuD(?JtsR*Dc@APQL2pkNPY#r{wR1mG~R zMN5*+5deZPgdOk@GeA*B_mXdUwt^rhV>uW->ps5i3 zv(~2??FWtn$AA+NK>UQ_K0s;&7ApF&;BCdVwl|AgCPjlKc1=__K1Z50B1E(j(=8a9x2kE=6N|=xiS#?QuL<4=nLOO!=W5 z&qCgrzugPp>Vb!9mVQCVPH&7YnPB6@7*7X5u*6qsfafI*D?sOjzm6fVQ==vFukVUI$Z!41*r!Arnu5^J^4(i1WhAqa|2h6rWG zteK3Drvs@66Tl{dP%Tc3J}*JH!E#u`U6*!*SuBB$Ey6ivIM+fwMnB57WW@8T6zoOS zxcJBl5af8vb7tbi*x!WU<7UamOema08yve+NP%9Jb`M~N2S9c`?0v?wrdapI`+qIN zyGFtvC%N7?68|KPrx^X{So~Og7MS+RqSLy@$g3$9Ak=LR zAqzSk$WMoTN#*bY!!xS;{lFdpQ2h(QFr5DmvV#Gh@CC<*c9dfDt#*T}4E(Ie^3zi( zOZyr$tolO}M(Yu&au`2lD*Y}$9WrIYb{h`fP_wImZaKdl*a!3!{$pf#&PQABd1|lc zV9bKT7N-ED9h`LrZcbsJACL>&*k@SX*Fa4Y8|Q|2glbr7_Jpp?rh77bbYU%9eRXf+ zp?)}|sBZywDEeuPegrUV=Yb~!Y@6pr?F24MYkO5`6CctZtdmzv7&{~-YzB7{^BGB+TbKX2>l zJGAs<_bxelR2!dT8hp|af@|mea87|Gz}tb#R8xC_oxm2Q+Gc?`aF6H5n;ajn1-7|D z$8RqmatI%)=K7}uLM#!byC5j?yK42r*B?5zM$R4v_6kD15cOdLDDDgP%i;CFT3t72 zkI<_@7jRUy)}^Sc)<9RQj5%sx>+S##1-RP5A`d$}JB|mArvcM8;y?s%cp7+I0QL&H(a%4#0NU*f^uz3c;`v(q+!W|RW`SJ+ z76;bd;#qW=4vJNxHQ8cS;+Is?)?T2}L;J#hWt7l;^ESH1pfYrb%V1=&h)rWS+zx|0B zI4l6a19K{!qpD-2vzn`<=f~A=HtKT^sM*y3Q^>$S5CHvBAJDD7a#+sollJTRh$7u3 zryD?_^nSkq#J@v)CGaUZcPKVd?du_x8d9o%w;F1Eq5OWI0SqxmJRWCtYO3KOjWcij Y93s9V@6sGpY5)KL07*qoM6N<$g75V}O8@`> literal 4263 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 diff --git a/launcher/resources/multimc/64x64/centralmods.png b/launcher/resources/multimc/64x64/centralmods.png index 8831f437caf82e2db4e56b78dafaf63882e24991..d30735601784f5f2392764918a89560bad0a7eb8 100644 GIT binary patch literal 3607 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 literal 4408 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 Qghv2PH9b|#J-ev?0yIM?CjbBd diff --git a/launcher/resources/multimc/64x64/checkupdate.png b/launcher/resources/multimc/64x64/checkupdate.png index dd1e29ac6ab63f05f988ca17ce3feb8d73f213d8..337879a7c911f8c7d1be076c58801b0fb80b3298 100644 GIT binary patch literal 5102 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 QWdHyG07*qoM6N<$f`Lp2kpKVy literal 5858 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 LT8b6&R^k5v={rA) diff --git a/launcher/resources/multimc/64x64/copy.png b/launcher/resources/multimc/64x64/copy.png index d12cf9c8ab03f4e914eb9390cc1f0c2b1d18d2c2..afaebca8db4b75d80ff07594543c2f5908405b5c 100644 GIT binary patch delta 2066 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 literal 5402 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 S)=>}HBcOBJ0PzlP6aGK*(cxVH diff --git a/launcher/resources/multimc/64x64/instance-settings.png b/launcher/resources/multimc/64x64/instance-settings.png index e3ff58faf7b887d202e7d40422887680a6db9a9d..9df7fe9bcdf55ef4f57c9f9877a076523269f37d 100644 GIT binary patch literal 6346 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 M07*qoM6N<$f`mCWV*mgE literal 7125 zcmaiZcT`hL*M0~fy{Obk?=28|3&ntx&@>>u1dtj!1f+um6j6#a0i|5pMIbaOf)uGD z-H4P(lMd1e7-=8(y}x(;*7w&pYwdZ~oY~KM=Ik?b&dk|~_l3_aD<4 zM5+ICG1%{}+cj$b$F`1sBLM*R5q<5uW{+og@3(H?SIwXCta(aa>|nOfbnOGZiV_4U%Vo2094%P-O+XK$X#rnS!eTR?Qx(~k znlV1p6MXCyvJv+%sW3Qu7UBjb6#-{vhEW^gV2Ce;888v%XH>ixgmo`^=V;+< zUh(QHB-f?ukH=Av-Dvw@fuzYHP#+WgcE15Bj|$@lA93AtBuD?Q_}fA$GpgO>x_;tir#jR{reSaSWu7 zHhFvDbtoZ5XFt~^hE5h#Sqo;GNGT+=f+~Q?N?liyrv$l=ealZKpn= zKgmg8n5Mt;i2!?QQxQmfet-P?XZ=CJzgi0P1Pr0`FdG{;;c;rR8dX5@@|(}AU+D(w zx=RtvF@8#)i?jxQZ&`5n`0M!XJhaRrhaq!-1L&Ku9)D&8rLCMT6O5Wemts>b&^D0~ zh@a?UZh`kSVcc}EKwaKyu{;G1=d+U?P1b|QG&?(Qz10D+1@fmTpl1908!*e!QI<

    *PG8%}6N~0KTu0 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 diff --git a/launcher/resources/multimc/64x64/jarmods.png b/launcher/resources/multimc/64x64/jarmods.png index 55d1a42a05b02e0b5f24f10e7810d17ee825b131..5abd5ecc55da9287da0d4734822d40080c145478 100644 GIT binary patch literal 3618 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 literal 4003 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 diff --git a/launcher/resources/multimc/64x64/log.png b/launcher/resources/multimc/64x64/log.png index 0f531cdfcec1eb1fefee55512f18e629a933bc79..5eb970d94b729ec67deb691ba772c4d5736c7783 100644 GIT binary patch literal 2420 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 diff --git a/launcher/resources/multimc/64x64/news.png b/launcher/resources/multimc/64x64/news.png index e306eed37fe00ee1007049d63e915a236c8f2e5b..a1c28fdd63a95b2cd4ddace25c0ab55c02d9f946 100644 GIT binary patch delta 3444 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 diff --git a/launcher/resources/multimc/64x64/patreon.png b/launcher/resources/multimc/64x64/patreon.png index ef5d690ebf9e4dd895df66a08203c90271a5634d..5c2d88814cb725c5b9c00daa000ef721c72d5704 100644 GIT binary patch delta 762 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 diff --git a/launcher/resources/multimc/64x64/resourcepacks.png b/launcher/resources/multimc/64x64/resourcepacks.png index fb874e7d39497f099f77950aeb115aa2fc642d9c..80564d453d61c0ebc3654a554be9cf8d35835422 100644 GIT binary patch literal 6022 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 diff --git a/launcher/resources/multimc/64x64/screenshots.png b/launcher/resources/multimc/64x64/screenshots.png index af18e39ca31174d52aab97844bce396c6ae3d1af..54e9faa6de275b5c67509a67cc31cc0c268306d6 100644 GIT binary patch literal 3878 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 diff --git a/launcher/resources/multimc/64x64/settings.png b/launcher/resources/multimc/64x64/settings.png index e3ff58faf7b887d202e7d40422887680a6db9a9d..9df7fe9bcdf55ef4f57c9f9877a076523269f37d 100644 GIT binary patch literal 6346 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 M07*qoM6N<$f`mCWV*mgE literal 7125 zcmaiZcT`hL*M0~fy{Obk?=28|3&ntx&@>>u1dtj!1f+um6j6#a0i|5pMIbaOf)uGD z-H4P(lMd1e7-=8(y}x(;*7w&pYwdZ~oY~KM=Ik?b&dk|~_l3_aD<4 zM5+ICG1%{}+cj$b$F`1sBLM*R5q<5uW{+og@3(H?SIwXCta(aa>|nOfbnOGZiV_4U%Vo2094%P-O+XK$X#rnS!eTR?Qx(~k znlV1p6MXCyvJv+%sW3Qu7UBjb6#-{vhEW^gV2Ce;888v%XH>ixgmo`^=V;+< zUh(QHB-f?ukH=Av-Dvw@fuzYHP#+WgcE15Bj|$@lA93AtBuD?Q_}fA$GpgO>x_;tir#jR{reSaSWu7 zHhFvDbtoZ5XFt~^hE5h#Sqo;GNGT+=f+~Q?N?liyrv$l=ealZKpn= zKgmg8n5Mt;i2!?QQxQmfet-P?XZ=CJzgi0P1Pr0`FdG{;;c;rR8dX5@@|(}AU+D(w zx=RtvF@8#)i?jxQZ&`5n`0M!XJhaRrhaq!-1L&Ku9)D&8rLCMT6O5Wemts>b&^D0~ zh@a?UZh`kSVcc}EKwaKyu{;G1=d+U?P1b|QG&?(Qz10D+1@fmTpl1908!*e!QI<

    *PG8%}6N~0KTu0 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 diff --git a/launcher/resources/multimc/64x64/star.png b/launcher/resources/multimc/64x64/star.png index 4ed5d978f83d9fd90b661555bd243b36fad0cfd3..24e9d75c7ed6c8b690d01d1be788f055692e1b51 100644 GIT binary patch literal 3851 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 N002ovPDHLkV1iWAO_u-w literal 4554 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 diff --git a/launcher/resources/multimc/64x64/status-bad.png b/launcher/resources/multimc/64x64/status-bad.png index 64060ba09c68c975b3ea6a24f8fbd47f3fef2116..8701b542bc6397247c1c0bfc3f5ee54fa37e6bb4 100644 GIT binary patch delta 1959 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 WZ|E=54qQtB0000# diff --git a/launcher/resources/multimc/64x64/status-good.png b/launcher/resources/multimc/64x64/status-good.png index e862ddcdf2b09667a1d875b48b56252dba420c02..ebd2271031335c86c88dd1e66025b71d7fbff9d5 100644 GIT binary patch delta 2293 zcmV2*PWhPUnE%HaYX4TUjTO_1zmg4S& z;%1?^yL%ek*2o{gxf$4`vM5L^ihnw32_Cbg)T8_O^gQXo z;wsu-)=2xxu2HCLi1w5T+EprO2iOL-mI&GmHiGqFU9q6GU=3IWRuld0(7+e1sy6Mp#$Xt5(Mo7d%FF0g5aCL2GFNSSPfPp z{Bp1qECGuO1%E9l9HDtdFKBL2fRcd3i=Q{=&S;kuox_ag!y1Dm~FkKUay~~P=>1l=v;XXog4R(&Wsau3Y-AP z6bT3IDmaP&=RJb1a|`{cVW$#3!tkNlju@Kgf3Pf7&wdIr@={Z+?H^*5MdGcA;LYQe(xi zuw)gm0DtNQJ)p}Pq>jRBtpey;r4I}Pl(Qn>Jh)-X;Ci{Aj{YPc5@M?Wbb5!W&GIE% z0C#ily)Z%sqI!IHXGqjrlXay~X@1F$FvC?V`X~R6UNeLHA z1wG-8E;V_OhWP>{bgBZ-F*Y03e-W zrKeW-Ilsd9_xCeW0?mmdA(AGj%T$^Hs51h;5m5SqS8Ak$iv=ki{>zsyOhOX&hRC;_wqYj~SWMtH4m8w=pGpUUCoM?w`vLPB zXD6(^V?}ld5`>h1^}6KD%=Cv(Tz|mb^yrST-W;N4WT&+ywY(g?4)lRtmWG*`uJDOB z0cL?m=?Hl=s3ls3U6|GOntTu(FVHqK(;q(mNWg5%jTYcHI|)nAL0*TK63*son3=gA zUS1!lBLVORA)xpOZ$hlJC0xqUFf(&MJaZx|T0ot7glK7Dm^U9-0=SW-VSi@ket70m zX3S7%gb5oCZ)mB#1G5|qWN4b1xg1_z9H|28%{PQCr%$~1w#1h3I8Ecs%)Ri;qqLX` zFh3FY+dlD@6HACA;3;?j&V#v*gHHTF?=r50k1t?e;TuR0EMXA{XZ-%`4}eX;`iGgB z>=+N(%+?=1@g^|0FboO2>3_%~u4N`efb+l&f^i!|fB3{Z!8z6u-e{a_OE{N3+9nV` zKt2JN!pmW>DRvkP6b5-~X%2t{I+m+*%yuuloCr0=PJ{whC-vI9tg}HVU+2Wdz3}Q( zxIvu?cU!f*u^0foV5OmL>iYHTSH_L-%zRIj0KORFOTsQ|h`JRC;eT{p65I=a$1ws7 zaduu5=&?7YB-#u;UdPh@Xq$HE{O1_c5fpj@OBdKuCDfIxQul#JhQYw=>TJw z#2T?E+U6aB2*Dz{!Gkmn65I*Ti=r*^>^m1l87vpQ;FVJ;A(X3oK|_Cd$?n|f^7ltC zi!;=01R#NTQCLK`$$y&)Ns{1Nc+SvnD7}BYjS*}Y;h)~}%Bd8wCC{a`{3Nm|PdWSX zx5gO4#v%V>Gib3Z;a0i}yE(~$kG;iI&VKyOQHHQ}%v;Ef_Jf+is)8}x&r33^@?*~a zpSQ;uw2vA#)c~Z3P|g_a=q4E)b98usY>C|>{Y`j zc8d%{Gp$J&Dh8t@v>AeKrfayXBf0P~wi{}AfGo(Ar~rn1Mm5beh9N?b6cO<7q(Z}e zJ;|H!%<{^b}>Z(UhFRO=YI(Z9swd&1Tz!NM|p;_c`0gC z%UJvH9E%E+_O0NT;8<`>WB#@|gsnmFmq5go;R68#*p!0~3t^6C3A&KMZI~XW0f6uM zcgM0=8f`|2&-OUOsz5S$NjL^~-#CfR1_$9s=(j-pNe1InKnN$Mg5ku+yv1|5{>Dj0 zT~EM41#U1}yg=v?89osyjPK9je@4Iy5For(YQK4UYF-sh_cY>QuOaLZ5dX*!KL?%* z&#CRr(>mdO2UJBZO*cCcD2Ome5GsuC-+)gxZ}@lk8~+dfmmh=2>OQ_7F(p?bhxSm? P00000NkvXXu0mjfTl+4A delta 2948 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 delta 3174 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 M07*qoM6N<$g8B*idjJ3c diff --git a/launcher/resources/multimc/64x64/status-yellow.png b/launcher/resources/multimc/64x64/status-yellow.png index 3d54d320c571253061c0e61af9326e8f678cafbc..6c6c511f0e1c2efdde7d646be78a8edadbbd445e 100644 GIT binary patch delta 1908 zcmV-)2aEW&5`qtqBYy`;Nklk+o0&>x z4)Y45WTtjx7KA}&M*a8STdGQQ1!1AR)@M?|IbWTE3k73L-g(@Ks)z0PMYI*iBCYU+ z+HfV*iix>atj@Mzb*2Rq(=E6%-2~r6GmcHR;1>^CP*sT7@_)AB=j}N1qyu%2+Yx!x z4)c&i+h8IjOei419H9g=L#D}8Gt4BJ5KV}TH=&LkDGLEFI`KnN`@9q3XB{w4$rC~e zCc6Yz0C_Edcmje=Ngj~#Muf*2Q9Ig*AC{be#WsBFRX1v1c43DC%yaULycR%Q0k(v9 zRzZpY^8ZE{N`KfHp@=^2v-kpz<7@NXs3x&k7tAa2lB7#`aRO%PBFySFn2lR7+xKAh zdSK!MNp|`B7XP<;17`6mm%l(MovsAC3OosBv;nb^dQ=~03`G&JavVn&k0ZFy4Kq(- zBvrut8JM-}Of&#vhCYrRKeuxQCfuD?1rk6;8eoPR5PuwQz|n#VSnfv6@^QqMj>9Z6 zxKs&i3^?AW1U@hOy{xJW5@A(ALIMTE2OCh6e*yo+H&#x-A%+4>LI7DHYnNdTdKGMb z(W&$JECn>Zse)lLR1Y)YgEPb!^CDpFG``QIZxiDo0c#hTc#ncBEZcsV$VpX!ErFGA zyT2LV|9`9kVkhx49_5e{PG$Rsf+;R9FQ*AeRzj$+5kLDZ0(9hgj)#a@6gv7RSc>-) zKxwdYOQ%Gpg!ie0cb@aSz1`LYPDsM?X|Lovgj(llW!f0cLgqjZ$z^AvP z6cCpHPr}Y!?VvnZzGVyO^C8~vWPe!7`gqHROz@feI4jn#Ys2Nm^UGERNJ22%V{_)w z??m+zw?vjA$!%)Lwt&3fS*0e*tQ052l_54t9F~ zjUQ$R2)CkEofJ_b2}_r?fy&^~IZJ?71-1YtA67S&C*h#4as=%4+NVK}gRmta#12e# zO@)ahJUgisD~n)-NBL90%qG#r+`-DbbBth)< zRIY&SK$?L6VFKe#SfvD$kU+G7N`Dn_Fpwc&72}Oqr3B+jIFte=G}Pot*a;l6Q(%l2 zL1GdT$i^YN2ugsD7*E3T^+R?W9InSPjjxTm5@J^l!Gn;K@*p%)k6&nPO-RI(bCvrj z9Le%1ECE%+65uk?R=JI#(QJ(&V+@As5s?H>#FoGElHc^Z$)`7m^=;6HI)6$qLK0qF zuG|h0_X22lh^Tu=J*Pqvrn@S*OH4;Uy-Q3C)FYfKVXwDxlHcvM%Ri%2RP_5$JHQ17 zTnUfPRgQp%=j`&&+AZGOh#ykI4oOOA@LGoD%?@+uueXkV#=wYG1u~V8Kq6<#UqI-z zUH&^iugHubAyC|9ei55CI2Axk8*6PsGx#a!FpXW+WdEynBj_jo*iwfL3-HD3j}f zVjOI+lGpDwA2m(R@4!iwpvJ_0UujR18*8%t=O-^W%q5prlEq@7~h>;dqF3lrv zCoev6qNM2m2fj}UA!0lcx;-x4EUj~Xz%G078K%m*-2D%JcHfndD&ondlDOKtiQCEd z{pYhxmbNQ_5^fWdDq^x*ZSCTe{M7OE#6=#a%Ujn32aY5NzlRTI?v$Rp3-fFrI%Su; zN5IM33llc?{)-w4h<_8~;Z;QBteT(sY0^f|ChzY(nTf}B+b-x!Q+FL4W#U0%(nW}| zw&XQp^Zv&tt#x&dkGE${+9OB``qGs3*vw?BnRtwtTrvimldZC+mtkVpU{>zHYy~t_ zl|;YmfBNhhmkD#(;T9{|Y{aH7|jFv&U+A?72AkUDLv%-$Zi@&5-^8iiqH u9AiR0a)nHgRhJ3(e?BdvWwlNrV*3(0`NEP9 zf9K7c4}aSjLmljdPo)yAXbX)|=mH^ik$s&_)aJ`H2&pItuYXvu$buCph$@JHyGW&^ zh@r|di%Jnn+XWOBG^I_6!89}27-Rf_i|6y5F7CXUH#45`*Nn}$e`)kS=DqvQ`QLNz zJ@?#mMOCRbB9~;3m27OLum*Dmw))C-mHe46(!)|CD{xdQs`A>>s(4L>O7yM zdk%yZ&j08wyE5fB#N zW91<5fhrxPg!cI%SO>lU`0V^2Kq>|46eJUnN<$(6Gk-JYx(pd(s+<^X;$m;FrdOPR zsjwVK!&y~!&SkoG2!f3est12?X~M;0@N@>Ir{LM_+~hiNTj0n~-qtUd@{J`CFnL*y zBAimN@&p1xEzr;kmc0~lN+XqovBxkz4o-0savbR2^R|At*m4&~zyYZfSEzWP z5$fBFxqnv^$pk!n1WzV21bE1BlmRQv;oZO1F3g(NOBF>CIAAKK!3wV@Yh#Dh2>*v8t#7wX(yiq_0uz- zC0J!kz99Zsf-4H!Tr;z5XxjArC=bxm3@`71ptl(c+a$@An-`>PuT++R(H71r>~~qU z{Lr##<=gv05DLP}+w)0K*q`=suH1Vi2^hH~M^))_YhHk+?}7L#BykmB+pv8r*p`u3 z1b=|O>%WturQVsd4|wngIbaEYk_usX0+tGA!{K84Eh6ASnu8APbe)V~12nc(SKw-(a|5(C zWt#!O&hAML7Cx8P1O`8q=AbZ$(BZbBjejqKy+mJrwJ{rmf7}6evd+?&gxKz#Mdn$6 zEgV20Cgc)pKrY#8soV4M%DuEUy{wF_(m*(ZtZt&0lUh+eYKHDz~BFs zH-UK)~p5i{m|fX-37K@8<5?QA;3{y_tt)W(`txW zU9`2BqdO|5mDeFdfI2zz2dHmcVd+)?Z7n(F!8CaQ`R4cR0sbbK2LeHOY1>>y)IM(g z6Jnk~t7Gv~+ksscx!SKQGtE_nWPb|Aryw$Fj;T~`vb2(LziHdh-U8hl&Cze?d4G9m zX@ZzHI^eL&RC-^2DVBr3*t)xH6}r8RcrAE;r4T68P3g83x-u8pPGzmaUtGCeHYS$-e+vtUdRKXp z3tm&HJnSWUH_xCSJ*lJ)tFAyN%TDN8o5nD1%z`Yrdm;X?}Z`{sn zpFDrAaM3VVfLMWU3Q-%lh?tLbt~bA0!&ISe7PqV)zoR!)8FEK~c)~cOjv0wTuz z!MiTtLP7R0{448ChNB6$bXcTRMrlY@T4q;jk)KT}zma!`FA7 zPfM7M!R>F2jIQ#))u6-Sa_`NXDtrASX-@_+sj_b9+=3mOb1SZ^jfrU(yl+xvJ<8wp z1?EqcT~M<0SAQSN4$I;T$s|j=M7;O{bZuOg?90Z3QPW9#qC5b1tu(LoyjOu_X&2W& zlJ-Qvq|3X}9}#G4hL<)$eQ5E*F9)+R_|I@|n(NWxsxMICba@vyFNi;8aZZ&!@PxrE z*w_Z$odpTYRX{vphPbf_yygz(avg$&D37*ZG4(`dM zna_LSk@_}pq|`V+AC|RkE*uu$3zHmF_yFiADm-%x2BED9LLsw69S9f;ajhhg%={8& zi8~g9$$yz#gt~-;W2&4OZe68qb6#Bgtu!Y?90%S9O6Haph0bMh;q;7m7Z*6=i*d5& zH>o?ehp-n4E-e+}s4SJ|!6eq9{?Zh>+&izW1uXeg1#ySxCEo S036%^0000d diff --git a/launcher/resources/multimc/64x64/viewfolder.png b/launcher/resources/multimc/64x64/viewfolder.png index 7d531f9cca7c4aa311cb7cd6d8c09d17e8fe4187..675ac0485a03ddb5a5a1de86f2ef76bdb3a5e292 100644 GIT binary patch delta 1453 zcmV;e1ycIf5WWkLBYy>jNkl{kY`{VxYwcVNT&HT`__f~Q;GIVrwbaZrdbaXO;gAtKMKB{o2go-qAT z)IcYJ!N|Qs7kvCIRr(bpcwqn^9fgJ>XdaKEWkRiSEDAnHoPSXrWsqkFDCZHqlk!8` zCT5OoOe>7;T4-B{D@O3x0CHp}4=k*l+gMhR$4u;72+w~Rp`OaA!Yx9)S5YB3I|D}d zOw6C!m_JclIF&QOMC*J^21xNWl5|J+ZV-HNMeS5T4laQm12acfT86d_gco9H;`5tb zMD9~^Ut_-uDt}Q9AO-rj3``uDWTe5w@UDUW&7^A#ut&#g^6h4QPZjC`_~4$6Bt~}) z&l}q_(915;De%hxIrJr&1bR$?eRk<0O){Mh06ev4 z*FdryK@dPQvwC*L%*@P8+BkSkb${6AKpBPz&n0|Ep7;}z&*dKGoZKmIn@^|N_7<~y9-fWKP-l8AT& zz+}6Jgnug1#{eJ%kEG)l(It<)dB_D1y?)AD?|yRf=ie`%IBmPp=5!mMf4`28zgexK zVF^>QHD4?&pBUCKhduSZKM&w^m3+Ir-Yl(8js{`{^6cIaa~}dpQ9aanmvF5eJUFcZWNYyIXZ|GLz_v zjh}qGIokc^cT<_P+=E!2pk0|_x-#W-WrA*LLe$pcYFCSIVcpxWmRs+g%gMxrF5{SY zzG}Pg)@>`M)4L~kj8R!gWJy~alP!Gw^(Ncw3n?X=z=4I0zRyHvsNS0tSFNH}J)uJB8kW)n1Me=KtoF$DVq+~G!CNtF66h?$K z%wd;F3z9&BO(I4~D6dOZX^F6gIqVuWY15=$ghnxdhEc}Bx*9GZjA0FP*k$6PNgW9_ z2^`14Up`bpe_>%5!y4wWi{!VGT4J~X!+&8Q+Emb)W#%Hn8fJ#QNw%3xJqiAJxQRox zu0Xs7!y4wWYuwnTnOcxcMvjKVb(UsiSi>B4kz6uqLQu)TaTAjQYa7DgNd|;9%wZSE z<(+pR6Jh}T#Y2^J@PH}Aq{19_?K@6wle9$$5(1CLz$O8;wb&?v1QF)2Ydo^4Nq_4s z5y9b$V4W)fP*7OI9Cqa%8>E&=0@#7uY*)-!OT$w-Ly`z{*i&QbnuN*hAEG-4q9p1{ zsKA02DTF!fI&i;~o1{&N$QeS3JBa!cE`%|xVGg_Y-#fLU79}C~pu5u%uYn57F1t)Z zn8U7JFMQRJTr$Q0puoeu)*GN=G=E75bJ%tB6^CH2k!?0faFFhxqtX?C)1B6sJj`KF z=Nv!6zI$seXYckMQ`>E?w(IGrGTdiGJNjVDW?b8EOr-NpXyCvC!LD`J(#Ce0Zg+sA zssu+O58H3VV-Ie&diP>Bq>Ii=`1t+JjeYmsyW7s#r%Bn`E)f+*B91s9VSn$$yuLBn zIO()~5aGkSp1O4R%kRGY;@jV>L|>}7;R|b+!(IxN9DDK^=iPbH<<~ua!KGI{bN(e) zK7ZcDSH4hF!xXkKo_ywccS?3_*fGoArDvAjUV3-wJ*D@TK2S-+5~i?)F|1+65SETg z4=z2f^t9Qbv*PufcQAx0Y$jn0D}mpKr7E>bt6#(SWKVtoKntWEEnmb)00000NkvXX Hu0mjfO#RG2 literal 2134 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 bztR2+gmL?t&h)v300000NkvXXu0mjfJkyGv literal 7303 zcmV;29C+i2P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L0B*Vf0B*Vg*50uf00007bV*G`2ipV) z3;_-5seJnY02~KNL_t(|+U=WptYuks-hXTFbMEw}davfGtGcR3nl5nDVCbgZZb)N? zrfu25c0@u1F_y4oXOQB=F$&lw!UO-<$^bHnEs@BUO=HIbPYewWgl1|6_f%b7Rb5qG z(|h&iJDzj)-Yb9XeeS)D!I7*efaEJZ-Fxmi@0`8YUh7-m`qsYi_piTy@zd`=`Ty)* zZ~pDCe^1R_>JLBlo<}}V7NfVRdJG^kxkLd~Fa|;Z1u_Fp!H5t72!d&Le)YrexaVEp zO9sg54@Y+C+g@|`-JH5KL@`(aMNy5$$kT*#BZz>JIB9EP=bS~g;CKJzYwrZUHw{n? zw)yB+)+mZ9u6FW|09fL?0;2IfC^QUIsx&j<&Kq}7IsaWf*`N7OkMn__zx`W>zym+` zpY_o9y@B9LRO5Fxoei1{k&egVkgoGyx$Vddpa1G9H3mTplCC2e?weorcN)M>g;xF9 z6TJ=vuZj@gmFRt%246qJ2#67?O0fb`-%}tLsJyN>8~MFEP4|iS{o(_E(*wHQE}|aq zT#A21L?}bDRPu&&hy{Fzo}xin-5l}q7atSF(9Gg>Mg%MA-GCY)GlDVkJ0qmQ8jL6+ zG4zZv*!mg+hWKv3>3^y3519A`nTf`UxTW}@6i!j`i+}X7$3OADfBnF|Zy5rE-ZsGp zD(}c`w4T%CB9g2<1&)P}9-t-~;_`Z*iz|vqd~kfYk06=C#tJx%2gZO46E_rrOk{js zfRH9fmDeP0D}@V zTDS}(kc8mlH9iEafzo-5I;zSOG=M5foK%srM~xvQmoGfDEDSv4Him_gKsPOh7?1$L zM1y#Z?(Gy>85Ax~)J~r#8c8q=)lv4=zC8#kFc>+EI-HA^REZZ@gYE{C`UsE zy)6cVF56pOg0Ik!W|WL-B^n^0nELxPr`kZG(-55|7(nV1>0XlFYjBoyf3Jzbh{0wV zotb&AUA_pwpFK0+ftx$uWPlJT$^u^%WHt_>bQ5&0vB1?Rtdr320YY%Ns$ewi(c4<* z)h|23kNoi6R3RIu)QIF06dzA^Dt2WIU{hf>otCHme{731@%r4@Nz(UT!J=R?di{4? z4aMlbN6r;b-+QzRJeV6zBn_46wK!t-L{1ncZ$Y{VdycyBQiL)O

    `}+c>|DS1f+;uEM*L(QrUn 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 Y8Q!lFySMUm)IN|Up00i_>zopr0KX74Q2+n{ delta 268 zcmV+n0rUQf0h|Jm8Gix*002vEDck@6010qNS#tmY3ljhU3ljkVnw%H_000McNliru z-3uHQ0U$T?40Qki0J}*$-?Y06pvaI7clv49N0|1j!=6OC%6Cx_5#&N9cItT(RiXw_4 z*LC~82Y@WgmSx$tji+gPo@d*(Ns@S;*L7VOhD0RRb^XVNVc?ttfYw@T{R4IMS9Lxt SNErYC002ovP6b4+LSTaVf@aYG diff --git a/launcher/resources/sources/burfcat_hat.png b/launcher/resources/sources/burfcat_hat.png index a378c1fbb0fa0b7771486cadd18deae6a6dcd6d3..6abf178204b203e6a4b5c33a5a007658a95b15c0 100644 GIT binary patch literal 9969 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%0D4vk*k2l3gww`Zmx0?LzM5!Suo(|12k=QNv zRccx_t5+l@cQ}hDdL!JBUO$N!5~F@IFdC&`qVR_%6D07e<~(beHDpDtK)>HI<&vA} zqlh#U=UZ0lJm@5@`JyGcP8<=0qgr)4PNZq>5&j4s?35Ylp z9pY8%9@J9lbTIs}P6oYZVS$?@5kD0`#bT$@-*1trKj;o9>&N1zZ`GWcppc|~9ZB>! zEUU?A^Bu@Dey36l;sgQ52PhBZ+)3Z~Imug+V9kNBaoC~|>7^qeWV$Mgf!%0y# z%eibKYJJ-vT>xa~?P2!sVz>C-+GeqlR2!@JJlCW%C;>ch4_8UEc_=j{fpT|RR{vUl zb+Lq>eUOzpj>-c>_rc$9!C89ep`h^)%MFCdM!gNQ)PCOVrh+@(*RaEy6 zyckbmgK7Eq34K$L<&22ZEqI5y^hxH)!@c_}=B1o1@vjn-H9Q{P43a!;Tlsl4=#MP- zrvWcwHJrP+DQc6c-$XdH_yj3(Mn#T!k`Y#0#|YDS)ObAcgPgKr3up?(!YPWdb0T+$ zy=^q-m7tbTHqaYK!Dta?9~Mj6aodRW?Drp5FKhlfW4zjhx;QKxEP___J`#SvWj_vip231g|k%h9;3;r8OFl2h*!Lqon}vm2fbO< z-i%V0+I`e{1;)0^kbOxS6mOgcFY75Dba=z}NRM(UZ>bSfS>6u|eV(saSpEq50}}Xl z@*bqES|%vzguT&#+g6VC?rZHtkIbAQ`rGovT1!6F6&`?GU9C zo|Mqk_gKH(wYvJ;)ZE*40Af4@lgC{bAfFT}LtMkd{PIVdm7>`T?4_uW-qKwqmv<3n z?Zx-9x@Rc59!FDO$)p6n@p3r42)($Y=^e!&fNafe7@^maYjupBb^ZOb@xR_^k)OU3s74xg{3?~$_kAS%;=YWP3QG`f-MPR4w!ZP)UR?d&>=Qz z`cMG`UyKdvFIj10=PcYkyjMQ)TKM(rt|b>}3JEG^i#VjO&|$tSfW!4V&Y`@g*ZhWL zJysW04fUi_V_a?pv~NBgCGYhvtpqsnsu63^f84>H@@Eel4-OTVwXid+W>s39KyZ<@ zMUVCTlO6yiv#@ech3!jh7GW><4-=`9#j-r@SuWo$O&NA|!jp40$s(55e`Lmk4~)aU z0LQ!UoDnN{om*LEZ{*u=TnDWXF&^!f`R>mjeG}hMEU0*Rb<$~6a2vn)0i6>nnX(&B zB@ja{l=q8G7RF+j#Rdc4&j0=^)t5z5=S^_CXf~sxZ_l|kLYdWIT0jLRg1=ey^o_b- z{qF*H)kmpsN;>p#d?X~^YWQ-$i;<@T#f-i2>WwFb`6aO#lr-o&_{KF|(FX6aI#Vyj zBgfGiqe3Xjfn6s(%Gz?K77Uei@xiFwnu;bmYxsI#lxs?!IYt86V=^pW4NOxdH3y6xoA`rr@F9xbwT^DVVa+VqQyxvw85Uc@>H$5y(2mutj960^ z&%FBH+ZO~0aa{>F7NsQ}9_(QxylD|ASZPh-{j28%ove(bo)L1+xRaTF-Z0U6nkS`_ z7-Y1^RWEd~F>1Pjv!R%qx- zugTMN^RGRpu~6#9pB|oY7mOI^HSA40Lw(w}EG0PjC}*9E7-5bIPA=AC&gB3ZG&Dwe z#EaHAYyImOn+*DMH%>>QjD`)RZ-`$TTJoUX@b8!??SHC}{OXn+ABNN<3=BaD2$zIp zXM^<$RyH2Kh4W)*U4kvN#7+im?;;?@Wg?G{`b#_OlO(1>QV`dSgJ>;561R(WdeR$7 zs#Y*9dz?Wy_#s6mu=iTzG!ReLu?!1= z+z5@JA{UrLvhdV^rrYC7!JJ`jCn5d~%mA4p7q)!r&2^TER22Y3gm9-;O9kd2w8$kE zjbS_ej&3^pWOPzpMhm0I1IMB)X;a@l9YV3L2;iq*>_y0;s626#xJL literal 15813 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 e=I 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 diff --git a/program_info/prismlauncher.icns b/program_info/prismlauncher.icns index a4c0f7ea48fde36006884ae789b22a7645f5c445..a5e6a8c3a1bac90b28ca8135d6d82acfcd4b3d4f 100644 GIT binary patch literal 194065 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

    v(jN4z6X7JUyWbM1e|0+)vHT2~&GG7y~RU<-kXT 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

    ol&v!0pbHjkGtsBcQlsT;+OpWK_) z{js~=4ZB`tY*(=Te=_Qy#HBZc*ovEZhU@D54##lUGP2>G+3}O>q-j-TEi}SMZhRWp zwa-i%9FX(i#kA`iv2%if8)ya zhiBIQ1IC{ieRvg)O;!}*nlcH7n42P$@2*f|`3+`jFSv!r6u>dC$vFPi7RR`L;Z^DN zidVkZOM(s(mV86LC2^3rjB#Szq#j0whhD?OTn}?nqFuZ9e;vm_{)kaH^?UQ};Qzz< z!dtPdY{GJ#99!q~N_OZIhI?rJ8pjA$;&;Ze7*f`n>ji$v^*N*aF5hnm`n4@$+WQ8F zWBB{z8}`9`zxu-nrd+{0Hsd4YjC4bb7BJWGq<;I~Q++j6S1aM@lgB zJ#3%W_tB~^k_Iqw5MRhHxLz=`S7KEBSo7R6Qtn+odj^gyOMzX6-mrdoOmn%Kqo2Wi zkG{BznKCXk$#NeZcDcE3Cwt$U)CJ7<=!?9P`TnESg%)Ka`}+;(56kq~&fhj=gT3!< zm3wnaADH{#u&i6oe9xwTNXmSuu(7|z-G`51`sF9)@6lG9=_m3d<(A*H8SvqO#gJaQ z10J({D<4-i!on@s2ekytlV;!BCiKxZ%kTa1Q$hysU1+fuA@Obe{OTdt^7#Xp5Puco z(q6RK^wo7uaR+M#G4zu&+VDZP{CpU@G-|BbkMKckMngFJTjn~laMk}qd$S4;^Ll{H z_h{1^<7YknEM_j)%)d+=*)P!|Key3Ez&q_ hz~1A>IL2Q2ikDaZOI}`vHntD)j)Wm$$v5QN{|~PZ9Vq|+ From 03b34e39f82b2abdf7aee93fda1e24b80ac974ac Mon Sep 17 00:00:00 2001 From: txtsd Date: Wed, 13 Nov 2024 19:04:31 +0530 Subject: [PATCH 361/616] feat: Compression script with compressed images Also modified genicons.sh Signed-off-by: txtsd --- .../resources/backgrounds/rory-flat-bday.png | Bin 49757 -> 48339 bytes .../resources/backgrounds/rory-flat-xmas.png | Bin 51816 -> 49917 bytes launcher/resources/backgrounds/rory-flat.png | Bin 44719 -> 43656 bytes .../resources/backgrounds/teawie-bday.png | Bin 163564 -> 161740 bytes .../resources/backgrounds/teawie-spooky.png | Bin 174906 -> 173755 bytes .../128x128/instances/enderpearl_legacy.png | Bin 18944 -> 18514 bytes .../128x128/instances/herobrine_legacy.png | Bin 4514 -> 4445 bytes launcher/resources/multimc/16x16/bug.png | Bin 618 -> 608 bytes launcher/resources/multimc/16x16/cat.png | Bin 707 -> 525 bytes .../multimc/16x16/instance-settings.png | Bin 912 -> 857 bytes launcher/resources/multimc/16x16/log.png | Bin 327 -> 318 bytes .../resources/multimc/16x16/noaccount.png | Bin 191 -> 176 bytes launcher/resources/multimc/16x16/refresh.png | Bin 828 -> 826 bytes launcher/resources/multimc/16x16/settings.png | Bin 912 -> 857 bytes launcher/resources/multimc/22x22/bug.png | Bin 1022 -> 1009 bytes launcher/resources/multimc/22x22/cat.png | Bin 916 -> 739 bytes launcher/resources/multimc/22x22/copy.png | Bin 461 -> 442 bytes .../multimc/22x22/instance-settings.png | Bin 1431 -> 1308 bytes launcher/resources/multimc/22x22/new.png | Bin 907 -> 905 bytes launcher/resources/multimc/22x22/refresh.png | Bin 1182 -> 1146 bytes launcher/resources/multimc/22x22/settings.png | Bin 1431 -> 1308 bytes .../resources/multimc/22x22/viewfolder.png | Bin 475 -> 474 bytes launcher/resources/multimc/24x24/cat.png | Bin 1175 -> 832 bytes launcher/resources/multimc/24x24/log.png | Bin 607 -> 589 bytes .../resources/multimc/24x24/minecraft.png | Bin 1452 -> 1451 bytes .../resources/multimc/24x24/resourcepacks.png | Bin 1679 -> 1677 bytes launcher/resources/multimc/32x32/cat.png | Bin 1573 -> 1149 bytes .../multimc/32x32/instance-settings.png | Bin 2429 -> 2259 bytes .../32x32/instances/chicken_legacy.png | Bin 987 -> 969 bytes .../32x32/instances/ftb_logo_legacy.png | Bin 1452 -> 1442 bytes .../multimc/32x32/instances/tnt_legacy.png | Bin 230 -> 229 bytes launcher/resources/multimc/32x32/log.png | Bin 850 -> 791 bytes .../resources/multimc/32x32/minecraft.png | Bin 2352 -> 2335 bytes launcher/resources/multimc/32x32/refresh.png | Bin 2075 -> 1949 bytes .../resources/multimc/32x32/resourcepacks.png | Bin 2419 -> 2403 bytes launcher/resources/multimc/32x32/settings.png | Bin 2429 -> 2259 bytes launcher/resources/multimc/32x32/star.png | Bin 1492 -> 1490 bytes .../resources/multimc/32x32/status-bad.png | Bin 890 -> 887 bytes .../resources/multimc/32x32/status-good.png | Bin 1048 -> 1046 bytes .../resources/multimc/32x32/status-yellow.png | Bin 920 -> 917 bytes .../resources/multimc/32x32/viewfolder.png | Bin 958 -> 850 bytes launcher/resources/multimc/32x32/worlds.png | Bin 2195 -> 2171 bytes launcher/resources/multimc/48x48/cat.png | Bin 2521 -> 2000 bytes .../resources/multimc/48x48/checkupdate.png | Bin 3582 -> 3411 bytes launcher/resources/multimc/48x48/log.png | Bin 1713 -> 1708 bytes .../resources/multimc/48x48/minecraft.png | Bin 4563 -> 4556 bytes launcher/resources/multimc/48x48/new.png | Bin 2215 -> 2211 bytes launcher/resources/multimc/48x48/refresh.png | Bin 3627 -> 3432 bytes launcher/resources/multimc/48x48/star.png | Bin 2799 -> 2759 bytes .../resources/multimc/48x48/status-bad.png | Bin 1536 -> 1530 bytes .../resources/multimc/48x48/status-good.png | Bin 1807 -> 1779 bytes .../resources/multimc/48x48/viewfolder.png | Bin 1342 -> 1265 bytes launcher/resources/multimc/48x48/worlds.png | Bin 3823 -> 3768 bytes .../50x50/instances/enderman_legacy.png | Bin 1327 -> 1246 bytes launcher/resources/multimc/64x64/cat.png | Bin 3764 -> 3068 bytes .../resources/multimc/64x64/checkupdate.png | Bin 5102 -> 4932 bytes launcher/resources/multimc/64x64/coremods.png | Bin 4263 -> 4247 bytes launcher/resources/multimc/64x64/log.png | Bin 2420 -> 2412 bytes launcher/resources/multimc/64x64/new.png | Bin 3157 -> 3112 bytes launcher/resources/multimc/64x64/refresh.png | Bin 5352 -> 5138 bytes .../resources/multimc/64x64/resourcepacks.png | Bin 6022 -> 5981 bytes .../resources/multimc/64x64/status-bad.png | Bin 1972 -> 1902 bytes .../resources/multimc/64x64/status-good.png | Bin 2304 -> 2268 bytes .../resources/multimc/64x64/status-yellow.png | Bin 1922 -> 1899 bytes .../resources/multimc/64x64/viewfolder.png | Bin 1470 -> 1453 bytes launcher/resources/multimc/64x64/worlds.png | Bin 6933 -> 6901 bytes .../scalable/atlauncher-placeholder.png | Bin 13542 -> 10528 bytes program_info/genicons.sh | 38 ++++++++---------- program_info/prismlauncher.ico | Bin 18235 -> 372526 bytes scripts/compress_images.sh | 9 +++++ 70 files changed, 26 insertions(+), 21 deletions(-) create mode 100755 scripts/compress_images.sh diff --git a/launcher/resources/backgrounds/rory-flat-bday.png b/launcher/resources/backgrounds/rory-flat-bday.png index 700192256ad4523d30c76b1dfca67f05c83af3d2..73008fa22b2692d2e45393558c62ca32105627b8 100644 GIT binary patch literal 48339 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%0D!q>%;};@HFhAbL<~3P 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 literal 49757 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 Dd!!%Q diff --git a/launcher/resources/backgrounds/rory-flat-xmas.png b/launcher/resources/backgrounds/rory-flat-xmas.png index 05e6687ca9b6bd05aba5f4cf0698190f12614ce6..ef64e5e5a51618863053636ee8503b29a4b9ff6b 100644 GIT binary patch literal 49917 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%0A(ZWp|H&}NYViSqem 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 n000000000000000003|TJCiFY*!jbX00000NkvXXu0mjfP*|t* diff --git a/launcher/resources/backgrounds/rory-flat.png b/launcher/resources/backgrounds/rory-flat.png index 4536dee78f276613f55680817d472336c69aba3f..d15aeb6fad69bab675276d8dea20e76227af63f7 100644 GIT binary patch literal 43656 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 literal 44719 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 diff --git a/launcher/resources/backgrounds/teawie-bday.png b/launcher/resources/backgrounds/teawie-bday.png index 7bf666ed4c1591264766021e01560e3c28c14034..6a2a75c11a2e05963111a6fe27bb621a7ccbbe12 100644 GIT binary patch literal 161740 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¬M?7V%c&&8OV}!PKvf!A(QsFk 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%0D=;v)~^;ZJ@XNjydr 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 literal 163564 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

    iqy?Z1 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

    =W`5D;_$Ky{?e8e0u@qH(Kp$GL^6*A4B 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

    $YHLw9@vaia#f;S)?kY1y!BHV-AZGT?}PBh26B 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 M_0SPqkb#(K8DR8-hQ}h+VTQw9hV6CoBt-xa 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

    ol&v!0pbHjkGtsBcQlsT;+OpWK_) z{js~=4ZB`tY*(=Te=_Qy#HBZc*ovEZhU@D54##lUGP2>G+3}O>q-j-TEi}SMZhRWp zwa-i%9FX(i#kA`iv2%if8)ya zhiBIQ1IC{ieRvg)O;!}*nlcH7n42P$@2*f|`3+`jFSv!r6u>dC$vFPi7RR`L;Z^DN zidVkZOM(s(mV86LC2^3rjB#Szq#j0whhD?OTn}?nqFuZ9e;vm_{)kaH^?UQ};Qzz< z!dtPdY{GJ#99!q~N_OZIhI?rJ8pjA$;&;Ze7*f`n>ji$v^*N*aF5hnm`n4@$+WQ8F zWBB{z8}`9`zxu-nrd+{0Hsd4YjC4bb7BJWGq<;I~Q++j6S1aM@lgB zJ#3%W_tB~^k_Iqw5MRhHxLz=`S7KEBSo7R6Qtn+odj^gyOMzX6-mrdoOmn%Kqo2Wi zkG{BznKCXk$#NeZcDcE3Cwt$U)CJ7<=!?9P`TnESg%)Ka`}+;(56kq~&fhj=gT3!< zm3wnaADH{#u&i6oe9xwTNXmSuu(7|z-G`51`sF9)@6lG9=_m3d<(A*H8SvqO#gJaQ z10J({D<4-i!on@s2ekytlV;!BCiKxZ%kTa1Q$hysU1+fuA@Obe{OTdt^7#Xp5Puco z(q6RK^wo7uaR+M#G4zu&+VDZP{CpU@G-|BbkMKckMngFJTjn~laMk}qd$S4;^Ll{H z_h{1^<7YknEM_j)%)d+=*)P!|Key3Ez&q_ hz~1A>IL2Q2ikDaZOI}`vHntD)j)Wm$$v5QN{|~PZ9Vq|+ literal 18235 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μoMwLFU%Z`WA>( zm>Oz;OwJZWOORv}52~h>+I_lO4Vk*C`uVrH$(wPe+BQ2&v^cesEkot3$(nSKLc-ljcpnLr~J^iqL761KOC}Cq1)>@eUS==`Z7384k z>Ua`!IDqxlhN`sWq}F4$USYkrUSZ0|vw~=j}${G3m;nx49r7p$)Sh7xZgXSFbUP2{ZR zvGh*)DYaO+6X5hv%@Hw?P{e5Eq{iwa}t?y&~jqlOM;`YE5kamW=VTgJjK^QcWw zjRJkuovl_a4T(%#CS^*gdee(@xSh2*3-QgqDhYTqc!15`2-H__;Soxph9?o3kdLp7 zIf61@p67-=tlH+6P9JTlx*(ajq;lqlWBy?E>N9TN3AbuHMGn*NxxwZ2WFRLn*fol4 zrw&zJ{~Soexx0f(BPvo;6(-QMuYj#FIW^h#;1Dm^O&s1rL~L!Lklk{v9%KRKyFH0DoHTPr>LkDGB6_mK6fD!K|Ts zYqG)9%4)pF|A&_j;0_j|1%=027Y$DsjtgmiZnz3>dnuJ?PzV~Nm3^}moFmW&X7deE zSas+km4k3?9xntwWs8R?OAbQN}gD1F{Prkr<)O0<1*hEA)suaH)As0avTWi^T=$i zFI?B$5+;Z5Z=W2bdEL}5bcVnJP9v{o^Rl=7!`PtG$hJP0#+YA?vi|8(!5{R?Zn3e4 zo|289^pi3`DGEjalrCk#ZK1X9U-oHUV-%t{E`){caxe(ni0E>III=4NAJ;g_%W^WF z?UXcQ#*Q}M(fgpu7THvVFcJ8C;)wiKm(!VbwnHby;~Os->|+7NmH zLlMZ2(=4r!0N6VeSz-LjF%aZv_Xr`iboKAP)+E?5#LTXb@V4h~N?<=vyrM1)Xdb^M!QB`hJon^mw^?t)8RD`^1~{0jWGV@3EG zDP>_*8L%at|4Q$mRYJ{tN8*dh_@H*UorklytL>iwiay0-X`={VCzNf$88gs*Xuml} zle50I*7cl#al)v-O+Bx)g$z@p;KM59efE_bBk;Vxs@of>*t-wvGT+paD6L`6G3y?P i1$T^UaZX0J(M4nV?&AHPnNF}|`Wq8%UU>NbbMkL5h>_v| diff --git a/scripts/compress_images.sh b/scripts/compress_images.sh new file mode 100755 index 000000000..1eef9f1c4 --- /dev/null +++ b/scripts/compress_images.sh @@ -0,0 +1,9 @@ +#!/bin/sh + +## If current working dirctory is ./scripts, ask to invoke from one directory up +if [ ! -d "scripts" ]; then + echo "Please run this script from the root directory of the project" + exit 1 +fi + +find . -type f -name '*.png' -not -path '*/libraries/*' -exec oxipng --opt max --strip all --alpha --interlace 0 {} \; From 9f0b2bafd86e1d5b3ca7955d50c5499faaaac031 Mon Sep 17 00:00:00 2001 From: Awqre <32497511+Awqre@users.noreply.github.com> Date: Wed, 13 Nov 2024 14:31:20 -0500 Subject: [PATCH 362/616] Further additional even better(er) compression Truly unprecedented levels of optimization we're reaching here. (OxiPNG/ZopfliPNG/ECT/DeflOpt) Signed-off-by: Awqre <32497511+Awqre@users.noreply.github.com> --- .../resources/backgrounds/kitteh-spooky.png | Bin 77430 -> 76354 bytes .../resources/backgrounds/rory-flat-bday.png | Bin 48339 -> 47977 bytes .../resources/backgrounds/rory-flat-xmas.png | Bin 49917 -> 48992 bytes launcher/resources/backgrounds/rory-flat.png | Bin 43656 -> 43052 bytes .../resources/backgrounds/teawie-bday.png | Bin 161740 -> 161203 bytes .../resources/backgrounds/teawie-spooky.png | Bin 173755 -> 173134 bytes .../128x128/instances/chicken_legacy.png | Bin 5184 -> 5178 bytes .../128x128/instances/enderpearl_legacy.png | Bin 18514 -> 18345 bytes .../128x128/instances/flame_legacy.png | Bin 2890 -> 2888 bytes .../multimc/128x128/instances/forge.png | Bin 1556 -> 1552 bytes .../multimc/128x128/instances/ftb_glow.png | Bin 11319 -> 11312 bytes .../128x128/instances/herobrine_legacy.png | Bin 4445 -> 4360 bytes .../128x128/instances/infinity_legacy.png | Bin 6118 -> 6106 bytes .../128x128/instances/magitech_legacy.png | Bin 21813 -> 21807 bytes .../128x128/instances/netherstar_legacy.png | Bin 10041 -> 10037 bytes launcher/resources/multimc/16x16/bug.png | Bin 608 -> 588 bytes launcher/resources/multimc/16x16/cat.png | Bin 525 -> 509 bytes .../resources/multimc/16x16/centralmods.png | Bin 561 -> 557 bytes .../multimc/16x16/instance-settings.png | Bin 857 -> 829 bytes launcher/resources/multimc/16x16/jarmods.png | Bin 586 -> 585 bytes launcher/resources/multimc/16x16/log.png | Bin 318 -> 312 bytes .../resources/multimc/16x16/minecraft.png | Bin 742 -> 741 bytes .../resources/multimc/16x16/noaccount.png | Bin 176 -> 174 bytes launcher/resources/multimc/16x16/refresh.png | Bin 826 -> 799 bytes launcher/resources/multimc/16x16/settings.png | Bin 857 -> 829 bytes launcher/resources/multimc/22x22/bug.png | Bin 1009 -> 966 bytes launcher/resources/multimc/22x22/cat.png | Bin 739 -> 713 bytes launcher/resources/multimc/22x22/copy.png | Bin 442 -> 441 bytes launcher/resources/multimc/22x22/help.png | Bin 1217 -> 1204 bytes .../multimc/22x22/instance-settings.png | Bin 1308 -> 1283 bytes launcher/resources/multimc/22x22/new.png | Bin 905 -> 897 bytes launcher/resources/multimc/22x22/refresh.png | Bin 1146 -> 1122 bytes launcher/resources/multimc/22x22/settings.png | Bin 1308 -> 1283 bytes .../resources/multimc/22x22/viewfolder.png | Bin 474 -> 463 bytes launcher/resources/multimc/24x24/cat.png | Bin 832 -> 809 bytes launcher/resources/multimc/24x24/coremods.png | Bin 1176 -> 1173 bytes launcher/resources/multimc/24x24/log.png | Bin 589 -> 582 bytes .../resources/multimc/24x24/minecraft.png | Bin 1451 -> 1425 bytes .../resources/multimc/24x24/resourcepacks.png | Bin 1677 -> 1635 bytes launcher/resources/multimc/32x32/bug.png | Bin 1584 -> 1570 bytes launcher/resources/multimc/32x32/cat.png | Bin 1149 -> 1126 bytes .../multimc/32x32/instance-settings.png | Bin 2259 -> 2230 bytes .../multimc/32x32/instances/brick_legacy.png | Bin 233 -> 231 bytes .../32x32/instances/chicken_legacy.png | Bin 969 -> 962 bytes .../32x32/instances/ftb_logo_legacy.png | Bin 1442 -> 1403 bytes .../multimc/32x32/instances/gear_legacy.png | Bin 2281 -> 2270 bytes .../multimc/32x32/instances/grass_legacy.png | Bin 408 -> 405 bytes .../multimc/32x32/instances/iron_legacy.png | Bin 195 -> 192 bytes .../multimc/32x32/instances/tnt_legacy.png | Bin 229 -> 228 bytes launcher/resources/multimc/32x32/log.png | Bin 791 -> 783 bytes .../resources/multimc/32x32/minecraft.png | Bin 2335 -> 2308 bytes launcher/resources/multimc/32x32/refresh.png | Bin 1949 -> 1919 bytes .../resources/multimc/32x32/resourcepacks.png | Bin 2403 -> 2363 bytes .../resources/multimc/32x32/screenshots.png | Bin 1388 -> 1387 bytes launcher/resources/multimc/32x32/settings.png | Bin 2259 -> 2230 bytes launcher/resources/multimc/32x32/star.png | Bin 1490 -> 1460 bytes .../resources/multimc/32x32/status-bad.png | Bin 887 -> 876 bytes .../resources/multimc/32x32/status-good.png | Bin 1046 -> 1023 bytes .../resources/multimc/32x32/status-yellow.png | Bin 917 -> 907 bytes .../resources/multimc/32x32/viewfolder.png | Bin 850 -> 827 bytes launcher/resources/multimc/32x32/worlds.png | Bin 2171 -> 2144 bytes launcher/resources/multimc/48x48/cat.png | Bin 2000 -> 1928 bytes .../resources/multimc/48x48/centralmods.png | Bin 2506 -> 2497 bytes .../resources/multimc/48x48/checkupdate.png | Bin 3411 -> 3379 bytes launcher/resources/multimc/48x48/copy.png | Bin 1271 -> 1262 bytes launcher/resources/multimc/48x48/help.png | Bin 3535 -> 3527 bytes launcher/resources/multimc/48x48/log.png | Bin 1708 -> 1696 bytes .../resources/multimc/48x48/minecraft.png | Bin 4556 -> 4526 bytes launcher/resources/multimc/48x48/new.png | Bin 2211 -> 2171 bytes launcher/resources/multimc/48x48/refresh.png | Bin 3432 -> 3402 bytes .../resources/multimc/48x48/screenshots.png | Bin 2474 -> 2469 bytes launcher/resources/multimc/48x48/star.png | Bin 2759 -> 2729 bytes .../resources/multimc/48x48/status-bad.png | Bin 1530 -> 1509 bytes .../resources/multimc/48x48/status-good.png | Bin 1779 -> 1769 bytes .../resources/multimc/48x48/viewfolder.png | Bin 1265 -> 1247 bytes launcher/resources/multimc/48x48/worlds.png | Bin 3768 -> 3726 bytes launcher/resources/multimc/64x64/cat.png | Bin 3068 -> 2963 bytes .../resources/multimc/64x64/checkupdate.png | Bin 4932 -> 4865 bytes launcher/resources/multimc/64x64/copy.png | Bin 2078 -> 2072 bytes launcher/resources/multimc/64x64/coremods.png | Bin 4247 -> 4218 bytes launcher/resources/multimc/64x64/log.png | Bin 2412 -> 2265 bytes launcher/resources/multimc/64x64/new.png | Bin 3112 -> 3065 bytes launcher/resources/multimc/64x64/refresh.png | Bin 5138 -> 5103 bytes .../resources/multimc/64x64/resourcepacks.png | Bin 5981 -> 5926 bytes .../resources/multimc/64x64/screenshots.png | Bin 3878 -> 3864 bytes .../resources/multimc/64x64/status-bad.png | Bin 1902 -> 1888 bytes .../resources/multimc/64x64/status-good.png | Bin 2268 -> 2258 bytes .../resources/multimc/64x64/status-yellow.png | Bin 1899 -> 1891 bytes .../resources/multimc/64x64/viewfolder.png | Bin 1453 -> 1430 bytes launcher/resources/multimc/64x64/worlds.png | Bin 6901 -> 6756 bytes 90 files changed, 0 insertions(+), 0 deletions(-) diff --git a/launcher/resources/backgrounds/kitteh-spooky.png b/launcher/resources/backgrounds/kitteh-spooky.png index da10967874497701058c3e59486142cd222fbdf8..bb3765f92f0e7c35d8620bebab95c0e7ab6160ca 100644 GIT binary patch literal 76354 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%0AnnG&<7X1 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%0Df8H}7H( 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

    &O#cvM)EHNlP*;k(IYMW#x+i zmh31hkxXz94a-KD7 zmaJ>ar88O5H`=ysn~cogzJ2?-&f2&UL?#fq`%u0Qy!-1eg>{w>sY87KCWkUg(pUMJ zX60(8r9y=YC9PLTVd6-t>ZP@eB>Q@lyHeh@T$;Nxh2?0-qsYrCJ9%Z_`!dY3C@d)j z8ptX*=-*3z72|Z=Kd3|draDxuAX_dT9AnqYfWG{-IT*hPL%xp!0RgA}=Ch%C*v=fv{K(lPMKODi8KN}@?W@;y0Bu8_3yZsjt1wsys$ zk3#V26hAbn!Hmct`^tsVp(ZU&Sdv}&QCI<4WM%q+U@eo9vLA;jWYO*X`SYbb#{%C|R=P z?|i6jBy&g*QK3SGivLt1v?RWyJ^6(ENK(lil0o3_RSq+Ud*bNEdf2(RI!5&LL72Zt zOC-i}BE|E_@)BWr{39$65f)_7A|Q*fOwOj5NlD3%tBPduZPTVrGDz{1`$&>yahzQG zLCcpf$BY>>Flf*q$@=QlsUv#uH+2SRRz=LH4kuBj0BIK_tB{{!fe-tZQ9JVFw1c%Z^QO?^Lp|N3-$z8g1>8bBO z{OYT((6VJqc|pPL8=0Fle&j=NHi;r?XhVex6^|sYBBVU&NWLLQ$u*KjK)|64W>-$A z8SjK1t=zHV%XnP;WiYP&F%0|HHpQB6t7G+dwXtz-MJ)L!2!lGiAuPZ-dto{0Z$Wl< zhqssXu%HRcgbXV*Gz4L~ASnTM>Cy#r=FGvtg9oJy#|%WuaD1W^o`pNGHg4P~LhaP4 zlPs?_go|uNT0}b=WQVuBPS{jb!`E?HTfNOv| z!YW0G#5Zr=oLkvg#^Yq1Cr_RPGfeqAJF(x%1I*X;!yD6y4N;*&g$k3zWlnTtIN30i!fN$KmAsNWrxpTqHMn2}1 zA~JCCEChuiB|=Utip1F4l5B`iv3Q@se6e5wN1L;c=$pHPweMoDPK-@`jVo3^-f<&#;Qt{%3egs}e zrjvu@2FW0JkS@(!G5c*_99&ZeXAkwo%@gC~{;P~jZy@91>qt94gLh&jV$XBZU^KKLx zR&~~<4_O|R0SxcV@pgSLi$cn=k7XzoL|7m0 z{!--i)}{~9sBbg*+Hkt@Y5%=tlCoE?URt@-!NK7tJ}g&|b|gRfKZYBbsF%^u%wcA+tMxx`Hd#R4CE+9=QK906 znJO$vI+N|>7C}x>Mlz@|teY46T@`R@e^1;`oyPmGCgbLDUL|sJJWGdzuz6lJ^l9gT zU|*4z3}EQDspoVKOaI@4SwfUWwsMgn$EjgsV*@T}1^@ACJMpZot>x#`u3ZcKhbyHg zKKY5{xXD2d_g=hs5ie-Sy;+qTRt2*z5!1T6JA`i2d&4g#03IP;@C+?4B71ww$0D^i zH-3obgIi0+BiY?k4o+K2*^@&m@;&tO^17(cFuo^c$p0zwk;-~eE!GR@UG9UN#20bB z`ThPTH8nMbOOn%BewMEtCuXI$``d57$qTi`ix=aqx86$U3xczJako?d>#QLklDHQo z15=^;Tvnt8nNKc~3<6V#2z0`fLEbpJsTFRdj1-COU)vnX+dCrlXkYxcwE;ex7K|n} zeV_~WH>EVFWm(={u5c_{3bwYkC|tO(Tx4hxF~sn&31yv9JBE8m15P!$*_D zuwia(>`$tSg&%S>yG<}+B13ZOWl2WHSKN|06)#>K4tAEXwv;T(Xajk6^3n@TvbCyJ ztIAM>lnYoVmf-#_+mPV#%XoqR*A$%`K5q=Q~upObMs2UnY!@n`^Nav`(5#212l`0LIm z?MMNlLdA2tIm3x0lKtck!6P6Ogp(4z@YC{&*uJ0=#`W_<2KBUQXiq!BH$hAhuU51qxHxRXwb2-^p~EsQYx1Z%f=19kdb~R z%Ve2Xq#Ptm{s*N)Gt!hyCm%4|8nJBIvii)Pev&E9{~mHEpD*Zc=>_&4aU&{JJePeg zd(w=oAy>6>q3OtWjgh_FvG4<5yf(}WwJLZa(BD^HJx7EFBbM1#wTe2#Mj2;X9IB83 zj51})fZN5vSK1;i(}k6N+3?7bBT_bb(SyAXDYvz1*BW)(H$eaQhv3V@voZUR#h7pFp!Ta~`pTx)SHRN81yqY&}p22^6=UL5I%HONi^Vs`Rq552AB#wMV&X`^~v(qg71udFF8qXCTEATBQMN%w2yF!Zrw$3Q8_0pygFlqa!@ zNd(OdQ_h4nYuy~RTGd6}?v3OeSLIgK5m74|-eJD*4f2&T>d>J>|7PzjfTKF2C_J6I zyBiR9!Ce9&)UYaED!9A57H_FHsRimT6st@mP-ZQ@m`X>>HOBe~?DQF=I(er^H#63Mot* zE=(BLt!V*TkSSmYLUnhdtUwxqwh%Oe4jNF*>90ch9j4r{VZ$(br|2ysB7*r9bnQg? z#7F}IPL--uviOt)D-{!A7hZaiopatfc2$Y14M6YNv!`v|yxGEeJ^uLPM!y$(1n_bq zudhj^9fggy$2+OJA+j7fa*sl|4J*@FV=XS1@hexP5G zJ%eB|_W|V*o+lAAN-V>N4?m>6#Iq;jrWewYA4BUize$rOE2>tl+E3STs?1y73eWZ4 z%;e*9CnsFgyg|gZu@NO^IO_0uNih&FO2QmG5a2?CkbW&diHNFD+B=|zbW@2EB{+yo z3IIU`Eyse^y97wkQ$=)jTdO8kE~A3Ql}j+hZm){H+OCYb+AfQ@!Y-Fx8GV&SrNmfL zxfIL1Hj_hxC=5^y_E;6tm3$2+u;Sj4Ry`njE)f*~e;9|mwO>{`;PoXENJm+n>n_<; zwSnX+8d@gM$_Kn4tso+uq2~MR^tGe3I=c$c+Usk*tSm!0X7=pa?D2!%yGU^%+Ki)x zlhv|i%Y4~-IhiBFmK5VHZ@u+c(pj%PT&BT~Q-qK)F1_?pgFSfs@yEL;hugjv3l62t>vTRI1^}gy{c|_=>e*vxxHP_cw?QfJo zYmU<3%OxoN+T_XBS3l2GbWc=It&=+8fu^~64y3rJO`B%OrxBGC@9DFSGq8JTte)e+&YiWe~N;_GuGi(}twmtS75T`900Lw2C4E^9NjL5i$f4 z;oQQaEx^n-+M>DGx2_c`!ElnI*#W^Z}y!W%M5 zojJT~)J^lAt-tigFYey6bZ!&-=;iuS#%OM9KW}RDXH+)E_@~7ABV|M~rUV^A#*^%? zwuOunJvwfRFvNxz$-x=W=z&9+8C!9s6RgHf88-IKDK>Ad1UoV^X-a|IxrSXQoV3|7Qty)HP4hn>Xk6P6ay!yb-x4Afb%JR88&viIg6TuQ@q6)a=-=q*olw`22&$?xQ5 z{rc;71MKfLL+p{iy3~lgn1xmS##;8o@@D}o7rf@}{)9+O09DS=5kyZAMT__w-L&_Qjix_x`hXI12Ex zi4xNtYa5ofu@@e!tT87Hj4UYtqrO#=`W8bW-3i8pMO#QZ5pB_A?4$^fq|rMT@VXc2 zmTuj;8Nh^EMW?AfP_l3VjPxPO?SNKPdW<2*6kj3H>bAVro>=i5zk?VqQ5oO`D-q_{ z(GY#POtwy)IzhDHz2U`^D&#;8gn|gK`G@w`Ry|*Am7@@GW-&__M#)CWa^&beuT*q_ z9t!SbYdJ}PSGSvPvfou_^#!lb#iVUqt(s+4txAfK`{Q@7l7<{Qbg02V=Pc(sFOzx8TSsn2SHHGVb#uli&j0A8x;r;6>u4yyo5q&dZ&NI9 z+XVaTrvbL|{igQp^eWb^b*xn@7h#EUF^u0Yk^&DYBQi1)CZQW`g@Zv3p`iW8AAbZ~ z0V4C}EK91AVu;-Kdt#`)@!NbO>Y~<#iaVeMcmZPk9;rh>j(S-CCx=>vYbyg@7@jVN zPq76o6WMdEb3hw6?HwONS2>m$#X>Q=5r@H%sisCFK>C; zh22|6je22v%BH2WuF2o9_)bRkGw~SU($}%JYvV}!T!9E^-r*hWs{3! z6GF;BA>+(5&jc(0jc_uq9XfHq5A3<0&9kcYs~g}|TUvqxb4S>7Kfi9TZkcVKY( z$3y3P9BK~T9)r#18qNS|K^m}Iv}i%U5D}3JS~M4P0P=f*ULSw_F|4@XwC9%U`EHN_ zV)JDUivfV0D7#iR3E-{sjdWi#^;zqn)Zn@oUa%h}TKtyo?HJMJ zJKlDieV}xq@7|#iey-|c?5idse2fv9W5%FC_P)Ss;UkaOt7@Ddr=Q)~q=}JkeDTE> zdDgylO7BH0Q#fPielG%;y4~^;H zzGjeZTGqkVF1*uz{=BuVTF}7eMkXs}qfRg`I+0`;{c`M`+P)V|TWIxA8 zmDtPdty``wWlu~+$bNeFppe5DjuI{M}W0wxkR<%GS%4IL*Fi$-;4+FKZ`zOj1m5iGleS^{D*;HR>95 ziD)ZUwA#A&O;iKxEobZ{Ju~iwZ!}E=jWfb?0`OX>`FJ~72S95dgTdHXuZtoKj91@< zBvmf~q!^yN^cjEAA;wgcdCOZNRgAw-)>8J7Y=_J+)HH^7jkU#ZW!aKhb#2O^RJ$P~ z(z0sAS?y}6R-t@>h|3kzWzH7zPELI*>$Ve5Jn{jC-l(xZ8=k_O(gc6OcjpH$2aM zi5@stsBUNvFVyFJ0ggc^>t5dS!0TjLY1zZFO|m?hVOYB+kv98@GWNz}G$zMb`Sdtg zgZ^qEt+3Kfic#iU7-_6tIb7A=BC4U5d_c?|7=jmoI!ck^9KDZKnr57Lkf~w-g|u&>&l^x9;vx;01T$C+;fE!_yf4Kb z<9mITHU_+KY-oyR?Nj#x*ifF|B6jD8y8a2FWOaJWt94!A2=9L8MqNIZQK_V6Z^hck z?y*+Cj?!6ag#s4`1`6N4H27j;04)a~>5)(@z{XJnKddww|DLE0IjNEoGd@fA{tVR@ zFF5;byXvybIIu|l0h~oq%&A*p6!XJf(E}hdVI@IAzxf7d>w z<~7%$%lDR*XP9G{Y8Pg!KKQP{c>9_)Yb?ME$C7kDEJ31v(uUN>3PfJizh2Uwxl6T6 z7>J~j{Qx2nHg!?zUVHVKUydYKC@J&a@@idavioHl_l>%+n23^AuSSH`sTybH%cP*1 z;g6U>voFL9RNw)F;%FRr5EF`(It2$g>7qCt-j}PsSmKgP47);8rY{o_B_Se$G!Zqb zBBL09%h#y2K$C`5_<|U06!~Ff;(=2iTfcrio<5)m*l{g~oZ1A)c|Aw~uf6sfU!h|c z_WQ6DNqe#9(8Pogf{~`i2_aPt35WgorvqHiJ5>2bvh%{Qp*Dr6P{8|&S_i(-GtCc1 znzf2(^Xzdz4B)RVds(T!ucXxR_pDh4&3^UMPunz+Ioe!*y|q$ypp_zd(#bq)KdEqf zy)Bl3~zmw z4oZ5yCQO(B^N_+nwKg0FdW&E!7Iv*Hn2P+qo1SI@fiqRx*J#UNOv*|pA{Z#E?nF7^ zw9b_EmA$NV=Tg;?b_A)Pj~QJ=Nk*20h?V;56g9u+h$cT#`@Xk;s*!$vt@h1zdbZbO zWWXHd*#chvG(3sC5YvYA^p6||qOUZWx4ac}qDBeXKxfG0-hu+VQjXU_m744qxcC4B zx$!vkR#_sa9J=AYU?EbYqkry7ISys?oM49`3G}N#4XX3g(hJPgb1JDw3}E=-haZY$ ztwD#TH;blWBA^EzcmVYgSckL{a8Lng)aU>;U-AjY!N}fl9U86;r-oD>N+y@+I!NgO ze55m-f5+?aUZ|naTXw)vCqxsNka+(@6V9}4Um)X|?vbsNy(sG>yDH46@nwk&mGYb| z^21huJ6LQ?0EkuwYN6b76i#qdZr5|IqdIA#qVy{-zSv4C^5VM`4e^>qlqOv$wnzRPZ`QR#omw1s$)I)j}DX#Lj0i z5X?msOph1Q6h_}3AO(TLsadn9_#7bRhLgceFrK}?eF)J9RwvJOm+mz!38^w~c`K+X z!;2lF#>cW91%NBMNZ?|_atIw&z=iRC_;7Prhhm|U0IeBSbq)!bg4|;a#vtA?H6Y&w zsRDp=i6+ zJ=7V4y-4+uss*@iRs>c<_o$K_pYj5)LUwO)eP;sYanXqXY85U`n+fGwN@?m1r5otQ2miW z@+DukQlA;3*=jOxc`K+yjZ0laG24sY?2>AT50P<(H)4NXPB>^#GMy1vF`Tc31IeYsA%Og?X$f&7NL*;!$H9rDyy0xAT>zM${$IIeydWv z)Jloi`3mWW6f`=Cbwywz@+Ym0>dQVgFZS~;F+Y)px+xT77;kwg!#LR}*-x@OAK=3C z_b2xRIm0*NI_iz6D3Fw8qMq#RY?yHX0>A*{3u-px;Apc{96Y6=gZHUo^Tu zKPFNWkR9L(39B&t4cc{}2o3-QD(BR;Ttx_Ep^!C#uo0++<#{?>+M@)oXbzFq8qlBh zT={$aZF-~V_o4^u5v3LRZ>Z9E=yuy z^ddk;3JD+$r&<}QE}})Qm1jyVk+d+19P}m81NN2dJ=thkxe%laGh`3wz@INN#9joA zL$yd%Q@`rpteO2FCk24opH1!5$z><);08&$1*%q zmMMEpt(C2pD zs8r#6MO@nx;}a}B)jx1K${EKTa5=^Y^{{4q(Hldp0PxU(g~tzA5cL#A#pl51=R^%? z%8^#${|}T5f~V|)mt)i|04&m$zTYSP2PhqEEs2N>F<}6a_vZ^_q?!S1Xx8*z;RFzo z!ICTr%=j6v9SmX!eQ8`P=|h|`fD1<=Uy@QQoCfB}vMgD!Rw{o3;8NOk8B9^0YY3&p z+~?m!&wPrW9ps)_ib`io>Eu&2r0)~~$QQV%e+|=h-g3(=>=pX>aDJ%KZWs73ae(Vh zS?^E~U%cgk*ZBgj7SR!rA11`bZ%=a+;{9k9Lfxj>^OyuKjM@~#77t}XwI|&MRU5rW zboYpKo`3#%0I^U|fCw>iZlWWH-N@-=RSE6i!_Q7j<20v=5Kt8PqA(j&(&1W2 z2jT__EHGAk2&9;%3}NFtwHi$9)r+Xymtcef%|B{ASmXfLTqj~ZTjniq1(zltT`JWyI>2vgfKzswwn5gwgETZ?EoE%q+vYx=Jy!OP!NO!5Gohm1z zzSxC#iO|tj`<36p9PrB5^W36Z-G3_m@5mmLRSr5^(_7w>+|zN1adGD)CnmL2#Px}Q zYv;bqLPsOccdW^=Y(xqid+2q`=R61DtqYToXp! zkEjd-NZ50LtOHztF!w6Zw0WXlfSYUJ9syo}Dj=J$Yx!Opeb4EcHwX~%fY*qYO&2j_ zG4(Y*U(}0^0M9yhI9zrc`|%=ct99s7Q~)$!PQwk|GSP}2$D*Ta$bu}# z!29~TMpXYPC5hwK-^%Z!#gc_w!<rvFOi?kL1^tg`5LP-DG+36} zuEX!;9$fh@?64Lb*N*Tm&!e6!`V+Xu4s|X$kH$9s4{C5{v!nmLN%JOByWCTW=!|=; zj(fQ+<%0*!L7qp!j_Z89mNjcQsu&yvKf~PSE{XR-r0MvK(*j2yThBL_1$F@uj?{BF z0zLUb={_PL^+XvNvKC<^>5`4(w3ZMk@OUZlSQHdt5p`(6U?I_nCZ@Wtu=$tYLk^DO zxgsmBp&XxaWcv7H4CUqbOUk2MaLP(qB3NjYi5)a{OF2hcRq1iE3=$>rx}Nl5et~e4F3mhxY$JL-XTSpa9p%e)DRJWi{rY*Op8x% z%oC`sS?3i7*WQ82-ZQz_2{%W9h9-~Wuotj^%?kMavw44knMCeDEsUm7+aUtej5i#I z(mxclPe5vPZ1a*hNUjbEY_-_QU6j}k;Os_1<{e@+&pe&rR7Q;^0-90k%&go z7xHT<`>d_FK1Vt?kwzqiD2Tvja{arTv{)Ec#UgMbd`A;>8=hA~Z~zYXiW!$C)EE>cD{ohz({FCCT9!$+4myoQHO;$m*p`B(hrC0-?{L z$dj{T!Bj1X#Zwd5iO`mCc6=X2C)ClTKqT5)W(tV!t!T#Dsyi^!nG(3LNGn}V%`i?% zaWvQbA2<|N)-vE~sBj$@B9M{P?;OrUQv-Oi8uy;2kl?tq0b^4oMIk+je{!tN`8w7= zNt%zXS?A@00yv9w)oc={DNzwBt8q|Qp|E7kNl4>-h=Y)y2q%I^9T4sTq0kLv=L}_w*?8X(naWsgWmSe>YWl z*kOk`q>$A#z8aP|Lv7;3iEi6~Qk@+-bWp8|4UbwPcv~|mse$Sg0P3h}Hs^6GJNZQ_ zS2k1{`Q`r3+-uYL``uZEhb3KI%bImwL<_OqFdWy@?68JX=c;e&buKfMHICDopB9ad z&C1B^ke`#=0;hFVX;I03yuTM;^Q<|runH!^RKo&ra9(k0gRTQot>ClIK3i@RGmD9$ zE1Emyi0CttQ$obyovxt>i=!o^EMy^(lS9y;1(j%6>Q7QRO7B=(`{D(nBc;yCKu9=4 zZ=UPK#+n|cEnry|g#Do${^mKvtoS1dz{Sy3SyB&kLDofPStY5$7i zsiSFn3#n+$9VEh&Lt5Ecn{P6dms+bfNUorSwP7q726s%>Hek(K@)Ae5#?zI-!Q5{Yt*9@eVHCdkQ0kj{~GL`bPPEV^rX-HuqE6BKSBj*$M!gYDO^WM z{TWuQbn%*~G)d>Fj!8XJ(KkXIZJLaHU2h{6k^`ere5G4D_`TF-!DdR|oAtoqcdtUQ za+%H9ZBAmG-udh#{HU^H}v3TOrYz;DnK#=~rncw;sxp~*~MUuJEKI*No8L{N&h*fnbh z%?KuMw55m*ha}Y@X&TiW&7!GAl;}$ijpI=~W0kBmkepwtQG_(wD6o)AyhKB8J@?QA zuKTZW8tex9z-90iw1qBYF8UG~&EoMIdc2nEk4gb@uACw*?g`1-&Eb&RKoNN$Ijm#-NGQ(!8LgumfycnA)MgW)o0Z5-HqaG(YT zv9q4Vg15v%gHuzqg#bVc13P7@5^-o=2dC-n)V#EtHqGFwIg-xRlnuVW3hC>tC&-$2 zw3gCyM8DclkSbotHJ=2n;A1F<58z|2ouu%tGLHyI^|OX(Dz2=o)Cescmm+!YF-7s* zSF3!F;OJC8<@+ew2 z`u#Q3v?k$*JEI=_FgH8d7rX<LOBFcz=!5ly$>2={?)tg0)bhRRJ z1|CaQNVB*$NjU0>{2g1{mC#yB+J8S zsy`BuD0RrfuFVBeaW&U`FjVk<4>l(gsA1M2l#t3VMIuX0Fd`{KMbc^<`~rq56Vn?aPl zkh*5dL|fi|E~0x0J&5?@q_*93c`;bC)^rT{xR2CZ1aU(t@9qni!3*#c^n@`m6RM%U zfupiGEP!b+1lqs{a5tO+J3|ppHkKAk3lM3o%}D@0$b>tf!Z@#La9|!(!nf{>NVn0m zYuB!dpuB^3nN=vI7>i-zC=%q&QW?t0SxdHAf4W}gU`?fUse9>dqHBlitn_ZG8Aq__ zzN5w!r)O{^T-=nWW>~Z4$0YU!`c%zhO7o05*mPX*dDHie_^D@c~!$0_z7CjXEU1Jtr|;F zoM|YoQHCi^!{R3gM%qx)cWX&k4^kA2GE|!kA}w7rgN7&5T&|O`Q_c9h)X;q5i6=UY zed>*R^7UqMWWP0Q;b7QD6c+UR)=T#()u8VC1K@PH9-e@A;V0+-eV`JC!8jb?B$y0S zVFt{Esb+%3C>R7ip%r`w@4!=V8=Mb^!46Qy<1+mGE=ZIcYS*|a+zB_sX>crD0N=xK zuk-TA><2&(Cd5~>JC|^SxBoxbQwyKjxht)hbfOHKDpZvG8Yc*I-E^`7=|XR_vIIGd zU`k1+Orx{EDFH%2y z9m;vT1-uT={xS8x&R z3){gR&<;S~f_1&PCAVZVsP?bg*X4rWPRpA&5abWJ57*NZxTXo;2Ii zC$kGp!n^VI&h%kz$Lp_5BM>hmal=G@#gRjbb~7B4G+O4 z;4@^y>(Cv>!BnsM&?BQ4{O%gC82vDy4S4krtvFwLBmxR}UYD zjizMO^~oonxQ@66rQ`rJ#_D*mX3g5tj3G);q^u7u+v-J5V;jP+7VF$GP(_kZl218`hX6oymVwr$(CZQHhO+iq$j zwQbwjI&Io$Z@+hDXSvwe^HsZ1vw8nJ=N{0@Wv0CUk)>L8Gz0@JEv^4R!J!zm zfzFWNJ5lBs*b0Z>B0RE5AA0&UFObdD^nb}9UoHEpETp}`S{BdQq?}7ydhle?C~XdY zwE#sb3_0t1M=E=_rNF8Cp3*wJw7o2xw_(IhX=LWt*X_ zqoEn}gro2R%of~87e42Z+>NR5vZqVS{-#Y(`ffez!oVbbhUE z+O+ZJHMrSQ30w@cw6q*ZK_DYEg6=RJ%0qYv1nIy9F2ieZ1*0Y45@#nTjHQ!Wb|sm5 zLewQyc${mAc~R6L#zl3ZR36^He_#1ku}4gr<7r5C~m(JKI>xNnxqUV)UY;?V_p)0aZco?)1mYd%J64q zXd17>Wl$Kjw6y+n1%@)v6{f>Hm*{|ZFl)-t==<`kx_0fFG+S4zR?SR>>t!i0(ovU|mP05yOoAma8(Kn$uS_I}4YOe% zm@GVjO$=|f(?b)zuZy)HVqR<_mhoLgT4GwH5#_9l=lI#Ljk7K(@26_=Lx>O|jP{R0 zprxhd0P+vXAS(p>&KRAx-~xx>9k{|x7{eO)Jxa^&#P>xE3iFcG8s|a+Lu+M^mtXF~ zyLj=U7&EH($doUqRFj?b8rFN;RBp%)v8rnrDd;aLoulV0|v;DWKxH+ zCWI(VDiEpE^Ro@tTeohNvph=u-PzE6Qbw(5X=!QsP%1bDCJP?m2HS4jxG_v=*{h^= zfz+C8OXi$Q3O9(vWCWBSm2B-MRjqpU>Sbo{m=XQ2{8H4VrKP3S5$=M?f-5|M*;IV# z`gl7(8=5?MvP4|$?lRVe$oxV-Dp`3#)FtKd%+GwyU}zWF#-OF8rR78ZVIe$(n>Ho# zx1h7q@)KuYtnrt!@`DEt$~u3)DyFwcp#~=GP1WRKUW5H0sFRkKmX;4ifKBiaF2iFm z!9^}0EtQs^nnvN5#mW;gt|d#Bm`Q^^q{7f>?Z^#wr$A}i`-h+q5PV^un3k4SQrHbo zEto7EpwC91cWM2z;k$z#mX_8(RY^Dm zCLgRP{nTG+Y5k)yP@LUKsXvP|Pclz)Ca=MQ;LlD>%O8Y-x{-7Bn3JN+5Ep|8Il3?7 z-}*p0_=oF|w6wIE!bvb$cm{7^Hl^78l$O?CmaD6)QJ^8^{zP0JtUcLpOm%_ab`)(T zh2HUt^j}xL&8$atdo1#-(|w_P;YO1$Ma|P|Dvy=@x6zlDmR47|045t=K_8{m7SPiA ztD+fM*0$u&pWhrQQY53w^#~NVhp5XiB*+yibLR=^D~{OPwBPc#?T4>c4SFpRYIj@s zK6jn*D|t?qZ$(~OT9IHVOoy2;5NbeH2=z-ZcCDUp4cy^{%`o2DN~znRrS(@QY0#%8 zd&ii9Z}b)(huIL$4vZ@pl#N}m@8S~8r{Bc1yhqL5sRm8krW*BLD(2OEfU{@Ifh#8R zybw-WT0Z0-Qb9LZ347oKoP=Yr4>rIAXacbzFlhal`oR-0gD05a9+Xi^odzwfzm+bO zbFLC4N=Sn>%TBLaCcTscf4*#7A)#855`)%M>oo6W?}?k#Dwi{A`tpNn$c*i(>zMVb z%jk7#+`>JNHtas1-bqW#hoV7OaE9%$+rmLO4Hs-U2S;Hebce|B{V-l@fX(tr4{(Ls zkXtFG8O4_GRM=3w0Bh7_^SG;9DcoTDR+*TDIk+ z8aB(tFfU=+@&nJ#UU^W_NlVK{L7_A_!!bAuG65oBz<_Uq1`X;JELbqb?}}a!6*+Qb z6(vd(FaG?((r9}M=0VPHj+N2!2SeaFxPvRW!F5Qfl)465T7SAMUYe0RckZl8mMm#Z zjrWQjJGP_?p(6P6MdOMHVqEolE`Bp&_71gi&jsbY^|aNv22J1QHDb<=Jtr>S%iyG? zWl=y#3xnV=T()fT_3-cCzgM6@fy{S zIP`;1p!Ie0x(Uz03*6u$#5ejzK}+k8>g36jGIW+*?Y6JUfB=xY(!$(xExaYGV`Pr;mwW?y^t_mGG^aqSfS~K7PRQJVl_{vPn z*oQfJ_MfuFnj&mHWTlkD*YCObQIo#Q+B%kTX$6Li&<{4kCHU|y)3Pmmp_c#fukLj%Qq2fuKChh70fnUV|IPK%NtFNsz;9=Qn2xrA0Sz;P@zHv ziQ;@3B!>3h^101`*bZ!79pNgN;5L|G8|hjX(ytQ1wr<^8HEGhsx~;cWt5!-&>kE=1 zD$;~<<5;LrA)|QeJ%t(fY=#Nkhg*;Z0{D_~1%T$H3wL5#Z;8BA!eRqdqGAKZ!1C9d z_^wjBIlUayxU{0f5I6=;;Uzq!iqOPalqVCU<<5)>LF0ukFLI(VtFc6j7EN;Gw{PE8 zhVIgwmQ2D^@I{q*pw{JHacYR;d)~#Dr*|KHDz=-^83`{wQE7e={Aat0wyXiU3eHdr zf;&hgRs_z&T^sXyj%oQUrjh@lC*t0ZYGJeWabE#&t#KbRRvsy)m7&rIMf7EumYH=Y$9PT*CoP9n9oPr2zzp6*Qco{k zy7a{|YtFP}5gnCCa)IOrz)15+WgBl}6beY1Dg#Z8RY(=yb#_+f-MhuWp08i8-f!Ec zc8?pU%3*GU2M<;^ZrqSN!7qu;z>Qyy+_H0$OXi=3cSu#Zxq465=!n|B9)vE_!K2)`rY=*IO zD?{axw~4aExUy6oZA4pA8sB1|^UbFHmKEeV4m!j@D=N%@+u#Xu7e-o8jN@x52l}|A z|AQC5jDRA=C&dZTenW#TDnvsuua2;$>WtORgy|L z4Dp-OtT8y*AH)c$&kW3Fy83Il4JTnejDYfx68@)rcxpHR*WeboaRK@eJa}-kkv1g# zWBk9!w3Cq|M@lMJ%dxd+(IOeg#%o1dQFxu0IkSGt>*kK-oZA^XLsYN}8GTyDLdo2< z$G_!_OU#Q1%;@Vf*X*+3QrT8BEASlM`{}@yYt7*RxPsY$7q=%>Yu~)+ZQi_D(tmSPRQf0AaUZF)nlWRB+|ckkvBJ-bmnCZ73sWE`*p(4rO!=9jajH)j^BEm9o zcX3g3yLD6XqDGaOhRc^P|KaF>s81T2Crz59iWDhgG&Rd$Up{A_CT6?q>KT~e2|R+k za2-yJ@D>=AW zxKBHSr%^n^?^0nHCr%uRW*uUxhOQd4LV8_z`rK9RJ8?rzS-M}PE#6TDNKjb?Oj1V$ zOwmjQOx{!lh*wtmkDBwDzi`Q&oq|RribwWmUMZQFaVcrZK}PejOwz!(jHt_%zt?oq za%jbeC2$?Q!Iehim-Kr`fdoGU-!-pIR1H#LDCt6emj-2!Vvgp`n@crQ79xOA{P`wl zT^N^`*da>l^JdH_JxC1x6chT2yy3edYLhBQOjFWkq|n63d^9-={F@oxbCEZSQ(o9a zoNwVSoP~q10=h#sJFH+V2QILSuj3hKTh^XC1|u7Lmn2=J<#!Fq%gbB2dw8nnuimN4 zx1Ok7N3N+^s}5V&**EIFRMC`cOix#ok4qtgky=YtcBo2OW~gFKh>BCNw|AfvP0Rt4 zHxc84Po!@90)yBF#lfGwMO_Js4j7TJ=l~D;xQvKP%&U6m`R1Bk7r5|vD1G_XQP&ZW zN;P<#Cr=(XV>-j5M~}W(G{H&}iIPs8Iwj@sn3t7{7cUwYOfiz1H*bn55mm|gR3xgJ zN)e$gV7kT{BD1O`OUhoao|Mo(dGbVkM^}D!RXGD{)wprvqymzUBL~%7;3cI-QG?ag zI0ulDd)pCM-~n#%8m_@XSOYyEsT~+uOc)LOC|xNO~2*sNU@#S1D##!f1DhE6J2hK?#|`i?4a+760~ z`B!L%Ng1^LM5;C_V9J)>JpL3mLL57cy27QaIARM%>}42nmTIGoMr31J{M+Kqrd4** za%jbaMR3>VVtv8bz2)re>@%v7X&Cf;Nf$mv0WvXz24rbU#<;}LeDrF`1#~IV7KI!# z?SYh*q_a4ek@9U!@<(SNzK35DMka+I+cE0S$$??VqBlYV`gxN>(ChjIoXk7 z17*3PVX7mS{H3%!>aLdQ!Yr9XJdxzznY#hP!XbkRg%|w3&G(5sYPfs^Tn6 z%!l(88J=6LSTQ-{x^?T87{!;;dFRicSG-?ol%s#L=}jUuS)fT|<}=mk4Q@6?9}nOf?1Pz*6a4?9M)H9$k8?&>`reFaQVf@oP*Q~{ z?FL$Qt#@wj>g?5rvNW;N$hET0qiB<<%9z#1MO(!$(q9bACzzKt`XchO8kP<6c*snh zt$z>rP4g1o!zCC6(d{Ja3P7|qmuVVqmWE_W8J1}|!-J~BUQSvLt&lJa&Vws>!!4=< zZ!KH4%+|Q%(4SPIN`qn5BL#PW3cs^7IZo`=OQqqw3PY2~ig|}(4&N{ii3mtL+QV6l zm@4ON^0|<9M^{U=;uClbH{l>Gg(eUJ{)W=Q z7+6ZLndWc(=;%%n>?1pNz0*?5;nmlaD~@!oN4doXV0ElFYatnl~VXjm{c7u<`i65D+b?g z*`oT8MvN0HmP9QSX!!YyCl?nDt#!+Lu|6{BD?+RC%shvqnC5E&J7r*YDJ{|Ire^lem- zG_6&jRITK!>&xaPc)|;~2?t;lWQ2geU|y{yMW5qgOSO3 z9xVYfd7J1|41?Y@NuQEt^rm3qr6mHp1n1!p%z=iG{1^Mj{6T(LNOW}r^YX^9B#lXt zhD5wf>zDm!T6Qa`7TkaGhKw@u8C?-AN#ukneY@zw0uh+iyof?18sU9PRpA#6Oz25O z)1$Z4MG3ep>CEghtpLU@xd@>Dh}lwkRC5{ z!G@E!=u5Y*GMor|;er7bYS&4Z8D~(|sEaA`5_x21QhXAktCjux+nSg3X|?A<9*YZV z)=ZgXh5vsntC1Z&dQ^=XHA;HgI0uwUN+KaSd!jtwjlz$6mO;Vi;2^Ao0Z<;2K)A0& zWd0!##DXEP9WHa8^@6@TV~UBG7FC5Zy`Q0~vhh~Se)ZtVD=EYvH7KR)G~5~~K1l@z zN%v*5;@`h%WTXbgtXRZo7^0k)u?ob9!ggCWq*^7{l>3di6EJOqKYeI*?zRfCw46l+*aM@$HFk>U*A zP9UXdH6kOGR<89dqjX#-)ndAs8gIvQ-w_YsF>UJxT2hI!euOll zl&*heOqB^9!$Y_aci|zp!gF{4cR5dcXKPx#UolEr3+(u8QR{=dr<$?ikQ8B%?y{!z zz7}bLwa_AYsUc!YAkhXUW}6NaQ{p*R6T%o}x_aI25`jr7(Izb^Z;L_6pE(<|zFoCW z^W^!Y;^aA`F2DA46R2Y8gyh>7sgD|FqoNI-qd^~pK$YNN1xrkP#cp(#2cr{9uQa5N$c63oi zDQAQ=YSfUkFj9%KCdM-1-OEQ4^!ranCb)t89iw{4tVS=+v?PinqLX3~dg-KE(|*qt zwO+k(Q_S3xf(!~VBu$8Me8U_BiGDB|V$RH>4jdxfMKHaOGD zqj3I`mcF8D7}-7-myhh71$0zr5QVp{NZsAt-IXfTsX-0uZa_<^P)gkl>RzC3P*B@UATk>x1%$*tk$`B9>J#zi}^`m_NGY54l zR9Lj}xd5WF$8*?RYkg$}Ov!+(AT7vm4_n}Q+;PV-rVC{e2jQW(IF3?*nxw92>df}zaR>-<<8cV+ppK7g_8*T!TyiH0s)zA<>SRpu;9QV{ zuCH1|$g9FI*YKQSUx=qZ>RpCw4(j+=9*WTjiC{94@rMhMoWz(e!v3Uo?b?y@qwzUm zHGdRL_&}xc|D;o=PVTF(zCvj={B&#xW)D(-BBh5J1H%RNDiH>$JCqf*tz?8Cg~V%6 zMkp(Y1!V+D$!Gy7aUQ8AZ1*BJzT!Tl&IW;ToG6iUeA1YznL&1d<3g}XZB_^BZWSx; zc0-PRzrfeRvJCGUPBbi2NAguD@4rH<}8g!igcnqw^J-cvyGO9(+$6ydu;*J zGMF$?+veW%#}9>|(VMCFm^-ez>MACTsQDR%#U8YH|JZrwou|}b<5F3ne~X4=6aqCV z)K1kKJ)}YUkn|rnVeIiyl|zazfn*>a(t{8b^(nr`HHZR1H8G4A0^_{g+@;J&8Bzl~ z%$lLIR{9c@JcX5`;W? z4TQk!v}Ob{;+&ey5v|AZIOHkQ2j|AB&-W$v^Fdr$p2&VNT#u1sG0E#tPhMP?&Y`;3 zU=0us(R_#TLS93SycS^bW)LsNj1VD0q#uj&i+ z9bXe_Qamr9K2TGn4vg#1v0Tmxjub@IGOOJk{YE;$pqrYfpX z#4A8{9D{3vJWJO&;1(L17aHam{v!2fSa~tX>kK3E2RwO^+T?tYFh9rVn!OmJdB&E8 zlMLTmV{$eV?x+>{|7yxOR+Km72?G`=#k z@0)MFNxSxiI}s<{J~pIwyKS~{7ugi{*KCy3UAAa)2b;)2lP*grv3Q3F(UcmHpYAu9 zT2sPcTp2Zzs4d6>H=#@#A`;o-lLGa`v8B#P^`UyWsdH|O8%iHSG!V|I*S?5}gV*p_ z)ZxhWr96jh>1upNu|aTLr>>dT$S8u^f+Y2Nj3cBrcRcCdGJ8*fx6|htMtA~SElu(o zYBLRgg^VKv&NY7}A`H=dV_QGlaH!!2bH2^B1&x(V+4%hP&)xLt(`&TOj~O$@ongIS z`>{~+(o31T5nu0LXtNLd+-kZ?X8iz+-68c_XA z%15bCy%!S2!q0RL)ye>b%41mcw`g-$>GI4(^aSQph`kJJq(fe2%=nXYLzYzt76pm& zS|t{uSw{=MLVkoF%sbAM(%hYQ-npc0+qS4MNNkRg*w02hl`axkxqIJpkLzTEX&<$z z^2|GA)}dw|PPI`R9A^5iWpa zAvaC)kWF88Ir`4{4ETJCsegF_%k?IX-t=+RKwg73IK0Q7Tsy?9`X8{AB;>VnxP6D% z*YK4muep9ikub}z_ZVzyY~ZwM(?};mLi8-fCvIHYxwE^@QiWq*e?3lELWwoj7JvDr zd*wEBO>MX#4bbV5SA%7^5Fw_`&ZXZ9qXji9x$q#Bc#5r4kAANAb6>iieLr`dd-PXY z5%WW`w4nN_s#|>m$;nM9E54?1K$MUb=|L^4B+Un@VXcS2cn#`BL>UDHhWjz8ij?}| z7!W2ztn1=E5ERdIKI&gw6LmQmN2s^0y64S>p1jJvmHrRI!-lm}5Z4NZ&+TWLB7zrr zfi?EO<-4%{KLoLi;bOnCW3pj^pMYLbWr*w|oBA-#mQfZ`55rXmSP62$x#zlzZKmPh zw!K%X3*suYN%O2t8Eot5cd^k(ciwqtFl~fr^v=S|d%msd?2v_S^u74_(2L3yhk%af4 z*tmY3gV#$@k``3@Pzq1i1X)R)@s;!*q$UeJX-$Zm&!`dtvovC%hyu1Q6l`tzXi9+H=jcp#n zB4vm2(R2(*h8w#S5ag%E-)eiq1jvN69LGoLDcy(r5A{WQkz+tc5E*qbZ2UJo@Bt1) zS?hIf(s4wOnWi9r)nQ0u5 z&=b*tzJ5O9H|rmITXBTA0slQjTb)CMAX*!G7(Vy=rWQ$kRY4xZdzqLHd7;AC-?ghL zE7aF_k3HtbS^99ixeo{4d#~$ZV~!5Bu~XeIzSxzPmbwrj8fy&r><^TM+=Sfh^;Kjf z65vKn>W=go={D@+Sj%zZ>E^4~i)d=H*#pi8adA9N%n(^ZEP9M%LJ(X7uSE$$ppXm- zPvjMypuu%X6S(DM!f97GPG`V+FR| zd7xizxuXX9va8E5xW(RG%K2=4%}?Ms-$%(SM2Mw*4Xm%>dtdV^th&Nuqm4GodHU(6 zozjNK+lr2j*I(bQYnJ%!%vIRNT!&}bYWzKHO8qWdY~ikM-`>p{KHP-}(O6^bl({Gu zsU4uTB;3@s_)&^PszkLgQfs8#xWOysDCNf2gq|yoD{@N$UPBrXwMCsv?n4v~N(;pV z>B!y4HS&5CAVh{zN-%6h)FbMSS{FcdK~f2IGyo|pMaj<$L2>@8?s*rYgkbo&AW#`v zK-6x}&x&H4Z?^ic?XkXwgAL0Vb~lW)W0XU%Tnm2$K#UNyJ@;KI@(K}Rb;CJ+%kMbD ze5o*-hMr66kj0BEtz?t$9=3RKJzL?ynv~UBv~ZiOvrb%b^}6gbH~Qy*~M~D!wef%q`Nwp+y?x-hJK%CV24f@@EI(U?O^35OIEsuVJ zMV<5<#rT)V1Z&n_ANneKg zzHNBXaE;+B`y-$XLZ|7P*^vPCN=mUN@(K}RV?#&72Zq^RflX`KvgLPAJn_W**|TRe zyAb<4*7^8c#7Rb2=`n5Z7IOKEu?3U7njfDZHqQkoTillG)~^ptwN; zlvq+5J*2?7QBg`+s?nISP>_z?hpIa<%88qQ*GE2v;8NQ2Aya-{&X0nEq#;Jt*Ep}X zG%E$F=OCGZ-;Z=3eLI{6X4DnuNviI&p9{r`Dm?O{r^=1Yr`hwL82Uk87&{>;hBSL4#a;;mpW|S1`?g5V{Y#m;~wl;5JH8h(5;_SRGFE7u92$9Kn@2kI2 zAkiBzjA%j)ac;otAlcVH{tZ$RAxDAQlgfgaQIZVaB^}D+qzkz=$eCk8xF|}FhazM0 z2X~!GPLokm&{&;*+eaDU+nQzF@-pcK^+m21b z5K>aCWOXyh%ZwovMrtLt8o$IImtmy9YHqV_;BWB-7hK@pd+)uBEyD~Edb%#TV*n(P zEVU+QpcIqL7No-Hi-JUSgGYfucyj0^8_^_?(&IfS9_`mkN`Bnbwd+f6KF$w`ia=@7=G%r=q_2 z45$@W{dsvmgs*ifC_+sF;doppD^;diKiF*h+=_V5olk!T8A7CS#b>p!;pvc9h!ATV zE;M{>810E`lqa$AhT#y|I_s=6$`)E?8A0XSkl(T+jyR&iYGdUG9B@FXDW-+iBR0#F z)LffjU$n*=YoN9g*5LyP%AQgByPIeV9TL zCc>lGAW4XY*@BoSAO*-2wIiE7eP5*ZIJSr_)evD67YY&!Jm=tN;qyRINf|=!TpPs9 z_t)P0o*OZKwwpX7hx2m`o`dL>7EJ)@Nx304jl_s+-pYI2n7h?+cbB0AA#zMH5FL-9 zyka3jq!CLQ4lul6_!R>2_S?^0e);8Y*sx(?eqx9^$MEs9FgKu}WC`c1R0C!N6aY77Z8eUj z_C$6N2gF33M?@E0{hv&YB@Evs9hgdeaefhjUJu!jYD2AXoia{9Jg65`(Ura4;k{gE z%CS@sB6Tdtg*q8zDf_*q+H(x9S=YmBe;+m7EzB!&kG%RVL?;4Qzm}%Z1CFaXjGT*O z+i|*8wA!Z&o2X($HMa zbdKXy+@FS@eQI*3|N4thP5$BQYz2{~X^~x#skus0jl1l!OFT_U8gns?9U+41BDJQ5 zV$>1@r0EkV8_Wo#)3{M{6G!o=;kQOW3aE*6mQ|7lq%j((`8cY+AXKgsl7eg@3ls`H zS1-OlEJ0y$Uer>LCkH`n)at5jisl+neh>@C=6duwD0K)CkuucvP$xs#L0&)qGlkcQ z^dMwjPZ}~oeevI%14kqz1zE4P|4sR()GGY2VQPOBM&NVpzo*m0919VmmIT((Fi7O( zG1D;CKb9wg@n5CHiaq%(gtR;X4)&?Ye!eNXm*En_>4w7$d-+YzJq%A7-tmMs)1OBp ztcth}tCdw)eJpMQIr7LO<11LQva(!=5VeV%1qIZEAOIO5#%?<^*`O!UGi@k1wydXzN zzhcGRZpig(Rkn(S2vN&e*08&uLO<0{;F#l6gR_CsfWQ;hA|CgIHPG;|C&B#;8yZ$M ztY}!?u$=ENTgqc;z+=8~dJjV<-+T6nS8Ss^Mw?qPXVXnLt=xY5?c;X)cJ11^mtJ}) zm^wnF9eRJzuNlIG z2uT~_YUKTL4MJYD2k4}ui1R42laEICP;swJ_Pk;L2mV^!Z;S>NbQUITC&&3 zj?Q%^xc}71TxA(0M5f6Wq!77Y-jk~K#`CDPgjA}gaNx>B;qjOns8M_4r)EK3m^UEL zgfu7D#b>D*kg2eO{Y;*`L|~Lc?gGFRdPBeCL*H{RHF=+MCpA3j|37(+DE zn3t1>VvvD>oBiUNFzVBFDD{K#!Zd+WN}c9QK82oiovulwhTR=9WKVpg+FVq*xsHPMi&-1hMRmXtz80$onF{%v0 z;W|;DJVp(XNgq<9`mFexP^07fB;=K_U0MXT%$8?5-&=ZgEJTPV9Id>e<1xbzzS&vh zrgEjm7)`~vszVMr#J%|9iy@WRyaLsYQA7Pmf@bh(5(JJrO|U?v(OgUIOU8pt1C>I$ zu09A8lIG{2(K=yDhLFZN__?Y3VcbB;N!@9V^_?zLYLY2u#jH5L=G_5fW5Z3Ml#n=*oGY)qGB>0Wn|^%!-3V$)TI?8I%TG!SB12`N#`td(1?e!=avB>@KiK5i zvP|tNLHY1~nuZgIDB0lP>a6z=7Jmq!*dRVqv#6_T%^Q5y+q5wQ$L6QHrCM$Qc>%Ui zl==xhEn*=;G;ufLwuVc*t^RvIZmJB@il7{ey)`@!d*qQvhO#&_M3Y?e&$J0{rXnv* zcTWY}cTy#d6{seW2+E5ZRBM zL14~^PPG6$2f1;><>o7w+>#&}NCea;VM02j;;^{$GbgLBNe%t);95mqVjwz}awaQiuZ#Tf{FqqW?a}@Y^Mq zTrxB}JG;WwJpv0hfcR(JEG9&tLSzGnC=!-Ks;+|@kyIOLHeN6DM21ZoB2Ut5GBDJa z1s_6GZK^?opBsb8#Oc|NC@Ly)ciwrYqi0hDW|mf^8cy@6#NYko z`>Z5tEZ;EI>S4odi}TFjN^Jb`*^to?6GSA}8_G&kO_$KL_NY~!$5Yw5d3|-GqqrHPpmeP2)Q40c z)^h4^C_!%IBEH6~xa90ii|qL$f}ekO)-iM zXdx*`g!fCOMM*9dAu&&o`W5NF>YAOo$@6+rmo)Wi3o#aVU3a5|re-83?$kt{m77;> z8u+7+K5~2RxhD=p5m>%quwRH9B1E%|RSlR&RLG#j9Fa~2f1nj$YR&s}}>)y@{sN_|xr<`{bU zKR`o-Xx6cepIHBj;Ww!-5m%%xw#cRdOgitp^YW)mnc_k;h+ttN$}37VkOzv2sT)}3 zskJ~VKqP|#B8|sJVp-^Gvw)IwQXfO1p{R6R$P~gvi9v82uQAuR)Cf%t5am=S!sYWQ zC```~HDksMwnQ+zH)`PMX$Thj5Fvbn^EHMq4P!ikEi#lOnU$Ek`R1F?x#NyIDs4)K z3-SNPsEKpjK4(4rpHv-WK^hQJ+U1n{=mR5t$b|VgnWW0wC&9?nfMNwMQdoh4iZqUt)aRIxmMDss8O{TfI6i*QL44cUi|szpN@sIke5fP z->`nEAz0``gs|Aq(8kcm@T;$b&62%7f)bvy*=)rxzx=XWuwa1;@xQG?!LX53*=Wj! zfa+rM{H1pefV3bl-V1SI-l#7kL7B+iD04_nkd+@S$px8F#mafP22?1-D`+A}q^4JU zFdnM5@yx2jqYGH=W3?00!{x8F%Y6kumY_!ov<;Na-tb6ID zm*RQ)5KA`l3X0j!l~OT@L{L?v5NT-c{oI!2kV{?mfcv+w7ww!tvZ=%|Kk>jaK~)>ls3X2oV`GwVyY1{BFomZ&(yqdRgzV z$tIh)qmDW%K5TT(oHhrzxh$ z$PtB4X|NgAZLq-x?$ARIb=|skbE8L(wuOo1E<|Rc-=N=_UXkiXONtJ|2986_6sm7E zq?na>gJGB< z+fbH_z=Y+OUp_u5`{08Qj`yq#88XBb78be?^%~5|qw!eFB}Gip@lYtR#;`qEDMU!O z(UTY8d)$icZ+O`imz33c5cBJ=zwUP2aYqP@KClwsz&y#&zWVxCh!7#x^7XKvy{*0^ z6@h`3S6L254lOQj! z$&q&yVU{T?t9u55!P$4+b(h#b2=Zn@=_)9)TG;eBHvLWHQ%nYe+WhheZ!C+2!* zVmYK0Rbl+1p~P%jhdciG7h1OhtwhVcbbxG>PL#25dtz#Uh5oilbe%Wzb@Q~6DPV8 zPB=m8i$4s@EPZ8I6kON!El3X_J%prmcSwi`QlfMZ3?bd!B}12VD%~B@A>G{}A%b*= zB7BGE{eE*XbLPa3wbtG{YQVSdN6T9XD~NT_;{?KN4tMB%H{{qf6}Y5L*mdfPxC+&R zwS8HoO^UeZzHa3;UoBa!g6`(er^4&8=>B2OU&h5OlBiF=aW7j}(8@$P({bBzbMxfu%HT*xETVg1z2a^j%h%Vc%{r z2@J|u@lJ4c=DGWNfb>0X|J!{5ah5lsuZ*lnD^6Y{nKHc#>Y2IIgV)y#fz)CA5ZIGv z+O1DKdqVNLcH??ve0o=pxlFSrWnxnbnyu2g*HORN=bDzFL=8itW_zM!o}$ZR3Epbs zGptO{_Zi2Mny6v5h#%)xr`)rR2J}3Or|go_qg1G03J*JpuDkt&L7>O53C53@AUn0P zZ&!8W7$?j)zc=)HJbdLHb5o(NlWaJGMk0)iRVjbM+cQo_yLEg!l6TBLM)WMSmWX|A z7td(@ny$V$CEaf7N#kVt#giRz%#`2rP|f7f#y7B7fjoL71PErlnjwBRS=H1;(z6l77c1t}jHA^S&bl}?Q>a+l=~oy- zpB0fDp|T?_QQrX5l^wTtQo5J1A_)sUODxhhufP4xkS#A|$SyTYd-%xgO8FMOVvm_4 z267M$yZ9GA@#1Em{@qeWta5R&L)*0UTjXvv1`9AXeFKNhu*Ucx5kd-bz!H^Ql+^q zKpAw*17+)t^QkFjh`U3S-=Vp>E3&@J>nzc2q1`45whRU|es9f7n0osKSql)cSgMi! zeH-S1JkRm6Go^DwFi#@6X^fc1;Eha>8w!0fTI8<9H zDQl?>jd7@$V_?$dlu+}6IV3lmzbfjqrBHr1t6{46`^#NhsPairVF@W4-Fe5pw^5Bl zI)0zt2+!9s42Y*X@$9O1W$7Cc2OwLkoRlyt0a(3&8DTU$YTlOTfid`3&soZBoVwq zWKn+Ve8n=`Gyb)X8er?j5iKmH4h@V_dcufth~}ci4hG&?37_uYM#X!{*?a|(Z=(Xs zTrXaV`>e@EcD3R5f{R++V?_UhcW&~eWP_?3QaNx&UFW?VQYP_x8il|#!JEWSDPyF>Xf$399B)W%Q4+`m7nzOoQ7QAZX4YI{)0Ai@* zXZ>b4>)2}=Qx-P;F$(2A8E#cVr1b6N;R;G{=sozAQT03rhPwyP)u?W|I>_Cewu(T;Eg}fQxcM16R>2rgVtMJY*Lz~LJk~#$IQL*R1A_ctoADcjrVD$`zz<*V zP@S2uT&~kMN--3ge`wJkJ8}3dU9re!Gpa^NNZ1Gl2RD*LR}=0&?zVGhg{e2S5GEo>(9 z&zIwP&C^5bHVLfE*-uF$cF2^b9YF{r-VkVjJXtUQpe4t1_8Dm_+2edv(5?TuTZY%w zqS>uNy?xCsnHT84mZxT|K;BO6I@R<5DfeXJ-Q6|GWW8kL6F`XV^AH*M z{i|R0xnA9Rn6rsydbkpPcqxue1)>#H;!?6DcYcAPSTwk_BzB~M%o#7V3i#(N$lCizWJ=Kv;Fp9iN*Ves5< zMgQ@pya|fh_VIntRn@swKFf)<;pn-!W-YH%X~nrZ>BbebpzF^gT~wU>5Uy0rk4{&d zCW(FM(kB)Bisc*SF(@=xL<>WwAU6%knJSZ(ji6-9KP(}C3Xuc#o@t@@HVK_o-MMF$ zc6OCs&Gr@9F*LJe_cquBv@*1B0rCHt6rEv=3zu-7#;<6SLVuk+>G-<%8hBj3b!N)S z1Z|Fp0pvz&D2ky-l^gA^ak! ziWo|r1umIf7fe}DA<%UkkzMLY^1JFj(Mj&L`W7jG+dab;NTT;K7l1QYT26w2f5gOQ|C^HuGpZfDIY zP_X-HrSefxRN`p$f4%(JeA+x!i1n5EA`cXdEaF#tCYU`fcAA2#WHdhsVz10FN-N$ zX^|{t^GGcW8J>R=LiVEJ7k)BrLx@&Cx$Yf+UWuk407(h#wy-X*v`^>OnNDK7dmNit(D7oOb%=3uDOmF?o!G zL37v}&PFvdzjBzzcH%ovN~5trBmqt-o&bHacPlL4?q)$b}5Cq+x$@_quT^p0Nmcn+b{k-y+^Z z5#)G84)Oje4GTtC1FY?>Dz2OFCH^Ih*50|0QRN%&tI1NG{Shj5*`F(y)7?GCidZ!j z`;k+T_%$#uZO?Q1t;@z;P#(~U3-R-f5JDwWN}+Ezx3GTM zSxL>ZK$n|CG|EG2+iFib7dCsN_pXutxOwyvfuahOMPwaG^D!WsoAj;qc)Xm3&ODLd z_zbi6v}anCULNvYFPeR^U{mvc^FD^M0o5-?jG9#?6hq7qP!sWw6Hq;T;sqR9uV;TO ztj}p)u>%CeEY}M*~PE)-C_B2FONe(o{Af#MfpXQ&!YpeBN_h(^Cjq z&QRvHbI0!(jE#@uA#V+bo?szm+887`NL_gxzImP6>lVm=`4#8tu0_HjD0!A*_A}S- zoFoRU=q@jQ^b}Y*6E(YJErv%M+gTCco>9%{xoBl>0V*FS9?{zvXk`GDpyK5}PqMu2 zYJIbB2LjI}8v1bs%AS>afj)hqtx2zHc@|M^)GH>`yt*S0N&kCqji(>}L7bwziKX94 z+0@T!93jYUWs6Lss3a(Lt5pyfogWo(7qYyLey{mG_~g5%IrE3 z7>_BHI=iHn?eIPp^KUno^@j(MyYGzZe>c4-x0-HDVtmFtQ|7~0R04Lm{a(SyBzx-} z$8-usY089Lo0r&YrMRauDTFUmlNa-+K?gHW3kdx5T>#z^jD5pt`&sO9ez*m=zB)mxaebrk0_ozIJN|DQ2gu0W`vL~9XgTeYfAIY8 z%@(%80$X3zbhS2O(Qp#gbK9Q$P)rHQ%Q+61aL>5FdU~~2TG@AaHA=&vH17H+kNkx> z+eXcSj{Lf$bSuU<=QEe9z2YAHnO;q%-b@3}BsqhNMPs#NDt3%>wW$W71;)0opPv4f zTO9fa{maR>R4%FE>9);-nW5+mkf&p5 z5AuvNWeNrOfYdi~MtNKlN#~m_J5og9GccNzAQf}14*PjWOa`Jnvo2!_k(%ZHBo4k+ zxE8DuzmdC!p-5L<(Q^E+W_EtD@k1U_*H_OJ#nakst)KMj4+C^DjfyDK+r_00;xQCI z_UqmL=S4Y0$bESf`Oa91MV6o8i)=;mZoZ5`N0AS|py`9iyd7-CL+L3X+yryh_rt@( z^_;?{rW^~Vr&km)Ij6CEnYbZP9he+T9AWNC;3bk86(Z&lxcc>r%@IWMRu-6NX_k## z8sDInOyRMb4AY1@PbM3tvmt>yBO&Vl9S2Fv?aY7{d%oIGY{zTThlKd}_!*s6&<)`l zq~Kf(EZO(;XR5dhOIDSm4LY{2gA5LQ9;*Gg9q;T(T>S`o178n4jZ>zZ_J>)*io_3T z6d2htN_^P)c}8f)+b?rjIhZ3J9*(E-BL-M7Wp|J}E}R{VW%0KY2kU4^k@B&nVcLid zL^q(JKAGEB*K|zY!3T(LUx}pKG?40kBqd0!5kwFgfp$g8TF*3IuVNu3AmuKMEfiZ- zG%?&~{es4u{cHrvXfp^QbNe52>*y=T*`-KHow(}&CJzUjnR!`h9{9ujhUzx;EG650 z2LoNDd_rrs&-08B367045}6ka!*Bn#%8=PcfUGD-a;|NS3&J}h(BjpE9%^7Rg#ZJ( zE7oiT{lu}eE8g&}w|G;tVcNz2Ycgc?2A-uxh`3)sDQY>k4 zfAlKM4aikSMh9UD)+{Ja?5QsY9t>75g1x(!U5b3Lb*Fyv+poX6H!S^At9bqMQu%*Z zfhUU#A`mGUFOxlhXio!^7aOysLgr>_gNuVsMP>%w?c}TEQIPg0vV+J4Z8NNnl-2b1 zU=KHfZoi@`4c!>aZ#q6hU&sUCx$TFO0pz)qO=&@@e~ROc6urD5QTyagV{b;)X@s61 z(oYckzHd@Qc^FGwZo24rtohf3>wY=Obvb4KCN&=<7xnBJ zPEWO{^!T=Qmo78&a;#JNP~EojbhVXeZi`?eDX1nXW_?ptH z=q_L7Br~D3RlN*tXa|2nAmxL`CTj5T(CZgM#q@;leE9Dl8q8W6=OvDJ7!(b@8rCzc ze$bM%y6ojAfEe})K}whOeHAFStfpTyajb%n=9fxuEREEKVJ{0$MQ3p*{SV1*E=y{( zjToW0!ZE$(AribEXSz)ag;Dp~+FE^6QVHMImWwF`ex3Y-1BEXkU-Q@NfB62jaGlaN z%iJatur5+20dp$Hik4VxHgZG-Emfi$u065IwtVkxGVZpoPaQiA;#YSEh11Y8zbi3X zQqASb5w!KwlvYB01IUd`g(s{=_66fkcx{&Wl37r($@12F`S*!fV!API{v$&uOY!1# z^cAmoI}TFoN;hQBv%@5Rg;4nxsk}YbuKmb7n#Jf?UV|fkV@SkK(2BpM%13^X;WQTa zRHXiMNn55+BHha>fMnJ3T}vKBl4m?8Tr0r|4$wk@ojyxbBC$veC*|=iweq)#Zc9D z*SoG^%^eqx$KU6H#%L7DI4=65h`pW(Mkw7o8*0URm;L$XGh2M3yQzt~N?uO?Yk=zsr zvs^foKcUbb(udB*>Z2WqDe@Fr-o9H>t+T_cTA=7KE_xpM@^@amb4BO7*Sg`!2EI+? zLiS%9UPS3ct@W$E7gI0Yf3?os+rhf{(SpjFN-=)NiNkLv(@n)Qv(9|-^{Ua(SgQsc z;@7P@!4*k16nua2^Hrfcy#ZIhRTK|0hS6U9&Afr11yTP_P5F1e6%i9%A?wS;2s^c$ ztv(MS!YyBq1?`nm%}SH9F$L~~!Yt3BxU#(cwz6Jz$luLLbEpjVHWNj(!+V4ORC9WJ zNem8r|6R@(jqrCj;HYbK2{>t;uzWwZe;H{c<&9*9Dv^}d8K|5q)AZs)XtwCpf^qZM zaQih;<1@eBp#QCp<3?BQgceyjHQ;GwQ8{_{2Q&!2_v^sq3^mF4WuIy>4h-*=&m;!k z+*$GQTc2M&LA-V?>zGx4!qEw9eEE1>i})Sq?<=ttW#>FljTdq?V2JEUwXwIkf%Ev* zMAa^h9I#;RMq21aJ0N6D=&jhohQlf@me++DUwG$Df=NM|t^u_xuY$^FRa9$-NjQ#Og#@2)& zg&W^v52g4G+J2>3&9qE#<&3p)w4Qtqm1%S2aP1vEWu}P43e^AUumYgymCxgv8GGw4 zAn8WipH5nT;r$G3?1uFrtJ+wvR+YK%WYsk&O>+Yx4QB*i@2cC6L)TT8`695pbPm+_ zVNPv_ufLR1dY^P<^wj-Qi~sVa^4Em(+=*XD#7X7SB-s#GiUUNVz@`H?VdXx<8?#YrWr>To6cRr0RPu8#&2GE`i6w zC!my&al@?f(G+2sM+-w)oup4ztgctxGzF2mLtkNtl}*grhLwLr36|Fy(l8dC^w(St zp6$WnZ2hXZRI{!g-YcZCpor!*Pk!Xi$GYMD+Mu@f2cLm|)yduX%*+T9;nSsnwwxiC zunb@0I%?d)DWCcm_6&aJ<)C3sKjK|_#HQgRhMHsfl48r0o;J7Y?V%->DYWmS(0|5_ z)O#!Yk3vGb)>8y;B$N2R3ss`~Bot0k;zrjc3&!%FkDkV5`kS4BsdSS5e7-5NHrjei z_|y#`St)<`A&r9AKc7$P!SLu7)vY z6^+c+PuMC3eIOUG-aUR{5UG9hoH81001wW0)))2Md(<#Jy#okc`yE2CeXj$|h-M zwR5M7uWOt*=|1;Gk+W`by>MqP(g*X+XPX^&bkvpkTF~xK8I7w2j{?9!IO2422t8Nm z)-dootk=vLP&1yvri;`l*OC56kz?8Qn5no(_Iu7I<9%pbPYlXEJ-^s3fkXR}+VKuc z1G|QouZmR*qyL@_bAneG^%fq%vA3ciN3M{}QQlBNHZK0RY$-j_WhQh>jRFyq4ToBM z=J`QbJH)ItcjLU*HdEcng;b;<`hOKe#k?WvrN)AV>%Pco$hCE9v5_;G0y z|NTu;Joz0&1qn;=?9ztX-TYZoJWdGu- zlN7!KD?0tX@{A8gd$7J*71<4V$tm($&LC3~F|Vt#Xm+X0j!Ar$AIYEUo`t|cY)Kcj zfGyE!p#`n}Gc|Axe5{x=QU$!u8nhS}r;#K7a|xi@RvpVR+qTO&AxXYCe>H!4q339u zmycgbZ`0}@Z!fKOvIGd}S(`0TKT-vDPDC)`u&YRilU_M5?T6ok7__krhCd@SxZ z&A$ue!`gukbS0dKH3NR*ad+CUeoTZ8`%^C$&p_{!-=DN$WZ(+_E}Rl|$U`>_9CvpW zff8;*7$#2f3Wy@qzVW*3shL52AIA~eu%iVgiwv8YnKAy0JS@tMPAh#u*8^4RlQ>1u zqr&c%b#m=|&-JqGom!Q`jT~d<&o!TGeel09-&@m1{_c*`{ZXk^VbI~rk?OoZ$F5}A zE;v-!lWcLr4vR#51Qr%h z01`d7L8FV^$s-^txgwb%*?fA3l5Pg$l|@`tU7^G0Xk6wgFqb}Egq(5=S1H6Zul#Z{3Uq1Zmy=@h7?& zLDf}RA(0(SU)M_cCT((oa>n&4Q8JQB0#>_v*9K|3f?MOUkSEqwOt8%YC4gG7GH0pi z<-4E8L6Y1*zL^$%H|gez96e#Dh~U->JN2h0j3CbRJ{zuMUXK5I=f zd@o9g-OY8srFBQSWBjDA+vM+u)DRLq`v6eEe)<{Z=AIILt$O zSQNg`^)JOZdeU`D)4*pti9>%cvQE-P19W*;@!y2^O7LqRKfptt|2k?p7Pn#ce71`z zw>vPKTFmKRZKOGm-SCtZGs%*DJF^s}qHWMUe#{(vK9V&;%wF50t5nhEkn3Cl?G|v< z_BsCQ^{-^g$2rvKetjHGD;CQ9iPiQa%XxCbYwVRgy_0*HUK5Y+q%_I)nb{fAa>!nc zuUW~{}T3X3?%cGbIQ3*Ud4aAK`dzTEMi52v)< zO~G5Fss(L>nq85!5%i7d9o@(*wWj7!1ijr#u*7B^%TrD%e@Rr^g zgV(BgwGsbby!gB#c23FjL2e4&x9qd`5rC`L)ojcAY+FxdfN@?9wjmko{Md*=hJdRL zjNMS&2lOUF42KB49t-7_t(28dABjX1g7+@1MPLm%{rMVZc;?PHm-^YI0wQKbK?tfE zvP9_jJ+_5KdXk6EKkCei0+4PY(vDEs%ox$X%|PFjsq8g4G&FTfP+GWNq9aEEcF z+y6iucRjWL&ys(>)#LnOO#1d)1Jmv0I1h*J%naYgemN3?cT(0&E^%oa=FZcfSwu zrckS=%UCm{o9i+DL?+oN2}gpKe{x3VwfwO_prLQM>WW7CK$=;ghu6E6`mo5ltQwQ6F6_a zf(ABdE_C!nk|KyTcf56`PQAB8=8)|40YEI~RWSox`XhPu*;3hUS3(}gc{U5Oatkt!Kl?<>e)$R7)6H7_Yt{qD=Z ztxXXFuumS9qv^j#k5TJdhY;`G-M_DU{(? z>@vOgF=omFw)J6mM0s(&9!dogz{or&@?UQWnXS@`-HzABif*fTraXu(4s~2^3+e4@ zM+H~}U^OO#WY~3&gRy2tzTtP3LTl^AY@moZlezAeYHBujZXBs{U+4$zbE~#8YVG*X z+AhEK!q3@{eP-r1U|xs$f!q9<*mLz(n&o}04oCIRBxI#?5Ww0n+#pp%nvay?V6I$P zUg>d4O;-xHK+kaL~a@{^9-~zlU~d^X|I3KV8)m@St8~W}YCk zK`>y=7*pQrs|07~=b6e*?@3ga7om`l4K>Yi2b^S2!|Wx>d9QRjv9PMZu_tB_TY+I?rD# zD!Iy^{dwLm%5!kKZ^H!|WM`8=SlfrOKpv4>gDtl-u^|!fRPQq|7oX`j`?Ztb@80_n zWwC0Rz|w1v6VP!v{VVsp`t@sBt&_8{dHme>e>NWtP26Xbs6Q#e^vYes@#%>;d&j^Z zyql=E>8Zz(qN>Li*iRRMMnTs}y*tO)sf zZ%R}?o+N9LWe9+s9|g}}>#TB@CN1|1zxYmR&`5W~SJ&uQx8lVyynwV>$0L~D`oyP4 z4o6Or%{(Oie|JxtinHGV?=U+@t!p0)%PKo)c%-0nmqdE^52`^Qpd)}UXg-4vnEdqW z(KekLXI>PT8;V#bYUrid`Aa%}IioV44DK+dRcnD7zq`jEg|qbs+_q}t{v~0py$?RK zJz)g;k5oWB!@IgOQ<>z4$bCP$d%3BJ{ukt*rD%gl3wo+~L*`Mnji*0DR?$oCaSBYLb#0rZnHL){6_gI={GTANh+VJb=3yZMOOB%Fm#`=v zuwZx1HCV?0zVY!65412jF)HOza*K)6Q~e8$T4v}5vQx8Kn~-j#{tYKcP>HDjY^E~( z5Ja>E3{}p;-wYebmOnkhRB7uqpOxpRSxY7oakTwl>mTf20wX$WLzl=ZIdxXgPkQHj zBfeFJ`PbpyAp$%E=3L&f_fI)(1KZc@Wh51SF14N%b>4!SH?>UVZ2~liM&+Ke>}2(~ z?_nxCFhbf=ZCemVtlXS#>9eE)*gcSBkQB~(BD5;#`zvh;=W*}8%iQqyHR5gmMooA# zC^G#n(dGpT*O*~l4j0R>rkyNRT@DS6#KF6n8-lU!Ivvogx==}7Uwc7-7nl7M&_UO7 zrn*eviFDil2R?-et@%Y!>V5zkWf6O)h|At?S$;Sx7YgUhyA*aV8(~r+r#@0Mb7}Q1 ztFn0)&@00!SQuDuinY> zV!*kd&D;PXp4zl#*2(Z{A13N6q-4#IJYv-!-se%gLyVx74+Wxop&SrP4t3C?07s7_7+OFvhMPtG{ z6jAL(p_a?S@A=OThT3h%|IUYavut=k3V*`@O@bIr;KvKXPvEOujoIj(GS== zsZ$%~f9>`bPYxvZyo7xwPfzDD4c8?%a7YQO${dfVWzLm0IR>fgw8hW^ha#;8PnL2;_ci zASm8%r}dQ`4(z=>uT&B}ed8l>7b$=JYeZ=|%kST1GA~PT1Lxo;2sZ46BjMS}*^tQN zLpS8SdsgVx6=4#-S)(XbE(>PEH8;yW8TxRr(o~BN0amV*q2dMAi@@NIA52Y6o9dsW zM(c2&)Ryd{{fPPL{eICa@vjG{tZ7eQS$7lXSw71L=F>RCzZd#`cXgua zmg!&S*v6pVrFngCN_2f1bh1R9mHzY1pA(O;7nWYV@3i@?WnPd8487Q?LUgTp{5Gm6 zJO?=h-S3qMVdyp6zEn|z)XGnOcEMHi<%V+KzI7%%wQI~JcJ&WIA3tb(MIA0PlwuT$ zui_5b|84z0|2XPUZ8u9~Cap3AZ)q48B3DWCZk{aH74$PhFXvmlKSN4s-g%$G)kV5J zcgbv=5Y3VuysIb0+gPy2(DLok&wDPQCL6bwwe<0f`N`vlVKHXd2YQllz*-mb$$`L6 zy~JB~$4jmzfFFm0>aroPj@mjYnGzM69Y0_wCbmeY44$??_fblS1KV~%ZN|*$o0F-b zeb8V}nLNjtg5U9SRuk=8>%~J|kIFpySldkgYAEHKLF89IpFY7i#HVvr`i>2PV>*k2 z03Yu0`Pgq<+#z8z4)yMv*0N^gzfn^^VJcb2$+)%^+NfP56=#!)X%xXLzrZvr@(mgb zqWhvAch7?2lbn4Toy_-InDfW zk(#G|V!*O1$#I_&G$o1mM?LOqv7WyaH)oa2?&`>_$3GA4^>r`13sQb?sq};qSGg@W=UF=fwI2U9! zDCx5C59EK>DIeokwWCfNnni>>f!T|29VTqxZ1Z0_kI&E12>z@(5Uw8r_;4nkB@r3k zE>Wj@8-ACS_*jow{3^T~WGoyb-=V~RzCo@RjBzz9VPd9Brr*tDnN~l*JE9IGv`yy6FXlVymf%8^avgPOKWc!R;ZDZmDLJ||Sh;}w zt`apHqevdS0}=QUh!@n2WatAmna6s@9mpSV3Z~npT|i=TAW6uPNW!C)2h#%xc7d}o z^3U_Oi&Ea+!2Ki_gWp?K4}a4a>HwN$_o?WVY{m6jARPbM+IzWw{hW zCwUq~QgT%6u+?Wfl_y6UAK58jVg3)l1kLD?Eu!+f+u*@#jx*<1lJ_PGOlIp9rHEml zZB(BtQl>+xRJ4fU1Jl2v0yoTJRzzO#a?@G0KRRjpGqpxj=pjo+ zpv{~K7P#nJDhCngRnV<~BYc*%=RlAXp1_;0`zJpcMwZ&xHL6>0$NO<)ppozv6#MmgZLRiU&?IpL%^DE7toxlUO-!SFAGO_G+<=1smxsdDq-YnS6T~JQ~3(XiZ73+ zSTfE#`7!je@`b2c)+@k4DbtVj8gMg~F>?kN=>*5JeBoy0{6GL3Yj|yy%4DR`(GMVE zJq*fJq&9Z-qR}}Ep1@=?4&Ru+j}d&nFu5N{@=CU{QDQB>FeqiD$eD?X{Gbz(&OA0( zglLD6VSQ%4I9k<}Oy>!Ffy&wR)NAYX@jIFKjNWIEpu^Ipod;+_ipE$87%|LDO_^(> z6J>VyN&z8HX3_+B-Q-`pUHPWNNuDX%x#tz;=l0aFQ1GCL95H=Kh+Adj=LIGov4^V< zsY1W9o(2z4`hrTmw*Q6m*W3geIe>Wn0*jb=%9$FY?Jf*r+k|0<1>_xLQFkZt(;k9V z1ZKD0DCImaYRxt(Ts~%Sy-;wvSs#tj=b-A+ zZ)ccm8Q05p5^fv8B+Z~iLmh)WwGZrZA~BT!d{H+O<~T@Sf~|0_DD^J=Bdc(4mqNvN zWq1CH2(bDGV@B(cT5d`nX)Wodj6)N}kNWm4WgzuB0xS#qyL3hmN%p!0omuA%=U^u> zev3IwzU?jr;!UV^2K7FE+b7xeTA~I+~E!3wMv-XG3L=61U-3YLO#*EG1vQ z_-0Bbviwxi{5Y0Td_GQyR`FF@h_bTpa+;dyd0_Io{taz=6xDj+0?|vj<^k;EH-G(V zI@iweQ+96(yT0Z|R$Kr5Y|XE#cAMau*(nji-h_Nu&D|_Jjbs z_(`~YxaRAy3bf0AWAnS7;!kJE3M2)>LCKU)ybuVl;@+T`aOU62Z_N!#nR{8kf2SUa zul^HP?;wA-KIgIXxBc3y12ds3%;+Z_8uQJQ%1u%IUW@PSW*ae~=W4CgoREk6>yDU( z5GXE{INS2aEDeJ)CDSF*>-O)CY%_barBUFPaiRAr%+R7-)Ah+nmptd_v=@!ENQtmJ z5xb(sD75cWi!D3*5bc?aDWq2u>+haSw-6L0D}zeG^ad0LhbxCtWOOQ*_3>`hJujYI zK}cnVlkA8%3SWY{+^~hhSGx`IiA2X*O=8y@i(aV%cnDR&pDT9vcenR8@pgL8l{UHS zB&i9a8g>!G_E@k^YwrM}1%yu#mH z$jpVnQ4T9EwD}x*Rd|sBvEkw{c!~Rdzs|s0OLVwCqiQ zG?|J!4ue+k@E?|Qs!1GWUp?)58QjP|lhz2kDk2Qox0D$Lfoc&VGv8v3gxG500^%t# zmuRfJJj=Rt?)*m=LMyBObK=5CMx3!I=Kl7d_5NhJ;i}GUy})(ruZ=jD(c9SosSD>k z+6oYJjUnB2|1O+^iv{2xG{scp8d1u_S{0!3m@htdM%)`00*ZP@@uA~rzXgRNzS_m7x!K=P`ip5Rxew{e^$%Of9 z9>MA~`{ut~4w9M-HuhO`*FLmjfG;i1cv6$Ocja9L#=7(YIG(8%ubT!8Np>XiH>lJP zPrlSnTwREys=~3V#v!l5SgytmlMOr{yg+>-6Y zJNQo4(>zj5SlMNc6~*v#D#C^njf(bLCEBzNlZ4L~A&2jwC$dlcKtv=eJ~Z$awzLOq zluK?^)dc$KKxM$JN$&K|pd!p|rr_!P8MO>cHZx^cjqQ)U+kF4dNm4Zo=U7p;?VE*J z6{JO7jronZao=wcN4|Bd3y>jjwCL7W3M`BvVBef#X?Ht@iJPT0HVRp+t&2_^9+T)= z*US#p-qQSNjf;;r)&q6p_ndkq5S$3dVJg)C+Jx-2A*mK0RD1{Y^mnXP$=sA}QqA@j zd;s6m?P3|;(yx3RYF(5k+qQ4o*4XlKlLm)&`2h@94)+Hwgl6UB(aANd>gUi1M>az5I%~TQ^~W7|8iGchK7fE z`FP4SDsbJKA9@7Rt*P#RzxVs>l>1>6%(XLV$R+75#Ytq6D&Ed5A=5BhI%Ac}B*A9I z5!4M;GNC5GN#>R9)F^w)_Av)HCwuafs}}uT8;Fbev&IC3w&J3@BO@VFQnH?&%`1mF zbkke6^F*3@a5k-~PW0Kki|O~+O7mQqvqFl#y$%Uh@H4FaV>j%*^;h_tcp)}g0oz(( zcBdlEA)}BtQNKV{MC#zD3$g|rG20*?z-1>zORb9Qb@;Yr*vUOP_nxITp}Np(akUAW z=2v75p%r|GWKlF{v_%qZ-KrITAWq6-GGG9}SDndrA1^m5 z=G)&d1q3w4TSK=g6GRt;fwtOW{iJSN{@X{{wSPvl3+r?Vwv_Q~Z#eMdK6!UI|1Bm{ zFoP3sR-^5oViat;tVE2#JxH~4;k}ng*G-sW*kAI=m0`ql&lHrth}$S;i7pB~64Uhw z3aW2^wEIL+`QFg{)JUrRIQn_km|%xY!~yeEHpID~xuZy$VYB-A{s|te^PM?b6hqlL zesAeScZhse>yK}CU$Pw@;vN8zW#Tn4-N4#WIpw4E;lnc(g6*ctxdp7D@1v^v7H|9L$!y{DkF zqgk#)#M8SET7)D}!MvGZD6%rG3M_l-xkK+%xuZ9pT^TdB_lrUT8k(*6UZ8$)1JznR z(~We9QOi?HA)Ww}ll3m_u_r%i8(ZZMokg(I-@@>qKnuM+zvc3TwE+@78naN#d@LLn zKv(egg&-Vdt%p7;)6{~`ESpFtw_Jfdc`j6v^-b`gUy3K3W{00BD-9bevwUKlKqfrC z*(@o=O0*c*^1C4YHC!og<#!8ckHPv+f-<8AI+J{iC&u&tBqX#3tl&Tf$(fVsfIUvDq8Z zVp@{+TX^Tyj(f-LsGT=E%%uo&sxYLK05Gd9!hh5HY0@EmmR2cH*lBwU&y7#UFX$@#1>qY>!a0eA~-t?+iZI%5mi;5>~IVqtj#wEYmITAKht(( z$zW;-;qH%yAoIh@T3HmO%knU4pIa#gADgv47nfEb2o`{b7FJOfGrehw`fsNeiTO0(z2qSO)d>U^U(0PX^c&B!?0EOS*?U9 zDW<;qzHBzfOB;jD1!j-eT^|1il@WPQ=wC-@)?aeVO8C$zZE@X)1!No4@f|wQXZ5M% zKs{l>U#?|gm8>r&KZYU%nA^2ro*J3BieTZILsrUZ(8ac!yJW& ze_DHosWtlG2M^*+p;qK(i@I%(evvSMQ8eiBpO}O6oX2ypk1p4Qc0ig$pAbAR%v7OZ zXCb{IoklLoUepzTjfqd@I$NG2ot`hUUwzStHPQ^`A*7jCTZx8uSg?)Ydk1r#;(dg( zWOb{$LvXijMI$v&g?(i#q89dpIGR z>Q4%jckEDv5I#cwLK&}k95<{3{F0uQ^_n;%7@iUYV{xJUSf_UUFu5!6wM2@a<%6Y& z)36Ncls!IUY~+g<)ML)a4E@a#$MBq1NRo>Xg-$t}cC&M_GgN1+i3~8+RK`OI%neyn zkJ=4ghM^F>C#BLf6b#ZumWI795Zx*a@@ka7iqikDqw|i2tLwtJlIZQ#jZXC5duMdf zJJCywE({U9k0E*piJpkw+vvSSwCF?)X=(%^e8=Y>%UYb7x$Zq@?`Qw^vw5kSKbrfp zIcOf#w20FCvVL_CG2DXHzi>8*<~A;zEgLWEC}Jd#eMWm@eYe%&t5fi z&#`igU>bf8o9Co=%>j=DN5Gd2gRs0zf9XVuJnqzT1xPgDCd()C-es+1jcTdGNPjr$rsQvkAPJbD6MT~vt z5fFIHL#3&!D+V-wac}HJOO8qHcox1tfj_r1!^=U|J+YZc*GW;UC8?veesg#BGDQ;B zvgElUogB0r>wV0>(MOdq6rl6WQ9RpDM6d8eV(f)FLGw`o|3{pvLCwrU+t}NMEkcPk zCP(1|1^AbWB&8?pCYeCM9S@85oj$cNZcWgMr#7 zE2(6oq7-%XuUtEzr_$XKF#3=>G+JNs6!t(SN(U(@GXz3gM!|0X+^xI#gDhdzuf^K8 z1m8YRPKvU~U0)n|k8fK3I4aYrEwtIlP7O8G=Mzv_Er(m|<9=nqCX&!|d|To3OBLf( zKiconrYotZ0X z-vLE_#BYmuzgrOTEnfY$ccnEgH@hc)pbieje4l`@2w_uOh#RV;B+3`Aeq*>%9? z$6g@)rN`5T_bON^_GDk}gxT#O4mR>57!$pRVoNat8Y%?BayDGE_-YEzb-lgAu8 zxdkPfO^d{kSbhF*w3qoN;gitnJj)&7LawP-XZ^tMjRofXm=c63^fZfwN??!s@#; z760rCn=mRreFn${${3Rn`?OS!5c|I?4Ypb>?UN1=`XUbw+@5^u+V!jjqT{lc;!)4- zxqv%o{kLGVtZ!T;A1Dv)CRL^N+VcZ72i)_OC>zr7#|K#|%3{&lBZ)`7r_TvkP0(X6<%FjP!j!>)v(JBq_b~BKAi0Pw9(}=J?tabG{ z8&E``uf97WR#kF5JF9nV8jw0b{MUwQB#5nDM~@5AuOUu#lTF5|d5q!QRG5&^{^Rme zbwj{u?=I?MyEL{C0aVE=r%{Eg7PKnK zHLAq=m>WMhu*k9I1>v7^Q(d#NN5F7!+k?BvAIE|ly;MsP1LYExc+5N!Uue~gSy!J3 z%RdFi1WdsR7TJII0Dc`nX>B5==6mpG!sJpJEXyi@q6*%ISvjH)scOM0z8m~RU^ zqky|Leo~E_pmECMSEItd49*eTS{*GK;=`Lch+sH~MW>E@Ekq-7!WYPb`)xFujAG%U zCiCK9vK0I@U_AWpB77oVQkmtViTX8g>0{fNO!vU%;^Jy)#}ag(eMG|m+u3GA@!B=} zgv{)wVPnsx#lVS4eX&x|?f@74s|`I5M~B>D8h3w_<@bQ#S{#)iwucWIht7q@I7BXJ zjz~3Ex^KNK!M*59n{NrZ=M#0V6PIj)zJDhpjD#{V;og1^BcS9m6t&#DSHVAOFoi@dkRI@I=!j&ThHJ8yg#s?s?G4#XHz2?G1pj@i$7dE6=Ep z{4j_zL?3lJu@Il5n?~(il2R#^oLmvq5Z8=oUq0Zeqk5;GFpk4(H>>>Vsq&P5zgXzO zUJcd0seJf>J3P&uQp9yCb7DNuP1)WujO2|9ZinBT+8#V7Koas_vIHI?E$RHSHamn- zr$mhpYu^s%aM&tg$h5Q&Evu;e-@(vp6Jg9W^cMTh*imY>VCfj*7yhez&X(bpmU;i} zj%Ge@35!0a)0&pzd;B3ku0%*F(p7USL2@8hrXlYMC66oN>0yy}^afSg}gva#(;NjsylWQNnqT@m+;;pwf3Br@$U zu&o1;SA+6N?2Xv{*t{L!$Mlkg@#mqYZE(xJKj-mId&59~qO`za3Pqv3#`vb9IH?e0 zG=@#DXh`4!rQ9)N`P9hJ62iDs4{~z4{QTQ{8K2FF9tg)S>Hv)8x{rlm`}Heliv=QF zg5j3~j7}XmJ>4#jd+fT5YZrKb<)pBPCTQqfeFOPyoo_i4vXwg3Y^y@(`1jrur%Ue+ zZ2956EhHArE2L^ZY{P4HfS7Kg&FT!ORQ|H-#HjWK1oZ4 zkq2Mw_g;^kmxbBBP|6=BZ;FOGRyHY1SZ@^-QaspMrt!v}0c`l*>B)sJzJaMZ*ap+> zdjYqQd$ODH7y=4fT|!QyBs)O<5}%U0u>N-I_%oecsN>QyptGT{Q1KA>2COtMKb-h0 zxwlmBh>XT2#`=}@)HG9=E%svNXXu8>e!Rj$;-k6s8oK#rRuk<-DCxyK5gPOh%crFYVz21<#7({BN@GWDAUC8-Ui#-eJ6Uzs&W-TlduqCFT>ZsqN zL@d+Mx3F-u)Ldn*9@~e@iz-s6Mj?*oGvj1oL7iLgTZPvX6Q2 zr+1OC((MNeiY2(Kszrn$g^bW`uFyordhGcBh_Rod`0UWxtJm{Y#;z^%HOE9)UyFOD zD^E`fnaq;+&v7&qKv|=|BrS?9T08nIYMUx5CEVD~+%n#@$8|RnEz8BiAC-Ja6R9xL zP%PiWZqYZ0htc(W-H<_a2fHd3(7R5obX0g-nE#^)^{x+|dTT=I0vq#ZoFQ)b2|!1L4v{W!he2>1=*9 zc`1rqmVDE_Oa*CN7SrHba1&Q?LvUrZ3OqnBD{B*LsV`wqkg^m9@s1qJCeqVw@&q?2Ah2 zD$J7`i)P$(5|y!05drhh2NsKm3iyJ{;5U~iSnKhADb2tJVwrSuY%GluuHace_T=t- z@k!1v<%yBCCqvpUc?h`44QQ{Q zP17Vx4oS!87q?V=Yg{BbF5?uyYiT+BPcMnepC&p)Dff9mkrB$6CjFSuD+XF}!qVy( zgikKez7HZcf%ex!!3#YI%8L|??q`9gyP6ii&cDr#_)YDFgLph6vR^4=Ta7>V;$VhV zG%1I>Unw*yZQ4!L_N!@?x7&|t1d&X8f(~n(?69QA0 zP&ZMC09ka3BynS1J69~?j5Qa3G&88ZQq3p|Hn+?SGZ}ATWAvJkGTTHf0(3GNluT** zaKfJ~4?8=<-foxWOGc&o$gL=XJD|wTCSmLn%lGhb0B-I%R%hK(vYU7f{GK$8Vr-Pr zv)W^m!y8~Z56j?VfA^)s4q!|1q3?>UO*X&0Ed|98dHW4?A6@6#}f$f9=&sSsMfYWcLsUy0A`Qq5>JecZKw@AXU>S$ z$T(UVash0u0a$ZZbhLSd#|%0IS)Qg^B;wVp^HZ6hyNXJV_O&|v_G*7Z%Vj8uVne=@ zu?aCMiZthESuKW-wa~jhMt@Qv{IRtD+Vk{IMG#>|&)x5|XM)YKO@eqm^YDJT{MZ)i zm>}QL*X#s89&Zy=XVvT7%<~f~e%;^iv=UpYP*O1!7j+xuPJ0qxowNv|FAl5f8wRYu zT;w#mLp`6c5LAsE=aZGrNv0UxL+b}AjfFFA5KU43eoXUJ<$0@MOZyY_3FKZc0}RU{(+?MddzhYVYO-*Z6jzdwQLJD ziZ^`Z_>f_^edCGff}3cy5P7Xbt3)Lqf3=px1^^SD3QC%_VCCL%ka6MRP1QkK%-0gh7XE76`Ms`62?2dUPWnr8#LFF^H}e z!HD%>`|E!$>!iDM+Ea1B3y$ByS?Kz4$8YLwZpJQs+)u0867-C2p!`;ylv9Oscbe1l zAXIJKM#7!)#DSrVQsBsh2~$RpuxkbaE-bElywI!Eo%cRx_F2R-uC%iaFM#*L1T{w< zty30oJ$}U4p|Ab)>4*EI7Xsp$vM(G%5@*5G-~Q}$n-m^(j>Y_ETm9$jM=?HIWTlEc zksbfvV%@n<&7u%p+T^}>Z^|9@n|65-)k?uQ>EeFDMm%zIHhFZ)qJBbu0RSi%N6hGD zA$FwSWspv=$5@n<8G2ew`|D&B5b zqC$<3hEDc;VXHTw>{0UTxJ!uED$TX4Q%wXa=B+W7anb1dDf_HydwW}djiD(;CcWYu z6xzB-!Eb;=RBQo`UlR9WU{^$3VLW?T3`V4RRZ)U&RS)xv2 zo&6T+##+fXoncrZ&b+vnpI?Jez=6I^a9=T&)Fn-$5S=FoEpA?Nt|gl1AG-+4VxJ4E zIj%Ih4+F>FvMpv+03LwiXC^kAh1}>k+d=Ha#Wou-zGlt&AR;1yX?k;oK0IHC&Sz&L znaFr7%>U;ofB+njxV4Tvr(HKb*lABC?ew? zzke0lNl{~Id})X>C!9EYqyR`b#jntY{tU#LHP`g^!%XJ?w2uX+padY$Vmx|AIPgv~ zS?fq44~^bcSSsIDZTHy zTkI+MRXcmvzJM385u~>=u>0qRg{k(KeU?!su!_xAF?(VJ%-YOx)&05lDiV*pXk+p7 zqH~T7`=^oz4(CIZ^~q($m|~=@M3ugHKTgz}h^=W+(2_)`_vAp>4}T7?7HsEdgHOl5 zfE28G_>$`_J~a<9jg=Z%bO70DWb@*lFol8WE@}pkI};T$(`w1;Al+LstdD2V!qMZp!x5a9g%v^LVDq#&hp|*~n_@fE4$u)AG=Bj0q6g0LPFY$Hd$V;XLfpfs^B{0W3A` z794^0T~e;LWIep);=Lb~{5@XoucQJFUIx;)+&s7P>yG{M;0Oj@qiMt(rkK}B%$`c9 zb+W14kY6GwXPfk(AcnBoZI{E>6wOdWa^CycItGJ-=aGDem(}8x;P~SUz^B*rVOu~R z!bNmCu)i5*nhdk1$~q*|Nf{F)Myo8~#uGHq0LN z%pAd6HR9jKdwKsUvljW5l653fb+wdU0S3L^^%Db^H3=EJjvx^7w!UFLsub(Eb{bOM z%E&@f8(;sf)4~c|Uo>-<6!AMdd)~l|P9rlrb#A(xuhXO0smi|TXDVxL;rGM(d)*vH z-dS70!L){C6iRmB%hnO|+~w5;ZOTw3grojJYoYcreh#$6JsNi@MdZCiNgZ{Q?F2az zSiOw?p|c8VP#eL_obB4*T2q@ETGC4=rsWaOjUPqyEGU?oTBAmJeyxYX$`tGUj@y(= zx@@PXx4c$`C-HKQ3f@-9mpO_E3C%Fwdab?0mbH+Iw>tSS=o^~Y=jNT-+6s;>0f2c&sDd5^}HH4p}cfwGuZ0mWEI6VF|%|lP+tdq>RQZ`=@sM3N^_4Ok> z)_Qaf14IZ;%Ugnt)^yK~EFQCQvMX|$+=#xrk49-}6qMd!V}<5;IVk-bpqiT_3Sj5H z?CjzBNtmq8H{ZmXWoVz!R{gDN26zjj9pO}}-{O*&bQ?BStWgk+t z-1!E{q@XB>BYfknkJ^2A40?O@O+7#pfZr_}AwzZ+6(O~sZU1ue&B?tDRVcjKO{@|= z7RbC>SCd+d8m{S_a#Utd!27X}h3CjrM#PZP73i1Y+ zT0xL5f|NUg`5$jyj?)VyrB`*ke0t*<3eb^Lg-)&z!(Ps(4eNvIj}fL5{yaMnWFeYVu)i8+z}mNb&0jaCkX2g-s52hq8g44Ob^q?AY!BJe{GcS?kFr zyX6mXO(Q}i+3Y{6n9(M37o9k*t?v}__m6!ORNXqMh#D~l$Nu6#_J@^lDAebBlikBO zs*6r1=%b78yHRjKzwh&0JHUtd>}rh%%_?@nm$n1s%`qoWs|Y)`l?ev*Wh30plV9lU zaHpWh!;)9Caz(na`xw;on0 zk}7!SoS=VLjM`HmT>rJ5-im64qPtJEXOYW~-u+Z_a`OjP1!RTO;UF~o@{{^|OZlcSF5~fmi8vQAAqH;!(?$_=>P7UwI7`N^~K@ZXwCu{xfUd&O1~5y5&h+#VvKWLt?! z;X3_Pk`bs)az1Cv;4urbeIq2L0K@ytGhWlDUaQN?M41*DFaG{c^KT;IwZ2-4$pOI6 z{T~i9p^^zDqq+H5`ULE1;#H7fkjVJJ%QxvcIUED&?hP+l_FUM@$eZu$!uM$)(#pH5 zxgLW(+#4F9S^oo+UuAO!+Rf{d%z(a+wE~i6H?yMTnOx^w`P!(FzdrA+iEIJVwZ$&H ze|#^V_wRm9);9Hq$!X1ON9s$Fy%zJxM(uq4)-QAyWKp&b-$BmiUVeS;t@T=VJr!m?1Oy3^vGEa*Dk=^17IP*B0sL6D#D));QTYJfe-L!4-2CS0O%et;+Q?m%N@i5yD-PU$iVP9TZbkZ% z!Rg_QJcXjtI39A(@Mf)<9p8cho^pDLu7+K!#TSEQkEwym7$;`c0uwsyxeMd64SQ2+ z7{e%t`wQ%JEV8a!7`$qvPn(!7ODRn_qsfLim4YL}9`kVNe}l1QhrpH9__^oUI9(kN z8(v%oO7Zvyfnh>9tIWOkn3Jc9>GRv$F60QtZzvDgb8#LM)bv4ttrnY;Nj!IEF2q% z+y&aXsM`|fUh3Jtlsmuprc?mX{ANZeCq2y*|Bb45O`8}?X>InpKeD3=>-7sw$-U&U z9XflJJaU3|_$-*{tsQ2Hc^u7kR`8yheR|@lXyB-gp#KtSraK+zm+xMTwKb}4I5>%`ZEcGa`MWK zXUHAsr2Ga8wG9sA4BGzq%eRc4zs-?VpsXP?kEnmc?hay=7pJ?*I(=AlP`w0kpZTJd z04$Rz*?c8oB0C;a2lTI-&txNB`x4f)P{;MT%}wgHQU?q;E+vT?KYTAzAGfd19o#sv z)b+eIfIjU0s5KtHFVEO^g#@E2hvWpVcEEHicryOf59`V)l~Ltp#@l}sJC7(gH{$X{ zK^j%gC+)~o?noF0CB=(EK`LXbvaQFrRGH~C)P;$1@#d80#=p6*C2t+XpG{Nzn#MCg z_v%UM6CB(&M;q}mF&NZZX5cMk$~x}OnF0QD-zZ^jT3AS?&ue?qdw)L-c;)|@%aAnT zR3vrqWnBTMm>Wcge5H`}@3zq7Q0r2JoQ9e>oP-zwG27KAhT75QnOWc7+*YApYd!&j`U!#lSj<3kqdtohYpEkHiRx@yLO2 zqmQZJ{<#kQ*VdvUK`==8D&n1W`KHNaFARmaI7!1ka%3;xAw)%ty^6v1!LJ$6u#V-K zW~AD|2vDaAP+c_#LG6&=mcA_2QQr9{%gdisC%tzuo`I5VT zm?_|Hp7?lRXK~d;)c@zcJ+;0;tdx!OgA)1+IA5C;(@WIy`BXDg+t9=*_N8T+V zbTU^0wCl05d{`K{mQvU*$wiLQ{#w@1ftwAPXjGC0+o;6uk5DpxCr2l#y`nY|g!)Ue%JT*W0FPd)L-%VeWbMM}C+73QR^ z04^ow(=-IH(@V<=f6TM5&uZ)(GZp*))$hu)$S;aA7^tMEZ{EDYkOfJqym6 zYq*M1cC}Ad7w+GSBh!Rn|NpN@d{?o}V;Ht4LM!DeJXU>2Lnz>71$~o>*Q_m`*3#FcZIw4)1c2zdUkjf2%FTQ=z3+Ix)lJ(*7GrPTh=PQRu7euNj z;79+fV3lM_y4YKkm!%Cby~gyH-EbG?sV3cccjz8qN2N$QpXpa-?*7*L{BT{B2x@fw z2q<&Jc|Z}y@KAlx1|T2+q5Wt?Ded7h=AKk=%fW#)$MdJJz`1|X$T93pg~->=4U8|9QvizVqB9Kp}8DktQ>%6zG^ECnKY zhRsY)J!^~0gkf#AA}K9jRhh_~yI*_phWL-;WM%wr>yk%Kbh^7=j6@pqU-=t^WMTS! znZ4OVpLA%WyIbLv?0BRPIcaC}Hmcvtk;+qz(l~(oEwSLVhAd4oL7?)8omWk7}aWJlL>>k2PuilCKn z=E0`U<^@Il0;Rd%3KVvN92frE(jUtXDwh&X&>c~j~s`mm%I7$i{lzl+V+7_tf}&$S;k;82fOpcqp?SvUSP#%lUrB@m)}Z_>2$a_EzWjT0J91eND} zHhJ9z)|Y{d9c#g2nJ$Yk*NSxH;7jA}Sh%N6D`|O6_}KmPNhrR&y5UvK^*EmhQgrWW zW~#h)BEyeVQRJo7q{s1up1_=zVuEaw=V58_m+r=(cmEwt0&O!Yt}B=^;+bBdr=K+o zLg|yI*g2Gu4#3077Z|d_B#TR1Q%@ZF^2#equICMU&}7sPmJgBB{TWE=kwiK)oYz*d ze&ZS9hhKpWh8_uj5hPv3=vHMXLa zE6l#rUV1taG5(L4{{2Z?*l&EdlAkXs55ancF?*1*Ijgz4^k0ydT0P23 ze0!GmX=xLh)z{up)!hN~UmFsf3nuvAQp86*Tdc!<+EH$UGt7O*`x;QYEdWh#?x~;E z2DW9@<;&M+3}(-6CgKpl^Pt9Iy>f@ohufp4aGnpjHJV+C-{sFH+OCQTtBR`{0 z*scG{d8O9uA|lOD6+I;C*CF>kt>=m1>_1GK4Vu?{LW{+wuk(knX4P#YJ7Cjr@!xpS zwx(z4i}tEzYov}POxb&-Vv;S`5uO8eIXUO@dK*q+T@%qZ5MN#%EbL3Rq-sGFe5kI8 z^X9vnvKjF4mcN7Zp|y}j!;5(SuD(K!W6JFMN?@kE=v7EV_jLu|ecEE?xPaYEQj6io zXRzt*FpFjK<={s--4#L{0i!3?3(x1)m*c07;1-Ck!lWEgl13)@b)*f*STWe*AB+Ob z=J?wTLesPoQBsYALHKl|%m8DIN0xxz^pbKA3(28KuHS>jqGj_0SH-!&3$vtJy=b>MZ^2!^&*Pyk3g)hfNz}| z^YCOwlvxN=!J6G~*C`!k8gB#0W5?EK9T_|kVnRO{;n||a4YKa$(wwaFe74>^ADv-H z6F!tJ;M+^5)i-l?`e}kooK$?1CHcaPF)@_&NNZ5qHqZ?wa1(Htjp(Yjdv&GyZ0M0{ z(BU?qZz_shE{01D7xbag|&0t4+r|^V&e2e@}R|< zIq%tYc?zbpl91?rXuDCkLV=k(BB_3A32W}WlkGxY)o2D~q`FKgDt)=JmWK`W{LQ3e)#Yl!H}!?!31>oL!Dxo8fkxyXj7KX0?C2+^sb zgxpL^8MBEoS1@d3$)KdaHh2LIy1lZ`e?JkP<0c{xfJY8{yM*00S99D=)Y%j$Z}oq# zBCC+Wc|@3LhTjru|6ROxWnBuv5pVq>b5ruQcQ4&C$4kRL5~y+`UO6Rh5P2C>VjZis zJc11Ym5{32nJ(>1Q)g4()jY+u2S&TEiy!Aob=yQM0bJh}CO@=y_50%T9$MSyWOAz@ zEPIK&Vh;uD^B#~Elgw>0{GJHG3S|gI-{^o($a^_vN4tqOAs1~45e>20TUvYf*V1s3 zmZR8~HOLKv6uXoEzj4|)@kSSKE&Hl%qlAOWzC6L9RUw*4F_d>xweHPhj&3E_9E&Zb2m!cr5zsW`YQi%@vmg)L1b9gk z;HdsYrVYcDjr)C}(~b$vCDMnwhy(J~8Gx-FCqEfFgcvF0s~Ga1MsXyas~|gsY1nY-C4O7F;-3MrC3>bLoI*!U zlpdAHf6hV{0KL)=Xct1|Fi7e993+VH=FOx#rqD# z$B-uk&qr&h2e&P|{ky~&UCimZ>kBN@SquB?e$eCmle8GXXs}GM4=0E5K&tqrL`KZT zDFm41q7m<{B6RZ_)z;dtp?7GJ_zmxIoVWOW_lJd!)kz(5`ZU@mz39X?<@1>|{j#xD z_m5760BcizB5bX+TF6xw0+h_BFUA%IlzhyEF>fe!8-}i-Y2u$PMu+60bm04sPQaN> zEmuVAzUNdXUaTtTu5bzFeoq7KRcq^tpcTc(?n%tP7Nblk^CdW(xT7mI6{_nw`Ag{C zV0GV?t+ur31t$e_#O;lWWlaS!9rz69timvTK2TYieHFE(v4tTha10K0`SX;%q~ zB|Tp~UKAf2o4m3i(vCitm$cYSzo6Gg zpDnI{T0TU+%626k~kZaFt9vJbwD zZFri7kd!lg8F8Q|5TC&snF!YadZv;2j(2G=~vI-KzuEzU48a?--ag&^o?m z62?74WR}PpKO}jyYb2yo32y0CVj!Y%NeqxF2l2A6;3@AxX44h|iX{mx zDnofwRTUJ5AG+e=7YrPIO_$vbcV>iy{J5zFq~{}Xd~Wr%-Qe8YIwJO|-Nb z>72}gJoU4e4&pf|37{vtA`G4Ph3ja=67)(8hrF%0{=$p8M_*>+cm;7Zmz;Nzwm#=^Ovl4sz&+frxSZ>e4ny0}bP#M@uZTY$Eb_mv#wojIC0TV+wlL{n3|?ZT zSfsmaJQp423>#t|Qp9`~pQ&(TMO>?3LTL$gL`;3XzjDN zlQCmwpkJr&R7yMu)-4H`+r>K2IuTDmo@aevd9^6C=-pGx@97+xo{Bfpm7=Y_o+)MN z%S*HJ`=$U~vh?|aZU{2*D)+GSa3}M3cFno@VX0x={YhE(+PSuIW}Ibv1DUxTifS*q zeFH*pjz9y!LsD|P*5D$Gtl@bwlb}|DmPjrym$ipgD>TyPus7$UK$Xw0Y~q^y&WUaQ zD^|KtZ6+yZp$PKs$U3NrgLY8iVTwKvsUPJYSc z&Z|+NTAU2?h<1vu-A&HI^ZnU*+JE}yWU0d8?L?j8YvJ5dhN8W%3`4lJ zhGn-8Z1I9^j{!dr9GHay*T>}b+2Bbm*wW&Ad3+t9F0$`ItsMvSHu^Qim(~WCG5qk` zsc!-4DtDhAUwjkJAb~iyaTF}(TrjBf^m(i%yuo~FnNy!dsHq9#fK-1Y!pyAUeJUzB zoBYKO1XV-l)lQ%MVa=t(ot{`@HM37RwBP3l&ETM|zj6(QM$k5#pr>eYZIqi@-k)q{ z0oGc2)N95HiqHfS$?A$f0J+E#^93=D5+(V_cgMm2f*s&__UVWBm)D7u8!y>ma+;_= zdoAuP@(GHDo+vQ>Xta)?X^1D!r*z7i`K7CZnl)20J*5t<=%NMB?WKI{|F^o}g&57| zOxR^Dh{GG7{iN>6949)Ai#@a~7}0YQd-I{&v(@b*>)u4BM$FH;I-7EZy&{tyKtw7y z2_o%nLc7uu*6)JvQ|y!M7L&8 z^1JKuiON=|6+PbqfQc=mN}zVH)^c?%-#g)5N;DQ*(^_Jl5;wmu>cu0*MRxRbry~7gCF4C_f*7lYyH*-+#Kwn+5HxE3*4DD$9Wi+q8MCLCi#Ym-NfIpu3B|(QaBF=B zKq(Z3c4?q(4&bM#9N0vp?Uj5&F}}Z9-%TFX8@2VYNXG8GHa@&M|7;1_?2*kB$xNGm z_|S@eOmK}3KmITDdP5Km8P4RlP>Cg&;@|rmm9ckqC8nkq~V+tDaX zx=a8zGr8hX;wz#Neip12S}Mdi8Vu6=&dC<>?OxKj)x96@ zF##=_VxndqW0LLDQU^7lsdByQ=0~&|S1rety>f7O%ePFv`cmb-`npVgN%j&Sm^@!f z*|by?=lKe>Iqc-EAX~BdaQfe)0U;s5@2mI2vs}kG*XV$E%W}t5@u#be9iEiSygO|i zvAA5vB$_jCDo(!d!sRBHP7Y+}J4jri>dd0D32&xb8W3u*8vjK577jPD!nv{&D_2`P zPLL|8$K?2VQnK5gBtCe&_Am&lu7&N>s~*acHOl?X&Q8u&rSGo3)R-lUg4V&j{+*;U z3zzl`|6Cm1J^wBt|13{!a2bq6Ts>*86^hjCaQDmMPng4{z4nTV?o0@aYrM5~ST4j1 z-3j(U?M32Ak~LvX*+a z*-+fU%WmL?T~~Lc=1GnnGyP>5OcI{UN0Nv{&2m7XR8>eq+E_V6keVREq_H5)b%>js zCfyyw!6MLfQet+BJZ`fg)j{KkP&FzGiovQu0PtJ-LIND|-fuFo=5q#WEm zbQS9$96a~tlPIa5Wc6|j+}Y|K8l;yRYOhkm#PdZmrT{S#mUF|;D>}RU5^!RLElvRm zvj74=BK}pgmtv`_%1k5CX~{;RlVDdMAwj+!P%qcB1bW~P1pZ1t)F`Kk10!Jr0kU8bFJ zwA1Ie?E_F*EzvRAD{lf)%*RTq0qTXo7qj2at~IO&!6c>`5E2>e7s$SK~T7<(RRLAflNVz zAzfM!xk!;j{GDgF6{`yz8?{TOLAC4NU4?aR*Vr;MY`9f~ZFpr-(%SWt0v}NG#|h;@ z*^cV8e{-AZuul+_j@=saE?72XhCs6NvEcWtuFy+4BLjFQC`{rG{F;9~TE*b5R2yDz zP9n)gS0)6^%j=EGX#0zbFGX4&TmkiyY7L%8z7rbAS(M_%`-JQXV6j3sGf@s!s}*Pu z9Pm~Yu!Ped;kIW%O#fKqo;U^;?l$=6^}g1u+Y;l8&8@=z#nu_lP#~PU$+{pJT~f?izSRpxc^e0FolDiJ(ae z+oKRgo-#vK6AFZp$qO2SI8SPpFcz!85I9eC@QptkMDVi`eXYuOtJA>pOsz^WEBGS` z%=t(?Zqre18wTQo%(l4NRb1%cYFu=weqbVYV2frDa@Xz;QOr133UHPi)-4Ibs;R-8 z*c71?fgr_pnae?d-o}>x+HU=6ju+55wo>Otp2LwQa=WN4(QYIwu-?fcAoJs|>{vx> zosHllaCUO@67MP|JDHV|1Eu{z4L?~OnjP6njG2@>wvO;rvIC6^vL5xPFe;YcD0K%* zQ5p+Zw()O08K{#2uT2t>19A_m73?f;WVc1S^rFuf-(3F@8rXt2KpXdGUzLv%lrf=G z>rN!b`5hg7Lul6hvDayBfV#z!GEk50BT)`+Y3ur_KAxSiMcx?MpPBv(+a3OA4Kqg! z8yCEzGKqz&F2AOF9}Ok<1`vI(_#mpuKs5Rma)GiIO1>4>chq)|M~iwj#%|YHzaMkP zGE6_N)q)tXb((%Rc{=}rBh)<7*o_P!^F{ImLW2aQf^K@{eq9Fgkw?C7!HnOwdt3&- zM7MSsgfpA(*_C297u|_Sc3Zm(C8*Ul-;yUwozB+XQx*i;yOHMMvR?|0W4l}tu9avB)OcrVk(#d$saTnZjn4pMtiuq$Pt`b~f1{D5tpAs?HDG zbfZDnO2)pDjl!>FGD!R&MfPZnx^VtF7n+JWRy*MSmlP;oPna@aETC=qpt3csMV7hn^C}bxAw<6K#FLfQ`DDL(yt8YZ+0LaU zeVCfe{w-;Jo>fA}0dhfUU@c)uif&}Dzt!}-9|t0SoP)ePQ;!&8NxqnXG3pY=*g z{E67AB=Dz5UwhUgLsHegmPmA&?tdw%cdH-+xBctWu?{BWsZ_S1brb22tf_`vYTeha0Hjb4r3#+vy(CE_?&1j-;!{bH-v*V$2HO-m_D~AUWaTVIU zwe|xo(P#U_M{K{gVy`IdOVa?YT9hc;eJvLABjFY#j2+W4rCHMh{qzHxuAfHC!9um} zzZPm-4oe1pE?HtJRWaaOb+|Z*Wb*SFNZB{ssC;1#|3r!FZvq!*G%nrt`I!wl&`}C?7VZvJ6aeDV5qLukl(X596_tv-I?G2X|W*SVY#F)cehZS#Wq`GuHfFlmiQ}+rc(It zJ$mW|cA9LsrMLj$;!kw-Zxrcrz$u1TOA6+u8S0*NW;6xg(X`dVBn==k@R5RSEQ6rx zNuez!LFjKYXWNOwtIcC40JO;ycqU!AIJxw}wxzm`%X>g4wNPC@zVs|&K0|G84Lglz zEi7lz4JdqekN`99XWoxT-6q+hNv2pUBvo8)>i25NtXR}sZxW4 zP5)xdMs^2YwtrJttg1J0mm3Hn%ilYtt=6*CE`7D%X-Sc@^PSEE)VKfUr*R zw0drFScA^UT?1@hR?r_MZq6@0qHiXrF@G?mQy@FE$els>Y~&?BxsQVkR)m;$lXMM# zFyQA?<%F`BW*r+t2Me{|vUnIRoqXlR1-r<&S6-iF?zQ4L>J*$!zD+#*UH!zIwF`xeNYP<6)4VLX6J&mVBrODk#?&(_0!Ra;5nsj9uNoA z+I`pJ`ZBI^nEzKsraoSPM3g#kDy20^k9Iz;c82XtgQ<|cw>)DWNk#@(M!IY=sP)aK zhICc}VXDE-?_jO{dte|1nYMMyyQhIz)+#TB2;g$MN>@9f9&*t^Qk)W4(Z4lLBoa1S zb0P}eAl^7|Ozh6YVy)$+)YAfxM5iGmz!#Al2+Z#NsIyz8)`e!;o)5UyKqLSDAw#h> z%%zu4df-vFJNl!Vu{3Ys#KTk-8T&`MOz(_pNpOeN$A7gbC}MjQx^Okz?z)sZr;CE9 z3`khg`aRNnZ{?aYyOy^)7KRk0hL}!cy5Zz%qtgQuy{r4}p?+?LWxXDA^>NNd2-mH8!FQho6>=u250K z7-hOq4Z^sevPHsCMrKC9zas5hh_u*^2IbI!he9PqjdziCN7JRXx@u16n6cc-C2M85 zK7V|6|61vIY}j?6CJwvGJ`?;trRJZz+M@7X8eFhh@U|EFF*##U%mw7R=Q8<}Nt&t0cANINI%~$2eTJ_YhDZnq`><`W|%JZPqo0$M&imRKchE zWXC)f{}M$iG)ziOh#(;Y4IIIX=6Sba!4jj%Hf{@jfD)P@=!dUz*yzuHLk` z^u1>-w6oiZP+Z)oH~Oh-Z(cSjl%eC^p>gq~!X-+kn=vDC$(C=|bD`$OaBK;3RXWMG z$`uq`Ic$QL?d=1twlNI2Pbkzg2J336_+k)_eL1*hv%(bX1%F3sZ=&aIH2Q?b4R_%V zO-5G&rt^VD_-7~B^)Zg8(>&u_d+8GnbmoIDfMcN~HXh~jsYIWqH53msE6`gWy7Wz0 zip=#7R`V1=B)MGY{^p8*P%1_06v)$1|;$CF{0tDa} zqELlL^Nl}|bl=z&2%g*IFH3abNb^+L(#BYQc`s1#erLai ztJYT~1+BWoI6twT(A>4Q3k9S0_ZsQ&uoJ^$rH`d@-x9TBoLTaGYs#0zKH{_A;`(C| zp>Klzy`?k9!6E@F0V_?NUizB#HeJYL6S;P|LJdRh-r$mK;pRW>es-x(7`7Um`>m=< zhuOCZYnZV#2`X|rcBHEop3*}>C#^OKLiGD(&2Z&q8`^FxrvRBvZitemSV%g%xbyxn z^>Bdg;k&TVBsBw^r&niB5Fz=*N{-92Y;=kh6TKemdpl(T?W4cnnX$W?8Oc1Fp0pF3 z&8s#*8{@yfOD+SXaeFc--fgz|Vn(0%k>c4VU8uo;Vnr+e3js83HlsEJ$Cz9bBVi_g3S;Sy@#8J=;SkvW11jVEAyX;7p} zw?&!t{eXw|`sqa##n%CUE^RbObJn3$XLf&#ZgN?jy|p2s72$!i4A2vl^@rF?UYmcw z%d}+?(~B0%VWhBb7AI9 zVFa0&76i=<7XbLg>KgUxDa3)Sp@~6(FiY?){N9OB`!b}G8rjEBiR0@Rmw50>;WY;!l1V=uY(ZuTQsj)Ayy}Le+jz*}leT1zuAo*S<|GXx0&h)05wJ`h~4B8Q`}bgp3ApgPv>Lx0l#ap_Ph@gc=eWHW2hN>;jQw zqsp;@RHE}cSoM#{OLochCQ^-nl1)6t38Qx}91M zA0h+)NSg9|N&4E-^daj4EwGr?(}Ht&bNU~|3)-XcBJR28lH{mSvDDznESv|2OQR(Y zx=9{Ig<7xtCFpU9eAz!Us$}}IR9cvN-dvL`S_!*AwCINgMIqmrJ(j$~J&JetLXa+d zC|ern#(@694qR}{HnGpj=zxQ(5eN)Qt@i5z$)(JF;QG`K+;4zTGjI;77g5TtgMca}7p>r`r~70ACa>kp-~W zZRE{Se@$d0zOMsiPB@ZtT&WZbf~?Kj!zz!9rwy%yjn$mA8JJUr$giWI3Sr7KI|dQz z8d01lrT!bL?=Ei3O{Dr&Pz&@Y#3=HkYReubk0$1|Db1ye*wZVGxoMf>Q7`fmbXT?gS|q5lYzQH>X>gBPiih7smPb zG9S?X#L7qRv~g$IG;P=?n*uHS8&S~fXR$y5Xm^GW56#X=H>*e5QpOZ-LtIh9%KF5mOPRk#9G?ZlP z1k^sY`AmW~>Gv+-s^y3WHt72o$8W(`zh_x|yw~sxSdL>`s6scQ8OAYc|Eye(Noez! zS}`9GYO><{RqNRyqVE2^Gs7`$q5`&f(a`oZ z=TwNtd=1jhdkLl zwiB;&^=z;la%~5h4x>m5xpSNNgdw-(S*_3trZ{G(TMCM;1^p2*nwtu4Bl_~yopeB`D;ZH{(f-9FhRN;eyr(%HR4@U^oj?Z zS@l<2HdM^N%C_v>=~)`F!(>>js--54tRu2j>WQk4;9o~}6Pr+)*P_b)~c3kMukn_af#^{@(_6zLTydFybA*$QG-jk zq}Gl2K{odXt~w3*!+hdN`M&Pi=6MhY<?_~M1~imko0lFg5EVJzsnaTRq7 z)72SAey)#PD@u1EPw2^4Z>s9yJcL1tGf|Dh)zU)cd1M@TgI$J1B-aaXdoPV0N$1et zqE>8XztnF9y^v)H8jReLqMIG4r@Kh{AL1C?6}ES=5tnusgbt=+hmW`u?}__7K!OeI zWX4D-u|WU4!yhP~?^_AsY5l*5V*BG1b$K!rT%|8GDf^QG?&Fu@^g|Yn;+Hv076=oX!#e1;?(>jzH7D%t7N<7%77nEVoX*==16~Z5)Yk~j@KUZIm95a zhpe#43B1^4;=69rI_E`&S zvx@r?4oo_g0u|KwUrTq2-^7~;dduN_l|K7UjcpS6#XWk|os}Fu9kL)v=EmUV#5Ukt z5ac1Q#8$kPZRvbBuSnU#hm2e}zMW4?CTa8`c7AXivBz#K$=?`!7@=8B%RXl15YWm8 z)N|}lDWTKmZPHb~q_sM3=ZmOF2?|aA${x)eorw0U#wbuM8z8|3r~Dvm5*%Qa+&Up> zLWwO|<#^Utc9pa^T9Gxi*4#fMzQZU;2y|@2rW2|hR<2QuqG@{eC4wMPTLdllUDM_%(2=cyxOSg$deGbB6K=4nNSyJjnh`;;H{qhU5m&rpQ*pLCFY z#fi5qfjp488h3mSu!`ugaOoaZSckIT>h??i8X6I&W2RqG>Zm91&6wU`Eo12MFd)vbnj zCf6H+D#$|J=hZ&%kFG<;(J;jzdR*8g^Ac2Na1(XTq&W1Wn85`0rjppt=c&@u=_V50 za`0AA)e&p?Z=)8u(;pr95}8_RaJYnLsE>uqtrw1L86Pe6xW1h2Fh{3XPOP ziqkTQW=SfF1nlep_b&2kGy!S&ybob+YSgYAa2`QNF`nj=?h9&kfhsYPUE9&3XELr1 z3GBE|Ev{=Z5UVM1xIb{R82u7(XV~71VVuZAu@jxDd0jLg1R!e>`>8E$YfB_JoH6?3$rIKo8Dp&C?)Qsw-u+_4;6?b`cJOr-1!jGQJkK|I~y;6k6hj@7G&C3HT}>{|+kL$KiTI+F<|5FgtC zgkfcFIIc`C%W1gxnys3HO}!gzxNB`jhq}#(THg|Snw2AxtfX&=mBK5D!+{O2G*C?G zi&b)SJA~Men49+EddID0Hu=xQtv<-OpK@Q2txodgdYLvaq6--muM6%@&wr5z2PAc<%!y{007vY>>4n$SI4NlHfF(6_6;k zvwzQbtpHt~H_Tx=zI*h#QKWlrF#iTOFvAJ4#kKcZmzk~{y>pZn%TOj4o z+48C{J4CGLG&IbR!XVe~+HROzFmY_SRqkYNaZy^`Dc_!PM`C;{i`>h8O(4r2P|41k?uwUT9LsXbOJejCQE=lClw#;x zCJu>1cBJk3;-xsN9w~(D`ecbEkEQz1HDsb_N|`>d7Etoxk|yfZZ0W5oeZmZ)Hg)u% z+=9jngN6K|vcUo&u^`CHU)?~J<_ki}UEK7)?yuWv6M}4Hug2w+X*-A8|5-tiwDru` z#MrQ9KOZ#P(|gHIWO}huY}wb&O9#}<_XpI_$37niQw|I~&DGoLSt|*hHqI33FI`NG zcVa!AIN#41`j>oMDek8a>Yljg-EFR2n}Qd=(^+FcAyjLXc+Z?fz$0~}>0MhY$IptO zQySOX(=3T3KH+r4mZG)_D|FO<)%70>#o>pAdEp}ura^;JDH3W59Af&Oy;J=re2nIm z4~zazOTLh^X5$@d^QgX*1;L9UFh!c17y);>aIf5Sxw-6jN%;2Z?vJKsbCrY@vFhky zl0gIdR~kbFtevA*v`f-l(^17%CUn@5Hr=4oueBOd zU87mTw|AQRcet5zRT`*^ycHhNeQ1;1_%>k2Y`3VEp~Vrj1Hc3txPlyKNHa)NZd2Qn zwarjmQ&z{2D8Pd%7GJCi5KW;#2yKEiS_Q!0B9;Y(DBz=fSibC$%OdeWf#Lnw0>tcE^h=^uFkfDHk*VoF}bX zRU&+}3~s`KtexRRhRovuIiO3f>2fDvUR_h)TvN{p5xB{a5Pdix(!5MM{S?g|`w&iN zMI#-z{Oh=lfnW>y7cEM9IQ-twW#eE-J+FKZOO#~wJC7O)G7X)(H07%U!^bJMwr!J^ z!zsDL&1m*|k*6ma!j<*U9%Za~&-n+9Qcgv8aYkK;z(l=`&6frOS{=sAwHSc875C)v zvz06vMnduDMOL9|m^@|~37QvVNUF6!a=-IpYO$;^B44i*_&}}IL7g8?p_d3&I?4TU z@h6f^dQ$|RNZ`{C<%-N5Oso&kkBPN2BaQI`L8Bq}7pF}OQslRY&>;rv)kd&&!VfpF z6@@7i*(qG}O?`Z^eBVbz`|pD~Q5?u?XG_>PZtr>V!EDJ-QZ(AK8N$mD5)JNf!^^3)&77{?U z&N4HM+ZmDG-u5uVlr!DHMcqfIg~)>y2BN|JIzIboN>O<4zXr@B_t%fc)G3mozejZEPykp79;)z zEV5|p{U#h5>L zv4raL*yGq*Y+3O<=N<~ZY3^)opSCTJo9FQ^xRvx7f^mc}nv|3AW0%m^ysSGUYVs`^ z6LvvbFG*2$f)5x%eQu5kzvhahLj#g0_Lu&MhAiD*fsx%vB)@4xfSGcl7ejHbDN>cH zwd$zbh6NnLf63J-v+S5{$-Ur)=riSy({?p!nP{{r5!YpV|=f*2aJK0E*~Zu_fVQd41Lw%iSo7eGa8A z+h#?&fxVoD%?ak3w*Kd|KcqvCEpQU4?xhP+1hoTHXGCI_@J1cPTd1r#PNxY451x)f zm3PUpV~KIyqOTFHldflf^MglW4%{egH!|Y*o$XFow}9rYu_|Hc>228n%(t5h{+~Q? zx^LHCU2g6=>XL&PGBMzIee%bKj!!KlyW!van~&ZiQwC+A zB69Pv)P+KUi2qlC7~CP7jp?Z`06(7On1Ad{?k)$#NU+)vs!5*>_Mj5VJ4*5>&T~KD zb&6d9sru!}!9q$~BQ%SBrUYqDy248Qz|Sao@=;2C-iKZG9~0{Ff)Ol@1fcz}QrA6q z*K4$)&E03o5f^RW9sHIAL{q$Y5@*fxPG`;>^xKU=s|HV46=J*`&wpvs|&GBXI>Xp=(qpHXH z{<%l0M-~WuS6J8(+={@HM4kWezB8PKpNUn}0YrY?9Y|WC|M_~~DtO-x|I6xaw!EID zBuz%n(vZC8);5Sv@*S1MZp?W^*1FH}8w)%4XAUML0>DMA>25)^5c*NyKSjx`Bz&eA zc90-IQvRb^Y~Ln}KVl-^3@wEUP6#nD9m`X!CqcG^%;x6T-8+}YLI z%$4-)NC~;)>XV#?$zrJ{7grL0xK(0XqI`IvPH; zLqe8WLIT4%E(oX9yc>NZdDj0w#N!KkCu>Es(M~i8%~L8*PaeG$G9dnP0iF9LqMM#c z=_Eru>C%%#N-Xs+O2^t`^nec>>g|@#{=fyCSTJen;mAfUIy8Y_JO}|8Aa28+9d=i)E@4_Wo%RuLD z0`w6{{wlgTd%v{?54BD&hld!$K_k3rGtI`$A9ey_To(qbMRUma&%#nYlEB~hJuQ^` z59jjX0HM}@kQAJgSR#-cJKb{^%v7aj-O@^;aNSH%K=ar#s`XiJ3&GU6qHN z*J!uP_4$dJ(?o*Pw^izVJ_CKC!+76GutTS?Ie7m)6Y1O>)tvlB+_U5!jk38l#O&Sf zks3J-r^4N3l)muL*d2NU>?OYpC=bV+WzGcfomtEX_0mrk7iH_oO=#PerD@5iVDgvP z>=2O4c3rq@D-KBBkMGc45p?fGPA;6J1!8*q77E8}*NqidT%OCl0-BEo#z<~4gHf&) z7ROtGo(Jbdo_b?wnoI?8#s$6h{5@PF#z7kGM2Qct>B}QLc_|DLwBA;l^E95;mQii( z7vHrjRM*bci$J>=`szzCW$H28cnta9ui)9713=1OnZ?%!4dD9RNo{#s@r3-eX4PyH zEZ9`OA94!SQU4)BbBAn;Q0sd)HY7#QR3c1}HvBS;V5~NVzc#lR3AX=X4Ejp&fvzO) z+sqga>A_4AK<*ocL?E+XL#FgV+bAS=e$g=C@;qeJ0y1K?%LA}X*=Mv>`dlAZXQd z%2ZE|Yx7hGHZ`_@80V-Tne9`659EWvsP`Xph-cHuItW5TeB{q$8t1(;d z4>exkbevmE^8vB^aB_$$ICjKV!LGU4QBw`6CCp3b>RCA+5!iHgC~l-~09*cQwI$9I z^JHoa(qvwhC0+FxIBr^JTphh$YEVx;H(gaYw@Q>!c(`;b!*v!&hCCQA7SpK4Ly~_% z)OC9E-sYzo*bk@O!GVA6ub!bS;@m$by=l_Sp{g>0=!T{NUEYrVb2WAia_?Z_NjJyZ zYFEY2Mk&7g4hFKVW9D>A^eSH*Kn?*4oJ@*Tcb{e9mMbi3)FiA?^0DNRi5mXX!RUjI z{abJ7;@ru>l8Np4fRw%~<3uxkCgX!3P;KC{_%ai86dC@SR2SMdzx=ap%A>xlcu~*O z)BC~fWwSl>zS{F;3m#0G=6R>dnF)QiJ zx9*|1@Z4G{{~y^b!5>6`pc`L=)gvNGzuPN4dFQ&Dk6)(5=i!ksXw(GRU9#s_S}T{g z=X1G>03LF<<6EZV{oN#pGYao+G=ODDcTQV;^tihu!={)Q*s|;={Cy^Z3w1w4;CqB= zzU{Q6I{*u1`dmcN@%@h=i;b%`xXU1EsxZHt_b`PKaBS@IY^Eo5zh*Mv3eSB5L+pwN zeRJL;b;vB{lDgmTO0n}bB^(SvmcYyE{EoPLC;vDU^aYYL4fvR;zWH>HQa+Z4>G)_N zUVyyW&Ltt0hCTjOfbx}lL^n18scPGJ=NHYs(n##euLdwLIlZmZS51DJqmQZw9C_lT0l z<}5(d3C@>vuTgORn)K4vRKe>YUK~BfQpY7Nt1tyUv&2PASNaQencN>11 zyV<6eyS~noJ-9MC<1aSG36!o&oZz)f89}~`z zC`4Jj!3cF-p zfj-!D7Kbdt`b)Ki2D9C00?wErQ!YIB_ijb=UtMHXzc5%(DKHVoa!w!Z+ZF<8ZOcYh?QCCPDgD@ zgPWoL-H28JAGGVGT(mLaX}D-QAqUgdP``sPv)w8PF-_sXWG0?UDv>4 zpPn_5W;*Sw;Quit06YXxsoXMI_P5yv`P{P|&?~k$ks>ohxuIUBCrq_jlY)oZCdY&R z{pMMT36w9t(O&rydik@QxvA(tdOd2wd4ty4y@5S$@F8H#9@#sCMCt1+E2XoJu2M{u z8iYX;WG_N?$pmtWGoWqzf`?o?_dcjvr6DkuK{;Co1*_D0^Vx@Q6YZJgnW zc$yBqWe4TpO z$FYS{Y*TWCd_5iSpsX2rptPF4v`Wx|ea{N3IkQ5CkpI z>tw9pvCD(-?O*&#B)KkmT=)D}2dB`ag)Zj0?%i*#rSJRi9?0v%+86UCfG6IQYeG|b zgXWwZz7Qz81f=7N?c$d8=F=bqBy6dPg5+4%ktM2J&hVxE&EqZD3A%!*1=%ynAOjeq zpt{AaaWBZd$McG%>;>IiFF+i;aq>``?!rmxqGBOVfZw?hAs%EqV{A$!it{&d?dn+M z{!dz|k5xNoey7N!DJ2Aici6D@Ar6|uKR>%cstJcWR6n#vnvO+EU$?(k%VI>n?mF$& ztTcCJ@2_)MJ$h8E9F&$Q585j!GzE$x4mMujjK8;yHp72QCi}*}w69K8O@7M@*BTww zHfJR03OKMUoENsuSQ#Kv!VjN5?@H(yYQAgG)>B*EJ7~S;gycEkHuv`8IF?xogx^2y zwXOXT<@Pfgl!<$cN%|!gKZY|VP=J(ZNQe~uTo}RHe`kJ9Jz?aR$<>iD#x-t=QxZtl zis%n-D_d%NEwYk^;MZ&s-v%5CqD=BXL1?nwv2X-X&3)-z7pbRfm{5hQLn5T;1bEcM z%L8Z#aHNFII~qv4EWrTb>38_;T?5ZJFAb3&8!@xmi0^{F*$7MnP%m--;CyEUIp@72Q&!X_AWpY zVMr6P;cz{%Y}V(P&Qm>4?FZFNvc%3tB=NR#g|Y!0)X38r6r(2aczI^<(ErknZwJ`- z&wm+yuaJYM`tLhDQ-IJ!cqk0*`bO!eeCvKE)%%b8y9h-RPR)+VHsb{h8Sn5Fu1i~| zH1pnhLQ;yvhO{(T_lty|N5ObG!|>{ScCgceFi|J4%t!O>{ZKd(kd!!bxu*udG`)Tl zZcNbGD?{3AFgOZQp2#c}^|2Ha{l(bA3(!i%pJkiMkfj{->!48`iwQ#x85{ZY8+prn zrM2A~+`4g$8VXa*=E--i`u^8>c}PcZG+(se&ZzMwHfmV@w<%>>nrG0EQpuh6dpa!x zEM6%EW>3hA<-LSp;KXXl$TFwK7M@v72V;O zJJk0O7T~rl6)nY|)ArasP6I0hCPv5*f=kx=!H)csa`O~kkO*@qyrtl9*r`-2tnj3c zKIVQF_%A6_J$IossGLK9CVVt6C9RWfjDW7z@5b9m$kMKF$r$$Jck>RK2|V%sIGw z($)DpBfxt|)+2r*VeMT{b|WgS8yv2~9P#*;5B&M6qeA8z`NBvK=3L8-UxpLTT`8<_ z#^3>WQ^V8;p&aueBJ+fQa12^5Aty=(n=eC{v6INqzA(UbOeJz`ukiq$M7R9)wvmIN zCv37r`UPSdcF`;Sm^3y&D%BVvUj5&6=yD-W z)ZINlB^2D=I)Grfy^KZQ0=;XmSX}+H$8UNd2)0rqH}Xwpx4Y(LO6a|pI8<+&23i; zIt}MI|8x2wTT)Dwy)qfIX+mTvQ@7rL+$?aZyP*f)%h%93VDuX%SQL;%ZThKF@prO_ z-oCfRUF4eI#Tz)D?R>Raj2m- zuT;42P?IQ{2|iv~-JzNjHU&+Jm7O$7HnX2E3Oj*3J%CCxo2XA~=GlA=IaAfh=HwR& z5yJ>6tRdOb(HoZ_$zn1!ElK}sTnNr}@&pWIKCMR96CuRI?i}^a#J|4CyMZZENJ~P$?g`RTdJ$ebTxA*b9~Fe7S&?4)Ju?P~b1o3^i>j6iWx*QugPu6MdBIP`BgIK2P*k1?78xI`-nm}K530ry zc0iVp29{;v5`YF*N#mdPTVKnQStgVdJwdqgc+?K)l}af@BC(k)5!Kjnw?-D<$qJG+ z8jSil**O#0{0Gk3#Maaw$iZS;aq@;Ct~a1v&F*CpG7KE$F~zVB(<4$?l&Usg`Q#e` zUvW69$G%ulDW8(Pe%%l+%f{CCG^D+leQLA1^b_w#PT1Mjo#}r}r#A?r;>^ zgOfK1(v^Ok9(OBNB#a?RQdOI0Qj(!Y$1#Sn9Z z8-%WN^NSc9Qgv}K-$2SlRE?bdI7;@D9{e{bYZY#S)MbS@;pZYhN-Nsy2+0D*;a;%n zf!Kw}@l6Ev=5C_>aE22VG}onuh#wuK;f)hI3aht_`tCvg+PPV69_7OLuO{HBB5S2k#up zF8x!j$2^{A9~9nchpun`5bGDjt{s;|pvq#djCeSA%jw;0^zTV&ry!zNgqZ+7gPmwc zVL3JLgHWk&%mRYquO%8YPc|0bzZA4p4XRj8?g*L*#m=FrtJo#5 z?^x+kHTb^ir+?G#Xfj28qO0sE@TrS%>fxo z9oi~j+48FiEeAV%qD@oK3*7eAp!DybC}TIwhW;+Bx*4Fwz)`|`!PSre2!UbELln`% z#2^P9q9{QK!iVj+L}_1*)A+Je+4wKVesovk-jXpnF>s(Czkc#o&|lzSfM46~l$b)L zDYc9ZU&c>iAsw9W37S2%a@;T}h>lO}X&u)%*pkYDESSS~Mid-d{eB>l+>AsOMG-5W zzEX0BUWgRZ=C811CKw3OfZi1cRYfxKrKQL*2^|yizpEr1Wh4Z}4xYjPThj@3pE77F z%%J+@1-;?d`%qE1H79cY?hxvUw?;I04;lS^#ahBok-R@CFq=*N*RN`ToYMX;qy@o^ znU7dvTF=U} zz4_R#D+h~MemrGPp05c}#$FB8=z0{3dX?aikbEl%W{#5JVT)jRV6S*=mTGj8<6328+MMPB)k)Nz<1S zMZtviIllp_!-UV>7bGnHiPJqdO9a8y(NfTr=z}LfM24p ztnm~YxIaxWRy%rRV*jbN5Le@@Ww@Q#nEZ9gkYmEg$A-PDYRv9?c}oBF33(*5E+WN$ zu#%+ivn?V<87}4(W>5UbI=*faauBYxk_grAuEW}!e^t%AE%Jy69v{BElJ#qQ&r@~{ z@=1i6b9EC%!kbVk$XHj&J%7`8%MyTNsW8s0k5H}!`0JX3wKg^1-#iepP!I4x{S z?jMWEn47W-jTx~{*tfFcUl{Z}Oe0$AKUb-t%w>UqoE$WHNQ^-~P)YiGY-`%WJ>hFaC{LMF9e>pUp>(XJ`2_T`){?G&A(oLrMXw<|Q9#4^NpLXM zUcQ=KEqS%!T9g9$%=A1jr%7YmN*_a1qC8znye`m;(}>y$6aA4~8i*!V6_U*tgGCxz zn($|Aj2N@-+J$mAXY1U2|2dI)-(Xn4(ZXBKyPT8S{^|x^xqI53e!LRW130A?yT{1W zQow$&Im`V2Z+*nC&~bU$a|zezDe$bA@eYe)40L*MjQb+pOdD6oJGC9Vh^-B7-pp$g zd^rOr4%8%}hm5pI303@GkwOh}x;p{B(u48>QwmO44cZ(7CRFjJ01$Ay+?=mEbU#nP z#KA+5(b1*qzJ~6|GQKWEzzSy?@W`vm9>Mm0lC~{P+CoFf@`|qxSw&G+Qt5w9J^1&?V1>p>Va;N(CeCNG`=r%ix!Hc;kO?~$~lMd3B zPD@KzbeB7`eTiWvkfhi@StTsL_hDsK+SDY<57#_-=Y<4B(Sk@Zd_nO;NY_&0_S-Yv zEn{`=9YpHejh-@%Hc}dOPbuxKe;v=!C8FiGKf`j!E=7(Y)0v<2V(EZMV+z!|zIU#< z-c(%%RpVdm-r`p0U-L(QTNck;nR{-%Z4JqV-BH^@jy@Xegf&?NxtnShl5-8?8_c9c ziBOQDRtKheFhqowzQ>9P9hI!QI(s=wOF%;o@pm>=LuG*jD%eKYaI#c6Pay5W#%=$h z`*8@hUH+#24+pYHGo8V#<)iDx4=U2JU_#PB^4N5RjQ?03+7jUp*|xJR|CZjv0MA3G~%s}f(6O;R0M^Z;1;ZEB6J5NIi7eV&8=Pz}b|`sN?`pOg3o*8)A0DPZEy3s*xF z16NPs#8@>Ms!gfDc(=b6;8|8q^p7FQXP2XK_gV2eRO_nVVk4p>@4N|l_-;p{^C!9{wCly{57N}4E; z8@S9(C2j6fJj9={-QjMek}%jqg|}6`S+;m*BZxV40pH|rZhKgixY8ud&yr-+(`I?~ z<KM?vEImy4eY0*z&FybCRy3)_ z_iCy5YNJmP9ISL5vKEgP*`|J88%&<)&p^ipZbj4e0zMmO!ndtYcNd|Kb=Xfxc#q}OlrIB5UWSHKIZMcZz@Ug1BdTW)sHO0i#i@zsYE@+W>zRTy zSmWxcAIj2yIR0k(Jtn;6gwNt;Cf0j*#+z7!`zD1#dIHBlL4g>b;HLrE9;~;_iq<>? zOL^xpldVdGkrP6fmsHBO zVc4L9q&iUv(nh0ds2Fgg(nT<5JstH%+xSCr2Au1F_+Jfw%L)3kfmXO0vT>TN+isox z*Xegj4za|wW!`)ipADytj5a09_@T#h69zKO(CV@m32syj>&M~hzF$XN`7hE_Pj?n^ zS(bU>0z{qmTew`o7*efis`JC>(w@Q2DDRi%!YV=qo%@{gyDYZdXygI@^lurM;gcKy zAxgD;BJH2co64)gOP>Nrl~WnIELLEn7rmIC((7EIsJz9M@AU357{u=goUWB0svIm#KQ^Xm~$?{@Ukf<>}(a`juT%h8a(9 z_FZ(i0bUij2^hlvz~nbL?=B~-n2d;%`&5^9Ip!7|Hko2{($pgzE6udF9VTa0eByjwYTpjzhNzSrs5Q zD7U6ye_kP>hCMA!oIbQRAftN%7E|~W!2&kWRp1K94HRvUD24g6p#zS{9jR(Z94I!r z8RF{E;XM%XAv#>g;>#DC2LhSz3mgcwS%axfzs1 z+dgVU@Z`i<68IAmaB6C?(O_5rzIA_K{>=TUOEA(zN_DDPCr6nZySPQ3y2*!x0Oj1a z1wT|Hu!%rDJ+^|%<4{gb55vmZu}hcb|1gBzk5 z*_`Z||0sBSi!SV_y*z}P2N0SslwX~EK4DZj*O0I0)a-vd72{%5TYdU})$ zFl0u$i~n<~p-k6vY{}gJk|dkiDo3VKCie$EytbZ`Tn_lw>%l%DGk3>#6t-XR8?Q_n zvnQxBNdJ)qJ_I^%x+_qa=}#Ea4!o&(u;@?ow%xvoRfLsO=5FDj)=X{bid@xcHY_O0bYA(+4s=QTL_1GtwFKV-%Pvr}?9M zCR7Khi9Ztf{-x0(R%I4lKAwv;AQrHco=E||0BAa@XIA-|;6C$`a`+BnX{67*B=oni z8WkRD{pcRy!cN(rkpUlf_^ph@H7QS1`Quz(wY`@;6#>^^oIe0exWnsqd?X5%n2@h{ zz1RuFz&Oti8ifwTl3;WFdIGuY&NbF3lkRm4BLAB|ScNoxSB_}%>#~HahWn$Qru+oa za{?G}$t(tcFr?KHwXj<6n%C*60Z;g3Gvv|xDMLNZZR_p;+r}yh8r}oyC-v3|$ zV}N2b&v{AOV;$ZwzuZ|D^!u4cil^P)r6=ZvO+oeGdEmprDnF~BCKzHiS*U+ABxq6)c9FZ<2rH2tZTh1hUA2$CpR1M{F-+J)8Mm6$%Bx(Q3 zmk@@o1t_W&_2Rycl@=#7F8Gl6%c%9->UqPU`we`kb-|ggjqo+vdaR^cUl0O{FC6mK z9-bck30abZYZVT(;Ju;;%H@Zk&MQ(cI!IE&_oTloT|qeH7w1uRh^|dboxjNYAFhV~ z%jx;ah;BiEM}alr8vKx5C(*O`gyDObHxUxcs}sP;=J5tBe-Qo<2y!3v$XSh1utJ8; zRbn<5xp+hPFN$88jI3F6+R%*;8@JT!x1uRU$XP8+II$s`uVd<#n4*8%iCV8=sG_}d z(ruf2j4<^-%uE~l|2*WoF!c=x;HGEIQhYNKgrhl%J49!O+}`L(V8HXBX^lu}n6ui8 z#Y+IM(fV6-2on3;4`MlIG(h)`u!RJ~}9*3NU|Q_MwX z8MLk+dYWd{pb~PptnrDGb<{0O#Zj!k+jG9H`%LS5T`U)^A!TZLVl`H&VHekIEG!Rs{D4=j7}&P5RVh}sJ4P9p86YI;^`@&zBTbwL`cPdlfk7n zpbK3s{OQY$FzP}=q*grV4l|uXZS8j$MKeU$2Auz5FV{A@@CuBZF~zu5=tT(|Za0ol z>929CG_yfyYDebI#a2ti5o~sfYL|zAQYoB>M`}QZW?No(cAZ{mwQPXc0FG=A#GjB) zY^@c!s}oM&Yu~4KEih1d)~;s@8!B_fL&USp>|MEqBaG-x8|3;kenL{vhwQ?$^Tlrc zqi}~?(@@c~RTUu5(Z-$r(npm-FX(&Fp22){sArG8f*L+vrf;7hS?;(jM2f`l?0_Qc z`SQOfvhy~2oR?(rUo3m^a7A z<)s*Pc-{&HiTV1dKdjvq8{z*|t2;1%jQg{kRcsZP9ZR6TZ zxwN&Ry-Xy!tHBqH-MNNHB`=~F&*n7km5yNXG7nb6i!P zjEE4skb24fbaCSF-$waJLFxgjBQfNx3-%1sv43k=J})CgYaQF~ zH>v-Ti3y5Zuzqi)hIdu?275)t5?2GNG5rrl`UZ&X9$zcyjJ!wa8Vcehk?-a5^V4fy z7K~X7^9=L}`UkXxO}6f}T5gg5?Ku3zfM?-s2EC4X=$EL@(^+nR%J zU@R3FjnXrBkF#Vth zi~B|4+NjCF`Gc-t3H^qf1Wej)n4#ztadeN861jP)>3BlDf|^2T9$uKJ?efdcflp*w z!{h|F{csUH`*{vS#D$oM6!iU7c68RZ<=9YPow_Z?Uoxx*Q_@JvLwo)N*GG>mSCXEm zM4tiQ%*zgekMY>A8#Nu|<8Z*P`d3XILWW*5Mh*nSwrMhnUWAK=hg`6e06;-P3g@c5 z+UjaZ2br|odgfAp9h|a%U$rD)$Qgd849@m0bk5XL z;2g;*4vuDX^Nb%NYbgka_?cCK)gtp;DrUCGk=?<>KVv;auH}T(c|wgY2jnd6F7QMA zUvQuYpL*8gsNXQ;pAI%pBeB^c)R(><*^aCC2ZdX7Y$9iRS{J5R7>zE`0>#=U2WjbvgzMP=`leynlDO zLL#kppCZTTy`Of}%5iOE_$03+s$i$<=wF|pYIU~suUK~Lmf#*|EyVyvIBI>>N$QgqIowOiYi8fo(Gaed?l3_ndJO%a;rya z#g>CckvC>}L``da`p_Kh7erQmU>K`8Y`3S&i0WaEp7(i;E|xP=S)4Ed4ML61CsFbE zpsh@589In@8e9Z{#MOo+IhPSMd>uMKmWHydZy~+bPueH04nH}q9|>m>E?m;7kHLcr zfyP&ju?6vUX1iZa{zV~*|0WHOvC-(9RY%MgV}o%e`^n&|)`^tR*)RFmoqwwu(+Qmb z=8JG7%}xiKXCg}MKQ1|MNklG_1{Fukr|mdmF*Db^$i-?E8!pHe3UED!MBkI~mPvgI z@c>^RdF%yzOD+$pfu;@oAQ5_Ku-AKOYaw6K zg>vo3$(0e$Q15u3ovb-l=Mt`5*-+aC(_+b~2C(JvcBx=@)S;r**|g$p@%W1YH!C>+ z93Is7s}FbH5c}J$XZnPuBX>Oaz`=G2_W4E^BN9gY)I0g-YIjhlhbLOYtB%LOK0u7u zLmO#$(F_TYa^v2!2dkha>M%$CbnG_RsP;DFjFHfS%g-v9uM#+VIp3+}TFF;G5e2j) zA?2N^J`WtEIcm#Iu$SFJh7mhc*NhW!WvYlaLjsX{QFUFFINI`t!#1Yd?k57+#HDqVh8N zSbh-HAit4DH>3#J9uE>w=x4}MpWCL)^jPUmu6!0`Mzti;V$FIX^aV)n|FMJ8t{tHd z@-t3#`8v%u!AnX1&=K-WyDUP3qz5-~h6%i@O+*zB?z=?QJf`t7dQu{n`_56(7Tcoe zL-IP;V&MFgwajfj;Gqo^blsMfwbqCgB~B!ljT}u*%o5@ThR8h9x2}G9k(5-ch&6k) zDl7tDC0-)(NWicEVo1zo0wnB*nMQviVH8k9rEqRq-=d*|zKz*S!=J`ViU<%SikuT= z85aJA3K4xU{ZwLVlX|wm_(=H&hGzvxmwux5W&#Y4REod+Kg>shK}xAc<2Gr~q4Abq zrmjG{>$0(DXz;$ER7p+a1I~JGKoY=3T#vtT46u)m zt7gg3rGOAC7_J0LPOHh+Rx0Q9BhxCvSDfHMW+iW9suwY#;pQhE2S0IDfW{uI{>-S2 z)d`S1bYA|%Y3u75?fB^nPX#!;@rF${_zerr-sSPMmdRB#WHkQAx zDw3{*5fPEX*n=h-Ul^$RE9ZLM34CjgD>@}k#*vF zGSM%LxJS>`5GE%8FrqlCS1Q?5mISd=tGDz^A*M*rz~S3w6V@|)$#P}~d9Jj%k(TW? zg2exh{vvCgnF{@rW;hzn5jpokz5O^^M6YqEyvB8?yob$|z!~{W_|t;=-?;KdvqkZB zV)Agh>0Moxgb3gXYD)ze0{v4bO1kLt7bPH8pB8D)zAw(eQ^ITxfbnY-m%^wO*k%=B zJk zae_P^1R%#T)C&5=HGkkD7k@HgPfM!QA@Qu=ffbzvA>>bl|8xS#kfNnX6o&>aWYCZp z+Tf(m_obbX@XoR1Nxd4U^FmpLrKiJN4ArOMl6!;WTCmV7mH2|L2tz-gExDDRBy{zg zjaYS$wv}@_yBunq4VJ)urx+Q0{DXjaM0b2 z6^GQQfakL(&XBJ{0L`Mcn%^R_9S>Qz!D)e$d}G0>G%hBh#f)WJPi`XU(khVP)pcv> zEiz&E5ep!8(n`Vyj*(C(tz8*|b!X#8qOt9qV#yCcQef?p;ltmYIen8PSYN7pH*Bxn zc3kGaKT4dwI}6dh>pXP}6Z?roF!Ng-k9ctZ`Y8pteb}IQH3py!ISP4ku%hrnTRdw0 zAg`2DZ2oQcOGvs%nCK9X!Edx)Jp_`Eg6;+ z+B3=rle%q73ubDRSRkZzGymv|m?9664+)r_FUuH>jRD7`#00X{K_ux~4V*YvOk*G& z9zwo1zsAYhs}$eXUBTjp_Wk7x5Yf;uwXV@KNi<`Q2Ai%xY!$A2o)x+9OKCW@fF*HE z2oP}7z0>`3TLNf{Als<4&`Oiy*vW0VHHi9SmyL29nk5bcNB+nnbB=$I&o_-zz8`=n z_>nCFle0(%^c4{j*D3yxHIdx!l+$g-7(aJTbR8pn&RO=}=y~6LHztCls(d(mXv^t+ zh3dy536dv`p;RntoYhbFeZwYDp&NHOH_Cr{D94)_lxMQRENe*rV8mr)bKQ(b3-3sh zdn{fv0lYu!Ua79>oUgWRi5y*|GxB_s13b|YVUWR`)1ci>ikXqE=B9wdxtVp+aVqF~ zQ82$lRZ-Bd-Y7uphf&w zR1r<19!enti(zxy-e=)HRBxorEc5hTJnkO;8=b_Z3x(N(O;_9_Dw`jc5fU&CeoZ1>86Mq zA>2nvT|X-u2s`hNif1Qps=;MJcWD$)Qa+tf^S2K* zO?o5PG+owb?|HJTiG4$Z4-ir@2)vK-A6_vXoj1nJXusgc9zG!KS_8jDalx4OAKTXJ zK4#nt0SvBu*ykGLM6yImAKzK8NWm5Gm@t?qlVX)$yL#=O8s#ptx}h27wbfh_g^lT= z&Y8A^oKW>)b|DUH5l*|eL-x2ng(kLVTHjacso2K|)0b*y4C9efF`2nSE|JOy>;3$! zgG;Df=U>N+l)T^hyk6ZQtjpuA;Syb^zo>4Zg;5|%F|BsAA#PXUBl)vI8w?c^qlbF6 zwf1v+u3oFSd>(bgf~mWN?P#Dnyry%(qd<`UxBKIm^)20}C*qvaa^hC)eJu*{BXbs7 z(futA5Um53a)^&b4o`24W+2TYOw0d5;uv7GXp92(<$j@Cx@>%NwmoyILhM>QCMQPuH7#|% zzpBmRY-UrLX%}*(^wMrzxs%hXky5wZ_89iO!65Z`unPneb^wrYBw;XxOVQg2Q2|du zl{~AWQpqgk$(Q(Wz`jOC0_kr#fZ2%q$) z=lbpfp$6u7^y@)W@3&J0nJq+*=q65{0ptjMjbM_d#+3dYGefT<^dg5q)jbAc`faE%_iUaq z=7$ZH@-5Vu-JiriBnn07UhpVv6iR@ElzEueeWjH4EdLf}JpTO~9^a^$^h|!}sXEIb z9sW%UXOnp;<)Y~bwL|_@!|kf0V6g%r0V@TSYOi&JG68=I=sti@t)3hrHpZvLeBql=Kn=P2_V49pb;J7Os6all77F8H-LhPeC( z0&Jvo%_oz;Cta49SPD=ze{REVn|n^<3U#9+Tog+8Wj9mJJTc`7p0ee3j_)fo8lE)2=l^U98U7*S&seVu$PP~jlTucrbFOClB zq;JoRSdoL`706oCKrI`@K06bSmSKGHL)-f3p^OOlus(%)KJAi^!EWe7S#VEV=f)Q$ z_ZvfPI!PR>{PT&_wNF9-BwR}B(7feo9Mu=Cx0Ul^eu^DN@!ry5oj=(Uuyg5b z8k88`C@fW)ALUBb<`4`+0$h8fpM7vk_PD8sM}mhn#YJ=yrDI5*&#*e@?}D)_Eos5i z(ol+7>DkVsoRgH7g08)Rk}Cb&`qIeOhU>KT7?%Erzb7#Dfex3K{pG8|@~k>t1dg}v zqegm7jE|!Q!aW|52f5s}_gB=q+;HQ&K-{R8kqYGva-YFIRS$_l_SXoC)RqOyUm1@{ zpQZ^5Srdl#`qM1Yc&$$grI#C#S84ni@#3m0tupYB5#MYLvgWN*?U`mMHG!aRknd=y zAu6H=_rI~malcrK;@r`n7yrM;uCgtTCdv*PECB`&J`C;<++lD62?Tcu?(XhBSRlB& z2X}Y(;10ndIDwsa_Ydqm{i&a>o~m0_U8n9n=N7;XuKB=}_D981(s^R(QR;;8{VU#Z z|4)+NYDN+Fjk{y6u7%uw6O~-V&CElqffPgnY(%o+O(v5kjRhy)X%2R-NGIc2^>5rh zP;%zB#oMx|36UqIna`9K%31$Nk3@HjY;Hz#j5shm{mCW^JJgVKTRr4rsQ;kftn;jz z@$E}JrN>uIWi?0o>aG644C1zfhpA$W%E^q)o56`+11=yO6}RUkdfwU%o!@L?gm#Yi zEc4RNk4t;Hi2#C#7(w1^-|oLWdAOJELJ znDuVwcii-lz2a5Z)gs`mCOlU#ytM`DGWQz3ye4z&>a{>gj2hw(Eq%;kttwFpZf(lu zYc6>jl1Hs=_BygG+9^y905c|cBiYOPI8EgM)8Ix^J$V~dW{>DHR@3VGpjDR{;{|kN zrBAy&%*8h!c>=7l9-MG@Dt1xI^c?cjTIyr)L;WgkdQ@9+TKRE3_U_ejWRbdh#}|+e zwsJ^kZ#HDkex{V3WUqR>G_rRS034az;N?5pJFRM36Ezq0^mB)EHM;BN&thmE`qfN)Zz`qXYmX@vQ%x_74Dp>pOc;4(n5m7EbQPx# z8}Y8$8NPv}1||4>t(Uzu-+ZdD!UW;hxda_nl(yx_cDNdxn4rH5Q(FAO<@3iiAtc3; zXD0s%4Tca7^@76|`+~o!_T8=?V&Nv=T$`ao?P?q!1j1&Gir{CO(hw+N$B)=-1_%BFN7W`IN-if zXKZJST(Dt=7_(KLGR_Ou85{c5o5~R+cDS_$2*QL6R01;tn;a_S|M-%ma=$Dywl6N; z85)nf?JYltBHo^wXWr+jl$zkj${;$TpuVJ|GlmH;__@TXb6-b^t2I}46*MI^rbNHe znJ!)(Q7KeNfK0%*>Pw(sL#2gF=g3Vo0f=IwqTvhi(qo$43ya9R!+-}LOfb-(cy4Tx z58Be&`GGK`#u&T1s`tmJCcs&|;$E7ozA18Y`WX4N(!aS?l7NL3{3UErzd-$z#B#!Cx6Wi zkcqV;%x_7QJg5sLx`~}UM1hL3030JEpD%|f(f@R|>N{FS(xjKAtImMVp8{{*AF6-2 z&$Nz#Xwjy6`uGiA9qYe*YY*RJ4L0ftMv&8Xw`PxbcibJ;U@EF>n`fM4HTDh8?OUFT z+-oU-L;3P}oB}x&l;Ra&McL6=m!QC}Tza!cT0}owRI{;*s;eoE=T}C3Q>`kFI_mjJ2|xMD53!77RjjDMri7y3O1R@ecB%PkOW8wMhKa2F{Z^mD!Q! z?2!yO=BcD~yjc&fox5E~QxqTETMIT>+c%IsUr2y&g2`ixeO}PFnSP=D-647znX9{X zk0S*mKACIuz7uYIhFs3(8IS#;stv)LOJ8gua|zn}S~W?p6moo=WSlXJ9^29~ff}mN zyc6b*GOKv3DNlnPIFY4uZBM>>XM|vVTy?6~=opHD92msLt1d_rwB2&;@`;QrF>RSC z+D+MKSjZ|v(>O}*%ia#Ba*)P)(L z`C4IGsr<94#(QdHjfWiIkKOXO@2G!_8+vL!;TQI|sed5BGF-C_fXGc1Vu)n;8QtuU zT7{ucG5t{w0&Fq~@PS@z+j*$&urN^Oq{w0r=LXFmtu+mGshLm82V5m+R@jZBr~YVi zBnUOe5bV^nvA`FN_u+1nV5F zJ{st88(~sA?_0m4>PaPsGRKo02fY*YN!|8Vm!|=zG2~?Z-@G&Gu7+{? zDQ^wlaij2=M!zeTOZc!=vi%yl-yT};!~X5O-P}T!=U#PJYw>(7#;ZROd&Q1wyy(IJ6@7r4Nw-r6?oZ9>p;nM>k`5WiobgFooT$hkZKiLqU zo%6dGNIv#CkS_adPskg%UP7NUsALLeKS(RXBe1MwG#a%}R?08KkPLRzR*KHb_VnCF zlGm{M^wPw-w%Pb&5b^kf-bJt^&5L%cuEkUL(J~ENO(v)@LHR1f}?P7G3i!!dzttud7C$E=cUIq8;6Kmp(6~XMa zzVY2mQB(tBWTSj1R>K|jH@qNbCE{0N`r+L8IAylB^478xo7`6P`HOOpRw(h5MG3pp znEM&`M^i%kb{}s_#pUp8jpduBUukF(asESMMnNsLPhS0E#Z`Mme)|(vsLp!Y&%Tv4 zQV(vK&vw*k(3fC)EjFkqYXh9p$$bjGmZU8s=sOb!c6k04_~$SX1)`zIZRA!i?O`Nj zzbIypw4G;MW$#Uro5~?O9|L&&H!3Gi2}Jkn`8pJNQ7g6;pP!kD>i%KE1)nVcBuC#~ zalL0ichN`+GHHdGsGy8MpyL4n26U@??iR?V@pu14TYe=PjCa}%XVvFzGw7FYBD6P| zb~s+1QfNh?HooCq{0CF+P0#D%Hw9F&j_A-gW4-hE+Tvl*!M>TOzNlWrU(F^v*+6AY z@TyfqW*i|3?lLix0e#yrqPW_rLWOyDM>TAts%xS@Fgs(n8H4#(WGr(Q-t`-fc5%;KUsQO5Zr9`gl*=K8%7n0~C0dsD&8@YmDc6x(`!$};l128p-oS)`VAcyjItCc zCf%3UWOMWU@po8U1!-y15Sm0wR2@OT_@O#XoTEwyo^MhFEwlo>)pa#-GDg!~WSz5a zLI@Dc&%m$_3bp5Qgk0AUZT`di2Mv={HfXBqJg;Lw#-z6}jDV#yW=;=i1{)z6v>Dd$ z_EpxJITn((@gcreuX?S{*X}K;Hg_@E_SPY2Q4pfTd*ndDVr20H8qb8I5iRL`6u@}P zr4RC_Zio65wKrKE-l^1S?dZp*GY@*!Zx}zmkYLN@Ba;wo2)s{IxL6t)Cws{{SP-cMHEVAN0x?}wiX9@P|*Lh(B!&Rm2PtA9&6x|2>~T+5;#&x zf)$$MP6mY&vbGf(^CLtl0J_05xXWkVI=-!yt8J@D>lAL> z!lWY9#lv#HMQQ5pI-R`EJzXpxQrB}tvLgWtPKBjcNpQrh1twD3^-M1w;9#3^r(sb19>&cVYX+*bQZHj-F zevw>a_19xU^<5I{$mEH|_Eh+4gbdh^Vl5gMx&;vIc+>uU%(VFp?;Si>WQ~u%*IR585|e{8#f!(HGU*unEKaxhoN+(;e8cv@ zb2O|L{9X;XnHP#>LHzf0%Dr5{>tV0v4#{-XKf!{CTcF=>N>Yh@D;}V5+THra?P@jA zFA(*C`2a$J0r1d(@Z;2aqBM7mWqK>3lcd(y1Me*PHX8ocMa3fS4o-*MPYf!lC1k)Q z-khhvV!29S|1PIvBCnn;Y%xUj#{<(;Ss#&_zNi^d&M_|rs-#Ya3zGuev|fq#qud@- zTOvQK5#d?T->iaM1A!ytXdZzPxKCYg!HD-w$)>LAo_wfAU(&1?Y`b%R{WJ0jY>uUY zx9B(O##$yNTx|IPRC6fGR8;!JTX^{AZ#%JsPseLJ=^*`-;s%8(ZrXK<3k?miq3u9c zq71Y`nnqK)DHR4j=XF>k7;48!u18}2ywvlYzW&{VgkHv9-a=>-x`1d%IP?Y^GE#Nc zr?klBN%CGamIOV#PBw2zU*xpoQG!CvscI>Jv-+z$t0ti4ANji6$=v}1taat+x3~O( zU3B%CKbitv>HH!7R&pK_bF!dlr+16#x!Ka$3d7z{oo`8ejXtH>a9vMDxxkAJw9b)U*CRXnj6CO#Cq7`;r|w z$CM_ysanI@O0bb(6E8klZL5Yq>i6J|x%S+FN_kqs?=;v{P~Qs?O$YnA_Q2L1>rqWv z@7S7*7NJ#rzom0LS$q%?am=D1zRm>M{D>%6e#pDR2f;@{G5oB{1Z*2+cN!jiPWoq$ z`uv;A$T66~VUN&nB<&-Tq~CNkA3*_7FwyB}Iv~4=${SSMSL}7FgPPa2{(&?XTPNwz%~EP1ll~v9n@O*ZVqHzb$Fc>D_DxqyZ)mlAE8!-}pEwdIvjzL~fXvm8 z;}u^mPL^A9|NQ=GTXmWaxmSya)Co#K6409M&bBDA0;Lm>)I%|RCeJ!z#LTF+QSDGKh zY{M=B{7hbX@Z7dO5qO*;ilQv*p{nBCOW-YKB*sU}ClZVlMkNZSxFt)|uw!josr`iZ zye35KX}0upg<5FC^A|9%88dge8uNMQ`&(ow!k_t={kEUA`BI3=dEdWqqsy8;FgjH) zsuR2sv-4?2m}q0_t=r|tVoF{e`;ylk=PS^#7_f?HRnB1&2PLftdQ zAsjMnP~>B?Y&Y^Cg`{L}lg5b?L*+wf9_ghI@70{m-cZgvv1D<1NX~;r*IFM8E0hw1 z4YqRkyD|@gbv8ySX67f@&nQM~(+M)m1P)(*I)D%?imTPrRBdKRj9*{_BrRg^ zKA3n01T0#E`N{)VO78Rz{rf*n^AXrR^gG})+H=M(afi+r>cdIBnMNoWgXFKA=eVUUwiyZob7#{ zF!I_`X4}nXRgjVAYD1P|pIIBPW=?*CL`6Z8Llgv?LSvsA|DrB<9(&>m}T1?!gyC_T~<(k^2xKSPR2E}^n)R97a#Kjr z@}DY*9qgY0$|{bXxXj4p$%C63SGiiwYE8D2^tmT1b=w!e)F<$}_^y9$U0P*;1}o7t z_NzMb+jCXF!xW=fI-K9Lvxn`sHnJY_`O+{VxS<#im$Ko(d_WteQ(Ml&BFcdg{@;(- zGKkGaUccnDDHhfx9IDnMOBA=+!wfzesqMH$Dz0%PkJN|G=brHy-GK2Y8h}=(GP3ig zwUrG~UYB2dP8v&DPj>GgeIwmhvm*B7dmuO+u;@x!LW4>t$8u4|I`?2rBv1KDJO~1# z+|oHwKFj3ALko~MXn8fF9_~`*1O|$|(F%Mi`_mFSs6k7=_ZVzQ!v&!l1-~mG_VRgY z=A6Hxy;dT^@Z(j^s$1(vEh=86jic9TXR{(;j9mhSUkyN-jpAFcF%o@|HJuHC5t8|M z&x^w;K3>y;4xmCq} zLM1~lP|Ziw@0FubpNV8mBEZx8F4^nhOR;lSL%5{XVT9sf;BSjGXSal485n7gRSIHc z=$5)B>qHt@?PcXDz#SQ^lv$>|h}=nqJ;I8*0#m$^*$G)ox%iHp>Mm|>b-1V^Ce&Jh zJy9WfjhijVxg88vNW?%YIj}2>f1O(H>XX$w>{T0&a&U^h~vigU&dvyP?f zMwM5fH_9dL=F=g+;jc?wBTH%O1Q7x>BT4Wtg!?ZZR$J0a>HmH@i`1Eh%M!hnwqWHX z(=lR0E9|)v-eY%p78D@$Yn;6W$zqL(9ARqG!lhECP>UT`^9Ers=z)zWIjA@Tme(r! zsd4@$=5Xp`et;whRvtEGwDIYxPCh|nM=1jeD{lhfYUkw^6;CV|l}@ZvV*V}bC=>jU z2dmMRE|AC?gE5yvX}?5-?LU{AN+!gR^2kzQQo9-m+K zwonz6@E&@*1fSG&%D+H-MvnJ`&JGC}abp0gm5N2|L*%g$Ov3`hU%oj0^*-IWkF;)W z6`Uy0P2O<4ercetCYoFO(@&Mi6a1usGvbe#&4C`;WjCvi@rl4SmWKdoiC?lFd_xIb zJd@&}!d|0RTOM4+ZCwxQK4@Ck#_vgKV!^7xNtIEgMuuvTPOcj(`$A9qwHH=nx60c+ zI&#Y{QRBF@XcF}C6$gT3md_NW>dYMUUF>4~Ar*?fCSLy`|mR{-hI8K7Jt436y_$m26B67cw5PlwKM|{);QfUpO^(|%LH_E z%haf=u{{%20_^Ib<*W6)Ty=Cz>7r;eTw-{4w z{*kFG_gpQfZFpgW`DvrRtyy3X>^MT7o{XqOv*^bdP@iz}pnoNZ6CeYC82Pj${C3@_ z7bu+tmTe5CUU)EJlR&*$h4TdJspAM;+l&v~scks2w6A|_#R>;5sRb9UxV5ZnNn89Y zJm1_F#_g#tv^nZig( z=B`(}soLjb%OXtgO>5oh&2MJa5eBsH+rYDFQT`DA3V3RWc>KY(s#x<=rVkdxYxYL-#w`XdCb!H>PSh!@BlbxZzBO|Z9Ii|9TV9R zVORgV6Na}5*BmiDRr`qZs~rhg)83F?0pSf+6Yqm1+HMs5T+nGDe8-dvQ9pu<~L?xdi zwGaL-ie5%?n}SQ3u|^c-w7ugyK5}i5tgVn+s=@!76Uyf{9Mi^Ak8WuYFbwb4x><8L z{E_Mk| zq15lEJC2VMCX8qKdZ}=H->M`L6b3?)&A~Qn24-SPBA^Og(Y=Kdo3RSKVr@~YyXytC z(3lZ}9YQ~jS^|#7_I=%9FiP3AZTeFr>x-}7CxWjYO|KUsS0cu3ojSseC-R_p^>NS{ zmgc7&1WvO{fuf7HI3nzr<9w<#G%$yFP)MJ!ms(*dEkz3VnajKQ85q6uQ&OtY3txJl zrV(}X4HbpRdK<_(Hg6XOp%A6I5KZ)rvW7@dIH052-5v2ORukeKQE9w^RTV#9F#K#* z-ufw`J)5fa9(q@Ewv$>XL)M_mk?{b#bdRTvezNMHu<)6g z>2a;^2F$COM;Vp7hliH?MasDNIbJDy;cZ609y|tfRJlc{_Q3ssI5P>0J%4usvFk-J zR=RLlc!*+WQkNpL?r!!pL>)@@y}OXGD+244jBMJx#Q2fq!_3d$b^AANlI-Ptk}I)` z&6>Sm$6<5U_u%2l&~zwJ4>^C}?8fWoEhx3{8pc>YV_fr=WVuLl(ADRTm$^`k3x&{_ zP|ZENali=d5NkUe=&~dJK4KN1VS0ae#Vj!oXe9rT+vT}b8mw_#HYb4qtKcm5d z0XX{1{HAhiwnT9GppEQ&+Ew6S3$tq)g4 z3&uVIogOc7X4Yg}Qur6ir>bF)8upP5&ac|vJa1y2aG?MhtRW7p{cNUpi<*BT{tRztkeHzPMMshd7Rc?+TvDp1u2M<7DDx z88kTv_}Y1dV!*B%tS^ok5~Xf!4)#xe`l}*bn6v((KZEdED#ki~a;I5K%9lx@QH}Q` z2Vwj~T^adJum3T;z>IO9nXUCkp2q7Ux)B4^3a*Rs{3M15gyW{V5^k=n+AADm4!*{R zIPwQX?D2obS98Y976rx6EZ14_UyL1PBVelbGWFC8$_B4a^v(HE^b*p3LOT#PP_07w z9@*0Fme7)uK%h0+TB=XPfy35ve`0!6JVl61Y;k+G5aGHhO^Frd@O$4E<}j^`WDCAK zbB)03iGBS?;TrEw$4}Ioe6NPW?+}4_`Eu>bONk}symWWay3gF&B$wCBG#*5Cij{@m zZgC4~jiB?DU8X0zq!6bR$X#=>yrKI~;gr}|(WS|EL|6;ZX>j+N3mj#iMkrle*?)+aMiJqLezd?djdzIVNRr%b zRpZjxJaTgEOSLTK)^iW8ONl>*%B0HYX$_iosbpxfbb)AdBMKf&ngcyd?ssrAMdKnj z_+a_$;u5HSdYa6BzC_Hsq_~ zcu{q&`kaEh5x*lj8iWY~q8v89ewGL{10!A$CWK1H*neGSh>l0Ngd~56%D?6pNc!6>GLvV4_FCu3_ zQf~?lOPoiKfMnAY{<9mBzv)8+}LK5S}hGa1$_z9Jt&J-~5-@lnDLn#dPuXnD`>SKMNbg@!I9}SUWB&H}c{M|W)*2^^z*q9Y zVf(pv3bl*krQ$NN7c0f)#luu((mA zLm0(74EWiqP=i854l)|z%>O_~rqKGtkM@X)sySW6#TZItstlHIUC~tK};#lsXrGhT^*fy=C+F zgmv%s2>HCnPMOf{M(Ez{F7DBq{@~e-U4vTz7uLgvWi7r9?$+<&^oB{(MlyTCdNf57 z;l#J;tA|TlJ~_MMsaDw>=#8X$f@+06R>>5Z7pBCYm3EQvx>8h!vhcj-aCxhKeF2#C zzKK}iviXz0;0P`(Jx;?)5`ud#APbR(j{128B*qfnqD>2Q)MlaT%Ts)pcUtA_3b_zZApdvuEUx zrjBWgpU<|XH5#_+DiiGh?PKfqzqgU7&{n?Gd8Gm%CJkdNIX)c%i!*KfKs3$BS9m@lT)T zsFicu@n1eTBOpwh|8-;93-$W<4vBOI6K$vE<=CnYoq?dFr2h(|AQ#{P6fx&{nzd4u zW2FYA@uzj-eaA$e0$cz#0U`)p01;$;q-rjXA7rkUOO7isENMw!&f&9=d{HOioqiPw zsM*DwML3ntabD8t!VzPQ;jXB5=_d%TFZ+~<7g+zO-@KFsClq0gu6Gmne2l;OlXw&= zkOJq$igb{yRUDo`3juSwjzOuoJwdnRp2^3y)|B{0l&Z|_^R!TzpW-x4@8SU2i0R!F zIoJo6gAmS|W0=3=*kzgBivzRRYZJN*92a$T(D^`UbTyS|D!A;OCHwv(@DYZ>`JX<6LUAucMdh-H`4&aiyX7MPFK|jmctbjQ+DfYwff3}jfnYL zh;ksa(LJ9@F39cD-&WQhxjIY@qMBr$;$mb>j(V*z6neM#aQ*>}Vb#oM-(&ZV`8z|_ zDlR8dPIDMeT~cB6rtSlbDB$CqZhDDTeLGmnpYipc-|t$3fA1#t@Zzz%Z?(pIDn7B@t=)y^NO&$Z6h)R zkY!j#n1 z*P9f10#9I|tjgG)@D_prYsvfu5@C$)F?8ItkKe0E6uLf0$K(9%ll`RQ)M3x+c-B(a zp(R{)?H58_$>zDQ4ZSnhZ1n_}>GJ0nR!?jjfjcKZc1U5T_dr#?$=-ftUpyEN>Ds-C zyb9)!ufC%Uz;U_&*j^;cfIrhGt_INhZwAeWE4bQMn{d0Spy!s!xrI`Ga7yx_9?je_ zA~L`-3oyqf9MP-7axR4X+FXaq_9Te$qJ{Cqg${q%wnGSwiMep_>C6hb8U3f5gqfW~ z`DQq(_xp3p7W=y@#nA{Bp@IF1ttT%Iq7cY|AR!2vtOJxyMBmrj8rwqq($4O1)XQ|P zjg{nda`gcHRMebwU#X&ajLf5s#Dt^3C!h$hh)CAQNB?!Q<)7tAOGDC zQo133+l-<}Sbc=qdv0vccFV_rO45y%ezn}Rg#kOXx`4jbZrLl+if0CZd9Fi>p|>)m zD#N}Qdr$k7{?rlKIm`89t1C(#Z=77->am@@Diod6c>8FO&v$H7>?7|RMN}aN2r~s4 zGO+Zqy_Fn(Me6uwm42ozYe%=7exn1q;(MA2OQU^q;3(qKpSGl<)fepWz2sJqg>SA5 z7?dcW?Eaiz`Zg?Wezb!YzK4eV3ys1MpDvg=`FP|@^T73nwqtm7unOhru9)|-UuuuR zWKc(zdZfv3lxvZSLur!Nj$_ifFsbP%N*zT+E#=2<$3qKe-p za;I;F6CRGOt~m7WJMNjrr1DI`nV3p^R$^q=ik85#~q1;MJh#AoT!|@q{nIx$@Mfl=Pme z)TRb)*f#oFs0}QOs_+^k$r1%Vd|gt7-8phwqe!5w(eDrr?aauaXOd&5RZRdE;uwPC z4t+WHVhu&_!%5DcEhh@Ba1%--#mQY`dkCHP2Lq@-Lj3T3z}oaz&{f2@bF{4YukfL; zrc27?l5-q!4HSwCm_Mv(p&7A-DJUq=reR}TZ*!Z8>i0{xAELoKZbiaLXJtj+SA6Fa zCG_-+>{=4{XL>;4ySjIu*gTd)g#X%;c!LKciy8>;)!9Q>Xb&u)-+FYy_iTkDARq_v zffA}DR{xtE44G6o$0dbGauyF&YFB%Kfz=jxI%9(=BMMeH;!FQ2X&Fg$fb!NTf^^Dz z^^Z18sIO#8_GRx=#FvH0v$b;ohMEtZ(Z)!QH30+C!~JlZE8V@DQSf^}#Oga)Ffii7 zK0;I9)}1>;uyAwc)>B)@&?wU%v)tNzNA*8WS^Rp2F|rYzuu(~;tJ%b zJ6J$VWKIH4-q|8y;E$qsu$_|0v)~ytCy8oC=phHTAj!}G>!N8( z9G}d}uuh7^`?0VUP?5j4&cd*TLs8SL&{&u=7aLrzIelvWr?F&&&T=7rC1~bh}h+wa?r zg?}lge8a4uA2?D{D@H^8ztpRZAm1L;{%}O}RS{Tsc#YZB$Vf3KUA`$)M29BJmh8S{ z8=@ZzMm*}7>A?Y}wZ{eD51mJne2X<;y~h~)1}vQIo5z6^l1nId*^P;0GZSZTa+x?! z_kBSa*!^=6@PQ{jVUiynkaHnFK(5RnXG%szd&?tGw0T*@s&h%#a=p4)xT*hQcC-L) zs(;;Yq(fvB9V_47Q zLYaIq8Ix#6|M9D!0sI5H$2lFrKd8Gra~x+`<84&gl+)ZxHU@mR)w@i6p*5WzOadn0 zX~B@|-5hHKWI%XCvAVAh=l($zDD5fG8m9?Mi7qzRc<}4(rq<&o=E=cQTy$OhM$}*5 z3F`d%3IKpm0r%O7uB)ykp(QFg@hRH6JQO+_Z1m;J3p2~ht7m~eb99?K!k4|AAp~5Yq#|nAx_!R4lU;c$bRkjWd0PyoGNl1NJ zP9yX4K-h|Gkwr#GAU&(&8UEQt!i=%`jUT(%%G0NbQ^TENR_0GLz1 z-sa0{jDjBQx#k8IBPEu*SS&C~g{FG|2w`)TD7>m&2=} z3jl~Zh3A>m+@amq7<0Qol;%qa=n(vD3~dK zh4LniLDjvpY$Ujbwk66dUPh7O0RXLcoKv|bcb;{h-Rw8X*;CtR|BVZF!2W3wC}qiy zW+@$?_zC&=V^aKDFZ$Ol7D|}yTn6-9d=gfcM!0u;nciowk7w^`$hy{d(WQB0yo?%- z3l{%ZoFJq}XYU}+Z1thZukpSJM&GwFO4H9sJET4MuV;UeH^y)|>+K1XWyaf#h^8$5 z*W%Y@#_>Vh*MQD7kizXbTN!QBe|L#?=rrgWRqXE9!wUqI6-{~IVB=i^>2_bENaQ#_ z@r2{rk{A`%7fd94jI|1W(}TsWB=U~gngamY_}EbJ{J#B0ePP3IFDSy3XkvT%`spo0$wgVX8EjqxVvg<) f9bpyzfBs$(z!^4mo1hP_{}qsxRD@KC8wCCjANGR+ literal 48339 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%0D!q>%;};@HFhAbL<~3P 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 diff --git a/launcher/resources/backgrounds/rory-flat-xmas.png b/launcher/resources/backgrounds/rory-flat-xmas.png index ef64e5e5a51618863053636ee8503b29a4b9ff6b..e6278ed5c2e3dc1fcc9ded4b498b45e4a73e8f90 100644 GIT binary patch literal 48992 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 literal 49917 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 diff --git a/launcher/resources/backgrounds/teawie-bday.png b/launcher/resources/backgrounds/teawie-bday.png index 6a2a75c11a2e05963111a6fe27bb621a7ccbbe12..b4621f9b5cf05e5d735d26ffcba386c4485765ee 100644 GIT binary patch literal 161203 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%0DhR(6_+vnF)t@QcP*j%F;pwn8caKm9*>H#Q|p== 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¬M?7V%c&&8OV}!PKvf!A(QsFk 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%0D=;v)~^;ZJ@XNjydr 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 diff --git a/launcher/resources/backgrounds/teawie-spooky.png b/launcher/resources/backgrounds/teawie-spooky.png index 9355064c0547dc4d5f51b6cd11da8fe684b8383a..194d8ab7ce6ff473ed854f15f90b5284b472c418 100644 GIT binary patch literal 173134 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 z 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

    &Ct@MQflQVHB~gFEP6X!&A{^owp{q(C0uJ&j) zTIM15&JVta5B{MKnhzKv$e5=}Z>!4-&pc0id)t^tqu#I--{hNT*cxo2Mc7GEwOW(R z?4PrRH6lWsqm#B-x_QOenJv)$9Q(Z!4>9EeuLc$x>yCSZ^&tUnA~HrJ4z#aGq1dps zqLf&R;BXj285A}TNJ@|(H^We4QzkPHBL$#0m0G|#Z_iWqCy5AA-9wHYTMPxXM-59xOF$4;F}2XKei|7|sTH9DE|u4e98_5ic7N$Q6Q zu&UmhX6gGC-d~GrZ;zdiz4*2HnLUGrefxD6aCYPWv8anbBqD!%a(3qakQWJ!8BX1D z6WDXtg9L>DM3sN|vBx4PcHg;C&f4x%hVwWdv32oP2CFx4DA{%oe`tz{2M*xG6H&tx z?Jyj{B(FQ)X3fffYKmcJi*$Q^#~)1`_MD3a7YS}6vd5?(p)zhcQxx4v(z~*!M;zA6 z6V;+J<))yR6E&&^Tz4Ej!5iNGHfHwBgDBfun|%FqU*Oug*U*-YR5llddk)>h<&Rus z?aRxcLZi{-=9*Q2L!NFMR7omKSdVN|GejRlfIK`x(?z z3IZtPgN&eoxr6)6by`s}GSaP-wY8i0azMWd1QY}V4Fk^7z%zC+gmMf(8j#^gbYbEG zadv(Y3VZBp-dK~(y+J4_kd{CM)-xm#LfPc&JO~&-sWXL}Pa?c{%qGVRHX^#0V+=Jb zP*sdYdJ{mfaK{lgduwFDlyii>;^R5?9DNLlqn&>fUK860Li>e9vM*kz=%x_B;n?%| zyO@9ANn;cw9LGGZH56`58*Lny(k0zlqgd&I7a0F>ue z0SGFoG(gJF7z$cR{h?qnRzosCt-3ckh|ST#0GR!6d^d-ldOy*`G_^P(3htYc9=`-D#nE6tyDfdRY%^c zg2%U}>8#vfdLPO3gcYfS1k5>FQoD8PQNxbhZX?$q-QJ?Vegi~H zuQLz_Py$Q=Vtp=B8d<8PlyHDR$P{BU9&8iA`f!?M0KPy$zYQo?yhL`5Mr)FjCm-U` zH$TP1>;!?p=FN4U`RvnNxp0;|WFwjM>}X)WnL#1usAUGB>Z@0K}9=X*y)`_%w|>S_W`M9!g7pq1Bvba_bqNL&JM2nNa&P`H2rL8jKQsu9MpeD1)5FH>)t8&g8E zkw5?eic%=xz(7S67X$!5=`n!u9;=rH#hOMFj{p)m_8mOT#t*bK+qThm18~<^cq%O`cV!fie|50u9P6 zU{LZxapnIu7_a95R2Ykb7T3&n{M@yJ#lU6+JTMs=IP%Oe0Bk6H|82GC#rw7IXUr| zDD@($bKf8RTkOB@F%%(GzKLa_r0{};EB96N(+Z%Y8S+F4QDcJbi?7gMzJ~P;bOyMY zCex1`Blz4vCX*g20f$3yfGx6iUqep&@>z=B7Ft*ziK)V@c2mlOrLa^E61lQLu|O-H zCX!$aZs{;!Km(w8X$7N>iRLW#JoGScdFOk$`~FizjmQf3*Dqh;tN-@1tZv?bI{2oy z-jCz^k0UqW{EwfZy|fLgHbm`B?|B=4?9coWYRv{XK~#|dt|(9hQA)9b=gfvAMQtt_3OzURIrP{3jMjX@k+>fu-OEE%1ATPg!WaNWB z?ay4K_u{evr4vWeoMhoG-^KK?dq7+T<3|mZBIC`UBk++C>lpzRxRTlA_B^=qIu(Ez z$(N;4f2o3x?U!opr&8M)OOwg#JoavMZWY|hhd|YzZH&p4=OaRt)S1|OfW7xV#@@%? z#l+nYG7L(0`MOE->-8o{6x+Y!$VU>#v3Jf#K8kA1iCZx}y(dX(N8@_!zSXs*2Reh^ z+q#|YM+bx6=YeJ5_OS~%yRm;_c0a;hc{S+{wd#{O{nKlL!D~1yQNE zg+u#6u#f;6Idn%+0f^wu5xCDczxoXQUeAOEMX5?V@YaKD^|s9wz|vXeP_#y4g2}n* zQe0u6!}{`y73z!37IXusC{7G)oO5M^tTO?ED;$wn`q97v72Kp?{W)UtXaf^cMHmSw z91c9T5Ge`*-p2;Y)P=$q2KF)p@)FF{nm2dGej8w^f`W^4+$b8muROkVLPz>sSBj9Z4ikw-#TXZbLef~O=Hi&l95$XRtnWLnvB$F zBN=k#IG`#zaERS4oI?eq#3vA7>|81Lg)jmZWt57pf_oq1YhVKNC9bl=t z3RK;6MQpSER6s~dItFaBS1z3;D~6!hg5QjrJaFnk znrVwyKJ+~O^Igmc(?_(XC;3x<NV7F9il|6)FXEVJO>hh7+x_9->E)FhKMr(v0cSUE8w<@z z(W3bKQ5?TXoNH!rlZXGzKW1Xj0=@z!uF^HFjDKkDv4vK)$c?N$98hmfGIR89)~;S4 zUAc}^C0p5M*vXhVbtg%yWvs?&Su2nNfJhTG&)L3qk*vFp6XnFIlRWtN{WK?<^m=^? zmmBDit1X1NO@ACRzjr?ej~wB^kwcuk@BUlcDURPd_vEPuxa-6{W*nEDKny-_@HKylh`9pu< zkMZ{Je7gbL2(Sg5Lro|UKu20w0b=Lb-fHvOD`)Xy2BCy3CplE-(03eWb7h09lY+-U zC+nxAx3<}Xd+=7g7wXNXDcySAHmDlg33)J}ksx*(ViN;kEXXOYY-tz4j&&-=6g4fy z1|oKg>{!njz)0z8ZK=0HP=|pN0VJ|(novM~ttt()<|^PE z&wlM$`kkJof>0RT>~rv~hiUGeFqT6OQh=yfEvMO-VrFg*!P$EF$lO;I3FYt%S#>J%%N7j1GWH8Dk6efA)&g(Em(qR;>Y!Qs?X zxFPwVOZ%HQ+5F5|W0!fB(QHmI`{>(Qxc`mRYH{`7Wfe&5R;qGkDokN49aY}$?5|$K zJEZDnfR+FukXP%Pl>4cq(JBC0we%>rQHYQQDb-{-jj1_$o2z8YSBM>E+26gmXfysB z$LH{+gRvt5Kv6=GvwrSn^1&u}n3LQgP|9ANng<{w zv&RH>YGke4-z$+fDp>Gs{KeX zhw=XDRaSrY1!S?0U}07-^N+lZx%(bB`<<$n8i1=R$tvu;YE@GOD1bu8m0_dL!njkk zf<;te8Zdg!jmmeW{2ZtN(ijj`3`9pD7+32#jP6GcsEPxsskbpDot<0pi>rzqs#0%s zq}VG4ecB)YVI7`*CW_+N*OHog-1Q>OKNJW*3h1s|^ltoi;x6EhD2`l+8tl9838U2I z+Cf$20~Med{~%jb^2K>hd-)o}_9k1GPFuR8zjlMc_BwfYo59U1gh7{nd)rbgK7#E} zy~KsJ4htWAgxRO=!q;L9P&6h>J7k?Lo54b+B=s6GF+qx*8TeDvQ#|s-L)>-majssw z&eF9dHr6-T+Sp*255a@Fa)?_Fn7vAFi<9Qo6N0ZtG-jI2&+O&U-h&+6e}H;YW9i}& z&;9x{T=>X2vc(~-S`!hm**EX_?(gLB#~-%-22?3a?K>k4#HeDhy#VUn2y6fp8w2p3 z55Av^r!R2h(lujPnkqLxdX4!f_Hp!qW2|qk+GJ7n=CnX}*yilBFA_Z-Gk;(o5fKLt z9bxdqfY)Amk>UEl90QW61gqH~godID4g(&BTYUpDlT*juUe~}v%6;O{v~241iYtLh zMC@42G7wO&P@1wT#-b3U6l^%egBNdrrse;K`8|7>+B40o&%TVNrAxxV!Az6d)I5U2 zuB9GCDSvQjLRienFK*H8bg(`kACb)OXaA#b!Nqlk1r}baY2T_!torSKEQL1Ks}suW zP^nACt^y>0IN1HTin*#(^4h=7*&kuO4E;=mCC z4tv5?dKMTfvW|6D=UGmB@iN(<&*sHfSv&VU%g=p*;o42K$kA+Qx2{wUHJavZYv0J* zo13<1B+VLpbCK&;HtC;V=ivJvr*U8gbrAB5BJ|3h5}`g(2S5c1uXvN%3PF_GRE^{J z-^sE2jxy|~bk@5puPoo%ZnD+cBsg0TnW#^g#ec1l+}i5Q&(1P6IgQjEt*Ak;G*ix{ z&s^lCUwEFimsibl#f!5V(cJt5zyHtuVZQTy@1)+Sm#awt?@CaSGJO^*`q$CQCbF|) z+3}|yI>m#JK1642n_-$7E9fuwx$@x)96xan#~-qE24Hu2+MLsfCLkR{RkJW0#*<;Psm<=(I3AtnjKw8=!TQjBz z;4x=z$|P5AH7Cr^E(p}YuCE@3kdTnovK=P^6eM@d?V0E92kv2ObBm4bb#Oo~hyL3d@#=HTRoqm~FdIY&IT2L!5PGhBtar~p-A0Hf#1 zmjo)00bvx5F)&i>c6?tJs!klEbF0k1Dy)gh^QioeSZb~Wjml?n+*eJ;fXxG;@|>2h zBh`U#)z7t5g%Xu?o

    `aqXi&O8WGNnVp;<%~I0gaHv`FW!IGd0O;{Mh+V+hjo@y@ zU@&l@G0pVhyUKsy6(t&=V=5j+3Bw-kn^)G?yO)@<-&BD=r42LJ^4SVLk9M=*ilL?zA6I>`4Ve28m zsgQP3ZajCLi(k0F#@Th+H@9iUE%HWgDX*!88UEN`{FA)>JKkzwqXIhCwI@mmHe%1? zLCmV(gLM!pQ2MKh*!bzU-2$)YzVeLKqR>E|DH~r}W&Pecj{mWf=p)L@-+Z2;l#WM< zr?bArOHV(`8=ia{t=WiJ680asgX#Cp@!AWoa`D`&q-l!8rLkrZtIL@Cz(itTQ-T;u zC`~}49Y73&up>jyLrz&z!<7X*AA1bI>WU3=8>IFHM4Vtw(9RRe=2eM>{reAb_hTm^ zg3GVIY|r_~L+s2^qP}l0P9s1KY>|yf+OY<#wV0k_K85vSH%ybo+PTwrkZjCh8s&<{nXFX{f%FyRZk3TQ1V`{ zdtOxk8L+-w#6luE2Il1L7K-6fBn+}!}K9xado6gNET>s`5c=_kQ zp9`P-S2WI>Eaf>Z(U>gYp2;hdxc`Sg{z5m!QXxFNv0;J@Hmnp!jjCTBHS?n{Cd2_BGCZ$JcA+GX<(o0yvbF(nv#4=u27-(kAj z9ftiLkwoOfQbCprSwF*=M+8zA1c4Y!eVHANS}m)z|5wNrUyCqSq-qWV-g|o@u9)m{Dk!z<`TlLY38M zph$;wR+qT?)lakZt*03*U!#BXvN0U;3~SbN4xc0phXVu))ey3xDEbC8s@H*4;Q6H0 zOnZa=U+8YP_coeMDFXOo5AoOs{~VXU{7II-`bqM&MOtYeFA@3GjI|fe5^5=KE@JBb zS$Yq2NfWcM$7(QIAkGu1N1Yh!$*pfg$;>K844eXCXY{d6!psXBGs%*C7O%m1W&`xoMBO~R(H$KMu|G)=${K?0tHyU6g4Jx&oLQw_L3Q}7rE-OI6A}i3? zfnu90&sPy9S}p#-pZ-H;b@SpkzGXHy{cOOTo9FD$yh5@+;ob-D#b=(&7tS;249fp+ zp8l}IH=q6@*Df72w}iQcdDJPh2j_Wm?>kt%w#3C3&agUIv;u!jjI;EgA|+TlbB0y} zIb(j}zysxkRVT()u#}z%1~B4`^@U!reQv^0qh<`MP_rqrF9`<^-NDiOj~c@*^1?th z-5NqH#LWbmNNDaqj3XgvZonlPk-5G#e!37-to7-=wt{SD4Aab*o1(OiKfwGwkKm$Y z+*q@8HpsERIY|Ja&~esYvHe$IOgKG4`>uvTJ^oOjRS)zNX&DPCLf(9m& zDZ0I`rHpE!#=*J6w)komxZ~JSPCj-YPdxcJlQUBoIG05N)oMPZbX%^rh6@%hEx?}h z2#U%`JYeTk68!lv<;$P@5(A5cZV|O2Tl@h8p)B~9i*$fk z479v@d*0;GB2X6qLO<-JJNRMcr`~v3~+o>f&AP#~JN+Kr!aCmW2@mvDyoxyRb~5fNP)(0jUT++%s>;0aULCOLtuOP+&;4(#{KkigCD>=eiK8CZ zdfxdTiKFBRGF*!X|7O{Z{P>0nJoORk$tJScE$;eTYI)xT=hh1hT=ZN~Asd$Q-OE`GX zVIF(xaZa2(L1VIoh*SVVMstCjLrSfzdKrPSDlQFJ2*zs4u=5cNxI`6#pl;-n@P;?P zfzDQ&pZ$@aW@~vJV-`bYWLfM^AEe-x0p{^w&(mMxh3*>Vu`vE?;<+ z#hVwIoSR|x&>rUY?qyF4Eklk0RhysE0cD-g`d>_8%bg83uYG9~;w54&TGfv3qUcT2Yla7a3XU&Y&*F zi$g0ZD91>F=BRf1j~Ydl@>Zd$WRuGIWv>}=2|iFgzRGS!AR!fy5I`%(8Tqa36Gk!a zu?CgV(_^h)28>jjT}Qw*K26jKq+9D;_{sl{;q#xT=7lIS_Y58O2mKzmf{xpyLp}&H!H?ho;RBJ~{-s|#> zAN}7_MsrpQ)?mxtaj0CweZf_HR4)KYhn`BfW|_9*fWsv z&OF5|C6^C#GsHZ0{1}Ih9_GY-cXQX>cbV)Nq{=`nv|9D8ChLVAP@**KRFRU^j6g=K ze)FLOr1Cing{|#2zw}eT$fthsV+?zJlOahIl%^;P1R+36Qbv6iE5c0x6B^?eK4*Qle zBf|D;p&;0Kr8>=6lF6S7Y+sxtOvIBMx$7uko3@AOHK*=N3>c!9E)x zfQsOqAW@B~$CywlwwC}k&U_r8{%^)E;OxeC03Y(+-=nI|fMrzd-(fMR=0P<_wGCVbmR0oy;7h=(u3o}xDtUu0ut9VbGgRwv6dP|V5Md9lXEW}|_RVp|lwIEoNRYKax- z#lfD1y&O1vkh@MC=lF>`X-!QSiyPO8s!(wY0IdQJfSog1wOmjPL|$+7qsRzkU`OR9 z6@6+DcLd* zFldh<%(%?VOn3J(Gcz+YGcz+Y^YUHhWI5S5vE#%0MB|3XeVU@#d5W((8*}pz18?6mKDagb+&AME1Pg@`~<6&ZUcsrAS{#J75 zAATsJR!gEW4|7o~Dyt~|osjZ1z;6BJ5U$YdQ28uVeiw7ow$)?GvH_ zVd=Cr=O(F*4iOrrjL*X!brBDH%)>~uraV_>_sA$i+jmf_)~L>w*>UfEXr)ME(?ekX zeJK({Cz{?vaj*mN_TZV0gmt=|MZUI-Ctt((9O;IC~!ngq50Qvk9(H=^w& zf&khPX!=^M<|{qle|e#|r^lZUGnuXh{`$i?{>ATR$;N{~df49X8ml@5#7eR4uRr0A zFTax|eMS6?$NN6wH_IS`3I`)sg`9ps7 z{hu0vP9cOT5sDB>2lR9BGY@Ck8OzPgi_iisG$_qnrDDog!@Gu=ZO)+DY6nTVZ5I#< z01~ZGGQrFF?f-YXFVirRH>TgEV}%mB{iH4NqyZ%(tJ6~|v2?{U`WN*ZUmJ-;lUf>> zY)L2*5{B*?;?6BwO|J(}LLw=YRtZUB|??ucI|pH}f`e z98)NkSareE*zlMa85Q!;o3CX1FTO~>*CfjJ(R=KLtUBoeQ>r!G2m9fHh3UxBYTVnU zufVgK`6jHa#aho+9)Przrm@Gf?Dw+NsBHxRORd0`)3M)IkX~!XPl*ieuo!nX$fVcc z>zF-P{!VTG*{55(?${azzApnmAW;U;=Nk3eKN`*Yhk=XvZ;meDbO8t9d7h5rBLNLm zL=fBqDBQ5kp6q>|N4tc!SqSm*Ad@-0*wa(Y7m8v&m?>8%9dR1RzTlnouGoMSHp9j) zL!^ID)yX|v^^sT5yze%a4D|BwCq9bDJpPepDAAr>0lU`G&MuA(n&*J6aHgB~hfT&a5tGV4fx%pGCr9N~UtJkjJo$q@aD^{%pDa@uF zP_XGiB2K{0V6;^hvn6+9`_a$=9Iyb*zFS%4Fk$=Kq|yvph!mf!K95Bfa3qKgI+2F9 zdp{`2RO5PXSwmJYiU%Q=m_8ZMiDwm409^KWW?V6hjaB0dW61%MBH0-70F(m~=iA{S>_iIy@OBrm5 zwv-QqIc71{>_OMGALNNPST(9zZvD%|wO{^FJU?o%%#)r7gAmiCjpFfIt@;OFdanb< zc>qSYhtrMaZJ>E-zF1rz=CV0YNSUaFDA7bZ;NTa(i;br}4EzkSg3wE)bCd-zSO6q| zFcXlp)BJ&Diz)T@VLyHfW%W;NdEEAli?ECF8vC3yJduulV~<;7g)7_J1~uV$Y73LW zm`q35dLt4@S$@{(mY;*kl$<-F`Jmh9!pc=Ec;ZtY&)~oSzxm-WnVp(3tEpN-tz2dJ zXA#XUbrzkol;x+bB)2NR56n!742>tGkp)_@VFk-pFEjSkQQR_FQ8vioOAjr<$Pfi4 zLqSXPb$~Gc6lR#yyiSPCIbK_d+6>rgfs~-yMrj_N0lSfj5kxG_x>^dnFd)-2NWO3R zK4tI(g^YcgcT6z*NS=e ze=h4zy~u!#YY=FwM+;#!+^uZI?)3y-`Y@CzheY6%(nNc+S#LstUEWGGpuqDmkyt>X zEw$*x0-eYjGHnA;niX6AIzm~!DXWa7s4{ZZPA2c2K>1Kw-VYfJNPr-#v*zZlP~btBF&T?t@)@=3P=Jq7 zE(q}P+RVF_hzNB62n&-n0t}eNL+7Wh_1Gv8+A&u}p5ghP!_730gCg#H|Lc zMvdNsPvG!pzlB_>9}Q?{4koeYT5M%ztnw6&mYV%zM%bByo!nZ8jJ z!$Nn)MmU0+%KBZ1t&(2*WBb~zQlZ%t^*uw??Z5cK$j&SOI9RV#mLTwa&nFDS2+dft zUjI!L#cu#ccpya=aJmuX^RjoK|FxSAIpkF!)=4Q!e&EY&E>A0piA2cSM?9BfpZPil z*B^kC!trW%o2d4^)*=rGY0TP2ufGJZRpYMP?=b!;gM$MITl@*J&x6J`HxtfZwL9W% z*Y<45U%TinG-=p(13N_e{tn(@UkgH{pSOtuRw=K2Otg<-HWZ*$3P@mBb}Lt}GUSPJ zxlFZO0WC}>C=vlN)JCez-ZstLo>`J+gz%)%FY`R(^@GMV@!Ji4vpy0*EZU-=c(e%) z=A4i=*g)HMnl{*oef=V{o|5~@YX)qjFz+`vJpQVErK+`-%^<-#L#VDD( zaJ$JGJI_M6Q+%3qbNfMNUD_qM_I|C~8|iCT#uxBB$v}TUoA=wqz~F$fUznYpHCwG# zGcq?p5>mN)mWkWOXwA0pgTPof1cs>xp7z0j4)^C4=>V3BxeKsK_N=goW-aA-%)MH0eS)d8grhodOOzsb~y{I<1!ueOf!3HQ|ake-^eQcSu9T5yvL@V^st#X3ahrgz&+cpV|(r9r~;(t8GWoh*If)r zi?QKR!a|O98`l{VHqrjV&NMnJ#c<1Rf;6N+hdw&=_UX(EPoO<%_UXV!`<_K##`B!>Knf#kzwPF`X*HT=FgKPl1OfShRY;v@?z$aJeD5Y|m+wT(#MJ9G z>dmHkm+X>N9QdSHu;IKXpoPcn-}(@9w_QapUnB@av-akvyp|2;J`vCJ($bmpdzIec zt%g5N2=HwBuv7BF*)JCmnUIdoS*)>yLQ`M?u=`3{0M@#;M2}}#VmkxUCTsvhw0BMH zoVo93pS<ol4Tk~prS^i619>G|GofP`+e#XEx>-FU#oDPG`z zq^Gy{=rEfJvc+BwdfCTWe&lH+S|Hpx1HiXUpRAICwCl~b54-h8m(;7=^8HUT_P3v) zqZ+wVkr%%9C7gct=>$R|w8jM!?KujDq_q@*#xAjGUz#oTA#r?3Z0xXRajf@DnQKzg zX33e&@+r2`JY@lpV_@%&lWWjsZ5-Wtf$fB+rC@e?hHEdshHEdoiak4bQ!m$z_@Y2i zZ`290J`G(bT$W|Y5zAP7{4$mvvmCF_Lj=-f3?3eymNaF{085|)A`zK2Jl&p+u^Dta z1szSAo=QA~Ck-ez%1ti&-QS7*!~k4ei}4zn`E3#P?F|~Yjggrah$tp%wP-Y3C>hef z{vcL8TsFsSwa&7mPBj9Gwk*1D)xrg~6no0NvC9w$&^YWhKcui?J;OI%Zd^rc zFWtDzf(|yd8D&4P%sGt}&4zUjGV~9djnD z&V2&Qjz1Tr6}SKT>x}&FTNwSjAT-%q|EUk>uqVC@KbyxUqhMtOQh@to!^#GPurdj0 zm(Z+ouhW0Q?gKevT2iLRY!ZyJvU;;gi=MrJoR00(nWz-R0Bp@SL^>tVs#T*~fB329 z^`CrgQlA*z5QKplf>X*2b4K|vKO&{~W#0?l5C)mu^Bdjm-)geCJ_Z+jVHmS0vZdOKo=2`0+@sm>r*_8At4Y z$bl4ldq7HTcA3DQgCPxpUA(vUIV6J)#4%?fr$XnhBcKg#wkNQVBF(})34wu1r)~sJgCfhEpX$<&iqiY!gQEOnR&auE`IC%RQXt7RcCJnUKNTm5(Dv6G?5fhCY36-HT zt&t}8{Pr#;F5Lq+Cy0AAYA7LF&5}*B<~k(OWHwQdr}v-}SatrBS$)o9DXlxufZvWw ze$Kt~B!MK3$QOD6Sbo~WIpnFYA=A@`01_u#v1eewVVYqN9jBWMHfn)kOxHvW>%Fy; z$cA33(j0isOfeRVOt$wqfR(<-ZJv74P#H11TG*7-kK)qEnJ)K-JN2OIphZ+$|a=9FZRYk(VEM9*= zrW8`>FVJkY@DfSfh>)SgC=K|U#(169XcG|$;<<>*jxsWmR3|FL&DdKXHLd(0#iPz)<%t(iSiTk^J%h#5+qQ7iCtpKjVlP1u615t5i&k*l>pw?t+YUX^ z)0zatzUhw@`YT{ilTg_Iwu5zOeUkX(q*B!q28>&znR2;2Nd1-Cp2K| zh7?MF(hq|t7JGUY2`NRC>E)!ie3|8k9*A@XFP#+I!nI z-1zyoQrmSmQVMz(_w)Sue$KfUorjR=#J@)GyJ6b|WbKyDw5FXCbpRv_MI7q07A}?A z4r@x#4c+N|>;vuVvQ!sEl3<0kw#zSfZiYa;RyX3G+wa}Z@Qz*Fdi70=kLZVMig_yKGQRNl^?ss86NN&x)fO^g&Xgz$ znIcmY6Gl5tYfYTQrs1FKUxdo!ShQvxn@%{L`m#d^R&K`2oXJF@VPfrzWrKC zr2&*mXeh;Dul*d0HXn)bYdiXRGuaQ#Mw2LN;roGc9ZeEL z3IL?B#uieTzERX{A`pfl<@-Kfp^ud(U&!ErM>BZHaTJ%YLHl8X6`XJtj$AiQvw2Pr#yuxiHh@?nnYdX;3I?&IZtkiP zVE+wR`mi=>KebLr$zrQm4kH0peIO)q|GTAteMY~s{fNG;& zzb#4PpDC@s5A2~E|E>^66iamD0UJU!8ZYs~@Qusobyu3rrl=)w!s|ZC+LJFzz2BvC z!?(%@%_LRiwT`7eHTGf(1GZ+i`E*R4%;$+W_q zUl9u>E|!#;(CHBym;}x_!X5XqR=4JC>~O)&J;&C?w=XPxWvNRmweK!!GCJXOudT3# zTJ8U&0hLC*!SuuwlVcO?+_97G+wNn}&JkwEXNcm+WHlzVrd*ywgUK|shEi_{txV=) zKqv46Lupn@p@pWeZvYTXjEz&Rmd$$Eo&i>!^Efs?_Ql394bQjBO>G$&&E8wCWb5bO zLUn2{QL}+gB9@=}2#$W~2l4W~NRcKF_RU^t*Rt7}S0T-;5w`L`x@kM3wf$$@GM6Pk zqpkOChXrh%kK1mb(y=YDT{%^wia)YN4PE```u4y4xLKZ_Ekvzmn8dMYJJ^yWNj(4g zknaV5sZ`5f8d$XG7C_UDe|Lx@ALu2uZsY{wS4);JKQ&I`Y!pTKs}JC`w|<4(k~QfN zoRi&1ky1#(dJ45(TeA)JaGTj?M|W}4m*393#5%qdMk4><;|}K~Z+r!7H>?G)vmK`| zTeXKJ|y4+m%ps*jEU6(HtR-H&= zKq5{O8nrr8{|Z3!+xXrw_Uzuv^wbp1YTdBTW@l%pRjc^YcnYBfWO6w}zt&1oC>9Cx zS^5Y1$!0R9gm>v5{!X=AMg|!&{Y%*Y$**R^g-=aI9voI+dG~$X_N8|a&3}|q5H+ea zdzWz3i{Hbd1CBvsyC$1CQWLEN6W#)uv~sc@fjjJ(KHyj$HO@7JUC4Pcr;Ecy{{IlO|46uAD+kG7CK4(o| zvw#9UV)Vv zS%6~!(*jvedKWXt_kFGPIoio;ToABBICOx8SPAZNjUDEAoLJV8)kZJ5?=7H(Fy?hiY2(7#Tk18hv$>E&DZcWtFYxD|{~qvB zNWwxdhrQ)1lr|k^xkgwI6H$|`UwJ1}H(o;0YC_T^-#f^L=e>s|N1g6^*Cc@SWh&Hd zi(z)02^JtN5L!svEU|t^9hGPsT-wAJ3)|bkm*~_i%`GcKr-v!)no!jC?4*3>waMhQ ze{7Czxz5v35;PihS#Mi@7mL00mP&;A-1zo8@4CFzYJ4@5&He?5>BfI5#4-6^y77RI z0L@2(eDGw+Nst#EH+!Z2Hb3i z1t(11%*6&la6pO6^Ij zva3*dCWFc^UCk*U{3+Q*E5WVyY0aJ+FXi5EeSqr3D9y?=nOuRD7e14Np7;s~a{&0M z5N8s4W(kq#bP^wjsNxCN^2l}cbTL0=s)ZiJ%F2{1z_GIv8%*NFQh&DQY?Px)0JH%q zB@#rnGGjMiLG9if)%bOPj%P-OqD;1sX*HXE5=SVdj0v3v9R}g}lC`U+qd57+j@xeg z25>jsc#!zvbYoLCn}79^6)PT%&`bRwzzcE|jyi_}ANL}Ho&i9c5`aRue(&u`YwM5C zV(YlR^V$|z)QZa3C|kb!F@`Vs8R!Jx^Evmi592v6dyWAeCq1&jMx(WDb|$P+nNxOi zt6N%F$6Ua`dF^H-whJf=l+|Ei9=8oMEit}Bm>-X8XYqm7qC(=70w#g zT~o9NMGW|;_7ecM6|1deV12RuN{9|uthxDyTlvnXzRH%Hx1fYiD@j;&{u4R+d2erf zBc<%DR<+EQuf3Ov>;8(08Wcj0a!YZ<>psiUBTwI#jS7pk7%5^;AcVkMfZ1g$|CmUW zgOw`5^Q2iorN4je->uX~2TK+wwjPuma-el>3ujmY+gC?Zo!CQtY!_44{aM%Vy*`;9 z*`Zq1ir=VKr9dD=Dhiv#vDSiWApJXAt>#Thocu+4^6$VT-FOfKPB#wn!_2oz1N{dD zL6Dcm8%GeXK9B<*^Fs2yCC~}|Yxl=5^rD2fuc_(_>`cb&$7=9;X(=UTAzAWd)v;aN zGN0+}n%CRv?dv0x2|4(rqjI-=A+NO;i69Q2&GAv1XdU~8E*V@Nd0mq^b71_8v{ z%62S~OxxnfXqeT@NHju9gcqQM2U6k*iRXd9?&+juG%2mt7?%1pcJIhKUqCA{piXmU zjLGeHP#L;|>6P{6WcMX&V|D34g zr@&si@jpO|?&+f&|5PDpHjfK}@V$k;(y^sde^0Ynmshw5QeCADzUG{4N-y@sNa`f3J^Qt$$n#D^O({Tz@ zbx@jiF~Cs)(88rJby#NsL~!=G;9{N9L1v(1I8%e})psNsSgX4wJA0q9fpvj?R6DMn z2b`~c^2-d}vxBArPkJ0NuMn`}`18={eWlUX^cY*d^+CpNxC|NBDHaN}`d4xI%RWN? z>Wv7eVQ)|I+Yc%l>>*DZq+FV^2^GiCtkSAgNSX~2r4fDraRY=vHya4wL&p)B-U0H9 zmLY_Pkb+2ww!R$%jzU4KG&)JpQIq=A9+SzGciv6?o*Q&yY^Q2WjEH{T%mz$q>#^Q zm8%~btyE6Q=5ouW6oG8inYw;A)jR${{iu^U@UTOezIGh3<}mtJtv63}Sd1mlnjjZe zbw^o@9=ESu99Ycp&zWyjx0=k{dZigayyj1r^5tTIXTSJ4EMK{N;c0#8sz2M=Mf;^a zb7SKEz{Xy~#RI2oXHk^FWhJDF33fQ2x`=40j&{BX>=4#lNWS-H`? zmib--3<8BllSD0&L=iP=Ox<=BnZ_)BR6)c|lTFP{PbK5KhP^n7gjUM_37Fm{prw?F z^kfY!rdsvJ)@GxAIq;Kgp}6CJ9%#BDPU;<`8~?PixZbQk10kN%(^uM1>K_Pw-#4=! zjYf@pPcLHWCKkmCO5GWdI%kF&(Oyfp*O{A}?lWXc18Ih<04uAt0hc_tSz4_ar4-W7KyiRlJ_HTQ&oWrd z&{Ue)$uYF>2t`6G0o|%Hy=Rob^QqOU03@+l2a_F1*(Ux8g%C}Zs3{f4+muqfHF~QM z;^#7(y%W%M<9?%Sz}Agg?8&Q=R%@hLZ>$S4nasbE38E;HK@ievG)QK~Xbs=Zp1W?N zR-Ps7>BG+zzz@&}+uFc3vucBnrAVzcQKM$qKKESw3%32@D=hEvkXlnI&zV2;`b?Qy zuDj6~xGh_;j7%mAZU`LxdfHF*u4If@7;JGC|5K$d727#Sq+5FT$7rPu?;7DNpZ*HJ{q|3( zmn&p5If5WVn9H;Lv`11{wz>@#n&B&cZ-@dyC3rfaAv0`x%Ig^1a1g?}G+X9h*NplUNepu?kiwM7 z>a!C>4|h z`$wOmyyZ%Qs7j+UN0P+U%4LKQ_`YvU%KrANKQJ~m&5Bja=^q?GxKsVYrT;qRFXx6W z9INU$j=AKIe`Cw_HzN|57#-u*8*ZTywOF-gHDM-nGA7Zv&EkTBcEQjFKVbuxbIcB5 zZQ9xAo^wC#Ckr^sb7g+=y`S-!cYcIBZn(|ZAqWK0^NDm~>;=|6^l9`iUV+k385`l= zUwxI@-dzZt7@wP-gHK@pM?44Vd6ut?qmJ+SB5t*ej$EtRG@ufOA;n@3Q5>25 zNs^dN3Smljei$f#IF6f1lFX?jnTSm`qkign-Y4?8!l!}10K@;66zA?7PMD(`|8F8h zspEwZ&-Fe3piDkL*f%(^JeMnkDoNzr>fYKDC#|u6xn7IcCOplaoMPhd3sQV&>OFO35K7pTO++WPM^}_iU2H%Y=|7+gNwN zMlO8(!#VlPQw)vT$}SdQj5!&A?sWInW}S(#3BLQqZ*k)#R~tEhfxr`jQyy{dJXQPY z6pKaBu1?wlvNKpEJ;VZ;hzp9&K05tB=)49F*Wy0vTnWq|#N7yS&jU#rpvzLr6zInPyC_K5lnFB@DtM#}{WU_$B@*)4TrTVT zzR+5cC`A}%@ce){foiovlqmAWUIzLGP|XUH)6=G0mb4n?2~#UYtzI?5pGs-g?!P~4 zH*YN8e(SBj8sD*VI9JG@ABN!}wR$}eXbL?APQK_I9`U$GuwnBCq$d|1;xyszb9k`A zW_7{b%pAY?{?GW^Pk&F;icIDs5S;szNAQ$qJ(+wyZxI6AMLS35l%o?SxdWl@QqGbV zUAtolVV>^qx$9o8yZUNk_|EZtK}CoS+&>NQy9 zH%GpvHnE$Vzxa06mL#p&@vWEs_SY8zI{}uj*&rrHcbBx*1Hf9X^&!6J?^h@ki%F6! zk5s(I^ZhVtMfjdK+iEm+BWU`bKdH37I*Fr^Vxf1YTCZ*es&wN48{*i~0Nwb18!~A$ zS1YZ0wdNsV7@nEQW)GKv->bFqq?DfT2htBi)oRoO5T>jKg8sgKwARcYH{yj+5~13X z`g4_8oz3SH&-W{9_TPWU`1ttHUDsUm(Nb^!7T}RVCiA3BE_bx&d4ryiD3!2!zjd7d z*o!#vjFTw!l{%E6G@V5>7cPNS%N2e;UuOF2Pk&3?iV;GXoAG0w{}dkf*oPZO&ikWJ z+iTkI(CsJNeTe{>=5izr;Kc)ao^+Cnpg?5O^LJJpZ{I ze&msS_oJU+a_=~mdJUlz$GqoNAtv`uR7rx<5lsRd)aRyWe^o@DDmf zY3T}4tyKMHv(X2X00DSF6(RNtDH9-}8~;=xPVBPO9!!yslXz1cwJuDQI$27&LVDg} zG{Ot~Y~SFbAeYPgz9;>_551Y0DWR24VwIrcq~2^cDpJZ(Aw@lkqDm6Qdu5_;(UO0( zRB{85^c8!QYEutyV_jBp&rWFG`e}4TGSW zD0NA#S>J0vX)fv;MEO$8jg1{q8d&uFVo&c8Qp!V0rT*f?G|N}5;<3+uGN+$+ z1_Mh5@!DlJ6ZcT ztosL?4mQ{J4!cLR(Bh*bqfAfF^3(7Age_NGXVjyW5H#y`3WXxgW|Ky%!Kw`#c*-kZ z&T*%mMqitV(QGt$&6A$W9oOB6@Ut`Lr zpKw82!p1f67a)z8aIRhVh{h z;zSvvyS`GtVV%{g6%ep=?HbN{%%eEz?6X+4ZXME^)NIu2y!5e;=k6PCCJ2iF^qu`U zRvmRZyMFQ+8Z(n5Dke9$oO#VOGs&MQOD@I{(M&W5H~DhrXtC5P?DAQxz;)BKon&j% zW8CnuR}c!#qD(Y(&F_BuHsJGg<3Tp~*|&&pbmM<8f?BP5sPMe!hhccyij`|NN+C=G zSfdC+pOu@}a^^+na>`k!(m&AWB2DKEqqFF<6K;y6T$=I%I&HZ2(l$5v{z(Sfm92qF zxx(d_T*2SxDcyJ9v;`3p?8>65P|X_V;|jfp$2zVb`iQt55~6GNBX=-Lx> zqZ`Y6ioGZI_Vu6V1^(F*v9?s|^8o6N8UsrPIOwQDIp^W$vwr`L1c8qb5=7^l`u(Rt zHYjzbVZ;5sc4c`w4|dwGwT3u~8QQUvZQFM6+aLXcdv3gqdbMVV0L4NN1O0=Pt7Rj+ zSz5A)6V5-66V5!70}egJWHTc>cT%g>*tu;x6MObho|)y|yY56s2}!*^zi%&7qk9ov zKuak~>kgo>Vm*^vu0i@fx&9@rzUUdOI^$9JQX=jCiU8qaqvO=+OYme$6i5d|)6Z=y zXior+mAL@w(=X9Q% z!OdXqCnM5k5K(KGo}A|1d$ut$w2P}R{Rem5c018roqWDvsN0QZ!zcy>L11QSmaJdP zX%BxGJ;egW!2xEcr@8d^f1p;bFtTkMjY2+P2%bG~DH4R<)nB@3AC z{(#5QaIwzQT2YxR8^Xf%mtRA02M(2<+k3!6hO>x83 z*HWw3jY>f#mo@ZeDFnD#jP76!aKE8#B7iF~-SK>_HO*#=sfkH0|NG^9_eX_$c9;y>C|c!s&jKxXJ^Uyp<$+(K91H%&odd3 z2C}(4VKzrk{~%s2$Ka~fEMB{gjYl3$b8ZfqD04jU0+Z>8`Arr|tUB%Cl-6uc9belx z;R#Ee(L-oz(UhWp2j*)q^EQcG&4T;jVASagS+pzn_d6H-Z^l|vV2+m z7ZJ&ly6Q^Zf7`bC7RS~X7=Ebn(%827Y_(BHM#S88R<5dCJ+^Y+X8I}i+vn`u=lK`- z!(abho`2#gu1+sypL23eY;EQED2%{+3>v491n;VrOfU(VTxV+`9%BNsY(rI5lIT#^ zl@O6qnrgjbIGc0-b#EXZ4KYc=-krPj#$%HHKvD*RAY^vyCdGQm>CqwDLqF2&-I$Wi zUd!zD??AB~t|w3}8*`+0X#wt9vQE3)RyO^aK)1(|Urz^WkGt4GE4HewE=ybh3Uym4 zH3BZ^@L!0Ia5{8Y0e?_d<)hyF-yHM?UpziK{A>^guc@k1ug+FH`ul&ymcX@?B|3abWMkYbe(n&QFgivw|vL zv$2NhTi#DNoM8RVT^4GTkV{iKQ?yB_)q`n`?D6bg=xpb$)h&}idvt+jM^qlD9KQA_ z69j}|L>PEqVf=iItnZ8l5lZ!*T*Eb@Yji*uRx za(a5kqksC>^hX1EcV{#nk_>vx@7-i^W5IYjmVCG{3ZxXLwZ?fzRa8h+PZXdMg<0xlG0e3q(ng^bBerD6jhE_Fuix5&wkxEbN}^klqP?FFeDueP)dpN zdG+umxu0_l$tXk>fokGo9E*bkp82ysWjLCUsU>*G%9`85$xa2bn|ow5UV~~k`;CHj ziOgS*u@jPMtCs7YiFUel+fX2!x-p8LQd$K;fcJ&P`^tM4(&7IV0xTUm{F~uyHr~XW z@AdGxFbFk@ep#2}qAnA%buWyf=nMs{fLC>0+1gpJoG!9rI719jX_$ZDU42G^OOT2S_+)Gs$$4VQe z^DINcL*tme8#k!(Qr@mtDC*i#=Y{l7W)JuE`eVsdyS%(Yh(l{x{6!sD+bp0CQ64D5 zw9jh2L`M;W$&BUl67QOYU1@oLrnXj8jr?_7Twr=B!`pY5-@VJ?&V9r=W^1z5inHTG zJm9s$L@`Of&*H`{ri+{Md~uS>b*6iBR_7P|`LFyUr?0#~oX3S`~#T5o3%zLpmDs#*ciQyAKW+O{PLJ-g$aW zvp$Mrx&G?jEV!2jdN_%Fz5RaxaZtcH@db1|W*1Y(PkOZSi z-10AYnO^A{b<^~1wo!N<*^bs)w)aP4-u$7DP^{Oa*&5}S6wm$*ci;G0uCB(Iy&GHg zq1p9cRLfz;wTK#{z$-AV+%$x=+G?oX>$x7Py`2iGiBpDec|YaRbHq^)#-m|>b#fZe z;U7asI2}4zpBrzjIX~NkO6hMIj>mUr^F^G*DeKJ|DKlw>ttxR<4fp0KYehZu_wUo2 zOfkTCD#U?ST6z_K^{c-ORf*M_H+<-$vVdmIyC`YWBZ(8HiyNXGf+(V{O1xG=DA{Ji z)%iKu@`|#^n=uMrX5GK~?9-xfvOMGN>)*hQn|F|bZCVyC>7qzad=TFl|<1bO{@$Gao7cMBxVQi z9qY4Gmgi>-C)2j6K?tjv&%ZMZ(AbQvY!`yG)(U}+<_kXgHQ&g^(W@Lj`y|Sp@aW$< z?#$jK&+Z$>Q67v&;eqyu=+@YR%0uNK)H@>(z=dN_f}jz9>rI`1nv%&1kwu zvYqsajG#8+R0>%vZZR57@ZL)~>Q8?0=UASdFqq%qoge!o^V@fEt${2aPdkKDYb}Z? zuS%jcWg11y@7%>0-ISt`X8y;%^oSgb_u>@O#?XQg)8UKH^UFVWj`mJ^J5ii4neEB5 zIoGmVK|?sZvR5e{ouIw$lcX`1Rd?fEjxhtT04M@KjvI(Wb? z_7?9*hQph;Zr=$un-!&2y!#WMMj3o_qRE{0 zr~wb?=F_vwLsLL#cIJS}wh0`rz#|L1YdNp#s*?2M zY_lQK0r_T4n^?5g+aY91tL^{kTU%p{mg^zgYRXa+hxB&Js*)0$YQ2x+gp}I$Dx}1f zq&?|B-CW$J*ksT?#3Sczp%5~W{!dlV{PhWu%CXLG2}8C^pUI+IFRMIw-5W@f9%+BT zcrqnhE!zaUb<71O5OQu*6ev)QAwq~&0dkMJ*@=+NWN$8tvRIyT(;m48{$$NA)wv-= zs6Fk#&X#FGj%g=J3nBxdZuYfo)3#-=_HaF)O(|{YO&1LMeX6R|d6|cRrNcjmj&M43 zsBQh}zhmzjfOOfp?MhmoG{T+pTPQsXW$W3tZQHhO+qSK19n8VZnNMma@6@VYNowlM zeJ;ITf2F#=R=WRtZ`SPWwO6dQz0G=!>1>LZJjjp4Nerr?q8J?1MMWi3KWvu7VAy2( z2uU2n!m_62{LT&Jc>$$KFjSkVz#SkG@&Uly2oKAE&w&`0#A8i^sw$Yf2^ChbAhc3K zDvEw(cki5HKAR$mV-gt@JX~^Jv2O+W2Gj6<$=A54G!m`+*2>YH$fd!1clHjUJFMAZ zMEBU={WY(bNKO9#0irmT=V(ZT#NWP!ECom6ahf6F^57}v&py6v?mqR?iLym7JBTFm z4g^{Q+I=TmNPxWV@hSZi~%cpPph)5|#LKbxyg#${M@ZRZ7PSGi)q%luL#a$%DtB|M>^8X(p);oMYJflty z4oRd63iocE7C-n^UwD5MH|KGnNNcPo5x?{g8xaZ#A{~;EU!DL$V3)nwY|v_PC9p=J zHyk656QeB3Zl|Zw;)T%Wa9XsOEv6?)n!Y^Uu9Ld1F*rQJ-qA5Y^;2}2WJm~#c?L#2 z^4B^5Sudv8ZqZ>SenJ^>mFHnTfKzcQtbjKpDi%-*$+-o}m{gaXhk}xb!$N5b4d*n; ze!+nse826QwKT|!0+W}#jPI$W_C<>jAfPEX$ZJPn@}BZMiD+ESOer#KtrVhIbNcb* z+Dmb#e2Vv`Izp8fh~pIOQwn9OvI5^lNJmK&6B4mRoctb{YNPbJfx_K8w^0=NaJ5*x z-fkDaS?Jvl)C!8k0Z$h8p{oGNj?2k}Q*b_igUjpFId=k2I;aa2_pYPPS18J@T`uOj z%(we#uXnZ6YKu0)Y0)B%;{9%~-|uvLI*Jn@idfWHRSlM_CI3!{jfR?Pt)G5DvT4y0PKy@( z-e9<0uW@$ojxCBDhmTx?7SqhlX6=YXYp2R``36Jcv8Y{iqDd07#gx8b5K9=x4sxG^ zOgX{wuYXq%DO(u?MX&%XW%EYF20nk2#4)$rPZJy*K7t3|g)HkZ+JQt!A#5NBVC2*^ zBrZNjYauM|bE_b=J5Cy1fr5#~ayo7}nPAW#vJkf1tZ{L6&wYn6mboNj#U;T=e_8{Q zGlG0K1cvuYeNLQWFdFm!-#Ch+D2^w;_cfn4JM7{kGmVuH32Mtmgt;2XR(4%|4geuy z`7KLO%XFH9?4l8sTg?j6gyM_`WT;>E`qxep6{E!qq9vRbEvB>kuPv)$WUbYQhbMU5 z8@w?T2SP9(V~tN}TWee`i7R4+(BhoGM3s?qkbIAyu9M%E5$rb4VN4U{ z%T*Pp$pkH42rc2XXwjJFP2)6$jx_FHoKbBhgE|`>ie*riX(}18Nf7QBBr!hO-Nj_I zLmQmNG?EKZK98dnn;(dQiqm!t_aj&K4kx#cqS(oWtEzEzH(D!bMKW-5Ypa0GcEe+7 zmT{k?=oa{N1mMUgk$jANBTP^?;~?M7rZp93GG)fT$9ww_H5v6k)tcD?~nD)tHFkS zOBAC$xrB8&ak$=26eCiKMyzq9P&GBGvKXMnRcIre7A+LipeXa*ZNBNIDP582fDF3N zH=yC9vEjfcQ%e$MfQ5-7_4WCX8gzE%9RF-Sb2U5R>XS0)yS#`OC4>=F;{*yED6N8a zBmf>~{s>^dRat|_I7QY_l5HjO5}tEYT48^AzTx{bN>YloM{>$t3s@l_k`o(X-Mbu~ zycoyVUdll@>vVy##AdY&(^Vw!IEqN5BE5$7WF9&a$P}S*TDrYQPLL)EhJz70Stovg z?w|a`&%Amst$sY7-P)W#_ILP~ANe}`?YDmp{_W?#3!AfBPAp(7{673|BMtCdEd)~< zcvvSS5J@y$CeZ8k_|G_s;@DbSqs3Kd38zJi-JOGjZl~81RTOsj4rn@QjYV1JvU~s_ z@?17p?}rxF;OL-8(FjTOx;-R@WZ>5JcgcF$mqo}pPzM=mAuq#o>;snW&9u>x`<1^K zuwHf@B`Ft48&CGIKiT($$Lqox9yX9Pqlo=jC?@y)bQZ}#uGKKEmd7B>2c=mG10zdV zZ@Df{zFj-Aad|K(H?0;Fy0Qf;mhyk0Bt7f(c<*99#bPm!s;cS~%k@ioi)ViGZC`{> ze33n0kJh(gp7}f6_@(c~-+s$y;NHLeHHlvY1u%w96lY<9r@SM0ogj#KB80>#HB&Vf z^EnG_tA-vy8CqP0mT+3MSZ`L1u?BTnsr7n|b-rQVLq}S2CmIl+GY16+YXM4$Ysq^k zg-)-J7r*kgI66L|{XdF=Npz)jFsRC`TIi)_txWTHae@#HBLPXIyX&Fg3Mz#c{PUxT zMW36^3bXl?qpX&^iI&DIZD1v1Eps_aazZ3CAp{+elX%H_OByyq>z!`g;T2ccX z>?L>P>x!%=Zy^^?G#-r3c%$^CqZr#_%R=04x2HPYZc>!_+u2sLfi`y`AxE{D`;5@ zDTdC|B+Jp_Dzt>tqD5Ke$Nll>TDRZV98{s`g9e#i0z|Sa5H<*=xr{_88d`EAEQIV2 zoX}vskj2mxL|JBBu7%GJ79>j~5ijn=ysxfmH(*m-U_%p8I06gvBRWY*BHQhT%CVv- zT-^`^#%IcZOLu*>?NbX7q0RSDTU;LWaBkS~_qlm5u7w2bywL;*e zP8cCmAx{wrG;Bg@LP%EL$G}Q7)s+=cYf7@?ZX88#Ya{BBn?L`x-}r`$yLW$~+wJD# z@ecOJV~p$;H-75t@vq5aTWxm-?d!4??vJSd~A?rN=)|$A%6`__E2$WawzGpI3w%u$o zUCeO%?kyIMPS5XA$z)_&3M3Q=EM%cI4$zIbPP^O)Sd}l=G14G8s4&S68%8)Rn%vw! z7cyhi;%Z)$R%nDc0B|t(xf2_Z0AOq=2lr8lyfrv=r?rrTrffOsbT}2MmEv^b*^TGj z$S&dt7dcwk@VS?AOMG_{m(&5Vrl>z2^ZVAD6%0&YDSguI^sWKKMO~DiaQpg=Z@qW# z&U`w(uvM93lqsaw{}E4p)5qcFZ~Z9pJI{$I!Mz%r&!0WSZ6H{_y0PH2>3A@7*Cugl zBT5NdT!EHwTC~WEyt`eml8f27Ez5#Z-zbS)abh^Y;!^#HYy>_hvU_lVz5N3m9iE`y z>tlZZ9DH^}k^)<#5#~PtTKh}%;`1d6EIFmmG7tHT;>HXE1B7YHH3AJ-a9EwOtO$IS(ZC zsf%@9tHF~Stxc-A*h=2U%PsH7S_#;%C zh1mJ{dL5~sMeUY3U~|sWNpA=xQC?XT)n>Ug)|%(h;tI5c)1n1)0XzHq{WQx|uRlN{ zi+=%BsX0}eK%xZ6;{;M+tvDFFiut(H!Fs)Bf_piiv4wdP#}`3DJxx+4Z+0p$Sg(k) zj3Q*;N`pf{DNL}(Y06)#%?dI##b!ly7dj-!)S)LtYv3W@$7^ZeDV}bXganSrxIkQ0 zRn8wRU$0Q+xi{&w7I7ShtAEOKy*PnWbrBo;6;T3}cZ1P{LX5$1h+%)A;y9i(#&oY( zSnu~Et=~me<~wd&f9}~kcW!T+#$Y@gVt>>_a`RvC+_!uz{_->55zqX}_hb6_-y@%% zQJ_J7LtuxaqzNIV!!c}>+9XL#lBS5FD2=0djTTp-C7c#527}@B;?CXEBuOhBMHmc6 zkSQDvsy1XBVG63+B(ZKSf=IySI_Q#|7dZ#}EaNJjFmg^-4hSC& z{ENFbtX1*aX8YbLpSb%H$0G9b1Ar`T)@y}LTAxTon@sLy`+GzNG079i5BOU42 zeS3dzpTE1^9;Xw{YRy_4l8jO=k7Ygaa6gQ;goGT?SQtOu6=^zfH+945&$QFYBCTHj z>F@i23J=G{e7*eai?e(0cXoRE%eQXbJiT-0H1GEZb~GGen8g?t7r6eDUyVn<{$ud> zU-rRx=GT4*^IOkwvA3qop_CU7SP=YO8msa=2YE71x@A>1XmJ%s;VOCbo2w_ zQJqd#2*pa0-h`1uSlRCeNEx`@K16Z0b96+Ra2zGjP&Btx0K)s!rARB!w-7>OlW2p- ztQ=ROn$zBKfcq+_mB~6C^d~zUn3D%h54J9mHQLBMmmTrTn~&5$NBj`wyj)FlS_Iqv-2H{-89@4fKH zpY`te$M5|TJo^W~i2G0dGuG2{lx2mY5toQ0Qx-}W#a2~CJ_3-U#Z_ntr$vkPc9m}P zZP!}M06|3&G?iS94AziA-n!{E>+Jj^nflRgpyt(DbD8Cx{R4Ee42U$>rqNnS)4r}H zP`wF)V+y!buMgwWx*Tr#yNNGj{fH&+Exc6un#njHm#|GYU z9zO2_!mIOy92s?FgOT(dBZ(rc7IO%AUZ(cso%s&I`;+LsYRn2biqFjc@d@^J4@i)F zXHyT*%MRD8RfPW-Ie=e@lk|N|QGW6C-o4*GKR-L$tk=bIKC8Ezm8r@t`k6+rSwo#Y zhtuEuVLbl5Ux-J)`BU*%U-ChC>}S6n&;HI&;nrXMo|v*WNRrfO9W?+3XmJ%vdU{O5TSBkb$2Q;adQQ_RIN7sY%Z5-jraUQz zOEGx(WAgt=C?}?*d~$SzJm0ck`Sw5#ZuzYc2uVx7p0oig0*#2#76jAtGfZa}*lstB zoU%@*yLWi_h-vCE{_~gv_|7!R-fepC>;o3}FTN9H^LLx&`uWvjIV;PmDT^FRS&W8# z^mPrjyo+>xiurH<5T5&?FU6BT_@yXrKaI_DMFk=hHi|FW;tI5c)1rk^YNM6TSIdQ6 zF6PMBYfw6@#p^2=^r1wm%q;?I8qKK|3lP>=40rZX$1yC`TSMeRINrTju68vqO_;X{ zi!a?}MwA9oFfcPh;rY;Frh{xa;xY-0oND8v3RN~Qso zkfU>hj$^44QWQbdbwv`FTo1_>BC?Q|2_rn$2M90Sh8%zKD_(^`e@NS&oyjiH*nEET z&go>dqw!xy4&c{L4zGP8fcLR=^Yz>1`ls*RzWvl@wRwKCUeBtk%8NX&^X=Ni8b~8h za4=9MBHKU+v{qWrt+hS0xC$-dv}h4&y--SRCzIXs`1l% zQRiC>1|#h5?BnG48oJ$X5K)9sBv>Q)70IB8z`=$b6%eff8|>vrp)3k$p7F$acKeq9 zE-Qk8Bnek2y+p1Gkto$J%el44($h3Uo>N7b8rtfVBmDPa06Yoco7bDwCssxAUZ|VT zt+&PZ-n(_{m+zh4dTM%hcKz<@>G@{8UT!z*4UEZ?IH}_}uF%-)XzZT?_!qRe3N7KZ zXptn@Eo<#`wOZDBv1L@Sn$G|Qv0Bm48ZNnRozlz`ge>tKta-y^Hx7;;Va{c-nBnx9 zr%>cMuMeA252>T!LoNvnWa|cKxgSC_O8!TKIm#fE{ zvi_6#bozx+q`w5f8CtvmTEc13A}`9qEM`-4aeju)a)I+Zx2b?)ZHh>rAG%7VVr>iP z^qh7Aw*hdlJUn?3i$Eh4Azv)yFY+LQ2{sBUtgmq=eSg;HH>~xBlg1I1msLkG5GRx} zFP96P1s1)s@U!0^^8W*QzB37p6TS!k zzYPjo<(cr1Z{;&Ck(x0zW!J;O2#qniJLvbc(n*B>b(8?+68(I41@i^9sXtz6^`3c= zzyD^v`k<<+J^;Xv1DK-4e}tBBTC}j%mQftrD2|Y&8J6=ojF?G6!Tsg!ZCJd)qzu3= zZ=r&L`b95)1%~4ZMw1CnUi1=9bBUB$27f=6`)4U3t%puG@i%LLE-gzPL`IBk`bmO* zZ%7hau2;^>O~})IM-*$w8a`|mF6!cMA60pk8ekb6m1QaY3h_w|PzvB6P&!QyiZUPL{~iXw3cx9V zM*;j5fa_@S{}wS?wD>O|NfTwQU1Ys(r;~NCyK{i`Y>KKZWaUqZYM`A^z}Jaz-^rXU ztRo#2X;$4w-7Zy3)i%fJ^=I+O%U&)K4dG?MZXN#!&OgAhotiX~BO zx43un24?dM5@$3Rz`}ALmsjy@Y>*@J#B({P;+v?~E-mWjw$`H8A0jUcbkdZOPQ6^Q z_;b9w&)irja?m6dh`LY9IYy1pBJ2Kl_RaxVmMq=E-%gf!q(0Yb8-wn#`E1X#ZQHhO z+tvs@xP5INmXO--_8&WTM#X&^v}?`mICXC2$;`@**sFf6GwOFJ${s1?|%-yAu^1n85$%4u@(l%`{w*PIb^a# z+C}ci9w7?QmK?;OEtdL*h+PJyN}ig^GVGZh={S>y1&Qd)%Edi1xn2gqgxTAKjewHp zlaue#&fTI(mu9JGsYP*Q>pfvu0I()*C@h3XWj;q90FvIkaE>fWB;wh)ctQT#47axE zce~bg)EO$r4}uC)Oz~tUoGGSAvLw5Pw+=d;3++~`9Y?X(-&|+y(gh05#zeCKf=O3O zz`A<^*nc(F)74g6L@nnQ7Z`7DG3@v8{J_uz(z%u<37yS#;_;a6wX5>e3j%bK$opa) zeQiafA*1bWt}GsvC~VN#rrKGSnKyV;QJ*R1vLES(a6X{r+O1TFW2*6f_$R$18?<`b-`>s248n zV2UZ;3#eg#FrySdwz6y2i%R8kJxNn`-hCgdH{U{H)QZg_M_$BlG+Hb!tPq9;6R~KU z@_Oq({XNJ3^WQ`{x;GfH|AA)<;ds7JG9GdI-S0$43F}ubirZ+pSeA%kePazkjvWsN zxJnWDA?xc`D2fuZ5=-Yop(Nk_*VnJgCLRVMkIL~6dOaZ`t+fzFdv1<$sgkP;NK}@H z@^q5Ka_@uTKsIvE4T6-XV77btlma*=n zEfz~N#d2BX=a+7|na0YpY>GO|Boe_GoJoP-s6#hu4SeMi1O+agKOOU+2=v zgKg5C%$SVT25d#iDHFTicrw&9qu= z`P*KvOSxPXk{OMLl5UIRNPKAeosJM+t<|E@XyQ0R60(tpVQAbm#aBi)f8P(R)k2ac zaz94c6O@uh0N3+?+?HBr+KPTE$IJjFN#4CDDKss$7_<-#v9V@$Jzt(vrBaj6BB?>0 z$t({FAr!5(L^VNJ!1Fx0*KTJUzgDL?J4e~`81*{(()sfzw>LI^TDk6b02xnHxSkuL zbsLxi?gn-law(aA3xFC>2F{wF4&VZ*;rmB`-vi!^QWt=TDc&cj=gllJ#T4%)mR;9< z!@}z7XQxTr?rd#|4w_#oGk@q1#afl_`Ud^YO~O)%t&11wT)s@9T$a?7)E-c>d6!Bh z;v|wOd%!3gCv0r2$tFBAH!p?r;dn%^+m(&KR4OAgI%oh%9c^!K$%gB=F5T|7Y|fz{ zAVQc~My*9iXS29la*9 zJD~MMgMpBf`{?@x^SSEOYjvsp4EjCBu&}=`svm=Rw$POwB8N82DlG+4&aiLNMK$oAO^-}Z37x;8RAiZPp-0X z3ivbN_kqJemnq&WsC%morkLWrgcrEM3k%iqcUH=kThb^|ahk}`WU*31`5sA@;-X}b zu~;Zdk=^$^lJWYZRcXwA&ZCfez22@yG-C-Wqk)UYDJAFM+S-shjYbR6pp>NKhW#FuMnlL}vj&_5BA^5Oiy@b>c|QXNfCD5z#Y90b1ZIJqz%o!kAjkd( z@bkdGc%|aG|KIbQLOs}8V2UZ;OO&+MpWqe3uPp@Oyi(GJECiD16xa79a`D3uvW&I$ zt1`q{tJZ}qk~EQT;fYN-X(5?7jwG!VjmGkg-SYz}oEK|#iH~Qyx!w+7ZT*U* z=3Lj2x=p{|z0R}8I&Jy^n3J|zbF3_{+WOYN{P`d8mcRLPPMy6(aNt4w=A!Ln6WSBq zF+jO;yh5YnG58WS38{%CLOde9cmyuI3ojeXAnBbidlmP+_~jDO$|xO5R;AmOm6Y%2O1>WE`UP3xLl6?lL5zfVTmEC)TWqfsV(|`_?dn&{Pc3Q+V1zd(p42jV+P})bZ@C7 zAx<^^C=w#-^#&*>pxYY}MGD{dP!$KaRAhGdUV>7YQn5^PenC=Bg>qSz>q&uJ(r8u$ z)DdFfV6OL_L6gL>v2u2V zG;@m5~e5x}uoPYN_rB?FD>2*fMy3{3n zFQB+wz^S&$jCDbO<2=hVidL(|-7k3svrEgML8GiC0B9@o;yBKv%|VtD7K+j(X6JCw z7}%jtkcI`KaU>mU2KMaQ`rBZY3XCOyJt)g2iOf#-D-(%Wbpd^y0zj^FEx$|jW-dXm z)8YKd;|zN}hJ!Jla%`<9_r1|_9b9Ep3jnEo$xM#5cu0pmbY~6MheRoo@kr8quICA{ z88ViXB*5NVZso|o{u7zb)F>L&(=>gtL^0{`~tO2^TU03Qc@60ih(DDZ%3F!+)8p*A*^wwYpz?P#Q;IDVE=&W}`TwU?Bu z)#`XWRyxa=x$#Ese$h)Ls;O40oW8Jun%zaX^ETAtL7bICcnf=Qt4;h$9TgPtq5)2t zqT>|l+Arvx$a-dRna0WrXsDDcL8V^b?Rox(J%z~T z!%eE}b-)PtY2ahrYbjon8q_>KIICRe+fA+K^9^CI0G|o`I`9Tyo+N$}q2U3Np};TBl8I$wg*avJAlb-$vT6r%{Ym1n zemv%X69kmc;HU|u0Hbea1vKSQQ&TbGpgGwna;W^gm(HFcjmFZ>oyM`Xv=(0-<4~H4 zjX;7)%gJ>k(OAO>bt)X45M6wPTBRz{q_~E9zBPUml?HQfVylo!nvLDJ+$KY%j_azq zx%qObQu%P@xC>8mqN!h7-voR+PzN3cK1R9D51Gwg^Y|k**Zv9MMZmY28J>f{R{-A) z>|u)kop7d@!Vg2|wnMkQe0k5FZ>d)6cLIK##4>$PwZh#mdxaF>FB~~SB!ZV?a6B9@ zK%;RTsn?kLLq!iF{m-B#MMk;%f^a@I63T+XLToQI3rSZOTyh*71@NTBp)<(dlkWGezg}B_Vog zS^yi>8CM?m+UR>9e?yUZJ#67QkHI2DB z5xzY7);BZib?Eo{XcU2b+jfmdjhLWxSPKA|YBv+LBJWu;kW zQ(dv`yqb(uFm)0kf=q0#t>C4`oLBf`B6_j}CotzTzfIhmQjXDB(%#lP~_x>5MZ=^9))H&9MbD` z2t{HiAsG$~aRr8OWw6u|WuaW*&~qP>Xs8etC|9b5YPI&UrD8dJ5|Ygd@CPP>=m2j} zuJePyHcw7mRgU^f)1Lhv(^mZjI@3P^>?g;RaHg2TaokFhrr$mskG^O$9^Nw?34(ib-DQF%FiN6y!b3-{i{BC^^P%%!-^iJY)W5FhMS+hGTzf`Fl;C z9@Da+yQW)C$V^+cY9Yj&C^K?ss|0ZN#8LX2>$sjL1E+3nUQ%D4Cp8>PQsZ$^vMdXFgDx_AGUzjVU_ZNVy^So>vVmPbc>>?}{vyAXDU) zx(Dg@71B`$P%;pixh{TK#JF*q=*Bu_S|S2Wt8+GS9FV8sa;seXf4s7te{vD(iOj*Vo69y(rcyxA&C>pwHnKJ z-bKGJ3e^OKLP?`Pvsf$#PZF{@V9eTX0gfA0gnxL74Ow=S>wY8fslYK{5%?{gq+f+n z#b++zOfiM$wRavm_=7j>+xr<|5FTpQTmH)O4qA;ixDNA&Zsd*^y+j5&9aquY+TzqZ z-$9zCBGGbXt4kEt(3zG^UD}iLsDgs)GB-2BaL|`cbLXL(C0fbTQSv&ki{vmw1i8y* zUOPc!QeFT#L4fJ-isOkH97|FPa!Y8eUydOm)5`4R^E2{hJ|81`aVGj;;+kMmaI!$I zC7XVCYm>uoc_YI?k8Zb%R-Sb3xsGEaCAp@Fa*S4+u`2Lw7n`Fr;nq0+lH-yz!FUE);n0J3-79I);h;}3EO@0-`8jbM-TEXTn^oYqO$zET@WH@4 zd1@j9{@S!n{~-vz6s>;>Sb4?~&Js(~7(`I30BH(;oFoiAtp^kwdNCF#B{q z4}+|U+RSA47}{*8c_d_UeQUB2%Jl8|DHjDH2_FH`%^$jBa;J)DAK< z&Gw8)0Tl{GoKgv$WkTql@5$Vf>w41Rml+ZQC|9d2+;Xd^V2{Qlr97wB@AtkuPE-F0 zB%1}`7lBnnHXjb0;;D}dDD@epWjZnh^fSQHGl_7fnBw4`+iv}~T{j+j-TC9k8!jT5 z&y}^yTwc3GdC#tEkXQQ#Ok&e!5EYk99hy;U7r%XmdvM>>jS=eX`g(z1GX<^P~ zj?oxJ0F_giypfx**}qXjCa&C*g|;8b-UDDhN5+Xq-c2lGph~*P++qc4QG-Wx($O9i#d7{lMImaHe=#quriU(QtJ4 z>Y;-_U2W7~d-d$Or7TGuF(va{#&N{rZFg|*i(V>Gj?@lJvHs%elUzFTh?ta>s|`xc zd4k5gY>KXI%K7Fk6Y*OYxP0b>_|u4mbdpf1*KzU|W7~GD^XY!_CIWI2k^xOcPAZN$ z-WK+A8)ouI$*_Q=uW}N=44-1#r8VYUa`@zoP?n~$ObQS=ml7h7B@~v=@Ywkr&{DfO z^42$#rlww_9o*Imh{`}lY#J>j4TfBk)I68e)RLszE{RZUr%*t-R1xj8_QEoLqbXg4 zj^l`@PJesbHe7hVPqA1wR@4fCdG2$|H?ZRx>C`GUA*3(}i~hAbUYhC3<4QIq5xM(e zBO5aUz6f{^Pd{v<)aRLY=@@u9@L4D-Q^J|zX^X3uFFp6Rho1Yr%~t!qhyUY0ywPA_ zr|Qd<8jCmI!u>CKxqJ)GH*_Ty14sVz-|=0SLRh3yst_(8053oRe&E^EmHa z+YOQ=5o>_NRn%K;drrH|#+}zq0Bq-%q?L@6jUf{Z@*0m)u1%jA63819Y&4ab-|e}t zYnir@5g;wfo@?iE9CN?&yNTFLho6Ze)MRu6oIiDf_0uQhp5*vaLkK6+me_2XPd=-; zj_1kev5f@IxQiNWp_C@mnH+QTbDzhqLpO`cHNapv5J%E{&d3pR3W5M>;JCJsDAW@r z?D^H5bUNE&`!E>v-N5tjb{%y;k0-SLbThTzF`8t5!P6H5Gqdwnzz04Z%`2XEvpQ44 znPM1?y2FjUuYGI>mBHG~`5r zN7*I@@!u)PGj~8iCavhHTyw|4Llo!dK`FvQh;rR(mg!F)$8q>LrP5w(Bw>8%OjGKI zc=}^Qhz1@8>cCg(OyBARzM2xw6i*8blgJ4w<^^UhwEtFYUT*3DXWaTzqscKr6HM!hOCQA=H=y=F@ z)T7mGQ?1ll*s%-pp-8I(rT}u1u{9SPb=XwbWYd5gXOS21Juk>f!}5g{;ItdMz!F%V zLeu2+7%A9m)1C}A&1Eq`QhFjv8g#o{eD}L@L$#oUQ=0`N!;_~B^IBG7BBwN0G(aZ_ z?)n+I_e!}+v(aX8*B+|%2HR^_EwR+f6+GWF%?JR}JRwnz=Xn4^hDLx?25@)YekYRd zjK%6YRE~3>qtrc*)2z+60f9-O{WLJ*nSu96#~O5u9L}d_apFx0XNsphwz}Je@nG|2xfvLCTd6I76-`hd0j_mnM7DZKuIi{vx#;l$%i~W2+-LS2UKe|=M-zW zwK-hRGh{y5)s`C4Rub(vwjm4@N@&^OAZ_2aMSRbp8)+^si@J8ZHRBYDg|_EN^)am5guwS0>*qD#Yk(s> zgP=V3AAlbRGT?*I`rawwO!1V)c6Ym0s8+sy*UdM*Aqax~y|wkwLCG*@oW|mI+1$6E zyI%4#f#tcCf9Bceq6b_nUZyTR6Sfyo8 zQa^@dEJ@gwpg75i^japBLnQU5eP|2oyMp+N9F{nP(m{Bl7ugK-IjiP6=m=WN@@GGlN33(`=e5HEAqccd$#LazRZ=`)Hj{-RIFo zUJt^+@P&oUzZl6KOEd@}S)}Hk@;}TYoJ@;N0CGRZtPSLMS=X7inds)k8~+ouscVI0 z)&~mZ7l{+8cjXR1%KrUCS`xYUgmm))p5r2I&Pq|8o2OE%31JlqC21Nc7D{6Gy>an^ zkdPrml!>~oy)Vb+1Glcd`<*x6LZdZbu>b1s4yD7_$K`QM&;ERDV@Lj-9 zK7$=IJHWR9Tc#!a)1Pv+oGIZ!QClyLJ=yh4Ye9^XWD`lfZsqxIuFWUK` z%xJEml(?=|S8tGKEE;rL%-kOb?o7XDf$7;MvM8yWeTMt&7Hd>jTV+l zWLdsZD&<&NmqMW+9Z**vIU=MHMPso+rr1D*RoiMj9>+wH)HH0g;zk2znlrTO4M}ee z`aLT1^Z7J?p6Z&^Ny`Z@zb6NQr2z$bXPJ$1CjD$&7nmdt>&|KQ)G~REB`^?}R91d} z2sxRmh`ryO1L@@ zi62iCsZl&yjiczfUdApyAP}N|E%0jN9rImI7<8B-HFHR(fj00(%5mH&;Y{(QM{m$C z1?BQLw`XTQ{P^L+)yt<&%ML#r4`nDY(;Bbc=I)oioNA*Xn_<3b=N>Me=S$7u=-b{5 zNg}q;rBVfHgp%_*t}v0i<(3Ig>3^0xVUKpF-d&--UU!xT;soG=#EBj7=uWe-dVXNo5^M$veA z_pP`5z=4}?`h=6mkA-XJFHj7Nl1gzrkM)f;DmSch-z#1%g<_2eIZkf&lEV)qm9}x^ z3P=C-Ux>ydB5{fIa2g9Z?PVNej^_KGSR^aQv2`Dro*$3tZ>`I`P9mFRMx)ub*Kv*Q zfwJ>AdcxccTf@myR&g9(H*=#@PEMdO3IwwG%06qO98C9|w&yooVyfwC;NJTw zmMTI>*Osc)YJ2BzxZ%O5-@lFbA0G!C0N!nM#d5NlLK_8w_n0W>lTpf_63!G)O2lc} zn%%ME+m@G>Kc>5})wpu@99!F4#Az(wXlu0wJ8ry%+n)D)glvo{nbq9_B#jmptyAWi zcRozHSeDJHR45UpimX15wVj$MnNtUY&AY@}+8v@Ez1juyWl8r)s&!e*m(>7Uy zUXK%R{10?y2*nAgH0!w47UV;v#72L6e922GR4Tby8FuqDX|F(1DUuSpaGr<%{%>VN zQ>HdBbc;}5K% zt(YJHCbiDwr(GtEmb-e|RGaNUGi}J$&@CT5WkT%Jkd=7IjD|yLLC$TcE%DjUVOyb( zAEmdxjxx28IH<9$ns|khQ30^2E_rrwoY zR8o6LMAK}xn4eoq zt=n$95R%?% z%R6tn@k7-(slE@Jc5+RnCc4Ka%-Qlt3LD8xL{FGE zH8$0SL}1qPdZJmu5TTHL|J-@PAe0Sz=b;<9>81mCfut!dSqq^^t;xmrrLL3D-k5tx z2OZquCVlw=5eZR-%o> z_ws>LKq1~otv!3B?v^A8gF%mDhYx%6iwn=y=;!d><0F7wCc60%p2^U90j+-;_;cXT z(E9symet9T7_+vw14ZCdr-U=b6ON=es_fZ!=u0Za@<(OkXg^WnxXJ|uZr~B8394A+ zwwJt&g&jL>QQrz=+JQr9f5!8C*(96wCU5_zf1p|}n*q&?pi-sWoWZZn08B{2q)93^ z$x)OTQOFFPX1L11Q;N}OD04oGyZ6d)scE^k-|Q_kXmThuIZzo#v3;Erhh4cO4KlBj z>$PQhO$2faYjc_jy938{a^D*aF(YIr8?V{0CDQRdPp+esLk`WEN8W=nH6Ij05NEIU z!3#{ga|)KUq`S{9L!x#FHd{L_!>Y>6HdU&1>dh7CKGAJ$pz%hIMPzI&P8?jmIlDK5*Zst5nav7tzfu z@OmHse({N_-K68_z_s;Z*VZRrTX$Ytl_wywDFNSX(u+HRWfS>*l}=)h{J4jKzX8FW za_kd@Dd9|^QI**Pd%m{WZh!RJg^QJFFrr+l2&wqR0vS+STITLoyqe|Rd(esrkw}y! z9ZA(luHFx5wPrYd^ay7jej6KWS7nn0ML*G`)p?X3%EoAj$`sR$WPhF-V>Id!U0a^x zNh`Byero&B0yf(kcXf&qV>#%n9iqy^4E}R$X8gddN zPyOW$8kI_2I@0pG6moo{Jp3Inl8H;?DZ|uI-HtXop{FL^n0 zH{5`!MVK^-&No(*$1fC%vT4oDE=Yv(kAM7o^t&Aqazwh87V+x~c&+8U$v|UZxhwz1 zuAo&evTNsxoY(VwsR32z=D=~RDOqOjNnoY@v&k77v+?ILER)wHr=*EZRAHi(NkxME zcl3me4+g1;&}?KRwI31f1gm|P%4f)1w6PLEXOA6Wu(`>g*OfF>KZYc%<2Dv1W}Hmw z%yg-lZb9;{Jt6QcCWr@wzAyhC_yJxJu(*fwH(m)AYoy4-+U{XQaGL~Up}_i*V$NKYt(lxecYuBXBPe+0-XgBrG&ci zxH-?`4D&(Xpp=>qi^Z&5t2)R`2X*K$p{ zN&z##E0yCaLy%=)&WM@HGgOXpr-U=bskG+C9xauIdS;iTsnG~!1E~A0x%ovI`W+94Ts(U&Jb2U1FW7zC z9k2R-)GMB4zMXf0pXCWaIvmYtt#2z;Dur6TKC}Opo2xta?`yW^=4O;qG4N8IWve{) zcr_r-gY`QW)bqaTm3sf{Z&y0j4lo41K8xcY)>-x|z<&b2V#G~nfjf1kZ=Mp)6ptIW zI$H<*dif_-_V4?cVxf3ruhVr0gFgMCEQZmDSi_zN9*|iICr_ow=HV#&4PRQHOQo`` zxw$2&N%T7%-t~`v$Kw1VwMtz!phCUP(eqvUg&821lS#}B3z#SXO`IfB%h6d%67|^L zTIb@0bMg(`bsQE}R*m(vlbfc2O{b|zX&S2(U`WMinc3*d9+RJsyhLu&eKxYe%=P4N z+m1TVbbFE0)&x1DG;tDJ`4^KC6v9?EYSB_N*}ix|23`eTh*N3f*5~Ay$xIz~xYK-I zqoL;Go9;S)xGfgauH#B1Iy1XKyFE*--Y_T8xew2HOt~!cQh+1UH9Cn5(Jzxnn z)3eXtQ9vnxl4-7ZC9vo^?xX*Afecs#K6XktQ#@WZo84ih@mdjnB?WJM*EN>Nj>y;)!=eWqpJq)e zEo(4cVVH==62N4{MowG;HQD`^lZ#x>9IGZ8DC{}4ZNWC@B~Pu{MuW@{qndR3%rdT= zK20p1KS~H)6{@(U8bPTd&&1j=OhlbIDT0usZJ8z>QY{s!lq*!rRhexH3Pp)xT*sA# z(o$Ed&CLtpJDy7+45jW8h9QG)2P2Ydb?-FbSkAF6;4+tE(v~RY*yq+-m}h-^OQPK< ziCJ4;dvt{>J69j7F3rA@{{cElD!@yCNV>5=^TeQlQX1uC^Gi$8aB=0r1r#V(42L*{ zQm1)r@d`}gzp%6FuH3y-XIZK$vo&7!h7a+UZ`faVJ-_O?e&BdP*sL#BpMBda+wIzX z%N1F28zC)C31^DO*w3bOhYG##T3A_mU3YV<5{*XaG!wF^)f=>CXKBvParY};#r(=D zz@#-a`9^14Atn7%t2N23qc8K8zx^w^oh^Euj(pQ~gA!}qF>Yf~3gmGla{3b8IIbcL zJqn>On^F`dk_HkIiN}CLG8&6mXt`V^7TW^POtw#&s*w}OMCX<3*iJ5UjWGs>_)=SQ zke?=sQA&u`)l(6FX!7X95SMK1C*JyI6o}Jkv0TL| z)u7b0%?r7Fj=Ii*z;yQkO32$uM#P&J+1eIUH8!@^Wy2qihPb{*Zv2J}qh>mzR4x%3 z^?^=ji|y?#dYvsRql1myCZ2`8x4;iY7RL~gy+_yc*?H%kXpPt*pf%@@90jGSyAK@v z(4;q*=fB5YCc4=cRp=)UcPJzk?Ubb9qDT^riN<3+9*#2Ljlh`42u>I%U=e|GS6_OF z%0dM|`$Lb1oEPw|pZtU2H+=F>R6g&6zq#_gpZ%+apZbE|cHi*Y&r{-1uG0>n&9iJx z31^DO3{jHo^nCvtUB`W4G8oQ;ZlKDAvTSx<;NukvbcaJ$@4knnUAs{e^@lu(W712~ z23shUMApRm@n;!tx<)o}w=1s$KakCD>;%_Vi7Y4~8>}arKSAK(O7UM4#feG1$Tg87 z_^`{;e1mvAWIP@VDb6mhnCM5zLSbJE=K#vqSe!h~rm!S691WOk0Layr$q5!TvU%p; z*7Iv(+ni0LCM1K^b2Ic~?!z8y8XaWSV+jzb&5#9D6A}!D2HkT)a zII~=3+AIXQOpccOAnG&Rya-u_q&C9><2XVqMX6R7f-$5cf9D1vNrnu5%6mz|cr=pc zj~tfU^VdpEG!s;$&gNjwZ3%bv;31UnQ?ECqwik^?oIQ1luo&)1NbceKW&s~~Ezkzu zWQyODP%6lhWF{L&2Y?k5i3F}}&>t9Rtrc*y>v=&~EI6~v%TlX+EQ&+m0U$wZ=5JY%7Iv*P%jcK%%*7cs>(6r6>Rr6>j+e4`VK+fJ;NOq_BmJnG zk(VJGk6E|clyIgP3hB7biLo}$+Z1wJQCxx*8BpMW}Dky{8E-Ajix5s zbiqatCbAKowAtBtd_S=1wM%DCbK-4p7XO+oNku|M2O(KlC0yErM&wsOgZXA`W%OnC zCezmaQYt!W%;x4M8Yygx980lQvmH}*@5j8zH(#4VLt~>L^IA4R1Do!#K0L@VLbxcE zlbbol5>+nklE0_GwKFkt%!G%ITsw*Lc5W1a72O;U`W$)F8>LyoGjlmvP!_WB!%)s` zV6SIv2lBc~{!Aodi7ua_Rx1-2HRqsIlrIalW)rcdhTQ2CO~t5w2WFN^Y$B4xJUb>G zP3=T`{yYqEN(!`8t{5V>pHn*CmTtLKu3f6uz_gEA52H%PnQi^se)H3s`qoVU(j0b_I$sPWtj?m zkE`b|aQqtKWLgiDQm24-KE{KdEnpvz`sF~)9-5ag1wj<3rPE7}KlVW@GL;g0ksg!> z`r^_>{abJTrEECpb%6{pQ4V)b31^BAII=W5==$Dw1jWL$UB_*OUML+>uIEWwV{ykS zwbl%)ciqL@>MF|CM)J+YLMc%Zs8njqFD&N1_8ReQdFQ|U6FQ1eC;~qanfulK2gwQz zlAvO`xG)8O1qv&z@48}1AipaVu2O_f%Ao^0jaHe<=GG=&sf1FFmEO-=aC6-GivE54BcHWM;6@ zko63b+D;Osre!;$TCP#8RgrXCmf1B?`?BdYEIdyv2_!l+goF9-C|_#MofbsvOb8?;soaa|RNseqg zxbG+S9=z(MaTJeceQ_yfVtk5vbBJ=YL6XDFHP#HmBx{0}2CZ{GTnp48pSbKhXU6N*!**NaOW+#Eoa3~6r zPMh{-i;eX)R#ui68XXmZg0=QXD-D3zYNV;<)@_bh7k@J8^!Fsm7N~IGVY3!_on&x; z1u7%JwH0;ja)9OW8(vUHN@O+w3mDqhx-4S;_|s(lo(w{h`{Fv$_)fHykz26<{#a}Q zad7H5eB;m}L$#OXy|o>)P_H+{bvuenR)JT5`yS=EMM zRc|(!+OeJabLYsjJkPVN4?GIwTbe}YFy=RaUjY6k@Jkr;3q_hne2L4B6*yw@{F`O} zZOJfiXFUG552>|dD@>f4P+BSSAg5RDar)31bJt7mHuH1y^m;v0^wI)@2C9HGUjchf zQOrFLIM1*DC2O5m`|oD?@&cKi))|#c%xv4vGZ$Kf%`u!n#^6e4T5FHo z*SJo0xh>EXY%H%ZIXT1B^eo%A?_zXp9H$gRg1Q9^$7{Ht8(2QYNq0dy=53RvcWbOU zWr15#stQCRthATCJc|lW`9!*XKVO<{xfTHuY`HKD15ZGJ%nMqbpT}4sLT)s{&@`3t zZI%jM3GtWt^#}h7YPTR2b|~o zY}RW0gN|l-yUX$|zy! zuaGR<7jQ-e4&l0i_8%p2L-71kB_;{9xud9ECU= zljoTPz4`fh;hNl4J+7&e!Wb8HZ4h^k2zUlGuB#safAq8c-Ik1;f-DTd;LeYBBnc8I zaWU5cjIV(6!Oh)g%Wv-IBFi{A;BHDv(`XLK`8Gi;1L{;5Igs(qMP11=(Adq%wKK~J znLH;{kR%C`*%e}6LlDI@#>YV6oDK%Jw!9ZouGUEMTnsmbhcSk=%ZqN5v~#r%JOPDM z_Z6N*Tge4N6vgT@{csh2i+)k1>Dl?4-fGGK@yquPJ`+&e!qdFL|Z;p&M>9ch2o(vQo2rn2G|W zN^ubE1AYo)K4|h{_)FwYN(%M{K`>ORRoQW1KbIF4xOnO`y-qh%N_`&1f-$CS!DdXd z8Q85utxL^vr8d)S=u)69=-l+Bl<;iB<_`m9rBo*P8EGBpQ0qbm7*pikB>mWD|IqxW zKltb7V>2H%^E>7ZV6+a5oNp6w;FVVwakIREAp+U3x0BBU&hzVkYOQXp4V6lze?2rZ z`mXIecFhDTQ2l<7^^G;ca)}-L_hX`nYX^2UI}cvv2YP?=8avC343CL1BPh?nQelAe zr%&+YU7x2M#Zvm(*j%Syqy*&#Cs!e;k6xmXeq2q4+5z@H@S?!J=xfMZ1za_HW ze!ok*-9kqaqo_59zsV_v2xn!ep?Xe{|I~?P`A9pS6jX&R1ocK4C#M* z^Bv{~Z@R76KQziC3-ju4o;jvIbMB;hd})zuCZ^3dUwvcoeb>Lh+%YppBZ?`EQCU$` z1Ep%#8s>v2>iom2sl#BK4uVRxTIKL{*YWv}evE#*lVwS=3Pc$GOvDSue6{dKaD#|W zYH@hYcfTk&{4KW!TImvy0V7Il#g$jXx+%OED3nt1^u+G+TkiaN^-Ul6C*}4}pit%%2PN}uk6_TVclR0b6CPB5v-rMeAdixFs zE`<=pvU!BMk?{hJdP7QSZhi~6veMGR0w4Lk-(-3IEWKWj&5d;oP#>S>>2s?TBXce* z2m(jG`vcpg$xs__bI1!SOtP zgQ)Uc6Yy?5MVb>9VDK6=J;4FSKQ8x~$~B3COw{alEKWN68#(9mC!ZnjcI5XYO-YF; zP3=Kd8m`BtDE#4U5IBcyLtzK6SrBy3?XO(|lYl9#vq2ywwK$3hgV3ELt>o5abj^`b zarzz`7t&t@Ac1gNh3idn6G)BmzE{@>>-HNI$N`_V?32JkI* z8v=%{03cRM1zIUJUa2x$ZZcyOOa1dNeoCKj zZE$3C+x!EvXQ){|sW2u`gC!tl`1XH@JU7N1h@yBR&^nAtC2F-Q=T4j;FYoN}gsB5CCta#!c7d-NlpW)IcPSRc2Eb@L9SfDBFZ3a9q8hC#F508`$hMS}B*|uZ%R}Q$2 zF(t798jS{Xd-kw%-#)6%VRqhlGn3oqz_a2PP;hfx6xKmNT%)I_XFVCRr`XCf9{&8N zS-*6VQWz8IP)b2_d-pQCV;9lX9(1WfksH_F;z~YQ?#TT#la>Osl^_S!C{yJb^?HR) zds7??N|g%Rcgt7;8|3kWo!fFNxAr{ETq(QfLf!x?5J9Ah!a4k*A;=mP-BQjqb9)S8=LydG^LSc zY}Tc;vfm}tYIT_+YQfDN|LUbn?tOHqsgKs>I20-bV#_s@tZ8RMDoT^ z^Ev(dPd%={5NeG^VdUq4bFB^j?Y*DZk1Q{$v2umC?K@;fN@Yqx;PsXf0zYVq;)NzJ zuJCsiDBwjp2xg3ek+Ct6j;}AT(C_y*lv0;07m_QbN=mE9_F^eD*z#7QmcDRSt=>Ja zD2RlEQR*=8G2rvSXEEkJo6%fVB`5P-N z-aAhx?XdS%2Tgs)sQib`Hv4Mf3uih1iDyjb!bX;-SzhEtW(v~>&H$eTehYX6D4yqV zo?rh%D=L+Bq@&l4jgNhxR;@O>t+uLFYoaKdnBB&%0oYW>C%O5JZxJT}&+*vf1f;}- zLCPH>eV&+@CI~!rl9vcvJa>kLr;ZUTO~2bg0u2S*cI{!krzjc|cARuBTV`kO8{ z+IVF`M}9l`a~MW`bEhX3aOE{u=CWYscqIFIPWBvzfz2!er2j=BB7!qdJwfZzCGm}u zEGSb%GY3)9aH`x8IE6hvlq;*rXW9FV!AZXbDCOz7ld;EfETaxu?F||8kfaHwF!r@R zhXzCA6Rd5lvAVP1?JD6gDs;8{As874${gBHXKmH*yyC3PgmMZQ!br7E!j0d zxn3r&L>Om=hxX!2T`9ByU6t=d(aSR~c3R}d$Y;Ipz!CFZH{5Ez`}$kW0AMIEtS3Ew z;(@!=+193-t2fOnckD5MfR0hFAUcYa)>K(kjQu1AnuFWP!8Vk2y3vWcYz;Y}_T#a>YxJF!#C{<&^I7De>oOvs*XG|%rDoUv-HQ0c|!25x} zvz*N~zyv`UC#!w+(ck@Z^&fxg`}ybp_1pNRKmPap+)w{g^;hrw75!&#`9=N7pZ{x> zbrZDKSoBs!UL+{m7*>F@z>=LG^j@Xa_gF=pdd>n)E9>+8_J3_tgF5>=HaeR>tHWqV zuhR{sLw#e7#AHO(GOb?9!CPO*(Aby@#(wYw<;p3QN>u~`66DJjYpXAtD_gbJ*En|f z7wBxRgZ#mV6c~mlrlqFE9J60cN#6g`svP*j^0I-5P)!xIWXYRN8; zP0EN$$(H6hdEvfOzW@4Li#P8*XkIciXTD-~2mj)h7Zp3|P5JE2G~v&lc~TkR#oKn6 zZM6oH!QwLZ0yu&(?-fOuF(0=M%MaMw4+Agl_j=`Sr^E2{6ib&bk*4WJzuRj8A&?tP zR2!+O=2%0G&W@SUnNh~)#u#jBY;Kg1*%8^QBUQ?cviu*$RTACgy%_+VKw`h(n}G?YhMkAY7Hgo4kD@TsI3?k198ETdnxdpOJ z_T|!<(-cW6=ejc3bX1}k-%W~kS)g&}MOjydLVB1y{>lY@Z2?He8WcJ7HpJPW*Xy{_ zS+&ui-l$9Y&NcO7Y*{Xl^I9&KnV8u|wIYPSIDTss-OZMOl;2pZl-gowD$BRsanBj_ zP`Rvc@%&i|>tIl6R*0fdB=u5)D>Zrh%f6L;yRJb;fx9Y_)8nqgj%u&GijF^oM`MFaPvUbN=kv6$R&PKo51G!zcT8xmun@O zqYXx;hMCwg&iM9m>SGPItk7;+0UCog5Gl<7EV+7Yf|tzhVBgRPLs6_$VgG;QmI9jA z;M2|qCjd0?TBTGD^nnCOc@D0S=hy%Fr3NcWUl-J?KT)kWwx>xF7M8><${`a|Q&h$# zICRUcGHlB{OP_?NP?G>OHagDO*d$tq*gE`{tJ#A42NLLqKle#4oj*-$Z5?q39vP$1 zn)Qt~X7@E{&zfFoP-wBPFf4Fab~!Ht15OD%_h54zsI;BJ*t!bvHVRg+0T0nAO(NB8TlTETbdhIp~r%#e~I>>$n5vnqb8lD9Uijq}&%42En zGX;SS@PYN5!)8!&Y#203N=*vvekj{ZRijp|((Cu-Jf*1wc-M@YiS15FIGpPEIK6IH zvJGPj3DB#T7nzvbj$OXBjVsNfl;fum&~&Ob`Mx$bR#{oT%&7;|SSSg9}$wPY=xB)-?~({K04 zvqIdrhsGNOQQ-dHM{!7&WT4#jkpP25E5^$eW@`;zv2zcHM<-~OVqzT<*zdQKrRHpF zo!@`zF&2Z0|Bf@q0iHC?K|trRnp4^ZdHvnjN1} zgU%;m9b5UT_;h6m4nfw7nw~;Eic+HisA)og@e& zCl_{&lnQZ`KKaC>B7t6AyhyLrCI|uG&Pu1i%w2_X{>ZJ9y#|YtLM*Qtij|UlcU>f%UqmJr%h25a@9QC7^c&cz)cvJM2$BxIW7Gs zCe+e=7?)xJ5Rr&)Zcu78APi7JKz(Qk3{)Ep$po_`6_J8-Jph;a2sRbCz>i%9yg)1B z1qVi0=`qIfMx1&27?)0;6j4M`7d~7B$~Cau7Z#iZXtDwnluMDburbK@XR|{Y zH|@@^e5{kpXa3?js?93Z=>}`3met}t=S-k9r#IJmdTmAJrl1x^^z)pw$d!~M1>jw|RX`>) zg~^J-Wgxa*C;NJEWL&*z_kJ^5Zvgxv{4H;>1&WxznlIixsQ) zM)(?kFu(NpLo9XM%5soF5QPj)G-<83>23B(z$k|Q z2wVmVK>vfI9-arB=hxcm@@`|y_tY!3xj+Y{Qe2WiI zUUQ`_Em>uka-}nEJLP36r4|{j1X^Ws%+L($Dj;2ML2HRxy+M|x!c8fKhzNue0G3uS z69pk@nhGD%Yj3h~d67WgI};@wAoF0FLnCyO9)(iWnl;u|*O10U9T1gbCMG9Y-`Jor zHo>LAw!C*grD_$K%|9|mV`Nm6azf_E5h&%FAT5b6z^VYBOz*T?7?9_0tgP_F7e34C zr3E3+gCM3fI)fgaL)(!GsmWalw8)+Ls4HVR&{lu|j(`&wCHrEGCa%^<^ERzc%l7JM z+U-s1W89_l!Km)DLCMZL>U1qv7MgO`!Sel|TQ3GQn>Arj6Jf$EcD+Dwo z6R1Qb9$&h|po}KxE!F{pY{wM9rEb@`LsWu@c9wurY;QFArmL?vMPYbqZG{tSt7

    IMyPR)t5}+vT1sN74O4Sm6({I+#5ar!)&1Ur#l1^X5Gf^D6EU4e< zW3yvr)pNXR=Uz3Ca-&h^^B2zXsq<$Bpt=lprA2`fMA2-k)p^_AL)<()tAKdBAyoJ?q*&Haoi6-uRJLw{>G{ zbE6Ujft16BCMT&kN0__zTITj2a9&_u*~s_cbmZ*l=!6VU6T2GA=lHyVR*H-BXSw&o zf6dCJdGdA-ZOt$8QYBg5QoFt4&RBJWiPoh$Z!WhYrw(UE>?2et3t2F^3 zacr=vJ4Y$GQPo1o%V#WIoM&}m0cB+98QpH5VCN2kumT1Oj4OpXQ&Qt($a4Oj&_aPC zaN`Ip{*d*%j1QIRudYeStXhfW__fwz*ORBI_gxnj+#I*Y__pnITATE`lF15?cROv; zv?oLH>=W^Q>J+$R_2kpGtSSLk%5rC)c+B-nm1||veoA|-gUPKisR{{{Miq)EiP&*+ z2WNMj#V8}-TpMd5GVZ)kYyCd;s4!Oi!DB0z`O(jPOs({LlI;{2uA7)*t}#R>P4vAB z=TL46tTTX>jP&=8J*FOBULK6p19NuNB=1^BXZt{P)?HZN}~rPUC*DH-Sk7g4Isb8H1X zzy6P`7(E_G@xN#c4Zp5XOod^n;y4y@z|`y<(+3W+{i?(6%JW&50R?hZzkSDUCdMai z*SRZcc@2`Vx^$V3|Nd{&TU%xA(jx6vi@|Fpv&mG9nK*!&8Eipd=lUCG1>?_W**cck zx94}G29!Uk()PoYYv{>cl0m8Qos`D56IPlODk3eA;8!Zwg>bKwYf=i5*rNjBa^ff= zNmH@)k+H^h&Ww@I5!o;$+uLKa0Lhj@1HD#@wZ+SH*4NowUSj^tNhwWrTbnGNJHweL zALHy3k8|$HCwSt%yE$|G7?&>2OG(k0R*EvM5NjS3GXLd~fii9J^a+#|5KyX9-g`5; zR71)?UZbZQdglEs{2Iz}NhqAVKw%)af`!hxCm60*q%Wn{?I2R;p&^1ELRw0L;UH9r&Oq=8JThz(oRzVxn1gY32duCEs7`y0kQ4d z=~~62Qc7IaCttjs&9iF+MpI~`8l!dm6^3%*M0c}Gzne(*R&JCzraGf?I!N-Y7B9BWQ-R~ZyOx%G&9wjWJJroE=nosJ8C6;Uc38%Tzs8e zUzKy9?B88&xW-^VOpzA~MT8+h9In-00L61F!!bO+{x>g^q(hm~|1mAH*Hr^Oxou`n zb$T5PkSopb{{77EKZtKJ;+EGjk21pbY@6Ldqdw%Lklgsg%FaIXG=KKrewJi&6VgmL zkq><&mN*s0m|6UdS{ac+PXsLs&JzRZ0Eg`CP!kof-B1uHkcXckZMyI!0KEsnqH+VC~ZBQvy6;6p`gn+I^VX=p<=jL|hSt0rtYz zGs-M%3C#X1B#n|ArL8K?HKhsxPq{e)MN5FS*Xs#kon@Ky|AeKI{ES`Fo0Kcb)C#e` z8K$$bL8(+0psMSDO1(~!B*N!38V=YQ%^jC6}L#nr84KShfz>H zFwEQE{C;Y~C1@9t*+u<`T~F`e(&QppIVB#B32TvnveD4ZG7gN4@zme-7t6q|PQ?=fB zU8!82%=1iTc_vr)x?W@VO*cy!&F_Xc@GSFAgt%pLVp&E(efpWGtw(KK738W{Pnu$LiF)2ADKa#Q zWc?x;0V>Oh%8IaD#iR*^y-Mu1d-B=Jdb;T#kcpLfo{4~=RLYTNR%66{VQsMW9(hP! znv&1TQ_B&w|3pmQS0Sut+xfMQ5da8mT1S#VgdNMAdFC(feb?IS|-;*?z zvZde0WsENf!Erdsx;Ct@taIVyGoA^lMrkOGR2YBBF2;9FbLg$tq8kyH9$sWT9VhNb zprF3mWXG8~?hWtaq2K-j8>dzP#AI|JiAGd-LC7srvkW$M)z}0hrILx1=JA!wgR;{- zs*_3P!~Wq>jFH#6?5rNeeBI&e7|5ong^}7!6FQO!YZf~#P!I(X*B-cq+pc>tzi{`@ zqDm6bRk>OQyR>9P8QqO8gAx{{dWqUlRZ7;z=Xg>ncYz1UyN5@4W^H)@9A^o&R->+xB9KtD~5(f-(PPu$MPamw%$&8WQ4u9-Nx9= ztcNhJjO8=`EUU^#g7u<= znm&LEOPH(xo85r2Z`fY-+KxGM0x5e`E zvh<`(O;6Jpn_+EbNwS`a@i8I7mzOU~&AeV~LRt7R$qdA0Ad1**ZF2g-`$&3y(lik= zzEm4xBO1k&8&;KOffeJh-O2R9SrU_oO6|d$9%SzPHufFcN2y(+6jWII^JPBt=|77Cg-^nSGe<**HI2DtUj@9d$4j*U^>9DGVgM&B-urG zv&Z`41|!qMu6Y*_u|QFHXHO~iG@1jzSrHKgz`z-Sy~CrVMb0lj{vgLzmN7u66!WbO zw$+>L9UA3^sTqFz*rQ~|@WqSgdH2C1?5H<+Kwp$*U6D|4bST%#qFP%zzYIpiK(`lZ z`T{rD?s>p@e(9{ZMg{t(vOGJmzPT3KfJ3=C%$^tADt!?~$X^^u>)X5d3ZVgL$!r

    HCw38qq-YNaX;!%?})IyKmNtxTaTtQEclkIa=+z(_Db zdvjdehH};~%9hP+MkLSGc7{!0Kz?^7m6jI(=T0D571&OGX8SVBE2|`lA=D8|tLun@ zj|445enwOn$t+BeGZ1c4A<54=NP<{^Xe_)F;lJA+$WGhX^$4BMdc$Sy@my_Ah+&?|AfM9}=+1 z>=a6Xa-&HnSLAwxVEfgmN<)IZI0=MW0=#FF<4Qc*md*q?0@nv5uT>zg544uglHMJA zRUFzTMiqL5vp;{vLP(kx*1=eLw?f#utU#1}Oh-+oq^$zzQxR<~CcYnz0+9lVoGk41YuKuc9 z7(F-%4UvxX%pX0@y+8j^$PDXAUxIk3G^6DTZ`pg07tG9Y|H3?Ii1xm(dBwe9BPMtnM+G?Q`L{`@A14`0MSiii1%~Hil!3U)zNy(DT z%MBIPFj85OqnxVIh|)}BV@{Z5SeTBY?b0{Q>LDz)cVH7@^1rCfQd(yC@KYIJ0r=JX6Nc;lNz zW#o7bT=szPjis!O%=Gj&W(Hdjg!sd|lok_3o_yp%{^S>aj%V(@OKeaAr3r&jw%Of# z=$MH9_#wi%!_t^&vlXu=M7wz`K2Z#=uJ7z$Y!|)+G65BZbBH!JXyKYHahX`2Td;BS zZX93W-oupz3jqx`GsXg}pYeFk*mCQ;0@(M#9h2jZY*VN5O;3Xm9hGDY%2jl27*ii3 z7@Z{?+fF>Si(qOmYGM~zRHslO7({GQ-F+=VTtcA`;6OR@9fjk>p=q-@xRBWNRYt%?qaX?v*hFURhPLm672w`T4;wevWgGKT4<55y8QsJ6_Dh zwry^nk0~U35rv;z#AvmJ%K_~&Zlp9fvTZwS>#OuO)I*>5-TMTUvCPi;4nFRw!&abKl$% zo;dL^XBLl3nYr4msxa~;(ID>T)spZgrZ6{ep)F3#9YBci%ZamoAm8tlm*BSN<@F!U?5RFw`88 z`7}4Z?d^6zcnzql~Z=Rf*k9{uRwVhSVD*(^&X=rx9h zMLD&SL`1u;mq02K-@^6jI3r20sw98jzA3y0P=&X9KDan>0pMomWY(Nf*#Mkoxhul~ zqT;fjhz~qliFAwu7YB4!4d=i}+yrphkbA8)$CTeOE(39Z|4Zwy|fF*%$4lG+O1!-@lL6W0%or?zsN7oVsvaEpD7ONw+7)oHmeSj1h@%YpsJcO<7*K%nfgNvw)53ZSd^=z2zK`Yt@?A z!rNbwr4R$myFc@B?)lrlqPx0E9ES3rQ3Hu6sv3;W&T(!-p?4iZ)rOGy`^J&kM3HtG zh|ONS`8o=10&kvwfdS9k%i88-#wz4&c1A%Ca`mMoh~jKK6wa4RN@14gkmuRYalsp~ z;shmEfmS)^o`>*6hFFL49@xMw65LR^K9(XAP_bZQoUMx(O`05~aQEefG`Tw73O6>} z&9H$eq6kJQ3LN0d`E>gx8I=RuT!7ag09!zT8zF!{K@&7a6#_azs2%9*D8^KWF)Nx{ zy-v5&5wU;_PQ%*mfGY`!2%so<^1=J*t*r?F)vFEqx%A@5^R1_z1kP4#(*ac&h8~CL znpE-os{kss1~>9aJ_eprBA9p{B?Z-ubfkao>}lLFcJt0QUcg19BAvAmg$DV=UpQIQ0IT zx%z##5Z6ltS`kDcCRg-NwR!A`6)F3E@sW?nnNyKMhw^><04rk&IvZWGw2hq8YDvZw z__FCd%bg-LE|=t7YK4>m_l=Bk&DbPgSUAt=jdd0}EoN&CX$Jkd0T5}ecyMun`z~FS z5}P%al|G%XK6DMGFyKRHPsn?D{FCe}_!9L3aQf8>u--nty zKv1emFtKGE*=#w@zXErGCeL&0By9XSI&K0cc3%zP2fM;f&-C~JE2%cFiO>R`^IlUz zb-2e|!>X4J_@ub^JFXPvz+g*R&4GYHKrgWS?y@9>>k-N<2q;{+a!ar+oNI$UK*x93 zUL&`Ua@=9yc(5o4Q0`o9De(nLz{u{C?6W=p?zu*Vq!*v26iCU;dd3a0xwbz?(43nT(42sjKy+BB>lc{RrPw)-#2@UTk@E}Wrfvx zo!K3`Ir@Uz32Jo~&YYBhu0zRkv0x|wT3FeBZKlb~2Zo+EK7J#!r)CM0$X$%&VNOy> zxIDW=b^z{qw9U_P*jUaV?gNr<|2J z`ovM@7PhM=o_v^Izb(g_<(a5COVyI9G%Cna2$=L*J&`;Q?iX8|O1*+VO}e$(l0F?k z#2ZI%x``qT2vxvFyUn4YG2xsZyu2Xt=Yhozw{P3Y&PEeZJh5`weP8zflsHF!+qE|{ zTW>Hh@#GJWKgnXJE$2;m)=EsJR+jzhZgyoKx*J_%3S&`;i@-kzHvZ88PB=WIihfdR z)EY;$;T1XNoAWIDdQ%i%RT&z3SE*Kef4R|kSEX8cXRp(Fhl018qIh}H>rZQ#$+LW! zAV>hiKf+b7)DEKfPr#@&+Ly}I$0xYu^=}jxUoQ=JL1~M^Ndm{VZ9AkXQE4S0v9Y?s zNB-;&`0!vP^wP=WWLY8&jbNmwqB$`^d32V3d6aDWFv0K)D$rgK#_#{Ijhx2kgq%sD zF}Sjn0l5urAPKaU``XONMsEqUe!vR7KojUK9EAf62Q;{>&x#ZzkO$fWA5qjf(%IPG ztwXiT&}=~TOKN_JOFp|0kZ{0xs6J_i4zSVf&vMe(#VMsRhuKwmD*D3bjGdtSwXp4VfTSUY`^L#8@)E`mo9-Z znA|wm1?-B8D({^7YQ}>Jc}yEc5f-e>uJGhF$9UrClbqajlGT|NR3+f-hmL`PgI{+m zxBbwoBzw8$T`%Cs`)+3c8?IsMh8--QUL;wOZhcXc?fi=UR7R^Pqd9!+Ff*rT)Q)&3 z)1y1plV=`L?e3r`o0R9uPxXm4~RkXMJQ=s*i8U*v^kH}*UrS>bBis@pV2ZoifH zf7f?V9~tF=&wQ4RZij=zql0aXtSCg8w%BcpXyCS)IS!4CasAXR!*Pj;YE_Io-?9HH z-a6PODpk&IZt&k8y`Ky1P5M?nS|AsCl67^~JEq_63ox3(w1E!r1n`483LpAMr&2Re zNmtkI1m3sV+Su1<4%epV=C&;@TrA~zP83Bd3PVf*K`1W1MHmEm0Sv(BRYjIBDe~N; z>E9Xnn9}-lK%aj^D@l`=Ypo~pA`8n=1xc50zJ;N&35T(M@G(-_(T<=mm#b`_+bw=s zMUm6mSm)z^@h3cW&llNPyhPcKDyY|*B6k+GS!0CBojbYMtx%iVO-?|P=8mW~2G`iB zwd)UY{#bsOx%9t;xNOJ(MluhVImq)-ide4XovVOvBI(Va@zhv0$O9;kn<2L#=Lc=D zjgSGx87<=M`_nvkZqAN3p|D~B$N9+S^ENiH3n0W%061r83yc;>QMfrX7C;p7*;7OX#sVlGXDlrKEu~?6&E)TJHO^Jvwqx z^7Or5bfvLUsU$M$p%D=hIM;6By_B}4)C7RdO%VdnYz$%X#?LOjTkwGtgLu$w-?NVw zzV=OQKXjN=k3GVvd+vfH2hRYuwYtoSOUIdJg;Xh;BO@HX z`s%^o=3nvD!w(B+Cxh*8Pd~$sMw6G!?c|}Q1unE((pwX1%{%uW=0J0ptA$KZWsT770eQN;{1OaK9m^4ZAJj;_TN!rE~AIbClgDMCf z2Qr@H%jEest@U3wnnTx=;2jMDTJuYBKEi$SDP`U*k;14zk)-MjY5bj5DF%_Cp@ zEO-CiU$MD-Srj!|Z0}S0Nl$#oQlrp~aZGcP^6UYr_xrNyFbr%a;H1YGA-d(tA14Y> zIB7H(aG6YjU6y=yph9Rfnmo^4e++&JM!D?7S+9Vb%;}6ly)JvFNZYFBvLz=sc@sPM z&6fFGS;hC0D~$B>ST&t;$}E)2O1yngZVa`;0iMfp?65M=3Bm3+3c$X%4gP`hnqpmv z&}9vUb<~ccz~&96aM)9zhFA2)=*k8e)|qy`*ZJNS7$d@fAMM+ zW}%pe8fBy}=+X3H^V7fb&)7V_g2{~u@ zk#P*?TAQ3$U*T^~KO-izg)#K=+~SMzrA2RkCTAm7YPi{27k=fMJ6|r+WE-ULuNJ|$azzk?Y@geSM)Al!U*Io)^%ppG|GmU0 z#)ikl#4^t_`D4zFM%TyD<2%u_2Z;w@qe?Yb%8`;$7|`#fWVYW1T&c)`h8uhAaUpgm zt!&l@MO-OO3-Rt--blI5`y9tlIl!=Pq^~It)r9<1N~4p1$vHPCoLWTy2M;1X`wc?BZ2l`L!}9 z$N)Ycp*&+&dminew+aB-$%|dDkmKD@U<&;2R?2$)q|Y;tJj}^^@1e*t_c@ZRpy>8C zxj4B%?S>{}dW`X_pNtOn`{C&Wgn^G zi@)$mGykEdkfjwje$Q91f9F*kec-4nbxTBPghG+U8JokK<|7M#!|}Tw5$-3@TGfWC zPV?~6f@IlAk(;C_@C{WX4Q?Vj?(Xxz$AL%x z(M|k}!sxcb6d$ZM8%Iln1xn<%C`DARpwX1;O-AQ-P}4EA+hQqSpBRR6$m0BYRxe&) zeRV}f41;``1YxM_%|@-r^GecB-k@0q|MG0j{PVpm_MMFYv&pKF<2N(~=oxX(kGy)i9*j?+F2Hf)cfveZ-TyQRCai z6w_}i)JlvWEvJF}?3IcnsQPL!gK{LIW&7+R|7Y z3m{=d0|Hqfq9wJ?vm-1DSXKb!469mG+Kw$>l&D}gRP^V${InOgut-awJzKwl{ujca7B8f<= z1ymh3B_C#75S2cg!F$TM2LOf39G!RqCowk;SY5L)iZhQtDw1wI*?TBiC*mq_{P!QC z_E?!Wzw&(?n7WEs#pFdU+sQM}@H>C`-$*yQ(!;ZT+d*#b-O5sDiB_#mfR=3gna@1V z6TkEYr2=ID$PK4Ibewlgy^rcfl`szx)tfFvkT5?x&+#ujA(lEOD+nqv3Pr!$mnK%F z74?xCeR02TBY#Jw$njNak|O`-i^6eoy_*8pS24sb?tZUcc(aFK24ke)e7e0*2~M##c5eueFHcnA-LcN)t5(T#vZ;t}m_d z@xT5Em)4ef?7=UPtgi@1q3nRLG)?m?P5Vi&_ff6%KLH-&IkXy$q3NP1?nbL^Q5Xhs z6tn$?8@c`!uduUi*rEV(jIWZ!Mc${?TXz(836K_&p@+zHrP zJ}Qh6@WS9!aaMNimup-J4M1enIAxsoJh{(3ClG13>p610ME1R188Os>v-c6p7kfTJ zzqaqLHr;t}_it&Ew3&jY+e`3$=oI+w(SEk(q|jO^e@L5qKdo&q)8-1BpZh%`l_T#P zM!e^TKET-2G!G2MC4BKu|B$TT7Z3_FGHEtgU{1%Cp~bYAY>2iBj@2fAbf7?6-c!$?2`_i_M6fGE!W=XQy_t zZ^sd4r?*3)IDPRM9(??Bbb6a8i`4IZ#dq=USAGpE^(7W|EwDVg!p6iV5B$~_%@=;? zFVV4flQzq>I{)$;eqJ4zJ4Bqs7z}Bg(i&~^$^9QQfBS*oXXTNLWbH)NM?`^!{B6oO z=^ouyPiEhg>t(4BIF82{Ru|W0M1eD^jRPsQW&I2lX!&{L@+MI^5+#|jS?<+i6YL)z z?O<&O14B+wC~|0vE8vf%wv?lU(@!Z;w7Is-jA{YUlYY*4J0X5xA2U zWKorHd; z@j6bBU_Ge<`<_fX}=vU^XheeiQ!g_Tcho7EMb9N2hH3pk~p%?e#M7}+3|X1N@jLC%dmUU$A603+b6 zT!}5qa`%18V;0~6@qKIG|5wD_WjT&+zsK!we>Xe#ALK9o>(A0zU2)^8qcCD*$1c9^ zNB%i8gIgQuMR2fm`H}!E7z^fNfa=a+7>X*3k>OEBM#f!P%>lbo_!%qS`M5NHp5OfO zf6MZjQwR_lLlh`-V>vEkTt=;2nNyMEnE;)$aS64!ULVMij=e7|{m=P~a8PoH4(^eR~= zQO)tD^Fu4uN+LUMt+mD01_8uCX3#{jWWB6iToXY;VHG8{ks3qeO?mym2FLd7h}eK$ zr_cK0I#OkDicHJ3MX{-bp$H6mqC_(!d113fm#p~+q5y_!kvzQ7NwN2>0l$w@-v@O6 zF=RNmX&wC5(AdbX!EI3F1tW92c+>a%Q?9<_r4kJNx%ZV$m(lslMEwM#6qOxK!qJLT zVdR^AS{J))jx^XD9g;tS#rd;*{EvQv&;9bx5LQZrL1=5~Sv~-rr7TH*-Y9+&=txTZ~~qOuk-el}7Vks4!DBd5Nya%Trz znazeQ@oh6DD00`I&S1P5LZe$z{7%PVZje$oIoJWG8c56DoRRd z0stO2*zx*f!PLc zx?u-jIKIduXIAMXxw}ws4UNtrU7?KtI`yk3Ir5sDdEfB+*&Xghr3%0)*@_^i-EZ^n ze*2&C=#!r@Qc|{A&dlTi^}(9_j=Dn*tX+jy)7k1@V&%<-Lg=P>D~Y+T-OZUnOH zII0Qlr76n$nJwiriL0f6oA-{IR~((?>~f1={=^CGWjdb#-UnQI&Wi?uAo%WTv-z?( zj$%_3qTzqrkNtbDebLKNI`o5y{9I{wskAx-)_^b^Eh7zEc4g~*@{NSfXp^)QAvM#X zVGdk(3-#?gIsMRmgi6^jtqb-=Z{q`Ft?f2w>(q%rryMknZGlKD0i0fI zgL1hf8HzNS#$}Ga^yR#5z}sxwxf}fNS}SA_U7Ao7?zk-2IeyFs9Z_JFD;0U2a2MuE zq9T|-eUiWZwO=IdcJ1-P9S5g)$yHMvnHy&3cpa2swVjaUmc?_C*x)+})OL)p^NwBA zq9M#mA$umXqtFCJfGz?VF>vjHn>fC3S}m`fb6HNSvuu{T9d&tQk^lUs|Jp3C%!5)Q zK9JrZku?XZK3qe3xROjjrP{2>dFZZpNs|n*vl(m{=xoXi8niWpjkUObt4gCR=M_N4 zY;SbL3a7K$MrRooM+p^ZZNWtD^nZ32H%=%WD8)!4=2h3un77}ulb2pK!$hOZP&MYU z^J|jj*fk+wqtyM+DOvQC4yY+jj3NLU)%qBL{=1Q}(VL>Eq02-uwOkjHpz0 zj=Sz#E(~Myi&WQJgh>jarhH(WpdMok@+EiAtdq4;mUc|hY1Ht1D&@-TnTPM=&;RQO zId|U|ppcGb6y)7b_iVr0{Rm3^FtE;-;Tmp^3~QzSqEfBhqQjuv?zEWNvyWTf@-~by zESx&QQxDw7{2-&L*6MPFX^lChkx%P@OojAJK)me`rHMJhp$U`}P!52aiLMAYucm?*V6US&7S9vMl$emio3rF1vAZ zYB?6W|A2c=VauBKy&XttWse{Ee(Zh7>;2N9-ACI`WH9)_-}9CO@}<*spT3JYSr^yw zQYoe}GQ!yOHa6GSIef=Uc=2oAM6J<409kA7`E=m2xw#>wwSKQ_FGzBm$+|&np14Ix zKiK%#lmMLavPle1Jdh;`ANr%;;jTaXBlkV+n`!XPFFnBYu&Z*g*-JUOxWR?h4ri9y zJbHGGBrQm77U+LjCMi%s!O-v|6XQD=ADv~cIm1L_oYC3{joO&0REE@r^^5%6AOADc z@2#7`vKKCal8h9m@;Cm4PF#)EU=!c8Qdvezh#F04ZTj85++XAcjq$oE#gXZ(Zc_9! zr7=naC9Np5qSmaC=Y?wbGWz{YCG!1Yl#{qafm=Sl0Pg>-2?C|#Kr_}TabTuFx1TdN zTI0osrf60pV?(7Wj4^+F?`icH_s;wM6`upX?YYExt81e&Th@LZ1Rtq4o7>}3DX5fd zyz}4u9M|0OQooGmjyTM6rcTaN>h@4Yfv!fB_KhJ; zP0x@70c#5jn6(YUC=$u&`og2yMNq1tY9mCm2PjYNL09S&M)^u8zn{f*+k1fF zG7Hy82{^@_Uf+cyjy)4ipMMFocKe76@PT{1H__8QUU=m` zt+bO{+aT@;dV8ODUL3FF&WQzLd7igFo)AI;u#;=M^W``vT#u5^Em^+9Wg^P!&9TZe z_p_9~vO@SAz*F3TFQD+n7?R0p*S`bcgdSN|2$)ORsJB7q$Xe+F~FIHN_L3h z_@fW=dq4Rf=-Qbtaj1FIP1||>b#roD{xSwB*>?IF7uUMn^~_~1ZFcGOGA^ui>1PGT zKVMs$PqE-+3X}wE5jMCq&_Cw}%(H|U+f58$lyV=0s}1;$5Ptg+S6a{hn0c1pZTVW6 zu|}*XhROzmx_R#yy9VG^jsoiCkSFIiSZgQh*8SrQS7U>>E^qeuSAX`1TG@0{KUabO zic_ice;?$Ql`Q=1Bk-Q+PV}t*JhVN6w=6MxgA#~vmA{p*`RQ*^D_-M|HgpdlVX9+ z?Gpz7ir60l=7X2r?9W(EFLx?7><4WHLHP_1=p4!K17E16^yPpc47GEpmSvn6!ig%Z z2*H_aTGHEsgtGgloolwU0K)6rv1Pe93gxzt5(mAQN|w+g=*kd#O|fFa10x z?!U(he+=8lYJA%(4lp-T#o0M~Opw1aImfWp>2rKxgOiJ!9J|mW2%y!==qEWzUU(M> zezxrb`BpXh)}{Dgzs!|B!!`vQ5rkNYexnj`>pK{rLEIVzB+_^B>zY4F>B-AxRC;NSBnKlQIUF|hO| z=^>s*rBcHb#j8zTJd~Q^7lGo-LY+1-rPi01YMpLpHYu`7rCw+4>?$KeBb4J3?M_?l z;Je)p#wg2a*kY?3J{S2fS(mAUr6Blv`KjmSI$e*+;KVH7zeAAQz*+{ zWm2+3w%+O@y0eVhT&CaMBpuuqy*3m%fpYdbqCQO19unNMoN~ELDJW62S4fgX%46wj zN>StvEDIH3YGY(k89lxORc^3n|4u6X8jGh-6PL;YS{F~9AieEHGHlMzY7E|STUonS z3ULKVdg2U{^m}gNtWW6s*>h2dvow`T9i`;~=N@tT_%Y5r_K1@USL1+}9i0}=0l%K< zby9h^PJ%w!tT1?uZ0ntjS6wqpy%bU)ybmW9TXcFU?S4i-%URm&v(ieui!*empOfZ= z0DnM$zsYh_C?%AODvU8|YtpiHd9<7pa$4M03YRbiN+~VhCq#iJ4kRO&jBaYUY?|fJ zgn?G0wG!J#s%E$r6Iy_d0>xOPj8+(h@~_F*svj5tk-D_r<&kr%jMhsg4z)Xr3e4fz zVb!RF3;@}_hC{%+l-9otvZ}$P-U4lb@X}yJO6wup2wX&al4BuY_T*@ z)*8aNCuXZ%RF*>+l9XdtlG8Yx@~;n=nBBoUzW-nF=Rf!FdGup{1qjinYK_MBPP_f> zX0UHMj(_9-Cg_-=2x_IuluGj#MN#~fh3VatCdrg;w;B8{f6Tpp7o{`?MY%pkG`<}( zxd+vpz(}uzc8z#N;g=FzAhv;10y0UKIlnXEBAgwKE$I{rvER3xjo$Jn76&1gG?bKv=rxpr8#{ng(|1Y&1zyY}sOkr0KNQXCTmfeg?q#}NX0!ey+WI~n=v zS>m`%duD>ZhTMY5@aUL;SFhWqSuWwYDD3hqdu%ktfY{jd`aN4_6QE;j7O6b-V5i#_ z?q_sl%(`v|^t)}Ie)s|U?Uwv*jA8dwjTh{lpcDmMX{oK%FYmmcU2fCqX96~}qg4QA zN2(l}8FCqXS`@5o_F3VUteTVt}U-?t2jVAaRj)I}fYt)z42=aoc+m}0| zokN5ZHTjvWpm*#trjw9V%Un3Jo7^Z2TfCV76!`M~m4$hJ?>~HiQ(yd)SVw5Fm`Kz0 zmDMMWG2aG!p8vy3g<+tIqEQsZw**1>t~iP((TsvB3!xuKu#u9Qa2auf()PoQ?79kS zBd9Qz`~AUY{@7uw8gdzdo%!JcKNwGTyoJB;T%hy9l_Bt(GnE(Y($ofI#a4BiEuqw0jKsDBt9COG#}j@E8>HD{X$`vnM2=zU`Ks zjMhuAb=hncpK(Ds>9N6(<_3j;i3k#Gzn961LIp}0gX0CQP)-q8sr?_{b4FdibA-cl z!zRrOA}6S^S*~(*hAWlr++$bBVEp@ew)>2M`%W$MR}Y+1-!wR%bE8$W<$cY?^{)Ei z-+e&mh4HzZZ&iW*BcOOr$)XkJZ8{8Zh@v<$2Ij82nOk1|I=Nc&&khPHrTj~IcUZYBDq~ZSX)fPr?%MvN}!2?G*egEAoUtS}x@D81_$J_|f-rhBm~FW!no$%-VHANvoCA7EiYYay9DE_Qt8S+>djLu` za$5rO{_EKQBjqqh+{)(J)*Ji)Da5w~>VA^BJ{eaM5zfLN&ZP)^ix+T>qkx;%>C1Qh za+Fq}D9BeXQmkHpq=U*6j0z|a4>)|+U7xrIP}sg3?PS_sP*g61^QF%|FJwt=$7%Tr zF}r-jPZu=pxo{F^%g?xyrRzE?v!+-cYTzuwf*R6l`&S748^{mToyerc!G1UVfx4~LF z;feWmUUXQV90B0yc$} z>DJ2bOEa>$n*UZHb9c;+P4V8hd@aBBTR+Rf<#WgP zSOi=Tk9PZRZ1!a3#TG<7hiDXb*>WEC`Jt5Q6!Lm|y#D_$0e&}S)b@S>%2UTFoHb9L zz|v`EqGe18E-qZA97R-zq=A|B)&})*gX-iA0g766n7um>@WPv3%*^OCjcQ%^6^#Y? z$b#R|JILaQq*9XJwBF!0(FzlVY_vAGeDOS|9(#x<@BTE4#~veTZ89>{0F$$}wv3@* zb8VG|F`T^j^JJYi+x8t~$G!ssQfAAbKVKG)oe)|n*HCoiZ@ts$2(W1jAVuNX@YrVH z0hc46UGx*qJ@ur`=n52uLHUPTDcaIStNhZLzqWvn$fo7#%}R_`7BsH}Iv(ffO1+kc z`4WkKwe>M6@1})H^1}XUerc;PMoM-DD2LvBt1Exj)@)~M|EC(R#%8=xQWw@b7$a&r ze|JQD@D+!q&BG_xluZ>wU=nCN=Ndm_9o$)O4&4~VC29J+>MLHwRX5%WKGS7^qPo!* zbz0Qx%kQcd6O2^kxuiMS#Z3?rRM8q6qE{*NrF@$%gX;9zS#DCR4|DR=Qxv8U>1RCn z2c@R6B<<81_0RwBY<$u=lVK2iO|@G4`bNDuljm75kd~?}NkD0$a*fR-C999qIC2M# z-PaM6Yi<^dEy-9lina!T{y;7q;VqANy&i?Zsm;Lk#5i|=Aka?cYnvx+)}jRLqQPd# zZ`ToDe&;dx=az29Ekaa6Qz{< zY+DL+=9^n(-~PFfOfJ+e3pTi!GGM$Q>dmUb21c2b=zs+LED0Q-IxtLRpq252(>*ej<)b!kZY7ao#((?P2@)c8=`7jyJvXoxJYFujhp~zF3r9m0At) zHUr#dkbtT4f*{L@la$(ei=pLpMwZrTY_w_Wkg1_D_8+{O>j%x&hhKOnqZM9pbcW$dPu0#rFo&AoL^VJ_4$+P!P6@$4g)n- zFF7&9mZko_li+Ps;!q9BX6EtpYih?>UBm-hL341QdS+=uU0&}ikd*o9x_Fwcn$ zryK-9mS^Mrem5vrDxMk%w&s7LwrO?Id5$umFa(Vl6$r~pzMeoY1p@>IY?1jWLBi&Mg5KfWUG!&KAaj z7JzMNbRgpUfw^n~+kc|1E3uOU%jY{=f1Fda2FGi-{u6NEWxyz$xn-qEZTIz@UOvlg zwa0;-lbk&J6y5eD(bOKa4qXJ;a)s>xO~`WLR%}m@r?~Taid=?g%WZP&1QJTSW=R0$ z>}>-3xO=|+E_|a+92kLE1349*v%mq;jTNSnc}5$C<%Kru-M0IFbSb72e;q! z6CF|aePaNYG^!P0SXxBI3j*iy>7@@tKON6xPD$M>F9^UEFb z!l+{xHhAgbDPDKooM~1f{PiVrIPS9suU7*wVScs4zNrRVma0YpdnOt@an@DP#(hqak;WvDW#>% zRIXFsafIegZ(!(#*HGVg1LcYBgcSiBDd%{$Ev`>Sfp7lkxEjFq&&YGVnx%WJa9N2n z>h$l!KbQ8t%u0-X|26Gr7Rr9U1uhiw`B4}MD7mF1AXqViA=eRRd>7~X4URo^ih7u$ z7oQ?M{V-W)0~@$p_T|soajG+=ot=lW^KH^hgbo4_gUt#Kq{Qpq(>fTqUKnLdi(qZ^ z@m-t+uwALp8f7{$gDvSf)t~Q}&H5#pD^Jq7c#5Rc5rV$eYEi2-#G`EcMdp&xxNI1pwZ6vrCm(mt1l3Z&jl0Gug~3*kdDdTjX*71V`Wfd|I*d0; z!ofW2@|7X(q79yyU*o@h{As@U^b+TnJN)f~7x>5{7t}^K-I`uqIpZ+U?q}-qM$ejQ zdd|#OSV@+1{~)WeU;|**;fwsm183D{Fa3K#?h4@J&eitO8k0k1tZ+ejo1-7E zo*OZ7sEt>xI*2iI0M7})DOIZqD5XiFj4@8VV*I03pfOa|+phOU8DX!%5{9OmQ7m^b zTFYZa7*P0Wrg0@++QU9mbgVDi~A1|H=(` zr4EDLrYK5jnv$!4c;78lu6Y^JjzQ#eir*SYVka2)uC7U*SJ+U$)s*xD3`8$WPr*v9=)N02VG? z5MQyuICUmRC%O8DTlm%={!!lW{&zER(=MvlPf@#JhU#Fe-LehYZkr#F``-Ol=~mEQTa)v-eCjw)+;f-Zr;L-n8|*E}(m^0j0_Ac=G9t${I=?rAFKF3V zS*E+TYX5&2#+xPfOxCyJi@W;Sx(v#{l{LT85lfd{lXdB9aTc_=%*MZUf#cFfZ;)Y} z5tjn&!%0?f|EXo3Uf59o9nJvslAI*_(!fTZpA}qKbztK{WR@3vcmO(oe*anBNwWW* z22$m3yT)q_RU_6riG0Sh?fZ_gnwgvMn?sofhMy~<0c)73*X0inBRwS=&DJrq%0Spp z(Z-;Q91N&95Oo>~Osfz545XBx$it9S0yA65KK};GYq}2-Z#LU3mq&`Ru?fEUdw!6g z`!D~A;}6^?0V<55s8lV#DDCzCogSEu0zLj0tTau_U`7XkMw%s*YgMX2M7lChF|i%0 zBNzb4fY3b*8a{L)*fTp7wA6ozq@`h<~W z6}H2^uqC7bH$W}T=_i>p=+uGim#c}3EZcV_KoO76kw+2p^N%nw6fs%JXx}Yn6O>nqc|> zdT7FR&Km`}DI70@YZf)mem+ezcP^b{b$gBWlV6}ti@4FGUaJ!)B~%!&eeWK=^1Hr^ z{fDoT0eh$`5RdrE8pGDofU)Wua$^UA8B8z5WCeLUq1fz;ml)kto@;CqsxAzLvgD}@ z+Kaj7z%_D#@Y{d)>+CsrkTcI5mnP$5k37uIg9q4HTW54;mZ@#qQClW`df9^foewof zSYBR~$(?eciSZkeUB>gwefJ1RN$(Cu%sE|lvlSHl<;r?nzy!m&m6m|y^ib8=FZlrF z%dG7Z8=Sv=_&ldBwb{Db{ag*epvZTQx)R+L`4bDm8{JfnGY<5#aV~}}tDj1v>9cY( z#!!6xu}i8^j?`MXwBgD=CN~Y{TJ*VFIkzm@m?bi2Ky(QoV@7H z!A|Qs@FdXtvIm^B)2U(1fu!HpQ5=zF(i>qj{w)EoC`2rPRVM|*WmKr;_k3YfG7~Jf zQv{l%6yr=gjd$ierJBoT6@+;q?_oksu0yb##=+~Z<_A9TFZr?W_$F2sE`TnmRI0T+ z%iohF$ytKnKm3pIIjShejWI)k4$6q&B-p2;(vHSZvt9~I3=fY8j}n(FoH_PcvYEq_ zXZB&|%sA_RyY_mLH9g zlA0?sg|cr}#pX&=dW)k0uJniW$VfkrCt5Jr{S>D+^u zew%Rn5zvu)jWoIff!zlz;234edJK7M1Kr<5ch_Nk3DsN2Bwcc)7#eO$$uda|n3PUG zAr#`hM^xlsv&3GWI^#-*GoCT0Ej2oSIcbLNwovCEr%qQ?hmA%Pg&N#exb}`0^2YbP zhuIxF#8}p(ImUv90Td2M1VB`1&th7j${_;QfdH-pCKV}h<-h>VlDuDJu%J{xl2i23 z!IlrU4AV}?`?IT3-^5Zc+?ptH7yk>BN_hlA5i$x6I+MRgg*fwIeD z^1=ptpk%Wfe<|!fDZnd1KXz`FyN)l(>$fab6ox@Bi+ahSDKk`!70{uq+HP@&DX z&9j4pAO08snp)cEU+KMdnib|_k1eo!qQN!WN6ZxjdkWx6oJ%>9A%WpwQ_p7Kqkut^ zsL^Uc+2@47tr#-_ocpo|9E>R`rDA~GN=H{OoD*NDASk%c=YS~8LD-=mV3v3{Ccv{zSXenhe8u6h&2Q zZE8b9jcTLOJ$U5ko+yr*+5{|~pGSH|@|=oJNai0ROZ&t-4x_`+_pFjkK`HF)7jSAX z?XK~>L21t03#EMW9!Hid*g6Klx7K%-Geu@7RN)j`d0{`(juh}5pAh#93}>z&c^&XMYEV`)H|`!YTB*MebWk9+Jneoa_Baj|t}KOC z&s^G6oqqoJiUL+!34d_cDOD{6?3-#D#j}Erxq^5=KxC|53Zp=Cg=O|nH5qNhY5;!N z*KY@go*RIpls3l1N^2cOF-2f4=zTCK5CStyQj`S(RSAW^5udHK9tMR811um3;25K} z*eh)n5qOwnpxo{u#A@#9QONsR`R$!|yo~O*|1*B}KmQAq*3_ysm1o&_nkFCUw%WIa zVf3e^sC2keu0-8lXD6tM;i-uoNs_4U#%4K+<5EzHg0Yd|cskx54gf0v)ZmsVic}cK z6j`oAU14r~J2xDi3;fU>`D5MG0flgsC zfs*FX!qwPZfO4jl#^mV0&0ir1q^H7DS&0(M2@R}Spyh$Ey)=a_mpNAeTz^aMlwi&* zQ&}&uA_p`M$P(KRBz-FeXL4DJ12@t+O)~@lr}nb6w1D0`LA4Z7t=1^@F0%UgGU47^ zNa|zG@j#^8ra<-En8lN%3(wG7zeErqfiEcn(zGr6)K3fY<}|_h4x*81qS_EDh&-j5 z0HOyliqvFoT(m-wS$+!ycx_fGVgc#x>Ysj;Z2mFo)skfOq6SnEuY391dDCrgqO=0N zm31U*-_k{4ESe~BC3Q0utN_54>a;vA8yNESzVMpL0-=ZssxgECx*QC)h@csxB8`d! zfY6baTU8D*2Ewt5fM1bhgzG(C_Nv!X9&PZ^PyZGD@h%%HD=eNnht?5Axz5p>Uw};X z^!Cel7ceM>heyToCd*Q5J0aPx;}6#^FOv0pPBMRBrpX{6qOQ<0b7ik(CmxXgn@byA zY4#L3^p%$@``>$dnG37ED}oIm|8MR)y{xX?F>2yaJsWx{Pb5n(&26K!!dzKh=59Bw zGX__Du59M)Qingg@2vXT7w==dUPh@aJb%m224k|qD9YIVC@r3LAli-Ofn?P0m9i4&|+nSS?S3A7+cJY z0=msA{)txqfO{EmWWKKoHtmM_bdaB}=^x+@o%c){yYam@u_8=UPQtBl&E$Z}uC z>`HImAHTD2$raWC8MlP^Hkl*xEl1(TKwH|zNv6FSHBO0!a+5KA+kaWcjV@5g@+H!F z;r788N95xG4NbKB29n+eT6JV9Y^kK7+hz0kXEEEZA)4MJ-)Yfl(O)=$UOd5YMKd%# z%u1B9+1ez_4QU=wG^U7m?xsF6Ls+S!ti6snWP4t1PPUsnPd8#~3zOQ?m$ssW%nB%c zg&-S?Bu+byAu_@m-|tMT)bu2_r^F$635|kuVGecKyBh@Q{2l!O3G6!dx z&L8j!oR5h^t>#9n=Ggp(qvR~;=r8*WCs0}yCXf5w4y&e+vdqS%i*gkhMj^&Zm7{(t zXHv48C_p#LCntII|g?+6j3fRi2x?8aQH-pUt+GR-qVJ&u~db->dN9MP` z=AH5f_MuPyIXdm3MP-%8MVL<*V^mzN2q|icLhL!RG*h6F5*8X&Kx=K2K;*F@bNlwP zbMFCO_@Xj%B?qU< z1YG|O+9|B$F@Ls4p%s4GFBv@uc#>!2y}`DoP?b>l9#xId-4p;R$JJs1A3(sVIXA)E zzW(d@@gMzRM#jbojGP0>cFvtVJ^-BkD5ag~#P_x{7J#ainyA(Ky&mOKg>J7S=d#;s zv3Bu-1s@|0$Ro89ekAmd{YzOkvmgw#fP(VD#w`ara=~!#sU^-WwZEjdKef>2fiuhM zl}BgMN?oxJMuB7!kyQg;k<52Q( zu7NEWDNCArSAj~9ta-ShTM*&0{l#sDf%f=X*l{#u`l6dDK;-SH9R2ERtS|h4S6iT^K0rIoumE5^48~`{qu5e=|6`>ST8Whkn z3XIM8vJ^c4#jy(1#tzDGJd+uA?>@wTaN&}k0fm*U*M3z%6X#git}PRUydW+Rb@f@(-njZmEw z;eSF+P>ThGCTFI(?)KYx=84CcKXr<(a4{L@9(jn(TW*uNR>~r^{aW3$QEf+jkBv^S zxOh=YpJ5is;5KKYWHaxvMl6K5*A>Ioo|(UIDc6IO5{250G%!~T+VIfXRR)3eAHp!- z=)!#NsYP|&j?rRzsB$F-XAI&RAfkm@Ddg{4Sz$PJxrH4MP;ALo^c9;+4d&4^YkX$x zl6u4S+bM8Hq>)Qw=b-_hwZ_6*$l_C^m*0UMKk#3Y}ZNwIIu}pCPwKfd~`I zfm8no9%+rrb5yy+3t#tkw(mR0!=L;RkA3RH1l5WZRN;!@M<7FPk_=cSh5UkS7Zx(f9hzskv7Dd_t zjT`ywI2+}%pF+v&ZC2pT;?df^MgeyA4az=-bE+2ba^*nR)M>#0@mdQG-%024NjjG< z5-B5@Xk4kWy4j=O>(hzGhz{QZ^>O}x+?@rm=yN{Wf znVFfHnVI=A!7`(nXl6Wg2>LV$s$NG%MTSCg+GF3{hvg}&TT)BvK2rUanScISsfx0Z zER=W=!O$vv5;SgP*APs*4J)T$N)HiS1S{9)0 zkN1c^3!*Wga5zKVZcA;Fenyy-3OKD^#)p66Pf@VJ#e#Hs&dn>AxqjsegOznNLh4Df zg41On&~CTs_WF!QLt0vHW5)RKKm|o50`6)*Qz@H0ox}Bk$nSLvQ2#KlSHpy^dD9O`2#)XO`DDY4`dd z&R9dO!x72ln-JYDlz~uIh*Lkg&KiqJ2?#_Wlz6Rcr_S=>U-}#Pw^v?av~^wO zKl4fYS(|M04q`h_qQxk@fUS3l!&C%R_bgC^s%CvqtKMl;YsAsKqsEv~H02T8{?=(_@POQ)A#c6Tb{m2hI)F@ZGmjY_Bn!9%(MkL^Nqs^O)Mb z6#`<^Yojj%S?X#E*q%rhiC}2eNu!j$<&f$1rVy#&Y7yyYETPduH61a1;d89F(43Ql zgFRZy>wMtn{xa_S<`0vnDaW-s&AO>CX;xm`uLeqHb(PLh4SG?VBv#;DU1saTX?@+9 zPBnHp*f}IE)Kb#KYQ+BN;M7&8;6&kdlIQoPNJsBijq9B3tn;pSJ;u$~UZd0Mu)n{{ z&FfdWcKK!Qf9u;Ki_zk9CTC+!L}NKlgyGR4tyFV!G%n;2ASe~OE<;lX9cdhEQEtv? zR;snoYbPvsBB0j*%ov?sU1_Q$;Ci(#cXDKDTK`p%C;{io@>s(lI{M-Ks|7~8kM?fnnx_rXHlOJRAv7fFoI3_Kl zf%Up94MrS5gZ_rT=!5JGd@vevoat*;d1PJ%OgGJf=rMWD^siD$qDxGuVvHxYs2Z(7 zb+eYrGA3Zwflb|%kr_vfqm?BDQAH-48Lg8SQNo12Z4ty_ZbcEJYlj$* z!H5;L!A$gbwBIDU2_x;>T!@y?iivRwb$4chXZGUf$?|>D?h1#82lSWMdFzLM67T+T zKTX}o$0?~8wYf2dHka6bwR?VnAIFZROHCh8f!o9NmG~UYXisyN_6}){rX(T6oiWgn zDi9p_Sp}n!zINS|cR%nhKK0R$@WS&?SgzMopZhf5^y7bWWUB#neYJRR)&*ymm)BI> zv(;`}eI#*077Lfr4Dv6QAggDN8#))2SL*QQaw~$f9BZn)x_!h)p1S!4!Nv|^c|Olv zJ7DX+6P#VOfPFIuM-xdm1}$aXu~Y2OL!;sI?{F1n~0z?JTt%*y}GXmz$d>bZ|el8FH`1kx* zwW<(NS(M3@r|I4G4jo)ICJ`$}V&_; zV+m_~Ew?8`2ANqh0#=8_fJ1@PN)>>ZTa7@pu7bHLYXMgU{N!+p<=GyCQ>WEc?2?rJ z>2tjO!#|l;x3^fo{+RKz=_zUgl`f44Qgg3`Ix%Ch_o?W%wU1T@s_e0}H>AIJKsGIm z`kV!?yr96D`5uW(+X9E`GNAq>8Q0r{Zrp{Ubb-R7~#cg(nIU(?7n*d=heZxHX&Y2Zu z%QgpWM$?j;`x70sd#&Vksm@!6v#@iN6ED^+vOJpWn)^L<<$(VnukfqB=c!k+BOID|L+&?6g+THRb@GzXgz+0+c&{i4EBcTtcs|)b!Iu54ydv~ z9Ar!nYP7!0q~9SdjOZN$3<6rn&3mdWRnQ8F(=PE`_@Mr3wK^)VV3Fmy`7@5QX+y2o zpMk1n=Kur=XjV6sCbO!KoXpvIo%dRjq1Keq^HYE0@8ynnyw514Ypbh_pZz4mE6-6B zrFI*@oz!wfAeI@>WpusS_0`{}E-~Oy01>ojSwcPg--lR=p!6mu5_QBh!`@fw7Bh{t z7^AV+M^zI8^|k7pwE}Hsz0?z1BOvO!Rx51+rj?Vx>- z(zMza<)2yi0kHQCYYIR_UDLZ~Hn?{09bCKb4sP9jp6N=Ts+E}NXSBrQYk2gL_i^Ur z1-hLsyZl}j!utb^Xn8oeA)~$)^5ZY_)O~tDPVYSz8 zD9DTbMo(Wm;Nwr2)8|LXwE8JNMgZND~*1u_7F?Wr@h%XhyjG zmz3rZ)bJ*Sr>-9QAA0J#L=T2E&!x%NSrVEsqHMp~x)Ct^zaMZAy;wx18c6N+ zwWddZYnP>4d+JjL!L4*i*1G^`7WBc)Vl5DKd9*u2ib&TJn z%EkfE*v-7xpW?FJs>!G>E4c z`T4(+6BqAM8ufHKX3*=BKlcf$(LRONP`82JKIg5Zu{A3ptiqCIUBt7l`s|`R-)Yx) zjefR@^Io$cq-n;={Qb38UNYT1W#Pro7{J%*_}XD)W4cBMQ&26WV42tI23YDH^Y9%H z)z$-~(;~)Hf>}#RKZ6+fF7~E`m>Z$z)0!fSU8=IsN234q;kAdrIf96SsBTRJ*Gdpy z*|}71r|DjC!u{`lKlgvbw^Hh$+@{;^&`*W@@)I~T_Ce(pKq7-o-Ba2%{(;TJiFdcI zcQs{WfGpJkAJ7;IMODUS6$cG-Kbds^M6l7N#%nt5lq3;TVXk5Ze!Zl#w^9gtE?t5N zghpS#xxH$jqsKCftWpq+Md8xKWM!l#u2p9J9QR^V>CL_JhWGydOTM5^mgzNYVpCu zMe>Dqv&hLy2mlxXCSbh|7S_%7iQDU6-iM&5<>IO7TtDx<6PpzN)`|9LFW5W`rvN^dUBgv#`b&Z=7{HS9x8~xNo&d1q#Bz- zqKWqZ+W{wSx4k$wx%JAcH>Z=y?C9`->FzGo{sCSytii3ck(I7VcvP<)#$UjmCMHY0 zCJ5NWMzC3;1z78U)oe12@fqxcNeqY)rE?UF;=r!}QGc+l=0^kA!tu`3DosEHYHXcQ zdb?%?oPfFTI)@{Ys-h{3+v)fD&@cYAXsO{e(HV5N(_%f}CYkIb2=xcn*kD-Bjm_#^ z9MD^>)GVN=4sB}B!4v>u70;Nb(xALrU747KYQW-a`>Q1tg2j%Un6yo_dZZEH7NAyJ zr9M+vp!DW4i|#RfJrFSZH*SMm(nhAg)0~Xr4m=*C^W| zvN&#Jzq=FmPHm{WZFpi$U2x(9=T4kcV#H)T=4iOj&C9QF`Ne1T{sgcZL(~;@q3-%^ zwKCRDoT{Uu=6yJ+LyoCHTNj$VuRxt%ygi&L*j(IPLd4ZStC{>Cd*&8J>5U2bqivS) ze|2Aq(#vrUkVNk}35kEcR~B%Kg~1|KO(#K%DQ+2vRtT`3zd?=d+} zTiHrEJh_IlzZO^(AvAjZg6c?5K&hcEXH-rfsn^k8P1#Nr+~l}oPud%=4d^hokGcab zFpVbJN!&?u93*DiCr;1Vn&nO6jrPs6cktm~_8Ul+RvC>)jE;`bx-D0ppqfqNz7|-I zmV^zObzq5BL;?Yeu~?z){ArY+4vBs#h}*6yxUk2 z&tcXCU^R0pwSwX#0HP(OWv zFHtDdeoG}qSgGi6^Ep zN`B3Sr9zC8SQm zT_=~gW4({CxCHdHsJON_LBIOqCJVYd4(PH}G_R+2UH&*r==F-YB~~`r)*k}T@U=Dt z82&u)kAUwDA$%|J3xLh96X0k&KOK#i0O@qP47z>htTi2!-Ew>0yAY)?%9}@#HH29k zljQ-kZU@~^doWE7={AtvIhvSum9}z|ThcM7+wSCGg#f#Ly zNT_o4`6E#>gjQ-UJVe=Q&AZDaX&!q2xAMRTK1h-0%Iuj=k2t#i0@d!77{hQDkBF9r zSuG-9c_neSu0o(e-AzWNPW2e*_SsBbUAkYIrg{x!>6uOowQeHq)e5i?3@~agDHCZl z*H%nA)nizxaUZP~z`lzUi^rsCVt^2j7mJ=%5wH>yHpM95E?Qz$1iCUR14Q~Z^|~x| z>akE36?r6OL@$RG83WXX2Z8Zx&ywT^YOUpY&S)~`Z9nEGvwrFfvLIDNYSygw(GINI4&5!wCy z9YXN+Yc}v!01CcVn<>%vJ`zg`y&r|9EA2L|{za4(cE@HvPL66o6@nHw+Z*M4otg&e z^YYlyK%%rxxc|&baJ3jtV=3KMDp85x%@lVN?F(8Ot;i4-RRcYCy{m8EJ(_W7+HM43 z54g1Kmd`YgArau_ z3mOXw!N4g7_63Q7^8l1l)!EnLJTb7Y`$kbp-4;ti0~pCb3&DZ1*EGYvQUEbVSWFT% zwwr=mbgx;R9VfK1%x1D0j87dAs7!Xon0NLcR$?K7sTFkd3O)v2x~)!z$dbg$Pa8N2 z7Vn9dW{f^{IkqFwz~Vegg*G>xg3)M*+<2bM!T$apTiZA3UA&vOy#HHj7K4GuZ6d$N zTjnAQJVy=iNSXi0Z;`r1Z0ZAS2SK3a~U#m4wN3q6w~hyIU&vR8=M8@rb?s zy{2-zO+0)gxger!%v$_K6#~M7ik`36>&4izBvE>GJBtr%+@}ig@~tDS!ufTwZi0q_ z+i4?2gGBeBT-fZh)^7>m0*LlH*GPd$IY0mj!3KXf zXxYeKjY|b0bIKxAS%Nf<=^OOY1uhHg`JhVxOp<3-5j@7;NxL!2UMbXq0uMkOM9eQA z&wJ+1dpUd8efT(AB$Q0HE;GILip?T@MB*$6m(uf1xVI;{B5bKrFJLnpVz&++=f~IUB1NlMc+PuQ_8n z{Q)P=T%gxm(wv%3yF)&iXg-c}36t>=qj{&!Olxp{or|Rr;@=!ZRhWGUG(l!zYwE2< zP>VWX&Hc<}`t@uNonIlU4Oloi=$I<5-%e$|l%{bTVwaff_LlRjoLFi9C_Pl*BG9x` zr`FxKJa~$^Dl}Q*Bm}e*8jk5)d`H&o^#cE}cHQ*ZvwI?VUwDg>z@|u(> zU;>H&MW?+mcGE1yVFN*90Pu;k#7_jHUWb-~8A&q;qzf!1_(3^%a`oNF6=^Dq3> zjIX`M*7eJ(xEq2nyZj`{`gxqHR|jIwjKwnuSVEf|YU z?G`&XuXE<&CDOFT@bCZv`kZSswq&q#tZbaHII4iwu`yD_0#I2DK+zk}O6d&hD$VvA zYck~hXIFUg>b`FJT3h18&5M=!tWk41EOucb$E?2R)C%vow88i8U#sVj*@P~HVE1{q zou~xRNBBA0i@^>U<1 zk>~fddfmS@=&T)$4h~-oRW^TM*TlJ_WY8<#fHf2bBLAEadca=< zvf2-G3HbfMHv_*@(&S5ke`C@%MVXF=M@i#x0{I%`>)QH-`Jx3ADT zeYftDY2qZ&4TM#sv^*25$&W5m35X2{=;xzb!v=^rDYW=ZUHCGpmq)5{uv``*Ew-+q zRwpu)F}|We5h@UK3n~z#HJ6qIE&fIsDavMX5Ngc0P$w}&@CCh0?3^HARY}3DF$t!; zfGH!y#KkC>sxgXm|2pMxi%HVQIXE1R_|Px;jV!I70HApf)`3M_?Vf2!Gc{adi>XPr zfAhX?SU(FaaHxOo7?x*qLT7I5xQ|YL);W3pA~&C1*LdRL@DMs$)l?@6d6*&MI5^xx zoG|DQtlDe{62V^uJ;~-hACCbzoaFIukkmEM76HvMrK920N=Lz_HZirN;&~9CSGGpn zI+$wGrs?b%<$nP@=ptI0PE;7Q-$~_z51$Tqomhf;?a?N%$m^%q2q=L3n75qOYq+vA z!Uxra)AOwMTCDXm`t6K)jT%m`_Gl%J`T1$538QHw0C_-$ze!|TcZVAGA&ozLeTy`7 zlIpw8%8I97JE#eyq4J~gWPB^1PM;_b zhMz!qJ_Mc==SKCSZEG7FF8Gj&{@@fr_$LH@G4M`|-KVv_(&%RU-cVM*MUv#-0sgjt zGn$U|$Le-_gCt2PWJY&wne5`a-Qi(>0<#iF%(>}gR9T{lp58gEh1b`6Xg+k3s+9qy zN6@E6*=eqwntV>IO=2X4s+H)uoq%5;XFyTe$%vMuWV@FsH_nrGx)8|$1TZF9tp5TSs|)JZ z0R(7Bx0vs}K44n{BuHIsGg=)2!3J^zwX&)dFzN$YbWz#wV*{HvU%$zu=)P!0%?K10 z&jFzBwzK0UCf{QqX-@KX&}cf(xEx_f^t%rr>ilI^x9L5Aoo8 zzk#Mz;f@23#y;T~wiw4~0xohVhlb8tBdOo+qubOmGmF(gaA9I;JeHPUZ_{pPmkf|lF{!Q#kE1K#(($N1&HH9^ANjV=(XB z+S+1#aB$bo_V$C*JpZY_EJjsXUCE35tNAQ{ZZ@5KSAgwM`CkEiTYy)9{{egv_{YH8 zPDqi z}vS$gNK20cFnYz*@{f?RPG+YqQL^K-!6o{rMN(K-MzMxB&TJ06eNfCA0z$@qk z#>)eWG(`e-?&AWuHjAxouMIj1T3(Yni+CS8s?ta5H41!^C6IdpD6v86E{)?d&jY;U zgFl{EzWN0|{vZA+A!@%RlPR4Ocf;ldLhS~!5(F{(zMe}%e0|)&E%8UKY6734J(%mv z$MOdVR-Qm&Y=&rcq|u^Mp-&`!R<~KcOZ^yXC6%5?rM1Al2z8LrUjHt^tStSc9XsaO zSO7mwTx8}25(F1jzCn}>;H!9CC)8a#dS0Nq^)i!d&(TUn8Cz8l-us?!VD;n~8{C_1 zaqgX2QBfeaQ9W52c{mGtiaiLCBNK$5%Cs$UYL&*Ze zLsfq+s}j|@6ZAC&N|#)gSG7o* z5Af)H8~p6|Tx2QA_h6)P>{iPXAxl!|q>Wm9%?b^nVI+lk?yy+ulf^|2q_JXWIOS+s zSq!e#=`dJYQYoWz=guJ_V0mhlK4-Jpl;LnFyZd{qbMRs7=B@DRl~*s_xPI*eTQ_gy z*REXo&3Rs24N3V>gypRDRa(sNa1_v z2F?@-j4%*EvaUc-2l^y#w^?(*j#0OC;{VN>1KVzZ6uHA$0}yHD_=oo z`&vjaFN(Q!^B_Oz*ZofV%d0d8cI0^R&1QVAPJyn!r=Fx~y`J#dwCIo5T5FO4pgDP3 zuz4N+xz%7AP2}DVFSF>N=%ttZ)fu3&!3QcmwP<1cf?^) z1z-TY75EO|XrYA@f^U`HZ%p%v^m~11c|}YeWF`gGl>-RD+)!mJW#_^v@@^Yxy073i zax-JQ;U*Ii>nBga8v!fJphZxiL-1NbV| zS?Ojr61mco<|Q#8gv%zGKN_*^Vskxg^8{EJu-v`ka| zObEv_CIjFW0GZJA7Bt;_&CkW9vu*l2yR3(64b&|r;y8QuEX8DOHJPfiL}JcT=_|_d zh@vR;cO49tqd^eZJb9X|-J#4irlNT=)1uOtgvB0eK;2LqSe!Z^-UP#VQFXHgTcins z4dT!|k&{n7x1~T+S3&sU$8R!dXZ-lLp4YeyAkqLHSPVQ(J7uO88X>yf7EAEe4EAO) zplRK_wm0V4>jwm^La3ijroK2l3}61trzg*T^($Q|t2Ar1ICJSzxOC4wa^m!9Ik~aP zg>&bXK(f5Fq`=hacIbAyEG;ebJ>T~|f{+joe6iog2juEFuhWd2Mp*KK+y~yazAV4v z;fwO;AAi~1RM`aH0sINzw*up10mtFMDWO9I(F>TDDL@%wukJzNK?I*T1(}1h8){+H zEr>cUHy@b5vCJN2f3-E?6D&rP3h7E4J>Rrc0FWfn?FvX{?xVd)50V9LHQS|OnN$ii zj>t76OiOUsjw-K{2*F2Pa$g~DK*Qq1xr;pdvwsOc{I~xiM+dw5AXoVWcCL^up8_zt zbChB+3nLDoHE>ZPfUYxO2?7LjC&YXjD;b{DY6XSJGJ{%)Ve@l_+Q222NEvJ3C@|K` zX2(1sU2kkVB1l@IrmF*mb}!)63Ii{}01b&6Y`SZ7<0-A$wj&5Gv4m2iZ4(+I(kd~uWc>2OcI!j9&?aV-!2dfX& z9c6B{hWO?p&U%tlq zwLb5>v>tyaqST)?X!UP#yMp{ms(9(fQH>4l zpD&91lk=tIv)PHVEbnm6Ei;=keCBDMdGZM-;@U!JWl5U$dfo2HbLWx^_uMOUYllnc zFX(vxnNNMv+=v(YZGPWd@8V>q#dC)vKD%`wpWHfNcUI6%5_$LL3f*|mzjJd%e)B_j z_&@rkmy#+35Bxmf(Q1Md+E^*7wi7U&JZg-%w#AjQWb zY?>xV6KJf7_xivh5l9keag&&2YPEJk48&EbBh0%!WX-}@4Pd#QtgEj%lO_782v}JJ z$>R0QN$^=-R9Fx;BO5hx8k6NlY&tpvP+ zhL+FJYb<6;p|6i8O2HQ~w{$?oZc!@;VYIfS^>4~{3oo&{XPu0ouNU9ny1o%J8XXPE zXIgHAqxoxEEmqgo^*x}#L$Fd6s-0F<6?su;qO1>rmE~1dHc!wQEHT{P0#F9ocvdza z?xtIf)-`_p2uI~fiuet zI$14>BMYyfx$eo=_QF5 zUfl`;E#P-Vvccmt0Vfa=#PyRTb)8;MOG~%Bql`X6M2P|lI6LPfFTX~^BrHgXlVce< z*4nwcEf8uJMK?p~ydoOAF`BaCl2=uOs+F4Ss=f@34DM!=#o7}VBl3mH+d#B>T;@o7 zDaEuTh^h|M*+aFcWSyW8>7RF8;`IFw@yeGzqZ!}I037d=AKaolSSK;Jkx<%kmD-E` z1_*U&{t&DNO}#FS$<^q(EKwkG5iCNDHXPzZ9v@0`=|NC%u_RCwWE#cc0!3cpoF-!u zTaBh1k4@4b2v~^$1v{0mDK!TPZ=mH&CO@hbM9@p@xZYa;-xzDwd`Y=?ok6?B>dK1F z(rI_Opf)oXQIbKt9w>iqT-unmQl1@nsShL+f4dhwT$c; zs>erGbz5F~UfDjGG14!=rAI z=c_;;I04*04B?!>db`{E$sl(Fe0uAU=MSIZ(Gx3t)2TJNXSvUrUWaczozhL6<`C5{ zxScrp2^UU=AGx`oY)uOXJPiD4M1CGHP8+pYdJd$>b5S<~LUD6Mm91ES`)GZcy)zqD zI(m^OGt`#NT6RtN?hZ$4PoE8UpmVn)LaJ*a)0w#dTd^I<;frXF3RD7GKbby+7vri@Tc!3X6#!W zLcl~UBjvLe7jalHJplF605yr4qAX|*$RaM14kVU4h~)>OqO^|yMjUK}dXU-z|41wg zo#&-mAn_r$ve&ibP*YS0m}0dKYI5+TaQb$Jc)>I>InhHhqR7v zv9!8Gzc*~UuV-N> zX+fLh6+is+4Vf!Jlb7BE*pft3R|2l%;9<4}d=he7FjseQR2TZ@;oF-~HN-yVUQ{bUX9~Vl(CY z3;nMA`1$sK`O*!Ux8S}1AR)X5_()2vWoavikW}+VOVU=_g=xUI1zf^pWx&>@GYU4y z>t8v)80&hL$ zMX=+9BByxe%XFmD+4#=hHl6N(ANNf^nKN4lWV1r=HRru{>7*pG6Ym{VUl8V*5VI66d}Oa$wIJE1?lg5;u@cRen(Z5pS^y_FZ#e;%7%+j&@=-qup+X+D2S_@ zuDwnc!8(|Qhv4b763z4Z<_Ax4eyyj(nnt955lEQp`Li!=$w!{LNm2R$q^Q^4xp&^V z&T6-{$c1)W>nT9Eu|JWW;Ve|%%Ah_2{N<$6KKeRn&gFVMk)KZpZv{>C{5b(u3mN5{?i{W z!P>&0D)I(nIigH8RjUq8uSEv}>88YyS&0MEO7KMhl`Y zpg6{VYA!poln{tIYGRgFka&C}E>PEgtHp!7#b3%$)wS3RJR%s@@^$L0H>uZWsV9x9 zCF(U66#*$9Q(S+JmDOea{SFTg+1NPE+wXsvZW2hAGhC~KYsc!b?NphE3N%sm8l%8s zOQ{^xXHe1AN(2b3ihKl~5Ws$W6P{J@5=o7cCTal%b+bkBKLs}FwX7bK?N?MVE|6IP zqXH>BE-z^v<_bc+{UerIsm6VdR+rTEHk)_i<=inRO?=^d|2wTtn@+o{RPo`_q3^U? zW$IijpG_&t8RPw2E!DCp*$shSf55dDo>MCM`nhv+@VSf4v*)<$9q;1t@Bf}iViA7m z$s2P(Smsi+1j6yNFZ*fIsA9S(Hu0sG_cVLI@_|>kM*OGGyvomc^dfUN-d+Ysx#wa^Hs3pia@k(Ec-t$2p*b>xCGQ{iUHzS^0}&KRMun)CB_f{Cr0A% zR$AK!O8472^J?pLfzh;wO@NEvc`Q7}5(S9jdO_ARcw^gNv}f1Z$?+P z-9Az|m&C~ew+HBiDq6=2n(i~xi3%1Yd+yqhfBlJ<`I+yz$iwGWNfK$~Yb}I;`g#K! zqD0LH?mMN|Tvma*P7Ewg+Bl}sBxUhXqHR`I;XA*4Rlesd*BMRAI_xRmX{npa9Mqau zxafUz{;IK?Prb0kGuI9+ni~PM;@fckpSV zfWu-6MXagcNRX@RJT+chMtM2e=#?jkY1!K75*ejq+vX^i8H3W%VK^Lo7D_<-r?8tK6` zlHR>WC&rRNqcu}uwP#`gJ!TD?xA9jL zj!Dl@13d)OQgb*9LPy$iy*zZJH~UCruyP*t?`y0(arKb1n2wtzt7@5unha4f#qV6E z-{~NNp8M>%i@f!%@1nijMYNGh-w+pEk~LtqfJt$>m=3d!s6!9@(}^rsqSl3|I#ZEs^u*L z-4?Rk0q;pB1?f1anpPCk9Cve9y#_030#84~Aah!BLhq3@-5X8DAKANg>(7P|-WA{h z<~>Q%b0TsQ!XQhtRyzMzRi&V@)Qa)W4liwO#acrxwT$s-`@tu#b8fxIT(7M8Tp5XH zT$J3{AG6ZU449g2t>5B-GfRB_rCkCBLQ4Pr`#=+#D1_^V1?$1$3bWax^XG@vQ6e?O%9}y!1^Qi$uh|_2L?LpImx9cr+`%){ILv z*G!Wic>KCOf(i_3-MArNLt8&}N_<}YLg23g9*bHUlerR*wsXnPxOl?-g1gSrP7;bJ ztQ$aIkIIT?_K(7x!4^Jpb3cqrUjRw0sq=kJmYQZ5%hY9^UKc{fYd;2)VJ?4XZK_}$?LyG^Vr9**n|h({$5tkUSR9h7nn{asNDXoSLmL(n^0Hw zkq~F~H8IcF%)*J~u_dm{Br#C2*>O$1KnI8#=!kf`x$DB0!RvX=qN$NeVlA3P2mQne zt!^601RgC07b@yBWfutmHRe-IVF1j+5~Fy>Yl}daKq~cpbZNh5D^1{VNZ~8yQXQN= zd4|)=^M2+G_r2p06`j=sMtZ#;=Y*XxVfzS%Gt43}fPvryqv0zRI+n|*Y5xm#AxQ{? z2tJj%zVupaaY?a1uA@$OM^IprG>PoEM6GC++v;AkC%Tn@Q;B60QepYQt0Rr$~J9F9w3D}XNpKLS)=huF>MflmSN1zN|Iv1uia=MTsH-DfUqvgh_R*X3Sb zhSGb+m4c4WHv@P;fG2@pm2}!eXqG2vcL#IpW}2j_DhzbGJxEfH)|P6?at$AC17O19 zjHV_CX);|p@0P(H{}}392Yg=XY)-e=Y*Uq#X~>W`S!9zoa&!XJY16*8ov5pp%shgi z=Z}N7QGQ!GOU8SY@ua*d1alMKCa$%5>MR>~-N&t0UQ{+vRhCSzJx_MwEwt87QU4x6 zg1Pj{NuKOO{}hyJq4zX;vjfzCNis(91srUJ_=SE?0{~JH4Rz{HX7sUr0BL@E&ens z;V6d^#AW)Kbjhnr+9jS_S6^dyZ-U`_OPzD;6?C}@M+P^*ssTg&wpgp>?Yt$ zrsEyg&Q^O%10eD5YRr1c^Q>Xj5m`@YshwzC`kO(fpSZW3`XfsPnBA5|h>q;;NTpn|I z4yS~hfD?@cDUoG!fDGCMB^qSVYr#qfsg%%wf{z!HZbEy|VdLy6MkAH6XHFLnyIWh8 zud1{$JN_}iZvi$$#86hiBPi@sdbPM<=z`u4`8uHUhZ_d)nKs1Y&K(*z<8xkr(S-xsfE^@ z+259#W=)gtTv^o;#DW%FlNi5IvCO*sYQ0!mfV%bK7iC;Gt*=n8N8i{d%8#^0lSo_h zNKMZI%)cH7ji7F|s@E~`M*A(~_|Tt-i{+xNLS`^oblqR~tHdbO5>=QZ3rsu2lH6u-D7aCSrImF~U5w*I zshd!Ft1eov6d5aj#_PczZdZ!~Sscdcv2A}5BKSoHoio{*XbpMOob&2B8scs|&00HS zTqT;c+R8e#(=HqBQ%rZK3Mh_fmw01iM7J4MQX@ErX8VgMfOw}9p(vw7obW&}r2wn| zpesud^j@y}Q1#qpRj*>J$Iy4+hL;Q|~H2UR_>IsI|Px-vy*1;w5$2BfsLC zIM~_?uYK3knFLoQaCSa6JO=!7;ARnmWZwTg5&7G3FiMA$lKDU^tNko|!+obh>O?{; zCbitjIJe%9Eb;|W5tQ7*H$QM%snNqpK?8G)43qo7$DiKftFP?y;kTXPgAbljflpYZ z9^5=3wL)|DfhOo!>G#S9o_uXz=Bzw<>DEy=92assL4*@4?eOE?c9sk4y<>;PW@%$G*rFHo`#|`Fk8(oG4YP_~R1l6xfQj%R}$fN;icT`yInlvw%#%n@sp)dRb zu)T2qBdpH>=f*RSv$wyCAjtHP$;)4&|M0gEvX)8x`^dx~psyvmrkvB{O;Z`rUMr#| zSi)#652vow3?hM~Ch&=imXx{-t(s_j9jy!`7Iky_K9m@l0Yd!;Fi;e+I{5}_^%^{t zw;UTI1}NnjwV3SlzVep*nkEi^c!O+uNLl52eqWWGI(r9if9O5*(oS8JDh3TvtECEB zjsl{E(KNrS#N*SHvXyG0<#@TTE;1j1J^)cmO_^Xxbo(ZiE~$vpKSWC0 zQpqxaTGMG6)efXtDG;RgIyBU1eNcBC+&n_&onDG;4v>wW0*)+oP^I&>mVeOvB!IFg z4sKq#x}8XpH@!N*5`q>!e8(?)tXeyDB7FA2kGRkL`R`1eb3XX+t-vo8=l(KKiRU|% z-2^`gw7K13F5mU#Ycj7Z6XxBj0f-ak){7+0EkYdoerHyD{J1%Y{KrpUF&J3XhSO37 zINxaw_v)Z;zq`YcNo zbfQa4fh#_wkqw4vrWHl0`-M2rs>S6S700}Rh<)!mcn~nxnYTb%{7h6OXmE1$JWgX7 zvBpibw6ZKJFNcb9yiYzEDq!_{eRb)bIdz_gA9|-1^{NtwM7M3;YwObK03VPjwpnGV zifnq(eN;ZCOj8xw6gjpSTixhZw^kKUsikmynG;RSl<0R&Do^4o-4J!$6oArMp>e^a zC_zMB&RToP2sJL!#3PVNrAv$Zj0$A9gKQlkrv}K$C1rf}mY3*syQFEV>I?Jtv(b2* zCu!n|ZN4o7&H+ z0DkTclh3}mt)-L)?Uckx7|%-C9nFFdVS$LW&DfN-{H{xzeENlLE^m!taf^f)(Xs^q zrbh^tY&s9@v(jzpwV={ELZ{`ZDm3A`6(=BhRdH=^%)z8kwSyOK9O>uBGbKDo;EgpA zc>n#I%w3D2ohG-9L{vU#3F=-u)oY$J-okf&@iofI5)De=Dd2A^*!;iPnt;=4wGO7! z>64Sm_}*TxpLCa&c=n5*=G0NIS*F3W9#5`40v* zI&+LVZq0{29798Hh>6zQ>q_EGmwQy(iTT;fQK8pGtumDe7De6F6=iJ*CUDN9pMz;Ybwh3_QT zb;N-^UbDFbja6sBS?YJz?D%|g#2{-?l?D5U`zmMC>JLayono}IgtlN-f-%pEepkUH zZ?}~sQbjfAraRVzv~PDG34{jiQ5IO(S{6M`s7L@%0?hh~DOIOssR|Y=Tl-3=aqX7s zza?d*+ac&O#y#x@tIx2)(M%_6Zd&0}aJfe+wJ>S5wN!kssEWP9**9Pil0I-A2nflE zx1A458*3ERR66TDdF(fT+k6207m4Jq3T1T``1Nh)egoiv&js)Q0`NzGO(69lgzx#v zHQHH{e(=H5I*@i-N$Ag)0`&(&h~{=<&M&7|yS(S_O|EWVF_+S!)=m>u4xnxw0#!gQ zpnv|+mzbYlY1iFWN+)yl+6ko(%A9LuI>Aw(xw<`8a>J}pi`q8=;&MA_8xi3f9@q>& z=Y5x=GW6}+a9YThU)_~6Ydz*F1>xU+>eV{fRKOPS*ATe@@c#wiUIgCp@w`rh5(D%YV8;&5ea5BCH)kMG7^4LHY^xXISgpx&p05Dl1m)(@#qs%WdyidiRXH*ONjdj5=jT1v<_;~yF+BZ zm1TumK~BL-_pQoGk8AN2wUkuSM%ijU5Us3Q(KjTnv%sxM?}*cDv2_AeUa!jv&{b7U zM!(ESiYe3SSXCR!vd{ukgG+aktgllcNMwQ`TGoOpNz^4fREA}7&78n7 z<;4RL9Gm5z7ZX;jT4~}al9qzdXl09%D|_1v)>OzkkPF;jW+b zmgLp{{$y5FI08Q*c>iFey;i`#i=~Hu5#W`CTKMqoU$|P$gW>YnJttf{P1NOuG;&;y zBXkPEA@XA$KC5w@AAJ0VS^XShUQ5nM=Z42{n7H4Gef%`YZFMRASQ-ogBnzi!=oy^Y@Xv2T|+@34+%i;hJOo6{B ziTgMD{{P|DwDqbi_#N;4Pf4?M;F8o0Z{6VHJKn>_>2nL~+sFdi^P(mMR&VXAEJvN% zm2UP(m)j6vc4J7GR)iSccU92jQ!TpIuwZUejqNhX6;Ls|JJ%RR4Ym^`Ml21%TlcgHa1Q$K03s$oyDbTO$5`|+%-n) z#MjjX%py?Bp(d4MD$O?Fdv7u^(WJNiO{*+TRB_s9&PkM|Az)&zUI#H}G-c4^8wDD$ zil7h(bx=_Nb4Ho2WqQ|hfQ%>*V*MSZffr+1yH}VU?P+X6D^>>2yTA1(a`*jjAsFj0 zQ_;)Ga*w>%Q7ak!-qc&uLSC%P*Zj`^ zLe{%yP2T@IKkT#Rwj}^2tt45wxX#o6?h7Kyr3u7jz8697hmsI(01p6XiDP(K1-Y^_ zmbvA?_HZgYM>&@^2dY;l3n<6+XSbDVsc9x zgdcd~y6hazZpW;R!Fua1cBw5D1QyYxod_R%rb8zKFe)@SOcdre>H%2q5}u!?l|_ZXgxHxH9uz$K8@x?2c{4c_Y_#_3IGa# zap^?&Gp1c&G1xS((K$}taVMeOMWVGKLD=8A!EEmq)zL0-ur_+JCSAsWd75fB3b6+6 zBjc-HjzA!0`m5AG(^+m{pvR3aJ4^HgTm<=9UJ^W3!nqdriB?Z(RZ-{f?b<{%PDGtP zJ~Weu_$Eb>g5Ffe1oArYdLjI$fnhx7%$tPoCwTx4a9L@?RNn zxUs4^WHEL_Sga=AjMdvZZ`aziY~udS&ou4>VX@0uIOg1fO@Pc2aKg0HX8Y_(ZrpvI zy|bHC(S1}Uj=Y^Q>$b@|ttdh(glJ}!dCqWr1P)eL)(Dj^_ix_ZLU?gydHD|Dp8=0K zaTMMsYik$e=lq^u6E@GB3SO!>*g{p6e&e2#Vfn$6#Ajg%_#h$~X!A+C{YBu{L;#!A zBw4~&U)?LedS$gqnv-Z*T!$eO=oy;^n$ZoBD+^! zp}TpKvv=Qb689k-Gw3f0+Si+C%@3tS*O~@5+h>=ML#8MVooMlBk18xlJcqi_%xxF1$KpnHE5_Jn!4pXa zw#|veWK*IJ7rI2yb5XC+BMxfcIdR6o)9%Ix^ryS@RIa5|>*tQQzlZnytY3r-2Kbl| z84wn=(6EA!)dg&VQe4UcJ>TXt(M%)2wl7v|Z02&+CrV{2)BEjkV+G&JlyKnG#fDmM zWxJ)S(Zn2~z2P2TeD2F^9qp4>1$mxN#)pS5C29K4vMl>OkzH0u+HU>)ANT8$-}1A6 zpS(SJhn&2A!ugJugTZ0&&f~lbS=MH>J(TMoe+h&DTmZfu*ad3`gz#CQ2fT-99r&OF ztAqf(b|P~YTIjYSDTBpI$rAeSn56mPp@ox*#0?)p&XF`Ky??QT|jS!g<07W}zYrC?r=P5#ZNU*hA>Y{i(3 z0ZkQE1b(9>PX2!gINH*pc;1QowxyNTGu>`Coy{g(d*(@&PoHP~^jVTLJ4T&(LHS#0 zyaxscN3_OMq~_>${fum*2ciQy`qWo>>G3b}x&QGW z_}q8@S3dKd|B=sp$A9FjKlGhE^|9}pTV(%@FMa=a@Z2YUh_8I)`}o{kDfcTs@Ev^q z`@Wse&zDbr^aptUGaqL>I^yw<{UBeO*QqJ0g6->9sb({lCOO01Z4gLE$kw_@t@eL4 zE)h}J8d7?yPD^70i<;DWy(N(~w0HeAj`p_E8EIK+P`|>FZJbAvlsLla!T_SC>MV#2 z>;$0-CTn9!q=@bVSea!5DkC1$>WV}WOn|n|#H3gUU{#DZPF5{zpX8DwEyT|IKdwBbYega9WO|ylXm9qGL ztq=Oz7pD(40K`cn?V|xg&DM0WIV-c%aK|lh@8KM?URSL+t&poRoytDrqswjQ=zvds z>ErB9_Q{K!;o-qisQeS{PG?sOV*TO9*`Po>fpmXWOK=vm&w+L=uJQ98y%grPd06VS zB2mFHE=qL|{+#z-QbNKT1Tb}*J$ZFs{>evPF71J{C&3|rGXA!X_nQih-ywzS%ES@lZ>q0Cc!i4cUfECVE^Ed?d=^pWZ+9W?GA69 zQ*7Vz&5yFWxxvZPXBaFmQ|`?W4}L$_IL_gTHTF(#Ak9288ZVmL1YUjmaenw8|8*`u z`xS=U+p4dot}E9fJ@*#UGxw78*J^^B!3ODAW5xtB1E?huY`ev0D2mFgq$CzTGnW>o z%p3R7?Wn~l&cLZA;Hk%~UrS4=*1=e5D&k3?DkHd{F(Ex}bn(@sYS3$~3xyh8J??L@ zjjB>Wmghc3>+puUe5)u3ditTa@vHvYKU2$bQEMg%OJmzYl1bA|EQ>7@ADWbSYi~?l zys^Em)8`k6#X5p|4K}WBk{A=uvcC^~;-p3H;yvvym6-|fV4 z|E2dNfAlx}RaVLY!B@2ufr=`vkRS}#hvCV0Jyq=tcEWf6{{NJ`_Ftb8ukIg4Kn4tf zNz~)|x3QM}4EXuc&2~SK5;c3%#JLC0FY{yHayC4CepOUs?DlnGlxTQ$cf^1H;uZPg z%e$0S2$c`Q@lD>WFiP`$cbyvWE57-jaCWteK2st@WoYu!YhUW55>*bu8#u74Eqwcz zugE8!*&;7I#EKk%2X>?S^Irjm{D0QuZCQr}Z9~NUrKPpCpW5wpR^~cOZaSGVD+=1H zn>_SQALib7KFZ3*Nlu)*gU(=}1GyE*vfBJM2!^Fk!`Uu-)sUy3 zc${lbzRcwpp6BIPo+U^iuW}BL_DNl;D%N>E(^9!bUI3_7Ab_({#Mafdw6d}e1oroK zb>I0h^nKRqAY#|3$4#=9u3uhV;`EvGT2?o~k#*Y4ikW`L*=WKYciqPW7a!u>=6TYS zCpozL4#YWFL>^ces0@7J`@fwp{Fi^h^_QQcn9i7tM<{(Y>ob!sa`G<1>RDX7ha?HE z@f{;Uz`%x@1yf6gjm6wF7BlZbK_TWXSORGgV=(~*0ju#56EF>6nsV>v?y|fHXEbYS zC7Q~rirW)Y761cMy{0rt6hz_&jpPuUk}Uia-%r?kjX}Gue-iOnj_J=>{e(TTtJ#uPr5?`tdjk=~^)vmajTnYd5>fZ~G z|GQ7g^va<`sUsgCGFEKRBq{{|Rz$u)2=9mk=>0%9b^+wfT9tI&Rib{fE@&b3(Labk02yIRR@W0@(yL?LrD{OqrORpfArLGay zUVOgF2cElez(4wt7v$#N)HsE;s+}(Zzh4sf9f0Tm!zOP{+pxHu$kNuITUuTH(AviO zndx+rxkR(lH5M|NP3f&}&|g{O%>55@^6vX}fXSz0^5LPrp3Ikrx305(<~-xWea_r@ zFV(Zpv9z?xxic4(VKf{KdEwf#?C#uRbg<8KI3|Rku9BtI73SxqED8m&ZnsC8q?A>u z%q~P-Ka^z|vNV%9Xdq65+@aI%dP$N*oG3u$lc|bjVnxRioh>IZ?o(AII=E>pD52Ny zBM3<=Wod0)%kAoCs!Fe+8Wm(NW95#EoPF_ISwX=lY8rkY8Bx~V`Dg(~hh~r${^=6ic zfk+wY%xdL$-QVIT#LroRCjl`4#g3KMz#^82)@5{|X{@JNBR*PVb}f-zXKp)F#a8Rc zMbXb->ecbdjMV7=+1@n(OSWv;wKMaecO)UuPNK_0zwNEAP0kbNl{7 z$!AVF)I%)jnepP&5k;TZvdLxrchCD>-^T}Pe0~|FwL0GS-gdhAxle)xz-;pQW5=J) zv+S#D(Z*9?{w@ID3L>qIR@SYQyU4pc4G9Yqx2!N{t3^m<3;|GdoMJzBSn%#-H~m# z#R38Sm9-2rmNu+2D*ff7N1+X~VeWo!Yfc;O=Y*%`0Wi)|(Dj81PJZs-Ql%W$V<*V@H!T zO_I3PirV+v*tYAu9p#~FQ7I)>S60%4`}QrAM}{k$DMfA_3ExHIULu{C5d)c6EcfW7j;z8rx$bS33YBcJNwrJmu zc<9Iw1(A=!Mv;oTj7MMkG`|10zJeJhGi=0AWkTL}%Nua*#W!MNcoNM<6VD%b5}$nH z1AOSji>cw<5Rn9M6u^US@4X1%9RR)sz|Ni;vX~qS>E;W@aqW&V-Z55UPYJ^5VbfYK zFKpoBFD}xaW9w){IUB>B=EtsjHJxVPfVyt)9L@=!bLTE@zb0Elvh_+L5S@mwTqLyK zO1UkILv8&v%&*0)O|Lfs<^g;y3GsITG|qC+m0pN5Kn2V<`a$^6)b?$6>3SgmBsvK)Zk^;JL+ zni~y-BcnFWmqxA5M%NgFEVYA-QK?*}uvqll5N$vyAFWo)Zmh{KVRUL5Ypom&Q3j37 z0bT%QRg=;2fOjO(QC$Y8E9J%jI;ZV%ck_U81%84<*L_5%>A*!pE(+@EsB=*bEIG?A zp;0Lb!bO@{ZWXDWD=0dO)F2>Db9f9Jdb#A;XzWNSv_qV*pWJn>j;F*PKasG*m@LNCq^WvkA{*9JO z>e;dL{jYiFcjJOx7jP~zTjxoKax}-A=CP$u(MSL8AL-aXykzn?O#qM;nk4#m0I3y% z)cQQvef2qxgvc!>K#o>?y6OCJzWb7C9xnPQ1&Yq3=F&`Z+mO(9#iX`v0G8HcM5)%f zF&a+Sc9Te_YhJtKz9OC1qiqOy==L3a{f;rKM(wN44j49RL}WOj&&7=x&mCQ*kL_Q? z$(3lc{T%~f4}dQR@F>m^&=o4czXOuBezTDB{>g3IZeBTYLK4xCP^wU@R6Hf6Z`e?l zrb)RvB$7CS(Z={eAeq^3FSM`A^DNVbjq&`T9yObWwT?if0cf%sh&e0iEw_(PX`|O% zcz#SuxonJiMM`yyjcG9WRIc+RMV|e8a-KnG{ z^9|Emx6UR>JU6#}`!!jbCRv;;rL8y_ni$&-!z0V{^KlZ#GAtBAx6yUOo6@GgDgzk53|Sh6H#7nELai>uyo0~;5b8eu43&CFlF^S5NV&t(Z-uokeMbAF zb+m-hasaQ>4AU2!YsRTYjKilIZQ@y@7fx&-%Ne;bcIL&YuA44NK$1ih`Vzjfq=IeZ zMYKEOFg;Y@OJ;{q3{GRw!a!t)Pixq7VvRn&cL`CVI~t)~D+jRZW|e-8lw7cvpCh2F z`~v<1@N|~#P@Xrz%wBul;r32E1_Xgp-}8skJZ(y;j^}xHl-XpibUX&4H6rqux#T|V zn(JuEocQ0G?+1}FCeC%f44^s!r_KwzIjmo)t@_Nv(CMozjbxlzy>PCY|RnY()E5NU6y4eG*d8_}C;z zQDj-Kqf{QPGOD!-kM9O`+UmU2Yhf2(dQEH6vv0$P6}u zO0|JzgW=^D!7GO$bPnanrQWKeG`9tx^P|6tx$`gS6G@z2{FS-)X8$%!XD+P|vGhZ) z_4*k;X|HuVdTLH4iE-#J{uuk7{xq^IMiwWj)b!p$Sa>IZwt;J`wu(BbQ(8VQC+XO96Z%fI9(90`Slc1_?pfF17h z?fgriBuhak1&XDhenF;n&|Gh&wgtIe@3AvLN(dymw*E7@VJqm_CNnFtdH!?-BSoLf zp=V`y2%DiZ&}tvQmFCn|3BZA+I-WbY4iHRt17TOHuIWDSUldAx{M;d$Zo&ym|5fum z8s`XfmKBC7L$l00)vRx9D-I8zH##v<(%|9w0|!e)qzZ+iY2T(Cr^zH6Q^<5KjWOli zC6y!^AW#-3^Tz0txiKXrWh#aI8zIEs_bS4UjZBnFh2l(_rFToIuH16|uAAyB zYt^7os5GO-NR&i@&T|0(S&|}-V;CETcwnI*{UWGPMebLC$^@W%u#jLP*d_n~IT3P5 zC;>>F+eQtt%p*ZUfWVM!AOIV22#`G;_#TAvY{az@MaYu|TC0neNPH;}D9_fu@+?KU zRIv>w(_<4TDhXx-xZz!4G>CvCO_AmqVjCeF_)1ts0U;!q0Yw_ExQXW4B5ErOww2sA zkN{{!P2_@b-3d6MypCcxvxs);d0pl3GCqUk>1p;ZSR=eV(h~7!zy%f#3Kny68=pajr9TBVWn! z7Z3faXuPyyFyYhN{_Kk|x@&?h?GsZWD)6quJH_0AIV#i($VG-qIEG*T$DhDozyCKt zAPu(9^NVf+d=kJ$*PAbcaV3DS0&p{ct?2DIbDXNAK)ImESAr^`LR;LEw~Q7c1z7>l z$x4XflHXfmqg)%#U255V2c33m8)-YizOMFc>i$e~V=Td}Hmqch)n?mwqDK3U*RWR4 z*np`glIflQK57*M$hM3(agKuSo8F26{>z{?>KlHNCbnu$U@3(1#zx1Lk{;^KdQflF zLMbGNVIgBSB!p~ArPdnFy5}k-Eu02--F$DDCdtk$&+chP&FhUZ+epw<&U&lo`xQ?q z5+td88a4_6Lr7^Q>V4lXq&Yzwprf58JxfAHNN}D5d5kPeY`eQq0dkk!mPW&4ZJRj? zVZln-NYA%X$Emdy96ojs8}&6y7D_3bq6j>NQV;^HQ7TqYDOau2=}@_hvEd1{Yy*b2 z!k~>-!!-_=jvtTjdzhY_#n{N0?fgr##1hNW(mdu*9LM6)ysf8!fn4X7nEcUEy!M;E z9~a+rM}NhKKICww#6al5>F#sJ9crf^D(N*J>~3Vp4;{q9r#_BPfBOA+Zr>9iB3?bU zvNvh9Zim~E85tY*!Tg&5-U)&!Z5s++_j{kqlNZi#nk7!cUm=TAV2SXDpYyY#^~zda zxL{bm^$)%f-qz3rk%zg3Ep-0g^ThD-5NX*-!=b*Tg+D#;yZlez^LxZOGaIgTZD?Ns z@LuN#`8NRSB!ysYssJu?&ZBPxu*x9JO5Qb9!Isg2RgRvl7Wn-3 z`9Mh$L{65Gtjdu9k!3=|OdxpDM%I*RgIbi@Mg$_@R6W7-$JT6ZC`z?el5Qp1%Jm2$ zW^{}O``OCPJCgr>TeCUGK@VMaBL?_?jZqS!0_J<9QnyS@&)kwUT2&G>B9tsdNhF1o zqFk=njddXiZ7oK5zD>iWX=1g=%H=AQA0mn(q)B26q_#uNQ??EzrDy9+g+c+LwFI!1 z(v~0&9X-%KZlcy$N3Fir8R#T}8`LzGWWpdsnx+^T8MXJXH#QI@QD^W}DqG*OWafJT z07kVkjET_+3{{6QTphva@EAfrw1gGKO)M=fVrl*)udJ=umUug31+p_!+ituKcYN-b zTeG{asGzH%qBpJ9pG>%KJ*79|>2uzq-vIFG>pa-3rG68(G8-FcJ@PP~d-Nmtz$gCE zHmx)p&DA7|epCehPr0Z8)neHL^G~=|;pt1}xUp8J`q4Ey^zchq z-7}BYfpxG=ab|e%%Rd{R_lB=z?~tKly$B`-fjZKbhb}wJFJAEy?f&Pd_@iI>7c4X} zGb9mW_xzqC5e?vzF7o-9@YDtXHo5k}d=-G}0KC>&9fz*LKwxul&lhNGGNWZ5wl*WJ z9f92e8Y%h+Ji$?_X?{Hd2(|+)$+RVvh4mPXDDV7cwC!SMW4WcL%f3h86Arm+1o%e) ze=Y<6DC}(qps%~@4H)38K{@b)SxZ%ITOZAoEja+VhtPqyMD3jHvoR-=&$CAAbX)Ok+Y=*$?-wbr6kEc>NW zMQ`7-gQ{V9bz*peM}|g3ZgeS0V!6Dy*oxDLTXAbFj#@~w)INV;dA$LCX+N^#NAUiS{39ND;$tv|)AduQ zo-xKe1mFN1#^>fJZ$)na@CPo6FhUA4nNhOr**Ug6$(c3hcDPd;pAAa}%+BrC()WMv zk72AZ4jVs%A+@o9G^X$Q+kNn_2i5GwU(G)~fzHrntxrVN#CRvNvX5)x7 zb0-z`G=T3UAwFSWi|>(1QpwEY0B&*7&W!-h2XG;PQXj(EtQ!o}O$Y?xK5r(X?%Ok5 zM~ekIDLw8tuGMuu0q`(@Cjk6~i{g4xX9Lg=yy^2Xz*z@MlBi51Mu=!T0c}IQ(sa34 znJ5;DQ-;l4p6BDrQzb*F#7QLTwHnV%&*cz8DJ4k=NemXutVmFpC8_p(Ul&VdQ?G9% z^NS~@|n5h*VSs%(tPvn*!ADLIRruvltE8yh}@ zJ?ZOi}{C5*xG9UUdL160!tvT&h%CGh@@Wi*{XNc5T^}wWFU(k|ud=W9^e^ zp1mW>(|5I_rt$V=b`UfS3mDxphw7zQW7{ovp*T7Q^biJfuNrj!4lu*$ueox%v|698 zv>u#s>o%hcTBH8TOW>o2A?oYc|I!|O^x+SoR$Jlqwe_dsM&oB>srV6Q2HZW7`* zyKBPCEWum^FaluIk4u5(>3 zmA#?iQPpk*A6q`N$(5!rJ;W$8o&aSg-vR1K$duflV+xJW>GgfKvdt&Ux7=0Co3$ zebl9g9tQ9_M^HW>#XH~i6}a__?&5{%d8`bbf=52bCtBF^dryenfBq<1%Qc&d+WD$$ z)PukH7S6+*B}BK$eYBH+;J_MpeUa63rdAe)>`jNMO z5ir02fb>0|sEwtSMQS!1D3vN|s66CVN|gc$QO@%0RIR>Fg`m(lbm9;mfA$e$)AQO8 zn921)8yWcKf8$U14WIiBvz(jn*D!C>S`Xz}4ke{k9q>oTFnsm(7`^&Bkd&Je0s4^y zcYFBstLgL*PA_R-b7`Y)(CLNMIv1Hd$NGsQIPsD9qpSo%As{vI=yQ+Z;m1G9&3a>@ zRj+@HnSaoE;rE4WB9Ls%5P)p}eD_o_39(oBo(8}=PD-x${YH=->J>BhoQGX+xRgyJ zr}RY3#~(XD%g-JI5os_}sWL9V^Gkk;w_mdZFP;A)x6^H`g@!N$A_-pvIR5w%`rxLI7iYC4QO%}|>^fu+Yj30*s7y9VQ01D;f1 zL3r=S{|QMRr)wJ<|FnMm#Mc2hg8xDckBm+O_*o~1LjXu?O@gEwnjrvSYp6I|q%VHe zH`D8{c_)%a-CnmcwaO=U9yiCf9VaP0Ebm^x;b&f^{lE1{-Z-*eW6dFeKPD-@?7wa1 zjv>KJ43JCZ`5;QbtVqdNNXh>_gfamA>DT@!1{mNh!$rpEZzd&QM~rc17KLKbcE6EO zC|+(Ms-Rq> zv0B5@;sRQ6(^`47bd+kt`wl$+{5JylF#a1*9U2~XskP4rP(-inn;;&#Z~`}d_pA8U z^X|kIpT1mpsb?DtSTK@8f`jKB;=kJc$9U#fKAuKLYKc(NIDZ`l;JdtX@#oLJjs5@< z0}OEXVWpk=+rLq-4M#~d6$C-KSSShK^Q|&CYBi*X4_g=5q}c>3Xnr$70zpR4P7)*z5;Ou#7sKMAt3FDV8%>!40N|2PI1;4H+; z?ceryBzgA8ww)J$^R68i?3@{!EQ}71QnS^xW_;@(-M~tH4Y3eVg(8Nx@4&>ai%=+) zF}LeNYfoORj==MMo01bk^zp_y4d{%9Mmtv~Q4_7@B`ocE7Rm90s8&muDkwy`L~FGM zNy4_4b9=>Eg5jA-P|{d^@tKEze(l7`Ke8>k|NY3UObgK`!CVD!ky9-=pL6!()h2Oj zKob1Y#V=uKwMyeB$3dEq8{pw*KVcv#cCE;JT*S181T8x98sKd8!x>H12PiUl*6j{_nvb2bFWf|*-Uxvz4>)5W%>QOlGw8_*Pu~@Kq!;i7W@c@s~c|96Gss6#%(<(8n>rIiRH$6fwX6=KvII zeLsLN0C1lWA{0_8<$0o9tq4B|$P$6G*w!w^rnPoPaR#2JAcS)x6%r~4tvZ5`%ATIx zwhMRM_5g+^rjQy9Ed)xlTj7_>AQB+iUP1x@;`#>a^T&}zEtp0Fe$=pD`GMzwv_VvF zpw(R{riE{_2BA_wW4)8TilrZ@WZROO@}lj+KI> zC@Xr)UwsLWT`~n?f-(x1KXDn&9GE7_0lxo_zRf(k=bviCFiuH&kZL*WFd&=(29T`v zr2yUp;B7=St~}2RibdfEejtSK+Dj_sDIx-#p`cRAnc8WPppFuQb)HQ#z!}e7a?v%o zaOXt`!XnZnf~^}#i8R+XRb~J%*hWaoQ&!a>P(DV6stCOhN=ln9v(C9m4CQ$Ui$#!< z5Cw&1(n^mWKeB%E`0-ah`H>I)((3ZUKLXgm{{f7Qj=cuJ?~tG|k|geL4}0#s?LuDJ zy@bd_bb0kkT)q1$jH_w-qmTU_|HfZ^U(=I5+}zC{Vt}(AbnWOk1{mNR1mzp`X*auZ z7l18*RVg1{jRROFT@~ea|#U-D6Q-n|!_WjzYbB>Hw(*`@;v2-p&A+*_NtZPyiwnf#;~rG%W8UJMg&2~#u&-WHewp7 zj_Pu;oG-5|)4}5hRp13lyQyKrz+_W%bHgeKjvjpR#rGdsJbv=n^Ur*EBa4=Vw4V0{ z|3@)CI`Itvewc_LJh8@%s>yT=*L5a685aCE4AZslEe)FA9F3%2?pq3KsW;o zFd(G@n0+^~zRl@*l>p3HX?;R*bar-RePJ;HP$fp<7YbfjEY2iR#FgQZl1{Ts>pZWP zhnkgAb>WpmFX|+2rEE+?2zjzNJUkzkN^47pUwPaQihBXn@&5$n>d=D#{;VT~2{b_n z0IWG8H_WW1l)iHn4FG(#4E*0d^Jr~=0pScVz<`WGFo(?S5s}mDLIz;MkJ+i9&7o$mLqs*aO)HfvW}3F>&c;m2ak zNha|c!8&eP*ITx|m_Tj9w%ZwF?F2M3&Rd9R1~E35h!z7lnTXC;N~NIGE)Wd^i0Z$1 z9d*-wBI+O_pBPh&^ALc<|0j}7&BUZy#5uoSMe>{|Utltd z`iN2SRj!7b;rjk^ONhBq6xjeQE(B+sGo{p6p%T~_gk@Q!x+%{2k=zm&kfOt(q@|?n z1~6QIyXvT;PB`@+o%1##T1rH>0=OB#n*qFqaef(qD>&!Zg6J|Rb$Y2B1zMafb9VK>u=m^6R~)L zTU^+Qc+z9UTA@^9B9?Fyej-jpNyaG;K-OETPB?Xp10h5^W9+Q}{sF){0jwaRsl-?V zXWX|PCs8Uf$MYPI+4zo&#CzH)esUu|=odG2q06YmGUw;GtdPpYH zq9NVj1z{)vgn$7ToY}%|6I{$p#FDFgFLrUvk6$ID=*D~@e@zsIS4$~xavb*x&-2eI z77M3KB~Ni}?+r0OwlWBV#wZF0Qpxmaoq+0u^SXy+*$Kwj8vy(h5naLWB-=wr$3_;3a^_X2cSV^C?1zRZ!|;Ms(4bG{hNi6kH4l+ddFQ zQA?07TtuA50L4H=RtZq>WfZkbDUSp&55Okky!TbsQ40W`iK6HP%eGp;1m)}$7M^

    0{Shlh@iWHgef^X09_36^erZtrnbOx$fPNwu9`fCE#8H!u4UrQ)rmE z7@bF+gej}egp4?3CoVh63JvL-3efk zggh~q%dI71BaZEEu6r-m3FmbIM>x}=)D1+qg>!x)lxhILm6S03lr)hr&SBd&^uFNw zGZzA!GZ15%l!zFFuyh?wP9Q)RXaeGv;I?B~j_amM`yG~J&-HviDI>|a;IL9nNX}k{ zVh|!28AMnNh!}ClakEm&#Y)OP5sz=cUl;8FYyi133vU~f#t5`TMu8aIvlCXj8OiAj z_45;;!7T?)rWwr(4@cYTvmhJV(Y@h!hzfad#=wXeF|s`0Pe)NSzmU(ZBE|}y8`}b) zSbtmpl*yE9r<3VLwq?DgSS&G+lK8p0HEs#%YtoNXq`R{a}HgO*n*X4KK?=kK?oHT0YG<3 z1xAc>W|t~kw&ggkN5U4!7b7H=pNQF)-wukUQ9RI%aHtni5P%4b7$udIhsk1b3t8eh zywV_K0eqN}II!tyAS{A2f{Y@v9ow~Cw?zS~a-*XsL{aF0=!v?T?WKW;#tir8 zF~&bUGCJ~s64{)f2+fRhTL=xUDppcaP$oME1#PH|{a~zid zlA)9Y1~AJ)C_{u%ShmYac%F}BI*nL7q5B1A9O-lhGiS}g;YS{YMT?i9t!)aTD8lII zNU01X2t%e6d}6FiN_hknR4S2vvhFfpC!D`I2+&LbpBWoCiO`}Hm{yy?kc|*R6G|qV zMQIj@csh+_CWAyWg=8`b*Rpk;RAUzDrY7Cdf?|OD@Gu5@`;adLNKTuJ`Da~?S*Kot z)}u~FV*Uz9ZX-WBiZBQPZXr@YQ8FYBS&g}8y$Q+AIY@QQgVWfC!JV5C^!Gr?2xV8} zxRUY^6-K`Xuph51-pGZxHqp?qP$`v-f?&1^!yf=B5a)d=il7vZupK+biaF%^yV10C zC2ZFRBWNg?R0NC&Zn_ao^AE$6HS0jxDd>6OX+-%^Feq{yN5tZZcp{aW%7i$&FgiLz zDb-Cv?5WR$$45GuZU*RbBKneTyI00y@%bQlQc7-FHhHcG-;aZ38qhIs9%79R)VpgZ z3i$$L6hfOHxt7+Uz>vtaz)v^9YMzS4YuC|0vmMT>ClwKw3Bi{FUjj$MP5N3O)ml}BUcQAcCm!i5+u6fjgeKavpR$bq)D5VUe zFnkoi6#$;cD}(d65FhbkvDr}&Sdo-N#eDt=5Um9;2xz3B)EE6k{7lPs(#lI?`OTll zl*3PeRM3S{nREzMDMsmZhC2SC5#25n+At0{Cya#8Uc@5g8uA0Z=zaPj3_t!e0pItvqywc;0sT=y z|0AHJ^1+6up2WkC`~lBD`z(e=htb>JgIsP@U$H&41-enEr3e_?83{7)c`(HB9g-a z^0kVOXrz$OuUAT)319#QOBm;OCeo=n5?nMMb0!YI@e|sCUpxcn3Cj{Zh@Njn_mwU*~r2i-1ci_&~v!_!snRcOYK_sKM zOC{$9#iHkWK67jb{R0P}l!R!XiRNXiG3~^Q(7NC-5D|7i_8^}9+6PeBy9JCGr0pU# zCTXrd8;OotNOaDIjLgBtb*~5z769e0JWgdJ(MnS!vaFgHB%xKi>>0G>b@Bm`Gs z_z_{-H>DdJQvq2x^wzJUec5VIS-Od2rFxA34Q00anS! zK#ZwEzA%z%Ydx^%x##auz?XQ;-}ZWvc4WT5ZDCD!ZTIbw3@-w)w1N_aLLQt8a3-Ld zreJzWn&~|96vW%Q0LG!h0=E9-o7nN+|Bk{?AC#9sX6Y(STYV-nvzNk2q%~QnD8k6D zP1t$=J?Q@BJ;;~pLMixu43-cm21T^DO~KOThvE1&YcO;AOn9FA(tiO0lvL>N@5j&Y zzZdu4doM=wc|<`71tnunY;!T6{}^ZD+W^A4gj2_B4V?f!N5oENoVfs~1hmbVfeX*S z2xpwS7U^UPH6TI_l&UmFKvmSu<#PDLBM;-gU)+m5dv@c%zyO9zrI5=(3I}e-Tpaqg zzt`#tsh}^%7{JS9Bg>x!0gQk^LJ#tT+ny~+Iv>KoGY@O^8lYXY3qi5?69Cr%=$^oJ znPk2&6~HV28(*?SL==NkUlBrFARNag0Ge>5gs^QC^Z7k8iY^84i^}FvGXdPy(9*on zc6^U!t-z7*{u11HvMkY*iN+9WHS{wJ23>Esdp9;e@I7q*uYZLbGckS5IY@TQ zh7P_35RFZM9{eHp{Nf(OI%XofcqRPKIhu?Vw{#r_ARHaQo?ra{`+jx@iv8UP@d*sPj`OeQGa#H#dHV61Y zasfE2ocU9EuW$3S*zmOy={)^=M1@fR7?Yq1Q51a!L?5qKFEQI@vQRjQ7`u)!?nGg* z6~I`%-IxT#xlmE`AtLrp%eH*RIVs|B<1yq1`k_HoP*T1fp8GYxv_vpG!c`c)*YW+g zWt*Cshl>)+Z~F#X4><-5fCRwENIKA;jVjSN80dXXyu~0WNjvvq*H7<2Vf!XR$%Q(r(*uxd2k)a^oemNX{J9-hI~GcO`A4h{bTF##8Xc}MG9IK z=-9!&y?dV;*xz$|LpJ-<*OLUx>SOk6734u_*XL7(B^*{ZqINA@gpb_*AuL|7(2z|v zaS#lu>KLhJoO;l8(U{HRip#FVu}7~)M{7Ici3D_fPLM;-BlqFy|NbT@EP#{YG{KT z$;27}#{y^uCWnfmlZoi9!V*4}AQjMf+<9m``YbTlFFz+NDdnZ3J^L+GA_DNOs94+@ z$*8EpqE?NSUBkhtJd>8DXrd_-3}=AFHPILqBeyVh<*8V3&4&?Nb^=&t3Y1b>@6Uxu z#1e@WEp4sWlMtVjP^;m)gufv)HMTSgCcYSi!M}wnI>K_CR52(D#yG5a2Ij~Pf*AWe=R93D*&voo z;*+2L9F98tNDwA~QWfGwrF2sz{SeijCykmdk`W&K?QikzZ~ZSk_uO;ZnLtJoESAKI zTfdBHN1p~=PXQ=PH<2`#rYfOJN}zA+Ms3p>diG&N`C)`X5Cw(8HUQ@Xcnr{(1K?Y> z<1CRjFfPHldr;b-8N@Vi}B6^_U?l-26`Ami_IOABgawX2c@QrA0ZqiZ?pdd#E@WeMii|$R&96UWz z(6Bh*aC0l#wqy7V4PA4w?D`MGpSc7e1|bBu9H$k)Z6HdL5FEgDjPrRQa-@_xpb|tb zfN7Jc(l~&3Gscz@k)@OZ_mfz7#jQv*Pl4^nVW%4p2C+s#m}u_mddDpv`)C@Kh=}OE z(czKds8~?>{X21B)05y(`dNZ9*|0Lf(7^!`2&GZ8ae_vqGzn=q>1ND5?4wZH9bH}TPh_*VGtM)w;oN?yzP{cYib3J4`Jk{`SXN9a#lS7t zGnQh`TRwy3Z~q)x4_gD_#Q_)rLzdrP-G-clfO6ZKb}kMbz|IHm!T$gJIEJ78ErLQ0 zg9H6gk;IhNDY*8{H{pXNmGjCYj)LoYFw(mb?ag-z1~pPYO>P%8)jB#lu=41YShQ%d zRtd&qi81o?C1KUz(7@%kW%GLAXC1FP$Xvbwz-PG-hY*n^r36J0-toTMvF`LUVF{~N zRi^>QupF=K zHf%brU;rb-e;|~}hhQf%kU*}vNm9zO;|gl* zpV~`8JTR_KT&W|7=Y3MJ$#ow_dhT*qehkdCP0c&2Fji3cUP+0*jq9=bzrKd<`|pH>0G42|Z5Iv63>Ga~ zgi9{H9B){?2CqltBZPOoWNyMB$AWQ_R`K%p6rgl!ni(9u~(~B>F3qcLpCR;G> zb7Btw=&ut_9j_jQ5knMR&xKeggvbCOL=moh+dJ^ab1%@jooc&9wbxmhEEqE*y+LK~ zCN@rwH>0D5f+n5L_9+MeJoUr|1jQnV5r#HD1FN|M*;$Kq9l*@yIhol$QI&R&7`(A; z1bcTNzh^T9C$e3~iNa{HjG_~TWld$AbLexlx{0DNluD`X#Q6`Z35OW7q13-H&KEJp zgp?9)`wT35(+7}jn+7V+mX(s&{pc^XgjP;g%C~RY>o zOBC`2OgnC!CRV`!PL&+b$P@w~buqRr2Gb6aK9M2T&g{6+;e$tP{PEVyXNze0H5Jo_@0}F2W1iDUoBfL}= z098medfyZcS;+_bo!kA#U*Y+G{}@J|{XHlcK@b$RB;g7R3rb{j)s+S739c^ATST^MlzwFXZkxtMxHm9sjg3C7f~6lQ3fq~uIDlV%~sRH5UV}bxj04@jO*=8&_@6GULEQKPblOx6w z@#(^{G-&`pX5Q#w-wlEC;jCxekpp7ghvqy4iMQ<{Sd< z_$X)6rrf~L>d~Iw6H$pGfbGS6UPeKH+@7r%+_m|jB%`Xl%w_pmLkSdRl^wd0fQ|Z1 z5xmyvnD@q8&~oId@H^*eBGS()l@&`SmmL0vH(b{~Yt|=-SO;Fk;FiT%C{MF(=NllL zkuT;G149EeT8xlA_I#}T=zpT~nA73M6Xo~B#4MpQhDjImo0aWfg#xzScNeyO`DS<{ z`_PrxiE&~6sJVExv_lvNRsGGNHXzGD+l|h<@IrJ= zovu$)jG7eToO~g_qHe>f<5dBbFE{|+#~53nq|&Oi&bf1O)AesbCX*=>2AR$Sn62rh z)i73T=u#^kNy7}4AXCblY(oRCyXqQDpD`1R2%IzIwmplTzxxqX7}RR|lp!CZGRHyp zpXAipn0eaeP+kU{3$PNn5L}a)u;3+AAa?LsIe;b=MPAil;sLmsah@s_jG=YS*_eCs zMPQZ<7?qcf+h{xLRJf%rmFp5`2>>75{Kv;TQHftiQ4~gDsG?#H`TiboQYMjSnMf@L zkg?Zj=wn(EGSW^_nv^(1#)HpmY{#4n-iofXu0>|aF(@&OR^184`N+Uv)^*+G#Mz~c z^ESK+5sM{k*K)3rO8ui^SgZhBN(J&WXkYhc%)jC`q}rzeAl*Jx%K@f6s!fRig27&F zyyH{Y{k<=tHQNBsap9CoW3~~UZBuaF4R0>1&|&~+0x872-!+6`UdZu574>RSd#;wA z*Q`1gv*ymx=fx8VE0IdIjiv7?20^S&ICZ=lW{D@n8!~5?wrRa?O%UMxl4LV$#>}em zpLD4Tr1tr5ycCVCtso-U7RRn%{}4kxd!g%< z9SHIf^cFB4MubYKhZCW3!3s1jJPfgP8kXbebR*pH5TCmo=@qAFX@ttzt^xP}MAf~X zOGHzJ5EkPcPS*k~yW|~kk`3hoL21+5tNh`7h*Yp4?OwcZ&ENg zprkz5dO;9qse~CqMNyh(R7SO?5kzJ8@T#$nGt((WxxO7sV)}^}q4ShW(V*SN9VjU5 z+O`#ad-qPCcj&Trw9TCHSxZ>$c$L6*9J@p|@hA#!B+hP6q|?(l=awWwX7SOOf5XQy z{j@9LB@$)zn0Yr0@fgWaq1-lPQV0$2cmXeb^Am_R+>f-&AR%?;i=n}O%$Yq0@45AT zIPB2Fz&NXv?or)OY6xU<5De6$^(KPOVYqJHI>bCr=O=W1ztM@sjt#=#fy>T$_=vz3K4{90tWO40StHv!!q$eKc|tXOm+hE%!0wFk6_%XJ=ezcV@^fe>a&rWy$nt)p-GNF*64wOmP{&r z8WZC082jt0*SKvnAuJmbSq8dMSmGAf^E!%!JZF}Rmg6tN;={5@x{GU*0K zUCTI65@RHUz>PP(9rNeRg_*fc5^n=lHKUuTvlvxeZ6~CO>T1ulFMauo*tu;h2KxFi zGB}8!P}Gs!W%~+7`uotd=m=Qx1`~IqOktYiD(xEO08wpQv0A!xoR5=j#UWSTik7)c zFtUF;c0TkoM7d#YZz&ZQz<(diHlWmT04{YrFUy5Rc8RD~T=yYZsm8J=nF&OdFt#Ks zk%gUZLifhU!Gk=A2*gMzrRJ(A8eq2lSZT|M=p4(k8n_T7GR`~9(yq-?Ur6G_lTN{T>(0^3Y=B;ZbTWBXjT#TlTB4$wzGOa6 zPD%vQ_ql%kdYzCIL|jVg2F2ol=f@tY6HXnkI8-j*1>mceZFexnI00C7@+r9Vf{XMF z90XHL2QvG*P%QzeaXJoRqMk7cNH19RyWjl=`}XZau~5(?L*)hC!Z1Ww$Rodh2Xgsg z#GBjUr?V#gNY$Xrs6xG>x5Nl;;}o>7cmukQIthMbJ3>hqJ+v4 zVvNP4l!vP@>;o`DL|5Cc8v{UAwjC|YkB4x5aASXf8BA-(olwC%Ctz~TF%!F_pkY)^ zj3YgDHdHKyq3th%6-Hp$7HrER##joR^W5-olL8)orSf#ywqvU(S}dhp%^5$G7`xev zCysM{H>&`G<)QVYOR(h1+q5dPI=qGR+Sk|2jf|ud6!O@={ukJC&zDf#@eF*&((jj& z3N6_zE-tBZ&p!Q39muI+E^1K4WVK{N6HnskrK;AdS+n|kgG4-z(fla(@7+H(aUf#E z^0{0B3f~7%sH@cKc%^Xy5w&n31Y-=@_I6x%<(qVNTPRgqq%vML#zO`HB z1&RWoYD=in`KXRR{zSC2w8C~B5M$a+l`#g-_q8_}L1F(de}HGd^;ztD@(=oYroWq8 zkE((r85!FK=M0it2o>q`>_i&rX>-fVVRK@fO8~3%^}=uofYXF!c{*2G=NwEw;R1jO zSiI65n^*c-l#ek?JLXKZpLP|L9X~i4S+?EGIsX8F^Mq{&M5Lb=O6n>O*Vi-TRn@#e zMKGuaP2luYmcmS1pbW;*v2rci)?SUMX*w7e(CrsRj^}$vv`+83kQA;b%VKz$;d`+L z&e(aeZ1#%zD^{G@+}U|kCYwDzkxXP=*CQ5hz_g2Q#;kL1gm!rNzvHi}gl$&wx>dT% zM?n!gfBPeBzWWQX`nN+x0Sd*UCY(gv$JN(dixW#KX3qI|#4<4fVElJ|BA4gdzA?^m zs*2+=l2CO(w(cXVj#-VS#wK{K2QGxiIPZi~CwYF1>V#9rD+VeCNdTu>w(YXADs9>F z!!V<3daX;R=>cZ+rm7emf&taW+0=FwqVbrzd%qdR4h~`jTe{k(x$RahoB3mN^-E`X*4B0BwE`w=?L2j z0c43W0bm^$qK$LT6ys=JaXiu;Gb;QhELLeB;N|aZR<^0w78aj>Bj#LjD}Fw+OcP8 zM}nYf1_lNPkk921*j6`Dw;IecBR1QkIzT+Yp_porq3QahEJV5}aDJiD{I6_M|Ai#1k<*1W& zyK$2u1wmBl2O(AMU@sg8^VeRASy#LlWVw(^Y1JK|T1JP4c~C5tr8TAp{6YjoCRu4& zQmM?Q5J(tuHNcCY3Jc-RybhVeI(M7m!k;@Ldl|I|vM;DU-#;mt3mdo{4BY$)k#FPzBTA zlS=h~*_!?}xksDno3)ixwIv5wx^yYhsg(9uvm86c9BWP(2B+3-ICZ=t5JXHx(ffsE zE#^X4P!cOvt;QwiUj#0A1*Po)iMs1XKGt_Y{#Y- zUH~!D0eQ+xV9u$Rpncgf$Syt_>FM*~r!v|O!7K|BM*Bx($VVw-(;%1>|5QFsx-f+M zw_$dRi``qcfQZJTw})gD&*QI%Z<1XCKtaAflmu6pICb$gymvL4}d+`?25rB_r5*q!uWs&$zySY$(H6 ze{V09VuJL9hzlD9vN8Sg+c0g-IpDSnLo6_9eyYZBGP@Pp-;rILv8fbi!+N*Du>`^} z(Cyxs&fvTYFVbXFCD|CzWRi=T#EYy#ny;->`}$8hxii-?#XPLZK+tob7kvW*%5rQL ziznn@U%wPW`~-lk6HXm3w>oV$fVbJU-9$vpvTR&`!&@+;tE)QbvVwe!0^E>MEet7{ z^C}Zl872CJy|?=MS_hrYX7SWBPod=63ELJJ-M0&(p$*At^TA^&WICq9YwpysBzmSV zVL--M&P}QpU8>db`Z(tZ{S4T^KJ47|B5abpb=p)pG(6-xwzJTS`L<#L3od^TGSe4= z5y7{Nv_UkEEeB?iG)AT=nGk50u@Jmz3I?{n02bx}8R;2m6iGC$I381uJPE>!L6)x( zDsz3M_s0o^s-BFO>vA(l*P0XzblWgDhD65<4DH*A(ZK_t+#tdrBtXTP;GHGn-|i&h z8}Vm?IOBrzqoXkRg5@~J0LmX89D)o(xW126CW|83n0nDIm|7wm2*<2{M3r$!p{n?7 zf;(YIw$Qf+&)xC&klUVsU_jr2Zj25OqcPKfE3Uom)s<*Max$}k z+V_1zP({c<)%O#t-^`^+=UIDx^Csl;1#(>19qc>M$3c$(=&ln^9WN`GRPW_NoGA1v zR6xhfnYiZ4Yv8(WMP>lK!31e)P~|2Cnk1!%8vi&Z=tMN0W`eZwGnq=^(MKNv0Xpz= zV9yRDW-Udmp$WP#GX|qBs`b1!9B1yzVt^wmgGBZBehl3?pin5n8QF(qGLgvV^V7mY z!G!`s;bO)~7a-L-4WMy-B#cC&OLcxXQ!gZeROf6oAG#W&0|y`jtxiMs@Dng^-F1k! zPlo~-0;@>VVo1m2ThlNDt=>1hADaD&Vg@Pm(|hqGVjZ)A!YFe4b|B0RAqWCyJB}9= zi?i}0BaZ>tgFgel>mL(~CBD$u+_Kn<`93LviX>d$1A#D74AFMh^_YI*g%Gxb@+)YZ zK@8ECiy=+(3LCO{;m*$^-1rc3!~Ia@iBwB-E8cSB+e$XWBaDN<&e%lYYjKgZqQ{uV+4 zicSj26{lkUx!1#Xy@PfVMwKzBWSj&l+<{Rw8&*}$Kw&Y5y^lVC?LYnxq|^|$ZF&L4 zkx^KV3u>K-V?X*WxS3`URoZmj#MeHA+>;L?=2{5C0E`GN*(RKS;l)^ew3cipeO1l2 zMg=zUd9@dsNQE|0f0^j?s(v?-T95G9hR4-6@3>>wa_m?!U+CVuW!wEk^bP>sbqS}A zmjwiz0K%27@5ebKN;kLQ)|=mhL?QtLLnIX{F;p8stG1Zvg{O)#ZhQ{W`0k$|jEsz6 z*Ph+j-`$PTTn=5+rXkbVh;5rTL3kcQCxOh2g%GjiL6sR)Z8l~7y)iE9&rxM8OKn^$ zw_qh3QIra!2YO4T8^P!>Bmk>%3cA)_0Wc0u6^ozMIu()GHza8Gx$!E~#F?Ht7n!bk z@X{GDV&G*W0m0-qt+2aP=8TioqziM5QTgvNLooU{j7>*SrR|9rAmSO28$+>g9}4@o zgEKx>9LAYjEEIN!q@Ml%UD7zr<&N|ciLYiGo95(mqap|bFvheB)%IKzBZZc8Zp5s$ zSHkkVnq0BQ4rkoOtCku!lAMy*{IhSP_knw0k!DqGx0%w`UW&811VUdc|M7LPBvusR{%Z0#_Ll4CnYfsmMhf$|d)heBnWxqA0Ht)NsKarSJd#*wMzyN;q z(;wlU@7;s%-E%j7{69a$efQssC!T#;pVKyXHX56=$hNd$L~=Nd?ObB=+Lx^Y*CU(}%$V7)2)?8W*XzpJ zIj4hzr;#>@V6qq+a?}!xstw-=jZLaL9@l6?VOEcj5=PpSCKV7f?N>FCC!O$9a)I7w zA4NDih)6~xm5M{jCKbuYU+U_T%yTHnjh<&a&Zin%S{4*?c@Y+idcbGI5KpDF=U(EN zb1>tqYqkB#ydI{_Ob}~j8a|6xP9UUG*z?CR687K_t_ua7_ov!Ahi{4n0Y*rb` zh9-*cCsTk4yg5-zG=?S1rCK8}Ig!{{HOHMi3NE0C@ZzRTIoq;gW2(#1fuVxn z)_nkqb;7CRFAC1sG7#PB$74;x5=;nz8%oXs)2DS+rKthHSgq$7^!@}yVJz5YAGJ_5 z+i^SJfq{Pf>%V;+_x|+9*t~g@mU0v$6p96uW@y;5=|$|`u>&K+!-yw*?CTjqtZf>= zb>?SX45668soIz?0ff@H6Dwuv33EP(TZm+Yoj<)p$NVTKhAGFMjpX!2P#}{iv?d8~ zZ8HSYNHs#2N@KsQTESC6pHn_=?#*IG#ipukR;)~@M5qjiR26n>^USC<)k#%JNcud+ z$I{1W2ZEtZPXRInXCxvi{h(NgbEX%m3or>{*$m|m^q*qc_9sg=o4LLpv-|scHQ5yM zc@%;IV0)k$hhX7Vx4};}l%*6yjAf!Rq-Z1_7;-khL;tpo*!Y#(;S~Cj%MHVi#gUFB zaLHv?V9l!472aqQ!5pua)TCPVa6y@D7H_)pP4HZI(u9NNg*Bt%q;{R! z2Pu8?xo`TM24tBX=eEPSe3Stn^>F*$%n!Go$~$E z1iykR>|X~#!a}@tDh|Bx1ZcPyQ4~N}mS+o_IAi+(Jc9{fITlL@_ejOrrySQ^B9*fG z5A=d@t}|Q+F2KDwlJk$iqN_iEL`&zvwvbgW?((3NY8)b9CKd-V+P4qS{oBWYy)R;P zxF5b3L(KJX?gba(4act0e{(|6#NSPBcQL570Zl|EliP$QW+}YnYxtf=JNE7C?eFd_ zrc&ulrm0Ef2S*+U@I;+(>iA2hbmvg&-LCJ=wMtM@;+QqZt`iM5EO_=lLfEz05>YJgZ37s>ji_o z*!hcl5c6Fi)`0BtZh{pVGnt$@na@&H#t1POX$8>d zR(a%^I3NjwNSPTws_x6E&&;-Bp*J&_LrU|Ly744^N;_2{ZKNUX;h&cL?C;5`+FXEt;gih65-TG`d1I; z5z!Bm4Vf8S2(H2i@Bi?}aKf?2O)jyhs(2cx3b$y33MpoMv7cZti3iS|-?d_PJlJyRwkJ4xk&+p!Y>>AZNErbcjL7#6)!CSS#??BA7ltr37>xSRw3oR@S@pW@didvf z;&V5`Rz+~e5c6W_nmrrue)}!xERh^AiL|07Q;Vr_K2K~vF>E*y1Hmx+MEW>`s(w{_ zKL)ikzr8&@`#=5BPj)vnG|sXuI~wXc@Uud(@RqSdb;7CRFNL=X%lc?Ml}r&p@puwn z|N6h9t)&GZqq7+oN{w$M)gzQyzs6i=GWSnqMhsQkfd&Q!@b{nndpx%O5fsA!p`FC6 zD{jN=6E6T)5%xd#IJVt;Ck{OGDDwMvBFqnK3FqK~W#xMyQ}hg4m1A@)+tve*UXnSK z;EWCu7HQiLff3VcA}FN|$-=U=eL+PL1`qV=zb70Au{kTSsAOZv&O7X&+RNcJgSkdj z{%pv^Dok_<3mlv4YhreYO9;N|F35-{WerG|LKo^`U&5O zFY;r)n;RN=a&VykHUK}atJLcFi-3qO9gDrOY}+Of)}FNv#~r=8V#UHq?J<}jLK@X> z&gQ(yvqq2SVMExtdl$ZY*PR&2jXHaw zLi@_K@UpFC&o7f+Mxr7Zvn-JqW4E!9jPIIFRqNcSaTZkN%p?UBtUA7@R%>a(rOcMG zO4|@nNt9#=5rS&RLo1d-2*SRn*F)up;QKL7LLfhu4uY{i0EjeUh2hDOjNTiICt3=H z0?Xxc!LrlN+TSvDc3kFjjEF-`TcR^RC)%fL;+Lj9HK^kGtAq#BmKw#}C?5OzhY&pf zFnrG|6(6ZY3OC*ORxFyo5Cnsl6y;xw%8&uVBofBtWL3Mwz)MxPRi87i0?%B_WDlVo zyY}=IMsjK2_g!1q*tTO!@AI3V{S^RJC!9L|TxWq!0JnMZSc`4j+!g}oo_7IePM_5XA}p+$EGE|gP}ORm3NSFE;6o2Tga_`wS4a0pQh}$NG55@?;3P9ZGZAOgTG6eLGP7DTEU{*1+#zV>oVIrJD1V+WhaVh26n4EZP+71#ewBF0@Bf{bC@ zxcur;m3GTG2QXBEGt>6G%3-QZSmt{en-I)^4d`uUnt!P(=MjN42K)#Fub~A)J70wA z+k>XYED76+x#?6m*xmCKfV~7P1Mq3vb>}*cD=Z<3nc4IDXI=9C^v>>KyD->?5jTsD zlP^Ph=A!cNWA2@iv27Vir~1B(oeN4~(|vbg?+?F!BB`aDRjXIyv{O!l5CVS^ zXaZY_s!4S-$?BdoS;lBnueMIDiBbUh!ECK(@ohXAq2A-$G?2#U(wOgIlc{M@=OC&21`{%OqG`AT2w?u z)^zB9`TAFI_qYB7K^Q_3L)+S`aMW8q3dVSO=4}k>#i%?W21Vq0_hNASMhw327^3aZ zf)xfK5F!^6C@SjA&oT(A_fVj14)G+hn39e z#l4cPooJeWsE!YT6N8^=g2f4@>5NnpNMr2B!I`(o@*GL?ot9Fn9S^G9t5w-<168TA zlLwb1FlsxKUBIZw03)ez8Yit?_0rT8KU1Y^brcx_lL{L9*WZsVKlm!#16$D0kcDFO z%oD$R=pTzg@jfE@f*Xq+&xm{w$@Gjl`&QiiPad+<(tR7(V|epZNX}fOodk%ngIbYpeDIb)3>+p-SfNKZ+_1l;flu5+-Nk^d*CUH+t&hkq)s?> z{JFT%jrpI7CzEj%NgRIkDtz$0x5M}S3HF{1!`0aIur5d zzW90k_=i6Li1eVn?0sLyjHB0r$jrV?4z0>t;M&L$AlKiE-0&a}7SOx#k0^`|13?}Z zDM)T6P#Pr(zupG!jzO-@l^_)Zo*##@WoEU^9V0$rGjt4LTtH@$do&3|>pGhra zj&m|i7w8?pxIUY6Va_wsh8d5H0lh*9t!x{kh8y2;0A$F^*oMp&RV$?0+?+4XGaK7e zFp5q8^>4_n{|Q7mjG@87Eqga_{dN!qB9=;B?mBLpl#vRQ2#)&TH~LeHS2qTu!>ri1 z8^xi1#HY>I1h3l`Mv^m`unn=AHmJ0Bfq=q55AJ{O`A~aa)Y&sU$3s3picf#)b67Zk zL4^&nO5Zq<&1HNts#T%Yh@+F|zp2W)s>WT`qk{RXDo#LNwPb2w>IH(maPhh4C>4aW zg%B9*@898A&U*peiPtD-sqNK=`oBIbCFLCrEzM^$#vFGf@n`S@LE{Xguz2ec(ebuRo>Rd=6! z^SzUE9%(e1ku=H?35*Ex!`S%YfN?f9KffP-P8j3g_QUpbc*bCx98ItQfrNxCAruix zBZ<*SlQc8ZqV(=@BQs>Z@<`? zPz`{9v;xcFZV4ePa52%4!XQurl-@uKYO9l&&}>2{@H|CrASw5YMT$xNu+V_(>t*dh zNuZG+E7_>xUh#=uIb#@dLTrw8EuC~;6(4&}ZTr(*2$p0Me3z@|JT48gWcbS`+o z$tv11@s-aU!|A&}1M$+65GGElwc7Vi9Xc{lC>2+Gp0BEvN^R}Wzo)wKjlVLWd{4x* z5NOcf!z&H60%%z~vxTIWn$;Kz&F_)gX@e6F+=hc6{zG^op*%)`^6;y_@te5$#@9H( zozBGF!O`v%ryobixa+A%wCio?ZLG+^&JI;BZDwg> z-J{-UVCw8y#Bog3?;S>IPkl;jTtZmT!Y2uHK0J}g$zh$Op;!E<~Ffk_RK720HEC^#J4`rW(l`zf9^TN^p z4xJ6}Q(v%C5U}qCyq}IONyii>^qB>>;Q-OVd;w!fKxha89`Gd10+z{F`B}q+x!)vR#Xhoy$+4!E z^>GMj3J`8otJrqIPF!~tF$q}y6|U(At61k8HwjC6r>*^2+CCq+za_4m#+|Qs@=sZU zjoVp=tpM$|+=o(|!nHTvn28#VdhDRTe@s>sw*P2wqJ>aJtih%un9)B^_tkEBn6}47`bMX zZyJ6EYRCD1n1?M%tA-U6>YDTzwPw-EFqI6yZ>2mGSFA^N^)^%*8nY9V!t;Eoli1YD z3k!SR{$5}7Ez8mMI-%==OaRg-+bA5iNs#mT_zWVTb2^T2^jlv-{q!MZGd_Cz2awI? z@b;g58;bct=j3H+-}g;Au1#BK zbdoGaVHhjr6^t>SK<2hwu5r`@wtURqiT%T8_w z7FsR2%4Q_KFAJTFN}d03CS4XrtYuh$CPm``n}J}nNE@o0rn(UWaRNr@fv&e;)(i@; zwLQ%O!g0eX0KVj!QK?qp{`uK$NAHUTALBmw9Tt|XL7^#h78k0B!;lscwQ9Ao zHm%H#B;0QWK znh87aI_*PP?K^R&IYqFiny=*>RI3$gW3)!xtkTa=Q%~_^8fj|E<|+Y58Y-JvEdK)C zHbr=W+pu%pL4-Mp(*(HBG#HVIKZPunzTb6rL?oVe>#(6xE^zM>09RxHEKul_L# z+_fRcX@{M;(X2(2d%Poivupa&u!2vAqMU9O@WJJX%IXPVeE71ZUC`-{hr+q z9Qw{<>jls!r0}IwgIx`$TYk7=%n%?pN)j+2lEO_JHUg%TKyYoyypnU(eQxWTC)hsi zUc-eagT2o_4VleADn%>bpl1LHV8eAm!h^}IVarKLTMK=~)cZU^vVVq6Qk*f910YF& z)Z#F~)cXW~BFq%+WPCuCnyKdIl#W(^1vHkBE} z?}YF@|fhL@sIui?fUUWJ~Xl4GapT-paY zyAynyz-H0zezr;41`jyFq_3Rm(>Ua}PAreDs=6r*gf>09c3!yAXicv_$Yk% zq{Ty5!}(E{EneVfjWH4cHto0oONK`rxTF){33NcuaKK6DAEvV^b5tRg6dbdL)WIJc ziTv^n03^uAU{aHo;>jJXh1l628A-**C8rljw6##R%tq1*6=MGewUL0L@!9tQ7!+XT z(bs^nQUTc7kS|^NE3B-X_87qD*jgf3ph(H*V{0sY4Tngv7Su>urYX*tn%>LffKZ;} zz{s}R)F_VK_hlrFD%Rih(`ZbOqI%*GLGBX>6n9*sdM>yQu@RQQ42peFen5RN(u{p` zf&*F8Eq`6YgavYKVHU@~{xS3yvh@9_)v8#taT6}xeM$R?TNoRf%)4zCV=mguhEKb! z0pLz8i-FV7xC=hluf&;iZOgVR)8O*mxIx|NSOnm&9$6an^$vJp5{U$QpxUUc{!c4# zy7T>yyxb6EG6kiSjKdIHwroM6P=H-Js^_-4FV2+?L|Ci1Hk2PupIYk{ggMcg*aW0f zbh*cNdv=l=z-Dy@D`46twoDBBU2F>l3nGvGL$t5xBwg#q$)x)UO@6EqfX2o`P1%rT zx<||tJ_OiwR*OKz2RIN@b3!rpsZd`Ik}W;X@hU8gdHj~C&(?4>zh8K)Wm(#hlKeg^ zlcRX*L%)aFr|*Z%7BH}UEy@$8fv`${x2pEA%Bwe%n z5YEcS_9u1XPP4}0YBj>x7rH(yQOxH1w`|&u2r*8cIT=OO#$csd%>$@*O={h8?nQ`# zkaCM31fC-3ufoQ)>mj9bkTvd?l`HpWR~LfCeL3_uqFo*j!@Js`R&Nl)KoV050+=|Y zRzAaTX*FJpxrQ9?LX%;r+1{UCM};*876>e$xD6{`)ED*7k4)8OS*E_&nVY?)+v!v|Y9V0y;=A51VBQHP~hal~c z#z*;xj@Yx^6xmFMi2XIrF@ObA zJqAPDC7V6zozyCr{q9}#TuBlm<7KepqKnWp6T#Kkop`bKC^8pG)&YHK@4Fpv8&?Z) zgSuegAk#Y2>$GXhyB#xuN{EusNQ#9LdV2fvekN0tLWr&pr(1roVobl3a*gMEGKnK( zJRe)PZncGpfh}N!{ln}Gn{Gq3E-XiaQ}}-F(l#+Voiv%1QE_l2YYjYMLRt=N)>1T^ zW|##TJYl)8<@7qu!idmY9sn>Z4uXY?lI+_NNGIZiwGT!2vg2&Rw0{m1WuaA%Z9!&e z!ez%km=S>PPXg7N!(5+{vQ1U35|Izbj{QlWnUQuWh#}I{mbI=V!9-K5IeptdBI9|K zQ>M4C7c0ah^wdl6f(%d`!m=w~2cvw%7O;RdFovbubG_Cefg5QTNhrYIz3J~ggoy)B zVsT*_Ns_?#eB5-yjVKn2?st?+dz7U(N62*NTxjlMj!kc_O2-f6^ydf-$)Bxw8}82@ zgNx2{gryWBS1OeP%iq%UiwQ_&gq}DAzXvyj%@slKpy=KYv^iU3W2PSD8 z+ku0kIkz7m@2BygHnmw$XNP%OvDprbqc7q4CKIy=Yp7JpLV`$cm6dfEnAyHz`0M(Wy46jtj9nGW;w7XkQ5EbwLUk6BVYR%ih+VKK%-W}wXeDf zmtC@l8ng{Mc9Wku6x+Ph&fMIQxyFr)aWA&~G7gIechf1wyQ^IZoI^l1tZN1a2ZZwd zBok!O*E4|1>|$}+pDc9+PPhD^Wvdqi1tn#mAhB)dP816Tz_jtvIQAKF?kRU+feCn- z>Lj7+r1Dc<8g6SeM6O8S0l)?c@X8)c^vDZ7D+n~<$(Oo~S$klUmgWhT{X`CHPfOE6 zYOd31e{rf=dF&r%KMTKC3xGg}Y;+i1?}G&isPNbf%WFv1N*KMx=b=FpI13cP#|>-- z0*{etkbFOfCWqcP1e0P7>+`d#ONGYVM)GF|$uZIVQlR$Zm zu1T$1&bg>UUI4f}puA;fae_q`|# zAq}v7(-zxY;1X*(8cBO7o3J)c*g0J1EZe=>r`qi)6iDEhX4OOnc^uFQ%|Hw%7U``F zVr{4Ik$hW@*Jx=JJZUQcLZ$8Ln)DcJNYHQ*X-ZhsHMB21&=!0hjH@w`kn>@)KPO

    =W`5D;_$Ky{?e8e0u@qH(Kp$GL^6*A4B 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

    $YHLw9@vaia#f;S)?kY1y!BHV-AZGT?}PBh26B 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 M_0SPqkb#(K8DR8-hQ}h+VTQw9hV6CoBt-xa z324+~#v@To8C?^g@EKkqGl7IHhsqPk(+L1)3gGZaNgx@k^53gTkw%y`DDM*%@-3Og zIEsXFiZ5~=oz)ge9`L}Ek8niJ9_9>(Jt<^2yAARv$K%Bqd-wxSF~77x zXSdC@TW2xT77Fht?`8};0~vSK7cGPW1s{4$YREeRCv44%25m!meFE_yw|Ed0-5N`f z%QF#Rsld}2^4MVlv>%T^Wqoa(M<05GAP~^w+$f}Gq_JknQ-`q#)Vy&F{E$_1hgoI` zunhfB>d}euWE5hq#JcXqCl7M$g%ey^zkmu+9jaCG!!FJ1=UCiWrh4oQ0AT=e28_Iw ziO84tBT$h?WXEcAw6?&-yh;==@JYKxWc)-C=LBj@Cj3Vi;>QIyCtpvH5!AN)^|#*S z<(K}Hn>TJSOjDC2aTJ6h@nGnN!{P4k=GIxf|8Hy%yt1#0whuTzjN`!|2u=mxAIg1H zBFYD*M1wX23Z*%d;Bi*U31hK?)AU?1}*c0-C@=sQpUp zV-UC~1SG*pkMV#-i_sb-v&nr?mr^j{Kn9syc?gM&W_hgqjZaj7D&yB`Zi{_(=)e&w z!#ZgmOZTh2)~0k{8IOl)==9o5g|n*i&eM!6Nym)S#_9%F&Ru48ZIyHolV*uN>(J9j zs2;1zTWM}JX*HW;6fK|b*)?^;H<)H$%Z{1WAwgU?b z@-!8e1ObmJS@2*(5jpVW3V|jjCLtyzVS`Y%>5F39`49bCuHcdVX*!v7f3(u-lNV9|v0)^qU z1W`y>i6p`~Ob6(*eG$Ghnf7NS4B|evZkW6GfQ)C{AF{o?Nx#z*nAPW}q`{V?F=?8r z`C0B9Bm3mp-q>b$YnyJjqflB@D(QW-r8@PgDdmiA+`3M?-4dIO3=EbNA2^LG<#f7j zmRGN!`v!p;|uDz{}ohFO1W>i-bSVkVrST})*PR}E1 zw1;3sr`GGH4_V79IABuQS<56*U{X;+%Y=TK8DFwIr_pTi@;6@QU;gs{%@;oZIqs~k zkfa&TX2YBsjFmv=WezwDCi7mYFh$v)WZdpJLo!+U=M?|(6jqJO7cD$nW<$av}> zJV9xC3jC<&eaS~-^*35_7`AqBq+mUGFadkRgjNPiPw_bz1>n(ZoM+T>z#`_F1@+Fa z*C>~&WN}J=P~-prETH(l0aO60@ENJDsZc;JYI&T)TQATWc6#^}CETZ{CF6p#o_5k= zr@cdIwj>XrTCT~1^Ir8fnnz)Dk~n2^eS_9+Q`@P_2=f#Ugv{T+An#)J<_g_T8&g&; zMY8|*o_>Tw2M?2zv9Y{@H(qm1DyE(+q!@asYG;(6@+FU}doT{k*K~@x&XeRZYF%w3 zC<7iOEfW>M;Jx0jmJkNKkO_IKwjzQBLg^O07niWuhQWJ zDnmcuwVl^!*4tpc&YO^vAYuV&mJ;`3g0MvS@HF+)M<~D7B;Fm0MqY}_5cla^f1l*J zAEPo?#*7L)H4LMMZNhwQkFX#p=35wVB4|gqehhTd zB%wbTNGafrx8LICt($!53!kIYYN@GVrBWf!U6u{vMxLY>liu)ZmLy-PRH|PA+WS^# zA8>x?hOsvC&V3U2Z-XGXKa8SElBOmM1006(;*`L_65`14Xvots$}oG3w+c;VSqD=B zyhRMN%n4{fugRSkh!7bWIq$_n11TCiJ+V^~HCa#fhZc_TG}oT|EHgNl3Jw(fG@xWM*kWN80fe*Z{K*E(~q1XG?Bm# zJXK#KX(x2sT{?Y3HwZDMS={}{NJ|&RRP&if-dL7Ok-XQ~BA8hOMs+upfbo_ET5Bmn zY9ny6@@UYKxxGc(8z$mXI>mgjOW978&fHxv%};dhl*hcexxriCdxzV%Z*%R^Mb+l%vvb2SNCSYNdK@A87Ug=ZAK*I<1m-?jHfaWUZaS z7@KDqGT4*I(!g3DlR|(cNPqgA+Lp!Rd|TVBallJrW5!C zWi=GT?6rDU@|{64AR(bTUk499@M3E9w!5MOC(W27Nd;p4xX@ z!!(v&7Y61|&a1vzAj+vwL9#tZQutArvczfuBf9?Zb|^` zl{W(u0uJJC4C+@C=-%Ry_vDJg%3wM`Dgpy1FtS+0v~v`mp$GeabB@IWi+e?`RTq%;9Q|HSCl2v( zpqA4!KXRP%Lx)J$Iwbi}zX#jzP#SdUuUu#P#6tjxy=_OinA~g8wkd!GGXfjWD7T|I zdf#~W=b=hN(F1J*k9Afk7BL78$w^f067xt#QUJ2MWL={U=pKi$ehAMblM#m>oXrb!`16oBx-0-@hIeglI6cm#FK?oSVud&kr=Tz&GIptfZ*K1Ty)|Dq} zH(R*2Q+UkTjJ%XHy|h47E(sWRRyIkpSm8xH0P;?J1g3;MJ%Lf|pls0h4J_ewC{W6R zj6BJ)==1A93%E}5pL5kX#R*=?KM~PdIbFLV2LM6 zJw9CCr5t#S8Oz-$U)O54Rp@*1!Ua5V?%ey_ympP<#x5A60$*pK9}o3=@$mrfz1!Ma zPr)SJR=elY^jsK(zv}RRxL;4R4>&*cBQn85c>liupRmT1jWNbMM_8$LO4br@U!VbmbCC=ko4mXtiK0$dzEh11@4T)DUlZSdTC$LuYjPb-n5eCF)8xCbu051UB-QFQfa^0g+sZ5*>rRrQ+sOY;i z8@t5AA?h|-2}Sun`Oq1hm0~g*Yby{U=2@ZQtm{^-i#M7>=m`h}M1<(O<+;b&KzeI= zJxAB1sR2f93vwBK0I3ZO1zJR<5HF9?fY<$k2W2}_Jm7yC@VpyLfI$?NjpvT zURr$Y!$h?yEP%e+$kQ=sJtp#L6iO@R0E{u$#&y@!;|aq%X`Kp=(@~G0xk|I$B#jdR z&39k_4(lr`cn6!C>va1)I-NFNIYvWmW(JE~D0SbAN+sXxc89%od((Qe-5>NW1HbRQ z|2ojvw>0~J^Fu!>HhdWPy&wo5#1JCS2Eyrij(_wgp|j1#Ti?JIMU{Dw0?KqKZzFoN zm$VImmufJv>60fz$;=pw42p(BIU4T}1=0D%>B}Cylg+sF(R1;+d;>7Z_#Ga#CNB|6rV;HbN1q9@| z_>1zsq{iJH5VvBoI7iCifg`g+@Sf?%j?kW}VLF*UbCCBj!yfVG9f`%3YEw91)P({( zV_wWyD2?JZc0?Qy+0O!QG?zTni+i9sk8VhQB!=Uz4M8pB_(Nw9`wq*n(FX~X zT5>!#0+$saoPv*}fd&KZ6Mb8a(=yf3-~&Y04uVkgoOc)raY`+k%;tNYJ*gO^M1a?K z32c$maz;RJs$#sUg+h=i*QR4c0;|I6qxa$rx<|R&lNi#lkl9Rh=bW5~kZh1CEa_s% z$}uj;_nP!oW@ZTHtFYct7%fQ>(W8g`E^)7`_RwQ32^?C7cGQa6Faj4dS&ymtX;IH( z^F%dN#ydR}bvN$NyLFiZy-i9pHNrHYxwFGgbDL(ffoiVOR0M!L%SGlmFn>_M+K>B8 zPt8!TPYJx8%j-*rkN#-f>%Z=E_r}nr!+k5W4>{RSANUjD;h|5*1>dsf>rmA;U$8O)P$BaEa6d@P)Tx zs#fBgA`u7}JXjzGZ$~s!kp|4DrUuaV#dGI5dCzgGr7|w^WQn9%lx){~3MqXz%nK`o zJPQIKQxH(|BxV^}W)~MEBniGqo)=6oZ?!fCb^WZAD>CW@Wt^S0O&R=BSRz0w2MW2F z$f)ni{E-ED1ig)p@-sHHx~^JzibF?_2wcH4>WykN=OoFO9L}y3YIVR#mU+ zExk^6&ydZTo`thwYU*`W zy?XVQI^R9#eCIonucz*zPmK&p3x43hkeUunV?w==^pc;UAeDPzMs|TRN~$U4^sEk3qN+#b_7h?k2Q2#B&D^24yAWSvO@mkh5{H4P>v@kU@-O(MB0NbawNAdW3syqJsojs zU~Gv9DU=j^udXa%z0+wcJ2RP#{va=kkJ-HV(>$O4p_k$U0J~>(_5kNcZp?INg&mFF zE~WgW()t#qH9eccORT=-y*T~OUqEMh6@~TiIspK(ZLA}W8Pj5b2yFt3q!pKN^kj1I zSRZk_HYt2rK&G;)6A=;H1yq0{QU!0xyyAX>Pu0{!Fr-8yI}MUIsbuKtOJDv9e*Dol zAx7DVa8qvK%nt7v|7w#Q1yB?LblR@&M37*08v5{2pCE$ z8Rj7)E{+l=ggaRuaAk=5w^uLF$HTcI;QQJ8iI?D0XHlGOCTaZvF0XmfCE97T5Y8V3NT+p@24$L zh@7h0St~=4=cKNeme&NKG()q5Fi)yCtOg2a5kZkco+T+T8KEc$41wTLvzBG0G*Edu z%_4sSObs@I+rn|od9@&11bUIntAN(nz1Rg>i3QtD_!LH4*O9ea^lSky+F7TAtb5AZa&0o5eDLP=Yfl3BSf@Ah900dx zh4ujFM`Fy*&5N=>c(*p@_gY!Dzbp#LM6*e7@Mk}Q^RI=`OcaM3RiGH`V0i5!!wAM` zcq?E>Q+T*AOBJD|w50*n?DVPl*!n5p6#R5bF9!^9DGE!9u>(ML00Ihv7egaT&3O=P zXarqgw@m>84}kv8CjRnEe}#p`MONrD++`%n-4ZV7(SvL_RNX`Ekm0*Jyk|kySSOu< zQ7jf>apJff0syRaFtMSrn{MayV3-&-1}$Tl{4a&aXlH<({x)g8k%>s7mPTPX9pc8| z1_q-+P*3pmcsfh7pmzaJqrKhV;A2EI=z#JNO7e43k%ZUOiR1IN(FBM>mk`>+7ho7s zgiJcU3*o4mtvZ@gH~h>BKv;l)?$~OYuSL2vfhQ0)5Wq=;$J!jBu1Wwdg!jP56&b;n z^a3GN2#MxYjDYrrq1OJmkKE^+Xb8&?CTZy+K!@q1h;NyJYDd7p!dXjVhASp;lOep2 z1O{D!NDVds*A2#+s2OYA9*(a)9ERZpTaU}YF;5R1LHod3$p3gAuarcH5{7f}$(TKQ z7DA9Ih{=u1*nIhUT>0-`!05%NVTW57?CxOy@_s~7BnP{@Sy2?(?EK<zDRu(R+aNLqE#?;FJ*JAGLeEB@r^r$mX!}#-GBO$9@SqimMxyMfqg`SWCk| z<6TNbCWS%-czQUY7mloYp?J{BL+OMGdRGX@gfq)vDFB3?H-2gZ#}(WrbvQpA?vKl^>$eEBkxq{VoC6d5GF z7RLFA#*@J_2?Ejnm0QsgY3Pw!l4PMH!(_FS7E~F?`58i5L7?-NUJXcDc8Y+47!Za` zGXjk)32Gr{2GWm(aR_vDh8~%fqL%?m+HkU4vp(ew^EvI)`>@kVVJAaaCgB~u zCwPFlLn&%v37T~_LNo{j)!)t`h>JFl_cc&)1RR0m!QkJ4rCr|(RToha=f5Pt1mwdX>*>q-R@wfXOg_gj}3PFzrM4*_0vV3e_m_z z$-#7dVb9~)1Dqeq(b4g7A;iCGwX@s3cg9&j^%imb10Tb&N8SzSsMewK;JP)th;08s z44;1j-di%oHlKbG@u?XoX`p>*z!uC4HM7KoTVMd0CBV%Qd;k$ZQ~=-|Krm6L?{Eho z4yw>DxSnAC3du7(wQSiEqd#fJ^BSm|1)*XjOnHOVHat3r~C# zq!>fe6JaQeJ!FOglkG7k(=kTVF$oHHyzUO1JbMc8pnCMN<3};Pu?1Te%vDT>V`Qrx zNU4KGqg8`JOxiR8pUm;10H4#ltGpS0mY$Sn=0FG(yN=2CBnj;oa)fpS7O){SHu3}w z-|-d52zGp+dNt1pO+aFzpD%CuU66?@v{7r%rANVMaKl*NX6~TFY*AU(kMj$mAO^Hd!4pVHprjUyvCFe;p%4RuVy?oT&^Tdx|+0mw4F7axKz8PtG0kX%2c6l1w{#NPO(b79-HAM5C3paL0)=SUqqM zR@g?nOr^r>wKV~rU=#{v`HwLuQmO$5z79dn$k4mS1Ek3-?iXe7cnSd&AXq~I6F0%A z7=_m1AOK4tA)JQvCQMZf%uI&P;vC|nMZi=>A&nz?caW;mOVhH^lAsEcsRlUIo{6Q0 z)Knd)l?$4ZXb8X)D}Z{WKpmb#Lpp~`048p$whN7PaX(h?e+%yU`@e_tpZK?Mryj)a zc!J&C9Snv8c<;>2%#`p9t^&y%gdD@P2X6TJ3o_KhUFNk__H|+{E!I zsZ`3El=du+{JnpGwMX6qp$#HY-;}n#!5BVLaSISk*27N=l(Kt{eQ1{FF03@?;M5O$}4Ed%4s zat)q$;^D^@e630Yg=B@Gl+17qOcGbGo`$oI;O`1c!yKsyT03~fK0!QIzWLon03Xvc3bblR z)*knd)brWs<>Rr{pcE8 z+TD-h;+H;)?XUhRCX+2>X^Jds>om>uU^r-v$D=n*C*!*W#Lq=h{IAni`ey((_N>>Q zhw}q9x>3u(`;SPe-YKO_ZE1N!9DCnKapLVCgiwZm7hI}|YaK?A2Fc7Kpfth97=_Wd zuEK7P>E)1(hKMbundcDW&wNV8Y=G07dX{ zB2g<%D-d9OAOlc-g~SJXK@|m?=SJPWT6l)8X!yN%6qj6BTB4MVgyeNzcHg`)T+iJs<3UXI~-8YS-5UFNJu%?QuLa{yu%#m=-9LZ#N!q(K(sPhC=NTJD= zlTzZ?v15p0!@fCDCxUaf3b(l_<)R6cUIwO~;dcut@LD-E_&kvcT5pCNBNN&a1j!;9 z8nkJNEX!E%I^CH-c*$#`%ubYmw0b$E>1R=^1`H%$H%VKd_L+5vIy1qesYei@fRc49 zX^&=49D!PW!1}O1Y;$N33%CStsrH6YZv$$wfpa00hUOsH3DjWbYXyX)GlR7U--b7Q z^k3l4Py7*<-}WJl27PSzcc^Lrc-iT6()|Zk_uYDM?SVASe%CqoZ_2X#**u@_+p}VO zfb#<}W@qPxckVGE#IHw5oM~f(G!a%GdmKmK{1{@Rp=2YLUCD-M8P>+2ckno%qoA^E z+2bbP?t@wbo?t^!$x@DCIYlOuiL>O+!Bt4vA;=I+3_>_8NX}AUV6KoOn zB6=yhZ9wYtAjgHPFH#ZV)k~LI!{aAZdEoionEi9;!C33qjnpc~4yjgIUL%Z$PISmA zNl-2a0(^hDWzCUwW##Q?qv-*m0E{(gi5Ar$5L^&Pnw&(^o9Dztx|oX>4tak7>&Q+c zAwg+P0>Nl!i=+X{(3JE(DzAb7Q+XR)s^Oc0pUuKh)WA@>DlgOs+Xe51YbEOaTGpXB z*LbZuw5I4CRX|tgj^Y#t?s*Gd|M)+_1Hb=g*!T8dK$P~F#VX1YJ3CvV-`|c+94(FW z$&U?3gMT?1k3PHI-}-Q#PfrN3XGiw{=lgh+gJBBb@hFZLO%zEFAUSdlC*SoeFlo1O z!&r~{rmJr>Zj914^{fP|(o2kPY+!VAhhBn*tBOE9ECh{!2q88_%P1gHL}Pf+xfZxkR9NsmHI$xJhdD*d@m)+0-fGh_vZp?nT7r^1A}XV{B0 zWodz~fRIeg^E-eAjX!IKMwY-WwZhHo*V(72+v|asYXwSI@;dk}S^f{xHe|yo%P<&( zBw2#=ZZ%PG+m_)_7qONJ0Y~)BWzp=AU(6_LhFqotV6StvU z4B=^-2|}_JBNrum`Ph&kQ6>t;UNpc&%R0wmJy6uj16-7>y_MWHyp}+xt^r8N02bA@ zX5Ss|3)>WdrfTF?A6uUju?CN`u1Qot)ql`Kn;1(c@50@`_>b|rkADg?Z}>Z`frALY z6YpfNHxthXcjT!!XN(M+T|U&pY+%#S0RUqZIL3X`-D#WCDqg7M3npg}|^0OUUn z0mWpn2*sch2Hn+FNF7%>3h#m-r1hbdbRCCa7tpDzsM5lPkQ%6KR`=HD^8yXn0|cg_ zgWW7(H!TSQpgkk}abHj?AdR@YG>i69hcovGF?Mcl;pOL_M~*3#5V~m(nNG3${0@zI z94AP#3}@~+hncyV3aN#4C?``0A-F8fuMl`tE(riGcJRj2aGTO#w9^L)@HGu02r&Ev zve5|c5mdw+3QAu<#xmq(9K&=Ni%PA5-dk7lF+4!9wN#0Q2T2N;45ygvj!bhK@*u@E6VaSX`KCW61RRTZDliimTnJlzAr|x zySoJ7=c729XX9t@CZwd}2>Km2&W)_g{KSU-QpOcr^{@WK& zjE10B0}+5mlQ3YB6KoU=PcXZB4865G02`$6P4H?`MWYue%W%2p-wcPvBIv5s6lfVU zJVpb>=UC<&=&`^7thRT)s_EfS6t@H<%@Yl7tC!-oQ^%OgP*9vzzVMwsF8KyjPtjn` zcNQ>sb%4?O0L)te$Ywh@bN&oT0%00l8QM5Y7+wNA=4a+H_u5kIHodapee}%p|EL7DjR1E+spbQBhkSYK}OOZ*(F#*9-2nC&JUKc}YY53bI z)(Lg99tJlDq*!aG8A>$0guf-!)G#;@IZ$j5t71}b9a}JqR)(nEYt+z`t`1ez-gxb; zh^lo>ZQOO8UkU#;i3Lia8m{ts8r`IMY;LQ(PklaAH9uSzVQqpJ~vkr?c}5M@$_3#Be8)12I8Lxci+tdJ?7E>w$A3k{u%cMisW$a!n zB%L;rl(HtU&XHVD+7g2ocHqV(ji~h&PCLrB+}OSzbm$}jFEK5|I)U85*ycbwz8?q2bI4NC10^Ur!RKx6-h|6M^K0z< zsSHE2fM*z%D&q)4&_zMJ)kdq8aso4V>k(?PsTvfT8fo=9U|3V)rY02B9*IZ2pw9i& zUP%QoTz?nMTFDAbxHtmQcb&6l)cNLh!#A%@aS6wp1nt{S;_z$t>D|BmM`G=<$AwwG z6}!WM_we4@k~6zFN!m_epEUXmr1)*;+~=ea|6!U>-&YjHVj;Z1kN8k~F!29w#6q4F zLi}cDcJ_!iT9;np=yxd4_dg0HMV;V8BNV{FZKxVqRWbB9ZR7gWe}m!W3nUKMan3tt z{{G`|x(sYJLokuh{M&D(8;)(zEWo&J&!dD1V)k3cJ<;FT=>?D?0Yj94_Lp_U75k$ zT?@FexelAtC^K9(Ge3{T`6XWV6jSU=_v7ZqI<_`$z=g!UawJO-3{ZfeA|WaU9ktMS z9h9|Ub-q-pk_D1VLRm$ypn8D=b4e({V+5+$Qn27u5@7Q!6m;wW*3#Uvb}KGlxP)R@zz#}KC}CkgIx7d^1?qlE^pHt%z|GG;i|O?p z=8+#b(B@u0@>4Jn=4 zJE}F^WQ8pCz7T1wJ+%6ea1S;X{&u479Oh2mBbLs;QOuuwz3@eW;pPo7*x3R=?^I-I zrsCIziQ=wO>QG+fk4`4zH)|muHrh<`BA;4sN4>duzXv#bBncR)pk7b2RPDj4ky@r@_Gj@^Er#f`0`#SmZT{u%5{w&AU-LR4AS z!OZd;4XcKx*D=UDo8cu**6Wo4cnB2Cm;|jD~yG2)YEWjgw(8SfJ^n7S_Uv{iiI}snd%yv zp*o&NHd`r(s_jDkdR{8%&K$B^j$!`J9}}HJrvM?bb>k|=yW3Q?5b*qQXk&Deq)D74 zw|MW5=SBWj54<%t@f(a(MhUesKeI4d+PCcY0B3Lf9~+5K2ZRv6(V3k&pgP4Af zf!d0_bO8IxYm=1Q3_ctqjG$Fx#(g;W`Xgp~Zynt|ZyX8;?Uj^x<3F4lT`e@8s zkW4TQ`e`X;`UzaO-gX49f5StVS(s<|roXd|zy9KvaruRB!)I)%OcjOO58RGdKKl|j z{&F4gg5jOp)(+wQzw$opTVCR}5D%%sSkiio2Sa@0$!}u)>NT3ND2gayv-qZEOp+Wn zunhn~O-w7&1<%bq z2ovI#f2&x5bmx-!HZsOUMo$Q=84?--p~zRNpeII;25~Q@SEhsl>vog?TSSja0v;K4 z-h*DGA^`$Rx2|G)w1L7E5R!e2pv)W=ZaWWQboHB1KH>r=u=|axD8BM4>@Wu$2#yPP zz6tZE@1cj|Ypjck->&m;bVW;y= z07C6Ch1URWK$5=>_ZWE@6}Z*t)XX7qUqih~0!9f)LjcC|-9L^4_q`Rm-9v05xakD8 zm{OISirQr^gb+H8MM-s3EAtkm)K4dI>!Bn{PR{k_R@PRJ`17alD(^aTk3Dwi zc602|alYgp;Ove6tee zcvRNI;KmhfefyjAa)bv4S8ihA!4rsjZ6>Lm2>Bb4b1l7sCw7!vYuQ5H-@$nE3Lt#Y zIs-ui2moUN!8#Wage*PkJO$tiA1Kw}LW`2HbpZ_`N)IJ8&(X>{ICks|UU&a}XwSBp zbJ)JNi6{R2FL3d~^9&&YV7Tqb>=6_f3S9o|%NXyDp`>JP<{j^S7w&ubep)b5>73Lo zHNj-D#nWGZ8rLpe0U*dU%JV5YYdy4X%?NO|bV1TzAWM7bEOtRq21sn!xPFb@E~TPZ zM&O|F3n4^;C)-9l0uAe(OaNZz2+FWvO%H*f@GMyM8uYMKDFH=bfe?a#L9eM0e9d~Q z9f$%FAgFleWdMM6Q3M#JAeG>CNu&5Z3V@S{efw|0*5w-@V~*+q0?GV-B>R^@Z>cf| zp1%uMG_wxrE1!=fXF*DtSZ?QTB{!0!Rh-uRwlu9ZpQ{ja8-_IcrvSe@X+ z-~9-dPn?H`fU9R>C|q#i1vn(PHR98O)l(PGK}XQ7Hu^6;gYo)h8ZA4RK+dG-ojVAp zN`g!wM&K+Kfgk`HSw8lz#O^E4!;W@9wp8iJ3S;g@2YRq&D2K+&vvS_T*P12_1+k)j z?5Z9)KroI|$Ex;rI*Z%SoW%nVKZ2vDPC~adX}+(%auHwq&wq}a+gE^udTy-!SX*9$ zxB|TR>F2O}y-%xVB7=J$c?j?M;Jc}j#(0eP1Vw2rNCx-dcBvGe`{uLQxN?(Tf`{i# zpWKpS?sW@T-@4AvMrlQlWm=4|w0a8?oxs5n*hb?Kwl{84wZI2+$fUjk!B2#ONM)#( z#`E}z3%YXz9!MXm`P-`QY-&B&z0-#dsF5Q;p#(#EBmp=FSV92TTC<@W!*iuAK;RGo z_?%!^&O821U?*rf1(O=Yofi7nw*rB|QiZv9`zfe60aXYP!J!P3kOJjojNSkG5=P%# zCs0Zu5v3h0J@9t)4&Gh?jzGossyv17F8&PLDzB%}fK3L^rsRG=%0}*_)>Gs5D*w_1 zA8v2d=QMIVjWC(`uD^MFcy1Hi!k--6SB3qW?@xtUqK*=@7gw-&{5%%VzX|Q5cVOx~ zhU>4Anx7;oB5hzIl0SqoMoFo((mGDtuZ>=BA&TPLOcI~CxpDpUU^04WIOxA_G8ugd z!1^BG?2Yd^mfN$-5cv64mK}zaO0OKk+4ue?RN8?6M>8Q>&FGpph2-{T0@Md@D4m%@ zSxmA0{MR8}Nk|!7y@B}9ETUW6aI)m_1Q)>&4h#|qD8}n;Il}1rtFVJUv}108ph8wz z$s{xl4iE$)HQ8xks0^IZ*V9*vP$(+E+K;4zm3;?s=B~SO?%{iJ`1tLZ>nzYv4z_pk z!c))Se}3gF81%OQcmkEw5{Hi-MZ6Q^nNNKKauYP}S=y#Z=i|TiYgjt4TzwA0fyn@0 zF)F}oQB(vT<8QzA1jeHgi3ZkN0>sLL`>`|XlexxlR%nXWYPHds>jiQJK?j@bH<+lm z1r0g@N}GsaBc%*V%8~>GX(hB^_>tg1vCWPE>vII@(F7CZgvN?UAwf@vhR6qxO({cA zW(#U%3HA)tl>yAWBzT0j-ymRlA3{Y0MtWSG*;y3RDf=fWqnI1g-8r-m9%QIhIa2E@ zm1yY=T;HMpg$u~Py#*~Kb?Y#@i~|q-Bw7pmp_FPEZtojmw91G(-=raj!P=M6t~^~C|2%yGty&s!s`eOPv#TK1eMnExt&gzy?T-)QSiPMt4KNccre;km#k^wuLp%F0FHwIb2|hdo}mExFJC~hvjJrU zmR44s*! zK_N_~k@Y%w|A&7L=U#sfLeR5;3~?O6RYmb5fj|QEg1+(OQ`oq+j_sW-?z8<8`yN_h zk?F?9293G3mH;{$3@~?KA7E(qsb=6U(BIlZKAu7#v?$;sQ8CG!_i&EgLFpaQGc+n- zq5#i^K)xt~h^F9NnI5Ec^nwV8VEt1F!70y0Nd*FoWUhyFXFK8Rf$hNydNc$<;rU$= zprlr4byG~oV|to!0#*W@wc8Q3XCXidB-r5D@b>|U$qO6U{=#z@U)rRnl@|q)!)I{p z9Up>9GI)sKbyNnwnL9yK)DunWbe-G}&jCPZ(KQJ)B0R1M1l7rE;3#a(S3z^s&*Aec z;HYvx@U`bsa^1)saj8a?Dy%_F{x9~v15C23I`hBxrOMS+oumO|UTr6O716D1ZWrqc}Oop6=-!D!zR0w$Jyzy5Ie3 z+raMPl}(-b-n^=ptGeF(-#O<$|6%%PH?-O!MKs8i`%oC&g5KpESmC^DVDGpFM$c;S zu6~%=5*#NjO&QM1I5y)TG8p5?Wph{t`kL!|56;Y<{Q`hS2XH#JqV;F;Ovdp$P0PBR zah?gS49yg|z96&0YN7v{^%%3@dV0HprN`$jj z`1KH7+t$L)X34AJl5zzJ*nql$$|yp0{3OE00yvY{ux%4|TyzdHxeS_37cq|rbP!1z z2qWtL=%c%L6$VE}FfcNNOm@^(Zd2xypKG#3_;0YF|5m*7cBJ7WobTC${$DIps$M)MYf zk23-omZ(}&=q+ZD90X1f1R!+GC?IkG>A}H}Ero9Y^k6{Y8q1_}6pCf!x(d|slEpyi zhcME4l-6zsvl5RNoN|38QZ28m_Sgg#Za;vi<{=>ONMP0FH)80Dn-Mbu2Gf~jrUC-J zLOqZ~ciY=$^Iq2+tAvIQ-USGsi z@wM`PbRaaj0ve3&^VBrFhKs`HA+Vf5F?t5*#eGtuIWq=7 zn5B?QUw=OahX$~!rw1cL!zgCDP_NYC`#xj>bWtO~+~g!qpE!oesd3CsPGf#@4$~*j zV&d2sjvm^N!~1t*?AS4!K6(^WXU8yidJ+w<3Sw$`iRPP#QOb2=+xG3)e9>lvvmp+C zat{_CpGVqEBbUk36Z{Ka_cGk@q8pJ;IRHnyvLm&JPDU%KJ|C$HaE>Q;J_)zpq)-qf z;7z$0ym}a!-W+*36sDpG6r)^DCS5>RxeNwQ-$}kuKz*@-`cf4X!eXQ`2V$FX0dOkX zq;uIhhrE{9k0|^m4U+kxkQV1jktgNvXc-`raF|2jL=$xs6-1GyMr|NPg zD&{2?NdiU|S~5if0#4e&hHcw0dwP;Om%?GhNK2Ilk?kJ=hXqrlktpra!${11L|y~6 zr>C&=qa);9Mq!9dCWq1m*P#ELOW`<{_Pf+_B#b6SSB3%xXyGU|PnK)PFi1#T|Lqe% zkc^EwFIV`Z!e~$cBB9JQ)K5n$MQQa~JHMh*)48CG*0o;K)H2RB@JY653%e;co&bf} zSQKF4j<0k}w^6Vi$6!Dhdj2T`{4c=qgAPlrV?Pbx3;}pWCYKupH>}dRS7QBjF9tY= z3MZ%=NT_jCEBaKD9<52^Y=(j*Y_bUHLK)4aIfOG~usBGvzj1Psdi$~|Qa4-O+`XJ`;~y(Wc&5;htQtj%g2_1Y4a z7Uoc0oJXTkMd$?xTo=?wMgp{pV?Z)$Hiq85Rm&i=72B>j2gAcdn0aCvPkm%3<{q6v z-YLMcY;<)O@#f$AO7lf0SfSVTUMNNRN)0{{>rr1ubL z<;ZxN(fO&J1i8cj)!l#-XmZJM&ILOV_#S5GrpWUm@U?6dM|Z$XX8$pnaCG>Lu3Xs}>D3UrEKtk2NNxjWAOs>oF(8g+}G3jVusXQu0cF?KbkczPv zdoF6X|AX|8JYkxaWjMAY4e*ILh(0MGJ`X^48nAWjr?K?_R-2Z|g_%a*){DudPR0(6 zJWuH-1)Qcstbr3Rd`cl5MBdrtxBO4!vv~#?!$@s zI{II5K1x@thv8TtK#>;0ppLL!f$&My70@(GDJjA(F@5!Hl%I$m~V(B0LGq256Zt{Onfb})T%8EAg^ z1WtVWD8fk}StkR=81=rn_J!BuqKnR>`UXgeB-IWUC%GGP6$LG&vl?814ZQ%0U0t~0 z1<%9DLnmmDVt`$+K{*>Rh_nO^upr=pUvUYVF$@#6Y8oLEPl3FsX{b!Q((z22P=y zfQgPJ4MOnbA9!FxOh$-KR?w)|L3Kce3A=k0R$XuvxRrt*>z=uUmcP&%q$#$TTCTO1 zZh00eFKM+vCIJj}4DCG7b41Cp+r1E`@;$1a4GKJ@MB>e;i9v~gYO*~okWyZp5E{5D zuSo%_24av<9#80^ddKGxJn;h-$e7lOFsh}@)a{vc<}(0fr{ibGewObzYZ#^x3xV9g z2n|iNLP=|AVFB4*Sxr*&waL>6Jr_$S4`Tl4Zp=LOWBBt^kZ}YV`ZVVWb10o5Wm|e8 zuPrUnpkZem;OR+Bj4i=EzJS5!U4-;N7bFKn6e1SQq^5)+l}oi)aIqm_5Y?7JFbSvN zVBI-uv1aQi{6>KKLIX3iGt1KyD)l7@P6HxxsT@iCJ87G=x4KIu6!Jx|6i3!fLr|D0 z!l@sf#J+#sjrsj^B)MWRPC24-cMdOo!z*z8P1hlnP9>uW(UKBSVM+K*K=EJI$i`S} z#G>uDox2S?E;twU`6~P%Ag{okbTRg=6Ii!lGuEBI5qp086eI{V!7QL!Tg0LLyKrv) zG79^pSO%jT*CU(H;m{*{G4D^3r$^dmQUD1U7%)J&8pi3pj3jwBumFS%5eo@`q!5XR z8iKAD21uD3Nsud|oD-D1Y^p}3Ed{fzyEmz4}J@!d=5bvAn<)(hVjEZ!`=s=*=aG| zv7f~RUpCM4xJVaK9A4l0fyYu4Bh+qC3aR)_)TYj$IXi)q58Z*v(Y^5Irx1q$Vz&nA zyI_g`P720E17_4t*|IDG8#|Svmd(v-4VIOLDGWqsDwzG^qgZ(42+G%QMbC9xAPkp4 zhb6&xC+i?EqNLVFz?LRas|kP@$>0-+7}Dy=oKW`4an| z-i?DM3?P>xe>h zbPcOk4PoPjo9H~J5ALURhG_s6Cq;==UvJV0Rub5N2{2*66d6RZi^i@=)Sn!OXa-29 zvj_r@#7ze`od+YG1Hh0B{t6&eh>R8pD9=PlDEhEe03oHeU!t|99=`M%A0?{E1jr1X z(TNy(jgBg!)^y!e-56FWwxv?05hF!6CD%)gply+ zRn(`(F!A({vHxqI!ihV+g5$UU3l{e6ggZS3D-Iyt8W06ENF|e8wphe*Cc zbIwVdrisA!s9m$uJqTVN0-^{a@L+^7g2@V+yT&oI^AM^>#t{1zaEDP9{KhStP{N^fZCB@-$3>fQUdQ8K7m-@r&kw z0xAaN@;OY5pT+cuB4Wm)5!*`ohe-rr$gDheQ-4H?$$bh918np!qeUTiEq+C`a|1Uvm3=WYT z2tbUyLBP%l7?2duGQ>o?PI5g471|QG_YC%7+r{Tl?aPL2P z2(jTMVx1POI1eQCS@DvO%DqRh^x#pXrHv>GVHhU0FBrbz)#%!EJ{UJt$4!j_tnwyp zs?79W4|%ax=TF59Q;bc$^#K$WIROL3aO3KHiU9}cr3D~sZ`=kzr*^CJ6Nu5I2s)9_ zKO^Vrc#M|m0;WQR(=;+rR9nP>fB6{B-t}dqOinD!IF6;)Y%X%f-VESTB-Zh8I`*?z zmjp5iFo2tuiX#Jn6o>;K^|@)BdGsz!?|Km4%sAYs)8yeG3PHtsoWrnf_`ZkMgOd

    JzYrW}AhEg5InsagC3*La!58r{ANAEy1KZ$JMlGIFe zCdB-nBM?piUN%uUr-bJA1_IkB!T{x9WK08%DGf-@$m@xyZbKp@sT@Y&B$D>b2tWW6 zM=>=T8-HQ~V-KH%x9CzGPA;2=>7;;KK!uVa0_?c-LOkzfH{+tqE<`Gw2C>d!m8&7) zElD7w$88|N!&r@EVGL>UR(z7v{vhDVWwUtM>uw>bo4t?kBAFXE^ibyAIP&EKuvgjG zvSSO3(7@>v$Klnz0!3QvYYLL_t%KhDxD=7_j*=CN6@ zY6w3F$#avC$gbOt?#<_en|7P9rlfFd1p3Uj4S*q*ZC-nl+falLMI6wDX(Is*(Bin& z8%_<}QU@s|rK1|W848FX0Hso{_92rhX9Gi*lY*^|4M5ESy(4L)vDg&&syvPg--+5h z4&D0qSbX?)SRC|_<@v4*Jil&n^Ut`=@5g^pW9Ox^9Z2~3nIWU-{f242$8u5`vu`zC z@TogtXY=rD6)a7j!Q{TjFuUsk3Y&Rnj*|BQNYFji3YQt+6f)x?@V!__89+*32r&-e z5dimb&X?zGUWj-bH;g~+9UQzolgSh$GvH@>aKYO@jPi!_AOatA2Oh_%du~PT!~s~% zC4`M7EY8nU2+9jQDwOOV?M13Tjm&T!!xs*tI9Nb&O#v*!VRIW6w_1;bv5de3r@^hc z)P(2ym_0m=#;F=AQ%gks&D#ZP@f?W=j&Lwo9;U%ph61bCjAGM;TXFGa7a`wO0D*Io zB#`Ryk>&(CtK>MfwKO#TC!}mUf&;8A3FmZAWQb-E7$&AFB z*KESMZ@Pdyi?K6fII{l`_0b{q0B%9VF#(7rQy3mukCBb*knb-hV8N*i>Ex+#9C~aw znvDv~tVx4El0a0F@J|M50a%Pc%a8`GCpt7^q%1&~>WWr4E^LP6IXbx%G0vhmA_{cc zPGiI1W~|+?7EQZJ^X35W|s3E6lX$vngVLK6tBo9JQQ-)@eFx zp->(OtA0GnJ84rDP#%yjF{Oi*&dk$mbpW#F z!VC_4_2Zbm?_02#pnHNdj+Esz4Q~9SWm>-vpo#yY#?DV=I%mzSJ#!3-mS5Ho=v90%kX01pDV zo0;Y~fEZGmGLElhoPWGfF0IKI3R%lZBTSVr`ux{n^G&a!&Y&{6Ynqh>EFRl~nWrDX z^b_}>e)1sQByO_~%W;s-q-pSQ90&Pgp1c{4`$%Q~?R_ChVkbVb)-j{PGYceP+bhQc^1u>*nf5=g?zaSrJ){_dwY>96<`|I{<8wym6sYBiu(VbDTb$#PAjOyz4>at^3k zv*dXC_CmH37nI_(ey+F;EYz{|(u4M6OR19)ETaXC+Bqe3=3Wr1V+WN5ocO|@qq6&c zDtIVLu6oVpcO-};FbOE@POAG)neeIQ+q7y*O3G?!4J^Vo3iR@`v&4U{xLapV}LCnm8ty8zp4jhET90YNIiATl|+X6cZ z7a+4GOJS@H7jMMC#z7q3e+Y96GYEa6RTCweMMPjGP_9(xF+Vqj6UPja!zp$3q1aVM zzAKO3!Br@;Uih9%Av7T*Dzgiiot{LsHjkhgQ0UCao202m!~*b^;3f%!<_*$z>+R`B z|G+Bbdva7LnuP4=xJ#2uEf0x!bFkoK%CJ*iNy~8~X(t^cMgSSdXgoQA`P+A+d2|X4 zpxhSc9Hku>V)*hK;S{?;y_UQNyvjVRY>~V|A|%+^*5Jya=Vi$Bme87DEi@Xmwyj1b z76APhEA@?*QFzY)0F|GC0zGxYwt`bK#XOS=P-5ksY2i5Xwz%@T6cA~x;K>{VumDuX zPhjD$FT`Vae3gYkz#%~obAcb!y|DQM#`$}ZfK3N*I`)5SdjUKNi8TOofFxQL3*uJ^ zAtC^E04D(K0q{-E`3W#~0ziNjOa_4^g?O#yIDb$qmDXpoS;O-^G+hr??U*&E z>YE|Csr3n=n_KC$!LQDvIe8j3F=b4=@TJek3t#?1#8RSGt>Ns%ze(4eLbK6Cqf*1E zV<##15J!|l!18&K&1ESEV%avjd%GzKTIecb?b=bKEE}0z7U?X7==2eYw*~{P1e^nH z8X!{7*?_6nkkGqh!BBejQpHTb6VHbhaRPg6+_C}Jz2v!=o|(ej)C^I&LlI!|p>gu$ zHoSH-iszKT9D!o7h)XZI7}E>0IC=a8mKGL>#K9S-VLgT*-~|WbAcXHXF*$nzfrNmJ80A+SqZ`GZt>8QX8-UhR-3{XiXR28G=592P%s|9~yjud3d>Q4- zo`;@om(X`Sx%&~!@4N%duc7hUpamJ9zWFds`+{k@Q#L>qAoCSam;B@T&h0TJocg7-~0q{!3m@TFB z0h|Kx!vv7#0qpx}dH0q?S0Lp(Ov`$ECYQ}iDU3#=PB*@@;UZl2+kb+-_1ge$v;-B& z8-RWTMnYhG@8gK)&SKT70ho?~^Dj6LM0qwiO5J6YddgHVNtN(^2(Qsh#4lqSm`I|Y zbD|G(lf$%a+MlT`t~P3@7Lb6{87%%}T$(x{7(*#CLP+rFLtfa-Y0hxSHj3oeKa0n?# zRwrL9qJMA|Nq7(mTGkr z&wmy!`Hc^tFt`qqDJmvceMz)Xg17s=49eR&?u!pt|mF0m^M=2WGFC$WD1Np zYX#X^g1p5-9xr~?OEAB%fcw6C2c%?(f)I}3z&q(;|L1qZ_dJX~XDzI}1pz^zl*?z4 zFXYfW+K;*BJgPHQG`u<%&(6bbG>Jq(Z2~+&VJ{=*Nq-suT&W>MA_M`6AfP6}&{e$y zD0UY~HQLOWbWVeS2K3s53G!+XBV-`~5EmRv3yWYhNLnN##GN$k-V%f@5||=)fcBF? zjK+hfQTg^h#FYSQrnkV0#krl}@#rHiHkh?dw_p({3C(@W@ z0&1P6cA$s3 zZXMD<$DRqc1HkJUV=r>j=}{+@vQ5imsdSdw*RFceZ({2*8!g{E0BFfuMKR^HT-_km zvt!ux@pr>Ly%(!T2l0VFe?JC?hgy$_D)Fv^2)&JB&4W>oo=lV6rS-BMMHD#cN``7u z@pskVMoBYB#uPp&wMCsQpd^TOO%oM}Q=la!&W@kOZQs5fcYo`4Oi!GpWtl<_`BEOd zXkg%mA*}nQ^(bsCQbDU=621}AVIvk105HiAHA5^;FX8OOI6Tio5c&{aOdbn3U|1F` z%S1YtBZ(U)VBxKlz`w$#i04YMpF-+4&W@HnFmwPr1UiC|u zJNP6{eDl-bQ3%c?qAz^0y&7}EhyO1ge}ZE;oXX|iNL0&sO+Rp_cn1xDhj39ljf{=4TM z`^<-<#rgSF1~-^(*^rPj3ZvO(v+)Cy8}FgWM`9fhr(@3~8%TiWwV7OQt({J#4aRva zVuZ0oC@q}x+y4XWuX!P0IyAo9hLX+^3Sa;QKs2`<3$eL834!veUKC4RTF8kBl|Rws zag!Psrh@VMT_~Zv~JxhR2vHaBLbR5N7l^ptr zsMrZK8yX(Ot6uX;beGHc-dDek%EA&DBvGK7wFbt&5yIc+qUX8&7`SE#>ETQZ%(x`~ z0S4nF3pBWH5UW#+>=Fcb^udSlR?WJZ(DdSgO?6dfa}@H7mN#R@1?e;kd_pn%3;3V`V3Le&J(Ifc3g zDb(jQnF7t`sr}LT4?aJ6?5=ObaU_OwxdKamX0l$dFE$(XA6l06fu99zI?^^B`wub3 zd4>VM&lr2FoldL|*TXO^aJ>&ZnWCWT30d0C zPNPv>f`9q|gy$jGQ=;NQu6N4;g8~5sTTFq1fX;W-M-9DAsgye7OwZY<*PN^OQYN6s z5}*O}b1)>J(NZK}QX?nm*PvaN*4B}{jddH>qNl$HwWTUV7*ldTZKbFYTw|_5EVlV$ za}Xv_94G+}AQC07luRK`@+mL?+aZqynRFVYc5O4j1SuC-FkvM0_<)75rKJ_CB$+7! zvj`zrG6EZdLrOuQ!ofkn+~8Ongrab(~T3~`n!p-hwkWh>-9b`7^Y#uw(SrSGrsG7FASsK2QUEu9l+_>Gsdh; zh8N1EcW>Cf{ha_?!#OLOmdR7;41zF1$ZU+h_}6gB8{UKNwOhbBYb$`$lBoJvtH=Y4 zQ?s_oC+>q0G;#RALF%8<-CYKgT4Uf=4;t0nOv4jRAWIq3tLmh_Z9)K0rbYwZm^wdn zywk6RG4)S3yJsnu#|)arm_V*f1)`v0Z2iNHKVHs=l#Z?qA;|sjn-@$%9G&=i0HjkOfXfI zubQN(R?*P%E~-_uUP=Y7^`cQ0so%efu=u@wsC|7m_>@QCy)cR)8Hdaj(f6zuV*Smpg`Le| z|37~OjgtpRpN(-2!8vyP`X6KH!fU8@E1@wfK~1P!h9plwb0{?rq^(1ya!}j)*U)xM z6Wvr`)lwo*>$xiQRGz(>AkbcW1L&bYsfs;YgdV#QT5Lo@ zuA9Ai0`Ul!iCqqBdE@()bc$ zH>S1$JZ-?>lwYCzhzXOzXp%x`LDD+fAn=G;OmhP~@r)Q`@(&5Xm@r^VD*-7$CXeGm z7*O$Q;Q3UT8}SIREM&^V;4*{i62g|nU*c)H-ZmhfERph<3LTB3VN*mxcc^A!?-Z)KYAunaBZl+yi zg6leG!7gW40x%GEHSbr5m--oep4N$)dTjrIX+I*q(>}{)2-oaM#+l zW4XQy&-V~VQ3FCg4T*Ocrtv)hac5LRBHn4GJKw@H&#pEs^CS5};UYWbSgBkA+kWS- zFmS;&h$U0BQ@wyqi3O^Vf)=Xa9I9Qgy6F(R4eb8%$1wAwuS14Sq>DNH=DXjDYp=f+ z7UN*DJ%=NWHc={7Xlg4PC-fBxfK(zt z2TLW{t?G6(-Fl{V!jqh#vbcoD9@vS;e*6fg#?Hd6xg@^Gz~Fi=tdt2)y0BNJ(0BeS z^j@|K{TC0w=rX`8P9B2+gP3PN4+vN+X(41`OC>@XK3{Ifv)qMQ; zwtEnnF#%lEj9_@q^3((Oga>c$44g#<7Dfnz0G=N}a2uty+c5k~ufxz4H<2f^>+^q( z)3<+-m}(?d1csiQUW0Rg`E68R6$|ydQ(&V&ge!WmwjI+#yY2m9RQJp_=aq~@-!4|( zhRVw*HD zv&=bXLEyvpJz+3oQ3$a!7V+Bw9PbQey0HtKj#~6H(1wJFKbg+uo}0;LbA_%F%yX{6 zrEmQ+n5nELCaCC|YV2+ABd=~sl^E3{QT6FFc=RuR3)Le}(Y9MIJ{NEOZ@)twG9g5Z zlB^n*bR4V6~Y^^qzM$GTj4;iNo6ZxhJM> zMpJ)Sht%TGs;@{oUqG`mPyKkf6sXM3!;eC2-o6#NLLT5;W0x_oHmxe1_5+;+ppn+v z$!of)o%9HunyWy+0jaun(VTInyfA~)qpPIHSCcZ_$+ij*0R<|_)B+kq&q)~uwQt6T zEgLYhb`6{qh1L?K?Iz7bFC=|6uj0a+YQjI`VdB9v82|BU%paadFdLvgUxU~5Kvd_5 zAyGYRG0-9z!;d}CUVViM;XwOT9IG*vha zoVQ;uy_S)v9C&o@sn7rE)af65wPZ6CP17^)675V9J4%0?Rp9UwjY*vft3U3x zdo^lPHP_JxDioKfCbwJr2+5Eju6|$*9VKMjvcwxAjkz-?$8c!(0UX|Q0B286V190% z#65)&ROIOfP0Hz{b7|Cr8l)}3Y>sp~jqGp^c6SO!$%0d~ku7E62LY)PL|#bB(4;hA zN_ev_f=M4NWQeLE>ZfYpAxC4bj>wN_LPUQX*iH(WLY{~WLP`XgZsaa}E{3jn9ia+(xcgOdC?$3nD z_+Su*nR=s2k13AhNGW8ENj&NL?g#xix(9&h3|*ZDZ2uXJGa)}_+SaRb`Fs!KoP|yS zSHABv7}#-{7B*1Q9_psC43G(-$Gjt{hcEzLw`zLtPCWIue}v|lBSg0@^p^0J<$TT! z&%Y6jtBQXK*&47F0l6)7Mkk{g*ouIp+%%o~EH&2*y6JHo-Q-H=(XKAJMl~X`IEFIq z*lqlBZ7>AjHeC|`JaOy<#!sEWo=2a??8FpI!=^!heqk0d1Z>L!GdbMIMJNMgQdv0M zh72UB5;VgG(zy)kwHi!jwsJqA=Yy(ylF+7Or>QM**2!UEZVqt}K}ym>qlACD)C1w9 z(KE6J8!o>V?yBvuhBm@*(n$XHq!Rw*r~VMN1COCtEK@HdPY9g*?oXj-;|_4fh@S!F z)o5M|l*5adCXHIWBFkMxEfrX_lLd963xlqV#JL_CW}1Lzn-HjKUk!CXX!1$WYi#01 zMTWZGmUws17bTo zCfA_Q8FUN|MWqIrHj2@Ini2zfHO+bhr;ne;#Mn5-PLJXAv6Gmdn1b(mh{*Gih$E7^ zNvOppqA;X}XRhyp8|3}K_k4t5Kt-9J?;?(g6aauz`vArn3~nOyeS&(=`5Ml3(twZ(aFniFThAIgkQsYu zo;?}v|K|_Z#~=Qo7e;ZH<2b1(iWqsU+zI_vsZO6}CvGXlF zbBzhld#h>Ne=smKJm~vAYsSFk@A();uX?^F%&8CfDtzF_szae#2eq$yDkN~?0HS6E zJOA#Fapvx?fkgpza=h@_SK^)Te-}pAj4FnJ6wvEe+GG0dqyn`@>Nuir!`jMyG@#J3 z%{pi))3<3S6Dai3y)Y8?6s=K|JUUfD*antbQLFlp1S+2EVR3E&^D}c8J2i$A$4_Ev zYyy?pC898Up4U2OtyWFMBV)SkVxb5r$nzo4u}q67%|ZwYXLfa!>7;WrvuHGGbi7o) zjN#|L0vm7nZEBbX!_>k}1`Waz)4LzS{=a=68Vl11eGf7YG4QMxm+o%%$XKq&lxM1#E5Wb;nfAdAqJGB0(BxFemnj z(~sWep1Av8{n}zB8wS1|M-fXp*dmVOX!-qV)3ENYH)@|Q_w?)rAUng<&%#pcgw&qt zmS$kz=^Ge$Ruo66FbrX?-hylX=(9-ojc7%1vaKzy3KOUfhUzufgqQUOQkBUwc=|K{ z9a9h829q-kbDobcK8ZbHa6r%6INvDZ^Ermcfm!r1UrE&==$Dt73{Xe(|jam)da^RHuuz9&1 z^tzj0+uk}knQCWGV(+K_7~%4qb4E?o{6Zft{OvzQ&z6fJHIf$9k&*>5$c%PR8bb4W z+Vd_3*V_{$c+_@{$^LCDOF;F`QH*)zH7Vwq-qPCC6$|wHBUv6!os?(3`?+Xo&yU@i zvuCC6dD&RRrj#JHZmPKwaV-eLJ@snk^OkLY9YD1+H2v(xF3XiV-@-HBUSe9-N9~j| zB00<$9Odg?fy>_XhtvSe-iBWp?C$#GtvP^0aLq|qed}W-`W@IJtTCmMh5}im_`TC zw^eg}y@X~mQOu5o9zTRit`U`->1R?pD*{0jA`W8so=4;Z)3!jbU5}2RDP$oTqvmx& zNCZKELa{)vQ)!!|c0T*jzr$VMyd8iE0S-G`z`5`HEQ%Y>)w)Ks9wtH``#<{uEIf4| z;=l)DADKco*8TdQqVK|M0cdqJF#vAz7Asy8!(5>zSV`3=Pom8OkJWD!x=OSTE+*6I z)Qo_S_D`CnwTG2~6(6S5H9?>`HHO-u$Kv_N?(k>!J#NS_wmi?}Zqo8Qmn)!9EW*yD zXHOhD{6G+RpL0^Fy8%R20UBsxIIgTUW_%y=9PryJ(;*b|U=SuwcJAVu1 z-fpx^K$DJ9x<3}K1kO!6NUyZ9jbSqLlL+#N% zDKYib{W$i8zd&Pd5`KLVPCARB0PR2$znkBHZLj)Wz)sUXrV`?eZG#TMVyP?tw( z_+8P`#OcsUWu3tH%{U6l6ZHch5|FlK&-RV3UJRr7Tc`H!{XBppouR1H59b%fHl$LS z-|HJ3d>NSRH!TZ>l}2`%>bmt6zXdB_1|TT}Aixl-!Z@Ws0H~W!v2`?%N$^5xR!M>S z%p~@G>7y9G?;C)OVHzfGxaEa-^Y6Sl0Ug~vQeYz?RTxWk;ACw%m-gtEWNKX-U_gJZ zdnCGtCD9&M(_geB4DGk#dksWdCg?LJykV91VM+y|RXnN#r>ay`>s$Y=5K|LT1`;xb1q+Oz@!y>VIloNF~Wx|iKfbym_$dRVQE0-{7iC8!3e zI&}vA^l8jL@?GJd+7r)BjG?}`#D$RDb{rPRF?F)FY)e|Ez0hnnj)Z}~I|_nt$1=JX zK+qY2IxMwcG%FaE_4%QZ(VMfmT&mG%pwaYDe%6a{!K;4lsAO9To?b-*yOayU^;hSECi+=sTC%usrJ1c0^utNS8LC!SV&OvWR00K*uCuOoVoprD0FqfacrD( z<%M|byWWbS(bZtk0B2>7qOB!?T%j;jDs^SGoraPtlc<@>`RLp0G-_J3Qeo%{-j#0c z>-2n*%I65F1EJE>Ul|bD$}zs34?l*#`r{8{ab^L2BuQv<$8Y=zHoxT80O%g;*U0TME=(iwD4sIx50E5ydqxVWAQ)_WV8fI<{ z9Fla}m|@Xx5u8&qIl};$meWyTG@j6z6I1Hbx?rfe&xTsB5kQrFPbP&?=IxC)A_l{N)A%mh)>42kqYl%I!3^@PrvCrW2 z(NpjRs7B}fWrcvj%Wi~(Y=uUH#To4T!iO;Pqtn-jC1ZvUt;PzZnBV1JJBR8`8WVT_Rc$1vGI_;3t8Nc8qpl zVOlA>h5Dojs1wb0MMt?$l|B+0zJv5OvoFq<~kiP#8EjydL?X_4Jx&3Iq%c0@Q#m z3=qcxq1VL1-bdhg6_{ZiEb_^lsxB_XvuDPQC=8htLi-EYww>tC@|YXE3CR`$*W2%V z?gIe6p33GwHxi@yofQg|1lg`rcBQtev*>UoO7(%z6o!C z?>n$*>n3nIz)Hz)-RpqfRIMGb+Kp($ljCO*1tEq7*amW$EP}puxcohzfKx0h4_5$S3RILljb8A{RESj43sap*!cm7ZR2E8S2?% zvzVySGH76NY7&-VqS?P^Wma zqZZwld(o^_VCTDFrn7)) z(J;o<@o#+=19^i44(qil-RSO84Z9zIiW<1B8e9d( zNkKPVBSrPAQ8K-t^(wjEW{gotS?pV_3ar1i4%m+~CP!^@2?O zyzQXCR;U0~yS9A*tYrGS_G7ls)l31Qn$+kI(n=dYGl9?k&1dobf4&uNt&WtFhGjXh z(-{n0^AcoNtxmu~V*J6|i73EC3`557xPuL^c@MhRZPUJ9&NP{S#Trw^!m8j_Dz>Ap z>8CN&RB09%f@%eg$&)C!vq;INTdP$ob5oOMy;9{eikOUJV$NBdQJBoF%pt5*P@Nvb z!sG-NCQiezEW%x!gIBGfK0kxT(h^AmF*+xQ<2Y2Sgal+b=b;dy7KP#D^0Z6D@wW}b z{48VaA9yBp4}jUu5Yhphj{WR*NC>ght=Ef73k&&J2%GLX&R85r%y*jzYjbc!ZUfEfaZEmWFOGccb2##~kE6ElAy{Dp zUcHJqj?k>t=!w!aO=?p1qwo9xGYg9t93DWayR5gWW;zhG7hSTp0h>W@RUJhU?z`hh z*!RRPuo#$|oWY(acf$(<43Dga?by&gCbn{#MSr1R15>ZnT!ECfPBR8INo`sCHa{`_ z)H;5xTEo}>Pwu652n-C|FcHd_+6%0C!Rt`y9VF1G&rIOhcRq*a^cgT2 z!?bMV&$%3%U;JijOCX^<7b$hkF$Jp%jI^(Ww$s?*I#?-er+H9aSO&lEql_Bn&W=Ag zH#770g}J%Y^`)gHNXDWtaKbP&J=zr@P#k@2%68O(vxvX%yRb zsKa9v1C2%Nn#Uy6&lvs_~hWx|gE_VU>r}oI8tM zfB)YxTI2{Sv-|J={&#OiBI!RcvX0G7o-Il#%K%2Dl-o_i+?37ca&a6Fgd!R-Ow$g7 z5T;>N0?#`O2H!Nyc_HPaaTHGEvW2CF+t?4F(YgJfxyCLjmOJ0Ve_i9T=dTu06r{v2 z*|z;`CzU#nTV_E@VQ|h3)3ms0+amB>3t$vh0~ktOC6Yo}UQgnMVH`pvlKRzpMW!;D z*f7od$mY$bW@l$lAKtn1FN=lJJ^(MV9OuL->PW8V%5cR@2uPhVw4C0AKpc zzsCIZEb4BPm~9vT=~uD(lILK4??ZU%uii;gE@2qJE|hTo+dhoJi?2_}0lF%H#i7?= z0T4o6e#%gJn@DIy#QH~-N|`4X3Z&endF=VyKg8;igS4ohz3WR~cm;rmv4R!*2U(-u zFn!^K-UnI*!akL={gPUU^uHu{za>M9_1T!o% z)z#f&rPCSHG`MM*wz0Idz@(6IBw~mtc75NgbIvCjXKomV^*D^Cc`SEJj)wygKM5f2 z$`$NpqjBTNwyp2vLA1g5y^+ul$j5Nf4mMqKE?)kcTX61$=Mv?$eNfjKW6D-m16V#E zkqGYn?wy#Mo`n>Gfb!LEdn2y9={i`pr5{UY%B>7M?Tc4Hl$Ch_?aSo<7T}r<7t6qn zqlb>-j%9CV*F6uycG9Ge#tlxP%Ur&QRa-aVrN8<*T>YHqz-=_}2d{erPV7HKg`YBx zu;uL^#ptu1k9}YIOPs##pJ3Sz>`V@&bFab$zy1MmYCWKdaJDH>hy*AcQ%Tl9H9ez= zD*~MsmQ%;p_4*pK6L|U)zmIa-K(`&v-Fxe;?*j18om=u3%S_MrI^V)Cjx_=7!SZAn zW?G221c?m>H!>zOE}fm2*kD>#HrLgaFAWYjmC91pHY}GjE*p*dL=;DpreTD!5Ea|9 zdA}xBu&RFn#7MDhm~yI&=(`OD{lAf3MEl zWms8;hbA@q=?Xx9mSy^RCMPDbxLCoh|MGS0d+>2mj~0xj2CBqn*}@G;zb=e>CH!JU{rJ%K0|)ab6OSR&S0vr(tR_K%L> zIWK=HuDt#^7+$l6Kn96aV4UuaxS{_rPt9ysa0syaA<;=ZDel= zU4t*yJAjvqd^zYHIf5K~;X@Ioi zxs^%UB?=>)J~f8p$4}w=U;7r0KD8Haqe(=7TsDt#sT;LMjf6LgeLcARrW{Jx#w zripZ^538U5s~EoSr7$^9`u*#ybR8S@PMy@`j4PsmDiBrgRV!%SbK*>e;oRAA?E2Ju z;Z+u3x$|eo_U-v+0PpSG7Qa}=p4~Ux`4&3%ALs43&C7k?z1T3VXZQ5>T?vVNHk-A$ zVX&@J7uKJ%5u4B7hI7t82djn$soN!EOa~pkAaaFeD}aT*&B}E%?HW#ay1p>G98!A+{K`DiqCRta z@2)TPcK5!gqhI!mWo9*WJKsXb{-Z2}$sR<&o`RGQ%uY`|FXg1KWfJE&nRH(mM8<4|Z~ zen8=~!1rKS7S-aImPPwX0=0;MhL~ke2KiEs6bNFf>j4$$rV1YHRjbhqeDqy#Ez+w- zH3=F?prSw~YUOIwGJxhOiNHl4YjgDr(&U`xm}IL|5~fG>Ue3%K)NzlU9qJc(ob4xzqOg9=kI zFv$ooLq7mZ+6biV6nQ$$W*v=c6^%*-j%gD!jq*5Bf*S^TL{tZp&cIHkkuP<_NT<;~ zyc)fuYq0);i{MwQ;IW|fmSK^n!UjrE+&Z3<7@l*Kfm<4?KqL7oUgAue}oMw``!sZ?5E6UTT?U>qR1wk|FbMN_ZT@ObN9>JNhGkE;|M=*BuII8m%S|1I+Qo;X!Wg$TOg>w#O6vZKxoQ3 zdblk}@-rsa+LE`a1F3cw$~Z&IYm0&a!UP!D0As8GV5xH}bO5Jg9s7^8I)KN5FgPTo zd?1&}-8efl{T$OW*M?!h>kD-p+PM!$p4g8yTi0Xt`VkC{3}a|?82Mrz>2#VrAWo0d z98!t|RN7c&`f?~Q1ds@Vur*Z{76AzyIdl|L)6>}V*i$&Q_b`-GWME-&9wLn4dmcDr z1QMR_fgqxvSD^PW z7&5smG0dVkN|1sr;MKeB}!)$SCEd8Bd~ z^bGf-x33q)QjzrGEZd||9Os_0^%r7pWUabNWuuKc7R2pF-i68qBg~T$M9C;>@h+sKMcU8v0Owxm)&{#T^ zhHcu^r${meKlErYFAcB8b8dMxR&UruN&ajuk8~~v#u#}%Q_~Z4J|Pm2A#cHKsc6SS zpm)t0oZR&^@`WzAtVY-B1`!7GUCIlD>U(5xNDkHYI`M$C5Si3u>=Ym=uceJMq12@{ zLIGiF(_qLj#+hlFkkXGKWhkYvI(N@6mYJP`-;Vv?n26nC(`o*$1g^JCi-RE>L_yJy zf)w0F#3K#vv=HsC=7{e3`XjhG#60}zv+P|oT)~=2E#Vt zxlLLZL=i0mCvc$9Pb^}j(-|~f4^b3@fm0~V^F8W2V_7y)xvg{>#Y~#cn@umzd3XdH&OM*PZV!F)t3>@Sm%Gv1zY2pRYgC24l;E8DyU-kx8j8^* zrO>F`Lc|1u1DiLaURy#2fbFEfyLw>fiU|Zrr4B$KrT0BzP~kKV0GjwF8SNhm&BM{u z3EKMVNX2x6NGgS+5MkgVlCcOpPcX2~4b<^)I@YnD&I)9_W8P1PYl<)}EW2 zb`00$%f>9rCS~bVI!$d64ATNj9)T$t&LM5bK`xgUK@dO+A&Z$bvmA$UgK^JwLE@o~ zgYLdQgkFHoVCQX{uE!RS=yNPB!N{bM9~eZ>&=7hDSA&>iaRj$s$HMG1$Rpqk zhV3Ag&7!w&6-vGRbbU@LO~)y9_n^MGgx&Ytjrqwl@VsLeTt%fcY&cipBVAyF)JVb=G-xj}=yZ8`8f7v*vf4eCwTr8WoYY!(ob8HR}< z^bH0I6%oMXas^7T8-|TsK2L*ZDwCu9$f|NT3d>XE2Uwh)rtM-O5O{S^$S4xzjfhwv z3`5#SL=i;NxGkG2z-u%Rh5-%2zVB0K)X?|I6EO^ft|470V$&5@V`yXz3SA`v87U+( zNwVH{96J8|{0y}P@LZPwDvSd99ENGawjDZFmO^_*YalL^%2+kJ7E!YS*KJ_@B!L79 zT@Iv*e^K{JAqfOqc^g_K011IaPmPvm3q@?X>rky0VRZMk zyblhQe_>EeGH4Ptw4MOSfbwQQprv_3TCPVI)oyhK<#5u-Z@n17%xO5bX*q>_wmvuC z8Gkx})3J`NY_aqV8OO%rLepZ5|4P1C94hzpIw>cOMzaA5GjWDE42e~h@9qJMWAYxd zqpOkWD!~9yED>;kGfugRefRzd2m{2NW8-C4(g5lvwJ7OS1}P_nQg0u54yJ7*3Ip;c zJm00ky1KXsw^l{qdr2DwNxkl;PMshR$MswcZPVMz=- z)3J%{Af-TKVIH-`1?0O*fFd;zU?u(e69-|Dyu+xmI12`S)*h)tE0TKE>L>xPS7`7ZI-Kf`L*(scN{f*=a z%+5}eS5qi;Bh~8k37955`BQ~`Z|^D;3SE#=QaI|VyYE14VGg;TKAd~iHRu@_qQO>` z+DJ`=lXFfUlNSc0m|U`L^b8KcFnAJ*0wwdWy6O2z9z+sTjO#+41WeQ8WBAe67r~`~ z=Qb$^(pB!JYZF4ztpFr|(+YdF+8slJaz6<;&@#?AI0Icz7)Ic997*4SFbs^JIYs-q zVTkI|5(WuW2nAXLI;j^ZJvRbR#jHa@CWvY7I0n+W0!lqS7(03xjmg7sU7)slBb;(C zB58vs)MgVvj22Z|Q;r6ujp()J@hD3G3c878;vh>rAKI5ikwl}q2ulW723qd?FZQme z$891Ae>=N&a>+q+q#=Odpe>aU5(s!l>i^}ZAb2ha3B;-GwYoNUmrG*Dw>z~yjk4O8 zw(4s=(#YOT)>&K1eEw!;XOAYj-!&f%|ELd3WOxLFyvO>PxR@_~`10%f%X{~}4cxO{ z9De%s5x#o(9hTqRC!3heW{|34>_$RB)WrBh)3!9iDJ8C)e|i24?Rt$M9xwj?kE`z~ zMV6ElY0P9CPy$=a>vf=Zov{IByB?3xE8SqiIEb+o)x3z&du}p!yYKL<2Z8e^XW-|| zFcSiWI0xmP`LWl8Wb8$gf;*xnvN!+=!vfwbzaI%i2E2~vv%8DK9B)>ykX!+1Ha{M1 zY`IN?6EPqK#PJ+4MzSsuPj}&E&zxlU3Kx(6KzDNue_$m!1|!rgUCKLonii5YgOs97 z60j*}rlh$)buD&he`B-0!utB!dGB4)^!@O68USaILEa)XygybUeA2c%5%GBN^DnGw zYag< z&p1EcifhHWmdCFqsfR(6j3i^z0r9HnaI% zGRk(n!ZN-{r+TqLuIg;b2fb=purntu0IEeLX-e&ZO88mvLJ)I$HQQxXt=it{KvVd>J~*pvCEkTKWnkkLK< z^LKk51S@+!fDgg0BQS=)n|l(iWEXOKbOEc4m?<8eK@ z6DZ6o- zXXAtb*S3v;oiPrv7)<^JrYnE8`~uVIG1Iuu`uIn(*ohhcg0;Z1!>YRGSXJ0>L>@V= zDEF_NpL4I-dk<(?va3A!JC!eQ)v zefL*;?{Dv|2*^r~_X>e=mo1$?OZOT9gM)D@GVWYSUWHhVko!lG(mR|V7EwngrwF79 z3QOnC4}Slbetxy?B`cn?>q@i%5!?F5%#bG%xK197QdsJvMh(>?$vAHeeh@SKt;6NM4D76Bb)2m=;~#p2}kh^vj%>jVlH7cXR>TWdF)2X(Lc zzJW9LZP}6u9I#-apRx;(*(d~pybDe^5R_bhIum!Zpo4gT!P05O{Wb<+Pq&(zPT22F z1m&{YYQnZ<;cUs4Tvj~Sn<$klm13#vxSkKVF0$7sO3-Sz5XVu@8UY9pRD|F*5E%Fw zAlOtYHPV2iC=>+?TN&Dd7mw%vxHaXxQ512|%1KjWoup#@42R4G3PF#tAIB)|W@}R@ z$Urn8-C0g8=d~iVV23f1I8NleJSSgMopR_jl{^^`m|VW+d}PA;73LPPLP5XPVl6af zk(FoC){NkHsazK;4p=e;@41{W+mB^^{8|l#pn%DVDZlLcbEoe4$BzasmX*raOLLTc zO=06V2?q!?{n&z1lEMOtB^vNGOu$zj%k4tr&OrU*X?VPELFz!QJC1W~3v9LkXG^x^ zX{A!G*0NGF%S($ob6HKz&eLk4d#u|rK;k%tm1W`$DS<~LHr9zlkQiD`tQ!U?31iSf zjx!=ICulzXn}kSt6(va56JMdJLTxV{Dptmg_{#TzkIAXo?7FggX0&!7780z8>rC5N z&2W&+ATBb=nK4RVL2`EtH97(b6N#oft~N4~mEvI{Y}oB!ZFz~;A?`!Ql2V;WIU1gi zb3%3~!z#|u!cH+X+N*K=LZ8~MUAMw?egJlbFwq#52^s>IOx<8Btb*;5C zH8qC=*WLg{MF_@YbZP?HRDhC8Vv`u5Z2%k^?N*cSu0~@N_2E$9fwGG-%3gv#oFB%u zrA5Iz0w%7p45;wAAJ=2nl?dPs2al)gs^7~j7E-fIUI4L@av*0Jcmx9irHL)s7!E`X z?VD>g*A7$ZS$Q7I>vTG8Rx3Dv>O{_=rEDbu6B`oY@f=W=G-2QYq<{y-5@TZ<8|z8| z72R&`o$EgKw>ul^x24qpJY`*K1R$|aQd%c=H56s5PJ_o-izrIvJ4n38y6fb#rUl#U z_p|%t_FL`93;dC-zosp~*^(`JT1nF6CNBv1bicZ`OtzIMbq-c27Nsn1DpA-32(t|m z7#|rM!$^IUWpIXbODsg$IF6$@tReFp*cn~3f-FJWrQwFS6`ZNyX4dm3=G{` zE3jn%``8o;d{0m`4L%J381V5W9wXO?)aK2=h+MZY=*T$Z9O9B|j88z=Y`lim^Jk$` zf{|Eyi$~Xm;D!WvQf;KS-zBg<$3FJcp{*_uCt!@iR6r$PO zM6=yAU0pN2^rML(+m_gh^H;TpO=3g*_dITG6=JqBKF+X@l&y(f~?| zd@9Gbw6<|1>+<49XbS)`r*R=VDLlwF$_7f>eWb*djN?^0~8UZ*H*UPijaC z7NE3t{ztk>_B0;!6eRY1-pjuNooWSYwh5!aGf8DL_fPok-Q{ya z79hCT_pqN+8GwCt1Yp7xRnFmjfCc8u=U?$0jKv6_6;G%J5Tyf$8mUg7xxVnvhXZ z!$znDyi$J0b3h}CLt0#hHD`AQw546Ue!wPajgfIoj7(U-)0)HP@Nj^j>AF0RhGKBv zy0Zudvach|GG1RU9uyP;q~P|<)x^F${a(j_ja;wHFEJpS=*nTOD&E^1CB0BC^VsI* zdS*GgQ4|#it5xvX@$?IcrvaTuvir-M$v z%eV(K@D<%xfYdoNqVjGSQi)@N3AItNT*0W_1(Q%IxM1gZ-7M*o)ebf`*QsS4iJLew6gaglC8ITCIZ9$e1Tz5y z$AXiP7ql%&!;!M|&c^y0k~pDT(gCRKC3a-20!UiclR}F%Rgw;< zF)7(z$#dO1v`ap6^6B@y_kXNiy!bbzQmNm_;ysN9>bi$BfBvg@^qoJ2=BdZoOUT{= z>t<81BFr?Kdy@?qMjJtA^VAba`yF@=Y1(iKeowaQY{`~9ja19ku;1;imy4A& z%ULN^Ys~imKxHS&HP595Ec41(D2{QJ^}0Q*H#czM;yEUcuCFYS$&{K($pjP;4QaGS z1)WIMX%ia(v+`v>S{eig1q!$Ef7Zfb(qwmag&VY3Et2y>%P0}x06=AKV<#FG1iHelLU6Nu$+QsI9q_TC0lZN=@0s)UZ?G^ZLH`p z9FXek`W}QXol~%|3ehMkD>f!FHaUs$iAhXP&7o4RU~_c^oLgE0aJWt`{sFKpfLJd! zUZTJRREf{f;xbC!S|7QxFr42j7P8|QoNrX?MyU(Y!6$@^WNXW<3r#%{lPy&Z{?hErD@9^l=C7d z8hNIhTPUKvv7(1LLD_?XKKaDqUYNvZxBjBG0B1|KKtFs9)9(2_{G zv9Uo{j?jKhiG6~Ftz>M1?GOd-2L+5xO|znKty)7N2+&&JU`D=4*c9b276v%*6qS-i zAzOA>f^N5Kg838!h_Kro2Z>l{-Cpl0<~7Qm$H?Ir40@MPzw_YW5XAW2ad}N?YV%}f z=eK8tPg&l_Q4ZN}EbqfPwOA}JbPgoV`#cjcO@yj#Vo0X)fX_O0p3@)nE3V^Kk(W?= z&O72k_-(yr=i|`W4E%!5)?5l4l-n0@`uBex55D6^aPfhUA?h}zoR7`dk^EW2rp*C| zsVwc6Yfxh4g@ZxVZM9OZ(^Ff2QConsC0lY?iK8g%C|L;#1(gN(eQEv$kfml=X(D1J zP_yT#!j7UcHW~9?v4~Em!vJ?{b0ZtMxQXcWTtGeW14C~%EHG%xh|{zpN3+v8WE=pX7GN+9*+4+>Qs-zKHHX?q8rE;@5Togs7K3c!iM%eEg zs|s3YK#}YI$?dS@1iI>64xU#?31r??>mwv$RBJWVDpfU{Ya~h2(q$U!eb{xJ*Q+S~ ztuv=jo>*MG(8~b6QLAC1UWR}65uE&uAHY37`C1(R``^R*6ZfOPzD$A!@eQ!$aFh%I zq@dP-b_4DEe(DE7w${LNz0THO)E3}u$(CGJs@2;1+Tz9Yz8^%HQm)qO5El-WYL1;I zNI_Oxl9=2WYYEs`hvx;EyDn4qj6JY6nS95#19=fL0MBKVy8xU3j95ir{Kf3c?dCYs z`Z|ks(88gG0I;_Ypc%g*pqLUiW^P(Nz8^@8hoBBxD_wO7U`__MJIuu)$YgWb_zbtnHRP-<0U-l48mV=6xeh$fClk)~ybRz9uA_GS#5aGN!c)uI zW~cSmwdJL6Sw4UM-RI7oJ-@hkzF(B?HSi|W*dpjQg)qjio|I2sa_hm}-@EBqdIIekqK?t*rAcz}b>5xtx%;JMfD|X9zqha|01j zOyjULZ#me^exo2oahvxL#@XofG-<+~>%)O!aZ3f{j#GI{i|wTa&^W}};5IGWm9XX< zTX6uwt}}|dP%NS{GD^kl4~GPRasZQWQ=q|IA8`*#{D^?S??nhg1Ri@G79;>jwE=i8 z2H^m`UJsk=t1N(;2p!syV=T~^_c>~`tWjDZNb70W$vS`1?FR)i?-YC6|>>uO0OIy^_|N z27;pNNilvvWetdu*T%i3O*wy8TtALc)BxiyY_mK%F^OWK0Jsi&(>RWj;n=(uSk@av z>^24D@^x4NKzij!BQ%ptY8YQkR&B4XW&06yT;kH5RM3dzxVv$o6V<%3>L_a|?Vk$qz|fXWjL7wTR!b}_&h zl3d)zCSTg!QehgnRxuMC_%2ssrienV&Nd0OoZ{44845;RCS%&oj;R1G_0&AqT4Ht( zq{I!#F!}#q%TeQ3wBg=>vGr+|>M!0Qe>yC%@Wjb^c=M!iA&VcK1}b)7glks6XiU<9@G` zdJZc{lW-kF`dkx8RoM`vvnNfa4I8{G6^Wn-!9nLR$^vc5LD0-kl~IJ@ z@EZ%9%NNes>(W9P@cmqe(mc2lR5J_b5<0gdwDce-px-BpFi2TeC#>UNE-8Q`0N&B* zwtplV489R@^3!o|@ViUr&b@o-{JEp+%gd)Po1+vy@r`@ZMLp65kK^y%UF zB!EY@{-U-3XG^x^vf}%Nb6V^5cDoh#2ffTHU`c%_P+2O{q+x>V+Az%wK$sTKw&#ta zLY$Ft0{I%kfa)Q1U;DNm5M^_&#aOuJ7kS z(pDKT{e6U3kaAdy1ma1w*Dh-lD+M`vcD2z!rCQ@To2^Y2@sxF%;{@nU+{+G2#sDBL zH80nSn=UrT1zTCi5q#fw{Gkkwo5sJ6bO783;14|C`zhr(->J2JwNBFi((iPCv%R+Q z7tNKm&$ZV#AMUi;Pb6XdiOu!(pLbp77XU18{Y8Cs$yRBJE&1mc8wdxf-dIn2-45Wm zSXsP)(dikiB6~_I$72AM_i;QS<#^5y0uKKcg)RXG^x^3lgn$=z5-ZJr@~G zwzav5REkML!901}GAy>hq$pq$w@|Q(dSTaY)EXnGkBne$VLRPiLS+`^Z*{qyONsmL zQg@SlmK>mbTWV_=ftF3h_faX=XbH7CZBxsQyIJNJ3yn$-9}W!zcKmFuD$7y>G_9jB z4CTB88UcNny#1)GWmE~Eye0F4$v z;{M>iViAB;WCI9B2E87Z&Yr=><{INsq)|hvI}3A62IDt2Mr43T0PxaymA!VAYw9Mi z+`n9@WtK-~HPOxZW#E<#MIh@8HOT_u;@zw;->aO^3`Ji%M8y zIR+Y__@-2@V%z?MIPt*e(djgC=GYNjbK4zsI|*A$TyOv_5Yxf{;P+56Or8rz28>*f z*@G3J4KT1lTg3PVi(Llgs&!4JDa_0c8D}Ic(4v!Ji+iR#A7@6c*;}rSfU>|u;F#OF zn>Fc@G+`~ZFbW~@9#&ldV4Ao=rj)fwUJq{ox~(Qw&YwjZ#biZomR_q z9d&xj@q=J12WCsQ0B1{{*%GI5I+Xjn&F1;>v9a+ejJ(eJDpnTHqc}Q}BMX3%>q;rg z(+1kjR%tz58yja)%cvZ7xfxraFTub5@&EYwt!2p{p%Y5~M06LEOJzGZ) zN7(P7zqyH}*(0>Vy3I}0M#m6`Av*0gi)0pyCAz6v>uX5k1Z%Bj_(2oD_qLxyrBXqs z+sXD}ZcKO3r}b5>R#6NJ*jQU-FrF0$f&e@(D`@*D*XpJznob!*LbWl9k*q5A_FcGm z`UDzN(-@nYLDcIJggYBexW30Y(i4w9m^G%O>#?=D#u{@2mW4?PwoAv4As!5P&ybLm zL9#{IYN1>#0#F%%GO0C;227}RR0&!^rD<9n-q+b;tn?1`KSxxr)16QXzqzn$*Ne)PN+V7Z?7Zn#Y`^MikT{^V8CGl%e@Lmu?92k6 z-i0(^TweEo{3AH_*-x`_bi3QfzT2Oh0S*;wJm}-pV~;?GF;PM3jCel^ zr7}w83ilC2K%em}x(^YUmfQ(heV*r;gj#82XQ=6}J8%QH|<7<8)ux=8*0at& zXYY@;|Gu+v5M32B)0gDtiE0Z>QM9_z;xMV&g)m$iGnXe_wV=`v5}RVx6lrlulI4m< zi?Ct5pY|=8F^On^d~Z8_1kYh(87f0U>pVSXHRA>ik)(P@1)`CdSjx!#=Za){${ex0 zP>9Z6nnyIK`ZxO-f{j|KRZBS+&^#7g6!f-q`)nS5bP)Ay{8yTnk~KuOzd@Jrg{U;e7OVO{6{*fK@M{C)2~Etx|@>ZI#>-+c>Rwmx9UhP29Bb27J* zoB?V82Z%cPkufAty&WQ85vUHx`t`}YB9fuIzQF@NZ4BPD?j$0u#W3&Y`&7n_?zqjr zbE&FX<@8o!ql)Xtdw*}1Csu_lzkNeofJH4(ug!0251W4G7qvR*hvsB4kN~UZ+eU$5 zm95pl(#{dRs6Uzx8}bg<*AbGdgozB=er)HVt|a@|<;XwGqd~1=h}x2F8H6LOIB!i> zaw1mY90dd$&7a(7V!mt+c{ zzv)8Vl>@NAI$`L3P=I=XPIw}=@`SIq5?iW-Ywd{NZ)UJroI-GMY?BQuG%K`djH?PL zE#}S2b;EDI4q8LtMn%RHn?x?hU3x3m$m42ag>DM5^IO0HaxNFRu)@^W8;QaY66G4# zHpz^5bHa6-;?!-IVdV3FNwDSqZs>l^Ho!e!rlz*AIB_5(CLO686p|XDo=ZHkh>fI^ zke$3uq1Q+nH!o6ErJ=$LcHg3pMW=3JKHJWmi?)`fE$00g9ws>8Bp}dmZ_}d zXNL&Z$q=J~*PO{ccIT2BW)l)hzkA;E`2^I4_kRsoIW*^;a?Hxv z%rPO$qN2}3A;biLlaRE*{r;E0tHAoUPM4E2&CO#(%)3``dUZz~)rTIPZS~GRHlnZ^ z62gMqudr``NOy>p2kW-SP_cVxP0iGkqw*C3sA%5ECoDzW}W>!eZ_JjU+kkVNW zDXWt~1&;AK%z{lo!d`cyWZf&hsO=Y(;u7G&xV3 znUI>$dXTw%14__e);dFe16WnX45n&4<&W8LK4nVPC;r|mfGf6w*1 z>~P+J-HA@L#6dp`6ndT088DM4hX>|toB5*KB~6qHrNp$4@`&bm7|Mqw5KEP=FQ7FD|n8ksp?9n*5k z>|C{(gCeqG;9PayB7j}?h{>|}2RAKYGv)}1Mn^c4R(}($ z7UB-G*U}FeAboMtTwI9mbn<9ud(sC4AkDDTEmzVb7b01`BZImCB||PxtRUfV)m$pz z?uWkO#3L-NM)2|q&nWSv1n?e}G6jigvO&kSTT-wLB*}qQM#- z9(G!YHjEo<^FGO>c(X*}iB@`1?`-3SwN4oNK8nHN&3n^D>+Jw5qbQpGYmIM^ z30kdOL>FRIF^d7#jJm@xk}83+ZF$WbG*6@}Bp*yav*N(*d@;!OZ{7Z1JEYe*8<=F{ zLF!h}DOsHfV3_!WkFR7%eBM@^M{D<4q)L7Gs4#QpP7op!#HOE+e%AF&Aox`NlVYj- zZ}^*30;Q)w-1->aP=h!-?r{xgOaMY}G>{Y8DuA^2!yU12jwL5L8gPGNM;USz2=Rym z*g-Ku5wW1#W`+v+Xw%RzuAJ{pc||niIICoh$|+2`6|TH{j%H}mwP(en%`Qpfb%W#S z`ZLsMW3xn{m~9x6u^HMwZJTd_+N;A0=V*btxla3P14&QYkJ#bFE=i0mEtf`K)*4sc zT~(9;!1@7E#aE3wGJjsk z%igHNMsp)+^z;3a(TT^7>Y}-8yEx~^Zt1d_ew@@4M2}G6iF(oG9Q+k0L`c{bTGISU)OHkT;+rmlj-v#& z@nYEsadGGdUJ!RSvCEVlVLsh-r33WH_0635l2SYy7nQZ>JO zW&Crg=Xr_NAeMFNhhGy! z3KvB@e{Gy04Zozcb87b5L&7EpY<$t7b2d+>@e^9}Rqb5>1y_gJRU>Q!_ufZd3u+>u z@!%DC#XZ*kS^qsA!)tCv)8Py62bQ!p~@c$^80K*mXhbR~L z!_G;^&iaIzr;3$Z>l>F3IUh(cnefJ;Z}GDkfuYWryW5t^By-*Xe6nqNO)WC!9$}~} z$Z?hJ|3}s7(+d!Ys=Ga0oli>l6)#IB@Ali7*L1Q)NqKtqHSp3iO!g)y9s-5rsU=Fc zfVaAjjpuSdiL6hnxC$HyeP%=DOb1nB#K2ii+S3|I%O_MzIeZD6Ts1YLthF~O2$YIq zWHM_<>sXzO@!pZ7e5YdoBFUpfB@g?}=^W1C`T~KNQ#s>@!`7m%#v?wA;F0wk$*L?N zNivUDfMOf4R+VSBs_!)P_}Xt45F{gd*c%&JU3oleaC+zS&4#INP%)-;1$!3(%1LK; z0bmYR9qK#YlC>?jIp2lnla+vGz{Vn~G z^VT|B5hzjmoDI1DADkAM{7qErfbyxfOY}qfC1iW5%Yny<$YQZjy<)$;!!T-i5Gr}+ zd0z4#4>v12JHiaIvdy>nd>kqG0vSD}nu2||1vsi5^Gjc3R>L6{C=e?cqkhn+8jNt{SPj^{2`t0uHaB^*eO}ByQwhn%2}oliy5N`K-S21o|W#HC=cs zgaS~FVO<@9*Yy>y{@JzW7~B-{J-6gETDH2TsR{;?+9!jAZ<&}DsW|}gKeSg}YGJnQle7?=wyOnK{)Z_Se1+}H`VJSce7%{9wBI+SBfsy_0)3R@ zCXlw-gW6HkhGSh(-picBi?Z|ZD1?Ohh>56PR3pw457mbMAX4AzFAXido%vM^ zem+2?ig1B$0e}w3=Pzx018DPP+27f1yIQ62{7Qky8z^WHA~wox0%jB&`qN?5tTTj)vLX$7*!yk8q|t$;6CKJ{h~Vs1Bo^T58hV zJw?lQ$i#_TZhYqrR!z^F2oNY{7mc{!A}2G$u_!hec}3pv0{9vlm)Ig!KL20QXw`acKTe0h2KaAa z`}VY;VWGrv55I;!5#tf!!|K6)&NX|_{?3+{ zsM360)5WH3XD*?pu6N;3&k#U0FmE?p4`8cvMrVMK0G-!co6^h*8nB81g1;cu(vBbQ z;>D|CAh16cJ?V(ZlugD>Kat{&wsl>9cI=J$GC|I$#tR~4z zmOjdv;OlGiQUtpcX=XOkUm-_NsSt$5Ho(1taF8x@PctNxba|}lLDltdt@=JN>HYbz z4xLo4(KkCq>a;$GE{Acn2({iYpeYYPARTkr0Kfot7hO<*3i=8-Uouux_{!V(ZV15n z4}j_ZOQ|r=P(b^tWS!ByJGeK1&6PAaOe??PD+&~FY=xik9;#F+Un(DEw|1-=P~sXd zX7>pJ7X0O90Mb%@W6-v7nz!#$TDMZ4DATlEd(!4m_}4fV4wPo*PPF_f8ZFk85}zzz zJ{C0yy)!v->qOdq8RL?AaM)EZQWXCa-J3a?2hJs?MQ@%m&ZIUP(uI^cM6BlGvuRlz{4>SdTp;-XnR;@nX=Ae+TO(!{K_oXCS8 z%f$CDyHw7TuHw^be4^Q1E3vloi|0g(M$jz zYH_y~?Lt0a_7Wm(m8yrfORKGtX(B<|l z)TvzQyZY%=y1DrhN6Ht|U^z{mwmR)4ou!

    81*Hi>FQ_s$7`gLS<8mKZu_TAqN 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 N002ovPDHLkV1iMOzDNK7 diff --git a/launcher/resources/multimc/128x128/instances/chicken_legacy.png b/launcher/resources/multimc/128x128/instances/chicken_legacy.png index 51c632055a3a257a4f16407fdb3f85f470acd12a..b4945d75a716bd9829d2024a4237cda9a7bb328a 100644 GIT binary patch literal 5178 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 literal 5184 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 i9v2e2k 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 Eg7s8ldH?_b literal 18514 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

    ui/dialogs/skins/draw/SkinOpenGLWidget.h
    + + diff --git a/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp b/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp new file mode 100644 index 000000000..9d2a5614d --- /dev/null +++ b/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp @@ -0,0 +1,235 @@ + +#include "BoxGeometry.h" + +#include +#include +#include +#include + +struct VertexData { + QVector4D position; + QVector2D texCoord; + VertexData(const QVector4D& pos, const QVector2D& tex) : position(pos), texCoord(tex) {} +}; + +// For cube we would need only 8 vertices but we have to +// duplicate vertex for each face because texture coordinate +// is different. +static const QVector vertices = { + // Vertex data for face 0 + QVector4D(-0.5f, -0.5f, 0.5f, 1.0f), // v0 + QVector4D(0.5f, -0.5f, 0.5f, 1.0f), // v1 + QVector4D(-0.5f, 0.5f, 0.5f, 1.0f), // v2 + QVector4D(0.5f, 0.5f, 0.5f, 1.0f), // v3 + // Vertex data for face 1 + QVector4D(0.5f, -0.5f, 0.5f, 1.0f), // v4 + QVector4D(0.5f, -0.5f, -0.5f, 1.0f), // v5 + QVector4D(0.5f, 0.5f, 0.5f, 1.0f), // v6 + QVector4D(0.5f, 0.5f, -0.5f, 1.0f), // v7 + + // Vertex data for face 2 + QVector4D(0.5f, -0.5f, -0.5f, 1.0f), // v8 + QVector4D(-0.5f, -0.5f, -0.5f, 1.0f), // v9 + QVector4D(0.5f, 0.5f, -0.5f, 1.0f), // v10 + QVector4D(-0.5f, 0.5f, -0.5f, 1.0f), // v11 + + // Vertex data for face 3 + QVector4D(-0.5f, -0.5f, -0.5f, 1.0f), // v12 + QVector4D(-0.5f, -0.5f, 0.5f, 1.0f), // v13 + QVector4D(-0.5f, 0.5f, -0.5f, 1.0f), // v14 + QVector4D(-0.5f, 0.5f, 0.5f, 1.0f), // v15 + + // Vertex data for face 4 + QVector4D(-0.5f, -0.5f, -0.5f, 1.0f), // v16 + QVector4D(0.5f, -0.5f, -0.5f, 1.0f), // v17 + QVector4D(-0.5f, -0.5f, 0.5f, 1.0f), // v18 + QVector4D(0.5f, -0.5f, 0.5f, 1.0f), // v19 + + // Vertex data for face 5 + QVector4D(-0.5f, 0.5f, 0.5f, 1.0f), // v20 + QVector4D(0.5f, 0.5f, 0.5f, 1.0f), // v21 + QVector4D(-0.5f, 0.5f, -0.5f, 1.0f), // v22 + QVector4D(0.5f, 0.5f, -0.5f, 1.0f), // v23 +}; + +// Indices for drawing cube faces using triangle strips. +// Triangle strips can be connected by duplicating indices +// between the strips. If connecting strips have opposite +// vertex order then last index of the first strip and first +// index of the second strip needs to be duplicated. If +// connecting strips have same vertex order then only last +// index of the first strip needs to be duplicated. +static const QVector indices = { + 0, 1, 2, 3, 3, // Face 0 - triangle strip ( v0, v1, v2, v3) + 4, 4, 5, 6, 7, 7, // Face 1 - triangle strip ( v4, v5, v6, v7) + 8, 8, 9, 10, 11, 11, // Face 2 - triangle strip ( v8, v9, v10, v11) + 12, 12, 13, 14, 15, 15, // Face 3 - triangle strip (v12, v13, v14, v15) + 16, 16, 17, 18, 19, 19, // Face 4 - triangle strip (v16, v17, v18, v19) + 20, 20, 21, 22, 23 // Face 5 - triangle strip (v20, v21, v22, v23) +}; + +QVector transformVectors(const QMatrix4x4& matrix, const QVector& vectors) +{ + QVector transformedVectors; + transformedVectors.reserve(vectors.size()); + + for (const QVector4D& vec : vectors) { + if (!matrix.isIdentity()) { + transformedVectors.append(matrix * vec); + } else { + transformedVectors.append(vec); + } + } + + return transformedVectors; +} + +// Function to calculate UV coordinates +// this is pure magic (if something is wrong with textures this is at fault) +QVector getCubeUVs(float u, float v, float width, float height, float depth, float textureWidth, float textureHeight) +{ + auto toFaceVertices = [textureHeight, textureWidth](float x1, float y1, float x2, float y2) -> QVector { + return { + QVector2D(x1 / textureWidth, 1.0 - y2 / textureHeight), + QVector2D(x2 / textureWidth, 1.0 - y2 / textureHeight), + QVector2D(x2 / textureWidth, 1.0 - y1 / textureHeight), + QVector2D(x1 / textureWidth, 1.0 - y1 / textureHeight), + }; + }; + + auto top = toFaceVertices(u + depth, v, u + width + depth, v + depth); + auto bottom = toFaceVertices(u + width + depth, v, u + width * 2 + depth, v + depth); + auto left = toFaceVertices(u, v + depth, u + depth, v + depth + height); + auto front = toFaceVertices(u + depth, v + depth, u + width + depth, v + depth + height); + auto right = toFaceVertices(u + width + depth, v + depth, u + width + depth * 2, v + height + depth); + auto back = toFaceVertices(u + width + depth * 2, v + depth, u + width * 2 + depth * 2, v + height + depth); + + auto uvRight = { + right[0], + right[1], + right[3], + right[2], + }; + auto uvLeft = { + left[0], + left[1], + left[3], + left[2], + }; + auto uvTop = { + + top[0], + top[1], + top[3], + top[2], + }; + auto uvBottom = { + bottom[3], + bottom[2], + bottom[0], + bottom[1], + }; + auto uvFront = { + front[0], + front[1], + front[3], + front[2], + }; + auto uvBack = { + back[0], + back[1], + back[3], + back[2], + }; + // Create a new array to hold the modified UV data + QVector uvData; + uvData.reserve(24); + + // Iterate over the arrays and copy the data to newUVData + for (const auto& uvArray : { uvFront, uvRight, uvBack, uvLeft, uvBottom, uvTop }) { + uvData.append(uvArray); + } + + return uvData; +} + +namespace opengl { +BoxGeometry::BoxGeometry(QVector3D size, QVector3D position) : m_indexBuf(QOpenGLBuffer::IndexBuffer), m_size(size), m_position(position) +{ + initializeOpenGLFunctions(); + + // Generate 2 VBOs + m_vertexBuf.create(); + m_indexBuf.create(); +} + +BoxGeometry::BoxGeometry(QVector3D size, QVector3D position, QPoint uv, QVector3D textureDim, QSize textureSize) + : BoxGeometry(size, position) +{ + initGeometry(uv.x(), uv.y(), textureDim.x(), textureDim.y(), textureDim.z(), textureSize.width(), textureSize.height()); +} + +BoxGeometry::~BoxGeometry() +{ + m_vertexBuf.destroy(); + m_indexBuf.destroy(); +} + +void BoxGeometry::draw(QOpenGLShaderProgram* program) +{ + // Tell OpenGL which VBOs to use + program->setUniformValue("model_matrix", m_matrix); + m_vertexBuf.bind(); + m_indexBuf.bind(); + + // Offset for position + quintptr offset = 0; + + // Tell OpenGL programmable pipeline how to locate vertex position data + int vertexLocation = program->attributeLocation("a_position"); + program->enableAttributeArray(vertexLocation); + program->setAttributeBuffer(vertexLocation, GL_FLOAT, offset, 4, sizeof(VertexData)); + + // Offset for texture coordinate + offset += sizeof(QVector4D); + // Tell OpenGL programmable pipeline how to locate vertex texture coordinate data + int texcoordLocation = program->attributeLocation("a_texcoord"); + program->enableAttributeArray(texcoordLocation); + program->setAttributeBuffer(texcoordLocation, GL_FLOAT, offset, 2, sizeof(VertexData)); + + // Draw cube geometry using indices from VBO 1 + glDrawElements(GL_TRIANGLE_STRIP, indices.size(), GL_UNSIGNED_SHORT, nullptr); +} + +void BoxGeometry::initGeometry(float u, float v, float width, float height, float depth, float textureWidth, float textureHeight) +{ + // auto positions = getVericles(m_size, m_position); + auto textureCord = getCubeUVs(u, v, width, height, depth, textureWidth, textureHeight); + + // this should not be needed to be done on each render for most of the objects + QMatrix4x4 transformation; + transformation.translate(m_position); + transformation.scale(m_size); + auto positions = transformVectors(transformation, vertices); + + QVector vertices; + vertices.reserve(positions.size()); // Reserve space for efficiency + + for (int i = 0; i < positions.size(); ++i) { + vertices.append(VertexData(positions[i], textureCord[i])); + } + + // Transfer vertex data to VBO 0 + m_vertexBuf.bind(); + m_vertexBuf.allocate(vertices.constData(), vertices.size() * sizeof(VertexData)); + + // Transfer index data to VBO 1 + m_indexBuf.bind(); + m_indexBuf.allocate(indices.constData(), indices.size() * sizeof(GLushort)); +} + +void BoxGeometry::rotate(float angle, const QVector3D& vector) +{ + m_matrix.rotate(angle, vector); +} +} // namespace opengl \ No newline at end of file diff --git a/launcher/ui/dialogs/skins/draw/BoxGeometry.h b/launcher/ui/dialogs/skins/draw/BoxGeometry.h new file mode 100644 index 000000000..c3a7d9a40 --- /dev/null +++ b/launcher/ui/dialogs/skins/draw/BoxGeometry.h @@ -0,0 +1,28 @@ +#pragma once + +#include +#include +#include +#include +#include + +namespace opengl { +class BoxGeometry : protected QOpenGLFunctions { + public: + BoxGeometry(QVector3D size, QVector3D position); + BoxGeometry(QVector3D size, QVector3D position, QPoint uv, QVector3D textureDim, QSize textureSize = { 64, 64 }); + virtual ~BoxGeometry(); + + void draw(QOpenGLShaderProgram* program); + + void initGeometry(float u, float v, float width, float height, float depth, float textureWidth = 64, float textureHeight = 64); + void rotate(float angle, const QVector3D& vector); + + private: + QOpenGLBuffer m_vertexBuf; + QOpenGLBuffer m_indexBuf; + QVector3D m_size; + QVector3D m_position; + QMatrix4x4 m_matrix; +}; +} // namespace opengl diff --git a/launcher/ui/dialogs/skins/draw/Scene.cpp b/launcher/ui/dialogs/skins/draw/Scene.cpp new file mode 100644 index 000000000..48f2d9800 --- /dev/null +++ b/launcher/ui/dialogs/skins/draw/Scene.cpp @@ -0,0 +1,115 @@ + +#include "ui/dialogs/skins/draw/Scene.h" +namespace opengl { +Scene::Scene(const QImage& skin, bool slim, const QImage& cape) : m_slim(slim), m_capeVisible(!cape.isNull()) +{ + m_staticComponents = { + // head + new opengl::BoxGeometry(QVector3D(8, 8, 8), QVector3D(0, 4, 0), QPoint(0, 0), QVector3D(8, 8, 8)), + new opengl::BoxGeometry(QVector3D(9, 9, 9), QVector3D(0, 4, 0), QPoint(32, 0), QVector3D(8, 8, 8)), + // body + new opengl::BoxGeometry(QVector3D(8, 12, 4), QVector3D(0, -6, 0), QPoint(16, 16), QVector3D(8, 12, 4)), + new opengl::BoxGeometry(QVector3D(8.5, 12.5, 4.5), QVector3D(0, -6, 0), QPoint(16, 32), QVector3D(8, 12, 4)), + // right leg + new opengl::BoxGeometry(QVector3D(4, 12, 4), QVector3D(-1.9, -18, -0.1), QPoint(0, 16), QVector3D(4, 12, 4)), + new opengl::BoxGeometry(QVector3D(4.5, 12.5, 4.5), QVector3D(-1.9, -18, -0.1), QPoint(0, 32), QVector3D(4, 12, 4)), + // left leg + new opengl::BoxGeometry(QVector3D(4, 12, 4), QVector3D(1.9, -18, -0.1), QPoint(16, 48), QVector3D(4, 12, 4)), + new opengl::BoxGeometry(QVector3D(4.5, 12.5, 4.5), QVector3D(1.9, -18, -0.1), QPoint(0, 48), QVector3D(4, 12, 4)), + }; + m_normalArms = { + // Right Arm + new opengl::BoxGeometry(QVector3D(4, 12, 4), QVector3D(-6, -6, 0), QPoint(40, 16), QVector3D(4, 12, 4)), + new opengl::BoxGeometry(QVector3D(4.5, 12.5, 4.5), QVector3D(-6, -6, 0), QPoint(40, 32), QVector3D(4, 12, 4)), + // Left Arm + new opengl::BoxGeometry(QVector3D(4, 12, 4), QVector3D(6, -6, 0), QPoint(32, 48), QVector3D(4, 12, 4)), + new opengl::BoxGeometry(QVector3D(4.5, 12.5, 4.5), QVector3D(6, -6, 0), QPoint(48, 48), QVector3D(4, 12, 4)), + }; + + m_slimArms = { + // Right Arm + new opengl::BoxGeometry(QVector3D(4, 12, 3), QVector3D(-6, -6, 0), QPoint(40, 16), QVector3D(3, 12, 4)), + new opengl::BoxGeometry(QVector3D(4.5, 12.5, 3.5), QVector3D(-6, -6, 0), QPoint(40, 32), QVector3D(3, 12, 4)), + // Left Arm + new opengl::BoxGeometry(QVector3D(4, 12, 3), QVector3D(6, -6, 0), QPoint(32, 48), QVector3D(3, 12, 4)), + new opengl::BoxGeometry(QVector3D(4.5, 12.5, 3.5), QVector3D(6, -6, 0), QPoint(48, 48), QVector3D(3, 12, 4)), + }; + + m_cape = new opengl::BoxGeometry(QVector3D(10, 16, 1), QVector3D(0, -8, 2.5), QPoint(0, 0), QVector3D(10, 16, 1), QSize(64, 32)); + m_cape->rotate(10.8, QVector3D(1, 0, 0)); + m_cape->rotate(180, QVector3D(0, 1, 0)); + + // texture init + m_skinTexture = new QOpenGLTexture(skin.mirrored()); + m_skinTexture->setMinificationFilter(QOpenGLTexture::Nearest); + m_skinTexture->setMagnificationFilter(QOpenGLTexture::Nearest); + + m_capeTexture = new QOpenGLTexture(cape.mirrored()); + m_capeTexture->setMinificationFilter(QOpenGLTexture::Nearest); + m_capeTexture->setMagnificationFilter(QOpenGLTexture::Nearest); +} +Scene::~Scene() +{ + for (auto array : { m_staticComponents, m_normalArms, m_slimArms }) { + for (auto g : array) { + delete g; + } + } + delete m_cape; + m_skinTexture->destroy(); + delete m_skinTexture; + + m_capeTexture->destroy(); + delete m_capeTexture; +} + +void Scene::draw(QOpenGLShaderProgram* program) +{ + m_skinTexture->bind(); + program->setUniformValue("texture", 0); + for (auto toDraw : { m_staticComponents, m_slim ? m_slimArms : m_normalArms }) { + for (auto g : toDraw) { + g->draw(program); + } + } + m_skinTexture->release(); + if (m_capeVisible) { + m_capeTexture->bind(); + program->setUniformValue("texture", 0); + m_cape->draw(program); + m_capeTexture->release(); + } +} + +void updateTexture(QOpenGLTexture* texture, const QImage& img) +{ + if (texture) { + if (texture->isBound()) + texture->release(); + texture->destroy(); + texture->create(); + texture->setSize(img.width(), img.height()); + texture->setData(img); + texture->setMinificationFilter(QOpenGLTexture::Nearest); + texture->setMagnificationFilter(QOpenGLTexture::Nearest); + } +} + +void Scene::setSkin(const QImage& skin) +{ + updateTexture(m_skinTexture, skin.mirrored()); +} + +void Scene::setMode(bool slim) +{ + m_slim = slim; +} +void Scene::setCape(const QImage& cape) +{ + updateTexture(m_capeTexture, cape.mirrored()); +} +void Scene::setCapeVisible(bool visible) +{ + m_capeVisible = visible; +} +} // namespace opengl \ No newline at end of file diff --git a/launcher/ui/dialogs/skins/draw/Scene.h b/launcher/ui/dialogs/skins/draw/Scene.h new file mode 100644 index 000000000..8f97e7472 --- /dev/null +++ b/launcher/ui/dialogs/skins/draw/Scene.h @@ -0,0 +1,28 @@ +#pragma once + +#include "ui/dialogs/skins/draw/BoxGeometry.h" + +#include +namespace opengl { +class Scene { + public: + Scene(const QImage& skin, bool slim, const QImage& cape); + virtual ~Scene(); + + void draw(QOpenGLShaderProgram* program); + void setSkin(const QImage& skin); + void setCape(const QImage& cape); + void setMode(bool slim); + void setCapeVisible(bool visible); + + private: + QVector m_staticComponents; + QVector m_normalArms; + QVector m_slimArms; + BoxGeometry* m_cape = nullptr; + QOpenGLTexture* m_skinTexture = nullptr; + QOpenGLTexture* m_capeTexture = nullptr; + bool m_slim = false; + bool m_capeVisible = false; +}; +} // namespace opengl \ No newline at end of file diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp new file mode 100644 index 000000000..776307aba --- /dev/null +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp @@ -0,0 +1,240 @@ +#include "ui/dialogs/skins/draw/SkinOpenGLWidget.h" + +#include +#include +#include +#include +#include "minecraft/skins/SkinModel.h" +#include "ui/dialogs/skins/SkinManageDialog.h" +#include "ui/dialogs/skins/draw/Scene.h" + +SkinOpenGLWidget::~SkinOpenGLWidget() +{ + // Make sure the context is current when deleting the texture + // and the buffers. + makeCurrent(); + delete m_scene; + glDeleteTextures(1, &m_chessboardTexture); + doneCurrent(); +} + +void SkinOpenGLWidget::mousePressEvent(QMouseEvent* e) +{ + // Save mouse press position + m_mousePosition = QVector2D(e->position()); + m_isMousePressed = true; +} +void SkinOpenGLWidget::mouseMoveEvent(QMouseEvent* event) +{ + if (m_isMousePressed) { + int dx = event->x() - m_mousePosition.x(); + int dy = event->y() - m_mousePosition.y(); + + // Update rotation angles based on mouse movement + m_rotationX += dy; + m_rotationY += dx; + + m_mousePosition = QVector2D(event->position()); + update(); // Trigger a repaint + } +} +void SkinOpenGLWidget::mouseReleaseEvent(QMouseEvent* e) +{ + m_isMousePressed = false; +} + +void SkinOpenGLWidget::initializeGL() +{ + initializeOpenGLFunctions(); + + glClearColor(0, 0, 1, 1); + + initShaders(); + + m_chessboardTexture = generateChessboardTexture(512, 512, 16); + + QImage skin, cape; + bool slim = false; + if (auto p = dynamic_cast(parent()); p) { + if (auto s = p->getSelectedSkin()) { + skin = s->getTexture(); + slim = s->getModel() == SkinModel::SLIM; + cape = p->capes().value(s->getCapeId(), {}); + } + } + + m_scene = new opengl::Scene(skin, slim, cape); + glEnable(GL_TEXTURE_2D); +} + +void SkinOpenGLWidget::initShaders() +{ + // Compile vertex shader + if (!m_program.addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, R"(// Copyright (C) 2024 The Qt Company Ltd. + // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + #ifdef GL_ES + // Set default precision to medium + precision mediump int; + precision mediump float; + #endif + + uniform mat4 mvp_matrix; + uniform mat4 model_matrix; + + attribute vec4 a_position; + attribute vec2 a_texcoord; + + varying vec2 v_texcoord; + + void main() + { + // Calculate vertex position in screen space + gl_Position = mvp_matrix * model_matrix * a_position; + + // Pass texture coordinate to fragment shader + // Value will be automatically interpolated to fragments inside polygon faces + v_texcoord = a_texcoord; + } + )")) + close(); + + // Compile fragment shader + if (!m_program.addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, R"(// Copyright (C) 2024 The Qt Company Ltd. + // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause + #ifdef GL_ES + // Set default precision to medium + precision mediump int; + precision mediump float; + #endif + + uniform sampler2D texture; + + varying vec2 v_texcoord; + + void main() + { + // Set fragment color from texture + // gl_FragColor = texture2D(texture, v_texcoord); + vec4 texColor = texture2D(texture, v_texcoord); + if (texColor.a < 0.1) discard; // Optional: Discard fully transparent pixels + gl_FragColor = texColor; + } + )")) + close(); + + // Link shader pipeline + if (!m_program.link()) + close(); + + // Bind shader pipeline for use + if (!m_program.bind()) + close(); +} + +void SkinOpenGLWidget::resizeGL(int w, int h) +{ + // Calculate aspect ratio + qreal aspect = qreal(w) / qreal(h ? h : 1); + + const qreal zNear = .1, zFar = 1000., fov = 45; + + // Reset projection + m_projection.setToIdentity(); + + // Set perspective projection + m_projection.perspective(fov, aspect, zNear, zFar); +} + +void SkinOpenGLWidget::paintGL() +{ + // Clear color and depth buffer + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + // Enable depth buffer + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LESS); + + // Enable back face culling + glEnable(GL_CULL_FACE); + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + renderBackground(); + + m_program.bind(); + + // Calculate model view transformation + QMatrix4x4 matrix; + matrix.translate(0.0, 6.0, -50.); + matrix.rotate(m_rotationX, 1.0f, 0.0f, 0.0f); + matrix.rotate(m_rotationY, 0.0f, 1.0f, 0.0f); + + // Set modelview-projection matrix + m_program.setUniformValue("mvp_matrix", m_projection * matrix); + + m_scene->draw(&m_program); + m_program.release(); +} + +void SkinOpenGLWidget::updateScene(SkinModel* skin) +{ + if (skin && m_scene) { + m_scene->setMode(skin->getModel() == SkinModel::SLIM); + m_scene->setSkin(skin->getTexture()); + update(); + } +} +void SkinOpenGLWidget::updateCape(const QImage& cape) +{ + if (m_scene) { + m_scene->setCapeVisible(!cape.isNull()); + m_scene->setCape(cape); + update(); + } +} + +GLuint SkinOpenGLWidget::generateChessboardTexture(int width, int height, int tileSize) +{ + std::vector textureData(width * height * 3); + + for (int y = 0; y < height; ++y) { + for (int x = 0; x < width; ++x) { + bool isWhite = ((x / tileSize) % 2) == ((y / tileSize) % 2); + unsigned char color = isWhite ? 100 : 50; + + int index = (y * width + x) * 3; + textureData[index] = color; // Red + textureData[index + 1] = color; // Green + textureData[index + 2] = color; // Blue + } + } + + GLuint texture; + glGenTextures(1, &texture); + glBindTexture(GL_TEXTURE_2D, texture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, textureData.data()); + + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + return texture; +} + +void SkinOpenGLWidget::renderBackground() +{ + glDepthMask(GL_FALSE); // Disable depth buffer writing + glBindTexture(GL_TEXTURE_2D, m_chessboardTexture); + + glBegin(GL_QUADS); + glTexCoord2f(0.0f, 0.0f); + glVertex3f(-1.0f, -1.0f, -0.5f); // Bottom-left + glTexCoord2f(1.0f, 0.0f); + glVertex3f(1.0f, -1.0f, -0.5f); // Bottom-right + glTexCoord2f(1.0f, 1.0f); + glVertex3f(1.0f, 1.0f, -0.5f); // Top-right + glTexCoord2f(0.0f, 1.0f); + glVertex3f(-1.0f, 1.0f, -0.5f); // Top-left + glEnd(); + glDepthMask(GL_TRUE); // Re-enable depth buffer writing +} diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h new file mode 100644 index 000000000..2c56cc278 --- /dev/null +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h @@ -0,0 +1,49 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include "minecraft/skins/SkinModel.h" +#include "ui/dialogs/skins/draw/Scene.h" + +class SkinOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { + Q_OBJECT + + public: + SkinOpenGLWidget(QWidget* parent = nullptr) : QOpenGLWidget(parent), QOpenGLFunctions() {} + virtual ~SkinOpenGLWidget(); + + void updateScene(SkinModel* skin); + void updateCape(const QImage& cape); + + protected: + void mousePressEvent(QMouseEvent* e) override; + void mouseReleaseEvent(QMouseEvent* e) override; + void mouseMoveEvent(QMouseEvent* event) override; + + void initializeGL() override; + void resizeGL(int w, int h) override; + void paintGL() override; + + void initShaders(); + + GLuint generateChessboardTexture(int width, int height, int tileSize); + void renderBackground(); + + private: + QOpenGLShaderProgram m_program; + opengl::Scene* m_scene = nullptr; + + QMatrix4x4 m_projection; + + QVector2D m_mousePosition; + + bool m_isMousePressed = false; + int m_rotationX = 0, m_rotationY = 0; + + // background + GLuint m_chessboardTexture; +}; From 6fc386cfe9ab9d1c9ae777550b8adf6ca195b211 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 10 Jan 2025 11:40:38 +0200 Subject: [PATCH 469/616] Move shaders to separate files Signed-off-by: Trial97 --- launcher/CMakeLists.txt | 2 + launcher/main.cpp | 2 + launcher/resources/shaders/fshader.glsl | 21 ++++++++ launcher/resources/shaders/shaders.qrc | 6 +++ launcher/resources/shaders/vshader.glsl | 26 ++++++++++ .../dialogs/skins/draw/SkinOpenGLWidget.cpp | 49 +------------------ 6 files changed, 59 insertions(+), 47 deletions(-) create mode 100644 launcher/resources/shaders/fshader.glsl create mode 100644 launcher/resources/shaders/shaders.qrc create mode 100644 launcher/resources/shaders/vshader.glsl diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 58560469c..daea70a2c 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -810,6 +810,7 @@ SET(LAUNCHER_SOURCES resources/flat/flat.qrc resources/flat_white/flat_white.qrc resources/documents/documents.qrc + resources/shaders/shaders.qrc ../${Launcher_Branding_LogoQRC} # Icons @@ -1252,6 +1253,7 @@ qt_add_resources(LAUNCHER_RESOURCES resources/iOS/iOS.qrc resources/flat/flat.qrc resources/documents/documents.qrc + resources/shaders/shaders.qrc ../${Launcher_Branding_LogoQRC} ) diff --git a/launcher/main.cpp b/launcher/main.cpp index 35f545f52..c41c510dd 100644 --- a/launcher/main.cpp +++ b/launcher/main.cpp @@ -84,6 +84,8 @@ int main(int argc, char* argv[]) Q_INIT_RESOURCE(iOS); Q_INIT_RESOURCE(flat); Q_INIT_RESOURCE(flat_white); + + Q_INIT_RESOURCE(shaders); return app.exec(); } case Application::Failed: diff --git a/launcher/resources/shaders/fshader.glsl b/launcher/resources/shaders/fshader.glsl new file mode 100644 index 000000000..7bdf6c178 --- /dev/null +++ b/launcher/resources/shaders/fshader.glsl @@ -0,0 +1,21 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// https://code.qt.io/cgit/qt/qtbase.git/tree/examples/opengl/cube/fshader.glsl +#ifdef GL_ES +// Set default precision to medium +precision mediump int; +precision mediump float; +#endif + +uniform sampler2D texture; + +varying vec2 v_texcoord; + +void main() +{ + // Set fragment color from texture + // gl_FragColor = texture2D(texture, v_texcoord); + vec4 texColor = texture2D(texture, v_texcoord); + if (texColor.a < 0.1) discard; // Optional: Discard fully transparent pixels + gl_FragColor = texColor; +} diff --git a/launcher/resources/shaders/shaders.qrc b/launcher/resources/shaders/shaders.qrc new file mode 100644 index 000000000..835e0fea7 --- /dev/null +++ b/launcher/resources/shaders/shaders.qrc @@ -0,0 +1,6 @@ + + + vshader.glsl + fshader.glsl + + \ No newline at end of file diff --git a/launcher/resources/shaders/vshader.glsl b/launcher/resources/shaders/vshader.glsl new file mode 100644 index 000000000..2d5e2db30 --- /dev/null +++ b/launcher/resources/shaders/vshader.glsl @@ -0,0 +1,26 @@ +// Copyright (C) 2024 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause +// https://code.qt.io/cgit/qt/qtbase.git/tree/examples/opengl/cube/vshader.glsl +#ifdef GL_ES +// Set default precision to medium +precision mediump int; +precision mediump float; +#endif + +uniform mat4 mvp_matrix; +uniform mat4 model_matrix; + +attribute vec4 a_position; +attribute vec2 a_texcoord; + +varying vec2 v_texcoord; + +void main() +{ + // Calculate vertex position in screen space + gl_Position = mvp_matrix * model_matrix * a_position; + + // Pass texture coordinate to fragment shader + // Value will be automatically interpolated to fragments inside polygon faces + v_texcoord = a_texcoord; +} diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp index 776307aba..7a1eeac44 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp @@ -70,56 +70,11 @@ void SkinOpenGLWidget::initializeGL() void SkinOpenGLWidget::initShaders() { // Compile vertex shader - if (!m_program.addCacheableShaderFromSourceCode(QOpenGLShader::Vertex, R"(// Copyright (C) 2024 The Qt Company Ltd. - // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - #ifdef GL_ES - // Set default precision to medium - precision mediump int; - precision mediump float; - #endif - - uniform mat4 mvp_matrix; - uniform mat4 model_matrix; - - attribute vec4 a_position; - attribute vec2 a_texcoord; - - varying vec2 v_texcoord; - - void main() - { - // Calculate vertex position in screen space - gl_Position = mvp_matrix * model_matrix * a_position; - - // Pass texture coordinate to fragment shader - // Value will be automatically interpolated to fragments inside polygon faces - v_texcoord = a_texcoord; - } - )")) + if (!m_program.addCacheableShaderFromSourceFile(QOpenGLShader::Vertex, ":/shaders/vshader.glsl")) close(); // Compile fragment shader - if (!m_program.addCacheableShaderFromSourceCode(QOpenGLShader::Fragment, R"(// Copyright (C) 2024 The Qt Company Ltd. - // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause - #ifdef GL_ES - // Set default precision to medium - precision mediump int; - precision mediump float; - #endif - - uniform sampler2D texture; - - varying vec2 v_texcoord; - - void main() - { - // Set fragment color from texture - // gl_FragColor = texture2D(texture, v_texcoord); - vec4 texColor = texture2D(texture, v_texcoord); - if (texColor.a < 0.1) discard; // Optional: Discard fully transparent pixels - gl_FragColor = texColor; - } - )")) + if (!m_program.addCacheableShaderFromSourceFile(QOpenGLShader::Fragment, ":/shaders/fshader.glsl")) close(); // Link shader pipeline From 0219c11a739e9ae3925c2472d831a22a93c5318d Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 10 Jan 2025 11:48:21 +0200 Subject: [PATCH 470/616] Fix build CI Signed-off-by: Trial97 --- .github/workflows/build.yml | 12 ++++++------ .github/workflows/codeql.yml | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0770b66dd..c574a335e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -60,14 +60,14 @@ jobs: qt_host: linux qt_arch: "" qt_version: "5.15.2" - qt_modules: "qtnetworkauth" + qt_modules: "qtnetworkauth opengl openglwidgets" - os: ubuntu-20.04 qt_ver: 6 qt_host: linux qt_arch: "" qt_version: "6.5.3" - qt_modules: "qt5compat qtimageformats qtnetworkauth" + qt_modules: "qt5compat qtimageformats qtnetworkauth opengl openglwidgets" - os: windows-2022 name: "Windows-MinGW-w64" @@ -83,7 +83,7 @@ jobs: qt_host: windows qt_arch: "" qt_version: "6.7.3" - qt_modules: "qt5compat qtimageformats qtnetworkauth" + qt_modules: "qt5compat qtimageformats qtnetworkauth opengl openglwidgets" nscurl_tag: "v24.9.26.122" nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" @@ -96,7 +96,7 @@ jobs: qt_host: windows qt_arch: "win64_msvc2019_arm64" qt_version: "6.7.3" - qt_modules: "qt5compat qtimageformats qtnetworkauth" + qt_modules: "qt5compat qtimageformats qtnetworkauth opengl openglwidgets" nscurl_tag: "v24.9.26.122" nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" @@ -107,7 +107,7 @@ jobs: qt_host: mac qt_arch: "" qt_version: "6.7.3" - qt_modules: "qt5compat qtimageformats qtnetworkauth" + qt_modules: "qt5compat qtimageformats qtnetworkauth opengl openglwidgets" - os: macos-14 name: macOS-Legacy @@ -115,7 +115,7 @@ jobs: qt_ver: 5 qt_host: mac qt_version: "5.15.2" - qt_modules: "qtnetworkauth" + qt_modules: "qtnetworkauth opengl openglwidgets" runs-on: ${{ matrix.os }} diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 5255f865b..d1d810374 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -23,7 +23,7 @@ jobs: run: sudo apt-get -y update - sudo apt-get -y install ninja-build extra-cmake-modules scdoc qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5 libqt5networkauth5 libqt5networkauth5-dev + sudo apt-get -y install ninja-build extra-cmake-modules scdoc qtbase5-dev qtchooser qt5-qmake qtbase5-dev-tools libqt5core5a libqt5network5 libqt5gui5 libqt5networkauth5 libqt5networkauth5-dev libqt5opengl5 libqt5opengl5-dev - name: Configure and Build run: | From 87ec7cdd3951bad258f58c065b3a82861f104477 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 10 Jan 2025 14:54:40 +0200 Subject: [PATCH 471/616] move background to vertex buffer Signed-off-by: Trial97 --- .github/workflows/build.yml | 12 ++-- CMakeLists.txt | 3 +- launcher/CMakeLists.txt | 2 +- launcher/resources/shaders/fshader.glsl | 1 - .../ui/dialogs/skins/draw/BoxGeometry.cpp | 30 +++++++++- launcher/ui/dialogs/skins/draw/BoxGeometry.h | 2 + launcher/ui/dialogs/skins/draw/Scene.cpp | 1 + .../dialogs/skins/draw/SkinOpenGLWidget.cpp | 56 ++++++++----------- .../ui/dialogs/skins/draw/SkinOpenGLWidget.h | 7 ++- 9 files changed, 68 insertions(+), 46 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c574a335e..0770b66dd 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -60,14 +60,14 @@ jobs: qt_host: linux qt_arch: "" qt_version: "5.15.2" - qt_modules: "qtnetworkauth opengl openglwidgets" + qt_modules: "qtnetworkauth" - os: ubuntu-20.04 qt_ver: 6 qt_host: linux qt_arch: "" qt_version: "6.5.3" - qt_modules: "qt5compat qtimageformats qtnetworkauth opengl openglwidgets" + qt_modules: "qt5compat qtimageformats qtnetworkauth" - os: windows-2022 name: "Windows-MinGW-w64" @@ -83,7 +83,7 @@ jobs: qt_host: windows qt_arch: "" qt_version: "6.7.3" - qt_modules: "qt5compat qtimageformats qtnetworkauth opengl openglwidgets" + qt_modules: "qt5compat qtimageformats qtnetworkauth" nscurl_tag: "v24.9.26.122" nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" @@ -96,7 +96,7 @@ jobs: qt_host: windows qt_arch: "win64_msvc2019_arm64" qt_version: "6.7.3" - qt_modules: "qt5compat qtimageformats qtnetworkauth opengl openglwidgets" + qt_modules: "qt5compat qtimageformats qtnetworkauth" nscurl_tag: "v24.9.26.122" nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" @@ -107,7 +107,7 @@ jobs: qt_host: mac qt_arch: "" qt_version: "6.7.3" - qt_modules: "qt5compat qtimageformats qtnetworkauth opengl openglwidgets" + qt_modules: "qt5compat qtimageformats qtnetworkauth" - os: macos-14 name: macOS-Legacy @@ -115,7 +115,7 @@ jobs: qt_ver: 5 qt_host: mac qt_version: "5.15.2" - qt_modules: "qtnetworkauth opengl openglwidgets" + qt_modules: "qtnetworkauth" runs-on: ${{ matrix.os }} diff --git a/CMakeLists.txt b/CMakeLists.txt index 59be32133..9d59f83ad 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -298,7 +298,7 @@ endif() include(QtVersionlessBackport) if(Launcher_QT_VERSION_MAJOR EQUAL 5) set(QT_VERSION_MAJOR 5) - find_package(Qt5 REQUIRED COMPONENTS Core Widgets Concurrent Network Test Xml NetworkAuth OpenGL OpenGLWidgets) + find_package(Qt5 REQUIRED COMPONENTS Core Widgets Concurrent Network Test Xml NetworkAuth OpenGL) find_package(Qt5 COMPONENTS DBus) list(APPEND Launcher_QT_DBUS Qt5::DBus) @@ -318,6 +318,7 @@ elseif(Launcher_QT_VERSION_MAJOR EQUAL 6) find_package(Qt6 COMPONENTS DBus) list(APPEND Launcher_QT_DBUS Qt6::DBus) list(APPEND Launcher_QT_LIBS Qt6::Core5Compat) + list(APPEND Launcher_QT_OpenGL Qt6::OpenGLWidgets) if(NOT Launcher_FORCE_BUNDLED_LIBS) find_package(QuaZip-Qt6 1.3 QUIET) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index daea70a2c..c79f5e600 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1305,7 +1305,7 @@ target_link_libraries(Launcher_logic Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::NetworkAuth Qt${QT_VERSION_MAJOR}::OpenGL - Qt${QT_VERSION_MAJOR}::OpenGLWidgets + ${Launcher_QT_OpenGL} ${Launcher_QT_DBUS} ${Launcher_QT_LIBS} ) diff --git a/launcher/resources/shaders/fshader.glsl b/launcher/resources/shaders/fshader.glsl index 7bdf6c178..d6a93db5d 100644 --- a/launcher/resources/shaders/fshader.glsl +++ b/launcher/resources/shaders/fshader.glsl @@ -14,7 +14,6 @@ varying vec2 v_texcoord; void main() { // Set fragment color from texture - // gl_FragColor = texture2D(texture, v_texcoord); vec4 texColor = texture2D(texture, v_texcoord); if (texColor.a < 0.1) discard; // Optional: Discard fully transparent pixels gl_FragColor = texColor; diff --git a/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp b/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp index 9d2a5614d..507c13e86 100644 --- a/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp +++ b/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp @@ -68,6 +68,16 @@ static const QVector indices = { 20, 20, 21, 22, 23 // Face 5 - triangle strip (v20, v21, v22, v23) }; +static const QVector planeVertices = { + { QVector4D(-1.0f, -1.0f, -0.5f, 1.0f), QVector2D(0.0f, 0.0f) }, // Bottom-left + { QVector4D(1.0f, -1.0f, -0.5f, 1.0f), QVector2D(1.0f, 0.0f) }, // Bottom-right + { QVector4D(-1.0f, 1.0f, -0.5f, 1.0f), QVector2D(0.0f, 1.0f) }, // Top-left + { QVector4D(1.0f, 1.0f, -0.5f, 1.0f), QVector2D(1.0f, 1.0f) }, // Top-right +}; +static const QVector planeIndices = { + 0, 1, 2, 3, 3 // Face 0 - triangle strip ( v0, v1, v2, v3) +}; + QVector transformVectors(const QMatrix4x4& matrix, const QVector& vectors) { QVector transformedVectors; @@ -117,7 +127,6 @@ QVector getCubeUVs(float u, float v, float width, float height, float left[2], }; auto uvTop = { - top[0], top[1], top[3], @@ -198,7 +207,7 @@ void BoxGeometry::draw(QOpenGLShaderProgram* program) program->setAttributeBuffer(texcoordLocation, GL_FLOAT, offset, 2, sizeof(VertexData)); // Draw cube geometry using indices from VBO 1 - glDrawElements(GL_TRIANGLE_STRIP, indices.size(), GL_UNSIGNED_SHORT, nullptr); + glDrawElements(GL_TRIANGLE_STRIP, m_indecesCount, GL_UNSIGNED_SHORT, nullptr); } void BoxGeometry::initGeometry(float u, float v, float width, float height, float depth, float textureWidth, float textureHeight) @@ -226,10 +235,27 @@ void BoxGeometry::initGeometry(float u, float v, float width, float height, floa // Transfer index data to VBO 1 m_indexBuf.bind(); m_indexBuf.allocate(indices.constData(), indices.size() * sizeof(GLushort)); + m_indecesCount = indices.size(); } void BoxGeometry::rotate(float angle, const QVector3D& vector) { m_matrix.rotate(angle, vector); } + +BoxGeometry* BoxGeometry::Plane() +{ + auto b = new BoxGeometry(QVector3D(), QVector3D()); + + // Transfer vertex data to VBO 0 + b->m_vertexBuf.bind(); + b->m_vertexBuf.allocate(planeVertices.constData(), planeVertices.size() * sizeof(VertexData)); + + // Transfer index data to VBO 1 + b->m_indexBuf.bind(); + b->m_indexBuf.allocate(planeIndices.constData(), planeIndices.size() * sizeof(GLushort)); + b->m_indecesCount = planeIndices.size(); + + return b; +} } // namespace opengl \ No newline at end of file diff --git a/launcher/ui/dialogs/skins/draw/BoxGeometry.h b/launcher/ui/dialogs/skins/draw/BoxGeometry.h index c3a7d9a40..d706edc6f 100644 --- a/launcher/ui/dialogs/skins/draw/BoxGeometry.h +++ b/launcher/ui/dialogs/skins/draw/BoxGeometry.h @@ -11,6 +11,7 @@ class BoxGeometry : protected QOpenGLFunctions { public: BoxGeometry(QVector3D size, QVector3D position); BoxGeometry(QVector3D size, QVector3D position, QPoint uv, QVector3D textureDim, QSize textureSize = { 64, 64 }); + static BoxGeometry* Plane(); virtual ~BoxGeometry(); void draw(QOpenGLShaderProgram* program); @@ -24,5 +25,6 @@ class BoxGeometry : protected QOpenGLFunctions { QVector3D m_size; QVector3D m_position; QMatrix4x4 m_matrix; + GLsizei m_indecesCount; }; } // namespace opengl diff --git a/launcher/ui/dialogs/skins/draw/Scene.cpp b/launcher/ui/dialogs/skins/draw/Scene.cpp index 48f2d9800..4512b0c83 100644 --- a/launcher/ui/dialogs/skins/draw/Scene.cpp +++ b/launcher/ui/dialogs/skins/draw/Scene.cpp @@ -56,6 +56,7 @@ Scene::~Scene() } } delete m_cape; + m_skinTexture->destroy(); delete m_skinTexture; diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp index 7a1eeac44..ac8fd94f5 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp @@ -6,6 +6,7 @@ #include #include "minecraft/skins/SkinModel.h" #include "ui/dialogs/skins/SkinManageDialog.h" +#include "ui/dialogs/skins/draw/BoxGeometry.h" #include "ui/dialogs/skins/draw/Scene.h" SkinOpenGLWidget::~SkinOpenGLWidget() @@ -14,7 +15,9 @@ SkinOpenGLWidget::~SkinOpenGLWidget() // and the buffers. makeCurrent(); delete m_scene; - glDeleteTextures(1, &m_chessboardTexture); + delete m_background; + m_backgroundTexture->destroy(); + delete m_backgroundTexture; doneCurrent(); } @@ -38,7 +41,7 @@ void SkinOpenGLWidget::mouseMoveEvent(QMouseEvent* event) update(); // Trigger a repaint } } -void SkinOpenGLWidget::mouseReleaseEvent(QMouseEvent* e) +void SkinOpenGLWidget::mouseReleaseEvent([[maybe_unused]] QMouseEvent* e) { m_isMousePressed = false; } @@ -51,7 +54,7 @@ void SkinOpenGLWidget::initializeGL() initShaders(); - m_chessboardTexture = generateChessboardTexture(512, 512, 16); + generateBackgroundTexture(32, 32, 1); QImage skin, cape; bool slim = false; @@ -64,6 +67,7 @@ void SkinOpenGLWidget::initializeGL() } m_scene = new opengl::Scene(skin, slim, cape); + m_background = opengl::BoxGeometry::Plane(); glEnable(GL_TEXTURE_2D); } @@ -115,10 +119,9 @@ void SkinOpenGLWidget::paintGL() glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - renderBackground(); - m_program.bind(); + renderBackground(); // Calculate model view transformation QMatrix4x4 matrix; matrix.translate(0.0, 6.0, -50.); @@ -149,47 +152,36 @@ void SkinOpenGLWidget::updateCape(const QImage& cape) } } -GLuint SkinOpenGLWidget::generateChessboardTexture(int width, int height, int tileSize) +QImage generateChessboardImage(int width, int height, int tileSize) { - std::vector textureData(width * height * 3); + QImage image(width, height, QImage::Format_RGB888); for (int y = 0; y < height; ++y) { for (int x = 0; x < width; ++x) { bool isWhite = ((x / tileSize) % 2) == ((y / tileSize) % 2); unsigned char color = isWhite ? 100 : 50; - int index = (y * width + x) * 3; - textureData[index] = color; // Red - textureData[index + 1] = color; // Green - textureData[index + 2] = color; // Blue + image.setPixelColor(x, y, QColor(color, color, color)); } } + return image; +} - GLuint texture; - glGenTextures(1, &texture); - glBindTexture(GL_TEXTURE_2D, texture); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, textureData.data()); - - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - return texture; +void SkinOpenGLWidget::generateBackgroundTexture(int width, int height, int tileSize) +{ + m_backgroundTexture = new QOpenGLTexture(generateChessboardImage(width, height, tileSize)); + m_backgroundTexture->setMinificationFilter(QOpenGLTexture::Nearest); + m_backgroundTexture->setMagnificationFilter(QOpenGLTexture::Nearest); } void SkinOpenGLWidget::renderBackground() { glDepthMask(GL_FALSE); // Disable depth buffer writing - glBindTexture(GL_TEXTURE_2D, m_chessboardTexture); - - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); - glVertex3f(-1.0f, -1.0f, -0.5f); // Bottom-left - glTexCoord2f(1.0f, 0.0f); - glVertex3f(1.0f, -1.0f, -0.5f); // Bottom-right - glTexCoord2f(1.0f, 1.0f); - glVertex3f(1.0f, 1.0f, -0.5f); // Top-right - glTexCoord2f(0.0f, 1.0f); - glVertex3f(-1.0f, 1.0f, -0.5f); // Top-left - glEnd(); + m_backgroundTexture->bind(); + QMatrix4x4 matrix; + m_program.setUniformValue("mvp_matrix", matrix); + m_program.setUniformValue("texture", 0); + m_background->draw(&m_program); + m_backgroundTexture->release(); glDepthMask(GL_TRUE); // Re-enable depth buffer writing } diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h index 2c56cc278..6a3f68637 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h @@ -7,6 +7,7 @@ #include #include #include "minecraft/skins/SkinModel.h" +#include "ui/dialogs/skins/draw/BoxGeometry.h" #include "ui/dialogs/skins/draw/Scene.h" class SkinOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { @@ -30,7 +31,7 @@ class SkinOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { void initShaders(); - GLuint generateChessboardTexture(int width, int height, int tileSize); + void generateBackgroundTexture(int width, int height, int tileSize); void renderBackground(); private: @@ -44,6 +45,6 @@ class SkinOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { bool m_isMousePressed = false; int m_rotationX = 0, m_rotationY = 0; - // background - GLuint m_chessboardTexture; + opengl::BoxGeometry* m_background = nullptr; + QOpenGLTexture* m_backgroundTexture = nullptr; }; From 059c03c655b17c9d33a0f5fd9b1b41c9cc1b6624 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 10 Jan 2025 15:03:53 +0200 Subject: [PATCH 472/616] fix qt5 build Signed-off-by: Trial97 --- launcher/ui/dialogs/skins/SkinManageDialog.cpp | 1 - launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.cpp b/launcher/ui/dialogs/skins/SkinManageDialog.cpp index b37745ffc..7f29bd7c8 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.cpp +++ b/launcher/ui/dialogs/skins/SkinManageDialog.cpp @@ -202,7 +202,6 @@ void SkinManageDialog::setupCapes() if (!m_capes.contains(cape.id)) { auto path = FS::PathCombine(capesDir, cape.id + ".png"); if (QFileInfo(path).exists() && capeImage.load(path)) { - capeImage = capeImage; m_capes[cape.id] = capeImage; } } diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp index ac8fd94f5..3f2ddf717 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp @@ -24,7 +24,7 @@ SkinOpenGLWidget::~SkinOpenGLWidget() void SkinOpenGLWidget::mousePressEvent(QMouseEvent* e) { // Save mouse press position - m_mousePosition = QVector2D(e->position()); + m_mousePosition = QVector2D(e->pos()); m_isMousePressed = true; } void SkinOpenGLWidget::mouseMoveEvent(QMouseEvent* event) @@ -37,7 +37,7 @@ void SkinOpenGLWidget::mouseMoveEvent(QMouseEvent* event) m_rotationX += dy; m_rotationY += dx; - m_mousePosition = QVector2D(event->position()); + m_mousePosition = QVector2D(event->pos()); update(); // Trigger a repaint } } From 5ba4b3a32ff729cddab35b0dad0c073e3b03fcc2 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 10 Jan 2025 15:31:57 +0200 Subject: [PATCH 473/616] add licence header Signed-off-by: Trial97 --- .../ui/dialogs/skins/SkinManageDialog.cpp | 2 +- launcher/ui/dialogs/skins/SkinManageDialog.h | 2 +- .../ui/dialogs/skins/draw/BoxGeometry.cpp | 26 +++++++++++++++---- launcher/ui/dialogs/skins/draw/BoxGeometry.h | 18 +++++++++++++ launcher/ui/dialogs/skins/draw/Scene.cpp | 18 +++++++++++++ launcher/ui/dialogs/skins/draw/Scene.h | 18 +++++++++++++ .../dialogs/skins/draw/SkinOpenGLWidget.cpp | 18 +++++++++++++ .../ui/dialogs/skins/draw/SkinOpenGLWidget.h | 18 +++++++++++++ 8 files changed, 113 insertions(+), 7 deletions(-) diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.cpp b/launcher/ui/dialogs/skins/SkinManageDialog.cpp index 7f29bd7c8..bace07c6b 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.cpp +++ b/launcher/ui/dialogs/skins/SkinManageDialog.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.h b/launcher/ui/dialogs/skins/SkinManageDialog.h index fae96cd98..cb3e494d8 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.h +++ b/launcher/ui/dialogs/skins/SkinManageDialog.h @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-3.0-only /* * Prism Launcher - Minecraft Launcher - * Copyright (c) 2023 Trial97 + * Copyright (c) 2023-2024 Trial97 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by diff --git a/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp b/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp index 507c13e86..9a5ad1ce2 100644 --- a/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp +++ b/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp @@ -1,3 +1,20 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ #include "BoxGeometry.h" @@ -212,7 +229,6 @@ void BoxGeometry::draw(QOpenGLShaderProgram* program) void BoxGeometry::initGeometry(float u, float v, float width, float height, float depth, float textureWidth, float textureHeight) { - // auto positions = getVericles(m_size, m_position); auto textureCord = getCubeUVs(u, v, width, height, depth, textureWidth, textureHeight); // this should not be needed to be done on each render for most of the objects @@ -221,16 +237,16 @@ void BoxGeometry::initGeometry(float u, float v, float width, float height, floa transformation.scale(m_size); auto positions = transformVectors(transformation, vertices); - QVector vertices; - vertices.reserve(positions.size()); // Reserve space for efficiency + QVector verticesData; + verticesData.reserve(positions.size()); // Reserve space for efficiency for (int i = 0; i < positions.size(); ++i) { - vertices.append(VertexData(positions[i], textureCord[i])); + verticesData.append(VertexData(positions[i], textureCord[i])); } // Transfer vertex data to VBO 0 m_vertexBuf.bind(); - m_vertexBuf.allocate(vertices.constData(), vertices.size() * sizeof(VertexData)); + m_vertexBuf.allocate(verticesData.constData(), verticesData.size() * sizeof(VertexData)); // Transfer index data to VBO 1 m_indexBuf.bind(); diff --git a/launcher/ui/dialogs/skins/draw/BoxGeometry.h b/launcher/ui/dialogs/skins/draw/BoxGeometry.h index d706edc6f..1a245bc14 100644 --- a/launcher/ui/dialogs/skins/draw/BoxGeometry.h +++ b/launcher/ui/dialogs/skins/draw/BoxGeometry.h @@ -1,3 +1,21 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once #include diff --git a/launcher/ui/dialogs/skins/draw/Scene.cpp b/launcher/ui/dialogs/skins/draw/Scene.cpp index 4512b0c83..da5a891d5 100644 --- a/launcher/ui/dialogs/skins/draw/Scene.cpp +++ b/launcher/ui/dialogs/skins/draw/Scene.cpp @@ -1,4 +1,22 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "ui/dialogs/skins/draw/Scene.h" namespace opengl { Scene::Scene(const QImage& skin, bool slim, const QImage& cape) : m_slim(slim), m_capeVisible(!cape.isNull()) diff --git a/launcher/ui/dialogs/skins/draw/Scene.h b/launcher/ui/dialogs/skins/draw/Scene.h index 8f97e7472..de683a659 100644 --- a/launcher/ui/dialogs/skins/draw/Scene.h +++ b/launcher/ui/dialogs/skins/draw/Scene.h @@ -1,3 +1,21 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once #include "ui/dialogs/skins/draw/BoxGeometry.h" diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp index 3f2ddf717..a4c6c4f2d 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp @@ -1,3 +1,21 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #include "ui/dialogs/skins/draw/SkinOpenGLWidget.h" #include diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h index 6a3f68637..417ab87dc 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h @@ -1,3 +1,21 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2024 Trial97 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + #pragma once #include From 1b98c6994832c6eb074e15637b53076282ac409f Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 10 Jan 2025 17:30:00 +0200 Subject: [PATCH 474/616] generate skin preview Signed-off-by: Trial97 --- launcher/minecraft/skins/SkinList.cpp | 9 +- launcher/minecraft/skins/SkinModel.cpp | 106 +++++++++++++++++- launcher/minecraft/skins/SkinModel.h | 3 + .../dialogs/skins/draw/SkinOpenGLWidget.cpp | 1 + 4 files changed, 116 insertions(+), 3 deletions(-) diff --git a/launcher/minecraft/skins/SkinList.cpp b/launcher/minecraft/skins/SkinList.cpp index 2294daefc..124b69c85 100644 --- a/launcher/minecraft/skins/SkinList.cpp +++ b/launcher/minecraft/skins/SkinList.cpp @@ -239,8 +239,13 @@ QVariant SkinList::data(const QModelIndex& index, int role) const return QVariant(); auto skin = m_skinList[row]; switch (role) { - case Qt::DecorationRole: - return skin.getTexture(); + case Qt::DecorationRole: { + auto preview = skin.getPreview(); + if (preview.isNull()) { + preview = skin.getTexture(); + } + return preview; + } case Qt::DisplayRole: return skin.name(); case Qt::UserRole: diff --git a/launcher/minecraft/skins/SkinModel.cpp b/launcher/minecraft/skins/SkinModel.cpp index 63e497585..5912f7572 100644 --- a/launcher/minecraft/skins/SkinModel.cpp +++ b/launcher/minecraft/skins/SkinModel.cpp @@ -18,10 +18,13 @@ #include "SkinModel.h" #include +#include +#include #include #include "FileSystem.h" #include "Json.h" +#include "ui/dialogs/skins/draw/Scene.h" QImage improveSkin(const QImage& skin) { @@ -45,7 +48,106 @@ QImage getSkin(const QString path) return improveSkin(QImage(path)); } -SkinModel::SkinModel(QString path) : m_path(path), m_texture(getSkin(path)), m_model(Model::CLASSIC) {} +QImage generatePreviews(QImage texture, bool slim) +{ + QImage preview; + + // Set up OpenGL context and offscreen surface + QOpenGLContext context; + context.setFormat(QSurfaceFormat::defaultFormat()); + if (!context.create()) { + qWarning() << "Failed to create OpenGL context"; + return preview; + } + + QOffscreenSurface surface; + surface.setFormat(context.format()); + surface.create(); + + // Make the OpenGL context current + context.makeCurrent(&surface); + + QOpenGLFunctions* gl = context.functions(); + QOpenGLFramebufferObjectFormat fboFormat; + fboFormat.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil); + + QOpenGLShaderProgram program; + // Compile vertex shader + if (!program.addCacheableShaderFromSourceFile(QOpenGLShader::Vertex, ":/shaders/vshader.glsl")) { + qWarning() << "Failed to create vertex"; + return preview; + } + // Compile fragment shader + if (!program.addCacheableShaderFromSourceFile(QOpenGLShader::Fragment, ":/shaders/fshader.glsl")) { + qWarning() << "Failed to create fragment"; + return preview; + } + // Link shader pipeline + if (!program.link()) { + qWarning() << "Failed to create link"; + return preview; + } + // Bind shader pipeline for use + if (!program.bind()) { + qWarning() << "Failed to create bind"; + return preview; + } + auto scene = new opengl::Scene(texture, slim, {}); + + const qreal zNear = .1, zFar = 1000., fov = 45, aspect = 1; + + // Reset projection + QMatrix4x4 m_projection; + m_projection.setToIdentity(); + + // Set perspective projection + m_projection.perspective(fov, aspect, zNear, zFar); + + // Calculate model view transformation + QMatrix4x4 matrix; + matrix.translate(0.0, 6.0, -50.); + + // Create a framebuffer object for rendering + QOpenGLFramebufferObject fbo(64, 64, fboFormat); + fbo.bind(); + + // Clear the framebuffer + gl->glViewport(0, 0, 64, 64); + gl->glClearColor(0.0f, 0.0f, 0.0f, 1.0f); + // Clear color and depth buffer + gl->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); + + // Enable depth buffer + gl->glEnable(GL_DEPTH_TEST); + gl->glDepthFunc(GL_LESS); + + // Enable back face culling + gl->glEnable(GL_CULL_FACE); + + gl->glEnable(GL_BLEND); + gl->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + // Set modelview-projection matrix + program.setUniformValue("mvp_matrix", m_projection * matrix); + + // scene->setMode(skin->getModel() == SkinModel::SLIM); + // scene->setSkin(skin->getTexture()); + + scene->draw(&program); + + // Read the framebuffer into a QImage + preview = fbo.toImage(); + + fbo.release(); + delete scene; + context.doneCurrent(); + return preview; +} + +SkinModel::SkinModel(QString path) : m_path(path), m_texture(getSkin(path)), m_model(Model::CLASSIC) +{ + m_preview = generatePreviews(m_texture, false); +} SkinModel::SkinModel(QDir skinDir, QJsonObject obj) : m_capeId(Json::ensureString(obj, "capeId")), m_model(Model::CLASSIC), m_url(Json::ensureString(obj, "url")) @@ -57,6 +159,7 @@ SkinModel::SkinModel(QDir skinDir, QJsonObject obj) } m_path = skinDir.absoluteFilePath(name) + ".png"; m_texture = QImage(getSkin(m_path)); + m_preview = generatePreviews(m_texture, m_model == Model::SLIM); } QString SkinModel::name() const @@ -99,4 +202,5 @@ bool SkinModel::isValid() const void SkinModel::refresh() { m_texture = getSkin(m_path); + m_preview = generatePreviews(m_texture, m_model == Model::SLIM); } diff --git a/launcher/minecraft/skins/SkinModel.h b/launcher/minecraft/skins/SkinModel.h index 9b2dada45..028df01f8 100644 --- a/launcher/minecraft/skins/SkinModel.h +++ b/launcher/minecraft/skins/SkinModel.h @@ -36,6 +36,7 @@ class SkinModel { bool isValid() const; QString getPath() const { return m_path; } QImage getTexture() const { return m_texture; } + QImage getPreview() const { return m_preview; } QString getCapeId() const { return m_capeId; } Model getModel() const { return m_model; } QString getURL() const { return m_url; } @@ -44,6 +45,7 @@ class SkinModel { void setCapeId(QString capeID) { m_capeId = capeID; } void setModel(Model model) { m_model = model; } void setURL(QString url) { m_url = url; } + void setPreview(const QImage& preview) { m_preview = preview; } void refresh(); QJsonObject toJSON() const; @@ -51,6 +53,7 @@ class SkinModel { private: QString m_path; QImage m_texture; + QImage m_preview; QString m_capeId; Model m_model; QString m_url; diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp index a4c6c4f2d..ace085e31 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp @@ -22,6 +22,7 @@ #include #include #include + #include "minecraft/skins/SkinModel.h" #include "ui/dialogs/skins/SkinManageDialog.h" #include "ui/dialogs/skins/draw/BoxGeometry.h" From 54da41c6253ddd8af20ff30044a208c9b529db7c Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 11 Jan 2025 22:11:18 +0000 Subject: [PATCH 475/616] chore(deps): update hendrikmuhs/ccache-action action to v1.2.16 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0770b66dd..f9469be2e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -167,7 +167,7 @@ jobs: - name: Setup ccache if: (runner.os != 'Windows' || matrix.msystem == '') && inputs.build_type == 'Debug' - uses: hendrikmuhs/ccache-action@v1.2.14 + uses: hendrikmuhs/ccache-action@v1.2.16 with: key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}-${{ matrix.architecture }} From 03834e14558475bafd542ad1365f35cce243682f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 12 Jan 2025 00:26:01 +0000 Subject: [PATCH 476/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65?narHash=sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk%3D' (2025-01-02) → 'github:NixOS/nixpkgs/bffc22eb12172e6db3c5dde9e3e5628f8e3e7912?narHash=sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc%2Bc2c%3D' (2025-01-08) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index c2f37cf0d..3ab2fcd67 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1735834308, - "narHash": "sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk=", + "lastModified": 1736344531, + "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6df24922a1400241dae323af55f30e4318a6ca65", + "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", "type": "github" }, "original": { From 3ee73916ca31666abc48f45e8b0bfcf8d678e6cf Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 13 Jan 2025 08:16:12 +0200 Subject: [PATCH 477/616] fix modrinth link Signed-off-by: Trial97 --- launcher/ui/pages/global/APIPage.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/global/APIPage.ui b/launcher/ui/pages/global/APIPage.ui index 9c713aa79..05c256bb2 100644 --- a/launcher/ui/pages/global/APIPage.ui +++ b/launcher/ui/pages/global/APIPage.ui @@ -207,7 +207,7 @@ - <html><head/><body><p>Note: you only need to set this to access private data. Read the <a href="https://docs.modrinth.com/#section/Authentication">documentation</a> for more information.</p></body></html> + <html><head/><body><p>Note: you only need to set this to access private data. Read the <a href="https://docs.modrinth.com/api/#authentication">documentation</a> for more information.</p></body></html> true From e4ad4051c8b87bd5102a76a860408de2b447d74d Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 13 Jan 2025 13:56:55 +0200 Subject: [PATCH 478/616] fix curseforge with empty loader as newest version Signed-off-by: Trial97 --- launcher/modplatform/flame/FlameAPI.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/launcher/modplatform/flame/FlameAPI.cpp b/launcher/modplatform/flame/FlameAPI.cpp index 53eadcf02..699eb792a 100644 --- a/launcher/modplatform/flame/FlameAPI.cpp +++ b/launcher/modplatform/flame/FlameAPI.cpp @@ -270,6 +270,7 @@ std::optional FlameAPI::getLatestVersion(QList instanceLoaders, ModPlatform::ModLoaderTypes modLoaders) { + static const auto noLoader = ModPlatform::ModLoaderType(0); QHash bestMatch; auto checkVersion = [&bestMatch](const ModPlatform::IndexedVersion& version, const ModPlatform::ModLoaderType& loader) { if (bestMatch.contains(loader)) { @@ -284,7 +285,7 @@ std::optional FlameAPI::getLatestVersion(QList FlameAPI::getLatestVersion(QList fabric version will be prioritizated on update auto currentLoaders = instanceLoaders + ModPlatform::modLoaderTypesToList(modLoaders); - currentLoaders.append(ModPlatform::ModLoaderType(0)); // add a fallback in case the versions do not define a loader + currentLoaders.append(noLoader); // add a fallback in case the versions do not define a loader for (auto loader : currentLoaders) { if (bestMatch.contains(loader)) { - return bestMatch.value(loader); + auto bestForLoader = bestMatch.value(loader); + // awkward case where the mod has only two loaders and one of them is not specified + if (loader != noLoader && bestMatch.contains(noLoader) && bestMatch.size() == 2) { + auto bestForNoLoader = bestMatch.value(noLoader); + if (bestForNoLoader.date > bestForLoader.date) { + return bestForNoLoader; + } + } + return bestForLoader; } } return {}; From 2292df16cc2009835829babd9fa103c3a302378d Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 14 Jan 2025 18:48:20 +0200 Subject: [PATCH 479/616] some renames Signed-off-by: Trial97 --- launcher/FileIgnoreProxy.cpp | 29 ++++++------ launcher/FileIgnoreProxy.h | 8 ++-- launcher/ui/dialogs/ExportInstanceDialog.cpp | 46 ++++++++++---------- launcher/ui/dialogs/ExportInstanceDialog.h | 6 +-- 4 files changed, 44 insertions(+), 45 deletions(-) diff --git a/launcher/FileIgnoreProxy.cpp b/launcher/FileIgnoreProxy.cpp index df06c3c75..cf716b8d1 100644 --- a/launcher/FileIgnoreProxy.cpp +++ b/launcher/FileIgnoreProxy.cpp @@ -40,12 +40,11 @@ #include #include #include -#include #include "FileSystem.h" #include "SeparatorPrefixTree.h" #include "StringUtils.h" -FileIgnoreProxy::FileIgnoreProxy(QString root, QObject* parent) : QSortFilterProxyModel(parent), root(root) {} +FileIgnoreProxy::FileIgnoreProxy(QString root, QObject* parent) : QSortFilterProxyModel(parent), m_root(root) {} // NOTE: Sadly, we have to do sorting ourselves. bool FileIgnoreProxy::lessThan(const QModelIndex& left, const QModelIndex& right) const { @@ -104,10 +103,10 @@ QVariant FileIgnoreProxy::data(const QModelIndex& index, int role) const if (index.column() == 0 && role == Qt::CheckStateRole) { QFileSystemModel* fsm = qobject_cast(sourceModel()); auto blockedPath = relPath(fsm->filePath(sourceIndex)); - auto cover = blocked.cover(blockedPath); + auto cover = m_blocked.cover(blockedPath); if (!cover.isNull()) { return QVariant(Qt::Unchecked); - } else if (blocked.exists(blockedPath)) { + } else if (m_blocked.exists(blockedPath)) { return QVariant(Qt::PartiallyChecked); } else { return QVariant(Qt::Checked); @@ -130,7 +129,7 @@ bool FileIgnoreProxy::setData(const QModelIndex& index, const QVariant& value, i QString FileIgnoreProxy::relPath(const QString& path) const { - return QDir(root).relativeFilePath(path); + return QDir(m_root).relativeFilePath(path); } bool FileIgnoreProxy::setFilterState(QModelIndex index, Qt::CheckState state) @@ -146,18 +145,18 @@ bool FileIgnoreProxy::setFilterState(QModelIndex index, Qt::CheckState state) bool changed = false; if (state == Qt::Unchecked) { // blocking a path - auto& node = blocked.insert(blockedPath); + auto& node = m_blocked.insert(blockedPath); // get rid of all blocked nodes below node.clear(); changed = true; } else if (state == Qt::Checked || state == Qt::PartiallyChecked) { - if (!blocked.remove(blockedPath)) { - auto cover = blocked.cover(blockedPath); + if (!m_blocked.remove(blockedPath)) { + auto cover = m_blocked.cover(blockedPath); qDebug() << "Blocked by cover" << cover; // uncover - blocked.remove(cover); + m_blocked.remove(cover); // block all contents, except for any cover - QModelIndex rootIndex = fsm->index(FS::PathCombine(root, cover)); + QModelIndex rootIndex = fsm->index(FS::PathCombine(m_root, cover)); QModelIndex doing = rootIndex; int row = 0; QStack todo; @@ -179,7 +178,7 @@ bool FileIgnoreProxy::setFilterState(QModelIndex index, Qt::CheckState state) todo.push(node); } else { // or just block this one. - blocked.insert(relpath); + m_blocked.insert(relpath); } row++; } @@ -229,7 +228,7 @@ bool FileIgnoreProxy::shouldExpand(QModelIndex index) return false; } auto blockedPath = relPath(fsm->filePath(sourceIndex)); - auto found = blocked.find(blockedPath); + auto found = m_blocked.find(blockedPath); if (found) { return !found->leaf(); } @@ -239,8 +238,8 @@ bool FileIgnoreProxy::shouldExpand(QModelIndex index) void FileIgnoreProxy::setBlockedPaths(QStringList paths) { beginResetModel(); - blocked.clear(); - blocked.insert(paths); + m_blocked.clear(); + m_blocked.insert(paths); endResetModel(); } @@ -272,5 +271,5 @@ bool FileIgnoreProxy::ignoreFile(QFileInfo fileInfo) const bool FileIgnoreProxy::filterFile(const QString& fileName) const { - return blocked.covers(fileName) || ignoreFile(QFileInfo(QDir(root), fileName)); + return m_blocked.covers(fileName) || ignoreFile(QFileInfo(QDir(m_root), fileName)); } diff --git a/launcher/FileIgnoreProxy.h b/launcher/FileIgnoreProxy.h index e01a2651e..a633739c6 100644 --- a/launcher/FileIgnoreProxy.h +++ b/launcher/FileIgnoreProxy.h @@ -61,8 +61,8 @@ class FileIgnoreProxy : public QSortFilterProxyModel { void setBlockedPaths(QStringList paths); - inline const SeparatorPrefixTree<'/'>& blockedPaths() const { return blocked; } - inline SeparatorPrefixTree<'/'>& blockedPaths() { return blocked; } + inline const SeparatorPrefixTree<'/'>& blockedPaths() const { return m_blocked; } + inline SeparatorPrefixTree<'/'>& blockedPaths() { return m_blocked; } // list of file names that need to be removed completely from model inline QStringList& ignoreFilesWithName() { return m_ignoreFiles; } @@ -78,8 +78,8 @@ class FileIgnoreProxy : public QSortFilterProxyModel { bool ignoreFile(QFileInfo file) const; private: - const QString root; - SeparatorPrefixTree<'/'> blocked; + const QString m_root; + SeparatorPrefixTree<'/'> m_blocked; QStringList m_ignoreFiles; SeparatorPrefixTree<'/'> m_ignoreFilePaths; }; diff --git a/launcher/ui/dialogs/ExportInstanceDialog.cpp b/launcher/ui/dialogs/ExportInstanceDialog.cpp index d25cd32b6..2e5880540 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.cpp +++ b/launcher/ui/dialogs/ExportInstanceDialog.cpp @@ -60,40 +60,40 @@ #include "SeparatorPrefixTree.h" ExportInstanceDialog::ExportInstanceDialog(InstancePtr instance, QWidget* parent) - : QDialog(parent), ui(new Ui::ExportInstanceDialog), m_instance(instance) + : QDialog(parent), m_ui(new Ui::ExportInstanceDialog), m_instance(instance) { - ui->setupUi(this); + m_ui->setupUi(this); auto model = new QFileSystemModel(this); - model->setIconProvider(&icons); + model->setIconProvider(&m_icons); auto root = instance->instanceRoot(); - proxyModel = new FileIgnoreProxy(root, this); - proxyModel->setSourceModel(model); + m_proxyModel = new FileIgnoreProxy(root, this); + m_proxyModel->setSourceModel(model); auto prefix = QDir(instance->instanceRoot()).relativeFilePath(instance->gameRoot()); - proxyModel->ignoreFilesWithPath().insert({ FS::PathCombine(prefix, "logs"), FS::PathCombine(prefix, "crash-reports") }); - proxyModel->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); - proxyModel->ignoreFilesWithPath().insert( + m_proxyModel->ignoreFilesWithPath().insert({ FS::PathCombine(prefix, "logs"), FS::PathCombine(prefix, "crash-reports") }); + m_proxyModel->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); + m_proxyModel->ignoreFilesWithPath().insert( { FS::PathCombine(prefix, ".cache"), FS::PathCombine(prefix, ".fabric"), FS::PathCombine(prefix, ".quilt") }); loadPackIgnore(); - ui->treeView->setModel(proxyModel); - ui->treeView->setRootIndex(proxyModel->mapFromSource(model->index(root))); - ui->treeView->sortByColumn(0, Qt::AscendingOrder); + m_ui->treeView->setModel(m_proxyModel); + m_ui->treeView->setRootIndex(m_proxyModel->mapFromSource(model->index(root))); + m_ui->treeView->sortByColumn(0, Qt::AscendingOrder); - connect(proxyModel, SIGNAL(rowsInserted(QModelIndex, int, int)), SLOT(rowsInserted(QModelIndex, int, int))); + connect(m_proxyModel, SIGNAL(rowsInserted(QModelIndex, int, int)), SLOT(rowsInserted(QModelIndex, int, int))); model->setFilter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); model->setRootPath(root); - auto headerView = ui->treeView->header(); + auto headerView = m_ui->treeView->header(); headerView->setSectionResizeMode(QHeaderView::ResizeToContents); headerView->setSectionResizeMode(0, QHeaderView::Stretch); - ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); - ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); + m_ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + m_ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } ExportInstanceDialog::~ExportInstanceDialog() { - delete ui; + delete m_ui; } /// Save icon to instance's folder is needed @@ -144,7 +144,7 @@ void ExportInstanceDialog::doExport() auto files = QFileInfoList(); if (!MMCZip::collectFileListRecursively(m_instance->instanceRoot(), nullptr, &files, - std::bind(&FileIgnoreProxy::filterFile, proxyModel, std::placeholders::_1))) { + std::bind(&FileIgnoreProxy::filterFile, m_proxyModel, std::placeholders::_1))) { QMessageBox::warning(this, tr("Error"), tr("Unable to export instance")); QDialog::done(QDialog::Rejected); return; @@ -176,13 +176,13 @@ void ExportInstanceDialog::rowsInserted(QModelIndex parent, int top, int bottom) { // WARNING: possible off-by-one? for (int i = top; i < bottom; i++) { - auto node = proxyModel->index(i, 0, parent); - if (proxyModel->shouldExpand(node)) { + auto node = m_proxyModel->index(i, 0, parent); + if (m_proxyModel->shouldExpand(node)) { auto expNode = node.parent(); if (!expNode.isValid()) { continue; } - ui->treeView->expand(node); + m_ui->treeView->expand(node); } } } @@ -202,15 +202,15 @@ void ExportInstanceDialog::loadPackIgnore() auto ignoreData = ignoreFile.readAll(); auto string = QString::fromUtf8(ignoreData); #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - proxyModel->setBlockedPaths(string.split('\n', Qt::SkipEmptyParts)); + m_proxyModel->setBlockedPaths(string.split('\n', Qt::SkipEmptyParts)); #else - proxyModel->setBlockedPaths(string.split('\n', QString::SkipEmptyParts)); + m_proxyModel->setBlockedPaths(string.split('\n', QString::SkipEmptyParts)); #endif } void ExportInstanceDialog::savePackIgnore() { - auto ignoreData = proxyModel->blockedPaths().toStringList().join('\n').toUtf8(); + auto ignoreData = m_proxyModel->blockedPaths().toStringList().join('\n').toUtf8(); auto filename = ignoreFileName(); try { FS::write(filename, ignoreData); diff --git a/launcher/ui/dialogs/ExportInstanceDialog.h b/launcher/ui/dialogs/ExportInstanceDialog.h index 183681f57..b74550033 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.h +++ b/launcher/ui/dialogs/ExportInstanceDialog.h @@ -65,10 +65,10 @@ class ExportInstanceDialog : public QDialog { QString ignoreFileName(); private: - Ui::ExportInstanceDialog* ui; + Ui::ExportInstanceDialog* m_ui; InstancePtr m_instance; - FileIgnoreProxy* proxyModel; - FastFileIconProvider icons; + FileIgnoreProxy* m_proxyModel; + FastFileIconProvider m_icons; private slots: void rowsInserted(QModelIndex parent, int top, int bottom); From f6622a4cbbfce8eb382088fe470fe9152c3f5109 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 14 Jan 2025 18:48:41 +0200 Subject: [PATCH 480/616] implement packignore for curseforge/modrinth export Signed-off-by: Trial97 --- launcher/ui/dialogs/ExportPackDialog.cpp | 117 +++++++++++++++-------- launcher/ui/dialogs/ExportPackDialog.h | 13 ++- 2 files changed, 84 insertions(+), 46 deletions(-) diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index 879d19a53..846c11a1a 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -29,104 +29,105 @@ #include #include #include -#include "FastFileIconProvider.h" #include "FileSystem.h" #include "MMCZip.h" #include "modplatform/modrinth/ModrinthPackExportTask.h" ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPlatform::ResourceProvider provider) - : QDialog(parent), instance(instance), ui(new Ui::ExportPackDialog), m_provider(provider) + : QDialog(parent), m_instance(instance), m_ui(new Ui::ExportPackDialog), m_provider(provider) { Q_ASSERT(m_provider == ModPlatform::ResourceProvider::MODRINTH || m_provider == ModPlatform::ResourceProvider::FLAME); - ui->setupUi(this); - ui->name->setPlaceholderText(instance->name()); - ui->name->setText(instance->settings()->get("ExportName").toString()); - ui->version->setText(instance->settings()->get("ExportVersion").toString()); - ui->optionalFiles->setChecked(instance->settings()->get("ExportOptionalFiles").toBool()); + m_ui->setupUi(this); + m_ui->name->setPlaceholderText(instance->name()); + m_ui->name->setText(instance->settings()->get("ExportName").toString()); + m_ui->version->setText(instance->settings()->get("ExportVersion").toString()); + m_ui->optionalFiles->setChecked(instance->settings()->get("ExportOptionalFiles").toBool()); if (m_provider == ModPlatform::ResourceProvider::MODRINTH) { setWindowTitle(tr("Export Modrinth Pack")); - ui->authorLabel->hide(); - ui->author->hide(); + m_ui->authorLabel->hide(); + m_ui->author->hide(); - ui->summary->setPlainText(instance->settings()->get("ExportSummary").toString()); + m_ui->summary->setPlainText(instance->settings()->get("ExportSummary").toString()); } else { setWindowTitle(tr("Export CurseForge Pack")); - ui->summaryLabel->hide(); - ui->summary->hide(); + m_ui->summaryLabel->hide(); + m_ui->summary->hide(); - ui->author->setText(instance->settings()->get("ExportAuthor").toString()); + m_ui->author->setText(instance->settings()->get("ExportAuthor").toString()); } // ensure a valid pack is generated // the name and version fields mustn't be empty - connect(ui->name, &QLineEdit::textEdited, this, &ExportPackDialog::validate); - connect(ui->version, &QLineEdit::textEdited, this, &ExportPackDialog::validate); + connect(m_ui->name, &QLineEdit::textEdited, this, &ExportPackDialog::validate); + connect(m_ui->version, &QLineEdit::textEdited, this, &ExportPackDialog::validate); // the instance name can technically be empty validate(); QFileSystemModel* model = new QFileSystemModel(this); - model->setIconProvider(&icons); + model->setIconProvider(&m_icons); // use the game root - everything outside cannot be exported const QDir root(instance->gameRoot()); - proxy = new FileIgnoreProxy(instance->gameRoot(), this); - proxy->ignoreFilesWithPath().insert({ "logs", "crash-reports", ".cache", ".fabric", ".quilt" }); - proxy->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); - proxy->setSourceModel(model); + m_proxy = new FileIgnoreProxy(instance->gameRoot(), this); + m_proxy->ignoreFilesWithPath().insert({ "logs", "crash-reports", ".cache", ".fabric", ".quilt" }); + m_proxy->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); + m_proxy->setSourceModel(model); + loadPackIgnore(); const QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); for (const QString& file : root.entryList(filter)) { if (!(file == "mods" || file == "coremods" || file == "datapacks" || file == "config" || file == "options.txt" || file == "servers.dat")) - proxy->blockedPaths().insert(file); + m_proxy->blockedPaths().insert(file); } MinecraftInstance* mcInstance = dynamic_cast(instance.get()); if (mcInstance) { for (auto& resourceModel : mcInstance->resourceLists()) if (resourceModel->indexDir().exists()) - proxy->ignoreFilesWithPath().insert(root.relativeFilePath(resourceModel->indexDir().absolutePath())); + m_proxy->ignoreFilesWithPath().insert(root.relativeFilePath(resourceModel->indexDir().absolutePath())); } - ui->files->setModel(proxy); - ui->files->setRootIndex(proxy->mapFromSource(model->index(instance->gameRoot()))); - ui->files->sortByColumn(0, Qt::AscendingOrder); + m_ui->files->setModel(m_proxy); + m_ui->files->setRootIndex(m_proxy->mapFromSource(model->index(instance->gameRoot()))); + m_ui->files->sortByColumn(0, Qt::AscendingOrder); model->setFilter(filter); model->setRootPath(instance->gameRoot()); - QHeaderView* headerView = ui->files->header(); + QHeaderView* headerView = m_ui->files->header(); headerView->setSectionResizeMode(QHeaderView::ResizeToContents); headerView->setSectionResizeMode(0, QHeaderView::Stretch); - ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); - ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); + m_ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + m_ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } ExportPackDialog::~ExportPackDialog() { - delete ui; + delete m_ui; } void ExportPackDialog::done(int result) { - auto settings = instance->settings(); - settings->set("ExportName", ui->name->text()); - settings->set("ExportVersion", ui->version->text()); - settings->set("ExportOptionalFiles", ui->optionalFiles->isChecked()); + savePackIgnore(); + auto settings = m_instance->settings(); + settings->set("ExportName", m_ui->name->text()); + settings->set("ExportVersion", m_ui->version->text()); + settings->set("ExportOptionalFiles", m_ui->optionalFiles->isChecked()); if (m_provider == ModPlatform::ResourceProvider::MODRINTH) - settings->set("ExportSummary", ui->summary->toPlainText()); + settings->set("ExportSummary", m_ui->summary->toPlainText()); else - settings->set("ExportAuthor", ui->author->text()); + settings->set("ExportAuthor", m_ui->author->text()); if (result == Accepted) { - const QString name = ui->name->text().isEmpty() ? instance->name() : ui->name->text(); + const QString name = m_ui->name->text().isEmpty() ? m_instance->name() : m_ui->name->text(); const QString filename = FS::RemoveInvalidFilenameChars(name); QString output; @@ -148,11 +149,11 @@ void ExportPackDialog::done(int result) Task* task; if (m_provider == ModPlatform::ResourceProvider::MODRINTH) { - task = new ModrinthPackExportTask(name, ui->version->text(), ui->summary->toPlainText(), ui->optionalFiles->isChecked(), - instance, output, std::bind(&FileIgnoreProxy::filterFile, proxy, std::placeholders::_1)); + task = new ModrinthPackExportTask(name, m_ui->version->text(), m_ui->summary->toPlainText(), m_ui->optionalFiles->isChecked(), + m_instance, output, std::bind(&FileIgnoreProxy::filterFile, m_proxy, std::placeholders::_1)); } else { - task = new FlamePackExportTask(name, ui->version->text(), ui->author->text(), ui->optionalFiles->isChecked(), instance, output, - std::bind(&FileIgnoreProxy::filterFile, proxy, std::placeholders::_1)); + task = new FlamePackExportTask(name, m_ui->version->text(), m_ui->author->text(), m_ui->optionalFiles->isChecked(), m_instance, + output, std::bind(&FileIgnoreProxy::filterFile, m_proxy, std::placeholders::_1)); } connect(task, &Task::failed, @@ -174,6 +175,38 @@ void ExportPackDialog::done(int result) void ExportPackDialog::validate() { - ui->buttonBox->button(QDialogButtonBox::Ok) - ->setDisabled(m_provider == ModPlatform::ResourceProvider::MODRINTH && ui->version->text().isEmpty()); + m_ui->buttonBox->button(QDialogButtonBox::Ok) + ->setDisabled(m_provider == ModPlatform::ResourceProvider::MODRINTH && m_ui->version->text().isEmpty()); +} + +QString ExportPackDialog::ignoreFileName() +{ + return FS::PathCombine(m_instance->instanceRoot(), ".packignore"); +} + +void ExportPackDialog::loadPackIgnore() +{ + auto filename = ignoreFileName(); + QFile ignoreFile(filename); + if (!ignoreFile.open(QIODevice::ReadOnly)) { + return; + } + auto ignoreData = ignoreFile.readAll(); + auto string = QString::fromUtf8(ignoreData); +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + m_proxy->setBlockedPaths(string.split('\n', Qt::SkipEmptyParts)); +#else + m_proxy->setBlockedPaths(string.split('\n', QString::SkipEmptyParts)); +#endif +} + +void ExportPackDialog::savePackIgnore() +{ + auto ignoreData = m_proxy->blockedPaths().toStringList().join('\n').toUtf8(); + auto filename = ignoreFileName(); + try { + FS::write(filename, ignoreData); + } catch (const Exception& e) { + qWarning() << e.cause(); + } } diff --git a/launcher/ui/dialogs/ExportPackDialog.h b/launcher/ui/dialogs/ExportPackDialog.h index 830c24d25..8931922a9 100644 --- a/launcher/ui/dialogs/ExportPackDialog.h +++ b/launcher/ui/dialogs/ExportPackDialog.h @@ -41,9 +41,14 @@ class ExportPackDialog : public QDialog { void validate(); private: - const InstancePtr instance; - Ui::ExportPackDialog* ui; - FileIgnoreProxy* proxy; - FastFileIconProvider icons; + void loadPackIgnore(); + void savePackIgnore(); + QString ignoreFileName(); + + private: + const InstancePtr m_instance; + Ui::ExportPackDialog* m_ui; + FileIgnoreProxy* m_proxy; + FastFileIconProvider m_icons; const ModPlatform::ResourceProvider m_provider; }; From dbeb9879783ca39736d5bcc77a6c88b4296a3955 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 15 Jan 2025 17:59:24 +0200 Subject: [PATCH 481/616] improve skin preview Signed-off-by: Trial97 --- launcher/minecraft/skins/SkinModel.cpp | 137 ++++++------------ launcher/minecraft/skins/SkinModel.h | 3 +- launcher/ui/dialogs/skins/draw/Scene.cpp | 8 +- .../dialogs/skins/draw/SkinOpenGLWidget.cpp | 28 ++-- .../ui/dialogs/skins/draw/SkinOpenGLWidget.h | 2 +- 5 files changed, 70 insertions(+), 108 deletions(-) diff --git a/launcher/minecraft/skins/SkinModel.cpp b/launcher/minecraft/skins/SkinModel.cpp index 5912f7572..1358b47ea 100644 --- a/launcher/minecraft/skins/SkinModel.cpp +++ b/launcher/minecraft/skins/SkinModel.cpp @@ -18,13 +18,10 @@ #include "SkinModel.h" #include -#include -#include #include #include "FileSystem.h" #include "Json.h" -#include "ui/dialogs/skins/draw/Scene.h" QImage improveSkin(const QImage& skin) { @@ -50,100 +47,55 @@ QImage getSkin(const QString path) QImage generatePreviews(QImage texture, bool slim) { - QImage preview; + QImage preview(36, 36, QImage::Format_ARGB32); + preview.fill(Qt::transparent); + QPainter paint(&preview); - // Set up OpenGL context and offscreen surface - QOpenGLContext context; - context.setFormat(QSurfaceFormat::defaultFormat()); - if (!context.create()) { - qWarning() << "Failed to create OpenGL context"; - return preview; - } + // head + paint.drawImage(4, 2, texture.copy(8, 8, 8, 8)); + paint.drawImage(4, 2, texture.copy(40, 8, 8, 8)); + // torso + paint.drawImage(4, 10, texture.copy(20, 20, 8, 12)); + paint.drawImage(4, 10, texture.copy(20, 36, 8, 12)); + // right leg + paint.drawImage(4, 22, texture.copy(4, 20, 4, 12)); + paint.drawImage(4, 22, texture.copy(4, 36, 4, 12)); + // left leg + paint.drawImage(8, 22, texture.copy(4, 52, 4, 12)); + paint.drawImage(8, 22, texture.copy(20, 52, 4, 12)); - QOffscreenSurface surface; - surface.setFormat(context.format()); - surface.create(); + auto armWidth = slim ? 3 : 4; + auto armPosX = slim ? 1 : 0; + // right arm + paint.drawImage(armPosX, 10, texture.copy(44, 20, armWidth, 12)); + paint.drawImage(armPosX, 10, texture.copy(44, 36, armWidth, 12)); + // left arm + paint.drawImage(12, 10, texture.copy(36, 52, armWidth, 12)); + paint.drawImage(12, 10, texture.copy(52, 52, armWidth, 12)); - // Make the OpenGL context current - context.makeCurrent(&surface); + // back + // head + paint.drawImage(24, 2, texture.copy(24, 8, 8, 8)); + paint.drawImage(24, 2, texture.copy(56, 8, 8, 8)); + // torso + paint.drawImage(24, 10, texture.copy(32, 20, 8, 12)); + paint.drawImage(24, 10, texture.copy(32, 36, 8, 12)); + // right leg + paint.drawImage(24, 22, texture.copy(12, 20, 4, 12)); + paint.drawImage(24, 22, texture.copy(12, 36, 4, 12)); + // left leg + paint.drawImage(28, 22, texture.copy(12, 52, 4, 12)); + paint.drawImage(28, 22, texture.copy(28, 52, 4, 12)); - QOpenGLFunctions* gl = context.functions(); - QOpenGLFramebufferObjectFormat fboFormat; - fboFormat.setAttachment(QOpenGLFramebufferObject::CombinedDepthStencil); + // right arm + paint.drawImage(armPosX + 20, 10, texture.copy(48 + armWidth, 20, armWidth, 12)); + paint.drawImage(armPosX + 20, 10, texture.copy(48 + armWidth, 36, armWidth, 12)); + // left arm + paint.drawImage(32, 10, texture.copy(40 + armWidth, 52, armWidth, 12)); + paint.drawImage(32, 10, texture.copy(56 + armWidth, 52, armWidth, 12)); - QOpenGLShaderProgram program; - // Compile vertex shader - if (!program.addCacheableShaderFromSourceFile(QOpenGLShader::Vertex, ":/shaders/vshader.glsl")) { - qWarning() << "Failed to create vertex"; - return preview; - } - // Compile fragment shader - if (!program.addCacheableShaderFromSourceFile(QOpenGLShader::Fragment, ":/shaders/fshader.glsl")) { - qWarning() << "Failed to create fragment"; - return preview; - } - // Link shader pipeline - if (!program.link()) { - qWarning() << "Failed to create link"; - return preview; - } - // Bind shader pipeline for use - if (!program.bind()) { - qWarning() << "Failed to create bind"; - return preview; - } - auto scene = new opengl::Scene(texture, slim, {}); - - const qreal zNear = .1, zFar = 1000., fov = 45, aspect = 1; - - // Reset projection - QMatrix4x4 m_projection; - m_projection.setToIdentity(); - - // Set perspective projection - m_projection.perspective(fov, aspect, zNear, zFar); - - // Calculate model view transformation - QMatrix4x4 matrix; - matrix.translate(0.0, 6.0, -50.); - - // Create a framebuffer object for rendering - QOpenGLFramebufferObject fbo(64, 64, fboFormat); - fbo.bind(); - - // Clear the framebuffer - gl->glViewport(0, 0, 64, 64); - gl->glClearColor(0.0f, 0.0f, 0.0f, 1.0f); - // Clear color and depth buffer - gl->glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - - // Enable depth buffer - gl->glEnable(GL_DEPTH_TEST); - gl->glDepthFunc(GL_LESS); - - // Enable back face culling - gl->glEnable(GL_CULL_FACE); - - gl->glEnable(GL_BLEND); - gl->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - // Set modelview-projection matrix - program.setUniformValue("mvp_matrix", m_projection * matrix); - - // scene->setMode(skin->getModel() == SkinModel::SLIM); - // scene->setSkin(skin->getTexture()); - - scene->draw(&program); - - // Read the framebuffer into a QImage - preview = fbo.toImage(); - - fbo.release(); - delete scene; - context.doneCurrent(); return preview; } - SkinModel::SkinModel(QString path) : m_path(path), m_texture(getSkin(path)), m_model(Model::CLASSIC) { m_preview = generatePreviews(m_texture, false); @@ -204,3 +156,8 @@ void SkinModel::refresh() m_texture = getSkin(m_path); m_preview = generatePreviews(m_texture, m_model == Model::SLIM); } +void SkinModel::setModel(Model model) +{ + m_model = model; + m_preview = generatePreviews(m_texture, m_model == Model::SLIM); +} diff --git a/launcher/minecraft/skins/SkinModel.h b/launcher/minecraft/skins/SkinModel.h index 028df01f8..711d7edb8 100644 --- a/launcher/minecraft/skins/SkinModel.h +++ b/launcher/minecraft/skins/SkinModel.h @@ -43,9 +43,8 @@ class SkinModel { bool rename(QString newName); void setCapeId(QString capeID) { m_capeId = capeID; } - void setModel(Model model) { m_model = model; } + void setModel(Model model); void setURL(QString url) { m_url = url; } - void setPreview(const QImage& preview) { m_preview = preview; } void refresh(); QJsonObject toJSON() const; diff --git a/launcher/ui/dialogs/skins/draw/Scene.cpp b/launcher/ui/dialogs/skins/draw/Scene.cpp index da5a891d5..45d0ba191 100644 --- a/launcher/ui/dialogs/skins/draw/Scene.cpp +++ b/launcher/ui/dialogs/skins/draw/Scene.cpp @@ -46,11 +46,11 @@ Scene::Scene(const QImage& skin, bool slim, const QImage& cape) : m_slim(slim), m_slimArms = { // Right Arm - new opengl::BoxGeometry(QVector3D(4, 12, 3), QVector3D(-6, -6, 0), QPoint(40, 16), QVector3D(3, 12, 4)), - new opengl::BoxGeometry(QVector3D(4.5, 12.5, 3.5), QVector3D(-6, -6, 0), QPoint(40, 32), QVector3D(3, 12, 4)), + new opengl::BoxGeometry(QVector3D(3, 12, 4), QVector3D(-5.5, -6, 0), QPoint(40, 16), QVector3D(3, 12, 4)), + new opengl::BoxGeometry(QVector3D(3.5, 12.5, 4.5), QVector3D(-5.5, -6, 0), QPoint(40, 32), QVector3D(3, 12, 4)), // Left Arm - new opengl::BoxGeometry(QVector3D(4, 12, 3), QVector3D(6, -6, 0), QPoint(32, 48), QVector3D(3, 12, 4)), - new opengl::BoxGeometry(QVector3D(4.5, 12.5, 3.5), QVector3D(6, -6, 0), QPoint(48, 48), QVector3D(3, 12, 4)), + new opengl::BoxGeometry(QVector3D(3, 12, 4), QVector3D(5.5, -6, 0), QPoint(32, 48), QVector3D(3, 12, 4)), + new opengl::BoxGeometry(QVector3D(3.5, 12.5, 4.5), QVector3D(5.5, -6, 0), QPoint(48, 48), QVector3D(3, 12, 4)), }; m_cape = new opengl::BoxGeometry(QVector3D(10, 16, 1), QVector3D(0, -8, 2.5), QPoint(0, 0), QVector3D(10, 16, 1), QSize(64, 32)); diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp index ace085e31..7dc36f2f7 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp @@ -37,6 +37,11 @@ SkinOpenGLWidget::~SkinOpenGLWidget() delete m_background; m_backgroundTexture->destroy(); delete m_backgroundTexture; + if (m_program->isLinked()) { + m_program->release(); + } + m_program->removeAllShaders(); + delete m_program; doneCurrent(); } @@ -92,20 +97,21 @@ void SkinOpenGLWidget::initializeGL() void SkinOpenGLWidget::initShaders() { + m_program = new QOpenGLShaderProgram(this); // Compile vertex shader - if (!m_program.addCacheableShaderFromSourceFile(QOpenGLShader::Vertex, ":/shaders/vshader.glsl")) + if (!m_program->addCacheableShaderFromSourceFile(QOpenGLShader::Vertex, ":/shaders/vshader.glsl")) close(); // Compile fragment shader - if (!m_program.addCacheableShaderFromSourceFile(QOpenGLShader::Fragment, ":/shaders/fshader.glsl")) + if (!m_program->addCacheableShaderFromSourceFile(QOpenGLShader::Fragment, ":/shaders/fshader.glsl")) close(); // Link shader pipeline - if (!m_program.link()) + if (!m_program->link()) close(); // Bind shader pipeline for use - if (!m_program.bind()) + if (!m_program->bind()) close(); } @@ -138,7 +144,7 @@ void SkinOpenGLWidget::paintGL() glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - m_program.bind(); + m_program->bind(); renderBackground(); // Calculate model view transformation @@ -148,10 +154,10 @@ void SkinOpenGLWidget::paintGL() matrix.rotate(m_rotationY, 0.0f, 1.0f, 0.0f); // Set modelview-projection matrix - m_program.setUniformValue("mvp_matrix", m_projection * matrix); + m_program->setUniformValue("mvp_matrix", m_projection * matrix); - m_scene->draw(&m_program); - m_program.release(); + m_scene->draw(m_program); + m_program->release(); } void SkinOpenGLWidget::updateScene(SkinModel* skin) @@ -198,9 +204,9 @@ void SkinOpenGLWidget::renderBackground() glDepthMask(GL_FALSE); // Disable depth buffer writing m_backgroundTexture->bind(); QMatrix4x4 matrix; - m_program.setUniformValue("mvp_matrix", matrix); - m_program.setUniformValue("texture", 0); - m_background->draw(&m_program); + m_program->setUniformValue("mvp_matrix", matrix); + m_program->setUniformValue("texture", 0); + m_background->draw(m_program); m_backgroundTexture->release(); glDepthMask(GL_TRUE); // Re-enable depth buffer writing } diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h index 417ab87dc..4a0e5a447 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h @@ -53,7 +53,7 @@ class SkinOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { void renderBackground(); private: - QOpenGLShaderProgram m_program; + QOpenGLShaderProgram* m_program; opengl::Scene* m_scene = nullptr; QMatrix4x4 m_projection; From c0525ebf4e7a1714eae15d13719ac0f7e50cedb1 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 15 Jan 2025 17:59:45 +0200 Subject: [PATCH 482/616] add wheel support for zoom Signed-off-by: Trial97 --- .../dialogs/skins/draw/SkinOpenGLWidget.cpp | 30 +++++++++++++++---- .../ui/dialogs/skins/draw/SkinOpenGLWidget.h | 5 +++- 2 files changed, 28 insertions(+), 7 deletions(-) diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp index 7dc36f2f7..f17b4e827 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp @@ -57,9 +57,14 @@ void SkinOpenGLWidget::mouseMoveEvent(QMouseEvent* event) int dx = event->x() - m_mousePosition.x(); int dy = event->y() - m_mousePosition.y(); - // Update rotation angles based on mouse movement - m_rotationX += dy; - m_rotationY += dx; + m_yaw += dx * 0.5f; + m_pitch += dy * 0.5f; + + // Normalize yaw to keep it manageable + if (m_yaw > 360.0f) + m_yaw -= 360.0f; + else if (m_yaw < 0.0f) + m_yaw += 360.0f; m_mousePosition = QVector2D(event->pos()); update(); // Trigger a repaint @@ -149,9 +154,13 @@ void SkinOpenGLWidget::paintGL() renderBackground(); // Calculate model view transformation QMatrix4x4 matrix; - matrix.translate(0.0, 6.0, -50.); - matrix.rotate(m_rotationX, 1.0f, 0.0f, 0.0f); - matrix.rotate(m_rotationY, 0.0f, 1.0f, 0.0f); + float yawRad = qDegreesToRadians(m_yaw); + float pitchRad = qDegreesToRadians(m_pitch); + matrix.lookAt(QVector3D( // + m_distance * cos(pitchRad) * cos(yawRad), // + m_distance * sin(pitchRad) - 8, // + m_distance * cos(pitchRad) * sin(yawRad)), + QVector3D(0, -8, 0), QVector3D(0, 1, 0)); // Set modelview-projection matrix m_program->setUniformValue("mvp_matrix", m_projection * matrix); @@ -210,3 +219,12 @@ void SkinOpenGLWidget::renderBackground() m_backgroundTexture->release(); glDepthMask(GL_TRUE); // Re-enable depth buffer writing } + +void SkinOpenGLWidget::wheelEvent(QWheelEvent* event) +{ + // Adjust distance based on scroll + int delta = event->angleDelta().y(); // Positive for scroll up, negative for scroll down + m_distance -= delta * 0.01f; // Adjust sensitivity factor + m_distance = qMax(16., m_distance); // Clamp distance + update(); // Trigger a repaint +} diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h index 4a0e5a447..4c2292054 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h @@ -42,6 +42,7 @@ class SkinOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { void mousePressEvent(QMouseEvent* e) override; void mouseReleaseEvent(QMouseEvent* e) override; void mouseMoveEvent(QMouseEvent* event) override; + void wheelEvent(QWheelEvent* event) override; void initializeGL() override; void resizeGL(int w, int h) override; @@ -61,7 +62,9 @@ class SkinOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { QVector2D m_mousePosition; bool m_isMousePressed = false; - int m_rotationX = 0, m_rotationY = 0; + float m_distance = 48; + float m_yaw = 90; // Horizontal rotation angle + float m_pitch = 0; // Vertical rotation angle opengl::BoxGeometry* m_background = nullptr; QOpenGLTexture* m_backgroundTexture = nullptr; From a6f5858dacd54e60435b4ad91fb3aa97a0650609 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 15 Jan 2025 21:54:02 +0200 Subject: [PATCH 483/616] Fix ignore for modrinth/flame export Signed-off-by: Trial97 --- launcher/ui/dialogs/ExportPackDialog.cpp | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index 846c11a1a..c4f102515 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -71,26 +71,28 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla model->setIconProvider(&m_icons); // use the game root - everything outside cannot be exported - const QDir root(instance->gameRoot()); - m_proxy = new FileIgnoreProxy(instance->gameRoot(), this); + const QDir instanceRoot(instance->instanceRoot()); + m_proxy = new FileIgnoreProxy(instance->instanceRoot(), this); m_proxy->ignoreFilesWithPath().insert({ "logs", "crash-reports", ".cache", ".fabric", ".quilt" }); m_proxy->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); m_proxy->setSourceModel(model); loadPackIgnore(); const QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); - - for (const QString& file : root.entryList(filter)) { - if (!(file == "mods" || file == "coremods" || file == "datapacks" || file == "config" || file == "options.txt" || - file == "servers.dat")) - m_proxy->blockedPaths().insert(file); + if (m_proxy->blockedPaths().leaf()) { // only add this if the list is empty + const QDir gameRoot(instance->gameRoot()); + for (const QString& file : gameRoot.entryList(filter)) { + if (!(file == "mods" || file == "coremods" || file == "datapacks" || file == "config" || file == "options.txt" || + file == "servers.dat")) + m_proxy->blockedPaths().insert(instanceRoot.relativeFilePath(gameRoot.absoluteFilePath(file))); + } } MinecraftInstance* mcInstance = dynamic_cast(instance.get()); if (mcInstance) { for (auto& resourceModel : mcInstance->resourceLists()) if (resourceModel->indexDir().exists()) - m_proxy->ignoreFilesWithPath().insert(root.relativeFilePath(resourceModel->indexDir().absolutePath())); + m_proxy->ignoreFilesWithPath().insert(instanceRoot.relativeFilePath(resourceModel->indexDir().absolutePath())); } m_ui->files->setModel(m_proxy); From 82e59658d5a91cff278b7d2a56e2a10535ac9112 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 15 Jan 2025 21:59:31 +0200 Subject: [PATCH 484/616] uniform ignoreFilesWithPath Signed-off-by: Trial97 --- launcher/ui/dialogs/ExportInstanceDialog.cpp | 6 +++--- launcher/ui/dialogs/ExportPackDialog.cpp | 7 +++++-- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/launcher/ui/dialogs/ExportInstanceDialog.cpp b/launcher/ui/dialogs/ExportInstanceDialog.cpp index 2e5880540..1acecc6df 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.cpp +++ b/launcher/ui/dialogs/ExportInstanceDialog.cpp @@ -69,10 +69,10 @@ ExportInstanceDialog::ExportInstanceDialog(InstancePtr instance, QWidget* parent m_proxyModel = new FileIgnoreProxy(root, this); m_proxyModel->setSourceModel(model); auto prefix = QDir(instance->instanceRoot()).relativeFilePath(instance->gameRoot()); - m_proxyModel->ignoreFilesWithPath().insert({ FS::PathCombine(prefix, "logs"), FS::PathCombine(prefix, "crash-reports") }); + for (auto path : { "logs", "crash-reports", ".cache", ".fabric", ".quilt" }) { + m_proxyModel->ignoreFilesWithPath().insert(FS::PathCombine(prefix, path)); + } m_proxyModel->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); - m_proxyModel->ignoreFilesWithPath().insert( - { FS::PathCombine(prefix, ".cache"), FS::PathCombine(prefix, ".fabric"), FS::PathCombine(prefix, ".quilt") }); loadPackIgnore(); m_ui->treeView->setModel(m_proxyModel); diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index c4f102515..ae7f8c4e8 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -73,7 +73,10 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla // use the game root - everything outside cannot be exported const QDir instanceRoot(instance->instanceRoot()); m_proxy = new FileIgnoreProxy(instance->instanceRoot(), this); - m_proxy->ignoreFilesWithPath().insert({ "logs", "crash-reports", ".cache", ".fabric", ".quilt" }); + auto prefix = QDir(instance->instanceRoot()).relativeFilePath(instance->gameRoot()); + for (auto path : { "logs", "crash-reports", ".cache", ".fabric", ".quilt" }) { + m_proxy->ignoreFilesWithPath().insert(FS::PathCombine(prefix, path)); + } m_proxy->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); m_proxy->setSourceModel(model); loadPackIgnore(); @@ -84,7 +87,7 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla for (const QString& file : gameRoot.entryList(filter)) { if (!(file == "mods" || file == "coremods" || file == "datapacks" || file == "config" || file == "options.txt" || file == "servers.dat")) - m_proxy->blockedPaths().insert(instanceRoot.relativeFilePath(gameRoot.absoluteFilePath(file))); + m_proxy->blockedPaths().insert(FS::PathCombine(prefix, file)); } } From 9d2568058739eb5596b829450bb1b948571aa815 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 15 Jan 2025 22:35:47 +0200 Subject: [PATCH 485/616] remove defaults blocked list Signed-off-by: Trial97 --- launcher/ui/dialogs/ExportPackDialog.cpp | 8 -------- 1 file changed, 8 deletions(-) diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index ae7f8c4e8..5b3866d3f 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -82,14 +82,6 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla loadPackIgnore(); const QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); - if (m_proxy->blockedPaths().leaf()) { // only add this if the list is empty - const QDir gameRoot(instance->gameRoot()); - for (const QString& file : gameRoot.entryList(filter)) { - if (!(file == "mods" || file == "coremods" || file == "datapacks" || file == "config" || file == "options.txt" || - file == "servers.dat")) - m_proxy->blockedPaths().insert(FS::PathCombine(prefix, file)); - } - } MinecraftInstance* mcInstance = dynamic_cast(instance.get()); if (mcInstance) { From aa6518410e92e60fca9d32ac4460bd4a13b988f4 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 15 Jan 2025 23:04:47 +0200 Subject: [PATCH 486/616] fix build Signed-off-by: Trial97 --- launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp index f17b4e827..8c276ab0b 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include "minecraft/skins/SkinModel.h" #include "ui/dialogs/skins/SkinManageDialog.h" @@ -156,10 +157,10 @@ void SkinOpenGLWidget::paintGL() QMatrix4x4 matrix; float yawRad = qDegreesToRadians(m_yaw); float pitchRad = qDegreesToRadians(m_pitch); - matrix.lookAt(QVector3D( // - m_distance * cos(pitchRad) * cos(yawRad), // - m_distance * sin(pitchRad) - 8, // - m_distance * cos(pitchRad) * sin(yawRad)), + matrix.lookAt(QVector3D( // + m_distance * qCos(pitchRad) * qCos(yawRad), // + m_distance * qSin(pitchRad) - 8, // + m_distance * qCos(pitchRad) * qSin(yawRad)), QVector3D(0, -8, 0), QVector3D(0, 1, 0)); // Set modelview-projection matrix @@ -225,6 +226,6 @@ void SkinOpenGLWidget::wheelEvent(QWheelEvent* event) // Adjust distance based on scroll int delta = event->angleDelta().y(); // Positive for scroll up, negative for scroll down m_distance -= delta * 0.01f; // Adjust sensitivity factor - m_distance = qMax(16., m_distance); // Clamp distance + m_distance = qMax(16.f, m_distance); // Clamp distance update(); // Trigger a repaint } From bca517b8d3cd685540beebf69fbc1f80fe0a6ce4 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 16 Jan 2025 12:10:19 +0200 Subject: [PATCH 487/616] fix appimage Signed-off-by: Trial97 --- .github/workflows/build.yml | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0770b66dd..12dea1715 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -62,7 +62,7 @@ jobs: qt_version: "5.15.2" qt_modules: "qtnetworkauth" - - os: ubuntu-20.04 + - os: ubuntu-22.04 qt_ver: 6 qt_host: linux qt_arch: "" @@ -259,7 +259,7 @@ jobs: wget "https://github.com/AppImageCommunity/AppImageUpdate/releases/download/continuous/AppImageUpdate-x86_64.AppImage" - sudo apt install libopengl0 + sudo apt install libopengl0 libfuse2 - name: Add QT_HOST_PATH var (Windows MSVC arm64) if: runner.os == 'Windows' && matrix.architecture == 'arm64' @@ -521,8 +521,8 @@ jobs: cp -r ${{ runner.workspace }}/Qt/${{ matrix.qt_version }}/gcc_64/plugins/iconengines/* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/plugins/iconengines - cp /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/ - cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/ + cp /usr/lib/x86_64-linux-gnu/libcrypto.so.3 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/ + cp /usr/lib/x86_64-linux-gnu/libssl.so.3 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/ cp /usr/lib/x86_64-linux-gnu/libOpenGL.so.0* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/ LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib" @@ -547,8 +547,27 @@ jobs: mv "PrismLauncher-Linux-x86_64.AppImage" "PrismLauncher-Linux-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage" - - name: Package (Linux, portable) - if: runner.os == 'Linux' + - name: Package (Linux, qt6, portable) + if: runner.os == 'Linux' && matrix.qt_ver != 5 + run: | + cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_PORTABLE_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -DINSTALL_BUNDLE=full -G Ninja + cmake --install ${{ env.BUILD_DIR }} + cmake --install ${{ env.BUILD_DIR }} --component portable + + mkdir ${{ env.INSTALL_PORTABLE_DIR }}/lib + cp /lib/x86_64-linux-gnu/libbz2.so.1.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib + cp /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib + cp /usr/lib/x86_64-linux-gnu/libcrypto.so.3 ${{ env.INSTALL_PORTABLE_DIR }}/lib + cp /usr/lib/x86_64-linux-gnu/libssl.so.3 ${{ env.INSTALL_PORTABLE_DIR }}/lib + cp /usr/lib/x86_64-linux-gnu/libffi.so.8 ${{ env.INSTALL_PORTABLE_DIR }}/lib + mv ${{ env.INSTALL_PORTABLE_DIR }}/bin/*.so* ${{ env.INSTALL_PORTABLE_DIR }}/lib + + for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); do l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done > ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt + cd ${{ env.INSTALL_PORTABLE_DIR }} + tar -czf ../PrismLauncher-portable.tar.gz * + + - name: Package (Linux, qt5, portable) + if: runner.os == 'Linux' && matrix.qt_ver == 5 run: | cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_PORTABLE_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -DINSTALL_BUNDLE=full -G Ninja cmake --install ${{ env.BUILD_DIR }} From d2516cbecce3059dd3197f467e9ec4ea694e742f Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 16 Jan 2025 14:11:56 +0200 Subject: [PATCH 488/616] use YCbCr for chesboard pattern Signed-off-by: Trial97 --- .../dialogs/skins/draw/SkinOpenGLWidget.cpp | 47 ++++++++++++++++--- 1 file changed, 41 insertions(+), 6 deletions(-) diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp index 8c276ab0b..f1222d63e 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp @@ -23,6 +23,7 @@ #include #include #include +#include #include "minecraft/skins/SkinModel.h" #include "ui/dialogs/skins/SkinManageDialog.h" @@ -187,16 +188,49 @@ void SkinOpenGLWidget::updateCape(const QImage& cape) } } -QImage generateChessboardImage(int width, int height, int tileSize) +QVector3D RGBToYCbCr(QColor rgb) +{ + auto fr = rgb.redF() / 255.f; + auto fg = rgb.greenF() / 255.f; + auto fb = rgb.blueF() / 255.F; + + auto Y = 0.2989f * fr + 0.5866f * fg + 0.1145f * fb; + auto Cb = -0.1687f * fr - 0.3313f * fg + 0.5000f * fb; + auto Cr = 0.5000f * fr - 0.4184f * fg - 0.0816f * fb; + + return QVector3D(Y, Cb, Cr); +} + +QColor YCbCrToRGB(QVector3D ycbcr) +{ + auto r = qBound(0.0f, ycbcr.x() + 0.0000f * ycbcr.y() + 1.4022f * ycbcr.z(), 1.0f); + auto g = qBound(0.0f, ycbcr.x() - 0.3456f * ycbcr.y() - 0.7145f * ycbcr.z(), 1.0f); + auto b = qBound(0.0f, ycbcr.x() + 1.7710f * ycbcr.y() + 0.0000f * ycbcr.z(), 1.0f); + + return QColor::fromRgb(r * 255, g * 255, b * 255); +} + +QColor calculateContrastingColor(const QColor& color) +{ + constexpr float contrast = 0.07; + auto lab = RGBToYCbCr(color); + if (lab.x() < contrast) { + lab.setX(lab.x() + contrast); + } else { + lab.setX(lab.x() - contrast); + } + return YCbCrToRGB(lab); +} + +QImage generateChessboardImage(int width, int height, int tileSize, QColor baseColor) { QImage image(width, height, QImage::Format_RGB888); - + auto white = baseColor; + auto black = calculateContrastingColor(baseColor); for (int y = 0; y < height; ++y) { for (int x = 0; x < width; ++x) { bool isWhite = ((x / tileSize) % 2) == ((y / tileSize) % 2); - unsigned char color = isWhite ? 100 : 50; - - image.setPixelColor(x, y, QColor(color, color, color)); + image.setPixelColor(x, y, isWhite ? white : black); } } return image; @@ -204,7 +238,8 @@ QImage generateChessboardImage(int width, int height, int tileSize) void SkinOpenGLWidget::generateBackgroundTexture(int width, int height, int tileSize) { - m_backgroundTexture = new QOpenGLTexture(generateChessboardImage(width, height, tileSize)); + m_backgroundTexture = + new QOpenGLTexture(generateChessboardImage(width, height, tileSize, palette().color(QPalette::Normal, QPalette::Base))); m_backgroundTexture->setMinificationFilter(QOpenGLTexture::Nearest); m_backgroundTexture->setMagnificationFilter(QOpenGLTexture::Nearest); } From 797cacf804e48a316a23472c0b755d32197a5938 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 16 Jan 2025 17:04:53 +0200 Subject: [PATCH 489/616] refactor to remove code duplication Signed-off-by: Trial97 --- launcher/FileIgnoreProxy.cpp | 25 ++++++++++++++++ launcher/FileIgnoreProxy.h | 4 +++ launcher/ui/dialogs/ExportInstanceDialog.cpp | 31 ++------------------ launcher/ui/dialogs/ExportInstanceDialog.h | 2 -- launcher/ui/dialogs/ExportPackDialog.cpp | 31 ++------------------ launcher/ui/dialogs/ExportPackDialog.h | 2 -- 6 files changed, 33 insertions(+), 62 deletions(-) diff --git a/launcher/FileIgnoreProxy.cpp b/launcher/FileIgnoreProxy.cpp index cf716b8d1..89c91ec1d 100644 --- a/launcher/FileIgnoreProxy.cpp +++ b/launcher/FileIgnoreProxy.cpp @@ -273,3 +273,28 @@ bool FileIgnoreProxy::filterFile(const QString& fileName) const { return m_blocked.covers(fileName) || ignoreFile(QFileInfo(QDir(m_root), fileName)); } + +void FileIgnoreProxy::loadBlockedPathsFromFile(const QString& fileName) +{ + QFile ignoreFile(fileName); + if (!ignoreFile.open(QIODevice::ReadOnly)) { + return; + } + auto ignoreData = ignoreFile.readAll(); + auto string = QString::fromUtf8(ignoreData); +#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) + setBlockedPaths(string.split('\n', Qt::SkipEmptyParts)); +#else + setBlockedPaths(string.split('\n', QString::SkipEmptyParts)); +#endif +} + +void FileIgnoreProxy::saveBlockedPathsToFile(const QString& fileName) +{ + auto ignoreData = blockedPaths().toStringList().join('\n').toUtf8(); + try { + FS::write(fileName, ignoreData); + } catch (const Exception& e) { + qWarning() << e.cause(); + } +} diff --git a/launcher/FileIgnoreProxy.h b/launcher/FileIgnoreProxy.h index a633739c6..25d85ab60 100644 --- a/launcher/FileIgnoreProxy.h +++ b/launcher/FileIgnoreProxy.h @@ -71,6 +71,10 @@ class FileIgnoreProxy : public QSortFilterProxyModel { bool filterFile(const QString& fileName) const; + void loadBlockedPathsFromFile(const QString& fileName); + + void saveBlockedPathsToFile(const QString& fileName); + protected: bool filterAcceptsColumn(int source_column, const QModelIndex& source_parent) const; bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const; diff --git a/launcher/ui/dialogs/ExportInstanceDialog.cpp b/launcher/ui/dialogs/ExportInstanceDialog.cpp index 1acecc6df..51e338503 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.cpp +++ b/launcher/ui/dialogs/ExportInstanceDialog.cpp @@ -73,7 +73,7 @@ ExportInstanceDialog::ExportInstanceDialog(InstancePtr instance, QWidget* parent m_proxyModel->ignoreFilesWithPath().insert(FS::PathCombine(prefix, path)); } m_proxyModel->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); - loadPackIgnore(); + m_proxyModel->loadBlockedPathsFromFile(ignoreFileName()); m_ui->treeView->setModel(m_proxyModel); m_ui->treeView->setRootIndex(m_proxyModel->mapFromSource(model->index(root))); @@ -164,7 +164,7 @@ void ExportInstanceDialog::doExport() void ExportInstanceDialog::done(int result) { - savePackIgnore(); + m_proxyModel->saveBlockedPathsToFile(ignoreFileName()); if (result == QDialog::Accepted) { doExport(); return; @@ -191,30 +191,3 @@ QString ExportInstanceDialog::ignoreFileName() { return FS::PathCombine(m_instance->instanceRoot(), ".packignore"); } - -void ExportInstanceDialog::loadPackIgnore() -{ - auto filename = ignoreFileName(); - QFile ignoreFile(filename); - if (!ignoreFile.open(QIODevice::ReadOnly)) { - return; - } - auto ignoreData = ignoreFile.readAll(); - auto string = QString::fromUtf8(ignoreData); -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - m_proxyModel->setBlockedPaths(string.split('\n', Qt::SkipEmptyParts)); -#else - m_proxyModel->setBlockedPaths(string.split('\n', QString::SkipEmptyParts)); -#endif -} - -void ExportInstanceDialog::savePackIgnore() -{ - auto ignoreData = m_proxyModel->blockedPaths().toStringList().join('\n').toUtf8(); - auto filename = ignoreFileName(); - try { - FS::write(filename, ignoreData); - } catch (const Exception& e) { - qWarning() << e.cause(); - } -} diff --git a/launcher/ui/dialogs/ExportInstanceDialog.h b/launcher/ui/dialogs/ExportInstanceDialog.h index b74550033..989e1635a 100644 --- a/launcher/ui/dialogs/ExportInstanceDialog.h +++ b/launcher/ui/dialogs/ExportInstanceDialog.h @@ -60,8 +60,6 @@ class ExportInstanceDialog : public QDialog { private: void doExport(); - void loadPackIgnore(); - void savePackIgnore(); QString ignoreFileName(); private: diff --git a/launcher/ui/dialogs/ExportPackDialog.cpp b/launcher/ui/dialogs/ExportPackDialog.cpp index 5b3866d3f..303df94a1 100644 --- a/launcher/ui/dialogs/ExportPackDialog.cpp +++ b/launcher/ui/dialogs/ExportPackDialog.cpp @@ -79,7 +79,7 @@ ExportPackDialog::ExportPackDialog(InstancePtr instance, QWidget* parent, ModPla } m_proxy->ignoreFilesWithName().append({ ".DS_Store", "thumbs.db", "Thumbs.db" }); m_proxy->setSourceModel(model); - loadPackIgnore(); + m_proxy->loadBlockedPathsFromFile(ignoreFileName()); const QDir::Filters filter(QDir::AllEntries | QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Hidden); @@ -112,7 +112,7 @@ ExportPackDialog::~ExportPackDialog() void ExportPackDialog::done(int result) { - savePackIgnore(); + m_proxy->saveBlockedPathsToFile(ignoreFileName()); auto settings = m_instance->settings(); settings->set("ExportName", m_ui->name->text()); settings->set("ExportVersion", m_ui->version->text()); @@ -180,30 +180,3 @@ QString ExportPackDialog::ignoreFileName() { return FS::PathCombine(m_instance->instanceRoot(), ".packignore"); } - -void ExportPackDialog::loadPackIgnore() -{ - auto filename = ignoreFileName(); - QFile ignoreFile(filename); - if (!ignoreFile.open(QIODevice::ReadOnly)) { - return; - } - auto ignoreData = ignoreFile.readAll(); - auto string = QString::fromUtf8(ignoreData); -#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) - m_proxy->setBlockedPaths(string.split('\n', Qt::SkipEmptyParts)); -#else - m_proxy->setBlockedPaths(string.split('\n', QString::SkipEmptyParts)); -#endif -} - -void ExportPackDialog::savePackIgnore() -{ - auto ignoreData = m_proxy->blockedPaths().toStringList().join('\n').toUtf8(); - auto filename = ignoreFileName(); - try { - FS::write(filename, ignoreData); - } catch (const Exception& e) { - qWarning() << e.cause(); - } -} diff --git a/launcher/ui/dialogs/ExportPackDialog.h b/launcher/ui/dialogs/ExportPackDialog.h index 8931922a9..092288d49 100644 --- a/launcher/ui/dialogs/ExportPackDialog.h +++ b/launcher/ui/dialogs/ExportPackDialog.h @@ -41,8 +41,6 @@ class ExportPackDialog : public QDialog { void validate(); private: - void loadPackIgnore(); - void savePackIgnore(); QString ignoreFileName(); private: From 7cb8deeb9072d0635728d72835645102ff241da3 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 20 Jul 2023 19:59:58 +0300 Subject: [PATCH 490/616] feat: updated flame mod resolution Signed-off-by: Trial97 --- .../modplatform/flame/FileResolvingTask.cpp | 28 +++++++++++++++++++ .../flame/FlameInstanceCreationTask.cpp | 3 +- launcher/modplatform/flame/PackManifest.h | 3 ++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/launcher/modplatform/flame/FileResolvingTask.cpp b/launcher/modplatform/flame/FileResolvingTask.cpp index d69bf12c0..7ff38d57e 100644 --- a/launcher/modplatform/flame/FileResolvingTask.cpp +++ b/launcher/modplatform/flame/FileResolvingTask.cpp @@ -87,6 +87,30 @@ void Flame::FileResolvingTask::executeTask() m_task->start(); } +PackedResourceType getResourceType(int classId) +{ + switch (classId) { + case 17: // Worlds + return PackedResourceType::WorldSave; + case 6: // Mods + return PackedResourceType::Mod; + case 12: // Resource Packs + // return PackedResourceType::ResourcePack; // not really a resourcepack + /* fallthrough */ + case 4546: // Customization + // return PackedResourceType::ShaderPack; // not really a shaderPack + /* fallthrough */ + case 4471: // Modpacks + /* fallthrough */ + case 5: // Bukkit Plugins + /* fallthrough */ + case 4559: // Addons + /* fallthrough */ + default: + return PackedResourceType::UNKNOWN; + } +} + void Flame::FileResolvingTask::netJobFinished() { setProgress(1, 3); @@ -232,6 +256,10 @@ void Flame::FileResolvingTask::getFlameProjects() setStatus(tr("Parsing API response from CurseForge for '%1'...").arg(file->version.fileName)); FlameMod::loadIndexedPack(file->pack, entry_obj); + file->resourceType = getResourceType(Json::requireInteger(entry_obj, "classId", "modClassId")); + if (file->resourceType == PackedResourceType::WorldSave) { + file->targetFolder = "saves"; + } } } catch (Json::JsonException& e) { qDebug() << e.cause(); diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index e60d32cc0..b16277b48 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -474,7 +474,7 @@ void FlameCreationTask::idResolverSucceeded(QEventLoop& loop) QList blocked_mods; auto anyBlocked = false; for (const auto& result : results.files.values()) { - if (result.version.fileName.endsWith(".zip")) { + if (result.resourceType != PackedResourceType::Mod) { m_ZIP_resources.append(std::make_pair(result.version.fileName, result.targetFolder)); } @@ -678,6 +678,7 @@ void FlameCreationTask::validateZIPResources(QEventLoop& loop) installWorld(worldPath); break; case PackedResourceType::UNKNOWN: + /* fallthrough */ default: qDebug() << "Can't Identify" << fileName << "at" << localPath << ", leaving it where it is."; break; diff --git a/launcher/modplatform/flame/PackManifest.h b/launcher/modplatform/flame/PackManifest.h index 49a0b2d68..7d3693756 100644 --- a/launcher/modplatform/flame/PackManifest.h +++ b/launcher/modplatform/flame/PackManifest.h @@ -40,6 +40,7 @@ #include #include #include +#include "minecraft/mod/tasks/LocalResourceParse.h" #include "modplatform/ModIndex.h" namespace Flame { @@ -54,6 +55,8 @@ struct File { // our QString targetFolder = QStringLiteral("mods"); + enum class Type { Unknown, Folder, Ctoc, SingleFile, Cmod2, Modpack, Mod } type = Type::Mod; + PackedResourceType resourceType; }; struct Modloader { From 9317a675eddd5cb6f4845ca74f57f09b27453a2e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 16 Jan 2025 17:07:44 +0200 Subject: [PATCH 491/616] removed unused type Signed-off-by: Trial97 --- launcher/modplatform/flame/PackManifest.h | 1 - 1 file changed, 1 deletion(-) diff --git a/launcher/modplatform/flame/PackManifest.h b/launcher/modplatform/flame/PackManifest.h index 7d3693756..7af3b9d6b 100644 --- a/launcher/modplatform/flame/PackManifest.h +++ b/launcher/modplatform/flame/PackManifest.h @@ -55,7 +55,6 @@ struct File { // our QString targetFolder = QStringLiteral("mods"); - enum class Type { Unknown, Folder, Ctoc, SingleFile, Cmod2, Modpack, Mod } type = Type::Mod; PackedResourceType resourceType; }; From 0a71b19509c9900dcb61215ab6c25802808b05d5 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Fri, 17 Jan 2025 08:53:10 +0200 Subject: [PATCH 492/616] Apply suggestions from code review Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- launcher/ui/dialogs/ProfileSetupDialog.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/ui/dialogs/ProfileSetupDialog.cpp b/launcher/ui/dialogs/ProfileSetupDialog.cpp index 4d9040785..3869ca85b 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.cpp +++ b/launcher/ui/dialogs/ProfileSetupDialog.cpp @@ -265,17 +265,17 @@ void ProfileSetupDialog::setupProfileFinished() auto parsedError = MojangError::fromJSON(*m_profile_response); ui->errorLabel->setVisible(true); - QString errorMessage = tr("Network error(%1): %2 ;HTTP Status: %3") + QString errorMessage = tr("Network error(%1): %2: HTTP Status: %3") .arg(QString::number(m_profile_task->error()), m_profile_task->errorString(), QString::number(m_profile_task->replyStatusCode())); if (parsedError.fullyParsed) { errorMessage += "Path: " + parsedError.path + "\n"; errorMessage += "Error: " + parsedError.error + "\n"; - errorMessage += "Error message: " + parsedError.errorMessage + "\n"; + errorMessage += "Message: " + parsedError.errorMessage + "\n"; } else { - errorMessage += "Failed to parse Mojang error: " + parsedError.parseError.errorString() + "\n"; - errorMessage += "Raw contents:\n" + parsedError.rawError + "\n"; + errorMessage += "Failed to parse error from Mojang API: " + parsedError.parseError.errorString() + "\n"; + errorMessage += "Log:\n" + parsedError.rawError + "\n"; } ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + errorMessage); From 1d8bf1d5a788e689d26e0afa8f5cfca0e3859e5d Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 1 Jan 2025 01:36:17 +0200 Subject: [PATCH 493/616] map modrinth snapshots Signed-off-by: Trial97 --- launcher/modplatform/modrinth/ModrinthAPI.h | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h index 3a5c21ed1..8974161d7 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.h +++ b/launcher/modplatform/modrinth/ModrinthAPI.h @@ -170,9 +170,16 @@ class ModrinthAPI : public NetworkResourceAPI { QString getGameVersionsArray(std::list mcVersions) const { + static const QString preString = " Pre-Release "; QString s; for (auto& ver : mcVersions) { - s += QString("\"versions:%1\",").arg(ver.toString()); + auto verStr = ver.toString(); + + if (verStr.contains(preString)) { + verStr.replace(preString, "-pre"); + } + verStr.replace(" ", "-"); + s += QString("\"versions:%1\",").arg(verStr); } s.remove(s.length() - 1, 1); // remove last comma return s.isEmpty() ? QString() : s; From 8e5a7c6e333969b5412efd1349f9430ced5654c8 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 17 Jan 2025 10:35:13 +0200 Subject: [PATCH 494/616] ensure that the snapshot mapping is on all apis Signed-off-by: Trial97 --- launcher/modplatform/ResourceAPI.h | 18 ++++++++++--- launcher/modplatform/modrinth/ModrinthAPI.cpp | 4 +-- launcher/modplatform/modrinth/ModrinthAPI.h | 26 ++++++++++++------- .../modrinth/ModrinthPackIndex.cpp | 12 ++++----- .../modrinth/ModrinthPackManifest.cpp | 4 +-- 5 files changed, 40 insertions(+), 24 deletions(-) diff --git a/launcher/modplatform/ResourceAPI.h b/launcher/modplatform/ResourceAPI.h index 4f457a48e..62a1ff199 100644 --- a/launcher/modplatform/ResourceAPI.h +++ b/launcher/modplatform/ResourceAPI.h @@ -73,7 +73,7 @@ class ResourceAPI { std::optional search; std::optional sorting; std::optional loaders; - std::optional > versions; + std::optional> versions; std::optional side; std::optional categoryIds; bool openSource; @@ -169,11 +169,23 @@ class ResourceAPI { protected: [[nodiscard]] inline QString debugName() const { return "External resource API"; } - [[nodiscard]] inline auto getGameVersionsString(std::list mcVersions) const -> QString + [[nodiscard]] inline QString mapMCVersionToModrinth(Version v) const + { + static const QString preString = " Pre-Release "; + auto verStr = v.toString(); + + if (verStr.contains(preString)) { + verStr.replace(preString, "-pre"); + } + verStr.replace(" ", "-"); + return verStr; + } + + [[nodiscard]] inline QString getGameVersionsString(std::list mcVersions) const { QString s; for (auto& ver : mcVersions) { - s += QString("\"%1\",").arg(ver.toString()); + s += QString("\"%1\",").arg(mapMCVersionToModrinth(ver)); } s.remove(s.length() - 1, 1); // remove last comma return s; diff --git a/launcher/modplatform/modrinth/ModrinthAPI.cpp b/launcher/modplatform/modrinth/ModrinthAPI.cpp index a954f65a5..bdef1a0e5 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.cpp +++ b/launcher/modplatform/modrinth/ModrinthAPI.cpp @@ -54,7 +54,7 @@ Task::Ptr ModrinthAPI::latestVersion(QString hash, if (mcVersions.has_value()) { QStringList game_versions; for (auto& ver : mcVersions.value()) { - game_versions.append(ver.toString()); + game_versions.append(mapMCVersionToModrinth(ver)); } Json::writeStringList(body_obj, "game_versions", game_versions); } @@ -87,7 +87,7 @@ Task::Ptr ModrinthAPI::latestVersions(const QStringList& hashes, if (mcVersions.has_value()) { QStringList game_versions; for (auto& ver : mcVersions.value()) { - game_versions.append(ver.toString()); + game_versions.append(mapMCVersionToModrinth(ver)); } Json::writeStringList(body_obj, "game_versions", game_versions); } diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h index 8974161d7..9c6bed4ca 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.h +++ b/launcher/modplatform/modrinth/ModrinthAPI.h @@ -81,6 +81,21 @@ class ModrinthAPI : public NetworkResourceAPI { return {}; } + [[nodiscard]] static inline QString mapMCVersionFromModrinth(QString v) + { + static const QString preString = " Pre-Release "; + bool pre = false; + if (v.contains("-pre")) { + pre = true; + v.replace("-pre", preString); + } + v.replace("-", " "); + if (pre) { + v.replace(" Pre Release ", preString); + } + return v; + } + private: [[nodiscard]] static QString resourceTypeParameter(ModPlatform::ResourceType type) { @@ -170,16 +185,9 @@ class ModrinthAPI : public NetworkResourceAPI { QString getGameVersionsArray(std::list mcVersions) const { - static const QString preString = " Pre-Release "; QString s; for (auto& ver : mcVersions) { - auto verStr = ver.toString(); - - if (verStr.contains(preString)) { - verStr.replace(preString, "-pre"); - } - verStr.replace(" ", "-"); - s += QString("\"versions:%1\",").arg(verStr); + s += QString("\"versions:%1\",").arg(mapMCVersionToModrinth(ver)); } s.remove(s.length() - 1, 1); // remove last comma return s.isEmpty() ? QString() : s; @@ -196,7 +204,7 @@ class ModrinthAPI : public NetworkResourceAPI { : QString("%1/project/%2/version?game_versions=[\"%3\"]&loaders=[\"%4\"]") .arg(BuildConfig.MODRINTH_PROD_URL) .arg(args.dependency.addonId.toString()) - .arg(args.mcVersion.toString()) + .arg(mapMCVersionToModrinth(args.mcVersion)) .arg(getModLoaderStrings(args.loader).join("\",\"")); }; }; diff --git a/launcher/modplatform/modrinth/ModrinthPackIndex.cpp b/launcher/modplatform/modrinth/ModrinthPackIndex.cpp index 48b27a597..72550937c 100644 --- a/launcher/modplatform/modrinth/ModrinthPackIndex.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackIndex.cpp @@ -131,9 +131,7 @@ void Modrinth::loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArra pack.versionsLoaded = true; } -auto Modrinth::loadIndexedPackVersion(QJsonObject& obj, - QString preferred_hash_type, - QString preferred_file_name) -> ModPlatform::IndexedVersion +ModPlatform::IndexedVersion Modrinth::loadIndexedPackVersion(QJsonObject& obj, QString preferred_hash_type, QString preferred_file_name) { ModPlatform::IndexedVersion file; @@ -145,7 +143,7 @@ auto Modrinth::loadIndexedPackVersion(QJsonObject& obj, return {}; } for (auto mcVer : versionArray) { - file.mcVersion.append(mcVer.toString()); + file.mcVersion.append(ModrinthAPI::mapMCVersionFromModrinth(mcVer.toString())); } auto loaders = Json::requireArray(obj, "loaders"); for (auto loader : loaders) { @@ -247,9 +245,9 @@ auto Modrinth::loadIndexedPackVersion(QJsonObject& obj, return {}; } -auto Modrinth::loadDependencyVersions([[maybe_unused]] const ModPlatform::Dependency& m, - QJsonArray& arr, - const BaseInstance* inst) -> ModPlatform::IndexedVersion +ModPlatform::IndexedVersion Modrinth::loadDependencyVersions([[maybe_unused]] const ModPlatform::Dependency& m, + QJsonArray& arr, + const BaseInstance* inst) { auto profile = (dynamic_cast(inst))->getPackProfile(); QString mcVersion = profile->getComponentVersion("net.minecraft"); diff --git a/launcher/modplatform/modrinth/ModrinthPackManifest.cpp b/launcher/modplatform/modrinth/ModrinthPackManifest.cpp index c52a1743b..89ef6e4c4 100644 --- a/launcher/modplatform/modrinth/ModrinthPackManifest.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackManifest.cpp @@ -40,9 +40,6 @@ #include "modplatform/modrinth/ModrinthAPI.h" -#include "minecraft/MinecraftInstance.h" -#include "minecraft/PackProfile.h" - #include static ModrinthAPI api; @@ -134,6 +131,7 @@ auto loadIndexedVersion(QJsonObject& obj) -> ModpackVersion auto gameVersions = Json::ensureArray(obj, "game_versions"); if (!gameVersions.isEmpty()) { file.gameVersion = Json::ensureString(gameVersions[0]); + file.gameVersion = ModrinthAPI::mapMCVersionFromModrinth(file.gameVersion); } auto loaders = Json::requireArray(obj, "loaders"); for (auto loader : loaders) { From 7d3238d234ca514436f608384ce7ceb94d0630eb Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 17 Jan 2025 21:09:44 +0200 Subject: [PATCH 495/616] rename variables Signed-off-by: Trial97 --- .../flame/FlameInstanceCreationTask.cpp | 78 +++++++++---------- .../flame/FlameInstanceCreationTask.h | 14 ++-- 2 files changed, 46 insertions(+), 46 deletions(-) diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index b16277b48..6073e90a2 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -75,12 +75,12 @@ bool FlameCreationTask::abort() return false; m_abort = true; - if (m_process_update_file_info_job) - m_process_update_file_info_job->abort(); - if (m_files_job) - m_files_job->abort(); - if (m_mod_id_resolver) - m_mod_id_resolver->abort(); + if (m_processUpdateFileInfoJob) + m_processUpdateFileInfoJob->abort(); + if (m_filesJob) + m_filesJob->abort(); + if (m_modIdResolver) + m_modIdResolver->abort(); return Task::abort(); } @@ -232,12 +232,12 @@ bool FlameCreationTask::updateInstance() connect(job.get(), &Task::failed, this, [](QString reason) { qCritical() << "Failed to get files: " << reason; }); connect(job.get(), &Task::finished, &loop, &QEventLoop::quit); - m_process_update_file_info_job = job; + m_processUpdateFileInfoJob = job; job->start(); loop.exec(); - m_process_update_file_info_job = nullptr; + m_processUpdateFileInfoJob = nullptr; } else { // We don't have an old index file, so we may duplicate stuff! auto dialog = CustomMessageBox::selectable(m_parent, tr("No index file."), @@ -430,26 +430,26 @@ bool FlameCreationTask::createInstance() } // Don't add managed info to packs without an ID (most likely imported from ZIP) - if (!m_managed_id.isEmpty()) - instance.setManagedPack("flame", m_managed_id, m_pack.name, m_managed_version_id, m_pack.version); + if (!m_managedId.isEmpty()) + instance.setManagedPack("flame", m_managedId, m_pack.name, m_managedVersionId, m_pack.version); else instance.setManagedPack("flame", "", name(), "", ""); instance.setName(name()); - m_mod_id_resolver.reset(new Flame::FileResolvingTask(APPLICATION->network(), m_pack)); - connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::succeeded, this, [this, &loop] { idResolverSucceeded(loop); }); - connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::failed, [this, &loop](QString reason) { - m_mod_id_resolver.reset(); + m_modIdResolver.reset(new Flame::FileResolvingTask(APPLICATION->network(), m_pack)); + connect(m_modIdResolver.get(), &Flame::FileResolvingTask::succeeded, this, [this, &loop] { idResolverSucceeded(loop); }); + connect(m_modIdResolver.get(), &Flame::FileResolvingTask::failed, [this, &loop](QString reason) { + m_modIdResolver.reset(); setError(tr("Unable to resolve mod IDs:\n") + reason); loop.quit(); }); - connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::aborted, &loop, &QEventLoop::quit); - connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::progress, this, &FlameCreationTask::setProgress); - connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::status, this, &FlameCreationTask::setStatus); - connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::stepProgress, this, &FlameCreationTask::propagateStepProgress); - connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::details, this, &FlameCreationTask::setDetails); - m_mod_id_resolver->start(); + connect(m_modIdResolver.get(), &Flame::FileResolvingTask::aborted, &loop, &QEventLoop::quit); + connect(m_modIdResolver.get(), &Flame::FileResolvingTask::progress, this, &FlameCreationTask::setProgress); + connect(m_modIdResolver.get(), &Flame::FileResolvingTask::status, this, &FlameCreationTask::setStatus); + connect(m_modIdResolver.get(), &Flame::FileResolvingTask::stepProgress, this, &FlameCreationTask::propagateStepProgress); + connect(m_modIdResolver.get(), &Flame::FileResolvingTask::details, this, &FlameCreationTask::setDetails); + m_modIdResolver->start(); loop.exec(); @@ -468,14 +468,14 @@ bool FlameCreationTask::createInstance() void FlameCreationTask::idResolverSucceeded(QEventLoop& loop) { - auto results = m_mod_id_resolver->getResults(); + auto results = m_modIdResolver->getResults(); // first check for blocked mods QList blocked_mods; auto anyBlocked = false; for (const auto& result : results.files.values()) { if (result.resourceType != PackedResourceType::Mod) { - m_ZIP_resources.append(std::make_pair(result.version.fileName, result.targetFolder)); + m_otherResources.append(std::make_pair(result.version.fileName, result.targetFolder)); } if (result.version.downloadUrl.isEmpty()) { @@ -507,7 +507,7 @@ void FlameCreationTask::idResolverSucceeded(QEventLoop& loop) copyBlockedMods(blocked_mods); setupDownloadJob(loop); } else { - m_mod_id_resolver.reset(); + m_modIdResolver.reset(); setError("Canceled"); loop.quit(); } @@ -518,8 +518,8 @@ void FlameCreationTask::idResolverSucceeded(QEventLoop& loop) void FlameCreationTask::setupDownloadJob(QEventLoop& loop) { - m_files_job.reset(new NetJob(tr("Mod Download Flame"), APPLICATION->network())); - auto results = m_mod_id_resolver->getResults().files; + m_filesJob.reset(new NetJob(tr("Mod Download Flame"), APPLICATION->network())); + auto results = m_modIdResolver->getResults().files; QStringList optionalFiles; for (auto& result : results) { @@ -554,26 +554,26 @@ void FlameCreationTask::setupDownloadJob(QEventLoop& loop) if (!result.version.downloadUrl.isEmpty()) { qDebug() << "Will download" << result.version.downloadUrl << "to" << path; auto dl = Net::ApiDownload::makeFile(result.version.downloadUrl, path); - m_files_job->addNetAction(dl); + m_filesJob->addNetAction(dl); } } - connect(m_files_job.get(), &NetJob::finished, this, [this, &loop]() { - m_files_job.reset(); - validateZIPResources(loop); + connect(m_filesJob.get(), &NetJob::finished, this, [this, &loop]() { + m_filesJob.reset(); + validateOtherResources(loop); }); - connect(m_files_job.get(), &NetJob::failed, [this](QString reason) { - m_files_job.reset(); + connect(m_filesJob.get(), &NetJob::failed, [this](QString reason) { + m_filesJob.reset(); setError(reason); }); - connect(m_files_job.get(), &NetJob::progress, this, [this](qint64 current, qint64 total) { + connect(m_filesJob.get(), &NetJob::progress, this, [this](qint64 current, qint64 total) { setDetails(tr("%1 out of %2 complete").arg(current).arg(total)); setProgress(current, total); }); - connect(m_files_job.get(), &NetJob::stepProgress, this, &FlameCreationTask::propagateStepProgress); + connect(m_filesJob.get(), &NetJob::stepProgress, this, &FlameCreationTask::propagateStepProgress); setStatus(tr("Downloading mods...")); - m_files_job->start(); + m_filesJob->start(); } /// @brief copy the matched blocked mods to the instance staging area @@ -614,11 +614,11 @@ void FlameCreationTask::copyBlockedMods(QList const& blocked_mods) setAbortable(true); } -void FlameCreationTask::validateZIPResources(QEventLoop& loop) +void FlameCreationTask::validateOtherResources(QEventLoop& loop) { - qDebug() << "Validating whether resources stored as .zip are in the right place"; + qDebug() << "Validating whether other resources are in the right place"; QStringList zipMods; - for (auto [fileName, targetFolder] : m_ZIP_resources) { + for (auto [fileName, targetFolder] : m_otherResources) { qDebug() << "Checking" << fileName << "..."; auto localPath = FS::PathCombine(m_stagingPath, "minecraft", targetFolder, fileName); @@ -686,7 +686,7 @@ void FlameCreationTask::validateZIPResources(QEventLoop& loop) } // TODO make this work with other sorts of resource auto task = makeShared("CreateModMetadata", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); - auto results = m_mod_id_resolver->getResults().files; + auto results = m_modIdResolver->getResults().files; auto folder = FS::PathCombine(m_stagingPath, "minecraft", "mods", ".index"); for (auto file : results) { if (file.targetFolder != "mods" || (file.version.fileName.endsWith(".zip") && !zipMods.contains(file.version.fileName))) { @@ -695,6 +695,6 @@ void FlameCreationTask::validateZIPResources(QEventLoop& loop) task->addTask(makeShared(folder, file.pack, file.version)); } connect(task.get(), &Task::finished, &loop, &QEventLoop::quit); - m_process_update_file_info_job = task; + m_processUpdateFileInfoJob = task; task->start(); } diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.h b/launcher/modplatform/flame/FlameInstanceCreationTask.h index 28ab176c2..3e586a416 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.h +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.h @@ -57,7 +57,7 @@ class FlameCreationTask final : public InstanceCreationTask { QString id, QString version_id, QString original_instance_id = {}) - : InstanceCreationTask(), m_parent(parent), m_managed_id(std::move(id)), m_managed_version_id(std::move(version_id)) + : InstanceCreationTask(), m_parent(parent), m_managedId(std::move(id)), m_managedVersionId(std::move(version_id)) { setStagingPath(staging_path); setParentSettings(global_settings); @@ -74,22 +74,22 @@ class FlameCreationTask final : public InstanceCreationTask { void idResolverSucceeded(QEventLoop&); void setupDownloadJob(QEventLoop&); void copyBlockedMods(QList const& blocked_mods); - void validateZIPResources(QEventLoop& loop); + void validateOtherResources(QEventLoop& loop); QString getVersionForLoader(QString uid, QString loaderType, QString version, QString mcVersion); private: QWidget* m_parent = nullptr; - shared_qobject_ptr m_mod_id_resolver; + shared_qobject_ptr m_modIdResolver; Flame::Manifest m_pack; // Handle to allow aborting - Task::Ptr m_process_update_file_info_job = nullptr; - NetJob::Ptr m_files_job = nullptr; + Task::Ptr m_processUpdateFileInfoJob = nullptr; + NetJob::Ptr m_filesJob = nullptr; - QString m_managed_id, m_managed_version_id; + QString m_managedId, m_managedVersionId; - QList> m_ZIP_resources; + QList> m_otherResources; std::optional m_instance; }; From dc00c47f2e2b79705c32f438298d968aaa4fdf26 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 18 Jan 2025 13:27:18 +0200 Subject: [PATCH 496/616] update submodules Signed-off-by: Trial97 --- flatpak/shared-modules | 2 +- libraries/cmark | 2 +- libraries/extra-cmake-modules | 2 +- libraries/filesystem | 2 +- libraries/quazip | 2 +- libraries/tomlplusplus | 2 +- libraries/zlib | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/flatpak/shared-modules b/flatpak/shared-modules index f2b0c16a2..f5d368a31 160000 --- a/flatpak/shared-modules +++ b/flatpak/shared-modules @@ -1 +1 @@ -Subproject commit f2b0c16a2a217a1822ce5a6538ba8f755ed1dd32 +Subproject commit f5d368a31d6ef046eb2955c74ec6f54f32ed5c4e diff --git a/libraries/cmark b/libraries/cmark index 8fbf02968..3460cd809 160000 --- a/libraries/cmark +++ b/libraries/cmark @@ -1 +1 @@ -Subproject commit 8fbf029685482827828b5858444157052f1b0a5f +Subproject commit 3460cd809b6dd311b58e92733ece2fc956224fd2 diff --git a/libraries/extra-cmake-modules b/libraries/extra-cmake-modules index bbcbaff78..a3d9394ab 160000 --- a/libraries/extra-cmake-modules +++ b/libraries/extra-cmake-modules @@ -1 +1 @@ -Subproject commit bbcbaff78283270c2beee69afd8d5b91da854af8 +Subproject commit a3d9394aba4b35789293378e04fb7473d65edf97 diff --git a/libraries/filesystem b/libraries/filesystem index 2fc4b4637..076592ce6 160000 --- a/libraries/filesystem +++ b/libraries/filesystem @@ -1 +1 @@ -Subproject commit 2fc4b463759e043476fc0036da094e5877e3dd50 +Subproject commit 076592ce6e64568521b88a11881aa36b3d3f7048 diff --git a/libraries/quazip b/libraries/quazip index 9d3aa3ee9..8aeb3f7d8 160000 --- a/libraries/quazip +++ b/libraries/quazip @@ -1 +1 @@ -Subproject commit 9d3aa3ee948c1cde5a9f873ecbc3bb229c1182ee +Subproject commit 8aeb3f7d8254f4bf1f7c6cf2a8f59c2ca141a552 diff --git a/libraries/tomlplusplus b/libraries/tomlplusplus index 7eb2ffcc0..c4369ae1d 160000 --- a/libraries/tomlplusplus +++ b/libraries/tomlplusplus @@ -1 +1 @@ -Subproject commit 7eb2ffcc09f8e9890dc0b77ff8ab00fc53b1f2b8 +Subproject commit c4369ae1d8955cae20c4ab40b9813ef4b60e48be diff --git a/libraries/zlib b/libraries/zlib index 04f42ceca..51b7f2abd 160000 --- a/libraries/zlib +++ b/libraries/zlib @@ -1 +1 @@ -Subproject commit 04f42ceca40f73e2978b50e93806c2a18c1281fc +Subproject commit 51b7f2abdade71cd9bb0e7a373ef2610ec6f9daf From 8e8538b506b5f3ae2b2424599078966600bb764c Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 18 Jan 2025 16:55:25 -0500 Subject: [PATCH 497/616] ci: build nix packages for aarch64-linux Signed-off-by: seth --- .github/workflows/build.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f9469be2e..5cc71d88d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -665,6 +665,9 @@ jobs: - os: ubuntu-22.04 system: x86_64-linux + - os: ubuntu-22.04-arm + system: aarch64-linux + - os: macos-13 system: x86_64-darwin From 66f0397087d9b88c93e69c5e26a138d235344546 Mon Sep 17 00:00:00 2001 From: seth Date: Sat, 18 Jan 2025 17:05:17 -0500 Subject: [PATCH 498/616] ci: build flatpaks for arm Signed-off-by: seth --- .github/workflows/build.yml | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index f9469be2e..338c7219e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -633,10 +633,24 @@ jobs: ccache -s flatpak: - runs-on: ubuntu-latest + name: Flatpak (${{ matrix.arch }}) + + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-22.04 + arch: x86_64 + + - os: ubuntu-22.04-arm + arch: aarch64 + + runs-on: ${{ matrix.os }} + container: image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.8 options: --privileged + steps: - name: Checkout uses: actions/checkout@v4 @@ -654,6 +668,7 @@ jobs: with: bundle: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-Flatpak.flatpak manifest-path: flatpak/org.prismlauncher.PrismLauncher.yml + arch: ${{ matrix.arch }} nix: name: Nix (${{ matrix.system }}) From be3eca8c97fdbb8daede84cab20fbd7695334242 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 19 Jan 2025 01:05:06 +0200 Subject: [PATCH 499/616] remove specific step for qt6 Signed-off-by: Trial97 --- .github/workflows/build.yml | 29 +++++------------------------ 1 file changed, 5 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 12dea1715..bbe2adee4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -547,8 +547,8 @@ jobs: mv "PrismLauncher-Linux-x86_64.AppImage" "PrismLauncher-Linux-${{ env.VERSION }}-${{ inputs.build_type }}-x86_64.AppImage" - - name: Package (Linux, qt6, portable) - if: runner.os == 'Linux' && matrix.qt_ver != 5 + - name: Package (Linux, portable) + if: runner.os == 'Linux' run: | cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_PORTABLE_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -DINSTALL_BUNDLE=full -G Ninja cmake --install ${{ env.BUILD_DIR }} @@ -557,28 +557,9 @@ jobs: mkdir ${{ env.INSTALL_PORTABLE_DIR }}/lib cp /lib/x86_64-linux-gnu/libbz2.so.1.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib cp /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib - cp /usr/lib/x86_64-linux-gnu/libcrypto.so.3 ${{ env.INSTALL_PORTABLE_DIR }}/lib - cp /usr/lib/x86_64-linux-gnu/libssl.so.3 ${{ env.INSTALL_PORTABLE_DIR }}/lib - cp /usr/lib/x86_64-linux-gnu/libffi.so.8 ${{ env.INSTALL_PORTABLE_DIR }}/lib - mv ${{ env.INSTALL_PORTABLE_DIR }}/bin/*.so* ${{ env.INSTALL_PORTABLE_DIR }}/lib - - for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); do l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done > ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt - cd ${{ env.INSTALL_PORTABLE_DIR }} - tar -czf ../PrismLauncher-portable.tar.gz * - - - name: Package (Linux, qt5, portable) - if: runner.os == 'Linux' && matrix.qt_ver == 5 - run: | - cmake -S . -B ${{ env.BUILD_DIR }} -DCMAKE_INSTALL_PREFIX=${{ env.INSTALL_PORTABLE_DIR }} -DCMAKE_BUILD_TYPE=${{ inputs.build_type }} -DENABLE_LTO=ON -DLauncher_BUILD_PLATFORM=official -DCMAKE_C_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DCMAKE_CXX_COMPILER_LAUNCHER=${{ env.CCACHE_VAR }} -DLauncher_QT_VERSION_MAJOR=${{ matrix.qt_ver }} -DLauncher_BUILD_ARTIFACT=Linux-Qt${{ matrix.qt_ver }} -DINSTALL_BUNDLE=full -G Ninja - cmake --install ${{ env.BUILD_DIR }} - cmake --install ${{ env.BUILD_DIR }} --component portable - - mkdir ${{ env.INSTALL_PORTABLE_DIR }}/lib - cp /lib/x86_64-linux-gnu/libbz2.so.1.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib - cp /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib - cp /usr/lib/x86_64-linux-gnu/libcrypto.so.1.1 ${{ env.INSTALL_PORTABLE_DIR }}/lib - cp /usr/lib/x86_64-linux-gnu/libssl.so.1.1 ${{ env.INSTALL_PORTABLE_DIR }}/lib - cp /usr/lib/x86_64-linux-gnu/libffi.so.7 ${{ env.INSTALL_PORTABLE_DIR }}/lib + cp /usr/lib/x86_64-linux-gnu/libcrypto.so.* ${{ env.INSTALL_PORTABLE_DIR }}/lib + cp /usr/lib/x86_64-linux-gnu/libssl.so.* ${{ env.INSTALL_PORTABLE_DIR }}/lib + cp /usr/lib/x86_64-linux-gnu/libffi.so.* ${{ env.INSTALL_PORTABLE_DIR }}/lib mv ${{ env.INSTALL_PORTABLE_DIR }}/bin/*.so* ${{ env.INSTALL_PORTABLE_DIR }}/lib for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); do l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done > ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt From 1b5d3c2bf903bbcade7b38c22c0b103a0c6999f8 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Sun, 19 Jan 2025 02:03:21 +0200 Subject: [PATCH 500/616] Update .github/workflows/build.yml Co-authored-by: seth Signed-off-by: Alexandru Ionut Tripon --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bbe2adee4..169d63176 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -521,8 +521,8 @@ jobs: cp -r ${{ runner.workspace }}/Qt/${{ matrix.qt_version }}/gcc_64/plugins/iconengines/* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/plugins/iconengines - cp /usr/lib/x86_64-linux-gnu/libcrypto.so.3 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/ - cp /usr/lib/x86_64-linux-gnu/libssl.so.3 ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/ + cp /usr/lib/x86_64-linux-gnu/libcrypto.so.* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/ + cp /usr/lib/x86_64-linux-gnu/libssl.so.* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/ cp /usr/lib/x86_64-linux-gnu/libOpenGL.so.0* ${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib/ LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${{ env.INSTALL_APPIMAGE_DIR }}/usr/lib" From 8d4f27953978d1f308ac152fa5cfb9e860bf7cef Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 19 Jan 2025 00:24:56 +0000 Subject: [PATCH 501/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/bffc22eb12172e6db3c5dde9e3e5628f8e3e7912?narHash=sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc%2Bc2c%3D' (2025-01-08) → 'github:NixOS/nixpkgs/5df43628fdf08d642be8ba5b3625a6c70731c19c?narHash=sha256-Tbk1MZbtV2s5aG%2BiM99U8FqwxU/YNArMcWAv6clcsBc%3D' (2025-01-16) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 3ab2fcd67..01f66b974 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1736344531, - "narHash": "sha256-8YVQ9ZbSfuUk2bUf2KRj60NRraLPKPS0Q4QFTbc+c2c=", + "lastModified": 1737062831, + "narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "bffc22eb12172e6db3c5dde9e3e5628f8e3e7912", + "rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c", "type": "github" }, "original": { From db766574a42a4b7db6b320b6d469b233ce5f3100 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 21 Jan 2025 01:38:13 +0200 Subject: [PATCH 502/616] Update .github/workflows/build.yml Co-authored-by: Seth Flynn Signed-off-by: Alexandru Ionut Tripon --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 169d63176..680a39a4f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -559,7 +559,7 @@ jobs: cp /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 ${{ env.INSTALL_PORTABLE_DIR }}/lib cp /usr/lib/x86_64-linux-gnu/libcrypto.so.* ${{ env.INSTALL_PORTABLE_DIR }}/lib cp /usr/lib/x86_64-linux-gnu/libssl.so.* ${{ env.INSTALL_PORTABLE_DIR }}/lib - cp /usr/lib/x86_64-linux-gnu/libffi.so.* ${{ env.INSTALL_PORTABLE_DIR }}/lib + cp /usr/lib/x86_64-linux-gnu/libffi.so.*.* ${{ env.INSTALL_PORTABLE_DIR }}/lib mv ${{ env.INSTALL_PORTABLE_DIR }}/bin/*.so* ${{ env.INSTALL_PORTABLE_DIR }}/lib for l in $(find ${{ env.INSTALL_PORTABLE_DIR }} -type f); do l=${l#$(pwd)/}; l=${l#${{ env.INSTALL_PORTABLE_DIR }}/}; l=${l#./}; echo $l; done > ${{ env.INSTALL_PORTABLE_DIR }}/manifest.txt From e66f447ce5bca996b0a12fac02216b2b6ab8ccb6 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Mon, 20 Jan 2025 20:35:37 -0500 Subject: [PATCH 503/616] feat: use better compile flags for mingw Signed-off-by: Seth Flynn --- CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index dcf13c577..d61817ecf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -78,6 +78,13 @@ else() # ATL's pack list needs more than the default 1 Mib stack on windows if(WIN32) set(CMAKE_EXE_LINKER_FLAGS "-Wl,--stack,8388608 ${CMAKE_EXE_LINKER_FLAGS}") + + # -ffunction-sections and -fdata-sections help reduce binary size + # -mguard=cf enables Control Flow Guard + # TODO: Look into -gc-sections to further reduce binary size + foreach(lang C CXX) + set("CMAKE_${lang}_FLAGS_RELEASE" "-ffunction-sections -fdata-sections -mguard=cf") + endforeach() endif() endif() From 2a403b3bfe9f4c79c38c33e80515a232576f6018 Mon Sep 17 00:00:00 2001 From: eff3ry Date: Wed, 22 Jan 2025 01:39:28 +1300 Subject: [PATCH 504/616] Edit Modrinth search faucets Edit Modrinth search faucets to alter the client and server filters to be more in-line with the Modrinth website and Launcher, making it easier to find client-side only mods etc. Signed-off-by: Jeffery Tolmie Jeffery.tolmie@gmail.com --- launcher/modplatform/modrinth/ModrinthAPI.h | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h index 3a5c21ed1..ae74545e2 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.h +++ b/launcher/modplatform/modrinth/ModrinthAPI.h @@ -71,13 +71,15 @@ class ModrinthAPI : public NetworkResourceAPI { static auto getSideFilters(QString side) -> const QString { - if (side.isEmpty() || side == "both") { + if (side.isEmpty()) { return {}; } + if (side == "both") + return QString("\"client_side:required\"],[\"server_side:required\""); if (side == "client") - return QString("\"client_side:required\",\"client_side:optional\""); + return QString("\"client_side:required\",\"client_side:optional\"],[\"server_side:optional\",\"server_side:unsupported\""); if (side == "server") - return QString("\"server_side:required\",\"server_side:optional\""); + return QString("\"server_side:required\",\"server_side:optional\"],[\"client_side:optional\",\"client_side:unsupported\""); return {}; } From 4ba3fd559d2664099524848825adb6f5a60650ab Mon Sep 17 00:00:00 2001 From: eff3ry Date: Wed, 22 Jan 2025 01:40:59 +1300 Subject: [PATCH 505/616] Update Filter Checks Updates the filter checks so that options both and none can be differentiated. Signed-off-by: Jeffery Tolmie Jeffery.tolmie@gmail.com --- launcher/ui/widgets/ModFilterWidget.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/launcher/ui/widgets/ModFilterWidget.cpp b/launcher/ui/widgets/ModFilterWidget.cpp index 5ae49d3a5..36afbcd87 100644 --- a/launcher/ui/widgets/ModFilterWidget.cpp +++ b/launcher/ui/widgets/ModFilterWidget.cpp @@ -279,14 +279,14 @@ void ModFilterWidget::onSideFilterChanged() { QString side; - if (ui->clientSide->isChecked() != ui->serverSide->isChecked()) { - if (ui->clientSide->isChecked()) - side = "client"; - else - side = "server"; + if (ui->clientSide->isChecked() && !ui->serverSide->isChecked()) { + side = "client"; + } else if (!ui->clientSide->isChecked() && ui->serverSide->isChecked()) { + side = "server"; + } else if (ui->clientSide->isChecked() && ui->serverSide->isChecked()) { + side = "both"; } else { - // both are checked or none are checked; in either case no filtering will happen - side = ""; + side = "none"; } m_filter_changed = side != m_filter->side; From 532fec77480fd6de608f6bb4966cf234427cc777 Mon Sep 17 00:00:00 2001 From: eff3ry Date: Wed, 22 Jan 2025 01:48:04 +1300 Subject: [PATCH 506/616] DCO Remediation Commit DCO Remediation Commit for eff3ry I, eff3ry , hereby add my Signed-off-by to this commit: 2a403b3bfe9f4c79c38c33e80515a232576f6018 I, eff3ry , hereby add my Signed-off-by to this commit: 4ba3fd559d2664099524848825adb6f5a60650ab Signed-off-by: eff3ry --- launcher/ui/widgets/ModFilterWidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/ui/widgets/ModFilterWidget.cpp b/launcher/ui/widgets/ModFilterWidget.cpp index 36afbcd87..d39b7a81a 100644 --- a/launcher/ui/widgets/ModFilterWidget.cpp +++ b/launcher/ui/widgets/ModFilterWidget.cpp @@ -289,6 +289,7 @@ void ModFilterWidget::onSideFilterChanged() side = "none"; } + m_filter_changed = side != m_filter->side; m_filter->side = side; if (m_filter_changed) From caccaefb3954bbe168a032b61f2590e9e796ad8e Mon Sep 17 00:00:00 2001 From: Jeffery Tolmie Date: Wed, 22 Jan 2025 02:06:49 +1300 Subject: [PATCH 507/616] Change "none" to "" Co-authored-by: Alexandru Ionut Tripon Signed-off-by: Jeffery Tolmie --- launcher/ui/widgets/ModFilterWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/widgets/ModFilterWidget.cpp b/launcher/ui/widgets/ModFilterWidget.cpp index d39b7a81a..37211693f 100644 --- a/launcher/ui/widgets/ModFilterWidget.cpp +++ b/launcher/ui/widgets/ModFilterWidget.cpp @@ -286,7 +286,7 @@ void ModFilterWidget::onSideFilterChanged() } else if (ui->clientSide->isChecked() && ui->serverSide->isChecked()) { side = "both"; } else { - side = "none"; + side = ""; } From 38d3f14f06214d4231b6a0955f2ae4d490ed970f Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 21 Jan 2025 16:45:40 +0200 Subject: [PATCH 508/616] Apply suggestions from code review Co-authored-by: TheKodeToad Signed-off-by: Alexandru Ionut Tripon --- launcher/ui/dialogs/ProfileSetupDialog.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/ui/dialogs/ProfileSetupDialog.cpp b/launcher/ui/dialogs/ProfileSetupDialog.cpp index 3869ca85b..dd87b249c 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.cpp +++ b/launcher/ui/dialogs/ProfileSetupDialog.cpp @@ -265,9 +265,9 @@ void ProfileSetupDialog::setupProfileFinished() auto parsedError = MojangError::fromJSON(*m_profile_response); ui->errorLabel->setVisible(true); - QString errorMessage = tr("Network error(%1): %2: HTTP Status: %3") - .arg(QString::number(m_profile_task->error()), m_profile_task->errorString(), - QString::number(m_profile_task->replyStatusCode())); + QString errorMessage = + tr("Network Error: %1\nHTTP Status: %2").arg(m_profile_task->errorString(), QString::number(m_profile_task->replyStatusCode())); + if (parsedError.fullyParsed) { errorMessage += "Path: " + parsedError.path + "\n"; @@ -278,7 +278,7 @@ void ProfileSetupDialog::setupProfileFinished() errorMessage += "Log:\n" + parsedError.rawError + "\n"; } - ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + errorMessage); + ui->errorLabel->setText(tr("The server responded with the following error:") + "\n\n" + errorMessage); qDebug() << parsedError.rawError; auto button = ui->buttonBox->button(QDialogButtonBox::Cancel); button->setEnabled(true); From 705375c0dfc1e3f64a32bed182e288e55a312bbf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 21 Jan 2025 21:35:18 +0000 Subject: [PATCH 509/616] chore(deps): update determinatesystems/magic-nix-cache-action action to v9 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index feea08543..a14b07cec 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -700,7 +700,7 @@ jobs: # For PRs - name: Setup Nix Magic Cache - uses: DeterminateSystems/magic-nix-cache-action@v8 + uses: DeterminateSystems/magic-nix-cache-action@v9 # For in-tree builds - name: Setup Cachix From 7010b8acb65221772870e1720389d71652d6089f Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 21 Jan 2025 23:36:40 +0200 Subject: [PATCH 510/616] fix the freeze with openglwidget Signed-off-by: Trial97 --- launcher/CMakeLists.txt | 4 +- .../ui/dialogs/skins/SkinManageDialog.cpp | 22 +++--- launcher/ui/dialogs/skins/SkinManageDialog.h | 10 ++- launcher/ui/dialogs/skins/SkinManageDialog.ui | 16 +--- .../ui/dialogs/skins/draw/BoxGeometry.cpp | 2 - launcher/ui/dialogs/skins/draw/BoxGeometry.h | 2 +- ...nOpenGLWidget.cpp => SkinOpenGLWindow.cpp} | 76 ++++++++++++------- ...{SkinOpenGLWidget.h => SkinOpenGLWindow.h} | 15 +++- 8 files changed, 81 insertions(+), 66 deletions(-) rename launcher/ui/dialogs/skins/draw/{SkinOpenGLWidget.cpp => SkinOpenGLWindow.cpp} (78%) rename launcher/ui/dialogs/skins/draw/{SkinOpenGLWidget.h => SkinOpenGLWindow.h} (84%) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index c79f5e600..cee30e47d 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1077,8 +1077,8 @@ SET(LAUNCHER_SOURCES ui/dialogs/skins/SkinManageDialog.cpp ui/dialogs/skins/SkinManageDialog.h - ui/dialogs/skins/draw/SkinOpenGLWidget.h - ui/dialogs/skins/draw/SkinOpenGLWidget.cpp + ui/dialogs/skins/draw/SkinOpenGLWindow.h + ui/dialogs/skins/draw/SkinOpenGLWindow.cpp ui/dialogs/skins/draw/Scene.h ui/dialogs/skins/draw/Scene.cpp ui/dialogs/skins/draw/BoxGeometry.h diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.cpp b/launcher/ui/dialogs/skins/SkinManageDialog.cpp index bace07c6b..2127fc9cc 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.cpp +++ b/launcher/ui/dialogs/skins/SkinManageDialog.cpp @@ -17,7 +17,7 @@ */ #include "SkinManageDialog.h" -#include "ui/dialogs/skins/draw/SkinOpenGLWidget.h" +#include "ui/dialogs/skins/draw/SkinOpenGLWindow.h" #include "ui_SkinManageDialog.h" #include @@ -53,13 +53,12 @@ #include "ui/instanceview/InstanceDelegate.h" SkinManageDialog::SkinManageDialog(QWidget* parent, MinecraftAccountPtr acct) - : QDialog(nullptr) - , m_acct(acct) - , m_ui(new Ui::SkinManageDialog) - , m_list(this, APPLICATION->settings()->get("SkinsDir").toString(), acct) + : QDialog(parent), m_acct(acct), m_ui(new Ui::SkinManageDialog), m_list(this, APPLICATION->settings()->get("SkinsDir").toString(), acct) { m_ui->setupUi(this); + m_skinPreview = new SkinOpenGLWindow(this, palette().color(QPalette::Normal, QPalette::Base)); + setWindowModality(Qt::WindowModal); auto contentsWidget = m_ui->listView; @@ -100,11 +99,14 @@ SkinManageDialog::SkinManageDialog(QWidget* parent, MinecraftAccountPtr acct) m_ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); m_ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); + + m_ui->skinLayout->insertWidget(0, QWidget::createWindowContainer(m_skinPreview, this)); } SkinManageDialog::~SkinManageDialog() { delete m_ui; + delete m_skinPreview; } void SkinManageDialog::activated(QModelIndex index) @@ -126,7 +128,7 @@ void SkinManageDialog::selectionChanged(QItemSelection selected, [[maybe_unused] if (!skin) return; - m_ui->selectedModel->updateScene(skin); + m_skinPreview->updateScene(skin); m_ui->capeCombo->setCurrentIndex(m_capesIdx.value(skin->getCapeId())); m_ui->steveBtn->setChecked(skin->getModel() == SkinModel::CLASSIC); m_ui->alexBtn->setChecked(skin->getModel() == SkinModel::SLIM); @@ -222,10 +224,10 @@ void SkinManageDialog::on_capeCombo_currentIndexChanged(int index) if (!cape.isNull()) { m_ui->capeImage->setPixmap(previewCape(cape).scaled(size() * (1. / 3), Qt::KeepAspectRatio, Qt::FastTransformation)); } - m_ui->selectedModel->updateCape(cape); + m_skinPreview->updateCape(cape); if (auto skin = getSelectedSkin(); skin) { skin->setCapeId(id.toString()); - m_ui->selectedModel->updateScene(skin); + m_skinPreview->updateScene(skin); } } @@ -233,7 +235,7 @@ void SkinManageDialog::on_steveBtn_toggled(bool checked) { if (auto skin = getSelectedSkin(); skin) { skin->setModel(checked ? SkinModel::CLASSIC : SkinModel::SLIM); - m_ui->selectedModel->updateScene(skin); + m_skinPreview->updateScene(skin); } } @@ -516,13 +518,11 @@ void SkinManageDialog::resizeEvent(QResizeEvent* event) QWidget::resizeEvent(event); QSize s = size() * (1. / 3); - m_ui->selectedModel->updateScene(getSelectedSkin()); auto id = m_ui->capeCombo->currentData(); auto cape = m_capes.value(id.toString(), {}); if (!cape.isNull()) { m_ui->capeImage->setPixmap(previewCape(cape).scaled(s, Qt::KeepAspectRatio, Qt::FastTransformation)); } - m_ui->selectedModel->updateCape(cape); } SkinModel* SkinManageDialog::getSelectedSkin() diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.h b/launcher/ui/dialogs/skins/SkinManageDialog.h index cb3e494d8..c6a6c9fcd 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.h +++ b/launcher/ui/dialogs/skins/SkinManageDialog.h @@ -25,20 +25,20 @@ #include "minecraft/auth/MinecraftAccount.h" #include "minecraft/skins/SkinList.h" #include "minecraft/skins/SkinModel.h" +#include "ui/dialogs/skins/draw/SkinOpenGLWindow.h" namespace Ui { class SkinManageDialog; } - -class SkinManageDialog : public QDialog { +class SkinManageDialog : public QDialog, public SkinProvider { Q_OBJECT public: explicit SkinManageDialog(QWidget* parent, MinecraftAccountPtr acct); virtual ~SkinManageDialog(); void resizeEvent(QResizeEvent* event) override; - SkinModel* getSelectedSkin(); - QHash capes(); + virtual SkinModel* getSelectedSkin() override; + virtual QHash capes() override; public slots: void selectionChanged(QItemSelection, QItemSelection); @@ -60,10 +60,12 @@ class SkinManageDialog : public QDialog { private: void setupCapes(); + private: MinecraftAccountPtr m_acct; Ui::SkinManageDialog* m_ui; SkinList m_list; QString m_selectedSkinKey; QHash m_capes; QHash m_capesIdx; + SkinOpenGLWindow* m_skinPreview = nullptr; }; diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.ui b/launcher/ui/dialogs/skins/SkinManageDialog.ui index 58f7f723d..7e8b4bc46 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.ui +++ b/launcher/ui/dialogs/skins/SkinManageDialog.ui @@ -19,14 +19,7 @@ - - - - - - false - - + @@ -185,13 +178,6 @@ - - - SkinOpenGLWidget - QOpenGLWidget -
    ui/dialogs/skins/draw/SkinOpenGLWidget.h
    -
    -
    diff --git a/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp b/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp index 9a5ad1ce2..7eb766ac1 100644 --- a/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp +++ b/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp @@ -182,8 +182,6 @@ QVector getCubeUVs(float u, float v, float width, float height, float namespace opengl { BoxGeometry::BoxGeometry(QVector3D size, QVector3D position) : m_indexBuf(QOpenGLBuffer::IndexBuffer), m_size(size), m_position(position) { - initializeOpenGLFunctions(); - // Generate 2 VBOs m_vertexBuf.create(); m_indexBuf.create(); diff --git a/launcher/ui/dialogs/skins/draw/BoxGeometry.h b/launcher/ui/dialogs/skins/draw/BoxGeometry.h index 1a245bc14..7f36cff1b 100644 --- a/launcher/ui/dialogs/skins/draw/BoxGeometry.h +++ b/launcher/ui/dialogs/skins/draw/BoxGeometry.h @@ -25,7 +25,7 @@ #include namespace opengl { -class BoxGeometry : protected QOpenGLFunctions { +class BoxGeometry { public: BoxGeometry(QVector3D size, QVector3D position); BoxGeometry(QVector3D size, QVector3D position, QPoint uv, QVector3D textureDim, QSize textureSize = { 64, 64 }); diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp similarity index 78% rename from launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp rename to launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp index f1222d63e..9fbbcee9f 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp @@ -26,34 +26,54 @@ #include #include "minecraft/skins/SkinModel.h" -#include "ui/dialogs/skins/SkinManageDialog.h" #include "ui/dialogs/skins/draw/BoxGeometry.h" #include "ui/dialogs/skins/draw/Scene.h" -SkinOpenGLWidget::~SkinOpenGLWidget() +SkinOpenGLWindow::SkinOpenGLWindow(SkinProvider* parent, QColor color) + : QOpenGLWindow(), QOpenGLFunctions(), m_baseColor(color), m_parent(parent) +{ + QSurfaceFormat format = QSurfaceFormat::defaultFormat(); + format.setDepthBufferSize(24); + setFormat(format); +} + +SkinOpenGLWindow::~SkinOpenGLWindow() { // Make sure the context is current when deleting the texture // and the buffers. makeCurrent(); - delete m_scene; - delete m_background; - m_backgroundTexture->destroy(); - delete m_backgroundTexture; - if (m_program->isLinked()) { - m_program->release(); + // double check if resources were initialized because they are not + // initialized together with the object + if (m_scene) { + delete m_scene; + } + if (m_background) { + delete m_background; + } + if (m_backgroundTexture) { + if (m_backgroundTexture->isCreated()) { + m_backgroundTexture->destroy(); + } + delete m_backgroundTexture; + } + if (m_program) { + if (m_program->isLinked()) { + m_program->release(); + } + m_program->removeAllShaders(); + delete m_program; } - m_program->removeAllShaders(); - delete m_program; doneCurrent(); } -void SkinOpenGLWidget::mousePressEvent(QMouseEvent* e) +void SkinOpenGLWindow::mousePressEvent(QMouseEvent* e) { // Save mouse press position m_mousePosition = QVector2D(e->pos()); m_isMousePressed = true; } -void SkinOpenGLWidget::mouseMoveEvent(QMouseEvent* event) + +void SkinOpenGLWindow::mouseMoveEvent(QMouseEvent* event) { if (m_isMousePressed) { int dx = event->x() - m_mousePosition.x(); @@ -72,12 +92,13 @@ void SkinOpenGLWidget::mouseMoveEvent(QMouseEvent* event) update(); // Trigger a repaint } } -void SkinOpenGLWidget::mouseReleaseEvent([[maybe_unused]] QMouseEvent* e) + +void SkinOpenGLWindow::mouseReleaseEvent([[maybe_unused]] QMouseEvent* e) { m_isMousePressed = false; } -void SkinOpenGLWidget::initializeGL() +void SkinOpenGLWindow::initializeGL() { initializeOpenGLFunctions(); @@ -89,11 +110,11 @@ void SkinOpenGLWidget::initializeGL() QImage skin, cape; bool slim = false; - if (auto p = dynamic_cast(parent()); p) { - if (auto s = p->getSelectedSkin()) { + if (m_parent) { + if (auto s = m_parent->getSelectedSkin()) { skin = s->getTexture(); slim = s->getModel() == SkinModel::SLIM; - cape = p->capes().value(s->getCapeId(), {}); + cape = m_parent->capes().value(s->getCapeId(), {}); } } @@ -102,7 +123,7 @@ void SkinOpenGLWidget::initializeGL() glEnable(GL_TEXTURE_2D); } -void SkinOpenGLWidget::initShaders() +void SkinOpenGLWindow::initShaders() { m_program = new QOpenGLShaderProgram(this); // Compile vertex shader @@ -122,7 +143,7 @@ void SkinOpenGLWidget::initShaders() close(); } -void SkinOpenGLWidget::resizeGL(int w, int h) +void SkinOpenGLWindow::resizeGL(int w, int h) { // Calculate aspect ratio qreal aspect = qreal(w) / qreal(h ? h : 1); @@ -136,7 +157,7 @@ void SkinOpenGLWidget::resizeGL(int w, int h) m_projection.perspective(fov, aspect, zNear, zFar); } -void SkinOpenGLWidget::paintGL() +void SkinOpenGLWindow::paintGL() { // Clear color and depth buffer glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); @@ -171,7 +192,7 @@ void SkinOpenGLWidget::paintGL() m_program->release(); } -void SkinOpenGLWidget::updateScene(SkinModel* skin) +void SkinOpenGLWindow::updateScene(SkinModel* skin) { if (skin && m_scene) { m_scene->setMode(skin->getModel() == SkinModel::SLIM); @@ -179,7 +200,7 @@ void SkinOpenGLWidget::updateScene(SkinModel* skin) update(); } } -void SkinOpenGLWidget::updateCape(const QImage& cape) +void SkinOpenGLWindow::updateCape(const QImage& cape) { if (m_scene) { m_scene->setCapeVisible(!cape.isNull()); @@ -236,16 +257,16 @@ QImage generateChessboardImage(int width, int height, int tileSize, QColor baseC return image; } -void SkinOpenGLWidget::generateBackgroundTexture(int width, int height, int tileSize) +void SkinOpenGLWindow::generateBackgroundTexture(int width, int height, int tileSize) { - m_backgroundTexture = - new QOpenGLTexture(generateChessboardImage(width, height, tileSize, palette().color(QPalette::Normal, QPalette::Base))); + m_backgroundTexture = new QOpenGLTexture(generateChessboardImage(width, height, tileSize, m_baseColor)); m_backgroundTexture->setMinificationFilter(QOpenGLTexture::Nearest); m_backgroundTexture->setMagnificationFilter(QOpenGLTexture::Nearest); } -void SkinOpenGLWidget::renderBackground() +void SkinOpenGLWindow::renderBackground() { + glDisable(GL_DEPTH_TEST); glDepthMask(GL_FALSE); // Disable depth buffer writing m_backgroundTexture->bind(); QMatrix4x4 matrix; @@ -254,9 +275,10 @@ void SkinOpenGLWidget::renderBackground() m_background->draw(m_program); m_backgroundTexture->release(); glDepthMask(GL_TRUE); // Re-enable depth buffer writing + glEnable(GL_DEPTH_TEST); } -void SkinOpenGLWidget::wheelEvent(QWheelEvent* event) +void SkinOpenGLWindow::wheelEvent(QWheelEvent* event) { // Adjust distance based on scroll int delta = event->angleDelta().y(); // Positive for scroll up, negative for scroll down diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.h similarity index 84% rename from launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h rename to launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.h index 4c2292054..2b229de7e 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.h @@ -22,18 +22,23 @@ #include #include #include -#include +#include #include #include "minecraft/skins/SkinModel.h" #include "ui/dialogs/skins/draw/BoxGeometry.h" #include "ui/dialogs/skins/draw/Scene.h" -class SkinOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { +class SkinProvider { + public: + virtual SkinModel* getSelectedSkin() = 0; + virtual QHash capes() = 0; +}; +class SkinOpenGLWindow : public QOpenGLWindow, protected QOpenGLFunctions { Q_OBJECT public: - SkinOpenGLWidget(QWidget* parent = nullptr) : QOpenGLWidget(parent), QOpenGLFunctions() {} - virtual ~SkinOpenGLWidget(); + SkinOpenGLWindow(SkinProvider* parent, QColor color); + virtual ~SkinOpenGLWindow(); void updateScene(SkinModel* skin); void updateCape(const QImage& cape); @@ -68,4 +73,6 @@ class SkinOpenGLWidget : public QOpenGLWidget, protected QOpenGLFunctions { opengl::BoxGeometry* m_background = nullptr; QOpenGLTexture* m_backgroundTexture = nullptr; + QColor m_baseColor; + SkinProvider* m_parent = nullptr; }; From 49d82ab5287fa5be8681a9d03ceca78801a7ff8e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 21 Jan 2025 23:49:42 +0200 Subject: [PATCH 511/616] fix build Signed-off-by: Trial97 --- CMakeLists.txt | 3 +-- launcher/CMakeLists.txt | 1 - launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 9d59f83ad..0fa59146a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -314,11 +314,10 @@ if(Launcher_QT_VERSION_MAJOR EQUAL 5) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUNICODE -D_UNICODE") elseif(Launcher_QT_VERSION_MAJOR EQUAL 6) set(QT_VERSION_MAJOR 6) - find_package(Qt6 REQUIRED COMPONENTS Core CoreTools Widgets Concurrent Network Test Xml Core5Compat NetworkAuth OpenGL OpenGLWidgets) + find_package(Qt6 REQUIRED COMPONENTS Core CoreTools Widgets Concurrent Network Test Xml Core5Compat NetworkAuth OpenGL) find_package(Qt6 COMPONENTS DBus) list(APPEND Launcher_QT_DBUS Qt6::DBus) list(APPEND Launcher_QT_LIBS Qt6::Core5Compat) - list(APPEND Launcher_QT_OpenGL Qt6::OpenGLWidgets) if(NOT Launcher_FORCE_BUNDLED_LIBS) find_package(QuaZip-Qt6 1.3 QUIET) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index cee30e47d..d6ed1c9e1 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1305,7 +1305,6 @@ target_link_libraries(Launcher_logic Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::NetworkAuth Qt${QT_VERSION_MAJOR}::OpenGL - ${Launcher_QT_OpenGL} ${Launcher_QT_DBUS} ${Launcher_QT_LIBS} ) diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp index 9fbbcee9f..c00d33720 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -#include "ui/dialogs/skins/draw/SkinOpenGLWidget.h" +#include "ui/dialogs/skins/draw/SkinOpenGLWindow.h" #include #include From aeeb6f6bb6fea91f9e0e75794186f5f5a0b481de Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 22 Jan 2025 00:16:20 +0200 Subject: [PATCH 512/616] fix build final Signed-off-by: Trial97 --- launcher/ui/dialogs/skins/draw/BoxGeometry.cpp | 2 ++ launcher/ui/dialogs/skins/draw/BoxGeometry.h | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp b/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp index 7eb766ac1..9a5ad1ce2 100644 --- a/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp +++ b/launcher/ui/dialogs/skins/draw/BoxGeometry.cpp @@ -182,6 +182,8 @@ QVector getCubeUVs(float u, float v, float width, float height, float namespace opengl { BoxGeometry::BoxGeometry(QVector3D size, QVector3D position) : m_indexBuf(QOpenGLBuffer::IndexBuffer), m_size(size), m_position(position) { + initializeOpenGLFunctions(); + // Generate 2 VBOs m_vertexBuf.create(); m_indexBuf.create(); diff --git a/launcher/ui/dialogs/skins/draw/BoxGeometry.h b/launcher/ui/dialogs/skins/draw/BoxGeometry.h index 7f36cff1b..1a245bc14 100644 --- a/launcher/ui/dialogs/skins/draw/BoxGeometry.h +++ b/launcher/ui/dialogs/skins/draw/BoxGeometry.h @@ -25,7 +25,7 @@ #include namespace opengl { -class BoxGeometry { +class BoxGeometry : protected QOpenGLFunctions { public: BoxGeometry(QVector3D size, QVector3D position); BoxGeometry(QVector3D size, QVector3D position, QPoint uv, QVector3D textureDim, QSize textureSize = { 64, 64 }); From 255f27d4196633ba23e406b416ace833bd12ac99 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 22 Jan 2025 16:11:54 +0200 Subject: [PATCH 513/616] virtual constructor Signed-off-by: Trial97 --- launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.h | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.h b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.h index 2b229de7e..e2c32da0f 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.h +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.h @@ -30,6 +30,7 @@ class SkinProvider { public: + virtual ~SkinProvider() = default; virtual SkinModel* getSelectedSkin() = 0; virtual QHash capes() = 0; }; From 43376b1c40dbc1963c4c95f07763e57dc052e9da Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 25 Jan 2025 19:06:52 +0100 Subject: [PATCH 514/616] remove unused defines in McClient.h Signed-off-by: iTrooz --- launcher/ui/pages/instance/McClient.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.h b/launcher/ui/pages/instance/McClient.h index 4df879609..4e54bf27e 100644 --- a/launcher/ui/pages/instance/McClient.h +++ b/launcher/ui/pages/instance/McClient.h @@ -6,9 +6,6 @@ #include -#define SEGMENT_BITS 0x7F -#define CONTINUE_BIT 0x80 - // Client for the Minecraft protocol class McClient : public QObject { Q_OBJECT From fe8f755b43f9a5d8d4a8c41cbb7073bb4dbf3410 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 25 Jan 2025 20:08:44 +0100 Subject: [PATCH 515/616] remove waitForConnected() and waitForReadyRead() and use signals ineatd Signed-off-by: iTrooz --- launcher/ui/pages/instance/McClient.cpp | 85 +++++++++---------- launcher/ui/pages/instance/McClient.h | 18 +++- launcher/ui/pages/instance/ServerPingTask.cpp | 36 ++++---- 3 files changed, 71 insertions(+), 68 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index 978eb9295..474490018 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -15,33 +15,21 @@ McClient::McClient(QObject *parent, QString domain, QString ip, short port): QObject(parent), m_domain(domain), m_ip(ip), m_port(port) {} -QJsonObject McClient::getStatusDataBlocking() { +void McClient::getStatusData() { qDebug() << "Connecting to socket.."; - m_socket.connectToHost(m_ip, m_port); - if (!m_socket.waitForConnected()) { - throw Exception("Failed to connect to socket"); - } - qDebug() << "Connected to socket successfully"; - sendRequest(); + connect(&m_socket, &QTcpSocket::connected, this, [this]() { + qDebug() << "Connected to socket successfully"; + sendRequest(); - if (!m_socket.waitForReadyRead()) { - throw Exception("Socket didn't send anything to read"); - } - return readResponse(); -} - -QFuture McClient::getOnlinePlayers() { - return QtConcurrent::run([this]() { - try { - auto status = getStatusDataBlocking(); - auto players = Json::requireObject(status, "players"); - return Json::requireInteger(players, "online"); - } catch (const Exception &e) { - qDebug() << "Error: " << e.what(); - return -1; - } + connect(&m_socket, &QTcpSocket::readyRead, this, &McClient::readRawResponse); }); + + connect(&m_socket, &QTcpSocket::errorOccurred, this, [this]() { + emitFail("Socket disconnected"); + }); + + m_socket.connectToHost(m_ip, m_port); } void McClient::sendRequest() { @@ -58,32 +46,25 @@ void McClient::sendRequest() { writePacketToSocket(data); // send status packet } -void McClient::readBytesExactFromSocket(QByteArray &resp, int bytesToRead) { - while (bytesToRead > 0) { - qDebug() << bytesToRead << " bytes left to read"; - if (!m_socket.waitForReadyRead()) { - throw Exception("Read timeout or error"); +// Accumulate data until we have a full response, then call parseResponse() +void McClient::readRawResponse() { + m_resp.append(m_socket.readAll()); + if (m_wantedRespLength == 0 && m_resp.size() >= 5) { + m_wantedRespLength = readVarInt(m_resp); + } + + if (m_wantedRespLength != 0 && m_resp.size() >= m_wantedRespLength) { + if (m_resp.size() > m_wantedRespLength) { + qDebug() << "Warning: Packet length doesn't match actual packet size (" << m_wantedRespLength << " expected vs " << m_resp.size() << " received)"; } - - QByteArray chunk = m_socket.read(bytesToRead); - resp.append(chunk); - bytesToRead -= chunk.size(); + parseResponse(); } } -QJsonObject McClient::readResponse() { - auto resp = m_socket.readAll(); - int length = readVarInt(resp); - - // finish ready response - readBytesExactFromSocket(resp, length-resp.size()); - - if (length != resp.size()) { - qDebug() << "Warning: Packet length doesn't match actual packet size (" << length << " expected vs " << resp.size() << " received)"; - } +void McClient::parseResponse() { qDebug() << "Received response successfully"; - int packetID = readVarInt(resp); + int packetID = readVarInt(m_resp); if (packetID != 0x00) { throw Exception( QString("Packet ID doesn't match expected value (0x00 vs 0x%1)") @@ -91,11 +72,11 @@ QJsonObject McClient::readResponse() { ); } - Q_UNUSED(readVarInt(resp)); // json length + Q_UNUSED(readVarInt(m_resp)); // json length // 'resp' should now be the JSON string - QJsonDocument doc = QJsonDocument::fromJson(resp); - return doc.object(); + QJsonDocument doc = QJsonDocument::fromJson(m_resp); + emitSucceed(doc.object()); } // From https://wiki.vg/Protocol#VarInt_and_VarLong @@ -164,3 +145,15 @@ void McClient::writePacketToSocket(QByteArray &data) { data.clear(); } + + +void McClient::emitFail(QString error) { + qDebug() << "Minecraft server ping for status error:" << error; + emit failed(); + emit finished(); +} + +void McClient::emitSucceed(QJsonObject data) { + emit succeeded(data); + emit finished(); +} diff --git a/launcher/ui/pages/instance/McClient.h b/launcher/ui/pages/instance/McClient.h index 4e54bf27e..820ce255b 100644 --- a/launcher/ui/pages/instance/McClient.h +++ b/launcher/ui/pages/instance/McClient.h @@ -15,14 +15,16 @@ class McClient : public QObject { short m_port; QTcpSocket m_socket; + unsigned m_wantedRespLength = 0; + QByteArray m_resp; + public: explicit McClient(QObject *parent, QString domain, QString ip, short port); - QFuture getOnlinePlayers(); + void getStatusData(); private: - QJsonObject getStatusDataBlocking(); void sendRequest(); - QJsonObject readResponse(); - void readBytesExactFromSocket(QByteArray &resp, int bytesToRead); + void readRawResponse(); + void parseResponse(); void writeVarInt(QByteArray &data, int value); int readVarInt(QByteArray &data); @@ -32,4 +34,12 @@ private: void writeString(QByteArray &data, const std::string &value); void writePacketToSocket(QByteArray &data); + + void emitFail(QString error); + void emitSucceed(QJsonObject data); + +signals: + void succeeded(QJsonObject data); + void failed(); + void finished(); }; diff --git a/launcher/ui/pages/instance/ServerPingTask.cpp b/launcher/ui/pages/instance/ServerPingTask.cpp index 260405dc0..0574dfca1 100644 --- a/launcher/ui/pages/instance/ServerPingTask.cpp +++ b/launcher/ui/pages/instance/ServerPingTask.cpp @@ -3,6 +3,11 @@ #include "ServerPingTask.h" #include "McResolver.h" #include "McClient.h" +#include + +unsigned getOnlinePlayers(QJsonObject data) { + return Json::requireInteger(Json::requireObject(data, "players"), "online"); +} void ServerPingTask::executeTask() { qDebug() << "Querying status of " << QString("%1:%2").arg(m_domain).arg(m_port); @@ -14,26 +19,21 @@ void ServerPingTask::executeTask() { // Now that we have the IP and port, query the server McClient *client = new McClient(nullptr, m_domain, ip, port); - auto onlineFuture = client->getOnlinePlayers(); - // Wait for query to finish - QFutureWatcher *watcher = new QFutureWatcher(); - QObject::connect(watcher, &QFutureWatcher::finished, this, [this, client, onlineFuture, watcher]() { - client->deleteLater(); - watcher->deleteLater(); - - int online = onlineFuture.result(); - if (online == -1) { - qDebug() << "Failed to get online players"; - emitFailed(); - return; - } else { - qDebug() << "Online players: " << online; - m_outputOnlinePlayers = online; - emitSucceeded(); - } + QObject::connect(client, &McClient::succeeded, this, [this](QJsonObject data) { + m_outputOnlinePlayers = getOnlinePlayers(data); + qDebug() << "Online players: " << m_outputOnlinePlayers; + emitSucceeded(); }); - watcher->setFuture(onlineFuture); + QObject::connect(client, &McClient::failed, this, [this]() { + emitFailed(); + }); + + // Delete McClient object when done + QObject::connect(client, &McClient::finished, this, [this, client]() { + client->deleteLater(); + }); + client->getStatusData(); }); // Delete McResolver object when done From cf2b413f295dbafa970e676169a4437c95a08596 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 25 Jan 2025 20:10:26 +0100 Subject: [PATCH 516/616] forward McClient error as Task error Signed-off-by: iTrooz --- launcher/ui/pages/instance/McClient.cpp | 2 +- launcher/ui/pages/instance/McClient.h | 2 +- launcher/ui/pages/instance/ServerPingTask.cpp | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index 474490018..05d4ac31a 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -149,7 +149,7 @@ void McClient::writePacketToSocket(QByteArray &data) { void McClient::emitFail(QString error) { qDebug() << "Minecraft server ping for status error:" << error; - emit failed(); + emit failed(error); emit finished(); } diff --git a/launcher/ui/pages/instance/McClient.h b/launcher/ui/pages/instance/McClient.h index 820ce255b..55d0350d1 100644 --- a/launcher/ui/pages/instance/McClient.h +++ b/launcher/ui/pages/instance/McClient.h @@ -40,6 +40,6 @@ private: signals: void succeeded(QJsonObject data); - void failed(); + void failed(QString error); void finished(); }; diff --git a/launcher/ui/pages/instance/ServerPingTask.cpp b/launcher/ui/pages/instance/ServerPingTask.cpp index 0574dfca1..f0dfb8cd7 100644 --- a/launcher/ui/pages/instance/ServerPingTask.cpp +++ b/launcher/ui/pages/instance/ServerPingTask.cpp @@ -25,8 +25,8 @@ void ServerPingTask::executeTask() { qDebug() << "Online players: " << m_outputOnlinePlayers; emitSucceeded(); }); - QObject::connect(client, &McClient::failed, this, [this]() { - emitFailed(); + QObject::connect(client, &McClient::failed, this, [this](QString error) { + emitFailed(error); }); // Delete McClient object when done From 439c565961c695f09a5f0b591de06fa2be25a350 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 25 Jan 2025 20:14:15 +0100 Subject: [PATCH 517/616] forward McResolver error as Task error Signed-off-by: iTrooz --- launcher/ui/pages/instance/McResolver.cpp | 4 ++-- launcher/ui/pages/instance/McResolver.h | 2 +- launcher/ui/pages/instance/ServerPingTask.cpp | 3 +++ 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp index 80f93d9f8..48c2a72fd 100644 --- a/launcher/ui/pages/instance/McResolver.cpp +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -62,8 +62,8 @@ void McResolver::pingWithDomainA(QString domain, int port) { } void McResolver::emitFail(QString error) { - qDebug() << "Ping error:" << error; - emit failed(); + qDebug() << "DNS resolver error:" << error; + emit failed(error); emit finished(); } diff --git a/launcher/ui/pages/instance/McResolver.h b/launcher/ui/pages/instance/McResolver.h index e2840fd8a..06b4b7b38 100644 --- a/launcher/ui/pages/instance/McResolver.h +++ b/launcher/ui/pages/instance/McResolver.h @@ -23,6 +23,6 @@ private: signals: void succeeded(QString ip, int port); - void failed(); + void failed(QString error); void finished(); }; diff --git a/launcher/ui/pages/instance/ServerPingTask.cpp b/launcher/ui/pages/instance/ServerPingTask.cpp index f0dfb8cd7..3ec9308ca 100644 --- a/launcher/ui/pages/instance/ServerPingTask.cpp +++ b/launcher/ui/pages/instance/ServerPingTask.cpp @@ -35,6 +35,9 @@ void ServerPingTask::executeTask() { }); client->getStatusData(); }); + QObject::connect(resolver, &McResolver::failed, this, [this](QString error) { + emitFailed(error); + }); // Delete McResolver object when done QObject::connect(resolver, &McResolver::finished, [resolver]() { From 7c82cd82d7216299ca7a2497f4bc318f3532650a Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 25 Jan 2025 20:19:19 +0100 Subject: [PATCH 518/616] use m_responseReadState to avoid calling parseResponse() (as a failsafe for malicious/bad server responses) Signed-off-by: iTrooz --- launcher/ui/pages/instance/McClient.cpp | 12 +++++++++--- launcher/ui/pages/instance/McClient.h | 4 ++++ 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index 05d4ac31a..3ed6a7665 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -46,18 +46,24 @@ void McClient::sendRequest() { writePacketToSocket(data); // send status packet } -// Accumulate data until we have a full response, then call parseResponse() +// Accumulate data until we have a full response, then call parseResponse() once void McClient::readRawResponse() { + if (m_responseReadState == 2) { + return; + } + m_resp.append(m_socket.readAll()); - if (m_wantedRespLength == 0 && m_resp.size() >= 5) { + if (m_responseReadState == 0 && m_resp.size() >= 5) { m_wantedRespLength = readVarInt(m_resp); + m_responseReadState = 1; } - if (m_wantedRespLength != 0 && m_resp.size() >= m_wantedRespLength) { + if (m_responseReadState == 1 && m_resp.size() >= m_wantedRespLength) { if (m_resp.size() > m_wantedRespLength) { qDebug() << "Warning: Packet length doesn't match actual packet size (" << m_wantedRespLength << " expected vs " << m_resp.size() << " received)"; } parseResponse(); + m_responseReadState = 2; } } diff --git a/launcher/ui/pages/instance/McClient.h b/launcher/ui/pages/instance/McClient.h index 55d0350d1..11983eaa8 100644 --- a/launcher/ui/pages/instance/McClient.h +++ b/launcher/ui/pages/instance/McClient.h @@ -15,6 +15,10 @@ class McClient : public QObject { short m_port; QTcpSocket m_socket; + // 0: did not start reading the response yet + // 1: read the response length, still reading the response + // 2: finished reading the response + unsigned m_responseReadState = 0; unsigned m_wantedRespLength = 0; QByteArray m_resp; From b06c4341d822324835c96ad927c06056ee3f0936 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 25 Jan 2025 20:22:09 +0100 Subject: [PATCH 519/616] update documentation Signed-off-by: iTrooz --- launcher/ui/pages/instance/McClient.cpp | 1 - launcher/ui/pages/instance/McClient.h | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index 3ed6a7665..cae345d4c 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -46,7 +46,6 @@ void McClient::sendRequest() { writePacketToSocket(data); // send status packet } -// Accumulate data until we have a full response, then call parseResponse() once void McClient::readRawResponse() { if (m_responseReadState == 2) { return; diff --git a/launcher/ui/pages/instance/McClient.h b/launcher/ui/pages/instance/McClient.h index 11983eaa8..59834dfb7 100644 --- a/launcher/ui/pages/instance/McClient.h +++ b/launcher/ui/pages/instance/McClient.h @@ -24,9 +24,11 @@ class McClient : public QObject { public: explicit McClient(QObject *parent, QString domain, QString ip, short port); + //! Read status data of the server, and calls the succeeded() signal with the parsed JSON data void getStatusData(); private: void sendRequest(); + //! Accumulate data until we have a full response, then call parseResponse() once void readRawResponse(); void parseResponse(); From 0b9d4784d8e002da5ff4d662c620d256d5eeab74 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 25 Jan 2025 20:26:52 +0100 Subject: [PATCH 520/616] Show socket error in McClient Signed-off-by: iTrooz --- launcher/ui/pages/instance/McClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index cae345d4c..a06c67ad8 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -26,7 +26,7 @@ void McClient::getStatusData() { }); connect(&m_socket, &QTcpSocket::errorOccurred, this, [this]() { - emitFail("Socket disconnected"); + emitFail("Socket disconnected: " + m_socket.errorString()); }); m_socket.connectToHost(m_ip, m_port); From bb20848449db46602aecaf3c42b2578257e105e2 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 25 Jan 2025 21:01:21 +0100 Subject: [PATCH 521/616] use more sensible protocol version Signed-off-by: iTrooz --- launcher/ui/pages/instance/McClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index a06c67ad8..90813ac18 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -35,7 +35,7 @@ void McClient::getStatusData() { void McClient::sendRequest() { QByteArray data; writeVarInt(data, 0x00); // packet ID - writeVarInt(data, 0x760); // protocol version + writeVarInt(data, 763); // hardcoded protocol version (763 = 1.20.1) writeVarInt(data, m_domain.size()); // server address length writeString(data, m_domain.toStdString()); // server address writeFixedInt(data, m_port, 2); // server port From 3d9e07372143e2e153688d3e4e0b1909acecbf0a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 26 Jan 2025 00:23:21 +0000 Subject: [PATCH 522/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/5df43628fdf08d642be8ba5b3625a6c70731c19c?narHash=sha256-Tbk1MZbtV2s5aG%2BiM99U8FqwxU/YNArMcWAv6clcsBc%3D' (2025-01-16) → 'github:NixOS/nixpkgs/825479c345a7f806485b7f00dbe3abb50641b083?narHash=sha256-nU6AezEX4EuahTO1YopzueAXfjFfmCHylYEFCagduHU%3D' (2025-01-24) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 01f66b974..dc07808f0 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737062831, - "narHash": "sha256-Tbk1MZbtV2s5aG+iM99U8FqwxU/YNArMcWAv6clcsBc=", + "lastModified": 1737746512, + "narHash": "sha256-nU6AezEX4EuahTO1YopzueAXfjFfmCHylYEFCagduHU=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5df43628fdf08d642be8ba5b3625a6c70731c19c", + "rev": "825479c345a7f806485b7f00dbe3abb50641b083", "type": "github" }, "original": { From 1b4b36df33fe32b3fbc731b2f74bcbdbf0226146 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sun, 26 Jan 2025 22:25:26 +0000 Subject: [PATCH 523/616] Unify Java page Signed-off-by: TheKodeToad --- launcher/CMakeLists.txt | 3 + launcher/ui/pages/global/JavaPage.cpp | 173 +-------- launcher/ui/pages/global/JavaPage.h | 15 +- launcher/ui/pages/global/JavaPage.ui | 309 +--------------- launcher/ui/widgets/JavaSettingsWidget.cpp | 309 ++++++++++++++++ launcher/ui/widgets/JavaSettingsWidget.h | 67 ++++ launcher/ui/widgets/JavaSettingsWidget.ui | 254 +++++++++++++ launcher/ui/widgets/JavaWizardWidget.cpp | 2 +- .../ui/widgets/MinecraftSettingsWidget.cpp | 333 +++++++++--------- launcher/ui/widgets/MinecraftSettingsWidget.h | 4 +- .../ui/widgets/MinecraftSettingsWidget.ui | 30 +- 11 files changed, 865 insertions(+), 634 deletions(-) create mode 100644 launcher/ui/widgets/JavaSettingsWidget.cpp create mode 100644 launcher/ui/widgets/JavaSettingsWidget.h create mode 100644 launcher/ui/widgets/JavaSettingsWidget.ui diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 28d184501..297178c88 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1124,6 +1124,8 @@ SET(LAUNCHER_SOURCES ui/widgets/ThemeCustomizationWidget.cpp ui/widgets/MinecraftSettingsWidget.h ui/widgets/MinecraftSettingsWidget.cpp + ui/widgets/JavaSettingsWidget.h + ui/widgets/JavaSettingsWidget.cpp # GUI - instance group view ui/instanceview/InstanceProxyModel.cpp @@ -1197,6 +1199,7 @@ qt_wrap_ui(LAUNCHER_UI ui/widgets/SubTaskProgressBar.ui ui/widgets/ThemeCustomizationWidget.ui ui/widgets/MinecraftSettingsWidget.ui + ui/widgets/JavaSettingsWidget.ui ui/dialogs/CopyInstanceDialog.ui ui/dialogs/ProfileSetupDialog.ui ui/dialogs/ProgressDialog.ui diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 0ae296815..9f681c6f1 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -62,6 +62,9 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) { ui->setupUi(this); + + m_javaSettings = new JavaSettingsWidget(nullptr, this); + ui->generalScrollArea->setWidget(m_javaSettings); if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { ui->managedJavaList->initialize(new JavaInstallList(this, true)); @@ -69,18 +72,8 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) ui->managedJavaList->selectCurrent(); ui->managedJavaList->setEmptyString(tr("No managed Java versions are installed")); ui->managedJavaList->setEmptyErrorString(tr("Couldn't load the managed Java list!")); - connect(ui->autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this] { - ui->autodownloadCheckBox->setEnabled(ui->autodetectJavaCheckBox->isChecked()); - if (!ui->autodetectJavaCheckBox->isChecked()) - ui->autodownloadCheckBox->setChecked(false); - }); - } else { - ui->autodownloadCheckBox->setHidden(true); + } else ui->tabWidget->tabBar()->hide(); - } - - loadSettings(); - updateThresholds(); } JavaPage::~JavaPage() @@ -88,117 +81,18 @@ JavaPage::~JavaPage() delete ui; } +void JavaPage::retranslate() +{ + ui->retranslateUi(this); +} + bool JavaPage::apply() { - applySettings(); + m_javaSettings->saveSettings(); + JavaCommon::checkJVMArgs(APPLICATION->settings()->get("JvmArgs").toString(), this); return true; } -void JavaPage::applySettings() -{ - auto s = APPLICATION->settings(); - - // Memory - int min = ui->minMemSpinBox->value(); - int max = ui->maxMemSpinBox->value(); - if (min < max) { - s->set("MinMemAlloc", min); - s->set("MaxMemAlloc", max); - } else { - s->set("MinMemAlloc", max); - s->set("MaxMemAlloc", min); - } - s->set("PermGen", ui->permGenSpinBox->value()); - - // Java Settings - s->set("JavaPath", ui->javaPathTextBox->text()); - s->set("JvmArgs", ui->jvmArgsTextBox->toPlainText().replace("\n", " ")); - s->set("IgnoreJavaCompatibility", ui->skipCompatibilityCheckbox->isChecked()); - s->set("IgnoreJavaWizard", ui->skipJavaWizardCheckbox->isChecked()); - s->set("AutomaticJavaSwitch", ui->autodetectJavaCheckBox->isChecked()); - s->set("AutomaticJavaDownload", ui->autodownloadCheckBox->isChecked()); - JavaCommon::checkJVMArgs(s->get("JvmArgs").toString(), this->parentWidget()); -} -void JavaPage::loadSettings() -{ - auto s = APPLICATION->settings(); - // Memory - int min = s->get("MinMemAlloc").toInt(); - int max = s->get("MaxMemAlloc").toInt(); - if (min < max) { - ui->minMemSpinBox->setValue(min); - ui->maxMemSpinBox->setValue(max); - } else { - ui->minMemSpinBox->setValue(max); - ui->maxMemSpinBox->setValue(min); - } - ui->permGenSpinBox->setValue(s->get("PermGen").toInt()); - - // Java Settings - ui->javaPathTextBox->setText(s->get("JavaPath").toString()); - ui->jvmArgsTextBox->setPlainText(s->get("JvmArgs").toString()); - ui->skipCompatibilityCheckbox->setChecked(s->get("IgnoreJavaCompatibility").toBool()); - ui->skipJavaWizardCheckbox->setChecked(s->get("IgnoreJavaWizard").toBool()); - ui->autodetectJavaCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool()); - ui->autodownloadCheckBox->setChecked(s->get("AutomaticJavaSwitch").toBool() && s->get("AutomaticJavaDownload").toBool()); -} - -void JavaPage::on_javaDetectBtn_clicked() -{ - if (JavaUtils::getJavaCheckPath().isEmpty()) { - JavaCommon::javaCheckNotFound(this); - return; - } - - JavaInstallPtr java; - - VersionSelectDialog vselect(APPLICATION->javalist().get(), tr("Select a Java version"), this, true); - vselect.setResizeOn(2); - vselect.exec(); - - if (vselect.result() == QDialog::Accepted && vselect.selectedVersion()) { - java = std::dynamic_pointer_cast(vselect.selectedVersion()); - ui->javaPathTextBox->setText(java->path); - if (!java->is_64bit && APPLICATION->settings()->get("MaxMemAlloc").toInt() > 2048) { - CustomMessageBox::selectable(this, tr("Confirm Selection"), - tr("You selected a 32-bit version of Java.\n" - "This installation does not support more than 2048MiB of RAM.\n" - "Please make sure that the maximum memory value is lower."), - QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) - ->exec(); - } - } -} - -void JavaPage::on_javaBrowseBtn_clicked() -{ - QString raw_path = QFileDialog::getOpenFileName(this, tr("Find Java executable")); - - // do not allow current dir - it's dirty. Do not allow dirs that don't exist - if (raw_path.isEmpty()) { - return; - } - - QString cooked_path = FS::NormalizePath(raw_path); - QFileInfo javaInfo(cooked_path); - ; - if (!javaInfo.exists() || !javaInfo.isExecutable()) { - return; - } - ui->javaPathTextBox->setText(cooked_path); -} - -void JavaPage::on_javaTestBtn_clicked() -{ - if (checker) { - return; - } - checker.reset(new JavaCommon::TestCheck(this, ui->javaPathTextBox->text(), ui->jvmArgsTextBox->toPlainText().replace("\n", " "), - ui->minMemSpinBox->value(), ui->maxMemSpinBox->value(), ui->permGenSpinBox->value())); - connect(checker.get(), SIGNAL(finished()), SLOT(checkerFinished())); - checker->run(); -} - void JavaPage::on_downloadJavaButton_clicked() { auto jdialog = new Java::InstallDialog({}, nullptr, this); @@ -206,51 +100,6 @@ void JavaPage::on_downloadJavaButton_clicked() ui->managedJavaList->loadList(); } -void JavaPage::on_maxMemSpinBox_valueChanged([[maybe_unused]] int i) -{ - updateThresholds(); -} - -void JavaPage::checkerFinished() -{ - checker.reset(); -} - -void JavaPage::retranslate() -{ - ui->retranslateUi(this); -} - -void JavaPage::updateThresholds() -{ - auto sysMiB = Sys::getSystemRam() / Sys::mebibyte; - unsigned int maxMem = ui->maxMemSpinBox->value(); - unsigned int minMem = ui->minMemSpinBox->value(); - - QString iconName; - - if (maxMem >= sysMiB) { - iconName = "status-bad"; - ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation exceeds your system memory capacity.")); - } else if (maxMem > (sysMiB * 0.9)) { - iconName = "status-yellow"; - ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation approaches your system memory capacity.")); - } else if (maxMem < minMem) { - iconName = "status-yellow"; - ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation is smaller than the minimum value")); - } else { - iconName = "status-good"; - ui->labelMaxMemIcon->setToolTip(""); - } - - { - auto height = ui->labelMaxMemIcon->fontInfo().pixelSize(); - QIcon icon = APPLICATION->getThemedIcon(iconName); - QPixmap pix = icon.pixmap(height, height); - ui->labelMaxMemIcon->setPixmap(pix); - } -} - void JavaPage::on_removeJavaButton_clicked() { auto version = ui->managedJavaList->selectedVersion(); diff --git a/launcher/ui/pages/global/JavaPage.h b/launcher/ui/pages/global/JavaPage.h index 0a1c4a6be..75fd69e6a 100644 --- a/launcher/ui/pages/global/JavaPage.h +++ b/launcher/ui/pages/global/JavaPage.h @@ -37,6 +37,7 @@ #include #include +#include #include #include #include "JavaCommon.h" @@ -59,26 +60,16 @@ class JavaPage : public QWidget, public BasePage { QIcon icon() const override { return APPLICATION->getThemedIcon("java"); } QString id() const override { return "java-settings"; } QString helpPage() const override { return "Java-settings"; } - bool apply() override; void retranslate() override; - void updateThresholds(); - - private: - void applySettings(); - void loadSettings(); + bool apply() override; private slots: - void on_javaDetectBtn_clicked(); - void on_javaTestBtn_clicked(); - void on_javaBrowseBtn_clicked(); void on_downloadJavaButton_clicked(); void on_removeJavaButton_clicked(); void on_refreshJavaButton_clicked(); - void on_maxMemSpinBox_valueChanged(int i); - void checkerFinished(); private: Ui::JavaPage* ui; - unique_qobject_ptr checker; + JavaSettingsWidget* m_javaSettings; }; diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index e6bbeb15a..9baa2f6f1 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -40,292 +40,22 @@ - - - Memory + + + true - - - - - Ma&ximum memory allocation: - - - maxMemSpinBox - - - - - - - &PermGen: - - - permGenSpinBox - - - - - - - &Minimum memory allocation: - - - minMemSpinBox - - - - - - - The amount of memory Minecraft is started with. - - - MiB - - - 8 - - - 1048576 - - - 128 - - - 256 - - - - - - - The maximum amount of memory Minecraft is allowed to use. - - - MiB - - - 8 - - - 1048576 - - - 128 - - - 1024 - - - - - - - The amount of memory available to store loaded Java classes. - - - MiB - - - 4 - - - 999999999 - - - 8 - - - 64 - - - - - - - - - - maxMemSpinBox - - - - + + + + 0 + 0 + 535 + 610 + + + - - - - Java Runtime - - - - - - - 0 - 0 - - - - If enabled, the launcher will not check if an instance is compatible with the selected Java version. - - - &Skip Java compatibility checks - - - - - - - - - - 0 - 0 - - - - &Auto-detect... - - - - - - - - 0 - 0 - - - - &Test - - - - - - - - - - 0 - 0 - - - - JVM arguments: - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - - - - - If enabled, the launcher will not prompt you to choose a Java version if one isn't found. - - - Skip Java &Wizard - - - - - - - true - - - - 0 - 0 - - - - - 16777215 - 100 - - - - - - - - Automatically selects the Java version that is compatible with the current Minecraft instance, based on the major version required. - - - Autodetect Java version - - - - - - - - - - 0 - 0 - - - - &Java path: - - - javaPathTextBox - - - - - - - - - - - 0 - 0 - - - - Browse - - - - - - - - - false - - - Automatically downloads and selects the Java version recommended by Mojang. - - - Auto-download Mojang Java - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -417,19 +147,6 @@ 1 - - minMemSpinBox - maxMemSpinBox - permGenSpinBox - javaPathTextBox - javaBrowseBtn - javaDetectBtn - javaTestBtn - skipCompatibilityCheckbox - skipJavaWizardCheckbox - jvmArgsTextBox - tabWidget - diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp new file mode 100644 index 000000000..980876f35 --- /dev/null +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -0,0 +1,309 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2022 Jamie Mansfield + * Copyright (C) 2022 Sefa Eyeoglu + * Copyright (C) 2024 TheKodeToad + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "JavaSettingsWidget.h" +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ui_JavaSettingsWidget.h" + +JavaSettingsWidget::JavaSettingsWidget(InstancePtr instance, QWidget* parent) + : QWidget(parent), m_instance(std::move(instance)), m_ui(new Ui::JavaSettingsWidget) +{ + m_ui->setupUi(this); + + if (m_instance == nullptr) { + m_ui->javaDownloadBtn->hide(); + if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { + connect(m_ui->autodetectJavaCheckBox, &QCheckBox::stateChanged, this, [this](bool state) { + m_ui->autodownloadJavaCheckBox->setEnabled(state); + if (!state) + m_ui->autodownloadJavaCheckBox->setChecked(false); + }); + } else { + m_ui->autodownloadJavaCheckBox->hide(); + } + } else { + m_ui->javaDownloadBtn->setVisible(BuildConfig.JAVA_DOWNLOADER_ENABLED); + m_ui->skipWizardCheckBox->hide(); + m_ui->autodetectJavaCheckBox->hide(); + m_ui->autodownloadJavaCheckBox->hide(); + + m_ui->javaInstallationGroupBox->setCheckable(true); + m_ui->memoryGroupBox->setCheckable(true); + m_ui->javaArgumentsGroupBox->setCheckable(true); + + SettingsObjectPtr settings = m_instance->settings(); + + connect(settings->getSetting("OverrideJavaLocation").get(), &Setting::SettingChanged, m_ui->javaInstallationGroupBox, + [this, settings] { m_ui->javaInstallationGroupBox->setChecked(settings->get("OverrideJavaLocation").toBool()); }); + connect(settings->getSetting("JavaPath").get(), &Setting::SettingChanged, m_ui->javaInstallationGroupBox, + [this, settings] { m_ui->javaPathTextBox->setText(settings->get("JavaPath").toString()); }); + + connect(m_ui->javaDownloadBtn, &QPushButton::clicked, this, [this] { + auto javaDialog = new Java::InstallDialog({}, m_instance.get(), this); + javaDialog->exec(); + }); + } + + connect(m_ui->javaTestBtn, &QPushButton::clicked, this, &JavaSettingsWidget::onJavaTest); + connect(m_ui->javaDetectBtn, &QPushButton::clicked, this, &JavaSettingsWidget::onJavaAutodetect); + connect(m_ui->javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::onJavaBrowse); + + connect(m_ui->maxMemSpinBox, &QSpinBox::valueChanged, this, &JavaSettingsWidget::updateThresholds); + + loadSettings(); + updateThresholds(); +} + +JavaSettingsWidget::~JavaSettingsWidget() +{ + delete m_ui; +} + +void JavaSettingsWidget::loadSettings() +{ + SettingsObjectPtr settings; + + if (m_instance != nullptr) + settings = m_instance->settings(); + else + settings = APPLICATION->settings(); + + // Java Settings + m_ui->javaInstallationGroupBox->setChecked(settings->get("OverrideJavaLocation").toBool()); + m_ui->javaPathTextBox->setText(settings->get("JavaPath").toString()); + + m_ui->skipCompatibilityCheckBox->setChecked(settings->get("IgnoreJavaCompatibility").toBool()); + + m_ui->javaArgumentsGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideJavaArgs").toBool()); + m_ui->jvmArgsTextBox->setPlainText(settings->get("JvmArgs").toString()); + + if (m_instance == nullptr) { + m_ui->skipWizardCheckBox->setChecked(settings->get("IgnoreJavaWizard").toBool()); + m_ui->autodetectJavaCheckBox->setChecked(settings->get("AutomaticJavaSwitch").toBool()); + m_ui->autodetectJavaCheckBox->stateChanged(m_ui->autodetectJavaCheckBox->isChecked()); + m_ui->autodownloadJavaCheckBox->setChecked(settings->get("AutomaticJavaDownload").toBool()); + } + + // Memory + m_ui->memoryGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideMemory").toBool()); + int min = settings->get("MinMemAlloc").toInt(); + int max = settings->get("MaxMemAlloc").toInt(); + if (min < max) { + m_ui->minMemSpinBox->setValue(min); + m_ui->maxMemSpinBox->setValue(max); + } else { + m_ui->minMemSpinBox->setValue(max); + m_ui->maxMemSpinBox->setValue(min); + } + m_ui->permGenSpinBox->setValue(settings->get("PermGen").toInt()); + + // Java arguments + m_ui->javaArgumentsGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideJavaArgs").toBool()); + m_ui->jvmArgsTextBox->setPlainText(settings->get("JvmArgs").toString()); +} + +void JavaSettingsWidget::saveSettings() +{ + SettingsObjectPtr settings; + + if (m_instance != nullptr) + settings = m_instance->settings(); + else + settings = APPLICATION->settings(); + + SettingsObject::Lock lock(settings); + + // Java Install Settings + bool javaInstall = m_instance == nullptr || m_ui->javaInstallationGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideJavaLocation", javaInstall); + + if (javaInstall) { + settings->set("JavaPath", m_ui->javaPathTextBox->text()); + settings->set("IgnoreJavaCompatibility", m_ui->skipCompatibilityCheckBox->isChecked()); + } else { + settings->reset("JavaPath"); + settings->reset("IgnoreJavaCompatibility"); + } + + if (m_instance == nullptr) { + settings->set("IgnoreJavaWizard", m_ui->skipWizardCheckBox->isChecked()); + settings->set("AutomaticJavaSwitch", m_ui->autodetectJavaCheckBox->isChecked()); + settings->set("AutomaticJavaDownload", m_ui->autodownloadJavaCheckBox->isChecked()); + } + + // Memory + bool memory = m_instance == nullptr || m_ui->memoryGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideMemory", memory); + + if (memory) { + int min = m_ui->minMemSpinBox->value(); + int max = m_ui->maxMemSpinBox->value(); + if (min < max) { + settings->set("MinMemAlloc", min); + settings->set("MaxMemAlloc", max); + } else { + settings->set("MinMemAlloc", max); + settings->set("MaxMemAlloc", min); + } + settings->set("PermGen", m_ui->permGenSpinBox->value()); + } else { + settings->reset("MinMemAlloc"); + settings->reset("MaxMemAlloc"); + settings->reset("PermGen"); + } + + // Java arguments + bool javaArgs = m_instance == nullptr || m_ui->javaArgumentsGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideJavaArgs", javaArgs); + + if (javaArgs) { + settings->set("JvmArgs", m_ui->jvmArgsTextBox->toPlainText().replace("\n", " ")); + } else { + settings->reset("JvmArgs"); + } +} + +void JavaSettingsWidget::onJavaBrowse() +{ + QString rawPath = QFileDialog::getOpenFileName(this, tr("Find Java executable")); + + // do not allow current dir - it's dirty. Do not allow dirs that don't exist + if (rawPath.isEmpty()) { + return; + } + + QString cookedPath = FS::NormalizePath(rawPath); + QFileInfo javaInfo(cookedPath); + if (!javaInfo.exists() || !javaInfo.isExecutable()) { + return; + } + m_ui->javaPathTextBox->setText(cookedPath); +} + +void JavaSettingsWidget::onJavaTest() +{ + if (m_checker != nullptr) + return; + + QString jvmArgs; + + if (m_instance == nullptr || m_ui->javaArgumentsGroupBox->isChecked()) + jvmArgs = m_ui->jvmArgsTextBox->toPlainText().replace("\n", " "); + else + jvmArgs = APPLICATION->settings()->get("JvmArgs").toString(); + + m_checker.reset(new JavaCommon::TestCheck(this, m_ui->javaPathTextBox->text(), jvmArgs, m_ui->minMemSpinBox->value(), + m_ui->maxMemSpinBox->value(), m_ui->permGenSpinBox->value())); + connect(m_checker.get(), &JavaCommon::TestCheck::finished, this, [this] { m_checker.reset(); }); + m_checker->run(); +} + +void JavaSettingsWidget::onJavaAutodetect() +{ + if (JavaUtils::getJavaCheckPath().isEmpty()) { + JavaCommon::javaCheckNotFound(this); + return; + } + + VersionSelectDialog versionDialog(APPLICATION->javalist().get(), tr("Select a Java version"), this, true); + versionDialog.setResizeOn(2); + versionDialog.exec(); + + if (versionDialog.result() == QDialog::Accepted && versionDialog.selectedVersion()) { + JavaInstallPtr java = std::dynamic_pointer_cast(versionDialog.selectedVersion()); + m_ui->javaPathTextBox->setText(java->path); + + if (!java->is_64bit && m_ui->maxMemSpinBox->value() > 2048) { + CustomMessageBox::selectable(this, tr("Confirm Selection"), + tr("You selected a 32-bit version of Java.\n" + "This installation does not support more than 2048MiB of RAM.\n" + "Please make sure that the maximum memory value is lower."), + QMessageBox::Warning, QMessageBox::Ok, QMessageBox::Ok) + ->exec(); + } + } +} +void JavaSettingsWidget::updateThresholds() +{ + auto sysMiB = Sys::getSystemRam() / Sys::mebibyte; + unsigned int maxMem = m_ui->maxMemSpinBox->value(); + unsigned int minMem = m_ui->minMemSpinBox->value(); + + QString iconName; + + if (maxMem >= sysMiB) { + iconName = "status-bad"; + m_ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation exceeds your system memory capacity.")); + } else if (maxMem > (sysMiB * 0.9)) { + iconName = "status-yellow"; + m_ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation approaches your system memory capacity.")); + } else if (maxMem < minMem) { + iconName = "status-yellow"; + m_ui->labelMaxMemIcon->setToolTip(tr("Your maximum memory allocation is smaller than the minimum value")); + } else { + iconName = "status-good"; + m_ui->labelMaxMemIcon->setToolTip(""); + } + + { + auto height = m_ui->labelMaxMemIcon->fontInfo().pixelSize(); + QIcon icon = APPLICATION->getThemedIcon(iconName); + QPixmap pix = icon.pixmap(height, height); + m_ui->labelMaxMemIcon->setPixmap(pix); + } +} diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h new file mode 100644 index 000000000..433a5f19f --- /dev/null +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -0,0 +1,67 @@ +// SPDX-License-Identifier: GPL-3.0-only +/* + * Prism Launcher - Minecraft Launcher + * Copyright (c) 2022 Jamie Mansfield + * Copyright (C) 2024 TheKodeToad + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 3. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * + * This file incorporates work covered by the following copyright and + * permission notice: + * + * Copyright 2013-2021 MultiMC Contributors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#pragma once + +#include +#include +#include + +namespace Ui { +class JavaSettingsWidget; +} + +class JavaSettingsWidget : public QWidget { + Q_OBJECT + + public: + explicit JavaSettingsWidget(InstancePtr instance, QWidget* parent = nullptr); + ~JavaSettingsWidget() override; + + void loadSettings(); + void saveSettings(); + + private slots: + void onJavaBrowse(); + void onJavaAutodetect(); + void onJavaTest(); + void updateThresholds(); + + private: + InstancePtr m_instance; + Ui::JavaSettingsWidget* m_ui; + unique_qobject_ptr m_checker; +}; diff --git a/launcher/ui/widgets/JavaSettingsWidget.ui b/launcher/ui/widgets/JavaSettingsWidget.ui new file mode 100644 index 000000000..a68059907 --- /dev/null +++ b/launcher/ui/widgets/JavaSettingsWidget.ui @@ -0,0 +1,254 @@ + + + JavaSettingsWidget + + + + 0 + 0 + 500 + 600 + + + + Form + + + + + + true + + + Java Insta&llation + + + false + + + false + + + + + + Auto-&detect Java version + + + + + + + + + + + + Browse + + + + + + + + + + + Download Java + + + + + + + Auto-detect... + + + + + + + Test + + + + + + + + + Automatically downloads and selects the Java build recommended by Mojang. + + + Auto-download &Mojang Java + + + + + + + If enabled, the launcher won't prompt you to choose a Java version if one is not found on startup. + + + Skip Java setup prompt on startup + + + + + + + If enabled, the launcher will not check if an instance is compatible with the selected Java version. + + + Skip Java compatibility checks + + + + + + + + + + true + + + Memor&y + + + false + + + false + + + + + + PermGen (Java 7 and earlier): + + + + + + + Minimum memory allocation: + + + + + + + The amount of memory available to store loaded Java classes. + + + MiB + + + 4 + + + 999999999 + + + 8 + + + 64 + + + + + + + Maximum memory allocation: + + + + + + + + + + Qt::AlignCenter + + + maxMemSpinBox + + + + + + + The maximum amount of memory Minecraft is allowed to use. + + + MiB + + + 8 + + + 1048576 + + + 128 + + + 1024 + + + + + + + The amount of memory Minecraft is started with. + + + MiB + + + 8 + + + 1048576 + + + 128 + + + 256 + + + + + + + + + + true + + + Java Argumen&ts + + + false + + + false + + + + + + + + + + + + + diff --git a/launcher/ui/widgets/JavaWizardWidget.cpp b/launcher/ui/widgets/JavaWizardWidget.cpp index edf49fab8..2d7f7840d 100644 --- a/launcher/ui/widgets/JavaWizardWidget.cpp +++ b/launcher/ui/widgets/JavaWizardWidget.cpp @@ -502,7 +502,7 @@ void JavaWizardWidget::retranslate() if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { m_autodownloadCheckBox->setText(tr("Auto-download Mojang Java")); } - m_autodetectJavaCheckBox->setText(tr("Autodetect Java version")); + m_autodetectJavaCheckBox->setText(tr("Auto-detect Java version")); m_autoJavaGroupBox->setTitle(tr("Autodetect Java")); } diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index cfe7a49c1..a49ab2dca 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -47,12 +47,20 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(InstancePtr instance, QWidget* m_ui->setupUi(this); if (m_instance == nullptr) { - // Java - m_ui->settingsTabs->removeTab(1); - // Launch - m_ui->settingsTabs->removeTab(2); + for (int i = 0; i < m_ui->settingsTabs->count(); ++i) { + const QString name = m_ui->settingsTabs->widget(i)->objectName(); + + if (name == "javaTab" || name == "launchTab") { + m_ui->settingsTabs->removeTab(i); + --i; + } + } + m_ui->openGlobalSettingsButton->setVisible(false); } else { + m_javaSettings = new JavaSettingsWidget(m_instance, this); + m_ui->javaScrollArea->setWidget(m_javaSettings); + m_ui->showGameTime->setText(tr("Show time &playing this instance")); m_ui->recordGameTime->setText(tr("&Record time playing this instance")); m_ui->showGlobalGameTime->hide(); @@ -63,6 +71,14 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(InstancePtr instance, QWidget* "not fully supported on this Minecraft version.")); connect(m_ui->openGlobalSettingsButton, &QCommandLinkButton::clicked, this, &MinecraftSettingsWidget::openGlobalSettings); + + m_ui->miscellaneousSettingsBox->setCheckable(true); + m_ui->consoleSettingsBox->setCheckable(true); + m_ui->windowSizeGroupBox->setCheckable(true); + m_ui->nativeWorkaroundsGroupBox->setCheckable(true); + m_ui->perfomanceGroupBox->setCheckable(true); + m_ui->gameTimeGroupBox->setCheckable(true); + m_ui->legacySettingsGroupBox->setCheckable(true); } m_ui->maximizedWarning->hide(); @@ -84,29 +100,34 @@ MinecraftSettingsWidget::~MinecraftSettingsWidget() void MinecraftSettingsWidget::loadSettings() { - const SettingsObjectPtr settings = getSettings(); + SettingsObjectPtr settings; + + if (m_instance != nullptr) + settings = m_instance->settings(); + else + settings = APPLICATION->settings(); // Miscellaneous - m_ui->miscellaneousSettingsBox->setCheckable(m_instance != nullptr); m_ui->miscellaneousSettingsBox->setChecked(settings->get("OverrideMiscellaneous").toBool()); m_ui->closeAfterLaunchCheck->setChecked(settings->get("CloseAfterLaunch").toBool()); m_ui->quitAfterGameStopCheck->setChecked(settings->get("QuitAfterGameStop").toBool()); // Console - m_ui->consoleSettingsBox->setCheckable(m_instance != nullptr); m_ui->consoleSettingsBox->setChecked(m_instance == nullptr || settings->get("OverrideConsole").toBool()); m_ui->showConsoleCheck->setChecked(settings->get("ShowConsole").toBool()); m_ui->autoCloseConsoleCheck->setChecked(settings->get("AutoCloseConsole").toBool()); m_ui->showConsoleErrorCheck->setChecked(settings->get("ShowConsoleOnError").toBool()); // Window Size - m_ui->windowSizeGroupBox->setCheckable(m_instance != nullptr); m_ui->windowSizeGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideWindow").toBool()); m_ui->windowSizeGroupBox->setChecked(settings->get("OverrideWindow").toBool()); m_ui->maximizedCheckBox->setChecked(settings->get("LaunchMaximized").toBool()); m_ui->windowWidthSpinBox->setValue(settings->get("MinecraftWinWidth").toInt()); m_ui->windowHeightSpinBox->setValue(settings->get("MinecraftWinHeight").toInt()); + if (m_javaSettings != nullptr) + m_javaSettings->loadSettings(); + // Custom commands m_ui->customCommands->initialize(m_instance != nullptr, m_instance == nullptr || settings->get("OverrideCommands").toBool(), settings->get("PreLaunchCommand").toString(), settings->get("WrapperCommand").toString(), @@ -117,7 +138,6 @@ void MinecraftSettingsWidget::loadSettings() settings->get("Env").toMap()); // Workarounds - m_ui->nativeWorkaroundsGroupBox->setCheckable(m_instance != nullptr); m_ui->nativeWorkaroundsGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideNativeWorkarounds").toBool()); m_ui->useNativeGLFWCheck->setChecked(settings->get("UseNativeGLFW").toBool()); m_ui->lineEditGLFWPath->setText(settings->get("CustomGLFWPath").toString()); @@ -135,7 +155,6 @@ void MinecraftSettingsWidget::loadSettings() #endif // Performance - m_ui->perfomanceGroupBox->setCheckable(m_instance != nullptr); m_ui->perfomanceGroupBox->setChecked(m_instance == nullptr || settings->get("OverridePerformance").toBool()); m_ui->enableFeralGamemodeCheck->setChecked(settings->get("EnableFeralGamemode").toBool()); m_ui->enableMangoHud->setChecked(settings->get("EnableMangoHud").toBool()); @@ -153,164 +172,170 @@ void MinecraftSettingsWidget::loadSettings() } // Miscellanous - m_ui->gameTimeGroupBox->setCheckable(m_instance != nullptr); m_ui->gameTimeGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideGameTime").toBool()); m_ui->showGameTime->setChecked(settings->get("ShowGameTime").toBool()); m_ui->recordGameTime->setChecked(settings->get("RecordGameTime").toBool()); - m_ui->showGlobalGameTime->setChecked(m_instance != nullptr && settings->get("ShowGlobalGameTime").toBool()); - m_ui->showGameTimeWithoutDays->setChecked(m_instance != nullptr && settings->get("ShowGameTimeWithoutDays").toBool()); + m_ui->showGlobalGameTime->setChecked(m_instance == nullptr && settings->get("ShowGlobalGameTime").toBool()); + m_ui->showGameTimeWithoutDays->setChecked(m_instance == nullptr && settings->get("ShowGameTimeWithoutDays").toBool()); - m_ui->legacySettingsGroupBox->setCheckable(m_instance != nullptr); m_ui->legacySettingsGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideLegacySettings").toBool()); m_ui->onlineFixes->setChecked(settings->get("OnlineFixes").toBool()); } void MinecraftSettingsWidget::saveSettings() { - SettingsObjectPtr settings = getSettings(); - SettingsObject::Lock lock(settings); - - // Miscellaneous - bool miscellaneous = m_instance == nullptr || m_ui->miscellaneousSettingsBox->isChecked(); + SettingsObjectPtr settings; if (m_instance != nullptr) - settings->set("OverrideMiscellaneous", miscellaneous); - - if (miscellaneous) { - settings->set("CloseAfterLaunch", m_ui->closeAfterLaunchCheck->isChecked()); - settings->set("QuitAfterGameStop", m_ui->quitAfterGameStopCheck->isChecked()); - } else { - settings->reset("CloseAfterLaunch"); - settings->reset("QuitAfterGameStop"); - } - - // Console - bool console = m_instance == nullptr || m_ui->consoleSettingsBox->isChecked(); - - if (m_instance != nullptr) - settings->set("OverrideConsole", console); - - if (console) { - settings->set("ShowConsole", m_ui->showConsoleCheck->isChecked()); - settings->set("AutoCloseConsole", m_ui->autoCloseConsoleCheck->isChecked()); - settings->set("ShowConsoleOnError", m_ui->showConsoleErrorCheck->isChecked()); - } else { - settings->reset("ShowConsole"); - settings->reset("AutoCloseConsole"); - settings->reset("ShowConsoleOnError"); - } - - // Window Size - bool window = m_instance == nullptr || m_ui->windowSizeGroupBox->isChecked(); - - if (m_instance != nullptr) - settings->set("OverrideWindow", window); - - if (window) { - settings->set("LaunchMaximized", m_ui->maximizedCheckBox->isChecked()); - settings->set("MinecraftWinWidth", m_ui->windowWidthSpinBox->value()); - settings->set("MinecraftWinHeight", m_ui->windowHeightSpinBox->value()); - } else { - settings->reset("LaunchMaximized"); - settings->reset("MinecraftWinWidth"); - settings->reset("MinecraftWinHeight"); - } - - // Custom Commands - bool custcmd = m_instance == nullptr || m_ui->customCommands->checked(); - - if (m_instance != nullptr) - settings->set("OverrideCommands", custcmd); - - if (custcmd) { - settings->set("PreLaunchCommand", m_ui->customCommands->prelaunchCommand()); - settings->set("WrapperCommand", m_ui->customCommands->wrapperCommand()); - settings->set("PostExitCommand", m_ui->customCommands->postexitCommand()); - } else { - settings->reset("PreLaunchCommand"); - settings->reset("WrapperCommand"); - settings->reset("PostExitCommand"); - } - - // Environment Variables - auto env = m_instance == nullptr || m_ui->environmentVariables->override(); - - if (m_instance != nullptr) - settings->set("OverrideEnv", env); - - if (env) - settings->set("Env", m_ui->environmentVariables->value()); + settings = m_instance->settings(); else - settings->reset("Env"); + settings = APPLICATION->settings(); - // Workarounds - bool workarounds = m_instance == nullptr || m_ui->nativeWorkaroundsGroupBox->isChecked(); + { + SettingsObject::Lock lock(settings); - if (m_instance != nullptr) - settings->set("OverrideNativeWorkarounds", workarounds); + // Miscellaneous + bool miscellaneous = m_instance == nullptr || m_ui->miscellaneousSettingsBox->isChecked(); - if (workarounds) { - settings->set("UseNativeGLFW", m_ui->useNativeGLFWCheck->isChecked()); - settings->set("CustomGLFWPath", m_ui->lineEditGLFWPath->text()); - settings->set("UseNativeOpenAL", m_ui->useNativeOpenALCheck->isChecked()); - settings->set("CustomOpenALPath", m_ui->lineEditOpenALPath->text()); - } else { - settings->reset("UseNativeGLFW"); - settings->reset("CustomGLFWPath"); - settings->reset("UseNativeOpenAL"); - settings->reset("CustomOpenALPath"); + if (m_instance != nullptr) + settings->set("OverrideMiscellaneous", miscellaneous); + + if (miscellaneous) { + settings->set("CloseAfterLaunch", m_ui->closeAfterLaunchCheck->isChecked()); + settings->set("QuitAfterGameStop", m_ui->quitAfterGameStopCheck->isChecked()); + } else { + settings->reset("CloseAfterLaunch"); + settings->reset("QuitAfterGameStop"); + } + + // Console + bool console = m_instance == nullptr || m_ui->consoleSettingsBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideConsole", console); + + if (console) { + settings->set("ShowConsole", m_ui->showConsoleCheck->isChecked()); + settings->set("AutoCloseConsole", m_ui->autoCloseConsoleCheck->isChecked()); + settings->set("ShowConsoleOnError", m_ui->showConsoleErrorCheck->isChecked()); + } else { + settings->reset("ShowConsole"); + settings->reset("AutoCloseConsole"); + settings->reset("ShowConsoleOnError"); + } + + // Window Size + bool window = m_instance == nullptr || m_ui->windowSizeGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideWindow", window); + + if (window) { + settings->set("LaunchMaximized", m_ui->maximizedCheckBox->isChecked()); + settings->set("MinecraftWinWidth", m_ui->windowWidthSpinBox->value()); + settings->set("MinecraftWinHeight", m_ui->windowHeightSpinBox->value()); + } else { + settings->reset("LaunchMaximized"); + settings->reset("MinecraftWinWidth"); + settings->reset("MinecraftWinHeight"); + } + + // Custom Commands + bool custcmd = m_instance == nullptr || m_ui->customCommands->checked(); + + if (m_instance != nullptr) + settings->set("OverrideCommands", custcmd); + + if (custcmd) { + settings->set("PreLaunchCommand", m_ui->customCommands->prelaunchCommand()); + settings->set("WrapperCommand", m_ui->customCommands->wrapperCommand()); + settings->set("PostExitCommand", m_ui->customCommands->postexitCommand()); + } else { + settings->reset("PreLaunchCommand"); + settings->reset("WrapperCommand"); + settings->reset("PostExitCommand"); + } + + // Environment Variables + auto env = m_instance == nullptr || m_ui->environmentVariables->override(); + + if (m_instance != nullptr) + settings->set("OverrideEnv", env); + + if (env) + settings->set("Env", m_ui->environmentVariables->value()); + else + settings->reset("Env"); + + // Workarounds + bool workarounds = m_instance == nullptr || m_ui->nativeWorkaroundsGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideNativeWorkarounds", workarounds); + + if (workarounds) { + settings->set("UseNativeGLFW", m_ui->useNativeGLFWCheck->isChecked()); + settings->set("CustomGLFWPath", m_ui->lineEditGLFWPath->text()); + settings->set("UseNativeOpenAL", m_ui->useNativeOpenALCheck->isChecked()); + settings->set("CustomOpenALPath", m_ui->lineEditOpenALPath->text()); + } else { + settings->reset("UseNativeGLFW"); + settings->reset("CustomGLFWPath"); + settings->reset("UseNativeOpenAL"); + settings->reset("CustomOpenALPath"); + } + + // Performance + bool performance = m_instance == nullptr || m_ui->perfomanceGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverridePerformance", performance); + + if (performance) { + settings->set("EnableFeralGamemode", m_ui->enableFeralGamemodeCheck->isChecked()); + settings->set("EnableMangoHud", m_ui->enableMangoHud->isChecked()); + settings->set("UseDiscreteGpu", m_ui->useDiscreteGpuCheck->isChecked()); + settings->set("UseZink", m_ui->useZink->isChecked()); + } else { + settings->reset("EnableFeralGamemode"); + settings->reset("EnableMangoHud"); + settings->reset("UseDiscreteGpu"); + settings->reset("UseZink"); + } + + // Game time + bool gameTime = m_instance == nullptr || m_ui->gameTimeGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideGameTime", gameTime); + + if (gameTime) { + settings->set("ShowGameTime", m_ui->showGameTime->isChecked()); + settings->set("RecordGameTime", m_ui->recordGameTime->isChecked()); + } else { + settings->reset("ShowGameTime"); + settings->reset("RecordGameTime"); + } + + if (m_instance == nullptr) { + settings->set("ShowGlobalGameTime", m_ui->showGlobalGameTime->isChecked()); + settings->set("ShowGameTimeWithoutDays", m_ui->showGameTimeWithoutDays->isChecked()); + } + + bool overrideLegacySettings = m_instance == nullptr || m_ui->legacySettingsGroupBox->isChecked(); + + if (m_instance != nullptr) + settings->set("OverrideLegacySettings", overrideLegacySettings); + + if (overrideLegacySettings) { + settings->set("OnlineFixes", m_ui->onlineFixes->isChecked()); + } else { + settings->reset("OnlineFixes"); + } } - // Performance - bool performance = m_instance == nullptr || m_ui->perfomanceGroupBox->isChecked(); - - if (m_instance != nullptr) - settings->set("OverridePerformance", performance); - - if (performance) { - settings->set("EnableFeralGamemode", m_ui->enableFeralGamemodeCheck->isChecked()); - settings->set("EnableMangoHud", m_ui->enableMangoHud->isChecked()); - settings->set("UseDiscreteGpu", m_ui->useDiscreteGpuCheck->isChecked()); - settings->set("UseZink", m_ui->useZink->isChecked()); - } else { - settings->reset("EnableFeralGamemode"); - settings->reset("EnableMangoHud"); - settings->reset("UseDiscreteGpu"); - settings->reset("UseZink"); - } - - // Game time - bool gameTime = m_instance == nullptr || m_ui->gameTimeGroupBox->isChecked(); - - if (m_instance != nullptr) - settings->set("OverrideGameTime", gameTime); - - if (gameTime) { - settings->set("ShowGameTime", m_ui->showGameTime->isChecked()); - settings->set("RecordGameTime", m_ui->recordGameTime->isChecked()); - } else { - settings->reset("ShowGameTime"); - settings->reset("RecordGameTime"); - } - - if (m_instance == nullptr) { - settings->set("ShowGlobalGameTime", m_ui->showGlobalGameTime->isChecked()); - settings->set("ShowGameTimeWithoutDays", m_ui->showGameTimeWithoutDays->isChecked()); - } - - bool overrideLegacySettings = m_instance == nullptr || m_ui->legacySettingsGroupBox->isChecked(); - - if (m_instance != nullptr) - settings->set("OverrideLegacySettings", overrideLegacySettings); - - if (overrideLegacySettings) { - settings->set("OnlineFixes", m_ui->onlineFixes->isChecked()); - } else { - settings->reset("OnlineFixes"); - } - - if (m_instance != nullptr) - m_instance->updateRuntimeContext(); + if (m_javaSettings != nullptr) + m_javaSettings->saveSettings(); } void MinecraftSettingsWidget::openGlobalSettings() @@ -322,11 +347,3 @@ void MinecraftSettingsWidget::openGlobalSettings() else // TODO select tab APPLICATION->ShowGlobalSettings(this, "minecraft-settings"); } - -SettingsObjectPtr MinecraftSettingsWidget::getSettings() const -{ - if (m_instance != nullptr) - return m_instance->settings(); - - return APPLICATION->settings(); -} diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.h b/launcher/ui/widgets/MinecraftSettingsWidget.h index a76ff647a..a7491770a 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.h +++ b/launcher/ui/widgets/MinecraftSettingsWidget.h @@ -38,6 +38,7 @@ #include #include +#include "JavaSettingsWidget.h" namespace Ui { class MinecraftSettingsWidget; @@ -54,8 +55,7 @@ class MinecraftSettingsWidget : public QWidget { void openGlobalSettings(); private: - SettingsObjectPtr getSettings() const; - InstancePtr m_instance; Ui::MinecraftSettingsWidget* m_ui; + JavaSettingsWidget* m_javaSettings = nullptr; }; diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.ui b/launcher/ui/widgets/MinecraftSettingsWidget.ui index 78fae9639..0acd34815 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.ui +++ b/launcher/ui/widgets/MinecraftSettingsWidget.ui @@ -63,7 +63,7 @@ 0 0 610 - 607 + 550 @@ -282,6 +282,30 @@
    + + + Java + + + + + + true + + + + + 0 + 0 + 624 + 297 + + + + + + + Tweaks @@ -301,7 +325,7 @@ 0 0 610 - 439 + 398 @@ -489,7 +513,7 @@ 0 0 624 - 291 + 297 From 36a35d792515b57ad589a879011e5cb2f8728ddf Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sun, 26 Jan 2025 22:34:50 +0000 Subject: [PATCH 524/616] Fix tab order Signed-off-by: TheKodeToad --- launcher/ui/widgets/JavaSettingsWidget.ui | 15 ++++++++++ .../ui/widgets/MinecraftSettingsWidget.ui | 29 +++++++++++++++++-- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/launcher/ui/widgets/JavaSettingsWidget.ui b/launcher/ui/widgets/JavaSettingsWidget.ui index a68059907..15ce88f0c 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.ui +++ b/launcher/ui/widgets/JavaSettingsWidget.ui @@ -249,6 +249,21 @@ + + javaPathTextBox + javaBrowseBtn + javaDownloadBtn + javaDetectBtn + javaTestBtn + skipCompatibilityCheckBox + skipWizardCheckBox + autodetectJavaCheckBox + autodownloadJavaCheckBox + minMemSpinBox + maxMemSpinBox + permGenSpinBox + jvmArgsTextBox + diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.ui b/launcher/ui/widgets/MinecraftSettingsWidget.ui index 0acd34815..309758423 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.ui +++ b/launcher/ui/widgets/MinecraftSettingsWidget.ui @@ -645,16 +645,41 @@ + openGlobalSettingsButton + settingsTabs + scrollArea maximizedCheckBox windowWidthSpinBox windowHeightSpinBox + showGameTime + recordGameTime + showGlobalGameTime + showGameTimeWithoutDays showConsoleCheck autoCloseConsoleCheck showConsoleErrorCheck - useNativeGLFWCheck - useNativeOpenALCheck closeAfterLaunchCheck quitAfterGameStopCheck + javaScrollArea + scrollArea_2 + onlineFixes + useNativeGLFWCheck + lineEditGLFWPath + useNativeOpenALCheck + lineEditOpenALPath + perfomanceGroupBox + enableFeralGamemodeCheck + enableMangoHud + useDiscreteGpuCheck + useZink + scrollArea_3 + instanceAccountGroupBox + instanceAccountSelector + serverJoinGroupBox + serverJoinAddressButton + serverJoinAddress + worldJoinButton + worldsCb From 39ae2fbd4a8b59ccbdb369c5755584e5b4d9eff3 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sun, 26 Jan 2025 22:44:43 +0000 Subject: [PATCH 525/616] Fix tab inconsistencies Signed-off-by: TheKodeToad --- launcher/ui/widgets/MinecraftSettingsWidget.cpp | 4 +++- launcher/ui/widgets/MinecraftSettingsWidget.ui | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index a49ab2dca..9a2b9b10c 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -50,7 +50,7 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(InstancePtr instance, QWidget* for (int i = 0; i < m_ui->settingsTabs->count(); ++i) { const QString name = m_ui->settingsTabs->widget(i)->objectName(); - if (name == "javaTab" || name == "launchTab") { + if (name == "javaPage" || name == "launchPage") { m_ui->settingsTabs->removeTab(i); --i; } @@ -342,6 +342,8 @@ void MinecraftSettingsWidget::openGlobalSettings() { const QString id = m_ui->settingsTabs->currentWidget()->objectName(); + qDebug() << id; + if (id == "javaPage") APPLICATION->ShowGlobalSettings(this, "java-settings"); else // TODO select tab diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.ui b/launcher/ui/widgets/MinecraftSettingsWidget.ui index 309758423..d9949b173 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.ui +++ b/launcher/ui/widgets/MinecraftSettingsWidget.ui @@ -282,7 +282,7 @@ - + Java From 9d0918a0646c184cc5e40aa75e9d4ed1729291a1 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 27 Jan 2025 13:19:10 +0000 Subject: [PATCH 526/616] Remove outdated JavaWizardWidget comment Signed-off-by: TheKodeToad --- launcher/ui/widgets/JavaWizardWidget.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/launcher/ui/widgets/JavaWizardWidget.h b/launcher/ui/widgets/JavaWizardWidget.h index 9c76c0610..69f093000 100644 --- a/launcher/ui/widgets/JavaWizardWidget.h +++ b/launcher/ui/widgets/JavaWizardWidget.h @@ -19,9 +19,6 @@ class QLabel; class QToolButton; class QSpacerItem; -/** - * This is a widget for all the Java settings dialogs and pages. - */ class JavaWizardWidget : public QWidget { Q_OBJECT From 147b315c14dd02b3bc06e63800853d44336562f6 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 27 Jan 2025 14:15:07 +0000 Subject: [PATCH 527/616] Update thresholds when min. memory value is changed too Signed-off-by: TheKodeToad --- launcher/ui/widgets/JavaSettingsWidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 980876f35..6602aea11 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -98,6 +98,7 @@ JavaSettingsWidget::JavaSettingsWidget(InstancePtr instance, QWidget* parent) connect(m_ui->javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::onJavaBrowse); connect(m_ui->maxMemSpinBox, &QSpinBox::valueChanged, this, &JavaSettingsWidget::updateThresholds); + connect(m_ui->minMemSpinBox, &QSpinBox::valueChanged, this, &JavaSettingsWidget::updateThresholds); loadSettings(); updateThresholds(); From 81769b904760a8d28db67738c41ba3cf1c3e8aa4 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 27 Jan 2025 14:34:07 +0000 Subject: [PATCH 528/616] Use MinecraftInstancePtr instance of InstancePtr Signed-off-by: TheKodeToad --- launcher/ui/pages/instance/InstanceSettingsPage.h | 2 +- launcher/ui/widgets/MinecraftSettingsWidget.cpp | 2 +- launcher/ui/widgets/MinecraftSettingsWidget.h | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.h b/launcher/ui/pages/instance/InstanceSettingsPage.h index b13dc572f..e778a0c9c 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.h +++ b/launcher/ui/pages/instance/InstanceSettingsPage.h @@ -45,7 +45,7 @@ class InstanceSettingsPage : public MinecraftSettingsWidget, public BasePage { Q_OBJECT public: - explicit InstanceSettingsPage(InstancePtr instance, QWidget* parent = nullptr) : MinecraftSettingsWidget(std::move(instance), parent) + explicit InstanceSettingsPage(MinecraftInstancePtr instance, QWidget* parent = nullptr) : MinecraftSettingsWidget(std::move(instance), parent) { connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::saveSettings); connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings); diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index 9a2b9b10c..606dee21a 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -41,7 +41,7 @@ #include "settings/Setting.h" #include "ui_MinecraftSettingsWidget.h" -MinecraftSettingsWidget::MinecraftSettingsWidget(InstancePtr instance, QWidget* parent) +MinecraftSettingsWidget::MinecraftSettingsWidget(MinecraftInstancePtr instance, QWidget* parent) : QWidget(parent), m_instance(std::move(instance)), m_ui(new Ui::MinecraftSettingsWidget) { m_ui->setupUi(this); diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.h b/launcher/ui/widgets/MinecraftSettingsWidget.h index a7491770a..710ce8249 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.h +++ b/launcher/ui/widgets/MinecraftSettingsWidget.h @@ -46,7 +46,7 @@ class MinecraftSettingsWidget; class MinecraftSettingsWidget : public QWidget { public: - MinecraftSettingsWidget(InstancePtr instance, QWidget* parent = nullptr); + MinecraftSettingsWidget(MinecraftInstancePtr instance, QWidget* parent = nullptr); ~MinecraftSettingsWidget() override; void loadSettings(); @@ -55,7 +55,7 @@ class MinecraftSettingsWidget : public QWidget { void openGlobalSettings(); private: - InstancePtr m_instance; + MinecraftInstancePtr m_instance; Ui::MinecraftSettingsWidget* m_ui; JavaSettingsWidget* m_javaSettings = nullptr; }; From 7aaa9fa93cc333a5f20184cc34c913260768895d Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 27 Jan 2025 16:46:26 +0000 Subject: [PATCH 529/616] Finish off MinecraftSettingsWidget implementation Signed-off-by: TheKodeToad --- .../ui/widgets/MinecraftSettingsWidget.cpp | 170 ++++++++++++++---- launcher/ui/widgets/MinecraftSettingsWidget.h | 7 +- .../ui/widgets/MinecraftSettingsWidget.ui | 6 +- 3 files changed, 148 insertions(+), 35 deletions(-) diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index 606dee21a..ea9506d75 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -36,8 +36,10 @@ */ #include "MinecraftSettingsWidget.h" -#include +#include "Application.h" +#include "minecraft/WorldList.h" +#include "minecraft/auth/AccountList.h" #include "settings/Setting.h" #include "ui_MinecraftSettingsWidget.h" @@ -70,8 +72,6 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(MinecraftInstancePtr instance, tr("Warning: The maximized option is " "not fully supported on this Minecraft version.")); - connect(m_ui->openGlobalSettingsButton, &QCommandLinkButton::clicked, this, &MinecraftSettingsWidget::openGlobalSettings); - m_ui->miscellaneousSettingsBox->setCheckable(true); m_ui->consoleSettingsBox->setCheckable(true); m_ui->windowSizeGroupBox->setCheckable(true); @@ -79,6 +79,25 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(MinecraftInstancePtr instance, m_ui->perfomanceGroupBox->setCheckable(true); m_ui->gameTimeGroupBox->setCheckable(true); m_ui->legacySettingsGroupBox->setCheckable(true); + + m_quickPlaySingleplayer = m_instance->traits().contains("feature:is_quick_play_singleplayer"); + if (m_quickPlaySingleplayer) { + auto worlds = m_instance->worldList(); + worlds->update(); + for (const auto& world : worlds->allWorlds()) { + m_ui->worldsCb->addItem(world.folderName()); + } + } else { + m_ui->worldsCb->hide(); + m_ui->worldJoinButton->hide(); + m_ui->serverJoinAddressButton->setChecked(true); + m_ui->serverJoinAddress->setEnabled(true); + m_ui->serverJoinAddressButton->setStyleSheet("QRadioButton::indicator { width: 0px; height: 0px; }"); + } + + connect(m_ui->openGlobalSettingsButton, &QCommandLinkButton::clicked, this, &MinecraftSettingsWidget::openGlobalSettings); + connect(m_ui->serverJoinAddressButton, &QAbstractButton::toggled, m_ui->serverJoinAddress, &QWidget::setEnabled); + connect(m_ui->worldJoinButton, &QAbstractButton::toggled, m_ui->worldsCb, &QWidget::setEnabled); } m_ui->maximizedWarning->hide(); @@ -90,6 +109,19 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(MinecraftInstancePtr instance, m_ui->perfomanceGroupBox->hide(); #endif + if (!(APPLICATION->capabilities() & Application::SupportsGameMode)) { + m_ui->enableFeralGamemodeCheck->setDisabled(true); + m_ui->enableFeralGamemodeCheck->setToolTip(tr("Feral Interactive's GameMode could not be found on your system.")); + } + + if (!(APPLICATION->capabilities() & Application::SupportsMangoHud)) { + m_ui->enableMangoHud->setEnabled(false); + m_ui->enableMangoHud->setToolTip(tr("MangoHud could not be found on your system.")); + } + + connect(m_ui->useNativeOpenALCheck, &QAbstractButton::toggled, m_ui->lineEditOpenALPath, &QWidget::setEnabled); + connect(m_ui->useNativeGLFWCheck, &QAbstractButton::toggled, m_ui->lineEditGLFWPath, &QWidget::setEnabled); + loadSettings(); } @@ -107,10 +139,19 @@ void MinecraftSettingsWidget::loadSettings() else settings = APPLICATION->settings(); - // Miscellaneous - m_ui->miscellaneousSettingsBox->setChecked(settings->get("OverrideMiscellaneous").toBool()); - m_ui->closeAfterLaunchCheck->setChecked(settings->get("CloseAfterLaunch").toBool()); - m_ui->quitAfterGameStopCheck->setChecked(settings->get("QuitAfterGameStop").toBool()); + // Game Window + m_ui->windowSizeGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideWindow").toBool()); + m_ui->windowSizeGroupBox->setChecked(settings->get("OverrideWindow").toBool()); + m_ui->maximizedCheckBox->setChecked(settings->get("LaunchMaximized").toBool()); + m_ui->windowWidthSpinBox->setValue(settings->get("MinecraftWinWidth").toInt()); + m_ui->windowHeightSpinBox->setValue(settings->get("MinecraftWinHeight").toInt()); + + // Game Time + m_ui->gameTimeGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideGameTime").toBool()); + m_ui->showGameTime->setChecked(settings->get("ShowGameTime").toBool()); + m_ui->recordGameTime->setChecked(settings->get("RecordGameTime").toBool()); + m_ui->showGlobalGameTime->setChecked(m_instance == nullptr && settings->get("ShowGlobalGameTime").toBool()); + m_ui->showGameTimeWithoutDays->setChecked(m_instance == nullptr && settings->get("ShowGameTimeWithoutDays").toBool()); // Console m_ui->consoleSettingsBox->setChecked(m_instance == nullptr || settings->get("OverrideConsole").toBool()); @@ -118,12 +159,10 @@ void MinecraftSettingsWidget::loadSettings() m_ui->autoCloseConsoleCheck->setChecked(settings->get("AutoCloseConsole").toBool()); m_ui->showConsoleErrorCheck->setChecked(settings->get("ShowConsoleOnError").toBool()); - // Window Size - m_ui->windowSizeGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideWindow").toBool()); - m_ui->windowSizeGroupBox->setChecked(settings->get("OverrideWindow").toBool()); - m_ui->maximizedCheckBox->setChecked(settings->get("LaunchMaximized").toBool()); - m_ui->windowWidthSpinBox->setValue(settings->get("MinecraftWinWidth").toInt()); - m_ui->windowHeightSpinBox->setValue(settings->get("MinecraftWinHeight").toInt()); + // Miscellaneous + m_ui->miscellaneousSettingsBox->setChecked(settings->get("OverrideMiscellaneous").toBool()); + m_ui->closeAfterLaunchCheck->setChecked(settings->get("CloseAfterLaunch").toBool()); + m_ui->quitAfterGameStopCheck->setChecked(settings->get("QuitAfterGameStop").toBool()); if (m_javaSettings != nullptr) m_javaSettings->loadSettings(); @@ -137,7 +176,11 @@ void MinecraftSettingsWidget::loadSettings() m_ui->environmentVariables->initialize(m_instance != nullptr, m_instance == nullptr || settings->get("OverrideEnv").toBool(), settings->get("Env").toMap()); - // Workarounds + // Legacy Tweaks + m_ui->legacySettingsGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideLegacySettings").toBool()); + m_ui->onlineFixes->setChecked(settings->get("OnlineFixes").toBool()); + + // Native Libraries m_ui->nativeWorkaroundsGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideNativeWorkarounds").toBool()); m_ui->useNativeGLFWCheck->setChecked(settings->get("UseNativeGLFW").toBool()); m_ui->lineEditGLFWPath->setText(settings->get("CustomGLFWPath").toString()); @@ -161,24 +204,33 @@ void MinecraftSettingsWidget::loadSettings() m_ui->useDiscreteGpuCheck->setChecked(settings->get("UseDiscreteGpu").toBool()); m_ui->useZink->setChecked(settings->get("UseZink").toBool()); - if (!(APPLICATION->capabilities() & Application::SupportsGameMode)) { - m_ui->enableFeralGamemodeCheck->setDisabled(true); - m_ui->enableFeralGamemodeCheck->setToolTip(tr("Feral Interactive's GameMode could not be found on your system.")); + m_ui->serverJoinGroupBox->setChecked(settings->get("JoinServerOnLaunch").toBool()); + + if (m_instance != nullptr) { + if (auto server = settings->get("JoinServerOnLaunchAddress").toString(); !server.isEmpty()) { + m_ui->serverJoinAddress->setText(server); + m_ui->serverJoinAddressButton->setChecked(true); + m_ui->worldJoinButton->setChecked(false); + m_ui->serverJoinAddress->setEnabled(true); + m_ui->worldsCb->setEnabled(false); + } else if (auto world = settings->get("JoinWorldOnLaunch").toString(); !world.isEmpty() && m_quickPlaySingleplayer) { + m_ui->worldsCb->setCurrentText(world); + m_ui->serverJoinAddressButton->setChecked(false); + m_ui->worldJoinButton->setChecked(true); + m_ui->serverJoinAddress->setEnabled(false); + m_ui->worldsCb->setEnabled(true); + } else { + m_ui->serverJoinAddressButton->setChecked(true); + m_ui->worldJoinButton->setChecked(false); + m_ui->serverJoinAddress->setEnabled(true); + m_ui->worldsCb->setEnabled(false); + } + + m_ui->instanceAccountGroupBox->setChecked(settings->get("UseAccountForInstance").toBool()); + updateAccountsMenu(*settings); } - if (!(APPLICATION->capabilities() & Application::SupportsMangoHud)) { - m_ui->enableMangoHud->setDisabled(true); - m_ui->enableMangoHud->setToolTip(tr("MangoHud could not be found on your system.")); - } - - // Miscellanous - m_ui->gameTimeGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideGameTime").toBool()); - m_ui->showGameTime->setChecked(settings->get("ShowGameTime").toBool()); - m_ui->recordGameTime->setChecked(settings->get("RecordGameTime").toBool()); - m_ui->showGlobalGameTime->setChecked(m_instance == nullptr && settings->get("ShowGlobalGameTime").toBool()); - m_ui->showGameTimeWithoutDays->setChecked(m_instance == nullptr && settings->get("ShowGameTimeWithoutDays").toBool()); - - m_ui->legacySettingsGroupBox->setChecked(m_instance == nullptr || settings->get("OverrideLegacySettings").toBool()); + m_ui->legacySettingsGroupBox->setChecked(settings->get("OverrideLegacySettings").toBool()); m_ui->onlineFixes->setChecked(settings->get("OnlineFixes").toBool()); } @@ -322,6 +374,39 @@ void MinecraftSettingsWidget::saveSettings() settings->set("ShowGameTimeWithoutDays", m_ui->showGameTimeWithoutDays->isChecked()); } + if (m_instance != nullptr) { + // Join server on launch + bool joinServerOnLaunch = m_ui->serverJoinGroupBox->isChecked(); + settings->set("JoinServerOnLaunch", joinServerOnLaunch); + if (joinServerOnLaunch) { + if (m_ui->serverJoinAddressButton->isChecked() || !m_quickPlaySingleplayer) { + settings->set("JoinServerOnLaunchAddress", m_ui->serverJoinAddress->text()); + settings->reset("JoinWorldOnLaunch"); + } else { + settings->set("JoinWorldOnLaunch", m_ui->worldsCb->currentText()); + settings->reset("JoinServerOnLaunchAddress"); + } + } else { + settings->reset("JoinServerOnLaunchAddress"); + settings->reset("JoinWorldOnLaunch"); + } + + // Use an account for this instance + bool useAccountForInstance = m_ui->instanceAccountGroupBox->isChecked(); + settings->set("UseAccountForInstance", useAccountForInstance); + if (useAccountForInstance) { + int accountIndex = m_ui->instanceAccountSelector->currentIndex(); + + if (accountIndex != -1) { + const MinecraftAccountPtr account = APPLICATION->accounts()->at(accountIndex); + if (account != nullptr) + settings->set("InstanceAccountId", account->profileId()); + } + } else { + settings->reset("InstanceAccountId"); + } + } + bool overrideLegacySettings = m_instance == nullptr || m_ui->legacySettingsGroupBox->isChecked(); if (m_instance != nullptr) @@ -349,3 +434,28 @@ void MinecraftSettingsWidget::openGlobalSettings() else // TODO select tab APPLICATION->ShowGlobalSettings(this, "minecraft-settings"); } + +void MinecraftSettingsWidget::updateAccountsMenu(const SettingsObject& settings) +{ + m_ui->instanceAccountSelector->clear(); + auto accounts = APPLICATION->accounts(); + int accountIndex = accounts->findAccountByProfileId(settings.get("InstanceAccountId").toString()); + + for (int i = 0; i < accounts->count(); i++) { + MinecraftAccountPtr account = accounts->at(i); + + QIcon face = account->getFace(); + + if (face.isNull()) + face = APPLICATION->getThemedIcon("noaccount"); + + m_ui->instanceAccountSelector->addItem(face, account->profileName(), i); + if (i == accountIndex) + m_ui->instanceAccountSelector->setCurrentIndex(i); + } +} + +bool MinecraftSettingsWidget::isQuickPlaySupported() +{ + return m_instance->traits().contains("feature:is_quick_play_singleplayer"); +} diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.h b/launcher/ui/widgets/MinecraftSettingsWidget.h index 710ce8249..7a872f54f 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.h +++ b/launcher/ui/widgets/MinecraftSettingsWidget.h @@ -52,10 +52,13 @@ class MinecraftSettingsWidget : public QWidget { void loadSettings(); void saveSettings(); - void openGlobalSettings(); - private: + void openGlobalSettings(); + void updateAccountsMenu(const SettingsObject& settings); + bool isQuickPlaySupported(); + MinecraftInstancePtr m_instance; Ui::MinecraftSettingsWidget* m_ui; JavaSettingsWidget* m_javaSettings = nullptr; + bool m_quickPlaySingleplayer = false; }; diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.ui b/launcher/ui/widgets/MinecraftSettingsWidget.ui index d9949b173..daa065ac8 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.ui +++ b/launcher/ui/widgets/MinecraftSettingsWidget.ui @@ -61,7 +61,7 @@ 0 - 0 + -253 610 550 @@ -323,7 +323,7 @@ 0 - 0 + -101 610 398 @@ -429,7 +429,7 @@ &Performance - true + false false From a92c68adbdc7fa8061c5dac4b8c15299e7edceeb Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 27 Jan 2025 16:54:45 +0000 Subject: [PATCH 530/616] Remove duplicate console section Signed-off-by: TheKodeToad --- launcher/ui/pages/global/LauncherPage.cpp | 6 ---- launcher/ui/pages/global/LauncherPage.ui | 35 +---------------------- 2 files changed, 1 insertion(+), 40 deletions(-) diff --git a/launcher/ui/pages/global/LauncherPage.cpp b/launcher/ui/pages/global/LauncherPage.cpp index 8bbed9643..f7d7da568 100644 --- a/launcher/ui/pages/global/LauncherPage.cpp +++ b/launcher/ui/pages/global/LauncherPage.cpp @@ -217,9 +217,6 @@ void LauncherPage::applySettings() s->set("RequestTimeout", ui->timeoutSecondsSpinBox->value()); // Console settings - s->set("ShowConsole", ui->showConsoleCheck->isChecked()); - s->set("AutoCloseConsole", ui->autoCloseConsoleCheck->isChecked()); - s->set("ShowConsoleOnError", ui->showConsoleErrorCheck->isChecked()); QString consoleFontFamily = ui->consoleFont->currentFont().family(); s->set("ConsoleFont", consoleFontFamily); s->set("ConsoleFontSize", ui->fontSizeBox->value()); @@ -277,9 +274,6 @@ void LauncherPage::loadSettings() ui->timeoutSecondsSpinBox->setValue(s->get("RequestTimeout").toInt()); // Console settings - ui->showConsoleCheck->setChecked(s->get("ShowConsole").toBool()); - ui->autoCloseConsoleCheck->setChecked(s->get("AutoCloseConsole").toBool()); - ui->showConsoleErrorCheck->setChecked(s->get("ShowConsoleOnError").toBool()); QString fontFamily = APPLICATION->settings()->get("ConsoleFont").toString(); QFont consoleFont(fontFamily); ui->consoleFont->setCurrentFont(consoleFont); diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui index 09e7bca5b..87c9dad78 100644 --- a/launcher/ui/pages/global/LauncherPage.ui +++ b/launcher/ui/pages/global/LauncherPage.ui @@ -59,7 +59,7 @@ 0 0 473 - 770 + 690 @@ -523,36 +523,6 @@ Console - - - - Console Settings - - - - - - Show console while the game is &running - - - - - - - &Automatically close console when the game quits - - - - - - - Show console when the game &crashes - - - - - - @@ -676,9 +646,6 @@ iconsDirBrowseBtn sortLastLaunchedBtn sortByNameBtn - showConsoleCheck - autoCloseConsoleCheck - showConsoleErrorCheck lineLimitSpinBox checkStopLogging consoleFont From dc6f5368430f6e7b61c261b4d2a2ba27c225aef4 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 27 Jan 2025 18:04:41 +0000 Subject: [PATCH 531/616] Fix Qt 5 compilation Signed-off-by: TheKodeToad --- launcher/ui/widgets/JavaSettingsWidget.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 6602aea11..149edcacd 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -97,8 +97,8 @@ JavaSettingsWidget::JavaSettingsWidget(InstancePtr instance, QWidget* parent) connect(m_ui->javaDetectBtn, &QPushButton::clicked, this, &JavaSettingsWidget::onJavaAutodetect); connect(m_ui->javaBrowseBtn, &QPushButton::clicked, this, &JavaSettingsWidget::onJavaBrowse); - connect(m_ui->maxMemSpinBox, &QSpinBox::valueChanged, this, &JavaSettingsWidget::updateThresholds); - connect(m_ui->minMemSpinBox, &QSpinBox::valueChanged, this, &JavaSettingsWidget::updateThresholds); + connect(m_ui->maxMemSpinBox, QOverload::of(&QSpinBox::valueChanged), this, &JavaSettingsWidget::updateThresholds); + connect(m_ui->minMemSpinBox, QOverload::of(&QSpinBox::valueChanged), this, &JavaSettingsWidget::updateThresholds); loadSettings(); updateThresholds(); From 5d179671bfef3b8556b5ff2ab12599d7487e1205 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 27 Jan 2025 18:55:24 +0000 Subject: [PATCH 532/616] Fix non-Linux build Signed-off-by: TheKodeToad --- launcher/ui/widgets/MinecraftSettingsWidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index ea9506d75..3c5bbebda 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -36,6 +36,7 @@ */ #include "MinecraftSettingsWidget.h" +#include #include "Application.h" #include "minecraft/WorldList.h" From 68bf409a98364cba1eab91da3e73f09ca724791d Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 27 Jan 2025 19:14:57 +0000 Subject: [PATCH 533/616] Fix formatting issues Signed-off-by: TheKodeToad --- launcher/Application.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 7ae043c16..6f675dcee 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -973,8 +973,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) [[fallthrough]]; default: { qDebug() << "Exiting because update lockfile is present"; - QMetaObject::invokeMethod( - this, []() { exit(1); }, Qt::QueuedConnection); + QMetaObject::invokeMethod(this, []() { exit(1); }, Qt::QueuedConnection); return; } } @@ -1006,8 +1005,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) [[fallthrough]]; default: { qDebug() << "Exiting because update lockfile is present"; - QMetaObject::invokeMethod( - this, []() { exit(1); }, Qt::QueuedConnection); + QMetaObject::invokeMethod(this, []() { exit(1); }, Qt::QueuedConnection); return; } } @@ -1737,8 +1735,7 @@ QString Application::getJarPath(QString jarFile) #if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) || defined(Q_OS_OPENBSD) FS::PathCombine(m_rootPath, "share", BuildConfig.LAUNCHER_NAME), #endif - FS::PathCombine(m_rootPath, "jars"), - FS::PathCombine(applicationDirPath(), "jars"), + FS::PathCombine(m_rootPath, "jars"), FS::PathCombine(applicationDirPath(), "jars"), FS::PathCombine(applicationDirPath(), "..", "jars") // from inside build dir, for debuging }; for (QString p : potentialPaths) { From 417688089d756da23ca3f482a32871963d289211 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Wed, 29 Jan 2025 08:24:42 -0500 Subject: [PATCH 534/616] ci: separate nix job Signed-off-by: Seth Flynn --- .github/workflows/build.yml | 56 ------------------- .github/workflows/nix.yml | 80 +++++++++++++++++++++++++++ .github/workflows/trigger_builds.yml | 1 - .github/workflows/trigger_release.yml | 1 - 4 files changed, 80 insertions(+), 58 deletions(-) create mode 100644 .github/workflows/nix.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a14b07cec..d17f27c5e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,9 +39,6 @@ on: APPLE_NOTARIZE_PASSWORD: description: Password used for notarizing macOS builds required: false - CACHIX_AUTH_TOKEN: - description: Private token for authenticating against Cachix cache - required: false GPG_PRIVATE_KEY: description: Private key for AppImage signing required: false @@ -669,56 +666,3 @@ jobs: bundle: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-Flatpak.flatpak manifest-path: flatpak/org.prismlauncher.PrismLauncher.yml arch: ${{ matrix.arch }} - - nix: - name: Nix (${{ matrix.system }}) - - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-22.04 - system: x86_64-linux - - - os: ubuntu-22.04-arm - system: aarch64-linux - - - os: macos-13 - system: x86_64-darwin - - - os: macos-14 - system: aarch64-darwin - - runs-on: ${{ matrix.os }} - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Install Nix - uses: cachix/install-nix-action@v30 - - # For PRs - - name: Setup Nix Magic Cache - uses: DeterminateSystems/magic-nix-cache-action@v9 - - # For in-tree builds - - name: Setup Cachix - uses: cachix/cachix-action@v15 - with: - name: prismlauncher - authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} - - - name: Run flake checks - run: | - nix flake check --print-build-logs --show-trace - - - name: Build debug package - if: ${{ inputs.build_type == 'Debug' }} - run: | - nix build --print-build-logs .#prismlauncher-debug - - - name: Build release package - if: ${{ inputs.build_type != 'Debug' }} - run: | - nix build --print-build-logs .#prismlauncher diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml new file mode 100644 index 000000000..f167440cd --- /dev/null +++ b/.github/workflows/nix.yml @@ -0,0 +1,80 @@ +name: Nix + +on: + push: + paths-ignore: + - "**.md" + - "**/LICENSE" + - ".github/ISSUE_TEMPLATE/**" + - ".markdownlint**" + - "flatpak/**" + tags: + - "*" + pull_request: + paths-ignore: + - "**.md" + - "**/LICENSE" + - ".github/ISSUE_TEMPLATE/**" + - ".markdownlint**" + - "flatpak/**" + workflow_dispatch: + +permissions: + contents: read + +env: + DEBUG: ${{ github.ref_type != 'tag' }} + +jobs: + build: + name: Build (${{ matrix.system }}) + + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-22.04 + system: x86_64-linux + + - os: ubuntu-22.04-arm + system: aarch64-linux + + - os: macos-13 + system: x86_64-darwin + + - os: macos-14 + system: aarch64-darwin + + runs-on: ${{ matrix.os }} + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Install Nix + uses: cachix/install-nix-action@v30 + + # For PRs + - name: Setup Nix Magic Cache + uses: DeterminateSystems/magic-nix-cache-action@v9 + + # For in-tree builds + - name: Setup Cachix + uses: cachix/cachix-action@v15 + with: + name: prismlauncher + authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} + + - name: Run Flake checks + run: | + nix flake check --print-build-logs --show-trace + + - name: Build debug package + if: ${{ env.DEBUG }} + run: | + nix build --print-build-logs .#prismlauncher-debug + + - name: Build release package + if: ${{ !env.DEBUG }} + run: | + nix build --print-build-logs .#prismlauncher diff --git a/.github/workflows/trigger_builds.yml b/.github/workflows/trigger_builds.yml index 0b8386d69..9efafc8cc 100644 --- a/.github/workflows/trigger_builds.yml +++ b/.github/workflows/trigger_builds.yml @@ -38,6 +38,5 @@ jobs: APPLE_NOTARIZE_APPLE_ID: ${{ secrets.APPLE_NOTARIZE_APPLE_ID }} APPLE_NOTARIZE_TEAM_ID: ${{ secrets.APPLE_NOTARIZE_TEAM_ID }} APPLE_NOTARIZE_PASSWORD: ${{ secrets.APPLE_NOTARIZE_PASSWORD }} - CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} GPG_PRIVATE_KEY_ID: ${{ secrets.GPG_PRIVATE_KEY_ID }} diff --git a/.github/workflows/trigger_release.yml b/.github/workflows/trigger_release.yml index e800653e3..134281b2c 100644 --- a/.github/workflows/trigger_release.yml +++ b/.github/workflows/trigger_release.yml @@ -22,7 +22,6 @@ jobs: APPLE_NOTARIZE_APPLE_ID: ${{ secrets.APPLE_NOTARIZE_APPLE_ID }} APPLE_NOTARIZE_TEAM_ID: ${{ secrets.APPLE_NOTARIZE_TEAM_ID }} APPLE_NOTARIZE_PASSWORD: ${{ secrets.APPLE_NOTARIZE_PASSWORD }} - CACHIX_AUTH_TOKEN: ${{ secrets.CACHIX_AUTH_TOKEN }} GPG_PRIVATE_KEY: ${{ secrets.GPG_PRIVATE_KEY }} GPG_PRIVATE_KEY_ID: ${{ secrets.GPG_PRIVATE_KEY_ID }} From 49d734f3142328a71506b28c8c1cdcb99788c34d Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Wed, 29 Jan 2025 08:28:05 -0500 Subject: [PATCH 535/616] ci: separate flatpak job Signed-off-by: Seth Flynn --- .github/workflows/build.yml | 38 --------------------- .github/workflows/flatpak.yml | 62 +++++++++++++++++++++++++++++++++++ 2 files changed, 62 insertions(+), 38 deletions(-) create mode 100644 .github/workflows/flatpak.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d17f27c5e..d7efc90c3 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -628,41 +628,3 @@ jobs: shell: msys2 {0} run: | ccache -s - - flatpak: - name: Flatpak (${{ matrix.arch }}) - - strategy: - fail-fast: false - matrix: - include: - - os: ubuntu-22.04 - arch: x86_64 - - - os: ubuntu-22.04-arm - arch: aarch64 - - runs-on: ${{ matrix.os }} - - container: - image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.8 - options: --privileged - - steps: - - name: Checkout - uses: actions/checkout@v4 - if: inputs.build_type == 'Debug' - with: - submodules: true - - - name: Set short version - shell: bash - run: echo "VERSION=${GITHUB_SHA::7}" >> $GITHUB_ENV - - - name: Build Flatpak (Linux) - if: inputs.build_type == 'Debug' - uses: flatpak/flatpak-github-actions/flatpak-builder@v6 - with: - bundle: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-Flatpak.flatpak - manifest-path: flatpak/org.prismlauncher.PrismLauncher.yml - arch: ${{ matrix.arch }} diff --git a/.github/workflows/flatpak.yml b/.github/workflows/flatpak.yml new file mode 100644 index 000000000..41cc2a51d --- /dev/null +++ b/.github/workflows/flatpak.yml @@ -0,0 +1,62 @@ +name: Flatpak + +on: + push: + paths-ignore: + - "**.md" + - "**/LICENSE" + - ".github/ISSUE_TEMPLATE/**" + - ".markdownlint**" + - "nix/**" + # We don't do anything with these artifacts on releases. They go to Flathub + tags-ignore: + - "*" + pull_request: + paths-ignore: + - "**.md" + - "**/LICENSE" + - ".github/ISSUE_TEMPLATE/**" + - ".markdownlint**" + - "nix/**" + workflow_dispatch: + +permissions: + contents: read + +jobs: + build: + name: Build (${{ matrix.arch }}) + + strategy: + fail-fast: false + matrix: + include: + - os: ubuntu-22.04 + arch: x86_64 + + - os: ubuntu-22.04-arm + arch: aarch64 + + runs-on: ${{ matrix.os }} + + container: + image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.8 + options: --privileged + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + submodules: true + + - name: Set short version + shell: bash + run: | + echo "VERSION=${GITHUB_SHA::7}" >> "$GITHUB_ENV" + + - name: Build Flatpak + uses: flatpak/flatpak-github-actions/flatpak-builder@v6 + with: + bundle: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-Flatpak.flatpak + manifest-path: flatpak/org.prismlauncher.PrismLauncher.yml + arch: ${{ matrix.arch }} From 8816be166821d5ce1a4cd8edfbe7b91727b6eb34 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Wed, 29 Jan 2025 16:17:01 -0500 Subject: [PATCH 536/616] ci: use flakehub cache Signed-off-by: Seth Flynn --- .github/workflows/nix.yml | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index f167440cd..642f9e670 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -24,6 +24,7 @@ permissions: env: DEBUG: ${{ github.ref_type != 'tag' }} + USE_DETERMINATE: ${{ github.event_name == 'pull_request' }} jobs: build: @@ -47,19 +48,26 @@ jobs: runs-on: ${{ matrix.os }} + permissions: + id-token: write + steps: - name: Checkout repository uses: actions/checkout@v4 - name: Install Nix - uses: cachix/install-nix-action@v30 + uses: DeterminateSystems/nix-installer-action@v16 + with: + determinate: ${{ env.USE_DETERMINATE }} # For PRs - name: Setup Nix Magic Cache - uses: DeterminateSystems/magic-nix-cache-action@v9 + if: ${{ env.USE_DETERMINATE }} + uses: DeterminateSystems/flakehub-cache-action@v1 # For in-tree builds - name: Setup Cachix + if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} uses: cachix/cachix-action@v15 with: name: prismlauncher From 169f5728b1019582db150f3b1618515eb1438517 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Wed, 29 Jan 2025 16:22:44 -0500 Subject: [PATCH 537/616] ci: run nix workflow on pull_request_target Signed-off-by: Seth Flynn --- .github/workflows/nix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 642f9e670..0792b172c 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -10,7 +10,7 @@ on: - "flatpak/**" tags: - "*" - pull_request: + pull_request_target: paths-ignore: - "**.md" - "**/LICENSE" From 61d7f088838e25ddb0a7089a6fa3f7d232331c24 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Wed, 29 Jan 2025 07:50:36 -0500 Subject: [PATCH 538/616] ci: use generic workflow for publishing Signed-off-by: Seth Flynn --- .github/workflows/{winget.yml => publish.yml} | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) rename .github/workflows/{winget.yml => publish.yml} (63%) diff --git a/.github/workflows/winget.yml b/.github/workflows/publish.yml similarity index 63% rename from .github/workflows/winget.yml rename to .github/workflows/publish.yml index eacf23099..8a7da812e 100644 --- a/.github/workflows/winget.yml +++ b/.github/workflows/publish.yml @@ -1,13 +1,21 @@ -name: Publish to WinGet +name: Publish + on: release: - types: [released] + types: [ released ] + +permissions: + contents: read jobs: - publish: + winget: + name: Winget + runs-on: windows-latest + steps: - - uses: vedantmgoyal2009/winget-releaser@v2 + - name: Publish on Winget + uses: vedantmgoyal2009/winget-releaser@v2 with: identifier: PrismLauncher.PrismLauncher version: ${{ github.event.release.tag_name }} From 86cc6d3c5ee7157d5f9978580e94b94360a119f1 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Wed, 29 Jan 2025 07:50:52 -0500 Subject: [PATCH 539/616] feat: publish on flakehub Signed-off-by: Seth Flynn --- .github/workflows/publish.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 8a7da812e..d49eb4b8d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -8,6 +8,28 @@ permissions: contents: read jobs: + flakehub: + name: FlakeHub + + runs-on: ubuntu-latest + + permissions: + id-token: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ github.ref }} + + - name: Install Nix + uses: cachix/install-nix-action@v30 + + - name: Publish on FlakeHub + uses: determinatesystems/flakehub-push@v5 + with: + visibility: "public" + winget: name: Winget From 588e0d6305e673fc4e5eceebfe2692d30b8e876a Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Thu, 30 Jan 2025 13:25:15 -0500 Subject: [PATCH 540/616] ci: add nix out paths to job summary Signed-off-by: Seth Flynn --- .github/workflows/nix.yml | 50 +++++++++++++++++++++++++++++++++++---- 1 file changed, 46 insertions(+), 4 deletions(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 0792b172c..b6abce79e 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -77,12 +77,54 @@ jobs: run: | nix flake check --print-build-logs --show-trace - - name: Build debug package + - name: Select debug package if: ${{ env.DEBUG }} run: | - nix build --print-build-logs .#prismlauncher-debug + echo "installable='.#prismlauncher-debug'" >> "$GITHUB_ENV" - - name: Build release package + - name: Select release package if: ${{ !env.DEBUG }} run: | - nix build --print-build-logs .#prismlauncher + echo "installable='.#prismlauncher'" >> "$GITHUB_ENV" + + - name: Build package + run: | + nix build \ + --no-link --print-build-logs --print-out-paths \ + "$installable" >> "$RUNNER_TEMP"/out-paths + + - name: Upload out paths + uses: actions/upload-artifact@v4 + with: + name: ${{ matrix.system }}-out-paths + path: ${{ runner.temp }}/out-paths + + release-gate: + name: Release gate + + if: ${{ always() }} + needs: [ build ] + + runs-on: ubuntu-22.04 + + steps: + - name: Recover out paths + uses: actions/download-artifact@v4 + + - name: Make job summary + run: | + { + for artifact in *-out-paths/; do + basename="$(basename "$artifact")" + echo "# ${basename/%-out-paths/}" + echo + echo '```' + cat "$artifact"/out-paths + echo '```' + echo + done + } >>"$GITHUB_STEP_SUMMARY" + + - name: Exit with error + if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }} + run: exit 1 From c5efe081b4ff9ec81b882e6deabcbfc5be269329 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 31 Jan 2025 22:03:57 +0200 Subject: [PATCH 541/616] fix add resource with no instance Signed-off-by: Trial97 --- launcher/ui/MainWindow.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 1b3cc75c3..ee12eaa2d 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -1027,6 +1027,14 @@ void MainWindow::processURLs(QList urls) continue; } + if (APPLICATION->instances()->count() <= 0) { + CustomMessageBox::selectable(this, tr("No instance!"), + tr("No instance available to add the resource to.\nPlease create a new instance before " + "attempting to install this resource again."), + QMessageBox::Critical) + ->show(); + continue; + } ImportResourceDialog dlg(localFileName, type, this); if (dlg.exec() != QDialog::Accepted) From f1671e3ded2a68f1311e709ad7d17d2a6281e9e7 Mon Sep 17 00:00:00 2001 From: Kolja Date: Sat, 1 Feb 2025 20:25:01 +0100 Subject: [PATCH 542/616] Add PackageManager category Signed-off-by: Kolja --- program_info/org.prismlauncher.PrismLauncher.desktop.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/program_info/org.prismlauncher.PrismLauncher.desktop.in b/program_info/org.prismlauncher.PrismLauncher.desktop.in index c0e4e9458..182d02b1d 100644 --- a/program_info/org.prismlauncher.PrismLauncher.desktop.in +++ b/program_info/org.prismlauncher.PrismLauncher.desktop.in @@ -7,7 +7,7 @@ Terminal=false Exec=@Launcher_APP_BINARY_NAME@ %U StartupNotify=true Icon=org.@Launcher_APP_BINARY_NAME@.@Launcher_CommonName@ -Categories=Game;ActionGame;AdventureGame;Simulation; +Categories=Game;ActionGame;AdventureGame;Simulation;PackageManager; Keywords=game;minecraft;mc; StartupWMClass=@Launcher_CommonName@ MimeType=application/zip;application/x-modrinth-modpack+zip;x-scheme-handler/curseforge;x-scheme-handler/@Launcher_APP_BINARY_NAME@; From faf7e6b06ecb9704edb5725dd66e730e907723c3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 2 Feb 2025 00:24:39 +0000 Subject: [PATCH 543/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/825479c345a7f806485b7f00dbe3abb50641b083?narHash=sha256-nU6AezEX4EuahTO1YopzueAXfjFfmCHylYEFCagduHU%3D' (2025-01-24) → 'github:NixOS/nixpkgs/3a228057f5b619feb3186e986dbe76278d707b6e?narHash=sha256-xvTo0Aw0%2Bveek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc%3D' (2025-02-01) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index dc07808f0..ec0257def 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1737746512, - "narHash": "sha256-nU6AezEX4EuahTO1YopzueAXfjFfmCHylYEFCagduHU=", + "lastModified": 1738410390, + "narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "825479c345a7f806485b7f00dbe3abb50641b083", + "rev": "3a228057f5b619feb3186e986dbe76278d707b6e", "type": "github" }, "original": { From 138684a84fa8495ba155c2c7058e163f9e11955c Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Sat, 1 Feb 2025 22:54:26 -0500 Subject: [PATCH 544/616] Revert "ci: add nix out paths to job summary" This reverts commit 588e0d6305e673fc4e5eceebfe2692d30b8e876a. Signed-off-by: Seth Flynn --- .github/workflows/nix.yml | 50 ++++----------------------------------- 1 file changed, 4 insertions(+), 46 deletions(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index b6abce79e..0792b172c 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -77,54 +77,12 @@ jobs: run: | nix flake check --print-build-logs --show-trace - - name: Select debug package + - name: Build debug package if: ${{ env.DEBUG }} run: | - echo "installable='.#prismlauncher-debug'" >> "$GITHUB_ENV" + nix build --print-build-logs .#prismlauncher-debug - - name: Select release package + - name: Build release package if: ${{ !env.DEBUG }} run: | - echo "installable='.#prismlauncher'" >> "$GITHUB_ENV" - - - name: Build package - run: | - nix build \ - --no-link --print-build-logs --print-out-paths \ - "$installable" >> "$RUNNER_TEMP"/out-paths - - - name: Upload out paths - uses: actions/upload-artifact@v4 - with: - name: ${{ matrix.system }}-out-paths - path: ${{ runner.temp }}/out-paths - - release-gate: - name: Release gate - - if: ${{ always() }} - needs: [ build ] - - runs-on: ubuntu-22.04 - - steps: - - name: Recover out paths - uses: actions/download-artifact@v4 - - - name: Make job summary - run: | - { - for artifact in *-out-paths/; do - basename="$(basename "$artifact")" - echo "# ${basename/%-out-paths/}" - echo - echo '```' - cat "$artifact"/out-paths - echo '```' - echo - done - } >>"$GITHUB_STEP_SUMMARY" - - - name: Exit with error - if: ${{ contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') }} - run: exit 1 + nix build --print-build-logs .#prismlauncher From 989e6c6cb6a400a217db302a71ae2d242ca5b013 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Sat, 1 Feb 2025 22:55:39 -0500 Subject: [PATCH 545/616] ci: directly print nix out paths to step summary Signed-off-by: Seth Flynn --- .github/workflows/nix.yml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 0792b172c..09e3dee1f 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -80,9 +80,13 @@ jobs: - name: Build debug package if: ${{ env.DEBUG }} run: | - nix build --print-build-logs .#prismlauncher-debug + nix build \ + --no-link --print-build-logs --print-out-paths \ + .#prismlauncher-debug >> "$GITHUB_STEP_SUMMARY" - name: Build release package if: ${{ !env.DEBUG }} run: | - nix build --print-build-logs .#prismlauncher + nix build \ + --no-link --print-build-logs --print-out-paths \ + .#prismlauncher >> "$GITHUB_STEP_SUMMARY" From 2a987b5a4a498a298f3862102b0b55e4ba1f9173 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 3 Feb 2025 22:11:56 +0000 Subject: [PATCH 546/616] chore(deps): update hendrikmuhs/ccache-action action to v1.2.17 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d7efc90c3..99dd4f1a5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -164,7 +164,7 @@ jobs: - name: Setup ccache if: (runner.os != 'Windows' || matrix.msystem == '') && inputs.build_type == 'Debug' - uses: hendrikmuhs/ccache-action@v1.2.16 + uses: hendrikmuhs/ccache-action@v1.2.17 with: key: ${{ matrix.os }}-qt${{ matrix.qt_ver }}-${{ matrix.architecture }} From 9c26ba5932b1f20b2148396db01055683994d5da Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 4 Feb 2025 16:13:55 +0200 Subject: [PATCH 547/616] add stale workflow Signed-off-by: Trial97 --- .github/workflows/stale.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/stale.yml diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml new file mode 100644 index 000000000..e0faff447 --- /dev/null +++ b/.github/workflows/stale.yml @@ -0,0 +1,29 @@ +name: Close stale issues and PRs + +on: + schedule: + # run weekly on sunday + - cron: "0 0 * * 0" + workflow_dispatch: + +permissions: + issues: write + pull-requests: write + +jobs: + stale: + runs-on: ubuntu-latest + steps: + - uses: actions/stale@v9 + with: + days-before-issue-stale: 14 + days-before-pr-stale: 360 # a year + days-before-close: -1 + days-before-issue-close: 360 # update the issue once a year + days-before-pr-close: -1 + stale-issue-message: "This issue has been inactive for a while. Please add a comment or provide an update if it's still relevant." + stale-pr-message: "This PR has had no recent activity. Please update it if it's still relevant." + close-issue-message: "Closing this issue as it has been marked stale and no further activity was detected. Feel free to reopen if needed." + exempt-issue-labels: rfc,noslate + exempt-all-milestones: true + exempt-all-assignees: true From afe6d4836da303ba8dd0b9c8c731c1b868beb440 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 4 Feb 2025 17:41:36 +0200 Subject: [PATCH 548/616] Update .github/workflows/stale.yml Signed-off-by: Alexandru Ionut Tripon --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index e0faff447..534f21382 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -19,7 +19,7 @@ jobs: days-before-issue-stale: 14 days-before-pr-stale: 360 # a year days-before-close: -1 - days-before-issue-close: 360 # update the issue once a year + days-before-issue-close: -1 days-before-pr-close: -1 stale-issue-message: "This issue has been inactive for a while. Please add a comment or provide an update if it's still relevant." stale-pr-message: "This PR has had no recent activity. Please update it if it's still relevant." From 85c2710e33e553d631403651663a0fea3543ab0d Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 4 Feb 2025 22:08:16 +0200 Subject: [PATCH 549/616] Apply suggestions from code review Co-authored-by: Seth Flynn Signed-off-by: Alexandru Ionut Tripon --- .github/workflows/stale.yml | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 534f21382..08e3ff8d1 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -1,4 +1,4 @@ -name: Close stale issues and PRs +name: Stale on: schedule: @@ -11,19 +11,23 @@ permissions: pull-requests: write jobs: - stale: + label: + name: Label issues and PRs + runs-on: ubuntu-latest + + permissions: + issues: write + pull-requests: write + steps: - uses: actions/stale@v9 with: - days-before-issue-stale: 14 - days-before-pr-stale: 360 # a year - days-before-close: -1 - days-before-issue-close: -1 - days-before-pr-close: -1 + days-before-issue-stale: 30 + days-before-pr-stale: 30 + days-before-close: -1 # Don't close anything stale-issue-message: "This issue has been inactive for a while. Please add a comment or provide an update if it's still relevant." stale-pr-message: "This PR has had no recent activity. Please update it if it's still relevant." - close-issue-message: "Closing this issue as it has been marked stale and no further activity was detected. Feel free to reopen if needed." - exempt-issue-labels: rfc,noslate + exempt-issue-labels: rfc,nostale exempt-all-milestones: true exempt-all-assignees: true From ac598740b3bc28a568e9b19bbedc77e99d834733 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 4 Feb 2025 22:08:46 +0200 Subject: [PATCH 550/616] Update .github/workflows/stale.yml Signed-off-by: Alexandru Ionut Tripon --- .github/workflows/stale.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 08e3ff8d1..7afc94eed 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -6,9 +6,6 @@ on: - cron: "0 0 * * 0" workflow_dispatch: -permissions: - issues: write - pull-requests: write jobs: label: From 34438824c14089c226670483d89fc342b4fcb17d Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 4 Feb 2025 23:15:18 +0200 Subject: [PATCH 551/616] Update .github/workflows/stale.yml Co-authored-by: Seth Flynn Signed-off-by: Alexandru Ionut Tripon --- .github/workflows/stale.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 7afc94eed..c93ea5e87 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -20,8 +20,7 @@ jobs: steps: - uses: actions/stale@v9 with: - days-before-issue-stale: 30 - days-before-pr-stale: 30 + days-before-stale: 30 days-before-close: -1 # Don't close anything stale-issue-message: "This issue has been inactive for a while. Please add a comment or provide an update if it's still relevant." stale-pr-message: "This PR has had no recent activity. Please update it if it's still relevant." From 5a76d9b7e11596a3133fe46fafad24c8735039d2 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Tue, 4 Feb 2025 17:05:20 +0000 Subject: [PATCH 552/616] Make requested changes Signed-off-by: TheKodeToad --- launcher/ui/pages/global/JavaPage.cpp | 5 +--- launcher/ui/pages/global/JavaPage.h | 1 - launcher/ui/pages/global/JavaPage.ui | 11 +++++++++ launcher/ui/pages/global/LauncherPage.ui | 10 ++++---- launcher/ui/widgets/JavaSettingsWidget.cpp | 23 +++++++++---------- launcher/ui/widgets/JavaSettingsWidget.h | 5 ++-- .../ui/widgets/MinecraftSettingsWidget.cpp | 6 ++--- 7 files changed, 33 insertions(+), 28 deletions(-) diff --git a/launcher/ui/pages/global/JavaPage.cpp b/launcher/ui/pages/global/JavaPage.cpp index 9f681c6f1..b99d0c63e 100644 --- a/launcher/ui/pages/global/JavaPage.cpp +++ b/launcher/ui/pages/global/JavaPage.cpp @@ -63,9 +63,6 @@ JavaPage::JavaPage(QWidget* parent) : QWidget(parent), ui(new Ui::JavaPage) { ui->setupUi(this); - m_javaSettings = new JavaSettingsWidget(nullptr, this); - ui->generalScrollArea->setWidget(m_javaSettings); - if (BuildConfig.JAVA_DOWNLOADER_ENABLED) { ui->managedJavaList->initialize(new JavaInstallList(this, true)); ui->managedJavaList->setResizeOn(2); @@ -88,7 +85,7 @@ void JavaPage::retranslate() bool JavaPage::apply() { - m_javaSettings->saveSettings(); + ui->javaSettings->saveSettings(); JavaCommon::checkJVMArgs(APPLICATION->settings()->get("JvmArgs").toString(), this); return true; } diff --git a/launcher/ui/pages/global/JavaPage.h b/launcher/ui/pages/global/JavaPage.h index 75fd69e6a..bfc355d2f 100644 --- a/launcher/ui/pages/global/JavaPage.h +++ b/launcher/ui/pages/global/JavaPage.h @@ -71,5 +71,4 @@ class JavaPage : public QWidget, public BasePage { private: Ui::JavaPage* ui; - JavaSettingsWidget* m_javaSettings; }; diff --git a/launcher/ui/pages/global/JavaPage.ui b/launcher/ui/pages/global/JavaPage.ui index 9baa2f6f1..a4b2ac203 100644 --- a/launcher/ui/pages/global/JavaPage.ui +++ b/launcher/ui/pages/global/JavaPage.ui @@ -53,6 +53,11 @@ 610 + + + + + @@ -146,6 +151,12 @@
    ui/widgets/VersionSelectWidget.h
    1 + + JavaSettingsWidget + QWidget +
    ui/widgets/JavaSettingsWidget.h
    + 1 +
    diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui index c36dfdfc6..31c878f3e 100644 --- a/launcher/ui/pages/global/LauncherPage.ui +++ b/launcher/ui/pages/global/LauncherPage.ui @@ -6,7 +6,7 @@ 0 0 - 562 + 511 726 @@ -38,7 +38,7 @@ QTabWidget::Rounded - 2 + 0 @@ -58,8 +58,8 @@ 0 0 - 570 - 692 + 473 + 770 @@ -689,4 +689,4 @@ - + \ No newline at end of file diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 149edcacd..7a5e228fd 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -36,21 +36,20 @@ */ #include "JavaSettingsWidget.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include #include #include -#include +#include "Application.h" +#include "BuildConfig.h" +#include "FileSystem.h" +#include "JavaCommon.h" +#include "java/JavaInstallList.h" +#include "java/JavaUtils.h" +#include "settings/Setting.h" +#include "sys.h" +#include "ui/dialogs/CustomMessageBox.h" +#include "ui/dialogs/VersionSelectDialog.h" +#include "ui/java/InstallJavaDialog.h" #include "ui_JavaSettingsWidget.h" diff --git a/launcher/ui/widgets/JavaSettingsWidget.h b/launcher/ui/widgets/JavaSettingsWidget.h index 433a5f19f..21a71fb8b 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.h +++ b/launcher/ui/widgets/JavaSettingsWidget.h @@ -36,9 +36,9 @@ #pragma once -#include -#include #include +#include "BaseInstance.h" +#include "JavaCommon.h" namespace Ui { class JavaSettingsWidget; @@ -48,6 +48,7 @@ class JavaSettingsWidget : public QWidget { Q_OBJECT public: + explicit JavaSettingsWidget(QWidget* parent = nullptr) : JavaSettingsWidget(nullptr, nullptr) {} explicit JavaSettingsWidget(InstancePtr instance, QWidget* parent = nullptr); ~JavaSettingsWidget() override; diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index 3c5bbebda..16fccb054 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -50,13 +50,11 @@ MinecraftSettingsWidget::MinecraftSettingsWidget(MinecraftInstancePtr instance, m_ui->setupUi(this); if (m_instance == nullptr) { - for (int i = 0; i < m_ui->settingsTabs->count(); ++i) { + for (int i = m_ui->settingsTabs->count() - 1; i >= 0; --i) { const QString name = m_ui->settingsTabs->widget(i)->objectName(); - if (name == "javaPage" || name == "launchPage") { + if (name == "javaPage" || name == "launchPage") m_ui->settingsTabs->removeTab(i); - --i; - } } m_ui->openGlobalSettingsButton->setVisible(false); From 06b50dfd3360c44b4f44b69b2fe62f24c381891f Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 5 Feb 2025 11:11:45 +0000 Subject: [PATCH 553/616] Fix more header mistakes Signed-off-by: TheKodeToad --- launcher/ui/widgets/MinecraftSettingsWidget.cpp | 2 +- launcher/ui/widgets/MinecraftSettingsWidget.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.cpp b/launcher/ui/widgets/MinecraftSettingsWidget.cpp index 16fccb054..cec7f267f 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.cpp +++ b/launcher/ui/widgets/MinecraftSettingsWidget.cpp @@ -36,9 +36,9 @@ */ #include "MinecraftSettingsWidget.h" -#include #include "Application.h" +#include "BuildConfig.h" #include "minecraft/WorldList.h" #include "minecraft/auth/AccountList.h" #include "settings/Setting.h" diff --git a/launcher/ui/widgets/MinecraftSettingsWidget.h b/launcher/ui/widgets/MinecraftSettingsWidget.h index 7a872f54f..86effb337 100644 --- a/launcher/ui/widgets/MinecraftSettingsWidget.h +++ b/launcher/ui/widgets/MinecraftSettingsWidget.h @@ -36,9 +36,9 @@ #pragma once -#include #include #include "JavaSettingsWidget.h" +#include "minecraft/MinecraftInstance.h" namespace Ui { class MinecraftSettingsWidget; From 9ed6801b151972d3e2eac790f24de6a1d2c515e1 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 5 Feb 2025 12:09:12 +0000 Subject: [PATCH 554/616] Update launcher/ui/pages/global/JavaPage.h Co-authored-by: Alexandru Ionut Tripon Signed-off-by: TheKodeToad --- launcher/ui/pages/global/JavaPage.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/global/JavaPage.h b/launcher/ui/pages/global/JavaPage.h index bfc355d2f..ea7724c1d 100644 --- a/launcher/ui/pages/global/JavaPage.h +++ b/launcher/ui/pages/global/JavaPage.h @@ -37,7 +37,7 @@ #include #include -#include +#include "ui/widgets/JavaSettingsWidget.h" #include #include #include "JavaCommon.h" From f7a401ab226c9a0bb6fa4c1ee330b9e5d3b005e8 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 5 Feb 2025 12:09:26 +0000 Subject: [PATCH 555/616] Update launcher/ui/pages/instance/InstanceSettingsPage.h Co-authored-by: Alexandru Ionut Tripon Signed-off-by: TheKodeToad --- launcher/ui/pages/instance/InstanceSettingsPage.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.h b/launcher/ui/pages/instance/InstanceSettingsPage.h index e778a0c9c..fa1dce3dc 100644 --- a/launcher/ui/pages/instance/InstanceSettingsPage.h +++ b/launcher/ui/pages/instance/InstanceSettingsPage.h @@ -35,10 +35,10 @@ #pragma once -#include -#include -#include -#include +#include "Application.h" +#include "BaseInstance.h" +#include "ui/pages/BasePage.h" +#include "ui/widgets/MinecraftSettingsWidget.h" #include class InstanceSettingsPage : public MinecraftSettingsWidget, public BasePage { From 6e3dd04a1f0dfd03e0bbae85569b847333ad3222 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 5 Feb 2025 12:09:32 +0000 Subject: [PATCH 556/616] Update launcher/ui/pages/global/MinecraftPage.h Co-authored-by: Alexandru Ionut Tripon Signed-off-by: TheKodeToad --- launcher/ui/pages/global/MinecraftPage.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/global/MinecraftPage.h b/launcher/ui/pages/global/MinecraftPage.h index 9c01bdec6..8c928b98f 100644 --- a/launcher/ui/pages/global/MinecraftPage.h +++ b/launcher/ui/pages/global/MinecraftPage.h @@ -39,7 +39,7 @@ #include #include -#include +#include "ui/widgets/MinecraftSettingsWidget.h" #include "java/JavaChecker.h" #include "ui/pages/BasePage.h" From e1896d5b6bc4d253f2ab1dc29907615612453eed Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Wed, 5 Feb 2025 13:45:49 +0000 Subject: [PATCH 557/616] Update launcher/ui/pages/global/MinecraftPage.h Co-authored-by: Alexandru Ionut Tripon Signed-off-by: TheKodeToad --- launcher/ui/pages/global/MinecraftPage.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/global/MinecraftPage.h b/launcher/ui/pages/global/MinecraftPage.h index 8c928b98f..e48efda04 100644 --- a/launcher/ui/pages/global/MinecraftPage.h +++ b/launcher/ui/pages/global/MinecraftPage.h @@ -38,7 +38,7 @@ #include #include -#include +#include "Application.h" #include "ui/widgets/MinecraftSettingsWidget.h" #include "java/JavaChecker.h" #include "ui/pages/BasePage.h" From cb83f8e52db1046173a8def2f216cfcf1518b91f Mon Sep 17 00:00:00 2001 From: Riley Richard Date: Wed, 5 Feb 2025 16:13:22 -0500 Subject: [PATCH 558/616] fixed thing --- launcher/minecraft/launch/LauncherPartLaunch.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/minecraft/launch/LauncherPartLaunch.cpp b/launcher/minecraft/launch/LauncherPartLaunch.cpp index 7a086cf84..49d91e433 100644 --- a/launcher/minecraft/launch/LauncherPartLaunch.cpp +++ b/launcher/minecraft/launch/LauncherPartLaunch.cpp @@ -171,6 +171,7 @@ void LauncherPartLaunch::on_state(LoggedProcess::State state) case LoggedProcess::Aborted: case LoggedProcess::Crashed: { m_parent->setPid(-1); + m_parent->instance()->setMinecraftRunning(false); emitFailed(tr("Game crashed.")); return; } From 17e95c0d07c0d4337bd646e8fd623da4eba80b03 Mon Sep 17 00:00:00 2001 From: Riley Richard Date: Wed, 5 Feb 2025 16:33:15 -0500 Subject: [PATCH 559/616] forgot to sign Signed-off-by: Riley Richard From f1209c1279bca89eca295f79964be5ff1ffd72f1 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 5 Feb 2025 23:43:38 +0200 Subject: [PATCH 560/616] Increase the stale operations Signed-off-by: Trial97 --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index c93ea5e87..fb33d76a7 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -6,7 +6,6 @@ on: - cron: "0 0 * * 0" workflow_dispatch: - jobs: label: name: Label issues and PRs @@ -27,3 +26,4 @@ jobs: exempt-issue-labels: rfc,nostale exempt-all-milestones: true exempt-all-assignees: true + operations-per-run: 1000 From 9ea33e0651de007498ed6c8df4f0cb7289765204 Mon Sep 17 00:00:00 2001 From: Riley Richard Date: Wed, 5 Feb 2025 18:10:31 -0500 Subject: [PATCH 561/616] DCO Remediation Commit for Riley Richard I, Riley Richard , hereby add my Signed-off-by to this commit: cb83f8e52db1046173a8def2f216cfcf1518b91f Signed-off-by: Riley Richard From ef825a7bc5cf8b2a7bae88ab6e728e131adff46a Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 6 Feb 2025 09:58:41 +0200 Subject: [PATCH 562/616] update stale action Signed-off-by: Trial97 --- .github/workflows/stale.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index fb33d76a7..4afa7d648 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -19,11 +19,13 @@ jobs: steps: - uses: actions/stale@v9 with: - days-before-stale: 30 + days-before-stale: 60 days-before-close: -1 # Don't close anything stale-issue-message: "This issue has been inactive for a while. Please add a comment or provide an update if it's still relevant." stale-pr-message: "This PR has had no recent activity. Please update it if it's still relevant." - exempt-issue-labels: rfc,nostale + exempt-issue-labels: rfc,nostale,active,wanted exempt-all-milestones: true exempt-all-assignees: true operations-per-run: 1000 + stale-issue-label: inactive + stale-pr-label: inactive From bf1084d7fa6503b65bdb63374e5f92020ae4a3d1 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 11 Feb 2025 10:59:10 +0200 Subject: [PATCH 563/616] Fix some undefined behaviour Signed-off-by: Trial97 --- CMakeLists.txt | 8 ++++---- launcher/launch/LogModel.h | 6 +++--- launcher/ui/widgets/CheckComboBox.cpp | 16 ++++++++-------- launcher/ui/widgets/CheckComboBox.h | 6 +++--- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d61817ecf..a9d543e83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -113,14 +113,14 @@ if ((CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebI else() # AppleClang and Clang message(STATUS "Address Sanitizer available on Clang") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=null") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover=null") endif() elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") # GCC message(STATUS "Address Sanitizer available on GCC") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsanitize=address -fno-omit-frame-pointer -fsanitize=undefined -fno-sanitize-recover") link_libraries("asan") elseif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC") message(STATUS "Address Sanitizer available on MSVC") diff --git a/launcher/launch/LogModel.h b/launcher/launch/LogModel.h index 18e51d7e3..bc08053fb 100644 --- a/launcher/launch/LogModel.h +++ b/launcher/launch/LogModel.h @@ -32,12 +32,12 @@ class LogModel : public QAbstractListModel { private /* types */: struct entry { - MessageLevel::Enum level; - QString line; + MessageLevel::Enum level = MessageLevel::Enum::Unknown; + QString line = {}; }; private: /* data */ - QVector m_content; + QVector m_content = {}; int m_maxLines = 1000; // first line in the circular buffer int m_firstLine = 0; diff --git a/launcher/ui/widgets/CheckComboBox.cpp b/launcher/ui/widgets/CheckComboBox.cpp index 41def3ba1..a84e6a8fa 100644 --- a/launcher/ui/widgets/CheckComboBox.cpp +++ b/launcher/ui/widgets/CheckComboBox.cpp @@ -40,7 +40,7 @@ class CheckComboModel : public QIdentityProxyModel { { if (role == Qt::CheckStateRole) { auto txt = QIdentityProxyModel::data(index, Qt::DisplayRole).toString(); - return checked.contains(txt) ? Qt::Checked : Qt::Unchecked; + return m_checked.contains(txt) ? Qt::Checked : Qt::Unchecked; } if (role == Qt::DisplayRole) return QIdentityProxyModel::data(index, Qt::DisplayRole); @@ -50,10 +50,10 @@ class CheckComboModel : public QIdentityProxyModel { { if (role == Qt::CheckStateRole) { auto txt = QIdentityProxyModel::data(index, Qt::DisplayRole).toString(); - if (checked.contains(txt)) { - checked.removeOne(txt); + if (m_checked.contains(txt)) { + m_checked.removeOne(txt); } else { - checked.push_back(txt); + m_checked.push_back(txt); } emit dataChanged(index, index); emit checkStateChanged(); @@ -61,13 +61,13 @@ class CheckComboModel : public QIdentityProxyModel { } return QIdentityProxyModel::setData(index, value, role); } - QStringList getChecked() { return checked; } + QStringList getChecked() { return m_checked; } signals: void checkStateChanged(); private: - QStringList checked; + QStringList m_checked = {}; }; CheckComboBox::CheckComboBox(QWidget* parent) : QComboBox(parent), m_separator(", ") @@ -92,7 +92,7 @@ void CheckComboBox::setSourceModel(QAbstractItemModel* new_model) void CheckComboBox::hidePopup() { - if (!containerMousePress) + if (!m_containerMousePress) QComboBox::hidePopup(); } @@ -138,7 +138,7 @@ bool CheckComboBox::eventFilter(QObject* receiver, QEvent* event) } case QEvent::MouseButtonPress: { auto ev = static_cast(event); - containerMousePress = ev && view()->indexAt(ev->pos()).isValid(); + m_containerMousePress = ev && view()->indexAt(ev->pos()).isValid(); break; } case QEvent::Wheel: diff --git a/launcher/ui/widgets/CheckComboBox.h b/launcher/ui/widgets/CheckComboBox.h index 876c6e3e1..02516982f 100644 --- a/launcher/ui/widgets/CheckComboBox.h +++ b/launcher/ui/widgets/CheckComboBox.h @@ -58,7 +58,7 @@ class CheckComboBox : public QComboBox { void toggleCheckState(int index); private: - QString m_default_text; - QString m_separator; - bool containerMousePress; + QString m_default_text = {}; + QString m_separator = {}; + bool m_containerMousePress = false; }; \ No newline at end of file From 1d1a4f1b30837e13ebd99c016af171d79697f22f Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 11 Feb 2025 21:02:27 +0200 Subject: [PATCH 564/616] Apply suggestions from code review Co-authored-by: TheKodeToad Signed-off-by: Alexandru Ionut Tripon --- launcher/launch/LogModel.h | 4 ++-- launcher/ui/widgets/CheckComboBox.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/launch/LogModel.h b/launcher/launch/LogModel.h index bc08053fb..167f74190 100644 --- a/launcher/launch/LogModel.h +++ b/launcher/launch/LogModel.h @@ -33,11 +33,11 @@ class LogModel : public QAbstractListModel { private /* types */: struct entry { MessageLevel::Enum level = MessageLevel::Enum::Unknown; - QString line = {}; + QString line; }; private: /* data */ - QVector m_content = {}; + QVector m_content; int m_maxLines = 1000; // first line in the circular buffer int m_firstLine = 0; diff --git a/launcher/ui/widgets/CheckComboBox.h b/launcher/ui/widgets/CheckComboBox.h index 02516982f..469587762 100644 --- a/launcher/ui/widgets/CheckComboBox.h +++ b/launcher/ui/widgets/CheckComboBox.h @@ -58,7 +58,7 @@ class CheckComboBox : public QComboBox { void toggleCheckState(int index); private: - QString m_default_text = {}; - QString m_separator = {}; + QString m_default_text; + QString m_separator; bool m_containerMousePress = false; }; \ No newline at end of file From 22b59e760c0f39749916052b9323e55f4217dd72 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Tue, 11 Feb 2025 21:03:04 +0200 Subject: [PATCH 565/616] Update launcher/ui/widgets/CheckComboBox.cpp Signed-off-by: Alexandru Ionut Tripon --- launcher/ui/widgets/CheckComboBox.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/widgets/CheckComboBox.cpp b/launcher/ui/widgets/CheckComboBox.cpp index a84e6a8fa..02b629162 100644 --- a/launcher/ui/widgets/CheckComboBox.cpp +++ b/launcher/ui/widgets/CheckComboBox.cpp @@ -67,7 +67,7 @@ class CheckComboModel : public QIdentityProxyModel { void checkStateChanged(); private: - QStringList m_checked = {}; + QStringList m_checked; }; CheckComboBox::CheckComboBox(QWidget* parent) : QComboBox(parent), m_separator(", ") From 14b653e08dc46427a62b154bc187106fac28fdc9 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 12 Feb 2025 20:16:00 +0200 Subject: [PATCH 566/616] remove some unused files Signed-off-by: Trial97 --- launcher/ui/pages/global/MinecraftPage.h | 6 +- launcher/ui/pages/global/MinecraftPage.ui | 361 -------- .../ui/pages/instance/InstanceSettingsPage.ui | 824 ------------------ 3 files changed, 1 insertion(+), 1190 deletions(-) delete mode 100644 launcher/ui/pages/global/MinecraftPage.ui delete mode 100644 launcher/ui/pages/instance/InstanceSettingsPage.ui diff --git a/launcher/ui/pages/global/MinecraftPage.h b/launcher/ui/pages/global/MinecraftPage.h index e48efda04..b21862536 100644 --- a/launcher/ui/pages/global/MinecraftPage.h +++ b/launcher/ui/pages/global/MinecraftPage.h @@ -39,16 +39,12 @@ #include #include "Application.h" -#include "ui/widgets/MinecraftSettingsWidget.h" #include "java/JavaChecker.h" #include "ui/pages/BasePage.h" +#include "ui/widgets/MinecraftSettingsWidget.h" class SettingsObject; -namespace Ui { -class MinecraftPage; -} - class MinecraftPage : public MinecraftSettingsWidget, public BasePage { Q_OBJECT diff --git a/launcher/ui/pages/global/MinecraftPage.ui b/launcher/ui/pages/global/MinecraftPage.ui deleted file mode 100644 index 3a28c92c7..000000000 --- a/launcher/ui/pages/global/MinecraftPage.ui +++ /dev/null @@ -1,361 +0,0 @@ - - - MinecraftPage - - - - 0 - 0 - 936 - 541 - - - - - 0 - 0 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - QTabWidget::Rounded - - - 0 - - - - General - - - - - - Window Size - - - - - - Start Minecraft &maximized - - - - - - - On newer versions the game only supports resolution. In order to simulate the maximized behaviour the current implementation approximates the maximum display size. - - - <html><head/><body><p><span style=" font-weight:600; color:#f5c211;">Warning</span><span style=" color:#f5c211;">: On the newer Minecraft versions the start maximized option is not fully supported.</span></p></body></html> - - - - - - - - - Window &height: - - - windowHeightSpinBox - - - - - - - Window &width: - - - windowWidthSpinBox - - - - - - - 1 - - - 65536 - - - 1 - - - 854 - - - - - - - 1 - - - 65536 - - - 480 - - - - - - - - - - - - Game time - - - - - - Show time spent &playing instances - - - - - - - Show time spent playing across &all instances - - - - - - - &Record time spent playing instances - - - - - - - Show time spent playing in hours - - - - - - - - - - Miscellaneous - - - - - - <html><head/><body><p>The launcher will automatically reopen when the game crashes or exits.</p></body></html> - - - &Close the launcher after game window opens - - - - - - - <html><head/><body><p>The launcher will automatically quit after the game exits or crashes.</p></body></html> - - - &Quit the launcher after game window closes - - - - - - - - - - Qt::Vertical - - - - 0 - 0 - - - - - - - - - Tweaks - - - - - - Legacy settings - - - - - - <html><head/><body><p>Emulates usages of old online services which are no longer operating.</p><p>Current fixes include: skin and online mode support.</p></body></html> - - - Enable online fixes (experimental) - - - - - - - - - - Native library workarounds - - - - - - Use system installation of &GLFW - - - - - - - &GLFW library path - - - lineEditGLFWPath - - - - - - - Use system installation of &OpenAL - - - - - - - &OpenAL library path - - - lineEditOpenALPath - - - - - - - false - - - - - - - false - - - - - - - - - - Performance - - - - - - <html><head/><body><p>Enable Feral Interactive's GameMode, to potentially improve gaming performance.</p></body></html> - - - Enable Feral GameMode - - - - - - - <html><head/><body><p>Enable MangoHud's advanced performance overlay.</p></body></html> - - - Enable MangoHud - - - - - - - <html><head/><body><p>Use the discrete GPU instead of the primary GPU.</p></body></html> - - - Use discrete GPU - - - - - - - <html><head/><body><p>Use Zink, a Mesa OpenGL driver that implements OpenGL on top of Vulkan. Performance may vary depending on the situation. Note: If no suitable Vulkan driver is found, software rendering will be used.</p></body></html> - - - Use Zink - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - maximizedCheckBox - windowWidthSpinBox - windowHeightSpinBox - - - - diff --git a/launcher/ui/pages/instance/InstanceSettingsPage.ui b/launcher/ui/pages/instance/InstanceSettingsPage.ui deleted file mode 100644 index e5ef98b00..000000000 --- a/launcher/ui/pages/instance/InstanceSettingsPage.ui +++ /dev/null @@ -1,824 +0,0 @@ - - - InstanceSettingsPage - - - - 0 - 0 - 691 - 581 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Open Global Settings - - - The settings here are overrides for global settings. - - - - - - - 1 - - - - Java - - - - - - true - - - Java insta&llation - - - true - - - false - - - - - - If enabled, the launcher will not check if an instance is compatible with the selected Java version. - - - Skip Java compatibility checks - - - - - - - - - - - - Browse - - - - - - - - - - - Download Java - - - - - - - Auto-detect... - - - - - - - Test - - - - - - - - - - - - true - - - Memor&y - - - true - - - false - - - - - - PermGen: - - - - - - - Minimum memory allocation: - - - - - - - Maximum memory allocation: - - - - - - - Note: Permgen is set automatically by Java 8 and later - - - - - - - The amount of memory Minecraft is started with. - - - MiB - - - 8 - - - 1048576 - - - 128 - - - 256 - - - - - - - The maximum amount of memory Minecraft is allowed to use. - - - MiB - - - 8 - - - 1048576 - - - 128 - - - 1024 - - - - - - - The amount of memory available to store loaded Java classes. - - - MiB - - - 4 - - - 999999999 - - - 8 - - - 64 - - - - - - - - - - Qt::AlignCenter - - - maxMemSpinBox - - - - - - - - - - true - - - Java argumen&ts - - - true - - - false - - - - - - - - - - - - - Game windows - - - - - - true - - - Game Window - - - true - - - false - - - - - - Start Minecraft maximized - - - - - - - The base game only supports resolution. In order to simulate the maximized behaviour the current implementation approximates the maximum display size.. - - - <html><head/><body><p><span style=" font-weight:600; color:#f5c211;">Warning</span><span style=" color:#f5c211;">: The maximized option may not be fully supported for the current minecraft version.</span></p></body></html> - - - - - - - - - Window height: - - - - - - - Window width: - - - - - - - 1 - - - 65536 - - - 1 - - - 854 - - - - - - - 1 - - - 65536 - - - 480 - - - - - - - - - - - - true - - - Conso&le Settings - - - true - - - false - - - - - - Show console while the game is running - - - - - - - Automatically close console when the game quits - - - - - - - Show console when the game crashes - - - - - - - - - - Miscellaneous - - - true - - - false - - - - - - Close the launcher after game window opens - - - - - - - Quit the launcher after game window closes - - - - - - - - - - Qt::Vertical - - - - 88 - 125 - - - - - - - - - Custom commands - - - - - - - - - - Environment variables - - - - - - - - - - Workarounds - - - - - - true - - - Native libraries - - - true - - - false - - - - - - Use system installation of OpenAL - - - - - - - &GLFW library path - - - lineEditGLFWPath - - - - - - - Use system installation of GLFW - - - - - - - false - - - - - - - &OpenAL library path - - - lineEditOpenALPath - - - - - - - false - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Performance - - - - - - true - - - Performance - - - true - - - false - - - - - - <html><head/><body><p>Enable Feral Interactive's GameMode, to potentially improve gaming performance.</p></body></html> - - - Enable Feral GameMode - - - - - - - <html><head/><body><p>Enable MangoHud's advanced performance overlay.</p></body></html> - - - Enable MangoHud - - - - - - - <html><head/><body><p>Use the discrete GPU instead of the primary GPU.</p></body></html> - - - Use discrete GPU - - - - - - - Use Zink, a Mesa OpenGL driver that implements OpenGL on top of Vulkan. Performance may vary depending on the situation. Note: If no suitable Vulkan driver is found, software rendering will be used. - - - Use Zink - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - Miscellaneous - - - - - - Legacy settings - - - true - - - false - - - - - - <html><head/><body><p>Emulates usages of old online services which are no longer operating.</p><p>Current fixes include: skin and online mode support.</p></body></html> - - - Enable online fixes (experimental) - - - - - - - - - - true - - - Override global game time settings - - - true - - - false - - - - - - Show time spent playing this instance - - - - - - - Record time spent playing this instance - - - - - - - - - - Set a target to join on launch - - - true - - - false - - - - - - Server address: - - - - - - - - - - Singleplayer world - - - - - - - - - - - - - Override default account - - - true - - - false - - - - - - - - - 0 - 0 - - - - Account: - - - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - CustomCommands - QWidget -
    ui/widgets/CustomCommands.h
    - 1 -
    - - EnvironmentVariables - QWidget -
    ui/widgets/EnvironmentVariables.h
    - 1 -
    -
    - - openGlobalJavaSettingsButton - settingsTabs - javaSettingsGroupBox - javaPathTextBox - javaBrowseBtn - javaDownloadBtn - javaDetectBtn - javaTestBtn - skipCompatibilityCheckbox - memoryGroupBox - minMemSpinBox - maxMemSpinBox - permGenSpinBox - javaArgumentsGroupBox - jvmArgsTextBox - windowSizeGroupBox - maximizedCheckBox - windowWidthSpinBox - windowHeightSpinBox - consoleSettingsBox - showConsoleCheck - autoCloseConsoleCheck - showConsoleErrorCheck - nativeWorkaroundsGroupBox - useNativeGLFWCheck - useNativeOpenALCheck - showGameTime - recordGameTime - miscellaneousSettingsBox - closeAfterLaunchCheck - quitAfterGameStopCheck - perfomanceGroupBox - enableFeralGamemodeCheck - enableMangoHud - useDiscreteGpuCheck - gameTimeGroupBox - serverJoinGroupBox - serverJoinAddress - instanceAccountGroupBox - instanceAccountSelector - - - -
    From 9e954548dd702c05fbf33474c9c86f52fb67d4b4 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 12 Feb 2025 20:21:45 +0200 Subject: [PATCH 567/616] add libMangoHud_shim.so to mangohub preloadlist Signed-off-by: Trial97 --- launcher/minecraft/MinecraftInstance.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 3ce563a4e..d1780d497 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -656,6 +656,7 @@ QProcessEnvironment MinecraftInstance::createLaunchEnvironment() // dlsym variant is only needed for OpenGL and not included in the vulkan layer appendLib("libMangoHud_dlsym.so"); appendLib("libMangoHud_opengl.so"); + appendLib("libMangoHud_shim.so"); preloadList << mangoHudLibString; } From 174cddcf42f26b24a5a74ce2eaf4923b5b269d47 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 12 Feb 2025 20:40:09 +0200 Subject: [PATCH 568/616] make sure if user changes java path also disable java management Signed-off-by: Trial97 --- launcher/ui/widgets/JavaSettingsWidget.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/launcher/ui/widgets/JavaSettingsWidget.cpp b/launcher/ui/widgets/JavaSettingsWidget.cpp index 7a5e228fd..a255168e9 100644 --- a/launcher/ui/widgets/JavaSettingsWidget.cpp +++ b/launcher/ui/widgets/JavaSettingsWidget.cpp @@ -90,6 +90,11 @@ JavaSettingsWidget::JavaSettingsWidget(InstancePtr instance, QWidget* parent) auto javaDialog = new Java::InstallDialog({}, m_instance.get(), this); javaDialog->exec(); }); + connect(m_ui->javaPathTextBox, &QLineEdit::textChanged, [this](QString newValue) { + if (m_instance->settings()->get("JavaPath").toString() != newValue) { + m_instance->settings()->set("AutomaticJava", false); + } + }); } connect(m_ui->javaTestBtn, &QPushButton::clicked, this, &JavaSettingsWidget::onJavaTest); From 34233a93a2b1d93d24383ecbba92cc03031791fa Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 13 Feb 2025 00:55:35 +0100 Subject: [PATCH 569/616] MinecraftTarget::parse() to parse IP Signed-off-by: iTrooz --- launcher/ui/pages/instance/ServersPage.cpp | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 8583130d4..4bc2e6998 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -90,15 +90,6 @@ struct Server { } } - std::tuple splitAddress() const { - auto parts = m_address.split(":"); - if (parts.size() == 1) { - return std::make_tuple(parts[0], 25565); - } else { - return std::make_tuple(parts[0], parts[1].toInt()); - } - } - void serialize(nbt::tag_compound& server) { server.insert("name", m_name.trimmed().toUtf8().toStdString()); @@ -465,8 +456,8 @@ class ServersModel : public QAbstractListModel { emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); // Start task to query server status - auto [domain, port] = server.splitAddress(); - auto *task = new ServerPingTask(domain, port); + auto target = MinecraftTarget::parse(server.m_address, false); + auto *task = new ServerPingTask(target.address, target.port); m_currentQueryTask->addTask(Task::Ptr(task)); // Update the model when the task is done From de86e63611f7c5a986c358741fefc6c6ded5f08d Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 13 Feb 2025 00:05:14 +0000 Subject: [PATCH 570/616] Update .github/workflows/stale.yml Co-authored-by: Alexandru Ionut Tripon Signed-off-by: TheKodeToad --- .github/workflows/stale.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 4afa7d648..8de9389ef 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -21,8 +21,6 @@ jobs: with: days-before-stale: 60 days-before-close: -1 # Don't close anything - stale-issue-message: "This issue has been inactive for a while. Please add a comment or provide an update if it's still relevant." - stale-pr-message: "This PR has had no recent activity. Please update it if it's still relevant." exempt-issue-labels: rfc,nostale,active,wanted exempt-all-milestones: true exempt-all-assignees: true From d22a20ffa6002ed1aa8d292c22176ac17f16ba58 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Thu, 13 Feb 2025 08:14:20 +0200 Subject: [PATCH 571/616] Update .github/workflows/stale.yml Co-authored-by: TheKodeToad Signed-off-by: Alexandru Ionut Tripon --- .github/workflows/stale.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index 8de9389ef..106a7844f 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -21,7 +21,7 @@ jobs: with: days-before-stale: 60 days-before-close: -1 # Don't close anything - exempt-issue-labels: rfc,nostale,active,wanted + exempt-issue-labels: rfc,nostale,help wanted exempt-all-milestones: true exempt-all-assignees: true operations-per-run: 1000 From 3840d8a37a05a02f043ad64b9e6b8f899a2f7f61 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 13 Feb 2025 19:12:50 +0000 Subject: [PATCH 572/616] Always check Microsoft account for offline account Signed-off-by: TheKodeToad --- launcher/LaunchController.cpp | 116 +++++++++++++++++++--------------- launcher/LaunchController.h | 2 +- 2 files changed, 66 insertions(+), 52 deletions(-) diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index 0aded4a95..03f2d28d9 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -220,13 +220,34 @@ void LaunchController::login() m_session->demo = m_demo; m_accountToUse->fillSession(m_session); - // Launch immediately in true offline mode - if (m_accountToUse->accountType() == AccountType::Offline) { - launchInstance(); + MinecraftAccountPtr accountToCheck; + + if (m_accountToUse->ownsMinecraft()) + accountToCheck = m_accountToUse; + else if (const MinecraftAccountPtr defaultAccount = APPLICATION->accounts()->defaultAccount(); + defaultAccount != nullptr && defaultAccount->ownsMinecraft()) { + accountToCheck = defaultAccount; + } else { + for (int i = 0; i < APPLICATION->accounts()->count(); i++) { + MinecraftAccountPtr account = APPLICATION->accounts()->at(i); + if (account->ownsMinecraft()) + accountToCheck = account; + } + } + + if (accountToCheck == nullptr) { + if (!m_session->demo) + m_session->demo = askPlayDemo(); + + if (m_session->demo) + launchInstance(); + else + emitFailed(tr("Launch cancelled - account does not own Minecraft.")); + return; } - switch (m_accountToUse->accountState()) { + switch (accountToCheck->accountState()) { case AccountState::Offline: { m_session->wants_online = false; } @@ -247,39 +268,25 @@ void LaunchController::login() } m_session->MakeOffline(name); // offline flavored game from here :3 - } - if (m_accountToUse->ownsMinecraft()) { - if (!m_accountToUse->hasProfile()) { - // Now handle setting up a profile name here... - ProfileSetupDialog dialog(m_accountToUse, m_parentWidget); - if (dialog.exec() == QDialog::Accepted) { - tryagain = true; - continue; - } else { - emitFailed(tr("Received undetermined session status during login.")); - return; - } - } - // we own Minecraft, there is a profile, it's all ready to go! - launchInstance(); - return; - } else { - // play demo ? - if (!m_session->demo) { - m_session->demo = askPlayDemo(); - } - if (m_session->demo) { // play demo here - launchInstance(); + } else if (m_accountToUse == accountToCheck && !m_accountToUse->hasProfile()) { + // Now handle setting up a profile name here... + ProfileSetupDialog dialog(m_accountToUse, m_parentWidget); + if (dialog.exec() == QDialog::Accepted) { + tryagain = true; + continue; } else { - emitFailed(tr("Launch cancelled - account does not own Minecraft.")); + emitFailed(tr("Received undetermined session status during login.")); + return; } } + // we own Minecraft, there is a profile, it's all ready to go! + launchInstance(); return; } case AccountState::Errored: // This means some sort of soft error that we can fix with a refresh ... so let's refresh. case AccountState::Unchecked: { - m_accountToUse->refresh(); + accountToCheck->refresh(); } /* fallthrough */ case AccountState::Working: { @@ -288,17 +295,18 @@ void LaunchController::login() if (m_online) { progDialog.setSkipButton(true, tr("Play Offline")); } - auto task = m_accountToUse->currentTask(); + auto task = accountToCheck->currentTask(); progDialog.execWithTask(task.get()); continue; } case AccountState::Expired: { - if (reauthenticateCurrentAccount()) + if (reauthenticateAccount(accountToCheck)) continue; return; } case AccountState::Disabled: { - auto errorString = tr("The launcher's client identification has changed. Please remove this account and add it again."); + auto errorString = tr("The launcher's client identification has changed. Please remove '%1' and try again."); + QMessageBox::warning(m_parentWidget, tr("Client identification changed"), errorString, QMessageBox::StandardButton::Ok, QMessageBox::StandardButton::Ok); emitFailed(errorString); @@ -306,8 +314,9 @@ void LaunchController::login() } case AccountState::Gone: { auto errorString = - tr("The account no longer exists on the servers. It may have been migrated, in which case please add the new account " - "you migrated this one to."); + tr("'%1' no longer exists on the servers. It may have been migrated, in which case please add the new account " + "you migrated this one to.") + .arg(accountToCheck->profileName()); QMessageBox::warning(m_parentWidget, tr("Account gone"), errorString, QMessageBox::StandardButton::Ok, QMessageBox::StandardButton::Ok); emitFailed(errorString); @@ -318,30 +327,35 @@ void LaunchController::login() emitFailed(tr("Failed to launch.")); } -bool LaunchController::reauthenticateCurrentAccount() +bool LaunchController::reauthenticateAccount(MinecraftAccountPtr account) { - auto button = - QMessageBox::warning(m_parentWidget, tr("Account refresh failed"), - tr("The account has expired and needs to be reauthenticated. Do you want to reauthenticate this account?"), - QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No, QMessageBox::StandardButton::Yes); + auto button = QMessageBox::warning( + m_parentWidget, tr("Account refresh failed"), + tr("'%1' has expired and needs to be reauthenticated. Do you want to reauthenticate this account?").arg(account->profileName()), + QMessageBox::StandardButton::Yes | QMessageBox::StandardButton::No, QMessageBox::StandardButton::Yes); if (button == QMessageBox::StandardButton::Yes) { auto accounts = APPLICATION->accounts(); - bool isDefault = accounts->defaultAccount() == m_accountToUse; - accounts->removeAccount(accounts->index(accounts->findAccountByProfileId(m_accountToUse->profileId()))); - if (m_accountToUse->accountType() == AccountType::MSA) { + bool isDefault = accounts->defaultAccount() == account; + accounts->removeAccount(accounts->index(accounts->findAccountByProfileId(account->profileId()))); + if (account->accountType() == AccountType::MSA) { auto newAccount = MSALoginDialog::newAccount(m_parentWidget); - accounts->addAccount(newAccount); - if (isDefault) { - accounts->setDefaultAccount(newAccount); + + if (newAccount != nullptr) { + accounts->addAccount(newAccount); + + if (isDefault) + accounts->setDefaultAccount(newAccount); + + if (m_accountToUse == account) { + m_accountToUse = nullptr; + decideAccount(); + } + return true; } - m_accountToUse = nullptr; - decideAccount(); - return true; } - emitFailed(tr("Account expired and re-login attempt failed")); - } else { - emitFailed(tr("The account has expired and needs to be reauthenticated")); } + + emitFailed(tr("The account has expired and needs to be reauthenticated")); return false; } diff --git a/launcher/LaunchController.h b/launcher/LaunchController.h index 7e6a27d91..af57994f5 100644 --- a/launcher/LaunchController.h +++ b/launcher/LaunchController.h @@ -78,7 +78,7 @@ class LaunchController : public Task { void decideAccount(); bool askPlayDemo(); QString askOfflineName(QString playerName, bool demo, bool& ok); - bool reauthenticateCurrentAccount(); + bool reauthenticateAccount(MinecraftAccountPtr account); private slots: void readyForLaunch(); From bdf87fa02fb1b4a72aef6915c09fef4a0e593f9f Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 16 Feb 2025 00:25:49 +0000 Subject: [PATCH 573/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/3a228057f5b619feb3186e986dbe76278d707b6e?narHash=sha256-xvTo0Aw0%2Bveek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc%3D' (2025-02-01) → 'github:NixOS/nixpkgs/2ff53fe64443980e139eaa286017f53f88336dd0?narHash=sha256-%2B/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc%3D' (2025-02-13) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index ec0257def..dd50b5395 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1738410390, - "narHash": "sha256-xvTo0Aw0+veek7hvEVLzErmJyQkEcRk6PSR4zsRQFEc=", + "lastModified": 1739446958, + "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "3a228057f5b619feb3186e986dbe76278d707b6e", + "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", "type": "github" }, "original": { From 8f1750df51668a94ab750dd05345ec5cc4e124c2 Mon Sep 17 00:00:00 2001 From: thonkdifferent <41342923+thonkdifferent@users.noreply.github.com> Date: Sun, 16 Feb 2025 19:30:31 +0200 Subject: [PATCH 574/616] Recognize riscv64 as a 64-bit platform Currently PrismLauncher complains about the installed JDK being a 32-bit version, despite it being compiled for 64-bit RISC-V `riscv64`. This PR fixes this issue. Signed-off-by: thonkdifferent <41342923+thonkdifferent@users.noreply.github.com> --- launcher/java/JavaChecker.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/java/JavaChecker.cpp b/launcher/java/JavaChecker.cpp index 772c90e42..07b5d7b40 100644 --- a/launcher/java/JavaChecker.cpp +++ b/launcher/java/JavaChecker.cpp @@ -171,7 +171,7 @@ void JavaChecker::finished(int exitcode, QProcess::ExitStatus status) auto os_arch = results["os.arch"]; auto java_version = results["java.version"]; auto java_vendor = results["java.vendor"]; - bool is_64 = os_arch == "x86_64" || os_arch == "amd64" || os_arch == "aarch64" || os_arch == "arm64"; + bool is_64 = os_arch == "x86_64" || os_arch == "amd64" || os_arch == "aarch64" || os_arch == "arm64" || os_arch == "riscv64"; result.validity = Result::Validity::Valid; result.is_64bit = is_64; From 73bb740bbb0b7b0c2a14c8f758df82cd8a135797 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 18 Feb 2025 18:14:21 +0000 Subject: [PATCH 575/616] chore(deps): update actions/cache action to v4.2.1 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 99dd4f1a5..ae4deb7a5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -170,7 +170,7 @@ jobs: - name: Retrieve ccache cache (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug' - uses: actions/cache@v4.2.0 + uses: actions/cache@v4.2.1 with: path: '${{ github.workspace }}\.ccache' key: ${{ matrix.os }}-mingw-w64-ccache-${{ github.run_id }} From 46385e671d07c3f207b1329f396e2265673909c3 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Tue, 18 Feb 2025 22:55:51 -0500 Subject: [PATCH 576/616] ci: always run nix workflow on push Signed-off-by: Seth Flynn --- .github/workflows/nix.yml | 2 -- 1 file changed, 2 deletions(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index 09e3dee1f..b44011711 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -8,8 +8,6 @@ on: - ".github/ISSUE_TEMPLATE/**" - ".markdownlint**" - "flatpak/**" - tags: - - "*" pull_request_target: paths-ignore: - "**.md" From 6a2f5f071cacf68d687e4711591ef77aaf6fffcf Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 21 Feb 2025 11:12:27 +0200 Subject: [PATCH 577/616] improve chessboard contrast Signed-off-by: Trial97 --- .../dialogs/skins/draw/SkinOpenGLWindow.cpp | 36 ++++--------------- 1 file changed, 6 insertions(+), 30 deletions(-) diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp index c00d33720..f611d6008 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp @@ -22,10 +22,9 @@ #include #include #include -#include -#include #include "minecraft/skins/SkinModel.h" +#include "rainbow.h" #include "ui/dialogs/skins/draw/BoxGeometry.h" #include "ui/dialogs/skins/draw/Scene.h" @@ -209,38 +208,15 @@ void SkinOpenGLWindow::updateCape(const QImage& cape) } } -QVector3D RGBToYCbCr(QColor rgb) -{ - auto fr = rgb.redF() / 255.f; - auto fg = rgb.greenF() / 255.f; - auto fb = rgb.blueF() / 255.F; - - auto Y = 0.2989f * fr + 0.5866f * fg + 0.1145f * fb; - auto Cb = -0.1687f * fr - 0.3313f * fg + 0.5000f * fb; - auto Cr = 0.5000f * fr - 0.4184f * fg - 0.0816f * fb; - - return QVector3D(Y, Cb, Cr); -} - -QColor YCbCrToRGB(QVector3D ycbcr) -{ - auto r = qBound(0.0f, ycbcr.x() + 0.0000f * ycbcr.y() + 1.4022f * ycbcr.z(), 1.0f); - auto g = qBound(0.0f, ycbcr.x() - 0.3456f * ycbcr.y() - 0.7145f * ycbcr.z(), 1.0f); - auto b = qBound(0.0f, ycbcr.x() + 1.7710f * ycbcr.y() + 0.0000f * ycbcr.z(), 1.0f); - - return QColor::fromRgb(r * 255, g * 255, b * 255); -} - QColor calculateContrastingColor(const QColor& color) { - constexpr float contrast = 0.07; - auto lab = RGBToYCbCr(color); - if (lab.x() < contrast) { - lab.setX(lab.x() + contrast); + constexpr float contrast = 0.2; + auto luma = Rainbow::luma(color); + if (luma < 0.5) { + return Rainbow::lighten(color, contrast); } else { - lab.setX(lab.x() - contrast); + return Rainbow::darken(color, contrast); } - return YCbCrToRGB(lab); } QImage generateChessboardImage(int width, int height, int tileSize, QColor baseColor) From 12a49154207761bb5cfcf023c6f318d71dcb24b5 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Fri, 21 Feb 2025 11:32:30 +0200 Subject: [PATCH 578/616] Apply suggestions from code review Co-authored-by: TheKodeToad Signed-off-by: Alexandru Ionut Tripon --- launcher/minecraft/skins/SkinModel.cpp | 6 +++--- launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/launcher/minecraft/skins/SkinModel.cpp b/launcher/minecraft/skins/SkinModel.cpp index 1358b47ea..b609bc6c7 100644 --- a/launcher/minecraft/skins/SkinModel.cpp +++ b/launcher/minecraft/skins/SkinModel.cpp @@ -23,7 +23,7 @@ #include "FileSystem.h" #include "Json.h" -QImage improveSkin(const QImage& skin) +static QImage improveSkin(const QImage& skin) { if (skin.size() == QSize(64, 32)) { // old format QImage newSkin = QImage(QSize(64, 64), skin.format()); @@ -40,12 +40,12 @@ QImage improveSkin(const QImage& skin) } return skin; } -QImage getSkin(const QString path) +static QImage getSkin(const QString path) { return improveSkin(QImage(path)); } -QImage generatePreviews(QImage texture, bool slim) +static QImage generatePreviews(QImage texture, bool slim) { QImage preview(36, 36, QImage::Format_ARGB32); preview.fill(Qt::transparent); diff --git a/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp index f611d6008..97fe44175 100644 --- a/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp +++ b/launcher/ui/dialogs/skins/draw/SkinOpenGLWindow.cpp @@ -22,6 +22,7 @@ #include #include #include +#include #include "minecraft/skins/SkinModel.h" #include "rainbow.h" From 3cb44ba10591d6da1625ebcc83f8ef7a87d6614a Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 23 Feb 2025 22:35:16 +0000 Subject: [PATCH 579/616] chore(deps): update korthout/backport-action action to v3.2.0 --- .github/workflows/backport.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index 4146cddf4..c46f8e192 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -25,7 +25,7 @@ jobs: with: ref: ${{ github.event.pull_request.head.sha }} - name: Create backport PRs - uses: korthout/backport-action@v3.1.0 + uses: korthout/backport-action@v3.2.0 with: # Config README: https://github.com/korthout/backport-action#backport-action pull_description: |- From 8cb999c479d02cde1a6d03b076fe9ed93d76afeb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 27 Feb 2025 19:24:06 +0000 Subject: [PATCH 580/616] chore(deps): update actions/cache action to v4.2.2 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ae4deb7a5..3b71d642a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -170,7 +170,7 @@ jobs: - name: Retrieve ccache cache (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug' - uses: actions/cache@v4.2.1 + uses: actions/cache@v4.2.2 with: path: '${{ github.workspace }}\.ccache' key: ${{ matrix.os }}-mingw-w64-ccache-${{ github.run_id }} From 5261b615d72eb0adbeb9c53e30b73448d722cf11 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Fri, 28 Feb 2025 21:04:31 +0000 Subject: [PATCH 581/616] Default to Fusion based Dark/Bright themes on Windows Signed-off-by: TheKodeToad --- launcher/Application.cpp | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 6f675dcee..6ebd39b00 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -154,6 +154,7 @@ #if defined Q_OS_WIN32 #include +#include #include "WindowsConsole.h" #endif @@ -1109,8 +1110,16 @@ bool Application::createSetupWizard() // set default theme after going into theme wizard if (!validIcons) settings()->set("IconTheme", QString("pe_colored")); - if (!validWidgets) - settings()->set("ApplicationTheme", QString("system")); + if (!validWidgets) { +#if defined(Q_OS_WIN32) && QT_VERSION >= QT_VERSION_CHECK(6, 5, 0) + const QString style = + QGuiApplication::styleHints()->colorScheme() == Qt::ColorScheme::Dark ? QStringLiteral("dark") : QStringLiteral("bright"); +#else + const QString style = QStringLiteral("system"); +#endif + + settings()->set("ApplicationTheme", style); + } m_themeManager->applyCurrentlySelectedTheme(true); From 93286789c5679fd6cbf14bf9ca39e1cce7036e9d Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 1 Mar 2025 20:12:31 +0100 Subject: [PATCH 582/616] fix typo Signed-off-by: iTrooz --- launcher/tasks/Task.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/tasks/Task.h b/launcher/tasks/Task.h index b5d9bec65..503d6a6b6 100644 --- a/launcher/tasks/Task.h +++ b/launcher/tasks/Task.h @@ -137,7 +137,7 @@ class Task : public QObject, public QRunnable { signals: void started(); void progress(qint64 current, qint64 total); - //! called when a task has eother succeeded, aborted or failed. + //! called when a task has either succeeded, aborted or failed. void finished(); //! called when a task has succeeded void succeeded(); From 29b3eb5cc6fe3ba48a28598222212966bade1444 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sat, 1 Mar 2025 22:45:36 +0200 Subject: [PATCH 583/616] fix mod load with empty gameversions Signed-off-by: Trial97 --- launcher/modplatform/flame/FileResolvingTask.cpp | 2 ++ launcher/modplatform/flame/FlameModIndex.cpp | 3 --- launcher/modplatform/flame/PackManifest.cpp | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/launcher/modplatform/flame/FileResolvingTask.cpp b/launcher/modplatform/flame/FileResolvingTask.cpp index 7ff38d57e..63b7d2b50 100644 --- a/launcher/modplatform/flame/FileResolvingTask.cpp +++ b/launcher/modplatform/flame/FileResolvingTask.cpp @@ -136,6 +136,8 @@ void Flame::FileResolvingTask::netJobFinished() auto obj = Json::requireObject(file); auto version = FlameMod::loadIndexedPackVersion(obj); auto fileid = version.fileId.toInt(); + Q_ASSERT(fileid != 0); + Q_ASSERT(m_manifest.files.contains(fileid)); m_manifest.files[fileid].version = version; auto url = QUrl(version.downloadUrl, QUrl::TolerantMode); if (!url.isValid() && "sha1" == version.hash_type && !version.hash.isEmpty()) { diff --git a/launcher/modplatform/flame/FlameModIndex.cpp b/launcher/modplatform/flame/FlameModIndex.cpp index 7de05f177..eb5b3cc67 100644 --- a/launcher/modplatform/flame/FlameModIndex.cpp +++ b/launcher/modplatform/flame/FlameModIndex.cpp @@ -105,9 +105,6 @@ void FlameMod::loadIndexedPackVersions(ModPlatform::IndexedPack& pack, auto FlameMod::loadIndexedPackVersion(QJsonObject& obj, bool load_changelog) -> ModPlatform::IndexedVersion { auto versionArray = Json::requireArray(obj, "gameVersions"); - if (versionArray.isEmpty()) { - return {}; - } ModPlatform::IndexedVersion file; for (auto mcVer : versionArray) { diff --git a/launcher/modplatform/flame/PackManifest.cpp b/launcher/modplatform/flame/PackManifest.cpp index e576a6a84..278105f4a 100644 --- a/launcher/modplatform/flame/PackManifest.cpp +++ b/launcher/modplatform/flame/PackManifest.cpp @@ -45,7 +45,7 @@ static void loadManifestV1(Flame::Manifest& pack, QJsonObject& manifest) Flame::File file; loadFileV1(file, obj); - + Q_ASSERT(file.projectId != 0); pack.files.insert(file.fileId, file); } From d75f1e303240c20a5ab1ef1f0347037d91de7bfa Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 2 Mar 2025 00:26:09 +0000 Subject: [PATCH 584/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/2ff53fe64443980e139eaa286017f53f88336dd0?narHash=sha256-%2B/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc%3D' (2025-02-13) → 'github:NixOS/nixpkgs/6313551cd05425cd5b3e63fe47dbc324eabb15e4?narHash=sha256-D%2BR%2BkFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs%3D' (2025-02-27) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index dd50b5395..b71a669ae 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1739446958, - "narHash": "sha256-+/bYK3DbPxMIvSL4zArkMX0LQvS7rzBKXnDXLfKyRVc=", + "lastModified": 1740695751, + "narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "2ff53fe64443980e139eaa286017f53f88336dd0", + "rev": "6313551cd05425cd5b3e63fe47dbc324eabb15e4", "type": "github" }, "original": { From 8f8c8394dc794222db1c7a1c17473cc799a3ece6 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 19 Dec 2024 10:47:54 +0200 Subject: [PATCH 585/616] remove some QEventLoops Signed-off-by: Trial97 --- launcher/icons/IconList.cpp | 1 - launcher/launch/LaunchTask.cpp | 1 - .../minecraft/mod/ResourceFolderModel.cpp | 20 ++- launcher/minecraft/mod/ResourceFolderModel.h | 2 +- .../mod/tasks/GetModDependenciesTask.h | 1 - launcher/modplatform/EnsureMetadataTask.cpp | 122 ++++++------------ launcher/modplatform/EnsureMetadataTask.h | 23 ++-- launcher/modplatform/modrinth/ModrinthAPI.h | 24 ++-- launcher/ui/MainWindow.cpp | 6 +- launcher/ui/dialogs/MSALoginDialog.h | 1 - launcher/ui/dialogs/OfflineLoginDialog.h | 1 - .../ui/dialogs/ResourceDownloadDialog.cpp | 1 - 12 files changed, 73 insertions(+), 130 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index f4022e0fb..8324663a1 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -37,7 +37,6 @@ #include "IconList.h" #include #include -#include #include #include #include diff --git a/launcher/launch/LaunchTask.cpp b/launcher/launch/LaunchTask.cpp index 4b93d2077..9ec746641 100644 --- a/launcher/launch/LaunchTask.cpp +++ b/launcher/launch/LaunchTask.cpp @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include "MessageLevel.h" diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index adeb2e422..70555fa35 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -164,22 +164,20 @@ bool ResourceFolderModel::installResource(QString original_path) return false; } -bool ResourceFolderModel::installResourceWithFlameMetadata(QString path, ModPlatform::IndexedVersion& vers) +void ResourceFolderModel::installResourceWithFlameMetadata(QString path, ModPlatform::IndexedVersion& vers) { + auto install = [this, path] { installResource(std::move(path)); }; if (vers.addonId.isValid()) { ModPlatform::IndexedPack pack{ vers.addonId, ModPlatform::ResourceProvider::FLAME, }; - QEventLoop loop; - auto response = std::make_shared(); auto job = FlameAPI().getProject(vers.addonId.toString(), response); - - QObject::connect(job.get(), &Task::failed, [&loop] { loop.quit(); }); - QObject::connect(job.get(), &Task::aborted, &loop, &QEventLoop::quit); - QObject::connect(job.get(), &Task::succeeded, [response, this, &vers, &loop, &pack] { + QObject::connect(job.get(), &Task::failed, this, install); + QObject::connect(job.get(), &Task::aborted, this, install); + QObject::connect(job.get(), &Task::succeeded, [response, this, &vers, install, &pack] { QJsonParseError parse_error{}; QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); if (parse_error.error != QJsonParseError::NoError) { @@ -196,16 +194,14 @@ bool ResourceFolderModel::installResourceWithFlameMetadata(QString path, ModPlat qWarning() << "Error while reading mod info: " << e.cause(); } LocalResourceUpdateTask update_metadata(indexDir(), pack, vers); - QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit); + QObject::connect(&update_metadata, &Task::finished, this, install); update_metadata.start(); }); job->start(); - - loop.exec(); + } else { + install(); } - - return installResource(std::move(path)); } bool ResourceFolderModel::uninstallResource(QString file_name, bool preserve_metadata) diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index ee26a74bc..f6173b0d9 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -93,7 +93,7 @@ class ResourceFolderModel : public QAbstractListModel { */ virtual bool installResource(QString path); - virtual bool installResourceWithFlameMetadata(QString path, ModPlatform::IndexedVersion& vers); + virtual void installResourceWithFlameMetadata(QString path, ModPlatform::IndexedVersion& vers); /** Uninstall (i.e. remove all data about it) a resource, given its file name. * diff --git a/launcher/minecraft/mod/tasks/GetModDependenciesTask.h b/launcher/minecraft/mod/tasks/GetModDependenciesTask.h index 29c77f9fe..a02ffb4d5 100644 --- a/launcher/minecraft/mod/tasks/GetModDependenciesTask.h +++ b/launcher/minecraft/mod/tasks/GetModDependenciesTask.h @@ -19,7 +19,6 @@ #pragma once #include -#include #include #include #include diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index 8e910e984..e170fbcd0 100644 --- a/launcher/modplatform/EnsureMetadataTask.cpp +++ b/launcher/modplatform/EnsureMetadataTask.cpp @@ -6,6 +6,7 @@ #include "Application.h" #include "Json.h" +#include "QObjectPtr.h" #include "minecraft/mod/Mod.h" #include "minecraft/mod/tasks/LocalResourceUpdateTask.h" @@ -19,7 +20,7 @@ static ModrinthAPI modrinth_api; static FlameAPI flame_api; EnsureMetadataTask::EnsureMetadataTask(Resource* resource, QDir dir, ModPlatform::ResourceProvider prov) - : Task(), m_index_dir(dir), m_provider(prov), m_hashingTask(nullptr), m_current_task(nullptr) + : Task(), m_indexDir(dir), m_provider(prov), m_hashingTask(nullptr), m_currentTask(nullptr) { auto hashTask = createNewHash(resource); if (!hashTask) @@ -30,7 +31,7 @@ EnsureMetadataTask::EnsureMetadataTask(Resource* resource, QDir dir, ModPlatform } EnsureMetadataTask::EnsureMetadataTask(QList& resources, QDir dir, ModPlatform::ResourceProvider prov) - : Task(), m_index_dir(dir), m_provider(prov), m_current_task(nullptr) + : Task(), m_indexDir(dir), m_provider(prov), m_currentTask(nullptr) { auto hashTask = makeShared("MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); m_hashingTask = hashTask; @@ -45,7 +46,7 @@ EnsureMetadataTask::EnsureMetadataTask(QList& resources, QDir dir, Mo } EnsureMetadataTask::EnsureMetadataTask(QHash& resources, QDir dir, ModPlatform::ResourceProvider prov) - : Task(), m_resources(resources), m_index_dir(dir), m_provider(prov), m_current_task(nullptr) + : Task(), m_resources(resources), m_indexDir(dir), m_provider(prov), m_currentTask(nullptr) {} Hashing::Hasher::Ptr EnsureMetadataTask::createNewHash(Resource* resource) @@ -81,8 +82,8 @@ bool EnsureMetadataTask::abort() // Prevent sending signals to a dead object disconnect(this, 0, 0, 0); - if (m_current_task) - return m_current_task->abort(); + if (m_currentTask) + return m_currentTask->abort(); return true; } @@ -149,28 +150,22 @@ void EnsureMetadataTask::executeTask() connect(project_task.get(), &Task::finished, this, [this, invalidade_leftover, project_task] { invalidade_leftover(); project_task->deleteLater(); - if (m_current_task) - m_current_task.reset(); + if (m_currentTask) + m_currentTask.reset(); }); connect(project_task.get(), &Task::failed, this, &EnsureMetadataTask::emitFailed); - m_current_task = project_task; + m_currentTask = project_task; project_task->start(); }); - connect(version_task.get(), &Task::finished, [this, version_task] { - version_task->deleteLater(); - if (m_current_task) - m_current_task.reset(); - }); - if (m_resources.size() > 1) setStatus(tr("Requesting metadata information from %1...").arg(ModPlatform::ProviderCapabilities::readableName(m_provider))); else if (!m_resources.empty()) setStatus(tr("Requesting metadata information from %1 for '%2'...") .arg(ModPlatform::ProviderCapabilities::readableName(m_provider), m_resources.begin().value()->name())); - m_current_task = version_task; + m_currentTask = version_task; version_task->start(); } @@ -249,7 +244,7 @@ Task::Ptr EnsureMetadataTask::modrinthVersionsTask() setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(resource->name())); qDebug() << "Getting version for" << resource->name() << "from Modrinth"; - m_temp_versions.insert(hash, Modrinth::loadIndexedPackVersion(entry)); + m_tempVersions.insert(hash, Modrinth::loadIndexedPackVersion(entry)); } catch (Json::JsonException& e) { qDebug() << e.cause(); qDebug() << entries; @@ -269,7 +264,7 @@ Task::Ptr EnsureMetadataTask::modrinthVersionsTask() Task::Ptr EnsureMetadataTask::modrinthProjectsTask() { QHash addonIds; - for (auto const& data : m_temp_versions) + for (auto const& data : m_tempVersions) addonIds.insert(data.addonId.toString(), data.hash); auto response = std::make_shared(); @@ -334,16 +329,9 @@ Task::Ptr EnsureMetadataTask::modrinthProjectsTask() auto* resource = resource_iter.value(); - try { - setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(resource->name())); + setStatus(tr("Parsing API response from Modrinth for '%1'...").arg(resource->name())); - modrinthCallback(pack, m_temp_versions.find(hash).value(), resource); - } catch (Json::JsonException& e) { - qDebug() << e.cause(); - qDebug() << entries; - - emitFail(resource); - } + updateMetadata(pack, m_tempVersions.find(hash).value(), resource); } }); @@ -404,7 +392,7 @@ Task::Ptr EnsureMetadataTask::flameVersionsTask() setStatus(tr("Parsing API response from CurseForge for '%1'...").arg((*resource)->name())); - m_temp_versions.insert(fingerprint, FlameMod::loadIndexedPackVersion(file_obj)); + m_tempVersions.insert(fingerprint, FlameMod::loadIndexedPackVersion(file_obj)); } } catch (Json::JsonException& e) { @@ -420,8 +408,8 @@ Task::Ptr EnsureMetadataTask::flameProjectsTask() { QHash addonIds; for (auto const& hash : m_resources.keys()) { - if (m_temp_versions.contains(hash)) { - auto data = m_temp_versions.find(hash).value(); + if (m_tempVersions.contains(hash)) { + auto data = m_tempVersions.find(hash).value(); auto id_str = data.addonId.toString(); if (!id_str.isEmpty()) @@ -468,19 +456,19 @@ Task::Ptr EnsureMetadataTask::flameProjectsTask() auto hash = addonIds.find(id).value(); auto resource = m_resources.find(hash).value(); + ModPlatform::IndexedPack pack; try { setStatus(tr("Parsing API response from CurseForge for '%1'...").arg(resource->name())); - ModPlatform::IndexedPack pack; FlameMod::loadIndexedPack(pack, entry_obj); - flameCallback(pack, m_temp_versions.find(hash).value(), resource); } catch (Json::JsonException& e) { qDebug() << e.cause(); qDebug() << entries; emitFail(resource); } + updateMetadata(pack, m_tempVersions.find(hash).value(), resource); } } catch (Json::JsonException& e) { qDebug() << e.cause(); @@ -491,28 +479,31 @@ Task::Ptr EnsureMetadataTask::flameProjectsTask() return proj_task; } -void EnsureMetadataTask::modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource* resource) +void EnsureMetadataTask::updateMetadata(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource* resource) { - // Prevent file name mismatch - ver.fileName = resource->fileinfo().fileName(); - if (ver.fileName.endsWith(".disabled")) - ver.fileName.chop(9); + try { + // Prevent file name mismatch + ver.fileName = resource->fileinfo().fileName(); + if (ver.fileName.endsWith(".disabled")) + ver.fileName.chop(9); - QDir tmp_index_dir(m_index_dir); + auto task = makeShared(m_indexDir, pack, ver); - { - LocalResourceUpdateTask update_metadata(m_index_dir, pack, ver); - QEventLoop loop; + connect(task.get(), &Task::finished, this, [this, &pack, resource] { updateMetadataCallback(pack, resource); }); - QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit); + m_updateMetadataTasks[ModPlatform::ProviderCapabilities::name(pack.provider) + pack.addonId.toString()] = task; + task->start(); + } catch (Json::JsonException& e) { + qDebug() << e.cause(); - update_metadata.start(); - - if (!update_metadata.isFinished()) - loop.exec(); + emitFail(resource); } +} - auto metadata = Metadata::get(tmp_index_dir, pack.slug); +void EnsureMetadataTask::updateMetadataCallback(ModPlatform::IndexedPack& pack, Resource* resource) +{ + QDir tmpIndexDir(m_indexDir); + auto metadata = Metadata::get(tmpIndexDir, pack.slug); if (!metadata.isValid()) { qCritical() << "Failed to generate metadata at last step!"; emitFail(resource); @@ -523,42 +514,3 @@ void EnsureMetadataTask::modrinthCallback(ModPlatform::IndexedPack& pack, ModPla emitReady(resource); } - -void EnsureMetadataTask::flameCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource* resource) -{ - try { - // Prevent file name mismatch - ver.fileName = resource->fileinfo().fileName(); - if (ver.fileName.endsWith(".disabled")) - ver.fileName.chop(9); - - QDir tmp_index_dir(m_index_dir); - - { - LocalResourceUpdateTask update_metadata(m_index_dir, pack, ver); - QEventLoop loop; - - QObject::connect(&update_metadata, &Task::finished, &loop, &QEventLoop::quit); - - update_metadata.start(); - - if (!update_metadata.isFinished()) - loop.exec(); - } - - auto metadata = Metadata::get(tmp_index_dir, pack.slug); - if (!metadata.isValid()) { - qCritical() << "Failed to generate metadata at last step!"; - emitFail(resource); - return; - } - - resource->setMetadata(metadata); - - emitReady(resource); - } catch (Json::JsonException& e) { - qDebug() << e.cause(); - - emitFail(resource); - } -} diff --git a/launcher/modplatform/EnsureMetadataTask.h b/launcher/modplatform/EnsureMetadataTask.h index 4e5787841..3d8a8ba53 100644 --- a/launcher/modplatform/EnsureMetadataTask.h +++ b/launcher/modplatform/EnsureMetadataTask.h @@ -30,11 +30,11 @@ class EnsureMetadataTask : public Task { private: // FIXME: Move to their own namespace - auto modrinthVersionsTask() -> Task::Ptr; - auto modrinthProjectsTask() -> Task::Ptr; + Task::Ptr modrinthVersionsTask(); + Task::Ptr modrinthProjectsTask(); - auto flameVersionsTask() -> Task::Ptr; - auto flameProjectsTask() -> Task::Ptr; + Task::Ptr flameVersionsTask(); + Task::Ptr flameProjectsTask(); // Helpers enum class RemoveFromList { Yes, No }; @@ -42,12 +42,12 @@ class EnsureMetadataTask : public Task { void emitFail(Resource*, QString key = {}, RemoveFromList = RemoveFromList::Yes); // Hashes and stuff - auto createNewHash(Resource*) -> Hashing::Hasher::Ptr; - auto getExistingHash(Resource*) -> QString; + Hashing::Hasher::Ptr createNewHash(Resource*); + QString getExistingHash(Resource*); private slots: - void modrinthCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource*); - void flameCallback(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource*); + void updateMetadata(ModPlatform::IndexedPack& pack, ModPlatform::IndexedVersion& ver, Resource*); + void updateMetadataCallback(ModPlatform::IndexedPack& pack, Resource* resource); signals: void metadataReady(Resource*); @@ -55,10 +55,11 @@ class EnsureMetadataTask : public Task { private: QHash m_resources; - QDir m_index_dir; + QDir m_indexDir; ModPlatform::ResourceProvider m_provider; - QHash m_temp_versions; + QHash m_tempVersions; Task::Ptr m_hashingTask; - Task::Ptr m_current_task; + Task::Ptr m_currentTask; + QHash m_updateMetadataTasks; }; diff --git a/launcher/modplatform/modrinth/ModrinthAPI.h b/launcher/modplatform/modrinth/ModrinthAPI.h index a0e7efb08..3e9c4befd 100644 --- a/launcher/modplatform/modrinth/ModrinthAPI.h +++ b/launcher/modplatform/modrinth/ModrinthAPI.h @@ -12,21 +12,21 @@ class ModrinthAPI : public NetworkResourceAPI { public: - auto currentVersion(QString hash, QString hash_format, std::shared_ptr response) -> Task::Ptr; + Task::Ptr currentVersion(QString hash, QString hash_format, std::shared_ptr response); - auto currentVersions(const QStringList& hashes, QString hash_format, std::shared_ptr response) -> Task::Ptr; + Task::Ptr currentVersions(const QStringList& hashes, QString hash_format, std::shared_ptr response); - auto latestVersion(QString hash, - QString hash_format, - std::optional> mcVersions, - std::optional loaders, - std::shared_ptr response) -> Task::Ptr; + Task::Ptr latestVersion(QString hash, + QString hash_format, + std::optional> mcVersions, + std::optional loaders, + std::shared_ptr response); - auto latestVersions(const QStringList& hashes, - QString hash_format, - std::optional> mcVersions, - std::optional loaders, - std::shared_ptr response) -> Task::Ptr; + Task::Ptr latestVersions(const QStringList& hashes, + QString hash_format, + std::optional> mcVersions, + std::optional loaders, + std::shared_ptr response); Task::Ptr getProjects(QStringList addonIds, std::shared_ptr response) const override; diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index ee12eaa2d..33c49b981 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -1047,10 +1047,10 @@ void MainWindow::processURLs(QList urls) switch (type) { case PackedResourceType::ResourcePack: - minecraftInst->resourcePackList()->installResource(localFileName); + minecraftInst->resourcePackList()->installResourceWithFlameMetadata(localFileName, version); break; case PackedResourceType::TexturePack: - minecraftInst->texturePackList()->installResource(localFileName); + minecraftInst->texturePackList()->installResourceWithFlameMetadata(localFileName, version); break; case PackedResourceType::DataPack: qWarning() << "Importing of Data Packs not supported at this time. Ignoring" << localFileName; @@ -1059,7 +1059,7 @@ void MainWindow::processURLs(QList urls) minecraftInst->loaderModList()->installResourceWithFlameMetadata(localFileName, version); break; case PackedResourceType::ShaderPack: - minecraftInst->shaderPackList()->installResource(localFileName); + minecraftInst->shaderPackList()->installResourceWithFlameMetadata(localFileName, version); break; case PackedResourceType::WorldSave: minecraftInst->worldList()->installWorld(localFileInfo); diff --git a/launcher/ui/dialogs/MSALoginDialog.h b/launcher/ui/dialogs/MSALoginDialog.h index 375ccc57a..f19abbe6d 100644 --- a/launcher/ui/dialogs/MSALoginDialog.h +++ b/launcher/ui/dialogs/MSALoginDialog.h @@ -16,7 +16,6 @@ #pragma once #include -#include #include #include "minecraft/auth/AuthFlow.h" diff --git a/launcher/ui/dialogs/OfflineLoginDialog.h b/launcher/ui/dialogs/OfflineLoginDialog.h index a50024a6c..6660a18ec 100644 --- a/launcher/ui/dialogs/OfflineLoginDialog.h +++ b/launcher/ui/dialogs/OfflineLoginDialog.h @@ -1,6 +1,5 @@ #pragma once -#include #include #include "minecraft/auth/MinecraftAccount.h" diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp index b2c07d490..718c0fe2c 100644 --- a/launcher/ui/dialogs/ResourceDownloadDialog.cpp +++ b/launcher/ui/dialogs/ResourceDownloadDialog.cpp @@ -18,7 +18,6 @@ */ #include "ResourceDownloadDialog.h" -#include #include #include From f99b7e9ebd17129448aabd630c87e8a15fb2734c Mon Sep 17 00:00:00 2001 From: txtsd Date: Mon, 3 Mar 2025 10:14:06 +0530 Subject: [PATCH 586/616] chore: Update year range Signed-off-by: txtsd --- COPYING.md | 2 +- program_info/CMakeLists.txt | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/COPYING.md b/COPYING.md index 111587060..0ea3437d3 100644 --- a/COPYING.md +++ b/COPYING.md @@ -1,7 +1,7 @@ ## Prism Launcher Prism Launcher - Minecraft Launcher - Copyright (C) 2022-2024 Prism Launcher Contributors + Copyright (C) 2022-2025 Prism Launcher Contributors This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index e693d757a..5108730a5 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -14,8 +14,8 @@ set(Launcher_DisplayName "Prism Launcher") set(Launcher_Name "${Launcher_CommonName}" PARENT_SCOPE) set(Launcher_DisplayName "${Launcher_DisplayName}" PARENT_SCOPE) -set(Launcher_Copyright "© 2022-2024 Prism Launcher Contributors\\n© 2021-2022 PolyMC Contributors\\n© 2012-2021 MultiMC Contributors") -set(Launcher_Copyright_Mac "© 2022-2024 Prism Launcher Contributors, © 2021-2022 PolyMC Contributors and © 2012-2021 MultiMC Contributors" PARENT_SCOPE) +set(Launcher_Copyright "© 2022-2025 Prism Launcher Contributors\\n© 2021-2022 PolyMC Contributors\\n© 2012-2021 MultiMC Contributors") +set(Launcher_Copyright_Mac "© 2022-2025 Prism Launcher Contributors, © 2021-2022 PolyMC Contributors and © 2012-2021 MultiMC Contributors" PARENT_SCOPE) set(Launcher_Copyright "${Launcher_Copyright}" PARENT_SCOPE) set(Launcher_Domain "prismlauncher.org" PARENT_SCOPE) set(Launcher_UserAgent "${Launcher_CommonName}/${Launcher_VERSION_NAME}" PARENT_SCOPE) From 3da94eeea287237a348c9c1b3b8686fb17d85246 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 1 Nov 2024 18:13:47 +0200 Subject: [PATCH 587/616] removed some unused QNetworkAccessManager references Signed-off-by: Trial97 --- launcher/minecraft/auth/AuthFlow.cpp | 1 - launcher/minecraft/auth/AuthSession.h | 3 --- launcher/modplatform/flame/FileResolvingTask.cpp | 5 +---- launcher/modplatform/flame/FileResolvingTask.h | 5 +---- launcher/modplatform/flame/FlameInstanceCreationTask.cpp | 2 +- launcher/modplatform/flame/FlameModIndex.cpp | 5 +---- launcher/modplatform/flame/FlameModIndex.h | 6 +----- launcher/modplatform/modrinth/ModrinthPackIndex.h | 1 - .../ui/pages/modplatform/flame/FlameResourceModels.cpp | 8 ++++---- 9 files changed, 9 insertions(+), 27 deletions(-) diff --git a/launcher/minecraft/auth/AuthFlow.cpp b/launcher/minecraft/auth/AuthFlow.cpp index 19fbe15dd..287831b2f 100644 --- a/launcher/minecraft/auth/AuthFlow.cpp +++ b/launcher/minecraft/auth/AuthFlow.cpp @@ -1,5 +1,4 @@ #include -#include #include #include diff --git a/launcher/minecraft/auth/AuthSession.h b/launcher/minecraft/auth/AuthSession.h index 54e7d69e0..cbe604805 100644 --- a/launcher/minecraft/auth/AuthSession.h +++ b/launcher/minecraft/auth/AuthSession.h @@ -1,12 +1,9 @@ #pragma once -#include #include #include -#include "QObjectPtr.h" class MinecraftAccount; -class QNetworkAccessManager; struct AuthSession { bool MakeOffline(QString offline_playername); diff --git a/launcher/modplatform/flame/FileResolvingTask.cpp b/launcher/modplatform/flame/FileResolvingTask.cpp index 7ff38d57e..df737d048 100644 --- a/launcher/modplatform/flame/FileResolvingTask.cpp +++ b/launcher/modplatform/flame/FileResolvingTask.cpp @@ -20,7 +20,6 @@ #include #include "Json.h" -#include "QObjectPtr.h" #include "modplatform/ModIndex.h" #include "modplatform/flame/FlameAPI.h" #include "modplatform/flame/FlameModIndex.h" @@ -33,9 +32,7 @@ static const FlameAPI flameAPI; static ModrinthAPI modrinthAPI; -Flame::FileResolvingTask::FileResolvingTask(const shared_qobject_ptr& network, Flame::Manifest& toProcess) - : m_network(network), m_manifest(toProcess) -{} +Flame::FileResolvingTask::FileResolvingTask(Flame::Manifest& toProcess) : m_manifest(toProcess) {} bool Flame::FileResolvingTask::abort() { diff --git a/launcher/modplatform/flame/FileResolvingTask.h b/launcher/modplatform/flame/FileResolvingTask.h index edd9fce9a..3fe8dfb1a 100644 --- a/launcher/modplatform/flame/FileResolvingTask.h +++ b/launcher/modplatform/flame/FileResolvingTask.h @@ -17,8 +17,6 @@ */ #pragma once -#include - #include "PackManifest.h" #include "tasks/Task.h" @@ -26,7 +24,7 @@ namespace Flame { class FileResolvingTask : public Task { Q_OBJECT public: - explicit FileResolvingTask(const shared_qobject_ptr& network, Flame::Manifest& toProcess); + explicit FileResolvingTask(Flame::Manifest& toProcess); virtual ~FileResolvingTask() = default; bool canAbort() const override { return true; } @@ -44,7 +42,6 @@ class FileResolvingTask : public Task { void getFlameProjects(); private: /* data */ - shared_qobject_ptr m_network; Flame::Manifest m_manifest; std::shared_ptr m_result; Task::Ptr m_task; diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 6073e90a2..4ed1a2624 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -437,7 +437,7 @@ bool FlameCreationTask::createInstance() instance.setName(name()); - m_modIdResolver.reset(new Flame::FileResolvingTask(APPLICATION->network(), m_pack)); + m_modIdResolver.reset(new Flame::FileResolvingTask(m_pack)); connect(m_modIdResolver.get(), &Flame::FileResolvingTask::succeeded, this, [this, &loop] { idResolverSucceeded(loop); }); connect(m_modIdResolver.get(), &Flame::FileResolvingTask::failed, [this, &loop](QString reason) { m_modIdResolver.reset(); diff --git a/launcher/modplatform/flame/FlameModIndex.cpp b/launcher/modplatform/flame/FlameModIndex.cpp index 7de05f177..e98fec3d2 100644 --- a/launcher/modplatform/flame/FlameModIndex.cpp +++ b/launcher/modplatform/flame/FlameModIndex.cpp @@ -76,10 +76,7 @@ static QString enumToString(int hash_algorithm) } } -void FlameMod::loadIndexedPackVersions(ModPlatform::IndexedPack& pack, - QJsonArray& arr, - [[maybe_unused]] const shared_qobject_ptr& network, - const BaseInstance* inst) +void FlameMod::loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArray& arr, const BaseInstance* inst) { QVector unsortedVersions; for (auto versionIter : arr) { diff --git a/launcher/modplatform/flame/FlameModIndex.h b/launcher/modplatform/flame/FlameModIndex.h index 1bcaa44ba..a449569c4 100644 --- a/launcher/modplatform/flame/FlameModIndex.h +++ b/launcher/modplatform/flame/FlameModIndex.h @@ -6,7 +6,6 @@ #include "modplatform/ModIndex.h" -#include #include "BaseInstance.h" namespace FlameMod { @@ -14,10 +13,7 @@ namespace FlameMod { void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj); void loadURLs(ModPlatform::IndexedPack& m, QJsonObject& obj); void loadBody(ModPlatform::IndexedPack& m, QJsonObject& obj); -void loadIndexedPackVersions(ModPlatform::IndexedPack& pack, - QJsonArray& arr, - const shared_qobject_ptr& network, - const BaseInstance* inst); +void loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArray& arr, const BaseInstance* inst); auto loadIndexedPackVersion(QJsonObject& obj, bool load_changelog = false) -> ModPlatform::IndexedVersion; auto loadDependencyVersions(const ModPlatform::Dependency& m, QJsonArray& arr, const BaseInstance* inst) -> ModPlatform::IndexedVersion; } // namespace FlameMod \ No newline at end of file diff --git a/launcher/modplatform/modrinth/ModrinthPackIndex.h b/launcher/modplatform/modrinth/ModrinthPackIndex.h index 93f91eec2..aa568ba13 100644 --- a/launcher/modplatform/modrinth/ModrinthPackIndex.h +++ b/launcher/modplatform/modrinth/ModrinthPackIndex.h @@ -19,7 +19,6 @@ #include "modplatform/ModIndex.h" -#include #include "BaseInstance.h" namespace Modrinth { diff --git a/launcher/ui/pages/modplatform/flame/FlameResourceModels.cpp b/launcher/ui/pages/modplatform/flame/FlameResourceModels.cpp index ae4562be4..d737d6050 100644 --- a/launcher/ui/pages/modplatform/flame/FlameResourceModels.cpp +++ b/launcher/ui/pages/modplatform/flame/FlameResourceModels.cpp @@ -32,7 +32,7 @@ void FlameModModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJsonObject& void FlameModModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - FlameMod::loadIndexedPackVersions(m, arr, APPLICATION->network(), &m_base_instance); + FlameMod::loadIndexedPackVersions(m, arr, &m_base_instance); } auto FlameModModel::loadDependencyVersions(const ModPlatform::Dependency& m, QJsonArray& arr) -> ModPlatform::IndexedVersion @@ -65,7 +65,7 @@ void FlameResourcePackModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJso void FlameResourcePackModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - FlameMod::loadIndexedPackVersions(m, arr, APPLICATION->network(), &m_base_instance); + FlameMod::loadIndexedPackVersions(m, arr, &m_base_instance); } bool FlameResourcePackModel::optedOut(const ModPlatform::IndexedVersion& ver) const @@ -93,7 +93,7 @@ void FlameTexturePackModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJson void FlameTexturePackModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - FlameMod::loadIndexedPackVersions(m, arr, APPLICATION->network(), &m_base_instance); + FlameMod::loadIndexedPackVersions(m, arr, &m_base_instance); QVector filtered_versions(m.versions.size()); @@ -157,7 +157,7 @@ void FlameShaderPackModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJsonO void FlameShaderPackModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - FlameMod::loadIndexedPackVersions(m, arr, APPLICATION->network(), &m_base_instance); + FlameMod::loadIndexedPackVersions(m, arr, &m_base_instance); } bool FlameShaderPackModel::optedOut(const ModPlatform::IndexedVersion& ver) const From 22e0659a5f84802af626c5383c9623aee851607e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 1 Nov 2024 19:01:59 +0200 Subject: [PATCH 588/616] removed unused BaseInstance argument from some API functions Signed-off-by: Trial97 --- launcher/modplatform/flame/FlameModIndex.cpp | 2 +- launcher/modplatform/flame/FlameModIndex.h | 6 +++--- launcher/modplatform/modrinth/ModrinthPackIndex.cpp | 2 +- launcher/modplatform/modrinth/ModrinthPackIndex.h | 2 +- .../ui/pages/modplatform/flame/FlameResourceModels.cpp | 8 ++++---- .../pages/modplatform/modrinth/ModrinthResourceModels.cpp | 8 ++++---- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/launcher/modplatform/flame/FlameModIndex.cpp b/launcher/modplatform/flame/FlameModIndex.cpp index e98fec3d2..c700d7453 100644 --- a/launcher/modplatform/flame/FlameModIndex.cpp +++ b/launcher/modplatform/flame/FlameModIndex.cpp @@ -76,7 +76,7 @@ static QString enumToString(int hash_algorithm) } } -void FlameMod::loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArray& arr, const BaseInstance* inst) +void FlameMod::loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArray& arr) { QVector unsortedVersions; for (auto versionIter : arr) { diff --git a/launcher/modplatform/flame/FlameModIndex.h b/launcher/modplatform/flame/FlameModIndex.h index a449569c4..f6b4b22be 100644 --- a/launcher/modplatform/flame/FlameModIndex.h +++ b/launcher/modplatform/flame/FlameModIndex.h @@ -13,7 +13,7 @@ namespace FlameMod { void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj); void loadURLs(ModPlatform::IndexedPack& m, QJsonObject& obj); void loadBody(ModPlatform::IndexedPack& m, QJsonObject& obj); -void loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArray& arr, const BaseInstance* inst); -auto loadIndexedPackVersion(QJsonObject& obj, bool load_changelog = false) -> ModPlatform::IndexedVersion; -auto loadDependencyVersions(const ModPlatform::Dependency& m, QJsonArray& arr, const BaseInstance* inst) -> ModPlatform::IndexedVersion; +void loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArray& arr); +ModPlatform::IndexedVersion loadIndexedPackVersion(QJsonObject& obj, bool load_changelog = false); +ModPlatform::IndexedVersion loadDependencyVersions(const ModPlatform::Dependency& m, QJsonArray& arr, const BaseInstance* inst); } // namespace FlameMod \ No newline at end of file diff --git a/launcher/modplatform/modrinth/ModrinthPackIndex.cpp b/launcher/modplatform/modrinth/ModrinthPackIndex.cpp index 72550937c..16b300b02 100644 --- a/launcher/modplatform/modrinth/ModrinthPackIndex.cpp +++ b/launcher/modplatform/modrinth/ModrinthPackIndex.cpp @@ -112,7 +112,7 @@ void Modrinth::loadExtraPackData(ModPlatform::IndexedPack& pack, QJsonObject& ob pack.extraDataLoaded = true; } -void Modrinth::loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArray& arr, const BaseInstance* inst) +void Modrinth::loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArray& arr) { QVector unsortedVersions; for (auto versionIter : arr) { diff --git a/launcher/modplatform/modrinth/ModrinthPackIndex.h b/launcher/modplatform/modrinth/ModrinthPackIndex.h index aa568ba13..16f3d262c 100644 --- a/launcher/modplatform/modrinth/ModrinthPackIndex.h +++ b/launcher/modplatform/modrinth/ModrinthPackIndex.h @@ -25,7 +25,7 @@ namespace Modrinth { void loadIndexedPack(ModPlatform::IndexedPack& m, QJsonObject& obj); void loadExtraPackData(ModPlatform::IndexedPack& m, QJsonObject& obj); -void loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArray& arr, const BaseInstance* inst); +void loadIndexedPackVersions(ModPlatform::IndexedPack& pack, QJsonArray& arr); auto loadIndexedPackVersion(QJsonObject& obj, QString hash_type = "sha512", QString filename_prefer = "") -> ModPlatform::IndexedVersion; auto loadDependencyVersions(const ModPlatform::Dependency& m, QJsonArray& arr, const BaseInstance* inst) -> ModPlatform::IndexedVersion; diff --git a/launcher/ui/pages/modplatform/flame/FlameResourceModels.cpp b/launcher/ui/pages/modplatform/flame/FlameResourceModels.cpp index d737d6050..fea1fc27a 100644 --- a/launcher/ui/pages/modplatform/flame/FlameResourceModels.cpp +++ b/launcher/ui/pages/modplatform/flame/FlameResourceModels.cpp @@ -32,7 +32,7 @@ void FlameModModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJsonObject& void FlameModModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - FlameMod::loadIndexedPackVersions(m, arr, &m_base_instance); + FlameMod::loadIndexedPackVersions(m, arr); } auto FlameModModel::loadDependencyVersions(const ModPlatform::Dependency& m, QJsonArray& arr) -> ModPlatform::IndexedVersion @@ -65,7 +65,7 @@ void FlameResourcePackModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJso void FlameResourcePackModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - FlameMod::loadIndexedPackVersions(m, arr, &m_base_instance); + FlameMod::loadIndexedPackVersions(m, arr); } bool FlameResourcePackModel::optedOut(const ModPlatform::IndexedVersion& ver) const @@ -93,7 +93,7 @@ void FlameTexturePackModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJson void FlameTexturePackModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - FlameMod::loadIndexedPackVersions(m, arr, &m_base_instance); + FlameMod::loadIndexedPackVersions(m, arr); QVector filtered_versions(m.versions.size()); @@ -157,7 +157,7 @@ void FlameShaderPackModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJsonO void FlameShaderPackModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - FlameMod::loadIndexedPackVersions(m, arr, &m_base_instance); + FlameMod::loadIndexedPackVersions(m, arr); } bool FlameShaderPackModel::optedOut(const ModPlatform::IndexedVersion& ver) const diff --git a/launcher/ui/pages/modplatform/modrinth/ModrinthResourceModels.cpp b/launcher/ui/pages/modplatform/modrinth/ModrinthResourceModels.cpp index 856018294..213d6e39e 100644 --- a/launcher/ui/pages/modplatform/modrinth/ModrinthResourceModels.cpp +++ b/launcher/ui/pages/modplatform/modrinth/ModrinthResourceModels.cpp @@ -39,7 +39,7 @@ void ModrinthModModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJsonObjec void ModrinthModModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - ::Modrinth::loadIndexedPackVersions(m, arr, &m_base_instance); + ::Modrinth::loadIndexedPackVersions(m, arr); } auto ModrinthModModel::loadDependencyVersions(const ModPlatform::Dependency& m, QJsonArray& arr) -> ModPlatform::IndexedVersion @@ -66,7 +66,7 @@ void ModrinthResourcePackModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, Q void ModrinthResourcePackModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - ::Modrinth::loadIndexedPackVersions(m, arr, &m_base_instance); + ::Modrinth::loadIndexedPackVersions(m, arr); } auto ModrinthResourcePackModel::documentToArray(QJsonDocument& obj) const -> QJsonArray @@ -88,7 +88,7 @@ void ModrinthTexturePackModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJ void ModrinthTexturePackModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - ::Modrinth::loadIndexedPackVersions(m, arr, &m_base_instance); + ::Modrinth::loadIndexedPackVersions(m, arr); } auto ModrinthTexturePackModel::documentToArray(QJsonDocument& obj) const -> QJsonArray @@ -110,7 +110,7 @@ void ModrinthShaderPackModel::loadExtraPackInfo(ModPlatform::IndexedPack& m, QJs void ModrinthShaderPackModel::loadIndexedPackVersions(ModPlatform::IndexedPack& m, QJsonArray& arr) { - ::Modrinth::loadIndexedPackVersions(m, arr, &m_base_instance); + ::Modrinth::loadIndexedPackVersions(m, arr); } auto ModrinthShaderPackModel::documentToArray(QJsonDocument& obj) const -> QJsonArray From 8e33608ddbb92e586d452b212c09a0556516ad7f Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 1 Nov 2024 21:13:36 +0200 Subject: [PATCH 589/616] refactor FlameCheckUpdate to remove qEventLoop Signed-off-by: Trial97 --- launcher/modplatform/flame/FlameAPI.cpp | 51 --- launcher/modplatform/flame/FlameAPI.h | 12 +- .../modplatform/flame/FlameCheckUpdate.cpp | 313 +++++++++--------- launcher/modplatform/flame/FlameCheckUpdate.h | 11 +- 4 files changed, 173 insertions(+), 214 deletions(-) diff --git a/launcher/modplatform/flame/FlameAPI.cpp b/launcher/modplatform/flame/FlameAPI.cpp index 699eb792a..15eb7a696 100644 --- a/launcher/modplatform/flame/FlameAPI.cpp +++ b/launcher/modplatform/flame/FlameAPI.cpp @@ -102,57 +102,6 @@ QString FlameAPI::getModDescription(int modId) return description; } -QList FlameAPI::getLatestVersions(VersionSearchArgs&& args) -{ - auto versions_url_optional = getVersionsURL(args); - if (!versions_url_optional.has_value()) - return {}; - - auto versions_url = versions_url_optional.value(); - - QEventLoop loop; - - auto netJob = makeShared(QString("Flame::GetLatestVersion(%1)").arg(args.pack.name), APPLICATION->network()); - auto response = std::make_shared(); - QList ver; - - netJob->addNetAction(Net::ApiDownload::makeByteArray(versions_url, response)); - - QObject::connect(netJob.get(), &NetJob::succeeded, [response, args, &ver] { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response from latest mod version at " << parse_error.offset - << " reason: " << parse_error.errorString(); - qWarning() << *response; - return; - } - - try { - auto obj = Json::requireObject(doc); - auto arr = Json::requireArray(obj, "data"); - - for (auto file : arr) { - auto file_obj = Json::requireObject(file); - ver.append(FlameMod::loadIndexedPackVersion(file_obj)); - } - - } catch (Json::JsonException& e) { - qCritical() << "Failed to parse response from a version request."; - qCritical() << e.what(); - qDebug() << doc; - } - }); - - QObject::connect(netJob.get(), &NetJob::finished, &loop, &QEventLoop::quit); - - netJob->start(); - - loop.exec(); - - return ver; -} - Task::Ptr FlameAPI::getProjects(QStringList addonIds, std::shared_ptr response) const { auto netJob = makeShared(QString("Flame::GetProjects"), APPLICATION->network()); diff --git a/launcher/modplatform/flame/FlameAPI.h b/launcher/modplatform/flame/FlameAPI.h index 3ca0d5448..f85a08eb1 100644 --- a/launcher/modplatform/flame/FlameAPI.h +++ b/launcher/modplatform/flame/FlameAPI.h @@ -15,7 +15,6 @@ class FlameAPI : public NetworkResourceAPI { QString getModFileChangelog(int modId, int fileId); QString getModDescription(int modId); - QList getLatestVersions(VersionSearchArgs&& args); std::optional getLatestVersion(QList versions, QList instanceLoaders, ModPlatform::ModLoaderTypes fallback); @@ -108,12 +107,6 @@ class FlameAPI : public NetworkResourceAPI { return "https://api.curseforge.com/v1/mods/search?gameId=432&" + get_arguments.join('&'); } - private: - [[nodiscard]] std::optional getInfoURL(QString const& id) const override - { - return QString("https://api.curseforge.com/v1/mods/%1").arg(id); - } - [[nodiscard]] std::optional getVersionsURL(VersionSearchArgs const& args) const override { auto addonId = args.pack.addonId.toString(); @@ -129,6 +122,11 @@ class FlameAPI : public NetworkResourceAPI { return url; } + private: + [[nodiscard]] std::optional getInfoURL(QString const& id) const override + { + return QString("https://api.curseforge.com/v1/mods/%1").arg(id); + } [[nodiscard]] std::optional getDependencyURL(DependencySearchArgs const& args) const override { auto addonId = args.dependency.addonId.toString(); diff --git a/launcher/modplatform/flame/FlameCheckUpdate.cpp b/launcher/modplatform/flame/FlameCheckUpdate.cpp index 2b469276d..047813675 100644 --- a/launcher/modplatform/flame/FlameCheckUpdate.cpp +++ b/launcher/modplatform/flame/FlameCheckUpdate.cpp @@ -3,115 +3,31 @@ #include "FlameAPI.h" #include "FlameModIndex.h" -#include +#include #include #include "Json.h" +#include "QObjectPtr.h" #include "ResourceDownloadTask.h" -#include "minecraft/mod/ModFolderModel.h" #include "minecraft/mod/tasks/GetModDependenciesTask.h" +#include "modplatform/ModIndex.h" #include "net/ApiDownload.h" +#include "net/NetJob.h" +#include "tasks/Task.h" static FlameAPI api; bool FlameCheckUpdate::abort() { - m_was_aborted = true; - if (m_net_job) - return m_net_job->abort(); - return true; -} - -ModPlatform::IndexedPack FlameCheckUpdate::getProjectInfo(ModPlatform::IndexedVersion& ver_info) -{ - ModPlatform::IndexedPack pack; - - QEventLoop loop; - - auto get_project_job = new NetJob("Flame::GetProjectJob", APPLICATION->network()); - - auto response = std::make_shared(); - auto url = QString("https://api.curseforge.com/v1/mods/%1").arg(ver_info.addonId.toString()); - auto dl = Net::ApiDownload::makeByteArray(url, response); - get_project_job->addNetAction(dl); - - QObject::connect(get_project_job, &NetJob::succeeded, [response, &pack]() { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response from FlameCheckUpdate at " << parse_error.offset - << " reason: " << parse_error.errorString(); - qWarning() << *response; - return; - } - - try { - auto doc_obj = Json::requireObject(doc); - auto data_obj = Json::requireObject(doc_obj, "data"); - FlameMod::loadIndexedPack(pack, data_obj); - } catch (Json::JsonException& e) { - qWarning() << e.cause(); - qDebug() << doc; - } - }); - - connect(get_project_job, &NetJob::failed, this, &FlameCheckUpdate::emitFailed); - QObject::connect(get_project_job, &NetJob::finished, [&loop, get_project_job] { - get_project_job->deleteLater(); - loop.quit(); - }); - - get_project_job->start(); - loop.exec(); - - return pack; -} - -ModPlatform::IndexedVersion FlameCheckUpdate::getFileInfo(int addonId, int fileId) -{ - ModPlatform::IndexedVersion ver; - - QEventLoop loop; - - auto get_file_info_job = new NetJob("Flame::GetFileInfoJob", APPLICATION->network()); - - auto response = std::make_shared(); - auto url = QString("https://api.curseforge.com/v1/mods/%1/files/%2").arg(QString::number(addonId), QString::number(fileId)); - auto dl = Net::ApiDownload::makeByteArray(url, response); - get_file_info_job->addNetAction(dl); - - QObject::connect(get_file_info_job, &NetJob::succeeded, [response, &ver]() { - QJsonParseError parse_error{}; - QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); - if (parse_error.error != QJsonParseError::NoError) { - qWarning() << "Error while parsing JSON response from FlameCheckUpdate at " << parse_error.offset - << " reason: " << parse_error.errorString(); - qWarning() << *response; - return; - } - - try { - auto doc_obj = Json::requireObject(doc); - auto data_obj = Json::requireObject(doc_obj, "data"); - ver = FlameMod::loadIndexedPackVersion(data_obj); - } catch (Json::JsonException& e) { - qWarning() << e.cause(); - qDebug() << doc; - } - }); - connect(get_file_info_job, &NetJob::failed, this, &FlameCheckUpdate::emitFailed); - QObject::connect(get_file_info_job, &NetJob::finished, [&loop, get_file_info_job] { - get_file_info_job->deleteLater(); - loop.quit(); - }); - - get_file_info_job->start(); - loop.exec(); - - return ver; + bool result = false; + if (m_task && m_task->canAbort()) { + result = m_task->abort(); + } + Task::abort(); + return result; } /* Check for update: @@ -123,66 +39,163 @@ void FlameCheckUpdate::executeTask() { setStatus(tr("Preparing resources for CurseForge...")); - int i = 0; + auto netJob = new NetJob("Get latest versions", APPLICATION->network()); + connect(netJob, &Task::finished, this, &FlameCheckUpdate::collectBlockedMods); + + connect(netJob, &Task::progress, this, &FlameCheckUpdate::setProgress); + connect(netJob, &Task::stepProgress, this, &FlameCheckUpdate::propagateStepProgress); + connect(netJob, &Task::details, this, &FlameCheckUpdate::setDetails); for (auto* resource : m_resources) { - setStatus(tr("Getting API response from CurseForge for '%1'...").arg(resource->name())); - setProgress(i++, m_resources.size()); - - auto latest_vers = api.getLatestVersions({ { resource->metadata()->project_id.toString() }, m_game_versions }); - - // Check if we were aborted while getting the latest version - if (m_was_aborted) { - aborted(); - return; - } - auto latest_ver = api.getLatestVersion(latest_vers, m_loaders_list, resource->metadata()->loaders); - - setStatus(tr("Parsing the API response from CurseForge for '%1'...").arg(resource->name())); - - if (!latest_ver.has_value() || !latest_ver->addonId.isValid()) { - QString reason; - if (dynamic_cast(resource) != nullptr) - reason = - tr("No valid version found for this resource. It's probably unavailable for the current game " - "version / mod loader."); - else - reason = tr("No valid version found for this resource. It's probably unavailable for the current game version."); - - emit checkFailed(resource, reason); + auto versions_url_optional = api.getVersionsURL({ { resource->metadata()->project_id.toString() }, m_game_versions }); + if (!versions_url_optional.has_value()) continue; - } - if (latest_ver->downloadUrl.isEmpty() && latest_ver->fileId != resource->metadata()->file_id) { - auto pack = getProjectInfo(latest_ver.value()); - auto recover_url = QString("%1/download/%2").arg(pack.websiteUrl, latest_ver->fileId.toString()); - emit checkFailed(resource, tr("Resource has a new update available, but is not downloadable using CurseForge."), recover_url); + auto response = std::make_shared(); + auto task = Net::ApiDownload::makeByteArray(versions_url_optional.value(), response); - continue; - } + connect(task.get(), &Task::succeeded, this, [this, resource, response] { getLatestVersionCallback(resource, response); }); + netJob->addNetAction(task); + } + m_task.reset(netJob); + m_task->start(); +} - // Fake pack with the necessary info to pass to the download task :) - auto pack = std::make_shared(); - pack->name = resource->name(); - pack->slug = resource->metadata()->slug; - pack->addonId = resource->metadata()->project_id; - pack->provider = ModPlatform::ResourceProvider::FLAME; - if (!latest_ver->hash.isEmpty() && - (resource->metadata()->hash != latest_ver->hash || resource->status() == ResourceStatus::NOT_INSTALLED)) { - auto old_version = resource->metadata()->version_number; - if (old_version.isEmpty()) { - if (resource->status() == ResourceStatus::NOT_INSTALLED) - old_version = tr("Not installed"); - else - old_version = tr("Unknown"); - } - - auto download_task = makeShared(pack, latest_ver.value(), m_resource_model); - m_updates.emplace_back(pack->name, resource->metadata()->hash, old_version, latest_ver->version, latest_ver->version_type, - api.getModFileChangelog(latest_ver->addonId.toInt(), latest_ver->fileId.toInt()), - ModPlatform::ResourceProvider::FLAME, download_task, resource->enabled()); - } - m_deps.append(std::make_shared(pack, latest_ver.value())); +void FlameCheckUpdate::getLatestVersionCallback(Resource* resource, std::shared_ptr response) +{ + QJsonParseError parse_error{}; + QJsonDocument doc = QJsonDocument::fromJson(*response, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response from latest mod version at " << parse_error.offset + << " reason: " << parse_error.errorString(); + qWarning() << *response; + return; } - emitSucceeded(); + // Fake pack with the necessary info to pass to the download task :) + auto pack = std::make_shared(); + pack->name = resource->name(); + pack->slug = resource->metadata()->slug; + pack->addonId = resource->metadata()->project_id; + pack->provider = ModPlatform::ResourceProvider::FLAME; + try { + auto obj = Json::requireObject(doc); + auto arr = Json::requireArray(obj, "data"); + + FlameMod::loadIndexedPackVersions(*pack.get(), arr); + } catch (Json::JsonException& e) { + qCritical() << "Failed to parse response from a version request."; + qCritical() << e.what(); + qDebug() << doc; + } + auto latest_ver = api.getLatestVersion(pack->versions, m_loaders_list, resource->metadata()->loaders); + + setStatus(tr("Parsing the API response from CurseForge for '%1'...").arg(resource->name())); + + if (!latest_ver.has_value() || !latest_ver->addonId.isValid()) { + QString reason; + if (dynamic_cast(resource) != nullptr) + reason = + tr("No valid version found for this resource. It's probably unavailable for the current game " + "version / mod loader."); + else + reason = tr("No valid version found for this resource. It's probably unavailable for the current game version."); + + emit checkFailed(resource, reason); + return; + } + + if (latest_ver->downloadUrl.isEmpty() && latest_ver->fileId != resource->metadata()->file_id) { + m_blocked[resource] = latest_ver->fileId.toString(); + return; + } + + if (!latest_ver->hash.isEmpty() && + (resource->metadata()->hash != latest_ver->hash || resource->status() == ResourceStatus::NOT_INSTALLED)) { + auto old_version = resource->metadata()->version_number; + if (old_version.isEmpty()) { + if (resource->status() == ResourceStatus::NOT_INSTALLED) + old_version = tr("Not installed"); + else + old_version = tr("Unknown"); + } + + auto download_task = makeShared(pack, latest_ver.value(), m_resource_model); + m_updates.emplace_back(pack->name, resource->metadata()->hash, old_version, latest_ver->version, latest_ver->version_type, + api.getModFileChangelog(latest_ver->addonId.toInt(), latest_ver->fileId.toInt()), + ModPlatform::ResourceProvider::FLAME, download_task, resource->enabled()); + } + m_deps.append(std::make_shared(pack, latest_ver.value())); } + +void FlameCheckUpdate::collectBlockedMods() +{ + QStringList addonIds; + QHash quickSearch; + for (auto const& resource : m_blocked.keys()) { + auto addonId = resource->metadata()->project_id.toString(); + addonIds.append(addonId); + quickSearch[addonId] = resource; + } + + auto response = std::make_shared(); + Task::Ptr projTask; + + if (addonIds.isEmpty()) { + emitSucceeded(); + return; + } else if (addonIds.size() == 1) { + projTask = api.getProject(*addonIds.begin(), response); + } else { + projTask = api.getProjects(addonIds, response); + } + + connect(projTask.get(), &Task::succeeded, this, [this, response, addonIds, quickSearch] { + QJsonParseError parse_error{}; + auto doc = QJsonDocument::fromJson(*response, &parse_error); + if (parse_error.error != QJsonParseError::NoError) { + qWarning() << "Error while parsing JSON response from Flame projects task at " << parse_error.offset + << " reason: " << parse_error.errorString(); + qWarning() << *response; + return; + } + + try { + QJsonArray entries; + if (addonIds.size() == 1) + entries = { Json::requireObject(Json::requireObject(doc), "data") }; + else + entries = Json::requireArray(Json::requireObject(doc), "data"); + + for (auto entry : entries) { + auto entry_obj = Json::requireObject(entry); + + auto id = QString::number(Json::requireInteger(entry_obj, "id")); + + auto resource = quickSearch.find(id).value(); + + ModPlatform::IndexedPack pack; + try { + setStatus(tr("Parsing API response from CurseForge for '%1'...").arg(resource->name())); + + FlameMod::loadIndexedPack(pack, entry_obj); + auto recover_url = QString("%1/download/%2").arg(pack.websiteUrl, m_blocked[resource]); + emit checkFailed(resource, tr("Resource has a new update available, but is not downloadable using CurseForge."), + recover_url); + } catch (Json::JsonException& e) { + qDebug() << e.cause(); + qDebug() << entries; + } + } + } catch (Json::JsonException& e) { + qDebug() << e.cause(); + qDebug() << doc; + } + }); + + connect(projTask.get(), &Task::finished, this, &FlameCheckUpdate::emitSucceeded); // do not care much about error + connect(projTask.get(), &Task::progress, this, &FlameCheckUpdate::setProgress); + connect(projTask.get(), &Task::stepProgress, this, &FlameCheckUpdate::propagateStepProgress); + connect(projTask.get(), &Task::details, this, &FlameCheckUpdate::setDetails); + m_task.reset(projTask); + m_task->start(); +} \ No newline at end of file diff --git a/launcher/modplatform/flame/FlameCheckUpdate.h b/launcher/modplatform/flame/FlameCheckUpdate.h index 6543a0e04..eb80ce47c 100644 --- a/launcher/modplatform/flame/FlameCheckUpdate.h +++ b/launcher/modplatform/flame/FlameCheckUpdate.h @@ -1,7 +1,6 @@ #pragma once #include "modplatform/CheckUpdateTask.h" -#include "net/NetJob.h" class FlameCheckUpdate : public CheckUpdateTask { Q_OBJECT @@ -19,12 +18,12 @@ class FlameCheckUpdate : public CheckUpdateTask { protected slots: void executeTask() override; + private slots: + void getLatestVersionCallback(Resource* resource, std::shared_ptr response); + void collectBlockedMods(); private: - ModPlatform::IndexedPack getProjectInfo(ModPlatform::IndexedVersion& ver_info); - ModPlatform::IndexedVersion getFileInfo(int addonId, int fileId); + Task::Ptr m_task = nullptr; - NetJob* m_net_job = nullptr; - - bool m_was_aborted = false; + QHash m_blocked; }; From 4dd026d1ae0c97bc0fe48ff35ba1550cb0e98800 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 1 Nov 2024 21:58:41 +0200 Subject: [PATCH 590/616] QList to QVector Signed-off-by: Trial97 --- launcher/modplatform/flame/FlameAPI.cpp | 2 +- launcher/modplatform/flame/FlameAPI.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/modplatform/flame/FlameAPI.cpp b/launcher/modplatform/flame/FlameAPI.cpp index 15eb7a696..a06793de0 100644 --- a/launcher/modplatform/flame/FlameAPI.cpp +++ b/launcher/modplatform/flame/FlameAPI.cpp @@ -215,7 +215,7 @@ QList FlameAPI::loadModCategories(std::shared_ptr FlameAPI::getLatestVersion(QList versions, +std::optional FlameAPI::getLatestVersion(QVector versions, QList instanceLoaders, ModPlatform::ModLoaderTypes modLoaders) { diff --git a/launcher/modplatform/flame/FlameAPI.h b/launcher/modplatform/flame/FlameAPI.h index f85a08eb1..509e1abcd 100644 --- a/launcher/modplatform/flame/FlameAPI.h +++ b/launcher/modplatform/flame/FlameAPI.h @@ -15,7 +15,7 @@ class FlameAPI : public NetworkResourceAPI { QString getModFileChangelog(int modId, int fileId); QString getModDescription(int modId); - std::optional getLatestVersion(QList versions, + std::optional getLatestVersion(QVector versions, QList instanceLoaders, ModPlatform::ModLoaderTypes fallback); From cb77cc1219e6952724d83ec59af2a17b2309ccf5 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 3 Mar 2025 20:24:07 +0000 Subject: [PATCH 591/616] Use refresh instead of requestRefresh on LaunchController::login There should be no reason to queue it and it could cause problems with the launcher's rate limiting Signed-off-by: TheKodeToad --- launcher/LaunchController.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index 03f2d28d9..ce9ce89d0 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -200,8 +200,7 @@ void LaunchController::login() m_accountToUse->shouldRefresh()) { // Force account refresh on the account used to launch the instance updating the AccountState // only on first try and if it is not meant to be offline - auto accounts = APPLICATION->accounts(); - accounts->requestRefresh(m_accountToUse->internalId()); + m_accountToUse->refresh(); } while (tryagain) { if (tries > 0 && tries % 3 == 0) { From 162bbcfe19e67f23bf8d21142fdad253500a3b64 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 3 Mar 2025 23:55:43 +0200 Subject: [PATCH 592/616] rename some variables Signed-off-by: Trial97 --- launcher/Application.cpp | 2 +- launcher/Application.h | 4 +- launcher/minecraft/auth/steps/MSAStep.cpp | 48 +++++++++++------------ launcher/minecraft/auth/steps/MSAStep.h | 2 +- 4 files changed, 28 insertions(+), 28 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 6f675dcee..e221aef0d 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -225,7 +225,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) setApplicationDisplayName(QString("%1 %2").arg(BuildConfig.LAUNCHER_DISPLAYNAME, BuildConfig.printableVersionString())); setApplicationVersion(BuildConfig.printableVersionString() + "\n" + BuildConfig.GIT_COMMIT); setDesktopFileName(BuildConfig.LAUNCHER_DESKTOPFILENAME); - startTime = QDateTime::currentDateTime(); + m_startTime = QDateTime::currentDateTime(); // Don't quit on hiding the last window this->setQuitOnLastWindowClosed(false); diff --git a/launcher/Application.h b/launcher/Application.h index dad76d702..12f41509c 100644 --- a/launcher/Application.h +++ b/launcher/Application.h @@ -112,7 +112,7 @@ class Application : public QApplication { std::shared_ptr settings() const { return m_settings; } - qint64 timeSinceStart() const { return startTime.msecsTo(QDateTime::currentDateTime()); } + qint64 timeSinceStart() const { return m_startTime.msecsTo(QDateTime::currentDateTime()); } QIcon getThemedIcon(const QString& name); @@ -237,7 +237,7 @@ class Application : public QApplication { bool shouldExitNow() const; private: - QDateTime startTime; + QDateTime m_startTime; shared_qobject_ptr m_network; diff --git a/launcher/minecraft/auth/steps/MSAStep.cpp b/launcher/minecraft/auth/steps/MSAStep.cpp index 151ee4e68..87a0f8f08 100644 --- a/launcher/minecraft/auth/steps/MSAStep.cpp +++ b/launcher/minecraft/auth/steps/MSAStep.cpp @@ -99,29 +99,29 @@ MSAStep::MSAStep(AccountData* data, bool silent) : AuthStep(data), m_silent(sile )XXX") .arg(BuildConfig.LOGIN_CALLBACK_URL)); - oauth2.setReplyHandler(replyHandler); + m_oauth2.setReplyHandler(replyHandler); } else { - oauth2.setReplyHandler(new CustomOAuthOobReplyHandler(this)); + m_oauth2.setReplyHandler(new CustomOAuthOobReplyHandler(this)); } - oauth2.setAuthorizationUrl(QUrl("https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize")); - oauth2.setAccessTokenUrl(QUrl("https://login.microsoftonline.com/consumers/oauth2/v2.0/token")); - oauth2.setScope("XboxLive.SignIn XboxLive.offline_access"); - oauth2.setClientIdentifier(m_clientId); - oauth2.setNetworkAccessManager(APPLICATION->network().get()); + m_oauth2.setAuthorizationUrl(QUrl("https://login.microsoftonline.com/consumers/oauth2/v2.0/authorize")); + m_oauth2.setAccessTokenUrl(QUrl("https://login.microsoftonline.com/consumers/oauth2/v2.0/token")); + m_oauth2.setScope("XboxLive.SignIn XboxLive.offline_access"); + m_oauth2.setClientIdentifier(m_clientId); + m_oauth2.setNetworkAccessManager(APPLICATION->network().get()); - connect(&oauth2, &QOAuth2AuthorizationCodeFlow::granted, this, [this] { - m_data->msaClientID = oauth2.clientIdentifier(); + connect(&m_oauth2, &QOAuth2AuthorizationCodeFlow::granted, this, [this] { + m_data->msaClientID = m_oauth2.clientIdentifier(); m_data->msaToken.issueInstant = QDateTime::currentDateTimeUtc(); - m_data->msaToken.notAfter = oauth2.expirationAt(); - m_data->msaToken.extra = oauth2.extraTokens(); - m_data->msaToken.refresh_token = oauth2.refreshToken(); - m_data->msaToken.token = oauth2.token(); + m_data->msaToken.notAfter = m_oauth2.expirationAt(); + m_data->msaToken.extra = m_oauth2.extraTokens(); + m_data->msaToken.refresh_token = m_oauth2.refreshToken(); + m_data->msaToken.token = m_oauth2.token(); emit finished(AccountTaskState::STATE_WORKING, tr("Got ")); }); - connect(&oauth2, &QOAuth2AuthorizationCodeFlow::authorizeWithBrowser, this, &MSAStep::authorizeWithBrowser); - connect(&oauth2, &QOAuth2AuthorizationCodeFlow::requestFailed, this, [this, silent](const QAbstractOAuth2::Error err) { + connect(&m_oauth2, &QOAuth2AuthorizationCodeFlow::authorizeWithBrowser, this, &MSAStep::authorizeWithBrowser); + connect(&m_oauth2, &QOAuth2AuthorizationCodeFlow::requestFailed, this, [this, silent](const QAbstractOAuth2::Error err) { auto state = AccountTaskState::STATE_FAILED_HARD; - if (oauth2.status() == QAbstractOAuth::Status::Granted || silent) { + if (m_oauth2.status() == QAbstractOAuth::Status::Granted || silent) { if (err == QAbstractOAuth2::Error::NetworkError) { state = AccountTaskState::STATE_OFFLINE; } else { @@ -135,16 +135,16 @@ MSAStep::MSAStep(AccountData* data, bool silent) : AuthStep(data), m_silent(sile qWarning() << message; emit finished(state, message); }); - connect(&oauth2, &QOAuth2AuthorizationCodeFlow::error, this, + connect(&m_oauth2, &QOAuth2AuthorizationCodeFlow::error, this, [this](const QString& error, const QString& errorDescription, const QUrl& uri) { qWarning() << "Failed to login because" << error << errorDescription; emit finished(AccountTaskState::STATE_FAILED_HARD, errorDescription); }); - connect(&oauth2, &QOAuth2AuthorizationCodeFlow::extraTokensChanged, this, + connect(&m_oauth2, &QOAuth2AuthorizationCodeFlow::extraTokensChanged, this, [this](const QVariantMap& tokens) { m_data->msaToken.extra = tokens; }); - connect(&oauth2, &QOAuth2AuthorizationCodeFlow::clientIdentifierChanged, this, + connect(&m_oauth2, &QOAuth2AuthorizationCodeFlow::clientIdentifierChanged, this, [this](const QString& clientIdentifier) { m_data->msaClientID = clientIdentifier; }); } @@ -165,20 +165,20 @@ void MSAStep::perform() emit finished(AccountTaskState::STATE_DISABLED, tr("Microsoft user authentication failed - refresh token is empty.")); return; } - oauth2.setRefreshToken(m_data->msaToken.refresh_token); - oauth2.refreshAccessToken(); + m_oauth2.setRefreshToken(m_data->msaToken.refresh_token); + m_oauth2.refreshAccessToken(); } else { #if QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) // QMultiMap param changed in 6.0 - oauth2.setModifyParametersFunction( + m_oauth2.setModifyParametersFunction( [](QAbstractOAuth::Stage stage, QMultiMap* map) { map->insert("prompt", "select_account"); }); #else - oauth2.setModifyParametersFunction( + m_oauth2.setModifyParametersFunction( [](QAbstractOAuth::Stage stage, QMap* map) { map->insert("prompt", "select_account"); }); #endif *m_data = AccountData(); m_data->msaClientID = m_clientId; - oauth2.grant(); + m_oauth2.grant(); } } diff --git a/launcher/minecraft/auth/steps/MSAStep.h b/launcher/minecraft/auth/steps/MSAStep.h index 675cfb2ca..2f4e7812b 100644 --- a/launcher/minecraft/auth/steps/MSAStep.h +++ b/launcher/minecraft/auth/steps/MSAStep.h @@ -55,5 +55,5 @@ class MSAStep : public AuthStep { private: bool m_silent; QString m_clientId; - QOAuth2AuthorizationCodeFlow oauth2; + QOAuth2AuthorizationCodeFlow m_oauth2; }; From 7db717ee7c503aef3f3b70bbc4becb8c20485897 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 3 Mar 2025 23:36:03 +0200 Subject: [PATCH 593/616] fix null mainwindow in case of login on setup Signed-off-by: Trial97 --- launcher/Application.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index e221aef0d..06e85a5de 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1177,6 +1177,9 @@ bool Application::event(QEvent* event) #endif if (event->type() == QEvent::FileOpen) { + if (!m_mainWindow) { + showMainWindow(false); + } auto ev = static_cast(event); m_mainWindow->processURLs({ ev->url() }); } @@ -1310,6 +1313,9 @@ void Application::messageReceived(const QByteArray& message) qWarning() << "Received" << command << "message without a zip path/URL."; return; } + if (!m_mainWindow) { + showMainWindow(false); + } m_mainWindow->processURLs({ normalizeImportUrl(url) }); } else if (command == "launch") { QString id = received.args["id"]; From c441ae05df58eecf315c1379962a59d52c263f14 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 5 Mar 2025 13:06:29 +0200 Subject: [PATCH 594/616] fix beginResetModel called before endResetModel Signed-off-by: Trial97 --- launcher/VersionProxyModel.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/VersionProxyModel.cpp b/launcher/VersionProxyModel.cpp index 12a82f73d..7538ce08c 100644 --- a/launcher/VersionProxyModel.cpp +++ b/launcher/VersionProxyModel.cpp @@ -307,6 +307,7 @@ void VersionProxyModel::setSourceModel(QAbstractItemModel* replacingRaw) if (!replacing) { roles.clear(); filterModel->setSourceModel(replacing); + endResetModel(); return; } From 59a816c696c7e825bf677e8b0a3bdc4c8e9b81c2 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 6 Mar 2025 10:16:53 +0200 Subject: [PATCH 595/616] fix duplicate optional mods dialog appearing when updating a modpack Signed-off-by: Trial97 tmp --- .../flame/FlameInstanceCreationTask.cpp | 5 +++ .../modrinth/ModrinthInstanceCreationTask.cpp | 44 ++++++++++++------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 6073e90a2..16d47f64a 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -227,6 +227,11 @@ bool FlameCreationTask::updateInstance() QString relative_path(FS::PathCombine(file.targetFolder, file.version.fileName)); qDebug() << "Scheduling" << relative_path << "for removal"; m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(relative_path)); + if (relative_path.endsWith(".disabled")) { // remove it if it was enabled/disabled by user + m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(relative_path.chopped(9))); + } else { + m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(relative_path + ".disabled")); + } } }); connect(job.get(), &Task::failed, this, [](QString reason) { qCritical() << "Failed to get files: " << reason; }); diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index 2cc8767a4..374b7681e 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -121,6 +121,11 @@ bool ModrinthCreationTask::updateInstance() continue; qDebug() << "Scheduling" << file.path << "for removal"; m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(file.path)); + if (file.path.endsWith(".disabled")) { // remove it if it was enabled/disabled by user + m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(file.path.chopped(9))); + } else { + m_files_to_remove.append(old_minecraft_dir.absoluteFilePath(file.path + ".disabled")); + } } } @@ -416,23 +421,30 @@ bool ModrinthCreationTask::parseManifest(const QString& index_path, } if (!optionalFiles.empty()) { - QStringList oFiles; - for (auto file : optionalFiles) - oFiles.push_back(file.path); - OptionalModDialog optionalModDialog(m_parent, oFiles); - if (optionalModDialog.exec() == QDialog::Rejected) { - emitAborted(); - return false; - } - - auto selectedMods = optionalModDialog.getResult(); - for (auto file : optionalFiles) { - if (selectedMods.contains(file.path)) { - file.required = true; - } else { - file.path += ".disabled"; + if (show_optional_dialog) { + QStringList oFiles; + for (auto file : optionalFiles) + oFiles.push_back(file.path); + OptionalModDialog optionalModDialog(m_parent, oFiles); + if (optionalModDialog.exec() == QDialog::Rejected) { + emitAborted(); + return false; + } + + auto selectedMods = optionalModDialog.getResult(); + for (auto file : optionalFiles) { + if (selectedMods.contains(file.path)) { + file.required = true; + } else { + file.path += ".disabled"; + } + files.push_back(file); + } + } else { + for (auto file : optionalFiles) { + file.path += ".disabled"; + files.push_back(file); } - files.push_back(file); } } if (set_internal_data) { From ffdf1f746e903ebff926c8c7e3314ff651295423 Mon Sep 17 00:00:00 2001 From: Echo J Date: Fri, 7 Mar 2025 10:52:48 +0200 Subject: [PATCH 596/616] Remove .desktop suffix from application ID Signed-off-by: Echo J --- launcher/ui/MainWindow.cpp | 4 +--- program_info/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 33c49b981..526e359f6 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -1587,9 +1587,7 @@ void MainWindow::on_actionCreateInstanceShortcut_triggered() if (desktopFilePath.isEmpty()) return; // file dialog canceled by user appPath = "flatpak"; - QString flatpakAppId = BuildConfig.LAUNCHER_DESKTOPFILENAME; - flatpakAppId.remove(".desktop"); - args.append({ "run", flatpakAppId }); + args.append({ "run", BuildConfig.LAUNCHER_DESKTOPFILENAME }); } #elif defined(Q_OS_WIN) diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index 5108730a5..fd274d420 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -21,7 +21,7 @@ set(Launcher_Domain "prismlauncher.org" PARENT_SCOPE) set(Launcher_UserAgent "${Launcher_CommonName}/${Launcher_VERSION_NAME}" PARENT_SCOPE) set(Launcher_ConfigFile "prismlauncher.cfg" PARENT_SCOPE) set(Launcher_Git "https://github.com/PrismLauncher/PrismLauncher" PARENT_SCOPE) -set(Launcher_DesktopFileName "org.prismlauncher.PrismLauncher.desktop" PARENT_SCOPE) +set(Launcher_DesktopFileName "org.prismlauncher.PrismLauncher" PARENT_SCOPE) set(Launcher_SVGFileName "org.prismlauncher.PrismLauncher.svg" PARENT_SCOPE) set(Launcher_Desktop "program_info/org.prismlauncher.PrismLauncher.desktop" PARENT_SCOPE) From 14ab4055ffe370b941e231abf5f4e105ee173842 Mon Sep 17 00:00:00 2001 From: Echo J Date: Fri, 7 Mar 2025 11:21:20 +0200 Subject: [PATCH 597/616] Reduce app ID hardcoding And rename the relevant build variable to make more sense Signed-off-by: Echo J --- buildconfig/BuildConfig.cpp.in | 2 +- buildconfig/BuildConfig.h | 2 +- launcher/Application.cpp | 4 +-- launcher/CMakeLists.txt | 4 +-- launcher/ui/MainWindow.cpp | 2 +- program_info/CMakeLists.txt | 18 ++++++---- program_info/genicons.sh | 36 ++++++++++--------- ...rismlauncher.PrismLauncher.metainfo.xml.in | 4 +-- ...prismlauncher.qrc => prismlauncher.qrc.in} | 2 +- 9 files changed, 40 insertions(+), 34 deletions(-) rename program_info/{prismlauncher.qrc => prismlauncher.qrc.in} (60%) diff --git a/buildconfig/BuildConfig.cpp.in b/buildconfig/BuildConfig.cpp.in index b48232b43..2124d02ae 100644 --- a/buildconfig/BuildConfig.cpp.in +++ b/buildconfig/BuildConfig.cpp.in @@ -49,7 +49,7 @@ Config::Config() LAUNCHER_DOMAIN = "@Launcher_Domain@"; LAUNCHER_CONFIGFILE = "@Launcher_ConfigFile@"; LAUNCHER_GIT = "@Launcher_Git@"; - LAUNCHER_DESKTOPFILENAME = "@Launcher_DesktopFileName@"; + LAUNCHER_APPID = "@Launcher_AppID@"; LAUNCHER_SVGFILENAME = "@Launcher_SVGFileName@"; USER_AGENT = "@Launcher_UserAgent@"; diff --git a/buildconfig/BuildConfig.h b/buildconfig/BuildConfig.h index ae705d098..099d9b5ca 100644 --- a/buildconfig/BuildConfig.h +++ b/buildconfig/BuildConfig.h @@ -52,7 +52,7 @@ class Config { QString LAUNCHER_DOMAIN; QString LAUNCHER_CONFIGFILE; QString LAUNCHER_GIT; - QString LAUNCHER_DESKTOPFILENAME; + QString LAUNCHER_APPID; QString LAUNCHER_SVGFILENAME; /// The major version number. diff --git a/launcher/Application.cpp b/launcher/Application.cpp index c86b4c7c6..c3477d331 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -225,7 +225,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) setApplicationName(BuildConfig.LAUNCHER_NAME); setApplicationDisplayName(QString("%1 %2").arg(BuildConfig.LAUNCHER_DISPLAYNAME, BuildConfig.printableVersionString())); setApplicationVersion(BuildConfig.printableVersionString() + "\n" + BuildConfig.GIT_COMMIT); - setDesktopFileName(BuildConfig.LAUNCHER_DESKTOPFILENAME); + setDesktopFileName(BuildConfig.LAUNCHER_APPID); m_startTime = QDateTime::currentDateTime(); // Don't quit on hiding the last window @@ -1949,4 +1949,4 @@ bool Application::checkQSavePath(QString path) } } return false; -} \ No newline at end of file +} diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 6714631c3..56fc4d1ad 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -811,7 +811,7 @@ SET(LAUNCHER_SOURCES resources/flat_white/flat_white.qrc resources/documents/documents.qrc resources/shaders/shaders.qrc - ../${Launcher_Branding_LogoQRC} + "${CMAKE_CURRENT_BINARY_DIR}/../${Launcher_Branding_LogoQRC}" # Icons icons/MMCIcon.h @@ -1248,7 +1248,7 @@ qt_add_resources(LAUNCHER_RESOURCES resources/flat/flat.qrc resources/documents/documents.qrc resources/shaders/shaders.qrc - ../${Launcher_Branding_LogoQRC} + "${CMAKE_CURRENT_BINARY_DIR}/../${Launcher_Branding_LogoQRC}" ) qt_wrap_ui(PRISMUPDATER_UI diff --git a/launcher/ui/MainWindow.cpp b/launcher/ui/MainWindow.cpp index 526e359f6..a9473ac15 100644 --- a/launcher/ui/MainWindow.cpp +++ b/launcher/ui/MainWindow.cpp @@ -1587,7 +1587,7 @@ void MainWindow::on_actionCreateInstanceShortcut_triggered() if (desktopFilePath.isEmpty()) return; // file dialog canceled by user appPath = "flatpak"; - args.append({ "run", BuildConfig.LAUNCHER_DESKTOPFILENAME }); + args.append({ "run", BuildConfig.LAUNCHER_APPID }); } #elif defined(Q_OS_WIN) diff --git a/program_info/CMakeLists.txt b/program_info/CMakeLists.txt index fd274d420..db6920e20 100644 --- a/program_info/CMakeLists.txt +++ b/program_info/CMakeLists.txt @@ -14,6 +14,8 @@ set(Launcher_DisplayName "Prism Launcher") set(Launcher_Name "${Launcher_CommonName}" PARENT_SCOPE) set(Launcher_DisplayName "${Launcher_DisplayName}" PARENT_SCOPE) +set(Launcher_AppID "org.prismlauncher.PrismLauncher") +set(Launcher_SVGFileName "${Launcher_AppID}.svg") set(Launcher_Copyright "© 2022-2025 Prism Launcher Contributors\\n© 2021-2022 PolyMC Contributors\\n© 2012-2021 MultiMC Contributors") set(Launcher_Copyright_Mac "© 2022-2025 Prism Launcher Contributors, © 2021-2022 PolyMC Contributors and © 2012-2021 MultiMC Contributors" PARENT_SCOPE) set(Launcher_Copyright "${Launcher_Copyright}" PARENT_SCOPE) @@ -21,13 +23,13 @@ set(Launcher_Domain "prismlauncher.org" PARENT_SCOPE) set(Launcher_UserAgent "${Launcher_CommonName}/${Launcher_VERSION_NAME}" PARENT_SCOPE) set(Launcher_ConfigFile "prismlauncher.cfg" PARENT_SCOPE) set(Launcher_Git "https://github.com/PrismLauncher/PrismLauncher" PARENT_SCOPE) -set(Launcher_DesktopFileName "org.prismlauncher.PrismLauncher" PARENT_SCOPE) -set(Launcher_SVGFileName "org.prismlauncher.PrismLauncher.svg" PARENT_SCOPE) +set(Launcher_AppID "${Launcher_AppID}" PARENT_SCOPE) +set(Launcher_SVGFileName "${Launcher_SVGFileName}" PARENT_SCOPE) -set(Launcher_Desktop "program_info/org.prismlauncher.PrismLauncher.desktop" PARENT_SCOPE) +set(Launcher_Desktop "program_info/${Launcher_AppID}.desktop" PARENT_SCOPE) set(Launcher_mrpack_MIMEInfo "program_info/modrinth-mrpack-mime.xml" PARENT_SCOPE) -set(Launcher_MetaInfo "program_info/org.prismlauncher.PrismLauncher.metainfo.xml" PARENT_SCOPE) -set(Launcher_SVG "program_info/org.prismlauncher.PrismLauncher.svg" PARENT_SCOPE) +set(Launcher_MetaInfo "program_info/${Launcher_AppID}.metainfo.xml" PARENT_SCOPE) +set(Launcher_SVG "program_info/${Launcher_SVGFileName}" PARENT_SCOPE) set(Launcher_Branding_ICNS "program_info/prismlauncher.icns" PARENT_SCOPE) set(Launcher_Branding_ICO "program_info/prismlauncher.ico") set(Launcher_Branding_ICO "${Launcher_Branding_ICO}" PARENT_SCOPE) @@ -36,11 +38,13 @@ set(Launcher_Branding_LogoQRC "program_info/prismlauncher.qrc" PARENT_SCOPE) set(Launcher_Portable_File "program_info/portable.txt" PARENT_SCOPE) -configure_file(org.prismlauncher.PrismLauncher.desktop.in org.prismlauncher.PrismLauncher.desktop) -configure_file(org.prismlauncher.PrismLauncher.metainfo.xml.in org.prismlauncher.PrismLauncher.metainfo.xml) +configure_file(${Launcher_AppID}.desktop.in ${Launcher_AppID}.desktop) +configure_file(${Launcher_AppID}.metainfo.xml.in ${Launcher_AppID}.metainfo.xml) configure_file(prismlauncher.rc.in prismlauncher.rc @ONLY) +configure_file(prismlauncher.qrc.in prismlauncher.qrc @ONLY) configure_file(prismlauncher.manifest.in prismlauncher.manifest @ONLY) configure_file(prismlauncher.ico prismlauncher.ico COPYONLY) +configure_file(${Launcher_SVGFileName} ${Launcher_SVGFileName} COPYONLY) if(MSVC) set(Launcher_MSVC_Redist_NSIS_Section [=[ diff --git a/program_info/genicons.sh b/program_info/genicons.sh index cad811822..b62cf4f16 100755 --- a/program_info/genicons.sh +++ b/program_info/genicons.sh @@ -1,5 +1,7 @@ #!/bin/bash +LAUNCHER_APPID="org.prismlauncher.PrismLauncher" + svg2png() { input_file="$1" output_file="$2" @@ -13,13 +15,13 @@ if command -v "inkscape" && command -v "icotool" && command -v "oxipng"; then # Windows ICO d=$(mktemp -d) - svg2png org.prismlauncher.PrismLauncher.svg "$d/prismlauncher_16.png" 16 16 - svg2png org.prismlauncher.PrismLauncher.svg "$d/prismlauncher_24.png" 24 24 - svg2png org.prismlauncher.PrismLauncher.svg "$d/prismlauncher_32.png" 32 32 - svg2png org.prismlauncher.PrismLauncher.svg "$d/prismlauncher_48.png" 48 48 - svg2png org.prismlauncher.PrismLauncher.svg "$d/prismlauncher_64.png" 64 64 - svg2png org.prismlauncher.PrismLauncher.svg "$d/prismlauncher_128.png" 128 128 - svg2png org.prismlauncher.PrismLauncher.svg "$d/prismlauncher_256.png" 256 256 + svg2png ${LAUNCHER_APPID}.svg "$d/prismlauncher_16.png" 16 16 + svg2png ${LAUNCHER_APPID}.svg "$d/prismlauncher_24.png" 24 24 + svg2png ${LAUNCHER_APPID}.svg "$d/prismlauncher_32.png" 32 32 + svg2png ${LAUNCHER_APPID}.svg "$d/prismlauncher_48.png" 48 48 + svg2png ${LAUNCHER_APPID}.svg "$d/prismlauncher_64.png" 64 64 + svg2png ${LAUNCHER_APPID}.svg "$d/prismlauncher_128.png" 128 128 + svg2png ${LAUNCHER_APPID}.svg "$d/prismlauncher_256.png" 256 256 oxipng --opt max --strip all --alpha --interlace 0 "$d/prismlauncher_"*".png" @@ -44,15 +46,15 @@ if command -v "inkscape" && command -v "iconutil" && command -v "oxipng"; then mkdir -p "$d" - svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_16x16.png" 16 16 - svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_16x16@2.png" 32 32 - svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_32x32.png" 32 32 - svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_32x32@2.png" 64 64 - svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_128x128.png" 128 128 - svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_128x128@2.png" 256 256 - svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_256x256.png" 256 256 - svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_256x256@2.png" 512 512 - svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_512x512@2x.png" 1024 1024 + svg2png ${LAUNCHER_APPID}.bigsur.svg "$d/icon_16x16.png" 16 16 + svg2png ${LAUNCHER_APPID}.bigsur.svg "$d/icon_16x16@2.png" 32 32 + svg2png ${LAUNCHER_APPID}.bigsur.svg "$d/icon_32x32.png" 32 32 + svg2png ${LAUNCHER_APPID}.bigsur.svg "$d/icon_32x32@2.png" 64 64 + svg2png ${LAUNCHER_APPID}.bigsur.svg "$d/icon_128x128.png" 128 128 + svg2png ${LAUNCHER_APPID}.bigsur.svg "$d/icon_128x128@2.png" 256 256 + svg2png ${LAUNCHER_APPID}.bigsur.svg "$d/icon_256x256.png" 256 256 + svg2png ${LAUNCHER_APPID}.bigsur.svg "$d/icon_256x256@2.png" 512 512 + svg2png ${LAUNCHER_APPID}.bigsur.svg "$d/icon_512x512@2x.png" 1024 1024 oxipng --opt max --strip all --alpha --interlace 0 "$d/icon_"*".png" @@ -63,4 +65,4 @@ else fi # replace icon in themes -cp -v org.prismlauncher.PrismLauncher.svg "../launcher/resources/multimc/scalable/launcher.svg" +cp -v ${LAUNCHER_APPID}.svg "../launcher/resources/multimc/scalable/launcher.svg" diff --git a/program_info/org.prismlauncher.PrismLauncher.metainfo.xml.in b/program_info/org.prismlauncher.PrismLauncher.metainfo.xml.in index 3c542c060..95bb86a27 100644 --- a/program_info/org.prismlauncher.PrismLauncher.metainfo.xml.in +++ b/program_info/org.prismlauncher.PrismLauncher.metainfo.xml.in @@ -1,7 +1,7 @@ - org.prismlauncher.PrismLauncher - org.prismlauncher.PrismLauncher.desktop + @Launcher_AppID@ + @Launcher_AppID@.desktop Prism Launcher Prism Launcher Contributors Custom Minecraft Launcher to easily manage multiple Minecraft installations at once diff --git a/program_info/prismlauncher.qrc b/program_info/prismlauncher.qrc.in similarity index 60% rename from program_info/prismlauncher.qrc rename to program_info/prismlauncher.qrc.in index 4f326c2bc..d1e1cdd13 100644 --- a/program_info/prismlauncher.qrc +++ b/program_info/prismlauncher.qrc.in @@ -1,6 +1,6 @@ - org.prismlauncher.PrismLauncher.svg + @Launcher_AppID@.svg From fde2f4afe92fcbf194259a5bc9750ba338616659 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Mon, 10 Mar 2025 12:44:44 +0000 Subject: [PATCH 598/616] Fix mistakes Signed-off-by: TheKodeToad --- launcher/LaunchController.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp index ce9ce89d0..07047bf67 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -278,6 +278,10 @@ void LaunchController::login() return; } } + + if (m_accountToUse->accountType() == AccountType::Offline) + m_session->wants_online = false; + // we own Minecraft, there is a profile, it's all ready to go! launchInstance(); return; @@ -304,7 +308,8 @@ void LaunchController::login() return; } case AccountState::Disabled: { - auto errorString = tr("The launcher's client identification has changed. Please remove '%1' and try again."); + auto errorString = tr("The launcher's client identification has changed. Please remove '%1' and try again.") + .arg(accountToCheck->profileName()); QMessageBox::warning(m_parentWidget, tr("Client identification changed"), errorString, QMessageBox::StandardButton::Ok, QMessageBox::StandardButton::Ok); From d41c54b6b218089e35aa354eda66f9b2212c78ec Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 18:24:28 +0000 Subject: [PATCH 599/616] chore(deps): update cachix/install-nix-action action to v31 --- .github/workflows/publish.yml | 2 +- .github/workflows/update-flake.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index d49eb4b8d..034a8548b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -23,7 +23,7 @@ jobs: ref: ${{ github.ref }} - name: Install Nix - uses: cachix/install-nix-action@v30 + uses: cachix/install-nix-action@v31 - name: Publish on FlakeHub uses: determinatesystems/flakehub-push@v5 diff --git a/.github/workflows/update-flake.yml b/.github/workflows/update-flake.yml index 5e978f356..f54c09528 100644 --- a/.github/workflows/update-flake.yml +++ b/.github/workflows/update-flake.yml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: cachix/install-nix-action@08dcb3a5e62fa31e2da3d490afc4176ef55ecd72 # v30 + - uses: cachix/install-nix-action@91a071959513ca103b54280ac0bef5b825791d4d # v31 - uses: DeterminateSystems/update-flake-lock@v24 with: From de13d55c7cf63f44d7344651f710be3524b957a1 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 10 Mar 2025 21:53:14 +0000 Subject: [PATCH 600/616] chore(deps): update cachix/cachix-action action to v16 --- .github/workflows/nix.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/nix.yml b/.github/workflows/nix.yml index b44011711..6c2b13de7 100644 --- a/.github/workflows/nix.yml +++ b/.github/workflows/nix.yml @@ -66,7 +66,7 @@ jobs: # For in-tree builds - name: Setup Cachix if: ${{ github.event_name == 'push' || github.event_name == 'workflow_dispatch' }} - uses: cachix/cachix-action@v15 + uses: cachix/cachix-action@v16 with: name: prismlauncher authToken: ${{ secrets.CACHIX_AUTH_TOKEN }} From 0626e354a026f9a2a35a4d6e28a0af105cb22986 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 12 Mar 2025 00:01:45 +0200 Subject: [PATCH 601/616] Fix crash with invalid quilt mod info Signed-off-by: Trial97 --- .../minecraft/mod/tasks/LocalModParseTask.cpp | 134 +++++++++--------- 1 file changed, 69 insertions(+), 65 deletions(-) diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp index 7d101668e..97b86af45 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -293,86 +293,90 @@ ModDetails ReadFabricModInfo(QByteArray contents) // https://github.com/QuiltMC/rfcs/blob/master/specification/0002-quilt.mod.json.md ModDetails ReadQuiltModInfo(QByteArray contents) { - QJsonParseError jsonError; - QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError); - auto object = Json::requireObject(jsonDoc, "quilt.mod.json"); - auto schemaVersion = Json::ensureInteger(object.value("schema_version"), 0, "Quilt schema_version"); - ModDetails details; + try { + QJsonParseError jsonError; + QJsonDocument jsonDoc = QJsonDocument::fromJson(contents, &jsonError); + auto object = Json::requireObject(jsonDoc, "quilt.mod.json"); + auto schemaVersion = Json::ensureInteger(object.value("schema_version"), 0, "Quilt schema_version"); - // https://github.com/QuiltMC/rfcs/blob/be6ba280d785395fefa90a43db48e5bfc1d15eb4/specification/0002-quilt.mod.json.md - if (schemaVersion == 1) { - auto modInfo = Json::requireObject(object.value("quilt_loader"), "Quilt mod info"); + // https://github.com/QuiltMC/rfcs/blob/be6ba280d785395fefa90a43db48e5bfc1d15eb4/specification/0002-quilt.mod.json.md + if (schemaVersion == 1) { + auto modInfo = Json::requireObject(object.value("quilt_loader"), "Quilt mod info"); - details.mod_id = Json::requireString(modInfo.value("id"), "Mod ID"); - details.version = Json::requireString(modInfo.value("version"), "Mod version"); + details.mod_id = Json::requireString(modInfo.value("id"), "Mod ID"); + details.version = Json::requireString(modInfo.value("version"), "Mod version"); - auto modMetadata = Json::ensureObject(modInfo.value("metadata")); + auto modMetadata = Json::ensureObject(modInfo.value("metadata")); - details.name = Json::ensureString(modMetadata.value("name"), details.mod_id); - details.description = Json::ensureString(modMetadata.value("description")); + details.name = Json::ensureString(modMetadata.value("name"), details.mod_id); + details.description = Json::ensureString(modMetadata.value("description")); - auto modContributors = Json::ensureObject(modMetadata.value("contributors")); + auto modContributors = Json::ensureObject(modMetadata.value("contributors")); - // We don't really care about the role of a contributor here - details.authors += modContributors.keys(); + // We don't really care about the role of a contributor here + details.authors += modContributors.keys(); - auto modContact = Json::ensureObject(modMetadata.value("contact")); + auto modContact = Json::ensureObject(modMetadata.value("contact")); - if (modContact.contains("homepage")) { - details.homeurl = Json::requireString(modContact.value("homepage")); - } - if (modContact.contains("issues")) { - details.issue_tracker = Json::requireString(modContact.value("issues")); - } + if (modContact.contains("homepage")) { + details.homeurl = Json::requireString(modContact.value("homepage")); + } + if (modContact.contains("issues")) { + details.issue_tracker = Json::requireString(modContact.value("issues")); + } - if (modMetadata.contains("license")) { - auto license = modMetadata.value("license"); - if (license.isArray()) { - for (auto l : license.toArray()) { - if (l.isString()) { - details.licenses.append(ModLicense(l.toString())); - } else if (l.isObject()) { - auto obj = l.toObject(); - details.licenses.append(ModLicense(obj.value("name").toString(), obj.value("id").toString(), - obj.value("url").toString(), obj.value("description").toString())); + if (modMetadata.contains("license")) { + auto license = modMetadata.value("license"); + if (license.isArray()) { + for (auto l : license.toArray()) { + if (l.isString()) { + details.licenses.append(ModLicense(l.toString())); + } else if (l.isObject()) { + auto obj = l.toObject(); + details.licenses.append(ModLicense(obj.value("name").toString(), obj.value("id").toString(), + obj.value("url").toString(), obj.value("description").toString())); + } } + } else if (license.isString()) { + details.licenses.append(ModLicense(license.toString())); + } else if (license.isObject()) { + auto obj = license.toObject(); + details.licenses.append(ModLicense(obj.value("name").toString(), obj.value("id").toString(), + obj.value("url").toString(), obj.value("description").toString())); + } + } + + if (modMetadata.contains("icon")) { + auto icon = modMetadata.value("icon"); + if (icon.isObject()) { + auto obj = icon.toObject(); + // take the largest icon + int largest = 0; + for (auto key : obj.keys()) { + auto size = key.split('x').first().toInt(); + if (size > largest) { + largest = size; + } + } + if (largest > 0) { + auto key = QString::number(largest) + "x" + QString::number(largest); + details.icon_file = obj.value(key).toString(); + } else { // parsing the sizes failed + // take the first + for (auto i : obj) { + details.icon_file = i.toString(); + break; + } + } + } else if (icon.isString()) { + details.icon_file = icon.toString(); } - } else if (license.isString()) { - details.licenses.append(ModLicense(license.toString())); - } else if (license.isObject()) { - auto obj = license.toObject(); - details.licenses.append(ModLicense(obj.value("name").toString(), obj.value("id").toString(), obj.value("url").toString(), - obj.value("description").toString())); } } - if (modMetadata.contains("icon")) { - auto icon = modMetadata.value("icon"); - if (icon.isObject()) { - auto obj = icon.toObject(); - // take the largest icon - int largest = 0; - for (auto key : obj.keys()) { - auto size = key.split('x').first().toInt(); - if (size > largest) { - largest = size; - } - } - if (largest > 0) { - auto key = QString::number(largest) + "x" + QString::number(largest); - details.icon_file = obj.value(key).toString(); - } else { // parsing the sizes failed - // take the first - for (auto i : obj) { - details.icon_file = i.toString(); - break; - } - } - } else if (icon.isString()) { - details.icon_file = icon.toString(); - } - } + } catch (const Exception& e) { + qWarning() << "Unable to parse mof info:" << e.cause(); } return details; } From 88bdb6541e3a57d6f84e75080dd6d24c1589a73d Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon Date: Wed, 12 Mar 2025 00:14:53 +0200 Subject: [PATCH 602/616] Update launcher/minecraft/mod/tasks/LocalModParseTask.cpp Signed-off-by: Alexandru Ionut Tripon --- launcher/minecraft/mod/tasks/LocalModParseTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp index 97b86af45..b0e8eb101 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -376,7 +376,7 @@ ModDetails ReadQuiltModInfo(QByteArray contents) } } catch (const Exception& e) { - qWarning() << "Unable to parse mof info:" << e.cause(); + qWarning() << "Unable to parse mod info:" << e.cause(); } return details; } From a469f6b114f78bae0b6da545ff86e6199ff090bc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 15 Mar 2025 21:14:57 +0000 Subject: [PATCH 603/616] chore(deps): update cachix/install-nix-action digest to 02a151a --- .github/workflows/update-flake.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/update-flake.yml b/.github/workflows/update-flake.yml index f54c09528..48a8418f5 100644 --- a/.github/workflows/update-flake.yml +++ b/.github/workflows/update-flake.yml @@ -17,7 +17,7 @@ jobs: steps: - uses: actions/checkout@v4 - - uses: cachix/install-nix-action@91a071959513ca103b54280ac0bef5b825791d4d # v31 + - uses: cachix/install-nix-action@02a151ada4993995686f9ed4f1be7cfbb229e56f # v31 - uses: DeterminateSystems/update-flake-lock@v24 with: From 6cf96d8fe77ddb99ede4dae1bbd46c3b610488e3 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 16 Mar 2025 00:27:01 +0000 Subject: [PATCH 604/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/6313551cd05425cd5b3e63fe47dbc324eabb15e4?narHash=sha256-D%2BR%2BkFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs%3D' (2025-02-27) → 'github:NixOS/nixpkgs/6607cf789e541e7873d40d3a8f7815ea92204f32?narHash=sha256-cPfs8qMccim2RBgtKGF%2Bx9IBCduRvd/N5F4nYpU0TVE%3D' (2025-03-13) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index b71a669ae..0d1bd2df0 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1740695751, - "narHash": "sha256-D+R+kFxy1KsheiIzkkx/6L63wEHBYX21OIwlFV8JvDs=", + "lastModified": 1741851582, + "narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6313551cd05425cd5b3e63fe47dbc324eabb15e4", + "rev": "6607cf789e541e7873d40d3a8f7815ea92204f32", "type": "github" }, "original": { From d5d83bf55c1bce91357e46714a265e79be012895 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 18 Mar 2025 16:48:18 +0200 Subject: [PATCH 605/616] fix no cape select Signed-off-by: Trial97 --- launcher/ui/dialogs/skins/SkinManageDialog.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.cpp b/launcher/ui/dialogs/skins/SkinManageDialog.cpp index 2127fc9cc..3bc0bc2d9 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.cpp +++ b/launcher/ui/dialogs/skins/SkinManageDialog.cpp @@ -223,6 +223,8 @@ void SkinManageDialog::on_capeCombo_currentIndexChanged(int index) auto cape = m_capes.value(id.toString(), {}); if (!cape.isNull()) { m_ui->capeImage->setPixmap(previewCape(cape).scaled(size() * (1. / 3), Qt::KeepAspectRatio, Qt::FastTransformation)); + } else { + m_ui->capeImage->clear(); } m_skinPreview->updateCape(cape); if (auto skin = getSelectedSkin(); skin) { @@ -522,6 +524,8 @@ void SkinManageDialog::resizeEvent(QResizeEvent* event) auto cape = m_capes.value(id.toString(), {}); if (!cape.isNull()) { m_ui->capeImage->setPixmap(previewCape(cape).scaled(s, Qt::KeepAspectRatio, Qt::FastTransformation)); + } else { + m_ui->capeImage->clear(); } } From 4c2182e086cc43c39e3e3dbba14a9c67f090d8cc Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 19 Mar 2025 18:59:33 +0000 Subject: [PATCH 606/616] chore(deps): update actions/cache action to v4.2.3 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 3b71d642a..c5e459914 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -170,7 +170,7 @@ jobs: - name: Retrieve ccache cache (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug' - uses: actions/cache@v4.2.2 + uses: actions/cache@v4.2.3 with: path: '${{ github.workspace }}\.ccache' key: ${{ matrix.os }}-mingw-w64-ccache-${{ github.run_id }} From 9ee357dcf14bce6c218946e370576dcb97ba37b9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 23 Mar 2025 00:27:03 +0000 Subject: [PATCH 607/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/6607cf789e541e7873d40d3a8f7815ea92204f32?narHash=sha256-cPfs8qMccim2RBgtKGF%2Bx9IBCduRvd/N5F4nYpU0TVE%3D' (2025-03-13) → 'github:NixOS/nixpkgs/a84ebe20c6bc2ecbcfb000a50776219f48d134cc?narHash=sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ%3D' (2025-03-19) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index 0d1bd2df0..ef4c9f555 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1741851582, - "narHash": "sha256-cPfs8qMccim2RBgtKGF+x9IBCduRvd/N5F4nYpU0TVE=", + "lastModified": 1742422364, + "narHash": "sha256-mNqIplmEohk5jRkqYqG19GA8MbQ/D4gQSK0Mu4LvfRQ=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6607cf789e541e7873d40d3a8f7815ea92204f32", + "rev": "a84ebe20c6bc2ecbcfb000a50776219f48d134cc", "type": "github" }, "original": { From 9fa397a299252b4621095b462afb0502d62c7da4 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Sat, 22 Mar 2025 22:15:36 -0400 Subject: [PATCH 608/616] chore(gitignore): add compile_commands.json Signed-off-by: Seth Flynn --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index b5523f685..c8f056eef 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,7 @@ CMakeCache.txt /.vs cmake-build-*/ Debug +compile_commands.json # Build dirs build From 8a21b079159e12308928dab6d6d44d89c5bac0a3 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Sat, 22 Mar 2025 22:15:52 -0400 Subject: [PATCH 609/616] build: export compile commands for debug builds Signed-off-by: Seth Flynn --- CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index bc2e77d4a..138049018 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -99,6 +99,12 @@ set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DTOML_ENABLE_FLOAT16=0") # set CXXFLAGS for build targets set(CMAKE_CXX_FLAGS_RELEASE "-O2 -D_FORTIFY_SOURCE=2 ${CMAKE_CXX_FLAGS_RELEASE}") +# Export compile commands for debug builds if we can (useful in LSPs like clangd) +# https://cmake.org/cmake/help/v3.31/variable/CMAKE_EXPORT_COMPILE_COMMANDS.html +if(CMAKE_GENERATOR STREQUAL "Unix Makefiles" OR CMAKE_GENERATOR STREQUAL "Ninja" AND CMAKE_BUILD_TYPE STREQUAL "Debug") + set(CMAKE_EXPORT_COMPILE_COMMANDS ON) +endif() + option(DEBUG_ADDRESS_SANITIZER "Enable Address Sanitizer in Debug builds" OFF) # If this is a Debug build turn on address sanitiser From d6103c2a068a8ebc96e8dd349f3878d84da7e64f Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Sat, 22 Mar 2025 22:19:16 -0400 Subject: [PATCH 610/616] build(nix): copy compile_commands.json when entering dev shell Signed-off-by: Seth Flynn --- flake.nix | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/flake.nix b/flake.nix index 54add656d..d15a5bf03 100644 --- a/flake.nix +++ b/flake.nix @@ -79,6 +79,16 @@ ccache ninja ]; + + cmakeFlags = self.packages.${system}.prismlauncher-unwrapped.cmakeFlags ++ [ + "-GNinja" + "-Bbuild" + ]; + + shellHook = '' + cmake $cmakeFlags -D CMAKE_BUILD_TYPE=Debug + ln -s {build/,}compile_commands.json + ''; }; } ); From e3f93295f0c8e4ea44762535e4e15bb4e0f0cf78 Mon Sep 17 00:00:00 2001 From: Seth Flynn Date: Sat, 22 Mar 2025 22:19:49 -0400 Subject: [PATCH 611/616] build(nix): add clangd to dev shell Signed-off-by: Seth Flynn --- flake.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/flake.nix b/flake.nix index d15a5bf03..150240c8b 100644 --- a/flake.nix +++ b/flake.nix @@ -78,6 +78,7 @@ buildInputs = with pkgs; [ ccache ninja + llvmPackages_19.clang-tools ]; cmakeFlags = self.packages.${system}.prismlauncher-unwrapped.cmakeFlags ++ [ From 269938dfd866df5918eb44779667142f7a157c22 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 23 Mar 2025 08:52:08 +0200 Subject: [PATCH 612/616] rename variable Signed-off-by: Trial97 --- launcher/net/FileSink.cpp | 8 ++++---- launcher/net/FileSink.h | 2 +- launcher/net/MetaCacheSink.cpp | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/launcher/net/FileSink.cpp b/launcher/net/FileSink.cpp index 95c1a8f44..3f30c5e54 100644 --- a/launcher/net/FileSink.cpp +++ b/launcher/net/FileSink.cpp @@ -54,7 +54,7 @@ Task::State FileSink::init(QNetworkRequest& request) return Task::State::Failed; } - wroteAnyData = false; + m_wroteAnyData = false; m_output_file.reset(new PSaveFile(m_filename)); if (!m_output_file->open(QIODevice::WriteOnly)) { qCCritical(taskNetLogC) << "Could not open " + m_filename + " for writing"; @@ -72,11 +72,11 @@ Task::State FileSink::write(QByteArray& data) qCCritical(taskNetLogC) << "Failed writing into " + m_filename; m_output_file->cancelWriting(); m_output_file.reset(); - wroteAnyData = false; + m_wroteAnyData = false; return Task::State::Failed; } - wroteAnyData = true; + m_wroteAnyData = true; return Task::State::Running; } @@ -100,7 +100,7 @@ Task::State FileSink::finalize(QNetworkReply& reply) // if we wrote any data to the save file, we try to commit the data to the real file. // if it actually got a proper file, we write it even if it was empty - if (gotFile || wroteAnyData) { + if (gotFile || m_wroteAnyData) { // ask validators for data consistency // we only do this for actual downloads, not 'your data is still the same' cache hits if (!finalizeAllValidators(reply)) diff --git a/launcher/net/FileSink.h b/launcher/net/FileSink.h index 272f8ddc3..67c25361c 100644 --- a/launcher/net/FileSink.h +++ b/launcher/net/FileSink.h @@ -58,7 +58,7 @@ class FileSink : public Sink { protected: QString m_filename; - bool wroteAnyData = false; + bool m_wroteAnyData = false; std::unique_ptr m_output_file; }; } // namespace Net diff --git a/launcher/net/MetaCacheSink.cpp b/launcher/net/MetaCacheSink.cpp index 889588a11..432c0c84b 100644 --- a/launcher/net/MetaCacheSink.cpp +++ b/launcher/net/MetaCacheSink.cpp @@ -78,7 +78,7 @@ Task::State MetaCacheSink::finalizeCache(QNetworkReply& reply) { QFileInfo output_file_info(m_filename); - if (wroteAnyData) { + if (m_wroteAnyData) { m_entry->setMD5Sum(m_md5Node->hash().toHex().constData()); } From 9ce5587f60d637d48bf20a8b9a40f020898710de Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 23 Mar 2025 08:52:30 +0200 Subject: [PATCH 613/616] fix crash on accessing reseted output Signed-off-by: Trial97 --- launcher/net/FileSink.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/launcher/net/FileSink.cpp b/launcher/net/FileSink.cpp index 3f30c5e54..3a58a4667 100644 --- a/launcher/net/FileSink.cpp +++ b/launcher/net/FileSink.cpp @@ -82,7 +82,9 @@ Task::State FileSink::write(QByteArray& data) Task::State FileSink::abort() { - m_output_file->cancelWriting(); + if (m_output_file) { + m_output_file->cancelWriting(); + } failAllValidators(); return Task::State::Failed; } From a4472406b96faabf2bdb78d152fc0e66bfe4ac63 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 23 Mar 2025 14:02:09 +0200 Subject: [PATCH 614/616] fix account help link Signed-off-by: Trial97 --- launcher/ui/pages/global/AccountListPage.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/global/AccountListPage.h b/launcher/ui/pages/global/AccountListPage.h index 4f02b7df5..7bd5101c0 100644 --- a/launcher/ui/pages/global/AccountListPage.h +++ b/launcher/ui/pages/global/AccountListPage.h @@ -66,7 +66,7 @@ class AccountListPage : public QMainWindow, public BasePage { return icon; } QString id() const override { return "accounts"; } - QString helpPage() const override { return "/getting-started/adding-an-account"; } + QString helpPage() const override { return "getting-started/adding-an-account"; } void retranslate() override; public slots: From f08478c7ece0cd4e13b0bc188d0dcb9ea04c3199 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sun, 23 Mar 2025 14:17:43 +0000 Subject: [PATCH 615/616] Use correct colours for all system themes Signed-off-by: TheKodeToad --- launcher/ui/themes/SystemTheme.cpp | 16 ++-------------- launcher/ui/themes/SystemTheme.h | 3 +-- launcher/ui/themes/ThemeManager.cpp | 6 ++---- launcher/ui/themes/ThemeManager.h | 1 - 4 files changed, 5 insertions(+), 21 deletions(-) diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp index a1674455a..31f6a96ab 100644 --- a/launcher/ui/themes/SystemTheme.cpp +++ b/launcher/ui/themes/SystemTheme.cpp @@ -40,23 +40,11 @@ #include "HintOverrideProxyStyle.h" #include "ThemeManager.h" -SystemTheme::SystemTheme(const QString& styleName, const QPalette& palette, bool isDefaultTheme) +SystemTheme::SystemTheme(const QString& styleName, bool isDefaultTheme) { themeName = isDefaultTheme ? "system" : styleName; widgetTheme = styleName; - colorPalette = palette; -} - -void SystemTheme::apply(bool initial) -{ - // See https://github.com/MultiMC/Launcher/issues/1790 - // or https://github.com/PrismLauncher/PrismLauncher/issues/490 - if (initial) { - QApplication::setStyle(new HintOverrideProxyStyle(QStyleFactory::create(qtTheme()))); - return; - } - - ITheme::apply(initial); + colorPalette = QStyleFactory::create(styleName)->standardPalette(); } QString SystemTheme::id() diff --git a/launcher/ui/themes/SystemTheme.h b/launcher/ui/themes/SystemTheme.h index 7c260fdc4..195b8e368 100644 --- a/launcher/ui/themes/SystemTheme.h +++ b/launcher/ui/themes/SystemTheme.h @@ -38,9 +38,8 @@ class SystemTheme : public ITheme { public: - SystemTheme(const QString& styleName, const QPalette& palette, bool isDefaultTheme); + SystemTheme(const QString& styleName, bool isDefaultTheme); virtual ~SystemTheme() {} - void apply(bool initial) override; QString id() override; QString name() override; diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index 30a1fe7be..6c50d7409 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -44,8 +44,6 @@ ThemeManager::ThemeManager() m_defaultStyle = style->objectName(); themeDebugLog() << "System theme seems to be:" << m_defaultStyle; - m_defaultPalette = QApplication::palette(); - initializeThemes(); initializeCatPacks(); } @@ -128,7 +126,7 @@ void ThemeManager::initializeIcons() void ThemeManager::initializeWidgets() { themeDebugLog() << "<> Initializing Widget Themes"; - themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique(m_defaultStyle, m_defaultPalette, true)); + themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique(m_defaultStyle, true)); auto darkThemeId = addTheme(std::make_unique()); themeDebugLog() << "Loading Built-in Theme:" << darkThemeId; themeDebugLog() << "Loading Built-in Theme:" << addTheme(std::make_unique()); @@ -141,7 +139,7 @@ void ThemeManager::initializeWidgets() continue; } #endif - themeDebugLog() << "Loading System Theme:" << addTheme(std::make_unique(st, m_defaultPalette, false)); + themeDebugLog() << "Loading System Theme:" << addTheme(std::make_unique(st, false)); } // TODO: need some way to differentiate same name themes in different subdirectories diff --git a/launcher/ui/themes/ThemeManager.h b/launcher/ui/themes/ThemeManager.h index a9036107c..9c9e818e5 100644 --- a/launcher/ui/themes/ThemeManager.h +++ b/launcher/ui/themes/ThemeManager.h @@ -69,7 +69,6 @@ class ThemeManager { QDir m_catPacksFolder{ "catpacks" }; std::map> m_catPacks; QString m_defaultStyle; - QPalette m_defaultPalette; LogColors m_logColors; void initializeThemes(); From 513959750f23719b55030cd34b9a8f5b248289c5 Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Sun, 23 Mar 2025 14:29:58 +0000 Subject: [PATCH 616/616] Try best to avoid regression Signed-off-by: TheKodeToad --- launcher/ui/themes/SystemTheme.cpp | 12 ++++++++++++ launcher/ui/themes/SystemTheme.h | 1 + 2 files changed, 13 insertions(+) diff --git a/launcher/ui/themes/SystemTheme.cpp b/launcher/ui/themes/SystemTheme.cpp index 31f6a96ab..59644ddde 100644 --- a/launcher/ui/themes/SystemTheme.cpp +++ b/launcher/ui/themes/SystemTheme.cpp @@ -47,6 +47,18 @@ SystemTheme::SystemTheme(const QString& styleName, bool isDefaultTheme) colorPalette = QStyleFactory::create(styleName)->standardPalette(); } +void SystemTheme::apply(bool initial) +{ + // See https://github.com/MultiMC/Launcher/issues/1790 + // or https://github.com/PrismLauncher/PrismLauncher/issues/490 + if (initial && themeName == "system") { + QApplication::setStyle(new HintOverrideProxyStyle(QStyleFactory::create(qtTheme()))); + return; + } + + ITheme::apply(initial); +} + QString SystemTheme::id() { return themeName; diff --git a/launcher/ui/themes/SystemTheme.h b/launcher/ui/themes/SystemTheme.h index 195b8e368..09db1a322 100644 --- a/launcher/ui/themes/SystemTheme.h +++ b/launcher/ui/themes/SystemTheme.h @@ -40,6 +40,7 @@ class SystemTheme : public ITheme { public: SystemTheme(const QString& styleName, bool isDefaultTheme); virtual ~SystemTheme() {} + void apply(bool initial) override; QString id() override; QString name() override;

    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 delta 1530 zcmVzNrrK_`+ou-VGo`Q>( zcY%#*bb(i6aY|QbG(uD;H%ciuOTEFzEj&)h%+dJx`RVHH;eX@i%g)ohz{ahzx}K!1 zj+UT*h?H=8hiG$vVQhL*UT#BBVLM4$A~Hpvrms+3YxVZ`)Ysa|&eFie%Cxz_r>(V> zoTi44ntX+kXK{aVdx&#=iN(pzijtj3Rb}Jl=hD^LGC@-?K2gQV&$+(DmY%0LM_8Mp ztK8n+J6R{r>v;`%PJC zi<6zMw7dTP{#aylc!G|*z{c(G@YmYi9xg(fp{lB|w|~sf)ZE|VY<7bnFGE33U}kZC z<>%?_?(ZKjLg?!3rmeI!Lsi}2<6vxhJxg5g@bcN*-;|rB)YsczYIxS!-ShMHGeT5v zdWN{Y!}Fd?l+=!8z#K_IBwY*ed zZ=|ZSbbo$|hme{#MOVhk&s=AAUTJqgOV^^L%6b000AeNklIMW%oZQHhOb8OqTZQC~1dVj5D@|&nCs>K@bE% z5ClOG1VIo47gwdY!7lDp%D8`7fQ!c;G=E>fc>ZC6(g71EO}54qUBFbuXTZ~oR`AvZ z_UQwA*Rb5jX2XpF@Xi2>`fC=ujlW#*~u?FTf zHPeDnT|lv&0WDdrkkQsoc^$fddV2yUcXq)7O*dur=mJ7*4@l|lgBAJ*C}VI)8_;2E zz;IR}tTW<88Kc^OG1~&BO`id)%?zQmS%2DqX(P13q}i}ZT?wVk(FSlXt=BydHX3cA zgkW7jCapDp0c*pxu^uKnWWM7?k)OKZP?6{L^|a_lG1PH$!KP`FzxDO2_{ECMWkXQb zxtc>>>uJdA7WMeuroPp8g6}TSKq>PAXe=qij|T2l(pUx*vh_ZV-Fa|=Mjr0EMI(=( zjK?&xKBKRlCZ;}lN<)JWpoC}BXlUhgbko$dXIryY)4<9naNLVqG!%3b{eLv)cmZDS zq=8ZwIBLdD8hG^@a4(@*Z#3u&p@CpH=s-LT1iS?_Zzy3cfOku%?>!vzfd;N?WFO?g zi2%;|Q_r*!MZcgQ0eo6bNnSGn+^4<`iUv#ohE`DDz##Q~2JleDfUCe){KLf^Uw`v% zq;)p{%zLtC@7?sC^&~m?7IXNlV!%Xr43pn>Uz-OL-$j0Zmb?J`pkjbK=5Wf72OuGK z;}KrLI28lVY04i!&QQ&C{G?()>@Xt=Kufz diff --git a/launcher/resources/multimc/128x128/instances/ftb_glow.png b/launcher/resources/multimc/128x128/instances/ftb_glow.png index 7f9f16ee4fe1f1754c0006d39d888edb2aae0c43..a8bfbbb962e7d28b3047692acd70421d7650eb13 100644 GIT binary patch delta 11170 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 diff --git a/launcher/resources/multimc/128x128/instances/herobrine_legacy.png b/launcher/resources/multimc/128x128/instances/herobrine_legacy.png index d30309677c1d19027f348d7f597298ef36ea08b3..d25d1b1b18fe173d1ff24e254b0740da6a5c928e 100644 GIT binary patch literal 4360 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 P;Q(l<>8VyL+eZ8Y8_I#p literal 4445 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 diff --git a/launcher/resources/multimc/128x128/instances/magitech_legacy.png b/launcher/resources/multimc/128x128/instances/magitech_legacy.png index 7eeacedb5b856d802f3475651248e8e33661b746..c83d0c948a299635fc233955a65d9c40fcc4820c 100644 GIT binary patch literal 21807 zcmV)DK*7I>P)Nkl58@T&{c#-?}#W&@H4-5cz;r@qyDThF>mk8~(dfM$P z@JE0G#77^&XTKHP7hk+3ehK^n@lE;S3&VfGS09?UKR3UB$K3t3xqrvp0lh{d$o6Xh z|0Q^C-4{3B7XN!F@69)~oG&HDC(6fLc{*15JNjomTU;zlpkWW^~m3TfFE z00Nb6B5gSogbIrsORe6Qp8GXp@9j`>*UL}mvi{*ePsE#NadkI%=N-d6`26n$z}cC& zdD8&!8T|HR^T{pq;fIDhNcyV~LAHN{uX&$}dz35qG1bcr!@3URxLj^}t(&qg+ca}2 z+T@xWXH3N!oV{TRQ0P&dDY`{=kw64wr0mF~lYPnbzF3zLc~N>?H1&%`ZQuIt&@Nfe z;<6L_}8eb8@f8x1fXaxCu=@h=LGTyKR7>6KL1Vf$tTZ5;Q2j5 zKZFGBhaKa8dHw|cvz>o_)}D?1wGQJIe3tE+^+YPCL^+k>l=K#ImYB#KRcJPiaFHn( zIip|;3!Gq#Ga*-k1@bb*M)nw{mEK#dYBhW7&V4@ds=g1HOsVp^FRZnAkhlcZCCSK> zMN!(m*QxeLharw4^eYj5^FoBX{`$4>ng}2eFY@Ufar;x?Hr%}{{?a_#`41nKccEU? zLt9}Sm%dr0xjchU+)ybuBJzgh6W~PY*~ye>C=u5az?7?|i-a)37B*?yBI$}G7G=&P zlai6hA)!gp0)`rOl=`yP77VLRzk*L$st=`5Knn>qa$r@iYwWe0PV0KUK3O@Xb2>oaD>-gp{%@^Z}Hf8BoPrh0^C4EDb8;Us1^j2si=Y%~N8lsr2*n(>bcqxFC2}vdy zGAm{xJ*GWKZge-9LBy!YO=K=*aZqHeYP-Tv8KTeul#1wxrMn%n?+>ML*yeD!*slwh zCoA***g1~VKrf~Nclch`f^5I~@A4qHE4U@@KPS-OuS>aQm8{jvh$D2yt5S*stM3GzDR{$N^N@lb3 z8hT_Qj(8*ln+&l8(*qzc(9dWMgyNtY4&xMR&T}6-Tbi>DH76Ne3 zuvaAq_1H^X^ffL^_Dgl`D|y((VPPsO53}>`li=a4ageL!av=bI-hdrE0o~YGqs-&S=ydD+{Zc${%e2npy2+`meHPmG z$P+nEWt~bsA@f9LYkPw|$sQ2Z&c+J?u&|4hf-N$O5@BQ~n3Qv{JviO;0<2>oJ!LQ} za*t!p9sv@lIkOeJfolp#Qf5`=Ugk10b`^Hvx>NIo4_wS;+FzPICr=Ce&C2|{XDb0d zxo7V33hoB4Pyq4rw$AMj#Aj#amv5eyi^p?4uTN^PS))YVUeuc7SX_sahh8W}K2!m~ zCDLe0wazar6<<6(_qIq$mbGfE5u2WM7Me>gC*TvLZ6;gc+0Kou2|US_+!LEh@ zXp#y}rJYiCh4*q^ra2d!WNKD=Qyf#2K61#xW!P{l_4;{N?O-V5SYNzh&y ze6Hc|E@+F^VdG)AY%vb@=qQ895r&3b>Ae!Q;E;Prtr^mm%}N$IMFc%@33W=V%~J$h z!4`Wi=?(H^dn~?w>g{ab2L5&32&(Mn$VTP}IXT^N2I(Y??IOF%Zsf6cNn5g$bjUtr zdaukAJ5OZKO3%*NRC$angOrVn-sY-$SuP6uvas2#M+xBLkCS`%^1GIxy%PBMsqa31 zP|x3*+QKwURpVjlQ`0mpc&hRw%II81)2bcKxIh(>935<{WI8e_1aXZ)9Z;$2ITl~T zPkV!N17);5U>eRwQobF0AhTjaVx_C`Kzb4mCkZxKvWu;P-4KBsbLdKDq?sBe9&$2hlJeG~q$1^6U#}bU;YzkM1 zx^XG{vKQ+hY8Aix-FGfQdu8xXj_{u{)uPQ(V=lum6S0LdLvD!N7>}eHl#26M6h9l5uf&>tll__F(ik6csuN&$qDH~+3^ojBH8c;jQ|TIWu#xG*6ck$vR3YWRU? zZaF?eZYW5WM6!g)&Alb5g{!rHO=^rFrIx$r0na?82nwE}wHY(6awE&2x4WMX#M^4?KSYzo_ANYxth^%*zD}^iZu}T_)i#v|O};6cMvkIy0k^0f6D) z<}O?bHzy?_a4E>i18NDY#WeS$Nb=Z(WxEgfjogq2!0>5U&lkGw)h~G61D$gxjtOvq zB;3H=32%5T4};P9@h4syRCG%uikfJ*Qs^Aqy zD2xio+R)h)x1X%w82|@AS^k!OOjK|ya~Txh)l9vN-d<^a0 zAwY1skwh+|3Z%9K(bWC2%1Dg2S+|MSUzz4;5CUn_d0BvW!j4knp9D9OzP7;+OH znR-=bwUC;H9y8>2Hrwgk7kt6FUcYsHr=5`7sV5&hb^1-Oeb5b?dc1In0EmDi0uekx%!Uh|Lp%iG|r05Ihhut__&9jd3e1D$rgibKJcZi}Y>&%B9`_h%?AL@m&b-!VMUM6^ad8hZMm)_U=)4Y#MgR|wo z+xp7!`}I1W{lv!3#--=>(s)b^F+T81zx-_Xq4Qk;mlRf)E$enwCCA4B49k`lyC~%4 z_V%7!j;7FYqDd3UJs6mpco*adB$tDwR>)G(a;F@M_KMiv7H>yQQTVxy0FxzMo-%rb zV!yXvSY}yjWk%boFo93r>ZU67%%J^3G~9)Jd0>-$epa$&MY2VDQ~Y2 zJb8&E+@q!ja8SRPFu7zhnLNotQlj!uB`P@zPS#JfORtMU!I664vu^;C_53F%-X8`h zJaz`-JmgtU723i&c<3g)YuKdGF@?_*z7d(^I0eA|=IMX-1;1|j`wqcJQ$5zYasIup z{wrVmOD_G9@7!RaqS?8#Xv6G1k9^zf-+A)sCzs=>i^R_n{3Gwb`q*Ck@4o$`XaD3E zJX`&C8zV`L5h!S1QZQji zfFy9kl2EcRL0{z|R%Mk{RAr*yb&AcORXvd1Q}}Oo;y%_I+GI(0lwxQVnMU5itW8QC zOdYe>0q@9S3s)}pDST-PUkZQo)`iI`Trf&KzXMXsh zKlZ?Pf6>WoZwbNAJ^Z7R;8eHB{^;kwaQvH|+*+4=OiBva<4EP*H zfVV^SLe~<*(6boFrDe)Po|kHo#g_1vSE)^)C9hgQ9*ig{A_dIsZ=U!kck=wh0v>PQ zJp10){>`uIr&jT%-sKAj{vUzg$k4tBobILUWNXNlFHy-PgDlT2#-I=&2|(b03z;x8 z+7FyhaFa zGYJ0QgAZ~b7|A15h+rM^ED&Ut99pdw76L{9fC_Loxd0(E%mVF;541*~zEYv8IfQ1EP zVM)_*k^0&uI(Z(tomYl$W+Vli$ZgJ$Vwa|`O)w+NGol3o0s%Deh#`84comg};PQZbgm944Ch(VjZs7OV#Y;a^>yys4%a9x}0KjOZgZr&*v9$}J zx!)5O;M_TQ)uYBEuQFO~KyxxffV+`G#+B?LG7DhfW(15(A^;{Z7f2Y6yD$I)%n<>L zk@m&&as26*B*!qo5r%^$M1@oc#z7jnF+ypG#S!iWP>}U27Cp_)3iMfT1f|e25DH^6 zGs99KH&e0z3dozDehR3Df8rm1;jdZxzF+vcgkO!}V^2BH)!^4|>nLyln-ia5G?3uh z^;$Q?kNu>$aCT}87auXQ3=l|$h?JglE4x6n2mu^O0xJqy!EGp4v-uR&!W{t?Y!(R| zLc2xl^oeYIW357D*r6y;$`~V!Wi|x%H4r|`LmZb$W5`Ojvx=(kydCE$>}V9Y|4twZ znL&hhpMz7jW(Jy!@>-bv@zwwIx*Gm3`dq&;tXL4HPuQG{UVQ8(v-H`;100-96Qt^%#-t#}6AD_K? zzwmE-O#Gj}lN$JU_V_Hq>mM+_{!PZO_@8&U`+>JNW^88nZvexg04!B9rRHfG z$xXps=1#M2pO7Kp4ih6-u8rW`|KqvF2!1y3KlzmNUH>968gR!V&jP&WjPb6w8ejMb zoLu@0umP~UHUbPJz>L+Uz!$$h;}?BFoBWX{2nXCVIxp; z54a8)L4M{W7Gh{vWf(coF{9h0gC)T-_%h~;1TEyE!zi?9jWd>qk=?i2XQu}E@4%xF z(g|4_3m?l`(N*9Ul;oap63CG|E&;+F9M*iHddKsB=Ks9+kw57w3Ed{eB#};wx8R}wT$S5CE zbxYU|fCKuhqyV^rEmsPi%!5~6Imz5=kxZT>k|TFVNWvW{87^Bd7s_`$_b0#gxzU;H zcMJdf|M5KhqxpWZ1Hbfj#xHuUajbU~+MQ+hln%t<|F08CA!i&GS?fGbW|3BiWFZjE z7_DvKML`-B6C+TSKnbCPC_rNnpxOQ5^guX%jF9J{;T1tS&^FPEe5lx0R(!=tb-LThOLa1 z@xBola8EVB(UribP8r>ybl1lfiT0k!3Cad zHSXnq@YH+1>~5<4AN_WJS@>q~g%2CAJAV|~=OXVP{@aF|kt~uziy|&?d-)ASiwMJT z++g#?%T&W5<#0qAm3XRZ3DC^-4syQ%LIQ&ZIw%;{yop41`h=yIt_2_1Aag%iXeSTx3`b z<_dC|xr0e00B0_js zpTRdn)_8wwiDyrJ{dC%Ak=RTDw=Q30yxXVP9Z(L2ll-qTA@^BmpVxd*c&B=xxsOYW zhGFy5!T@ciA-_kUi>U{61#Lpi$%^bC4Zz_d@NQ20Jp95GezDlkTYITpWJM>Wyj%IW z7d&>YR;uU*v$iFsyMO`_Q$VTKG&1~&li&KfMH_WLQ+xON<)g)3lk;a`-#+(w|H#h* zxCK1qq}bv4lV3yGJ~4rxg=zi|f}5Xup7CCvalcPFE=gs9JOO|wbO75AL)R;h zCyyDzfBxWs_rNV0W$obo98_Ufh}P`@fyFi-p?b zOFBk1+3ky|o4o8=3>~k$IrvD+-CIG*pM2|QTG)C2cP5U)pH}-{`l@?| zHdAJB!r-()7l?vrkbtpj84Lw`f-y(E9|H>zr`|tmpX7zpUq=iX2x0&e+ZKsxj*mSx0tJEU>pb2EZmSlgfjp_XdVk*sZ@ z%E>HaTt$v6aQk)uyxB9T>=jS^^maoHe|E}u(K?>IYgo6kIN9rus;*h=SXp%l*0!X! zP&>$561ikiiTKM`e(d7$u=k3)cR%^V&erD9(7)K8=KT=3_q^XVcx{051_o3>5>yR* z0l7hF#s#1P_5_0&AIwk)xaD}><5Lg(I+U*vy@6v!QH*)%r=OX?AMWf?3>DHPd4r+k_x$sF8z^o(DF=(p_Efh06M8@qv8Xu|y zvb#F*V{<2dWIYHytm={I`96H}j!(kBw;XRC&_GM>IVi(DzH8;DKJS&_S0i}(2OKyG z@hcuPIyqqXpo}T_#{y(D;O}xB0#Mr^0wY0b$O2AA$~s&=@eZ!miZa}c9O1x=pLmw- z+iUcJ-Iq2wZU70+$Qjq z2{K@k0+wu?e_{98$6o2f|JV;D27{xa|Kci~Te-))-!=G>0IPPl`v7OfmIF?64`g8q zKSeyY*;slrmoEGsLI@-`G7JaCd)vJ5GtaQMu| zq93wOFV9P(U4?EZ#Mqs{PvxQ~E#lQ8qGxyy=o)lP%+3HP<#Nx0Jic?~Cm!lr(S9Y* zd+sAT0^e-X+rPJvf6Uo7kYPYT zeDZ@o&F)%8=n8e3=kVn?ndDh;qG}<+ zxFyF`CoDb{++=$u$88xS5v8i zRD#@~3b=Acwda52iNDR>!mE&GQ|SP#UAfAo_kWPhn`>;ZZP4G^oiu=|vcz2o2L}Z( zw*x~E!h%5qR&Y2Kn1SX~!Qlo`SX_YH8wN7KFajbXa%^A9achC+ie!X5GERZ&xXl-W zVRqu@l+D;VvR(Y9nA^QvoZ9f`Kd+alybc|e(58HtE1A{zJ} z9ti8*^ZDj+^a=*>F+URCUwhW*weO*U^F)B-uMA&4lP7S8l%Oi1tVCJDXl#tjz_wS3XO1FIa>eBGv z{mi)?+~co$^|j^KpWJDkS}gM_8L14Ul(W0~rM&c}ze38Ea0L*A7?7YC5Bb3N{s6bH zTx0Y4%}Mwl?pOYUF{vtX37KIsFl%4};jo7{Q^TXPf6 z<)F+e-S>0&u3ZwzIrLg+!^y?F%=>gd;f$LFoT^t^;E>|!94qkf8-^2IedjJdz0TWci z0YCZe@8xpc@!Pm@lg--u``g=$_Xbqu7*7t3BtMjMkT_fr!r^v(+?PQ(c)J;e zWpS=cHBnG=906GjBH|&16HI#c*nWfPAFvOAslArLgGGGfRSQifX=Qk4Ty&GBwC z-S>0&b~lc$^&2Tt;6sWPk5{uuL+g>U?(Z(RDCum8Gk$RbI?%rFcCATZk9 z<$eF_e{=cy%TxGu*x%jQV%Q&06jRSv0~{LQgjx8Hj(GqxFb9Q(oiGV#ScZVrQkFv& zAVg@41{WZ}uxu{v83qc7DSXvJaY7KHIYwK}yjI5Ut^t-Y|2lI9z1TN;!Bn*Z=0UDN zHHB`bfKy8WlVRBX9@HG{9)_PsIDhOOwsoBkFArZ$q1T5m`L|#39IAp+3RKCg9#vH# z)T1S3U-0I)b>8)Be)+zfn!{lS2; z7?YAC2Q|!Tj0XpTA%!Wx;2@i;@ea=eX&Sp~<(Dt4h%-4^%1CV+={zV-G#t`Zd4iS1-Nxi6>eTn3(|>b|?)$ z_o4Um6W{Yx9qu=3@at^X+TGrzzc-+)3Q`i1BWzZf8z_L`-~rHV5y&+w0_UfJ7=(cG z4B9Q|)yiub6Yva6}M>!#Az` ze_!&&9W!g-UUFS%4zzL*Xf(zuhcbbI)HF+gJ0?hl0J5nv!z&}) zX-n9PFB%U4fX0PcY(q+h1q<%xnBiUvLox}o`+p7}gMkhK?X~Y^GlxOP?&$rVjQ@1$ z!mc&oAAjgV=NrE2t5-h%EpP6`n3?1tm`2Hl9U!T$@SoL>e%p80`qk?b=sO#=wzui; z?lB&YDXWUqKm{Ne1dxGgmfsJBdVy*F56xpU6b-T#bZRYh@ueP?N2n6!4n+w8kbyZC zB5)Xd0268)76=$V!;HJ#-JZa*vLk2xrofxA(S5*2M>l@-+V`}j`wrpXnquE*q42iP zd+owE{*qt3`nuOX(LoLt4k~U1Gt^Y)7#lZl>BryueRX^H8Qa^ffp2ZGy}3nyXLsWD z<559XC7gt0$iOUs&u_6YX5<0XkPw=Tb5S9H$r|s^uy&4mZM58j#U6?Q8<$W^7BB#D z5J6t~C7X@Ly&nuo$;d)uH3k6QfOi?l?hC$PVZqqio<)I$);;d)8wnN+>2R2EMRu~E z#~=Kizx%AMye<$h+z&oPnIQ}VKnw;${nYpU5Fh!mpRhpAegzADwk*O&>TgLZTouXtgHrS#03f0)Y!cz|7}z+$2)-$}bbB z8M#LTC<z3~Otj_ZjPv6_#VQ+Vr@m>vnKi8K9RZ&s7BZ16- z`6y&BpNa2qdk`E#X!uOMpH7Yzda$&BmKUMhhU74ALciOg&s1f3r0MM-!vqLJID!hu z1waUTWdqpV#g;OW*QzQIpfHOza+?T{%kBeyV*m!|XbRviPV<qMU%Qkc-3c!(1BE zESi|Xp;;Ng;aLS}RwzbLjL^;|g&#}33H-^}%CHIi2%_=)S#MiK^-AlV-h>We=2$6$ z>CO@0p@$Tzr$uj3j4G_Zm<3$W&ak2i5^(+UW#0dTPjTr(Kh3y?Jgi|4c6Y7Tq@gn!4jGL`sA_V( z3zq|iu$NCoG~=Ob!w^^iK+PqZgAWk0Dd^4=J}b+$me67sLO{vEggLe5mM;aQ1cnX; zH8t=9j+Zk!c^9;PEIrW=Gw`7hNllmEVN9IV5yTFAIDcOC%KNV*zLo3{Bu??49|Ay!57j z02rYO9g;9Jl7qWgyLFqN_<`@^;~)93^>_NLZwxeO!u+V;w{d?sfnJUaQmVkG;3eT0 zNXYD{x6i;IHcmKN7f7?;Yibb;h!O3>?{;8$f$aD)@x(DWwt%-=l>ITFrVE&`lj8e%yyXPFbs0+PGh$P=JpKHYRCoN-g8y z+ce|qrN93Vm6VaH3@6AvkgAAeR36S{+ntZS@vnV@9fc2qZWqp-gKO8C6i~c8d^1DM zp^U0~oa=A;`*^m5nGpy`;BFIr;%A=b$A9R1+1cD+yEcUFjs41go4uU@!@XLQ1DmCJ zRpM2`n^vv^vcvreVMoLJk)9vPYY*j$CA5?4h^2lc@$emY28A1#zuM#r`} z3jaW_dMtnez@R*u_btrM<0-B$ya`90N0|JuaDNZW(pLpN*@MBMXH=FCXSzBAH zQ@|P<>uYRoY_Yqu&7eP^7>y>L-^}T86V72z7B&n0ck{@(*_%h3RGRyF0J4Z$Em-Wp zu|={v>@S=-&heA0oLpJrSi3{l0G;j7)wttjR-_`zMo2A`@+8ZoYU24q!5mX^lQ3Ku z33D;M$B=~3(|hM{Us&B*IRd}YBd<1o?8m?bH+OU>mkO|8xJ8t;7%sno!O5@01=c{4 zj4D<9$oIdO=byX8*2X$(>(f1YlSP~TB5yFFn1uX9N>5djzw54TeFO5x1A6 zZ%5yng_4=~XBp%<^g37#JJirSXHT+Hd;h7GWtQvr`$b~goiHx2L9J0SjRKV)c)#xs zz;pl~NQeqlflbr4?aNAYtMDq3+KJA#!|9_2P;U#TJ_YPtx^4Nkr__sO7HwRXMYJkq z7KuR$CPG3sfiK4-z$M=oQse!mCLSaG(B`8zzkc=7V-5TxYIWekIpf9a;^r`1+Pkmem&1~xn1WBfFCjn% znuYAywFH12Zuo%ND>tT&zUF2D0kQ~rh89|rqR&>B$xpAcQ0qh;1!>nFYfd4&RKX4tE$0MvO-lRZ&en-Em>2t)4o;+2v(Uw>wBqbjQafJ{Y25V*o`3?#P7!UY5daHt)w0Mu{j0jB$+(D@?J# zRZ&@@H*nUXc=eJ1j+_mgM1d!s5Rbk-b&BWBi^2+GXk}QaWM!<3v53Ls6;6`NNmffx z$w|19`P3E==I&vTVtU`!!&kp*^-~Yu$p9`sZnQoCMFCg0#Q773Sp&;5Qf#wv`WG;= zF6JVbaCgelfRBFULu_tsuwHxp?(P=5{XYHOF{vyYuZJXXfy|Hr7(#Q~whUy*babT- zI~wNgs8N``9Q-gnHg>|;&={#SRFZo|KXY0*Pd&w<2yi$Gya%4Tq${VN zNaxr4rVdt=Ijv~qo+vBFVvyAQVNVqkbMPwQNhmd`!Q>vy49F7PanfKoz{M#J-Xbt=pTIyoQmk4K$lbt)w!ugY&IJwFL zOG}(-@%Hz4Z3JA4$J6;y8#*NuBPfI$GRd<n9xW-8l!5!V z-hBM_&4(5SXYzjUPR*m&K52aNld!fe*7xAVN>fXQj4E{5>OO)z5dZ-QOs3&vFiBpl%hX5|QosmwqC768GV5g=fGh0j2TGr=9{&x|BY)tY*~78hW3 z1#0;5+$lQy@K2xO!DA~t*zRyLW|K5E9v2Mu29!H{_}(52Mo^TH639VDsw&4!AO{jq zITVJCfzd=Z9WAIJRn?>bY&QkqoeV&d%*Er(>DL=x`sudluF**|{q$KPPzhQci7$CnZh4Umuyq>_X1Gakwr8x!{>mR3;@l?@L6F10z)$kI3$4i zjZ0ngB^mf|D@;Gv{DN^IuNxsHIN&j@-&Be?y9&UZJl zh{~-(trS#wrdS!tD+PD+Dn*lW_tZA2A}Qf6Bq0af{`O06yZqbFJ^h+vaeT*vq9@P5 zYafA+zXWf2)Fx{MZjr6dLljlQf*NmyYgb-icfYScn8F_y6=h0PE|S180*2sVUT+8i z2582Q`M`hZ7tqmPHjcuFrr2xL&arL>E$_o$rlw7(J-_w9X_jmFr%xT{;?g1)@-`(oAN8^%ECh!C@4u^kc;lJ^I!-sA*G#CNnQeKd!ieW3!a_8x% z?;HW{Yy_9~ji7pvD;ju7z_psYWTyZv7-deT))I< zywV}*u$MPrg}@9@16lx}IU@)!_c-}E&kqq|fGj|(4GV2l1Lnla6n^dX`Nh*LK5&*( z_5DN3%RJO-b1r1`+}Nrrwud9OHn$mUY*B9Sp?(wo=lcI%Rl*L<{Yy8-6X0S943G^V z4b9>h_Y$=$@@*$O`V$vV=Y!6j44~D5FL|5sz7N3b9|vn08?EzH?j(UE)^6Wq zI2tk>4<~uEDl1BdgiYa_Aq;0Oe+NUFujve|8374qrM!b3O$T%Iu`t`rNfx2CuM8GC zXlV&M@ch$c51wY>firc4tKqM#@Mycu#h7yp!zK30l8v2Rw$?Tot#6Zd`e;~SWrf_a zrudWL2h%=OVHAeO5Qdl!9P67gFrP*Mlozx{iG@~zj_%q3ju^pzf0sD*r1Juvc{e4G z$%@LcBuWSK5S{3*h{%vfb-QR~5j$}V&P>974gVC2bp$wd<^&HPTjBBU0*}TPrwOzjHmZ{K{(xKi z8&7XTA}1&Dl#E zU%YbT&ZmZf#~(3^;_PI$uzgCO+>%;1y2N>CwV1Ps9XK;O*!Xj%l~UQo3vx}5|# zPjP==7%^!Q-S`mzG#;B$JE%>-s|-Spyk+}xYe^g&8tv}*g4gJQon{3q) zU^EH;V<^i5@Auukm-GIy!_ZJ4*h94lyTBf%VPUNiom4XJRP;zRUnwg|_h$ebyXFi{ zUYJ^~K;<#YGL*6e6YyX;BE!A$egdlDXXEU>Z~C@3zF~1~(^Pka-HG6_wNp%ENVH( zz!RR_vDvf_R2XxiU+g;CHMD2Ozz9Q3(_VOQn8+V=;Qqfgj7yh{haN^ZhsILZG#UpY z5m^*uL1aLt20RcDjpvVQ&;LJfdc(qJgx^RYFhulH{2W*_vos?~wLowHNx=?7 z(_A=r0I(xlw+zIb_s?(WG%$m#sqi~3w9thbzSUmO$rZw><78(}(mAur^68VDs=+_7 zyvT)4hlfL(2Sdgw3oN*Zz`zsh<1v@Fw|KGk{OgymvvXsOVsi(L$EZl)4j5^7PYO7~ zfeI*rdGFsfY)7>S?2+h~kr8+?E&lS<6o1^m0RU`n8>?r~V8@8j)EpcIk9aK+K>_!J z(7%!mv+sW6|9;c!7uN3{zBf=^Sa6ogYpjJ+O;HDyWu)W?a5J!gO-5$kDkd@P& z!}XjDnPx?x>F{o!IP-c<7IV6jLXZ7ie`Rs$DaG_O$j~Qo) z94F9o!+?<|HpeAbws-jS^;=wi;VNq{-C%HQed_(=rtNE>R3gd21SE_KF*X>2P2dAN zj_nw}YhusLh6F|v?_V5Mq?1kYha`QLYJkDW$XdpDY?vDnqmseY+l2>{3}MG&9roY& zf8J8VKXz}P50Wq(Q)0Ee$|v&I5zLVs1tZOcb2T1s7QleubN{|!K}a*W#{4xvV+e#< z1jz$r`ONE=7htvV`qRhAPMxHC<^;<%_*2KGUVpLOo6PUehm4aLOETJKfEc+?rhHfS zc6k2AEnax>3fEt{!rs33Z||Ye7^(^Yl9RUkQVaqTjpqX+P2g(+-(Xv?LkPPh)!uJI zlnSa&$wuKk_Kbhdzc-N54KT#q@i9y;d)JwdpML$q+C9OikqJPUoY#y#z>jo(0j4HL zXBjRb1BC!h=(i9c3R3_F42S|bCIf_I0Ee49VYbUxO`$jQ`d;Jp$FK?fY0 z=1tYVvnRzcm-i`g#%A;-?P2VgvF&2pOxuQbs}KeRMtCY%EcU%W@zj;0-haOaV7-pm z+JG1VXeu+|b3|Q+-2U0+*WEmm^*{B;9(wxmdx1}LYZ5`ugS^0Ud5w*D4nuT%ISx1h z04yBT0A_|Fm<(ZH0=K#R&O~bN0f=@G@@=wlBZq|^wzPm&7oi3nP97(oS*2Tt{H6N- z^y)DlTv({RzRSft=K;$(fw4@W4VXk~a{gL5=F09a&)vMuvoBnpK4s*})k)!(`Xf|U zSW;8<5Aa}9_#zP~5hF7O5`AC?wC&E81-218rm#l}1F|%pc>j(k9zN>*_iq5JE8^xR zv@=muvJ98I5CU^j5^BueB_#g*vjOoG4(o5dqU7O^Km6fW-7S0oT!3M6Vybv@@Bx0H z_f-T7EYu#EnC%y^5Nc(ZRbXHwuz&@S8`z<_0sv+KLi3I_^ZGnT-5eHslL}wQk4@mm zv#aE_*DusYuv$lfbNjiz+vTAe{)Lcn)*{E;=m8l*K;dFfiM9QLZ)ZR3-{$!V{1;if ze65DRJ!$ZGGv_x9AB{-3H#sa})6j3&P_PHu!ED=1n}RKzZ6oZKUJal%J<`-4Rh+y- z?!WIw(53Ifjz26L^<{=rnVVTko)R7sQZh)AyUF(laPb#D^_FW&3V-6!pMK=7;0p{u z!f+yqH;>=Xcej7x1a??jLV!16U$r1Kh9IPX;dAT#4g%EN0|W!WLI$mfPntUINv_wi zrD@1NwL0o!;NIyUc@2i#)QQ>$98(E#st3bA8Jo2r6LY&TdNF9uB#@z0Id@ z-kQL_{`^(eFV~)5J5jm4gOADs_$n*BEF5d#Lj^WQ8anEm*u~f~d~@pkwG_5ZzDKYD zNz<>1>sEjdN{kh0EiS-84G>T?FoV#*wb0xf7Gfi7R_+>2 zpihfDTU~-Wuj}k7xNru0_#E-!^K>6N$Lhs1Jb30LuUTE?$?hUg-oJe=_{`>#p$akKQUAiS(?7EpME3LE;3sjAf zk8vLxjPX>OsN_l}KiG%;7eD#N>#DFn_4xn2csKBoczSJVyj8UPi_Q+aZyP<$v)v1r z1x}t`VDm<3dh!uMM8P3s;0X&t00 zJi)OO%bZ_a;*nmLN3#wWL*xt@OM(_4!9YIo`faaRAC0)N*XP>C23N1#n9TEUzjTeg z>$e%NZJC%n$oFTc7SsIs&R}Q*< z0H3`GfWebbip^`vsXUZ<8jrj(uS!!j_N0--P-sB%k=#ef$H+@Th1`(~d2Iww-uw%n zc-`gC3?DvtdwKLrzxRzdzwY~9zxLaH>v2oeGf z?glsz!&F&>b`A^e>4D4>E9lG#bp8ywcouu;46z;;&Yxwqe*faiDv$RTc|7m(aMt1! zfvzASc1he;;&N5+?6}XR?JYi1hx`Bg!b^Pg-B3k&QC9gVm=BQpE_HD47;4GM&6UYLPLvdpgv4L^_>;F)Dg2q&JoCUE;jgWX zzUuqmbZfVW7!}|8>DAHqT|HiX{a1c)rFi7a+rC(X$|H(EG!!Br%)rf?y1)T20)nQO zpP^1`x^BO+1jlQgTt%mjO%`(OT34)@$8l=h|(Cb+{jIY*S6<`30&(AVwzZ3(epM zt-IU0!3IH_rm#~+>w^!eG@gY1bLSFIJvHxA+^+!~sRJha0xmu28{>9bE>l_H;~0IE zQW}`4Z9ZKQbdj59dU-}GK$6%_i2(_(66303w;Z!G7_zn3XM1ah?e(q6dj4*0 z0E1g=6!m?z-N*YQG#WwW;5w-Gy)0f1{?M3%k2VZjb7|dz)^Xo3x9!rjOO+2Mp?|q3 zNhhoM&@V}!RRfSD!;DMs7U!<1jsz)Vy>iN;N^uye@=#@Yl5()jJVl{^2x{8G<_fBX z6q%0vm5;q5HG#|{|+Ac`CqcwUwyy}U5jo_ zQ5OQTS~zB)gU(=+?>lW+=t2!yCzeqSol{fqSMBvydp*52v@=p*;^iBa7z?r_k|)Y> z!EiXF-|y4k-eqrnn_;cd#wO$2+f*Anl-s+L`8-8|n)a?aV4A$2!)9+WDIg@zm zg`o#MGLxJ3rI44d3FW3&Ssm{xd+$r6u<+ni6jXpA{XwM%VZYZUBg@JY4hXHmrIXd$it;)No9pX zsAUuANDx4+*zDJ9L$3o1ohkHI1{NSy*l;-U@Zf+aQkC#gK{*^_wHORxuYkb--|b_2 z1LzNHjbJcB!=gFCQ$g}6d^P`8zb{FCu&^TzI(&%H)brWFv<$fbgx^(4vd$_i8=hS3FuUezhI8G$6mmtfDM@#w zR(8=Cs8p1MA{U8}0~CQrVOv45U9d7PjqD1}lS5%w*oktAQ7mUgQ5HW#tpW%2U?>n@g4KT+g z%TK_&Al~9R7QblACfgJ`y;bMDWlp|J{2788# z(@Bb`?5OYre*SU0CBnu`CW(@~b$Rj2zcW1h%%@iT`QO5jQI)XoKMVq7u;(8?_KQ*_d!Y~DS(Ilet~b;BF&pT z5wDd-`1VWi-195lhrgrM0d@TdKl9yxRro6&_5BMQ;E@R!O~3;ayxi%oy&>nLN(t%! z14OZlmqDHw9CV2|V6U+oaE+-PbLQKs2x>bTaEm7uN*GKkPLVX7^?&$_zt6iL_|AI$ z1K(L4{_O8?5~{!%5D-j|)McoS5Qf8Ht_py{;J`Uh$rD(Hd^SQ~U|3=bHAkRB|=v9PYo=gCmzu+r=`#$pzIx|{nTD7*mmIzUm&rm7 zk)2GcEYjPb|E>J-Pk*lBum2e$Z~zhja^N9=;{?yg9;F2DGe4jhML`jGDdps|R05(v zF+|J)81j_yk+Utu!{N>I3?HT!I)uE(>`2S49)2V1Wr$ZIy(08V%5RkF=?lK8=kI*v z$u}JS*#O^Q6J%~)v&}7cIZSQJFjliZl3mb|2`>GQRD3j0@|ni0Q#jq<8T4^X9HZy1RGlJx*)ei8KTrB788V_02c3;131H-Bj@V~ zK+|)3AC8VvY%l=4hY^d)qG6UhGY@je%lNkDVGc>J!;HYIH;OXt?N8gg;SFwfC z)wr|{Ur~H(`>0Z~!m^zxbIWj0+fK3taQyk-HW8JLQl(1mN@=|!wT+CC(s>p@f--OL zxX(D3Nt9xjf-!_`Wbos&cprn$K!1|nPwuj3g0BrMV_d--6K_t?8LvfpCwt!8&&{4{ zcZA!Ht{awHy?}2x{IdZrW`d_rGkx!OrNonZ6Io3Tb$#U2Mxt>pHBg!5mQU6cgUTgp zg4Xs`B_GITaM+6F4guE`s`(o1n8I?m5QI|%g>I{|*$Q}kc0P#5%jX~i_u&V|=mGTe z%-#at;%F~p+h_}HP7=!uU*at>MyIzpHo2)b>%y1r@8&W z?@W3p`2>G6XMJp^VUErRsE=gN4|ewDG}I9nhJQA|#Y|w#7k*0o;Q@a1M}wPxEd1MT z+R$X$ZKA&wsU+xirz|LPjB47ni=kdSHBtJWUMv{P2HPBcM#PjDGjUZmX7T>-Vn}gVW%ll8Wrt3uC zi;o8JuBqr>wG69O8^;@$xN|Dc9DGv>f3qFm?C?{}6YN{;Yw()z%A*fmfkl+0oV z&Q;-yRDk;*+*^Qr)?eBHmp8#;1c1p5z+?!3AKi#$@%kvX-z)y(KPu|FCg=7l zbyuZu>s&q#m!}ZV66vYKPbl%RwHUx$VYk32x0rg8s6f?y6D-nW1Dvy76Lc4(j7Q<+ z96t9zN2DX-AUNPSgtSB2i`ZeE!0!~XpTH;W2XQ2gk~^Gx^3^b9{q=R3CV8e|j;{j# z1r2a{GXNO)0)o$Te~teUiOoi|ZB0CH=vmRPuG+S{b>X8?BXmCIbWPl)@D1`c!P;mA zF-i?~gH#h!tiX#@VG`*?Jo1~s!UmbfnI-616X}O zw9P=|f!t=+U7inT*py3wzx-|BfB!O{d;*{SZ15b&JF{8^hbq&yJ=L-4yHr!FW~gc^ z>Nc0!NwvZisCH0IMwoyzDkT$@P=XNLGXQvrA*&!}BP3^qGF4=v%7aUW`UE=@8fcu! ztBj9@VT@Pr=0h2;DU@$E-#?Z5uLk^w3UI#_%#{G~H=jzpeVaHQ6VIL{_WO#Q6YHU3 zSXZ>UqLf5#E1FV~M>TC~%NXrMRaFirJW13RMl1_qvWzB$s$9q^`jk$wQ0Kx>6`CQ_ z*M)l2>R33mg{BE^H-(pNOxeC(o4eok*VW@cRDk=H0N}R^KSNALnD-9yWPo;5wH95M z$V%Mwi6IiY7F|jGnnZ~-{amj_8wqnC{uxm%lTy&h*g*=@q(V_Z4z45E)j>UK^){wV zZ)5&8-{I*rj)&RKR}cO}1^D8(j&Q#!!1K?F%|??Ux=!Rg>)EokoS%tOM8vF{oG2Cm zvBdi;$y74H1Ue;;np;ox!n~+V+n#`*zRz=}Ujq6E1AO&{0Qf9|&+^_Bzyo6dM9lG< z%Oe9!fPwp;t@9A}of&E01I`7Ye=xu|$Q0-6sao7K#}{ABkl_sa4EgfFKN#SW#&~Ry iFTVUmPfqLqYgVl5oz1~|+O)QqjQ7U)h?0-@afKQlTa zh=bOu3N6!4*m=KJ_W%kVn90KkYj?czD?MGXefsPx}mh2FL^Gzxf;B?2E)#zejxk z1>z$Be(;3&b-8}Qz?Xn0FBL9|+Mj-!? z5yte?~l#JwyDoIrCv{sO5ZGo+6ZI0Ddh0f z5K-w`2>_@`3^=AqQ`Oj3vu$!zlgOu8vP@C3HdnPi!BFu+pZMQFvv9(vKW)7Fs_|=L z+s_1etKmO-6o-|6@u_&%^0L`K9h&;ms_CzWE<3d8?38Sqs>Wb3vcL|fh)fmtayt7L@f4n5%*XGrmhyU1wX#S*6{`ub! zyBEp~zwCBs>%+e7rl}tb`!d!A13kg6I=d2XP@@NhWyG1Q!5!1Mmv5eqClNMI?VYXInU<5F? zW>_Ms3Dvm(G6AJ%r-TaCQSv^_U8c5CbK9_PM>hMWZiZ%u=`wc}xfgD;+4C@W!*MQq z<8on~To{{k;rXu`mmj*lbO3;FMR+E_Zv+2r^VLiLzvT_yV zO4h>Fi-1~JwU7#+a2_`Ra;}p{_y8oaN`fXzqY^u+ZVhiDwHCRKY1-DwyYM)c&QrXR z;&x+?6TMvVFsDiYVB0uy(i_ttjHd#SSg(cm{!q9R;ZA}-e*x~+_-~&h{M&2(&Dx(% z+pf)N85mc!mJ=GMHx=@f!b->`gr3R{M&ne21ANUjU2DK5WIzIBv(}>k6{Db?tqrZU ztFI$-tqJSUEP46d6d>n137JR{5+oZ+p*rmxDeWz6D6O4&ZTN~c*Gg@o zYDd*^s#Bs)_EZB?1Uwekc>UW)hW=8k<+xEb`x4uU`XISiHi&2Z~s=e+u%-w zKXCyF@DBPB_yOeK0(kw5_$vUP{VMUx@)=-0A;wp~N}PV5?|JSWvA?)(hLfi2cH6}S zt~k~Mcs4wP{6Oh5Do-V^2rrQ8ZMTpbSmDfqG$9AF1`HyTkcbo@OUk4?K^mOi*;>0qpW1H8^eMqJzz?$KLkbTFoXUB^)XH`bxpS%ssj(GD@HaD$(+BX>tpI7j zRZdh$Bdxtt+qoOc*Uns1b)(ddRU?#%X(DPC%MCnN3M2qmr9Dv?SaVNeTc_NG>W-EB z0u7rSM)Wb^LKW}1N?e=^fBRVXFTtGv_k4TyoOs(sd|-7RYYHP~Z!Jz4fzpgKco9_y{DSNoA_`^e4M zl^7Sb#tFeQ*6}$&55agK`HapJOG_quK&?{^lymP+zonZ=IFCZ4I5!{>7L)=cQ<;*d z!%4UIuDPdk=ky*m2PrG3l$8OgpsIz{SSk=eNk~tE_LR2F+^A|z=$ghlg*8WQqO04o zorX>A2Q-%xa9(kJorg=pqeu590d3#I+P{VWq4>ay*JXD#&hVpIjci5@ZFX!_*|ZuP zM-zwEU0@30kP%R04lL2^M9aBrz(vRHAklg=rAW_=3FBkP%Ta$1b`i=qUO-5NFT&e zdd<{Y@)d9DyiV2YNUiCzDTTYOrUCnQgj8{LmGc(O`;wr!H~2Wh-)zy0oZ5xkcGqOr z+MP36LmkjI;9)fvWC=Lwnq<=$kWCvC6tsv;RKby~h^92|GqEDDg1roR0lK%{h27e2 zY&CBN{;_V5D4geUlc)pKTduGYvgX2e&^~+|G}jKIa?ZC}_8 zW9=LE{RsDk?uqEEu``-tXJa^kLXdP;z&1m2N(dzKh=COVqp+$AAK}Yhz*+#&*=}Jp zuo?*Q=HLU63T!|yPWqN5~Nn>HLBeH|k;s6Q(E8Y}*;3xnL zC<)t^joU&;1_ogVaA<+t0w(M@I*^iFX-$@wv=@}-Vqtln*<0=+(WTWeU4SeLN9)?eGsb^W(n|C zO3>T~{K47viLTVToJzAKrxjFI2&{-)!d#$~o|&DE267`H0EL|a05CvRgBHvrlz=3L zU@_zZyR*HZys*^4XkZl^xA6HU;luI~zBB%>y}y97*@wr-9fMiGv&YoIZ|HxyP2ba&CbYVg`qWJQ&Y4Mv+U2}Yi+)$7# zi)h96`Zzv>_E$DvhFmwaLwLAU*{=!8yIaR3c!K?Y%_p?9qaa=pTy}w+RqFlHfn4IA6cus=4Q7#Ukwc}F-nOj6hQ$eDC;o7 zK-jJMxFn~Qxx-C?AqvS#DG!iJlNZV!!4EUQJA)6ntW#EyWb2pDow)ReKmM={%EBcC zI6~$~kb{8-;z!?S>E){kszt*zFN?yRPItZIIfwPwXl_*y60x_MZ0Y0cy# zZxxJzq(V8DK^AaDl*9k+%-?+c-`x2V&)ulk8cC+?h8#>XcTkp_2{7a)Jkm#1VXcrN zA|Ny5cB$AOy(9R7%WJd2Yx~2D+|ED#*!c?|eg6Y)m?YeUO9Vg!91(~pLf9DF`2COC z^6BR=4aa6S)b8HIQ?n3&RN%LygONh+@utibBo6^_0%WK3phhlY;p~q@y(d2L3Gw8U zZ@Uzjq_<-LgC_#dEaJs^ESA;`2GNFbEsW}gn8AG9NswTV$nJ9TA z=kSl6|5v~Je|YNW{`hnCrB^=v-2eY?-dKz?lHrcGqH)6|JmClT@KcT^MLb8c7h|fy zfAi88ANbU%XD@$z^OcJajCW7k+lSvtf@gM5%>UzSADjKmna{2@8)wH32*)LI%D&v% zt>VUb5Jto31_%?fW@n<^pZ^Vf*~phmyiTOuy=6U}Pska|F5I)+6P|0b=5n7Q_LP0c zD;ujzLLnohmXe~5@w~_YWoPek2mzsZP_xr0a z=z~1-jqUyIr=OkXsv?FM@Bg!ZMSF zj@*^A<7&*k#(ggLDPmWicT8MIeqG`k?$?cQBgC*%;}e?2oOp6c&NUA_lMkB0duxD$ z=zpH#T(w_TS|5}}Jq}50Rt(nhyg_W?r@Ucy5cy#!_hAp80{II5`G4iR|A!}k_7MI7 zkY|>cUj6jf{vSWO)vPB{3huH4GvFy~FfabE5B%Kw{yP_b^F!y$$>ss1dkOzLrAp0T;!@&bA4;> zDK&Bz*&THzsFZz&h;(wdo%q%e@@ff*6^Lau-m{_%7F^7s4? zPTUUvK+h~LzV>IH{=fbBc54E^wR2~KMe#!q{>XS*CfP1!Go^}i>bmCg<>ppD;BU4Rn54JX`9JYT!($ID z;$A&2mmv?k=+CweaTC0iHVJVZ`MQXQt6XL(kh;i!Gw=`et>wknKmFDJ%TL~@#`%AC z@$(P;Kkomj?>$#cHxc|70lowx(0IYK^Hb@6ee$0UDMXV%$Yw9TuI(qEqTah{fN5s{ zrHtGS4BT11^lGJ)5?PKsOR8}#ja&VIYa6(J6TTa-n{?Gs``)&ipk10cBgRG74?O&E zI#?u%aBZfxg2mrlBo%zcB95yVKpf>7>Qz$7}n0qFN@D0 z{`%dghHujVKS-NmEM0uge76jKY7hppD7QjUg^~|I0}ED4R+v--{1CoG_{Y!ui#H?x zPrMoUsMmW(S1%&?FCKi51Hs51Ng;xbD2qUlS#}r<23QCf0RR%=C= zrm7556DbvyC@5p3P6e{Uj3~1XI#Lj3|HPSp;d}o3ZxMd4w-3Kr!mD2wlN~Xi+!V}a zVm`N40$_dJSl?7XZqUBAPUr4}@#yaG&5W#o6S>YsavW1Q1R$7Elm*cO0f7K+!IuL7 zLIf;CMvpvDET4PHx^iHEOMnYygCwIt)R zAs2EZJ8FeH0xZ}n6F7w7fWd{cMfLiPgeb6MS)h?oAyqP405>%kz9>VinydX&1SEr6Mg=T_Sa@J=vblm5n3lNJ6pMznbTbS1 zK^C~DJA%~1=h)?L0RP6`pLyo5uKnUmkCd-pdAH%e_(k!BpLBM2^rm5#1>AQEHpj-= z5Y|SpersGC8fLJ_t(ukQwYa(mSN9<~)Cqp&i{cyKhVT7kVEtS{vLQR={S+243^!p8 zS}wsIaw3pX_gWxEL*MJ{=FjwAzP_|OBPdiDj0 zTLutWFfz0z*Z?~LJ_WU6N?=yH7L8d&v1}OSboVUqHVqKH7L=F|W$U$TAtfcnXih%5 zL}EB_BX8E9e*TC4#!p=N!OuKezJC8Zf&co~#LxYEndRc{5nn`j|7GJn=i%Jucf$To zqrAEA#Q^u6ZFS!G1jdbd;J06nJae_=t6#r_?jI5rFu)BgWtzzxHJO|e-W=3_Ap<*_ z`ehgn7C<0D7!E1Uo{r7d_9_dYp3uN3|k&zs^le0K5fy0foo<9BD|L^ZSTVHzh zt-x1?U;hs>zxczB`y0aVQv6^2sPTv23v0tS3)H~gd?pYeGu*&~ktrCA2k6S<3_>7U zplDTwK)th%*A3pZN)0(>B!N3<1sQbw{SisroD~G1mngvof)S=Q#0F?Hm~G0!hCHs} z8e=wOS(eNix#4H2}cgjO;Cy19ANKI*}Yos<6S0 z(R(Q@G6<2PGlH?av5nU?d0BTRP|Bc;&|wzfz!2!*{Si4xgfpiIWqDwN2r7Z0i7}>i zEUbezI+@lbjR(|2Vk{Zgk>xV*iBAN;ZeDNS0H5LbHJh$+8foKZdsm*Y`SKgt2=m~{4*t9=204hL|#o*bjF9FHjjEv-DiHz_A zsIvdTmJ|J zw^F~|9F1ycpL)I^EtWLPn%pFm6MRPrz_|te_SAo93KzDqP8R>U3afcgWdJ$4U8rKL3+{_|0_tzx<6IgI=Hj zN?-_#L2EMBFs&0CkI+z(QW4Tze^Wv-2vqhH$a#Nv{!5x_ata^X|IQ=LP zV0MR}3nHwqV=un*y?IGtA1rc;dG{`n#?0eZGaioZq?A z|DK19ht2@@R`ky6{vmubbP)Z6O`bXbm-=a+MdGa~;Oz1JnsM8Mz-s z^>H0-3g4g~ICvj7Hw?p$P74DJ=~Mn1fib2vU@RCCVo6aK2W8+p`+)Ffp7?qA`5u0~ zF)IhtJgkd)6mmIEUabX>V{4TY<6t(l%m7!ZK*SVKZq;Xo|JS)6{@{i!$G_Y1?rSf7 z2LM(z|AY7Ow$nG*J2OE5w}6L|97jBN?$6T<&vx*O(AWPUxcaTj||*>5Trs*L>>YPpE>#KpZMKw z?0n(J^PS*#-TohX&)Z+cqcAvYaKT^1yI2?vt z)qZ3~PzoCwj3Bg9D@KwHEu@md3aS)2qrmm+0q}!o2#UKt@v}Aw9sGl*d^c?5*~f;B zlf^Z2jZqq##gR2>M6jV{4TXk5K9DFSi^|0R=E+}q@JyKAb@%Q!f6>|9xjpr74Ewqt z!rQ3(V}thxxX-|V1Y|+F1z$jE5N?g@K%zIoe8mSd6asD~Uas-2`~L^1JW2F}x^2{T z#f!iFR0n^tKc!yG$yI}UMgZ;*?4b4^{TaN$*9?L{99@DWp4zm0?S>%^dw~F@@Gc8r zHj)?_43)wF#R3nJY8c4Xu|A-9Q&0TZktcp+YY^73v_@vlZ^Abpd6)iu;B=8+N(|&) zf(qQ@XHWjd@4FlPw1g*r-tSoV|L9}Js08dSsGtY`Sb*XH{F}T91!!mxfu*1^WC5oj z7b9Le`)OWj6=k>?CBlIhzVQru*KaV}-J{x{P<0Q3G{^;j(6Oi&h9MAeI3B`2^6LSF zWEdizI)Po=GNJES9I^p0lrciBupve{uvFHCN170DH^APg2QWT!-Z*(B-0b%2JS&If zK@4>Zzgjb?73-L97-7Rq8@M*iwQl&Dpeq5AhJq64O2DR7<@b!AdF*aK{IC5&WV=d*75m-1?59D(!(^Zi3{Fuw6pFAK)&`z75Nn2a z9jC#_#89Gt`bW8xdlBUEGbexTp|RD&yG7o!U)CMx```Vry|t8o%HWR&IBj>{fP!uZ zf8@3ILO?!v0Ey7m{ps)lzVztlP#7Wwf{dPk_~vi@Hj^9M?6(G(?@y=~6)80+JMKsR z66d%HxP9dhbo{+@+nPZb4mmV{5kZAS3D!Sl3`6jt%t~@DD0A%kfTjsYZw`ecAD9H3 zH`dOF?liC3ibi=*7(+{WY|dIHuY2sD^EV4)!C2Br?n5~P$p^tHtra2$C(0GSf8(hu z+D%w zNQT{%1%eqbeD!O*)TRF|W;;79XERb&;hh08(V?W!(n1i13LkZ?We8!Q0`#5qNno&nxJu z7j@GapbM5dmrMr_@Z<;oB_0|FMjA> zW4`_#Tmdh#-g<1+COuejS2KSn4)gCaA;7-qM2>{C72 zO320b!~gC7&pY0?|I+Pn-*f>m2KW@AhxIR^V}vgwNo`m&eVMuWT;nyw%n-}ca#b0IAp*1#5hyVA z>EFB{S|lADkL%XyItEa@(Gx#ql?q~6$aCo)23Q`5P~xed=0Rae@Aw?PSDzNyId-iN z;oQcXUdrvGzu?YmTD}^uzA#9C_}}}3&%LrY5ZMFCgQq6^%r{RomSvX*^YTCWD_^^? zF)G9MqyIB@-}^tqL&QCR8PexQHir|h5j2}STa6_OPSxf?@HrHQD6XZua>_#D2;_U-rjA3S4kt@b}? zcZLthd;QceU)X!}U;0zudS!3qBoAs*@K%--tjX<|;`RB!{>Q)c7xtd|_+R(E_x>*s zMIZSV2tdSW<}-ffhku0Uzy1tcue{zG;5w6?U6zxB#xEnkDM2SkhqWJ&ko;I_z*l<% z4zCa(9w_$j4b+2~K$q2saT>pQ06f_asKjfy}Z zC@3N#*$ati2Y*2;`8z*{Z$1&&ZFB!OznSBLLGi}$J;U{Hm+7zm$R}SRrzp=x3!LoH zaxzQ#<`~ORgun7v|H|f{|4V;y9EwPmFtfvWgwR5s@cF;>w|VKgm)N>`jqNt=Pquei z%;w!Hpl3%2*^zlHVU_-)V|_LOb5H;bAxr|SlS05+sVJcc5F*Gix0P`)tOy)l*4qOS zdho4K>g8HT;n2Q}xD zzz3089je8KJM`>|T9^U;g2r;H7WB+=9Q(&el!`e>R`f)D<~9a!}74dh>t-!H_}^ zFgVDL^msaw+jY3Gt3e6FR%I&#vZLf!N+>&quo%GrVE}OGSi^c&A_PN*d!VmJaQO|k zh5Oc?apDZ}g;|pfxq$_gTUn5|Vs|LVy<@CUzd)B_V3Ccw;E zfn!vQIlu7}KhD>`^b~vBJM3<4v$wOuY;Ve9KBrCzcSjO3z-*NQj&Ag@)ilts)q8}= zAQ~LNFG2@jYa?uZ1cMR;T2@$cXfhZ`21Nwm4GW|~09miX@MMHHdNAaL7mSAhKviuP zhmf;j!GgOvX1KTNog`uQE}X+RpX(^lx3HZXz+hx=82z4&|KRB>lLPSYedx;QFaN-w zJNf%R{;^Svg-H&AK1+fO03`9!x1P~2|HzNo)+?`d(D%1n?d>s}OsN(XO-ke=Yx4wa z1u`(L>ie-&FEAbbi;iM56b*_2j9RUa@y#`?jF564^>qUQkbyZCB5)jh024AW10Z1d z3N!BZ=AH~{lHK;KUk|*MR(c2U5yt`38{jQ%>Aqw7H*z*oG6pDo^7p-e{jdC)KYjXx z@BhFEIaoM4O*3Q=gfO>a^Ze>lVL-YN^M58mRwzNKK@kdCJbS7g8VWBi~0*ZUe2$=bi8rNlN?tYm-^doQ40Cf!mL{8+K zF#>op+yFq?;Ds~@Gxs0iaMK10*inE zP%oR$=laU8{d&8k`*~~Yd>84{y?v&W3DvX(Kc7=KHK|S{cO;M*a5M|qoh$L3->#BF z2q3`v=x0=-^)=XBM<+I5JcR6B^b-KLV?R?h&25X`4l+!DFoYvWKq&x1(A^C%nP8iR zC|jij0u)x+MsA$|x$K?5?+svpZZ84cJ@xl8Gy%>Aq`)-%L0&39$I>1IfdSEu%)||Z zfyD044o`mmm-Xcq{%mi;d^&02_nJ>!$7dBF zAgs1>#0bNpYy8+;>)?0epujr#akWt7tF>*_>2CKs9b6EEnPZIzrZ>(24?U!io)l{v zVwtdkOOjBM;X)=HA%p`igLeYI*ZSsh;1=Fw-8X|^a3hc&KE>Y@hy}NKZUfv+pM5|4-F@_LOb}(U1D+gtegMggD(6OW@diVjy%`qHI zBt&7tW}=L`-2hKL1@8mPNmfL+Y>wAm|BSmMYbD2B&`OA$?VZ5CEdv-V8rUrEl=6+^ zV?ZG?DgFd6hrfr!c?`n<#|ZTBF`*3CUwMI_|M8#Y*{8q8vV}ftwU|w5>$|n!yX{-` zqM~VPJSC)zI{2%ftc4@Mk3_p20=L^tfPi2Cz@ZBehQ$a)fYG2!`*vaz&a4woZQvUt za7Xhc=IY^h(veNHSpbLWUM5Tq^sLOXnKIy*-IR!}5F9taXT+mVDmG8ba#R>)XC56_ z1~NG$%#y3gg4~-U3#4}fA7K52ar9aw*nGnVu#b9m@C&9F|73f&?wwNl_uwVr7)Z$M_Gn*$KWsOxOt6%y} zCVTts`zh0QTfsM!-{_rOZ^55nc;O7gGbafrHmC(GYEly3G>}p+Td7u-TZW22UB!LUJ6C z9bcaic3XPCeKar*vkwA}We2UyV%EW@jA%F_Y_1bp=)-eo**t%Sjnk*F;ebh1lO%G} zKz&mQvSV4`4j8B#h2cOiDFX>>$k&S>5=bRJ@j#PU$-C15Dd47iUErgA7*~;`*8t>3zLDA6TkFxKgrj=`XzR^ zx46+lZ|~Z*uXotr-)BCbv0PNtO+(5~mR9>TvBNZt_23ENFv<;sup(}6v^Zh(x}E$g z`ila}64pjo3p=#XN0-iVvW@=pCr@y`{rYBEP`VSU8k@IT)_oR8ei;2eS%B#fK9CWq z0}g%JwpPI!^U$wg)kS8w=M0Cp8=&154xc#f%&&X7=Q(<8ida-x_0m(C3(bOj8pTv- zX3kvlg-J`pE8J^k8kdsXGx9zoApOG5qgQW-ztUg?S1wy`fC*$BkA7J|vA~Nl+gJV? zwS)t1kTbZP-~Pfc^V0L*;@WF1{A*kNjhnqaCbNF+zOFMlJK1kahv{CniduyLt&aZP zWdu!~?F%R(lm%KJbWNX~K0$fmH0!O-wprlf<~nDKAtSRs;ujUnTU9kQ z8S@P4dHZ6aL->Y+vP-#-dRkFKsF50CP859xAOXov|K$4Pug_A^Ab2Ca=RF4W zCcnCGV4x#l6bIDhX|~S(QEE@rIa6iPc;=aJJjJ)Z_7rX8x4O>N*S6W+y&3gOs%4_C z6RF807w#aemj!60(2tnWD;#QNh`=4`8@$1rH8p1{n8{hF|9spU z_k>99?(-(*&+k6`%H0g`;Cqe15THMYkDdiRsDd1aY+v{jENx8fox`ZIGo4TQ>X*OB z&h9o_+uKYgyG&*?_Vy~~^M)ol$sr3|AhS+bIPw}43@r3xGzh(JgKr#>0V|o^34Z8R zmM|Xn%e-e#5H6geymXcmm(FwH%qcFfwb5S=7%JdR!WT<4Yt@ccHIP#)f#|Nz4joFmRrDf@2xrSQhxq(_->tdif-IlxL|do4U>{J=nZd zo++g%*(Z|k3){neANd5&(}2$mEhMi@s&UWea(C%Jy7s{r?`D9agin4ffLUt*z(5AX zfI{pHaP{mTr*@~wnJT3&`oH${mpk~|t#(DWmgJnN8+A%aNZ_(gUfjQTQb1G;h)u6hLF;NzoqVQIF;{zhhfYt<`!nyXe zzZ$DNUeX+zpwirpsiaAf*~jyK@U*Y?wPj7^K2!FE z;2Ro1l8%{RyqynCFl|jx=Vd9MdtfU0M4l%i?subi2AG@s(wzz^Ib=MGEZpJWeDx#G z+->F1fIsxTh8cYM6%e2h@DQ1OKQ2~#^i~t z+>wxk9LV-hzWB+PcAH^!x0S>X0v%{U?!^$wxI`}po^&30dn%~kU zw2?o!{{kmk_!rKf;la%fu9QR0hDel{*EN&roay!+&CWiW%}~`~O$Kiz9ZmnoYd?MT z8@_O30W5*4k=I@QUkq|r|DSyFjv3(YCOH4J-!#G6G&Q9U>NhbbLE$7=ej8C=2dM|!P*N8|X{0Xq`;Awq0bv>J|JeT+_S zKwIOve2#G6Mal;+uyOw-&bMZG=)?&g8VtD{3f5#aDY3U$vb(d#e0!H>Z;EDp`ak+` zsi!1#Z0_GUbnp=i#2mL)d10u+y&(+}<-W7N?!cQmEBLqxKHr<*W%l#-$?X)YXm5Z#mR; z^Efx~!pAxIFk5YoXVD}`IYjq}s}%+A1^M8NAc7!}Jxo&RpZnJLehb0f^zi-0_kP6q z&1VF_c6o_9CF-20JTaY3SkyJkrlw8}NkS5CAXc6J@g?0=L#J+})e5kM*vfjXrhcp1 z&OuYyDh3FB#8b8!mHlp(%?)(=B-VnaP50q}%M=e?V&lrq$Un!!r%v+T@j8zdLoQfk z=*A)?wq|p#-CVW2zD>2gi!bJ=sUWXz1E=}IS1W(YKyA>&m(NW$LpH~Kjr|+ zcV2nljsM=Ir?E4BNUF5g$ z*LbXje_6&l#=;Xj%LT9R>~iDk4JOxjXm%&~titLH*+GzJa|lN}e``Rsj3qD!n*lR3 zpP{}9#J%p)|9F%E=Lz272S$A01LE~x0zg$|%EO=`0Z#>l68XSx%55NV_}I9lh&+G{ zu#=%GHbPUpncYN>KL$^|Bx(n<+)B8tTkPo~KPCF*U2uSKG~)Z$77RIPMIHcyBYlB5 zzI4mcQ@d91kFD&*9{$>>-^O)%6FYkvyKtJ&*8S1t^K4u^-@-rD!au=d!!eJ=0S{Q@ zgoL};Pc>JkQ(kK$f9tjDEL#Jl{W+>@$Qh(gxvHIj4pTpB3@V8QFgI-K_|)8HCgxUn zg@!ewDzUS0E?*Y#?tEg1Mq{JKlnJHf*oeZUl2($Hm`ZamB^8K>{4n}Y#zpayAN!FH ze`sUt#9iR8gm~l%{A@~u5U>!*Zp>#>nw-flvLM^)Bizk|S`ok;gmHXZo*j#51JDs8 z2!NF-u+{C{uv*jarg$48=yvj)z|Ni`Tsli}=_dTMoNS~1;+fMtw7JQngCUQ`lKY9A z6c{i~i5s&eueQ)%fAuQ6Z3b9&>A!-eIgEavOz#x^mBYf&449%;gh}_>w5V;cWRx4K zQDTjJ@DcNp^v(>hJuzot^4c^Q1d_)nD^M;nbl|~C)b{~>^b=4Ezo?3z{OFH-d?9Z$7iyL|d253Q~9NHOH0SaM0m35+P1=FE-7l9#u4 zc=@&0xbgC9EN({sWDZT;%0UL6@$8PRrhTB=IFkCs#L>ji)Qq_i7MLn>)3CP4ln?m3 z^N}%6KW#kpFuJ-hHpixA6^KM+QBVX?0EG^~LqLQ+@|SJo|DBJ1c>V71R}u&e5j`=k zud-iW2D3hyn31JcAUK4iR>z>}NIG`_u-mq7+3~{~Il7_K!0cF;uk~@ihp&x#&YdKj zKSOb`jrxnHIdS0}=UedipV;8aXvD)|$OEC^yam=>L}2cjt*YXsyUHsIrojv39 zMKs?xVl*iSWC1+ltwaO`+z(U#$zoCb)JOjIM?bW__2%Jw4;2>{oXzG{ZiMrg1q4`8 zkhAw(4?6sAWEHKVli|pL7yupb=VZvVY64Bicl*Ru)T_IhGwvEaZr1wqCy6ca!NoJI zpFhp%R_$Fq9&Drj%Af@w3oa2kLtxDf1D2lIsTyA1+vnS_UE`(aU*X1!uQR{4)klBT zFZ*Jk+#t!p1Z0eas08|4QH=18rAk&mQv*^#-u z0l|;_`Gy4{t>79*Ujy_;fFpDMGC)zTqW;7>obIB&yPH>>KgamuSx&Uz&!6g}{=wl| zH^09x6r97@lrb~|#L}JZ)WVaZ#dF{oQncj^4y(wB&kP-l7C-2Rq7<%~h zkq<1@!B+?0U{CEx2oti}=(h#RHEGnaT|19G<@fw^18Lj>QYf)y9w_ z9*O!j`lvsJb@0zHxNw$@^Zhoi%O_88Wo^urV%VzWB9YS=YZwtBiAByG{FnCjdFJ)& zJp261yz=dr*?aXG%k4e1tWi#w3ncRXREpt9-KW8+%$P}|6hjhn{@zTY-=I z!6bs52Y8+n&8uw3%NSz3R^osYfYoxZI*^7USnoqHf!mS#PA3V#03h07%C~OgMhWX{ z*ycJq-7o2eb7zQcogcR;f3tmm;q)mUSYL0We$0bq$^BMx7UKkgAz%`@uld|)DqfyU zc=qabo_YSI{*;lIU+EgZJX@kBVOb#X$s7;X!&j?7gIJm|mzV+jpgnhXEwG2!H-#xV z%qeo!MgP8M9=<*L-?;%!pA=VjU|5I&^%M&0I>`!L?m`I6$+>?m373%gd!PBl%gP@9 zpAUcOJ#Q910InXGoR|}j&wrDjU;6=q1=ib$%&hhcSO~2O%n}$F87yD{ILX}1a`v3@kdd-MmfTG) zxr2+p?^_>#RaxQx_2_Ru@}}Sm3_!wgBAJg>U*M;Pf3kxeHa8LAecDH@AkZ5@NCCrp zun5dSfQ~eR!2mkrFo^h|Th8rjy-scRDgXTGF6xID&arvn=C0inJg~XJBR6Y(QSyKl zoU^{x4-A4J0ZVr#IdgrnXw&{4-@baSga6ududww}8~JSzHGBK`vN?pWCgDx(SPvga zU=`BB(agjIW7qJVKKffJ?3sK@usK;3Y1}YQne)e^|D773zaQ||KWm)1q_CLFg4|@@ zc+Q3=P=jc!l}pK-tsf4sjd8c4r_(3k{7I~>^|7t<;|r%a z*^ZZ5_z#WOdAJ<%a4flOk<&895`~0hED$p}J59~C`J9)xcX{EptGxK)D_m{s{{G8X zncdhS?@fF7?idC+k>)ce#-nw=0xb<@U=vKczz$-^LOXigMLua_m_b@n=bEZYT)v!n z;`vqdziTDnuLGYsD|`ByY-8+ZO4e9oA=W5W$Sd3{gLce~iKNa1-kZS1-~Y{zyrzWx zf8P5$555`rNIZFCv)Zi({=JtL<4-Q18}S?G&T{JP3GUn2CW(NCYS)b z7&|7mJ=nInb`0$&4^x~4rB`fL4b{oRRX>1tF9Trk_~*pVt17|krp#5YQj{7qs+_en z*#a~tYb^JrL5aK+M3YD4YSo(H@vHJ||KIn1^~&Ah!*5+bvHY_?`;lwYrm(;C@b>!u z`IBEhIWGTL+z%U^xqKRZ^#z1s7O)6*c&9HQ&wybD3ack|34Oh1SYYEdbh1zRYHK^^ z`?dVoj_YSmbGpq2SJrQ){1K0o1Fpo9vo6MhjF{jo)sCrQuc^5{UvPDIpVzK$arM=! zZLNQu{dR2U`P91;G_UZghU@^CJ83eNV$8?k)5AZAd}qgC+l>}JJ7(;fv`@@4a@izyJi3bJ_o#ZpI!w&v%ZzXB%~;>n^Z1?`5bBH(g^pFp@E#zT!q|Y zr>ux1B>sV~KYm?F;s5u(r|y44_%}{2f8ggndTmlijKmLr`}Fc>UpbTh()a(?$@-B$ zGW3m$#4@4?L_;A0!VKITg#b7JMnDJfivo4$@Ql#OO*qr)+-Y?FR0rSAouX{PZ?xY# zzqZch!I(?2;Iu_bK_yXnX4z_*6MJ>d?qb2#WX6q~clBQ1YIU^*f1SnEEvoH3Qa8`9 zQEDJN2B=9i^ZD_#Z`6pT$!0=b&F@pbw%l#YV4I*FQ`m2!&A=BVRm|t9PyJ5_(3{43 zyGic;F>-Am5P16W$ojNAG0Ve-v=(FB%sHPl(`n0orqx*&XUy{{xlWjCLpiTYKEgF1 z=K-$Rj`9Eb-mhK!|G)p~%XfnR>7W1D)ydKzD;RD#F~k^R5#tB{@}E4tar#84zw$+% zd-@gYKA>??ld2j&*cX`m_+7pjP+4^Ko{fITj?SKf7Q8y0hO;Lr+HA1CvBrh*m`rIwwNbyfwcFj#pR@*;U%NrwzE68Ie6~c(B_szI2KaK> zHGHyg9KKj|kuU9I>;N|myXNSc8CP+?X0okh?4WW&xtuddOY*sfr=H5dD*E5e5+F&2 z8Bc#sTz*w;CddU_$!Y48<06vEkcu)(C0JpeqfkHudA}@duAo*(k$&VK`r7+$D9e8E z17Evz9R9~&pHu-n2i#4_aN&{};>9og&is)-{s%W^r|}LYQf*k0gd^?FsP-Kxk(^NH!#e&&v)}1ag-P&W( zYPr2bb$ySty-%|@>E`p)HR_jlF$YZD*R$L?4!=V5Y2UQp*L-c`b_3H5XoYQ=6}!Q0 zpMhpHwnQ5>`&B>ZzYYGoXMp2n;Pj5S2C!|abc(gw>v>FG%wyTa0MXq7C|XvOE25ht z0avhA2d|L~x&1>=KX!xc{NUr?xb)=K$;GGt?#Ey2;k$tZlH_JCBybmd&%e^_yz*LF zzjUFn(VB9d%oWHMadT)z5itou#5?%?-h58njQp^s8IRI38{sy{TV)8^vk++g{9oe0YD;8CUOgo*$O`N zk#F>AU+f~=!nk4RhAZ40w@kKUfxWuSQp#}`z551OWdZo1&jC1F z!@PU8PA3NIm6}B;G_aKBAwbC4BRz0amYLjiQ?4LoL+XHbqnv-}>G#}tbylXo{o=*> zq%yz*ebk%04}G;lE|+7-UjOyqt{(ggf4tay?25L&^t2HT3!xLOgdHBlV1ttW44(Ba z(!1zCvx!cu!*~Q`0eA;4TTO$QHkqnbT-JnEK40Q3{5+Y$q#bvA;J!CSlX<_1b6K@& zu-r#I*#JX1lP9a?-P;>JW^($PFKt5y|C(dh4ZmU0wk>O~@jNBP1*l@VY&dzm>zAZ^ zW&i*T(C5^ez&U#sc;5DbO^?>(xj7yH3)##)844zKX*|d=qX(~^rEnLbkjww=XCK(Y za{v#xI!O{vL@wOv3}qJFU5jg5dFSiTHJk6fQii9WAvXzy(8@aKNDx4S2%~=67Oe?b zAN9}&1z3Qbu*IT_@Zf-Fa?1F!rdd>2E9MKB)-a#rlNmOh!)(!N3G*dd)bvmAB*@;w z7vPyZn@N%%-q;a`D}0D$ANlNK+5_7L>m%P=`0Z$c7CyU;@`OR0lUP#MHK$MKRo!2~ zzo!O}Br`MggW|KFRrim$Z_XqK+suU}WorkbWebLR%4WF9!Q4?RB$<;XWn>BE(xeEh zokK1~q(D|gUf_zYBnfjjL6A!~e*H^LdEdEW{P2A=Pd#GcIEkmj<{?h|VOQgQm(ie&vhJ znLql8A>a5mGzp6V>FCWMzywnN{bdbdhE+{x2$=!u;iXn}!s;59HP-0>cpv2~TcuV_ zU*Aa?{H6rZmx;P|LJ+|mI9Bfu;0vah^@}|2I~H2_(iW(%`O%KTpE0lnR@E*1!~@S{ zp5b`izvl+H-2}8I;Ft-vX0|z4C#9w3>=X_H@GNDy8Cmj1P8IM4(g>*p6^MhTF-R71 z3du{*0Cmb_7l@D*JXm+u|Kgi3q}e0)6{AP)i;J&6kAh(llmG*q4w6*~;<5*|SoB!| zFc-*Cax5oka;vm5LY<-MM^eUehE}-HQSi%(yjb+$Tdlxb!qnG$x5|vUu&GHCO#KQU zw(YL1nsTxXH5I8=)$o zg`_bsR1dcRk3c|*&y#m6C~Dmn5F@n$weXZ(iMx4 zJ=a-ob%2GOnXnPcT?vp=;PeLYgSt;C`4DML3*TIgvNE1Q>W!jY2#a}l?vpP(m51+p zFxJ2Qt<|kwIk>QtkgJDz_^8+cOh7$UvM^B1)4+wD2Y0lvE43xeR&4i9!YPfU;Fz z`Bq~m)`FIeSp-?YWQg7b)`|?sIK1S*3T{8LdhHGvc{WFjr95W|1OSIH{CL#U^in1I zjU1+a`!?2Z<}kAz7cKC(Yo7bHeTDtTH9_T!6c#k9sFw}r&ZX}5?z;?sWq^BSf}Pd` zo0U%3&{LH?7oMD0OU0t_W{8DScu642^I-#sTQs)<<$+vdvNj|wE$3t|lN88($&gb> z3MLuA^7Bs$_b6c@TC~B?!e~eslqS?iKdhbt&fNk}tAtYSM9xyq2!Tt&1iJk!-j(vP zCa;wp?%ZWg2j3<@zm3b;6~1f6F3zqI_D$;7_ER}0&X%xIQB@87RL|kvhrcqwy)wb+ z(}}v)e$IZXn0T@>xmC5NFz`UBlnWq=zVX9k-RMMRFK`Bu#?iDOTrKk41NbWg+)EQY{AW*-a=)l;QA^Gnq+}DdQwiiHM+x6Tl2~ z{7KK_@a=Z^2#g-~k!UxLPw9F!)(WVETG;}a12YISq;B87qkR$f&9sLz>7(AK-DZwT z3n-Q(Rh+0B<~ecptlw++D+Ams6A1A`j~icEz;}I@v;I=%^^Gv0Obn)hdcz1gKy90r z46?~vm4h(zrWh%dp6i;R>@K7n11fL|mqG_0IVhPkKA2KUy$P@*52wJ&1co8(4KskD z+u%b+mO)1jWuO+;N)@n#u)utdY-ZRLY3gVqY~R8`7Er4&ZE~6uYz}GJMZK@p-7Veu zX1*8A-n}%y-4~1aoZ4*QZ8k8jFT{6UadvhxXD}w$joEo)xwHubs4AnbjdE%DFfQxu z0eP4QO(U{HP;@7T4!)ZtmuL`6q&4UaFqBaO1!@H`U_ta|=%hX?yg>#KlE4IHz)fT~ zG9qDp#0#rI6=->QID`4jusLQ^m!@D-qa6cN6H{C>i*eRuTfksRRz;obZYR$y_4o51 zebV{s_cZEn-w$vvuigXz&>F!2Ix_%Vzuu4EHR(ryoux5-(71LjQWOO#4aT7w=gfvu zKIzJ*!OsN3X}M03{iIAAodLucX#lipM^SV#B3L|Tf?jsJ0aj6O9du>P5^9ASM161+ z8y@=ecwm8i;bt?;=7!IZO$jzL_c`8~siZ%1>Mpryk?#sY=88FS1R zICBfk$y%6&MN`-UQ+4>jW*YU6Z7ox7qrPwSo_XfpgTHqf;2va*&wM8E+;f4!)dC-t z)C{S8Jg~Sf!Tm_hcH5gu{2`=EOA>HED5O_n@}!+ib@qDuUFt_iT!bAecg}D?YSNPe?1Lwy9u6t zI&xw!a(z^?$&f~)Vb(}dWBE-n0!ESzfg#xkn6>g!Sc$hX703$OF-Q@!h=>FQ2*%;% z!p$+Vn=-Q0DX2lM2({6h0QF_Sj3va%P<41J7pl;pCg+Ax(;v}t4E%Y&d%FLxw*iit zz*-a7F%uL;i7f^YTG?P=VW7I{pv%0(tR#n0<_GD&!1|G(h+8`nBt-~@Fpz->L*O#A zj9QuZCXf=rIun>wqtH;OHmPnXYCJc{YX)V5r~Xu~QI-0`87BGdga17P02rV8RN(sc zz-$&+UoTiJB7;FeT$WTtL6HiYSP*kD$hlC61@4g$3c0$mdmk0?7!*7r0_b)F^rM@H zOvssT^kg0qF(*8x#@n$d8gfc_*`34NK`)oNi}vxPJCw0&?uJA4sh+n0{`U-Uy9qvn z@!Tf@dwYT9GH~WhU_Ote6c{y;W)vBuNX~&Yh?F^!T9tz^$n7WvVvKSH)X6A%1FZf+ zL^5HW++xb4;B^S?*s4gGCgu)!U1W+@!)0bM$dskCG0AKVyo>hHNNhf-cc;exo&f+1 z;Lr%mrBPMZo1qEhb2s0I&JgRZ8V~rIb%q#u=*H{;jf{Z@B-&=4tg>P_KBI%DK) zxOeKzk!1k*?FQ(8$5ucGIs|nZ4xM;I+=%Lc7lpd?{??)Yo&oNeApkyw!KXMh1#rw5 z0Pg*GF5hN=4lr=^vvrQc-V{8+5#Zcg=)Y%xcVLRu>poi?F~?o59x|*zuOQ!h;J;^p odufd0rnvj1yR2;fSLXUp0Xj!!q3r-@+5i9m07*qoM6N<$f;~N*N&o-= diff --git a/launcher/resources/multimc/128x128/instances/netherstar_legacy.png b/launcher/resources/multimc/128x128/instances/netherstar_legacy.png index 99e23964ca0e8c791260da0984952c789da79f06..86cc87b4ae5c296edd558b50d92d0bfa8e2e66de 100644 GIT binary patch literal 10037 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 literal 10041 zcmZvCbyQSQ_x2PpBOL-t4c#F~DJ?CnNGNTP($X-LfOL0AN{e*PPy*6QcS(27Q1iq0 z_kHXA{`k&X_uh5aUFSY~@8{Y3?6d9-)6!5Py!Y@P001CVQI^-ayCVJ_P~5w7r<7Sg z0Kg7Vk(Yhx4%|(``Pd~uA>ThRFrbzz=zLJKG5uVgVm)EDGhZmqh*FnYlv@&$p0vQ? zsFGGFj!n7N)Jm5CxF_b`kk6&#!SlT14HUn0n~Tfda61`S@KfBgeXc@}h%h=zP)bcJ z)OF9&3v1fGy=~h*JF9(YA&hJnuV9?(Z1pBi49wZqHDO!R)#iCS@zu`V)6-ghUadpG zHkM?d-XX)L;ni-j8MQA&wjIEM>e1z|SV$9#+TpxUHtS+^AU98=pp9G=3#_lN58NbH z5&J1#(cZ>4TQ}R7e84F8l9T?vYOo9^W<}ii9kpWlI|Fq&^Gd5U=7wMFf$)@0G}+rq znRBl736>O-BcE*NlPOUg#i}-9XS$pRV|~s3s*GByQaIWamY+92LTNvb8QlA1sU@YsNdLY)-WLGw8O6`D0{Vp_)#Y(|w*f~IzvG>ydAjDg0n3EvlL^WiD z?w0~K(#M7%{!?Q>mEEjH1-7fsZf8bBy3%g8&TclV)={(MIMXewjC61yli|z-nYC9E zC^dftu0eJ+O6OpyPO(wv)&V{lSnmD5wI*M&%=f#CMvVi`TS>;!H?xk;@t+c*&Sy}4mZY2?@zG=#K#uU zrG8W*2@3DAy?Y{W7;3xkgVWEH#rgRgoj`9A-v{&JGug{?!l)aR2db!~kd0z8SLP$n zjJpCYNu-S#e3958U&{d->E2^c%|eSW?(Txfa^7k0<37oDn-;u_o>g(bCEBd!XU{t8g)_W+ljKcn*TBOo zrxDXqhlW4BYm#$rm_jebA&%siMKbz;n5OSFHEIE2gFdEjHd@`;@S)(0!z{0nTiC%( zRCySRt8c?J-kZ`+4EdpuNJpyT5w_?MB+7yDw-h2cjs{Cq2W*`9bF_5gbS;LT57)7Q zN?A;v*YR_4aJUO^pq0^5U(nYNVmk8oo*+Ih`iWwCDBHOf3;^=0Miq4&pwhG*XNMO$ zI%2*2)^>J2tYz48>TBZ873tt}Jk&TU55W&rosGU$@2>DRWguPh36>#H0Q^3vW+l}( z`Wn(rT~j&odk-%$=)fO=%=LjDDoVd&$E2&CYjo6)a7C;ZB|ytcM&h%wZsp$IRGMmk zzAsh2@00!(Z~>+l%WjDGHa~$*@j_>*{B`ep-owW?sW`)2Fz%ZK%VG;PM)w&xWm@8p zv)y^fnkKG4`1s~&>G8$W26Aj4-oFh<$$D?Ho}Bd7!ubyg3i}-L3An4bxhzLG!;Pqv zB|vtg7Q@{(%JdX zO?BeX2;1mQOGg+nRY(kpI5`Pi6O9ffzf3JC5d0{Zs_?z=;7tym!JCBTurMPg(@ey2 zsF{i$-C`FGiznZg6!SX#rIZKKMwZ&zqtY9f)KhMozxSvN{&wapmL)bh=-+mU90P?g z@Up7v7r#w0HJ34CFJa1R6!!WpUM~~GLW28(mrTX?4)~)zy!x4qjh&PNe50j1BicXy9v8sW^vcOdSJt>80;X&%xWC3te$P$oUR$0M>&b7w&@-;OT? z&4YW*-t^u1Av9Gm^=IO#T}AdDE!1XzKWX5HU|9cPVrWFfGn~VikdV29b+)3LYnIyY zT0h~SbsQlU2JudTzU+*IimFFj)YST8Ph=^Ux_(qu&^Z9N$c$8d6G`v!jN!iifXJbvw1VdkKf=H*3o`1<(hs$(-&KcGln);CTX@&|HSS;p*sxu?R*x4?!7j6?PKc-O&} zCY(3c3WYwb`O=20PCE@Sr5)~jl9+&B`d|O9;Nz4JFqj{Glvf%WHK2)LaQZ;%4CH%N zIJWHAsTz<1 z?gGO+Jgzjr^Gr-@JV7X06bXv3NTbg+T6!o3&e(v2Fnv?Bg!ZR+6)$E zp7h;7o(Nyx5AGL0y^SeNVlt;fY0pWQ2fykp*ME5B_r}rj*G3_1K_tdIV8Uc_RCXu1 zW!w56T>jT`Yb&#JKCr{zo6u!Qv=1YiCPsPH(|ZhV;I)+?va*)6K< z{WUK8&m2!GiHxdGs{`x-@=QCE)EkC|-e!qDB3>#}l-~u3DFbTA4Dk#7>=9RQ$H=*fciJ z*mwX~2ZI9-2K?Fk0=hqN9u>=|8fCJ;cOASQKpc{2)Kj59J^>#ggM}Va*53Ii1E8g? zjY}T2wv?=4+Mg53oq;I@Z_k-^;-$G!#qYE7x`Dkxd$WrGBkcXF-HRnW~>k)$~t`-BS+wKAxfWcKMUmJzPJ4KO@ z@I8a3Zm_a=o>ziLf<*$VJli;Lb_G%6ljMn;v??Guo($i0-6q!BX7nrft^6%~%mGwm zA6}!Q2_iNnuQSV|@+8_ny@iCaNU=y|ANkzDuHQbu{<-a+t~Q%DDcIN%!7gh004QI7 zQX~ObWk@i6LR;I^XvreS0 zrM8rUuLy11*=#!%ZGGx?HA(D`pN002Akp3h&&*G(7>bz&)2N%Uab21sD zGh4GlfjrXpPUX`ZlE;i*!QbCl`NkU;5;1wyv=qj=*`g?IJ49@|UfKGJ+!=oHZf=Rh zZfwZuTY0EYkcT6i8}*`47x*;J-xb}~(W4W_7;&Y?1AzHJk4Kb@%2%^uv;m>IfZ+&N zS6z#s(GCuoH0L)q=NQ~$g;SjzA~P9i2U#X_bkgL}9U0$o(!UeZRE<|(X&l@^AqXkL zxf3`sH}6N1^&eF0w#J~nDLtwAMrV5}HMXR+UAI%u#e6sCpmZChM)MV`@xGlhBN>1e zUs)rCAEl*gPG|R@1+^m{Z!}OkRWe8%Q&|-{R6%5Bp7z)uTY6;LdmM!GP6gRbg_ci6 z?74aR1vDt_Xt_R$w80lQsiD3yA$7LreoL1!jsIo%z-qI=IpN&5!&Ks<>w&ve{%@M` zYG3)So39{&mAo<_ysoV*d8BhZ`4f2)=y%4dq5N^XPC2>Et(^a=`OP}5eh?txA6M#- z)v7xu2W@x%PWu#Hu!nMEUh27brQr=v24$04Lnw?Z8Wt#z=T;aF_S`?VUnNC4^Y97dOggP2Yp4 zz0Hq;c?Wj48q|CC1e2_t@j5v?f4dY0&3D9KW>#)!Y-jy`ZuTBX*tRAV)pL+-wLDYp z=OSF>_W{j&=<6Km)sXzbTLG|j;_r>W4uhIig&_?6CF1ms)fNUnUsd(l&YIPI6rHV~ z@4JDms7m>hmMy;K@xe3W@OA3YSwG^IV2~oc&s^3O!jH+h?FiO7=0yh@w0HavO!71u z49jkC?(y3kqPy}x^!cZxRr>wE53>H!F&@kn6~7P7E)@TJCeK=lf^m*>L&flcE?Y1kf zj~llTNA|@h;+Z^!zMl~#2g!@RiHU|LZ;nC^S| z#joG}*P^rg?Zz0;0BL(QPSi;mXAZ7DTy{VSa4eR_d0f?W*WyIpRBT!~$*aV@o+b|q$Bkn)g*^V`3+Ej(Re!P5>eIdJi({VM2nY;Lx z01q!3-iXJ*16DoHZ6Tz)Nfy0oVWx#pC4y?*zr%tnMPXpp zG{H=g>f^p#UHxEAl{NN07!L3>Tbz7jyh;A98t5I{H3+?)V%fD)Z5zIBb+dKZ6FfZF z?3S030+OT^kX_X{FmBLw%m&v7Bb?uO8SWdW%AJqqmGO{W`yaq}0FY=A(spLD_Ls3z zgC&=J$6{F=E1Y|I3YW@>=LCu8E{W%l6Hh5(rR0N%U+GF)-g>vg{W{y3e81D`;0DIsYBd@c1ZxZ%31 z_9Vu{bMFE#(rutij-;0<2t86OYsi~^4GM}8@ftJpZ&3P?Rtw$v=vS`9m`;wf$X|V5tGjQbU-Fu=foy;gWRa#ZOL@azi6zEen!GbW##&i5EcNxdKo=y zs7NALBAISJu_2s-bFio7+ZDOIloIK!;j(Z?>3pJuEPPPBLXuBuxF@L9>1u}8t#bbO zb~sCn}{G>`CQoS@B=Q49GnqU7lP%>HPr4kv<0U zO(uLBx8|lQ@yW;|8hz}O|M|PEPmBQhkz+=cF^2UR1&9m68`o{t5& zkS^Q(`D4^v^LSEwv&@BxZnhx5Awea+qRZJYAe2T3T4_oe;9+UL(8_B-9e)`+%=a+z zsaGf>`Xparob{KP^@}&W!-T7)%g6>54zwC_ zQiSvV~ZeZ7t#(z?96Eb?g`@`%<=r5{6?|S>BlI@ZCOKpG2@7juT_A4bS{Qj{m(87-SBF&uRyJscs>T}= zJi9)@@MRSNOpc@1@DOe4|}B(c~a zEKa_7Pb~lwlt8Xq^P<}8HH`fawO_c5RjbM5x50B8OO?0UoaBm+LJ?OUNohEh7II@y zP3BjzX(T|B!U@G7Y^k5$1@W@9T)IEl=qZdz8B*UOEjx9{Q$jpLmc(qgclkktUvlg{ zT0}sRkPVwQ4rqVsyhbbDfhWIAO-%yuPkABCvjWa;kz51E-bn9X`cpOUgcvVZF!927WAX5U%>a#Mh?6XNVp@G@6kb5+wAq}L-Uou zzIwt`(AuBn{^VcG50n#s9scT#F4?Q!nx~8b)Vh zxnCyr;ag5-!JoaSYSdpK4f7P&LaBAq&r}G01ZxQ^Qj_BMzE!8V$#b*6nB1SAU-Ue8 z!R}91hCx5RyW?)OaXm5M;#Xx^&v40tj`{Mm>bN~k9crC`T~o1a<(r~rDPd&rbxBTe zX1quz6&NEEgj}5GxNd0HzBX{nTf_g?53N7Kp0HTEnEizrv>nJ^XjrIDG zgL+SxS6{5m1Wyy!As3f5M>mHdW^xkKzz`CafPUWjY`D1#-(IN4@pbq4TI!IhZoUsX zbflX=pKKN8=VcSM#M zM-!s5+G7&&zjEoSS&rZ#MVv?Kkc| zOa{03p`D)Z^<+hp%z{FJ7V_)H4E6{cL6;qnZ zBLENKq&4&c@bw#5?w29fiTO84B8p^yYL|iRytfR%k?_J((UOPUynOuWo3!{d`cdg3 zSxuLrD(D>*K>6WJGc#yu$gHgm7#B z*kz-F2Y6Rq{!at5(BACMey}c$=D&@{ei9ZxNCZgjeyNsT{c_y4{445qPB;4|88Tv| zQK&M7_-{MkUJH1p`XsOo1ecf8t(6G`j1i2mo9a{ZAVf-VmY@~6^VvDmn{Q4Q_7q+C zDxOE;IP4|iXvsRT9eD&<8gvnXQv91m=$pmtR+>WqhYPXfJ$m|`A08wpw!nccX$F#P zpQvYrTJl0P*`wpsbv3P!D(G?EA*0#nq#wS!83I+8)O#px8H_7rZLD|1LebM8wg9b?t&b(|N5$`7gE^7m8EB|6jd$yZ}sR0i?F>IU~7%*J>biGh{>o zL>)mm6`(%#IdbaD;M9USaD>XT+*c-~5Hxj9ulF!xhSxH0mgC@un)=V_l@R$L8z5- z#tB=pVMF*e%|P5h*murA-W>>=DK*qMv=g;mcF`0!K>Qq#{VCXE@tWVmtvtVv6aqvC z%WE>$b*p9ZRJ{#L{lA0tDq&H6QND*~;8t`N+5636YMy7a;@7VsUeo?L&?jqGLYGU1 zQy`lOxJWcW;`@kbz)JUtEyN0t$VM#K@bdm(=L_QYt;*Q zB!L%u1Sjrg!LGqzsrywztB*zB8=_rq?K5y!7Z_-20u-?4oIs{ld2G&26qs0YsOe(iBGd85sRf7UG0~nHQF;9`BaR_^(#^XKgVREQJ%ioBVmzR0BRpW-m99fRjK++t#sWU|k|ALX-vb&JLFyS>?1j=vr0~JbWDy zcm%8)zWBSg_?A{8kwoVy;2HE0qm3N&(I;Keqw`qdSdm0JTB#`4jg=Rz+H$>32<)ef z@8CrWhx;(bqQ748$nyT$;Z}yjKQKl@PP4PytP_M1WtO_#M_Je^WQgn>BOf;#@*}WQ zFGZrWc!7hpj1w)S)iLxd!7(KNiVUN1qa%G-^rFKsUT*rJk<8O#V<*4s0>tNF7$Y}N zkU;ucf>s?yqATWY`DT(pvB@HTWNS&2JvfWTP@D*U_zq!YeOMGPm;R^2>ktW(F=0`a zRxR;m%|3m`-_|fw;~+fg>t8@v0MOKgp~gntw^JqFWl1aIXG3pY4AD5#+z!8zkKKA* zD@!rY4vYSDr1O2g#xNfm+5e(>dXRMCn$=&sr_D7Rlw`HHj_>e155%QT&9*6VPu*n#VC&e;Ia(3ze_@i?9Vrpn>Er(sakrC1LiNyw6?d))6Mvfl9QOI3%1K8p-sYV)% zD#pTBIixL0&B{@g>fBVt7CR}A4?H*W7lHiqR84v|hv|GFg?!kfkH6>Bi-#+5yobvq zUMx&{q<~q-=i=9U==yLo!6dKwzNG8@S;%Yd0dm~!F`(#HK_$eQWv97@sf7}8NA2Oh zQ%4)e($b;TaRhHj1tnUBZvt!=u;I0pxwT<|DLHCp9iK$?6P35yx6$8zTp0JNMPO~) z+%-9YjsRjlck{pdv@;+1iQtz7*qtxe+lh`r{gY2*BS1>YIM(dFNFfJM2v7O@BHKvD z0vUWmT+}j+5wQv0Ar-hO+8Q2iD--_l%*Y6@jAHn_Oy&b&dp1(0i^fAwb4~ieAwy}N z^wMG~fx}fl|Ao_zC=2)vKYkamg3ACw{>D%c*!=AmE{h?(N>gPfDvgpIEx*3(fT=gC zmq>-vQf$~Qg8$NMZ=Tyc*%6W3IhhF7(E0(4E&Ss&Se-5H z0CKaVd7310c<#SNi9m&QhIEald$h$?6lX~x7H$c-!6rc$oGk!J++)>tY~EM-fop|a zxy9S*RaF!cAAPo5iSXlPe81AK;Cm)Wx%2>!W9ho!B8lsV--34=D zrn^_}>T|QLXw&BTE>NpsLTS~!m-c6472!lix{lfRy!y)4X0^fO{T*C&V$%aawE^L+ z{U3$gTYo`EP2}0ch4rl+>zK-*DiT%dZ2g;v;srFB;jsC`6klGeG=R4Q1 zC0`VJOLXE**XLWJ7dVW2;pvLp|9#UF%!CE%RB2#0aJ`u#f>NV2PhTu?c}hrXfy4Cm zc z*>wHE{%4y>0n^9m6n?fZ5yd9p251mqK00EnYUG<8&^tqH^2deEIn8yWQWOhu$0uQ_Z`{>pCId~SU zWDunvFDV0=VHRryt=hWMOZFqXCI!<-{c488jm>**qoa9!fy^Ec>Z1YB$8zCyu$VyR zr?hm>ueo{(NqRhK!0%BeMbk(f_4ol_RF9`?Dm3QFlRBgfp7+j)`zSk;OjOj~TldF3 z1?Haw81Z*-ZXcHE>t6GcY@W{>m28A{=8dkW0?xO?YCOaxo^S%82KuG#$4Ip+=~p{K ztm$bLuPRtQvz|!NgXFLLxIk|~6gMzh2Ba#L6k_;TvjbP^O22%yp>=afmK+dFLYNCx zQdQRSqxPN|-y)Pr5jVJPCCM4i#qszwg=GfKt+?@Sp9lfBqki5(-XzXsBSwM~4KGz@ zP>$&_!Kq9ridrY$kyoammXXp(P2HMNxT;0(4x0)9U6Z=#fg#%i@tP}FheHlAi~WAZ zQrU}*RZ`OAIaYq4n-`*aJ|Ct<(Oso72m>b6Tg>(_l?)CD-jbt`p=1rt*N@3rN9X%r zqO&}SNy>OwYGfDdl@XrDwmT;nqx3%;A3!y`nldGn-SkWR_k6G1_cUKkbx24u)ypw` z1nD!Q5pV5XSw^`OS2=tF2^QY}{39ku42aC1RS-lKKAVE1l*rbTFbyha8Odg6!$y8c zw@>2{OOce+j9{K{jfCo@a)DwhfJ@)(ih*i?ASyAR#W7P8B>g}(?}KU=x=87D0*)lg za5Xl7Fd#^u9R!~^Twtho932=f`R5>^Ux3iXfnRDV^Yj~kX{COwt+12EeXUj9VofT2 z7f|&*EpQ3|@i7x_)Dfz1YklOBKUdK4J3#lnc#kAG;-P85f^p@A^R6?#z6$Z;#l#sV z6<~Kou6%gpQ;5L3PPP8~{#^;j}b0^ zm!HkaeFLW51p`Gn|H$^KZ$|2{%`Js{!IIwi9Z@c*|DDBVJwg5hq8!Qt{8)o(Vi{rh z)>L$8Bad)3+;`i|G7DLtCqvb13E?7}{>9MZ79w8~TOzEntcvJ*6d7O_3Rv62FFEHV z+PUwaUNd(vdSb)`;D(yKHYs>*^p8YYzkoa{zH3lU?phi%P4_JI;DR%g|Bip01$>#9 z1hs^%e#@DP89%*?rV36mHAf1hEl0LaxTE+rP#M?0x}Nw$&|AJF9~6Ja8ME_e7r8+- zggnckHDGCO#WAzrr%kt&{;~U1qJ`~6`!GaVB_IXbDHp5!0uOc4`+K;jN%}5Pnw|xO zLcML}r|79EqULd=$>ELCvJYTPg6;_c*rH6K#{d#s)2UL4s;3RX#0EIfE-f21d82o> zKW2xi5OUdY&hh(@;Wo_pjc*%Z>=F{ji6ps3V=$kty@B7(VR0{{f9hXiFsFC7GFK31 zy`LBi2yqTuABs3V!9g65Bkrax`G6*dsQ@jSsLTI6beA>(j7R|wHt+#6>`OP^K-3ka oESn#opN%-bo0Lrsa03hdDSp{ZDtG_xmpFimf`)vBoN2)S0AKlp0ssI2 diff --git a/launcher/resources/multimc/16x16/bug.png b/launcher/resources/multimc/16x16/bug.png index 9be77e3b789299e915647744e4bd745562de1b77..57e7d82036206e40b9040fd7cecefa9edeaa1168 100644 GIT binary patch delta 563 zcmV-30?hs31k41GB!3f0L_t(|0i4n^pfzU{M&W1X%+a-f#2! zsDdUot}(e7d~p?LZB=_!uRmdH?2C&3$;EgZ1OH3f-roLjM@Ppuhb%d8McwEe325$MNdFKf@C8a*aBt zcG6y<5mS%Zx^Bze8gg8Rp%~9$tKE7#E?=U|W@=b13FQur5b|cLHERT%Il}uH5%zBA z?k0r;*-_a*Vw=!fV}^8W0;v32@l=d?!>5rct6F|+NRQ+JL3@BohYPt>?##mJ}I zMqb!1_AJ)Aksr4i7`_=mDIUBU(Ok3;h=uVf0sszPyA-lu)-(VB002ovPDHLkV1hv_ B8ASj9 delta 583 zcmV-N0=WIm1mFaaB!4GKL_t(|+MSY5NEC4t$3OGiac4$%c6WAl*{q4!LrA7!D0rxp zq9C?|cqr;n^ask$Ap{+yQ>A5>4jn@X>J)Xbn5o+U9v@5{X1dKA%4o1OWgk6*25D z@Z5vZ40sZLg)r$e^Kg}RU>+z6s`LmU4%U_dTteAlz|9ocF)#%f0{RV(6-`2594HH5 z8t5x#llNR1tbfOWc3sJnrc$BRL}wfnFuV+(1JHm06UPA$KxdP-#f6n#9kUE{<HpG#g;n1Y<7)_FNJ$89+m61xsk8G7d`;j1UTehcDsN zU&v~Z5u|~OH9^m}h@>y!f&sP$m8A-if+lA}53?~=_MtBh7Ayg0Yl1$2<%nsa zRr{wtoDM2=xz>igL zZ7yW0UW7|W1@pHWP-3Z9A;3xQ@%1RV+19 z+prd*+Llh|np-@{yTSnfib#wf+;Mzv*{F@)8fig4vnI5|2r|9@lCjbb1^=w+JiN=~-U!mQMgOy99}|cj(`DC^ z;f2~o18e4_5%W_8-7-u&^Ym3&GHRk?84}-h+Vs7q22EQ;!Rjn3sZAKxJ8kqB%r2M}&N)>n0m2 zBB7$kU5_p{On4OKt3NF$uEp=&A> Z^&3>ridx-lS!e(N002ovPDHLkV1ls!=S2Vj delta 499 zcmV=hzjJU_QsyL0J@-)-HRnVJl*V?Pk_^U6fEpU)OHtba8!-#E97{ZRI5uP470 zBy3b9_*#^s;oM8?g?m?@^0n5|W20@P4GSw0){uH|=mmD;_QL&R^Rw-bMjHVz>WX9B z64K~(9@*}ho6o|^;jJVz;%01!G?p(uD72fM_ZcUf1jhXwtB}UopU!ACr&pP+=JDb@1q-; zScZ+5w@;cXhu@BbO$R%XH(sfjEv=5%CL$rk5=+UO_>^bI!#Ft@JcyRqeG-#{8Vzss~u|yn8|K(V%3~c^TRE;#V*IR diff --git a/launcher/resources/multimc/16x16/centralmods.png b/launcher/resources/multimc/16x16/centralmods.png index cd7c10f3ffd48a31cb9938fd0edece1574b7dcbb..0a573fb4ec4fd402fa48a0a573933ddc514aa61e 100644 GIT binary patch delta 532 zcmV+v0_**;1g!*+B!BctL_t(|+G3y>IJN^y9S0aY!YB%#nOEDk71p+GTd`}~X50;G z+g{tY?R|cy|E;b4lW%fyzMF}(DEJ+oin@P$!1gA*fNvwdu>EEVhwYO?e?|^CZg}PJ z=6@guFhqSygRbka&+JtPKVwt(x7gV24Suy3SJyQS^8DgW-+z!A=ZzjsEa<6_`un{+ zadmY;9;#F{e5Psz4dbg_N5wYtP_gZNsb%&}MjUY!kOI}q+0fB+4}**cvAFsHbQv%U zWVRqRmexLu!NvpVWV)lWR&gLM#vP8apK~tcb*H1ud%cy`#5c5MdC*qmMVr}^HjAQI z)j4XG{FeDH`+s=D=`h6+S2w8NC|5>DUZY6}ce0FyAH(7Bp{bU@!=G3}H zG(HB+{-7;IkqKHNLDO6C?8XKBJ`VuR75x7bW+=^!pm0uGO+0E7G25G`$4x zF4bOt%8B#Qg+WpN6VDb`+3CDOdv&Eh7EEe}Dx({t^5uS*=e$yX{%mpO-Ct+LeFp<> W-Oa&95)CB)0000ggVR`h#VfgDvniRgdeUBL-D z{SSnGRdmUk!jH&G_d;fxCw}(MTyn;=ofY7v_s~~pd!=Kc*?$EKP0nop-8*xbOU{{h zNUqt_PzV|Qgktb8Dk5G%78e+7&+fj;Fo(J1f<=eqo;w5ms6lx8cp<@C5lu<2!HwlY z5_-X4`<66CBzh~r%g2Le2f!TWl1rAIl6S!zB7LkeovRI@FAw5)Da845h+G*&p0Ysq zlk{#NA2Wp}h=2021ap{6u3C4=fh7y@OzTFj{uyv}ZV-CIA&$jDoQj7yO&O1c&>sP= z*&DegS7^2e%waCMZqp@4R4yT?bP*xRbtu$31inrkLYEz?EJ_f%-v& zq|||BnZsOi)2K^pZ3N5t1kURB@NJ&Zae#7|a+DEsZ$;K(0>Mb)3ZyHq7*C}Pr>($p zHbMO36}caC%=zGwRg`rf$#}R~zu?)5oUp^>-nIQ?^Z7kwQ|KXbr{MX@%#4Sd48P1W a_boK4ei1f7hx11KIr92E7K5B!2`+L_t(|+FZ&5aARu#K;d&;1-0G2ZX2&{``NZ_Ym8^xwr$(k z+K6+rX|l<`<~MVON1ZZdCVQCV^?DxkdYz?)E|aBYDVk!)ilS~wS0qJMEcOEJ?tAY2 z{)HDFT?iyq_8`l8>)JKz+`3*YJ^s|6V6l=CVoR_o1Brmif`2L5w6-)&1WJKk)$jMS zhu?;V`VvCu*-yL}1Xm#xWI?V0stlndV_ye3XH{)hTWi~;on4*h$?QQ0@n26*f6&oZ zj;*Z->bBHc366Sb*;1vIwX4gSJ7<>E)ZBJdI-RbU*;~TzkF*yQW>aOAVJrgXIK)#h z7-Ozwh#3_oAAf)T9p8Wd-9O1>vR`H&(MarHL(foKmjlrR1WgzoVO`+{7E}#!_I>Si z1hbjYR38K4GW!@A_5TnzW1`hp33(O_yUsDKBY5pyywGPSTI|8)bJN=DXa&hCvyZ&| zl4xIh57q7O;x6stOqZYa)lo_-YPo!E3r`+rp+XPQKYtuhBuTcY>|@2+{Z9z|^P4nR z9j3Ifm-b*iAN)0%N^Oh;H<}Uu@K`X=-P`N$?&)|-h_qiNZnD!VaH`+GJKeos4F#q_ z*CUUST(+Js|Nnomwxsru%Bn`iOm@Y9-`GJqU6I-0;05bf-!=Pybw&K}EuX*o7X9Uo z6d!a1$$#RCjIQJc$|@TyBg6ffuRnY5^AA6G{R-em3E(oD^~Uv=UU=!GIWx4#GmrD_ z8}Bl7+(md#I0dV&ps6_|QZmtanp854G#=ucPhX4Nc;gkvDp%#(uRikT>#p%lpQyy| zyNyqtf05TG%*;5CK3%G^yL(vt_RC-5jW^yCcieH$rsI!0DO_9I z@Tnw8%ekYadZ=@LtGKm5%T&wqkAR!qnrmwt?^wKe`9Dsl=PR47;C_%!+Uv2yA}73) k1s|K&1?FN0Kxym%01tpKdJBB@Qvd(}07*qoM6N<$g6*rIQUCw| delta 834 zcmV-I1HJsc2H6IXB!3`DL_t(|+I7uaOj~sT$MNsE&=yKdX}JgmI|O8>6euc*Qy@c$ zVzvPq@6kOhz8ItN&AW@yxMWY$EV{Y4c#BW?V2nhUxkZTs2Y4ab!W@@UKw98XMtgvr zUjFuBMn<+z@_qXyKdGhV9=5nM7;O497z~tJEi$$oo06kgWq(Ccvsn~LQ5A>Fo%8Xr zT2!)N`YBb*LAiS zi$vx&g|Os)^-T;KJm9v0-3qDPeQnb1$)&<6!}1y!S7AK~3kljC z5q6auoEawt3TO{ZT(KqKJUfe`ObAKb6RcK0^O?b4P7VBY`n%VGQ2<^oaK1bA{yS!J;FQo`cvkfLO2o;7hsEzRt72jyE@qa} z;?h4tj7+4&;Ki$A=#Qv4a^%DnkEgg-eY4Q@)_+s)9el$dtd|nUKg>RVPk*p8)7AEX zoNuPcv*v(gl1gr17XoXZl~P|3V)HJi-R?XfoqJ-Rv1|X6dFIJu^#44>+p$#mf;In8 zpjO-6*4p0H)7@K8x3iWjF`e+-9HG!udURyOICJ*QpW*QIA&%BnMy7Xb;sbY1rc#zi zfjdV2SL^dtAMNby8V>}T&J`56Pk{8?bsHDlAAlcha2RlLV>WK$U-UOZ(^a>bS^xk5 M07*qoM6N<$f)HV-i2wiq diff --git a/launcher/resources/multimc/16x16/jarmods.png b/launcher/resources/multimc/16x16/jarmods.png index d68c3d2bbc671fea422241ea52f20485be627466..cdcbe788b917041f11a998bddbfab5e97a57588b 100644 GIT binary patch delta 560 zcmV-00?+-*1jz)DB!3V|L_t(|+G4;37D-C-K6G+g`m&_t)6255pHITW&)-p1wMSRS zgv$VJcJ^d0C#NV*YinM1U0pUHZNLaZQHgPJB^K+VI9`C&9Js@ zyN&9uy*tx0_u2a=-{RmuBSMysYp_2eBH>VEWEE2S-fE?mM}LpNp;9SWU%rHoM&s|3 zQBlnYBO+>dM?}=E3Jnb;Fi3af;;y95om-?OP!@kwm z^Dm{P{9AMLxV%nC&_0Tf|A|+w3YBGlK)E(}dd{5W>$~w>bo7s}6%~9iU&_lzAmaF} zd7+zI7xaoCZur8U;%fM4e9Fum!iU5}-s0&w4F*Zx5gvXYm&nKCMSQ%%BLr`7F@-_G y_pc45v?>2E8H^Mgl(TSdhhYjvlAI(F@%|6`+>2id(Z=2Y0000>*{b|Ak`P&{nZahs%sk6+pE0D$WeLWi+ zdwWz>`S3Y8Vm9Yvj2Ai-*clO#uqQIIim~*uLP6x$t|9f0AAcGu?%qXDC6X`uqN192 zM?}nkb-l(W^rHdC=2!H=VlD1GLLtxW?|Fk~29Q>Mj-GvMDh+e>#L@5G5gSjV8 zEME8X=R{@^Mmb^I;AB^?YJvbrHiICTt-Ubz%n*w`qJIhTI3kgJM%g^y`8+2_cvW9d zUzC>8SIx~1c|RfH_qF)=PwdHmgo;G|pet_h^c>U2*LU@y=;)6xD=MfdUzC?y5&Z01 z(?Xu_(*FaP#q5V&Di03MLpDIwYBL+|X~@TqqliAvsABJ`kg;cT1hwvt6pTE^LBur3 z{{Qb#LMjZGDIjYI#u)qqm1R7bG080=NQ@BYyz@NklVJe0ozbPLDbjLPWKeBL zsi+z{gRtU@ir~f}21^z+#f9q9g$s#*Yt@a;!M|M0yTYg;sFqYKdYjfH8u&ULG}np+ zgG(nus*2u~5kYSsfh+TRGkT$SVWO}h3|7sd0Qfi^q+Z3WL;@Hmiq59Q2uQ$99wB)3 k;{8@i?bfIIa2H48H?MhgFNrkXz5oCK07*qoM6N<$g26_GK>z>% delta 292 zcmV+<0o(q#0=@!}BYyz}NklW%bTmC}F*i}LpTvin9byAi0Gbf_veT7Ox8{PA4|X%HF)%}&)7 z=~Y!^P_3m@R2_p^IQCaXFxp^tWT`8*s-3N^M8K13G`LfZiiJIzj-WbH9h;n5Np$c} zN6ucwmO1pEzC|Fq5$}#BS@2q1BnFCGz5cFi3Ui( qnD+=S&VQbz)E%WRrPQU(wazoId2}z^=E$u80000P_EdvZQHiB z-nqtf&rG_KJik3{{0A(Aqi@<``-89A;LQsj-}fy&c3=S*EQhln+GDFA2rfy}^dKoE zjYb0@1jSaX(N4?&- zYkc+5D=ypX$g$djneX;K zJ?r*;uU|~?=jZch{Pf`jwQ36|uqbsG@O__LE{9U;U$SCf$a-hVP!4M9i60 z02{!ckXSNhy3r(RSrE?<%`_NZt&2`8;iCtB=lfSCh{|<(d%Nk&@_0tdALv*BrGAT6 zY(qWI^p{l%g^-`V`Ga47(XqZt`2C9+L?b1SK>pn%Cx2W#&t^#kK=>{_V?~Axm-&|? z+@A!Ux9U{BY|vx6qsqdFv}qGu@7_YSF%XmUkUs|wqs9ZLdXE+Mc? zqknR~Mt@%+V0>gi7udMMLaBr#Ge{GOYh`$Tpou_9g>7bq#RR3Cce5*Oew~=3R&OGu z!n6b(!_}%Wju4cz!&FIq?jVFsRBzw5nBb=8K0R@`E7%6V^iZ5awOXaxXpwge3?G(?k9s<)CfXct-lro!84Q*ngXBi!}$c^+&t2f2N}> zyUko%(Vl@=km#!K5@@M@+E_*Mw1v8)3odm4iTp5}E|Odf00000NkvXXu0mjfIh<^* delta 718 zcmV;<0x|vN1?B~iB!8_*L_t(|+KrO~tQ=7og&U#LO0%{wYdzbxZQDjv+qP}nh#LzV zH}>hRr8mYs-|u;U+lqJCec2lf_dCwUJs_ul-dwll6Oqo|OUcK&FC?PvbPTEw_|b4Q z4E_GFRBp zc_tAn-${ua`nZu@;%L zE>vs}!_bX%l=KFgtr7T!E%@+Jh(N2?|@1ID32#r6Mx*uu*ndjlOx8jg+GjfTFHlA z#eq)DfRWFFTPc7|!G%%6{thUOvIO!&bjb9nQ4nTCZJYxoAr_<6%=er zE@(Ly9-Rm#1@#?}=G6r167497G$DqTqAbdU!Y~8Mqb>03D46AZ7$jV1g$y{=e9#IK zf>!h$kbgQK&ynX5SUTSf?qGh_Z-C1 zJ90zx$n+?Y8)`y+mwH95q%h04Pze|$93J#y*6yFWu|3t{$_#fL zPY*UB(I!DoupX5p7Zw=@YKlPw>`y|IlzrT(rbk?VpNZ_q&@7MQVlGK)2MNipB-Tjm zMuq62+aL>_^Hh=qMx}c-&+JP6GmnNJ^|y5&0AnyrDy>I~8~^|S07*qoM6N<$f}Da( A-v9sr diff --git a/launcher/resources/multimc/16x16/noaccount.png b/launcher/resources/multimc/16x16/noaccount.png index 83d4fe301064cff38d2eb5366da88242002cfd40..544d68207dc6692909e37d1fdf0756f7df153055 100644 GIT binary patch delta 146 zcmV;D0B!%U0j>d%B!6{DL_t(|+HJ@o3;_WY0MK`L*v<5fnZD`Tbw%%+BAK99nm$4A z#dJ*%Hku*`Y|J=xKfafAlrm3msfv&PXoH#@SFbRpY8q}5XR9D)at~D(EeC>F7#r%! z?JUiMm}sh7qwnYx#7JtRz*gZN#6W3}48176xGgl%J<^H{01E&B07*qoM6N<$f{eaD A4FCWD delta 148 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 delta 834 zcmV-I1HJsc2H6IXB!3`DL_t(|+I7uaOj~sT$MNsE&=yKdX}JgmI|O8>6euc*Qy@c$ zVzvPq@6kOhz8ItN&AW@yxMWY$EV{Y4c#BW?V2nhUxkZTs2Y4ab!W@@UKw98XMtgvr zUjFuBMn<+z@_qXyKdGhV9=5nM7;O497z~tJEi$$oo06kgWq(Ccvsn~LQ5A>Fo%8Xr zT2!)N`YBb*LAiS zi$vx&g|Os)^-T;KJm9v0-3qDPeQnb1$)&<6!}1y!S7AK~3kljC z5q6auoEawt3TO{ZT(KqKJUfe`ObAKb6RcK0^O?b4P7VBY`n%VGQ2<^oaK1bA{yS!J;FQo`cvkfLO2o;7hsEzRt72jyE@qa} z;?h4tj7+4&;Ki$A=#Qv4a^%DnkEgg-eY4Q@)_+s)9el$dtd|nUKg>RVPk*p8)7AEX zoNuPcv*v(gl1gr17XoXZl~P|3V)HJi-R?XfoqJ-Rv1|X6dFIJu^#44>+p$#mf;In8 zpjO-6*4p0H)7@K8x3iWjF`e+-9HG!udURyOICJ*QpW*QIA&%BnMy7Xb;sbY1rc#zi zfjdV2SL^dtAMNby8V>}T&J`56Pk{8?bsHDlAAlcha2RlLV>WK$U-UOZ(^a>bS^xk5 M07*qoM6N<$f)HV-i2wiq diff --git a/launcher/resources/multimc/22x22/bug.png b/launcher/resources/multimc/22x22/bug.png index 80d5866921060e3a4d9a89e516e135815044bc21..8aeb25d66b71c6864cb93fca7aff970f33bc1483 100644 GIT binary patch delta 944 zcmV;h15f<%2gV1GB!7)bL_t(|0j<>olq5+40MH+q*(kQ%r}50$wr$(y!`ZeU&bDpa zYuiSlt5UJMbGG(}p2FgvyE(3g#HH*2{2Vv^Cygfv{)vA#nijhL-idfS))D-tu7CaO z&reKDoYn1i&)K_s_g6l&n7sP)OCI{!B{zESqIFz=U*UR4{(s{}uW^lQ{B~hsA#QAJ z#2q_!#1E}x`Hxn`pRS2NSraerpnOo%@ynUpA_G7JDFi@3xaKvlIUi&E=4dp!+F&pM z@aXcK>RM$#{YB0l8$^t1&aRApIriR{U+5Wl8t#Di;r$72frD|xfd?LV)bYn3f3@Lo z2msDYC&C8?yno<44lZdVOef5xrf)dq@egb`1h2#fHW3n>gQHM38jaX&HpLhLz`m@G zkLd8Cd2ZTZI$<&}5y%4fYT9<&Y3Jgrcqgg^2jE_~*0yciKHBYe0YHk)ScZ*u!=t)P zCq%sDe1140K?vM$T6aEi9L_>a0X2%pUU=qpb_~zI_J6E8yVL>Ma#%qlkVn3q3s}pL;H9|T0Ts84TqR>6b#WODF6@huD$<^raZb%}&@(;R zkPo+fbHrQw+^@lPQt%nPAq5>gh)9%bTv!dVc=`u?>NlTy_BVbxD&B;T;sQtkkmG0!uyrEO zyDTRs(G8JSXrLLmQbJM`^2l%d!()El8-5n=K@ZVCF^OpegzfCSQV{Q(=shYkd{U-- zbgF;P)X96&@I5>O%Lx8UbBOpM?uuLE?kTtt){r6iA57wrcpWZ_6v@B)^DYALKZ}Pq S8ATcZ0000Q delta 987 zcmV<110?*$2k{4xB!9R`L_t(|+O5@Hh!tf3#_|6%-c4A!-^kP_Xb zMM)~ksEeqCgrcAn34+3_E+V3kC@PBRD$okUZb~HjAQ24HG7H;HlTdNlB=BQfchASp z&d2-qz+7}BOobl!&CJy^4>JS9f8-8XE*}4LM&yvJy-c|$hJVZCN^9Dr%)c`(@5yyy zxY`U44_8`RTF#ft<%t^y2fy6WG;5%bM*ysEjH3Np2JGs!La_SaGDgyW92k z^|^t80k>mb5Pvrx_x%FgLD3D;$4ZR#2CM@D{z)jlU?e}w%9SfC&bd8N6fLjU>p-4O z=|nb^*8Cr1xPLzc2SgSwWJHH&*}ip}Ex>bfpL`%6dcd7>RDK^F9X&BNHnzOcXwaNV zzr}o1hZiT|XbPbRMVaGMT;0mkkA@rrUX?ysD8>UOn*!^e?0}al zur|y~3kF&wko6_{*A@8-_)6ZF%mYSby$tpD_wUpTqklQREOe>qYY*92&PyHe@>uG~lkIv3crVX5JROu>&RI(X% z_Cl9|%zvWN+@Q}bz#e(sC(n=!&%)v*K6m|^!tPm^lO^2HVlY5^N11BoXv7Kl0c}}| z%9xeo34{h>2YX`-upj_Dc}4CW$#igVa{%2wIy>sqHJpP?+O>SbLZe=#sO52EhCLCy zTZ0WDtjcG8CU5!VIVL|R@WqhFnu4L&>wyO!PIV9{gg3|L^uceo@W1yTpC9r^NxmRl{4;*_srM$S4u0Zs>8n#u|I zynmSD?g{e3eglIAPzO~lKQd8eFt*HVTHdHu?J-k0HJZf-fFHy*FK(B8vh*Ar(7>s= zFyDeobK@4aMKGzAgT5hg5VUvLcmBNa&EY6{8`vpRLUVB}C#5bk8P^{y$%w+~iudZQHhO+hcU>4(g8Wa!}jt zxVGIjE|ar*W_I6iCeDWg7Q!~pBW_@6lz0lLUo^UTed|vyIe+G+tyze~tG)~9Q_no8 zj9hEYQs=1MPP>>*bl+OdR{@QyzFL-*9%UT*rIlb=h&Z+`4^x7X|VhkCVqWC*6J6j+^g3$T_Ln zmU9|;9J%MoALO01nl!#Y|Hx}R=5yryri>G3wZ^8e>g*Zy8$;+U2N6$YX5> zJOoUh*cgrcf|lc&S`*sMb9_B%|8wsmkArqO`n8!t7Jo!TFVesb$KHj0LHFO`uxrR; z%j!0t&Yn|QSE#Y)Br0nyEMLN0B5b=Q#i$uKa}`cR)=#{J-@L0u(x?yy284+U*wQ4a zwJ4p`2x>VeHd-oFbqlZgT!Z+=Hl~e>Gs}L3eNV61B7@5pA4n_>CJ1d5RRQ`=6 z_zPGGnlVBcQ6`Lh+-)*+PeFF-G1#-qU{|qB9b+625hWG0FDlEdOn!6Kd~T5MK)!(N z>m{uEzekz@2oof@PDl_8(b$Fvq>zzCpbmgQ1}c(*^aNRzlC1(+p`@#p(diG!GDfTc X)4&*K(26FP00000NkvXXu0mjfs5DAR delta 715 zcmV;+0yO=}1>*&fB!8+&L_t(|+NF|BXcIvc$KTBC=gjUTn@x6;HZ@h-5*wwOV$eux zTT5e$Qbob46>G(hinfZL?a8BF3W6su9t5R`2N4kj6%oCPUc7iw1ix-Q6d7j&mTqn9 zwtettcV^!E&3p46tke)fds=f_9GGK;TyenV-fmc>-ELh|oPX+W+k36pRKB|*yZKJq z$-W*aAI-0ds$g|eGl^ha7XToP7#8)Z+?&D9)45fFx$eFQfVZY5#NThyk56~B_8(d? zbYFSs3PxCH1{RcSHL&d(f)Mh1TfS>#*}#$NrL{f9fybOW0qh@{I(yiX-RMOIp6t7f z4tJdyZ(CRTrGF4*L8#Pogs>ACdZK!<(6{yAvrM8P3<~SJRP;=TcAYz3Y~DU?Xy#JT zKrbUhk940MU7yJZK~Z!w5_GtCyxd%0n287#3Q_wbfh(J;ucAU-?tMH^8P@*`J=Sx+ zlCV>u;9zD|MH3j4&_2P6DCIjQA&SWfxIRBCjIm&bC4U?{Daf30(^W(Cw(lQ{1TN)w zK3%9}1V~Vw2~(r9dsJT5-c%lr1a5E}-!A^9C}`B|nlncvsWZ4Fkb$D4QH=SvAE|K& zp&B@A_+x3{UIM6z0Z<5Pfr5PC$uz`!Ju?{*j78jXMOOD8cwnE(Ks;}QriQ?EU=bhU zEk491Jbw~@A2i6&XfO?ng5_DQnZD&u*Ae%=jIFw0u@Kk;gUEwMsS7geM-~`gBs?g! zCT4OeyC#eBTBgBB8j3MvA@frPCnja=4i}gS^UVRuWH|-tFeu?y9borN(B4sEe5ES= zK~?sXDeRl2(9bquAL7V*;sL*rhS;d|?+D&m2SkElA>*K_(vc^D*GtD1`Cs(Fu6ST| x2lBz{^yS(IUXo{p6xfX^;BFF_p#ly;{{V5W`Xs0$Kx6;_002ovPDHLkV1oV`PwW5y diff --git a/launcher/resources/multimc/22x22/copy.png b/launcher/resources/multimc/22x22/copy.png index 4393ea0983dc77cece36bebb2127c5ad4e0c955d..5cdc69dbeb737eca379c97e188e9544a88c53d5b 100644 GIT binary patch delta 223 zcmV<503iRm1Gxi`;(x+PL_t(|+6BNtPE=ehgr|-&lywnmi#@KaoaUhvn;Wh zn3|dAP{pBP)=VQP4rJDIh=7A+hJ?fhCXxyqNF#~BCXl39*jOM*VxQ~IMnK}__3ieW zLqy=^=Q8hKj?cxfYa#nuzt{8ebj*Vb(SB)tKfc(2VBhw9Jw9=O2(#Zm{=owK4p^Vx Z;6L{en~F2h!DRpd002ovPDHLkV1oI@Z#Mt{ delta 224 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 Z`V$uF>R<^4H4Xp(002ovPDHLkV1gJOhyefq delta 1289 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 A3jhEB delta 882 zcmV-&1C9KF2Z;xeB!5szL_t(|+NIM?h*fnM$MMf|&b`h!+USUr)l{YimJ-pMv}#eb z4O$2-+P4s*RjXV_lF+tAn_}#ZLYERqx#-1>i%=SMN}bWvao(NRd+&J~E&~TdgXqio z!Pz`te*Xua`0CqX*j1Lr(N4SbMp6Q4{nKo&F7@^-UD?z(d4Fk3|FsKG?mqKdqtObq zhy_d#moNtq-+XrrzJKAlm)_j<#2yiWnye#3cHL5D1j0mk(OJ=TTRhSpCCM;%D)u=G8x_-jIz9kX8oQsXE zzUN;nisiErxsiYc;#4Cu0lF&ihy*r;ijefE#R%L>&R7yxPIzk()EPo&~-HUenJirDt z(I`+4BtS|{p_EZ7hYni&^CMYJxfgRI`!yfk536Y5cD)Lu1Ts*{>?QkTZURyCyB{kn zy)c70;(z9P;|honhzJpV7?8F}+d)KA=8~y%(M{Ev0I;z50OD`mxYk%+UI9=R1wugd zU`Uvixu6(&uPcL|$Da|=GV{lSpl|oP#xGtqxP9U>aSF?gtP(&G1rb6Jgnnr^+GL>| zdSAq3_abFW^RZ`TZdSxLv$OMX8h=53ASjAj9DflY;$dkM(MR-4Gvor=Xms~qlsk=H zF5zc@`alp-hzRRJh#(9QFG{n*B&MVew#eA3Z0t2ZH-?%CUXp=8=y-Jc%B4V}rwAd^xZCKYdW=Je}@|OaK4?07*qo IM6N<$f-i-k-v9sr diff --git a/launcher/resources/multimc/22x22/refresh.png b/launcher/resources/multimc/22x22/refresh.png index ac05ff7e3074a72978d268b26845af90ba4a9bff..f517f7acef9100989a391054a5f3d1965ce85ae3 100644 GIT binary patch delta 1101 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 Z`V$uF>R<^4H4Xp(002ovPDHLkV1gJOhyefq delta 1289 zcmV+k1@`)b3Y-d%B!A;cL_t(|+O?H^Oq68+z<=-E`*HW)aoj0^iHLmYIR#OfAIuMy zVhK~H_=T?8qTEc2rp~Et=4={kxw%|R4W|ngGc%dh5+TuAwk)k&kql4{IFOIK1CEdT zg12j$wFdrGzwNi@`Rn(5?AadvFGPkQJ$=T4i4!NT88s@#V1G87^+uynQjMx4D+W=P z6iJd~QIcgv62(6!iXa%R$B!4CFD*T_3kU%SIXSBsf-^-$NAtS9ZtheyfF=&7I#MUaKOu@r^j~2eL(tdP`$J=sla$Hh5o|GpV&fScpM*9!8PX<% zwZoKTNEsV8nO_=w*epuq^5x456h(?3Hth5DJMPvxx{{KjNk~vY)`3L{YY1xwYb4mh zMnqzc3h-=h3{%o(ke#zS*Jw06KWsQUI@alIzF%*#T7O6$69L}72gjFXP)%S8t5?9; z&C^kCR%NBq*zBgL=)Jm*j*cIP4FfGsXVYDiDwCLK0e2TPbwXnY)Hgy+*s3~KjCGJV zUEr17C;0Mm1*%bP03I7AymDQCUm$$Xkzmn-K}Jw?Ad0AZFFWUXSew$rzAsuhb}OEQ zX<1}vWq*wZY>y55{lRKya|dau@kB(MK{cVNX2w{0D4f%YHRNRTB|o>tSr9XV&TbE5 z;>N~Gl5yN)!!0e%wXJQgeygvQD4_}PF*B-_ed%rn+iSS(5!jHO%18M&uIxx4cb*-y zHO8o_Y8-&bFsxqp;#18HO-6UwSzgmTw50?{Nq-)P*W+fwq-kVWEer&?AGm}pZD$2nvWgUs`6H9XC<9hn73Zrv~8ys zSbqkvapO+?2S+bhva?qT{0lw*ARlyDM&+evR^%L*yC~CQ(F-_>PjI918V<#bG&zlo z73*b_A!2-f{+4N}X*0JW2wO*3t+QoO@r;fg=inj2CLR%&Y)^V;<=#DOViU#*?Ufa@ zojJvIM=OCXdq|$Y08!Jh+F~$8*a!>?gnu-d(4d}PZx^n{nt|)rJ}*6a^2jcrMkoM) z)H#b67B4G&YpSlhleP;V)BDwBZguqHdif1z=H?L_6@h9|2@ZfS5Y`WUeLnoYAOiy- zL;^%xBuYw(Z|>f`eT@j%vsNrQxAg5oyT9sJTo=zV`2Dwh?Pv>@XDs!uO`jbp^ndo~ zoBOEu9s`R;`cSzngv>u z-KHHHVGKSg%jeLGi{j#v3f8WD;hWQ^FZ!yho3xG&uh!k|(|Wvqt+lmNtEsuCRa9IZ z+`s>TD>F0eJ4G?R4#e|WO2Qp&e}91%Ts}*yNib>KtcEU=UV0Zu;%}^~YF;*X?!pfb z9z1;i(4ixp8#ZjN&dgj?nV2}?gu$S00hRy>j~+yZj^{odW$+x2QTj6#>4py7CSW8( zBLV3TBh!Ggr%+tOid20000x~Z~2)yP$2?9Zl z2%DEpdpk0XM+BM?;Q8C(>ph2WkJ45g73Uue!-Uaoy!SL=jN$p4E-uzWleX(vgH2mX zS$dkV*6`vDHh*ckj^=ImN?>B*peP_vU!)-7HEX+Pny2o8z?6368A=Ha0~^7PNLvpz zZ`+&Q-f)q#LoA*q)Orlwrb%=|+tRx-FvhfFC`ua67>opyM*f0I|Jg~klPJrg@$v+N zs^Fw^Oz#}qzi-;=ZNA+eX+?x4LI~vTfq#1T)WIs!ye=fmW&;EeY7+3B_wO$Q*Q+2A fkkecM-T}o&d6SGmIaift00000NkvXXu0mjfbEVJ; delta 448 zcmV;x0YCoF1KIY<&~4^BF9B1|=b4?=nn)p1jzl z39qj$<(Ud?z1sK=AOO}JvrMI|6DcLy%JZB?6Gk;>GOKV-XvAA`!m5s6$7sLjr#1}!NMO0|p{gL!US=Q?Z4mr{4GX_7 za4TeyQflZJc7iSxy>B)Q`gwL<-t}6dM7l7IIHDH)Y-B;s_b!}sA&07_6IF1MT#>~c zllj56=}qdo>ij&xVJ3K)ZrRtZw{KSNKZ+qNs)*1?Hb4TQ qC4o3SJNpQHY9bjhq`L&10@WYF$&0J6>H3ub0000A)R5I*rzoMe$^6?0dAo~dUEE5BpaOKS;8LSklL&+ zqw|}Ii3wsLCjQLH&ZR}N;fd}A7OuttSA=*)L5AQo9Ef#EGC0Yjm^0iyWul&v*&j9* z4v-=Ea0h9w_J1gp@h}ZJFD57j(o77FBEjWFf=-5hSGn1FKpKg~>O@=MYZ0-Ei=CTj z!xIO#(yA6Eo*1p;;lDkBj_E+Ys;Q} zczBSppsHj^jgD$(zi5cS1=O>)k6BWA&uln*^782<$|fy?s#+~=vr013_{hb!eBPQT z%$6N1_FfHLIAyI>)Z#E1zD}al=GN!m2AEZezJLD^c&5giCofwJA);Uu^QA3qBaH(@ zCKa?1MSt^Yn@8beVS3DLlt93ICdjFbbaf|{OhLv7x(Fqvf9Q7?d25{$HC4xK5K&az zJQa7*Qyz5$^HV|{BS=U^&=^?g%W`St-G5P~lGOUAWGX@paH{+%|8|f?Cj?z)Pzwl# z1pz>Vh6N-|LEjj5uj0cX_xaW)&CY6CM?^6^0DtBU1Of?B=V<)<-S9>6B^SA=$Wwve zh99n>R0xLyY9s6R$ZD`vAWNF$n_85s5NS7&SU?0T#I&WxUx804;eAD)8}{1u3L50^ zfPce+m@&0>ZKR>$Qo(16ra)>~B$yNM24dhrN|2`En;sg9{BP1|0wts90mq;%sTB}F Ry$k>V002ovPDHLkV1l_Acai`A delta 810 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 M07*qoM6N<$g4{L3aR2}S delta 1433 zcmV;K1!nq@3#$u|B!6;AL_t(|+MSilj~rJO#((wfdQHFF)ARC-WyQ&mct8mOLP&UQ zK#AC}V#N~Jun0oopMWd?30AN}tPnzxLP(GxV4MKqA(Yrecsyy3yQgQmr(gBzdUVxI zbuDJHh-4>6I=WXS)%ktryGJ@I_ZeUR+1_KSs{XRoYAM^>+kf8x{>goW%01%Szk2!! zNs?Yr6y@pJY=-A~3(n$eKLaFx7igDPFh7$rdVNfw$Fx6nfo3Bi+DTd8T%}rDq2D{k4}2OI zYCQJj6O0Eg*MD<^|NZ3%w-Zsn&_cC5!qFTl)HnmwYYK74!e!hhC-YX~<-9|)MMn2vf5$QB`%t#Da1 zx!E7G=x3x-jPt04JuJ7=p3G0;>VSPfcAF}^yhfBL_Sa&4`8)K&b2)KJ~f+-uUUTNSRcqjuw zmVYeBq6Lm_qUbrQtdR?G4wwcp8+D6DdyT#u6Z=CPPiOX@8J)h06DSx9P;3cXvPniM zS>R&{m0ZgZNk(nOrqwVRdlB9|#?a0!LQ`d?eoj8*er^U zW&sCBBg96Nx}_1R4%Rn77DjETeZTXF%MsCQh(KDT;E4pEC?f)MthS$av9(4V(41giDl>n^O!IU z01%}cdFhB7MDLsdfX^2yzgDv=Kb{5A&i=87Cg%tNwH1rgu}h+Q<>SZc0#%U-;*>PY z%MOGPMS=jTws9!S(sRIX-w&YtP-Jz*`D&mwebxpn%M(KBf-`#6vzO>BkwdS*d@BQF-67DSv2wA1s&@uG^voNON8011i zwQDzQCH+3|@`qjeFE6w17|+;-{=>mE*aONXV;kCX>fXwcmxW)s$I`!N{C=5+u6%jF nH~x9y`*M1|3H;$c{^dQ-1rn!76p=yE00000NkvXXu0mjf+M~G` diff --git a/launcher/resources/multimc/24x24/resourcepacks.png b/launcher/resources/multimc/24x24/resourcepacks.png index 7942d80ada84619408fc2d38c697de193548524d..b434fb124b17c010f47edbd87751d1237076d310 100644 GIT binary patch delta 1618 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 delta 2247 zcmV;&2srn)5z`TnB!8MoL_t(|+U1vRa1`|&$3MHbx3~9{=ZDJ^lJJ}$gor=@rBwkH z1O=_qK`hRINF||lg0||k#e&$;84GH4l!~3UIOT;842re`jbV6-B#?vv2}uYEdAKB( z%U$mIcDGwHV{uxWv@iOmpPA46X8$|0zwiF`X_o(cBu1gIuz%1dio)FvhjWr7$!4=z zFEcUw{3jr-75)fKXC$ zE2HrA+O->BS-J8~jDutJ!(D^1W5ZvfWg55Mxm*vr;Bhn#?|%?cJ8c$#5rIS!D{RT zkOz|trx+F*7G)dNaGK$iOqiGk6Ov)Fi>qD-=o&7UE8XdI6iWtU4iJe%TD!ZibqsiX zyGLxMtoG(g?i8cIuNxL$c>&s$TbO#2a_j41%1 z_V>Fl_kZ^Elai7`;ms}()REC!%_G_ruv)=x2ZsZrj%c%!;q>s@w#nQ)vzVDPOR*^F zR$bSY0prFRfLJVA@9_*FN(x0&(;*rGvjkSz&;p7w(l8+b5)((N*#bQQ<~iJ~UVb~t zsTuSSczJ){>-`rR&z}N901{&$7z~^k92^9oXn%S(cpIS03AzdzfCQom;u@$b_yW-F zCo9~*!}DF7scz8*-N}%a57=+#- z=yXF{r(rvEbc5T=jHHXaS9TMM5aX#GzvI0FpD->rjp@^8i+~%@#vH)w9USy}z1@C) zkbi=4=_DryL9v2U0f%M81S=#Zf<@ivWbg;@`ml5q2LmLjw&9gJF^4#Ja{&?t1o~sOV zEq4{T^5_rA42L4*=jUhG?TH0|IOYIA)PLjgwD^2}5M*Z0x(P%LEF+JeCRxZ<+u1eG z%hD;C?AU*VH?L+B7eAKdh4Y?1?1yZ7nsLXOZd36qAxtvVQ>u zKw^xPmM*!~9~|buPo5+8*UwquPbF6J5E-(cA1s;6rAy6R>1g5mE0&U#kxr7+PF8jf zs%FAB9AwBJq^rB1qeqVThlV^6KpJy^g$tL@m^*LUBVkpe@5FJ|l$VqJ-aE8uH54yj z&zDD!VKR%XxbHzi!LZ)m(HA*0(0>%^?miT1ZEN%Ox!peFn`7KZojskMtxcex1cn(a zum1XjT^;>ieb-aZ=)b>nksdr(qhHyzL*FxHl3xDgR{e+NKh@W--x@3|EIFEyk@v2} zV*e#j4y*<42Id1ZfC3;HkO0O!0Ws_^J+b`-CU&$^`q(-KPMu=7>l%|{VSl<0e~4rK zCYt;nxv{aP8hFFy%JJH4xj`VtD2R;0CTGHW<>31>3tg$)z2zx1zmI_BeeET z^4r?cd#~~M#wSg8+_Cr`Km>-iZF@PlqGIRrii#a;ii_vD_!flCvck8J=``uDEnV~A zBMUZcBpwdacl;Q>Ghg98dViEU&4ec{n-DrTJyA~KE%Q0wP)|>f`{MZV69i{Ma+ZeR zFqs6=IY&{((s&}Sd*1M0W|VH5w7#YF{qyH~xmV`|o{TkzJM#aDXN+l^J9lJ9T+3EmMM8%Abg-9$;(C5YPzQRy{mw)%qfBE#c2M_Ll z8E^v#Tlps{7B9c+#U;CbWf4pg-V;>>i~z&+=dPc9rRYT6@^c>E_&Djw3Fsn3qdIX_ z!01K9Fs4HM1~mb~!8p;OF2ryzAAkJOsl9u5uLGJSzD6)9=sO?S^w_pJKYNjA`xX4v z#|d6+Byg^l@TE(9<$p|vN6VP~-MeT#--;(Ck@UAbXzQVe7>rPi!S8b9a0PxVmk3RV0qRm@~7$c9=)eyeeK&;^$F?T!+dN0+p3t27eA5_@J$(=JaR4knnbj1E6}tzTeD_YXYH~Q-sf-Lv3orJvhw%uo8O5 z7dqmJM)m`r191>$W@Y6qE-hVj-{Qqf3U9k@fi!-6E+&(JD2mr7tf~K)5Fhi(tn4RmFRs_6ZEPatG*^Fp-&N| z_kpE=lW(E`Q>|9VhLV!`pKRa$YX2K=?2S}ZywJaF+3M!0Q;UzgT;o2LB>7cf6R->@ z0WtuI8@UD6eCkr7{##voV}V`YlV*$0R+O^>!cL$RkVko$Ws0J7zsY3T25bRV0&{_B zKsI0l#6W*{1hE*ltdzv#bIj5)yI^_?SOeq%B4fwOh$8<55-3ZO^a@4n^r@QP(O1&F`#tc#{d8ThemiU_2x=^_b0X{hZ2UvfUng+FF%KE-ak(CnlRB3)qG zsdOV<%xvAz1>f0w7%nvbpLS8e%zx?POU4ykJSyynXHJEl&Hw-a07*qoM6N<$f~kR9 A5&!@I delta 200 zcmV;(05|{V0qFsdDSxqIO`BFji*9GeXi=hueUDH-d_^{MKQXD4jWE^sV*mgEiAh93 zRCobpj{yk;Fbo4{p%!Xk7HT0DVxbl$`y2W^4=J!42XN$^6M63yORtLv6cHhEUKi|s z-N3LKq>IdYl{r|tP%$Y|4+MUa_4jDVv{?6;Nk;qEOi4)F_|6!0000+_2EIwmoNWwbHJxgo$5-s26%hB?Y6rd*fq5JZGgRiQm@!!^Js;%kB3P??U)SOd1z0b4>Q*wJz8cVH{Y1l|S7)(_x^;E+QOS@1)8x~;Y!^gamtoWDKi!9F`}bFP1@34emy9lP@8FJqMOs*33%g^2}L zVJDPLE84^WnNHpg!1NM&Z4{oGsCobotdoUd;V}(dMR*{2gBjP4ty#NZ=$sE3UYr z1S3DodVcxkmmdW_zbJ|UAP?<8aoY#W4g>DI_uhM-wpgNCgcHC{^*Sj~02z>LJ=OZ3 zz)cT6$Qg$kjy&>6uDRwK1FL@i`RAVm{(q;nc50SoeL95(@PE4x0bkbZ^_j+) z^ME5Hz-~+6f(9@FG_`DKy`eAq@WT&R2&iAi4@ub&H^qH2&rDhQUwNJ{07ii#xC6SV zRkd0zlEmei?Fa1Jf(yj771~la)cQ5tEAT&onZW80!!pk*fv*IHb@eWI2Xw$#CIb3_ zoqvG?N6}TI?r7_a2Lw1>U_SwUnl;nX`$rUd7ua=4EC*H@V+OT5^Hy9ffOjN0(6}XzFP6zK0*-dh?FbljoUA+( z40J(TV+?%H93OzbY1^o}lfg5zt;31R% O0000S2qhp;Km;g20z?CfpddwP zs1Q9BMMS8OXeelC=xB&!=n;Pa>NJo@C`iOXNy95(<0Q_T_^~@X!CViK?>Y0ZwRULpa2ReU4sG}CaVK6h!eu-l5}U9E6_CK^tbgN#1q)`t-b$r1syh(V z)6;- z3x$F<;%wk)CX=~lb~bMHyTCzker9GycK{ZT3_J(diD+LW+Hx6FAk7oDBSh>#%dOAS z4uy#M7I-^vz<)MDJv}{5Y!cS|HVxRJwWcWApWnU#$8n-|r{@dW#*k9dX5msybiH{% z`q7!@f-kO|0H- z!i|<)c`~-PA)Yi`+9X&EKrF#dur}45|1=PA@kX4O$)VMc#C_qkX8^)hal0Qsr%E~! zZ_B{z<#np_;~sBa_`vu4|PK z9mi3~I)BbU^gwBAbu6OnF&!C<#Cy*7Q(s>n;dP8mOioVzg!l@mnevta7UyCN3(D3p z&Ev{8>7@_Q(R0@}#QXdEjWFT0Y<6sH>@CDUhhew?85y?&;jL#sk0ak192|V8VAM%D zq#=;Y=gBt{Kma7SeQu9~8~5(f#bbhcdwXeMV1Iz{{%3ZeJUTl14&viVsX`D0^IU=r z*zfL3;8i}KpAte`M*9Q|?3*F#tD>_GYMiT}#(4=04-c0hRKffun8ji(2N5D&c9dV#5tFQC>mj$_aYAm)`}Auu#ZH7>P^?ZisDz$KBcwZ zjVy@gVdVi>B;0a5EAp0ymUv&Bv=P?zVDa#=v0!Q;y=fM V8+38~(Zc`$002ovPDHLkV1k`N!-fC= diff --git a/launcher/resources/multimc/32x32/instances/ftb_logo_legacy.png b/launcher/resources/multimc/32x32/instances/ftb_logo_legacy.png index e47b10de243b248059ca53f3095966fab25c288e..a70109bbb9eb6c2d21531416847cb72cfffc20d2 100644 GIT binary patch delta 1384 zcmV-u1(*7w3;PO?B!5ClL_t(|0qvDzlq^jWhM&x;?$OnlpKZ^qZCn4=wr$(CZSQ`z zZ5#KF8&wgRx!q^t$K39<^_)|RtjK;t)%>4-HUG!m{ftNQ7x0*v+Q_|<(+r@wM2u;1))4=iSneP99XGcY}H&|yEl&rwJG_WqXx<3NQ! z1J9qyVc)*jCJi!r^~WxLJ9QZVd=Mq5IABZdhMHda-gDm_QkbkxRtJIX?<$~3GFiK3 z`Q^9$;F{}z+kb$YMTGVN1YqmJkvE^!dgn`ncb%9v0ggXGj&b|wi+ zTvx9T163PE|A}j_{hpL%%wv2l&<8lM5*R5T7!(yDYU#|j0yKbSX>4n3JMZYX_D}C~ zR})aEYUiYDQjO|8WeBu_JHbP7m8HHmY?7!#nj2QMBQyH^kyxV&CJ5!eXKn}F@SovIR5 z!M5J*S)ZQ~kx@(8vI!Hwh3*VcswSLc(7B;kPEGB2`&L8d-rt27U$ss3TW`4Ty6*w8 zV}A;aCa4I&;LcC|^v7JKw@5xaRGN*GfX$Z91rz5)x-vj0OVoSz$n$&jWZ867tt#BH zgj0U8wDj#o)tUt&T>=_WU5_eJ%Y_?0^VAmr*Nr{oRd=Wi&pZbhSntT)=&>GvK0FNo zkQgCGj#*v({^#cBe*mm*f&O<*O}+I&8-F%@b+2mmMX$K|<_mz(H3dXFN9-W9Mk8%UbAa_Qvt=@Ptj{0NT!g2tmY|PreB5BlGhgSCO=n zbFUl)_j^mwq@bz_DpnBYLHz2uzkL^=Un-m*V)IYmUm3?T4x8r0Dp4^IyWrM-Z_ROSQB7;y0>>1N$EpLBT4}BVR)NgMcwx{YzYVwv zXs$1Tw?$`8YIR!uGX*#kP_^#&_M<%**08I#UI3{x0~K@dW)pic@aK`4e-5~g(nZ@x q?3w@^-E`U#e;JNHOyb{-|MNTgAJ0atcKyo$0000Ol90%ce#w{j&bjy8_r0^c$&fLO;r|9*c;+c`3x9Z48@hxL(@hBLu~!BT z&DbPDG>{fCLt0?pZZb-^!jt3{@C;$}X`;+I>8bs0(0NaRQzcac3pgt%qm@$V@X2`x z_kvph&27zA&GBUy=Nwt`8wvVmgZ*I5&&#};pO$%WKPwaoJzUlN#IZR?m$rdj3iOdt zfRRz6YVYDgseeTA<;K6akdz47SS2J;Qc$>`knBjxi`!Zolu>2=GJhC+&TSRo8BvzJ z()VW9fh+A`b^$wu5X2IofZfrS&fj6rSK;}SBPf85*aHMn_x`DI0ck3S&ArkAeL+@< zWW0osl`#~MmQoOewsv!E?eyzA_%{h&STv)yc5YcH_-Y|s3iQ+rp(Xh^@QpOe%%8FTVLKL<(0#iUOWo`o(`+QZUKHnx53RPsZ{?g;T zO&H?`0aYv*T%e5E-hAT3CKNmbY{u#>_tn1pgQ?m4-8HZ)fRinY9$Hjcz47Z7yLQi# z7v_Pl0DtJ4wr`FHj7clOQ)2|*r@?>pvV!x9mlwEr~v{rZpu9Hdeg3R4Xf5&J@nBbuz$f0 zXIzSW0Y*t_1f@i4ZC50oL0&5%N#Ggeb<8 z^?#u-VQn=u1B8PB0s_L6PTWvlUQq`P=`!{hDB1{F*t5C4y=ib0q5uRW$CdyPp1O8t zBlQ({hB>oECT-vPZcJws#ZeG8M1bO)*b+>4-9-V%iD)VPAoCGU$mzrJ_}-Y5NqiA8 zL_k_g8n~GO9_`q*_7!lomn`2n*Eea(i+^w*8XQO#kO208Z7F7}Z6UNK1b94=*#CKN z?*VWnpy0u+<>mEHjvv3f((iwDeP`!iR_o9&AqcP;u&KpSn|R}3!v*1G9IU&AA=@Jn zcX`QK$z`APWWsr;bRSt=SV{oWX26~y1jQIPMhN|+xA#-#wJo^ba3%EWCoVz5-Bj&700{s|MNUMnLSTZlzM-K2 diff --git a/launcher/resources/multimc/32x32/instances/gear_legacy.png b/launcher/resources/multimc/32x32/instances/gear_legacy.png index 31c6b702b169453b17dad1466dd240a49c933a6b..61dc9f500deeb64d59e56cd38e0c34c3402be6d7 100644 GIT binary patch delta 2258 zcmV;@2rc*N5#AAyB!8tzL_t(|+MSmLblX_dhM$pSio;xP1Ix_#Gcz+YGgJF9GczwU zGc%XlP$5Y%;rkb z_X~I%At2m!SGw-SlbRcXt~GUTe^*_3sJo%GVqNWh9j$!h8-E!A;cZ0lW|Ml1JW^5f-kg(tNxwLsgdr^Wuw9 zYwc*(E+(wWId`ga{!B5pQ;o@CY((t5H|D6?WV1Eqm8euMdP}5JQxfGQ zo{sDsfBWe~L4V&g0RdSUXptHKgh^@oKOM*Y2AHWtpvGluX=XiS^3$fkNwE6 z%Tv2fZf2(Lc=)0!Pvl5BU%Kze`a{3fvSWSVR6eoi%)S4;{hT3n zwoi?@JMHADnUyC`R7z2uz`KHm{Xg80F3+9e;q1>heB$SSE&uS3Pz`cQVHgIVbBrB^ zu`xwL=v*PRcfgu;0rmOglT$uAc-rv)?K<;$wSVqz@#daVAv~zpUFS|HfzHkeMBu%Q znC4k;M62Q3?(*FH8Oz{ir4_iMNBH^k0xnr2G^#M%=NTP-E!;cN;hCJpm=J3P=VW;w zco&4F(5c2HHLm==@n7F^@9g<69E0EcDa$htcuwgQe(^lvybZ9n9cprrtASN*aQb?o zqkmqRE4~WH!8i7G9r?<>4M)`ZX>qO)Xxf~RfPnDZ7p03`PW@PBiKVddseIZo-Ahxb-)TnC&TLKc_>CKQSa zQ6-^NC80wKW%#pK&ffd&JstZrv3tdu7kr#NVPv+S`?eGV*d%qkqB<9syAe56y<3m< z%|D!e2Q4ji6H?0HgwxilQpj0v3Lz`Ctpqt-{y~)!3g1oPWPE zTh6xgtG^ludR^G~a(=alxm>*Vj<5RlP1PoI-&Y*1p81+rK$nHEM(~HxuWUYhAT%!g zqmHc`f;lf3pj{xvt11HhzS^+J+;~wx&OWZ5FPYBLD*=zRNjfEwI9D^T?C}mac0_5d zXQ|e00>Bryo!j>>yT5PmKlEL(?|&=%P94UAnE^vpf7A&ldWOqme6udFW@8BeG%_*BXchkK)Gb|cQG<*((VunfT*WjTED6Q~VMQ~#jDK6YM4X*L zH71kM0CuQLm1fn;h64L8T>o6jA~+<4}QIyb1^zZ}HL7;SAnfK58nFg7E` z4+Pe3!@IpCX8O*_Q}$wEO@DX5RI>C00uN))I{LOMGt*Ek!r&O(Gz7gpLSs_}F2H^T z3%88c&*A(*yni0&?-KOUnCu}QdBg>ZDm{OjOa;kdjN7hpvJGbsf92@KgJVg)SYHc` zD*`M_Nvv)W(naODmz5izR<@481?LDCoFz-9w9CU3jLxR~4g2b5)PI@*b$U-QFH>YU z+qV~WJ|X}Gl}Gm__O$w9psGIc`BFmqfvKL6-^g!1Y1Jy28;7W>7uK&9)~{#jm5Zue z@u3s+Le2TlbG z*s5-h6>5U3XZWAul% z`;trjb<+zcdnfvxLnn{^cz$17XHd#e)C%Op_k6UNayJe)nSZ}teIy$?<$t%g*bi>6 zpTX-P;9xn7OFV)keyT zhKQ2}jBQ)I&iccm`j{y98XxXrU|?2N{qj8kDjPSJX5RI#k@`&8JL|{st`+M7lxZK^ zG{!Bcbs2{%&1*o^-H$rI&~R8EfIlcsw-{1`)$li;n16ic@6vS#eXYw#MhnvthBd|% zCL5(3{{Ytfh#K2VVrn(9Ato^xzeki!QUhS0GSUq zZ4$O`7mh_Xn@#)iE{XkRSbLTl(@bImwPpsRTe1Fe6K4Baxv~h?11u~Q(1m!Dso9&y z!aR?`r%Q6#nV`)Pw`fcjV?^R|5~_@qqv8=BS#&thTa9-#J^$5T4f)m6)AP$TKiQMv g^u_h?olMXFA1^fItP?Yo?*IS*07*qoM6N<$f}x>$CjbBd delta 2269 zcmV<32qO315$O?-B!93;L_t(|0i9O`blk`itd_Kt^+L>H#$#q?W@ct)jQyFJkC~Y{ zaLi${Lu&^Nm#mj0&GhtNdz~{K_j~oks#Z^RX@*1uKPIRckUGM2Sil}A#SCCi7*L(a zk9?u^qsRfm%P$9GpG_=JSYt=Tc-7dLyKG#dFl1EO>ot|Q=YO6M0raEZDI(uZSYJ;7 zfN204whxrA_p3?y6PVRVQl?ClXA84yDU~v;7NyJ6tFb41)T1ZrzP&Qew-SH$nNwNT z99Cy->qyoi`?C)AP#8qQ6PV0qBvLD)BM@;&iD4zxqKy+tg|+iPH*c!o$c7E%M9Ay- z+hsWdd;#R!D}T_Nyy2B#l@l2ZrD`E21|~AT?}|}23To5hcI;OZ&b|>WfJPURAOH4$ z&}y0F{Mk@SjPEC*GzqKqcEMfN;Yc$u)Rk$|%(rNuhrGgsDn+YF5ZMC27GQrXGG=Qi z-UQ4;M43Uo$-#gq6%}8PG={eq&3ltJ`v{x;pv?YkXn&V7k47Wg7$FdSy9ht~pVRr} zWbt?yOn{MLe^31R$Qu(6?Zrxu2y=eiRmo>}czwh#59uK8?(oY|vvvdX6w!JYZHv2?0zkfnTy;?}yYvl3AdB6}zHb;O17(-2} zJZlt5Z}NFB8$9!OjmFu6N&vf#CmgZ0g&ju_l0rx=F=$TpB{xix%0x7jvY|DBnZCIV z>jC>vo2ASvh%)Xk+fSG?MOF?wDER4iV8LsD)kv)bHXTmbb}Zn800aOyrR}hI5dng> z1b?|aA!-T0z&$I+w%oCDOpCDYAm+41K{Y^x1Q1TyKHx+%0dYjDacQ7gqu=SX3qMdDE1i`F>+%bEL23xUxcFo)| zR?ZLQ2@TG<6RTK=6L(GGU2={lmwiZEUyl0G2 zMF4>R%-d?owTpLOapjU-SKhI5N`DF(P?;joOCK@9K+oVPlqr`^uB=xQg7}J{*)q&l z{|CqhDw7+9MgRdYfW_02 zgSAI&O#cUJYYEg#<@ic~O2YY5=8X07Vug%y&aYWG3?0Cl0znz{2r(ml-hWl9F8jnf z0}&6QkT}2s;lRYKrKkzUR1RM9?>~#u(N}B!y#J2D#?jTaMNYS~&$~TpiGlCf2#18O z*mU+7WB_ysTp##&J#f(0R!_1WrQv)!Rqmbm;iwELnE>(27gA3v#`PMseomGwvQM~<_a<$Kt2yNwiQX10Tad(l7qX+ z3BamS0?#(bb6~Ru#(V-cFB4>jhwxfVpU##*1miFBH(35UD4s8#KM$7|9y!wI8D zqo?JZUar_Gz#;)y@KjSmDaB#<9EVoMx3M0J8w#B?eSb#N0OPO&*TkVYetB}%#N(rL zCTtW@GztLUXumz@0DoYi0cM$Q!2y?yXbqiK^Hl<@tAtHuSgauS{FVucwEF~O2#W2Y zNJlLeDk->I%|3v%067320OAKFVET0HOSHM*ZSgH7pO}hoPXRK5%qW;r7 zc}+-fv-sr1k`V{TQq>2=)+Bp-#xtuc3(u@h=ALSbr?smG&2DiLLj%6^>jm*F2`>R* zCK=4;K`ISE27k_qd)5JwSj-!4w7(q`ZwaNVp_MJ3&XV#ycKz|B^sxN)&ur1#WJ0g) z)GV6UiLaKy^Ak|Is_Qvz){)3e61=92y$B5rSrHjnfv>w^+O$HZzP>3Qat&+K4#SmQ z<0t4ao(@8BCn~?e;R;1GknkH2Hl2clHWpyk5X&5eK!0O@^8OX*TZzA49*nIqWgMcA zq&vvA2Pu_apCs4Y6I$&nN>6~V%EZ?;l&_%7a$)ltfnN7BUOFsp5FXGq=4qA2>eX&< z^4tZGQa{G rmPN6*n$}UvULk z(O~5YzOkhx!zw0PIm9P+h67JHZuu>C@PjoR&I#+gSl2ZlvE9N4ezbLtSDd!;c}{>x z2+|azs5Ul44h}?866yJzkaJ2omm<<@^mS_Q^$}9)UUKLrCvmAtnG;Ik>{`{)WI3rG z0v+53cQWc8g3V25N=L?tOeG7WXu)AdGC)jVOHLK`$-op|F6F!pdIjj-@0000l}CM32EI2XF6POJ5`tZ=JP1Re+zd<-!|p?allxaO0z7RRMaRE%C(ytbKI$ zQfH2?0t{tIGS$nNgU=ettO^Xw^%OP(9p*aFRDhAG4y`L1+;pN$vQz_NAV*GSdZMiY z45OJ#p6euJD7_lMES^ROATC-7vUr|s<|(FVTx-DnL1p-=MK;%$@-Y}hGY9}^r~*kA zpAwrtnd&rh6&S|Qt&sm&a8fOZ&9c@FWW;fg!9PUAq3H8i^6!4^Dpg`~07HNR)szh8URskCIKonq+d1$D{8lS;zQU6BLzKf`F8O#<1hVCCNG3GA%5*;+N1#-d?f8YTa_r@BC S$xOij0000Sra3GOv<48{KH&v#Fu*G? zc!n21Os1Cw&u9R4f&uO0VB>}jKy-&_@Bjl`!vP>B(>E278r6d$4n{yKLZlpA>1Xhz zqBnQ}{o-IW6_J{*hF)2O0Q8B2(Nu&;IfJ!Eqa@{wrXq@cKp-^Oi3DIGgaOSh000>G V#u}o&Hhcg8002ovPDHLkV1ihJK_&nI diff --git a/launcher/resources/multimc/32x32/instances/tnt_legacy.png b/launcher/resources/multimc/32x32/instances/tnt_legacy.png index 976a89604af51e586d2fe75586d2aa5910023aa3..7ab83644fb2a50fadc0cbc0258d50c21aaf5fc67 100644 GIT binary patch delta 137 zcmV;40CxZ70ptOYV}EQ(L_t(|+U1gK2f#24MNeYvh5i4(T3a)&JWrv+C`PN>r%+Pk|AUf z1JgTyXcfXB>^Zv52&XX)PRtSp_ so|^s2!dg1owU4XbFb;O+Z<5$cX!x6Gc8rP^wY<_)m>H5zdXX@`?lJhd@%c^e(QP%=8iktd|+$xH1FoG(hE1f zpl=Zb2O&$6VOY6)>pDFKkToh#EH4T3o*{vO3^JPHut*1PVw`DaO%)n?55!3?Hm3}ngCzWGbf7)M$)uQc!2VsOh(v6DhHqm_&;t4tJ<1(nLcMCo&d)~-Tf+p6W! zXHkL(5JW@CuAyisniv||HWmeA+0d+ka~+`&by8?$t;W%41(hX*Z4--vUs0MsuXe4h6$PCd%zs&MEI0;z)&P)@bp>qu-blcl zpA^nG=w^`RZVEL@8y0P-9O)zTb_D|?+eW@~j9(OLOQvRIxm(0w-lkbotp&9OyIR4} zo}Ww%WlN$t!JhSg1kn#hwhe77CCk2dtX~DulB7^;ROSSQ9WC7&EVw|I6L2zsEX#nC z`ZdV5e1E1jlFX=NJ4&Zo0vTDCR_dm(;5-2&QP*$QC-ozEU!^cGvhHgH%YIT?_N!n) zFj1JXAv&QSL6WSYwP(YMZLOajW5bTZP_35L3bh3j-3X9H$*y3{#I6NnG?IX1R@Pdy zVWgFGBamdlo;91Mesz?SBvBUNfA{f#RyP7m&Tt3E<1`5o0rYPYU4bp{ptNM7a=xs` z!Mm{F5<2<^r&|MAmT>qaldeD^05a&l`*T?59{~e+?)h^*7{=@`OP#y_&ax+-IXVI1 p3Yhu$gjhsmfP=nMUj5D%@Eb&8oHL-0SJ40f002ovPDHLkV1lsdWM%*W delta 767 zcmV z#6Xr@ReOja2!F-R)BTc(g*mc>qnX#E`#o(L$*cl<3Xe4Jg zmDUQ$T&Xm$HuhMdu~H};+qOA+6eSn{1W_SbnM#JL_F#6bwjnq(G&GictX7CRBQ))* zT}2}(E!$pe3&8=#rV0zsJ#KXsT@$0RbB$x?#;NDk>k>Hj)JVY8zQP9={tU9*9ihV5p@l=G%lY4*Vw3HMowX!8BoM`BJ zF!!l0Zhzn%0J#m|X5WMC$RmxBWTKRv7<<*R#~a7RVqVkT?NRZWF^?K zwla5yS`v_K$QlcWMjA=i14$N~+VRr416SOXM0i;Mukv+3qpQHuEpQ$0Nr(ubpGkBH zj@-xC(pu@3tcQzlVeT_J{1>C^fht&h+#&BBXct@ZlE%uLr`rMSs8}KJjl)kfJXtN*IQL zh@jPK;W!QevPPv+iA~ddHt^EBM8N&t_czx3{QMK7*i(Q>`JE(5NYj*lzmMy>>ZiD8 zWo3nGwMw(uM1=H3&?`=yIPnT#bcX~yNg90A=+5a{r!P6|udYT-x<#z-rx~}7So^p8h z*=Mt{v4N~9{Hv?0bUGc?j#8>Tx6uYWnBv6Rrsy}(P(hxl~<}g|MD;Y zLJ}vOI(3Rs>QkMnaALj5;mh{8<%b)@5ffuAsLzSRw)E_}JqFQ$^ZxM+ta%8d9!}Xs z22b_6TrMN1RpR5vkF&P6h7?!s<(VS2xUi^b6@SYH7yQLpT>kCr`1bp+qkTALwZo9|kxA!X6tB&{q+sjzqdzoE5vf;%)EuBLw+b>Oh9m>k2Sl@?yX(Yl^AnBCpm~X zn17E*ZwaW*+C)JUzc!#=Ybb~N`}?YJI0~^HhkyOAe5PQ&23%WvkZZ-2j*Z@>N!Uwzl*v|AnK&uL)KmKg5&XkJ1! zDWP>iGqhiRDFSV;PZG!c-JdVxC8EC5BI#$0zA&P6fz8z4)Cjjm9NpgJhhMybjYIn^ zoISg&FAoLev3ChuyLa)Y^rI$4;J`U%}Zhp4Y(g(j6r4L#JURqXK=tbfhc zx$Mve;R+aDOuY+br^3mN4(Xre>~FPMEYEP}Im;YBwjqOc0~0rvDBBYp`ALh|%b2Rx zpq$}v1tgu6EKAi*NKTC~8Vxj8CyD|LT_;Y`aRC$M5;Iko6Pr!)g2VjMJW%LJiXbo0+1#WTFfZm^T-&HsbWLN@DPkHrTkQe1 zB-xYXgJH}_l3ctt!{Sth^;1nDma{NZ!IQPkwukTMjLZT!4Xm(75(XUK?NX8)Voq{I z%9LHQgpN(8xi>Dr8w{1(YQ^S~GiJHw@HXp0qauQmG^IWveHIs1!GFLhT8dV^;-Kjv zgHa-)4W?ZO2%rGoNYKYI1u>(Waz=!Ba()GT7FQAD+DlcHuv?RCXv)wO6IoJO7!2r)~FlV{Ap8~Yw5D^YE* zOD^NrPzoz&;`WqmJb!;>nqe5@k7Dv13cB{oyW0?yt%E>KGoXHkB7VCwU?}^;Bw@B% zM!=Bdx)2KK4@1=oAwe##gvOWvLF~}&1%i2`UKGc7y3AA^(j+E!XPKR~u`{3J`#mmP zo#R$^*w}4RbX<^x136bJnoNnfQJhdLXe7ENgif#Z1$!<=a(}fa%OR45F#&QfV=o8= zqfObixZ&8Ypj}mis1N$=cS0u2OgTNd(`2$SgW=ZL+ufG>s9~#?OH|wvg(#-)hf>^E zA5`vyi)Q3P%~u00FzE;35EY;}Uc5T6aq<(FGoEWKp?1yYlM!wSTjit|+_&qnM@_D0g$U3V(U_ zf)dpdQJStPr#%ti`9u6rs0aziE>bX!*Pu}b9yVTlT)=I^2cA$g^=Wydy-|iV^@5SQ z38oZFb1(`f6K;{BX{sx18X7Z`wmi3R>a%IJ;=GYOn+6`Q^8Jo5`TfxX9;LxkY|DJf z;?%^Wb8%p^c_5gp>J3>ib-|xe_&IvVw%&klKJB(eZ@+-?2!O|+@qBslJWbm1IQazC zWrzR`xw4sI7_S)wqn7|}Zb#_czGwqaG{pW+tN)Juu8&OjJ2Xvj$aA%RJL9L+o~sBj S;|Fg50000r{u6T9*@bgOa*PV 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 VWW#6NC;$Ke00>D%PDHLkV1ky8sv-aY diff --git a/launcher/resources/multimc/32x32/resourcepacks.png b/launcher/resources/multimc/32x32/resourcepacks.png index 9ec1fa56ed021116bf974cc457124a9e8669fd03..8af7fe31f0a31ec7dbd88bc4a3e667812fb7acfb 100644 GIT binary patch delta 2352 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 delta 2392 zcmV-e38(hE65|q(B!4PNL_t(|+Le}ja8%VD$G_)3_wFOv-Mk1U*#I$-M*z`Cc%*^> ziq^Jt9HrBTTK~{$(^f{YPSrX(#Y(kKb!x||j5u|)SQsCLRIrE&7===SM5$nakdVMW zlHJYj-N)U%$KSoPJ0=-W{LXyl?9T4o@Av$E=bU>O=IzHf(0?jo384f0RR9MGw0`=r zm`$5E0Jxk86E6|{xBv;ba9sn2TZpN|EHL)K(z&^s7k?EjX}zXw&Be3*w|dLe84PRz zfOUiu7a$22u7$A0(K222EuE9T=!(Y70Zl^1CEpISnuQ54#&~SN8SeUrawr}#W&`*T zUn7QRp20cfC4X9pEaQAHfQgsA}4h^CpLJ$OKnr6)&MY$?<@00~+{J#El3xH>cwSUAD#LXAdg6jwmEOCw->gpEU z);#OhD!*S+6czb=9%kMI=Nu$^lqAWfsH&DYC2tX-ToA?3o7IEgQD&Q`f z-#dMJ(_^z|&#m&8Nvi6w%?!gpHk(B*m$Smyn5GF?mhI6}OG^uuwlDc^`Ao-5j29!y zzPbgR?|&xHF>PAIO_Qn`>A}o0$z(D}rBXKOblM7Ghapot1j%ZLZSM7Y;cz(Eiu-3x z&m+h1rG|-PU)O^7S38si*D1=i=~NoJqFW|*k7=}xDU8j;N;EVyVBx}rR;BF!H(c)Z z2EM0i16y-_+{B;?YyglQUy^-=kzo;l`e}nxkAMD&KmL5`-S?WsW1k}%3?i9KLbnX9 zGJ8A_{C+4^RdCkU!aZdQ@`?hV&u7oxk|>IHSRQ-@r-st~PyXRZGl1BSceSeJun#Md z*iWR273d(A!;*)4oogOy=7$bJ2aqN*1yY1Qh7^$&1pMU5C((NK)#J1(qJL*Ll(I$e^Y=ZM-F#Vx33K9>@CpEih#nLa z^TqY<#oCbQcH5~WL4d!$9%XH9Xu9Vftm^8*sx4d4vU)X2OH0QZ+oPEL2y*5ikPU;0 z8l;kDsHIJ~XvIghdV}B{x8H!S;u`opaRX7W>iE9{+S`umvZr`+Gb$f^5Q@uXFMl$p z(+SeVgU41r6Go_eJzR1ef^QB4*+-#d2ucOy(phkhz9Bf*HctutBDmR~^KgpX3E)Ha z;^K>O4lN0Ugm?TKHn0GN@OV7-wmO$M&m%MN5{3`mi?cBmlj~-|T`>o8$qY!YdN9$2 zeCi}J!FLdgj_|)c=eZ8RYbZ$4aeoZh4M*W!U&{@A>R9U=O1|kG?d$D5;tK@ktEvh` zQO1R^kK*V~7$+Y`CUO80l5k5RhQnu|y2>FaQ~^nYs8&D_oe-S?IO9jyvX%9Z*WCTQ zHf8Ya+Wd7OsRm#3?zRzxgn})et!U03-(kd$^^V6B`yGY3h=vdIGl>dQ4Ph}tA4U_Xv95?k|Gte0M|+M;TjL+%ZkQ4=isDKe}HG_EcEcDnQg&0CQ z8A38GVJI^XqoeW6(c{NAoc~s==SK}P!WfgDo}On9A3l5}5{V!hjoN2^QA{Ayy5GXS zqKUGNNVudJg26M;w`|#R ze<&2<1gILt3yEC~R@w&cy~?hDAP_WaDxfFANU{c`yf-14%47HL-8+vTKYkwoPC&wX zoJ;XTkw~p&iZSZ%@Bi1{y?b}HwY6PUJe1sSx4kH>@4Rvi5ZVJK8h~Jc3vN_3-vLyt zhP8`!y}N7szJGoDegq(af>>*7E54!TcXV{@sjRG&2$YwX+xy=Rz&XU=^WbM*z$luK zF6%&wS6Wy0?50hdp6>1KePH6G*w%+0!UR>9`u%ko&Rx2$D_*BFnTW;0sgaRB0Qz%V zw+dDB=fBXteEE%*IbpvQixn|*I(V`Nx-i|kKk@?y4u5oa{=4%xiP6Lk0464gJwnK$ zxayK+%Wev+SkdM!E%h<8y^Z5OK z`%OtlwOxV21vY=U`|zioot;meIDTRifKi-B?9af)M&L$k+i8ISl!^*S*1bpQmtucTr3l8PsmSlLaJ=Sdj=LIFmgV3;BFF;OH7=Ga^9F6>I_k0000< KMNUMnLSTZwZJDtE diff --git a/launcher/resources/multimc/32x32/screenshots.png b/launcher/resources/multimc/32x32/screenshots.png index 64970c72a0ce956489207b3c4733f1c861c8f442..95c8c7e935a389bf14bd80d3407e8be4ec768416 100644 GIT binary patch delta 1368 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 b|2ObQH%&q_Ad+8100000NkvXXu0mjfs7;|o diff --git a/launcher/resources/multimc/32x32/settings.png b/launcher/resources/multimc/32x32/settings.png index 61277dd20401b567b5d1c07df653c291b68b1711..4be48c1d5d236de067c7302aae176f6c0e408b3f 100644 GIT binary patch delta 2218 zcmV;b2vzsf5w;PKB!7KLL_t(|0p*ngcq4fOhu@h@CKJ_2xwg&ot*x`U<{6)tXWO=Y zw{~yawOyxenkJ1iGv9oBX7gF^^SsY^{=dKZzel18I(F=66GdUT!{KZrNwV2&R?Jqb z)hx?av!WhtXZ>#cs!X{G)gq48ppVyN?bLJYZ$js zRl!g+G!Y3lGJj%ZK0}9{j?0zb#R!n`g8=pQbu_{Ls;UaY;TXq{m9l8jc1Z3EHW93L zP-Kw5)+~Z3fFOdZ8v<26Y-_8TIMGaAUO@)nX0tyoiKr9yB;qf#eN(!CYXF@arW(lmap#>D>s{)gfAUXM~quByg0s1@K zOd5SMsp(nN)_Hm6>HBNc z-s|;N`u#y#7G{!~8U)1(P6Zs6uS~K+N-|hUs}$C$8!l3o`Fe%(f|tH6O4f9st<2t7LOD z5=R4CW~v|tA#O5^(No^Ty=OwMV&cJ9-y)D)z=i#?`9qINUYIEH(bXwDJ$Hancn;aF zY%wJzEf-J#Bobu6fT4Z-!A4%Y@n&KxKVhstomkH)WXXOm8QPD1`wnol^bqHb9e+kn zRwgMh?z}D?bPwK61oY<97RuJ;xYFWmRQm zhxdcN5ojb)?zrdWC8f1qeaX!0^?&EjI7JU`E7p%LS*YLFu8lrt+FX6coSXDZFP$6g z*s`*)Yp-2+Zujo}UHk&V zbXnmS$ab3ayN8`S`J6#lUPU|{re^(Gd|ST6yo;v=joCrtIakxR?_ji0fTWakQqnT9JCl*E4iH6D%;;E%#Nq^fUi|K( zG}KmjKl}W{C*OPTrKNxyK$y!Z z$Jtk1MrLXfx(LyzPFxj;#UWxCQz8DHXaaWJa_Vj)`b`<}9)vAxD3pemBOE0)#_H~^W zTu<02FjP`RaL*2cJGUEQj`KlGR*MIYj8D39wxvami?|vm91f$Z8jd78S=kwAS{yYN zr@G2b)F@Ok+Ytl@T0BDQ)+wZu2ZAJ*--_I`G4$p9 zHGxp^Cc?Y6p?~h*jk~^)m%>WuF<)r8CmMMP_ymZ9&@CsYV90<0r;HggWN62eP8uXN zZ=R1a;t@shM9X+QUaG6BIehrAT2ivjUs6(1wR`u@V-*!gw*o~#F;EJ?BX;xl*qpQU z@GVpIhEYBBn)XThnmnt1Zc0*(B1+Ey!vH5gL;>1ct$&Uyd-fdo?jQbeN9_X-JQ2C} z+FNT!jhb|zef#d~U9Q4+BuTylmUC-03bK9m}QHiG~Q&gTnEeo#sU3+4nQto1H@nZgV-Hrjg!Rnea+HZyI^`4I2R}Y sL=wmPwId>b0}{{%=nb?2to#f3GiFDjV?Rp}6951J07*qoM6N<$f-o~M)c^nh delta 2247 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 delta 1472 zcmV;x1wZ<<3(^aaB!8JnL_t(|+QpVlY+P3vhM(`;d*{!t|6&_E{*7s^Sdl`B1SBPG z+6WLWf(mz`RrV92 z@_hHiLq~ci4}tffx{ENI!zDp?ZDaXxwd`K4mRz}9w13KNB5yn!KpJC&EMf*kINanj zB61AjSnt%)-jPEm5#vZ#lSVsD$lAYNp?K-smU{m>Ft3jDD*Co6YpB)$PdhUIi~;Bh zkVnPH*AO{s0yCTKAI}x~r^)y2r+e@KVFX~)O@-ajw6M;FRMwZN7Ozm-T%~qn+4{s@ zLU~=)zklRa&j2@N{^!9yF>*TBKYYA@;#1N+Fioy!1W^at00T%15un8_D}c681v(Ic z$x$y~W9!BWr7H_m)>htjPM-+9XEw~`9-ck=ZEzj{8fB355l#EINh*-yJFNp>Cl_YP z4b3t%d7Oo_&pqghYllqYbfI3ZFRZWr1GTP&bARAdL|d>OZaYrb_!M8&>i>|Hp=nt%coqURQVD3KLHxhiXPa< zJAX;tQ(Rv;F+4dY#$-V}(gfo>{q5rv(pIzu9efL)>EfNUFKFfJ#?KW0EMRvYM1Fst z%r~}@zRk^le|BVQ93ugpO~iOe>0C>t=#Yva8Av?-#u67^IZg3O>3OgEW1w-Xlh6)z zajteVJ{Y^Tx#6)X5O!@YEjl7;b!cMpV1MiA)(7Z^^Z3hWS^8j=50~9b-syLNDx?Y7 zor;b1>D3GCN5*I0pYH9O0d|}P1~37b2=P_al_4pi^&+~p0`)2yLlbIQVR@0u-s<;( zEr9`j3SXoBZ~wHm>Osa71DR!frOw@Yb*|mB_XME)_K#0IROFGb!1R=YV+Tr9ko)Y$ z9SB%UkQL3~1hs$#F|f8_nE!*a^p;*k`TbPHX^F7c&+AwJ_$J?)oRhg@kAI7djVhWn zv2AI=s3W`+fyBl^Me}5>@vL4G7S5=yz3<;p_*DV^tU?J;fV|;755L@4)Gz;KQGd`k zF2@f&WP$@zkk1<88nH`k19nHAd5n(~8=UO<_22`Ar!KvE^;**4Wdo;Fc@3y?y9hbp z)4+Fvh%X&DHabyUt-ZLuygB(zV3&kE_eH}klCz25r%J^@8F1V|1dN9+F?5^AYy!29 an)e?k2v{i<2U8mW0000=TQg_dwrxwx zSlHc()b~~LI@33KV^#7^t6u%}gi)@xMQXQK>ak0T$E1f_rC%GR)^)Io`(?aaEX5b# zGag@+%Far)$EDa2spWta?17!I9k##*SOY6zDJ+D!_|BrtB!9}PP`fX+za%Xqfy5~( zI0on7KD>i3@Z0ejUczPA3iDwO%%JQPVhkdd^0BK@%{A$T1w0RT;5*dk$OqUBvtSxb zBGwpUDi^yTb-ySzUy*_vuBP<`^4xXH6qrEFal}?8qp54o;ApkJ>zcQ|NWQ~Hm;~d9 zowgO}JL`3Cc0 zEQ~@+QDa)wGQAS}Z2)-!e}$RQwL=H4JVRZcKE@Lm2cyv%5uKttq?pa^iy6fG^y(G7 zeEHI@5rN!%>LYB1F)$oWg)7`Psbz;}#Q%r{Zfa@@%zy0K*9m-a*nQs=pD>9ZDKX!< z1V*B1E2h>-J#3U7^wj>IYf`IKXwf95NDvW^n3b`z_dKnz1V+Jdw6#WxlSFVG>T_rT zELuy?x6CbI97`q;*K+CMYAJXH^%=%MU%!y|UEd62z<30sVHnz4D*Ymf;1ks6pG4l` z#ygk52!FJ-P-CrxGDCi2=T`- zBRS=oNBEEB{+56j5DbPj@Fox8x3C^Yz;Ljx%~o^om_U3P*F>1eTsQ;|oXAhZ-9LoG zFiziz4g*LG4gZ=IYW<{I0>q#Nf{?*5B*IXKdv1Z4n`)&oTeSvAJrIw>L-@s5X*KNL fy^9aX^Y8gTWWrYEVLCj~00000NkvXXu0mjff1;xv delta 864 zcmV-m1E2it2KNS#B!50hL_t(|+Qrw~P7^^K$MN5tK7zb}H^v7cMxMZU0NO&W*bo9l z1Ok+R1SEpeq8JbjM#KZ2FBB{o1tY{L0+v7%c!QE&*Y70V4AN3s4&|SGSav)6|Ig0O zPPfW7dZc6brNX;XC@6({rAW85*@<@k4{)rB&l+fRg|<4Vcz-4pJeGowq}Y&@7(hSn zpa(b6fi|?D5p}e!9qFMThd#FVf{N(bIQ`y8z>GZg?@rDyWU;)uR`i2%%qJo@0 zaw}7e(#tU#nt!YQgcU^hX$jr%!$U0S+-e47b@VTM%pv zD5sWt>m%AH1;jbkTTm^9%?V%gJPFI3N$8hCRqQ-Hs>jeL75dp}&*MVW1dp>2ndK0% ztK#0|VJV(-?!U7Xi{L=e$HAUFd>M7y;Sb6Qw|`W?!MK+XrVsJ!c-pyo`*m!iR0?>K zNfr<3g`@@^m|EH%<~6BAnsL#f6{`pQO4bGs+-YCQY$r|>OBY zbXlYh!}yFj{7sre7!Oeo7fOM6iT!D|w>T#ikRXT{5{^qKmQ^Cy{TPDwQ9FPztJZm` qkm4bP5xF338s>k55jvma&+~s|!dB%KT}<%+0000 diff --git a/launcher/resources/multimc/32x32/status-good.png b/launcher/resources/multimc/32x32/status-good.png index a4fe2196088effde3e651a23d9dfb3f5caab65ce..b8f7095ade302f06aad097b47cd9b55c6ddaaaf5 100644 GIT binary patch delta 1001 zcmV%C=B!9+9L_t(|+O1au%qwXWJ-<{NYsG8C)~2!bY}>ZY>9cLynvIRd zY3#IVu)2G4i&@R<%)GhD>G+;A-_;b3ZRZz#IFv46f2If{{S3R(C2UJou{l}A`eX^K z6VI?BQN+@C0aMTi-|SK`_h6v#LkppD}S*uDOg9WN(hz_i{cf` zj~kfIXFc1KPx^5^zZ#cvHJr~0PG<$@>HKC;@Tgbtyi4$=L-3k-%Kdvif-?hxZ4tqe zxL_eMH&(;U=xPi{KU~?ZbPl)QGjSs?xI)~D30`&!et|PQrl8#+;VKAb^V#W96BC0u zII^qRuW&72#(zx`-_8hL^r}-&xJ}W^BZ8R}F*RDo zcXHyNWjHxf&{4TM?54y#lPi`4*$EqsNZa9*Xa&>$_Jj=tc0m>{N@&U zxU3xZrXs$=uyC0|1k*x-Ywz%pa-Gl44mC=SKF89x6H}GL!zLjZL97}O-0yTutoN=B z2$!40#Hfg=KHZqcX#|sHc&OGAGM7$`USh%3?mEfK4h8q?=ZbxT1;IM$Xhn_WtJRlh z8_aSU9x*7QLWrU%Xru*T delta 1024 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 UcS)H|ssI2007*qoM6N<$f=4B#pa1{> diff --git a/launcher/resources/multimc/32x32/viewfolder.png b/launcher/resources/multimc/32x32/viewfolder.png index 6cf37bc468ed7637eaf368bef71042aa2923b3c8..32d7b4bae22d311a14bfc598273c234baf5d70dc 100644 GIT binary patch delta 804 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 JPDHLkV1j=;^AP|5 delta 2158 zcmV-!2$A>T5c?32B!5ClL_t(|+U1r@Y+P3v$A90s=gxS>W6#)5?D&y)(?ofcR!OQB zR9Y2^RHQ6mQ+9|2ERd+g3W3-R-{eK1EN;8ViD-T`-5fBGf z^+pMVgbr^3=lGnVE9DJ<^WXl~CDyl_SPKpa1Oy=w3cg+A^|x-E3BthR6#{sGcvPQy z7kY4j#I!&_yv}>PZ9NaXrdy3&0ItoK*{C$S!VXaMe{g!=0O!8&h-d+i5Ohb-fdHVC zpa4-qDBuM|1b-!<;uG!e>5hUG@qfQO`-5%(HfjM-s_dbxr40z+=wo@Ug|Qabs?%&W zu-+lQA0YHy`zBXFqeS3Xky}HfoegE0l_B zwA&Ga2kEbM^n(xq@B4vyfqtaIS~|n-)><1tH|sS3Du1Os&be4vKH&&!snsg1-M`1n zFZ~FeNK&nvIDmf*;WLQW#yQ~S`R(oM6}_@}7l6`k4euO?Lh!MJ{sv>392m<|Z^7-G zt2jW#0pR=2`+NGiE*A4(MEjg|BIyWjub!n0q#;M?uCfd7vkYK=B`m$nfFioU2I zs6g-@jDL0DJ%J8Lbm)vhx{mu5L7cdi@+Nv=xqNK@>>5pD(F&aVTzGVbmHZAX#T`mpb$^U;G#U{~z;(vj<_>p7c;rhb8Av6t z9zby3p^%xdlC74`%{!2BDtoH~^2 zc7IOM0nNyA_OTgS(r|FYoZ1Ki=lA z@2&9Wl@;dhZ4o9yMklkp^V$t;qupy#&VKMS@0b<+Kn-R69K_RTIY%`%6XyW6=c~o3lhMs63@w*2tj^ffLV?|yPv`jN)5l0xU z@XC!1Mu!I2p9!HOhO>AC!G9B2N3#J#gPQVI1F;qz3i{w!n$hv;xCMgalTZTQ3(d7{ z0udr(Nd^j(@XJ^4aOtTdjE-dZ{k64jx7(_J6S zB!U*&Sx=+Y#yf`>9zf`qB_4v#W^tZWQe!;K7j}8#!Xf@}wa61^#(z0FHO$e8A(kpF z?rqfxLWe|coVB5+HXln>{fJBC<(dMnYB@T}c@Zn|+rG!8S9e*mkD9%h}dExOHZWi|N z#$%fXv6ca?7(aOsZyh=jsKQQZXIcV<#HpVMVAu3qCj^XxJzyY!r!GCpmA4mB*^Cdo z6OH5AVuegL&DYPQIGofptS3DJ>$?%Jey~QdSV3A5fe22A?3>Vx%?x8|_J)u>0q`A^ zN&^b-1Vr#&z<(CuTH)o_7f9H)x8*(Aom+TkwfMW=(rnkM%>P=`!>{-+@$oY2>9Po0)DY{W23s7-#(vT zucZyp^zh!?CY$S3^7qT!zP!jlY5P^PQT!V43ZH^Z9Q_HO6HYQb^h{zXH7!aFVA>^H kZQL%*{`60P|96}I2{v7KUs&HrbN~PV07*qoM6N<$f_j%Rv;Y7A diff --git a/launcher/resources/multimc/48x48/cat.png b/launcher/resources/multimc/48x48/cat.png index eb4b68169904d93a3ff12b884aca80de842e4a24..f84221d7a28d93cff07f5c0184bade4c9757b3ad 100644 GIT binary patch delta 1913 zcmV-<2Zs324~P$tB!5pyL_t(|+RRu3khDh-oeygpXRmU$ZQH*4{r|CTC&i!;+qP{d zrP#L7nLZWHyEnW0s^0l_U-$HMzy3&w;g*UrJJ~qKDf>tm;b^Pgc`?}lQX+jj)e7zN z-qHad_k@6n?jVOr!wHFQhNH~G#_@hu9QYKM= zT&l#cSEN>{|6!WI1TZH9>VJB!D1 zNT@MccR;EuD)nm=wHfNwrVpF)`tm|sIyHNnXf1!HkbkLQvjIeyWA1A$9I}uQ0Ed*d zzkKG>B5yUAb@ok*N5(mldr2rTTC-=UIe*|&UtBg&JK&dinM8gI2{y)S_mA!?pSi6p zwI1kn1!~;<5s!SF<2Y>)%VmF_dYRdl{DJQ?6AOX1OW--)U-7q5YJw@=)mJwCP(@l3 zBt`f@rGL=)D;#+zr5G&X!btV*gIeK;!OU%S0%q>r#bSMk_Q4rA21LU0y{f{3LsCx|2KPh=_mTe{$b zMt`A$p~@W@TVFo)2UyEf8@`oqV9H9UXr)Yr&vC%0v4BZq1*KfQ=Kp9_2GA&VxN&_m zQMez!iyl6Dlns%SzN}~3<3j{N@U=UPJ4r}09{JXwHqThcPV*c?rED^ zt_1_N878fD)t$hsv&{va8lTI?|4_4bw|_sa69r>tRdNk_rB#g{Eu=pd;@=5BxYA4NbxjQ3BWNIK!QEx zCPE>ijX(wnP9TIg^GYEtHs{SitunS#ffrW%os|Z_(*ROz?rR8zgV6ILqJ$?z@PA9V zNQj^(QmLJ2l##qilNy!zJPCNiTK#madgt5;xNPn#twdwB|6fa4Z98ssVX(g4Ey+xW ze+)Cf|1;z^%$%Xawx#ag84oj0tyN+w5wn8>=CeJr{K&}7m?_Pxwwp88?jT9tw{Q=ppqP#DWhEwjKTl`mkM|mnJqZ?+GAGBImU0 z_-DWez+1q744*mHAJPwi9vQFzz=Puh&|K)>pf}sqa$XV60IFD1zu*|jFn!8%@U;-AykhGD2y?p8L9+Bhndjk8`!FfEs@A2G3<}&)dOA>RjkN4aqQ;@ z2S{8{67>gv}sLu)sz#PNXHQXAQ>Bj1!AbEVnq`gVyx|Cb;O@n zFWf8;urzAJ=ZBa7_(kXva0r}byfacU+_?ue_smZj)gsKm_d)*!{(lc_#(P5ZOx`)< z{QZtR1uzQ?njxE4s){vch7h-L+;51piOVIEN=KVoQoGJgw(kOVBy>^}zXN^;egS?0 z|5bzwiS@}b>kjZo1rSjjGwp*+!dkhuqOKN?Y2W17Z^11FC`Q}D_4F{6z_ zePC25vqae|l+h-{@w(svkWdjMq1I4mXdSRqVJC)81ZNKCjxT|e8y?;8c(ZM$TOP7p zugMwkCkX(s0kR?es-muhHHF**^&R?Lx3|%u7DONj%+Vvx;c_?>;klqzuokR@DuR1zwXilMT?OCS_owI=xyXTHQ8a2~-wD8;D()Jaj900000NkvXXu0mjfE>Df_ delta 1986 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 B)hhr1 delta 2496 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 Hu0mjfTlbwZ delta 3409 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 diff --git a/launcher/resources/multimc/48x48/copy.png b/launcher/resources/multimc/48x48/copy.png index acc39794272f3144caf0d115440b47cb9b52e08c..4dc04b080552b35cc5fdfd3c0e13fe536442a5fd 100644 GIT binary patch delta 1242 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 N002ovPDHLkV1o4VWz_%x diff --git a/launcher/resources/multimc/48x48/help.png b/launcher/resources/multimc/48x48/help.png index 81912da5700db71431fcf9d4db78419c4fde2d76..f57c6c8968a22ec5aadb431ce5674e55b356bc57 100644 GIT binary patch delta 3525 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 delta 3533 zcmV;;4Knh_8_ye%B!8AkL_t(|+U;5ccpPgKou_i!CN;Ag+qP}<)wW~Rwr$&pjoP+t zCVStV`=;r9n@pdD`Mz6aaqjug-y-{cHO9-|r#7b`9Gk>)hMxhlWGPbVO+Oe-l z(RXoU?TDNf#+}Z!wd!|A!FJ%Ic6NgwwX+>~zqMJyrq$X$H=;k%>tPw z>gxCzjfj9h^&$4!wXWO5(pRM9IST=w)bvb!VcB7Bh1;MtQvZ~l5HMmtc%&Twmy`qG zn!FF3;&y`FfPeL1)_IXsJ8;~41?&EIPDE1D#n|sq7s0OinBOK&`g+T^L4RLgf5mI!D%Pw|}+o+*CKZP(N_&TmQr@5H+3eIV$?Hi80mPli!5B$!C zzn7%GVZqmtxJ{Bc40+@oy9uIaqD&?d<6xPNmc}`N#(}33Fiy@VrWFSfXb>adPo{vz zIYXypnvAEBv=?+kCVyQN5$Io*#XWl*mJ=p^&selO#0YRGjInZQn&iGfnA$v zY=7z7!l=s$kAbVDtZaz+5eS~x=fJZj1K#M9C6NQ56_<@bGi00)JPCTAd-7gT^GJPN zN7-j8SNy*IWzuP^s@YH_Xp=?E^pEXl6oWgaMgq|RR_ytcRk=SLRic9R{h%x&y zO_qUm74wBMx+fdAL z@SIU*qM)YQ;XWo0%sbAjl-CH|%g7n({oIQE4O5{|dGrz6aZ;O4zH9wpyCq$v{oyJe$;mSjHf}Z);2wn{U;IQGQbB}CE#S$G7eVU zLYR|r1@1q82Nji4kV>UhpdY_{4}UN4_YWT{0YFMWzxMDoOxk@3iO2^D}FKMI}yvC->{K_BMFA@Mxn#ZhENHTfx z_9NVS{06d5KY+QJS0QEdSs1qVG^FCmEX}!;zF@*-wRKDdo9LEz+oK&2%^ zt>z(9?9Zrh5wp5zI`P?{gCH=Ck{tRjKLOVty(S0lK6?v&@b4-J_(%3LWZ0+oP;v7Z zUj$D5R!QYF!!sEo&3R6ew(X zEKM}jYq3<~cyXIg^zRS~c**J{i5H+kc{CaOB!EO0#d?SHQf? zt3--2FYl{Yv7b$!ho_6*l}i|cCl!Ku%*>As#2(Xy0{PpzO$@yhYzEv38*_l#WdvS5 zXp@AbBMUx@4Pg56eptK?U3tpZ0V;5Nj@`p}C?WZf1H$ancaj5>aqj3eud=?_XE7VA zH97EI-NxntVt>1V_d>@Uq_NQSm+GF!Jj#b8IDFk{l*Y#Q}ag5e-V6c4dBV>wY`@ehqJd| zkZfMQ{Qzr=Zc!$}DocT@R1^CNeD=BK5FH4e$~u52pnvSYgf=1MK(!)f;mF27@Q6KB zWCXwq1T6v}@B{?h#}^~pccBtx^ZMOKSXX=tNhwCQGeN@TePvnp zvd!x_`G4$ZebPSVeM27mC_}7AMYKFH3YqY}p4cme7GpKn0d;jbt+0bGSO}P+<`}BRpej0VV;4-cl zq9)~lhF8k-TCJUXAXbrJC6-h1oo|knIC2KH5r2H?{1kZ7F)~VlIDXefxQ99a)XnG6 z0s9~XOb&<#322|%hU)BN8$)puI&v?xv+8rbZWAk?FO8TDMG7v1G(1yZMNZBGN9;rm zkxhQaAqNONPxn0V5>DG}7VC$-PUnS3=_C<&m3)YObb!ykt}Oeh#6ESSVb~RT3|=d3 zs(&4x$8GVx5$;BD6VTGM`$fN`?ch753>o2N9D$%k*^nF%9I=c6N?_bDka3Qt*W%AO z_A{z$UzmM-e=)S5RRYGi0Td~F&*0Yp;dwwcWW80V1(o5`OGt-$yo@6&9RyEn6PkAi z5Xk*-f*m zYy7hiENIwLSJyphK8skFnX1SUtm4@3Q`bo~VCRv$G&3tx;o`B+Iv~ToX%+kVG)%?J z#ywQ8rBZo~ko`YvE~XbW(l=;ZRdR;CU^xY~dpI%|5eF!%@`u3{dw-d`4SrN}oS>D}irNa*BQ8m%bMlw?!Q2 zOfDGtR&7B=fRb@!EWzGC=gdPIqj+F}qnwZeBiO8z-{qI?g%}E!*0zDoj5?pT>9s=YJ)w{o6Lx@1#>whcmj)IA?IZh?HiK{$ zZ$BC1&UfTnk&^EmHn9+?zkD~U(WHJ`w_yslgYG*I-Uy!K*_8NmoItB#Rez#ZP5Ze# z_VcQA-+o#Fup2>n_0WCn_0?~=^gyp$NE+a3UFeF|Pd z_Q?TaK9FU8IxZ19%&KUj8(qR+d;i;4>~y)Ircnp4l-k)2ee5)7J@}%W%+m^}q6+Rg z`Bj(XBba$8U53p>@KbVe>VKMn;J+_nT3Uuu*5QHw%}&&9=RK;8RlnPo-IhrG#$($3as3bPq`T)o=YqSXxHjIzH&XUq($c8wIW@1e z*Cy@fR@(Jj4es&V!G9+m*Ycxr7le)ljm`jnEQnsQTfnjRa;b6Hln)a7!4KrM!ZX+` z#|~1oDj|aYw1Y?OuL;!}%fHT{p3|DPWKPf~Z2+xgW(00000NkvXX Hu0mjfP9Np| diff --git a/launcher/resources/multimc/48x48/log.png b/launcher/resources/multimc/48x48/log.png index c63802a10d82fdd3b7f7171c1e7e468257bc5a60..dc3eb4e27576ff7ea766ddb61b00f66ca1557ed9 100644 GIT binary patch delta 1680 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 qxJ<7%=$!9zvmZ~ diff --git a/launcher/resources/multimc/48x48/new.png b/launcher/resources/multimc/48x48/new.png index e7a465ca3399a9bbe998d7fa4f988fcc22909bd9..a81ccf1b2f3aeb81bb94c6a52410b365e17ec55c 100644 GIT binary patch delta 2158 zcmV-!2$A=r5&IC3B!5ClL_t(|+SHaclkC71M$c_YvzlczGcz+|W@nBJnVElyDKtAX zGcz+YJZ7RD9zlOr&34fHG>TpRs;(M?bHpkC=Sj!I$HV_V2`B@aA^`v@pa`w+6!^jy z-c3iW!f%7^0hx%SR?{(oh$AnrX;XuFm5tu^rq}y&{_wT3Tz}aGwn1w_0I@Jh1u#B>w=2MT;3g0wV;}v*2U(Jx?d_fSKlC9FfAxLuec!~K z0iZT~iCJC$``pI*zyEZfd;R-VzduZX4RiNgg9Q0Y zBVZ5-oC7-nT#h6<1s-;vd*AnSPkYKUo{;x*%CaB^6*_7KVHCz;o*;oxG?qMuCrb}W zk_*hHCmWgnlv#S_;`Y|1i@lZ9^?L8V52RKWAGj#pxPJx7b>I@%S>Pnt-+-$GoRsCs z%(22pfu-eWePs?M^KU14K=z}jk=m1X@P$=%DjCzVP1(p50( z`lp+9_3hi>uY&7?46F*b)hHCHB$g&D2wLz!hye;mzzhrPGC+nw*e1+8&J9W2Ays{a zqPRkyUwFrg~GMCl5$ z-hb;b+hjS*fU5jtRh6F@OSe5Z7tE|v04YF+KEfio&abhK&$XpeM6xK9;nhe~UnfZ( zM{}#NEZ+Y~Rr&c!x>1DhZYXMkNh?CFXH{y$tMjWIge}H5PzG8-$`O5}RlFY|-R!bP zx&sVm;D*2mYyvh0=G_9)QAI#;DT0qByMJQ<0e&siI?@)>Ca@FP&W``~XczC-M!*fQ z+rS}kyCu*WMd)3y>IRRyqKDUZ0N+L0L%JVk2S|6Qs~=I!-`~{xn*R3|b6z_(o8PPQ z-mU^oaV@k3Kw1`M_iI!F(-J^+^tv^KfhCA7qWvfLa}FqhAkfLL=y?DPtj*p59mWzC1Qb8aY~Xc& z%xB2u$gg3xg)zgdgdpJ90M;0dU4P~M^%M8L*X4f!Bch~q8nnl<0MX_Si6OxZFhhVT zj3H=lQTyHzq}|4BxDdcfkRejcZ2}t%1~xl&n)3lZPWR88Q1o9fz>f2Z2r{;@<0`Rq z{DTL;8d6TJ9n7W}bD#taDaE-hM4##Gzm!>rZfzk9BfR;+Z~tV3ZlB;LnjD}^fir)a#ezAlguvHG4fU3d|BMwG;KlztZ5d*49 zali=yW`J2KenbyG9S~z_w0|UW^9uINAVEj-u_e$6hyy3VGgFd`Z0C5O&$O{hs8G$+(^C?V&S;H#2E(UmR9Aw?wD_ebrqvQVu zjIi{e3H?k$zkmIn0Dp=@1E2u;#{`)41(v|q z0G52f2rb2rAzPBJ-@pI7h;@Gc@NL*#5BKZq>+APxtw~H?ZrVlyP>i?by;ueMOYISR z->gw1HW0%Ma(ON6p}FwqjQvPp3>>UsX42ITE1-_8nHfZQ=wr7#h^pCa-Mznm8*8Pt zVrStJLB3Y4-G9z!GsM+O+<+lh@G`g{E`bshTjOvu8rm750mKSdjLl9>%$LL!L&nsiKQVBiJn{3BRjuKpG z2TLWdoy}y@ZtDugLISil47ufZ8fnBpl#E(hRj=2*d}lVF_PwC(#^x*sPRT8^>Hz?r zlBvYo%gf8N*2*01IzJ2syyX-f(T*{`vJ+_3?ci&6E`#mynNdLJaua4d5!jXaLlrTC kAMD`N*8T^D2lfP2KiDLKRSe1&DF6Tf07*qoM6N<$g1(UxL;wH) delta 2199 zcmV;I2x#~F5Tg;0B!6m2L_t(|+SQuRZzM+*$3L&S$L_J$_HMk{>?T2iz$S_i3K0l_ z5aNKi0VhtJBSj({I3OYMM^2AU3ms1|Y&=d0n`GmkuS^#>1Kd8n{p z0B8ny=OiCXU>PTgwr!ZyH76$rUmYE8f3Iyf-@WnvW3N7V`OWLY;iv%CEL>TI0>$@_ zfWzedO<)ad8@LHhqGYygt_)Y6_#gOcSTUW}9p?*ygnyE*G%F=Lpr~X^V+koT7{JBN zzyp_7s?+h>qbDcppBWupyipYOjiu!>3`&DT}){-E`{a=0HqJg<`SK30^H`2NxE5$*_aSc7?eZKo%=q6!Q+@M14{{f5?iGx zza5J5n*r4iL~R%K&;c*k+I_5d}&who}>p=1;`-75XH` zSJg~^-$?s)I)zfB?T-K=uT`anTT$<=EPwZW62m|P&@xhm7$U6@;}Ozr=&i*MfWuP= zBj5<^1nd}?^bzp0+W~c&GVreUi2)?=tErts+CW+dF5qlWyU!loM~tgSz&_Xk@F8%J z6X+M=(EGq@9&lI15>e+9@cWQ9ksikE{xeUv&0nY|zr5RiLEAikW{bLDr<2P~jDNP9 zj?TT**8t_Tp7tN35}0NH)I7~4zwWF+Y#?1EYK*BS#$)Q~zo34ewtWHENqb(TD8E5H zeSpzusj#(bud3?*fV~48kfiq>K-r*AG#4^5!#c63h`Nl$DQ3{L`^51-F}s7=GRDII zNF`0&rmk;sI2sgXvA(;qvcDZ8?|%YQC(w&ucs&3HmapjroyHPomR)EDtP%AoEDlhp zP+Y}q1LG94DI@}cHDHya%ba^hjx1XZQjel&wI@It!pHN*2ODukl<{rOMk^lgFo<+ ztRhvkx`5djW0JDN?nNMMAcl-j@5EcTj%qTQTLW@)9t8)3D`x#CPyml!0O2d70!T+I z%EDOzN)d}TlK`SelzB4O4e;Wyq~;`y{3H^FOTZ9A!`w#Feib8 z2njr94&CVJ2+Y98_Y5XO2B0jR{M~xqtp>6q_j3Wg}i{f6Mz$1JcY8mGk;5;teA7G4%NTu z?8ikonP4D)0bov;#Zw3`WCP4;%pu_gpF_`)yWL&Y^}a_;LRvV51em8#?)?m?8PGrO zRpllh$!o%A7CnXJdJf*KLn6D4-ICvMxtH-QLA?*F1V&mQh4NDC9;HqqyO~p$5ehh# zOl;nB#W3?|ES^ICSbtjpeCplyk+-vO9SNC{bPv?LdtiP5+)aJp`$^=fgzJbr?cMWE z#EENO4fGaq&H;Kn-wQqi?s{QX4>+I&2q2U*^3Lb_1`ftastX=mM=gwm~9N0>;NH>i@@&`QSoo{|^#@nYY=0 Z0pDLoI1rk8jJW^+002ovPDHLkV1k_rC3ye< diff --git a/launcher/resources/multimc/48x48/refresh.png b/launcher/resources/multimc/48x48/refresh.png index 228392cb1432b096b1a8288cf7ef0eade3be0de4..87e113583fd8d0c6fc5fa1b9a1ccf1d67a4218dd 100644 GIT binary patch delta 3399 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 delta 3429 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 Hu0mjf!c&{W diff --git a/launcher/resources/multimc/48x48/screenshots.png b/launcher/resources/multimc/48x48/screenshots.png index 50403b6017c1d7098354c55feedafbb426f4cca0..694b96cd957be68a230eeca702c6b357c68d53a2 100644 GIT binary patch delta 2459 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 Z02IN)7&SfxwEh49002ovPDHLkV1g2%tZx7S delta 2464 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 bOc(wSqTmX&kP-3d00000NkvXXu0mjf12806 delta 2751 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 FV1f#XLA3w? diff --git a/launcher/resources/multimc/48x48/status-bad.png b/launcher/resources/multimc/48x48/status-bad.png index aae54577c25aa0d597c2e53321319d4339506d5b..083506d289fd85c342102bb4d941351168a19610 100644 GIT binary patch delta 1491 zcmV;^1uXjd3*`%tB!8?)L_t(|+SQo@j9gI|h5w{c+ptn>tBTb~jnk-J+s5qHwr$(C zZB7x^Q5jFa+ngrT*WH_$_O1TpTV9-VrLiz#yIJSuW=DIAiC2Yvy9zlZ+B4XHrNasVI6FTlW-Ys!9$3O2XGC}!d_Tl>IJBS8mNMD z$}XjjVbo<|#(#0MeuvDi@1v4EuuFpX!zFkEuao3H9D+HfUVsWHgA(e>qfQGWj+zZV zV)o{c1n-4|a1&mKz$-YR`B4ewPzpuVnNQvJKS7HRKVbI533eRNPPkj?m=Ay~W z3#E-J?<-Hbdr+-j$c1dQd6!r=q>OdioHnTdpZLdc4mQKhM0!eTZYs|?mEkjSNkb_Q zav&3p&42E&E7?d^YiGS+e({eqxd%eGE?s_2ysKUl{7-2j$}>=9Jo1}hC~Fu&78*x3 zwPSM-i!3L>O0~|*1jP4;Aw!15s;a7D{knIL)q6}xyi4QKx;!qgE5mO>d239=2-4AN z@xi&J`(n-`n20Th%L#}dAo0hKACG=% zvwtR^8^3M{5MC3k9^etLaAmnNUD>XVXfqn_K&}jApxIrDjC1Vczl!W_O1)P(wG= zYAD?8AVVlSeh5`E5vuhvaH%6s;&PUvN?oQ;bbw{_P;eP7F`HVZH<_&+U?W=>+<(Xl z*^W!}lrg0P93>)<6@Qd)2cjZ(Fw%q4-FAMM%MKpqT;!YWEmUQD+WB!>!$-$yMXp&& zzHa{$+wp~_0kVP@8X4%GWA-Iam*>On@Je|we)S1nDP8c7NRBQHH4tq_m-;AFfm&ae z`arm+3jX;vTU+(EcJ!>WHNN$me1BF^Fs?E(D2*RF-ls)Hidnx@vo~pST-T~E(?WGd;>2g5$!W7h0t16d{3F$M8Ps}v zB7E)!#XBv@ep)lyZ1`9*r$DOqi1V!={sNRpxQ+|p{eZ)7VhrwO#1$CW>VLx{3R@sI zUOaUN#3vu4=sHZif!J>&C0hPoh4dlc0Vof&dKz^mIc)qB8w1xN_M5R#r8W9?vch#R z+phT~(Gm{Sr3o8SXo+P=Wgz}-(1@cFR;g#sz)g52Zt8CbU^UbP1&dV5P7C>i?k0C^ zj6~pzGY~|>Odu)&QYedj5lro{trPArh2Rv}3*R8t9Alg28@RkFI+(Rx(B+*GGZZmX t>6s0DKLt-p^uMVtt;=H}#7~6*C*J)ln*9I(002ovPDHLkV1gx{&RYNg delta 1512 zcmVs#-Ew4w7atD@G+F}1F&Z6%BhwBk!yhf zC0qblLpqg#JaVBqlRtau%Z|Ea0u`W z0=xYb(n}ta2jp8dagTJ6+oX-$B-cqZxk|2(M&coLga&r208b^`#`_A2{$K=fJ_9y~ zfzT5&Kpv4EGJiyVBy;2y`HKXUKgqA;CGnCwMixjtsU>bg6Pp!)^DO&=SmxbKuMmz{Z3M_L6b3NP;%7PG0Ez zs3ujUf|Rk(684S%6QjVnF<@T=3u8JI{vkn|S<~#gHGd1`q?CP^Py-GU&sb3!9MvyB zspC5Mo|z*a;v!|FgcK%gVu-05ru(P*Ri2YoTZLNBk87HR&qy(~T2V+n1E{}kj%W$vH`8T9;e*zq(-w)L<*=a z?h^YDaDVpb=F~3@ScqRC(`0}wCYY%;EjyrfS1e4->QE{sh2$bN#@u1MfX!~*S!XQ7 zFYDyaARnDP`QOBww=l7$WjtCZL)%!kFfnWlBa%;zpS)|wz7KdhS)hvyXqv6WpCXx= znIX5^9ZFA23tciy#1SuLq^#7Dx~Hs6Xx&<47=MvGYDIW-0BQGtU784WlDP!LpH}fx zQ&XX>t*uaFLxTu2GZEvGeaXJAL6Qo!TT%^|X;RnEWz|o0d(7*X zH^m#Vy}cb}BA`Tym$Dja!py`JDP!(R=qWi zC$NUkCubs2@z%?*(rZp+G0+0Jr#9=A?|&r;+H1l-@ycYF0VlQN3gBzf!_zzo+H1l- z@yhhu8StSI@P8qfZHuFW)yAYIk`f=i@mceV6q*_E!vpNd`YI;gkYEx7$Q&sr5tG$& za+hn}K$3l~ssYWw4(j=bq_N?+8mI;QbvhK5j>!-z2p>Y#fUibh24;`rB(4Jbs(O7X*7 zLF8dhq6F}kYG)&R)VnK&etqQ&ovCL|LVfOFZb>>xS1NBnXK;(up|%MecT z1Zsgs(k4Eodo>~rnp?fi1jryMdRzRyia&UqXXbdMQ znPFo&v1wp|gapHkTi58{4j}wB86tItXj8bbAbrBN&?WW);H3D?NFzcud7zp3nJki3 zWl{fajC7OQNWn@D+s?KB7h&DeJ2s7Y$gUWOK!=%0jx|zlm-Rf-HV!M~Fh#)*;w5_| z6pQS4vqz+^L)yYo22*~5VzMZvg_-H&-#+3eJBpw9^k*$n_N-0+-R56~0Vm#aEQO!| O0000 zq{qv;>7m<8_uNx-$2CPaU0%BG>ZYr%Lb~X>K^L5#(?R@ZQGet8Y8MqP&!qRu>!@Ja zEP0j*dbw24bMO>AatnF@?tiqf<*V>7?eOn8kZGs()EANtG)Em4gz9F9PpD2?W)vg4&V=btMVvPY^T`=cfwsD}6oP~(O$2pWRGaSDyz zcw7XSy{+>ofMYOm1RQcq&>r_Hib}MtNvGCTK5AZtD}M;_b)X*U(UZbrB4i9yD@ZGh z%5jK43J!w<4j=8+(^*2JUOA}2))Abua%gOSJ&Hl0dQJf+Kha+awC^=?DT#E4;>^P(n@Mm!3ri9M;S7M>~# zmruy~y%ba~!+~OW<;M)KdoU8mb^j>r20QhM`KQ=-%X8^H-<*mezF&!r@KG=b`oNIE zNK>M}7WRN$Fq3D`o%;^!SvE-p5dIFdro~QtCx3Ve_JV3KXfW~C#%Tod^-0=lcE^6< zK1Z)0+ye?-ocA#h-vMruP*y8q!^RDQz9vECU?9N62soh$P9s4%`Z@X}o~(9Z{W6W! zq>v`sl4CADFE3AcJRY&>vrXnEN)@CL8_3hAXr~37-&dY6!9GYH&F=&`M2+ETn93Z>PW^tG#2;V zvoPUb{thH8mUwd$Te!%_Kvz8KfDPp8vviPBh;F$*N5kQ7JYG73o2y5ev8aom-@rIH zt@`UA7vyN46Pk=0vRk?h%F`AWKL}btEq~}{VU~zDrV#TynG0DOxIwZ{z0NIPgKd8C z1E2!@0M>xJpdE}_A>KF>F{MdtK#oEop}p%ypX%>d+mhxNUk<(^d4i0L456%2AdCf$ zS}mTbPYfJ^ZbEPBrAshy1@tD&FaB#OUY_X3AAgjBAk1LGD)CHbyqrpT1iXaCdVdNg z1Wd>kph?af#mf^Sq#zR$7Kvwuppgw=DxD%U)l)Em2HV8I2&f0&7{qg!nrLGz5N~ea zl+!Dl>a(CH;nS->1Rj$}Ra3={8#lzv%#1;TiHVB@EE3Nt#5KSvbllNRCwYISIWd$G zFgLMG0oI5&FXE$)LYNSA0tTv-d4FmkXcLx+H=jliId8~afMcK_d7fD)XcLx+H@}hX z$L;tKZ)IH8_=^#lut+>}O69c>FD2wI@c}y)M!cca9Up-Si^X?w0S7MTWbD=JWcPm% zeBk9o1STvI&#fhK`tWj^W49xd_VOOg1(gpTfe9jk8t+~)BOn=iJ-h(OQ z*(h`q7Kmp`lz`dC*is_!!8zRF{0+l#P2K~-G!cFABj9Mj)t61ZF|bvE4=1I|UEmGZ zLg*%Ciygc_oEq@?&cx!Rq$ixO}mgb{uc6>sWE5M*k41!K(Ff#G-oP5*b z)bUAeK}D9HPMO+oFe0Rp<7!YN!A4kkL|5J@{x_*9q}Z-+rVJR!1X*AYsE@%;bwh$o zT^5eCk!&W8&`s>XNU#yg0k3R4#YUMC;IYXWFhKloEIxwRrl-S%4}S<^BeXwFP*D=6 zN`#DoVjSzR8Xz2G>%I`vX8yv4fe9e|u$dz;;!$Lm1Tmp6%nB4)Uo4u1OD5zwqZd5I zZr5@le$r?}au{YF+x#O_n~0`9Ud|*yKF53hEByrDIi?x}Gg&xxwr0UUx{Y`2?dmz0 znU)5OaGEg?6$F_$R#Jv~P98gEfyERAXM#G~q0X`ab27}pZ!+*(977&!QR4?nftb%B v<_1Ql5Rcu!3#J$^=;qIE5WXva6NUH>28f{-jel9`00000NkvXXu0mjfat|_M delta 1763 zcmV<91|0e64f736E#K+VMM^8pAs*G-7kmu+2w<<*Vc=7j%1@pqtGAd@8s9GHA$S1sBVZUjfFQpj zXr@rm%X~p^a|O+BiSh>TpW$bd1^8YuMy8ZU0i1w=9?)GTsIzp5I!c{Xi@pqv=igM) zbVZQ-6@n(fBZwaZkF5{}L30rJAEn0Y96SV=?bCP^z<*JgI06or1*z3qNruEsRW&`W z4AXQao*=~gfFJ4cs))s;$s%}ULRw)|x*)z2bbv!;VQSN=DXs8V)X|fQ2u)Q8$rC*F zfPzl9umA&DK$|0lNF^SHc5tvX0uy!gRq+_&kuKy1lVA#YK5OC*Gstuv=0&MM8etUh z+6E4!Xnz9vU5$wvA>_I=F@=pW7zK#`8MI;~nv+eZQB0muTUf3#Qy zK^u6)X7nchEZ{T(&Ds+E6mQ4AWp&XV2=@T5h4VfO;-7;)5~dv{vGd!Vf_4)&IPgwq zVjgs>g40M)qvoP7Vqk{_=a&_nCWSOHQ0VM$`~v)~^v0Rmvb81acy zh`CwF6ImK?ldMzEbICVZu(9}eU<}lPDsUM*0}IBBk6nqF(R?-_N5M-d?*gb(qxI@c z{s!W?!S6|SV7J?asnP^tEN~&y;u(LQegp!9+B8I`Vc;xyox8F4-BP^l=>7ZmQhyMH z=}cr&Jo6$)E~PvIAwprj3=;w-6(m_UIY z$G|-BgCAnWBjTHwVGI(V*g%gtB#Y{k;8pIIPk#>dlPFe-h1=~GA3uH+9P69tC19xd z*c95YPob`|03GA|nd!V#M>#$|!+e!-M&&Q2WgzJvLTSEDpc7$=^2VA8EVTvF--AGol?MGJ;5Rqg>_X~KB%^Pp4r z^c$fyCU8}O50|9N1K=*th15+LD;_|L?&1 z7G64~#`Qv8+cjuGYGk*ERDWJplQc07>X`BL#mm0iRbA@v)#8TXzy)f(8m0zz+^xtH zU{WS#!3$ZGGI8ryUPmQnQMstbYf8yM|s?f&_xw6CMV% z9{l;f>V3f94V~@e9wNy=!mfY-PkTLlzVefv{e;R3pVGDU;FJXHNU&Vnf4N}w*mH~g z)wI`pfxowu0N+~+7(l|_1uYVx+h;O9F_B*PoW32Dc+70+pOoOdG%4<028ZY+{SNpI zAi%dQV1s~`W`8|c2N%Tc2zjvkj`FH!_4%JmH&0k?{B;Rq#NA0`CehNL4C#fy44|@Q z1A;VchGb|UaU2Z|_mz0nvpTnA;BIE1EBKP@T3mAdFn##GCctdIvTjpAK&II=v$?YZ z286Z+1yt@C1_OlH*%iRRc7f*I0_IMcdyWk)K|tEa6n`)PWO`SCaWLRraB=(sN1DxM zFfGlP*dn)?Y>r<*f=t-7qXJ`EAPsGs(HvXAfJmFe0-20TdYcJhn+29st~ zA|Wkw`$Oo$t8WOPJ^k?yFQHD&W=NB%Q5`}NCKC+I*Fy!k^tw}}zThd3PXI->%<#|# zPR|EGjDL$6T1Q`tLmB{H@RY~3`uB^j`1pF0&z3ZK!XqELziAtmn>7-nV#BoS=}NbM z?a8xW8CotUU0ke}ed#ZoNmZS8;g%^Rgcu`Zu!#r*TC8)ZLu2-?mp^*%18;i5>g=Lb z?1>=&17bW3=)lkwEoRHj^t|6(HLsJdoV)sDdwkQkSAs8t^>uOnCedE~^ zr{--|r+qndol!EBB3e2kM5l7&VS$^{rdG5!34<6dL#@(k zV?_iZ-B|ms+`Ji*62$&Q%^5NytRb*XUxT4#lnA;SCu?8J$(9hJ94yc_14xXJuwl}P z*@_Yo^oM`qNmov;2U3RxdTG6p7%5v!dw&#AOO!mweyZ+G>Y4eS@3g;MLFSPYsz|di^Zcn}&ojW_)b$lOHwZ*^lc_ z0aSozJSK0R>`%D#!l)VL*U^;{-@bz<+$4y%(-AZ9ss5%W1!2 zBTl9e%Ubk0@NOmnBp;#5A$Ntc8vMr^da(ov1jh*v16mFKSzq-%;EJKMojfLz3?ys< z1bEu(?EccvT{>U6e4%Tr!71t3%dlA4Z~b%m>4)?D%e2>bfh#Q~z#r8H3?N}|1}zdH z%m)~snn+*$Tz}u*i+EBzZD2dD@TKd(HE(0@w$`Kn7q+vZILj#GEXlS^v#7h@Dw`AZE zGtd=$^=6B!w}$E2ZB2mL{?htDfPhT1Zf5;q0S1JQ0)GWm9uI>7LTqdTFmSYi=FJAo zhcb_k4J|=H+9w1U05ZJ^U>pp1Gq^Z;1BaT;dN3``nAjrIM`upnfCQPaZifM5+CUnb zK>~APfB}&<2LYLkO8RIfgl!IqO#mQ{HZYhpqY?>eq2pKR-5a+9XrF!dYzcL0Hba_B zjp_*#B7NCUtN7tXbM` z$QW!Q!hq(h9O}@Redi0G+Ir>d=a+l)R&86+u6QAixjUTZxJm{gF0 zp?`VPIx@zDf(VEZwU&Fed;bareTPaB>p{Ydl!y?3LP1x!Tf16rOVAZ!(u=o zIqAy%x;3c}_Lp7&rSC*n#TW@lL*EHQDG`h5r0&-3Y2DkM<$P#t0T>jL0r1EQYz!J2 zT`gsHYFZxFr_Xfzw|CpDrB2%xhVe}gSO7R-XwtswO@bpr5Di8V^VLK!tKoVnPgt7V}o;p=`0at)8UF`1< znOwUyi`BXzVT>6c8~mB4r(8PM-v_7w&p(s*CfgHkJ?PJ*1t36-ka3mEQrcOA!F)ocT52d0+~RxnTiZlj3dQroR89 zpKxUQ_FvyTy_nA@U;r@Vpv_^rwYB`pH@>+CES~)4AA|n`O1gRs^T*WJ00000NkvXX Hu0mjf?mJJw diff --git a/launcher/resources/multimc/48x48/worlds.png b/launcher/resources/multimc/48x48/worlds.png index bd62e6cb1964f1ee5439482ddf81adb6ce8f1bcb..eb44150a319cddfcb48e95e829e424b7cb672939 100644 GIT binary patch literal 3726 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 sylDG78J$26if9e!J$ItQqgS_(tp8?fj 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 Ef`by^2mk;8 diff --git a/launcher/resources/multimc/64x64/checkupdate.png b/launcher/resources/multimc/64x64/checkupdate.png index aa1ffb6f79a7f0cbc6172aab38f01d8bcc5823bc..a4002a61e458a8460eb35bae899e981d620cc62a 100644 GIT binary patch literal 4865 zcmV+c6aMUpP)bkzVzWgu)V%`K2GG%i#VSJ%zH+FW?vkH8p2T#E-J+}$MY_yb^UO)G1oXS zd(xXae2&K4!@T_Y|Hz$Z-hZSOIt~y6)KQ68Bv_yTNQNy4I~<%jK>0g=%zfr-pZTGs zo6jFl;^?m_t^YmHc~=DJ^iYCS1m+RW0oSzST=fg(Q|0>P)cEwVU}F9Zlk=yjPt22U zaX5|!x5#3lfa|C@77<1evEdgn381h)N?DpD#6;^<1D`AJdz@;mcH)&6zVSB){dOv} z`dh%O@0b9?SZOixh(Uf>Dg8d*56%`V&@3bY0^%5&_s zqZP`le1CbY@ZEY8Y4Kw%f=5;YpiqcXV5zN@Bm!fYnW#~`c+q|S`DedxZFL0^`Srl+ z+b)2J{6Munap|$|`*|9Zv)Jf}LE<)XO6)`((4Ms^QQ84CXcs}@c|M0uKjl=8e3ugh zE`=Z<+`7Tm^Z#cQcq%@0*-E z=8ugZzzo~OgBB(nAU1Lulxv+wyD05h+H1#J1W?HkSA*v{6nvLb!J}L%gNbR~`36S& zxaDd4ZWjH#wZx)YDN`<&$3^5x$8pr#DgYwK(loy^J$DqXKtx8-c1MoyP-WL%CW<8r zN&1+0K-AkJ?!U%O+@MJP-~~2c{xl0;`uFsD9h}N6+OOECD^h0vv?Zf#8mrfp()y_+ zNygq*0R*m<%JqW>rsfcnVAIPwL-C2oDReAG2n}DivWVmJFa_eYW6U$>oQ9JH(o_#V$5>igx*EsHVc_|< zRDgo3Tw~-r$Hphh)p`RFvedV=?fR)Hf>W>&j}1h<4q+!v@#by9?bqxAQD>bv>>|2= zS1w@&TO{IQ#KXi60`yGC^03LmaEsNbL&wC#TEpx#7P5f~LE;c6i7AS30FO$|N0kfn zw7OT{asfnST5J9I2XN!Jwg<oGTbj&oCI zsZ}OGB@Cku!?;a5T*H_M07rXxZi(@FgPDmVAevTpgN4=SSXg=HCrx+rFe|Nptd#n% zK=VxraG>C*g!qYSwO+543#=|JaBF#+C{8fO;3z}jfU49Hbs(jSNr|OnvqftM-}fmL z3KW7MwSl#rWQ(tDe}y}y$^6V&9+`iHQn5;BxWeN0m+6L^#7Q3`2?)7>D*L0AgXmE&OVOr%wGSzVEWI z{YBdS6$}XqWwR!O0O* z@!$^wAASGWi+H3&BxH{-(eWFnH{^pwX;8hQu^Yn%g_FG z5&3<<=O6qus1)R#Pbv8}uNOwJZ404oB0kYyMvu>M_0;zhnkGxlZxSa1l*$}`ofRDQ zn)Bb!#rdDh`g(EoLv~SAXasqk;KDHOq}lLQ=IR&hSi@*=WpVAsp96juaO=SiL!-eY zbKLA?0|xTf#$Zy4B#4QL;)t*G*J&1tTsiqYi0Y@#f9pQZgVrt&PklER4*o2@QzoTt zKRo%}_TKJythG%0wgQXlr(=FM^~%Ke88LrApzr_!*!s?*jIOS-@9)C1OSyeojJHW8}b5K+cz=a2)C&pIKuqYL#%ghFo>Ec6yz2$fP6Y1 zZal`N`Cp{q)p;H4@6vnrnf&|tK19ThF$i0%x34ol{Sb2#$EJ+%yW_-+JwOR4WYn=` z-dU3uB!ACvJL<8j;oHulQX?lJDHV07}8G^v)8?Hsv@ zS{ftFja}mEk>5ZinB+dN&!o@VcZ^+oWS8>@cFe8rO&aw{CdTH*jPO%o6c_Z~3qS!H z@+*DLamc5>ff1WY$dU<3Q;*mT=nXe_92cxLxl)>`pW~4uznNNLmc1f<*1j`SJ7@dI z_lfKX(M`urOyADMQSMWTn3Ma=0DX6g-zOVLxe^bEJfDgBG@aoZaS~?tGslf!Ou}UK zG>;zrEsT}s*)P&}?7L|nwy#kpWJIuIcZTas)MqI8rFmoI+P(x36e8rD&PCj0j%W9h zl*@6SLa|QZ2lR&9d4WcgG#E)ZPAJBQc|DF$Ug9nyPu9#9H_%-J{o77%MANm2@)>)ZNE zOiVuVwc;#Kq|rJ!ev!8rw$HS0yFePVvoIzmw!v^+4~44l?@JI3nS*yb&aP}QcHme9 z`&nwDEE2{Ts)cEuIPu##Jn;yicZa?1 z1wePu!I)%Ob0568f|D4uQuz!}nMK)lCXCW4l?J7)05$E=?lnn_K`VD>MFvDh9$Skw z7~9_Gx?sfxL#|)QRcf~LXk3y+Mst!E?rh2E#th?)FebKBtXvFX*kF z6+kN#dgL5Ar^#KTM?zSut)27B$Z)`BdjroYf`G|S(%dD+sBI8r@BWiHn637^1h$T1 z=djt{q}%Uqi0}o?z2OWZJh4R$me`cfWkH^rJV`m}7n#%^ch(nCxH!sxU1a19GJw5f zx2Rb=Cxjha;j*-`NEnA-0ls-(0ipy)1cgoA1f_s%9mq#~MD19Mwxs0xoG#Yc++L&A z?GShsL|}J{+URBN{bzvW``RV22zKmtx6R7tN@$GyUtseM1^8#56zio3T0j9H#u~M& z1T1qR=ux>iR*=)>2GvBkxpEUn7jU(YO>@~5wXD6*C1BV4xwd6GrXBm%$}PHs?l*w{ z2cY+rXCi>I|H!TUmO5+itOwdYL&GcbNOh8xwL5IKwkUWtK#wLTNS-5M_FDt_s9WaF z912a*uiLQ~)@~0HWB!Gs_07EqAj;ChmH-GS?yh@M@&?(U6k0o6u1zuT6nJsr25~G| zDTs|!p7N$MAfE+{Qa_3eHx^!^H|Tu`_>X`9xc3gZ4Nwe(_WM}`uhhW!<=ngNe6Nh70+ za~RjyGrEn|2+AaM`WtL_mu%ME3racmSz{9N-wz5!;FfW9kyn-$xVf^h9w+86X{|p^ z4vKq21I6F+l)7|&UjOY%xpdia9PSSxk9tVf9>WM!+&u76a5Zg_9%dbU+}2> z!Zme%vLaWE5D0sR%4!K6CAhC~fY!^$3P=6<;KvS5O*M|p93*fxVcf@_95H|(xe3ZW z`c_%YHLl}X;le0M9be?m+S+<&EBgD-e{k?GRyC;vkzq!$<9zQfWL!(wlDMOqLM}Isqd;Uw6qg_1vsjb;)wOCkNVspEF zy|tA5<7fVF|NnM3OlRcyFeif9TRvyBFhKkOH2J=gka+cl=oO`ShGOV92d$azuor0M z5V!%Z=1;qKtk8A`O0QG>5@FqmifR`_c z5uM2sZe#AUcd0z7p7sm+isw6re9x_>^gPE=j@AGq#t_lO*5cbViyKClC zi(iYszJ4R#1mc|YQO+j$@>RTh&?CAzI)E;Y>B96GccPwd5qfUYqBuiSwqpCv zJ9DeITXoO9x2o$s{8D}?zm#8SVgLMRF5W@nNkstA!%s;B-XT)VI@6r7Pf4ZT=LhOm ztxXHRPz2;N;%PTi_)D)iIn(Vl9wimj{g5sL2!Am$AY+}$l}4X_@QIHJ%gKz^R&PGx z_j?6N_z{5S&piRrAiHIHZWK5EBak=;xMzp}cd% z%@p5P+4G3S!zPO53PyGw7TtF9V5`3Rm<+?FA~p*k_k>8Gt>^xU~+T zl@MSbvc1CZRHo0`2$~4$*OAR;F}~**n6RtO^`-NH-z(FgBpSF+V!dq+cgZ4!3V?k? zILSC>Y}Y%UFIM&l1g`4WKRM*_&%|lXIRb!)l!6fzY91C~Ss5HXF@tisT7KobU;RXF zb^d55>92{zHvp)23<32n2@r}Jdx&tHG0X_ten{8#{z7H4GCXn69^G{WmC60M@~to9 z)`e$xH+&)DS-u1&$%w>2mS|) zVSR3Nbl1%2)B#i{_Zo+D#VTya1p}aD2>p8^A~* zpF=K}8zQ1dg%Ip*B>+UzI?YdxP3{3_CL5w?Tan`l7>nC>iWChnknBQ*Jp`Q%gx%M% z4$IA;wBs1ouRM>r?|uoLP75MG0q*2Y)EP7o|8WCE*;Fo-7~}k$l(PJ`5Yi~CIUU0SOFPcenn!Jz z`X#@PuyGCjt^jO-KyUy9r;20y(XHPy<(vJ&GE)}XhKo|MXf+y*#{m43M(6$$Ksf1T za(k*{QveXp_6fKEi_)D57tHbo&~1Q2hCX~9)$ZzL1no62Zyemt!g6dlu7)k*rO#*u z0y!?YeF#0<#{A-|P;=ivuDTC7$A+!C@Ca~0u!KNGm%+lq!l^Kny8v9guLO7&vy`I8 z%R|*%p;Q48;?y71w&iG*0fc8F9x5Q{wBWaNiq~(#uf4A45VTei`fU*RVCS+>y$wjR zpvZ;_1qeV#`B?1NG1uR~a?nCcg$OwZCdOcdGfFp#O5G`1-}=f*IhxUwSjJZ3H`<`gzZI8Zyhq|Ay6EW=K#A1 zTaVGr=3(1efK)uWq84^A+g-+NX9Z10$mFURt{%nC!US?&8IJ8i@WF7U3gK(J?OqKV z%>^uLlCOv*1P_d6Sf~H~UbXN|IZ?a{fbJIo$GlATz{vP6_<=;D)T9ON{d!P02T!{-cFIt#eaok!QQF*$JrM@A2$ zn6Cm%q93%-51VNED^Mx`00?fwwz3#1RWM%N4G>2|m(|?zk1)4%;kQ(KeHWG*pJ$By zD}ee>M8L2om_&HCP$-p(ISB{%R=?M2*Dbxe&P#_6fk$Yu&?^_MVT`ySfX$9IAPD;{O-)vg_jR?d(Fqe*xvwn?VbrxTslzLozE8-M}XlRp*&px z{AN)?R^AsNmcK?}6i3 zn5%sU&F&HuBp8^L~PXVZ3|<=Z^g@fAO`iJT|xd z+CPS2@6Q2zb=w3a)Dwsl;?6*7ph3}xk~C#()ANim)$W(V>=Fn4+Xydvj zL)ZBr+Tcb3c za6}ForoDgUyt$UTH?0k{Z9}l`OZRymrF`{CMd}j-c-ti)uJ1VNk=~pQ22neG?MB$f zEcI|`&l%)0SuECHMIgJz<{iWkGd=tmj_>#YT&sXcOk1Bb*Er*e^C^kX`BD?zxPWXn zhr@dw5teX2sFeJ*Z4*EPlZn%bgPXG+KtmGKg1> z^gs=iB21P~;MDFvM&2F4UBuj@?={aTGxsDmQ-qj4H`>=xDUG07o-8ZEZ~H;$@vRpC zi}<43oR2$9vcc#Gb?IY4`Ov9{Q1#I1uSbq2ky5Er8ZRBe>D?bf(VM_lMc-?l8803& zHqtgh2@!4Gw^Us-7Qw7@lGMR%W&nRB}_Iw!S>=d>s<{AC0v7v26nUDYk(|4=CimJ{=&&f_HMKjwXfWSb6#OZXzRpNMj zO=>KLU3i%iT*uYXucZl!2C1M(VmQAaXZHRHD*0*LtLSHqjjFb#NG2qwg4XVDn6c!u zr7RJhy*mLcaULux0YzJ?|Bxg$WPqF|0Fdy5wz-yuQVNyq9z3$|BRYBq@Dqx$aYoy! zOQjn zqq_DF<9>;@r3wA0v8_m^CP$btgsP8>n*+dh@~t~R_(wqE>>b|)$moEi2En!*Q-4y0 zNJqYynZQ{ctsO(hai7K5)V9q8sZ=sCN)?)5Se6Y2R@y27$tn;#c$?$clnu&s91;y) zOH~j@!kjO7V>o-@qu5nFZEW9vVaB%Z!}O(8GF~aeXp;rc+V(1dc;`1jBDWnUn;DaK zX~G;Ui$jy|#!zlI>Yc?m%QmyOx2?<;f3fOD-yvX==srwe-@E!{_+bY;`YA7zArz_L z?gUW6DB~h|=Z-ZEngk980-1;_bH895f`ER|11RQ*OgX$V_Y7X0e-@z46RzME&hGyR z_KrP@t;pQk_wkL{FF;ZV0Gn(oC6nbBFhuqJ9;8yOyAsd~h`9m`On10IHhQ3- zOnaO2!hl>TBz7ZEgm~rQuplKxW1>rMNxBtT!bOy!CVCeNw~gr9fEtXxC2Vw&XTAl?d?th>E}1M zHFTe*?;A@u(C)Qg2JoNT{6Zw2n3(xPYUVfKNjuH}#s~LQ>+D!Wcr?4x!IFSeNk|JeJcbIGl-d%@vQa6x`zhtkPU3` zBgaF z-k*tJXDd)nF12t|JPOlFA0u^K(Rhlx_?H_mVs`!t4opp(SK_|k0>SJT5<85rO^G6| z(r>6HP>!90U@m5FUd3{4~)u6@2>o zcl^)Iey!UApteYW5y!KU|NR+ubRw`!J;jNN-`AA&xnRC2T{SA4u)^JZ`P5thP3Sf4KOS-WQi=gE{~| zLbz1|xQ46YX*e2o^xSrNuv5=FZl2{Ie0S#j$X@G1l}cgn&XI9ciY2p?3}rw1@pg< zwcsjaxPXlB)O(HbcE96tCg55wEa5=6!O|PARHQlM8Wt?!nl)Y#$40Y-tBdnG?H8Nt ztDR>TUI{+?!+-0(;J3*KAX8(J2HV_n@o3WAOxpIdAPuWHA+EK2^wN zisgKs6*4(wT*pk9oHMZ7mnW&v?f22_c2H|IsoCi^y6xb_#)A6yYcKfE*KW!U<8U1L zLp)8K zgD}u&1-_i~yXyPx74`M`m%<;cUJlodN3c>58az|x-q<0lTGESz zTVT_c%XTnFgM?S{I(d@)?>)>IFGO42<-;xuiJ$U8$=1a6SD z4N<~|$PRPMD{uh-y{3|#H5JOhIHuB-k;0bVr~ePa#4#^GDU$#I0000L=1h}(Yw@mnDNNr@pWNNizV zUS2mnJv|jpPEIDgy8i!1FzFp*jEoH5zkmOC>C&Y;pFe-z1r&NltpH#Hd49%>8Hqwd zLcIU}{reBJ4I`Pr#YlHKf=O8bFur;7=5t0y#{8p4j~<{jKz~_~IiQ#q5)$U&;N$@C zVn(@6!$1_ZLqd2TlnwB~+W?~Cql@VN7s6-tY7e#ONa4uJyBQfQEITcO%A>LESTLT}UQnE2Y*t-EOxpkL_0vNwj~M`FziWRaP|#JXRm8 zD7#Y1vaaio^ZA?}kL+L3{(%BqBOnoZuKQ)7Nf7%4dw>4DWm!I6uh*ZK%jNsG*Vme( z{R0K)@PZ7+Tam!tpzRU={Dk@R^0GcU*Y$KdQJmI4>t>c} zo3;AC5A_eT2+z7dS{8?sz>#?#IL~PR&=s%)Pbi4lk%5yL(crj*c>mB7Ai&EdKrwOP z{^zxMynlZX1P~|yk9Bk#i|^C=2fYzO&Fw$~bVtU(9={`5>K`Nl4(A{`yn59M5-)*m z8JN&N=r=)%km0!s(D4$$c}V?(A^>*d@H%+B6x!7Khe!f^?83XO5O_Qh__eC`4+j$f zz!Zm%L(3xcp(lV{UjROu1~c3H48o7;1UV>yk$;QB>#vU=dI|6fGyVeT|0@H1=#3ET z-uD{R*qb8DqOJe31p3j3kYVr#AO@sI>;$u!!=moT!AC*NYtd6{^8hf0kiloJK>nnwbt$Y zOMifaPdTR#^PEbp`uD`|0cw=v@D5r^N%#A`tvMBg%_pv-NOGUNX{W)zi~nVA`vA_{V{cE30H z?2Pky+OiQi3f`LnRaI4xBpFb2)fNL(7=O^^eLdg_crKSyx1_H}0pG{Q;On(@_3(JT zXlSTMb91xdw@uY$cvYq82?kHVS+m(J?{h@3s`rxA*Vm!3sR^M_0I^6In>KBtpT%HI zw2Ppryq&?bHyN-bNtl?JP|wjd0<7kGbv0UAn$gtMOx{+nIh`&Ndj;S=ecSGl6*dgL?Q{V*DchGl`B`mYPF)aw$>Pb z(D7Q_RPVoD_((IE3@Obgp|P>?^)#W>5a8qRcs=m>d|0}4DQq?y>gwwF@9N_Z#ZrjS zYn)%vHiDkW;9|z$c}pPaJT36g#eWwWyhx2Wygm;?!4NFM>o%(j-VlGFOS-y%S@};w zz*yM;vMj41PdU$?r*l*n$n)WF7>gEKDC`NmLHM)Q>LirC4VV{F#+D~ zb|Dsv!D_KFcr*Be^0KST?Qqz=05Vzz&~FSKoS*ge#dUOasGg^8;B-0F?UKbyVX;^U zyea&_VIOw?_VZ6if`PzY0OLjsU^og`DEzCdtJFRp6&|9D4fn=_vqqp?RYQV1ItCabA1=knW@Q*V@{qZifZ}_z+_{4QhJ@xcYJdvhgMfHnQ?!BetPY32>aD)MJ~bNFty_e39>5Fao~$t=tnX2o0C20Leq1T`C+VCBaet4;Bd%4e+sOF{vZqf5GV5F&RxBF_4Mvtdwv)9_Az)(1JE2@G#X9Ox)mWMra~pn?TLlgR=j16 z*CIy%R#2cKmM=gi4@o%$gCVpwH(|?`Eto!iI)gXPA3W~Dox69>?ccZmd(lmLUIVXb zfE*1G(i|O)l9h;`jDOZ9?q5Z7dreJEb?>GLKU}GhpnyXgm^O6^J=jniBu|>cAKV`I z;g@*on`(y1Jh;_)-m!{n*b>+S}XXqIebQ`G1@vfK;n4@YXE;V0R45 zckbLhb?oS|Z~FTOx=I0W77tMLJQ{1i!PU;*^9SY8qld0ThYszyc;V6k@ju+uFu+o7 z0~q8FeD0(8Lw{vWP2tItCtZT!?Rxp*5GE)%6 z?)ibeyY~kI!7Bhl`oWv~_&@#i4=x$Md8s87JQ=PaozCR!!-KC9@%RG(Q2<4d{A~vK p>p!_AZ^wlug&MT>C;23Q0K3JEvJlrmMF0Q*07*qoL7aTJv$!7fm0f zzoUI``q!pkq6ApXX0vz8d)yDQ;SGCpU?SlIDdRTolYN{tuIjmj0*g2 zw|igL^(^PCNhFmf?FiiC4dXDjj{tH!9#7lt_QQU^{}g%$l#{RP#q-H@GP_={Ny@91 zAA`oxz{vc!Yui&rLMl*IRpt2#E{(ecv*uLbOD~{pXq%%LxaSc7o2YiCRn9pn2p1-R zv|v$yzAg}w27k8iNP&C*8$)_)Hu01xoP;}~DY;`6%e2TvgcIme(8l!*~l<1>+2{XhkP{0AWjyyMh4v_A#f zX`tQpgYObFP!7+>7-(_<;`6%ehi(B--2iyl3r&U6UG;;@0oEwIiABIefC)TJGZe<< z002yW_&{hbgsVC30O9}wAK(U6C4a*WPaHrRh<|{V3xVhRq0OHHaKdPR0{XOou_<8C z=l~PN0Tp^FLRysZzA1n<|5cDEcn?Iddq^cHss;;r9|hkZL{;Nc07X!PW!4W7!{0Cs z9C7{>=&*h$ysE;S#0EHr3V>D@4(vMtcqto8$2FdGRaGgg_NpIz-vw0t-|QS~gw8p) z`+p+=47?Ia&jy2Z&6zzX=nimLxi9>W_N_v2PbQP#mXhrSa-S$e zt{0b-!XF5rtgIB3m6bWaZ7Q_<#}@7-AOTO{BI-LIWM4c&g!gikmX@Hrq5^$=Js2A3 z$C@>3_*o1Vhkg>Yi+Krnv8Dhv3b!%=-}x1~GsBd^9vPKz$jO z-yIu&Nb3-xEY6?NRf2|RNHP=fvVSE=p63KdC!ZGZDl|d}1pVmi?Sn&Ey}>yOJ{SJL zOZrv7#`xzTFcDEeB9Q=Ho-r?$=Q-vDTE4%(A9H3q==KDkBY!ZVu4+6D+Bjq~GV!cB zFJS5VR06@MV*@WVn!lknj>jF56G4KYtUX!oPVx9ZrnKV zykW%gT!Hubycil9g459;;O*cKna7QdKDXNy01($#fR-}!IloBuZ%@y4059H4xA@Bmitb-nSOC`fL1l55s|%sw5Ed+0 zD0SWz{?O6UF}P{drakxX-+w;>z@;RWvjT))>z)_y5aE3+f7R7B;I>PFk49ryx@0M4 z&6-6Zw(tj!*B#oibLXBDCr<1J(5WQ(rW_yu-ULYYErm;VM&?%BpVn$^Z3Vqy#fp`f zF=Gb7+rl5bK5zWUk;D6UY~QgFK%0PnlLBOdl$SH9<+ncECjcpRtbfP(YJY_1l#BcQ zes!%7xoGa0VumSjt3#7BZ6PRRpKHvI6VYt;58L6A9iP{^0kS*REebv2(}H zpH($!CU_kxoMaOr`+w-zN~VdQN~=-#FJa$aMMXu)Yr}-c{5g<@h-(8A#*gEJ4a*=c zX$ybw`F$g|Z{Iq-d)MyoIy<`_OTyDpz%zDGj&TtJkxpK|d^ufsQC)p~NhY0sYuLyO zR!*Gdk9~f;ZU=wxdOazEKX~BK*Nu%$4+Xrg0{*eO{G_(FHh-j&SDMe~;sGy%(pzg_ zoj015yANkvXXu0mjf8Xnw* diff --git a/launcher/resources/multimc/64x64/coremods.png b/launcher/resources/multimc/64x64/coremods.png index 79b0c5ca5f996e5180e8a5c273ef55b08bbfedd1..b1b1f82373e5d643b50c15be31372db7af3a521c 100644 GIT binary patch literal 4218 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 diff --git a/launcher/resources/multimc/64x64/log.png b/launcher/resources/multimc/64x64/log.png index 9d34ffacc522c41ecdddcece0ff5c189a199a43c..decee34bd1abeaf3abc1fbc69b003e8225cc2a36 100644 GIT binary patch delta 2254 zcmV;<2r>8U64?=uBYy~>NklEF-dcg5tS65fF?QYYUJ+O3{G0e<@uppdg z$OD8PAtVU1Ak0k5ygSTb#)dkTt0QS-X*6x`T5~^R;raLf`>GD40RLVZ`}yv#Rx+oE zKASgxa{iALP8=z~&$a&PS6Z1<#{NX{JMaAX>hCDtGr)_TN`KY+jzS?Ql%?s)Z(Xu@ zVuTbxRyYkn5Wfu7(lftx&HM=wQUHomG*1z~7@D+|&i&S<;kiFhoDksjQ9Ohgs2I1E zF8}&Julc(#BLD%xP^yis=I8$G-@nV>pBzBImY&oQv<)2)x9bMFf(QCCiHd=i?bzI! zd3}Yln!->?9e-$k{?Gp{BD^O9mpm}AY}2>{2eIibiMmhP^1x+HiJFpexdK;Ra;WKJ zA^?se{6|DMc@etcX+u1%qNip{>QLL3!lcYo#60h5pd|A#6}g@Q3^{_3H$NK@PHf<^ z>ngf-l#RJ<)f;*;4Q+d>?)#9t_MCA`)vPz2_ZbCJL4UxIBM1dwLin$UaH1M`)(4{4 zk}{sbIYE#iNCaieQdQ3?D|=P|lmJ7((L{VYS~!t`8UV-uJi50H07?LIJc{tSh~W4d z2m*3d(3ja$kzpv&SHn;W04P2DO5{9>5EJn)5#bmE?_k4(`%*1EJ)6!uP%`wC|1hp* z*O-9=eSdXzyB75A+4798l4<{FN)mC(5s86;toemM|EGvB5@1DcMrKN)tm4q2nlch~ zpO7jG3IQal(aM2}KC!uFQw{`0{0aimLuUU=weTmO^XkYH+;v|ewPsdN@IlY3swp|| z-*C=7iGhaPo?KhU8|oIk<2f-2YBE8tFpLlsD1TXYy}9#47k)uL0-$b6re?(uBtC1X zh`OJXXd0SwprWUWTvJO)-C2j)51$_h(uXf5NG%)dzLAau*s`H!TT^bRV%(&Qrrq~I zE~r|w?t)j1iLWDb4r4`Ry8c_&P~WVJf>gtfN%vIkN_!CmAb8HU z^MBaZ7EB4zM#HwDIdwflbwPp}a;aIFT-ms~F`LFzlqAv62!O(->vDbjy53dQ5)90{ zg{njM92mEWRX5ZW_H~rJZrZ$U>xOFj3fmH?x;LG*4Eoa100kPBG?dV`sG@04Dl?-e z)skX}L`fqSYD?k3If;f=bavmYfJ0SfXMeS&U?4jl;J$qaShpdutYk;(ra5nU&bm83 z>{W>wFG;Pzh?-shYNCrv>` z*S>)jH*D+3tVvwAXvQs9ZJN;Wj%hu?m>nUWn=7k%pk%?iZ4(Ci)+{>XzqOt7im!p= z05${-CAmFS4YxFGYunWkqMd<(89n3fDLi`#% zDD7avhU=DXxf>hoKAecO>XK&>gyWuq zj?E}DcW5$--&dCic65z7P=B%O8Mkdjn7W?eo3Lgf;s+CUBidOVZ&@^9-?%LcisKFJ zx)PO(9m;wvEb4-xM9VcjduCi!SM`omFz0PuyEfvdt!TLBnb5f)AxqwjIN0c&oWa-fYkC4Vty6G_bX9pi$w zs;)<)P#7J>@x9@OEmi9-Ybz`4c-H^OtlHGHZ#`nn>%Qm4A&hGG#S$p0#hsbTqW9>}xe$Hq_SEa6!*! zJy4NFJ2MWneZ+lF8<*J9R-7aSJ6>1UPld;nPA(F2c}GVP2IG9($Ysmzoe9qbw-?ps35 zP~vHc%%rX$wP{S<>t?M;(U+dgz%4PKg3JrrUhx6p#xD}Uyzty{MyQIXp411DLenlq?XFpC>KaZT$3F$G`CqGUJAY%-IL_Ji&-$M6DV}r+ibrYy z_yF+a4HU>d$q2_Ac(PF-j2@5_PuxIn6hO(7jR6iG573vX8i12{DMp|1$i7`YdES34 zK=_^4=ReRrvdm2Udt@s-+?$JMAqWZ-M~@%9=HYhk-Tq6@FBFdfnBV!OU;4}M$?Be5 z6qjCH|3|Nn3?2jUfsI>#|MDdbPcCwIrY_4L17P^AH{QBaN)lxWfP(k^KLtEYS|~cX c901_|0el?E1jgEC_5c6?07*qoM6N<$f>oqDBLDyZ delta 2402 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 U1Rqo~=Kufz07*qoM6N<$g1!@p)&Kwi diff --git a/launcher/resources/multimc/64x64/new.png b/launcher/resources/multimc/64x64/new.png index 1a269ada4710ed353beae2855ca98abda1b2ccd1..289a6ad0b66c19a4c3498be95acd8f4a06b285e8 100644 GIT binary patch delta 3059 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 B0B8UJ delta 3107 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 diff --git a/launcher/resources/multimc/64x64/refresh.png b/launcher/resources/multimc/64x64/refresh.png index abb91e1b7529dabd0415e83915873f2aa60efd54..737bd058118c475d23fda779335193eed12defc2 100644 GIT binary patch literal 5103 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 A3IG5A diff --git a/launcher/resources/multimc/64x64/resourcepacks.png b/launcher/resources/multimc/64x64/resourcepacks.png index 01faf5e803147b1331301d1fc1e92df24e17cc8b..703fde6b5cad9044bc8f9c2230b9c64db7c42bdb 100644 GIT binary patch literal 5926 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 LNkvXXu0mjf0Eb(I diff --git a/launcher/resources/multimc/64x64/screenshots.png b/launcher/resources/multimc/64x64/screenshots.png index 54e9faa6de275b5c67509a67cc31cc0c268306d6..a57bf277281461a3a4d11e1b4b8951d697420d33 100644 GIT binary patch literal 3864 zcmV+z59jcSP)Ym=;V9tglX=YaqZ1X$;Y@BhkA8FCzNfd3|9tp$LNlQzL| zNr+oMv^L`IV=S#(J}X@A-+heKtIxBd?~u@%3tCy%e)M<$b=LN}&F`K$`4=AnV2t4o z217#2myF*%4_1x;zu=KaKH;~3FSXHHL{UI4*Bc4yR_lRQ3N8QyZ4qsMfS@yC&4Zoq z?QXXblA{lORQ&e0{!*rTteRjGDZDF{mhP{}~j33IkrR7(l6LwE%|JCq$`` z*E3P42mpw})hRGKewwM7%m3djx$hMilSDvg0n};%ymS{s1N$i!c9G3&|37a%#ofvM zI!=0Z3Pha*5D;~!0dIJIl7D)k_Fmf?PKNyJvxuDhf?<_g7H0SfaiI4PDx&2q@Ph!CvVJV&!{(BiOnjz9jzkLUY-t|KT5HV0RgUJy*_K{F0CiF1hCEE`dmB+IEix2c zK>$7lZplMQUqF&Vr{()FCU#K~J#5VdJd(b|aqk8K?rBGReLiNxO`P%-Mn;Bt<8yz^ z^wcEAK-|#xmjcEZ0j-c~$CTK{Dfzw(i+wEkU{`K16kg%|vZr|@KSIF?lZY^g6++zM z{qtwpkSfy>R3rrrV2ipyrBX)L$9dSh%H2G(p~8oBUt~w2$;WRV#w(p+e0&Vw_W=kS zibkbDSWyHE(b^Y6oe)5e>(i697g`;s6^Y9u?BzVWyg3@Vy;RfN6TuL2 zS=e&9#OCM%PkLvP^R)69o(~>oR%`@d#+NI`c4g)Wr_VDtKSyu%1j8f4tE#z3KH(uM z(1<4Y6#+K)K`F{m2u3-Ux(QvIcyVzP2$*6!wu0@@cBp2DUnj#8E)i zJ4i7aCa9O`NzYRv1GJcsyP04&0D=~`8hr>oNuI^!A|1zylV{$+%-lF9Prn@<0tT#< zB&{UvP*J#c0fYbnj9U8`RnS|WTahwdqDsc~a6%_}L&64ERTwna08n*BYzzRsdYp{o zQ<8&BhDG+|%Ur2;(T-cz5q8CAN!bPwO!HfR_#<4td=ecQR8uF{vONo_4EUyF1ZW+v zEd@4P6FikV!QR{=5?C~SNLaR#>A`P=OvD=rg@+}eD*HHPo}#MKUWy5ha6YLSrE!4mF{x zX-A|&bgbG7AZSlnd6b$Ked;zx3e#-yD!7(L3YKlb+RUuAjqCPf2wMJ|_CqYljUXhx z>;fSZo49?Mlka&0XV08q@`XQ2<_cjLKKBp&{&x)V``=yU>^pv%fBK~l<@lkd*+%D??8BY*X+#9@e0233g(wdVQ1{eE<8 z5JHgaNn>n4fWhDvY%EtSnS(zUf&uA>jwukws!a_LbVLf+RfMh-D4pSU8T=4zNm~jo zR6?jLNijuoY|c#+D6kzE$?wM)gC#Bc_dUz4Hw|NX0-XY<$HKL2{M!L`%A&9}OVo^$ zH|>`K+`L7z6rq*D#D+LD7#-r~I!A!ITL6RMwNQQK*9i(+m?<74tk-e&d=fcZpb-pa zAdI0e12aA}75EVZ3R04UD26#dv1Klu`g3N@2yx(Z@wpQyt%(CLWf0OJ(h|qB$@XW^ z$pac9U*UKbL0Qo(sU!k2{Vpodi4ZF6v=9ncrvR@JC)Y)F?jp=xLP|kn^q(nLe0q00 z$!KmHs=mOD+#nlvydNpANXlXri}RzLdGT)unsv^-`_HMD#|iw1Sv8GRf+x0Z#|Rsx z!Ki@S7-4 zcDBU8K#`!PNT*y%!!KbwC$OYs`r0rjX1;^e<^lE}|5&!}dy<{Ip9bJ>{_4m0*T4H| zqGm|kh_M`tZ3A1lIe&|kWzm&RQ?Au0N07;MF)=nl;AxzUMWjPA4Tm@*iRTnaO<>6o zNFnI&>Sbu-Caza140QM2M-6B#h3`q-Z*uMWICJwQ7Ut`uQj+Lq`FjmB2Quzt03MzmAV<6Us z>B%XimuIdt+PMfS)jp&;@1O$C}L`QF`094|5gwJqcuWG9zRy&*~c9& zTs_Zk{&|DElV<186pdqhc=7CxWS$a|8sPgDGulBG1^MVY1AV8_&F2^{P0%z^^7f^G zsHw1o&3x48SOm3NV-ei5YZFHg^{{b657~@Exm@SW`CGj6-DgRqZ1VXm4L@XXsL1}k zTiLa91BHABApitM$4Q=QZ738xgb+M>Y&(bcHhJ?qUS?*hicGx;&wG-(e>9n|r9>D* zqftdi3#h0@g-tl_=OT0O!7RKLA;18BGr~y=V*Z;xgS(dm$YmQ$P0w-S)Fjt$j8Q68 zll6aJUyh@PcW~(7HoUZ#R9cK7QW3W6EFCk;_1iZY9iJugJ+ujF+I3vZWuT{@@#-97 zl^GhPCWWqlVDsJ=7`y&3wc4X-V-UC)(Tyg;#350Aj#OqBfj^CoeL{5;6B_beE+Qp6 zFNIg9fDzmq78c7)OiXj)F+7>NB?|*K!K^clt<@@MSy9>OfC2f?(RYO3Vcm39^|yLD)b?8r!xo#^$9{ukgyHE6mjz1kDHwf!j39 zEH0vQ7Fb!dgiO;TC`Z&>jp!@TV+s&!8jheh^)9U043*NuAOym)Fvg(55Z84vD#ik& zvjsP`7uE1-INw7j*1QsIG#Y?d3i*fGw`U8U=isGMAT^C<1tBb^<`((eH@tyry@u=B zR2wnIag!UDj*Tv+Flien=iv>eP(g$cg4lqgG>&UwFdz(JGeSs#WuL>SBiNpY4gwG$ zv`!W@mM{q0AtkItOk5Y8{UF*QRttdSHPYW#;KM%TDGu!4is!i$3I!t7OhVtW(-;lU zoqUCwUq>m8AH+D>6j5xFWp5NJa=UsH0a8n5yEf@u8ryS`mLQW$;Vqf%$RvuqrLlTt zGphXgbmcru7$7l;V8ZC6CRmmYS|bHm7+gz0u!pt?k`!2z0DZl^cxj7nkvmBV1OnHQxRxQ4PhmNB63R}>Mi@wWZu0OdjIkXj5o~^{ zpT^v0fRq@^#*z{@n?(XnDveMP0s}@Tt)^;z2O7i_i^sU@BQ=>{GVnm zDG){e|I7UW7{lENK*w>1A}CnJhM_~eZV;eU*nWS&dLY*EdfO}9IRzx^j95kOm%>LL z{a9Xp{tXxtqgy*J(K_j)P4b&p`=-@Tez$g&>crog*V;)MqmzE(BRQ{$Th}nj7<&0w z-8!~)t-I#8eCE#ewT7f!zJAiL1VxIvO%dF*{YjnArp2j~FSfR$E}zuE@)p^a-(Xg4 zO?}l`H;GBk#jAa@;-L)7;;cA6xn4`;#Md(2y1y0McvtpU?0=C~#>)U}B*P(5fB=Bp%$FD;hd+?8wtaBa+@IZid&I18h a=llo8i8jw8RxrH)0000583dEP)pfr+N-ET^@8~gfYCO6)P z>wHzG)HqWAbI$4ZL=naqwlk7#&Mg7h=G+qCmH^uv@%>-tbN8KK3`T1-8ni(hP1a^K=H+YF zrVR$2jWuS|xXo9cT{pI^x1%?W>3q%ZMRwiPw_e}a_X;{q`M6K|WcKg7lePdvanc9m z?2S^D^MsyFY zF|TEk>v(|829mhNW~OG2;W)Yfhl_2od*=gO!CC!iVLTxWw;ea_q!PK}a@1#x- z0EgrS%4(ih_{T0TN>Y zFemmhnSYY&Vhl-=bpK;0i9@__2WiklH`2b_sf)hO{b`D6E^wE3g+3?XCdd}P znN>5$CF_2osK#jZ-?=Uwb^&|ygLOg(SXo(S*Jz11weH6vVaUv8W|OdyqN6z>@1;nM zQ8Pi=tO2y!o@AdnPuZ*jhPbiB-F}mIsYloZIoN;jv7v=ry zC$!c907`bu&GPt2oev+K;>~~cUHtgZe=RGki^L}Aau7;js{$Cv&{|_wFK}ORhP}B} z1ke<{T$1-}*n$!&l{H3_^9UfI%oTYz0uYde&@uTwOpAlmL_d3q5fA6i@_>H{0XMY! z1_C~2>@rUEJd=|Xy#DDwW?_B~V;~LnO@)9o#s~l*GV92^*vnD*zD$VQSq;FhU1Bso z&-)dQ@o;I9vJ+<>VGwK-;uYS%bb>LjxNK@l71^BOA^!rKd9Se=AJTV* z{pA)PziR@&a-5l&X@VdCAPyB_EhMffqSa)p2chl=px+JXw=E{3`w6wffS$u`L=2lr zZu91_e4Ax?8>xzDMut(Qu8CT$R@h}X*y|U#kRE0&$@2=&L=Ul3jA!{|F^~w!H4ga8 z#0wV)lw!bIW1^B?H$NqDjEXdNOKdd>-k3^~ryNajzjqmWcJkcXP7pB9K5UgRkjyfw z&tuy*m*rE`tugjEYotj;-M@?8WP+$!r9Zbqg*+RXm4}$+5CDR8u7raKJx7VPYe_my z6-SQ0jm6~|jvRX{ItC0_o+PIvolvjJ0|W?Q%DSB?1q0RPjUhvisFQbnoY=`+U)bQP z8YAW+0II1-jR9al&yaTlDsqImxR=AFD(CAxbmEG2F9*{Tc(y@A3;fm}{s`yJ9YH4s z)zSzXY~MmE1A*!40a~Y96JVD$%ZL@Q;v8VS(Z`w@M6yoB^kaw9MC_nPEMf_$%R!Es zK@O!y@l72;M&__7f4Z?7)0?+gEq$aq{2gW8!DxeSXjG!{ zw1p@N!Z5+kNwjO|M51DJsyYiG=uB1l#EHeAxQbtnsU$uNaS^50WmvU#0kFhg1nWul zvi%@q={WsnoqlqSI%(cU9TfaHQuv-#NZQOjKOgA#6R+uKm9VWT0Hb2-`%di zj>!}6ByFVFwuQ(GykQ$F)JQ2YM&lTX*K3oube9lFHlKB{jW*&vQ6P|gOo%%nfszU+ z*$Jb$kl9v&8`0xx7UDxJa){l97Hg?wEpb_0eu<_vM5(XDi~shkO#aoklEyJc8B{GL z)|zMj_WQGMT?j$3KZmga0S1Fxwy|8%Hiuw21_RRRo&?j59w6w76mYN?dOT1%&($gf zG1!uhlwGLB&{UFMFPlrz%@HZE9hfZLfiVV4S`6L(-duUZ1ePz*9yt9Lu4NNkjj%n7 z@}2@oE5-38K_$X1S+pt%S{Y1gNMnQ1F>cZ7>H%uA00zT*LjA>GCo1n|vG*?GW)tV| zCsDKo8o@{&;uHq+uoyr~L6DFw)RSZ+DJ%z>UE}Q0KWE8Il12e%o_-0Xb-N6v3PKu0 zPU84Bg`qq;Tc9Bc6pn8ZRTZs@$~+)Hrise}B9p265l`D9bMNckAwb7uOKtA8Y?DQ;=uW|AgiH^yK4ryMJ zE-SK}K-&;VAsFfzV06b$#%nc(`vz_z2dp23Z%8v}adCWx<&_GnD@{C4va(uZad{1$ zrqmlvtiE3EyzelsZZiJNpYjjC{6+lWm)^r~{nXcR?j0}jIV&Ffm%ud=ClN#|H3pnK zy&{K=Bs7X7ZjqW4$F=d5Lvhu?U6a_h#1aBglDNHACb$$}Sul0=GE!QUN@c3^(_KSA zZ#4u4`b+HHJxnW#>Fq62$mbaw9cj1c$+yd=PG4!a@qq}s4BH;?p7ELWzwCqbpU2q5Ul!r~g!Gs_GQ^%6x1E6WQ^%`7l5P@-5Uw!LGT zy?ch+qV!{1l3lxo*xj~?iPJoB_ep-}n;r)~6fnH;9g?@cD_~)Km{16MN{0LHKF71q zERxeT!dO%4v#^E7f&Eqbd!{*e^(u9sz8WKJFrGlhU<{cpE?z-8l0NBmPl8%)%>x>Z z7R##@n$0G@pQBjtdGP*23=Q@o1?}=^5(kawt7n;buNg}1-+1fFM8DisKW zn32(5?zn9a2M>%usB~wdT+q@pP(7s zmyOp_B8(vn>*!<^l{Bca6UY5rWbs{?)i)yq7$9gRI5|Pef73R2s4YOT5Hi28%u7e- z7{4@4rBWvdV+IF{+;`7@?!Id;e$FS$w8oIA1lx7mbCwuyC#tELC6d5Lo0yi}#I;<8 z`-hmRFEd?RB&@V3_xuC9ZhMyL@rP(M9zh#}z{Q9@Gzlh+Nt(-e`GZ8k0y+(d)n!a< zDD}7qPj<@z*9!q7;Kr=3RhgY#;H4uMSgSOtH$rl*%?EwJ{T$f0qb)*-T+Ywj*Reg4 zq=l3c$95U&@8ysF`81INQ+KIOt&oZc(@L3N4H!Apj|db5n)*r&)G86Tf!X{E;UN|oI^ z2YK)JzK7cn@1wuJfNQ%5Kq*a}gxOYR+YUm&3+FBnH3f4g7O=yZ*w!Sg5kWmdwG!k) zNItQMlp?ZayDvbsLW+fFP*IGq>@0STHkn6Y70|kbTe`DtPvVL1piue*wEHMM#^HJh zG66b;z>SkYtEHHlS!QLW%A=3m!992FXKXtY6OC!R845O8ZlU=-;^QMgpOdqdk5B1o?7K05CUOY7-LXz zjO)4>m0|(X*^TSnh6)2h=X>bF)=z?A7y_d0@(;DY_1*ZsgYS7DHDRlU5Ek>xYy9o& zUPryzz;$ivVTy6w?7^jDqkBC}&c-SF_#+-FN)SSj8gP`xaV-o6gduJv2r01alNfa` zw(p~(2m}bNvjdGK48nHsgq4Yj>!J%EL?=Whz!pPbXt2zOeaMsC+1}E8-=$nGlc-ka z`i`B$Xn6X_i!_2}76w6-;uJiR)MUrrBvup;4rBs&ZL?jQTrr33yGTorFM9ZGvmKdv zk>BoX)^?$)pHENG$HWm5lL;n_&T@if*`PI2fQ7-e1Vo4Fh#(7rEeS9EMF#;2xf#hP5nhfMA)BoGK(N8(zBe96Od?97!N&qf&Vd^cOXic@UI z$pl-OA0k}-43H9I*;rEI779qf@p1^2ATVHbb~RdOM!NszLcka;;KqEw`##2v_`RQg zod4@|%mJN9k|6u1=KpsX!)63zxubIu6tJ1G(YtxgAV8_OLku-{#=&YQzk$tX7 z*Y9Co9(Qf7UZ1;uuTA6E+e~)ey^x%N?4WwC_FAYDri6B!K-&T<>_BbRUD8hRc^PJV7_suLBAg##e48>dku-YX0Dpc_%r?$A50tFkCAk; z*8!YTuj(terGITs`d-(;*^v()!zb`w^{y`AA}-)BxQ!lye(Y`1J(A969l#l7UEl7M z4&zgCll#Pc{izz$moHK;}<%2CFc`y_;eq#67pM{pF!a1t-!>>%+d#zg|CKp9FIyOPvC z>HhtaJBUM;_UUkwA7q*_J-Qp96eaYa-qddC+k2$zgy6yuPU1D39i-YZ4V8!laJ`sb zluhlDzJIbq`Wqp*J=ljsXv=UQZ+g!9`f)u?7!%nIN>D^EynaQQ);8%;0&qJKhR~AX z0N%i>Xf?0eva_KS)>H3o1;r?&CuLHbr5|sR+%{~t5T3|l&~11U+YIknW`j?0J^Q1( z0g6yaZ?RL}MyZt$To}U1EC>B4=Hg>!t}U~{r+>2^voyLJpn%@)I5n=5ayLkBBQ|3z zTC*JVEPMn%{NWD+yk}W-@F}b()P#!YZh(Ax?5X+pXm7t|!KZ zNB~91r$@YBeyxydS4(aU)?pJm5;Xt+|NlRb(cqJ>r)RIAD!LmWk6ybApkbxt!Vn%x z*nhlL?BJ8HCq9H-kpOHrXi&5kOJ7(fbrOPGX#u<%Ge5tICo#9@LB|fh)mZacuV=1} z;nkSm3GFCDldN{6fTwAGAzfQ41S=rVjDiz!=U2^KNEF^_bkhPJs-0%w8jJw zm>UVeb_3p8EtF0Zf?HxCJd!Mcj6`%NAH>~ zRnC#zJj};YoJ}!=RGK%Ny#R9QT{EQlgy6yu9>Cd@Lb!D4QXrM)0|%lr0We<#uzz!= zt#}R|!`T!=NTqpm#tR^i-Zf3CpDwvDgy(QJ)eur>-aOuQDy-L3sbiX5PMQ&3>q{O& zR&#soZ-%7Jn`SS7e0tYp>3>rsHx<*9Uh=X5wxSL--ZW?Xd+c!`I!)Htx>}PoZ(i-X z1^n;r-W`^aSL3CQiISUy$#`+3?SBH}qd{uHj3ep+L9SVv*r2sjxkh@K1u zr-W6~wdzO+FAmSsVQ&Vo(_v8+(rH3))u_SI;dw#C_W$Sw5vy{ku)=O9Rexd8FuWu- zr|S&BTPxmup-k!|2v>n>v=5_;qHQRNZvOs7QBi!Lfe>66!tP;oS$v1L`RCHB{3@1e zgOo~9hHAVrOm2)+bUpgl%CF#d5g+;^LAWr84a4Bp*jn$e@825pL&yz27=}=WrXhTD zw9&s34CJb(3T_?q!PY|iQhzZP4dL743;n---0g8udD4&b?F(TLdxqcx5_|mS5%i`^ zDpz_m&%RV(D|&bcJtFfkin})ds4}e_=_`crw`d6EXdD6$Nj0LvYaV|Kddl{p;BWJ# z>jdG#AjY5#X9uY^jEgjH0bIwo)tkDP901KQ$iuFIZ{Cjf-d`QLi655sLI}2mAOt^%xo8-m zO@4vbxHXR?kITm#6L8%RA{Q(1ate*Vj5XbF?uP^}JCtkisLk`~7R~;c##`Zf z3gdo^#X1Y*BpyQ(es7v=*-87%22Ajq_2dAp!5B1PWd}$GkxSEmgzGsB3nU_^7wo%# z4E{|!&<%pJ>j@01_8zH$raR$GOehvi3_jC|2Gj=smIia(ElPcXCJPztXbL@MTi8CyCo`Gs4FBi1^Rhd$6g{m4uj`7W6@QX$!1c43fwOrC-+EkN z`kVBHq<&0l0jsD}3sR*tatl^DnrFHU^0~l##PVqo0)ZW8{)D9QoCk11IjiDHsfK~x z&VX-XTI3>{%yPNIkdqECllDpaIVS-eQS7>=NLs_-T5x?tL%CZ1Ew+3q9h5W^D}ZB) zRV%TR!Q6<9gMTi@zpxC~+SDg%%KTz}!gu&FI+$U)ZU7f0>4UQ~ zA4>3V{9W^_NqmE^@jYgcA?VXZ(rQUxWgWmtWnIf>rDOPyQ+nh7#sBbE<+i3Vj0^bn zk3;wYw@NybRRDd;s@9?%*M=J}!T<3$Eo}Xaa~Q!)Ab$Y!E6b`S9Z)Xoh;+?yX-}`@ z-Y~s5j(&_Fm1pO%4|k&pjo5@bY-FsrG3J~#|C-eEx;1(3&>Z0e9y_M$XF2(BB4@hXOqQnW8Z zQeg|Yogp*_4ukcmrWdAVnrn4R0|el@;D>M?DMkAnV@R4YTbAq^5n6YsY>(htU|#U%q_V z6Mr%ITx}<_i`W!A3{XL@e-yyrUdj0(ydAT7tH{B}-%fN0hXMiEVKAs*?U72KkY)+N z?L|ArBCgM4ID^*AgN_`0(pd9ZZ>JS!Fc$GSVFa}ZoCju^mIec;dR%f(;7N2V`U6T5 zohZpL=%~SO$D4+EmSw-45*tG@A^;GU1%CiL44AdrE%gzCd(1+3Cno_!htOc6n~xvB zQPd!C9_W*(t@VK+LE z%J%XXBZTO6;-3V4TY@J-RM5K~k?MCyZYSE%gH--P$WQa;Kq!C&z3U;VjS!q4!hc&x z8$w|+`H*a1EUI~CU5kS{=+wcyYMk;?Hy019%W0Uu}oLW~rYL+d=`E}S%fZ?yhqUxkRLVs`#Xhct8 z-Vm|lKX^mLYNJ#|2(BKR@MrR-(IxzNe0TWWk9s^V zszO>>X)E|abT7dlNOXsrhu53tQVD6G!d6;`YMfd^Kan|wn)K!eG}kJZ$_Qa17{W%J zT>?LnI*Ync^O*2@%JxUW%UNlfAeGE_5?44a1gB+yh6MDu2AFFJYxJ@KI)u+>2MGU?8PT}X#5kjBW-s_g0Ypy zIOgYkb)fkPxNs2baDNcP3v`Bm0UJ;mZXB5K#-@A}DVNds09?=-Q;rtAjPo)7E95Y? zhmLPw0%pLj^Z6~BT}k6fxJ+TJ#XZ<>f%M`uhVZEwvSq#YnhxBTsaaDFB)u`{ij|!p z8AO7n$Kf)DVb%te&x5Ty?)^kwyXQ0xEz002ovPDHLkV1mIrl=T1r diff --git a/launcher/resources/multimc/64x64/status-good.png b/launcher/resources/multimc/64x64/status-good.png index 696ca156693497e03351ae8d36d47df62d97bb5d..4d256cc0484757db3b01de023fd42555c8a5031c 100644 GIT binary patch delta 2246 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 U*W9>N*8l(j07*qoM6N<$f;n<5s{jB1 delta 2256 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 From 172e43cd3f44c8db1b9b32da8fb095a95a5817d7 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 13 Nov 2024 23:11:33 +0200 Subject: [PATCH 363/616] Fix warnings regarding Resource static cast Signed-off-by: Trial97 --- launcher/minecraft/mod/ModFolderModel.cpp | 8 +- launcher/minecraft/mod/ModFolderModel.h | 4 - launcher/minecraft/mod/Resource.h | 1 - .../minecraft/mod/ResourceFolderModel.cpp | 131 +++++++++++- launcher/minecraft/mod/ResourceFolderModel.h | 191 ++++-------------- .../minecraft/mod/ResourcePackFolderModel.cpp | 3 +- launcher/ui/pages/instance/ModFolderPage.cpp | 7 - .../ui/pages/instance/ResourcePackPage.cpp | 2 - 8 files changed, 166 insertions(+), 181 deletions(-) diff --git a/launcher/minecraft/mod/ModFolderModel.cpp b/launcher/minecraft/mod/ModFolderModel.cpp index 8fe68203c..027f3d4ca 100644 --- a/launcher/minecraft/mod/ModFolderModel.cpp +++ b/launcher/minecraft/mod/ModFolderModel.cpp @@ -48,16 +48,10 @@ #include #include #include -#include #include "Application.h" -#include "Json.h" #include "minecraft/mod/tasks/LocalModParseTask.h" -#include "minecraft/mod/tasks/LocalResourceUpdateTask.h" -#include "modplatform/ModIndex.h" -#include "modplatform/flame/FlameAPI.h" -#include "modplatform/flame/FlameModIndex.h" ModFolderModel::ModFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) : ResourceFolderModel(QDir(dir), instance, is_indexed, create_dir, parent) @@ -246,7 +240,7 @@ void ModFolderModel::onParseSucceeded(int ticket, QString mod_id) auto result = cast_task->result(); if (result && resource) - resource->finishResolvingWithDetails(std::move(result->details)); + static_cast(resource.get())->finishResolvingWithDetails(std::move(result->details)); emit dataChanged(index(row), index(row, columnCount(QModelIndex()) - 1)); } diff --git a/launcher/minecraft/mod/ModFolderModel.h b/launcher/minecraft/mod/ModFolderModel.h index c9a5fc226..42868dc91 100644 --- a/launcher/minecraft/mod/ModFolderModel.h +++ b/launcher/minecraft/mod/ModFolderModel.h @@ -47,10 +47,6 @@ #include "Mod.h" #include "ResourceFolderModel.h" -#include "minecraft/mod/tasks/LocalModParseTask.h" -#include "minecraft/mod/tasks/ResourceFolderLoadTask.h" -#include "modplatform/ModIndex.h" - class BaseInstance; class QFileSystemWatcher; diff --git a/launcher/minecraft/mod/Resource.h b/launcher/minecraft/mod/Resource.h index 269f65859..42463fe8f 100644 --- a/launcher/minecraft/mod/Resource.h +++ b/launcher/minecraft/mod/Resource.h @@ -41,7 +41,6 @@ #include #include "MetadataHandler.h" -#include "ModDetails.h" #include "QObjectPtr.h" enum class ResourceType { diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index 68857ac5a..adeb2e422 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -16,8 +16,6 @@ #include "Application.h" #include "FileSystem.h" -#include "QVariantUtils.h" -#include "StringUtils.h" #include "minecraft/mod/tasks/ResourceFolderLoadTask.h" #include "Json.h" @@ -327,7 +325,7 @@ bool ResourceFolderModel::update() return true; } -void ResourceFolderModel::resolveResource(Resource* res) +void ResourceFolderModel::resolveResource(Resource::Ptr res) { if (!res->shouldResolve()) { return; @@ -386,7 +384,7 @@ void ResourceFolderModel::onUpdateSucceeded() void ResourceFolderModel::onParseSucceeded(int ticket, QString resource_id) { auto iter = m_active_parse_tasks.constFind(ticket); - if (iter == m_active_parse_tasks.constEnd()) + if (iter == m_active_parse_tasks.constEnd() || !m_resources_index.contains(resource_id)) return; int row = m_resources_index[resource_id]; @@ -705,7 +703,7 @@ QString ResourceFolderModel::instDirPath() const void ResourceFolderModel::onParseFailed(int ticket, QString resource_id) { auto iter = m_active_parse_tasks.constFind(ticket); - if (iter == m_active_parse_tasks.constEnd()) + if (iter == m_active_parse_tasks.constEnd() || !m_resources_index.contains(resource_id)) return; auto removed_index = m_resources_index[resource_id]; @@ -724,3 +722,126 @@ void ResourceFolderModel::onParseFailed(int ticket, QString resource_id) } endRemoveRows(); } + +void ResourceFolderModel::applyUpdates(QSet& current_set, QSet& new_set, QMap& new_resources) +{ + // see if the kept resources changed in some way + { + QSet kept_set = current_set; + kept_set.intersect(new_set); + + for (auto const& kept : kept_set) { + auto row_it = m_resources_index.constFind(kept); + Q_ASSERT(row_it != m_resources_index.constEnd()); + auto row = row_it.value(); + + auto& new_resource = new_resources[kept]; + auto const& current_resource = m_resources.at(row); + + if (new_resource->dateTimeChanged() == current_resource->dateTimeChanged()) { + // no significant change, ignore... + continue; + } + + // If the resource is resolving, but something about it changed, we don't want to + // continue the resolving. + if (current_resource->isResolving()) { + auto ticket = current_resource->resolutionTicket(); + if (m_active_parse_tasks.contains(ticket)) { + auto task = (*m_active_parse_tasks.find(ticket)).get(); + task->abort(); + } + } + + m_resources[row].reset(new_resource); + resolveResource(m_resources.at(row)); + emit dataChanged(index(row, 0), index(row, columnCount(QModelIndex()) - 1)); + } + } + + // remove resources no longer present + { + QSet removed_set = current_set; + removed_set.subtract(new_set); + + QList removed_rows; + for (auto& removed : removed_set) + removed_rows.append(m_resources_index[removed]); + + std::sort(removed_rows.begin(), removed_rows.end(), std::greater()); + + for (auto& removed_index : removed_rows) { + auto removed_it = m_resources.begin() + removed_index; + + Q_ASSERT(removed_it != m_resources.end()); + + if ((*removed_it)->isResolving()) { + auto ticket = (*removed_it)->resolutionTicket(); + if (m_active_parse_tasks.contains(ticket)) { + auto task = (*m_active_parse_tasks.find(ticket)).get(); + task->abort(); + } + } + + beginRemoveRows(QModelIndex(), removed_index, removed_index); + m_resources.erase(removed_it); + endRemoveRows(); + } + } + + // add new resources to the end + { + QSet added_set = new_set; + added_set.subtract(current_set); + + // When you have a Qt build with assertions turned on, proceeding here will abort the application + if (added_set.size() > 0) { + beginInsertRows(QModelIndex(), static_cast(m_resources.size()), + static_cast(m_resources.size() + added_set.size() - 1)); + + for (auto& added : added_set) { + auto res = new_resources[added]; + m_resources.append(res); + resolveResource(m_resources.last()); + } + + endInsertRows(); + } + } + + // update index + { + m_resources_index.clear(); + int idx = 0; + for (auto const& mod : qAsConst(m_resources)) { + m_resources_index[mod->internal_id()] = idx; + idx++; + } + } +} +Resource::Ptr ResourceFolderModel::find(QString id) +{ + auto iter = + std::find_if(m_resources.constBegin(), m_resources.constEnd(), [&](Resource::Ptr const& r) { return r->internal_id() == id; }); + if (iter == m_resources.constEnd()) + return nullptr; + return *iter; +} +QList ResourceFolderModel::allResources() +{ + QList result; + result.reserve(m_resources.size()); + for (const Resource ::Ptr& resource : m_resources) + result.append((resource.get())); + return result; +} +QList ResourceFolderModel::selectedResources(const QModelIndexList& indexes) +{ + QList result; + for (const QModelIndex& index : indexes) { + if (index.column() != 0) + continue; + result.append(&at(index.row())); + } + return result; +} diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index 956e6fea2..ee26a74bc 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -20,55 +20,35 @@ class QSortFilterProxyModel; /* A macro to define useful functions to handle Resource* -> T* more easily on derived classes */ -#define RESOURCE_HELPERS(T) \ - [[nodiscard]] T& operator[](int index) \ - { \ - return *static_cast(m_resources[index].get()); \ - } \ - [[nodiscard]] T& at(int index) \ - { \ - return *static_cast(m_resources[index].get()); \ - } \ - [[nodiscard]] const T& at(int index) const \ - { \ - return *static_cast(m_resources.at(index).get()); \ - } \ - [[nodiscard]] T& first() \ - { \ - return *static_cast(m_resources.first().get()); \ - } \ - [[nodiscard]] T& last() \ - { \ - return *static_cast(m_resources.last().get()); \ - } \ - [[nodiscard]] T* find(QString id) \ - { \ - auto iter = std::find_if(m_resources.constBegin(), m_resources.constEnd(), \ - [id](Resource::Ptr const& r) { return r->internal_id() == id; }); \ - if (iter == m_resources.constEnd()) \ - return nullptr; \ - return static_cast((*iter).get()); \ - } \ - QList selected##T##s(const QModelIndexList& indexes) \ - { \ - QList result; \ - for (const QModelIndex& index : indexes) { \ - if (index.column() != 0) \ - continue; \ - \ - result.append(&at(index.row())); \ - } \ - return result; \ - } \ - QList all##T##s() \ - { \ - QList result; \ - result.reserve(m_resources.size()); \ - \ - for (const Resource::Ptr& resource : m_resources) \ - result.append(static_cast(resource.get())); \ - \ - return result; \ +#define RESOURCE_HELPERS(T) \ + [[nodiscard]] T& at(int index) \ + { \ + return *static_cast(m_resources[index].get()); \ + } \ + [[nodiscard]] const T& at(int index) const \ + { \ + return *static_cast(m_resources.at(index).get()); \ + } \ + QList selected##T##s(const QModelIndexList& indexes) \ + { \ + QList result; \ + for (const QModelIndex& index : indexes) { \ + if (index.column() != 0) \ + continue; \ + \ + result.append(&at(index.row())); \ + } \ + return result; \ + } \ + QList all##T##s() \ + { \ + QList result; \ + result.reserve(m_resources.size()); \ + \ + for (const Resource::Ptr& resource : m_resources) \ + result.append(static_cast(resource.get())); \ + \ + return result; \ } /** A basic model for external resources. @@ -133,11 +113,17 @@ class ResourceFolderModel : public QAbstractListModel { virtual bool update(); /** Creates a new parse task, if needed, for 'res' and start it.*/ - virtual void resolveResource(Resource* res); + virtual void resolveResource(Resource::Ptr res); [[nodiscard]] qsizetype size() const { return m_resources.size(); } [[nodiscard]] bool empty() const { return size() == 0; } - RESOURCE_HELPERS(Resource) + + [[nodiscard]] Resource& at(int index) { return *m_resources[index].get(); } + [[nodiscard]] const Resource& at(int index) const { return *m_resources.at(index).get(); } + QList selectedResources(const QModelIndexList& indexes); + QList allResources(); + + [[nodiscard]] Resource::Ptr find(QString id); [[nodiscard]] QDir const& dir() const { return m_dir; } @@ -225,10 +211,8 @@ class ResourceFolderModel : public QAbstractListModel { * It uses set operations to find differences between the current state and the updated state, * to act only on those disparities. * - * The implementation is at the end of this header. */ - template - void applyUpdates(QSet& current_set, QSet& new_set, QMap& new_resources); + void applyUpdates(QSet& current_set, QSet& new_set, QMap& new_resources); protected slots: void directoryChanged(QString); @@ -281,102 +265,3 @@ class ResourceFolderModel : public QAbstractListModel { QMap m_active_parse_tasks; std::atomic m_next_resolution_ticket = 0; }; - -/* Template definition to avoid some code duplication */ -template -void ResourceFolderModel::applyUpdates(QSet& current_set, QSet& new_set, QMap& new_resources) -{ - // see if the kept resources changed in some way - { - QSet kept_set = current_set; - kept_set.intersect(new_set); - - for (auto const& kept : kept_set) { - auto row_it = m_resources_index.constFind(kept); - Q_ASSERT(row_it != m_resources_index.constEnd()); - auto row = row_it.value(); - - auto& new_resource = new_resources[kept]; - auto const& current_resource = m_resources.at(row); - - if (new_resource->dateTimeChanged() == current_resource->dateTimeChanged()) { - // no significant change, ignore... - continue; - } - - // If the resource is resolving, but something about it changed, we don't want to - // continue the resolving. - if (current_resource->isResolving()) { - auto ticket = current_resource->resolutionTicket(); - if (m_active_parse_tasks.contains(ticket)) { - auto task = (*m_active_parse_tasks.find(ticket)).get(); - task->abort(); - } - } - - m_resources[row].reset(new_resource); - resolveResource(m_resources.at(row).get()); - emit dataChanged(index(row, 0), index(row, columnCount(QModelIndex()) - 1)); - } - } - - // remove resources no longer present - { - QSet removed_set = current_set; - removed_set.subtract(new_set); - - QList removed_rows; - for (auto& removed : removed_set) - removed_rows.append(m_resources_index[removed]); - - std::sort(removed_rows.begin(), removed_rows.end(), std::greater()); - - for (auto& removed_index : removed_rows) { - auto removed_it = m_resources.begin() + removed_index; - - Q_ASSERT(removed_it != m_resources.end()); - - if ((*removed_it)->isResolving()) { - auto ticket = (*removed_it)->resolutionTicket(); - if (m_active_parse_tasks.contains(ticket)) { - auto task = (*m_active_parse_tasks.find(ticket)).get(); - task->abort(); - } - } - - beginRemoveRows(QModelIndex(), removed_index, removed_index); - m_resources.erase(removed_it); - endRemoveRows(); - } - } - - // add new resources to the end - { - QSet added_set = new_set; - added_set.subtract(current_set); - - // When you have a Qt build with assertions turned on, proceeding here will abort the application - if (added_set.size() > 0) { - beginInsertRows(QModelIndex(), static_cast(m_resources.size()), - static_cast(m_resources.size() + added_set.size() - 1)); - - for (auto& added : added_set) { - auto res = new_resources[added]; - m_resources.append(res); - resolveResource(m_resources.last().get()); - } - - endInsertRows(); - } - } - - // update index - { - m_resources_index.clear(); - int idx = 0; - for (auto const& mod : qAsConst(m_resources)) { - m_resources_index[mod->internal_id()] = idx; - idx++; - } - } -} diff --git a/launcher/minecraft/mod/ResourcePackFolderModel.cpp b/launcher/minecraft/mod/ResourcePackFolderModel.cpp index 9850bd22d..e106a2be9 100644 --- a/launcher/minecraft/mod/ResourcePackFolderModel.cpp +++ b/launcher/minecraft/mod/ResourcePackFolderModel.cpp @@ -45,7 +45,6 @@ #include "Version.h" #include "minecraft/mod/tasks/LocalResourcePackParseTask.h" -#include "minecraft/mod/tasks/ResourceFolderLoadTask.h" ResourcePackFolderModel::ResourcePackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) : ResourceFolderModel(dir, instance, is_indexed, create_dir, parent) @@ -55,7 +54,7 @@ ResourcePackFolderModel::ResourcePackFolderModel(const QDir& dir, BaseInstance* QStringList({ tr("Enable"), tr("Image"), tr("Name"), tr("Pack Format"), tr("Last Modified"), tr("Provider"), tr("Size") }); m_column_sort_keys = { SortType::ENABLED, SortType::NAME, SortType::NAME, SortType::PACK_FORMAT, SortType::DATE, SortType::PROVIDER, SortType::SIZE }; - m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, + m_column_resize_modes = { QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Stretch, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive, QHeaderView::Interactive }; m_columnsHideable = { false, true, false, true, true, true, true }; } diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index b9e0cfeef..33ed90be7 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -51,22 +51,15 @@ #include "Application.h" -#include "ui/GuiUtil.h" #include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/ResourceDownloadDialog.h" #include "ui/dialogs/ResourceUpdateDialog.h" -#include "DesktopServices.h" - #include "minecraft/PackProfile.h" #include "minecraft/VersionFilterData.h" #include "minecraft/mod/Mod.h" #include "minecraft/mod/ModFolderModel.h" -#include "modplatform/ModIndex.h" -#include "modplatform/ResourceAPI.h" - -#include "Version.h" #include "tasks/ConcurrentTask.h" #include "tasks/Task.h" #include "ui/dialogs/ProgressDialog.h" diff --git a/launcher/ui/pages/instance/ResourcePackPage.cpp b/launcher/ui/pages/instance/ResourcePackPage.cpp index 97d61058e..9cf809fc0 100644 --- a/launcher/ui/pages/instance/ResourcePackPage.cpp +++ b/launcher/ui/pages/instance/ResourcePackPage.cpp @@ -37,8 +37,6 @@ #include "ResourcePackPage.h" -#include "ResourceDownloadTask.h" - #include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/ProgressDialog.h" #include "ui/dialogs/ResourceDownloadDialog.h" From ce61ed2f86d313f63c999d012d768425ea3793c3 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 14 Nov 2024 13:17:52 +0200 Subject: [PATCH 364/616] Fix file remaingin open after program closure Signed-off-by: Trial97 --- launcher/InstanceCreationTask.cpp | 4 +- launcher/InstanceImportTask.cpp | 60 +++++++++++-------- launcher/InstanceImportTask.h | 7 +-- .../flame/FlameInstanceCreationTask.cpp | 1 + 4 files changed, 40 insertions(+), 32 deletions(-) diff --git a/launcher/InstanceCreationTask.cpp b/launcher/InstanceCreationTask.cpp index 3e7b3142f..bd3514798 100644 --- a/launcher/InstanceCreationTask.cpp +++ b/launcher/InstanceCreationTask.cpp @@ -61,6 +61,6 @@ void InstanceCreationTask::executeTask() return; } } - - emitSucceeded(); + if (!m_abort) + emitSucceeded(); } diff --git a/launcher/InstanceImportTask.cpp b/launcher/InstanceImportTask.cpp index 57cc77527..71630656d 100644 --- a/launcher/InstanceImportTask.cpp +++ b/launcher/InstanceImportTask.cpp @@ -69,9 +69,11 @@ bool InstanceImportTask::abort() if (!canAbort()) return false; - if (task) - task->abort(); - return Task::abort(); + bool wasAborted = false; + if (m_task) + wasAborted = m_task->abort(); + Task::abort(); + return wasAborted; } void InstanceImportTask::executeTask() @@ -104,7 +106,7 @@ void InstanceImportTask::downloadFromUrl() connect(filesNetJob.get(), &NetJob::stepProgress, this, &InstanceImportTask::propagateStepProgress); connect(filesNetJob.get(), &NetJob::failed, this, &InstanceImportTask::emitFailed); connect(filesNetJob.get(), &NetJob::aborted, this, &InstanceImportTask::emitAborted); - task.reset(filesNetJob); + m_task.reset(filesNetJob); filesNetJob->start(); } @@ -193,7 +195,7 @@ void InstanceImportTask::processZipPack() stepProgress(*progressStep); }); - connect(zipTask.get(), &Task::succeeded, this, &InstanceImportTask::extractFinished); + connect(zipTask.get(), &Task::succeeded, this, &InstanceImportTask::extractFinished, Qt::QueuedConnection); connect(zipTask.get(), &Task::aborted, this, &InstanceImportTask::emitAborted); connect(zipTask.get(), &Task::failed, this, [this, progressStep](QString reason) { progressStep->state = TaskStepState::Failed; @@ -210,12 +212,13 @@ void InstanceImportTask::processZipPack() progressStep->status = status; stepProgress(*progressStep); }); - task.reset(zipTask); + m_task.reset(zipTask); zipTask->start(); } void InstanceImportTask::extractFinished() { + setAbortable(false); QDir extractDir(m_stagingPath); qDebug() << "Fixing permissions for extracted pack files..."; @@ -289,8 +292,11 @@ void InstanceImportTask::processFlame() inst_creation_task->setGroup(m_instGroup); inst_creation_task->setConfirmUpdate(shouldConfirmUpdate()); - connect(inst_creation_task.get(), &Task::succeeded, this, [this, inst_creation_task] { - setOverride(inst_creation_task->shouldOverride(), inst_creation_task->originalInstanceID()); + auto weak = inst_creation_task.toWeakRef(); + connect(inst_creation_task.get(), &Task::succeeded, this, [this, weak] { + if (auto sp = weak.lock()) { + setOverride(sp->shouldOverride(), sp->originalInstanceID()); + } emitSucceeded(); }); connect(inst_creation_task.get(), &Task::failed, this, &InstanceImportTask::emitFailed); @@ -299,11 +305,12 @@ void InstanceImportTask::processFlame() connect(inst_creation_task.get(), &Task::status, this, &InstanceImportTask::setStatus); connect(inst_creation_task.get(), &Task::details, this, &InstanceImportTask::setDetails); - connect(this, &Task::aborted, inst_creation_task.get(), &InstanceCreationTask::abort); connect(inst_creation_task.get(), &Task::aborted, this, &Task::abort); connect(inst_creation_task.get(), &Task::abortStatusChanged, this, &Task::setAbortable); - inst_creation_task->start(); + m_task.reset(inst_creation_task); + setAbortable(true); + m_task->start(); } void InstanceImportTask::processTechnic() @@ -350,7 +357,7 @@ void InstanceImportTask::processMultiMC() void InstanceImportTask::processModrinth() { - ModrinthCreationTask* inst_creation_task = nullptr; + shared_qobject_ptr inst_creation_task = nullptr; if (!m_extra_info.isEmpty()) { auto pack_id_it = m_extra_info.constFind("pack_id"); Q_ASSERT(pack_id_it != m_extra_info.constEnd()); @@ -367,7 +374,7 @@ void InstanceImportTask::processModrinth() original_instance_id = original_instance_id_it.value(); inst_creation_task = - new ModrinthCreationTask(m_stagingPath, m_globalSettings, m_parent, pack_id, pack_version_id, original_instance_id); + makeShared(m_stagingPath, m_globalSettings, m_parent, pack_id, pack_version_id, original_instance_id); } else { QString pack_id; if (!m_sourceUrl.isEmpty()) { @@ -376,7 +383,7 @@ void InstanceImportTask::processModrinth() } // FIXME: Find a way to get the ID in directly imported ZIPs - inst_creation_task = new ModrinthCreationTask(m_stagingPath, m_globalSettings, m_parent, pack_id); + inst_creation_task = makeShared(m_stagingPath, m_globalSettings, m_parent, pack_id); } inst_creation_task->setName(*this); @@ -384,20 +391,23 @@ void InstanceImportTask::processModrinth() inst_creation_task->setGroup(m_instGroup); inst_creation_task->setConfirmUpdate(shouldConfirmUpdate()); - connect(inst_creation_task, &Task::succeeded, this, [this, inst_creation_task] { - setOverride(inst_creation_task->shouldOverride(), inst_creation_task->originalInstanceID()); + auto weak = inst_creation_task.toWeakRef(); + connect(inst_creation_task.get(), &Task::succeeded, this, [this, weak] { + if (auto sp = weak.lock()) { + setOverride(sp->shouldOverride(), sp->originalInstanceID()); + } emitSucceeded(); }); - connect(inst_creation_task, &Task::failed, this, &InstanceImportTask::emitFailed); - connect(inst_creation_task, &Task::progress, this, &InstanceImportTask::setProgress); - connect(inst_creation_task, &Task::stepProgress, this, &InstanceImportTask::propagateStepProgress); - connect(inst_creation_task, &Task::status, this, &InstanceImportTask::setStatus); - connect(inst_creation_task, &Task::details, this, &InstanceImportTask::setDetails); - connect(inst_creation_task, &Task::finished, inst_creation_task, &InstanceCreationTask::deleteLater); + connect(inst_creation_task.get(), &Task::failed, this, &InstanceImportTask::emitFailed); + connect(inst_creation_task.get(), &Task::progress, this, &InstanceImportTask::setProgress); + connect(inst_creation_task.get(), &Task::stepProgress, this, &InstanceImportTask::propagateStepProgress); + connect(inst_creation_task.get(), &Task::status, this, &InstanceImportTask::setStatus); + connect(inst_creation_task.get(), &Task::details, this, &InstanceImportTask::setDetails); - connect(this, &Task::aborted, inst_creation_task, &InstanceCreationTask::abort); - connect(inst_creation_task, &Task::aborted, this, &Task::abort); - connect(inst_creation_task, &Task::abortStatusChanged, this, &Task::setAbortable); + connect(inst_creation_task.get(), &Task::aborted, this, &Task::abort); + connect(inst_creation_task.get(), &Task::abortStatusChanged, this, &Task::setAbortable); - inst_creation_task->start(); + m_task.reset(inst_creation_task); + setAbortable(true); + m_task->start(); } diff --git a/launcher/InstanceImportTask.h b/launcher/InstanceImportTask.h index cf86af4ea..8884e0801 100644 --- a/launcher/InstanceImportTask.h +++ b/launcher/InstanceImportTask.h @@ -40,16 +40,13 @@ #include #include "InstanceTask.h" -#include -#include - class QuaZip; class InstanceImportTask : public InstanceTask { Q_OBJECT public: explicit InstanceImportTask(const QUrl& sourceUrl, QWidget* parent = nullptr, QMap&& extra_info = {}); - + virtual ~InstanceImportTask() = default; bool abort() override; protected: @@ -70,7 +67,7 @@ class InstanceImportTask : public InstanceTask { private: /* data */ QUrl m_sourceUrl; QString m_archivePath; - Task::Ptr task; + Task::Ptr m_task; enum class ModpackType { Unknown, MultiMC, diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 7c5e6165a..26088e5c5 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -444,6 +444,7 @@ bool FlameCreationTask::createInstance() setError(tr("Unable to resolve mod IDs:\n") + reason); loop.quit(); }); + connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::aborted, &loop, &QEventLoop::quit); connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::progress, this, &FlameCreationTask::setProgress); connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::status, this, &FlameCreationTask::setStatus); connect(m_mod_id_resolver.get(), &Flame::FileResolvingTask::stepProgress, this, &FlameCreationTask::propagateStepProgress); From fac521a312d1f6055b29d12da8b8773adaa24afb Mon Sep 17 00:00:00 2001 From: iTrooz Date: Wed, 13 Nov 2024 17:44:54 +0100 Subject: [PATCH 365/616] Add dummy UI button --- launcher/ui/pages/instance/ServersPage.cpp | 5 +++++ launcher/ui/pages/instance/ServersPage.h | 1 + launcher/ui/pages/instance/ServersPage.ui | 7 +++++++ 3 files changed, 13 insertions(+) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index d8035e73e..3e8c57f6f 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -734,4 +734,9 @@ void ServersPage::on_actionJoin_triggered() APPLICATION->launch(m_inst, true, false, std::make_shared(MinecraftTarget::parse(address, false))); } +void ServersPage::on_actionRefresh_triggered() +{ + qDebug() << "Action clicked"; +} + #include "ServersPage.moc" diff --git a/launcher/ui/pages/instance/ServersPage.h b/launcher/ui/pages/instance/ServersPage.h index a27d1d297..77710d6cc 100644 --- a/launcher/ui/pages/instance/ServersPage.h +++ b/launcher/ui/pages/instance/ServersPage.h @@ -85,6 +85,7 @@ class ServersPage : public QMainWindow, public BasePage { void on_actionMove_Up_triggered(); void on_actionMove_Down_triggered(); void on_actionJoin_triggered(); + void on_actionRefresh_triggered(); void runningStateChanged(bool running); diff --git a/launcher/ui/pages/instance/ServersPage.ui b/launcher/ui/pages/instance/ServersPage.ui index e8f79cf2e..d330835c8 100644 --- a/launcher/ui/pages/instance/ServersPage.ui +++ b/launcher/ui/pages/instance/ServersPage.ui @@ -149,6 +149,8 @@ + + @@ -175,6 +177,11 @@ Join + + + Refresh + + From 43a54cafef95a3b4c2181f4d3d1e2d3876b8e7f9 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 15 Nov 2024 19:52:06 +0100 Subject: [PATCH 366/616] add my classes --- launcher/ui/pages/instance/McClient.hpp | 169 ++++++++++++++++++++++ launcher/ui/pages/instance/McResolver.hpp | 85 +++++++++++ 2 files changed, 254 insertions(+) create mode 100644 launcher/ui/pages/instance/McClient.hpp create mode 100644 launcher/ui/pages/instance/McResolver.hpp diff --git a/launcher/ui/pages/instance/McClient.hpp b/launcher/ui/pages/instance/McClient.hpp new file mode 100644 index 000000000..611e0c143 --- /dev/null +++ b/launcher/ui/pages/instance/McClient.hpp @@ -0,0 +1,169 @@ +#include +#include +#include +#include + +#define SEGMENT_BITS 0x7F +#define CONTINUE_BIT 0x80 + +// Client for the Minecraft protocol +class McClient : public QObject { + Q_OBJECT + + QString domain; + QString ip; + short port; + QTcpSocket socket; + +public: + explicit McClient(QObject *parent, QString domain, QString ip, short port): QObject(parent), domain(domain), ip(ip), port(port) {} + + QJsonObject getStatusData() { + qDebug() << "Connecting to socket.."; + socket.connectToHost(ip, port); + + if (!socket.waitForConnected(3000)) { + throw std::runtime_error("Failed to connect to socket"); + } + qDebug() << "Connected to socket successfully"; + sendRequest(); + + if (!socket.waitForReadyRead(3000)) { + throw std::runtime_error("Socket didn't send anything to read"); + } + return readResponse(); + } + + int getOnlinePlayers() { + auto status = getStatusData(); + return status.value("players").toObject().value("online").toInt(); + } + + void sendRequest() { + QByteArray data; + writeVarInt(data, 0x00); // packet ID + writeVarInt(data, 0x760); // protocol version + writeVarInt(data, domain.size()); // server address length + writeString(data, domain.toStdString()); // server address + writeFixedInt(data, port, 2); // server port + writeVarInt(data, 0x01); // next state + writePacketToSocket(data); // send handshake packet + + data.clear(); + + writeVarInt(data, 0x00); // packet ID + writePacketToSocket(data); // send status packet + } + + void readBytesExactFromSocket(QByteArray &resp, int bytesToRead) { + while (bytesToRead > 0) { + qDebug() << bytesToRead << " bytes left to read"; + if (!socket.waitForReadyRead()) { + throw std::runtime_error("Read timeout or error"); + } + + QByteArray chunk = socket.read(qMin(bytesToRead, socket.bytesAvailable())); + resp.append(chunk); + bytesToRead -= chunk.size(); + } + } + + QJsonObject readResponse() { + auto resp = socket.readAll(); + int length = readVarInt(resp); + + // finish ready response + readBytesExactFromSocket(resp, length-resp.size()); + + if (length != resp.size()) { + printf("Warning: Packet length doesn't match actual packet size (%d expected vs %d received)\n", length, resp.size()); + } + qDebug() << "Received response successfully"; + + int packetID = readVarInt(resp); + if (packetID != 0x00) { + throw std::runtime_error( + QString("Packet ID doesn't match expected value (0x00 vs 0x%1)") + .arg(packetID, 0, 16).toStdString() + ); + } + + int jsonLength = readVarInt(resp); + std::string json = resp.toStdString(); + + QJsonDocument doc = QJsonDocument::fromJson(QByteArray::fromStdString(json)); + return doc.object(); + } + + void close() { + socket.close(); + } + +private: + // From https://wiki.vg/Protocol#VarInt_and_VarLong + void writeVarInt(QByteArray &data, int value) { + while (true) { + if ((value & ~SEGMENT_BITS) == 0) { + data.append(value); + return; + } + + data.append((value & SEGMENT_BITS) | CONTINUE_BIT); + + // Note: >>> means that the sign bit is shifted with the rest of the number rather than being left alone + value >>= 7; + } + } + + // From https://wiki.vg/Protocol#VarInt_and_VarLong + int readVarInt(QByteArray &data) { + int value = 0; + int position = 0; + char currentByte; + + while (true) { + currentByte = readByte(data); + value |= (currentByte & SEGMENT_BITS) << position; + + if ((currentByte & CONTINUE_BIT) == 0) break; + + position += 7; + + if (position >= 32) throw std::runtime_error("VarInt is too big"); + } + + return value; + } + + char readByte(QByteArray &data) { + if (data.isEmpty()) { + throw std::runtime_error("No more bytes to read"); + } + + char byte = data.at(0); + data.remove(0, 1); + return byte; + } + + // write number with specified size in big endian format + void writeFixedInt(QByteArray &data, int value, int size) { + for (int i = size - 1; i >= 0; i--) { + data.append((value >> (i * 8)) & 0xFF); + } + } + + void writeString(QByteArray &data, std::string value) { + data.append(value); + } + + void writePacketToSocket(QByteArray &data) { + // we prefix the packet with its length + QByteArray dataWithSize; + writeVarInt(dataWithSize, data.size()); + dataWithSize.append(data); + + // write it to the socket + socket.write(dataWithSize); + socket.flush(); + } +}; diff --git a/launcher/ui/pages/instance/McResolver.hpp b/launcher/ui/pages/instance/McResolver.hpp new file mode 100644 index 000000000..29968f26b --- /dev/null +++ b/launcher/ui/pages/instance/McResolver.hpp @@ -0,0 +1,85 @@ +#include +#include +#include +#include + +// resolve the IP and port of a Minecraft server +class MCResolver : public QObject { + Q_OBJECT + + std::string constrDomain; + int constrPort; + +public: + explicit MCResolver(QObject *parent, std::string domain, int port): QObject(parent), constrDomain(domain), constrPort(port) {} + + void ping() { + pingWithDomainSRV(QString::fromStdString(constrDomain), constrPort); + } + +private: + + void pingWithDomainSRV(QString domain, int port) { + QDnsLookup *lookup = new QDnsLookup(this); + lookup->setName(QString("_minecraft._tcp.%1").arg(domain)); + lookup->setType(QDnsLookup::SRV); + + connect(lookup, &QDnsLookup::finished, this, [&, domain, port]() { + QDnsLookup *lookup = qobject_cast(sender()); + + lookup->deleteLater(); + + if (lookup->error() != QDnsLookup::NoError) { + printf("Warning: SRV record lookup failed (%v), trying A record lookup\n", lookup->errorString().toStdString()); + pingWithDomainA(domain, port); + return; + } + + auto records = lookup->serviceRecords(); + if (records.isEmpty()) { + printf("Warning: no SRV entries found for domain, trying A record lookup\n"); + pingWithDomainA(domain, port); + return; + } + + + const auto& firstRecord = records.at(0); + QString domain = firstRecord.target(); + int port = firstRecord.port(); + pingWithDomainA(domain, port); + }); + + lookup->lookup(); + } + + void pingWithDomainA(QString domain, int port) { + QHostInfo::lookupHost(domain, this, [&, port](const QHostInfo &hostInfo){ + if (hostInfo.error() != QHostInfo::NoError) { + emitFail("A record lookup failed"); + return; + } else { + auto records = hostInfo.addresses(); + if (records.isEmpty()) { + emitFail("No A entries found for domain"); + return; + } + + const auto& firstRecord = records.at(0); + emitSucceed(firstRecord.toString(), port); + } + }); + } + + void emitFail(std::string error) { + printf("Ping error: %s\n", error.c_str()); + emit fail(); + } + + void emitSucceed(QString ip, int port) { + emit succeed(ip, port); + } + +signals: + void succeed(QString ip, int port); + void fail(); +}; From ee35ac5afdb2a6409b7ad52fde38c411d112f064 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 15 Nov 2024 20:07:14 +0100 Subject: [PATCH 367/616] add method queryStatus() to servers and use it on click --- launcher/ui/pages/instance/McResolver.hpp | 6 ++-- launcher/ui/pages/instance/ServersPage.cpp | 42 +++++++++++++++++++--- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/launcher/ui/pages/instance/McResolver.hpp b/launcher/ui/pages/instance/McResolver.hpp index 29968f26b..49b1f23eb 100644 --- a/launcher/ui/pages/instance/McResolver.hpp +++ b/launcher/ui/pages/instance/McResolver.hpp @@ -7,14 +7,14 @@ class MCResolver : public QObject { Q_OBJECT - std::string constrDomain; + QString constrDomain; int constrPort; public: - explicit MCResolver(QObject *parent, std::string domain, int port): QObject(parent), constrDomain(domain), constrPort(port) {} + explicit MCResolver(QObject *parent, QString domain, int port): QObject(parent), constrDomain(domain), constrPort(port) {} void ping() { - pingWithDomainSRV(QString::fromStdString(constrDomain), constrPort); + pingWithDomainSRV(constrDomain, constrPort); } private: diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 3e8c57f6f..427e9c3e7 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -39,6 +39,9 @@ #include "ui/dialogs/CustomMessageBox.h" #include "ui_ServersPage.h" +#include "McClient.hpp" +#include "McResolver.hpp" + #include #include #include @@ -52,7 +55,7 @@ #include #include -static const int COLUMN_COUNT = 2; // 3 , TBD: latency and other nice things. +static const int COLUMN_COUNT = 3; // 3 , TBD: latency and other nice things. struct Server { // Types @@ -88,6 +91,29 @@ struct Server { } } + std::tuple splitAddress() { + auto parts = m_address.split(":"); + if (parts.size() == 1) { + return std::make_tuple(parts[0], 25565); + } else { + return std::make_tuple(parts[0], parts[1].toInt()); + } + } + + void queryStatus() { + auto [domain, port] = splitAddress(); + MCResolver resolver(nullptr, domain, port); + QObject::connect(&resolver, &MCResolver::succeed, [&](QString ip, int port) { + qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; + McClient client(nullptr, domain, ip, port); + int online = client.getOnlinePlayers(); + printf("Online players: %d\n", online); + + client.close(); + }); + resolver.ping(); + } + void serialize(nbt::tag_compound& server) { server.insert("name", m_name.trimmed().toUtf8().toStdString()); @@ -112,7 +138,6 @@ struct Server { bool m_checked = false; bool m_up = false; QString m_motd; // https://mctools.org/motd-creator - int m_ping = 0; int m_currentPlayers = 0; int m_maxPlayers = 0; }; @@ -296,7 +321,7 @@ class ServersModel : public QAbstractListModel { case 1: return tr("Address"); case 2: - return tr("Latency"); + return tr("Online"); } } @@ -345,7 +370,7 @@ class ServersModel : public QAbstractListModel { case 2: switch (role) { case Qt::DisplayRole: - return m_servers[row].m_ping; + return m_servers[row].m_currentPlayers; default: return QVariant(); } @@ -433,6 +458,14 @@ class ServersModel : public QAbstractListModel { } } + + void queryServersStatus() + { + for (auto& server : m_servers) { + server.queryStatus(); + } + } + public slots: void dirChanged(const QString& path) { @@ -737,6 +770,7 @@ void ServersPage::on_actionJoin_triggered() void ServersPage::on_actionRefresh_triggered() { qDebug() << "Action clicked"; + m_model->queryServersStatus(); } #include "ServersPage.moc" From 99ac11bc408b5102a7c9d6d0c003e854d5e7fdef Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 15 Nov 2024 20:26:10 +0100 Subject: [PATCH 368/616] add my classes to CMakeLists --- launcher/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 486aaff3e..4fdadba6f 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -918,7 +918,9 @@ SET(LAUNCHER_SOURCES ui/pages/instance/ServersPage.h ui/pages/instance/WorldListPage.cpp ui/pages/instance/WorldListPage.h - + ui/pages/instance/McClient.hpp + ui/pages/instance/McResolver.hpp + # GUI - global settings pages ui/pages/global/AccountListPage.cpp ui/pages/global/AccountListPage.h From 8fa1dff17dc4d7953fbf7f0961a33e751183b06b Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 15 Nov 2024 20:26:50 +0100 Subject: [PATCH 369/616] remove space --- launcher/ui/pages/instance/ServersPage.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 427e9c3e7..7591d2a9d 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -458,7 +458,6 @@ class ServersModel : public QAbstractListModel { } } - void queryServersStatus() { for (auto& server : m_servers) { From 2f70115be5555c7c9ad46765f61e6b1cc965e8b4 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 16 Nov 2024 22:06:53 +0100 Subject: [PATCH 370/616] add debug print --- launcher/ui/pages/instance/ServersPage.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 7591d2a9d..435e7f347 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -101,6 +101,7 @@ struct Server { } void queryStatus() { + qDebug() << "Querying status of " << m_address; auto [domain, port] = splitAddress(); MCResolver resolver(nullptr, domain, port); QObject::connect(&resolver, &MCResolver::succeed, [&](QString ip, int port) { From ea2a2349f8ebd353ac4ba4296f9514c3f8419c58 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 16 Nov 2024 22:24:45 +0100 Subject: [PATCH 371/616] make splitAddress() const --- launcher/ui/pages/instance/ServersPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 435e7f347..82f8c8453 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -91,7 +91,7 @@ struct Server { } } - std::tuple splitAddress() { + std::tuple splitAddress() const { auto parts = m_address.split(":"); if (parts.size() == 1) { return std::make_tuple(parts[0], 25565); From 87c9066a2b218aef5296ab8ad4dddfa483dcd9cb Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 16 Nov 2024 22:41:50 +0100 Subject: [PATCH 372/616] run the code in tasks --- launcher/ui/pages/instance/ServersPage.cpp | 48 ++++++++++++++-------- 1 file changed, 32 insertions(+), 16 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 82f8c8453..fa8d6c891 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -54,6 +54,7 @@ #include #include #include +#include static const int COLUMN_COUNT = 3; // 3 , TBD: latency and other nice things. @@ -100,21 +101,6 @@ struct Server { } } - void queryStatus() { - qDebug() << "Querying status of " << m_address; - auto [domain, port] = splitAddress(); - MCResolver resolver(nullptr, domain, port); - QObject::connect(&resolver, &MCResolver::succeed, [&](QString ip, int port) { - qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; - McClient client(nullptr, domain, ip, port); - int online = client.getOnlinePlayers(); - printf("Online players: %d\n", online); - - client.close(); - }); - resolver.ping(); - } - void serialize(nbt::tag_compound& server) { server.insert("name", m_name.trimmed().toUtf8().toStdString()); @@ -143,6 +129,33 @@ struct Server { int m_maxPlayers = 0; }; +class ServerPingTask : public Task { + Q_OBJECT + public: + explicit ServerPingTask(QObject* parent, const Server &server) : Task(parent), m_server(server) {} + ~ServerPingTask() override = default; + + + protected: + virtual void executeTask() override { + qDebug() << "Querying status of " << m_server.m_address; + auto [domain, port] = m_server.splitAddress(); + MCResolver resolver(nullptr, domain, port); + QObject::connect(&resolver, &MCResolver::succeed, [&](QString ip, int port) { + qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; + McClient client(nullptr, domain, ip, port); + int online = client.getOnlinePlayers(); + printf("Online players: %d\n", online); + + client.close(); + }); + resolver.ping(); + } + + private: + const Server &m_server; +}; + static std::unique_ptr parseServersDat(const QString& filename) { try { @@ -461,9 +474,12 @@ class ServersModel : public QAbstractListModel { void queryServersStatus() { + ConcurrentTask::Ptr job(new ConcurrentTask(this, "Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); for (auto& server : m_servers) { - server.queryStatus(); + ServerPingTask *task = new ServerPingTask(this, server); + job->addTask(Task::Ptr(task)); } + job->start(); } public slots: From fe28a051d533bd34681c6306deab5b93b13dc5e9 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 16 Nov 2024 23:37:20 +0100 Subject: [PATCH 373/616] make MCResolver a dynamic object so it doesnt get deleted before the callback See https://discord.com/channels/1031648380885147709/1031823065937629267/1307471566166167696 --- launcher/ui/pages/instance/ServersPage.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index fa8d6c891..100f92386 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -140,8 +140,9 @@ class ServerPingTask : public Task { virtual void executeTask() override { qDebug() << "Querying status of " << m_server.m_address; auto [domain, port] = m_server.splitAddress(); - MCResolver resolver(nullptr, domain, port); - QObject::connect(&resolver, &MCResolver::succeed, [&](QString ip, int port) { + MCResolver *resolver = new MCResolver(nullptr, domain, port); + QObject::connect(resolver, &MCResolver::succeed, [=](QString ip, int port) { + resolver->deleteLater(); qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; McClient client(nullptr, domain, ip, port); int online = client.getOnlinePlayers(); @@ -149,7 +150,7 @@ class ServerPingTask : public Task { client.close(); }); - resolver.ping(); + resolver->ping(); } private: From 0a379a05ff03b2c55fcc4342c84f90fff64bb9a9 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 16 Nov 2024 23:47:43 +0100 Subject: [PATCH 374/616] replace my printf calls with qDebug --- launcher/ui/pages/instance/McClient.hpp | 2 +- launcher/ui/pages/instance/McResolver.hpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.hpp b/launcher/ui/pages/instance/McClient.hpp index 611e0c143..4ebcf37be 100644 --- a/launcher/ui/pages/instance/McClient.hpp +++ b/launcher/ui/pages/instance/McClient.hpp @@ -76,7 +76,7 @@ public: readBytesExactFromSocket(resp, length-resp.size()); if (length != resp.size()) { - printf("Warning: Packet length doesn't match actual packet size (%d expected vs %d received)\n", length, resp.size()); + qDebug() << "Warning: Packet length doesn't match actual packet size (" << length << " expected vs " << resp.size() << " received)"; } qDebug() << "Received response successfully"; diff --git a/launcher/ui/pages/instance/McResolver.hpp b/launcher/ui/pages/instance/McResolver.hpp index 49b1f23eb..ea6f517ca 100644 --- a/launcher/ui/pages/instance/McResolver.hpp +++ b/launcher/ui/pages/instance/McResolver.hpp @@ -30,14 +30,14 @@ private: lookup->deleteLater(); if (lookup->error() != QDnsLookup::NoError) { - printf("Warning: SRV record lookup failed (%v), trying A record lookup\n", lookup->errorString().toStdString()); + qDebug() << "Warning: SRV record lookup failed (" << lookup->errorString().toStdString() << "), trying A record lookup"; pingWithDomainA(domain, port); return; } auto records = lookup->serviceRecords(); if (records.isEmpty()) { - printf("Warning: no SRV entries found for domain, trying A record lookup\n"); + qDebug() << "Warning: no SRV entries found for domain, trying A record lookup"; pingWithDomainA(domain, port); return; } @@ -71,7 +71,7 @@ private: } void emitFail(std::string error) { - printf("Ping error: %s\n", error.c_str()); + qDebug() << "Ping error:" << QString::fromStdString(error); emit fail(); } From 6a7678a6e9548501b84ed3a2d81a9cabe6955703 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sat, 16 Nov 2024 23:54:44 +0100 Subject: [PATCH 375/616] Actually show online players when clicking on the button --- launcher/ui/pages/instance/ServersPage.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 100f92386..a3c1ef702 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -132,7 +132,7 @@ struct Server { class ServerPingTask : public Task { Q_OBJECT public: - explicit ServerPingTask(QObject* parent, const Server &server) : Task(parent), m_server(server) {} + explicit ServerPingTask(QObject* parent, Server &server) : Task(parent), m_server(server) {} ~ServerPingTask() override = default; @@ -146,7 +146,7 @@ class ServerPingTask : public Task { qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; McClient client(nullptr, domain, ip, port); int online = client.getOnlinePlayers(); - printf("Online players: %d\n", online); + m_server.m_currentPlayers = online; client.close(); }); @@ -154,7 +154,7 @@ class ServerPingTask : public Task { } private: - const Server &m_server; + Server &m_server; }; static std::unique_ptr parseServersDat(const QString& filename) From cba7e2dc362238cbfa9bcc680d164c828cd39836 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 00:02:24 +0100 Subject: [PATCH 376/616] use std::optional<> to signify when there is no value --- launcher/ui/pages/instance/ServersPage.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index a3c1ef702..5ab97f6cb 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -125,7 +125,7 @@ struct Server { bool m_checked = false; bool m_up = false; QString m_motd; // https://mctools.org/motd-creator - int m_currentPlayers = 0; + std::optional m_currentPlayers; // nullopt if not calculated/calculating int m_maxPlayers = 0; }; @@ -146,6 +146,7 @@ class ServerPingTask : public Task { qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; McClient client(nullptr, domain, ip, port); int online = client.getOnlinePlayers(); + qDebug() << "Online players: " << online; m_server.m_currentPlayers = online; client.close(); @@ -385,7 +386,11 @@ class ServersModel : public QAbstractListModel { case 2: switch (role) { case Qt::DisplayRole: - return m_servers[row].m_currentPlayers; + if (m_servers[row].m_currentPlayers) { + return *m_servers[row].m_currentPlayers; + } else { + return "..."; + } default: return QVariant(); } From 8cf0c2029ccccf40cbf21fd122bea233732911bc Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 18:51:57 +0100 Subject: [PATCH 377/616] No need to close the socket, it is done automatically https://doc.qt.io/qt-6/qtcpsocket.html#dtor.QTcpSocket --- launcher/ui/pages/instance/McClient.hpp | 4 ---- launcher/ui/pages/instance/ServersPage.cpp | 2 -- 2 files changed, 6 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.hpp b/launcher/ui/pages/instance/McClient.hpp index 4ebcf37be..f85d7fd21 100644 --- a/launcher/ui/pages/instance/McClient.hpp +++ b/launcher/ui/pages/instance/McClient.hpp @@ -95,10 +95,6 @@ public: return doc.object(); } - void close() { - socket.close(); - } - private: // From https://wiki.vg/Protocol#VarInt_and_VarLong void writeVarInt(QByteArray &data, int value) { diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 5ab97f6cb..1a973580d 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -148,8 +148,6 @@ class ServerPingTask : public Task { int online = client.getOnlinePlayers(); qDebug() << "Online players: " << online; m_server.m_currentPlayers = online; - - client.close(); }); resolver->ping(); } From 0d830e56e9c888b860e03ee4a9e44239d67a4d4a Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 18:56:08 +0100 Subject: [PATCH 378/616] replace std::runtime_exception with PrismLauncher Exception + add try/catch --- launcher/ui/pages/instance/McClient.hpp | 16 +++++++++------- launcher/ui/pages/instance/ServersPage.cpp | 11 ++++++++--- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.hpp b/launcher/ui/pages/instance/McClient.hpp index f85d7fd21..992328504 100644 --- a/launcher/ui/pages/instance/McClient.hpp +++ b/launcher/ui/pages/instance/McClient.hpp @@ -3,6 +3,8 @@ #include #include +#include + #define SEGMENT_BITS 0x7F #define CONTINUE_BIT 0x80 @@ -23,13 +25,13 @@ public: socket.connectToHost(ip, port); if (!socket.waitForConnected(3000)) { - throw std::runtime_error("Failed to connect to socket"); + throw Exception("Failed to connect to socket"); } qDebug() << "Connected to socket successfully"; sendRequest(); if (!socket.waitForReadyRead(3000)) { - throw std::runtime_error("Socket didn't send anything to read"); + throw Exception("Socket didn't send anything to read"); } return readResponse(); } @@ -59,7 +61,7 @@ public: while (bytesToRead > 0) { qDebug() << bytesToRead << " bytes left to read"; if (!socket.waitForReadyRead()) { - throw std::runtime_error("Read timeout or error"); + throw Exception("Read timeout or error"); } QByteArray chunk = socket.read(qMin(bytesToRead, socket.bytesAvailable())); @@ -82,9 +84,9 @@ public: int packetID = readVarInt(resp); if (packetID != 0x00) { - throw std::runtime_error( + throw Exception( QString("Packet ID doesn't match expected value (0x00 vs 0x%1)") - .arg(packetID, 0, 16).toStdString() + .arg(packetID, 0, 16) ); } @@ -125,7 +127,7 @@ private: position += 7; - if (position >= 32) throw std::runtime_error("VarInt is too big"); + if (position >= 32) throw Exception("VarInt is too big"); } return value; @@ -133,7 +135,7 @@ private: char readByte(QByteArray &data) { if (data.isEmpty()) { - throw std::runtime_error("No more bytes to read"); + throw Exception("No more bytes to read"); } char byte = data.at(0); diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 1a973580d..5f3babcf2 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -145,9 +145,14 @@ class ServerPingTask : public Task { resolver->deleteLater(); qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; McClient client(nullptr, domain, ip, port); - int online = client.getOnlinePlayers(); - qDebug() << "Online players: " << online; - m_server.m_currentPlayers = online; + + try { + int online = client.getOnlinePlayers(); + qDebug() << "Online players: " << online; + m_server.m_currentPlayers = online; + } catch(const Exception& e) { + qDebug() << "Failed to get online players: " << e.cause(); + } }); resolver->ping(); } From b35cffb3477b997a4dc779696aeb0acb79880d51 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 19:00:57 +0100 Subject: [PATCH 379/616] fix warning about unused jsonLength --- launcher/ui/pages/instance/McClient.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/McClient.hpp b/launcher/ui/pages/instance/McClient.hpp index 992328504..f171ae674 100644 --- a/launcher/ui/pages/instance/McClient.hpp +++ b/launcher/ui/pages/instance/McClient.hpp @@ -90,7 +90,7 @@ public: ); } - int jsonLength = readVarInt(resp); + Q_UNUSED(readVarInt(resp)); // json length std::string json = resp.toStdString(); QJsonDocument doc = QJsonDocument::fromJson(QByteArray::fromStdString(json)); From 1f094b98039b4f8c79bc402246babd4f821116db Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 19:02:08 +0100 Subject: [PATCH 380/616] avoid translating back to stf string without reason --- launcher/ui/pages/instance/McClient.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.hpp b/launcher/ui/pages/instance/McClient.hpp index f171ae674..1dc88cc30 100644 --- a/launcher/ui/pages/instance/McClient.hpp +++ b/launcher/ui/pages/instance/McClient.hpp @@ -91,9 +91,9 @@ public: } Q_UNUSED(readVarInt(resp)); // json length - std::string json = resp.toStdString(); - QJsonDocument doc = QJsonDocument::fromJson(QByteArray::fromStdString(json)); + // 'resp' should now be the JSON string + QJsonDocument doc = QJsonDocument::fromJson(resp); return doc.object(); } From 2d06e0a11194a3a4c379ddd518b857c4c2b98f54 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 19:21:09 +0100 Subject: [PATCH 381/616] Fix after rebase --- launcher/ui/pages/instance/ServersPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 5f3babcf2..7ecf84ebf 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -483,7 +483,7 @@ class ServersModel : public QAbstractListModel { void queryServersStatus() { - ConcurrentTask::Ptr job(new ConcurrentTask(this, "Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); + ConcurrentTask::Ptr job(new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); for (auto& server : m_servers) { ServerPingTask *task = new ServerPingTask(this, server); job->addTask(Task::Ptr(task)); From c3543b104b5f13778677e2244ab93faf6850cb99 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 19:26:21 +0100 Subject: [PATCH 382/616] fix qDebug() call with string << append --- launcher/ui/pages/instance/McResolver.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/McResolver.hpp b/launcher/ui/pages/instance/McResolver.hpp index ea6f517ca..4bb767200 100644 --- a/launcher/ui/pages/instance/McResolver.hpp +++ b/launcher/ui/pages/instance/McResolver.hpp @@ -30,7 +30,7 @@ private: lookup->deleteLater(); if (lookup->error() != QDnsLookup::NoError) { - qDebug() << "Warning: SRV record lookup failed (" << lookup->errorString().toStdString() << "), trying A record lookup"; + qDebug() << QString("Warning: SRV record lookup failed (%1), trying A record lookup").arg(lookup->errorString()); pingWithDomainA(domain, port); return; } From 8b7040d416b46d8011b97b71505778026c2c5ece Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 19:37:15 +0100 Subject: [PATCH 383/616] use Qt5-compatible writeString() impl --- launcher/ui/pages/instance/McClient.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.hpp b/launcher/ui/pages/instance/McClient.hpp index 1dc88cc30..afbb64739 100644 --- a/launcher/ui/pages/instance/McClient.hpp +++ b/launcher/ui/pages/instance/McClient.hpp @@ -150,8 +150,8 @@ private: } } - void writeString(QByteArray &data, std::string value) { - data.append(value); + void writeString(QByteArray &data, const std::string &value) { + data.append(value.c_str()); } void writePacketToSocket(QByteArray &data) { From b8035ca0783ba42efbc7c11cf329c6f4372abbc5 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 19:50:52 +0100 Subject: [PATCH 384/616] refactor header and code into 2 files --- launcher/CMakeLists.txt | 2 + launcher/ui/pages/instance/McClient.cpp | 156 ++++++++++++++++++++++ launcher/ui/pages/instance/McClient.hpp | 155 ++------------------- launcher/ui/pages/instance/McResolver.cpp | 72 ++++++++++ launcher/ui/pages/instance/McResolver.hpp | 72 +--------- 5 files changed, 249 insertions(+), 208 deletions(-) create mode 100644 launcher/ui/pages/instance/McClient.cpp create mode 100644 launcher/ui/pages/instance/McResolver.cpp diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 4fdadba6f..e05b0fafc 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -918,7 +918,9 @@ SET(LAUNCHER_SOURCES ui/pages/instance/ServersPage.h ui/pages/instance/WorldListPage.cpp ui/pages/instance/WorldListPage.h + ui/pages/instance/McClient.cpp ui/pages/instance/McClient.hpp + ui/pages/instance/McResolver.cpp ui/pages/instance/McResolver.hpp # GUI - global settings pages diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp new file mode 100644 index 000000000..f49d4c8ad --- /dev/null +++ b/launcher/ui/pages/instance/McClient.cpp @@ -0,0 +1,156 @@ +#include +#include +#include +#include + +#include +#include "McClient.hpp" + +#define SEGMENT_BITS 0x7F +#define CONTINUE_BIT 0x80 + +McClient::McClient(QObject *parent, QString domain, QString ip, short port): QObject(parent), domain(domain), ip(ip), port(port) {} + +QJsonObject McClient::getStatusData() { + qDebug() << "Connecting to socket.."; + socket.connectToHost(ip, port); + + if (!socket.waitForConnected(3000)) { + throw Exception("Failed to connect to socket"); + } + qDebug() << "Connected to socket successfully"; + sendRequest(); + + if (!socket.waitForReadyRead(3000)) { + throw Exception("Socket didn't send anything to read"); + } + return readResponse(); +} + +int McClient::getOnlinePlayers() { + auto status = getStatusData(); + return status.value("players").toObject().value("online").toInt(); +} + +void McClient::sendRequest() { + QByteArray data; + writeVarInt(data, 0x00); // packet ID + writeVarInt(data, 0x760); // protocol version + writeVarInt(data, domain.size()); // server address length + writeString(data, domain.toStdString()); // server address + writeFixedInt(data, port, 2); // server port + writeVarInt(data, 0x01); // next state + writePacketToSocket(data); // send handshake packet + + data.clear(); + + writeVarInt(data, 0x00); // packet ID + writePacketToSocket(data); // send status packet +} + +void McClient::readBytesExactFromSocket(QByteArray &resp, int bytesToRead) { + while (bytesToRead > 0) { + qDebug() << bytesToRead << " bytes left to read"; + if (!socket.waitForReadyRead()) { + throw Exception("Read timeout or error"); + } + + QByteArray chunk = socket.read(qMin(bytesToRead, socket.bytesAvailable())); + resp.append(chunk); + bytesToRead -= chunk.size(); + } +} + +QJsonObject McClient::readResponse() { + auto resp = socket.readAll(); + int length = readVarInt(resp); + + // finish ready response + readBytesExactFromSocket(resp, length-resp.size()); + + if (length != resp.size()) { + qDebug() << "Warning: Packet length doesn't match actual packet size (" << length << " expected vs " << resp.size() << " received)"; + } + qDebug() << "Received response successfully"; + + int packetID = readVarInt(resp); + if (packetID != 0x00) { + throw Exception( + QString("Packet ID doesn't match expected value (0x00 vs 0x%1)") + .arg(packetID, 0, 16) + ); + } + + Q_UNUSED(readVarInt(resp)); // json length + + // 'resp' should now be the JSON string + QJsonDocument doc = QJsonDocument::fromJson(resp); + return doc.object(); +} + +// From https://wiki.vg/Protocol#VarInt_and_VarLong +void McClient::writeVarInt(QByteArray &data, int value) { + while (true) { + if ((value & ~SEGMENT_BITS) == 0) { + data.append(value); + return; + } + + data.append((value & SEGMENT_BITS) | CONTINUE_BIT); + + // Note: >>> means that the sign bit is shifted with the rest of the number rather than being left alone + value >>= 7; + } +} + +// From https://wiki.vg/Protocol#VarInt_and_VarLong +int McClient::readVarInt(QByteArray &data) { + int value = 0; + int position = 0; + char currentByte; + + while (true) { + currentByte = readByte(data); + value |= (currentByte & SEGMENT_BITS) << position; + + if ((currentByte & CONTINUE_BIT) == 0) break; + + position += 7; + + if (position >= 32) throw Exception("VarInt is too big"); + } + + return value; +} + +char McClient::readByte(QByteArray &data) { + if (data.isEmpty()) { + throw Exception("No more bytes to read"); + } + + char byte = data.at(0); + data.remove(0, 1); + return byte; +} + +// write number with specified size in big endian format +void McClient::writeFixedInt(QByteArray &data, int value, int size) { + for (int i = size - 1; i >= 0; i--) { + data.append((value >> (i * 8)) & 0xFF); + } +} + +void McClient::writeString(QByteArray &data, const std::string &value) { + data.append(value.c_str()); +} + +void McClient::writePacketToSocket(QByteArray &data) { + // we prefix the packet with its length + QByteArray dataWithSize; + writeVarInt(dataWithSize, data.size()); + dataWithSize.append(data); + + // write it to the socket + socket.write(dataWithSize); + socket.flush(); +} diff --git a/launcher/ui/pages/instance/McClient.hpp b/launcher/ui/pages/instance/McClient.hpp index afbb64739..e3da1fbcf 100644 --- a/launcher/ui/pages/instance/McClient.hpp +++ b/launcher/ui/pages/instance/McClient.hpp @@ -18,150 +18,19 @@ class McClient : public QObject { QTcpSocket socket; public: - explicit McClient(QObject *parent, QString domain, QString ip, short port): QObject(parent), domain(domain), ip(ip), port(port) {} - - QJsonObject getStatusData() { - qDebug() << "Connecting to socket.."; - socket.connectToHost(ip, port); - - if (!socket.waitForConnected(3000)) { - throw Exception("Failed to connect to socket"); - } - qDebug() << "Connected to socket successfully"; - sendRequest(); - - if (!socket.waitForReadyRead(3000)) { - throw Exception("Socket didn't send anything to read"); - } - return readResponse(); - } - - int getOnlinePlayers() { - auto status = getStatusData(); - return status.value("players").toObject().value("online").toInt(); - } - - void sendRequest() { - QByteArray data; - writeVarInt(data, 0x00); // packet ID - writeVarInt(data, 0x760); // protocol version - writeVarInt(data, domain.size()); // server address length - writeString(data, domain.toStdString()); // server address - writeFixedInt(data, port, 2); // server port - writeVarInt(data, 0x01); // next state - writePacketToSocket(data); // send handshake packet - - data.clear(); - - writeVarInt(data, 0x00); // packet ID - writePacketToSocket(data); // send status packet - } - - void readBytesExactFromSocket(QByteArray &resp, int bytesToRead) { - while (bytesToRead > 0) { - qDebug() << bytesToRead << " bytes left to read"; - if (!socket.waitForReadyRead()) { - throw Exception("Read timeout or error"); - } - - QByteArray chunk = socket.read(qMin(bytesToRead, socket.bytesAvailable())); - resp.append(chunk); - bytesToRead -= chunk.size(); - } - } - - QJsonObject readResponse() { - auto resp = socket.readAll(); - int length = readVarInt(resp); - - // finish ready response - readBytesExactFromSocket(resp, length-resp.size()); - - if (length != resp.size()) { - qDebug() << "Warning: Packet length doesn't match actual packet size (" << length << " expected vs " << resp.size() << " received)"; - } - qDebug() << "Received response successfully"; - - int packetID = readVarInt(resp); - if (packetID != 0x00) { - throw Exception( - QString("Packet ID doesn't match expected value (0x00 vs 0x%1)") - .arg(packetID, 0, 16) - ); - } - - Q_UNUSED(readVarInt(resp)); // json length - - // 'resp' should now be the JSON string - QJsonDocument doc = QJsonDocument::fromJson(resp); - return doc.object(); - } - + explicit McClient(QObject *parent, QString domain, QString ip, short port); + QJsonObject getStatusData(); + int getOnlinePlayers(); + void sendRequest(); + void readBytesExactFromSocket(QByteArray &resp, int bytesToRead); + QJsonObject readResponse(); private: - // From https://wiki.vg/Protocol#VarInt_and_VarLong - void writeVarInt(QByteArray &data, int value) { - while (true) { - if ((value & ~SEGMENT_BITS) == 0) { - data.append(value); - return; - } - - data.append((value & SEGMENT_BITS) | CONTINUE_BIT); - - // Note: >>> means that the sign bit is shifted with the rest of the number rather than being left alone - value >>= 7; - } - } - - // From https://wiki.vg/Protocol#VarInt_and_VarLong - int readVarInt(QByteArray &data) { - int value = 0; - int position = 0; - char currentByte; - - while (true) { - currentByte = readByte(data); - value |= (currentByte & SEGMENT_BITS) << position; - - if ((currentByte & CONTINUE_BIT) == 0) break; - - position += 7; - - if (position >= 32) throw Exception("VarInt is too big"); - } - - return value; - } - - char readByte(QByteArray &data) { - if (data.isEmpty()) { - throw Exception("No more bytes to read"); - } - - char byte = data.at(0); - data.remove(0, 1); - return byte; - } - + void writeVarInt(QByteArray &data, int value); + int readVarInt(QByteArray &data); + char readByte(QByteArray &data); // write number with specified size in big endian format - void writeFixedInt(QByteArray &data, int value, int size) { - for (int i = size - 1; i >= 0; i--) { - data.append((value >> (i * 8)) & 0xFF); - } - } + void writeFixedInt(QByteArray &data, int value, int size); + void writeString(QByteArray &data, const std::string &value); - void writeString(QByteArray &data, const std::string &value) { - data.append(value.c_str()); - } - - void writePacketToSocket(QByteArray &data) { - // we prefix the packet with its length - QByteArray dataWithSize; - writeVarInt(dataWithSize, data.size()); - dataWithSize.append(data); - - // write it to the socket - socket.write(dataWithSize); - socket.flush(); - } + void writePacketToSocket(QByteArray &data); }; diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp new file mode 100644 index 000000000..e7103e211 --- /dev/null +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -0,0 +1,72 @@ +#include +#include +#include +#include + +#include "McResolver.hpp" + +MCResolver::MCResolver(QObject *parent, QString domain, int port): QObject(parent), constrDomain(domain), constrPort(port) {} + +void MCResolver::ping() { + pingWithDomainSRV(constrDomain, constrPort); +} + +void MCResolver::pingWithDomainSRV(QString domain, int port) { + QDnsLookup *lookup = new QDnsLookup(this); + lookup->setName(QString("_minecraft._tcp.%1").arg(domain)); + lookup->setType(QDnsLookup::SRV); + + connect(lookup, &QDnsLookup::finished, this, [&, domain, port]() { + QDnsLookup *lookup = qobject_cast(sender()); + + lookup->deleteLater(); + + if (lookup->error() != QDnsLookup::NoError) { + qDebug() << QString("Warning: SRV record lookup failed (%1), trying A record lookup").arg(lookup->errorString()); + pingWithDomainA(domain, port); + return; + } + + auto records = lookup->serviceRecords(); + if (records.isEmpty()) { + qDebug() << "Warning: no SRV entries found for domain, trying A record lookup"; + pingWithDomainA(domain, port); + return; + } + + + const auto& firstRecord = records.at(0); + QString domain = firstRecord.target(); + int port = firstRecord.port(); + pingWithDomainA(domain, port); + }); + + lookup->lookup(); +} + +void MCResolver::pingWithDomainA(QString domain, int port) { + QHostInfo::lookupHost(domain, this, [&, port](const QHostInfo &hostInfo){ + if (hostInfo.error() != QHostInfo::NoError) { + emitFail("A record lookup failed"); + return; + } else { + auto records = hostInfo.addresses(); + if (records.isEmpty()) { + emitFail("No A entries found for domain"); + return; + } + + const auto& firstRecord = records.at(0); + emitSucceed(firstRecord.toString(), port); + } + }); +} + +void MCResolver::emitFail(std::string error) { + qDebug() << "Ping error:" << QString::fromStdString(error); + emit fail(); +} + +void MCResolver::emitSucceed(QString ip, int port) { + emit succeed(ip, port); +} diff --git a/launcher/ui/pages/instance/McResolver.hpp b/launcher/ui/pages/instance/McResolver.hpp index 4bb767200..e7800d539 100644 --- a/launcher/ui/pages/instance/McResolver.hpp +++ b/launcher/ui/pages/instance/McResolver.hpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -11,73 +12,14 @@ class MCResolver : public QObject { int constrPort; public: - explicit MCResolver(QObject *parent, QString domain, int port): QObject(parent), constrDomain(domain), constrPort(port) {} - - void ping() { - pingWithDomainSRV(constrDomain, constrPort); - } + explicit MCResolver(QObject *parent, QString domain, int port); + void ping(); private: - - void pingWithDomainSRV(QString domain, int port) { - QDnsLookup *lookup = new QDnsLookup(this); - lookup->setName(QString("_minecraft._tcp.%1").arg(domain)); - lookup->setType(QDnsLookup::SRV); - - connect(lookup, &QDnsLookup::finished, this, [&, domain, port]() { - QDnsLookup *lookup = qobject_cast(sender()); - - lookup->deleteLater(); - - if (lookup->error() != QDnsLookup::NoError) { - qDebug() << QString("Warning: SRV record lookup failed (%1), trying A record lookup").arg(lookup->errorString()); - pingWithDomainA(domain, port); - return; - } - - auto records = lookup->serviceRecords(); - if (records.isEmpty()) { - qDebug() << "Warning: no SRV entries found for domain, trying A record lookup"; - pingWithDomainA(domain, port); - return; - } - - - const auto& firstRecord = records.at(0); - QString domain = firstRecord.target(); - int port = firstRecord.port(); - pingWithDomainA(domain, port); - }); - - lookup->lookup(); - } - - void pingWithDomainA(QString domain, int port) { - QHostInfo::lookupHost(domain, this, [&, port](const QHostInfo &hostInfo){ - if (hostInfo.error() != QHostInfo::NoError) { - emitFail("A record lookup failed"); - return; - } else { - auto records = hostInfo.addresses(); - if (records.isEmpty()) { - emitFail("No A entries found for domain"); - return; - } - - const auto& firstRecord = records.at(0); - emitSucceed(firstRecord.toString(), port); - } - }); - } - - void emitFail(std::string error) { - qDebug() << "Ping error:" << QString::fromStdString(error); - emit fail(); - } - - void emitSucceed(QString ip, int port) { - emit succeed(ip, port); - } + void pingWithDomainSRV(QString domain, int port); + void pingWithDomainA(QString domain, int port); + void emitFail(std::string error); + void emitSucceed(QString ip, int port); signals: void succeed(QString ip, int port); From 9d5727e36b22d2a2eeb17f6faf0bf5b2c01421fd Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 19:51:15 +0100 Subject: [PATCH 385/616] MCResolver -> McResolver --- launcher/ui/pages/instance/McResolver.cpp | 12 ++++++------ launcher/ui/pages/instance/McResolver.hpp | 4 ++-- launcher/ui/pages/instance/ServersPage.cpp | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp index e7103e211..20ebe1e8a 100644 --- a/launcher/ui/pages/instance/McResolver.cpp +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -5,13 +5,13 @@ #include "McResolver.hpp" -MCResolver::MCResolver(QObject *parent, QString domain, int port): QObject(parent), constrDomain(domain), constrPort(port) {} +McResolver::McResolver(QObject *parent, QString domain, int port): QObject(parent), constrDomain(domain), constrPort(port) {} -void MCResolver::ping() { +void McResolver::ping() { pingWithDomainSRV(constrDomain, constrPort); } -void MCResolver::pingWithDomainSRV(QString domain, int port) { +void McResolver::pingWithDomainSRV(QString domain, int port) { QDnsLookup *lookup = new QDnsLookup(this); lookup->setName(QString("_minecraft._tcp.%1").arg(domain)); lookup->setType(QDnsLookup::SRV); @@ -44,7 +44,7 @@ void MCResolver::pingWithDomainSRV(QString domain, int port) { lookup->lookup(); } -void MCResolver::pingWithDomainA(QString domain, int port) { +void McResolver::pingWithDomainA(QString domain, int port) { QHostInfo::lookupHost(domain, this, [&, port](const QHostInfo &hostInfo){ if (hostInfo.error() != QHostInfo::NoError) { emitFail("A record lookup failed"); @@ -62,11 +62,11 @@ void MCResolver::pingWithDomainA(QString domain, int port) { }); } -void MCResolver::emitFail(std::string error) { +void McResolver::emitFail(std::string error) { qDebug() << "Ping error:" << QString::fromStdString(error); emit fail(); } -void MCResolver::emitSucceed(QString ip, int port) { +void McResolver::emitSucceed(QString ip, int port) { emit succeed(ip, port); } diff --git a/launcher/ui/pages/instance/McResolver.hpp b/launcher/ui/pages/instance/McResolver.hpp index e7800d539..3f5b4e701 100644 --- a/launcher/ui/pages/instance/McResolver.hpp +++ b/launcher/ui/pages/instance/McResolver.hpp @@ -5,14 +5,14 @@ #include // resolve the IP and port of a Minecraft server -class MCResolver : public QObject { +class McResolver : public QObject { Q_OBJECT QString constrDomain; int constrPort; public: - explicit MCResolver(QObject *parent, QString domain, int port); + explicit McResolver(QObject *parent, QString domain, int port); void ping(); private: diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 7ecf84ebf..39fcaf8c2 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -140,8 +140,8 @@ class ServerPingTask : public Task { virtual void executeTask() override { qDebug() << "Querying status of " << m_server.m_address; auto [domain, port] = m_server.splitAddress(); - MCResolver *resolver = new MCResolver(nullptr, domain, port); - QObject::connect(resolver, &MCResolver::succeed, [=](QString ip, int port) { + McResolver *resolver = new McResolver(nullptr, domain, port); + QObject::connect(resolver, &McResolver::succeed, [=](QString ip, int port) { resolver->deleteLater(); qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; McClient client(nullptr, domain, ip, port); From 7cf24586c2a9ff8e5dd33a390f83b7f098266881 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 19:58:30 +0100 Subject: [PATCH 386/616] .hpp -> .h --- launcher/CMakeLists.txt | 4 ++-- launcher/ui/pages/instance/McClient.cpp | 2 +- launcher/ui/pages/instance/{McClient.hpp => McClient.h} | 0 launcher/ui/pages/instance/McResolver.cpp | 2 +- launcher/ui/pages/instance/{McResolver.hpp => McResolver.h} | 0 launcher/ui/pages/instance/ServersPage.cpp | 4 ++-- 6 files changed, 6 insertions(+), 6 deletions(-) rename launcher/ui/pages/instance/{McClient.hpp => McClient.h} (100%) rename launcher/ui/pages/instance/{McResolver.hpp => McResolver.h} (100%) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index e05b0fafc..2cfb63af3 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -919,9 +919,9 @@ SET(LAUNCHER_SOURCES ui/pages/instance/WorldListPage.cpp ui/pages/instance/WorldListPage.h ui/pages/instance/McClient.cpp - ui/pages/instance/McClient.hpp + ui/pages/instance/McClient.h ui/pages/instance/McResolver.cpp - ui/pages/instance/McResolver.hpp + ui/pages/instance/McResolver.h # GUI - global settings pages ui/pages/global/AccountListPage.cpp diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index f49d4c8ad..609864bbb 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -4,7 +4,7 @@ #include #include -#include "McClient.hpp" +#include "McClient.h" #define SEGMENT_BITS 0x7F #define CONTINUE_BIT 0x80 diff --git a/launcher/ui/pages/instance/McClient.hpp b/launcher/ui/pages/instance/McClient.h similarity index 100% rename from launcher/ui/pages/instance/McClient.hpp rename to launcher/ui/pages/instance/McClient.h diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp index 20ebe1e8a..880e3d5ef 100644 --- a/launcher/ui/pages/instance/McResolver.cpp +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -3,7 +3,7 @@ #include #include -#include "McResolver.hpp" +#include "McResolver.h" McResolver::McResolver(QObject *parent, QString domain, int port): QObject(parent), constrDomain(domain), constrPort(port) {} diff --git a/launcher/ui/pages/instance/McResolver.hpp b/launcher/ui/pages/instance/McResolver.h similarity index 100% rename from launcher/ui/pages/instance/McResolver.hpp rename to launcher/ui/pages/instance/McResolver.h diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 39fcaf8c2..0ea2caaca 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -39,8 +39,8 @@ #include "ui/dialogs/CustomMessageBox.h" #include "ui_ServersPage.h" -#include "McClient.hpp" -#include "McResolver.hpp" +#include "McClient.h" +#include "McResolver.h" #include #include From 7d04f0ee758cb3c0c9c4273de67424269d63507c Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 17 Nov 2024 20:06:08 +0100 Subject: [PATCH 387/616] remove useless code when reading response --- launcher/ui/pages/instance/McClient.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index 609864bbb..3259feed5 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -55,7 +55,7 @@ void McClient::readBytesExactFromSocket(QByteArray &resp, int bytesToRead) { throw Exception("Read timeout or error"); } - QByteArray chunk = socket.read(qMin(bytesToRead, socket.bytesAvailable())); + QByteArray chunk = socket.read(bytesToRead); resp.append(chunk); bytesToRead -= chunk.size(); } From abbebff400a697023f159c2f00087031a470b577 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Sun, 17 Nov 2024 20:35:24 +0100 Subject: [PATCH 388/616] Removed bug when renaming icon file in nested folder while application is running Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index 0edc97681..20a907ed3 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -147,22 +147,23 @@ QStringList IconList::getIconFilePaths() const return iconFiles; } -QString formatName(const QDir& iconsDir, const QFileInfo& file) +QString formatName(const QDir& iconsDir, const QFileInfo& iconFile) { - if (file.dir() == iconsDir) - return file.baseName(); + if (iconFile.dir() == iconsDir) + return iconFile.baseName(); constexpr auto delimiter = " » "; - QString relativePathWithoutExtension = iconsDir.relativeFilePath(file.dir().path()) + QDir::separator() + file.baseName(); + QString relativePathWithoutExtension = iconsDir.relativeFilePath(iconFile.dir().path()) + QDir::separator() + iconFile.baseName(); return relativePathWithoutExtension.replace(QDir::separator(), delimiter); } -QSet toStringSet(const QList& list) // Split into a separate function because the preprocessing impedes readability +/// Split into a separate function because the preprocessing impedes readability +QSet toStringSet(const QList& list) { #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) QSet set(list.begin(), list.end()); #else - auto set = list.toSet(); + QSet set = list.toSet(); #endif return set; } @@ -171,7 +172,8 @@ void IconList::directoryChanged(const QString& path) { QDir newDir(path); if (m_dir.absolutePath() != newDir.absolutePath()) { - m_dir.setPath(path); + if (!path.startsWith(m_dir.absolutePath())) + m_dir.setPath(path); m_dir.refresh(); if (is_watching) stopWatching(); @@ -192,9 +194,9 @@ void IconList::directoryChanged(const QString& path) QSet toRemove = currentSet - newSet; QSet toAdd = newSet - currentSet; - for (const auto& remove : toRemove) { - qDebug() << "Removing " << remove; - QFileInfo removedFile(remove); + for (const QString& removedPath : toRemove) { + qDebug() << "Removing icon " << removedPath; + QFileInfo removedFile(removedPath); QString key = m_dir.relativeFilePath(removedFile.absoluteFilePath()); int idx = getIconIndex(key); @@ -209,19 +211,19 @@ void IconList::directoryChanged(const QString& path) } else { dataChanged(index(idx), index(idx)); } - m_watcher->removePath(remove); + m_watcher->removePath(removedPath); emit iconUpdated(key); } - for (const auto& add : toAdd) { - qDebug() << "Adding " << add; + for (const QString& addedPath : toAdd) { + qDebug() << "Adding icon " << addedPath; - QFileInfo addfile(add); + QFileInfo addfile(addedPath); QString key = m_dir.relativeFilePath(addfile.absoluteFilePath()); QString name = formatName(m_dir, addfile); if (addIcon(key, name, addfile.filePath(), IconType::FileBased)) { - m_watcher->addPath(add); + m_watcher->addPath(addedPath); emit iconUpdated(key); } } @@ -231,7 +233,7 @@ void IconList::directoryChanged(const QString& path) void IconList::fileChanged(const QString& path) { - qDebug() << "Checking " << path; + qDebug() << "Checking icon " << path; QFileInfo checkfile(path); if (!checkfile.exists()) return; From e74592fa0968dce50e4bdc4cd6b06d0b3de06eca Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Sun, 17 Nov 2024 20:43:09 +0100 Subject: [PATCH 389/616] Code style conventions (camelCase, m_ prefix) Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 84 ++++++++++++++++++------------------- launcher/icons/IconList.h | 6 +-- 2 files changed, 45 insertions(+), 45 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index 20a907ed3..9cfab903a 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -53,10 +53,10 @@ IconList::IconList(const QStringList& builtinPaths, const QString& path, QObject // add builtin icons for (const auto& builtinPath : builtinPaths) { - QDir instance_icons(builtinPath); - auto file_info_list = instance_icons.entryInfoList(QDir::Files, QDir::Name); - for (const auto& file_info : file_info_list) { - builtinNames.insert(file_info.baseName()); + QDir instanceIcons(builtinPath); + auto fileInfoList = instanceIcons.entryInfoList(QDir::Files, QDir::Name); + for (const auto& fileInfo : fileInfoList) { + builtinNames.insert(fileInfo.baseName()); } } for (const auto& builtinName : builtinNames) { @@ -64,7 +64,7 @@ IconList::IconList(const QStringList& builtinPaths, const QString& path, QObject } m_watcher.reset(new QFileSystemWatcher()); - is_watching = false; + m_is_watching = false; connect(m_watcher.get(), &QFileSystemWatcher::directoryChanged, this, &IconList::directoryChanged); connect(m_watcher.get(), &QFileSystemWatcher::fileChanged, this, &IconList::fileChanged); @@ -77,7 +77,7 @@ IconList::IconList(const QStringList& builtinPaths, const QString& path, QObject void IconList::sortIconList() { qDebug() << "Sorting icon list..."; - std::sort(icons.begin(), icons.end(), [](const MMCIcon& a, const MMCIcon& b) { + std::sort(m_icons.begin(), m_icons.end(), [](const MMCIcon& a, const MMCIcon& b) { bool aIsSubdir = a.m_key.contains(QDir::separator()); bool bIsSubdir = b.m_key.contains(QDir::separator()); if (aIsSubdir != bIsSubdir) { @@ -175,7 +175,7 @@ void IconList::directoryChanged(const QString& path) if (!path.startsWith(m_dir.absolutePath())) m_dir.setPath(path); m_dir.refresh(); - if (is_watching) + if (m_is_watching) stopWatching(); startWatching(); } @@ -186,7 +186,7 @@ void IconList::directoryChanged(const QString& path) const QStringList newFileNamesList = getIconFilePaths(); const QSet newSet = toStringSet(newFileNamesList); QSet currentSet; - for (const MMCIcon& it : icons) { + for (const MMCIcon& it : m_icons) { if (!it.has(IconType::FileBased)) continue; currentSet.insert(it.m_images[IconType::FileBased].filename); @@ -202,10 +202,10 @@ void IconList::directoryChanged(const QString& path) int idx = getIconIndex(key); if (idx == -1) continue; - icons[idx].remove(FileBased); - if (icons[idx].type() == ToBeDeleted) { + m_icons[idx].remove(FileBased); + if (m_icons[idx].type() == ToBeDeleted) { beginRemoveRows(QModelIndex(), idx, idx); - icons.remove(idx); + m_icons.remove(idx); reindex(); endRemoveRows(); } else { @@ -245,7 +245,7 @@ void IconList::fileChanged(const QString& path) if (icon.availableSizes().empty()) return; - icons[idx].m_images[IconType::FileBased].icon = icon; + m_icons[idx].m_images[IconType::FileBased].icon = icon; dataChanged(index(idx), index(idx)); emit iconUpdated(key); } @@ -262,8 +262,8 @@ void IconList::startWatching() { auto abs_path = m_dir.absolutePath(); FS::ensureFolderPathExists(abs_path); - is_watching = addPathRecursively(abs_path); - if (is_watching) { + m_is_watching = addPathRecursively(abs_path); + if (m_is_watching) { qDebug() << "Started watching " << abs_path; } else { qDebug() << "Failed to start watching " << abs_path; @@ -274,7 +274,7 @@ void IconList::stopWatching() { m_watcher->removePaths(m_watcher->files()); m_watcher->removePaths(m_watcher->directories()); - is_watching = false; + m_is_watching = false; } QStringList IconList::mimeTypes() const @@ -329,16 +329,16 @@ QVariant IconList::data(const QModelIndex& index, int role) const int row = index.row(); - if (row < 0 || row >= icons.size()) + if (row < 0 || row >= m_icons.size()) return {}; switch (role) { case Qt::DecorationRole: - return icons[row].icon(); + return m_icons[row].icon(); case Qt::DisplayRole: - return icons[row].name(); + return m_icons[row].name(); case Qt::UserRole: - return icons[row].m_key; + return m_icons[row].m_key; default: return {}; } @@ -346,7 +346,7 @@ QVariant IconList::data(const QModelIndex& index, int role) const int IconList::rowCount(const QModelIndex& parent) const { - return parent.isValid() ? 0 : icons.size(); + return parent.isValid() ? 0 : m_icons.size(); } void IconList::installIcons(const QStringList& iconFiles) @@ -380,7 +380,7 @@ const MMCIcon* IconList::icon(const QString& key) const int iconIdx = getIconIndex(key); if (iconIdx == -1) return nullptr; - return &icons[iconIdx]; + return &m_icons[iconIdx]; } bool IconList::deleteIcon(const QString& key) @@ -395,22 +395,22 @@ bool IconList::trashIcon(const QString& key) bool IconList::addThemeIcon(const QString& key) { - auto iter = name_index.find(key); - if (iter != name_index.end()) { - auto& oldOne = icons[*iter]; + auto iter = m_name_index.find(key); + if (iter != m_name_index.end()) { + auto& oldOne = m_icons[*iter]; oldOne.replace(Builtin, key); dataChanged(index(*iter), index(*iter)); return true; } // add a new icon - beginInsertRows(QModelIndex(), icons.size(), icons.size()); + beginInsertRows(QModelIndex(), m_icons.size(), m_icons.size()); { MMCIcon mmc_icon; mmc_icon.m_name = key; mmc_icon.m_key = key; mmc_icon.replace(Builtin, key); - icons.push_back(mmc_icon); - name_index[key] = icons.size() - 1; + m_icons.push_back(mmc_icon); + m_name_index[key] = m_icons.size() - 1; } endInsertRows(); return true; @@ -422,22 +422,22 @@ bool IconList::addIcon(const QString& key, const QString& name, const QString& p QIcon icon(path); if (icon.isNull()) return false; - auto iter = name_index.find(key); - if (iter != name_index.end()) { - auto& oldOne = icons[*iter]; + auto iter = m_name_index.find(key); + if (iter != m_name_index.end()) { + auto& oldOne = m_icons[*iter]; oldOne.replace(type, icon, path); dataChanged(index(*iter), index(*iter)); return true; } // add a new icon - beginInsertRows(QModelIndex(), icons.size(), icons.size()); + beginInsertRows(QModelIndex(), m_icons.size(), m_icons.size()); { MMCIcon mmc_icon; mmc_icon.m_name = name; mmc_icon.m_key = key; mmc_icon.replace(type, icon, path); - icons.push_back(mmc_icon); - name_index[key] = icons.size() - 1; + m_icons.push_back(mmc_icon); + m_name_index[key] = m_icons.size() - 1; } endInsertRows(); return true; @@ -452,10 +452,10 @@ void IconList::saveIcon(const QString& key, const QString& path, const char* for void IconList::reindex() { - name_index.clear(); - for (int i = 0; i < icons.size(); i++) { - name_index[icons[i].m_key] = i; - emit iconUpdated(icons[i].m_key); // prevents incorrect indices with proxy model + m_name_index.clear(); + for (int i = 0; i < m_icons.size(); i++) { + m_name_index[m_icons[i].m_key] = i; + emit iconUpdated(m_icons[i].m_key); // prevents incorrect indices with proxy model } } @@ -464,20 +464,20 @@ QIcon IconList::getIcon(const QString& key) const int iconIndex = getIconIndex(key); if (iconIndex != -1) - return icons[iconIndex].icon(); + return m_icons[iconIndex].icon(); // Fallback for icons that don't exist.b iconIndex = getIconIndex("grass"); if (iconIndex != -1) - return icons[iconIndex].icon(); + return m_icons[iconIndex].icon(); return {}; } int IconList::getIconIndex(const QString& key) const { - auto iter = name_index.find(key == "default" ? "grass" : key); - if (iter != name_index.end()) + auto iter = m_name_index.find(key == "default" ? "grass" : key); + if (iter != m_name_index.end()) return *iter; return -1; @@ -491,7 +491,7 @@ QString IconList::getDirectory() const /// Returns the directory of the icon with the given key or the default directory if it's a builtin icon. QString IconList::iconDirectory(const QString& key) const { - for (const auto& mmcIcon : icons) { + for (const auto& mmcIcon : m_icons) { if (mmcIcon.m_key == key && mmcIcon.has(IconType::FileBased)) { QFileInfo icon_file(mmcIcon.getFilePath()); return icon_file.dir().path(); diff --git a/launcher/icons/IconList.h b/launcher/icons/IconList.h index 6213b7da3..04c2738ef 100644 --- a/launcher/icons/IconList.h +++ b/launcher/icons/IconList.h @@ -105,8 +105,8 @@ class IconList : public QAbstractListModel { private: shared_qobject_ptr m_watcher; - bool is_watching; - QMap name_index; - QVector icons; + bool m_is_watching; + QMap m_name_index; + QVector m_icons; QDir m_dir; }; From 6ca18c62660baab20fe6a3e7fd7b6b05a837ce0d Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Mon, 18 Nov 2024 19:19:02 +0100 Subject: [PATCH 390/616] Refactoring Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 27 ++------------------------- launcher/icons/IconList.h | 1 - 2 files changed, 2 insertions(+), 26 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index 9cfab903a..eb047b130 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -108,28 +108,6 @@ bool IconList::addPathRecursively(const QString& path) return watching; } -void IconList::removePathRecursively(const QString& path) -{ - QFileInfo file_info(path); - if (file_info.isFile()) { - // Remove the icon belonging to the file - QString key = m_dir.relativeFilePath(file_info.absoluteFilePath()); - int idx = getIconIndex(key); - if (idx == -1) - return; - - } else if (file_info.isDir()) { - // Remove the directory itself - m_watcher->removePath(path); - - const QDir dir(path); - // Remove all files within the directory - for (const QFileInfo& file : dir.entryInfoList(QDir::Dirs | QDir::NoDotAndDotDot)) { - removePathRecursively(file.absoluteFilePath()); - } - } -} - QStringList IconList::getIconFilePaths() const { QStringList iconFiles{}; @@ -179,9 +157,8 @@ void IconList::directoryChanged(const QString& path) stopWatching(); startWatching(); } - if (!m_dir.exists()) - if (!FS::ensureFolderPathExists(m_dir.absolutePath())) - return; + if (!m_dir.exists() && !FS::ensureFolderPathExists(m_dir.absolutePath())) + return; m_dir.refresh(); const QStringList newFileNamesList = getIconFilePaths(); const QSet newSet = toStringSet(newFileNamesList); diff --git a/launcher/icons/IconList.h b/launcher/icons/IconList.h index 04c2738ef..ec6b6d60e 100644 --- a/launcher/icons/IconList.h +++ b/launcher/icons/IconList.h @@ -93,7 +93,6 @@ class IconList : public QAbstractListModel { void reindex(); void sortIconList(); bool addPathRecursively(const QString& path); - void removePathRecursively(const QString& path); QStringList getIconFilePaths() const; public slots: From 60fb922ba2ed56703e5d64626f015e57d5cb0de5 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 19 Nov 2024 08:42:50 +0100 Subject: [PATCH 391/616] remove QObject parent argument from ServerPingTask constructor --- launcher/ui/pages/instance/ServersPage.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 0ea2caaca..1d39ca7ee 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -132,7 +132,7 @@ struct Server { class ServerPingTask : public Task { Q_OBJECT public: - explicit ServerPingTask(QObject* parent, Server &server) : Task(parent), m_server(server) {} + explicit ServerPingTask(Server &server) : Task(), m_server(server) {} ~ServerPingTask() override = default; @@ -485,7 +485,7 @@ class ServersModel : public QAbstractListModel { { ConcurrentTask::Ptr job(new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); for (auto& server : m_servers) { - ServerPingTask *task = new ServerPingTask(this, server); + ServerPingTask *task = new ServerPingTask(server); job->addTask(Task::Ptr(task)); } job->start(); From a79a66c177194f1761f353e00bc53f1dc653eea3 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 19 Nov 2024 19:42:49 +0100 Subject: [PATCH 392/616] remove debug print --- launcher/ui/pages/instance/ServersPage.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 1d39ca7ee..4ccfd4bb8 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -794,7 +794,6 @@ void ServersPage::on_actionJoin_triggered() void ServersPage::on_actionRefresh_triggered() { - qDebug() << "Action clicked"; m_model->queryServersStatus(); } From 1fb0fe0171fa2db09b296a62d636bab1ea026009 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 19 Nov 2024 20:48:17 +0100 Subject: [PATCH 393/616] ping servers when opening Servers page --- launcher/ui/pages/instance/ServersPage.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 4ccfd4bb8..8f32cbc94 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -734,6 +734,9 @@ void ServersPage::openedImpl() m_wide_bar_setting = APPLICATION->settings()->getSetting(setting_name); ui->toolBar->setVisibilityState(m_wide_bar_setting->get().toByteArray()); + + // ping servers + m_model->queryServersStatus(); } void ServersPage::closedImpl() From 41db87c8cf02c41e1aae6a0b4a7794ef47f123cb Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 22 Nov 2024 22:26:01 +0000 Subject: [PATCH 394/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nix-filter': 'github:numtide/nix-filter/776e68c1d014c3adde193a18db9d738458cd2ba4?narHash=sha256-SCHiL%2B1f7q9TAnxpasriP6fMarWE5H43t25F5/9e28I%3D' (2024-10-29) → 'github:numtide/nix-filter/f7653272fd234696ae94229839a99b73c9ab7de0?narHash=sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms%3D' (2024-11-13) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/4aa36568d413aca0ea84a1684d2d46f55dbabad7?narHash=sha256-Zwl8YgTVJTEum%2BL%2B0zVAWvXAGbWAuXHax3KzuejaDyo%3D' (2024-11-05) → 'github:NixOS/nixpkgs/23e89b7da85c3640bbc2173fe04f4bd114342367?narHash=sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w%3D' (2024-11-19) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index e599acaef..ba9a56c33 100644 --- a/flake.lock +++ b/flake.lock @@ -34,11 +34,11 @@ }, "nix-filter": { "locked": { - "lastModified": 1730207686, - "narHash": "sha256-SCHiL+1f7q9TAnxpasriP6fMarWE5H43t25F5/9e28I=", + "lastModified": 1731533336, + "narHash": "sha256-oRam5PS1vcrr5UPgALW0eo1m/5/pls27Z/pabHNy2Ms=", "owner": "numtide", "repo": "nix-filter", - "rev": "776e68c1d014c3adde193a18db9d738458cd2ba4", + "rev": "f7653272fd234696ae94229839a99b73c9ab7de0", "type": "github" }, "original": { @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1730785428, - "narHash": "sha256-Zwl8YgTVJTEum+L+0zVAWvXAGbWAuXHax3KzuejaDyo=", + "lastModified": 1732014248, + "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "4aa36568d413aca0ea84a1684d2d46f55dbabad7", + "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", "type": "github" }, "original": { From fbbd64ddb7a9a2de75aa2508b34db27c7c6c0459 Mon Sep 17 00:00:00 2001 From: seth Date: Fri, 22 Nov 2024 17:32:52 -0500 Subject: [PATCH 395/616] chore(nix): sync with upstream nixpkgs Signed-off-by: seth --- nix/unwrapped.nix | 4 ++-- nix/wrapper.nix | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/nix/unwrapped.nix b/nix/unwrapped.nix index 1b14886ef..7ba20b68b 100644 --- a/nix/unwrapped.nix +++ b/nix/unwrapped.nix @@ -3,7 +3,7 @@ stdenv, cmake, cmark, - darwin, + apple-sdk_11, extra-cmake-modules, gamemode, ghc_filesystem, @@ -66,7 +66,7 @@ stdenv.mkDerivation { tomlplusplus zlib ] - ++ lib.optionals stdenv.hostPlatform.isDarwin [ darwin.apple_sdk.frameworks.Cocoa ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ apple-sdk_11 ] ++ lib.optional gamemodeSupport gamemode; hardeningEnable = lib.optionals stdenv.hostPlatform.isLinux [ "pie" ]; diff --git a/nix/wrapper.nix b/nix/wrapper.nix index ab9b7144b..03c1f0421 100644 --- a/nix/wrapper.nix +++ b/nix/wrapper.nix @@ -78,7 +78,7 @@ symlinkJoin { let runtimeLibs = [ - stdenv.cc.cc.lib + (lib.getLib stdenv.cc.cc) ## native versions glfw3-minecraft openal From 33ff3b4f361df1429bd6490d0714e7c7bf90f143 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Sat, 23 Nov 2024 18:10:33 +0100 Subject: [PATCH 396/616] Fix naming Signed-off-by: QazCetelic --- launcher/icons/IconList.cpp | 34 +++++++++++++++++----------------- launcher/icons/IconList.h | 4 ++-- 2 files changed, 19 insertions(+), 19 deletions(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index eb047b130..faeb3f2c7 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -64,7 +64,7 @@ IconList::IconList(const QStringList& builtinPaths, const QString& path, QObject } m_watcher.reset(new QFileSystemWatcher()); - m_is_watching = false; + m_isWatching = false; connect(m_watcher.get(), &QFileSystemWatcher::directoryChanged, this, &IconList::directoryChanged); connect(m_watcher.get(), &QFileSystemWatcher::fileChanged, this, &IconList::fileChanged); @@ -153,7 +153,7 @@ void IconList::directoryChanged(const QString& path) if (!path.startsWith(m_dir.absolutePath())) m_dir.setPath(path); m_dir.refresh(); - if (m_is_watching) + if (m_isWatching) stopWatching(); startWatching(); } @@ -239,8 +239,8 @@ void IconList::startWatching() { auto abs_path = m_dir.absolutePath(); FS::ensureFolderPathExists(abs_path); - m_is_watching = addPathRecursively(abs_path); - if (m_is_watching) { + m_isWatching = addPathRecursively(abs_path); + if (m_isWatching) { qDebug() << "Started watching " << abs_path; } else { qDebug() << "Failed to start watching " << abs_path; @@ -251,7 +251,7 @@ void IconList::stopWatching() { m_watcher->removePaths(m_watcher->files()); m_watcher->removePaths(m_watcher->directories()); - m_is_watching = false; + m_isWatching = false; } QStringList IconList::mimeTypes() const @@ -372,8 +372,8 @@ bool IconList::trashIcon(const QString& key) bool IconList::addThemeIcon(const QString& key) { - auto iter = m_name_index.find(key); - if (iter != m_name_index.end()) { + auto iter = m_nameIndex.find(key); + if (iter != m_nameIndex.end()) { auto& oldOne = m_icons[*iter]; oldOne.replace(Builtin, key); dataChanged(index(*iter), index(*iter)); @@ -387,7 +387,7 @@ bool IconList::addThemeIcon(const QString& key) mmc_icon.m_key = key; mmc_icon.replace(Builtin, key); m_icons.push_back(mmc_icon); - m_name_index[key] = m_icons.size() - 1; + m_nameIndex[key] = m_icons.size() - 1; } endInsertRows(); return true; @@ -399,8 +399,8 @@ bool IconList::addIcon(const QString& key, const QString& name, const QString& p QIcon icon(path); if (icon.isNull()) return false; - auto iter = m_name_index.find(key); - if (iter != m_name_index.end()) { + auto iter = m_nameIndex.find(key); + if (iter != m_nameIndex.end()) { auto& oldOne = m_icons[*iter]; oldOne.replace(type, icon, path); dataChanged(index(*iter), index(*iter)); @@ -414,7 +414,7 @@ bool IconList::addIcon(const QString& key, const QString& name, const QString& p mmc_icon.m_key = key; mmc_icon.replace(type, icon, path); m_icons.push_back(mmc_icon); - m_name_index[key] = m_icons.size() - 1; + m_nameIndex[key] = m_icons.size() - 1; } endInsertRows(); return true; @@ -429,9 +429,9 @@ void IconList::saveIcon(const QString& key, const QString& path, const char* for void IconList::reindex() { - m_name_index.clear(); + m_nameIndex.clear(); for (int i = 0; i < m_icons.size(); i++) { - m_name_index[m_icons[i].m_key] = i; + m_nameIndex[m_icons[i].m_key] = i; emit iconUpdated(m_icons[i].m_key); // prevents incorrect indices with proxy model } } @@ -453,8 +453,8 @@ QIcon IconList::getIcon(const QString& key) const int IconList::getIconIndex(const QString& key) const { - auto iter = m_name_index.find(key == "default" ? "grass" : key); - if (iter != m_name_index.end()) + auto iter = m_nameIndex.find(key == "default" ? "grass" : key); + if (iter != m_nameIndex.end()) return *iter; return -1; @@ -470,8 +470,8 @@ QString IconList::iconDirectory(const QString& key) const { for (const auto& mmcIcon : m_icons) { if (mmcIcon.m_key == key && mmcIcon.has(IconType::FileBased)) { - QFileInfo icon_file(mmcIcon.getFilePath()); - return icon_file.dir().path(); + QFileInfo iconFile(mmcIcon.getFilePath()); + return iconFile.dir().path(); } } return getDirectory(); diff --git a/launcher/icons/IconList.h b/launcher/icons/IconList.h index ec6b6d60e..8936195c3 100644 --- a/launcher/icons/IconList.h +++ b/launcher/icons/IconList.h @@ -104,8 +104,8 @@ class IconList : public QAbstractListModel { private: shared_qobject_ptr m_watcher; - bool m_is_watching; - QMap m_name_index; + bool m_isWatching; + QMap m_nameIndex; QVector m_icons; QDir m_dir; }; From 2351531e842a63e303fb0f4db11fd8a9dee295d9 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Sat, 23 Nov 2024 18:15:07 +0100 Subject: [PATCH 397/616] Add naming checks to clang-tidy Signed-off-by: QazCetelic --- .clang-tidy | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 436dcf244..9ca89c10f 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,5 +1,23 @@ -Checks: - - modernize-use-using - - readability-avoid-const-params-in-decls +Checks: > + modernize-use-using + readability-avoid-const-params-in-decls + misc-unused-parameters, + readability-identifier-naming -SystemHeaders: false +# ^ Without unused-parameters the readability-identifier-naming check doesn't cause any warnings. + +CheckOptions: + - { key: readability-identifier-naming.ClassCase, value: PascalCase } + - { key: readability-identifier-naming.EnumCase, value: PascalCase } + - { key: readability-identifier-naming.FunctionCase, value: camelCase } + - { key: readability-identifier-naming.GlobalVariableCase, value: camelCase } + - { key: readability-identifier-naming.GlobalFunctionCase, value: camelCase } + - { key: readability-identifier-naming.GlobalConstantCase, value: SCREAMING_SNAKE_CASE } + - { key: readability-identifier-naming.MacroDefinitionCase, value: SCREAMING_SNAKE_CASE } + - { key: readability-identifier-naming.ClassMemberCase, value: camelCase } + - { key: readability-identifier-naming.PrivateMemberPrefix, value: m_ } + - { key: readability-identifier-naming.ProtectedMemberPrefix, value: m_ } + - { key: readability-identifier-naming.PrivateStaticMemberPrefix, value: s_ } + - { key: readability-identifier-naming.ProtectedStaticMemberPrefix, value: s_ } + - { key: readability-identifier-naming.PublicStaticConstantCase, value: SCREAMING_SNAKE_CASE } + - { key: readability-identifier-naming.EnumConstantCase, value: SCREAMING_SNAKE_CASE } \ No newline at end of file From 14454faac84998b46ae48dcdc0f48a42aea8c325 Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Sat, 23 Nov 2024 18:21:03 +0100 Subject: [PATCH 398/616] Use old list style Signed-off-by: QazCetelic --- .clang-tidy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 9ca89c10f..ef5166da4 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,8 +1,8 @@ -Checks: > - modernize-use-using - readability-avoid-const-params-in-decls - misc-unused-parameters, - readability-identifier-naming +Checks: + - modernize-use-using + - readability-avoid-const-params-in-decls + - misc-unused-parameters, + - readability-identifier-naming # ^ Without unused-parameters the readability-identifier-naming check doesn't cause any warnings. From d927c539b528c48e66b16ff0644a646e3dbaaabe Mon Sep 17 00:00:00 2001 From: QazCetelic Date: Sat, 23 Nov 2024 19:55:40 +0100 Subject: [PATCH 399/616] Update CONTRIBUTING.md conventions section Signed-off-by: QazCetelic --- CONTRIBUTING.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 713c9ba7c..5965f4d8e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ All files are formatted with `clang-format` using the configuration in `.clang-format`. Ensure it is run on changed files before committing! -We have no tool for enforcing names but please follow the following conventions for C++: +Please also follow the project's conventions for C++: - Class and type names should be formatted as `PascalCase`: `MyClass`. - Private or protected class data members should be formatted as `camelCase` prefixed with `m_`: `m_myCounter`. @@ -16,6 +16,8 @@ We have no tool for enforcing names but please follow the following conventions - `const` global variables, macros, and enum constants should be formatted as `SCREAMING_SNAKE_CASE`: `LIGHT_GRAY`. - Avoid inventing acronyms or abbreviations especially for a name of multiple words - like `tp` for `texturePack`. +Most of these rules are included in the `.clang-tidy` file, so you can run `clang-tidy` to check for any violations. + Here is what these conventions with the formatting configuration look like: ```c++ From 5cfb5a6f0db81e850ed3299759ffc131d049f289 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 24 Nov 2024 16:37:42 +0100 Subject: [PATCH 400/616] do not capture things implicitely in lambdas --- launcher/ui/pages/instance/ServersPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 8f32cbc94..459179c03 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -141,7 +141,7 @@ class ServerPingTask : public Task { qDebug() << "Querying status of " << m_server.m_address; auto [domain, port] = m_server.splitAddress(); McResolver *resolver = new McResolver(nullptr, domain, port); - QObject::connect(resolver, &McResolver::succeed, [=](QString ip, int port) { + QObject::connect(resolver, &McResolver::succeed, [this, resolver, domain](QString ip, int port) { resolver->deleteLater(); qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; McClient client(nullptr, domain, ip, port); From a09af619cee3265710097724f539d9457695658d Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 24 Nov 2024 20:29:07 +0200 Subject: [PATCH 401/616] Make FTB Import note italic to match others Signed-off-by: Trial97 --- launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.ui | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.ui b/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.ui index 18c604ca4..337c3e474 100644 --- a/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.ui +++ b/launcher/ui/pages/modplatform/import_ftb/ImportFTBPage.ui @@ -13,6 +13,11 @@ + + + true + + Note: If your FTB instances are not in the default location, select it using the button next to search. From b40a1973bfe590fb21b486419a8d223b2c6aae7f Mon Sep 17 00:00:00 2001 From: Kationor Date: Sun, 24 Nov 2024 19:30:59 +0100 Subject: [PATCH 402/616] Improve MANIFEST.MF parsing Previously, we would only properly parse LF-encoded manifests, and even those only if they used the recommended casing. This commit allows the parser to recognise CR and CRLF newlines, and also makes the name comparison case insensitive to align with the specification. (Though not completely: we still don't support multiline values) Signed-off-by: Kationor --- launcher/minecraft/mod/tasks/LocalModParseTask.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp index 12a962fb0..7d101668e 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include "FileSystem.h" @@ -15,6 +16,8 @@ #include "minecraft/mod/ModDetails.h" #include "settings/INIFile.h" +static QRegularExpression newlineRegex("\r\n|\n|\r"); + namespace ModUtils { // NEW format @@ -487,11 +490,11 @@ bool processZIP(Mod& mod, [[maybe_unused]] ProcessingLevel level) } // quick and dirty line-by-line parser - auto manifestLines = file.readAll().split('\n'); + auto manifestLines = QString(file.readAll()).split(newlineRegex); QString manifestVersion = ""; for (auto& line : manifestLines) { - if (QString(line).startsWith("Implementation-Version: ")) { - manifestVersion = QString(line).remove("Implementation-Version: "); + if (line.startsWith("Implementation-Version: ", Qt::CaseInsensitive)) { + manifestVersion = line.remove("Implementation-Version: ", Qt::CaseInsensitive); break; } } From 9ce5eaaa0c8e8ca74dce42e2d287e865905efdf4 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Sun, 24 Nov 2024 23:54:19 +0100 Subject: [PATCH 403/616] fix `job` being deleted before tasks are finished --- launcher/ui/pages/instance/ServersPage.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 459179c03..8193df4db 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -483,12 +483,16 @@ class ServersModel : public QAbstractListModel { void queryServersStatus() { - ConcurrentTask::Ptr job(new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); + auto *job = new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); for (auto& server : m_servers) { ServerPingTask *task = new ServerPingTask(server); job->addTask(Task::Ptr(task)); } job->start(); + + connect(job, &ConcurrentTask::finished, [job]() { + job->deleteLater(); + }); } public slots: From 0c6f78dee2c16820624e2f55e12d903392baad75 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Mon, 25 Nov 2024 00:10:17 +0100 Subject: [PATCH 404/616] communicate when ServerPingTask succeeds/fails --- launcher/ui/pages/instance/ServersPage.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 8193df4db..86e13b7eb 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -150,8 +150,10 @@ class ServerPingTask : public Task { int online = client.getOnlinePlayers(); qDebug() << "Online players: " << online; m_server.m_currentPlayers = online; + emitSucceeded(); } catch(const Exception& e) { qDebug() << "Failed to get online players: " << e.cause(); + emitFailed(e.cause()); } }); resolver->ping(); From 7c8d2c9b55526db21a9656a65adbe4b2cfabd892 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Mon, 25 Nov 2024 00:16:25 +0100 Subject: [PATCH 405/616] always delete McResolver object, even when it fails --- launcher/ui/pages/instance/McResolver.cpp | 2 ++ launcher/ui/pages/instance/McResolver.h | 1 + launcher/ui/pages/instance/ServersPage.cpp | 11 +++++++++-- 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp index 880e3d5ef..1159e5df2 100644 --- a/launcher/ui/pages/instance/McResolver.cpp +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -65,8 +65,10 @@ void McResolver::pingWithDomainA(QString domain, int port) { void McResolver::emitFail(std::string error) { qDebug() << "Ping error:" << QString::fromStdString(error); emit fail(); + emit finish(); } void McResolver::emitSucceed(QString ip, int port) { emit succeed(ip, port); + emit finish(); } diff --git a/launcher/ui/pages/instance/McResolver.h b/launcher/ui/pages/instance/McResolver.h index 3f5b4e701..5de4e8de4 100644 --- a/launcher/ui/pages/instance/McResolver.h +++ b/launcher/ui/pages/instance/McResolver.h @@ -24,4 +24,5 @@ private: signals: void succeed(QString ip, int port); void fail(); + void finish(); }; diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 86e13b7eb..2efaef187 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -139,13 +139,15 @@ class ServerPingTask : public Task { protected: virtual void executeTask() override { qDebug() << "Querying status of " << m_server.m_address; + + // Resolve the actual IP and port for the server auto [domain, port] = m_server.splitAddress(); McResolver *resolver = new McResolver(nullptr, domain, port); QObject::connect(resolver, &McResolver::succeed, [this, resolver, domain](QString ip, int port) { - resolver->deleteLater(); qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; - McClient client(nullptr, domain, ip, port); + // Now that we have the IP and port, query the server + McClient client(nullptr, domain, ip, port); try { int online = client.getOnlinePlayers(); qDebug() << "Online players: " << online; @@ -156,6 +158,11 @@ class ServerPingTask : public Task { emitFailed(e.cause()); } }); + + // Delete McResolver object when done + QObject::connect(resolver, &McResolver::finish, [resolver]() { + resolver->deleteLater(); + }); resolver->ping(); } From 24b9815763ce1f81b30c4d422ee0d2dc5660dede Mon Sep 17 00:00:00 2001 From: iTrooz Date: Mon, 25 Nov 2024 00:16:46 +0100 Subject: [PATCH 406/616] cleanup --- launcher/ui/pages/instance/ServersPage.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 2efaef187..62742076a 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -144,7 +144,7 @@ class ServerPingTask : public Task { auto [domain, port] = m_server.splitAddress(); McResolver *resolver = new McResolver(nullptr, domain, port); QObject::connect(resolver, &McResolver::succeed, [this, resolver, domain](QString ip, int port) { - qDebug() << "Resolved Addresse for" << domain << ": " << ip << ":" << port; + qDebug() << "Resolved Address for" << domain << ": " << ip << ":" << port; // Now that we have the IP and port, query the server McClient client(nullptr, domain, ip, port); @@ -494,8 +494,7 @@ class ServersModel : public QAbstractListModel { { auto *job = new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); for (auto& server : m_servers) { - ServerPingTask *task = new ServerPingTask(server); - job->addTask(Task::Ptr(task)); + job->addTask(Task::Ptr(new ServerPingTask(server))); } job->start(); From 7d2da194184180846362af7c5d8e3726db190b88 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Mon, 25 Nov 2024 01:09:44 +0100 Subject: [PATCH 407/616] make McResolver have the same signal name conventions as Task --- launcher/ui/pages/instance/McResolver.cpp | 8 ++++---- launcher/ui/pages/instance/McResolver.h | 6 +++--- launcher/ui/pages/instance/ServersPage.cpp | 4 ++-- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp index 1159e5df2..6dd37ff8b 100644 --- a/launcher/ui/pages/instance/McResolver.cpp +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -64,11 +64,11 @@ void McResolver::pingWithDomainA(QString domain, int port) { void McResolver::emitFail(std::string error) { qDebug() << "Ping error:" << QString::fromStdString(error); - emit fail(); - emit finish(); + emit failed(); + emit finished(); } void McResolver::emitSucceed(QString ip, int port) { - emit succeed(ip, port); - emit finish(); + emit succeeded(ip, port); + emit finished(); } diff --git a/launcher/ui/pages/instance/McResolver.h b/launcher/ui/pages/instance/McResolver.h index 5de4e8de4..4837b029e 100644 --- a/launcher/ui/pages/instance/McResolver.h +++ b/launcher/ui/pages/instance/McResolver.h @@ -22,7 +22,7 @@ private: void emitSucceed(QString ip, int port); signals: - void succeed(QString ip, int port); - void fail(); - void finish(); + void succeeded(QString ip, int port); + void failed(); + void finished(); }; diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 62742076a..875d63869 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -143,7 +143,7 @@ class ServerPingTask : public Task { // Resolve the actual IP and port for the server auto [domain, port] = m_server.splitAddress(); McResolver *resolver = new McResolver(nullptr, domain, port); - QObject::connect(resolver, &McResolver::succeed, [this, resolver, domain](QString ip, int port) { + QObject::connect(resolver, &McResolver::succeeded, [this, resolver, domain](QString ip, int port) { qDebug() << "Resolved Address for" << domain << ": " << ip << ":" << port; // Now that we have the IP and port, query the server @@ -160,7 +160,7 @@ class ServerPingTask : public Task { }); // Delete McResolver object when done - QObject::connect(resolver, &McResolver::finish, [resolver]() { + QObject::connect(resolver, &McResolver::finished, [resolver]() { resolver->deleteLater(); }); resolver->ping(); From 514ec99a035a8119f0ed9747c07dc55280ba5fd8 Mon Sep 17 00:00:00 2001 From: Jan200101 Date: Fri, 11 Oct 2024 08:55:59 +0200 Subject: [PATCH 408/616] Integrate switcheroo-control for discrete GPU support Signed-off-by: Jan200101 --- CMakeLists.txt | 4 ++ launcher/CMakeLists.txt | 5 +++ launcher/minecraft/MinecraftInstance.cpp | 54 +++++++++++++++++++++--- 3 files changed, 57 insertions(+), 6 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index cec384b33..4063ff503 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -299,6 +299,8 @@ include(QtVersionlessBackport) if(Launcher_QT_VERSION_MAJOR EQUAL 5) set(QT_VERSION_MAJOR 5) find_package(Qt5 REQUIRED COMPONENTS Core Widgets Concurrent Network Test Xml NetworkAuth) + find_package(Qt5 COMPONENTS DBus) + list(APPEND Launcher_QT_DBUS Qt5::DBus) if(NOT Launcher_FORCE_BUNDLED_LIBS) find_package(QuaZip-Qt5 1.3 QUIET) @@ -313,6 +315,8 @@ if(Launcher_QT_VERSION_MAJOR EQUAL 5) elseif(Launcher_QT_VERSION_MAJOR EQUAL 6) set(QT_VERSION_MAJOR 6) find_package(Qt6 REQUIRED COMPONENTS Core CoreTools Widgets Concurrent Network Test Xml Core5Compat NetworkAuth) + find_package(Qt6 COMPONENTS DBus) + list(APPEND Launcher_QT_DBUS Qt6::DBus) list(APPEND Launcher_QT_LIBS Qt6::Core5Compat) if(NOT Launcher_FORCE_BUNDLED_LIBS) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 486aaff3e..991f610dd 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1297,6 +1297,7 @@ target_link_libraries(Launcher_logic Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::NetworkAuth + ${Launcher_QT_DBUS} ${Launcher_QT_LIBS} ) target_link_libraries(Launcher_logic @@ -1305,6 +1306,10 @@ target_link_libraries(Launcher_logic LocalPeer Launcher_rainbow ) +if (TARGET ${Launcher_QT_DBUS}) + add_compile_definitions(WITH_QTDBUS) +endif() + if(APPLE) set(CMAKE_MACOSX_RPATH 1) set(CMAKE_INSTALL_RPATH "@loader_path/../Frameworks/") diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 007fb6cca..cb669a7f4 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -99,8 +99,48 @@ #include "MangoHud.h" #endif +#ifdef WITH_QTDBUS +#include +#endif + #define IBUS "@im=ibus" +static bool switcherooSetupGPU(QProcessEnvironment& env) +{ +#ifdef WITH_QTDBUS + if (!QDBusConnection::systemBus().isConnected()) + return false; + + QDBusInterface switcheroo("net.hadess.SwitcherooControl", "/net/hadess/SwitcherooControl", "org.freedesktop.DBus.Properties", + QDBusConnection::systemBus()); + + if (!switcheroo.isValid()) + return false; + + QDBusReply reply = + switcheroo.call(QStringLiteral("Get"), QStringLiteral("net.hadess.SwitcherooControl"), QStringLiteral("GPUs")); + if (!reply.isValid()) + return false; + + QDBusArgument arg = qvariant_cast(reply.value().variant()); + QList gpus; + arg >> gpus; + + for (const auto& gpu : gpus) { + QString name = qvariant_cast(gpu[QStringLiteral("Name")]); + bool defaultGpu = qvariant_cast(gpu[QStringLiteral("Default")]); + if (!defaultGpu) { + QStringList envList = qvariant_cast(gpu[QStringLiteral("Environment")]); + for (int i = 0; i + 1 < envList.size(); i += 2) { + env.insert(envList[i], envList[i + 1]); + } + return true; + } + } +#endif + return false; +} + // all of this because keeping things compatible with deprecated old settings // if either of the settings {a, b} is true, this also resolves to true class OrSetting : public Setting { @@ -617,12 +657,14 @@ QProcessEnvironment MinecraftInstance::createLaunchEnvironment() } if (settings()->get("UseDiscreteGpu").toBool()) { - // Open Source Drivers - env.insert("DRI_PRIME", "1"); - // Proprietary Nvidia Drivers - env.insert("__NV_PRIME_RENDER_OFFLOAD", "1"); - env.insert("__VK_LAYER_NV_optimus", "NVIDIA_only"); - env.insert("__GLX_VENDOR_LIBRARY_NAME", "nvidia"); + if (!switcherooSetupGPU(env)) { + // Open Source Drivers + env.insert("DRI_PRIME", "1"); + // Proprietary Nvidia Drivers + env.insert("__NV_PRIME_RENDER_OFFLOAD", "1"); + env.insert("__VK_LAYER_NV_optimus", "NVIDIA_only"); + env.insert("__GLX_VENDOR_LIBRARY_NAME", "nvidia"); + } } if (settings()->get("UseZink").toBool()) { From ca6d66970ea52ae95c064babf42f74a1d953717b Mon Sep 17 00:00:00 2001 From: iTrooz Date: Mon, 25 Nov 2024 23:49:03 +0100 Subject: [PATCH 409/616] add documentation for Task and ConcurrentTask --- launcher/tasks/ConcurrentTask.h | 5 +++++ launcher/tasks/Task.h | 19 +++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/launcher/tasks/ConcurrentTask.h b/launcher/tasks/ConcurrentTask.h index d988623b9..cc6256cf8 100644 --- a/launcher/tasks/ConcurrentTask.h +++ b/launcher/tasks/ConcurrentTask.h @@ -43,6 +43,10 @@ #include "tasks/Task.h" +/*! + * Runs a list of tasks concurrently (according to `max_concurrent` parameter). + * Behaviour is the same as regular Task (e.g. starts using start()) + */ class ConcurrentTask : public Task { Q_OBJECT public: @@ -59,6 +63,7 @@ class ConcurrentTask : public Task { inline auto isMultiStep() const -> bool override { return totalSize() > 1; } auto getStepProgress() const -> TaskStepProgressList override; + //! Adds a task to execute in this ConcurrentTask void addTask(Task::Ptr task); public slots: diff --git a/launcher/tasks/Task.h b/launcher/tasks/Task.h index e712700a1..3f4d8274e 100644 --- a/launcher/tasks/Task.h +++ b/launcher/tasks/Task.h @@ -79,6 +79,13 @@ Q_DECLARE_METATYPE(TaskStepProgress) using TaskStepProgressList = QList>; + +/*! + * Represents a task that has to be done. + * To create a task, you need to subclass this class, implement the executeTask() method and call + * emitSucceeded() or emitFailed() when the task is done. + * the caller needs to call start() to start the task. + */ class Task : public QObject, public QRunnable { Q_OBJECT public: @@ -130,9 +137,10 @@ class Task : public QObject, public QRunnable { signals: void started(); void progress(qint64 current, qint64 total); + //! called when a task has eother succeeded, aborted or failed. void finished(); - void succeeded(); - void aborted(); + void succeeded(); // called when a task has succeeded + void aborted(); // called when a task has been aborted by calling abort() void failed(QString reason); void status(QString status); void details(QString details); @@ -146,6 +154,7 @@ class Task : public QObject, public QRunnable { // QRunnable's interface void run() override { start(); } + // used by the task caller to start the task virtual void start(); virtual bool abort() { @@ -161,11 +170,17 @@ class Task : public QObject, public QRunnable { } protected: + /*! + * The task subclass must implement this method. This method is called to start to run the task. + * The task is not finished when this method returns. the subclass must manually call emitSucceeded() or emitFailed() instead. + */ virtual void executeTask() = 0; protected slots: + //! The Task subclass must call this method when the task has succeeded virtual void emitSucceeded(); virtual void emitAborted(); + //! The Task subclass must call this method when the task has failed virtual void emitFailed(QString reason = ""); virtual void propagateStepProgress(TaskStepProgress const& task_progress); From 520d6b0b42eae5b7fb5757cc07d96b53d2f6e7e8 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 26 Nov 2024 13:20:14 +0100 Subject: [PATCH 410/616] run socket code in thread --- launcher/ui/pages/instance/McClient.cpp | 17 +++++++++--- launcher/ui/pages/instance/McClient.h | 5 ++-- launcher/ui/pages/instance/ServersPage.cpp | 32 +++++++++++++++------- 3 files changed, 38 insertions(+), 16 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index 3259feed5..ac0c62242 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -5,13 +5,14 @@ #include #include "McClient.h" +#include #define SEGMENT_BITS 0x7F #define CONTINUE_BIT 0x80 McClient::McClient(QObject *parent, QString domain, QString ip, short port): QObject(parent), domain(domain), ip(ip), port(port) {} -QJsonObject McClient::getStatusData() { +QJsonObject McClient::getStatusDataBlocking() { qDebug() << "Connecting to socket.."; socket.connectToHost(ip, port); @@ -27,9 +28,17 @@ QJsonObject McClient::getStatusData() { return readResponse(); } -int McClient::getOnlinePlayers() { - auto status = getStatusData(); - return status.value("players").toObject().value("online").toInt(); +QFuture McClient::getOnlinePlayers() { + return QtConcurrent::run([this]() { + try { + auto status = getStatusDataBlocking(); + int onlinePlayers = status.value("players").toObject().value("online").toInt(); + return onlinePlayers; + } catch (const Exception &e) { + qDebug() << "Error: " << e.what(); + return -1; + } + }); } void McClient::sendRequest() { diff --git a/launcher/ui/pages/instance/McClient.h b/launcher/ui/pages/instance/McClient.h index e3da1fbcf..f9334de6d 100644 --- a/launcher/ui/pages/instance/McClient.h +++ b/launcher/ui/pages/instance/McClient.h @@ -2,6 +2,7 @@ #include #include #include +#include #include @@ -19,8 +20,8 @@ class McClient : public QObject { public: explicit McClient(QObject *parent, QString domain, QString ip, short port); - QJsonObject getStatusData(); - int getOnlinePlayers(); + QJsonObject getStatusDataBlocking(); + QFuture getOnlinePlayers(); void sendRequest(); void readBytesExactFromSocket(QByteArray &resp, int bytesToRead); QJsonObject readResponse(); diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 875d63869..08ac7573e 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -54,6 +54,7 @@ #include #include #include +#include #include static const int COLUMN_COUNT = 3; // 3 , TBD: latency and other nice things. @@ -147,16 +148,27 @@ class ServerPingTask : public Task { qDebug() << "Resolved Address for" << domain << ": " << ip << ":" << port; // Now that we have the IP and port, query the server - McClient client(nullptr, domain, ip, port); - try { - int online = client.getOnlinePlayers(); - qDebug() << "Online players: " << online; - m_server.m_currentPlayers = online; - emitSucceeded(); - } catch(const Exception& e) { - qDebug() << "Failed to get online players: " << e.cause(); - emitFailed(e.cause()); - } + McClient *client = new McClient(nullptr, domain, ip, port); + auto onlineFuture = client->getOnlinePlayers(); + + // Wait for query to finish + QFutureWatcher *watcher = new QFutureWatcher(); + QObject::connect(watcher, &QFutureWatcher::finished, [this, client, onlineFuture, watcher]() { + client->deleteLater(); + watcher->deleteLater(); + + int online = onlineFuture.result(); + if (online == -1) { + qDebug() << "Failed to get online players"; + emitFailed(); + return; + } else { + qDebug() << "Online players: " << online; + m_server.m_currentPlayers = online; + emitSucceeded(); + } + }); + watcher->setFuture(onlineFuture); }); // Delete McResolver object when done From 4fad298d675102df39fadd0837bc36450068a7dc Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 26 Nov 2024 13:21:39 +0100 Subject: [PATCH 411/616] put more McClient methods to private --- launcher/ui/pages/instance/McClient.h | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.h b/launcher/ui/pages/instance/McClient.h index f9334de6d..9c3a9a977 100644 --- a/launcher/ui/pages/instance/McClient.h +++ b/launcher/ui/pages/instance/McClient.h @@ -20,12 +20,13 @@ class McClient : public QObject { public: explicit McClient(QObject *parent, QString domain, QString ip, short port); - QJsonObject getStatusDataBlocking(); QFuture getOnlinePlayers(); - void sendRequest(); - void readBytesExactFromSocket(QByteArray &resp, int bytesToRead); - QJsonObject readResponse(); private: + QJsonObject getStatusDataBlocking(); + void sendRequest(); + QJsonObject readResponse(); + void readBytesExactFromSocket(QByteArray &resp, int bytesToRead); + void writeVarInt(QByteArray &data, int value); int readVarInt(QByteArray &data); char readByte(QByteArray &data); From 087ab70143c69de8e8b9c5006393137f42b41f1c Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 26 Nov 2024 14:33:02 +0100 Subject: [PATCH 412/616] refresh UI when we got the players online --- launcher/ui/pages/instance/ServersPage.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 08ac7573e..3fd5e8fb1 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -505,8 +505,14 @@ class ServersModel : public QAbstractListModel { void queryServersStatus() { auto *job = new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + int row = 0; for (auto& server : m_servers) { - job->addTask(Task::Ptr(new ServerPingTask(server))); + auto *task = new ServerPingTask(server); + job->addTask(Task::Ptr(task)); + connect(task, &Task::finished, [this, row]() { + emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); + }); + row++; } job->start(); From 4a50e949672461b5b69b039ff240ced6dad9bdd5 Mon Sep 17 00:00:00 2001 From: guihkx <626206+guihkx@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:51:09 -0300 Subject: [PATCH 413/616] flatpak: update xrandr to 1.5.3 Signed-off-by: guihkx <626206+guihkx@users.noreply.github.com> --- flatpak/org.prismlauncher.PrismLauncher.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/flatpak/org.prismlauncher.PrismLauncher.yml b/flatpak/org.prismlauncher.PrismLauncher.yml index 7aaa4f379..e2c8a0b79 100644 --- a/flatpak/org.prismlauncher.PrismLauncher.yml +++ b/flatpak/org.prismlauncher.PrismLauncher.yml @@ -75,8 +75,8 @@ modules: buildsystem: autotools sources: - type: archive - url: https://xorg.freedesktop.org/archive/individual/app/xrandr-1.5.2.tar.xz - sha256: c8bee4790d9058bacc4b6246456c58021db58a87ddda1a9d0139bf5f18f1f240 + url: https://xorg.freedesktop.org/archive/individual/app/xrandr-1.5.3.tar.xz + sha256: f8dd7566adb74147fab9964680b6bbadee87cf406a7fcff51718a5e6949b841c x-checker-data: type: anitya project-id: 14957 From f6770a847a8419ef0b1acab30144077f745a48ee Mon Sep 17 00:00:00 2001 From: guihkx <626206+guihkx@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:51:09 -0300 Subject: [PATCH 414/616] flatpak: update KDE runtime to 6.8 This also switches to the Docker image provided and maintained by Flathub collaborators through the 'flathub-infra' organization on GitHub, because it looks better maintained at the moment. Signed-off-by: guihkx <626206+guihkx@users.noreply.github.com> --- .github/workflows/build.yml | 2 +- flatpak/org.prismlauncher.PrismLauncher.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2cefa8100..d2db67054 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -633,7 +633,7 @@ jobs: flatpak: runs-on: ubuntu-latest container: - image: bilelmoussaoui/flatpak-github-actions:kde-6.7 + image: ghcr.io/flathub-infra/flatpak-github-actions:kde-6.8 options: --privileged steps: - name: Checkout diff --git a/flatpak/org.prismlauncher.PrismLauncher.yml b/flatpak/org.prismlauncher.PrismLauncher.yml index e2c8a0b79..136aef91a 100644 --- a/flatpak/org.prismlauncher.PrismLauncher.yml +++ b/flatpak/org.prismlauncher.PrismLauncher.yml @@ -1,6 +1,6 @@ id: org.prismlauncher.PrismLauncher runtime: org.kde.Platform -runtime-version: '6.7' +runtime-version: '6.8' sdk: org.kde.Sdk sdk-extensions: - org.freedesktop.Sdk.Extension.openjdk17 From 7c61fec8e0e753de1b7215e45b0a4272551ffac4 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 26 Nov 2024 18:03:35 +0100 Subject: [PATCH 415/616] Make task output online players rather than updating Server itself This doesn't really change anything --- launcher/ui/pages/instance/ServersPage.cpp | 30 ++++++++++++---------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 3fd5e8fb1..2fa823d4e 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -133,22 +133,25 @@ struct Server { class ServerPingTask : public Task { Q_OBJECT public: - explicit ServerPingTask(Server &server) : Task(), m_server(server) {} + explicit ServerPingTask(QString domain, int port) : Task(), m_domain(domain), m_port(port) {} ~ServerPingTask() override = default; + int m_outputOnlinePlayers = -1; + private: + QString m_domain; + int m_port; protected: virtual void executeTask() override { - qDebug() << "Querying status of " << m_server.m_address; + qDebug() << "Querying status of " << QString("%1:%2").arg(m_domain).arg(m_port); // Resolve the actual IP and port for the server - auto [domain, port] = m_server.splitAddress(); - McResolver *resolver = new McResolver(nullptr, domain, port); - QObject::connect(resolver, &McResolver::succeeded, [this, resolver, domain](QString ip, int port) { - qDebug() << "Resolved Address for" << domain << ": " << ip << ":" << port; + McResolver *resolver = new McResolver(nullptr, m_domain, m_port); + QObject::connect(resolver, &McResolver::succeeded, [this, resolver](QString ip, int port) { + qDebug() << "Resolved Address for" << m_domain << ": " << ip << ":" << port; // Now that we have the IP and port, query the server - McClient *client = new McClient(nullptr, domain, ip, port); + McClient *client = new McClient(nullptr, m_domain, ip, port); auto onlineFuture = client->getOnlinePlayers(); // Wait for query to finish @@ -164,7 +167,7 @@ class ServerPingTask : public Task { return; } else { qDebug() << "Online players: " << online; - m_server.m_currentPlayers = online; + m_outputOnlinePlayers = online; emitSucceeded(); } }); @@ -177,9 +180,6 @@ class ServerPingTask : public Task { }); resolver->ping(); } - - private: - Server &m_server; }; static std::unique_ptr parseServersDat(const QString& filename) @@ -506,10 +506,12 @@ class ServersModel : public QAbstractListModel { { auto *job = new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); int row = 0; - for (auto& server : m_servers) { - auto *task = new ServerPingTask(server); + for (Server &server : m_servers) { + auto [domain, port] = server.splitAddress(); + auto *task = new ServerPingTask(domain, port); job->addTask(Task::Ptr(task)); - connect(task, &Task::finished, [this, row]() { + connect(task, &Task::finished, [this, task, row, &server]() { + server.m_currentPlayers = task->m_outputOnlinePlayers; emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); }); row++; From fef8ee2d1b4f866437b30ec4ea8fd5cae2426e9c Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 26 Nov 2024 18:16:15 +0100 Subject: [PATCH 416/616] Disconnect task finished signal when ServersModel is destroyed --- launcher/ui/pages/instance/ServersPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 2fa823d4e..0d77526dd 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -510,7 +510,7 @@ class ServersModel : public QAbstractListModel { auto [domain, port] = server.splitAddress(); auto *task = new ServerPingTask(domain, port); job->addTask(Task::Ptr(task)); - connect(task, &Task::finished, [this, task, row, &server]() { + connect(task, &Task::finished, this, [this, task, row, &server]() { server.m_currentPlayers = task->m_outputOnlinePlayers; emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); }); From 3a9c03098267fd64a27b9bfe62dddccbdffc6cf0 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 26 Nov 2024 18:24:46 +0100 Subject: [PATCH 417/616] Do not timeout after just 3000ms Keep the network default timeout --- launcher/ui/pages/instance/McClient.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index ac0c62242..ed46ed03b 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -16,13 +16,13 @@ QJsonObject McClient::getStatusDataBlocking() { qDebug() << "Connecting to socket.."; socket.connectToHost(ip, port); - if (!socket.waitForConnected(3000)) { + if (!socket.waitForConnected()) { throw Exception("Failed to connect to socket"); } qDebug() << "Connected to socket successfully"; sendRequest(); - if (!socket.waitForReadyRead(3000)) { + if (!socket.waitForReadyRead()) { throw Exception("Socket didn't send anything to read"); } return readResponse(); From f05548f3a36c0badcedec86d6fc5dd7a973bd36e Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 26 Nov 2024 18:43:14 +0100 Subject: [PATCH 418/616] remove implicit captures --- launcher/ui/pages/instance/McResolver.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp index 6dd37ff8b..df3ea3864 100644 --- a/launcher/ui/pages/instance/McResolver.cpp +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -16,7 +16,7 @@ void McResolver::pingWithDomainSRV(QString domain, int port) { lookup->setName(QString("_minecraft._tcp.%1").arg(domain)); lookup->setType(QDnsLookup::SRV); - connect(lookup, &QDnsLookup::finished, this, [&, domain, port]() { + connect(lookup, &QDnsLookup::finished, this, [this, domain, port]() { QDnsLookup *lookup = qobject_cast(sender()); lookup->deleteLater(); @@ -45,7 +45,7 @@ void McResolver::pingWithDomainSRV(QString domain, int port) { } void McResolver::pingWithDomainA(QString domain, int port) { - QHostInfo::lookupHost(domain, this, [&, port](const QHostInfo &hostInfo){ + QHostInfo::lookupHost(domain, this, [this, port](const QHostInfo &hostInfo){ if (hostInfo.error() != QHostInfo::NoError) { emitFail("A record lookup failed"); return; From 66f36195d8d2d4c362e94dc56239feb42e31fd36 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 26 Nov 2024 18:44:21 +0100 Subject: [PATCH 419/616] simplify code --- launcher/ui/pages/instance/McResolver.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp index df3ea3864..3801d48a7 100644 --- a/launcher/ui/pages/instance/McResolver.cpp +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -49,16 +49,16 @@ void McResolver::pingWithDomainA(QString domain, int port) { if (hostInfo.error() != QHostInfo::NoError) { emitFail("A record lookup failed"); return; - } else { - auto records = hostInfo.addresses(); - if (records.isEmpty()) { - emitFail("No A entries found for domain"); - return; - } - - const auto& firstRecord = records.at(0); - emitSucceed(firstRecord.toString(), port); } + + auto records = hostInfo.addresses(); + if (records.isEmpty()) { + emitFail("No A entries found for domain"); + return; + } + + const auto& firstRecord = records.at(0); + emitSucceed(firstRecord.toString(), port); }); } From ca52d00b8040e27860f931bdf5a6e7ce92c08413 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 26 Nov 2024 18:47:13 +0100 Subject: [PATCH 420/616] replace std::string by QString in emitFail() --- launcher/ui/pages/instance/McResolver.cpp | 4 ++-- launcher/ui/pages/instance/McResolver.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp index 3801d48a7..8b5b2e887 100644 --- a/launcher/ui/pages/instance/McResolver.cpp +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -62,8 +62,8 @@ void McResolver::pingWithDomainA(QString domain, int port) { }); } -void McResolver::emitFail(std::string error) { - qDebug() << "Ping error:" << QString::fromStdString(error); +void McResolver::emitFail(QString error) { + qDebug() << "Ping error:" << error; emit failed(); emit finished(); } diff --git a/launcher/ui/pages/instance/McResolver.h b/launcher/ui/pages/instance/McResolver.h index 4837b029e..06947a03c 100644 --- a/launcher/ui/pages/instance/McResolver.h +++ b/launcher/ui/pages/instance/McResolver.h @@ -18,7 +18,7 @@ public: private: void pingWithDomainSRV(QString domain, int port); void pingWithDomainA(QString domain, int port); - void emitFail(std::string error); + void emitFail(QString error); void emitSucceed(QString ip, int port); signals: From 26f50f9b818e68fc21c8ae06fc313bfc2e0da6e9 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Tue, 26 Nov 2024 18:50:37 +0100 Subject: [PATCH 421/616] connect job to deletion task before starting it This ensures the signal is not fired before we have connected it --- launcher/ui/pages/instance/ServersPage.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 0d77526dd..954cdc046 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -516,11 +516,12 @@ class ServersModel : public QAbstractListModel { }); row++; } - job->start(); connect(job, &ConcurrentTask::finished, [job]() { job->deleteLater(); }); + + job->start(); } public slots: From e0faee7f262fda898ceb8ea5ab40249dbd6c52ea Mon Sep 17 00:00:00 2001 From: guihkx <626206+guihkx@users.noreply.github.com> Date: Tue, 26 Nov 2024 13:51:09 -0300 Subject: [PATCH 422/616] ci(flatpak): update build artifact name Just aligning the name of the Flatpak package with other build artifacts. Signed-off-by: guihkx <626206+guihkx@users.noreply.github.com> --- .github/workflows/build.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d2db67054..5e092b4e4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -640,12 +640,17 @@ jobs: uses: actions/checkout@v4 if: inputs.build_type == 'Debug' with: - submodules: "true" + submodules: true + + - name: Set short version + shell: bash + run: echo "VERSION=${GITHUB_SHA::7}" >> $GITHUB_ENV + - name: Build Flatpak (Linux) if: inputs.build_type == 'Debug' uses: flatpak/flatpak-github-actions/flatpak-builder@v6 with: - bundle: "Prism Launcher.flatpak" + bundle: PrismLauncher-${{ runner.os }}-${{ env.VERSION }}-Flatpak.flatpak manifest-path: flatpak/org.prismlauncher.PrismLauncher.yml nix: From 873232ebe3b3e41a97f908018dd5ff7fd14be10e Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 28 Nov 2024 17:29:35 +0100 Subject: [PATCH 423/616] remove infinite loop in writeVarInt() --- launcher/ui/pages/instance/McClient.cpp | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index ed46ed03b..f2cf1394f 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -7,6 +7,7 @@ #include "McClient.h" #include +// 7 first bits #define SEGMENT_BITS 0x7F #define CONTINUE_BIT 0x80 @@ -99,17 +100,15 @@ QJsonObject McClient::readResponse() { // From https://wiki.vg/Protocol#VarInt_and_VarLong void McClient::writeVarInt(QByteArray &data, int value) { - while (true) { - if ((value & ~SEGMENT_BITS) == 0) { - data.append(value); - return; - } - + while ((value & ~SEGMENT_BITS)) { // check if the value is too big to fit in 7 bits + // Write 7 bits data.append((value & SEGMENT_BITS) | CONTINUE_BIT); + // Erase theses 7 bits from the value to write // Note: >>> means that the sign bit is shifted with the rest of the number rather than being left alone value >>= 7; } + data.append(value); } // From https://wiki.vg/Protocol#VarInt_and_VarLong From 8b90a9f2b3e3d58b9725eda081cf209781c13aa6 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 28 Nov 2024 17:32:49 +0100 Subject: [PATCH 424/616] remove infinite loop from readVarInt() --- launcher/ui/pages/instance/McClient.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index f2cf1394f..f8a222645 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -117,17 +117,17 @@ int McClient::readVarInt(QByteArray &data) { int position = 0; char currentByte; - while (true) { + while (position < 32) { currentByte = readByte(data); value |= (currentByte & SEGMENT_BITS) << position; if ((currentByte & CONTINUE_BIT) == 0) break; position += 7; - - if (position >= 32) throw Exception("VarInt is too big"); } + if (position >= 32) throw Exception("VarInt is too big"); + return value; } From dbb88ca7df6594f65cba5c5e5bd821a0c2605c00 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 28 Nov 2024 17:46:42 +0100 Subject: [PATCH 425/616] move ServerPingTask in its own file --- launcher/CMakeLists.txt | 2 + launcher/ui/pages/instance/ServerPingTask.cpp | 44 +++++++++++++++ launcher/ui/pages/instance/ServerPingTask.h | 22 ++++++++ launcher/ui/pages/instance/ServersPage.cpp | 56 +------------------ 4 files changed, 69 insertions(+), 55 deletions(-) create mode 100644 launcher/ui/pages/instance/ServerPingTask.cpp create mode 100644 launcher/ui/pages/instance/ServerPingTask.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 2cfb63af3..e60c16913 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -922,6 +922,8 @@ SET(LAUNCHER_SOURCES ui/pages/instance/McClient.h ui/pages/instance/McResolver.cpp ui/pages/instance/McResolver.h + ui/pages/instance/ServerPingTask.cpp + ui/pages/instance/ServerPingTask.h # GUI - global settings pages ui/pages/global/AccountListPage.cpp diff --git a/launcher/ui/pages/instance/ServerPingTask.cpp b/launcher/ui/pages/instance/ServerPingTask.cpp new file mode 100644 index 000000000..42144f354 --- /dev/null +++ b/launcher/ui/pages/instance/ServerPingTask.cpp @@ -0,0 +1,44 @@ +#include + +#include "ServerPingTask.h" +#include "McResolver.h" +#include "McClient.h" + +void ServerPingTask::executeTask() { + qDebug() << "Querying status of " << QString("%1:%2").arg(m_domain).arg(m_port); + + // Resolve the actual IP and port for the server + McResolver *resolver = new McResolver(nullptr, m_domain, m_port); + QObject::connect(resolver, &McResolver::succeeded, [this, resolver](QString ip, int port) { + qDebug() << "Resolved Address for" << m_domain << ": " << ip << ":" << port; + + // Now that we have the IP and port, query the server + McClient *client = new McClient(nullptr, m_domain, ip, port); + auto onlineFuture = client->getOnlinePlayers(); + + // Wait for query to finish + QFutureWatcher *watcher = new QFutureWatcher(); + QObject::connect(watcher, &QFutureWatcher::finished, [this, client, onlineFuture, watcher]() { + client->deleteLater(); + watcher->deleteLater(); + + int online = onlineFuture.result(); + if (online == -1) { + qDebug() << "Failed to get online players"; + emitFailed(); + return; + } else { + qDebug() << "Online players: " << online; + m_outputOnlinePlayers = online; + emitSucceeded(); + } + }); + watcher->setFuture(onlineFuture); + }); + + // Delete McResolver object when done + QObject::connect(resolver, &McResolver::finished, [resolver]() { + resolver->deleteLater(); + }); + resolver->ping(); +} \ No newline at end of file diff --git a/launcher/ui/pages/instance/ServerPingTask.h b/launcher/ui/pages/instance/ServerPingTask.h new file mode 100644 index 000000000..0956a4f63 --- /dev/null +++ b/launcher/ui/pages/instance/ServerPingTask.h @@ -0,0 +1,22 @@ +#pragma once + +#include +#include + +#include + + +class ServerPingTask : public Task { + Q_OBJECT + public: + explicit ServerPingTask(QString domain, int port) : Task(), m_domain(domain), m_port(port) {} + ~ServerPingTask() override = default; + int m_outputOnlinePlayers = -1; + + private: + QString m_domain; + int m_port; + + protected: + virtual void executeTask() override; +}; diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 954cdc046..98058ddad 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -38,9 +38,7 @@ #include "ServersPage.h" #include "ui/dialogs/CustomMessageBox.h" #include "ui_ServersPage.h" - -#include "McClient.h" -#include "McResolver.h" +#include "ServerPingTask.h" #include #include @@ -130,58 +128,6 @@ struct Server { int m_maxPlayers = 0; }; -class ServerPingTask : public Task { - Q_OBJECT - public: - explicit ServerPingTask(QString domain, int port) : Task(), m_domain(domain), m_port(port) {} - ~ServerPingTask() override = default; - int m_outputOnlinePlayers = -1; - - private: - QString m_domain; - int m_port; - - protected: - virtual void executeTask() override { - qDebug() << "Querying status of " << QString("%1:%2").arg(m_domain).arg(m_port); - - // Resolve the actual IP and port for the server - McResolver *resolver = new McResolver(nullptr, m_domain, m_port); - QObject::connect(resolver, &McResolver::succeeded, [this, resolver](QString ip, int port) { - qDebug() << "Resolved Address for" << m_domain << ": " << ip << ":" << port; - - // Now that we have the IP and port, query the server - McClient *client = new McClient(nullptr, m_domain, ip, port); - auto onlineFuture = client->getOnlinePlayers(); - - // Wait for query to finish - QFutureWatcher *watcher = new QFutureWatcher(); - QObject::connect(watcher, &QFutureWatcher::finished, [this, client, onlineFuture, watcher]() { - client->deleteLater(); - watcher->deleteLater(); - - int online = onlineFuture.result(); - if (online == -1) { - qDebug() << "Failed to get online players"; - emitFailed(); - return; - } else { - qDebug() << "Online players: " << online; - m_outputOnlinePlayers = online; - emitSucceeded(); - } - }); - watcher->setFuture(onlineFuture); - }); - - // Delete McResolver object when done - QObject::connect(resolver, &McResolver::finished, [resolver]() { - resolver->deleteLater(); - }); - resolver->ping(); - } -}; - static std::unique_ptr parseServersDat(const QString& filename) { try { From 6f9be258dc87752c3d8d80cac44570575ecba7b0 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 28 Nov 2024 17:49:35 +0100 Subject: [PATCH 426/616] add documentation about task abortion --- launcher/tasks/Task.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/launcher/tasks/Task.h b/launcher/tasks/Task.h index 3f4d8274e..60799498f 100644 --- a/launcher/tasks/Task.h +++ b/launcher/tasks/Task.h @@ -156,6 +156,7 @@ class Task : public QObject, public QRunnable { // used by the task caller to start the task virtual void start(); + //! used by external code to ask the task to aborta virtual bool abort() { if (canAbort()) @@ -179,6 +180,7 @@ class Task : public QObject, public QRunnable { protected slots: //! The Task subclass must call this method when the task has succeeded virtual void emitSucceeded(); + //! **The Task subclass** must call this method when the task has succeeded. External code should call abort() instead. virtual void emitAborted(); //! The Task subclass must call this method when the task has failed virtual void emitFailed(QString reason = ""); From d124e2e0cba25e914bb885a4efd785294790227c Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 28 Nov 2024 17:50:40 +0100 Subject: [PATCH 427/616] cleanup --- launcher/tasks/Task.h | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/launcher/tasks/Task.h b/launcher/tasks/Task.h index 60799498f..7a61ddbb4 100644 --- a/launcher/tasks/Task.h +++ b/launcher/tasks/Task.h @@ -146,15 +146,14 @@ class Task : public QObject, public QRunnable { void details(QString details); void stepProgress(TaskStepProgress const& task_progress); - /** Emitted when the canAbort() status has changed. - */ + //! Emitted when the canAbort() status has changed. */ void abortStatusChanged(bool can_abort); public slots: // QRunnable's interface void run() override { start(); } - // used by the task caller to start the task + //! used by the task caller to start the task virtual void start(); //! used by external code to ask the task to aborta virtual bool abort() From cfb0c97262f2f6467f1f35460938a9160cb2484e Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 28 Nov 2024 18:09:38 +0100 Subject: [PATCH 428/616] use Json::requireInteger() --- launcher/ui/pages/instance/McClient.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index f8a222645..65225f077 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -2,10 +2,11 @@ #include #include #include +#include #include #include "McClient.h" -#include +#include "Json.h" // 7 first bits #define SEGMENT_BITS 0x7F @@ -33,8 +34,8 @@ QFuture McClient::getOnlinePlayers() { return QtConcurrent::run([this]() { try { auto status = getStatusDataBlocking(); - int onlinePlayers = status.value("players").toObject().value("online").toInt(); - return onlinePlayers; + auto players = Json::requireObject(status, "players"); + return Json::requireInteger(players, "online"); } catch (const Exception &e) { qDebug() << "Error: " << e.what(); return -1; From 5eb417ff2be159330558999082ecb64e3ee8f003 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 28 Nov 2024 23:54:51 +0100 Subject: [PATCH 429/616] Always autodelete signal connections with `this` captured when the objet is deleted, just to be sure --- launcher/ui/pages/instance/ServerPingTask.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/pages/instance/ServerPingTask.cpp b/launcher/ui/pages/instance/ServerPingTask.cpp index 42144f354..260405dc0 100644 --- a/launcher/ui/pages/instance/ServerPingTask.cpp +++ b/launcher/ui/pages/instance/ServerPingTask.cpp @@ -9,7 +9,7 @@ void ServerPingTask::executeTask() { // Resolve the actual IP and port for the server McResolver *resolver = new McResolver(nullptr, m_domain, m_port); - QObject::connect(resolver, &McResolver::succeeded, [this, resolver](QString ip, int port) { + QObject::connect(resolver, &McResolver::succeeded, this, [this, resolver](QString ip, int port) { qDebug() << "Resolved Address for" << m_domain << ": " << ip << ":" << port; // Now that we have the IP and port, query the server @@ -18,7 +18,7 @@ void ServerPingTask::executeTask() { // Wait for query to finish QFutureWatcher *watcher = new QFutureWatcher(); - QObject::connect(watcher, &QFutureWatcher::finished, [this, client, onlineFuture, watcher]() { + QObject::connect(watcher, &QFutureWatcher::finished, this, [this, client, onlineFuture, watcher]() { client->deleteLater(); watcher->deleteLater(); From 3fb6764ea48e942a655aafbbce9fc4a226839eff Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 29 Nov 2024 00:13:43 +0100 Subject: [PATCH 430/616] fix typo --- launcher/tasks/Task.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/tasks/Task.h b/launcher/tasks/Task.h index 7a61ddbb4..0ec818684 100644 --- a/launcher/tasks/Task.h +++ b/launcher/tasks/Task.h @@ -155,7 +155,7 @@ class Task : public QObject, public QRunnable { //! used by the task caller to start the task virtual void start(); - //! used by external code to ask the task to aborta + //! used by external code to ask the task to abort virtual bool abort() { if (canAbort()) From ae7d3379e4ed2d8aee51026f37b7344026f97de7 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 29 Nov 2024 00:39:43 +0100 Subject: [PATCH 431/616] abort current query task if present when refreshing --- launcher/ui/pages/instance/ServersPage.cpp | 24 +++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 98058ddad..1018c6bd3 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -450,12 +450,18 @@ class ServersModel : public QAbstractListModel { void queryServersStatus() { - auto *job = new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + // Abort the currently running task if present + if (currentQueryTask != nullptr) { + currentQueryTask->abort(); + qDebug() << "Aborted previous server query task"; + } + + currentQueryTask = new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); int row = 0; for (Server &server : m_servers) { auto [domain, port] = server.splitAddress(); auto *task = new ServerPingTask(domain, port); - job->addTask(Task::Ptr(task)); + currentQueryTask->addTask(Task::Ptr(task)); connect(task, &Task::finished, this, [this, task, row, &server]() { server.m_currentPlayers = task->m_outputOnlinePlayers; emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); @@ -463,11 +469,18 @@ class ServersModel : public QAbstractListModel { row++; } - connect(job, &ConcurrentTask::finished, [job]() { - job->deleteLater(); + // make task delete itself when done + auto *c = currentQueryTask; + connect(currentQueryTask, &ConcurrentTask::finished, [c]() { + c->deleteLater(); }); - job->start(); + // Also delete it from the model, if the model itself hasn't been deleted + connect(currentQueryTask, &ConcurrentTask::finished, this, [this, c]() { + if (c == currentQueryTask) currentQueryTask = nullptr; + }); + + currentQueryTask->start(); } public slots: @@ -557,6 +570,7 @@ class ServersModel : public QAbstractListModel { QList m_servers; QFileSystemWatcher* m_watcher = nullptr; QTimer m_saveTimer; + ConcurrentTask *currentQueryTask = nullptr; }; ServersPage::ServersPage(InstancePtr inst, QWidget* parent) : QMainWindow(parent), ui(new Ui::ServersPage) From 09782745c6f1e1ad0edfd4222f432d679d10c17b Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 29 Nov 2024 00:43:42 +0100 Subject: [PATCH 432/616] make writePacketToSocket() clear data automatically --- launcher/ui/pages/instance/McClient.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index 65225f077..92db3ba34 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -53,8 +53,6 @@ void McClient::sendRequest() { writeVarInt(data, 0x01); // next state writePacketToSocket(data); // send handshake packet - data.clear(); - writeVarInt(data, 0x00); // packet ID writePacketToSocket(data); // send status packet } @@ -162,4 +160,6 @@ void McClient::writePacketToSocket(QByteArray &data) { // write it to the socket socket.write(dataWithSize); socket.flush(); + + data.clear(); } From b0778e7a1fcf62493638aa9caafcb17a8860a3a1 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 29 Nov 2024 00:42:25 +0100 Subject: [PATCH 433/616] chore --- launcher/tasks/Task.h | 12 ++++++------ launcher/ui/pages/instance/McClient.cpp | 1 + launcher/ui/pages/instance/McClient.h | 2 +- launcher/ui/pages/instance/McResolver.cpp | 1 - 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/launcher/tasks/Task.h b/launcher/tasks/Task.h index 0ec818684..91ec06679 100644 --- a/launcher/tasks/Task.h +++ b/launcher/tasks/Task.h @@ -139,8 +139,10 @@ class Task : public QObject, public QRunnable { void progress(qint64 current, qint64 total); //! called when a task has eother succeeded, aborted or failed. void finished(); - void succeeded(); // called when a task has succeeded - void aborted(); // called when a task has been aborted by calling abort() + //! called when a task has succeeded + void succeeded(); + //! called when a task has been aborted by calling abort() + void aborted(); void failed(QString reason); void status(QString status); void details(QString details); @@ -170,10 +172,8 @@ class Task : public QObject, public QRunnable { } protected: - /*! - * The task subclass must implement this method. This method is called to start to run the task. - * The task is not finished when this method returns. the subclass must manually call emitSucceeded() or emitFailed() instead. - */ + //! The task subclass must implement this method. This method is called to start to run the task. + //! The task is not finished when this method returns. the subclass must manually call emitSucceeded() or emitFailed() instead. virtual void executeTask() = 0; protected slots: diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index 92db3ba34..47f7a2b67 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -10,6 +10,7 @@ // 7 first bits #define SEGMENT_BITS 0x7F +// last bit #define CONTINUE_BIT 0x80 McClient::McClient(QObject *parent, QString domain, QString ip, short port): QObject(parent), domain(domain), ip(ip), port(port) {} diff --git a/launcher/ui/pages/instance/McClient.h b/launcher/ui/pages/instance/McClient.h index 9c3a9a977..374adbddf 100644 --- a/launcher/ui/pages/instance/McClient.h +++ b/launcher/ui/pages/instance/McClient.h @@ -30,7 +30,7 @@ private: void writeVarInt(QByteArray &data, int value); int readVarInt(QByteArray &data); char readByte(QByteArray &data); - // write number with specified size in big endian format + //! write number with specified size in big endian format void writeFixedInt(QByteArray &data, int value, int size); void writeString(QByteArray &data, const std::string &value); diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp index 8b5b2e887..42bc3ad2c 100644 --- a/launcher/ui/pages/instance/McResolver.cpp +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -34,7 +34,6 @@ void McResolver::pingWithDomainSRV(QString domain, int port) { return; } - const auto& firstRecord = records.at(0); QString domain = firstRecord.target(); int port = firstRecord.port(); From 01db826ec92bd41164514518d25b1941b58e5180 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 29 Nov 2024 00:58:08 +0100 Subject: [PATCH 434/616] Reset online players UI component when refreshing --- launcher/ui/pages/instance/ServersPage.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 1018c6bd3..b6ca9fe07 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -459,9 +459,16 @@ class ServersModel : public QAbstractListModel { currentQueryTask = new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); int row = 0; for (Server &server : m_servers) { + // reset current players + server.m_currentPlayers = {}; + emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); + + // Start task to query server status auto [domain, port] = server.splitAddress(); auto *task = new ServerPingTask(domain, port); currentQueryTask->addTask(Task::Ptr(task)); + + // Update the model when the task is done connect(task, &Task::finished, this, [this, task, row, &server]() { server.m_currentPlayers = task->m_outputOnlinePlayers; emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); From fd1cb1b58bef3cc0a51f0adcc957740886522e3d Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 29 Nov 2024 01:01:32 +0100 Subject: [PATCH 435/616] DCO Remediation Commit for iTrooz I, iTrooz , hereby add my Signed-off-by to this commit: fac521a312d1f6055b29d12da8b8773adaa24afb I, iTrooz , hereby add my Signed-off-by to this commit: 43a54cafef95a3b4c2181f4d3d1e2d3876b8e7f9 I, iTrooz , hereby add my Signed-off-by to this commit: ee35ac5afdb2a6409b7ad52fde38c411d112f064 I, iTrooz , hereby add my Signed-off-by to this commit: 99ac11bc408b5102a7c9d6d0c003e854d5e7fdef I, iTrooz , hereby add my Signed-off-by to this commit: 8fa1dff17dc4d7953fbf7f0961a33e751183b06b I, iTrooz , hereby add my Signed-off-by to this commit: 2f70115be5555c7c9ad46765f61e6b1cc965e8b4 I, iTrooz , hereby add my Signed-off-by to this commit: ea2a2349f8ebd353ac4ba4296f9514c3f8419c58 I, iTrooz , hereby add my Signed-off-by to this commit: 87c9066a2b218aef5296ab8ad4dddfa483dcd9cb I, iTrooz , hereby add my Signed-off-by to this commit: fe28a051d533bd34681c6306deab5b93b13dc5e9 I, iTrooz , hereby add my Signed-off-by to this commit: 0a379a05ff03b2c55fcc4342c84f90fff64bb9a9 I, iTrooz , hereby add my Signed-off-by to this commit: 6a7678a6e9548501b84ed3a2d81a9cabe6955703 I, iTrooz , hereby add my Signed-off-by to this commit: cba7e2dc362238cbfa9bcc680d164c828cd39836 I, iTrooz , hereby add my Signed-off-by to this commit: 8cf0c2029ccccf40cbf21fd122bea233732911bc I, iTrooz , hereby add my Signed-off-by to this commit: 0d830e56e9c888b860e03ee4a9e44239d67a4d4a I, iTrooz , hereby add my Signed-off-by to this commit: b35cffb3477b997a4dc779696aeb0acb79880d51 I, iTrooz , hereby add my Signed-off-by to this commit: 1f094b98039b4f8c79bc402246babd4f821116db I, iTrooz , hereby add my Signed-off-by to this commit: 2d06e0a11194a3a4c379ddd518b857c4c2b98f54 I, iTrooz , hereby add my Signed-off-by to this commit: c3543b104b5f13778677e2244ab93faf6850cb99 I, iTrooz , hereby add my Signed-off-by to this commit: 8b7040d416b46d8011b97b71505778026c2c5ece I, iTrooz , hereby add my Signed-off-by to this commit: b8035ca0783ba42efbc7c11cf329c6f4372abbc5 I, iTrooz , hereby add my Signed-off-by to this commit: 9d5727e36b22d2a2eeb17f6faf0bf5b2c01421fd I, iTrooz , hereby add my Signed-off-by to this commit: 7cf24586c2a9ff8e5dd33a390f83b7f098266881 I, iTrooz , hereby add my Signed-off-by to this commit: 7d04f0ee758cb3c0c9c4273de67424269d63507c I, iTrooz , hereby add my Signed-off-by to this commit: 60fb922ba2ed56703e5d64626f015e57d5cb0de5 I, iTrooz , hereby add my Signed-off-by to this commit: a79a66c177194f1761f353e00bc53f1dc653eea3 I, iTrooz , hereby add my Signed-off-by to this commit: 1fb0fe0171fa2db09b296a62d636bab1ea026009 I, iTrooz , hereby add my Signed-off-by to this commit: 5cfb5a6f0db81e850ed3299759ffc131d049f289 I, iTrooz , hereby add my Signed-off-by to this commit: 9ce5eaaa0c8e8ca74dce42e2d287e865905efdf4 I, iTrooz , hereby add my Signed-off-by to this commit: 0c6f78dee2c16820624e2f55e12d903392baad75 I, iTrooz , hereby add my Signed-off-by to this commit: 7c8d2c9b55526db21a9656a65adbe4b2cfabd892 I, iTrooz , hereby add my Signed-off-by to this commit: 24b9815763ce1f81b30c4d422ee0d2dc5660dede I, iTrooz , hereby add my Signed-off-by to this commit: 7d2da194184180846362af7c5d8e3726db190b88 I, iTrooz , hereby add my Signed-off-by to this commit: ca6d66970ea52ae95c064babf42f74a1d953717b I, iTrooz , hereby add my Signed-off-by to this commit: 520d6b0b42eae5b7fb5757cc07d96b53d2f6e7e8 I, iTrooz , hereby add my Signed-off-by to this commit: 4fad298d675102df39fadd0837bc36450068a7dc I, iTrooz , hereby add my Signed-off-by to this commit: 087ab70143c69de8e8b9c5006393137f42b41f1c I, iTrooz , hereby add my Signed-off-by to this commit: 7c61fec8e0e753de1b7215e45b0a4272551ffac4 I, iTrooz , hereby add my Signed-off-by to this commit: fef8ee2d1b4f866437b30ec4ea8fd5cae2426e9c I, iTrooz , hereby add my Signed-off-by to this commit: 3a9c03098267fd64a27b9bfe62dddccbdffc6cf0 I, iTrooz , hereby add my Signed-off-by to this commit: f05548f3a36c0badcedec86d6fc5dd7a973bd36e I, iTrooz , hereby add my Signed-off-by to this commit: 66f36195d8d2d4c362e94dc56239feb42e31fd36 I, iTrooz , hereby add my Signed-off-by to this commit: ca52d00b8040e27860f931bdf5a6e7ce92c08413 I, iTrooz , hereby add my Signed-off-by to this commit: 26f50f9b818e68fc21c8ae06fc313bfc2e0da6e9 I, iTrooz , hereby add my Signed-off-by to this commit: 873232ebe3b3e41a97f908018dd5ff7fd14be10e I, iTrooz , hereby add my Signed-off-by to this commit: 8b90a9f2b3e3d58b9725eda081cf209781c13aa6 I, iTrooz , hereby add my Signed-off-by to this commit: dbb88ca7df6594f65cba5c5e5bd821a0c2605c00 I, iTrooz , hereby add my Signed-off-by to this commit: 6f9be258dc87752c3d8d80cac44570575ecba7b0 I, iTrooz , hereby add my Signed-off-by to this commit: d124e2e0cba25e914bb885a4efd785294790227c I, iTrooz , hereby add my Signed-off-by to this commit: cfb0c97262f2f6467f1f35460938a9160cb2484e I, iTrooz , hereby add my Signed-off-by to this commit: 5eb417ff2be159330558999082ecb64e3ee8f003 I, iTrooz , hereby add my Signed-off-by to this commit: 3fb6764ea48e942a655aafbbce9fc4a226839eff I, iTrooz , hereby add my Signed-off-by to this commit: ae7d3379e4ed2d8aee51026f37b7344026f97de7 I, iTrooz , hereby add my Signed-off-by to this commit: 09782745c6f1e1ad0edfd4222f432d679d10c17b I, iTrooz , hereby add my Signed-off-by to this commit: b0778e7a1fcf62493638aa9caafcb17a8860a3a1 I, iTrooz , hereby add my Signed-off-by to this commit: 01db826ec92bd41164514518d25b1941b58e5180 Signed-off-by: iTrooz From 4aaf7b9b0959ac8b07046fd3f97fd24c0f9df4a9 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 29 Nov 2024 14:07:22 +0100 Subject: [PATCH 436/616] chore Signed-off-by: iTrooz --- launcher/tasks/Task.h | 2 +- launcher/ui/pages/instance/ServersPage.cpp | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/launcher/tasks/Task.h b/launcher/tasks/Task.h index 91ec06679..b5d9bec65 100644 --- a/launcher/tasks/Task.h +++ b/launcher/tasks/Task.h @@ -179,7 +179,7 @@ class Task : public QObject, public QRunnable { protected slots: //! The Task subclass must call this method when the task has succeeded virtual void emitSucceeded(); - //! **The Task subclass** must call this method when the task has succeeded. External code should call abort() instead. + //! **The Task subclass** must call this method when the task has aborted. External code should call abort() instead. virtual void emitAborted(); //! The Task subclass must call this method when the task has failed virtual void emitFailed(QString reason = ""); diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index b6ca9fe07..f00821cbd 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -52,7 +52,6 @@ #include #include #include -#include #include static const int COLUMN_COUNT = 3; // 3 , TBD: latency and other nice things. @@ -469,8 +468,9 @@ class ServersModel : public QAbstractListModel { currentQueryTask->addTask(Task::Ptr(task)); // Update the model when the task is done - connect(task, &Task::finished, this, [this, task, row, &server]() { - server.m_currentPlayers = task->m_outputOnlinePlayers; + connect(task, &Task::finished, this, [this, task, row]() { + if (m_servers.size() < row) return; + m_servers[row].m_currentPlayers = task->m_outputOnlinePlayers; emit dataChanged(index(row, 0), index(row, COLUMN_COUNT - 1)); }); row++; From 1477d644004e6ae48f9ac93783464ee38afdec05 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 29 Nov 2024 14:14:24 +0100 Subject: [PATCH 437/616] add `m_` prefix to class members Signed-off-by: iTrooz --- launcher/ui/pages/instance/McClient.cpp | 24 +++++++++++------------ launcher/ui/pages/instance/McClient.h | 8 ++++---- launcher/ui/pages/instance/McResolver.cpp | 4 ++-- launcher/ui/pages/instance/McResolver.h | 4 ++-- 4 files changed, 20 insertions(+), 20 deletions(-) diff --git a/launcher/ui/pages/instance/McClient.cpp b/launcher/ui/pages/instance/McClient.cpp index 47f7a2b67..978eb9295 100644 --- a/launcher/ui/pages/instance/McClient.cpp +++ b/launcher/ui/pages/instance/McClient.cpp @@ -13,19 +13,19 @@ // last bit #define CONTINUE_BIT 0x80 -McClient::McClient(QObject *parent, QString domain, QString ip, short port): QObject(parent), domain(domain), ip(ip), port(port) {} +McClient::McClient(QObject *parent, QString domain, QString ip, short port): QObject(parent), m_domain(domain), m_ip(ip), m_port(port) {} QJsonObject McClient::getStatusDataBlocking() { qDebug() << "Connecting to socket.."; - socket.connectToHost(ip, port); + m_socket.connectToHost(m_ip, m_port); - if (!socket.waitForConnected()) { + if (!m_socket.waitForConnected()) { throw Exception("Failed to connect to socket"); } qDebug() << "Connected to socket successfully"; sendRequest(); - if (!socket.waitForReadyRead()) { + if (!m_socket.waitForReadyRead()) { throw Exception("Socket didn't send anything to read"); } return readResponse(); @@ -48,9 +48,9 @@ void McClient::sendRequest() { QByteArray data; writeVarInt(data, 0x00); // packet ID writeVarInt(data, 0x760); // protocol version - writeVarInt(data, domain.size()); // server address length - writeString(data, domain.toStdString()); // server address - writeFixedInt(data, port, 2); // server port + writeVarInt(data, m_domain.size()); // server address length + writeString(data, m_domain.toStdString()); // server address + writeFixedInt(data, m_port, 2); // server port writeVarInt(data, 0x01); // next state writePacketToSocket(data); // send handshake packet @@ -61,18 +61,18 @@ void McClient::sendRequest() { void McClient::readBytesExactFromSocket(QByteArray &resp, int bytesToRead) { while (bytesToRead > 0) { qDebug() << bytesToRead << " bytes left to read"; - if (!socket.waitForReadyRead()) { + if (!m_socket.waitForReadyRead()) { throw Exception("Read timeout or error"); } - QByteArray chunk = socket.read(bytesToRead); + QByteArray chunk = m_socket.read(bytesToRead); resp.append(chunk); bytesToRead -= chunk.size(); } } QJsonObject McClient::readResponse() { - auto resp = socket.readAll(); + auto resp = m_socket.readAll(); int length = readVarInt(resp); // finish ready response @@ -159,8 +159,8 @@ void McClient::writePacketToSocket(QByteArray &data) { dataWithSize.append(data); // write it to the socket - socket.write(dataWithSize); - socket.flush(); + m_socket.write(dataWithSize); + m_socket.flush(); data.clear(); } diff --git a/launcher/ui/pages/instance/McClient.h b/launcher/ui/pages/instance/McClient.h index 374adbddf..4df879609 100644 --- a/launcher/ui/pages/instance/McClient.h +++ b/launcher/ui/pages/instance/McClient.h @@ -13,10 +13,10 @@ class McClient : public QObject { Q_OBJECT - QString domain; - QString ip; - short port; - QTcpSocket socket; + QString m_domain; + QString m_ip; + short m_port; + QTcpSocket m_socket; public: explicit McClient(QObject *parent, QString domain, QString ip, short port); diff --git a/launcher/ui/pages/instance/McResolver.cpp b/launcher/ui/pages/instance/McResolver.cpp index 42bc3ad2c..80f93d9f8 100644 --- a/launcher/ui/pages/instance/McResolver.cpp +++ b/launcher/ui/pages/instance/McResolver.cpp @@ -5,10 +5,10 @@ #include "McResolver.h" -McResolver::McResolver(QObject *parent, QString domain, int port): QObject(parent), constrDomain(domain), constrPort(port) {} +McResolver::McResolver(QObject *parent, QString domain, int port): QObject(parent), m_constrDomain(domain), m_constrPort(port) {} void McResolver::ping() { - pingWithDomainSRV(constrDomain, constrPort); + pingWithDomainSRV(m_constrDomain, m_constrPort); } void McResolver::pingWithDomainSRV(QString domain, int port) { diff --git a/launcher/ui/pages/instance/McResolver.h b/launcher/ui/pages/instance/McResolver.h index 06947a03c..e2840fd8a 100644 --- a/launcher/ui/pages/instance/McResolver.h +++ b/launcher/ui/pages/instance/McResolver.h @@ -8,8 +8,8 @@ class McResolver : public QObject { Q_OBJECT - QString constrDomain; - int constrPort; + QString m_constrDomain; + int m_constrPort; public: explicit McResolver(QObject *parent, QString domain, int port); From ba0bd5fd741a4c17c9f874f606ff6a052cde788d Mon Sep 17 00:00:00 2001 From: iTrooz Date: Fri, 29 Nov 2024 19:42:09 +0100 Subject: [PATCH 438/616] Use shared pointer to store server query task Signed-off-by: iTrooz --- launcher/ui/pages/instance/ServersPage.cpp | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index f00821cbd..721013635 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -455,7 +455,9 @@ class ServersModel : public QAbstractListModel { qDebug() << "Aborted previous server query task"; } - currentQueryTask = new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + currentQueryTask = ConcurrentTask::Ptr( + new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()) + ); int row = 0; for (Server &server : m_servers) { // reset current players @@ -476,15 +478,9 @@ class ServersModel : public QAbstractListModel { row++; } - // make task delete itself when done - auto *c = currentQueryTask; - connect(currentQueryTask, &ConcurrentTask::finished, [c]() { - c->deleteLater(); - }); - - // Also delete it from the model, if the model itself hasn't been deleted - connect(currentQueryTask, &ConcurrentTask::finished, this, [this, c]() { - if (c == currentQueryTask) currentQueryTask = nullptr; + // Destroy task when done + connect(currentQueryTask.get(), &ConcurrentTask::finished, this, [this]() { + currentQueryTask = nullptr; }); currentQueryTask->start(); @@ -577,7 +573,7 @@ class ServersModel : public QAbstractListModel { QList m_servers; QFileSystemWatcher* m_watcher = nullptr; QTimer m_saveTimer; - ConcurrentTask *currentQueryTask = nullptr; + ConcurrentTask::Ptr currentQueryTask = nullptr; }; ServersPage::ServersPage(InstancePtr inst, QWidget* parent) : QMainWindow(parent), ui(new Ui::ServersPage) From 884f15da1e4089690c56ea475b3860672c8baedd Mon Sep 17 00:00:00 2001 From: Kenneth Chew <79120643+kthchew@users.noreply.github.com> Date: Fri, 29 Nov 2024 20:40:37 -0500 Subject: [PATCH 439/616] Remove unnecessary hardened runtime exceptions These are cruft from an older time when the launcher was ad-hoc signed, and the OS couldn't tell the libraries and launcher were signed by the same party. Additionally, add a workaround to send the necessary library injection to the game if Steam overlay is used despite library validation being on for the launcher. Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com> --- launcher/minecraft/MinecraftInstance.cpp | 7 +++++++ program_info/App.entitlements | 4 ---- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 007fb6cca..108cb6648 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -554,6 +554,13 @@ QMap MinecraftInstance::getVariables() out.insert("INST_JAVA", settings()->get("JavaPath").toString()); out.insert("INST_JAVA_ARGS", javaArguments().join(' ')); out.insert("NO_COLOR", "1"); +#ifdef Q_OS_MACOS + // get library for Steam overlay support + QString steamDyldInsertLibraries = qEnvironmentVariable("STEAM_DYLD_INSERT_LIBRARIES"); + if (!steamDyldInsertLibraries.isEmpty()) { + out.insert("DYLD_INSERT_LIBRARIES", steamDyldInsertLibraries); + } +#endif return out; } diff --git a/program_info/App.entitlements b/program_info/App.entitlements index b46e8ff2a..73bf832c7 100644 --- a/program_info/App.entitlements +++ b/program_info/App.entitlements @@ -2,10 +2,6 @@ - com.apple.security.cs.disable-library-validation - - com.apple.security.cs.allow-dyld-environment-variables - com.apple.security.device.audio-input com.apple.security.device.camera From 7e76638f2c5471b161b717f6feb1f3e37135fc13 Mon Sep 17 00:00:00 2001 From: Kenneth Chew <79120643+kthchew@users.noreply.github.com> Date: Fri, 29 Nov 2024 21:10:35 -0500 Subject: [PATCH 440/616] Only disable library validation if using ad-hoc signature While not needed for regular releases, it is needed for CI when an Apple Developer account isn't available and you can only perform an ad-hoc signature. Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com> --- .github/workflows/build.yml | 4 +++- program_info/AdhocSignedApp.entitlements | 12 ++++++++++++ 2 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 program_info/AdhocSignedApp.entitlements diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2cefa8100..23b4edcd6 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -380,11 +380,13 @@ jobs: if [ -n '${{ secrets.APPLE_CODESIGN_ID }}' ]; then APPLE_CODESIGN_ID='${{ secrets.APPLE_CODESIGN_ID }}' + ENTITLEMENTS_FILE='../program_info/App.entitlements' else APPLE_CODESIGN_ID='-' + ENTITLEMENTS_FILE='../program_info/AdhocSignedApp.entitlements' fi - sudo codesign --sign "$APPLE_CODESIGN_ID" --deep --force --entitlements "../program_info/App.entitlements" --options runtime "PrismLauncher.app/Contents/MacOS/prismlauncher" + sudo codesign --sign "$APPLE_CODESIGN_ID" --deep --force --entitlements "$ENTITLEMENTS_FILE" --options runtime "PrismLauncher.app/Contents/MacOS/prismlauncher" mv "PrismLauncher.app" "Prism Launcher.app" - name: Notarize (macOS) diff --git a/program_info/AdhocSignedApp.entitlements b/program_info/AdhocSignedApp.entitlements new file mode 100644 index 000000000..032308a18 --- /dev/null +++ b/program_info/AdhocSignedApp.entitlements @@ -0,0 +1,12 @@ + + + + + com.apple.security.cs.disable-library-validation + + com.apple.security.device.audio-input + + com.apple.security.device.camera + + + From fd9c80db62436b1a364cb8342ba45a059c53f899 Mon Sep 17 00:00:00 2001 From: leia uwu Date: Sat, 30 Nov 2024 11:30:25 -0300 Subject: [PATCH 441/616] fix: fix system icons This sets the fallback icon theme to the current(system default) icon theme before launcher specific themes are applied And removes `Inherits` line of multimc/legacy icon theme because it can end up making it inherit a default theme set from /usr/share/icons/default/index.theme instead of the user configured theme (probably a qt bug?) Signed-off-by: leia uwu --- launcher/resources/multimc/index.theme | 1 - launcher/ui/themes/ThemeManager.cpp | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/resources/multimc/index.theme b/launcher/resources/multimc/index.theme index 4da8072d9..497106d6f 100644 --- a/launcher/resources/multimc/index.theme +++ b/launcher/resources/multimc/index.theme @@ -1,7 +1,6 @@ [Icon Theme] Name=Legacy Comment=Default Icons -Inherits=default Directories=8x8,16x16,22x22,24x24,32x32,32x32/instances,48x48,50x50/instances,64x64,128x128/instances,256x256,scalable,scalable/instances [8x8] diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index 691a51668..81afd0412 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -36,6 +36,7 @@ ThemeManager::ThemeManager() { + QIcon::setFallbackThemeName(QIcon::themeName()); themeDebugLog() << "Determining System Widget Theme..."; const auto& style = QApplication::style(); m_defaultStyle = style->objectName(); From 3f67ef968bb9be3b1cdfdfa68e2d38ddf8e1a3cf Mon Sep 17 00:00:00 2001 From: leia uwu Date: Sat, 30 Nov 2024 12:50:57 -0300 Subject: [PATCH 442/616] fix: icon search paths memory leak Signed-off-by: leia uwu --- launcher/ui/themes/ThemeManager.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index 81afd0412..bbf614855 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -37,6 +37,7 @@ ThemeManager::ThemeManager() { QIcon::setFallbackThemeName(QIcon::themeName()); + QIcon::setFallbackSearchPaths(QIcon::themeSearchPaths()); themeDebugLog() << "Determining System Widget Theme..."; const auto& style = QApplication::style(); m_defaultStyle = style->objectName(); @@ -94,9 +95,7 @@ void ThemeManager::initializeIcons() // set icon theme search path! themeDebugLog() << "<> Initializing Icon Themes"; - auto searchPaths = QIcon::themeSearchPaths(); - searchPaths.append(m_iconThemeFolder.path()); - QIcon::setThemeSearchPaths(searchPaths); + QIcon::setThemeSearchPaths({ m_iconThemeFolder.path(), ":/icons" }); for (const QString& id : builtinIcons) { IconTheme theme(id, QString(":/icons/%1").arg(id)); From 2cfd1169473e8a7d5b1b436ff5a6b708c52a5b93 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 1 Dec 2024 00:30:03 +0000 Subject: [PATCH 443/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'flake-compat': 'github:edolstra/flake-compat/0f9255e01c2351cc7d116c072cb317785dd33b33?narHash=sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U%3D' (2023-10-04) → 'github:edolstra/flake-compat/9ed2ac151eada2306ca8c418ebd97807bb08f6ac?narHash=sha256-HRJ/18p%2BWoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg%3D' (2024-11-27) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/23e89b7da85c3640bbc2173fe04f4bd114342367?narHash=sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w%3D' (2024-11-19) → 'github:NixOS/nixpkgs/970e93b9f82e2a0f3675757eb0bfc73297cc6370?narHash=sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE%3D' (2024-11-28) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index ba9a56c33..49ca909a4 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1696426674, - "narHash": "sha256-kvjfFW7WAETZlt09AgDn1MrtKzP7t90Vf7vypd3OL1U=", + "lastModified": 1732722421, + "narHash": "sha256-HRJ/18p+WoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg=", "owner": "edolstra", "repo": "flake-compat", - "rev": "0f9255e01c2351cc7d116c072cb317785dd33b33", + "rev": "9ed2ac151eada2306ca8c418ebd97807bb08f6ac", "type": "github" }, "original": { @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732014248, - "narHash": "sha256-y/MEyuJ5oBWrWAic/14LaIr/u5E0wRVzyYsouYY3W6w=", + "lastModified": 1732837521, + "narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "23e89b7da85c3640bbc2173fe04f4bd114342367", + "rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370", "type": "github" }, "original": { From 4e48015868beb256b08cc7df43221121d9ea3e1e Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 5 Dec 2024 20:40:09 +0100 Subject: [PATCH 444/616] currentQueryTask -> m_currentQueryTask Signed-off-by: iTrooz --- launcher/ui/pages/instance/ServersPage.cpp | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index 721013635..e613f015f 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -450,12 +450,12 @@ class ServersModel : public QAbstractListModel { void queryServersStatus() { // Abort the currently running task if present - if (currentQueryTask != nullptr) { - currentQueryTask->abort(); + if (m_currentQueryTask != nullptr) { + m_currentQueryTask->abort(); qDebug() << "Aborted previous server query task"; } - currentQueryTask = ConcurrentTask::Ptr( + m_currentQueryTask = ConcurrentTask::Ptr( new ConcurrentTask("Query servers status", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()) ); int row = 0; @@ -467,7 +467,7 @@ class ServersModel : public QAbstractListModel { // Start task to query server status auto [domain, port] = server.splitAddress(); auto *task = new ServerPingTask(domain, port); - currentQueryTask->addTask(Task::Ptr(task)); + m_currentQueryTask->addTask(Task::Ptr(task)); // Update the model when the task is done connect(task, &Task::finished, this, [this, task, row]() { @@ -479,11 +479,11 @@ class ServersModel : public QAbstractListModel { } // Destroy task when done - connect(currentQueryTask.get(), &ConcurrentTask::finished, this, [this]() { - currentQueryTask = nullptr; + connect(m_currentQueryTask.get(), &ConcurrentTask::finished, this, [this]() { + m_currentQueryTask = nullptr; }); - currentQueryTask->start(); + m_currentQueryTask->start(); } public slots: @@ -573,7 +573,7 @@ class ServersModel : public QAbstractListModel { QList m_servers; QFileSystemWatcher* m_watcher = nullptr; QTimer m_saveTimer; - ConcurrentTask::Ptr currentQueryTask = nullptr; + ConcurrentTask::Ptr m_currentQueryTask = nullptr; }; ServersPage::ServersPage(InstancePtr inst, QWidget* parent) : QMainWindow(parent), ui(new Ui::ServersPage) From f9e450ace2a831daad12d3900246ddeb364e4eb8 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 5 Dec 2024 20:41:07 +0100 Subject: [PATCH 445/616] do not destroy the ping ConcurrentTask directly at the end of the task Signed-off-by: iTrooz --- launcher/ui/pages/instance/ServersPage.cpp | 5 ----- 1 file changed, 5 deletions(-) diff --git a/launcher/ui/pages/instance/ServersPage.cpp b/launcher/ui/pages/instance/ServersPage.cpp index e613f015f..8583130d4 100644 --- a/launcher/ui/pages/instance/ServersPage.cpp +++ b/launcher/ui/pages/instance/ServersPage.cpp @@ -478,11 +478,6 @@ class ServersModel : public QAbstractListModel { row++; } - // Destroy task when done - connect(m_currentQueryTask.get(), &ConcurrentTask::finished, this, [this]() { - m_currentQueryTask = nullptr; - }); - m_currentQueryTask->start(); } From 94c893bd865ceba286dffc1d6392df07d47c11d9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 5 Dec 2024 20:29:11 +0000 Subject: [PATCH 446/616] chore(deps): update actions/cache action to v4.2.0 --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5e092b4e4..991ddcd8c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -173,7 +173,7 @@ jobs: - name: Retrieve ccache cache (Windows MinGW-w64) if: runner.os == 'Windows' && matrix.msystem != '' && inputs.build_type == 'Debug' - uses: actions/cache@v4.1.2 + uses: actions/cache@v4.2.0 with: path: '${{ github.workspace }}\.ccache' key: ${{ matrix.os }}-mingw-w64-ccache-${{ github.run_id }} From 614574f15c507f884fc2ceff74db8c919674a0f1 Mon Sep 17 00:00:00 2001 From: leia uwu Date: Fri, 6 Dec 2024 16:40:07 -0300 Subject: [PATCH 447/616] fix icon theme search paths using fallback search paths breaks qadwaitadecorations Signed-off-by: leia uwu --- launcher/ui/themes/ThemeManager.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index bbf614855..30a1fe7be 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -37,7 +37,8 @@ ThemeManager::ThemeManager() { QIcon::setFallbackThemeName(QIcon::themeName()); - QIcon::setFallbackSearchPaths(QIcon::themeSearchPaths()); + QIcon::setThemeSearchPaths(QIcon::themeSearchPaths() << m_iconThemeFolder.path()); + themeDebugLog() << "Determining System Widget Theme..."; const auto& style = QApplication::style(); m_defaultStyle = style->objectName(); @@ -95,8 +96,6 @@ void ThemeManager::initializeIcons() // set icon theme search path! themeDebugLog() << "<> Initializing Icon Themes"; - QIcon::setThemeSearchPaths({ m_iconThemeFolder.path(), ":/icons" }); - for (const QString& id : builtinIcons) { IconTheme theme(id, QString(":/icons/%1").arg(id)); if (!theme.load()) { @@ -348,4 +347,4 @@ void ThemeManager::refresh() initializeThemes(); initializeCatPacks(); -} \ No newline at end of file +} From dedb7a2343f7d433492dee5930802ed47294b722 Mon Sep 17 00:00:00 2001 From: sshcrack <34072808+sshcrack@users.noreply.github.com> Date: Sun, 8 Dec 2024 14:17:04 +0100 Subject: [PATCH 448/616] change order of steps Signed-off-by: sshcrack <34072808+sshcrack@users.noreply.github.com> --- launcher/minecraft/MinecraftInstance.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index 98ac7647f..e35dd973e 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -1083,6 +1083,12 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(step); } + // check java + { + process->appendStep(makeShared(pptr)); + process->appendStep(makeShared(pptr)); + } + // run pre-launch command if that's needed if (getPreLaunchCommand().size()) { auto step = makeShared(pptr); @@ -1096,12 +1102,6 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(makeShared(pptr, makeShared(this, mode, pptr))); } - // check java - { - process->appendStep(makeShared(pptr)); - process->appendStep(makeShared(pptr)); - } - // if we aren't in offline mode,. if (session->status != AuthSession::PlayableOffline) { if (!session->demo) { From cf2dcbd431b0c4bb03ff527465f972d72f713b0c Mon Sep 17 00:00:00 2001 From: sshcrack <34072808+sshcrack@users.noreply.github.com> Date: Sun, 8 Dec 2024 18:27:57 +0100 Subject: [PATCH 449/616] load meta first Signed-off-by: sshcrack <34072808+sshcrack@users.noreply.github.com> --- launcher/minecraft/MinecraftInstance.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/launcher/minecraft/MinecraftInstance.cpp b/launcher/minecraft/MinecraftInstance.cpp index e35dd973e..995dd15d7 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -1083,6 +1083,12 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(step); } + // load meta + { + auto mode = session->status != AuthSession::PlayableOffline ? Net::Mode::Online : Net::Mode::Offline; + process->appendStep(makeShared(pptr, makeShared(this, mode, pptr))); + } + // check java { process->appendStep(makeShared(pptr)); @@ -1096,12 +1102,6 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(step); } - // load meta - { - auto mode = session->status != AuthSession::PlayableOffline ? Net::Mode::Online : Net::Mode::Offline; - process->appendStep(makeShared(pptr, makeShared(this, mode, pptr))); - } - // if we aren't in offline mode,. if (session->status != AuthSession::PlayableOffline) { if (!session->demo) { From 1dd0728a58159bc835b2e7724a707776ae0b93ce Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 8 Dec 2024 22:04:16 +0200 Subject: [PATCH 450/616] fix crash with invalid mrpack format Signed-off-by: Trial97 --- .../modplatform/modrinth/ModrinthInstanceCreationTask.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp index bfececb8d..2cc8767a4 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -262,12 +262,14 @@ bool ModrinthCreationTask::createInstance() mod->setDetails(d); resources[file.hash.toHex()] = mod; } - + if (file.downloads.empty()) { + setError(tr("The file '%1' is missing a download link. This is invalid in the pack format.").arg(fileName)); + return false; + } qDebug() << "Will try to download" << file.downloads.front() << "to" << file_path; auto dl = Net::ApiDownload::makeFile(file.downloads.dequeue(), file_path); dl->addValidator(new Net::ChecksumValidator(file.hashAlgorithm, file.hash)); downloadMods->addNetAction(dl); - if (!file.downloads.empty()) { // FIXME: This really needs to be put into a ConcurrentTask of // MultipleOptionsTask's , once those exist :) From eb8c375ec5023bbc7c02e45d63da866058e56b26 Mon Sep 17 00:00:00 2001 From: Edgars Cirulis Date: Mon, 9 Dec 2024 00:40:05 +0200 Subject: [PATCH 451/616] chore: update Qt to 6.8.1 Signed-off-by: Edgars Cirulis --- .github/workflows/build.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a96278ba3..7bb6c0ad7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -82,7 +82,7 @@ jobs: qt_ver: 6 qt_host: "windows" qt_arch: "win64_msvc2022_64" - qt_version: "6.8.0" + qt_version: "6.8.1" qt_modules: "qt5compat qtimageformats qtnetworkauth" nscurl_tag: "v24.9.26.122" nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" @@ -95,7 +95,7 @@ jobs: qt_ver: 6 qt_host: "windows" qt_arch: "win64_msvc2022_arm64_cross_compiled" - qt_version: "6.8.0" + qt_version: "6.8.1" qt_modules: "qt5compat qtimageformats qtnetworkauth" nscurl_tag: "v24.9.26.122" nscurl_sha256: "AEE6C4BE3CB6455858E9C1EE4B3AFE0DB9960FA03FE99CCDEDC28390D57CCBB0" @@ -106,7 +106,7 @@ jobs: qt_ver: 6 qt_host: mac qt_arch: "" - qt_version: "6.8.0" + qt_version: "6.8.1" qt_modules: "qt5compat qtimageformats qtnetworkauth" - os: macos-14 From a1c1c0b769d77eb8c44cef3dc0966e7184b2ce78 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Thu, 12 Dec 2024 17:29:46 +0200 Subject: [PATCH 452/616] Do not fail curseforge import if modrinth file check fails Signed-off-by: Trial97 --- launcher/modplatform/flame/FileResolvingTask.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/modplatform/flame/FileResolvingTask.cpp b/launcher/modplatform/flame/FileResolvingTask.cpp index 4c2f3d69e..d69bf12c0 100644 --- a/launcher/modplatform/flame/FileResolvingTask.cpp +++ b/launcher/modplatform/flame/FileResolvingTask.cpp @@ -144,7 +144,7 @@ void Flame::FileResolvingTask::netJobFinished() << " reason: " << parse_error.errorString(); qWarning() << *m_result; - failed(parse_error.errorString()); + getFlameProjects(); return; } From c3e44554abccfd16ff7f84740932848e59d28474 Mon Sep 17 00:00:00 2001 From: Kenneth Chew <79120643+kthchew@users.noreply.github.com> Date: Thu, 12 Dec 2024 14:43:28 -0500 Subject: [PATCH 453/616] Add local network usage description Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com> --- cmake/MacOSXBundleInfo.plist.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cmake/MacOSXBundleInfo.plist.in b/cmake/MacOSXBundleInfo.plist.in index 6d3845dfc..3a8c8fbfe 100644 --- a/cmake/MacOSXBundleInfo.plist.in +++ b/cmake/MacOSXBundleInfo.plist.in @@ -8,6 +8,8 @@ A Minecraft mod wants to access your microphone. NSDownloadsFolderUsageDescription Prism uses access to your Downloads folder to help you more quickly add mods that can't be automatically downloaded to your instance. You can change where Prism scans for downloaded mods in Settings or the prompt that appears. + NSLocalNetworkUsageDescription + Minecraft uses the local network to find and connect to LAN servers. NSPrincipalClass NSApplication NSHighResolutionCapable From c3712ba6483f6386e2930ec0ed059d8c94f671b6 Mon Sep 17 00:00:00 2001 From: Kenneth Chew <79120643+kthchew@users.noreply.github.com> Date: Thu, 12 Dec 2024 14:53:39 -0500 Subject: [PATCH 454/616] Fix tab order in launcher settings Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com> --- launcher/ui/pages/global/LauncherPage.ui | 32 ++++++++++++++++++------ 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui index 09e7bca5b..a46a6fd5d 100644 --- a/launcher/ui/pages/global/LauncherPage.ui +++ b/launcher/ui/pages/global/LauncherPage.ui @@ -35,7 +35,7 @@ - QTabWidget::Rounded + QTabWidget::TabShape::Rounded 0 @@ -48,7 +48,7 @@ - Qt::ScrollBarAlwaysOff + Qt::ScrollBarPolicy::ScrollBarAlwaysOff true @@ -365,7 +365,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -465,7 +465,7 @@ - Qt::Horizontal + Qt::Orientation::Horizontal @@ -506,7 +506,7 @@ - Qt::Vertical + Qt::Orientation::Vertical @@ -615,13 +615,13 @@ - Qt::ScrollBarAlwaysOff + Qt::ScrollBarPolicy::ScrollBarAlwaysOff false - Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse + Qt::TextInteractionFlag::TextSelectableByKeyboard|Qt::TextInteractionFlag::TextSelectableByMouse @@ -667,15 +667,33 @@ tabWidget + scrollArea autoUpdateCheckBox + updateIntervalSpinBox instDirTextBox instDirBrowseBtn modsDirTextBox modsDirBrowseBtn iconsDirTextBox iconsDirBrowseBtn + javaDirTextBox + javaDirBrowseBtn + skinsDirTextBox + skinsDirBrowseBtn + downloadsDirTextBox + downloadsDirBrowseBtn + downloadsDirWatchRecursiveCheckBox + metadataDisableBtn + dependenciesDisableBtn + skipModpackUpdatePromptBtn + numberOfConcurrentTasksSpinBox + numberOfConcurrentDownloadsSpinBox + numberOfManualRetriesSpinBox + timeoutSecondsSpinBox sortLastLaunchedBtn sortByNameBtn + catOpacitySpinBox + preferMenuBarCheckBox showConsoleCheck autoCloseConsoleCheck showConsoleErrorCheck From b6cd46ad27e8046962dcb7b3b43a973ff08564eb Mon Sep 17 00:00:00 2001 From: Kenneth Chew <79120643+kthchew@users.noreply.github.com> Date: Sat, 14 Dec 2024 00:42:08 -0500 Subject: [PATCH 455/616] Update Sparkle to v2.6.4 Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com> --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 4063ff503..dcf13c577 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -401,8 +401,8 @@ if(UNIX AND APPLE) set(MACOSX_SPARKLE_UPDATE_PUBLIC_KEY "v55ZWWD6QlPoXGV6VLzOTZxZUggWeE51X8cRQyQh6vA=" CACHE STRING "Public key for Sparkle update feed") set(MACOSX_SPARKLE_UPDATE_FEED_URL "https://prismlauncher.org/feed/appcast.xml" CACHE STRING "URL for Sparkle update feed") - set(MACOSX_SPARKLE_DOWNLOAD_URL "https://github.com/sparkle-project/Sparkle/releases/download/2.5.2/Sparkle-2.5.2.tar.xz" CACHE STRING "URL to Sparkle release archive") - set(MACOSX_SPARKLE_SHA256 "572dd67ae398a466f19f343a449e1890bac1ef74885b4739f68f979a8a89884b" CACHE STRING "SHA256 checksum for Sparkle release archive") + set(MACOSX_SPARKLE_DOWNLOAD_URL "https://github.com/sparkle-project/Sparkle/releases/download/2.6.4/Sparkle-2.6.4.tar.xz" CACHE STRING "URL to Sparkle release archive") + set(MACOSX_SPARKLE_SHA256 "50612a06038abc931f16011d7903b8326a362c1074dabccb718404ce8e585f0b" CACHE STRING "SHA256 checksum for Sparkle release archive") set(MACOSX_SPARKLE_DIR "${CMAKE_BINARY_DIR}/frameworks/Sparkle") # directories to look for dependencies From 706e2630508c40125d9442062e81c64ec4789cea Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 15 Dec 2024 00:27:47 +0000 Subject: [PATCH 456/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'flake-compat': 'github:edolstra/flake-compat/9ed2ac151eada2306ca8c418ebd97807bb08f6ac?narHash=sha256-HRJ/18p%2BWoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg%3D' (2024-11-27) → 'github:edolstra/flake-compat/ff81ac966bb2cae68946d5ed5fc4994f96d0ffec?narHash=sha256-NeCCThCEP3eCl2l/%2B27kNNK7QrwZB1IJCrXfrbv5oqU%3D' (2024-12-04) • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/970e93b9f82e2a0f3675757eb0bfc73297cc6370?narHash=sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE%3D' (2024-11-28) → 'github:NixOS/nixpkgs/5d67ea6b4b63378b9c13be21e2ec9d1afc921713?narHash=sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g%3D' (2024-12-11) --- flake.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/flake.lock b/flake.lock index 49ca909a4..f01d7da12 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "flake-compat": { "flake": false, "locked": { - "lastModified": 1732722421, - "narHash": "sha256-HRJ/18p+WoXpWJkcdsk9St5ZiukCqSDgbOGFa8Okehg=", + "lastModified": 1733328505, + "narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=", "owner": "edolstra", "repo": "flake-compat", - "rev": "9ed2ac151eada2306ca8c418ebd97807bb08f6ac", + "rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec", "type": "github" }, "original": { @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1732837521, - "narHash": "sha256-jNRNr49UiuIwaarqijgdTR2qLPifxsVhlJrKzQ8XUIE=", + "lastModified": 1733940404, + "narHash": "sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "970e93b9f82e2a0f3675757eb0bfc73297cc6370", + "rev": "5d67ea6b4b63378b9c13be21e2ec9d1afc921713", "type": "github" }, "original": { From 8d53242952ceeed11bd1a57c9ac43344d854ac8c Mon Sep 17 00:00:00 2001 From: Kenneth Chew <79120643+kthchew@users.noreply.github.com> Date: Mon, 16 Dec 2024 02:27:26 -0500 Subject: [PATCH 457/616] Correct symbolic link destination on manifest Java download Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com> --- launcher/java/download/ManifestDownloadTask.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/launcher/java/download/ManifestDownloadTask.cpp b/launcher/java/download/ManifestDownloadTask.cpp index 836afeaac..20b39e751 100644 --- a/launcher/java/download/ManifestDownloadTask.cpp +++ b/launcher/java/download/ManifestDownloadTask.cpp @@ -86,11 +86,10 @@ void ManifestDownloadTask::downloadJava(const QJsonDocument& doc) if (type == "directory") { FS::ensureFolderPathExists(file); } else if (type == "link") { - // this is linux only ! + // this is *nix only ! auto path = Json::ensureString(meta, "target"); if (!path.isEmpty()) { - auto target = FS::PathCombine(file, "../" + path); - QFile(target).link(file); + QFile::link(path, file); } } else if (type == "file") { // TODO download compressed version if it exists ? From f4d93a08ba18f386dc8cb08e77c813dc56ac5f9f Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Dec 2024 13:27:44 +0200 Subject: [PATCH 458/616] Fix curseforge/modrinth instance icons Signed-off-by: Trial97 --- launcher/icons/IconList.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/launcher/icons/IconList.cpp b/launcher/icons/IconList.cpp index faeb3f2c7..f4022e0fb 100644 --- a/launcher/icons/IconList.cpp +++ b/launcher/icons/IconList.cpp @@ -196,7 +196,8 @@ void IconList::directoryChanged(const QString& path) qDebug() << "Adding icon " << addedPath; QFileInfo addfile(addedPath); - QString key = m_dir.relativeFilePath(addfile.absoluteFilePath()); + QString relativePath = m_dir.relativeFilePath(addfile.absoluteFilePath()); + QString key = QFileInfo(relativePath).completeBaseName(); QString name = formatName(m_dir, addfile); if (addIcon(key, name, addfile.filePath(), IconType::FileBased)) { From 0412ed3f7807d28145c28270f12e1de20a923b89 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Mon, 16 Dec 2024 14:51:59 +0200 Subject: [PATCH 459/616] Fix automatically choose mod provider option Signed-off-by: Trial97 --- launcher/modplatform/EnsureMetadataTask.cpp | 17 +++++++++-------- launcher/modplatform/EnsureMetadataTask.h | 4 ++-- launcher/ui/dialogs/ResourceUpdateDialog.cpp | 11 +++++++++-- 3 files changed, 20 insertions(+), 12 deletions(-) diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index 9d8d75b09..8e910e984 100644 --- a/launcher/modplatform/EnsureMetadataTask.cpp +++ b/launcher/modplatform/EnsureMetadataTask.cpp @@ -19,27 +19,28 @@ static ModrinthAPI modrinth_api; static FlameAPI flame_api; EnsureMetadataTask::EnsureMetadataTask(Resource* resource, QDir dir, ModPlatform::ResourceProvider prov) - : Task(), m_index_dir(dir), m_provider(prov), m_hashing_task(nullptr), m_current_task(nullptr) + : Task(), m_index_dir(dir), m_provider(prov), m_hashingTask(nullptr), m_current_task(nullptr) { - auto hash_task = createNewHash(resource); - if (!hash_task) + auto hashTask = createNewHash(resource); + if (!hashTask) return; - connect(hash_task.get(), &Hashing::Hasher::resultsReady, [this, resource](QString hash) { m_resources.insert(hash, resource); }); - connect(hash_task.get(), &Task::failed, [this, resource] { emitFail(resource, "", RemoveFromList::No); }); - hash_task->start(); + connect(hashTask.get(), &Hashing::Hasher::resultsReady, [this, resource](QString hash) { m_resources.insert(hash, resource); }); + connect(hashTask.get(), &Task::failed, [this, resource] { emitFail(resource, "", RemoveFromList::No); }); + m_hashingTask = hashTask; } EnsureMetadataTask::EnsureMetadataTask(QList& resources, QDir dir, ModPlatform::ResourceProvider prov) : Task(), m_index_dir(dir), m_provider(prov), m_current_task(nullptr) { - m_hashing_task.reset(new ConcurrentTask("MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt())); + auto hashTask = makeShared("MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + m_hashingTask = hashTask; for (auto* resource : resources) { auto hash_task = createNewHash(resource); if (!hash_task) continue; connect(hash_task.get(), &Hashing::Hasher::resultsReady, [this, resource](QString hash) { m_resources.insert(hash, resource); }); connect(hash_task.get(), &Task::failed, [this, resource] { emitFail(resource, "", RemoveFromList::No); }); - m_hashing_task->addTask(hash_task); + hashTask->addTask(hash_task); } } diff --git a/launcher/modplatform/EnsureMetadataTask.h b/launcher/modplatform/EnsureMetadataTask.h index a78ffc0c5..4e5787841 100644 --- a/launcher/modplatform/EnsureMetadataTask.h +++ b/launcher/modplatform/EnsureMetadataTask.h @@ -21,7 +21,7 @@ class EnsureMetadataTask : public Task { ~EnsureMetadataTask() = default; - Task::Ptr getHashingTask() { return m_hashing_task; } + Task::Ptr getHashingTask() { return m_hashingTask; } public slots: bool abort() override; @@ -59,6 +59,6 @@ class EnsureMetadataTask : public Task { ModPlatform::ResourceProvider m_provider; QHash m_temp_versions; - ConcurrentTask::Ptr m_hashing_task; + Task::Ptr m_hashingTask; Task::Ptr m_current_task; }; diff --git a/launcher/ui/dialogs/ResourceUpdateDialog.cpp b/launcher/ui/dialogs/ResourceUpdateDialog.cpp index 78cf0e44a..f5ab52590 100644 --- a/launcher/ui/dialogs/ResourceUpdateDialog.cpp +++ b/launcher/ui/dialogs/ResourceUpdateDialog.cpp @@ -7,6 +7,7 @@ #include "minecraft/mod/tasks/GetModDependenciesTask.h" #include "modplatform/ModIndex.h" #include "modplatform/flame/FlameAPI.h" +#include "tasks/SequentialTask.h" #include "ui_ReviewMessageBox.h" #include "Markdown.h" @@ -411,8 +412,14 @@ void ResourceUpdateDialog::onMetadataFailed(Resource* resource, bool try_others, connect(task.get(), &EnsureMetadataTask::metadataFailed, [this](Resource* candidate) { onMetadataFailed(candidate, false); }); connect(task.get(), &EnsureMetadataTask::failed, [this](const QString& reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); - - m_second_try_metadata->addTask(task); + if (task->getHashingTask()) { + auto seq = makeShared(); + seq->addTask(task->getHashingTask()); + seq->addTask(task); + m_second_try_metadata->addTask(seq); + } else { + m_second_try_metadata->addTask(task); + } } else { QString reason{ tr("Couldn't find a valid version on the selected mod provider(s)") }; From 23ffc4d8b91e9b2acd249c6fde323ef4d577780e Mon Sep 17 00:00:00 2001 From: Trial97 Date: Sun, 7 Jul 2024 02:10:22 +0300 Subject: [PATCH 460/616] Refactor ResourcePack Signed-off-by: Trial97 --- launcher/minecraft/mod/DataPack.h | 4 +- launcher/minecraft/mod/ResourcePack.cpp | 50 +---- launcher/minecraft/mod/ResourcePack.h | 37 +--- .../minecraft/mod/ResourcePackFolderModel.cpp | 4 +- .../mod/tasks/LocalDataPackParseTask.cpp | 103 ++++++--- .../mod/tasks/LocalDataPackParseTask.h | 17 +- .../mod/tasks/LocalResourcePackParseTask.cpp | 206 +----------------- .../mod/tasks/LocalResourcePackParseTask.h | 34 +-- .../mod/tasks/LocalWorldSaveParseTask.cpp | 4 +- tests/DataPackParse_test.cpp | 6 +- tests/ResourcePackParse_test.cpp | 7 +- 11 files changed, 114 insertions(+), 358 deletions(-) diff --git a/launcher/minecraft/mod/DataPack.h b/launcher/minecraft/mod/DataPack.h index 4855b0203..266c2061b 100644 --- a/launcher/minecraft/mod/DataPack.h +++ b/launcher/minecraft/mod/DataPack.h @@ -35,8 +35,6 @@ class Version; class DataPack : public Resource { Q_OBJECT public: - using Ptr = shared_qobject_ptr; - DataPack(QObject* parent = nullptr) : Resource(parent) {} DataPack(QFileInfo file_info) : Resource(file_info) {} @@ -59,6 +57,8 @@ class DataPack : public Resource { [[nodiscard]] int compare(Resource const& other, SortType type) const override; [[nodiscard]] bool applyFilter(QRegularExpression filter) const override; + virtual QString directory() { return "/data"; } + protected: mutable QMutex m_data_lock; diff --git a/launcher/minecraft/mod/ResourcePack.cpp b/launcher/minecraft/mod/ResourcePack.cpp index 81fb91485..4ed3c67e3 100644 --- a/launcher/minecraft/mod/ResourcePack.cpp +++ b/launcher/minecraft/mod/ResourcePack.cpp @@ -42,13 +42,6 @@ void ResourcePack::setPackFormat(int new_format_id) m_pack_format = new_format_id; } -void ResourcePack::setDescription(QString new_description) -{ - QMutexLocker locker(&m_data_lock); - - m_description = new_description; -} - void ResourcePack::setImage(QImage new_image) const { QMutexLocker locker(&m_data_lock); @@ -90,7 +83,7 @@ QPixmap ResourcePack::image(QSize size, Qt::AspectRatioMode mode) const } // Imaged got evicted from the cache. Re-process it and retry. - ResourcePackUtils::processPackPNG(*this); + ResourcePackUtils::processPackPNG(this); return image(size); } @@ -102,44 +95,3 @@ std::pair ResourcePack::compatibleVersions() const return s_pack_format_versions.constFind(m_pack_format).value(); } - -int ResourcePack::compare(const Resource& other, SortType type) const -{ - auto const& cast_other = static_cast(other); - switch (type) { - default: - return Resource::compare(other, type); - case SortType::PACK_FORMAT: { - auto this_ver = packFormat(); - auto other_ver = cast_other.packFormat(); - - if (this_ver > other_ver) - return 1; - if (this_ver < other_ver) - return -1; - break; - } - } - return 0; -} - -bool ResourcePack::applyFilter(QRegularExpression filter) const -{ - if (filter.match(description()).hasMatch()) - return true; - - if (filter.match(QString::number(packFormat())).hasMatch()) - return true; - - if (filter.match(compatibleVersions().first.toString()).hasMatch()) - return true; - if (filter.match(compatibleVersions().second.toString()).hasMatch()) - return true; - - return Resource::applyFilter(filter); -} - -bool ResourcePack::valid() const -{ - return m_pack_format != 0; -} diff --git a/launcher/minecraft/mod/ResourcePack.h b/launcher/minecraft/mod/ResourcePack.h index 2254fc5c4..bb5aeecb5 100644 --- a/launcher/minecraft/mod/ResourcePack.h +++ b/launcher/minecraft/mod/ResourcePack.h @@ -1,6 +1,7 @@ #pragma once #include "Resource.h" +#include "minecraft/mod/DataPack.h" #include #include @@ -14,51 +15,27 @@ class Version; * Store localized descriptions * */ -class ResourcePack : public Resource { +class ResourcePack : public DataPack { Q_OBJECT public: - using Ptr = shared_qobject_ptr; + ResourcePack(QObject* parent = nullptr) : DataPack(parent) {} + ResourcePack(QFileInfo file_info) : DataPack(file_info) {} - ResourcePack(QObject* parent = nullptr) : Resource(parent) {} - ResourcePack(QFileInfo file_info) : Resource(file_info) {} - - /** Gets the numerical ID of the pack format. */ - [[nodiscard]] int packFormat() const { return m_pack_format; } /** Gets, respectively, the lower and upper versions supported by the set pack format. */ [[nodiscard]] std::pair compatibleVersions() const; - /** Gets the description of the resource pack. */ - [[nodiscard]] QString description() const { return m_description; } - /** Gets the image of the resource pack, converted to a QPixmap for drawing, and scaled to size. */ [[nodiscard]] QPixmap image(QSize size, Qt::AspectRatioMode mode = Qt::AspectRatioMode::IgnoreAspectRatio) const; - /** Thread-safe. */ - void setPackFormat(int new_format_id); - - /** Thread-safe. */ - void setDescription(QString new_description); - /** Thread-safe. */ void setImage(QImage new_image) const; - bool valid() const override; + /** Thread-safe. */ + void setPackFormat(int new_format_id); - [[nodiscard]] int compare(Resource const& other, SortType type) const override; - [[nodiscard]] bool applyFilter(QRegularExpression filter) const override; + virtual QString directory() { return "/assets"; } protected: - mutable QMutex m_data_lock; - - /* The 'version' of a resource pack, as defined in the pack.mcmeta file. - * See https://minecraft.wiki/w/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta - */ - int m_pack_format = 0; - - /** The resource pack's description, as defined in the pack.mcmeta file. - */ - QString m_description; - /** The resource pack's image file cache key, for access in the QPixmapCache global instance. * * The 'was_ever_used' state simply identifies whether the key was never inserted on the cache (true), diff --git a/launcher/minecraft/mod/ResourcePackFolderModel.cpp b/launcher/minecraft/mod/ResourcePackFolderModel.cpp index e106a2be9..94774c81f 100644 --- a/launcher/minecraft/mod/ResourcePackFolderModel.cpp +++ b/launcher/minecraft/mod/ResourcePackFolderModel.cpp @@ -44,7 +44,7 @@ #include "Application.h" #include "Version.h" -#include "minecraft/mod/tasks/LocalResourcePackParseTask.h" +#include "minecraft/mod/tasks/LocalDataPackParseTask.h" ResourcePackFolderModel::ResourcePackFolderModel(const QDir& dir, BaseInstance* instance, bool is_indexed, bool create_dir, QObject* parent) : ResourceFolderModel(dir, instance, is_indexed, create_dir, parent) @@ -191,5 +191,5 @@ int ResourcePackFolderModel::columnCount(const QModelIndex& parent) const Task* ResourcePackFolderModel::createParseTask(Resource& resource) { - return new LocalResourcePackParseTask(m_next_resolution_ticket, static_cast(resource)); + return new LocalDataPackParseTask(m_next_resolution_ticket, dynamic_cast(&resource)); } diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp index 19b15709d..530ce44cc 100644 --- a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp @@ -23,6 +23,8 @@ #include "FileSystem.h" #include "Json.h" +#include "minecraft/mod/ResourcePack.h" +#include "minecraft/mod/tasks/LocalResourcePackParseTask.h" #include #include @@ -32,9 +34,9 @@ namespace DataPackUtils { -bool process(DataPack& pack, ProcessingLevel level) +bool process(DataPack* pack, ProcessingLevel level) { - switch (pack.type()) { + switch (pack->type()) { case ResourceType::FOLDER: return DataPackUtils::processFolder(pack, level); case ResourceType::ZIPFILE: @@ -45,16 +47,16 @@ bool process(DataPack& pack, ProcessingLevel level) } } -bool processFolder(DataPack& pack, ProcessingLevel level) +bool processFolder(DataPack* pack, ProcessingLevel level) { - Q_ASSERT(pack.type() == ResourceType::FOLDER); + Q_ASSERT(pack->type() == ResourceType::FOLDER); auto mcmeta_invalid = [&pack]() { - qWarning() << "Data pack at" << pack.fileinfo().filePath() << "does not have a valid pack.mcmeta"; + qWarning() << "Data pack at" << pack->fileinfo().filePath() << "does not have a valid pack.mcmeta"; return false; // the mcmeta is not optional }; - QFileInfo mcmeta_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.mcmeta")); + QFileInfo mcmeta_file_info(FS::PathCombine(pack->fileinfo().filePath(), "pack.mcmeta")); if (mcmeta_file_info.exists() && mcmeta_file_info.isFile()) { QFile mcmeta_file(mcmeta_file_info.filePath()); if (!mcmeta_file.open(QIODevice::ReadOnly)) @@ -72,7 +74,7 @@ bool processFolder(DataPack& pack, ProcessingLevel level) return mcmeta_invalid(); // mcmeta file isn't a valid file } - QFileInfo data_dir_info(FS::PathCombine(pack.fileinfo().filePath(), "data")); + QFileInfo data_dir_info(FS::PathCombine(pack->fileinfo().filePath(), pack->directory())); if (!data_dir_info.exists() || !data_dir_info.isDir()) { return false; // data dir does not exists or isn't valid } @@ -80,22 +82,46 @@ bool processFolder(DataPack& pack, ProcessingLevel level) if (level == ProcessingLevel::BasicInfoOnly) { return true; // only need basic info already checked } + if (auto rp = dynamic_cast(pack)) { + auto png_invalid = [&pack]() { + qWarning() << "Resource pack at" << pack->fileinfo().filePath() << "does not have a valid pack.png"; + return true; // the png is optional + }; + + QFileInfo image_file_info(FS::PathCombine(pack->fileinfo().filePath(), "pack.png")); + if (image_file_info.exists() && image_file_info.isFile()) { + QFile pack_png_file(image_file_info.filePath()); + if (!pack_png_file.open(QIODevice::ReadOnly)) + return png_invalid(); // can't open pack.png file + + auto data = pack_png_file.readAll(); + + bool pack_png_result = ResourcePackUtils::processPackPNG(rp, std::move(data)); + + pack_png_file.close(); + if (!pack_png_result) { + return png_invalid(); // pack.png invalid + } + } else { + return png_invalid(); // pack.png does not exists or is not a valid file. + } + } return true; // all tests passed } -bool processZIP(DataPack& pack, ProcessingLevel level) +bool processZIP(DataPack* pack, ProcessingLevel level) { - Q_ASSERT(pack.type() == ResourceType::ZIPFILE); + Q_ASSERT(pack->type() == ResourceType::ZIPFILE); - QuaZip zip(pack.fileinfo().filePath()); + QuaZip zip(pack->fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) return false; // can't open zip file QuaZipFile file(&zip); auto mcmeta_invalid = [&pack]() { - qWarning() << "Data pack at" << pack.fileinfo().filePath() << "does not have a valid pack.mcmeta"; + qWarning() << "Data pack at" << pack->fileinfo().filePath() << "does not have a valid pack.mcmeta"; return false; // the mcmeta is not optional }; @@ -119,7 +145,7 @@ bool processZIP(DataPack& pack, ProcessingLevel level) } QuaZipDir zipDir(&zip); - if (!zipDir.exists("/data")) { + if (!zipDir.exists(pack->directory())) { return false; // data dir does not exists at zip root } @@ -127,21 +153,49 @@ bool processZIP(DataPack& pack, ProcessingLevel level) zip.close(); return true; // only need basic info already checked } + if (auto rp = dynamic_cast(pack)) { + auto png_invalid = [&pack]() { + qWarning() << "Resource pack at" << pack->fileinfo().filePath() << "does not have a valid pack.png"; + return true; // the png is optional + }; + if (zip.setCurrentFile("pack.png")) { + if (!file.open(QIODevice::ReadOnly)) { + qCritical() << "Failed to open file in zip."; + zip.close(); + return png_invalid(); + } + + auto data = file.readAll(); + + bool pack_png_result = ResourcePackUtils::processPackPNG(rp, std::move(data)); + + file.close(); + zip.close(); + if (!pack_png_result) { + return png_invalid(); // pack.png invalid + } + } else { + zip.close(); + return png_invalid(); // could not set pack.mcmeta as current file. + } + } zip.close(); return true; } // https://minecraft.wiki/w/Data_pack#pack.mcmeta -bool processMCMeta(DataPack& pack, QByteArray&& raw_data) +// https://minecraft.wiki/w/Raw_JSON_text_format +// https://minecraft.wiki/w/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta +bool processMCMeta(DataPack* pack, QByteArray&& raw_data) { try { auto json_doc = QJsonDocument::fromJson(raw_data); auto pack_obj = Json::requireObject(json_doc.object(), "pack", {}); - pack.setPackFormat(Json::ensureInteger(pack_obj, "pack_format", 0)); - pack.setDescription(Json::ensureString(pack_obj, "description", "")); + pack->setPackFormat(Json::ensureInteger(pack_obj, "pack_format", 0)); + pack->setDescription(ResourcePackUtils::processComponent(pack_obj.value("description"))); } catch (Json::JsonException& e) { qWarning() << "JsonException: " << e.what() << e.cause(); return false; @@ -152,26 +206,19 @@ bool processMCMeta(DataPack& pack, QByteArray&& raw_data) bool validate(QFileInfo file) { DataPack dp{ file }; - return DataPackUtils::process(dp, ProcessingLevel::BasicInfoOnly) && dp.valid(); + return DataPackUtils::process(&dp, ProcessingLevel::BasicInfoOnly) && dp.valid(); } } // namespace DataPackUtils -LocalDataPackParseTask::LocalDataPackParseTask(int token, DataPack& dp) : Task(false), m_token(token), m_data_pack(dp) {} - -bool LocalDataPackParseTask::abort() -{ - m_aborted = true; - return true; -} +LocalDataPackParseTask::LocalDataPackParseTask(int token, DataPack* dp) : Task(false), m_token(token), m_data_pack(dp) {} void LocalDataPackParseTask::executeTask() { - if (!DataPackUtils::process(m_data_pack)) + if (!DataPackUtils::process(m_data_pack)) { + emitFailed("process failed"); return; + } - if (m_aborted) - emitAborted(); - else - emitSucceeded(); + emitSucceeded(); } diff --git a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h index 12fd8c82c..7355783df 100644 --- a/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalDataPackParseTask.h @@ -32,12 +32,12 @@ namespace DataPackUtils { enum class ProcessingLevel { Full, BasicInfoOnly }; -bool process(DataPack& pack, ProcessingLevel level = ProcessingLevel::Full); +bool process(DataPack* pack, ProcessingLevel level = ProcessingLevel::Full); -bool processZIP(DataPack& pack, ProcessingLevel level = ProcessingLevel::Full); -bool processFolder(DataPack& pack, ProcessingLevel level = ProcessingLevel::Full); +bool processZIP(DataPack* pack, ProcessingLevel level = ProcessingLevel::Full); +bool processFolder(DataPack* pack, ProcessingLevel level = ProcessingLevel::Full); -bool processMCMeta(DataPack& pack, QByteArray&& raw_data); +bool processMCMeta(DataPack* pack, QByteArray&& raw_data); /** Checks whether a file is valid as a data pack or not. */ bool validate(QFileInfo file); @@ -47,10 +47,7 @@ bool validate(QFileInfo file); class LocalDataPackParseTask : public Task { Q_OBJECT public: - LocalDataPackParseTask(int token, DataPack& dp); - - [[nodiscard]] bool canAbort() const override { return true; } - bool abort() override; + LocalDataPackParseTask(int token, DataPack* dp); void executeTask() override; @@ -59,7 +56,5 @@ class LocalDataPackParseTask : public Task { private: int m_token; - DataPack& m_data_pack; - - bool m_aborted = false; + DataPack* m_data_pack; }; diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp index 0b80db82d..db4b2e55c 100644 --- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.cpp @@ -20,6 +20,7 @@ #include "FileSystem.h" #include "Json.h" +#include "minecraft/mod/tasks/LocalDataPackParseTask.h" #include #include @@ -29,155 +30,6 @@ namespace ResourcePackUtils { -bool process(ResourcePack& pack, ProcessingLevel level) -{ - switch (pack.type()) { - case ResourceType::FOLDER: - return ResourcePackUtils::processFolder(pack, level); - case ResourceType::ZIPFILE: - return ResourcePackUtils::processZIP(pack, level); - default: - qWarning() << "Invalid type for resource pack parse task!"; - return false; - } -} - -bool processFolder(ResourcePack& pack, ProcessingLevel level) -{ - Q_ASSERT(pack.type() == ResourceType::FOLDER); - - auto mcmeta_invalid = [&pack]() { - qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.mcmeta"; - return false; // the mcmeta is not optional - }; - - QFileInfo mcmeta_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.mcmeta")); - if (mcmeta_file_info.exists() && mcmeta_file_info.isFile()) { - QFile mcmeta_file(mcmeta_file_info.filePath()); - if (!mcmeta_file.open(QIODevice::ReadOnly)) - return mcmeta_invalid(); // can't open mcmeta file - - auto data = mcmeta_file.readAll(); - - bool mcmeta_result = ResourcePackUtils::processMCMeta(pack, std::move(data)); - - mcmeta_file.close(); - if (!mcmeta_result) { - return mcmeta_invalid(); // mcmeta invalid - } - } else { - return mcmeta_invalid(); // mcmeta file isn't a valid file - } - - QFileInfo assets_dir_info(FS::PathCombine(pack.fileinfo().filePath(), "assets")); - if (!assets_dir_info.exists() || !assets_dir_info.isDir()) { - return false; // assets dir does not exists or isn't valid - } - - if (level == ProcessingLevel::BasicInfoOnly) { - return true; // only need basic info already checked - } - - auto png_invalid = [&pack]() { - qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.png"; - return true; // the png is optional - }; - - QFileInfo image_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.png")); - if (image_file_info.exists() && image_file_info.isFile()) { - QFile pack_png_file(image_file_info.filePath()); - if (!pack_png_file.open(QIODevice::ReadOnly)) - return png_invalid(); // can't open pack.png file - - auto data = pack_png_file.readAll(); - - bool pack_png_result = ResourcePackUtils::processPackPNG(pack, std::move(data)); - - pack_png_file.close(); - if (!pack_png_result) { - return png_invalid(); // pack.png invalid - } - } else { - return png_invalid(); // pack.png does not exists or is not a valid file. - } - - return true; // all tests passed -} - -bool processZIP(ResourcePack& pack, ProcessingLevel level) -{ - Q_ASSERT(pack.type() == ResourceType::ZIPFILE); - - QuaZip zip(pack.fileinfo().filePath()); - if (!zip.open(QuaZip::mdUnzip)) - return false; // can't open zip file - - QuaZipFile file(&zip); - - auto mcmeta_invalid = [&pack]() { - qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.mcmeta"; - return false; // the mcmeta is not optional - }; - - if (zip.setCurrentFile("pack.mcmeta")) { - if (!file.open(QIODevice::ReadOnly)) { - qCritical() << "Failed to open file in zip."; - zip.close(); - return mcmeta_invalid(); - } - - auto data = file.readAll(); - - bool mcmeta_result = ResourcePackUtils::processMCMeta(pack, std::move(data)); - - file.close(); - if (!mcmeta_result) { - return mcmeta_invalid(); // mcmeta invalid - } - } else { - return mcmeta_invalid(); // could not set pack.mcmeta as current file. - } - - QuaZipDir zipDir(&zip); - if (!zipDir.exists("/assets")) { - return false; // assets dir does not exists at zip root - } - - if (level == ProcessingLevel::BasicInfoOnly) { - zip.close(); - return true; // only need basic info already checked - } - - auto png_invalid = [&pack]() { - qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.png"; - return true; // the png is optional - }; - - if (zip.setCurrentFile("pack.png")) { - if (!file.open(QIODevice::ReadOnly)) { - qCritical() << "Failed to open file in zip."; - zip.close(); - return png_invalid(); - } - - auto data = file.readAll(); - - bool pack_png_result = ResourcePackUtils::processPackPNG(pack, std::move(data)); - - file.close(); - zip.close(); - if (!pack_png_result) { - return png_invalid(); // pack.png invalid - } - } else { - zip.close(); - return png_invalid(); // could not set pack.mcmeta as current file. - } - - zip.close(); - return true; -} - QString buildStyle(const QJsonObject& obj) { QStringList styles; @@ -259,30 +111,11 @@ QString processComponent(const QJsonValue& value, bool strikethrough, bool under return {}; } -// https://minecraft.wiki/w/Raw_JSON_text_format -// https://minecraft.wiki/w/Tutorials/Creating_a_resource_pack#Formatting_pack.mcmeta -bool processMCMeta(ResourcePack& pack, QByteArray&& raw_data) -{ - try { - auto json_doc = QJsonDocument::fromJson(raw_data); - auto pack_obj = Json::requireObject(json_doc.object(), "pack", {}); - - pack.setPackFormat(Json::ensureInteger(pack_obj, "pack_format", 0)); - - pack.setDescription(processComponent(pack_obj.value("description"))); - - } catch (Json::JsonException& e) { - qWarning() << "JsonException: " << e.what() << e.cause(); - return false; - } - return true; -} - -bool processPackPNG(const ResourcePack& pack, QByteArray&& raw_data) +bool processPackPNG(const ResourcePack* pack, QByteArray&& raw_data) { auto img = QImage::fromData(raw_data); if (!img.isNull()) { - pack.setImage(img); + pack->setImage(img); } else { qWarning() << "Failed to parse pack.png."; return false; @@ -290,16 +123,16 @@ bool processPackPNG(const ResourcePack& pack, QByteArray&& raw_data) return true; } -bool processPackPNG(const ResourcePack& pack) +bool processPackPNG(const ResourcePack* pack) { auto png_invalid = [&pack]() { - qWarning() << "Resource pack at" << pack.fileinfo().filePath() << "does not have a valid pack.png"; + qWarning() << "Resource pack at" << pack->fileinfo().filePath() << "does not have a valid pack.png"; return false; }; - switch (pack.type()) { + switch (pack->type()) { case ResourceType::FOLDER: { - QFileInfo image_file_info(FS::PathCombine(pack.fileinfo().filePath(), "pack.png")); + QFileInfo image_file_info(FS::PathCombine(pack->fileinfo().filePath(), "pack.png")); if (image_file_info.exists() && image_file_info.isFile()) { QFile pack_png_file(image_file_info.filePath()); if (!pack_png_file.open(QIODevice::ReadOnly)) @@ -319,7 +152,7 @@ bool processPackPNG(const ResourcePack& pack) return false; // not processed correctly; https://github.com/PrismLauncher/PrismLauncher/issues/1740 } case ResourceType::ZIPFILE: { - QuaZip zip(pack.fileinfo().filePath()); + QuaZip zip(pack->fileinfo().filePath()); if (!zip.open(QuaZip::mdUnzip)) return false; // can't open zip file @@ -353,28 +186,7 @@ bool processPackPNG(const ResourcePack& pack) bool validate(QFileInfo file) { ResourcePack rp{ file }; - return ResourcePackUtils::process(rp, ProcessingLevel::BasicInfoOnly) && rp.valid(); + return DataPackUtils::process(&rp, DataPackUtils::ProcessingLevel::BasicInfoOnly) && rp.valid(); } } // namespace ResourcePackUtils - -LocalResourcePackParseTask::LocalResourcePackParseTask(int token, ResourcePack& rp) : Task(false), m_token(token), m_resource_pack(rp) {} - -bool LocalResourcePackParseTask::abort() -{ - m_aborted = true; - return true; -} - -void LocalResourcePackParseTask::executeTask() -{ - if (!ResourcePackUtils::process(m_resource_pack)) { - emitFailed("this is not a resource pack"); - return; - } - - if (m_aborted) - emitAborted(); - else - emitSucceeded(); -} diff --git a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h index 97bf7b2ba..6b4378aa6 100644 --- a/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h +++ b/launcher/minecraft/mod/tasks/LocalResourcePackParseTask.h @@ -23,44 +23,14 @@ #include "minecraft/mod/ResourcePack.h" -#include "tasks/Task.h" - namespace ResourcePackUtils { -enum class ProcessingLevel { Full, BasicInfoOnly }; - -bool process(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full); - -bool processZIP(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full); -bool processFolder(ResourcePack& pack, ProcessingLevel level = ProcessingLevel::Full); - QString processComponent(const QJsonValue& value, bool strikethrough = false, bool underline = false); -bool processMCMeta(ResourcePack& pack, QByteArray&& raw_data); -bool processPackPNG(const ResourcePack& pack, QByteArray&& raw_data); +bool processPackPNG(const ResourcePack* pack, QByteArray&& raw_data); /// processes ONLY the pack.png (rest of the pack may be invalid) -bool processPackPNG(const ResourcePack& pack); +bool processPackPNG(const ResourcePack* pack); /** Checks whether a file is valid as a resource pack or not. */ bool validate(QFileInfo file); } // namespace ResourcePackUtils - -class LocalResourcePackParseTask : public Task { - Q_OBJECT - public: - LocalResourcePackParseTask(int token, ResourcePack& rp); - - [[nodiscard]] bool canAbort() const override { return true; } - bool abort() override; - - void executeTask() override; - - [[nodiscard]] int token() const { return m_token; } - - private: - int m_token; - - ResourcePack& m_resource_pack; - - bool m_aborted = false; -}; diff --git a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp index 74d8d8d60..d45f537fa 100644 --- a/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp @@ -180,8 +180,10 @@ bool LocalWorldSaveParseTask::abort() void LocalWorldSaveParseTask::executeTask() { - if (!WorldSaveUtils::process(m_save)) + if (!WorldSaveUtils::process(m_save)) { + emitFailed("this is not a world"); return; + } if (m_aborted) emitAborted(); diff --git a/tests/DataPackParse_test.cpp b/tests/DataPackParse_test.cpp index cd6ae8e8f..14f80858f 100644 --- a/tests/DataPackParse_test.cpp +++ b/tests/DataPackParse_test.cpp @@ -38,7 +38,7 @@ class DataPackParseTest : public QObject { QString zip_dp = FS::PathCombine(source, "test_data_pack_boogaloo.zip"); DataPack pack{ QFileInfo(zip_dp) }; - bool valid = DataPackUtils::processZIP(pack); + bool valid = DataPackUtils::processZIP(&pack); QVERIFY(pack.packFormat() == 4); QVERIFY(pack.description() == "Some data pack 2 boobgaloo"); @@ -52,7 +52,7 @@ class DataPackParseTest : public QObject { QString folder_dp = FS::PathCombine(source, "test_folder"); DataPack pack{ QFileInfo(folder_dp) }; - bool valid = DataPackUtils::processFolder(pack); + bool valid = DataPackUtils::processFolder(&pack); QVERIFY(pack.packFormat() == 10); QVERIFY(pack.description() == "Some data pack, maybe"); @@ -66,7 +66,7 @@ class DataPackParseTest : public QObject { QString folder_dp = FS::PathCombine(source, "another_test_folder"); DataPack pack{ QFileInfo(folder_dp) }; - bool valid = DataPackUtils::process(pack); + bool valid = DataPackUtils::process(&pack); QVERIFY(pack.packFormat() == 6); QVERIFY(pack.description() == "Some data pack three, leaves on the tree"); diff --git a/tests/ResourcePackParse_test.cpp b/tests/ResourcePackParse_test.cpp index e1092167d..17c0482fc 100644 --- a/tests/ResourcePackParse_test.cpp +++ b/tests/ResourcePackParse_test.cpp @@ -18,6 +18,7 @@ #include #include +#include "minecraft/mod/tasks/LocalDataPackParseTask.h" #include @@ -35,7 +36,7 @@ class ResourcePackParseTest : public QObject { QString zip_rp = FS::PathCombine(source, "test_resource_pack_idk.zip"); ResourcePack pack{ QFileInfo(zip_rp) }; - bool valid = ResourcePackUtils::processZIP(pack, ResourcePackUtils::ProcessingLevel::BasicInfoOnly); + bool valid = DataPackUtils::processZIP(&pack, DataPackUtils::ProcessingLevel::BasicInfoOnly); QVERIFY(pack.packFormat() == 3); QVERIFY(pack.description() == @@ -51,7 +52,7 @@ class ResourcePackParseTest : public QObject { QString folder_rp = FS::PathCombine(source, "test_folder"); ResourcePack pack{ QFileInfo(folder_rp) }; - bool valid = ResourcePackUtils::processFolder(pack, ResourcePackUtils::ProcessingLevel::BasicInfoOnly); + bool valid = DataPackUtils::processFolder(&pack, DataPackUtils::ProcessingLevel::BasicInfoOnly); QVERIFY(pack.packFormat() == 1); QVERIFY(pack.description() == "Some resource pack maybe"); @@ -65,7 +66,7 @@ class ResourcePackParseTest : public QObject { QString folder_rp = FS::PathCombine(source, "another_test_folder"); ResourcePack pack{ QFileInfo(folder_rp) }; - bool valid = ResourcePackUtils::process(pack, ResourcePackUtils::ProcessingLevel::BasicInfoOnly); + bool valid = DataPackUtils::process(&pack, DataPackUtils::ProcessingLevel::BasicInfoOnly); QVERIFY(pack.packFormat() == 6); QVERIFY(pack.description() == "o quartel pegou fogo, policia deu sinal, acode acode acode a bandeira nacional"); From 7dde35fef2108b8f870c7ed70b42f7e2358396d5 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 20 Dec 2024 19:57:09 +0200 Subject: [PATCH 461/616] Add settings to control the if prism should move the downloaded mods Signed-off-by: Trial97 --- launcher/Application.cpp | 1 + .../flame/FlameInstanceCreationTask.cpp | 10 ++++- launcher/ui/dialogs/BlockedModsDialog.cpp | 10 +++++ launcher/ui/dialogs/BlockedModsDialog.h | 1 + launcher/ui/pages/global/LauncherPage.cpp | 2 + launcher/ui/pages/global/LauncherPage.ui | 44 ++++++++++++------- 6 files changed, 51 insertions(+), 17 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 72f847d88..b0ff14a6b 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -616,6 +616,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->registerSetting("IconsDir", "icons"); m_settings->registerSetting("DownloadsDir", QStandardPaths::writableLocation(QStandardPaths::DownloadLocation)); m_settings->registerSetting("DownloadsDirWatchRecursive", false); + m_settings->registerSetting("MoveModsFromDownloadsDir", false); m_settings->registerSetting("SkinsDir", "skins"); m_settings->registerSetting("JavaDir", "java"); diff --git a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 3fbe1aced..e60d32cc0 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -597,8 +597,14 @@ void FlameCreationTask::copyBlockedMods(QList const& blocked_mods) qDebug() << "Will try to copy" << mod.localPath << "to" << destPath; - if (!FS::copy(mod.localPath, destPath)()) { - qDebug() << "Copy of" << mod.localPath << "to" << destPath << "Failed"; + if (mod.move) { + if (!FS::move(mod.localPath, destPath)) { + qDebug() << "Move of" << mod.localPath << "to" << destPath << "Failed"; + } + } else { + if (!FS::copy(mod.localPath, destPath)()) { + qDebug() << "Copy of" << mod.localPath << "to" << destPath << "Failed"; + } } i++; diff --git a/launcher/ui/dialogs/BlockedModsDialog.cpp b/launcher/ui/dialogs/BlockedModsDialog.cpp index b3b6d2bcc..0095f7af9 100644 --- a/launcher/ui/dialogs/BlockedModsDialog.cpp +++ b/launcher/ui/dialogs/BlockedModsDialog.cpp @@ -288,6 +288,8 @@ void BlockedModsDialog::checkMatchHash(QString hash, QString path) qDebug() << "[Blocked Mods Dialog] Checking for match on hash: " << hash << "| From path:" << path; + auto downloadDir = QFileInfo(APPLICATION->settings()->get("DownloadsDir").toString()).absoluteFilePath(); + auto moveFiles = APPLICATION->settings()->get("MoveModsFromDownloadsDir").toBool(); for (auto& mod : m_mods) { if (mod.matched) { continue; @@ -295,6 +297,9 @@ void BlockedModsDialog::checkMatchHash(QString hash, QString path) if (mod.hash.compare(hash, Qt::CaseInsensitive) == 0) { mod.matched = true; mod.localPath = path; + if (moveFiles) { + mod.move = QFileInfo(path).absoluteFilePath().startsWith(downloadDir); + } match = true; qDebug() << "[Blocked Mods Dialog] Hash match found:" << mod.name << hash << "| From path:" << path; @@ -346,6 +351,8 @@ bool BlockedModsDialog::checkValidPath(QString path) return fsName.compare(metaName) == 0; }; + auto downloadDir = QFileInfo(APPLICATION->settings()->get("DownloadsDir").toString()).absoluteFilePath(); + auto moveFiles = APPLICATION->settings()->get("MoveModsFromDownloadsDir").toBool(); for (auto& mod : m_mods) { if (compare(filename, mod.name)) { // if the mod is not yet matched and doesn't have a hash then @@ -353,6 +360,9 @@ bool BlockedModsDialog::checkValidPath(QString path) if (!mod.matched && mod.hash.isEmpty()) { mod.matched = true; mod.localPath = path; + if (moveFiles) { + mod.move = QFileInfo(path).absoluteFilePath().startsWith(downloadDir); + } return false; } qDebug() << "[Blocked Mods Dialog] Name match found:" << mod.name << "| From path:" << path; diff --git a/launcher/ui/dialogs/BlockedModsDialog.h b/launcher/ui/dialogs/BlockedModsDialog.h index 09722bce9..b2d2c0374 100644 --- a/launcher/ui/dialogs/BlockedModsDialog.h +++ b/launcher/ui/dialogs/BlockedModsDialog.h @@ -42,6 +42,7 @@ struct BlockedMod { bool matched; QString localPath; QString targetFolder; + bool move = false; }; QT_BEGIN_NAMESPACE diff --git a/launcher/ui/pages/global/LauncherPage.cpp b/launcher/ui/pages/global/LauncherPage.cpp index 8bbed9643..831b40231 100644 --- a/launcher/ui/pages/global/LauncherPage.cpp +++ b/launcher/ui/pages/global/LauncherPage.cpp @@ -235,6 +235,7 @@ void LauncherPage::applySettings() s->set("SkinsDir", ui->skinsDirTextBox->text()); s->set("JavaDir", ui->javaDirTextBox->text()); s->set("DownloadsDirWatchRecursive", ui->downloadsDirWatchRecursiveCheckBox->isChecked()); + s->set("MoveModsFromDownloadsDir", ui->downloadsDirMoveCheckBox->isChecked()); auto sortMode = (InstSortMode)ui->sortingModeGroup->checkedId(); switch (sortMode) { @@ -302,6 +303,7 @@ void LauncherPage::loadSettings() ui->skinsDirTextBox->setText(s->get("SkinsDir").toString()); ui->javaDirTextBox->setText(s->get("JavaDir").toString()); ui->downloadsDirWatchRecursiveCheckBox->setChecked(s->get("DownloadsDirWatchRecursive").toBool()); + ui->downloadsDirMoveCheckBox->setChecked(s->get("MoveModsFromDownloadsDir").toBool()); QString sortMode = s->get("InstSortMode").toString(); diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui index a46a6fd5d..7e374662b 100644 --- a/launcher/ui/pages/global/LauncherPage.ui +++ b/launcher/ui/pages/global/LauncherPage.ui @@ -35,7 +35,7 @@ - QTabWidget::TabShape::Rounded + QTabWidget::Rounded 0 @@ -48,7 +48,7 @@ - Qt::ScrollBarPolicy::ScrollBarAlwaysOff + Qt::ScrollBarAsNeeded true @@ -156,14 +156,28 @@ - - - When enabled, in addition to the downloads folder, its sub folders will also be searched when looking for resources (e.g. when looking for blocked mods on CurseForge). - - - Check downloads folder recursively - - + + + + + When enabled, in addition to the downloads folder, its sub folders will also be searched when looking for resources (e.g. when looking for blocked mods on CurseForge). + + + Check downloads folder recursively + + + + + + + When enabled, it will move blocked resources instead of copying them. + + + Move blocked resources + + + + @@ -365,7 +379,7 @@ - Qt::Orientation::Vertical + Qt::Vertical @@ -465,7 +479,7 @@ - Qt::Orientation::Horizontal + Qt::Horizontal @@ -506,7 +520,7 @@ - Qt::Orientation::Vertical + Qt::Vertical @@ -615,13 +629,13 @@ - Qt::ScrollBarPolicy::ScrollBarAlwaysOff + Qt::ScrollBarAsNeeded false - Qt::TextInteractionFlag::TextSelectableByKeyboard|Qt::TextInteractionFlag::TextSelectableByMouse + Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse From e01df73debc8cb578e3e1b1e557388a8d0a7a052 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 31 Dec 2024 11:13:01 +0200 Subject: [PATCH 462/616] remove EditAccountDialog Signed-off-by: Trial97 --- launcher/CMakeLists.txt | 3 - launcher/ui/dialogs/EditAccountDialog.cpp | 64 --------------- launcher/ui/dialogs/EditAccountDialog.h | 52 ------------- launcher/ui/dialogs/EditAccountDialog.ui | 94 ----------------------- 4 files changed, 213 deletions(-) delete mode 100644 launcher/ui/dialogs/EditAccountDialog.cpp delete mode 100644 launcher/ui/dialogs/EditAccountDialog.h delete mode 100644 launcher/ui/dialogs/EditAccountDialog.ui diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 991f610dd..00a7274ea 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1030,8 +1030,6 @@ SET(LAUNCHER_SOURCES ui/dialogs/CopyInstanceDialog.h ui/dialogs/CustomMessageBox.cpp ui/dialogs/CustomMessageBox.h - ui/dialogs/EditAccountDialog.cpp - ui/dialogs/EditAccountDialog.h ui/dialogs/ExportInstanceDialog.cpp ui/dialogs/ExportInstanceDialog.h ui/dialogs/ExportPackDialog.cpp @@ -1217,7 +1215,6 @@ qt_wrap_ui(LAUNCHER_UI ui/dialogs/MSALoginDialog.ui ui/dialogs/OfflineLoginDialog.ui ui/dialogs/AboutDialog.ui - ui/dialogs/EditAccountDialog.ui ui/dialogs/ReviewMessageBox.ui ui/dialogs/ScrollMessageBox.ui ui/dialogs/BlockedModsDialog.ui diff --git a/launcher/ui/dialogs/EditAccountDialog.cpp b/launcher/ui/dialogs/EditAccountDialog.cpp deleted file mode 100644 index 9d0175bbc..000000000 --- a/launcher/ui/dialogs/EditAccountDialog.cpp +++ /dev/null @@ -1,64 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "EditAccountDialog.h" -#include -#include -#include -#include "ui_EditAccountDialog.h" - -EditAccountDialog::EditAccountDialog(const QString& text, QWidget* parent, int flags) : QDialog(parent), ui(new Ui::EditAccountDialog) -{ - ui->setupUi(this); - - ui->label->setText(text); - ui->label->setVisible(!text.isEmpty()); - - ui->userTextBox->setEnabled(flags & UsernameField); - ui->passTextBox->setEnabled(flags & PasswordField); - - ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); - ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); -} - -EditAccountDialog::~EditAccountDialog() -{ - delete ui; -} - -void EditAccountDialog::on_label_linkActivated(const QString& link) -{ - DesktopServices::openUrl(QUrl(link)); -} - -void EditAccountDialog::setUsername(const QString& user) const -{ - ui->userTextBox->setText(user); -} - -QString EditAccountDialog::username() const -{ - return ui->userTextBox->text(); -} - -void EditAccountDialog::setPassword(const QString& pass) const -{ - ui->passTextBox->setText(pass); -} - -QString EditAccountDialog::password() const -{ - return ui->passTextBox->text(); -} diff --git a/launcher/ui/dialogs/EditAccountDialog.h b/launcher/ui/dialogs/EditAccountDialog.h deleted file mode 100644 index 7a9ccba79..000000000 --- a/launcher/ui/dialogs/EditAccountDialog.h +++ /dev/null @@ -1,52 +0,0 @@ -/* Copyright 2013-2021 MultiMC Contributors - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#pragma once - -#include - -namespace Ui { -class EditAccountDialog; -} - -class EditAccountDialog : public QDialog { - Q_OBJECT - - public: - explicit EditAccountDialog(const QString& text = "", QWidget* parent = 0, int flags = UsernameField | PasswordField); - ~EditAccountDialog(); - - void setUsername(const QString& user) const; - void setPassword(const QString& pass) const; - - QString username() const; - QString password() const; - - enum Flags { - NoFlags = 0, - - //! Specifies that the dialog should have a username field. - UsernameField, - - //! Specifies that the dialog should have a password field. - PasswordField, - }; - - private slots: - void on_label_linkActivated(const QString& link); - - private: - Ui::EditAccountDialog* ui; -}; diff --git a/launcher/ui/dialogs/EditAccountDialog.ui b/launcher/ui/dialogs/EditAccountDialog.ui deleted file mode 100644 index e87509bcb..000000000 --- a/launcher/ui/dialogs/EditAccountDialog.ui +++ /dev/null @@ -1,94 +0,0 @@ - - - EditAccountDialog - - - - 0 - 0 - 400 - 148 - - - - Login - - - - - - Message label placeholder. - - - Qt::RichText - - - Qt::LinksAccessibleByKeyboard|Qt::LinksAccessibleByMouse|Qt::TextBrowserInteraction|Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse - - - - - - - Email - - - - - - - QLineEdit::Password - - - Password - - - - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - EditAccountDialog - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - EditAccountDialog - reject() - - - 316 - 260 - - - 286 - 274 - - - - - From 6ebfcb91cf954048061ff39719629e7f581f1997 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 31 Dec 2024 13:44:22 +0200 Subject: [PATCH 463/616] propagate load component error Signed-off-by: Trial97 --- launcher/minecraft/MinecraftLoadAndCheck.cpp | 5 +- launcher/minecraft/PackProfile.cpp | 88 +++++++++++--------- launcher/minecraft/PackProfile.h | 17 +++- launcher/ui/pages/instance/VersionPage.cpp | 7 +- 4 files changed, 71 insertions(+), 46 deletions(-) diff --git a/launcher/minecraft/MinecraftLoadAndCheck.cpp b/launcher/minecraft/MinecraftLoadAndCheck.cpp index b9fb7eb0c..c0a82e61e 100644 --- a/launcher/minecraft/MinecraftLoadAndCheck.cpp +++ b/launcher/minecraft/MinecraftLoadAndCheck.cpp @@ -8,7 +8,10 @@ void MinecraftLoadAndCheck::executeTask() { // add offline metadata load task auto components = m_inst->getPackProfile(); - components->reload(m_netmode); + if (auto result = components->reload(m_netmode); !result) { + emitFailed(result.error); + return; + } m_task = components->getCurrentTask(); if (!m_task) { diff --git a/launcher/minecraft/PackProfile.cpp b/launcher/minecraft/PackProfile.cpp index 1acc87166..d6534b910 100644 --- a/launcher/minecraft/PackProfile.cpp +++ b/launcher/minecraft/PackProfile.cpp @@ -173,29 +173,32 @@ static bool savePackProfile(const QString& filename, const ComponentContainer& c } // Read the given file into component containers -static bool loadPackProfile(PackProfile* parent, - const QString& filename, - const QString& componentJsonPattern, - ComponentContainer& container) +static PackProfile::Result loadPackProfile(PackProfile* parent, + const QString& filename, + const QString& componentJsonPattern, + ComponentContainer& container) { QFile componentsFile(filename); if (!componentsFile.exists()) { - qCWarning(instanceProfileC) << "Components file" << filename << "doesn't exist. This should never happen."; - return false; + auto message = QObject::tr("Components file %1 doesn't exist. This should never happen.").arg(filename); + qCWarning(instanceProfileC) << message; + return PackProfile::Result::Error(message); } if (!componentsFile.open(QFile::ReadOnly)) { - qCCritical(instanceProfileC) << "Couldn't open" << componentsFile.fileName() << " for reading:" << componentsFile.errorString(); + auto message = QObject::tr("Couldn't open %1 for reading: %2").arg(componentsFile.fileName(), componentsFile.errorString()); + qCCritical(instanceProfileC) << message; qCWarning(instanceProfileC) << "Ignoring overridden order"; - return false; + return PackProfile::Result::Error(message); } // and it's valid JSON QJsonParseError error; QJsonDocument doc = QJsonDocument::fromJson(componentsFile.readAll(), &error); if (error.error != QJsonParseError::NoError) { - qCCritical(instanceProfileC) << "Couldn't parse" << componentsFile.fileName() << ":" << error.errorString(); + auto message = QObject::tr("Couldn't parse %1 as json: %2").arg(componentsFile.fileName(), error.errorString()); + qCCritical(instanceProfileC) << message; qCWarning(instanceProfileC) << "Ignoring overridden order"; - return false; + return PackProfile::Result::Error(message); } // and then read it and process it if all above is true. @@ -212,11 +215,13 @@ static bool loadPackProfile(PackProfile* parent, container.append(componentFromJsonV1(parent, componentJsonPattern, comp_obj)); } } catch ([[maybe_unused]] const JSONValidationError& err) { - qCCritical(instanceProfileC) << "Couldn't parse" << componentsFile.fileName() << ": bad file format"; + auto message = QObject::tr("Couldn't parse %1 : bad file format").arg(componentsFile.fileName()); + qCCritical(instanceProfileC) << message; + qCWarning(instanceProfileC) << "error:" << err.what(); container.clear(); - return false; + return PackProfile::Result::Error(message); } - return true; + return PackProfile::Result::Success(); } // END: component file format @@ -283,44 +288,43 @@ void PackProfile::save_internal() d->dirty = false; } -bool PackProfile::load() +PackProfile::Result PackProfile::load() { auto filename = componentsFilePath(); // load the new component list and swap it with the current one... ComponentContainer newComponents; - if (!loadPackProfile(this, filename, patchesPattern(), newComponents)) { + if (auto result = loadPackProfile(this, filename, patchesPattern(), newComponents); !result) { qCritical() << d->m_instance->name() << "|" << "Failed to load the component config"; - return false; - } else { - // FIXME: actually use fine-grained updates, not this... - beginResetModel(); - // disconnect all the old components - for (auto component : d->components) { - disconnect(component.get(), &Component::dataChanged, this, &PackProfile::componentDataChanged); - } - d->components.clear(); - d->componentIndex.clear(); - for (auto component : newComponents) { - if (d->componentIndex.contains(component->m_uid)) { - qWarning() << d->m_instance->name() << "|" << "Ignoring duplicate component entry" << component->m_uid; - continue; - } - connect(component.get(), &Component::dataChanged, this, &PackProfile::componentDataChanged); - d->components.append(component); - d->componentIndex[component->m_uid] = component; - } - endResetModel(); - d->loaded = true; - return true; + return result; } + // FIXME: actually use fine-grained updates, not this... + beginResetModel(); + // disconnect all the old components + for (auto component : d->components) { + disconnect(component.get(), &Component::dataChanged, this, &PackProfile::componentDataChanged); + } + d->components.clear(); + d->componentIndex.clear(); + for (auto component : newComponents) { + if (d->componentIndex.contains(component->m_uid)) { + qWarning() << d->m_instance->name() << "|" << "Ignoring duplicate component entry" << component->m_uid; + continue; + } + connect(component.get(), &Component::dataChanged, this, &PackProfile::componentDataChanged); + d->components.append(component); + d->componentIndex[component->m_uid] = component; + } + endResetModel(); + d->loaded = true; + return Result::Success(); } -void PackProfile::reload(Net::Mode netmode) +PackProfile::Result PackProfile::reload(Net::Mode netmode) { // Do not reload when the update/resolve task is running. It is in control. if (d->m_updateTask) { - return; + return Result::Success(); } // flush any scheduled saves to not lose state @@ -329,9 +333,11 @@ void PackProfile::reload(Net::Mode netmode) // FIXME: differentiate when a reapply is required by propagating state from components invalidateLaunchProfile(); - if (load()) { - resolve(netmode); + if (auto result = load(); !result) { + return result; } + resolve(netmode); + return Result::Success(); } Task::Ptr PackProfile::getCurrentTask() diff --git a/launcher/minecraft/PackProfile.h b/launcher/minecraft/PackProfile.h index b2de26ea0..d812dfa48 100644 --- a/launcher/minecraft/PackProfile.h +++ b/launcher/minecraft/PackProfile.h @@ -62,6 +62,19 @@ class PackProfile : public QAbstractListModel { public: enum Columns { NameColumn = 0, VersionColumn, NUM_COLUMNS }; + struct Result { + bool success; + QString error; + + // Implicit conversion to bool + operator bool() const { return success; } + + // Factory methods for convenience + static Result Success() { return { true, "" }; } + + static Result Error(const QString& errorMessage) { return { false, errorMessage }; } + }; + explicit PackProfile(MinecraftInstance* instance); virtual ~PackProfile(); @@ -102,7 +115,7 @@ class PackProfile : public QAbstractListModel { bool revertToBase(int index); /// reload the list, reload all components, resolve dependencies - void reload(Net::Mode netmode); + Result reload(Net::Mode netmode); // reload all components, resolve dependencies void resolve(Net::Mode netmode); @@ -169,7 +182,7 @@ class PackProfile : public QAbstractListModel { void disableInteraction(bool disable); private: - bool load(); + Result load(); bool installJarMods_internal(QStringList filepaths); bool installCustomJar_internal(QString filepath); bool installAgents_internal(QStringList filepaths); diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index ab1c48ed4..975c44de2 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -252,8 +252,11 @@ void VersionPage::updateButtons(int row) bool VersionPage::reloadPackProfile() { try { - m_profile->reload(Net::Mode::Online); - return true; + auto result = m_profile->reload(Net::Mode::Online); + if (!result) { + QMessageBox::critical(this, tr("Error"), result.error); + } + return result; } catch (const Exception& e) { QMessageBox::critical(this, tr("Error"), e.cause()); return false; From 4358e28d7e58a6410dbc95c7e19332e75bd70e40 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Tue, 31 Dec 2024 14:33:36 +0200 Subject: [PATCH 464/616] improve profile setup error message Signed-off-by: Trial97 --- launcher/ui/dialogs/ProfileSetupDialog.cpp | 31 +++++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/launcher/ui/dialogs/ProfileSetupDialog.cpp b/launcher/ui/dialogs/ProfileSetupDialog.cpp index a6512784f..4d9040785 100644 --- a/launcher/ui/dialogs/ProfileSetupDialog.cpp +++ b/launcher/ui/dialogs/ProfileSetupDialog.cpp @@ -226,14 +226,17 @@ struct MojangError { static MojangError fromJSON(QByteArray data) { MojangError out; - out.error = QString::fromUtf8(data); + out.rawError = QString::fromUtf8(data); auto doc = QJsonDocument::fromJson(data, &out.parseError); - auto object = doc.object(); - out.fullyParsed = true; - out.fullyParsed &= Parsers::getString(object.value("path"), out.path); - out.fullyParsed &= Parsers::getString(object.value("error"), out.error); - out.fullyParsed &= Parsers::getString(object.value("errorMessage"), out.errorMessage); + out.fullyParsed = false; + if (!out.parseError.error) { + auto object = doc.object(); + out.fullyParsed = true; + out.fullyParsed &= Parsers::getString(object.value("path"), out.path); + out.fullyParsed &= Parsers::getString(object.value("error"), out.error); + out.fullyParsed &= Parsers::getString(object.value("errorMessage"), out.errorMessage); + } return out; } @@ -261,7 +264,21 @@ void ProfileSetupDialog::setupProfileFinished() } else { auto parsedError = MojangError::fromJSON(*m_profile_response); ui->errorLabel->setVisible(true); - ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + parsedError.errorMessage); + + QString errorMessage = tr("Network error(%1): %2 ;HTTP Status: %3") + .arg(QString::number(m_profile_task->error()), m_profile_task->errorString(), + QString::number(m_profile_task->replyStatusCode())); + + if (parsedError.fullyParsed) { + errorMessage += "Path: " + parsedError.path + "\n"; + errorMessage += "Error: " + parsedError.error + "\n"; + errorMessage += "Error message: " + parsedError.errorMessage + "\n"; + } else { + errorMessage += "Failed to parse Mojang error: " + parsedError.parseError.errorString() + "\n"; + errorMessage += "Raw contents:\n" + parsedError.rawError + "\n"; + } + + ui->errorLabel->setText(tr("The server returned the following error:") + "\n\n" + errorMessage); qDebug() << parsedError.rawError; auto button = ui->buttonBox->button(QDialogButtonBox::Cancel); button->setEnabled(true); From 82a500f4e8828b22431df1acdc06818bf8bb5cc9 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 5 Jan 2025 00:25:34 +0000 Subject: [PATCH 465/616] chore(nix): update lockfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Flake lock file updates: • Updated input 'nixpkgs': 'github:NixOS/nixpkgs/5d67ea6b4b63378b9c13be21e2ec9d1afc921713?narHash=sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g%3D' (2024-12-11) → 'github:NixOS/nixpkgs/6df24922a1400241dae323af55f30e4318a6ca65?narHash=sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk%3D' (2025-01-02) --- flake.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/flake.lock b/flake.lock index f01d7da12..c2f37cf0d 100644 --- a/flake.lock +++ b/flake.lock @@ -49,11 +49,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1733940404, - "narHash": "sha256-Pj39hSoUA86ZePPF/UXiYHHM7hMIkios8TYG29kQT4g=", + "lastModified": 1735834308, + "narHash": "sha256-dklw3AXr3OGO4/XT1Tu3Xz9n/we8GctZZ75ZWVqAVhk=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "5d67ea6b4b63378b9c13be21e2ec9d1afc921713", + "rev": "6df24922a1400241dae323af55f30e4318a6ca65", "type": "github" }, "original": { From d40c8b704ce1e1d755c99c6b44e747eec48442e3 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 8 Jan 2025 01:52:11 +0200 Subject: [PATCH 466/616] fix drop file on resource page Signed-off-by: Trial97 --- launcher/ui/pages/instance/ExternalResourcesPage.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/ui/pages/instance/ExternalResourcesPage.ui b/launcher/ui/pages/instance/ExternalResourcesPage.ui index 9c41f3a71..5df8aafa2 100644 --- a/launcher/ui/pages/instance/ExternalResourcesPage.ui +++ b/launcher/ui/pages/instance/ExternalResourcesPage.ui @@ -60,7 +60,7 @@ true - QAbstractItemView::NoDragDrop + QAbstractItemView::DropOnly true From 0f9ea5c9498fcfe024034cad465b6be9908041b7 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Wed, 8 Jan 2025 01:55:45 +0200 Subject: [PATCH 467/616] remove drop label Signed-off-by: Trial97 --- launcher/CMakeLists.txt | 2 -- launcher/ui/widgets/DropLabel.cpp | 40 ------------------------------- launcher/ui/widgets/DropLabel.h | 19 --------------- 3 files changed, 61 deletions(-) delete mode 100644 launcher/ui/widgets/DropLabel.cpp delete mode 100644 launcher/ui/widgets/DropLabel.h diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 991f610dd..7a569caca 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1085,8 +1085,6 @@ SET(LAUNCHER_SOURCES ui/widgets/CustomCommands.h ui/widgets/EnvironmentVariables.cpp ui/widgets/EnvironmentVariables.h - ui/widgets/DropLabel.cpp - ui/widgets/DropLabel.h ui/widgets/FocusLineEdit.cpp ui/widgets/FocusLineEdit.h ui/widgets/IconLabel.cpp diff --git a/launcher/ui/widgets/DropLabel.cpp b/launcher/ui/widgets/DropLabel.cpp deleted file mode 100644 index b1473b358..000000000 --- a/launcher/ui/widgets/DropLabel.cpp +++ /dev/null @@ -1,40 +0,0 @@ -#include "DropLabel.h" - -#include -#include - -DropLabel::DropLabel(QWidget* parent) : QLabel(parent) -{ - setAcceptDrops(true); -} - -void DropLabel::dragEnterEvent(QDragEnterEvent* event) -{ - event->acceptProposedAction(); -} - -void DropLabel::dragMoveEvent(QDragMoveEvent* event) -{ - event->acceptProposedAction(); -} - -void DropLabel::dragLeaveEvent(QDragLeaveEvent* event) -{ - event->accept(); -} - -void DropLabel::dropEvent(QDropEvent* event) -{ - const QMimeData* mimeData = event->mimeData(); - - if (!mimeData) { - return; - } - - if (mimeData->hasUrls()) { - auto urls = mimeData->urls(); - emit droppedURLs(urls); - } - - event->acceptProposedAction(); -} diff --git a/launcher/ui/widgets/DropLabel.h b/launcher/ui/widgets/DropLabel.h deleted file mode 100644 index 0027f48b1..000000000 --- a/launcher/ui/widgets/DropLabel.h +++ /dev/null @@ -1,19 +0,0 @@ -#pragma once - -#include - -class DropLabel : public QLabel { - Q_OBJECT - - public: - explicit DropLabel(QWidget* parent = nullptr); - - signals: - void droppedURLs(QList urls); - - protected: - void dropEvent(QDropEvent* event) override; - void dragEnterEvent(QDragEnterEvent* event) override; - void dragMoveEvent(QDragMoveEvent* event) override; - void dragLeaveEvent(QDragLeaveEvent* event) override; -}; From cd0895b237510061574783bf0f430db804da1f05 Mon Sep 17 00:00:00 2001 From: Trial97 Date: Fri, 10 Jan 2025 00:54:14 +0200 Subject: [PATCH 468/616] Add skin preview Signed-off-by: Trial97 --- CMakeLists.txt | 4 +- launcher/CMakeLists.txt | 9 + launcher/minecraft/skins/SkinList.cpp | 70 ++--- launcher/minecraft/skins/SkinList.h | 6 +- launcher/minecraft/skins/SkinModel.cpp | 36 ++- launcher/minecraft/skins/SkinModel.h | 14 +- .../ui/dialogs/skins/SkinManageDialog.cpp | 136 +++++----- launcher/ui/dialogs/skins/SkinManageDialog.h | 12 +- launcher/ui/dialogs/skins/SkinManageDialog.ui | 16 +- .../ui/dialogs/skins/draw/BoxGeometry.cpp | 235 +++++++++++++++++ launcher/ui/dialogs/skins/draw/BoxGeometry.h | 28 ++ launcher/ui/dialogs/skins/draw/Scene.cpp | 115 +++++++++ launcher/ui/dialogs/skins/draw/Scene.h | 28 ++ .../dialogs/skins/draw/SkinOpenGLWidget.cpp | 240 ++++++++++++++++++ .../ui/dialogs/skins/draw/SkinOpenGLWidget.h | 49 ++++ 15 files changed, 874 insertions(+), 124 deletions(-) create mode 100644 launcher/ui/dialogs/skins/draw/BoxGeometry.cpp create mode 100644 launcher/ui/dialogs/skins/draw/BoxGeometry.h create mode 100644 launcher/ui/dialogs/skins/draw/Scene.cpp create mode 100644 launcher/ui/dialogs/skins/draw/Scene.h create mode 100644 launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.cpp create mode 100644 launcher/ui/dialogs/skins/draw/SkinOpenGLWidget.h diff --git a/CMakeLists.txt b/CMakeLists.txt index dcf13c577..59be32133 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -298,7 +298,7 @@ endif() include(QtVersionlessBackport) if(Launcher_QT_VERSION_MAJOR EQUAL 5) set(QT_VERSION_MAJOR 5) - find_package(Qt5 REQUIRED COMPONENTS Core Widgets Concurrent Network Test Xml NetworkAuth) + find_package(Qt5 REQUIRED COMPONENTS Core Widgets Concurrent Network Test Xml NetworkAuth OpenGL OpenGLWidgets) find_package(Qt5 COMPONENTS DBus) list(APPEND Launcher_QT_DBUS Qt5::DBus) @@ -314,7 +314,7 @@ if(Launcher_QT_VERSION_MAJOR EQUAL 5) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUNICODE -D_UNICODE") elseif(Launcher_QT_VERSION_MAJOR EQUAL 6) set(QT_VERSION_MAJOR 6) - find_package(Qt6 REQUIRED COMPONENTS Core CoreTools Widgets Concurrent Network Test Xml Core5Compat NetworkAuth) + find_package(Qt6 REQUIRED COMPONENTS Core CoreTools Widgets Concurrent Network Test Xml Core5Compat NetworkAuth OpenGL OpenGLWidgets) find_package(Qt6 COMPONENTS DBus) list(APPEND Launcher_QT_DBUS Qt6::DBus) list(APPEND Launcher_QT_LIBS Qt6::Core5Compat) diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 7a569caca..58560469c 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -1076,6 +1076,13 @@ SET(LAUNCHER_SOURCES ui/dialogs/skins/SkinManageDialog.cpp ui/dialogs/skins/SkinManageDialog.h + ui/dialogs/skins/draw/SkinOpenGLWidget.h + ui/dialogs/skins/draw/SkinOpenGLWidget.cpp + ui/dialogs/skins/draw/Scene.h + ui/dialogs/skins/draw/Scene.cpp + ui/dialogs/skins/draw/BoxGeometry.h + ui/dialogs/skins/draw/BoxGeometry.cpp + # GUI - widgets ui/widgets/CheckComboBox.cpp ui/widgets/CheckComboBox.h @@ -1295,6 +1302,8 @@ target_link_libraries(Launcher_logic Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::NetworkAuth + Qt${QT_VERSION_MAJOR}::OpenGL + Qt${QT_VERSION_MAJOR}::OpenGLWidgets ${Launcher_QT_DBUS} ${Launcher_QT_LIBS} ) diff --git a/launcher/minecraft/skins/SkinList.cpp b/launcher/minecraft/skins/SkinList.cpp index 017cb8dc2..2294daefc 100644 --- a/launcher/minecraft/skins/SkinList.cpp +++ b/launcher/minecraft/skins/SkinList.cpp @@ -31,7 +31,7 @@ SkinList::SkinList(QObject* parent, QString path, MinecraftAccountPtr acct) : QA m_dir.setFilter(QDir::Readable | QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs); m_dir.setSorting(QDir::Name | QDir::IgnoreCase | QDir::LocaleAware); m_watcher.reset(new QFileSystemWatcher(this)); - is_watching = false; + m_isWatching = false; connect(m_watcher.get(), &QFileSystemWatcher::directoryChanged, this, &SkinList::directoryChanged); connect(m_watcher.get(), &QFileSystemWatcher::fileChanged, this, &SkinList::fileChanged); directoryChanged(path); @@ -39,12 +39,12 @@ SkinList::SkinList(QObject* parent, QString path, MinecraftAccountPtr acct) : QA void SkinList::startWatching() { - if (is_watching) { + if (m_isWatching) { return; } update(); - is_watching = m_watcher->addPath(m_dir.absolutePath()); - if (is_watching) { + m_isWatching = m_watcher->addPath(m_dir.absolutePath()); + if (m_isWatching) { qDebug() << "Started watching " << m_dir.absolutePath(); } else { qDebug() << "Failed to start watching " << m_dir.absolutePath(); @@ -54,11 +54,11 @@ void SkinList::startWatching() void SkinList::stopWatching() { save(); - if (!is_watching) { + if (!m_isWatching) { return; } - is_watching = !m_watcher->removePath(m_dir.absolutePath()); - if (!is_watching) { + m_isWatching = !m_watcher->removePath(m_dir.absolutePath()); + if (!m_isWatching) { qDebug() << "Stopped watching " << m_dir.absolutePath(); } else { qDebug() << "Failed to stop watching " << m_dir.absolutePath(); @@ -142,7 +142,7 @@ bool SkinList::update() std::sort(newSkins.begin(), newSkins.end(), [](const SkinModel& a, const SkinModel& b) { return a.getPath().localeAwareCompare(b.getPath()) < 0; }); beginResetModel(); - m_skin_list.swap(newSkins); + m_skinList.swap(newSkins); endResetModel(); if (needsSave) save(); @@ -158,7 +158,7 @@ void SkinList::directoryChanged(const QString& path) if (m_dir.absolutePath() != new_dir.absolutePath()) { m_dir.setPath(path); m_dir.refresh(); - if (is_watching) + if (m_isWatching) stopWatching(); startWatching(); } @@ -172,9 +172,9 @@ void SkinList::fileChanged(const QString& path) if (!checkfile.exists()) return; - for (int i = 0; i < m_skin_list.count(); i++) { - if (m_skin_list[i].getPath() == checkfile.absoluteFilePath()) { - m_skin_list[i].refresh(); + for (int i = 0; i < m_skinList.count(); i++) { + if (m_skinList[i].getPath() == checkfile.absoluteFilePath()) { + m_skinList[i].refresh(); dataChanged(index(i), index(i)); break; } @@ -235,9 +235,9 @@ QVariant SkinList::data(const QModelIndex& index, int role) const int row = index.row(); - if (row < 0 || row >= m_skin_list.size()) + if (row < 0 || row >= m_skinList.size()) return QVariant(); - auto skin = m_skin_list[row]; + auto skin = m_skinList[row]; switch (role) { case Qt::DecorationRole: return skin.getTexture(); @@ -254,7 +254,7 @@ QVariant SkinList::data(const QModelIndex& index, int role) const int SkinList::rowCount(const QModelIndex& parent) const { - return parent.isValid() ? 0 : m_skin_list.size(); + return parent.isValid() ? 0 : m_skinList.size(); } void SkinList::installSkins(const QStringList& iconFiles) @@ -284,8 +284,8 @@ QString SkinList::installSkin(const QString& file, const QString& name) int SkinList::getSkinIndex(const QString& key) const { - for (int i = 0; i < m_skin_list.count(); i++) { - if (m_skin_list[i].name() == key) { + for (int i = 0; i < m_skinList.count(); i++) { + if (m_skinList[i].name() == key) { return i; } } @@ -297,7 +297,7 @@ const SkinModel* SkinList::skin(const QString& key) const int idx = getSkinIndex(key); if (idx == -1) return nullptr; - return &m_skin_list[idx]; + return &m_skinList[idx]; } SkinModel* SkinList::skin(const QString& key) @@ -305,22 +305,22 @@ SkinModel* SkinList::skin(const QString& key) int idx = getSkinIndex(key); if (idx == -1) return nullptr; - return &m_skin_list[idx]; + return &m_skinList[idx]; } -bool SkinList::deleteSkin(const QString& key, const bool trash) +bool SkinList::deleteSkin(const QString& key, bool trash) { int idx = getSkinIndex(key); if (idx != -1) { - auto s = m_skin_list[idx]; + auto s = m_skinList[idx]; if (trash) { if (FS::trash(s.getPath(), nullptr)) { - m_skin_list.remove(idx); + m_skinList.remove(idx); save(); return true; } } else if (QFile::remove(s.getPath())) { - m_skin_list.remove(idx); + m_skinList.remove(idx); save(); return true; } @@ -332,7 +332,7 @@ void SkinList::save() { QJsonObject doc; QJsonArray arr; - for (auto s : m_skin_list) { + for (auto s : m_skinList) { arr << s.toJSON(); } doc["skins"] = arr; @@ -346,8 +346,8 @@ void SkinList::save() int SkinList::getSelectedAccountSkin() { const auto& skin = m_acct->accountData()->minecraftProfile.skin; - for (int i = 0; i < m_skin_list.count(); i++) { - if (m_skin_list[i].getURL() == skin.url) { + for (int i = 0; i < m_skinList.count(); i++) { + if (m_skinList[i].getURL() == skin.url) { return i; } } @@ -361,9 +361,9 @@ bool SkinList::setData(const QModelIndex& idx, const QVariant& value, int role) } int row = idx.row(); - if (row < 0 || row >= m_skin_list.size()) + if (row < 0 || row >= m_skinList.size()) return false; - auto& skin = m_skin_list[row]; + auto& skin = m_skinList[row]; auto newName = value.toString(); if (skin.name() != newName) { skin.rename(newName); @@ -375,18 +375,18 @@ bool SkinList::setData(const QModelIndex& idx, const QVariant& value, int role) void SkinList::updateSkin(SkinModel* s) { auto done = false; - for (auto i = 0; i < m_skin_list.size(); i++) { - if (m_skin_list[i].getPath() == s->getPath()) { - m_skin_list[i].setCapeId(s->getCapeId()); - m_skin_list[i].setModel(s->getModel()); - m_skin_list[i].setURL(s->getURL()); + for (auto i = 0; i < m_skinList.size(); i++) { + if (m_skinList[i].getPath() == s->getPath()) { + m_skinList[i].setCapeId(s->getCapeId()); + m_skinList[i].setModel(s->getModel()); + m_skinList[i].setURL(s->getURL()); done = true; break; } } if (!done) { - beginInsertRows(QModelIndex(), m_skin_list.count(), m_skin_list.count() + 1); - m_skin_list.append(*s); + beginInsertRows(QModelIndex(), m_skinList.count(), m_skinList.count() + 1); + m_skinList.append(*s); endInsertRows(); } save(); diff --git a/launcher/minecraft/skins/SkinList.h b/launcher/minecraft/skins/SkinList.h index 66af6a17b..e77269d57 100644 --- a/launcher/minecraft/skins/SkinList.h +++ b/launcher/minecraft/skins/SkinList.h @@ -43,7 +43,7 @@ class SkinList : public QAbstractListModel { virtual bool dropMimeData(const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent) override; virtual Qt::ItemFlags flags(const QModelIndex& index) const override; - bool deleteSkin(const QString& key, const bool trash); + bool deleteSkin(const QString& key, bool trash); void installSkins(const QStringList& iconFiles); QString installSkin(const QString& file, const QString& name = {}); @@ -73,8 +73,8 @@ class SkinList : public QAbstractListModel { private: shared_qobject_ptr m_watcher; - bool is_watching; - QVector m_skin_list; + bool m_isWatching; + QVector m_skinList; QDir m_dir; MinecraftAccountPtr m_acct; }; \ No newline at end of file diff --git a/launcher/minecraft/skins/SkinModel.cpp b/launcher/minecraft/skins/SkinModel.cpp index 937864e2c..63e497585 100644 --- a/launcher/minecraft/skins/SkinModel.cpp +++ b/launcher/minecraft/skins/SkinModel.cpp @@ -18,17 +18,37 @@ #include "SkinModel.h" #include -#include #include -#include #include "FileSystem.h" #include "Json.h" -SkinModel::SkinModel(QString path) : m_path(path), m_texture(path), m_model(Model::CLASSIC) {} +QImage improveSkin(const QImage& skin) +{ + if (skin.size() == QSize(64, 32)) { // old format + QImage newSkin = QImage(QSize(64, 64), skin.format()); + newSkin.fill(Qt::transparent); + QPainter p(&newSkin); + p.drawImage(QPoint(0, 0), skin.copy(QRect(0, 0, 64, 32))); // copy head + + auto leg = skin.copy(QRect(0, 16, 16, 16)); + p.drawImage(QPoint(16, 48), leg); // copy leg + + auto arm = skin.copy(QRect(40, 16, 16, 16)); + p.drawImage(QPoint(32, 48), arm); // copy arm + return newSkin; + } + return skin; +} +QImage getSkin(const QString path) +{ + return improveSkin(QImage(path)); +} + +SkinModel::SkinModel(QString path) : m_path(path), m_texture(getSkin(path)), m_model(Model::CLASSIC) {} SkinModel::SkinModel(QDir skinDir, QJsonObject obj) - : m_cape_id(Json::ensureString(obj, "capeId")), m_model(Model::CLASSIC), m_url(Json::ensureString(obj, "url")) + : m_capeId(Json::ensureString(obj, "capeId")), m_model(Model::CLASSIC), m_url(Json::ensureString(obj, "url")) { auto name = Json::ensureString(obj, "name"); @@ -36,7 +56,7 @@ SkinModel::SkinModel(QDir skinDir, QJsonObject obj) m_model = Model::SLIM; } m_path = skinDir.absoluteFilePath(name) + ".png"; - m_texture = QPixmap(m_path); + m_texture = QImage(getSkin(m_path)); } QString SkinModel::name() const @@ -55,7 +75,7 @@ QJsonObject SkinModel::toJSON() const { QJsonObject obj; obj["name"] = name(); - obj["capeId"] = m_cape_id; + obj["capeId"] = m_capeId; obj["url"] = m_url; obj["model"] = getModelString(); return obj; @@ -76,3 +96,7 @@ bool SkinModel::isValid() const { return !m_texture.isNull() && (m_texture.size().height() == 32 || m_texture.size().height() == 64) && m_texture.size().width() == 64; } +void SkinModel::refresh() +{ + m_texture = getSkin(m_path); +} diff --git a/launcher/minecraft/skins/SkinModel.h b/launcher/minecraft/skins/SkinModel.h index 46e9d6cf1..9b2dada45 100644 --- a/launcher/minecraft/skins/SkinModel.h +++ b/launcher/minecraft/skins/SkinModel.h @@ -19,8 +19,8 @@ #pragma once #include +#include #include -#include class SkinModel { public: @@ -35,23 +35,23 @@ class SkinModel { QString getModelString() const; bool isValid() const; QString getPath() const { return m_path; } - QPixmap getTexture() const { return m_texture; } - QString getCapeId() const { return m_cape_id; } + QImage getTexture() const { return m_texture; } + QString getCapeId() const { return m_capeId; } Model getModel() const { return m_model; } QString getURL() const { return m_url; } bool rename(QString newName); - void setCapeId(QString capeID) { m_cape_id = capeID; } + void setCapeId(QString capeID) { m_capeId = capeID; } void setModel(Model model) { m_model = model; } void setURL(QString url) { m_url = url; } - void refresh() { m_texture = QPixmap(m_path); } + void refresh(); QJsonObject toJSON() const; private: QString m_path; - QPixmap m_texture; - QString m_cape_id; + QImage m_texture; + QString m_capeId; Model m_model; QString m_url; }; \ No newline at end of file diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.cpp b/launcher/ui/dialogs/skins/SkinManageDialog.cpp index f112e1acf..b37745ffc 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.cpp +++ b/launcher/ui/dialogs/skins/SkinManageDialog.cpp @@ -17,6 +17,7 @@ */ #include "SkinManageDialog.h" +#include "ui/dialogs/skins/draw/SkinOpenGLWidget.h" #include "ui_SkinManageDialog.h" #include @@ -52,13 +53,16 @@ #include "ui/instanceview/InstanceDelegate.h" SkinManageDialog::SkinManageDialog(QWidget* parent, MinecraftAccountPtr acct) - : QDialog(parent), m_acct(acct), ui(new Ui::SkinManageDialog), m_list(this, APPLICATION->settings()->get("SkinsDir").toString(), acct) + : QDialog(nullptr) + , m_acct(acct) + , m_ui(new Ui::SkinManageDialog) + , m_list(this, APPLICATION->settings()->get("SkinsDir").toString(), acct) { - ui->setupUi(this); + m_ui->setupUi(this); setWindowModality(Qt::WindowModal); - auto contentsWidget = ui->listView; + auto contentsWidget = m_ui->listView; contentsWidget->setViewMode(QListView::IconMode); contentsWidget->setFlow(QListView::LeftToRight); contentsWidget->setIconSize(QSize(48, 48)); @@ -88,28 +92,28 @@ SkinManageDialog::SkinManageDialog(QWidget* parent, MinecraftAccountPtr acct) connect(contentsWidget->selectionModel(), SIGNAL(selectionChanged(QItemSelection, QItemSelection)), SLOT(selectionChanged(QItemSelection, QItemSelection))); - connect(ui->listView, &QListView::customContextMenuRequested, this, &SkinManageDialog::show_context_menu); + connect(m_ui->listView, &QListView::customContextMenuRequested, this, &SkinManageDialog::show_context_menu); setupCapes(); - ui->listView->setCurrentIndex(m_list.index(m_list.getSelectedAccountSkin())); + m_ui->listView->setCurrentIndex(m_list.index(m_list.getSelectedAccountSkin())); - ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); - ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); + m_ui->buttonBox->button(QDialogButtonBox::Cancel)->setText(tr("Cancel")); + m_ui->buttonBox->button(QDialogButtonBox::Ok)->setText(tr("OK")); } SkinManageDialog::~SkinManageDialog() { - delete ui; + delete m_ui; } void SkinManageDialog::activated(QModelIndex index) { - m_selected_skin = index.data(Qt::UserRole).toString(); + m_selectedSkinKey = index.data(Qt::UserRole).toString(); accept(); } -void SkinManageDialog::selectionChanged(QItemSelection selected, QItemSelection deselected) +void SkinManageDialog::selectionChanged(QItemSelection selected, [[maybe_unused]] QItemSelection deselected) { if (selected.empty()) return; @@ -117,19 +121,20 @@ void SkinManageDialog::selectionChanged(QItemSelection selected, QItemSelection QString key = selected.first().indexes().first().data(Qt::UserRole).toString(); if (key.isEmpty()) return; - m_selected_skin = key; - auto skin = m_list.skin(key); - if (!skin || !skin->isValid()) + m_selectedSkinKey = key; + auto skin = getSelectedSkin(); + if (!skin) return; - ui->selectedModel->setPixmap(skin->getTexture().scaled(size() * (1. / 3), Qt::KeepAspectRatio, Qt::FastTransformation)); - ui->capeCombo->setCurrentIndex(m_capes_idx.value(skin->getCapeId())); - ui->steveBtn->setChecked(skin->getModel() == SkinModel::CLASSIC); - ui->alexBtn->setChecked(skin->getModel() == SkinModel::SLIM); + + m_ui->selectedModel->updateScene(skin); + m_ui->capeCombo->setCurrentIndex(m_capesIdx.value(skin->getCapeId())); + m_ui->steveBtn->setChecked(skin->getModel() == SkinModel::CLASSIC); + m_ui->alexBtn->setChecked(skin->getModel() == SkinModel::SLIM); } void SkinManageDialog::delayed_scroll(QModelIndex model_index) { - auto contentsWidget = ui->listView; + auto contentsWidget = m_ui->listView; contentsWidget->scrollTo(model_index); } @@ -152,23 +157,19 @@ void SkinManageDialog::on_fileBtn_clicked() } } -QPixmap previewCape(QPixmap capeImage) +QPixmap previewCape(QImage capeImage) { - QPixmap preview = QPixmap(10, 16); - QPainter painter(&preview); - painter.drawPixmap(0, 0, capeImage.copy(1, 1, 10, 16)); - return preview.scaled(80, 128, Qt::IgnoreAspectRatio, Qt::FastTransformation); + return QPixmap::fromImage(capeImage.copy(1, 1, 10, 16).scaled(80, 128, Qt::IgnoreAspectRatio, Qt::FastTransformation)); } - void SkinManageDialog::setupCapes() { // FIXME: add a model for this, download/refresh the capes on demand auto& accountData = *m_acct->accountData(); int index = 0; - ui->capeCombo->addItem(tr("No Cape"), QVariant()); + m_ui->capeCombo->addItem(tr("No Cape"), QVariant()); auto currentCape = accountData.minecraftProfile.currentCape; if (currentCape.isEmpty()) { - ui->capeCombo->setCurrentIndex(index); + m_ui->capeCombo->setCurrentIndex(index); } auto capesDir = FS::PathCombine(m_list.getDir(), "capes"); @@ -177,9 +178,9 @@ void SkinManageDialog::setupCapes() for (auto& cape : accountData.minecraftProfile.capes) { auto path = FS::PathCombine(capesDir, cape.id + ".png"); if (cape.data.size()) { - QPixmap capeImage; + QImage capeImage; if (capeImage.loadFromData(cape.data, "PNG") && capeImage.save(path)) { - m_capes[cape.id] = previewCape(capeImage); + m_capes[cape.id] = capeImage; continue; } } @@ -197,46 +198,49 @@ void SkinManageDialog::setupCapes() } for (auto& cape : accountData.minecraftProfile.capes) { index++; - QPixmap capeImage; + QImage capeImage; if (!m_capes.contains(cape.id)) { auto path = FS::PathCombine(capesDir, cape.id + ".png"); if (QFileInfo(path).exists() && capeImage.load(path)) { - capeImage = previewCape(capeImage); + capeImage = capeImage; m_capes[cape.id] = capeImage; } } if (!capeImage.isNull()) { - ui->capeCombo->addItem(capeImage, cape.alias, cape.id); + m_ui->capeCombo->addItem(previewCape(capeImage), cape.alias, cape.id); } else { - ui->capeCombo->addItem(cape.alias, cape.id); + m_ui->capeCombo->addItem(cape.alias, cape.id); } - m_capes_idx[cape.id] = index; + m_capesIdx[cape.id] = index; } } void SkinManageDialog::on_capeCombo_currentIndexChanged(int index) { - auto id = ui->capeCombo->currentData(); + auto id = m_ui->capeCombo->currentData(); auto cape = m_capes.value(id.toString(), {}); if (!cape.isNull()) { - ui->capeImage->setPixmap(cape.scaled(size() * (1. / 3), Qt::KeepAspectRatio, Qt::FastTransformation)); + m_ui->capeImage->setPixmap(previewCape(cape).scaled(size() * (1. / 3), Qt::KeepAspectRatio, Qt::FastTransformation)); } - if (auto skin = m_list.skin(m_selected_skin); skin) { + m_ui->selectedModel->updateCape(cape); + if (auto skin = getSelectedSkin(); skin) { skin->setCapeId(id.toString()); + m_ui->selectedModel->updateScene(skin); } } void SkinManageDialog::on_steveBtn_toggled(bool checked) { - if (auto skin = m_list.skin(m_selected_skin); skin) { + if (auto skin = getSelectedSkin(); skin) { skin->setModel(checked ? SkinModel::CLASSIC : SkinModel::SLIM); + m_ui->selectedModel->updateScene(skin); } } void SkinManageDialog::accept() { - auto skin = m_list.skin(m_selected_skin); + auto skin = m_list.skin(m_selectedSkinKey); if (!skin) { reject(); return; @@ -286,15 +290,15 @@ void SkinManageDialog::on_resetBtn_clicked() void SkinManageDialog::show_context_menu(const QPoint& pos) { QMenu myMenu(tr("Context menu"), this); - myMenu.addAction(ui->action_Rename_Skin); - myMenu.addAction(ui->action_Delete_Skin); + myMenu.addAction(m_ui->action_Rename_Skin); + myMenu.addAction(m_ui->action_Delete_Skin); - myMenu.exec(ui->listView->mapToGlobal(pos)); + myMenu.exec(m_ui->listView->mapToGlobal(pos)); } bool SkinManageDialog::eventFilter(QObject* obj, QEvent* ev) { - if (obj == ui->listView) { + if (obj == m_ui->listView) { if (ev->type() == QEvent::KeyPress) { QKeyEvent* keyEvent = static_cast(ev); switch (keyEvent->key()) { @@ -314,22 +318,22 @@ bool SkinManageDialog::eventFilter(QObject* obj, QEvent* ev) void SkinManageDialog::on_action_Rename_Skin_triggered(bool checked) { - if (!m_selected_skin.isEmpty()) { - ui->listView->edit(ui->listView->currentIndex()); + if (!m_selectedSkinKey.isEmpty()) { + m_ui->listView->edit(m_ui->listView->currentIndex()); } } void SkinManageDialog::on_action_Delete_Skin_triggered(bool checked) { - if (m_selected_skin.isEmpty()) + if (m_selectedSkinKey.isEmpty()) return; - if (m_list.getSkinIndex(m_selected_skin) == m_list.getSelectedAccountSkin()) { + if (m_list.getSkinIndex(m_selectedSkinKey) == m_list.getSelectedAccountSkin()) { CustomMessageBox::selectable(this, tr("Delete error"), tr("Can not delete skin that is in use."), QMessageBox::Warning)->exec(); return; } - auto skin = m_list.skin(m_selected_skin); + auto skin = m_list.skin(m_selectedSkinKey); if (!skin) return; @@ -341,15 +345,15 @@ void SkinManageDialog::on_action_Delete_Skin_triggered(bool checked) ->exec(); if (response == QMessageBox::Yes) { - if (!m_list.deleteSkin(m_selected_skin, true)) { - m_list.deleteSkin(m_selected_skin, false); + if (!m_list.deleteSkin(m_selectedSkinKey, true)) { + m_list.deleteSkin(m_selectedSkinKey, false); } } } void SkinManageDialog::on_urlBtn_clicked() { - auto url = QUrl(ui->urlLine->text()); + auto url = QUrl(m_ui->urlLine->text()); if (!url.isValid()) { CustomMessageBox::selectable(this, tr("Invalid url"), tr("Invalid url"), QMessageBox::Critical)->show(); return; @@ -366,13 +370,13 @@ void SkinManageDialog::on_urlBtn_clicked() if (!s.isValid()) { CustomMessageBox::selectable(this, tr("URL is not a valid skin"), QFileInfo::exists(path) ? tr("Skin images must be 64x64 or 64x32 pixel PNG files.") - : tr("Unable to download the skin: '%1'.").arg(ui->urlLine->text()), + : tr("Unable to download the skin: '%1'.").arg(m_ui->urlLine->text()), QMessageBox::Critical) ->show(); QFile::remove(path); return; } - ui->urlLine->setText(""); + m_ui->urlLine->setText(""); if (QFileInfo(path).suffix().isEmpty()) { QFile::rename(path, path + ".png"); } @@ -405,7 +409,7 @@ class WaitTask : public Task { void SkinManageDialog::on_userBtn_clicked() { - auto user = ui->urlLine->text(); + auto user = m_ui->urlLine->text(); if (user.isEmpty()) { return; } @@ -499,7 +503,7 @@ void SkinManageDialog::on_userBtn_clicked() QFile::remove(path); return; } - ui->urlLine->setText(""); + m_ui->urlLine->setText(""); s.setModel(mcProfile.skin.variant.toUpper() == "SLIM" ? SkinModel::SLIM : SkinModel::CLASSIC); s.setURL(mcProfile.skin.url); if (m_capes.contains(mcProfile.currentCape)) { @@ -513,14 +517,24 @@ void SkinManageDialog::resizeEvent(QResizeEvent* event) QWidget::resizeEvent(event); QSize s = size() * (1. / 3); - if (auto skin = m_list.skin(m_selected_skin); skin) { - if (skin->isValid()) { - ui->selectedModel->setPixmap(skin->getTexture().scaled(s, Qt::KeepAspectRatio, Qt::FastTransformation)); - } - } - auto id = ui->capeCombo->currentData(); + m_ui->selectedModel->updateScene(getSelectedSkin()); + auto id = m_ui->capeCombo->currentData(); auto cape = m_capes.value(id.toString(), {}); if (!cape.isNull()) { - ui->capeImage->setPixmap(cape.scaled(s, Qt::KeepAspectRatio, Qt::FastTransformation)); + m_ui->capeImage->setPixmap(previewCape(cape).scaled(s, Qt::KeepAspectRatio, Qt::FastTransformation)); } + m_ui->selectedModel->updateCape(cape); +} + +SkinModel* SkinManageDialog::getSelectedSkin() +{ + if (auto skin = m_list.skin(m_selectedSkinKey); skin && skin->isValid()) { + return skin; + } + return nullptr; +} + +QHash SkinManageDialog::capes() +{ + return m_capes; } diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.h b/launcher/ui/dialogs/skins/SkinManageDialog.h index cdb37a513..fae96cd98 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.h +++ b/launcher/ui/dialogs/skins/SkinManageDialog.h @@ -24,6 +24,7 @@ #include "minecraft/auth/MinecraftAccount.h" #include "minecraft/skins/SkinList.h" +#include "minecraft/skins/SkinModel.h" namespace Ui { class SkinManageDialog; @@ -36,6 +37,9 @@ class SkinManageDialog : public QDialog { virtual ~SkinManageDialog(); void resizeEvent(QResizeEvent* event) override; + SkinModel* getSelectedSkin(); + QHash capes(); + public slots: void selectionChanged(QItemSelection, QItemSelection); void activated(QModelIndex); @@ -57,9 +61,9 @@ class SkinManageDialog : public QDialog { void setupCapes(); MinecraftAccountPtr m_acct; - Ui::SkinManageDialog* ui; + Ui::SkinManageDialog* m_ui; SkinList m_list; - QString m_selected_skin; - QHash m_capes; - QHash m_capes_idx; + QString m_selectedSkinKey; + QHash m_capes; + QHash m_capesIdx; }; diff --git a/launcher/ui/dialogs/skins/SkinManageDialog.ui b/launcher/ui/dialogs/skins/SkinManageDialog.ui index c77eeaaa3..58f7f723d 100644 --- a/launcher/ui/dialogs/skins/SkinManageDialog.ui +++ b/launcher/ui/dialogs/skins/SkinManageDialog.ui @@ -19,16 +19,13 @@ - - + + - + false - - Qt::AlignCenter - @@ -188,6 +185,13 @@ + + + SkinOpenGLWidget + QOpenGLWidget +

    81*Hi>FQ_s$7`gLS<8mKZu_TAqN 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 N002ovPDHLkV1iMOzDNK7 literal 174906 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 R4ru@Y002ovPDHLkV1j-{ET8}Y diff --git a/launcher/resources/multimc/128x128/instances/enderpearl_legacy.png b/launcher/resources/multimc/128x128/instances/enderpearl_legacy.png index 814709965e5af0d277e7f9568d2ffe880983bf92..783255a50dc90ff733ef4439fc05e4eba45b1b6d 100644 GIT binary patch literal 18514 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 RS$M4*lx0)?RDx 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 diff --git a/launcher/resources/multimc/128x128/instances/herobrine_legacy.png b/launcher/resources/multimc/128x128/instances/herobrine_legacy.png index bdbe009d95c99dd971f9a3337d5c9807d294dd0d..d30309677c1d19027f348d7f597298ef36ea08b3 100644 GIT binary patch literal 4445 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 Az5oCK diff --git a/launcher/resources/multimc/16x16/bug.png b/launcher/resources/multimc/16x16/bug.png index d7a253f232bd7f8f6fedf7818fd218c03643313f..9be77e3b789299e915647744e4bd745562de1b77 100644 GIT binary patch delta 583 zcmV-N0=WI^1mFaaB!4GKL_t(|+MSY5NEC4t$3OGiac4$%c6WAl*{q4!LrA7!D0rxp zq9C?|cqr;n^ask$Ap{+yQ>A5>4jn@X>J)Xbn5o+U9v@5{X1dKA%4o1OWgk6*25D z@Z5vZ40sZLg)r$e^Kg}RU>+z6s`LmU4%U_dTteAlz|9ocF)#%f0{RV(6-`2594HH5 z8t5x#llNR1tbfOWc3sJnrc$BRL}wfnFuV+(1JHm06UPA$KxdP-#f6n#9kUE{<HpG#g;n1Y<7)_FNJ$89+m61xsk8G7d`;j1UTehcDsN zU&v~Z5u|~OH9^m}h@>y!f&sP$m8A-if+lA}53?~=_MtBh7Ayg0Yl1$2<%nsa zRr{wtoDM2=xz>igL zZ7yW0UW7|W1@pHWP z8jNjk2A|h~&28YE`(5dhxsL_8BxT{U065nNwzf-&1N_W@3jk(h36@!bEmFbGR!Ovj zqg|4FpNmVLS2*$EAg9DFoa6yt)`4{_;P(dX1z-ZnY=5fgu(X9KL-M>XW1I;o7iT=9 zaPR{`4hmb?&z^DqbuAVa_zoUYV_+RU*i0l9g^pIRw@v1cyEy7egT z&>%;U^9f&gLybc&6R+8-+qeC|xuZ%^W9|fe<>hec;&~ zzL)bJKI|1DUOYdySi5uSiQjGAnwgpmuVX(D@$^WgiQxKkvCqcm@Tc2*Crw%#1c!%oA{Jx$HO=|7(LD9Q@-_orrkem z5qQCBoytoA{Cbk*Sa@*#K{RNqzhbqvFtJ1&OaJ9qt!)hcP*jaH-Br*HA1)#JPXi_m z?JHr9B+9YYMaQ~iwF9dhIL3t~vo8Iu6&2AtKt2HY9SbVLP1td%W*0=t@H95w1>&qMb_*Na0jFsvlBEtV6qGz3Sz?rp^4>*hMXLi}P z+Fn1g-l~4=#VKJBu*bIhv%}nOhzYHJi=S4%;pg=q==53$LVrK)AMyUTuip3ir_aRQ zq+LF6yJIc|@PdFqDPN&n7)20fMcH+J58^CgwYrEp$Fpxewq5peI~qMB7j+&HYA0{* z1>i*lGf2}E7zznOcMvCz`N{2casB&i>b>>zZ104PtPXn`;n-#j;6;T$_~ZU*lAx-H z$ewS1{=#iQaI?93yTyfFQ%`P{ef@+eNbzz^TWzF0MPCAs1(OIdY@CH?PhoW8n8c9 zQ7cAeQ*{Q|{KPh2?z+uBIRwVW#xXO9<30jZg5ua{VQdkwzbhgp3>3Ao;`qlE%@q|W zm&=$L3V%Y0z*o{}_auq`b9pmk7!kqa#>!SYZ-UZ7tI-5NMTH_!Db3R3TwJ7vVmLGXF?o=`j|#9dbdW02rtUYErdU=d+CP zaj>6^%m5_IQoK4UMEQu^lworz+1430D&T-rkR^^HtAhSu*h-ytHSwfz9P6euc*Qy@c$ zVzvPq@6kOhz8ItN&AW@yxMWY$EV{Y4c#BW?V2nhUxkZTs2Y4ab!W@@UKw98XMtgvr zUjFuBMn<+z@_qXyKdGhV9=5nM7;O497z~tJEi$$oo06kgWq(Ccvsn~LQ5A>Fo%8Xr zT2!)N`YBb*LAiS zi$vx&g|Os)^-T;KJm9v0-3qDPeQnb1$)&<6!}1y!S7AK~3kljC z5q6auoEawt3TO{ZT(KqKJUfe`ObAKb6RcK0^O?b4P7VBY`n%VGQ2<^oaK1bA{yS!J;FQo`cvkfLO2o;7hsEzRt72jyE@qa} z;?h4tj7+4&;Ki$A=#Qv4a^%DnkEgg-eY4Q@)_+s)9el$dtd|nUKg>RVPk*p8)7AEX zoNuPcv*v(gl1gr17XoXZl~P|3V)HJi-R?XfoqJ-Rv1|X6dFIJu^#44>+p$#mf;In8 zpjO-6*4p0H)7@K8x3iWjF`e+-9HG!udURyOICJ*QpW*QIA&%BnMy7Xb;sbY1rc#zi zfjdV2SL^dtAMNby8V>}T&J`56Pk{8?bsHDlAAlcha2RlLV>WK$U-UOZ(^a>bS^xk5 M07*qoM6N<$f`Iv`T>t<8 delta 889 zcmV-<1BU$B29O7kB!5>)L_t(|0b;bWvIEpe4#2IfVE{dgV54sBxpf;S&$eybwr!1` zZQHhOt8V9|DPk?M?_b}snye^3YM5r;zst_MM(p-x;gQFG1FsL=vVWEfMit6S1vXz>!9P5( z2GDA^+o$DZ@;_=63i+QCiJ7ux*_B71OF_618l2#EfGk2N`{zRm; zldZz-Y*e2kVJ+kQ_%b@&0o=jU2IaDNXM?@D zSRnDx!+*@GO}z8#PqVV%+M}th?^R9LUdUw9H(8eOU7?UQWB>zjNaEg`Y`Dhl8?Ehk z^X*rB^3vwZT0Xbi zcZBfyzB?DzKV(0bcK@Bc{?V6Qk}{@#b9k-|4f;3Rc%x0W+jW=S>V`)K$)pyUnweo@ zVsgyP3l0Sqo%)_?0(TW$Ae zC=~s?uCC!85RL*O)KFo|5WMMx8vqr+>GGheP1tNUR^wzfvTQ>TL~8sG=ki{>3NYFo P00000NkvXXu0mjfT|LR9 diff --git a/launcher/resources/multimc/16x16/log.png b/launcher/resources/multimc/16x16/log.png index 429626d3a9312a0065a3554922806d3de6f46388..3b94d73dd839835a0372a84939e14ed55012e6ec 100644 GIT binary patch delta 291 zcmV+;0o?w_0=@!}B!2}-L_t(|+6BQeQWQZH0MOSxU)U94-3UWdQt#lI^a_@NNa-2$ z3?9Ig$SMsaA_SJAsNH2|xDIzXOk6 zYFJrXma{LH=>mf4jr3ZT(trnx^7j0)`$jOk5vZDUs46yES$}{0@m&UK5E=%}PSq9Z zRaInAt))~{9fMgo_E$wP+F*8MsVlasovp1zz>{h;xKoXag*}>%pgK|=o19unbns6{ z&^;-ZW;+i;s*1^8Lom5TU~gga!X!+#I)Z8~%uXDl0QjRLNRx^Ki3HFz1cOtF21vk| p_XsY|f1ah(r5rA$)TPa}&NHuhbT8ZH$gKbX002ovPDHLkV1nZog24a) delta 300 zcmV+{0n`4z0>=W7B!3P`L_t(|+D*?j!WA(P0N^iq`CVT{MTwn&OCc49ph9YTw8O2$ z4uHG6JG+}9IP;B_Gnum|zQq4N)GJ#6$b47~kOiummbRYR43O#Ebk8NXnwwtf%%pYO zPHzHm^!$r>9?#-ef7#q?^JYD;0TKt#uUcP_4Z@U+PX>=4?tfmnD>7lENEk^zHy;t^ zvqT{qizdk`Mta49D>4e-yhd-%j4Jsg`|MK_DDYMG&B!ZlN~V3mprVk?$rf~0SQ4n< zs)|DORWhUZ**itZlFk5Byb diff --git a/launcher/resources/multimc/16x16/noaccount.png b/launcher/resources/multimc/16x16/noaccount.png index 62388fc7e394a90ac8e46ba205115d76940c4ad7..83d4fe301064cff38d2eb5366da88242002cfd40 100644 GIT binary patch delta 148 zcmV;F0Birh0k8p(B!72FL_t(|+HJ_O4FLfZ0MK`LTrOe(A{Nl=uGiQ?qY{N3=nSB+ zhUj%BkkDxq3KAk51Ng6eNmnKF@{y|fO8%k)as_VQVa(*3?h+U4Am$2Bbysaif>@du z=_%~3EP|M7Y1m-kG%s@&3M-r7URxSPQUi^X!~K zG^`Cl>wR}l>kt5FOw+oar$X0dOw-U9hH(@^BPsj7ZD}Y~RU86I)OB@D;s;cuTXpnd Rgp>dP002ovPDHLkV1f!KMY#X~ diff --git a/launcher/resources/multimc/16x16/refresh.png b/launcher/resources/multimc/16x16/refresh.png index 0f6275f85c9aeb17e730fc2c99b578444e0665d3..ea0b31d8902fd6c996e0ccb41764dfb039d5facd 100644 GIT binary patch delta 803 zcmV+;1Kj+)2D%22B!2-(L_t(|+HI3fZ&YO%hOg)Sm~&=2PCK2_4~GWYN0J6K>Z82(2dcZI};NZE(}|(7!!gRBo?Jc;|G>n+se>sdphmRnRDhn zuU)i}5U%9jJ@>VEl3TdQql}@rq>K98NOfegQmm+jm4#nw|9{r5;`kW&696~}7OxpOP-UoZ2(2_x6mfU;E>~_`iPsm`FOzYryIT6Z9kt_qfl`5dGj-<7 z)Xe1bR^=3r!zGRzcdn;DE&V93z3_(l@Ussv0HSz%;@C4&r;a^mqh^FOg?hct^6E0; zg|Xo=@;!L~#($4Y*zvImGVf6c1~}T+-*frM;p4WxS;uu8bGPUCW8rrKXUXUCT)%mZ za<#(glcy<{%HTnJjS__s;gxFl!C)ueVK>bGJkNvLith?-(oE8;?JRW#WzTQM_1x^e zS(!dQP3S`;5wr*6?u&u3D`+vmV$0yOe=${oCIMh$WG-z$N zh&Cc5!y6l@iP)udqKMjB4eb;=N&3}ZnPNWdvn7?cV-iM?E~ht@2O7dfp3aAMjuFCSutUM-=n8UFOo6oSyhg|mnod(Xf5&NOzL_My zrj2Z|^;`NSa8Cnkot~`SZNeFbL>B@}G0YL>4S&I)5nn}I!RtJ>S0l<`{Kn1JORcr^ z+P(mW`L4B{p6!>e;nF~8g3zFgipGI9+m(cN(cz7!+|2jXZ#RePE6pE(cL6l}l=-x= z(TvKaDRqb92cT2VFm+As*0x{$y3wkyHs1r@1RQ`oX3mFzSAnxy$w}{#%=gVx002ovPDHLkV1iWuo$UYs delta 805 zcmV+=1KRw$2D}E4B!2@*L_t(|0c?{)pd?2afWN=GYZ}j7+qP}*-eVkN9dn6|V~kU5 z+qUg2pZbm3m6=%O`b{y$@b@9RWde%BtwwA8xDn&#bu@OUZ})!t$-(^xpCaQX^MLv4 zce;^){fB@$Kp~vgF}~xx9gB9jBf3T~taBKavIv5JulIe;y??LV8}@zQcP=?^wv1@L zI|`z(E`U0-a^%@%OP4NNH*bSh1;zi3EY5i4gO`%`e|%4l-FUox_3c+-1Bl}Exl?B@ zTQqfv4k`gs5qf)j`FY>Zh!G}?nt<2p0Wf>gTs?cjTykSj2zE{Tl&+zz=S~_sUH1<3 zlBF5%y!#Gcet-J~PNwk+9xuKA0&OEYSiE2{ZOv_9z%mv}6t)OQj%XR_l*2Oh{ozL+ za_Hb*)8Oj35+_eZd6M}`Zy5-C3r~Fagsh&v8rQf;ELbAgj<4654Cx!_V=x%x=bwJW z_jPr!8qKLkyk_A%EH;^0B16V>Q?!dzOI3pY0Ld}7c7N2|FiS{-fP*~;u`)$DPM-WD zU5%dGshgFj+dR?(5#I;jP&`n?lylNBdrbVpb)1(ijSY#Dpc5gEvnR59^DTd?4Hsz9 zSb~@=ukFm3#N2O+Dvq)@sHB8CBOYG;2pbQE#g~@-QOe6zuISqukfik@?yvk?+Embg%WP+Aqh- zUSSv0JXgQNINW$>imwYaI0ZUvpQJZ47J@g_PAiiB5GLt|l{o%1Ddyi-KTjU7UYmTU zYQg%n8YXA^{W@{&dfx4t0FCVn4U-FE%~le3<$t=tFHC533e#H({?zD$?5uEqIu<|y z0GIdfuRPQGjT^Np4_9lXK^W`~=^tKYU|2}8E27zUCR9I)*H#ANPk`qE{@zRioY>Uv zUg(Xty%AHJRX91N+!15_r099QY_d1RpZR diff --git a/launcher/resources/multimc/16x16/settings.png b/launcher/resources/multimc/16x16/settings.png index 6875e80062fc8d148b5543fa44d9c22b3d7ae185..b042ec8cc65fc8c86a319f5b2bfb8a37fdb12d91 100644 GIT binary patch delta 834 zcmV-I1HJr^2iXRYB!3`DL_t(|+I7uaOj~sT$MNsE&=yKdX}JgmI|O8>6euc*Qy@c$ zVzvPq@6kOhz8ItN&AW@yxMWY$EV{Y4c#BW?V2nhUxkZTs2Y4ab!W@@UKw98XMtgvr zUjFuBMn<+z@_qXyKdGhV9=5nM7;O497z~tJEi$$oo06kgWq(Ccvsn~LQ5A>Fo%8Xr zT2!)N`YBb*LAiS zi$vx&g|Os)^-T;KJm9v0-3qDPeQnb1$)&<6!}1y!S7AK~3kljC z5q6auoEawt3TO{ZT(KqKJUfe`ObAKb6RcK0^O?b4P7VBY`n%VGQ2<^oaK1bA{yS!J;FQo`cvkfLO2o;7hsEzRt72jyE@qa} z;?h4tj7+4&;Ki$A=#Qv4a^%DnkEgg-eY4Q@)_+s)9el$dtd|nUKg>RVPk*p8)7AEX zoNuPcv*v(gl1gr17XoXZl~P|3V)HJi-R?XfoqJ-Rv1|X6dFIJu^#44>+p$#mf;In8 zpjO-6*4p0H)7@K8x3iWjF`e+-9HG!udURyOICJ*QpW*QIA&%BnMy7Xb;sbY1rc#zi zfjdV2SL^dtAMNby8V>}T&J`56Pk{8?bsHDlAAlcha2RlLV>WK$U-UOZ(^a>bS^xk5 M07*qoM6N<$f`Iv`T>t<8 delta 889 zcmV-<1BU$B29O7kB!5>)L_t(|0b;bWvIEpe4#2IfVE{dgV54sBxpf;S&$eybwr!1` zZQHhOt8V9|DPk?M?_b}snye^3YM5r;zst_MM(p-x;gQFG1FsL=vVWEfMit6S1vXz>!9P5( z2GDA^+o$DZ@;_=63i+QCiJ7ux*_B71OF_618l2#EfGk2N`{zRm; zldZz-Y*e2kVJ+kQ_%b@&0o=jU2IaDNXM?@D zSRnDx!+*@GO}z8#PqVV%+M}th?^R9LUdUw9H(8eOU7?UQWB>zjNaEg`Y`Dhl8?Ehk z^X*rB^3vwZT0Xbi zcZBfyzB?DzKV(0bcK@Bc{?V6Qk}{@#b9k-|4f;3Rc%x0W+jW=S>V`)K$)pyUnweo@ zVsgyP3l0Sqo%)_?0(TW$Ae zC=~s?uCC!85RL*O)KFo|5WMMx8vqr+>GGheP1tNUR^wzfvTQ>TL~8sG=ki{>3NYFo P00000NkvXXu0mjfT|LR9 diff --git a/launcher/resources/multimc/22x22/bug.png b/launcher/resources/multimc/22x22/bug.png index 2219dcebb3dcbc397ba6e4c03de62020cadfe544..80d5866921060e3a4d9a89e516e135815044bc21 100644 GIT binary patch delta 987 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 delta 446 zcmV;v0YUz{1I+`F8Gi-<006|aY&!q|0hCEZK~#7Ftde00ft;I_u--tN^LO@E2vpjH+B$3% z8r!+Hk$oz*p?ZLVWqr2vSU|q3Dzab-<*swM_X<{^84F67_a4qUjN^!Be2xjCB5$Q$ z0~vbb#tnGzv466%GCY0yS4#-+>zp@K>z>% diff --git a/launcher/resources/multimc/22x22/instance-settings.png b/launcher/resources/multimc/22x22/instance-settings.png index cff081eda92f5bd8282b4a95c82ebdabe73e31f3..74ba33e753f61655a1d4ee707bdc311fb6716f2a 100644 GIT binary patch delta 1290 zcmV+l1@-!u3!Dm&BYyP0Kk9m-TQI(-f`S1fr*HG=s5*ZnIFs# zmSPE0r}%}g+M?V{i>A)0ZRTtmYq_~xOAV(B6*DuL)e<4mTDB~$T#*b=4mgmHy917o z`+~P?nzaW0Rln`G=lSdReC*jC{x3v^AU%D?f{7C+t{F8d#(!WooApMcQBsYnBr66{ zmJ~^nWKoi3MH0n7CyF2#t;dfSoi8mtwF?LV2st^c7=klJMMv|xy>9MQHGn1&41~fC z5DY#r5YobqTm6z4Nxp(_A;CBGg}9h$*_ zrbr;_fUqH;rGJYZ-a1kz#Xlj6O7vf09YfI9*ZV_blarLm;}L8zgks|v9G`?XIT_L> zgtfzzWJnnsHkn@ZVXe>W{{n;I@f44JU?tWIy%sqsWan?W_9sbi&9$vYQAa|Y} zvo*%3s%jj7$S|y4_u^B{4NXRO*;!uGJhY_*NPkHlhu7m~!lY?rSS<_&{hG^D>#zQ; zt?ycEo44|6MNLmnSHrO3#X0N7PML0BUH{2xCZ+Kif``Ty?u=c*t1qFIk)ufLc71}S6mm*G5GzreC=opmS-&Wu1%jEDS!0# z=$rezh>||MTN9ws-PuJbG=MBeGSaLtCf0@~=#eDRE(k(8#ia*O~=d zlij8r8et4RDa+^3i;Lpok_y(Yec_war!V@dtDCfr4zJeT?bCX^eyz2&Q>&@Dr&Uy3 z9o)bFfGaaI>pMj;z7E9mSxUkkZGV4(7F<3{t4T0v+pLBzlU{lkNaAm-s%l;~ckaRu z4<0;x|Inc$of|f6uFlL{RGFAK;e^4UZUL4636CB`hK}bx9cAzwk5T$F73qc!-6mip zLn8s{47oX`L7V7F?Wvm8I00000NkvXXt^-0~g3nB6 Ad;kCd delta 1413 zcmV;01$z3N3YQCzBYy>6Nkl^Y}>YNJlnQy z8+Bh(hK;$W7@O<+*0%RA2_g7@ptiNO^QYwVd2BXwV^dSp(cDbmRgDGNY-)C4Rn_=Ygb>8z zu}5DW^3u}WfPYjtM7FF7=IP)v!ES)6fDn*Q!`uW<4|-X<+$z|=fBy$=yz%<}SS&gq z%d*0ss;WB4WMZJVdmvm_w}6@&19TZ&#+0@x9pEm2!YQ2vIOe5!-N7Q-+Ly3n=aGY^ zX?p{JT3_GHUy?{9yx!r_ewW+TUSIB{w?7W56LcLcJAW8DBs1Xkv9%(=;msR(;`uR7 zJ@scjKA-O~0JXRGmA|oYe8lS=>a|;Xdu^=?o(RK`0g*HWBOvP#iE*HMjN_dW@B93j zl+4kwOluIBSy;|wGW?~vT#l)odlK<9EzJesQoyDo88WCUmJ;DpYl0kWiSo7UM>y?? zDr!16vwvgr=2D;#KyGSXO4BKwG&QwO**0Tq>ta%=%*)CiR|4-T1un=j^rBFK14nwI)%BEbNSQ#V}Uc9GAdgg@AwdinYB_}ydU zkvs3Ytt%Q04+5w;Aa&d2#2>tcWG2mmgKt2t@>I4hY&p_@+4(fJcd)`xx%}pvcrvvX z?|;BxaNvRq?i?KK>rbasLyD>m2mBMEWHJ^2yubtiA4KBgGda8yi4Otquk{?f_#+?B zKJ~RPis93KDPA~!NL;MR;+w}$iuZi^{!7Tzxnl*t{poLN%Q6vQB+ih zqG(8xjLM&oLC7xCc5PpTQH4J;jLW#L!K4Y~ANbhm)W0=vcA6 zsHEaGiA1bq?V8Pxkr$`O5{bJ)p}R#kE08{jgoYpv74@FF?;iT{7mt?JR7(?g-p2Ta z=kdV680imxk@~e8QH8)=ScKhKNIEZ(6*}3xLM#%-|7ut6fxEA}>fCdG_32=6qJK;J z01_ZtS8d;P&faf+qeGqyF@EJG#BRTZCwwvd@BRWy4<4s%o)gPuk;y?aJ!J~w@g%9_ zblhiANwdJEalr-WJpTF5fBdKl!n66n?o0Q4`y( zw7fuyMU~-r1XWY8JMDmAG8878&3~cm1+jfF&4 zSD(1;w!89Q|N8g*>(*_4&@jx;099PuQuC7d`Uga2|1!~4V;3KF+roB5`+hM{#~*Q9 zmSgYg)tk=#;SYZ~`jemhD)jcZzxU;J>$cokTibZ1&1QWV*bUSG3IHo)UVlZgEqF$e zkyvMFkI2aH0p{`tB>n^qSoFI^I)PHa!QVmx#e`KF(g~miQ2uhnpCU;L{|dha$qHk$ Ta0H}i00000NkvXXu0mjf;9<-k diff --git a/launcher/resources/multimc/22x22/new.png b/launcher/resources/multimc/22x22/new.png index d132ec1fcaafd204168a40218351debaf2955ff3..321bd58fe53ad0b36f2329726ca313ed7d3516c2 100644 GIT binary patch delta 882 zcmV-&1C9KP2Z;xeB!5szL_t(|+NIM?h*fnM$MMf|&b`h!+USUr)l{YimJ-pMv}#eb z4O$2-+P4s*RjXV_lF+tAn_}#ZLYERqx#-1>i%=SMN}bWvao(NRd+&J~E&~TdgXqio z!Pz`te*Xua`0CqX*j1Lr(N4SbMp6Q4{nKo&F7@^-UD?z(d4Fk3|FsKG?mqKdqtObq zhy_d#moNtq-+XrrzJKAlm)_j<#2yiWnye#3cHL5D1j0mk(OJ=TTRhSpCCM;%D)u=G8x_-jIz9kX8oQsXE zzUN;nisiErxsiYc;#4Cu0lF&ihy*r;ijefE#R%L>&R7yxPIzk()EPo&~-HUenJirDt z(I`+4BtS|{p_EZ7hYni&^CMYJxfgRI`!yfk536Y5cD)Lu1Ts*{>?QkTZURyCyB{kn zy)c70;(z9P;|honhzJpV7?8F}+d)KA=8~y%(M{Ev0I;z50OD`mxYk%+UI9=R1wugd zU`Uvixu6(&uPcL|$Da|=GV{lSpl|oP#xGtqxP9U>aSF?gtP(&G1rb6Jgnnr^+GL>| zdSAq3_abFW^RZ`TZdSxLv$OMX8h=53ASjAj9DflY;$dkM(MR-4Gvor=Xms~qlsk=H zF5zc@`alp-hzRRJh#(9QFG{n*B&MVew#eA3Z0t2ZH-?%CUXp=8=y-Jc%B4V}rwAd^xZCKYdW=Je}@|OaK4?07*qo IM6N<$f>HUQ=>Px# delta 884 zcmV-)1B?8L2a5-gB!5y#L_t(|0j1OftTpQu#_`{p*~dP$ZM#8@ur}hPR@A6pj50=T zw^wnlZCju1W9`|q?j)0(%(b4p#(%H(*;y0t@BjVdWo23XYETV6nUp}b1w%ty>!Ty< zdnd+E-aj*a@ZMLx{Mu`Jy?&ritl~Iv|HRa7O8^1?J>#EezJKFw@A}NkUiu0Vp{uM< zss^WQZ0xkPxzF1Afofr4@7Da>@>R1l_uLd=kvLB5$88f+x9^95fBxsM)tA5U_44#$ z1F0&Rsjh2vt_a8V%Ke6VN0jAJ@`UQZAHdr5hu3GOk6luh^wRKBa7JtzIiv@MPQ#hbLbdI^#uZtMvju`8Yzx^Xcv2jyGjuEiBy8NaKdytu+ ziBf98a!tg7GLDHO-vu?MUvq5>rTKx=PTx5);ythZW&__rJb$-gll3W&q@{b_VCaQ!fGzZKqHBeeKn6;gqvW{E2@u7!N7Lr!C@f%!I9hc7JP`sB zAz~bJ(to`4Ob{_7bKR*sLQ~a);{aCIrVxkQ>R_+yaaj}y0WpFX2#YdT6)*Ua1_nl6 z{3a273wJ*ojKBN`4&1lTvz~c;4{>3WARE1|6-5+82%#<0(#uhiMdS64MV!=RB-uCg zqPNJLRK&c+#bvm(f$oNGf+&h@u!sN=&yyyIaerc3S|C?Zp{Ma*QNF~^J*D@*|4&x} zbQ45GAtJUbA%ZYRyi-~fPU4g_z>JJpW$!hXm-g$b>v0F#soGwQ2+tv!ib!aaDPly^ z>#FPVqe0u+c@1o5Xr%6|fv(40C6J+`)Ryc_lkE@KBScINGP8_`Hj*HckO(ql1PA~m zLT!5o1L%TBw)*`G?%#Re$6xu1SBVHuMwzL(tE#FCFoI3!;aUIq+rR#?wz@t!IXV8` zOa(wnQWw%i$|NG{m6g@2&p!K{f8bd-ggP*S=VQpzQ(p_+ga-i4CA_@3-(s!+0000< KMNUMnLSTaa6~52_ diff --git a/launcher/resources/multimc/22x22/refresh.png b/launcher/resources/multimc/22x22/refresh.png index bce4cc512e72d8e2e1b400ad0ff8881215311dac..ac05ff7e3074a72978d268b26845af90ba4a9bff 100644 GIT binary patch delta 1125 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 diff --git a/launcher/resources/multimc/22x22/settings.png b/launcher/resources/multimc/22x22/settings.png index cff081eda92f5bd8282b4a95c82ebdabe73e31f3..74ba33e753f61655a1d4ee707bdc311fb6716f2a 100644 GIT binary patch delta 1290 zcmV+l1@-!u3!Dm&BYyP0Kk9m-TQI(-f`S1fr*HG=s5*ZnIFs# zmSPE0r}%}g+M?V{i>A)0ZRTtmYq_~xOAV(B6*DuL)e<4mTDB~$T#*b=4mgmHy917o z`+~P?nzaW0Rln`G=lSdReC*jC{x3v^AU%D?f{7C+t{F8d#(!WooApMcQBsYnBr66{ zmJ~^nWKoi3MH0n7CyF2#t;dfSoi8mtwF?LV2st^c7=klJMMv|xy>9MQHGn1&41~fC z5DY#r5YobqTm6z4Nxp(_A;CBGg}9h$*_ zrbr;_fUqH;rGJYZ-a1kz#Xlj6O7vf09YfI9*ZV_blarLm;}L8zgks|v9G`?XIT_L> zgtfzzWJnnsHkn@ZVXe>W{{n;I@f44JU?tWIy%sqsWan?W_9sbi&9$vYQAa|Y} zvo*%3s%jj7$S|y4_u^B{4NXRO*;!uGJhY_*NPkHlhu7m~!lY?rSS<_&{hG^D>#zQ; zt?ycEo44|6MNLmnSHrO3#X0N7PML0BUH{2xCZ+Kif``Ty?u=c*t1qFIk)ufLc71}S6mm*G5GzreC=opmS-&Wu1%jEDS!0# z=$rezh>||MTN9ws-PuJbG=MBeGSaLtCf0@~=#eDRE(k(8#ia*O~=d zlij8r8et4RDa+^3i;Lpok_y(Yec_war!V@dtDCfr4zJeT?bCX^eyz2&Q>&@Dr&Uy3 z9o)bFfGaaI>pMj;z7E9mSxUkkZGV4(7F<3{t4T0v+pLBzlU{lkNaAm-s%l;~ckaRu z4<0;x|Inc$of|f6uFlL{RGFAK;e^4UZUL4636CB`hK}bx9cAzwk5T$F73qc!-6mip zLn8s{47oX`L7V7F?Wvm8I00000NkvXXt^-0~g3nB6 Ad;kCd delta 1413 zcmV;01$z3N3YQCzBYy>6Nkl^Y}>YNJlnQy z8+Bh(hK;$W7@O<+*0%RA2_g7@ptiNO^QYwVd2BXwV^dSp(cDbmRgDGNY-)C4Rn_=Ygb>8z zu}5DW^3u}WfPYjtM7FF7=IP)v!ES)6fDn*Q!`uW<4|-X<+$z|=fBy$=yz%<}SS&gq z%d*0ss;WB4WMZJVdmvm_w}6@&19TZ&#+0@x9pEm2!YQ2vIOe5!-N7Q-+Ly3n=aGY^ zX?p{JT3_GHUy?{9yx!r_ewW+TUSIB{w?7W56LcLcJAW8DBs1Xkv9%(=;msR(;`uR7 zJ@scjKA-O~0JXRGmA|oYe8lS=>a|;Xdu^=?o(RK`0g*HWBOvP#iE*HMjN_dW@B93j zl+4kwOluIBSy;|wGW?~vT#l)odlK<9EzJesQoyDo88WCUmJ;DpYl0kWiSo7UM>y?? zDr!16vwvgr=2D;#KyGSXO4BKwG&QwO**0Tq>ta%=%*)CiR|4-T1un=j^rBFK14nwI)%BEbNSQ#V}Uc9GAdgg@AwdinYB_}ydU zkvs3Ytt%Q04+5w;Aa&d2#2>tcWG2mmgKt2t@>I4hY&p_@+4(fJcd)`xx%}pvcrvvX z?|;BxaNvRq?i?KK>rbasLyD>m2mBMEWHJ^2yubtiA4KBgGda8yi4Otquk{?f_#+?B zKJ~RPis93KDPA~!NL;MR;+w}$iuZi^{!7Tzxnl*t{poLN%Q6vQB+ih zqG(8xjLM&oLC7xCc5PpTQH4J;jLW#L!K4Y~ANbhm)W0=vcA6 zsHEaGiA1bq?V8Pxkr$`O5{bJ)p}R#kE08{jgoYpv74@FF?;iT{7mt?JR7(?g-p2Ta z=kdV680imxk@~e8QH8)=ScKhKNIEZ(6*}3xLM#%-|7ut6fxEA}>fCdG_32=6qJK;J z01_ZtS8d;P&faf+qeGqyF@EJG#BRTZCwwvd@BRWy4<4s%o)gPuk;y?aJ!J~w@g%9_ zblhiANwdJEalr-WJpTF5fBdKl!n66n?o0Q4`y( zw7fuyMU~-r1XWY8JMDmAG8878&3~cm1+jfF&4 zSD(1;w!89Q|N8g*>(*_4&@jx;099PuQuC7d`Uga2|1!~4V;3KF+roB5`+hM{#~*Q9 zmSgYg)tk=#;SYZ~`jemhD)jcZzxU;J>$cokTibZ1&1QWV*bUSG3IHo)UVlZgEqF$e zkyvMFkI2aH0p{`tB>n^qSoFI^I)PHa!QVmx#e`KF(g~miQ2uhnpCU;L{|dha$qHk$ Ta0H}i00000NkvXXu0mjf;9<-k diff --git a/launcher/resources/multimc/22x22/viewfolder.png b/launcher/resources/multimc/22x22/viewfolder.png index 8d5c2e752a6b29306e9cc8f837bc288412837044..8fac1c3bf56b16f3c151033f4b60117979991b57 100644 GIT binary patch delta 448 zcmV;x0YCoR1KIY<&~4^BF9B1|=b4?=nn)p1jzl z39qj$<(Ud?z1sK=AOO}JvrMI|6DcLy%JZB?6Gk;>GOKV-XvAA`!m5s6$7sLjr#1}!NMO0|p{gL!US=Q?Z4mr{4GX_7 za4TeyQflZJc7iSxy>B)Q`gwL<-t}6dM7l7IIHDH)Y-B;s_b!}sA&07_6IF1MT#>~c zllj56=}qdo>ij&xVJ3K)ZrRtZw{KSNKZ+qNs)*1?Hb4TQ qC4o3SJNpQHY9bjhq`L&10@WYF$&0J6>H3ub00000B|33pQzz{Y#d(N%v@4o)lfJtz&Grt!V;q>YZ zkv~C^!7-Ds{q!~w2eeKXhgJho0EYiFbCTQ`?i<`;jav;^3+!o!63`ZKcXxM}tH~UE zgY)vf=(xv8tM@6Eqw{4j_7C`yNJBM?^cYiY{WuG4bgnzW-;G;2o zqkI!ZUIw+%WX|I_=BJ9ikNME4a84L1_5N2Ct9Mx!`pb%W*Q*eWp;8y|oh;sZ zIGC9*j08-b2pd*Tdpk0ZM_BU;dH#0rde7n8qqG%A)%gbln=m>hgg_I{IiA1iki=SP zmL_fQ@OewA>wjhyd+&Jh2A{Q(ww7t~N?>A^KvjV;bdiEc&>~HqX_+Sv1g4}>U?4R# ztk?;DMBaL+W$JHsx`U;OAK(czp+4XUKF^{Xno9Rd-#M4YP}MY?V{l?FkHQ6&-m{bH zCsEf`Ff-4?0iJo;oOIhKS6|ieff^fiyTE rq5b~-Wiz|}z2XQcY0iLmW>$R!8eygl?I^c-00000NkvXXu0mjf0-M>= diff --git a/launcher/resources/multimc/24x24/cat.png b/launcher/resources/multimc/24x24/cat.png index 721c0998ab92bf29714c65837eb3dd49d0f69542..24c994e20eebfb14ad8eaf9905f9de999ac36c58 100644 GIT binary patch delta 810 zcmV+_1J(SO3BU%BBYy)2Nkl10r6vy%JIrsVAOeT}G$rzHL zl~$8flYnhROD$26)(909Y~#X>3vtthUHBdZ#f1xBfD3nmD5w>|=%PVm5i9g*CNsl5 zir|poq}*{n@LT-5zB+4Cw&MocD7k@WaX3s9pmychZFF*Ot z-NW~NGFrUr)1~`Qj?yua8Nfs^pqWDlA9-)(@Y#q?jSrVk;$RcJpXdL2X>o1h$mGJ8 zB4WUQ(v$RlK7Tp#V3~HUF1;C?dhF$QOG6WNRW+bhu17&UPPmtyx9(btymC=45rIa8&>Z-3E((!%8{>*qKB++aHu#Zd=A z*g=$B+(T(-@}o=zrx(uc`)TushhZmGB@S~Gx_bX9`j_jtbjSJM;xPG@ES{TtWjXZY zmS<2^%SCxh!mj3@?*w+|z`-BMsysUVs^@sS-daU1@WSRh^dsx&7obALT*9iL8-IpfN>b0QrM1Z_)!weC8xh4w0kG6S zz!eX594a@jRnmI>_nOETimVGR delta 1155 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 delta 1434 zcmV;L1!elH3#BL_t(|0j*X8v?FO3{B6a2Nq0JVv28nfw#K&Yncud(oLSqp zZRZ$^W7gjO7GqDJb5FafZq;pk;Y^p2Kf3%AfAzhv^2*Z7KYMIW=nEHWS$J_Oy6BSh zeM>LTVe)T&%=u3g8*XS~?tf$VFF#a>oip&-YiqIf*EjCpdVgyl_TD>&ZMXGf zx~h!PKe<8Y7!j=>Ty`*@I2*+Ys>ewoQ%g59aIphY%(iLG2uK80UtPiCOEY3ePf(|+ zlLD{5p`KlGS@wDHMp}!-K$g7ooS?P9-Dxj!qrJ|L zpy4P)QItZ$P@vVa^|mn7yxn^nVHqTH8EW`u`GUew~K5VSvW^J?M4c z1IJ59wH$&^3cXeVhh7UWCr8w(J4~>uH_~Z@c#LFxn8}ARv&OJSBt!0UbhgX}x7X%ujq)Cih22zP4_6U-`kJM&6Tte>c2 zvVWCBJItYM;}9{*k&0STbJ>w;>5(5b!x89$nN!1Jlfh|K!mgGT+j});RuWR6V^^&tQ)%~Gng*8k#^|O z2$~?0uIP=hW8+yTC@X}>-)^l0X*Y+2i-VQy;FaH}P_?4(aB&I*EPCqZh>)9MbAM-$ z6fdj?uz4hjReezmC#@Jw+b~Wx^+YY`k6W>*9z@n{M1V-*b{z!u511VegAxgcfl3b( z9Se7BC=dQH!Ge0AGmx;NGEbY%?aovkG12N1ixzM6X%MgJG;v-A^ zCKVzUHCe^MP1(2%aw3!yQ5S+1?SJ7{#q5&zzG3osrszSDNR~JKm@Ee|MKzsw(&##{ zYP5v0as&yRmJ}#R}4euu!zXL{eqClkm3xE%}klK=n!07*qoM6N<$f|DG+IRF3v diff --git a/launcher/resources/multimc/24x24/resourcepacks.png b/launcher/resources/multimc/24x24/resourcepacks.png index 4b7020b272352c3ae1b48d0ba8a416e52b5557af..7942d80ada84619408fc2d38c697de193548524d 100644 GIT binary patch delta 1660 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 diff --git a/launcher/resources/multimc/32x32/cat.png b/launcher/resources/multimc/32x32/cat.png index d48f8a668f4efb2f01520d899b3fa9618f7588ee..f8d3e30fef26a1c19afed360596d4f30e9d4c23d 100644 GIT binary patch delta 1129 zcmV-v1eW`y4E+d@BYy-$NklA$toOAEo`JQAZ$>hV7q-ktYQPYG( zOh0Kpt<<1tDMD-Q*Q#i0{RafsZru70=t8=3CxS%WxNuWY+X}5(N}(TVLgHj*?&~mA z8_Uo%)8v6?aW9wi`7{pZF)QU_d4gj#TL@;tbe<6c=*_EfYXz6`4eLo zww-kFUb9YkLK7Ru`_R8DiYz6O6%#CN0%>_W8=DuCin_J-Q^vAK|2hM-i*EvvJFWh(j z?ZNKR%;xQS^270|p?9w58#)wN*T9b*V>382b+PgI!E;{>_U_SGka(8xBJeJo!Fv-Q z%uEf>-s*0BQLVKKJc}ovf7g>A<&GUV^W{k2e$6Cv3V%GS4}s)!p7q?on| zEcw=NrXEg?U6|d`zDt3+?QQS>ih7wGoSApluPfLZr@o8m?A}vj)WfNXx!pbO{WTXi z#%RO~G=Cb2tM6(TOaw`7Naj{5Q*5Iij_y1CX(F1cxwwc_3#4KhZO-Ji)^~|$T3d75 z{;d2bBGkj7fg|6F$WzDcIj@0_+Axhy2BGiM3P!-LphSQ+0g@oOfNGghFYZhq0BZRoX z3x5hj;opUbGY;Pi@SM-a5R9=H=e0zF_(6pMfi6W;5nSy8N+1R-5C|m0QppACEw7de zL?baOw;F3K>k$!8tr#kDd+~O3HA0`~{EVW3AkN@~HQ2{TP(p}Afy5(yUv05SF}++` z@qI5K9d95OB#8R)iZP;*I8}o<@gPMimVYJ@&xjby!^L~6R&~i0!XHq*0{ja6QKq;A zlzD_${zI}P;ue=zbh|oF1G!5@rL^#X2oM} delta 1557 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 diff --git a/launcher/resources/multimc/32x32/instances/chicken_legacy.png b/launcher/resources/multimc/32x32/instances/chicken_legacy.png index aa806bec4a4307621d031827aae058559ae391a6..08584bd388d927f9cd46d3c8d9bdab3ca8d42220 100644 GIT binary patch delta 947 zcmV;k15Ete2gwJJB!7@eL_t(|+P#-MZxcZjh3}4cv1N>S2qhp;Km;g20z?CfpddwP zs1Q9BMMS8OXeelC=xB&!=n;Pa>NJo@C`iOXNy95(<0Q_T_^~@X!CViK?>Y0ZwRULpa2ReU4sG}CaVK6h!eu-l5}U9E6_CK^tbgN#1q)`t-b$r1syh(V z)6;- z3x$F<;%wk)CX=~lb~bMHyTCzker9GycK{ZT3_J(diD+LW+Hx6FAk7oDBSh>#%dOAS z4uy#M7I-^vz<)MDJv}{5Y!cS|HVxRJwWcWApWnU#$8n-|r{@dW#*k9dX5msybiH{% z`q7!@f-kO|0H- z!i|<)c`~-PA)Yi`+9X&EKrF#dur}45|1=PA@kX4O$)VMc#C_qkX8^)hal0Qsr%E~! zZ_B{z<#np_;~sBa_`vu4|PK z9mi3~I)BbU^gwBAbu6OnF&!C<#Cy*7Q(s>n;dP8mOioVzg!l@mnevta7UyCN3(D3p z&Ev{8>7@_Q(R0@}#QXdEjWFT0Y<6sH>@CDUhhew?85y?&;jL#sk0ak192|V8VAM%D zq#=;Y=gBt{Kma7SeQu9~8~5(f#bbhcdwXeMV1Iz{{%3ZeJUTl14&viVsX`D0^IU=r z*zfL3;8i}KpAte`M*9Q|?3*F#tD>_GYMiT}#(4=04-c0hRKffun8ji(2N5D&c9dV#5tFQC>mj$_aYAm)`}Auu#ZH7>P^?ZisDz$KBcwZ zjVy@gVdVi>B;0a5EAp0ymUv&Bv=P?zVDa#=v0!Q;y=fM V8+38~(Zc`$002ovPDHLkV1oI)!=C^E delta 965 zcmV;$13LW42ipgbB!8kwL_t(|+P#+p>?~Il#?Q>o)V6KgwxXsn8dZvFTVd@;O=G@B zdbVxpZ)tJ)zMGtxWbdqXl3&hT?D@WnRb;KDS`i>zN}AMo*h+2d2}ZR@;*ZrwWT#M!_PM;vj)gKlRl z83@5);1qEE-o1NmCt&f!z+d2TB03?__0RrDa5lKVO9uX_WgrKR0_TG#du1T<-+}2x z>`{cAE1974&VM_vj9Sscd^XTPcpqM^&Trj-`(R9>)AJ+hVko6rH*nhj?~wiUs`7$= zKTbkvU;xmjti9~{)A?D`o=HWsXU`^M425CXoPoYKFZ(J!xQ2>}kVCVO*De7TWkZGr z3q-SaDLNenjyme7<_rwHdC9*<%d7W|mi)pEwP#F3vwsf~31eG3g42#U?Dp)frmDgv zZ&$uwJmthYcL`YxK&*kCNVJPVn+7BoFI5)f6=&OtxCn!m46rcJwZy8=$&*dQTQe|g ze1#q`)?j}dGdlzA(~B?wsKla0CeQHK@F2w9W^4k9 ziGOj_>4$h95sd?B5oHFvU65c(B9Mo{vEb~oQW@jS#{C1(Lt&A(=B z!X(EGimVe(c*6d(0q&L~4T63)pn&GmrlHRPc4z|x8*zDhvYI&OgJF2U3FEv+xm)@x zZpc7|BT*p#Y!uy#;`iYBQVboPyoK4U1U{pLTaK{6awcS!^;=Q^}w n&wv6mU{DBg&>bCbdEGb!)1n~qVn#!h00000NkvXXu0mjfQ9s?B diff --git a/launcher/resources/multimc/32x32/instances/ftb_logo_legacy.png b/launcher/resources/multimc/32x32/instances/ftb_logo_legacy.png index fcd37275696358d9e825b1aab1cd0145f3c5e9b1..e47b10de243b248059ca53f3095966fab25c288e 100644 GIT binary patch delta 1424 zcmV;B1#kMS3!)2Ol90%ce#w{j&bjy8_r0^c$&fLO;r|9*c;+c`3x9Z48@hxL(@hBLu~!BT z&DbPDG>{fCLt0?pZZb-^!jt3{@C;$}X`;+I>8bs0(0NaRQzcac3pgt%qm@$V@X2`x z_kvph&27zA&GBUy=Nwt`8wvVmgZ*I5&&#};pO$%WKPwaoJzUlN#IZR?m$rdj3iOdt zfRRz6YVYDgseeTA<;K6akdz47SS2J;Qc$>`knBjxi`!Zolu>2=GJhC+&TSRo8BvzJ z()VW9fh+A`b^$wu5X2IofZfrS&fj6rSK;}SBPf85*aHMn_x`DI0ck3S&ArkAeL+@< zWW0osl`#~MmQoOewsv!E?eyzA_%{h&STv)yc5YcH_-Y|s3iQ+rp(Xh^@QpOe%%8FTVLKL<(0#iUOWo`o(`+QZUKHnx53RPsZ{?g;T zO&H?`0aYv*T%e5E-hAT3CKNmbY{u#>_tn1pgQ?m4-8HZ)fRinY9$Hjcz47Z7yLQi# z7v_Pl0DtJ4wr`FHj7clOQ)2|*r@?>pvV!x9mlwEr~v{rZpu9Hdeg3R4Xf5&J@nBbuz$f0 zXIzSW0Y*t_1f@i4ZC50oL0&5%N#Ggeb<8 z^?#u-VQn=u1B8PB0s_L6PTWvlUQq`P=`!{hDB1{F*t5C4y=ib0q5uRW$CdyPp1O8t zBlQ({hB>oECT-vPZcJws#ZeG8M1bO)*b+>4-9-V%iD)VPAoCGU$mzrJ_}-Y5NqiA8 zL_k_g8n~GO9_`q*_7!lomn`2n*Eea(i+^w*8XQO#kO208Z7F7}Z6UNK1b94=*#CKN z?*VWnpy0u+<>mEHjvv3f((iwDeP`!iR_o9&AqcP;u&KpSn|R}3!v*1G9IU&AA=@Jn zcX`QK$z`APWWsr;bRSt=SV{oWX26~y1jQIPMhN|+xA#-#wJo^ba3%EWCoVz5-Bj&700{s|MNUMnLSTXd&Y@EP delta 1434 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 delta 2341 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 VWW#6NC;$Ke00>D%PDHLkV1lusslWgL delta 2062 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 KMNUMnLSTZ*%bDo_ delta 2408 zcmV-u377Wc67v#}B!4h4;DlCO0XQ)bom&sm6Y`ZQHhOTWFsx zbZpxyp3qK>Bt??u#`nDco|Vo^pS9Qe)=ByAv;QLr|3s5Eoj|-mJcdadCm^mpEU(Lx zP;n;lEO94Mfd5-m^e9Z;G&6y!120;e|NeWk({4EFt6NSV_ka1agEHQkHyM>P$-oCh z(*JGX5s1PYXYP7V^{U&R-q7&XjAdPO=FHYBU$5lPJo5~H_St9k`);go9-8;|qTS7v zd*E;A_ghd|X(Nsx4q_D*Do7dW+;ij}=G+-ir0n<3?b1FM9-B67SV3C0#bRYvixrBZ zAP@+!u-cTh$A6jr$$4c_A4r#?GLzVsDE?apsAxWbSBa~L8yI8H-BvYg()7pF6W+c% zbJzWM80;nWzC7vS_7yO+BP9{~6$c)C zz_FR5Eu%45jL7(N1DvlSa7}S>$@#fCW%Q4kQ6v-!89f#RgF#_}%os(536hbFC~mXa zV6j-(VSo3G85u*A;TQD~KO#X2eyuC7TzUGtZ|`}s*?dee5QJvdL=oz-7^$!@L;NO* zl9Ceawbx!oQsVbZrr2yn$EnuV+0iDhqg@5weic`Se`{bP7#Q{jFtoUR_z!1t``Mk- zr!m)$KOyXN!teJ(GYT3pr=~)3IAG4nK~g~hQh$aGL(FVOety1~J;_)P!mQahA4gsj zEPK)S?a3c6d*3q`73%q@FzU#}rrmI5U?72Oh(ie=mD`eTd~htUu7(C6NQB}92rYpC z5tJmH^WuxxHeV#Cr-rCk3Nd>z4sP{Nuni&ENTRbeFF6UI-Gj2bi?9zgI-a5 zr&u zVB#)VEoLy29ndu>-bJb<{kU?zT7uwSivvlFvVQ|iq3uA}4JKQmq>Y7|UXEQ3 z+fbmDNVY-y4OpiDLXQxq5kplC-&tT?WXa2TiH{wN?ECMBIXM}2yB$eMNdt>akbkIH z$PHKRlSnpsA=$@6qS;H536ePrrt~pL^39NvZXG+!b+z*=M>Lg_<+;1ziuJ$S;`jF{ zJ)p=XEp@#8HY*|%si~s_!8wDkKD5a2$SfCLh z=Tdn3dig7Frk?!x`xVm$9Yhrz7JuRl;?~!~I65}j?e&MlzHRmO8@yhxvEM~+6D9iH zyBLw}MPE6iBd zP6G_Mk2s6imr}dD|5(o%-cZOp|LwQ$>g(&%eLkPqT7wmX-ufb>NCOm;nSWZMB3TV1 z9O#7K(}t)p(Fr}=4PB3d%jw|iFqCGl9j;H_^)7|;7j+;{qFEOJ7=r{U<@z`ti}94k z#uans%$er#c*J3pm;z%8SkXN+%49$#%;G*sGxzLFAsXmFB;Z6W>;s1aM(aUl5%|v- zQqpI&IshCgiK+ZrI$%pnOMiZ|xj9A#?sL1{0cwRfeiKbdX}bgVBWU&}!+^kQ(!nB~ z@N~B!)ZdD*Mka#Y;Cck0R!EjSn3L+&ua7ulcnmO0S2DD7U_BBP{ZUxDXX7NPp0&6<+lyI139? zs_pir5+L*x2VNs)$HI70nVwUnTCJ7}t5vP3t>vp%uYRJbsmb}ftx$8p@-BxgQc!86 zRwxoo+=*_NkwP08=puR$2?ycRi_sS=!`!~U8B=WJ!`( za{O(udGqG3Pd@qNiGQA+9*_xf9S<^*dm*3>g<>{ClFeX5iW-8quM3)|olJBf=y$;% zRL~KcL`ix>KQuJF{l{-YE#`|*AtV&3tE+pXrl#iG?(S~T&Jbt*fS5!@3-5w>qRA$K zOe8BFIGvr)yzS6JCOGx|pamkBzhJ@Z;YfJP9~y{hTA$zT4u1x8J&3rftE>H0RaN)6 zTrN(4(%AVR5%+)kzTmclL;{jT&}dZwt=|nlD?z|^KKy|gR;^mKq@khV?hWfV@IN$g zc}t78y1TpJ@^ILX1hurZ%v!T%%`&Ic2|}0{cp-@gO7@L_Y!xklWCE8`kTaGJsiNEA z^M|l(`LYEYH-BzCZPm(E{fLX=^$jr#@Ar7z zf!^Mxlb?G|JEE*i%GrJQcMm@F(DRJqgt!$4?g~Asfq(n!ph+W*boiDnTWaUdn|ph| zuYVz>r{h;*j}azWK4HWmhn!z@*kSwH($npXa|WZg1UQFIry`k&)z6u;ecQTqU(K}H z792%y$HKzGRENVMZc4hAMFQ~$Y^;>SxGT=O8+gXc> zV9v^dVt>5*R248{jYJUjdJ$}IN3gjW9KeV4H;b~emL7K4q1Ts{l@GVuZM1FWkkjRK z*VWc--?VAtlD4+?t+YV<0Yr%i5jIHp93?n=2zYWlaI*@?3eCh?SO_aUKrH$BP$*ha zytNh1AAi(qckI})TGN&+06q-@egG7noMw2}bzvSOg#bu{A5x-Vh|m)7$I-+uT?7=_ z7&}-^N-EZEHkM?!hx<(?%@v{3pua!xgUi*i!|$)x01p6`SR{b~@i=;%7!fr{_^ii& a2R{R0z=_AG^KsPx0000Us<{GPK<+N^uuHlFo`BalZdW~hyv(3XqtXqRn^dSjku~3i^mZ~3oR|3 zY}l}FcXM<7^M8OJMvwx50Ha{d$jG6fAfLmBE2*kFLp+{HEE**mQ;ixoREevGaSdY$ zRTT_HLlcqUF!$V>%aWyc;Bw{OYy?RAMu5S=0Y;&zr>Bc>IL6iX4tDOWgTy&t6TxZ+ zMFx39%p!;a2qLJuA<*N)cC43GtIXu&lZa`!djDKri+t=p~ghEkf6&K-184o$x zP>=_c45t_t8Wv?6)o_~OluVeI1{0EDvWu%;2k06umn+@rbQDVlV-66BL|VJMuXPM~ zeB|e6l9L$%RFDNj5fsyiRv8q_KeWkUF++kve>6bd*&0eqXSiN@WzSnvrcC=0po}R1 zp!WB>FMs#;^pld3LgCFW5Y&;;Tg@Zd6tG&sZU=`0qmF2^li~F6+P2BuJhPaYGfS~3 z=~i9WmI33&8h}_VTJP};Axa8GQ_~?D0kZ^F+0X)tGSV<10TL5Os@VcP0p>Z}tX_UQ z$*CFi4|sWh-|PJs8qc2sLI4tDAQ%js7#th~pnqt3Hh3GL%L%#)8h`|%3E~>4D)<7> z?I$bTz{B%hoT+Z+YL}Ojr%%w*(%h`W7r?bKPoSftt;O&64M!p>6Y^8Bq)MRaFc^g1 zA?S2NTc=?=baaE;%Z#LpyjOM;iV)+e9lztf1D`N1H;w7jXN!Ov(8e6V>m3~QdcEC# ze}9mIap@!{2SKrdQvru%!~`oOC4xogfhq00yM7`~7cWz`x0;i_+wi9@V)gwim^QU2 z9fUN1F$b74XVE}UPj`pM<0CaajpE4;5OlE0V3!f?7DF2j&CRnjukzgD9R7IdOP;F? zb1iojxbo-^$qa`gv=K!4QZ@wE7Seh_44&$P% z&&$#&ne5nqgg38d6Bu_VCMkw&31EtMGUOc~Ej`nwDAruS@}C6Y{Q26`(MTK(C`ea9 z3_{#w7^6hK!0x*sTQTwGpFSjzn8%}YGub|?n?J0Q`0R-!_H8XSnrD&e$`q55Qh%}m z1wdkql$I{J)gK(@z)zkd_Ser@;ZG%2@(>xapC2rl%cV=rTFz!hYHe%t^|{?X( zE3f|ggIyi{UVYb7&*;CubCDiASEFCqwL{-CWs+Y04RLUNXd z;4qm4(c|vwxzJd*|IlY2?E~t#0bvvWlEp;@dAnD=v}0=4tXuHboyAvs2EXCpsgqQh z9SlG61e511L<%}Fzeq|9%65bP41dIT~_2;gieWmC`-STrD-uO7_$qDEpM58)! zRlw*)#4x5p{021v!ofJvp)SO5FCTyW(W$+AcdrAQB)Dd;;N*!0-8IX`=mX!{lX z)yD~5Y$R~5mhh!Ze1GLkheykp{oT80J>QBaC6V;Z6l@8J=sEzHO@Iz+B#0gfqeo+C z(I`$ShUm~q$jYUxZ1ddu`kG%U-y!P3$ZADK%L)d5-s;wq?p`Ktvoe}0L zhhnl?GymTB>J4R<{45u7HBLAjMpZQ&33f6v)6ldyYAjA~kAIt}(Nr?q5d;TXJi^3@ zNhBpFq9_(FU%tY+b?Z)7S66M4A^`Bv!;e1rx5EiUXi}!@l3lj%xy;np1?&pF?eG#6397{;(2y z#}_){iAMGVp966aW@csOEiNrxbl>8|OA2qhZGkj?d@d%FfGCRBC*$#W>Fw>MwY62P ztv%bi0ks0M0)4glV^o9klb-_yg-Z-3H76i5s~E)_m$xqW)W5dSiiI-;-vG&sLPP0>Vz96p%-GnPrNibic`D*#>L@RswT@ zX+Sn$13|=pcLcE*wyc!I<8#c?F}q-T3s?i>0U~3^%7`NW1rjg`m<>z-tpAI@sqLIVVYzI<<$z;A(hn+t%ROwr$(C zt~s{QLG3h6(=Mb*T0P1Ur&{D0A&xuL2qUHtdP-6=FvS!VlpYQ28_)Z`Wd8q*5@bq&AsHjjpRaN!0wYBolLr=4D z<8Dl|gj_aDHh*V{Y6>i2CNOQpB@sXp$N~i;mEe*~8@TYIbE&CmSR?{eo)91u3h`W$ zW#xD_U44xuzYoO)9C4(%1B&y{IfM5*orb({7)3)I&^TO-U9EPoJm2s-OT6|@T$RKwg#m{SJx zYZ#9Dz_CRS)CBx~-%?fR?*im<=5t~gM*qab*vNDwMr&&|_0?&>0!$u09#*bgT=U6Ke&MSN7PP+(a2Em$4fQ=IV`C#$I2`Jo42CH$FQ;Qs z4Mwi72JYKh`9w;gTpAS*gt-w<+2AOky&KbP3OV@WDRhs;L!v+xZQcf;$kQ%$yb*S!6YkuA+EdpOv);%2v0}( z-gmzkKGJ=7JCH6+!rIy;tJ z;?!mianq_AcJJ(Acs$Cs9b4(^>*;ae5n!wkpuhhp&n3}a_UO%iPL+p;`$ABN4zsf} zJb$0W`kskKqZ9FXYF=AYfU>d_LCFJt1w8q=fLoxsArt4CmLcAD(OkCeKFG%&9AV5j zgR`4uuDf~#0|UXp0}n`*;82(Y7hZVX^RjH&S<}Jb#7HC(qaskr()m7+oVM ziA4Hhu{cN?r=HXdvJHBE>Dj7Ioi)TqS46pJK{X%x$rF5exQ=Agc_?ZQO;4hjqs&I9 zsSH$m-EL0R%u$Fdb-i4?Q( z6yp1`1ay5B!5XlwM^`*?}H_)af}RPQrNbQu4{{zuV~+BI8O1% zN8iCM>+fajcfP?udlyTuzlRM^ZbEU%oORYYq*ECu9G)`5(=*1z#CW=YU?4UX3dLq- zro}uO4UUfX9|va}u(i+wMq(Bb085fFH~bOv@J4?p zaL=PCI3vB70$JBd^d5xf1<1FrS-JK7?_%yqKP&ILlj-f-NsNy%FPCBBq2J)UXFbQ` z5v{v>&raY=H8u57ueTv38h@1&ASN>5@FdSB^~Cd6K~h!FJ(!sk3?9A5{fF-@>A3WK zTCTj5nPW$p-nfCN2w@LT&}un^CdasU?aP$m!M;nLc;eBo+3WG?7zYyAARANkP2+LKNpdSD;1y}OAEqT9EzUH6f=c^&hYosOMOQe0YrBWs+t z`dl=RZy~abg$oBABY$U7S{JPe)U~~C$0y7Vi zs-StRaTixm5~wX*)7tR*s;a8h-}=_)?@Xr?$K`^#Sg@*@`+wLi>+kybrQi6rZYL5% zAA5k*?(HOZZ6hN>?D7X-{hK-Uob%~F+|RM@0cNIVaU4ki04_x!gJh;~G7+5QBz9y3 zzd206m!q|{fmgr!<;#~XJNAgG2963nl&;jhB zVIH$IYtNFi%zx{apQV?3J(#*lG9Duqjp8dVqN=(Q+cvRsCX>Ms*=!coRfHt@uuX%e zxuukrmEd;k^!5%Sj`%j9<(ZA>^^$bMO?O=XGpY@^H#4u`^;6VPH*h$>ZGK^hmkRaVSffq(}byts;bDcgv;f^>(vnu zjmCxX08c-?A^D46{B&T?o*lmutK|F71o(P|f9IO-e&tltmPqf}PUi4_tmEB;W)l1) z<4%7gmVP3VHGTp-445D-sjY3iVCBlQuDIZW3p>s@W3}4S(tw!p!dNDg$qQ?xAFy7tWJ=53MHzhWpsc<;h zYns^}U<8-|Mu7-m77m(I;Fbq!+}ZePHBNV1k!Db0X+N{^k=aGf(ikwc{u<8002ovPDHLkV1ijC(i8vy diff --git a/launcher/resources/multimc/32x32/star.png b/launcher/resources/multimc/32x32/star.png index 6ea62a9e2a1eb18cd7a3b6f3ddf524980c83fe7e..93bec63a912d4beaf6e3a96836c37d1bb1419e27 100644 GIT binary patch delta 1472 zcmV;x1wZ=K3(^aaB!8JnL_t(|+QpVlY+P3vhM(`;d*{!t|6&_E{*7s^Sdl`B1SBPG z+6WLWf(mz`RrV92 z@_hHiLq~ci4}tffx{ENI!zDp?ZDaXxwd`K4mRz}9w13KNB5yn!KpJC&EMf*kINanj zB61AjSnt%)-jPEm5#vZ#lSVsD$lAYNp?K-smU{m>Ft3jDD*Co6YpB)$PdhUIi~;Bh zkVnPH*AO{s0yCTKAI}x~r^)y2r+e@KVFX~)O@-ajw6M;FRMwZN7Ozm-T%~qn+4{s@ zLU~=)zklRa&j2@N{^!9yF>*TBKYYA@;#1N+Fioy!1W^at00T%15un8_D}c681v(Ic z$x$y~W9!BWr7H_m)>htjPM-+9XEw~`9-ck=ZEzj{8fB355l#EINh*-yJFNp>Cl_YP z4b3t%d7Oo_&pqghYllqYbfI3ZFRZWr1GTP&bARAdL|d>OZaYrb_!M8&>i>|Hp=nt%coqURQVD3KLHxhiXPa< zJAX;tQ(Rv;F+4dY#$-V}(gfo>{q5rv(pIzu9efL)>EfNUFKFfJ#?KW0EMRvYM1Fst z%r~}@zRk^le|BVQ93ugpO~iOe>0C>t=#Yva8Av?-#u67^IZg3O>3OgEW1w-Xlh6)z zajteVJ{Y^Tx#6)X5O!@YEjl7;b!cMpV1MiA)(7Z^^Z3hWS^8j=50~9b-syLNDx?Y7 zor;b1>D3GCN5*I0pYH9O0d|}P1~37b2=P_al_4pi^&+~p0`)2yLlbIQVR@0u-s<;( zEr9`j3SXoBZ~wHm>Osa71DR!frOw@Yb*|mB_XME)_K#0IROFGb!1R=YV+Tr9ko)Y$ z9SB%UkQL3~1hs$#F|f8_nE!*a^p;*k`TbPHX^F7c&+AwJ_$J?)oRhg@kAI7djVhWn zv2AI=s3W`+fyBl^Me}5>@vL4G7S5=yz3<;p_*DV^tU?J;fV|;755L@4)Gz;KQGd`k zF2@f&WP$@zkk1<88nH`k19nHAd5n(~8=UO<_22`Ar!KvE^;**4Wdo;Fc@3y?y9hbp z)4+Fvh%X&DHabyUt-ZLuygB(zV3&kE_eH}klCz25r%J^@8F1V|1dN9+F?5^AYy!29 an)e?k2v{i<2U8mW0000b<+Y=}IayJ6z!;Cr`+CU&H7BO4A$Tr1_l%=4pO+!Fe0soJ;tpX?Qieb;q~+ zR<(b-Pff#X+3jjy4*t0iwJ&9ss(U#*ySwrX?XEss>t4=P)qlK@S(bl-+0O+*)w9`$ zo4?*wi^VIoP_pIQy|n7N>=Uz}2{QcM%y=@`q4I?Vqu#bFw9tK7+4d{7>ZL{FnNJ40 z@pm%iVSn88M>C(d{B(d8+b`{B>-a;owD#@PM}j%|JD7C8CzBrt4xah^@~+Tyg%+DG z9^e%^>!nq6@_&PwV=wog1sC)}H+rA9Z}IEv zJ!6C{V&)TJt&$sx$fgLJ&b{;|b1$;`c8IZqpH`B_r+;zcC$!D@s9T-;3iv`T->B#h zsx+cn*x&@~`d#tGwPu`$Y$HbYLSz%;nU%8hE|II4cNy~YEXEuQEQ=oi#2|x3Pf!v( zto7+>o<(n4Ers?<3aztZ7sWGBzEX9sIMvrTKG}837gu`oi;?GZ^DeZ-yi2YvbIi94 zxw#fW)PI8ZfdQnfB<-Lfl%y@I<+dyVm>k8f2D)2k(@{H~p2pcfSgX6qXP0}M`W5-l z*4+LmNL~g>G>J)n%mG|7c8OY6@(VHk{Tt|OYuwR9R>v2+isPFrKSyI*)>?3>qGd@1 zh965JE>&&G*wNNBm7b=?$+30c2*7(6c-wk`_kYS7o9|MQuUHx}fR|M5^?wO5Bfo$S zs9bH*x6tQh`RUEu3a;3<*ESc}cMO19_hH;?PagmI+cpeq!Nuj&gH)}QTV&8SUDp9R zOB`hQ<-PlD*wuHcv+jM8y4e0=b=JCj3+>@0KY#kB#5W@yud2T*w(gRhFV~O+11Y;*?TR+mGg_;tkk@p>112C!pVF;c_6c7zQDZkT_(nAOK9FS5|zGOk$SAWE_;& z@zej2APdeipA9ji4q#(U9J6RHKj3fKOH4wL1<56C2JjP2YJQwzEsK`)Mjyc9JFAQ2 z^GZq@ixnj`2h^gC+ep zHqh8&c=0~rv5Rzi^%r{a(gEu)mt*awZ}jY^FVYE5UL#sH%b-TkC^;Jff`3tqKkA=h z923Q%*Q0r|v2j#32;*N@ZJg%5R=B+aUQnUq#5YlZ8+YUv2RFA&)?HqmtVhqYglw_; zX2x4~X~<^{VS&&_aUY}Q+HLV4+<&h7U%g}zck`~)UAG;N+^`)xT)!<9jKKBVkt?}r z$vbb_nVBzNuxR|yLGwIUx;rDwSh!(Fle=ac7QcFH=DBujJjTd%TVt--nmJ3wEPDM; cCJ%%2E62{6Kh6*`!vFvP07*qoM6N<$f?IXzh5!Hn diff --git a/launcher/resources/multimc/32x32/status-bad.png b/launcher/resources/multimc/32x32/status-bad.png index d85c1d5df0103ef308cdceca52a2167be300e3a9..df63c5cc2b529666f8187de97fc6a75642891be6 100644 GIT binary patch delta 864 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 UcS)H|ssI2007*qoM6N<$f^>_etpET3 delta 897 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 KMNUMnLSTX*EXtk$ diff --git a/launcher/resources/multimc/32x32/worlds.png b/launcher/resources/multimc/32x32/worlds.png index c40ab653a7bd76ac13f59ab5ecd0bbca05b4d087..c2080eec3bbc8b78801832e8da285f077e872330 100644 GIT binary patch delta 2158 zcmV-!2$A=b5&IC3B!5ClL_t(|+U1r@Y+P3v$A90s=gxS>W6#)5?D&y)(?ofcR!OQB zR9Y2^RHQ6mQ+9|2ERd+g3W3-R-{eK1EN;8ViD-T`-5fBGf z^+pMVgbr^3=lGnVE9DJ<^WXl~CDyl_SPKpa1Oy=w3cg+A^|x-E3BthR6#{sGcvPQy z7kY4j#I!&_yv}>PZ9NaXrdy3&0ItoK*{C$S!VXaMe{g!=0O!8&h-d+i5Ohb-fdHVC zpa4-qDBuM|1b-!<;uG!e>5hUG@qfQO`-5%(HfjM-s_dbxr40z+=wo@Ug|Qabs?%&W zu-+lQA0YHy`zBXFqeS3Xky}HfoegE0l_B zwA&Ga2kEbM^n(xq@B4vyfqtaIS~|n-)><1tH|sS3Du1Os&be4vKH&&!snsg1-M`1n zFZ~FeNK&nvIDmf*;WLQW#yQ~S`R(oM6}_@}7l6`k4euO?Lh!MJ{sv>392m<|Z^7-G zt2jW#0pR=2`+NGiE*A4(MEjg|BIyWjub!n0q#;M?uCfd7vkYK=B`m$nfFioU2I zs6g-@jDL0DJ%J8Lbm)vhx{mu5L7cdi@+Nv=xqNK@>>5pD(F&aVTzGVbmHZAX#T`mpb$^U;G#U{~z;(vj<_>p7c;rhb8Av6t z9zby3p^%xdlC74`%{!2BDtoH~^2 zc7IOM0nNyA_OTgS(r|FYoZ1Ki=lA z@2&9Wl@;dhZ4o9yMklkp^V$t;qupy#&VKMS@0b<+Kn-R69K_RTIY%`%6XyW6=c~o3lhMs63@w*2tj^ffLV?|yPv`jN)5l0xU z@XC!1Mu!I2p9!HOhO>AC!G9B2N3#J#gPQVI1F;qz3i{w!n$hv;xCMgalTZTQ3(d7{ z0udr(Nd^j(@XJ^4aOtTdjE-dZ{k64jx7(_J6S zB!U*&Sx=+Y#yf`>9zf`qB_4v#W^tZWQe!;K7j}8#!Xf@}wa61^#(z0FHO$e8A(kpF z?rqfxLWe|coVB5+HXln>{fJBC<(dMnYB@T}c@Zn|+rG!8S9e*mkD9%h}dExOHZWi|N z#$%fXv6ca?7(aOsZyh=jsKQQZXIcV<#HpVMVAu3qCj^XxJzyY!r!GCpmA4mB*^Cdo z6OH5AVuegL&DYPQIGofptS3DJ>$?%Jey~QdSV3A5fe22A?3>Vx%?x8|_J)u>0q`A^ zN&^b-1Vr#&z<(CuTH)o_7f9H)x8*(Aom+TkwfMW=(rnkM%>P=`!>{-+@$oY2>9Po0)DY{W23s7-#(vT zucZyp^zh!?CY$S3^7qT!zP!jlY5P^PQT!V43ZH^Z9Q_HO6HYQb^h{zXH7!aFVA>^H kZQL%*{`60P|96}I2{v7KUs&HrbN~PV07*qoM6N<$g89KQXaE2J delta 2182 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 IM6N<$g2TrnSpWb4 diff --git a/launcher/resources/multimc/48x48/cat.png b/launcher/resources/multimc/48x48/cat.png index 11d0919b92a39dfe4825f33abb05b1fcdf85cb05..eb4b68169904d93a3ff12b884aca80de842e4a24 100644 GIT binary patch delta 1987 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 a!2bZDD)UBjazZcw0000|CK*gf`mh-Wfp z0w}>;gk~}l@DLCR4@gLPLE;zi0D0gIgm^&;Nbmv-0|*|F2trDbCQ3#bOUY!6>5SdB z`&!*qUDtEl7f$UuI_k07?w(6ViImk|+UK(OTHm+U+GlNd{P+xsf93SWxiC>#f39YFjOL%=rFO0l-^mG-lrzrm%t zF&=c?@r17d82m&K@NCucDy`R-ufN)C%%3lF!Ec0<-kB&0H@UzT0QqA<;P&l+gfb}x zadJ9LgvS*f1AkB@moyx|_Ijm#<&qE4EW}at zVi*j(BoXfe=;K3*fe$I`TcN8IYLw#ix#!ts$E!T=mVatji?#WcO7l#;(Y|0C2BYtP z`yY(`d+!thY%^+drKC(1Q;{M9k^rq*0nQ7bU0Cz|KipiudwDV%{8=LL7J%dvB`_RE zwp8i@A>=u~>|ON=wbeqUb*?6=t7q8tUmhFHL21O{K zA_&d_VgS?tAtperbmS=4+Fs?%=Pst10+U0G*S`UoL?E^eXz(N*rb?kC2PG17^)iBS zYk4#p{!)^J{{f(fV}#-uv2C343gwrZ?PX#a6p}}ff_n!S+h%J$M_F(E+Gk0X1wL2%QN~ofS$bN~I!P*S!j05dc0m0n@^2sZu{z zDpz%x5Mlt#1n5kO9<3a_zE%o~2N1zNlJO2iG(f3&PCM(YeG~f|KLA$@#Behb1i&mS zuIr)T`)8R!R(m~=k5@uGv<%mJx!Rbo*nf^YOFcERlF7mA>pT;to7Hv<8SaA*IpTa9uzYo%0AM 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 diff --git a/launcher/resources/multimc/48x48/minecraft.png b/launcher/resources/multimc/48x48/minecraft.png index 5be3fbb51e0dc0a7c36605f066006f15c6e69fd8..562e75636f654908c678739eea31f73cdacfdc5b 100644 GIT binary patch literal 4556 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 qxJ<7%=$!9zvmZ~ literal 4563 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 diff --git a/launcher/resources/multimc/48x48/new.png b/launcher/resources/multimc/48x48/new.png index 9241aaaeddfb736fbde71c3ff173628ffc4e058c..e7a465ca3399a9bbe998d7fa4f988fcc22909bd9 100644 GIT binary patch delta 2199 zcmV;I2x#}G5u*{1B!6m2L_t(|+SQuRZzM+*$3L&S$L_J$_HMk{>?T2iz$S_i3K0l_ z5aNKi0VhtJBSj({I3OYMM^2AU3ms1|Y&=d0n`GmkuS^#>1Kd8n{p z0B8ny=OiCXU>PTgwr!ZyH76$rUmYE8f3Iyf-@WnvW3N7V`OWLY;iv%CEL>TI0>$@_ zfWzedO<)ad8@LHhqGYygt_)Y6_#gOcSTUW}9p?*ygnyE*G%F=Lpr~X^V+koT7{JBN zzyp_7s?+h>qbDcppBWupyipYOjiu!>3`&DT}){-E`{a=0HqJg<`SK30^H`2NxE5$*_aSc7?eZKo%=q6!Q+@M14{{f5?iGx zza5J5n*r4iL~R%K&;c*k+I_5d}&who}>p=1;`-75XH` zSJg~^-$?s)I)zfB?T-K=uT`anTT$<=EPwZW62m|P&@xhm7$U6@;}Ozr=&i*MfWuP= zBj5<^1nd}?^bzp0+W~c&GVreUi2)?=tErts+CW+dF5qlWyU!loM~tgSz&_Xk@F8%J z6X+M=(EGq@9&lI15>e+9@cWQ9ksikE{xeUv&0nY|zr5RiLEAikW{bLDr<2P~jDNP9 zj?TT**8t_Tp7tN35}0NH)I7~4zwWF+Y#?1EYK*BS#$)Q~zo34ewtWHENqb(TD8E5H zeSpzusj#(bud3?*fV~48kfiq>K-r*AG#4^5!#c63h`Nl$DQ3{L`^51-F}s7=GRDII zNF`0&rmk;sI2sgXvA(;qvcDZ8?|%YQC(w&ucs&3HmapjroyHPomR)EDtP%AoEDlhp zP+Y}q1LG94DI@}cHDHya%ba^hjx1XZQjel&wI@It!pHN*2ODukl<{rOMk^lgFo<+ ztRhvkx`5djW0JDN?nNMMAcl-j@5EcTj%qTQTLW@)9t8)3D`x#CPyml!0O2d70!T+I z%EDOzN)d}TlK`SelzB4O4e;Wyq~;`y{3H^FOTZ9A!`w#Feib8 z2njr94&CVJ2+Y98_Y5XO2B0jR{M~xqtp>6q_j3Wg}i{f6Mz$1JcY8mGk;5;teA7G4%NTu z?8ikonP4D)0bov;#Zw3`WCP4;%pu_gpF_`)yWL&Y^}a_;LRvV51em8#?)?m?8PGrO zRpllh$!o%A7CnXJdJf*KLn6D4-ICvMxtH-QLA?*F1V&mQh4NDC9;HqqyO~p$5ehh# zOl;nB#W3?|ES^ICSbtjpeCplyk+-vO9SNC{bPv?LdtiP5+)aJp`$^=fgzJbr?cMWE z#EENO4fGaq&H;Kn-wQqi?s{QX4>+I&2q2U*^3Lb_1`ftastX=mM=gwm~9N0>;NH>i@@&`QSoo{|^#@nYY=0 Z0pDLoI1rk8jJW^+002ovPDHLkV1m= delta 2203 zcmV;M2xRx85vLK5B!6y6L_t(|0mPRDt24nFM$bF5o4dK5y1To(3)-T^ic|Ogkt$ku zcXxMp|J+^TS(&Fx?(i|B+1{dk;mIg)4zs&MjQ?{@MvnkO90^#Dw6*hR)>Ws#M?d~S z%na}SvK48GWTJCTBqbqVX6Ol!0u>P0Rkx&Sss;kj_u{agN=vP1b@f-j2 z&pQ>7U2?{gDTD%-wMdJPPN= zz%UUw1$G2D57hA#ItA``mpk9}Gmm@B6CP3Y3#zIl1%DMfXa#W;$8nx0flxA*0!ARu zZsPqJ=Ch-%%)hEUJ8^b@@7&qmM&^3GH{Jy@tID^Zm9AU^e;GIjb`m%W_7~tHpjLv6 z^_81*Ju_Rvmu-Lu4q79DQrI{~Na=jQY)D<7WFx=8&i0V4%_^^|=3bJ!lXH)%eD>T; zFq-DayMImn&Fc^@g6o3}td5V>7}SRK0udm6U{d&%Cs6ShFvH@y43J^Bwh6OK?1hEd?E%QL7wm>`q)<57huXkO@KfLh*afgD5Y`Hyg9u>> zv`F9+J+V?|#PtYoae9Gwqh*}UaK4ZC_iyuLoPU4xvIPf#_fK`bo_bC5o7+m~kuH@A z$8SoLi(t2lkI`)X2_RBvp@cGdzJZm6)DBBl4KOR)wBT+^p7q(@ei3>8V9YjvUWAWj zTlnnx&S%ebsJvs)5nnFed_m1GccHfjR!l|@o4Kw>NB~NL5-}y5DWxS3m%solHo~Ye zs()n*S7@3)0X0wn>rfm}AVkyrwo*9Z!52Uqa)1tj1UNz~6(QY|8l?C};t>6GD=?)l zzd%)f9BD{LE!XPm<8@uWcOqR4;9TUk4uRy8n0_{6QV~`gr32PTWeC3v$_Z*E>aP-- z-_cbe{6Tf~*;=|%g4I9_O_x9fPQgGiDSx3lZ)ITsmg3tI8f_pIh(6LLA&il(c3C6c z0ETmLBVY_R1)BhiZUN~a2~ZlP@QGx189;>JirGfmL)rxfiR~PiB}aQ3Lf9GuSHP|V zH-WZg(OzUY4l5<-U9jo~PrIT=(0&BJ4bp9q?uOazk#5k`KcHN^t<788{&$vhL4O0A zFYZ)_U>AWlT#9YkeUSwr2_!JB0aSOdLqiytN9-Zpj-VN)k`N}8)t{mK4(;s=TmZoM z6+U}=s1?JD4_IZ zW{04=V%t=q6%V3o@f~|<8 zbfl1A2ACnh6vwwT_h>@z0Mf2wHd+c`703`7=5~P{hC`blJI?9*-}mSe{(sOvG*WWw z8j;W-ZNIZSMJiY31npyfn3Kg&t z&~(g-aTxLPYOY&9MV_@KiFH*+0@?#Dp#_+NS^yY-+ZaV;^J?F(6v2Rcd`Unw4NHa> z=t73wC;c7wgi2Ql8fB|pe`ozY7}RfP(dz=}+|(da2ndg_7|Zhr{eK6Vk#eaDdU;=* zc~}F@0sN3Ef&!8Gl1msM3Y!9M6JZECPoX$FBYmQnlND6)nd!%7h*@&3G_b^y^Ax%$ z3Tc z0(E*05CGgX!OtQxm7<@Gw8!%ZL3o|kfZq}7$@3F@fMYM{t;e-uA;pu8y6J`1{Ye~A z2t6?wYt4*cakArpbOtGFLE}Mo|5#$$4R2^fF?u~`9Z z`Qhoh_EohRS0Si2>#qx&l-Be4z3v5&b?=YI<74l=j7+#~TLkdHxai_{_cf0<^Rafb zhoiIiPqRji6@O6>`(t>C)#w4>&U+ZFTN^3Y-SvAumiICxWZYdMyw~d&By~nzqdYN3 z?NFAHQkCM@LkoGM#)OU&jv+6`jdG_#le|>p* zc_9Q>-&URK22LbKPAw?NRU`xGc8s>|WGqwIK5P8Z!Br?2h=lN8LWBiB06d-JVEzMy dFc7qiF%$rys^>7RZvp@S002ovPDHLkV1jd*DFy%l diff --git a/launcher/resources/multimc/48x48/refresh.png b/launcher/resources/multimc/48x48/refresh.png index fa05d324fa8f82b11fac8a260758803fbd6f45d0..228392cb1432b096b1a8288cf7ef0eade3be0de4 100644 GIT binary patch delta 3429 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 Hu0mjfJ<*${ delta 3626 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 FV1oMLLHhsz delta 2791 zcmV5 zP36dOF=zefepu13j0c|nPTG+we9Wnio3hi1R3|lfEot^NS$z8^Adg>;_=FArqS^mT zSK!HSr3wl=N?g-9W9M;`w>tvdl)(UkQLa?WAHLrGbAN9fz#JAGZ{7H>v&a}EWvpVx zJ93gMmG1Ey9%N@DZ(x-s<2TrszIk_bIvYGSibsLvzcdd#@s%W%!XG*4TjSS1v@&ty z9l(({7P0Du$64{@`MK?Xwd1!p|Hpjf7p}mAUra(GZ5pHtlE#z`*4pd8MHniF%^UCz z=HBupHGg~N%!x4`lfy&X{A-^7+(YPrb5q%*PH4z%hV`jD2^-AV{7(=A5Zf%H5_gHy z&(tmdm^rtfJsW3V4RF#!U(iD`y?La$?SEz-vj^@wD-jR~sv*j@BJEaWN1X@0e_?0B;VQ0c_P4K<9@+#jO05Um-$T< zxa;%~f>b9kF`)H=!uH170h=S%LySkF+L+9^ncFgH-Cb0vM%zt)!eIGqh@+h&E6|yOgbjaq*Cv~Sr5>p94hE7_|~t*6G*zrnoWj!7BIMSA%n}G zV_?~{WJ7~sB4#P(ZtN>Ee2MUaollIJ?)YSAiFOt`#|hgf)mkegHl=Io#%fHMeU0@vF#BWKWz&uW{?e)K0wIAr50X+cs&KmoD%n2P{5!z zPN;4b=&Fm{{OiA8^jD^%%e_Uoyuzi8R-Me)<=Uhj#`8$ZPN<#6na4?nnD z*B;ZTRo6v;+pVg$`>Vk!*ZJ3onSXXo%47XH){o^D6akB@(ap2hor^Qy6GQy=KJSSm z0=WJIA=uhU=Hkvt9aA>n`EZgj1%=X~3#j=0hM^>0Pu}?OrGvX@i$2^vo5yZAhu-;% zmPs4~zGL4H#5@4(_kkFR@qS1CyKm`W-;)nqZEFRN(RMVBP_%Y*0Yk(@7k^mIDRY&0 z`}lI73+`g9Be>`vH;t$7`i57{Sv26B;~ahW{~f-3m04*AI#Nq`P;gUUh+T4Xg27(NnLyGeDwBo)i)Xqoun<40?-~#?cx&D4Nh?XLfrEramAxB zG>9`8u8F(v4UF{q?th5?RQScC&&F@-J#ggN_`?72Je%Y4jLV|;|>@!oiZUDQj z%$M&)YRhib3{}YcMb=}6m*T$X$NKi-=Z8)n-g6PPuofsF31kq3^^M5DBd7&?5Ig{Re}4-rpt%HMh9i&z1`?19 zV?=NQc~vZY5ghqxp8MfH`Vw(WFS0D7nFK$S521m1_fpC46IG!KC^b|pQbU?UVkrT) zKtQE@5GfEr5h3tsf+HhGP=qX?pSUAruqg)WnjLAk|(rUi4?6auSO;7OMeDOP>vixVKgs7v}#?VZ!yzj zBmtUZ@<5EFF=tw}fkQs(e6u>nT>t_mtj+_gf=Pi_S{If#0c&(FE`q<^*RQZXi0IW{xk_QAB2*{=JZPz`>QO7uAd%AOKK<}75;EXD! zr2uvlFn@Ld4A90Yc_S&To)(@7<@7DMOCB(g?Q-+dbJoBJ7PwwPGiHn34h`(E4}WS@BF@1PmDebsTFo>w)uUY>a~aKZ zf+J}NmEfBGDK)6{6e(?Ul*WZt?{z}XS7x=Dq#`CUir?Y1ZyR0{X1-2B}* z^wpE1Z@WBrAP*=MYh;+b;5kl&^URQwj6H;k1)~i)ARq!YG1wuVeuUOrHPW+`ev2z7 z*MIqX9=Y4FD$B_PRN(&c3Exu6miZ8W_rQhms3)#r(nfm(HrrWD?2IsM$iXc{L(Bp2 znE$ zL#NDoA>l7Ee`>MT?5)HmI|XLXG_?#~?0@Ovn$Pz3Wy9Y3_#1hivB>HB((#2ODqp|% zf*sVXd?F=igemxwYoN zIfvo%PMZ+#zhvk5#bc_Mwf632ta9c7(pd+DwZHnOjZd6?aPqCz#vg1Qc< z`%oG4`umceu@4hl*rBDwiRT^?zWlX6Ykca=gTltG{luD()}OM{{kpV8Edo=L>mAA002ovPDHLkV1fv#k(B@d diff --git a/launcher/resources/multimc/48x48/status-bad.png b/launcher/resources/multimc/48x48/status-bad.png index f13c78a783febb6e4c6c1067adccb205a2a699e4..aae54577c25aa0d597c2e53321319d4339506d5b 100644 GIT binary patch delta 1512 zcmVs#-Ew4w7atD@G+F}1F&Z6%BhwBk!yhf zC0qblLpqg#JaVBqlRtau%Z|Ea0u`W z0=xYb(n}ta2jp8dagTJ6+oX-$B-cqZxk|2(M&coLga&r208b^`#`_A2{$K=fJ_9y~ zfzT5&Kpv4EGJiyVBy;2y`HKXUKgqA;CGnCwMixjtsU>bg6Pp!)^DO&=SmxbKuMmz{Z3M_L6b3NP;%7PG0Ez zs3ujUf|Rk(684S%6QjVnF<@T=3u8JI{vkn|S<~#gHGd1`q?CP^Py-GU&sb3!9MvyB zspC5Mo|z*a;v!|FgcK%gVu-05ru(P*Ri2YoTZLNBk87HR&qy(~T2V+n1E{}kj%W$vH`8T9;e*zq(-w)L<*=a z?h^YDaDVpb=F~3@ScqRC(`0}wCYY%;EjyrfS1e4->QE{sh2$bN#@u1MfX!~*S!XQ7 zFYDyaARnDP`QOBww=l7$WjtCZL)%!kFfnWlBa%;zpS)|wz7KdhS)hvyXqv6WpCXx= znIX5^9ZFA23tciy#1SuLq^#7Dx~Hs6Xx&<47=MvGYDIW-0BQGtU784WlDP!LpH}fx zQ&XX>t*uaFLxTu2GZEvGeaXJAL6Qo!TT%^|X;RnEWz|o0d(7*X zH^m#Vy}cb}BA`Tym$Dja!py`JDP!(R=qWi zC$NUkCubs2@z%?*(rZp+G0+0Jr#9=A?|&r;+H1l-@ycYF0VlQN3gBzf!_zzo+H1l- z@yhhu8StSI@P8qfZHuFW)yAYIk`f=i@mceV6q*_E!vpNd`YI;gkYEx7$Q&sr5tG$& za+hn}K$3l~ssYWw4(j=bq_N?+8mI;QbvhK5j>!-z2p>Y#fUibh24;`rB(4Jbs(O7X*7 zLF8dhq6F}kYG)&R)VnK&etqQ&ovCL|LVfOFZb>>xS1NBnXK;(up|%MecT z1Zsgs(k4Eodo>~rnp?fi1jryMdRzRyia&UqXXbdMQ znPFo&v1wp|gapHkTi58{4j}wB86tItXj8bbAbrBN&?WW);H3D?NFzcud7zp3nJki3 zWl{fajC7OQNWn@D+s?KB7h&DeJ2s7Y$gUWOK!=%0jx|zlm-Rf-HV!M~Fh#)*;w5_| z6pQS4vqz+^L)yYo22*~5VzMZvg_-H&-#+3eJBpw9^k*$n_N-0+-R56~0Vm#aEQO!| O0000HriSM delta 1518 zcmV*33scgj9EZ+XwX|9_=7;yBKKvqz-+8j+E!L}o1)*}7EZ{9=(; z3q(H8gW3E%lfO;pf0IemNZMjzyeRvh12>EG-X`MX`=JdY-+$JT)oNG?%V7yDg848P zX2T4a29u$In0jJs$fKIP+ReZgk)G6ec&Esh?SyZEO|Tx;s)-e_3>L#emdp#vhVdkNbOJ761ZhCOf&Zoqwb1`*{c+=feV2$sfL z0qURzssIzMrGJz$in2U4a7JX%agjTRNq!LatKcJW9bQ88FL?sTVPUKlpaROEgtGD| z(-Q-yM24RfX*sTf55Y0G2T>1bhO;_8Dxn-op@=f`Df_<+P~)SIiu^Ew4M(*ryoIR8 zG->NrX)6>%A!X;I;hzi~AkbuZSZn@-_UmXHa|6Oq0)Iu24>=i3q#Llq_u_uP*2*b( z4bgVu3Cw_ED1bb)WTDA!0CtKDf)+E&?1kgd1krZp4NQkZ&{k+kHL#PW%B>=I%>2F+ z_QNa70BnND-;4`Q8`0S24Cx+2wYEYoWTQ=|*whACkV2bvaoP@#E#hCmW!M4tY%QfU zY1$nc`+ve>;yM&V9^}9zG$tF+6?UCS>jqs}uUf=E*TFp$diCh>YvA3om}t^8VT~E8 zc|5n6*c4dP!rU#9T=OcP zv?j*HnmowMZsIuPsewso9f#)M29}8Umgy#JJ2YqL^X{5A0%FgnPoI)ZM3hAFCaped zLR$h}WGKHeHVz;lGV!;8g(8QR=qBqzhGx7BLzBg)HF4dLL42Z#p{9%s<7i)O96%7w zgnx=G5a|xz7V7r*d79t|?9jny`mgB%JQ+)@Ndu_T+3?Lo2(^^{1J{>neHiRIEc9|(MYqp-6jzQEm4gQ^pzYuSk zhLtU#1KAjuCFYzuQ;&R?AnL6N@5C!7Tz>{aXqTxX=cnoB=@vx2HQ}9j<#K!roR>zC zS5wSk+p=}AElkNK?BbIbK0EhaQ)vk85*GQ43CEat1JS=A0ym%-k_M|~a2IQALOhz+uemKMb202&A|1pIEc$dwpQw4`fL}NMt_ed zPNO9vv&!^NW>*(j$TlY~WQ8IlOY|yZW*68>gdxkll`tEkBC|2l3#CV$d^4AwxS1nf z@EZcACp=OfbI(4B zM@j?#2ue#&bVB_I+Csna~T z+6gYUu0oz`>I|g3*iy{39SQCP)olqp>cFeTM^NhSI<~7tgHL3TU!*0Vj_ca>W?IoQ z!!Ge5H2G|oyD=~@oWwu;rpchz(h^?tC`mk8EZ6Hvj29U_k$?NZ4+U_g9e>1Mg_4+X z2pTLeI5L`;fcuz{5V)3lPl>=z$c-2O1FWx@GBS>)!$b=>F(V~#1e!g1$#)dW-NGS2 zng0KM$>$!}7`OvYjEPVMyWqh;2!9BBpw=Z?g&Xepyn4;*o?_`zA;h;P8ZlJDdTp7D za1UN9_w;W^VFT183Re8&9cS?TMYrN!u`v>cFK#1lLp~RNJ0{&1;=*G+{iuO`Z1hI3 z4-UaMaMCd`HQ&I*`o^`xhdpfFt2<&wB4!pXvz71X;T3#VUcq_&-z<~X#CTEmPd$DQ UJu+0sXaE2J07*qoM6N<$f?gTZHvj+t diff --git a/launcher/resources/multimc/48x48/status-good.png b/launcher/resources/multimc/48x48/status-good.png index ce4060af22c6cf9f1fa533e7ad9bd3f158ae1f37..5eca73d1bf94abc900805692f3521efe5a2a61e1 100644 GIT binary patch delta 1763 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 diff --git a/launcher/resources/multimc/50x50/instances/enderman_legacy.png b/launcher/resources/multimc/50x50/instances/enderman_legacy.png index 3aca8b543868ab8830d71e5d7ff28f1924a1d8a7..36c791eb0cb9918517ae775f8c7090bb46474ebb 100644 GIT binary patch literal 1246 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=3?wxlRx~p(FlGn%gt!8^lmKyYaWOG5Mn*_g zmzS5Pr>BR9hr7GGo12@ftE-EPi@T$Tv$M0CgS(THlcS@fi=C^3gM+=jy`zn@ot>Sn zt*woXjkUG4m6er^xt*n@rGRBzDk>r(A}lN{BqSs#C@3Hxz|YUm$H&LZ%ge*V!^OqL z$;rvi&d$ch#=^qF%*@Qh!~_hG6WQ!?z_6Ap3GxeOU}R!uW#i=H+ZCT>!d?PT(94J-Y0uI$VF&@IEnNER#;D`h^Uc|n{`H+&C-k1f?1AWa@dM3Eu9WYe z{-*28;oITcdOMyw-rdr%pn-i|FZcA6OW*f%2_ziziqe1hy zRI-cM$>Ym%R?ay%Z}yjfrAjxOGqqpqN|-LXwlUJtctyC9u5i+^1=q;Vq(Y#Io|jkZ!+xO#O%zP$)GUF zYpqY{Oh$pfv;DV!VGWQ}=IA)Rs3OJN?~0ds;t?JFe1>iT`TUK_3oZObO%?0~wrTG; z`8VXQ{q&kYJB}(z3zo2moQ!grf68fQ;eN?SlYVwZoS!b~pc&WIvU8^nZ;jKmnGL$z zK0MtfciuEU?Mi*t+1yF)&9>|Ip8jXTtFI!~CC+}pz_4m#@a2MIMeubv!_l$Y=M|Z(oLls2F5;K-TY^A7~=Cj3f*@z*m8&cXU~c9r2kUs z0$NV#nUw~aT?OUY6GNWt`^c#nIg4{kz#8utZRJ-Sno7A}HI>##ED2iI)p93yXKOV- zyPuS@a$_qlfQ@2m}eJim} zck1`$?D|XJNbf%Ua6@K}bg7bYJKMosOXc5Q+oU%uI&EuwEsx5Ps%}dU%d1;GWUsI` zZg^T-`8Gu9y^)2W7@M@ilHSgI-h)NnQOrwxHf!!;v~5t0Jz1kX&EDVfxf56xT)K4Ww7oTwj_97?Sj#$b>hR&iPaQgR$n4p($Jn~5 zR4N8QdDpI83DoQL1a|J+nLxYUPGI}??Q5W3C?tZ8K4hP=?WZhG!A1rl%aOJn$(?BY z=FOX?)9ILgzkhFr!{HjJ1KnVLA#wbZf}-sdwRQg(UWYPHtJfSb_ea@m>a6qGUF^If!sd;`ZJ%mZkG?Xr$9 z3YPI6?yHCdJ3<3f;S)MefiW}ynoeazL?VJ(eggsDGrH`*=kF^%*+~IF3r18z(nO9r zwayD|tcG5@AW_tUT)%$ZfZIs!9XobFlWv&zp?}wlSF_oa_wm6=1E7&_(g3t89YH-ms%L?(aqI)VngfH<%DpYb6o*?kev`-!|p z=_tv%?(fdl5#8utuWp(Ht;2?L^$(Mfy}z5aTpL|Bzy14-=})?(3FxqHuU4p=KVSLV z?0>HA4{Gmn|AP7PpZB@WU=NcoN2F}8?KGj%E^jxB`64qKE&EKUY_IN&Tu0*Pa(_<6 zw--Na$(L@8ZkSN%OfXf>oKDOvx|7=`P|&xwEnkjs3I;d7*nBPVRXRB~N!06`$^8lT zBM`1D*y~e}J3syRSz>jcy)a8m7Sq#HS%1f#9va9+Exx4dfL__@G@%dFbUkGH)-#&6 zCFeTgc8KMB1>Ki+GAc)09ms~WK#Br#b(Zisq@$njTZ`vc;JJPo=S*_P$8Rx+qy*~( zqkZk#HE8a^@vR0;<7Js^2g^}kzaaa*Uo({`MF5j3*ys)OVC4dX``ZuJb9@^BT;$Z$XUPv!6M0hWy004tdHwI5g^9R}$w~)D+}N zN~AdmIJZKX)IlDpNhaz@zcQ`h36MaQBJ`aJ~yejw$C7QK~?v#ePQ50Ama)eEJE>@OTM@gNrtnMjY* dpK2ZxSpp9B@V0snEF1s;002ovPDHLkV1mSTkGlW> diff --git a/launcher/resources/multimc/64x64/cat.png b/launcher/resources/multimc/64x64/cat.png index c05276c874e5bce04f608ef9af3bd70a414b022c..6a578a39af91f8150c0fc23c494f1de6a42e1748 100644 GIT binary patch delta 3063 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 e=VI&|FaHNnv>X=f2h<4w0000qfUYqBuiSwqpCv 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 QWdHyG07*qoM6N<$f`Lp2kpKVy diff --git a/launcher/resources/multimc/64x64/coremods.png b/launcher/resources/multimc/64x64/coremods.png index db03752a0e9571c7e12ca87783ca0e069c31e3af..79b0c5ca5f996e5180e8a5c273ef55b08bbfedd1 100644 GIT binary patch literal 4247 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 literal 4263 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 TA5=2u00000NkvXXu0mjfc5jL4 delta 2409 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 A3IG5A literal 5352 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 LNkvXXu0mjf0Eb(I literal 6022 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 delta 1958 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 O0000->)M;lNlT!9nf zeJd)2+ND+`7F(begn2)l=I3C%6Y=6fOm1wth0R;#{E~o()qJu6} z;Vfgd9W|>y@%ikJe{pGe`o zOzv#i41Yi+@3IRDB}gZ9_ch`YPBKz=aaoRXoCRCie92_am*q~IfP5#!!){zYu_G_% zcwA6v!lQpjTCs--lm=^EJSB=HuoHgyoKLl(n-@4j39I+bmM<+fgHX{XivXgd` z%WcqjYfBL+enpD^(Z?N@Cfi}CG4HN`J{?5Eaerc|6*at{FB=ay?11f}BVU@GFzmKV zIN~jGp#@bUAV&eFgzRhXz!|J|6$%LJ$n|Nc`sv5p#TG;t`8aFv`2{!ZES5TV1sD>d zKlRwW(2DALVj2i8`U@{re%aR*NoJhF^UrzYCGs$0UH4k;IatN zk$*aH6gkt3S`J(12#@{~Zphgr9~1~6wR;!eii#O8va_7LFa&IeoG*Yw?SAWNpdlOj z2NkeK!i!o?Qp^aHu+qs5ln3uRtOEAw0x3ShX)05~_i*_L_!hDV5PCHvV2yY)u5fB9 zAyC5NUH-7Vh_>tsU>Afn%S7u`6Y4lG7k@WceO7(~7N1gpU1sU1PZPLJPndyOn6W!s7YZ;m~H0|%99a~MSu{fMj{YEzZsP z#bzT^=MAVwe?fH!kIocxpUi=|Fem259QV(E=7CLshO6LG6zAdJ8WPga4i@maCx5>~ zpp;-v%({TB1ORhlZp?B2{69S} z5I}T9-SEe_5@Yc7^}zztU2MHw0p}g20OpiFL_p?MkpMr&8W7{k3nh@P-trZ&8MFzw zjTlB7kP!)LM}m-xl&^sAks<*ZjDNb35edqWa3KZ6xYT4y$ObRiDKO%OUr;*|gfAED zB1i$cpiBv?FD}?^aIhZNxV|=QNJ#lFz=M!xc@P?^$5pPa5sH}aDBnlnJW`4qnuDr)}(?9r#AHljmC3<>W#%16L#ho$}Z zn-&kbQ6UntLSBN)92q*Btklp~Z#nw*g%Nuf(A16uA^E`h0^;{A?QcK&_Ta)H7Z42z zH0S7BB6ANH9Q{KUM;Tl~=6{zdflT_GD`3J`c=TBt4hz0SAf}=_KQJULJat;}%-MeB z|H&657(oqH@`Ie9Oc5(xjwznG+KbPzCLARKI%DT4$*8~k3C6IuL4mEv`&)sM9Y#+a8Yj?{9k2&JBqvsZCL_khZCT2$@ zA9DD4Iz!r-hxz+^Z+~&&Io`H$mhoCcl@uNolwAZFY06(CzP>qr(flpX@zLfzi#CZ0 zRXC5}qoovEErq89wV#as#{8&kp%W_g9BS&wNB9Q*kb-N4tf2NIV26bqfdG+x1Z7{`CrT~4Wujq6#8oXMSny#4j)H8Hg>y0k zPKY-eu1Jw}LQ+u2Bq`K!TX1p&ZlaQ_Fwz; delta 1907 zcmV-(2aNdZ4uTJmB!5XsL_t(|0p*)jb{kz5g?H0q^8lJh5RV{3Y4oc{(0R0*nM!63 z^9rM6rgmf&gh6IT{rBHns!DVPVWGX&XHvmAU!8&r1!GL!dEAMrhwb=9v=zr9t?-4~ za3$1=iMdv+&bDB6rUetzEx0n>1m8q6j!m}U7Y|xcRfyQ~wtwO0?KtwJ19gwv5qZ=O z^N>W_U?L<;C?LTcp#(ESrpZ(@%p{o*O^A#)p^h9W3jr@W@k3Jkyc6MP9WYPH6G90l zy98GNc`bl=0)kCR9+2@ygvT0DJKBgJmYjgaHhk+yYVTS_DbMlP57C>A9wuE<9 zL5cwK|3(-}*nb(Jh(7MK_yUgOYxCWxCb3u-%q#Meq)T{l0%qwV%<46mjax9=_h9yV zVB!NwcKQ1j|F?PrX7MVQzd$LSt^~UZJPBsB0kM&KR3B#yMG>%a97h+ABe>8FGf!e9 zRlxiin6>LnGyr3UK8_tfw{rz1+?`eh5am1I7!z?nm zR0(SgINqlOJ}>*dtf~tVVO2pw0tLhe8&H#f0sqA}R!+bnh5}4N09hbwmthWi6>NUd zsq^?O1vI^>f?+aL4>RC{GsGD4B4F(_zR#p@6XPKPYZsY#kAf>K+kTkHNmYR@ft7H( zzZu{EtbYPxC-E~L<&Y9iW&4JLDK0NBrwK?_La471Kl>~KbmV!Chlp7eI{GJAiuV*i zX|Qrjr$nZN_o;+;p7XrD-PQ$8NW$`IujEUM?Ep-$Ek%Iv;kK>`A1#2lG)K3#m|*ft zO#X|0?XWc2?}K^J`bI#%Pr&&o0eq0D(fynfjDIAk0`@bGd}&s~Xk&(inhz4dr?;aN z5SIW?!p>dopgdTQv~e^|=;c*}-N@R|EKE7q@T!{x>E%T@(QLNME7bLP?S zMD-K5CHIUhp4SG;liA}|6`0=tq57=?=Gekw(>3cGRlb`dH}bU(|-mo5&eUfT+zXAj-~+Xe)NqUVr2Y*zYZW0cvUwrk(~4c6$Gf zA7%&$x1v^^6j34xOP95Q%HYvCOMq7ewg4s{RyUO=;h?W_1nl+Nr$LW{uq7bG4or1T zg^46QJE;{bi(rQHp7-V&* zZ|(|hHp5*08_fAX!JH%K3yix@#h_RelVVehIpdF>NfY4U7tm0Y`r)Ts35!?XE`MPC zUUG*(DWRAY+uH>^ziizJOu)f!G0_Cyqy)IEzNMQ>efUealGe4;Km6ejB>|wA6q{nq z9sj~LOMvhp*oZ3=?nsQ-y!&vIZv+(k%M+lO7T+OY^-hL>D_}qSghpN@LG1Qa zu7K@8nt=ad0^?0sr390ZK(v8M6@PFrkRf0dgpf42J3vkpxe~mcR0n-}Jl5r#FZ7ZP150N`Ejy5?)-c z+zt`<0%&)LsC!5~r$Q2@yDGR#Oh-SxOH2&ZBb+K>ueWlN-|e-_KciDr^!rddzy$_e z36IWIj(~^f?DEgrE#BLRA5y{&NlIw&T88D#4s+om^og)0;Z4KNB^C}<3f`NXeyXk z!IkjzQu!sXnC&b7drpuL0S8C9LYx>+#L}&DNnWvLBp(mFdy0&W--nujR(2UElk0(E z9Bi9SKX-|_IYqgUPI3GDpPH2*$|9`kG34fl5krr7l%_DCo zFFtXir0D+#zE24uVmuMLJuclWt#f|BE_?AArpmh9{SSV2-<6Om;>o3wxZ1mk+sXI+ z=d(LY+b#;!9w`Wb-BS;GR(vgoytltc2f%|3lz5mAE=H%Hrke`wosU$vP4t<|B!aI&G`W-X6E{{|8kXg<)kJ tV?sW1g-noDmkIZOJ}skVwN4>o`w}|&!jexUY5M>G002ovPDHLkV1m2_k-h)` diff --git a/launcher/resources/multimc/64x64/viewfolder.png b/launcher/resources/multimc/64x64/viewfolder.png index 675ac0485a03ddb5a5a1de86f2ef76bdb3a5e292..5772c2531e104e67f6d969c926d0c32ac0b2d93f 100644 GIT binary patch delta 1435 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 literal 6933 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 bztR2+gmL?t&h)v300000NkvXXu0mjfJkyGv diff --git a/launcher/resources/multimc/scalable/atlauncher-placeholder.png b/launcher/resources/multimc/scalable/atlauncher-placeholder.png index f4314c4344536aefeaebb89d1d44d7a6ecd97ef0..8b6dedad5f53a498fd22bf6429192dd55252dacf 100644 GIT binary patch literal 10528 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 literal 13542 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 diff --git a/program_info/genicons.sh b/program_info/genicons.sh index fe8d2e35e..cad811822 100755 --- a/program_info/genicons.sh +++ b/program_info/genicons.sh @@ -9,16 +9,7 @@ svg2png() { inkscape -w "$width" -h "$height" -o "$output_file" "$input_file" } -sipsresize() { - input_file="$1" - output_file="$2" - width="$3" - height="$4" - - sips -z "$width" "$height" "$input_file" --out "$output_file" -} - -if command -v "inkscape" && command -v "icotool"; then +if command -v "inkscape" && command -v "icotool" && command -v "oxipng"; then # Windows ICO d=$(mktemp -d) @@ -30,6 +21,8 @@ if command -v "inkscape" && command -v "icotool"; then svg2png org.prismlauncher.PrismLauncher.svg "$d/prismlauncher_128.png" 128 128 svg2png org.prismlauncher.PrismLauncher.svg "$d/prismlauncher_256.png" 256 256 + oxipng --opt max --strip all --alpha --interlace 0 "$d/prismlauncher_"*".png" + rm prismlauncher.ico && icotool -o prismlauncher.ico -c \ "$d/prismlauncher_256.png" \ "$d/prismlauncher_128.png" \ @@ -40,10 +33,10 @@ if command -v "inkscape" && command -v "icotool"; then "$d/prismlauncher_16.png" else echo "ERROR: Windows icons were NOT generated!" >&2 - echo "ERROR: requires inkscape and icotool in PATH" + echo "ERROR: requires inkscape, icotool and oxipng in PATH" fi -if command -v "inkscape" && command -v "sips" && command -v "iconutil"; then +if command -v "inkscape" && command -v "iconutil" && command -v "oxipng"; then # macOS ICNS d=$(mktemp -d) @@ -51,19 +44,22 @@ if command -v "inkscape" && command -v "sips" && command -v "iconutil"; then mkdir -p "$d" + svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_16x16.png" 16 16 + svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_16x16@2.png" 32 32 + svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_32x32.png" 32 32 + svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_32x32@2.png" 64 64 + svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_128x128.png" 128 128 + svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_128x128@2.png" 256 256 + svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_256x256.png" 256 256 + svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_256x256@2.png" 512 512 svg2png org.prismlauncher.PrismLauncher.bigsur.svg "$d/icon_512x512@2x.png" 1024 1024 - sipsresize "$d/icon_512x512@2.png" "$d/icon_16x16.png" 16 16 - sipsresize "$d/icon_512x512@2.png" "$d/icon_16x16@2.png" 32 32 - sipsresize "$d/icon_512x512@2.png" "$d/icon_32x32.png" 32 32 - sipsresize "$d/icon_512x512@2.png" "$d/icon_32x32@2.png" 64 64 - sipsresize "$d/icon_512x512@2.png" "$d/icon_128x128.png" 128 128 - sipsresize "$d/icon_512x512@2.png" "$d/icon_128x128@2.png" 256 256 - sipsresize "$d/icon_512x512@2.png" "$d/icon_256x256.png" 256 256 - sipsresize "$d/icon_512x512@2.png" "$d/icon_256x256@2.png" 512 512 + + oxipng --opt max --strip all --alpha --interlace 0 "$d/icon_"*".png" + iconutil -c icns "$d" else echo "ERROR: macOS icons were NOT generated!" >&2 - echo "ERROR: requires inkscape, sips and iconutil in PATH" + echo "ERROR: requires inkscape, iconutil and oxipng in PATH" fi # replace icon in themes diff --git a/program_info/prismlauncher.ico b/program_info/prismlauncher.ico index 86ceb838a80d8c937b9ea6f102f3775b226c6471..2f0fa67ff6be7681f76aa8ccbdfedabcef766b72 100644 GIT binary patch literal 372526 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

    s#p91pw^AEyJ(+N*sM-*KDq=Uy2 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 U-0>P~(5qwzIZ;6N5r~;Bxh`zMA!H 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⪼za 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 literal 400974 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⋘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%0DOiIM<<%3o>g$yL7Wqb~(Ir&` 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 c*o#T<1b15;f_oAif+V;Em&d*L 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μoMwLFU%Z`WA>( zm>Oz;OwJZWOORv}52~h>+I_lO4Vk*C`uVrH$(wPe+BQ2&v^cesEkot3$(nSKLc-ljcpnLr~J^iqL761KOC}Cq1)>@eUS==`Z7384k z>Ua`!IDqxlhN`sWq}F4$USYkrUSZ0|vw~=j}${G3m;nx49r7p$)Sh7xZgXSFbUP2{ZR zvGh*)DYaO+6X5hv%@Hw?P{e5Eq{iwa}t?y&~jqlOM;`YE5kamW=VTgJjK^QcWw zjRJkuovl_a4T(%#CS^*gdee(@xSh2*3-QgqDhYTqc!15`2-H__;Soxph9?o3kdLp7 zIf61@p67-=tlH+6P9JTlx*(ajq;lqlWBy?E>N9TN3AbuHMGn*NxxwZ2WFRLn*fol4 zrw&zJ{~Soexx0f(BPvo;6(-QMuYj#FIW^h#;1Dm^O&s1rL~L!Lklk{v9%KRKyFH0DoHTPr>LkDGB6_mK6fD!K|Ts zYqG)9%4)pF|A&_j;0_j|1%=027Y$DsjtgmiZnz3>dnuJ?PzV~Nm3^}moFmW&X7deE zSas+km4k3?9xntwWs8R?OAbQN}gD1F{Prkr<)O0<1*hEA)suaH)As0avTWi^T=$i zFI?B$5+;Z5Z=W2bdEL}5bcVnJP9v{o^Rl=7!`PtG$hJP0#+YA?vi|8(!5{R?Zn3e4 zo|289^pi3`DGEjalrCk#ZK1X9U-oHUV-%t{E`){caxe(ni0E>III=4NAJ;g_%W^WF z?UXcQ#*Q}M(fgpu7THvVFcJ8C;)wiKm(!VbwnHby;~Os->|+7NmH zLlMZ2(=4r!0N6VeSz-LjF%aZv_Xr`iboKAP)+E?5#LTXb@V4h~N?<=vyrM1)Xdb^M!QB`hJon^mw^?t)8RD`^1~{0jWGV@3EG zDP>_*8L%at|4Q$mRYJ{tN8*dh_@H*UorklytL>iwiay0-X`={VCzNf$88gs*Xuml} zle50I*7cl#al)v-O+Bx)g$z@p;KM59efE_bBk;Vxs@of>*t-wvGT+paD6L`6G3y?P i1$T^UaZX0J(M4nV?&AHPnNF}|`Wq8%UU>NbbMkL5h>_v| literal 372526 zcmeHw2VfM}nZJnRILYObTrU5_xl0b;U2>N@Cl|+nX)+QnfGSl5j6nqpRRpF8?NXL% z3Agv!sDA(Nt#($kvpc)9yEC&hqqi`c_U65>yx;fQ z_uljJYUA~a7x}gEdd=(4ul>+#99|m?ru!ea@mht?e0@##?|69~{`1RTZ@kfb|K*>& zydK8C?Dg7fru$!dc`Z(V+3VF;o9}1+#LKJOXD@sG5}%X!V}FR>XTR+AXG{YhczOMx z`8m1u^1_$&Md?^&0VR zHii`xDGfv=Kqa7P3AF3pyCdQ}lZAPLd*jg_&n*12uWz9($e7o2)LV*XjuJ;DKqX)$ zf!ALT`B6Kc;1De94>4G`b+&_lvn@b7P%zhTM9jR9Q8?3#{-^|~1e7X)c5nClU3=eP z17iKIExdD|3Bf;8KbX@i`EFXzph2Veg;+WQ85iTJMPV%*-n zGx%rh0G{jd_+qyINSvWge^dfg0-lmUJKrF0#CI+pP4;lk_s&K9v)cv-=lG2Z@)Z9x zT`GarC;?MHzTLJxALiN5-NipsCm?+Uc!WUniZiWIC6s3>0f{AG_`#dq0>co$XW1Bb z=UOcMGj;&aXVd(W!wd!kt~y13R0322B1oVO_TvX3&I{eax~*>|z(3PAC_+0hg!&PP zpnV!eYn1?l`vP0o72}zN_-E|Ed141>eW0~wVam5F5+Ln+9KSy)2FC5hAp`!K?SNnM zIodzqN=~5Pv?d9>=^NY&@hVw)&$R`z;h*s__DeoFujhzftx2bpS1JKV5-|Db?&IQ9 z>U-Jo&)9)p$%p3oCHXj#3w=)|pk)dC{q5fWix|(w!=>?ickP1*@o(xM7?GFem-Kfn z>zMLJCBT(HJMW->L+oWCejD7yush#-9{YURy{8h;k_7&*OW)rh zUKim}=MHYg`c@(MXT}O@(GDz{(__qUw4`&&3zdLzK3=!rWW?=bv9K#fJPN}Or^&QXv3R)oxq)*?`{ClzS>}-4r z$A7aOAY+Dfte_PlNS!Rd(Jk;#h(nL{={sWsRDpl?3?#owcYQqte|dguaQ}_k5KDqQV)Oa+Qq#5rcZDT;#km{JD$WlH*FQ- zpXnQTIL9wJ#o!z9WA)?|N~zW)V49a#!o`(Z?p2I`qaDDxMOVoDBD(H?){v!ae*W$o z+#a#>omz0tN2l8H-?Hw&h+}x|t?XPwsZ+ZII{Nzk9x+4w_8R#xrKacF!M|w_1Ha^4 zx|fOCQKmfl+qDb&X}fO0(-7Ow)r4b)X&ir>8gVU@X073W`M_uf`z>dE zz`lJGgQ(wtGGL{6Do9=5w1@Xybi=>JzmW=2YsY!djt9zFiSRM)TN!-$rjYX$$C;=(QP zZR-DX^sJt=3G!0j`-N;7jwYlS37G2oSGA09N4#kP|BL&_I>Nc5_qS-9KryhCoDiI& z^Jm0)|CW*c9pPKxd;jBmCI)qoJOk1MJR*TNeEa+oF`a>jQ+woU*$${3 z|EoTT5{PZ1KY)<1jd>FS*X}n2{n{g$lqM>P1aMvb!HDBKTE?;~yr~)g^ZZA^_OZQ% zVA_Q+fp_-m{Xdi>Gtx+9lRyXWfd6QX{rW;}ftvCEdGv=a;977!z!*0fC)kx5^k>;J zEKNuh3HbW@{t$6b*4wNRiiOq~PObRQ?41C+b%B!O-!zW!9NPqj?MZ&Gh>|&JB$7&? zL$}^t5X{W?mY(%Mxh!UdS&n|C9bbP0Y=8 z7R#=LS0nzH3>e;mNlPDJIi5F>{=q$|egE0zj7mQgT>@`*3+{*c|E4P#XwBcK5&yX# z_muqbKb<#yg4VWX47KcstNz|1Cn6Z_+XjwEoi*pA+9$PBTA;GkvNn<2VehJ5&K_@ zjfK`2pPKN$A?5=mV&6o#a&K=y(00sqvJv+0#137CBNN-6H8!962arQ?5X#8B69XQNDZ zp*=5F`jzN6q4e|wP<}`#&Tcj_}`K&)|y^|{P#q|wUhk| zjp#QxrM0#P$lANO4j&!U_WB4QSV`_g^vpKTr||S~D$5!hc2(S<_2X<9)8!hDTbp0i@24 zSfhRX9&GP(ZJmR?OmZZqZ??2|KtfA;yzp_8zA`U;pIG+J^yuxhZ<*7TC!XJE^maLCI3nBbmu z=o7Vq|1M$rTn78>bEiHdp#8f8s2z~N4tVzpf$@`PLH>6~Y~r4=0c_lJuP>b`g6#{x zfCU4_OJWD+1&n|l;}p53m))}3Nk1RnxVF#e2dma4vM|rW|5n|%TERbJ{stTO7T2LV z=ol0W?Yq;y0dD`CEB8Lwwx5-@7>=JfZ5Q`K@Xy$Tl1s&~YuQ(j*DWuV}*in?+pGKJ5Y*tU}x4Q$ml!H?fO7w?|3=)@KKDN`6_)dEc#}wJ=~k$&CNBa zejn1#p}L+HIOoH^>3Ns_A47-t2T?m9&<=Edzn`(5fAG+8r*Q8I{uw)P`TRv=yCA*K zSeNa<=0ugP>E)&ma?b29ShkVd#%I;{E!zIg&ogp$@2b5H;2oAa-WmKeVLSIpfcEe7 zr*?qH4s?9C4~*7Lhwl#@a|!qE;Gb;=a_6mcx}PvBnoH_?z zO=$=N2`2IF9CIdyh%au#gb@jTJ+VPK=-{&;$Ico5}o;OqGxz>=@V z*uk~Ae0LB=ze@x7FLM|F%=ex9je_>?hqb!8fPY97to&@FsJLhB02jkz+#lQVJuHiw zYGnt~aSxxJ%G|@pHkJjH^X&FR?k59a`4`C!FfA1O#&DO_jDNDe2V%F5!LL~7PPqSj z`*-?j-VP8yT{4!(_Sa)@E7n;IyxWSSyu2K~`*J%hz&0G?SNvtnAW?9}#+(wacVZiV z-OAx&;+~1?Ie=Fiwc3Dg;rc&_g?X!ZLdQeLfM`wj4UoP);=AMQSe`33!4`JKd`5f+ zh!4@?kR-M2;Um~aE}tocBP(=*v89A^-5w3!&K(F#MQP(ZY7gk&Qfv9& zHC!L&F203+-??uxba*dBwRXU-|4>->#n-aop0Ne?Fe}Bo3x{^X_i5_f(}&oDW}n?8 zQOkI{;{sb#`>7WHVfsX&_!T7_`Vw~vj>o>uT6LrJri*1G@~pVg2$LSde4aXIFH)kg-*-+P%eb-rp2aaP4H9p-X5A_6?AE z#=(lN4@4)Vz`p!L9>Kk*%73a^K_+n31E? ztF`?14%0361pb*cyWl+I4n36TOYA=&5lAFNpu?~(G}$~J6G-Jn+dcL~?!dlL5+X_LMI5Bd^^MJB?IUHOVA^Vzn+ z3Vxk&~|R$*N{I`T;E|g=jDoxaeMJSRU`g= zBMd)gFsAr3`lxpd_(&9A;-Rsl;lM%n=H!cwaeMJG7*qPW?D7RTx@w}^bpbLj_shkR zu+Xh}xsH7H#C@N2GUjEq*?^7%b-z_S?m6vy6F$#4I6NA* z?%1m;+%tBFi!U|YUp{pd4$L1exGu02=jE>0AnLqad-ZkE-z~_Q@b7BFKl=W+XYi!f zv(cB>&bq|y(Z6uq#7{ityUSqMowFM7Zi~k9(qcIA#T?j!{&{@!batA2c3oV1OLQDN zD(Cs%r~FNA`0p}s!aHikJ)7<>JoAh@bngwBOIEA0%xBvRTi8<5v-8+D$n_aw_R^7Z zUM@dY#cvy=Z_{^E8~(k+^?lhmQu}q60b|U27Lm68mtWuA*@xL%9HBfE%N8i5)wPW5E{he{oqO4ULG=Y7s;Gfuq)BC@M)$3%Omuump zC$)Xif1oz}=a=l*i~@@-*PjAsGEreh!fd5V9IuMS_?EZ_5TSh4F91-02lv z!_|j>-B>a3rnERxW~sl;uch`s+rDf$v`(A&->M&}HvD%9)lF6!cEzA);hJwXQ}%1A z{!i>ce!+H);y+cVLj2DX18+);PD9-l3@( zO2e)g^z1+2+CF>E;!>{gYR5dA{tLzDG>U)ST-D(}T)#{VyeTOT9Mgn?!gI9#ueiRy z3Lti%yrK*iY}ISg1}s(^{=0^yu2&Lv#h|5U|m+qLVIs7lk)vr+> z{&kzhz?_oe2u+$z@vqRbpRrw^<)vv3|Cw8L8&!w@Q2h=iVOI=VK1y9k@vm_FZ_Hn+ zIs9kj>T^|xe-ZZm6$7(k#xZ8bN{WAl-MRx{14Y1Rsv?lq+!-#Y4+fjYpl;!I!wD+E9c$EztJN8zgHXny~B0K z#KfKw;+nr=GcErWUjFYZ*s4YRA66UwyM*Zqlz>?=X;}Q(7K(p`cfBPc_m<0Od3Alyqn@*;rKsx_InNDUwwOk zAnq=Ti9IF6wJB#G#lOPwf3oO^2JxSIUVY`iu0#o#6_bXXod+oX6^{SY7fxsp|GG;m z#D9gD*i%AWyY?NW_*Xdo&tE>RMf{hj5dT+|fLSqV*#Et@=KgAN{?EnY^V-AzR$Yba z@E@wXDJJ%m5Z8AHPtx*V;pP9uk|OQlKUa56efU@I-oLKek^_eeDE<|W|H~y8wTOS! z?E#D!d*CY0l=|JFqo*kTm5%??OIpPLUA2|}-eJ1OO2x6ObR9W%n&MyK_%A6d)*}8N zstx~$u^Lx#rqu6_ouK$v`aB_x;{S;X@&8<@IChn;lLcpK`LFQuzpT7ei{<}Q72?0% zRh%jHJFTt#sm1ZX^71k*;=fjf_-|4wj$Nhe^ywm6{wuuvC+(BWT+OWk+@LD_8w@{i z6=O>N?#vmAf2Fto34IH;PS9K(0Klt_YHR?-zvAl&MMan3&YipP?AbH8e*HSA0oOul zOe(2@#FA=F9bN$H!9N-*EXQg6AJ^BnwdR&5pPf5*5h^RMLSthiFu$gzCa9{af~!}r zYQhdAX$<>l%hXl>Z^l3E|5F(LOG?V&#fujV?5)nkCOmlXK-D&&4D0_|EBlcjHTM6} z@jr#&|Ki1Bc>MT@72f$C)Ya9&?c29iX$MLxDz%7zHIDyL{~r(I|NQxjaP#JEKA1av z{`BcnxOVNDs_Z~aDK7B{HcJ_TkLj&Bue_!!7;9|KZ>;I~o|I;;;&i|FO zpZ~&z%kc2wBWGdlbokoZT5MC?RID8+s<@)X_Wv!l)&IL{as7`&ClooJcjLw_z-qdz zznYpFMfMGxFV`gg)wljfn2xUhC2{?~0?WGk`g&P$&rXc=4Lp4K5d8@%6;mHLTX9u` z<$qPB>dOBx9bNxZBK%*vR05=LUMW9fgYMnCrwAKRs7d@+m#Pr|bp3CU@lSkq@85r* z6xdtQ@%;I7xN+l#NA1AT@@twa{}W29)wupQ-Ty-*{FCv#Yu9dA`0QGNPeBi=tE)Zc zOMI~Wy5{hY{(nX4EC1>KUt;wCmzENr-C6~qTNo+Cm)H}11N+KvXb%5L#norjhkv^N zr#tv3ZTzaLYGGhga46zSeCN&`+1doV%5Q28|5*MPstx~i|8Lj)|IVMkgueH86pU!s zNRw-xac-IR@Sjv%bzE)u_YT(`Q}S9KuFy7r#b(LI{~4cM_Pkuzkfz+Pz{vFNBRW71kqfE+q#$T3c5C7QyKcG7Nhv~joGL~JT zZA$v*qT=7#dAY8kO}SqYU*cQ0Zi(7Au)gfB7R&$rD#ZUjS1_jJZ^q7CDGL7GotLXz zM7u_rnDdOYO7Ce7|5*O-Q62t6^*fY|WmjnXD0QJ*_&;~<0+w~2_1Sd|q0)av`UW09 ze(d%<<9THdHHZJi(weQR!+)4=vnv==@;9MLb6m!Mv(N4`>4Bv36x^L>Jhk+Z_V8a) zovl9nr><8rmR+H(N5mAT@h{iBT$RJ#ihQz8p)2!@Q%as_5dT%5sSp3U<*r~%$=`T~ z>!GmloFE&(`0Qe}mj2w3fHU)q%gQTYg!b0{g~Zb8C2GUJcW7#clCkV6ZTSZruK`e2 zRta@=o|~8J2HX_+Dd`({^yrbpdB*3oIrk6iGgb4{hW{?1x>>GbOv&GUvn`*u{J(s; zR8jMC6$xfHh$8ch?fDWP*5KSf<67p$)zejo|H(?mv8%K#TC>Fp|72e7y?giF$l3H$ zXC%Nk&p4<2mImAYxQ|h3wO(!bM|_QS6=O>NE@jqgGyX{%|N3?H%*%BKV@eN8+5}|J zBKEq(E6TJt_D{#Y`RN@KkEdJ~LTR1dKk^$`EX3rILqqcJ;B6|6S= zcMjLR>nz5U7~XsE1PIQY4H3te8nI9CPmYfYm&2h4mz4&ER!2`kNfRWQuut%BJTlP^ zYOxW2s-@hq4o^!4dEX*ztEzt{rz4F1VE3XjjP9)h|?_xIUq zb-;C#VY0Q^rtcdej={W*bKKH8NZ9*~w4YU7A4n>B`ggVAzuTY*e-ezfFdZl0R6!v;)V~+cywb z{P;iAhX0NOb-z^-riIYr6FsT9jepXzuFu80t$WfZkay=CPWH zeYPzieFKSS)z>D7xm@*Ywc+14!ti4um{UR+?+^44IBymVJ+ee_nQzMmkY{Nn+u(7X za`xts7LD@7{tTBuUa>=Xna{?(#r48^h|7HriI>!42Mk5OBBn;>O{Yh}I#_F46XxGZcFR-d#Q|9FfR-@MJ7NN{%;ht*`;?|+xK!Kv` z0;=2lm$6sgVY&r>lQHq`YfLdkuJ3Hh2owaF8=gtQ@;T184zkmh@?n6e{`0( zWj+`C=6f<;xEcKh&MVRmoMZ5$wlm`UJ5ONTR+`=e^$;+777RJ;ejA^SZ=u&SFK>aH z&mReeK&uUR?{O2Pe=Tj9Z^k{hUa+tZ;{=*l8(%2y+2P0-LGG^ya7eB>tv&~FAo=^GTg_lz`lX+71KBHC4(om zopBFR^>xX>iYXmH^RszGWG9?U@PJlW8c6Y5BL(RaPBW-r*IBHm|XaOZ_E@Jv}1wd z>iR-$Ldy9s;LPJIny>p`zSaa&6j;|6TxVE~eFH~j^d&B??$6*!ZRf7xsc%b-fA+jw zp;%LLxXjXBaIdyXb9UeX_UmVDQ(hZiFzz{Z2%|5t4D*bWN}hC58}1o;yM^ojAQk@K z9;~-HFIUOf7D^kLTfE`gA$Zn+POmEe)xKzgye*F)HTgQkrq>Ccv*Ri*<@_#gf%Nl? z<11=jW$>i7b4W+ozyjh2w=}--Cj~)i8b3 zRY-}dFdic&J<=5Z&9+9mdB!ii0NSVx_iTC*`{iQc|J`H*40K{%uAEqvGOg62jd1*- zdgc?96g`9VNjJ>6XYfDnqbm?M?}avP0JaZ|^Nf#++BZ4e-^P`;a=U zxt`C)yVZ4c1tiRRrg<9>i}Q@#_a&}b!N!sruf4-k$Gd`m$ z7sRc1-j_J3q^1WOOKQ9px(--3;MPwT$;Ov>2LAX0lWw5z<=gU7;;cOKD$b_0fa6x zX1M+KX?W3CCt7`g;QsraPhe_t%UB+RV|UKU`iHHm4q&zm=u4ci%i%oZ>s%bE_1-&F zx78N@-y1g-1}R`(u9ETWDs5!l5#mGSPCsGwlLn*j&Xf`Em-n{p#JFKsAU;jIh}7xhk5S1=o3r+f*8C)acGG{Psu|FHsuPFtb5R!>i{>jj(x@!khTE! zN1gOko~P-y*dDpCEhwE~l@LGYd26%*XX4Y~4-7t9!#Tca(a$0amgZ6{wqVf{vJiwz z)BJro!jAg5m5m2x*6&QpgrBzt%yW4R$sH21B7By&TwNB$Xa2V9uK@1x1hnVwc*?zzr)Tf z|2>w+2WXiruN{yR*UqFhV$x%+)&Y*i&VT-zJuI}=cZU6jA0qxg#e=p7&|gmuTj&fX z$9Wh!LKN$U6TNg4-7yI z+>;sytu=l*@$5=kqetFWWgVc|m#^Ui*K$4miYA>iHFt}x7=8ECA~56*VM9B*yFg2x?yVH zv%^iKO8U9UclevuhEu8dbp?-}_$GOx!uJkJuixIej~0giy@QIW z51$*rl<`v>BX~KYaA^wSlvUiY-YlYPfPp_YabM#-4F$>eAM36vq z!HPd3X7jX&Td{cJVoNReGVLAoUHtso{}CZ8(kMJ70rVTfb%r7lFLbQX##o_R@Xn=^ z>>U(0SF*i>?#5*_45fZNo&v4-=?*%(_@7MugAHPpomz;8iz_wVj~Xrdcp%QvrTu&2 zqfa?8Mx0vqMpWUlgId6@7(A#6?^d+pcwnM^P=PEMtiNG1Vn6GRm*9YWU} zQ|9`ARyema-Z&=F?Y)EU56`Ge#&tP%HIGn+n zQo|-0Tv{uv9@iMmh{=LqC^BNlR|OnBLL{~ceu{e&8PE>2 zioJ@JjA^H6BWs26?;TV}>iVs9pAC-yN#%(~oLc%Pv;#ZbtzRqsd#5mFryouU@qBD! z?;xC?yDwp0?dvMfj+A^4Nx;-5s8BkNU8PS6xD}Iz#2M9OoozBt_`0#K@1cA{lhuv{ zNSgrhH60Jl%_k5OdrF9FOv3dSv6=NVKAZ#ppq(5@IZ=WHB9AZn1GWj)q8-r8{v=Ak ztXMRRkE+ZaA9dwFl#o{_4ce6e`Ve-&IR)RlTIW{McVc1B!|@zTi7NBfZjPgzDNzEZ zzJXFD;n`VQJd9hn_8%S>RdF>Xs(gr-7qn4g{-88zUjk&U0c;b*AnsH-zfh(4e>6V2 zBE=9<@nh}hFv_7CBoKXg#ji}h#H#WeP#ON~u*}aI^I_?4)Q~4Ajjc}tM!$i=tZZlN z;hqYw9{gA4rF?XSj^npJNU4(Jh=S#v5YvY}g=?YdssR5524q)&vF%W{QNApUExjX%o}U-UDz z>z&e1CBT+I#PLP1BCeO>Q70F^9i^in{MV&KRxBMGQSmBUX7rj$Kx-0+IJM+8#AOy9 z9$$-40r+o9iK@&V8&UQrt?8NaLnUBO0z*$Pdp*j-V+EeYe`Vg-$jUeE$%wwA641H? za4o{lSQp55R9Bbcy+`mLS#e}sRAqOq>y`3HCE$z%A`6xU;yPq!q`)~}oHFD8^w`L< zKxbq^!%_*fDhZG=!{&9!3i&WA=5tx_A6app`03NJyjGQyDYNcKKqfmNG5(7v?%l}* z^xM`h0RtF*V5|?E%sM4zxzEHU5&kbw+_(0eOZgX50>lnP7A_qac{1xfgIzJsqT(Ox z`Qsxi2GYGW#MC^Ei%NhcftGfGD02%$!hazx?^!ycmsA2WNFeHDmN%|Ll#BHMm)9e6 z2mj-u$`7VQmj}tfDouh)fJ%Tz0@x;a)8t3wv_GK>_-`=!>ruZQ9&OOaR05unKvdz% ze=+S{B6uw#C-DCW=i_CJkEnRfGu+WssRXD5gh(K%B=Z&1ykm!b1Oo71Nao=hVs8Fa zNZK?El>n81awK5#Ena|q1b1wW7x3W!&iKg61>=TQbW#o{loBcdDgjp|5R#q!680DN zKpU_svM}p5V+&aLzm3H|1W7NTw!PuAQN9W$ELuZsq zDgi11Dgi11Dgi11Dgi11Dgi11Dgi11Dgi11Dgi11Dgi11Dgi11Dgi11Dgi11Dgi11 zDgi11Dgi11Dgi11Dgi11Dgi11Dgi11Dghz^pg%b!@c0+@Q!})&`@YG`YqGrnkG;I? zCXnyt^^(2s9ps1x^4^C(0!-d60r}*;9RkQ}J6Y10yd46J$=e|y-xxhV0nM*@2{0wk zOMoePUIHqa_<1B?VBXu#1E_oEH`$g7UNCRHyxQ7&U)l2h6**eQc8`dad!P4ZX-T0o;EDjz0~*d&jY2P<2?VPBag zoX>vRa&4Ay%OlGxQ~EsQn;GCC-<(BkN}r_EwmAVF_RI`cT2j?=XJRnF<%#8$i9vVY z8!TgOxie|l)9+gd;$Ah&m;1EkUK8(mv!}^K*m*yh2!OtC$q<|?O~{AWJedp>eb3Q) z%dHQ=2bE8YKsZ-aJ~V$&d~iU)x~2F)e9-y@D@RyfPDb&xX892I0W4+0zH1%t4Q!U# z*9vK0<+EvGUyIbftYpW@zBaXQ9kq`gwXbDjB9)&SvS7cx({ZmL0zh3Hq?#+sFbIudNBRAkPMY7UbC=u&rhM zRs>GAd~Zb{=QWo=4tZ88W+}HhCXNK#a^vR^IGOw2G7qxy9uqLXMRgW^i_CkAJZME8 zrlM06fW?3E)ZIOn?tx{H9FI`?@(3^CoX1fH!#) z0sP4~+adnsjdsXR@wxij($H!8=s82zRK1&_nJrl&3VBu`SzS% zBMtLNQ`B=cSJ$@g?drd!Y^a{=H}cb&?Et=BoyJM-R6{WJOC>fBx;Zt`zcD0+{QZ0xgZ?z?&Hu6`YTFQNXKGNIboheYd$g7Q@R?m@j# zXXTFcCf0iy^l!`un-jxM=jr`>3lc&r4D_aN@E@`NW~*3w6&jBm`d=PC4E9V2FdlpL z0ekW$1pH4cRIyE#N&iiI-(Umk>$y;!i5X66{ipejfNf*@n)PqW2X%WU24)-_7yOSl zh0;nMVn2Nl>as#ieL5SL)cRi=F_f!&_Wkv|iGf2}iMq{fzR@l4Pwjnzb~vjmDZ)#s z|MZ{)*p(X0*0=3zeZanb6N6qi3rM3EzP`Rc#=g7hsK+`fbm>Z*QtCfDcA#y2o9Y5g zoxpUi-8(UG+V&*BSG1`9_T7WKqJA#8q9ZB4kxKuI`o%hPj#^1%9=w;~vKx zVPMnIk`?hI}c94e$<0`M0j2y84bmvCzJI zU*jA~d-zh?yLW>J!OXdf;K0FSaQ5s4sHmubi)YTmjwRW!FihvP{x^K|fz!GYqEDe= zb{T?UL)I`@kdxY&xqaO4rOpFg!%~NLML8Ldka6&qUj*iXV8!PH|BxtHv}`RD6rMHe zo#>v?Kgk2+C@U$2{hx1ztf2-$`Cvisc*xTSdQAUcr4NQhUyp;#T%GaA$kh##UjMqK zX8oJ;L6-rep+k>Bip&E&`hEzROIE|_)8{SpZcG16J}56Qhl87U!_p5Y+sy}?lR`bB z`z^D>VcEuy&3b3_kLQI_>)$&}cZjQh=Du^EL}>p`e?{bjcY+2%`l6LkSa{B+-tFn1 z$p>YnWw2+>x3DnOx?ETq8Y8>zw@>c}Yu3cu(mV6)fYka&U0-4JZS#z>>J%6Q?Yj5z zNIvNFUO$*PJq?Z>E3~V3A^KeiNPQ;t`Ph*<*q47uklvlq zKa&qGoH_@ar>}suk)n<7+0Qc*1AvtAi&- z=-!t~|K6dxC@YBRgFOPA#jAwLh^So6*MKb+|re=t) zf2O@?tQ$l_drn_+(pUo=KXF%;)^*Jc_0tV`0Rxdu<)A{Q890s z4^q>l(tnq5-AbwS&&1og|7dut=U^apJkoE=#;O$8Qt6+G_w=?kfOGv|%bak?%C^~O zD{5X?kfY0zO8;HMbsHHyNqtV4xm0r9ONoC*|Kz+YZ-uBjw#2(-I}yi#K9@}YVft-S z>z#@Ja~yw>0`J^7*?N-d`sms3WYa(9jV;pYU-uoOAF0m=j|l6(=jzkhd#QBJj`woO zMLG4qM=Jey3DXrwt#=ZCw}BJj^qC^f;J>1x92Rb!AWI&=F`%PT=^u4-Sq}XNel%Sc z-4k2E#;KIo%XiL{MgN((sploszx}aaf&D&?^3VsP(ln?4b$ilf(Z7^qz^Jzyj&vu+ z`(fi3XiooM>|ZR4{;~ddMKb({rrr@lzmDQan6yN5`rq{3a#{3`_`fch{=;?m9qCSt z_aCE=g|qc|SHnwL=CkAe`oL;g^pE(zEtUS!_wTV7`gIgX>ZfZor~jP8>*dn_eW~=1 zdaHJ%J2Bo*N?WHn{ck(+g5X4 zME|(AiCp^sWRdjxFDkkOckkYVXV0F&_3PJx-By$0dPCVANGz$Au=n+1!$&a{ngaeI8`^8Q!1POuS%wWM{9qG)GsL1|4Xbg-qnml+KUe#KE(cnN{9Af zM(HD&@Ly9dq5fs@{|t(mVYmPH(xnnf%6M1v0jX!+yLZoS9?+FMmP!BBMN;WsF8^8vGpFhX4=!R83D91TK$t6`X>A&WfRQkuV-y`!sNEv_q z`b~>ITgjE_MgrWv9ehMLmQs?l&Kq3VBKJE`3)KM zUy~!5{$-s1nVy{kq>iojAL&c}{K6C2^q*K-y+JDd%Q64Ed+cNg*)SiX3YJ0sy$fnr zKO8*Y2yvP95VyV-5>C~~kq?$hrGIY;*MIOHJOP3;XG6rXr4U(=Wj>Zy?1vYP?)T%$ zossGq0J6VpgxHMwmIL!a{FWDxcu~rHP&H2~{dW!3&k(!+$2(jHe$!^aknb0pbYnBRJ|5fT@&FwfOJ>ppHx9V8roDr%XK zP*Rm5mHxYir$&o`f1hC!VZhonh&*X&>)HC|yB>f3OSo8dLm~~j9&OppCYWLm^DMnv zlnMAe{)-ooa8{%;p|~niGX009`n#k5w+HJXaNaB!dc=9Xv-1O~8?L*05NaCueR*8h zq;p?BLlVBsZ?5BU_3G3;+Kjl|=aArb-JqtYRQm4{qI<(t{rAvMgTeb239|KUUE8}( zJhKM!?wo^0xd(qRi;&@_qZgZC+;U;IUT|K>!ZINr>jtj+ik8*o2dx}T48hzGcGy9qwsXs3Q>$JPtZ2cNlCH;B1h^=qm0@73%B zF31P8Tf_wDvwW^gWjt5ELhhrmov^q(5AM}gIjc^=;h#KefX$!Xhta9``0Ms!=$;iv z{AO$~o)=suQ@I zfBR#Y6n_O$qAH9>!l%z<%L8!>vAwwcIV4`T-(E~8t*K!2B-I&xzz*~2|NWGyFlhHe zNo~C?o!fdg^6Wa;f3L``_F_Xr6CBO2f*BuQHS3+x|LEjfvgzMkW~{(6;UItAAgQ=o z^8H`D!}ZI!`tKe$2|_oeD?;zwyfEh6=f-~IMko3WNOkh;i5i$a{<@Xk8U2%U;_a?w|FT_s z&`{q5Cl6M`T)ln0GkIWa+*OE8uk%PAh&A;kCtPUB2T7$>A2E88>P+^3^d6{d^q)Bs zh8*DUvz0=JV#GNA*8EqkiA0dGHe{b3?}h4DNVudaPvo)z7vtyG zy}_dnk32Tk2@10^JfTB((iEasp<%`jzXoyhrEU+_t^IHg{DVi7EFjT{lUaRGANSqS ziJadG)veHQBU2wpVgs;__h@)}Lzn;+csxi{;mUuBELi%roO*OMEunf98gAUMN{FBP zT+}=emtMa)Wr&ZgmvUImB6{-lH%HSXkrrr3Jv2vH}O%|e~lNv&6*@e9?bE8#{=cB(yC zhhsW3Jl2;ZM+PvZG34~J|HAs=PN6!IGMp=V75dHCn5z&suhy|0$gJNVn^7y-zU?xq z)~Te7^}~X!N-6d0C~l#;bT!<_@%QcN{|2_{hBzfOjRnT~;ZLy-*?@ZTNFTDRdKLQJ zxM*w-&bDd~)?r_9M%1V9j~Y{_%j`s)TKcER!e!eW;Z^MSLiOlQxX~kTx7dL6`n|(5 zYya0}L23L$oZHbCbu3$%;ErCM`8ILpvy*Z28~SKmeWI`zQk4Cph?C2bF&{h@8}Hos zoYA3cVJoZ0M^zX`g{& zYDA^Ki|o`(qRjxEi>d{86A9thMw>b-LI z=$OmW&8-)Se;Q4*1U@*L`Ez3*k^}!E2l~HF`fgH(T>ob(S9MCjSWhfmIs|ROIa~IC zNB@^oqAQYVy-uAvw@Ee5Rf#NE))UKyT+9b%{}Yz}Yf~aCa>hrM_we$PX8%N+bkT>h zOTgH#T(C4U>cHx?DN*GM(Z)xNioT{9Upv_aN)x0Kpc0@Gpc0@Gpc0@Gpb}7x1k8)z zhe+`_soI{BeleOeyi=U!ec z3i8Q4ivn`XilC|a-W-8xL+!Rqgq6+j%@i4$@68l7-Z;UX%<=)7$q2-<=U}CoU;bZ_-^u`2O(HoWG z=-$j7i4i&U^nGPBXU%_6AoQLk5GoIc`N7lqmz%yL{BhrN@yx|L7+Ug!(ct8_+#Bsh zWy`(Mp0E-y+8b5^K4?z>TEZJ|TM{tYGjoK-=vWrQWDm^|`ZRxUj?i?=L}-f63~5tz z0456CGU2)Q+!P`68X%vL%qkCzGG~<+Mv8n|!W$!C-I55*)R5;Gftea|j})~fXY-F! z-T}8fRXJ$zL>le82md$nyBd!dgm30B z@z2QN#oV4FR;KxX{9m4+QHnI%c?bPld!L{zpJ&hZOZrbKXp$q& z4!-`cBA<)!sAcoZz2@Pckwfj=ULzK&2^a0!1^u*Lx1bc{^9h$%TlWt5XXH?m)-!q5 zr@`ZtJg=}#JD=bXwz4`ldf&JXrZ42(749xnX!iudMC-{3zY zU;BjcCM1kA{C_=S0K>Db^PxSdev-|5$1x{l@B?9TzT$PriJxV_KgltJfyR zIx7R*4{B@Iu+*lGL9x)jdtcGy5EM2H)~w$Ir%xBb*|Qg*qM`!I%gf>5H+iruYN`eQ zi~Gg8%=@m%!LT7~7%a$1h0I)CjFf96JEaBU9=x;g0f4i8Nmy!2IGyh>a zAlF^`kA}B;40K8cU3>J0S!s)*px}%J-?sQ?@Zli@naU> z4F9@D!+ygLh01{Jg~H{Xec!21610D(ze71hC#1l>{6jYRw#PpshmxYxaBR&KhcehX zwGVu@I?fi~Ezh=(`@K;9JBR4sV)JY3x=UCpbPW6m+WYpllEZt!gJIR$jduAK!apO2 zqVIDdf0lI_xO;LCe6b`N7Hk>c!lyaUn{{t|m!31egHZmvgpKcEi)UNUx(pbHwqYo= z^KI_aiXEwgqsIyb@y^9R!>_G#dGRGUzHVl7UYHmFU(f#lmTYEY+>+lG?3i9Dg86nv|7>|2-Le!`Y)E#fZ!Z4}a#Q;V<=;C@H^d&VeD4k% zE|8r6izP))^G;;3V5@GhaQ^l2d_3|!_x)g!)4V&A|6B4vIV{{d(PQm@d1%rc+4x_RH`i(YGq>teg!1nlnmU1xPrm0Lj7pP@|FwJOJI#Maj!rL> z|1P1r$$WhBJs&b=zHI!j-<#<)|LNPN%@)ePceu{L$0y(Op<~jW;=icq65PFe51u`H z2G_4&hZg(Z+!nHTKdbbiEBmNV7RFCANr%&P9wQE*#NOgh# zgpwM;^&hl<34C^r?|JvZ6V3LIV7#*ODl{~-VB8U}eD8^EAbID?l`CdBj4Y{gUjN0_ zg6qGowttSFI0FRZ&!6*SoR3dO&l?&V;NHD^aIxZw^Sqak{ncv(w|`t||Gtwv1+vc{ za>Rz)@3$1ZfP~{uotHsrmEiWTGyNYvQ4^uxsx-j;p^W>4FR$1SFB94rg2TNKQ2BnCRK|kyKnGxc|dDJhdYq&Y9=l1N9Ivdln2mV!cQ9$7k2W z$w%c}7F@nRSJ4C$RyUY=H}4z2unyvP8utk1<(rX5(&Z;_39bKh8KiH^@M-JZLq81$ z?_K0@U-*pDop8Ul+GV~U*8r^9ZG&&_zKP3lujKq^c4gqq9?GwW7=DC&H*tCI9yb|6 zH>Eq|o4p=I-04-YFj9lW}zLR|W$73F7j5!G}3)Mdf#~%Oa zM)reWJ{KZRG-I62pU`W9iTryPpb^V6z8`sY_CyVQnsNB3$+WdHPUUqB*j z|8(TvsqqiOKN^|*aW8@R{~oKgzutLPhsA~8y4#py1v&8<{M`JaMV54 zeViWu>Y<+=KRAEU6QTNbHk__#BW%O{+R6UxbM@CP_-3u$0ZE3()^?AJe>?YaE73;g zKO04K>demoh9BTMLo1x+%h~X3UTs|)_ZpcmV6PEA8Dusrb7%d^sOB|x1g*K{Ebk<| zEuOj09PG8hmp`5j&!}_5|Dh$fVBO}=NNb@h{5krD%d4$>p1mgc_=e$`_2*+2)QY-J zv2kDU!lhG?pIS#eIrH8YzqX!zJc_l~0$*OwsISGkks-tYKWfpQxL469miz_R8am<( zkM_da;+5}N;*4ruo#P%;hZE-2zAi4ewqrBe#=@mZ$k!u#ya{>7$E&U9&E=uxKD=cA z)VPeg1b1wlZ7v-@WvyfH@*aq`__X(I#6)v>XxvM1SUPxo9eUgYuoJG+dQynKxnb<_ zYU|y&m@5#QR(m2Qz0TwQ&lWiZ*CE4lA_Vz!YL63JJlc771J|^Q2?+s3`M< z=a-Luf{Td4tWR+Nm)orTe`|bX#Y{Elb3T4~pJRCuvu|z3@zIrk#|1!I&HPthdC(Ug zkpN#`96o>17XRR{(zN7(p?N6;TyrKoVmmUHbuTk&Wzj{Jzzi-H~vg|GVAR{Tk@3WN7jjW1CIzi%EzS<2F}AN!DIGZ|Ae-@A1LI-o81Ebr@e2`mpG@!Jg1&DkEkB6znI%2 zkz{Q}{r>h&;J@;%1;C=8nFE7s0E}Gw>HCTQ;%O#c_YL`(Y3^eccODaSZ-ag#A8Eak zpOU%j^ZSharQCe{(a-OdcHM$UBaIIjI{D6g^s}DdPxnh2ooxt_tZ$JmpTBnt?uN7$ z@zKkD&Z3jaKUU|@h7Ns#^TdkxO!9x9otBu_WKOs#k2i5?w0G}_eye$a69ckEp8MU# zG}rTZ0=V0^n6_DmX5({X9XRgUSunzBqS0{`%buPPn0gkND8+q6{r8lfwIoz)Q{(@ZH*N*5%AI+V%=(czkIv!G{X2O{>&2z08 zS=&0>qTAwGc{%LQSpbW^bv)M+=UQ!ZL_hji?zf=TG{>0xEIVf(Z=PZEVL_`2%iL#& z&+NA=_m(+>se2vMuRFq})zm=P#cT zMt`pUq$Bz<|6kzJYU}>M;gh1#f1&uiK>Bs(9MO-omf510`|R-1Q=-v-x#XfC`ZKmo zz9tv_&ddY4P+n=*$CL4O#dE16`rXYxjE}!F^LWmd3-(<*5>kJ7d$1l>?A;CZBFtkUe!m+EY9QgF0H6Kh zD#!H)d-b<)J@lM39R}}j_EBG4o(InwYOUld^ucrdblG;3ANo@CHQ$TA=Eb(>85nI) zakazx8|IbIY~>d+k7Qs@rj?KR$g}I<(1T*3B%8yXEpLLF3S^A!EC?j(H{9;nwpacHZJzsJ@&U9t52Uzyx+D6T_M^Rd z9Jc5u&!P&J0h#CWsP3s1`88Dykh9?dqzbN^ln^v&Hp))KY5RI zP3NP{+2H+70P05<)u(a;p`fJhWG-G5$h3w;ZT;7J9Uh=OXSfoMVHz8jGP;M$d*9p*o7PFkTcophMWy};MwSoglF_)YD?}biB}Vz^NITso{0$X z4+cZOB`>dLcPHyJdO4wgnU|MR&U|z-d@y{O`K&bY&B%d~3kI~58zVq6wr}ugBx7!-aoEPR zUL(Jq*K?F)^Qk)e`u*OPFA!%O*tieKoF0jy*;L}o^QKSWr^xGb!Y}vWq|eCX`N|I> zX74wI{LCG7W4b|@UL`k8_Pwq2aU8k9G>&{DZ(`sOXK5gQSGacXCU!b}*S6BP9tRH0 z-EZjinh-indtyA|OON}Un|?-c0_@gVt@%&J607!146r-S-0uC5Dctz&-S;072g{?T zF*-M%ze)(R8hd5?8+RX$_W(PvN$to!0?<2VQDt385a ze#@h$!IA+nylJz>QE%8vzjMf_pP2ina2&K_Ks2t=YPnXekAFBU%35n)i<*ollJvsD^B-g{j9`z0Hm%-o_%W9TTWe@^888+)^c-xIMck+faQKMz*c6jK zb1uDj9*(Y>XruvU4NJcoV>O1e=v)0CxaoHunEGck|D3VagbDm>wK3^(&pA6XtkPx1 zOEYpO{E3^scUa2b_|l)VG@Ex!i<>TUzx(*tyy@HW7qPd7@xnFVI-UOhf^GciZ_&5s z^4~Q)^=&@>m#ockI{ohock-s6nKRXgn|_y2eK)@Jm#)pVO5f2qTuvGP*h73-l{Yti zq4MV&N8_$}^-cM0{;`j;r&jWJl>g41y8xx7WIa0maRIXC)cyPSp&aeOmu2?Sud(u1 zvWLH^tG|RNPK;x{z;Udl=lIwB8d3Jd3V*ijkMFQaFko#OM4ns7ruhCPp%rNAn9H@^9<4_ z-+<9cH~IT5v&fo5Pa&ze`mU|C$unFlXcjjud-vnde+je4TdswYH06oizTdbtwNv=g zC(oVjpJw$#82jYL4!;I*^DXDxoB9w1_cxP%g2=*U+wAeqyyK=%?z!VA*zdY^*n;Oy z*NGzvmIh%uSD3VHoo%I0#zErdy{JaMZwyawaJv4<)=$*ImH&u+KXWkc=R(s*nx2mu zeS1dyB5ONV9ADH~wZ!ql~R=du)hoQk&_UKr;^CSK;uir?67%Lq;^%$pR@ zll`r|YqDSGn?6BnnfSP8Zu~9n!ob{J`rcOU4|ZDZeFFzze0KN4WXEr#-S;?8@86#t zCv)97AbJe8>v-py5MS@H6K6v9q$QB%H_|AZoKgKO+H|Bni~B^?f4<@)tM#IAE%f}Z z1I9Km?KZYtB4S6w_MOfCsid89`rrxJGG&@o+~#&$j&3tUH*>~1QV~;6>fA3GI=mYK zz5xSq{}jtM64MSM=X3kMhW*pSVB3uTuyTD8yIpXGiI+KJ+!ajx#&f6+zRuliRsUzl zPp;3LIslnDR(pz+F!3^HTr2vfMf}*-wB@tNjsJ3~OnUs_he zmP_;X)(OULWQKNfb`(EfyQsLr+7~gYr1~B^Ze#p5liaOm_|hwYkzE4YTXwGWfEep&hRy|Gha(DnsD>g@%ODvb8t)}O-CCS$!l zZWY#%kF~5-i*;q|{27|Mm)$NQbr9wtzCzcZJuoM6>l(I$R+!g6GS`dazaZ_Brw!

    9P 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 D2w=C1 literal 4312 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 Y7@cK+bGdyu`Go*jnj%c9jC^kW526Yd#sB~S diff --git a/launcher/resources/multimc/128x128/shaderpacks.png b/launcher/resources/multimc/128x128/shaderpacks.png index 1de0e91692d96a16656236d7dfd18757750bcc83..d2f1c03283673bca465492339ee631c365a61eeb 100644 GIT binary patch literal 10629 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 diff --git a/launcher/resources/multimc/128x128/unknown_server.png b/launcher/resources/multimc/128x128/unknown_server.png index ec98382d47272f9cebceb0d2aa8e4f187fc0b54f..b9761e08f12acc1fea97801bebe4a2c0bb2caf87 100644 GIT binary patch literal 6726 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

    iqy?Z1 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 kBSVG^88T$ZkRikW1Hv7002F_dQ@0+Qek%> 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%0DWq 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%0DZE8GC%PRwA6 z+PLA!+yu?+-48MU_-E-XU&9)UUD#sb(@!#XXb-OBF$5{#FkK&IZ)ou!sq5$esqC2NhpO8wR(;Be((F)xo4Lz zgxUOwFyMqhWRAv_i8>QglT<5JDp3WY1f6D^t(P{KylDs5lLeC0Px$w`T~@9xGP!$( zlJarbwV4{_Qr(+`;={vq=yPI3;NzZ^^7Az|F<9-LsYRMiQiO3hCw3T?+Q3c-JA@qe#hdLv?y+w|&{_`tWYqYnU z^cK4W)c~s;Vmu_8ogkIII!dQ8qKlIjCsN{8gLrv^xYMQEZV~7Rp+lmnSxhz=*_RsI zf$A&o7HlSG4%I-?T(pPD?b+}ehXjFkJ|zNKNaiHp*A!fva|lk1$o_5NdAWEXS8qxR zol7QxhCxy4ixRS;6=ZSLLJoVfxlE*x*g;WLN>QKN&)Ba0?0&DL|unbsT@Y7S%)}mg*#=1`);J@=_oL(*RR;r7%So0z14}o z@nmcB%#A{GH&72ynBFIXYF~K6%{25dVg2wawh>8si0h{V4dM@-}P?Z^x*vn z}|w<#L(5`}a_<)!5!{pp+&tJ=zN`4%7}K%Mul8h#l4$R#vaEZ|gAS zsS02T%Mp8z9%A$9H9Bz%hr>97Gu~Q92i`kO2Hw)&8B5&oVQJQSCubY_jzgh5Zj*wu z7Mobly9gheW#%eyGwV4w@c&N;^rv6EG$LBhX=h z3Kd(;HG*o0HHM^Z2xn(eV^wexMd0DG3}muS;hGJ^TI##zQiV#Xf|{PoHbxGc6`NeF zVu2_NBQ@Rt+9zxl3QT{9auAn<^U80LI?`+(qelle#fU0Q=CEBRS5B=jXhnV{=Vgip zoVEbp<&gz_&NGMU3PYy3{5jv;6q`i0n5dVq#$v1$jaGw7xuRtljH^;GCbTqx(xN^wL49k?$u&KhB)zu-f29k} z4b|CyhvPuG_Mxa!dLRtLx(mu2|K9(Z@%_hei2iOYb;HNzLA0?>G z?qOs8Jn{7_2rRbUqj6=4+8w)5Qz6oYNHkWYfFp2aLP}Zmb3%7@h0gKlaega z>vfpFc!eh(eU$Srzd#cAaK@p8q7;=mcJgN8mwLSL%g+!d0VYi;M~LjP=l7t~OJHRYeL(7==9fl_%L;-JlnDv3Lk?<_)u`Qb4n@O`?-bTI**{CU?zX zg~13*xmuyQu}!?)!Nh4lzb4dSHb6MQRYc;w%>o^GcLu!UvnYAvON1ZvG#!ITvJW)P zlzq-C1HEiJ^`@9gc_=c>JmZAKSwEC1rG(hW44|`x+cF5O)Bb%BN-{P+L3gW#HCaNb zgWAC(g!KueP=NID-@*$5gq8FzuCx80&SN$@gh7ZvFmd0z*nQ_)5hX7h&o@65RAV@A z2%UEyrr?%o3J{hkbQ)$*8(cw(A}j*|fGtRoT|pQivJNA^Pm2C&xzerJ?euXs$541% zKV7`QBNYV+MRd0RbkU~-{c8||?gs=i2&v8NV&A?sjoP5qH`k z6jPH^&N*koFci*M705tpt)&I7uPimTw>SRN-l^$l7qd*J8y(G! z=U;h=?e(>SQ?cK@*T%-U?T*{&o@?{szki8R8X=Wryf)74f!%!nkNp5U=VtwSky?bc zxD4JCCiU*gLS)g^mYs7uIdSK$EYDvjZpNf(0*j9A3){@SeHV)>3&>PrjG+^^nZJCI z$z8Kd?VI*{*@LA+~{b& z#>Y;nPXa#?gyC#zoILd2A7^rcV z@%jWwHz7@ZlyWXK;+4~1sNSj~5Y&V;;DXD=FLpcaNH>8wAmb_c@!9&N{ zUfUp!dl?LCsmsAGfz8Lx`}w(qC1=Lill zlnav=lcC9dS=jZvkxsp^iIQ@7q3}~(nxmB(AP#>rfnhZlfs-%Ug4w|wYVAlzf=lcsi7u!qGu1FkDTJf-s#QdC;r^2 zK-YB`%36J_nRer+;$G*YAA92AOE<&-H;(_>QIk>zQVL<5ptAcgPN@E_CpNzXORv1aL7)V)x4eP<@BAQF{@_=U-E9KpSozeK(P6-@@4go~?p02H zQ2~p=VG&XyLa>3Qmvk_Rp%zv+cJv4b_V4BD#cRCu!pm$l*1=iQ4kYxrws3)k6~W6m zlv7Bn0E>vcCA|tXsZF2+=|)C~N8UDtL=e>?_Uzfm$y-hkj0c?i!g*f##pg-qW5z0D z)N5nR-n57Je((D@^~O6K;x8; zR2D{ftC`GnRBDw4qxtE68(VB6^}LqBrwIw?xtGvk663`IWr>X~y|{uG zIV)`zkssX?WZy$25xRs*_?7D$Jx2gp=Wn%;qv2I&H%3$jqW zo+r9Rlg|7q?JG-EN@bjLwA*dMas`tbLg|%q-LwEdNrpB}Fl^DU#PH5vN>AjcnV+k1 zuXPj{FmC>F*7=Q9e(mQ)BmaA-2AxxC2WFr7xypLbb>wpBT!hnCeM--f=Fdw<)M`WG zMlmR;!WHgO(GQR%$+#mW20w$y)S_Aro|A5^^VLs%Y*#3p48l-?i`TC&U5cX8&-}yB z{MzYnghlX1NAtDsXuem6;eF+5ZQKSWam#o9k5s334q0&IWU4K+>#nft%e$SNy!02i z-vQgWORv==ZZ}C98?;xh;nIZ0rI!)CCK7>kmhD%r5qEo3_D!RzAuijB<@e0i)r&M2 zFM@GY!U_kD9YBT(LyFdl9WyiR+rN*w*7htXyA0 zC_ySxtTi;YHo*zTrYC*Dl#1H;7_IdNiHT88c{N#_VvTo$mMSYC8F(YJU@`ELZlx5? z+I|A5QVJz}T(t}(T4{d{=OYC~;PY~fG?~kQ>kq&BjF~Lj!Fd|rBalABr#?2u$-8dl z!pmprrrpf9OrvWvjPE;%%;d^eB;?NmKTz9vWS*@*Iz!rwiQ||c2&o;pm3?o0AEoJC zebt#Na3E3)LrggluL{?!al_tXMPtsK$af=XgX0+2u2B`T6>mP=&{h(m$>s6v$_I`r@C$`;|7gSpV&RPWR%oLTfFh zlulR{CGuzg*2n+Vr@v9w!5baT*OH$J%OTbtmQq%PRD@&Gl&5y~+x$MfP(|-5{3@%jK1X+Bh1UFex|=JQ?G2KxRfN`5N&#uNOSjWO2O8N`Y=8P0 z+Al7!>-*oxjyIg}CX7yCTtct0iL(Zm2!eV@NtVz~BT#hEYCgutnVb_nDr-Cx%fxt*!!Ua?A+eX{FzI>OEC^)%9U5np;f?D)Zl7{aO0hliyWTlS;v+WAQ3xZU$I@ z1YQs!6=~v!F0HWr+#eTs2WX|ea?nYG8p{T6t^eh;Lq`Goj~!%ddy7V68`p6t6lr3q zOzuP|&(m3vplu18IX2@Iu4#!cZW6DyiMw4tD+E*yousz=5NReAE5btg%t_AK6uCqS zyv*n#Zws(kPR0u{@FjD_p~~#O$a%?p=1h$6C&i*voc^aES{Q}wbg>8(I%a!9O+aT7=hY?(k*|U94)M^EtWp@uLv$bheL>Fv*BD~wvwRq@lsU!#5dAfc%#sK z4G$ruan@Rd2%I&dy6-4KZLH6~^e;FD?RJ6h%yw*!#_AF)ufD+Ax#x*HE!Lm?BCW+s zB#jN6F&?hT?kJ@-p^yYhQJ$DUNJ+b~O(e>MiNe0J%GIC$EX{XaXXm?ar+RP)R;HwB zqi^kBDwRM(B2%n1NDG0{AbiGsPz~5on_+g>EQgODrq}JUy1v5l$_lNxg$fi?wJFA` zV+7>@T?(iL6~fRf)ijzUO;|a<%KRf&IRB?-NmgRUf^nZVnWoI_o8t$6@`t(eo>S<2 zds`U7a8e?y^;3R@LBYH=l*aT|DJLbfJ9lv3Ti?XRm(S7MZXysQorIM?S!C??agN@4 zjK)%f&FwXBsUP_QeCfg~M71(U4j)IMnHis@_NM!}I(Ctlo_U(2oA_8~<(-`U)VyDH z!b;?a8&gNxO_6~_7?I5?`Bm93z`l?>9HwWmBI9jRZ{jJ9Lm1yY+J%96C_2Ks$m&QHsh)|lELj+-eaW0bl{UTyt8%$=3YODh6Rm`4&VNRn@x{Kl9GMx=EBRssE z+Cis~^FXQ~lrh<6u2?)Mz-xx#t|Pa4k~#Ou2#>>HwoSawIrCvrQHp9rovV|1(4Vb{?+&^qkj zP-(%H*%f4))><~^U!{5FEK4sx#pb!^**gCME={nV7B-FhWU_aA&Iag|vOy4-TD>0B zCMQU`J*IcgGBvl8)s;E`>ER13KfOqI zyN7L9TxDdiH;_#_sOzqymE6+U7;^HM_NfO8a8(UK2ovc-;u&FomQWfQe6rm$5m;3^j zSX|elkfdFM?OAlBJuHWXQuZFBvD)D}-dP|`5_G6>0p1KVl4umAa*5mTy_4FG8Vgq! z*xFb}2lfM8l!i~6sO0)mi z!uQIHk1Wimse=1}EZEwl1^6$2okc&lBAhJ>yi$<8kRrF*mrMh#YZp25iGPhd_bla5 zlcovQ*fi<&zUr*|yZ`R-&waz?+T18KUrPc^X<^c2#yO{)wNxgiK#G34Us0okn(L6LK`BS zH~PdlQjunsA}U)%vJpw)7cH4NLSb^l^#8n`-Q!^UJosdBO1$^cJV37Y3v*`!}zZot&QH zJ+1*8i~s;207*naRNwPHKJiPx#_Hk<#-ud6O_Hw|s((1f(eFFX$v5A|3y+_s*XWSM zNq^CM;q+HnTE52dyKZH2$BdU;@0{eGZ+(D;OZ&O-(#y0P+kURafie=)@-r@?BoGnE zSZ18oAPQQRB&0HfbVRo4@TrzE6iBDMTCL-^|3X4g@^dXFF%bAJHc}xs-*u9)*)cG% zeC|4C%lK6@@RILnY!^;g6464q0A(Y5&+M=+A-&!teRUPJnPBlnMk&Sk&39AXa|A0i zS`6>jeFT8bASF2@#ka)(GzNtre|}%eKhn(?yAGF$V<_;IeHroyF<<0)^2NQ_b@Yco z3-){tF967khQvpxYcWuF_94OSa*Xs~XtbD*BMPcI3Y=?Svm&6ovBb-t`~^0idYGyD z7@+BPI>x4ESqSmrUw`&X7rznL!W)I=Yj~tdTn8pWC@CZ+!xp@3(h+w$w3e>0y?BLd zPe01aQ;*PFUBva;*d$9GbADc<6qV@px^y}nCxmd$*sir^!&iQ z7ryY1>QU*Qs8ouK6WE!(9DmObgM-VD{65QH`OkE(Uqq%|swyDaY|*^ZrgyrDn$*0y z_6nutkji9*sr{3bYZ0oV`U#wYRiwhtjU=Sr4#j9pYDjHLcdJA5dXvstm$)0V_~bPj z7q{s4Iw&;t${3ZfN|k`|sv@Z*eA@@!#{&<&nO%E#WiS%B90V6$O$M&t-3U7%3PkF_ zn1LNl0h|~41fX>UT5<3F_j3N_bA09#zr%KOo5Uo@HNl0?yh8a%nLQ8f=dQc&;q=qb zu(h%2cgD)EEX&ufu(`FwzWqlzeBx$mlXYxp*mvv@yZ7(o`h^9~y!b4Qm34#`sL;=} zNc?amNe6F>W|0tN3hGs4+8_gXPP(c8@dt>vpc z|LZ@`_E-N5oAzk7nj}f$Oqy;>C;q|I)by9WQP;v7h30F?(Fif_oReV`I<&^Lo3vN1 zv2o>9n#zvyJUIBg|_%no9 z4l9+o*J|C5wf{oK$w?8Fq9jS_sX8~m^}ST4=KwhVz8_`!m2(|61g&6Eg(fO5I)E%vqY(ZZ=C?WAliY(N67 z>rHIW(ra~zO-xiOp@V=5imIzHTiS_ol3*s}?)&fI#Hm}@xqB|lSD`;l0pN02ESp;q z`0m6B(I@+JcG^jaz%SBHiGky_9IPCbu^Qj@{%>P-X@xI-?h#DS5E9b5)ZoG=&N4AK z!PLnq-t^#`xqRUYubz1sYb;R^kqSdE>GJ9e&vE_I6?W|1&F-5HP@b$%Dwo)GVh=kG z?PUJU70#V`4l4{v5|f$~k>*ORY`#YOSr;n}%4$fx?Z1%zbxZAYZ;Ub!`fMN@W`>;B z;iN?g&F($>xcR0N1m%F9=#jXXYZvEzP?=I-B-Tnw6ElcVA*@1LKQAMYXd95yp}V$4 z=kZI3)h^Zvs^u!KQX|-TfT@Eg38GTJ+t3oMbzl;&{!<#E)R0@VC`2$9c?wa0xN?Gg z$ivJHIF3M$6e}{hw9I7Db`X+QRI5?wEOa4ax)`1&2F46SGc`r0fd2QUe~IqO zS4a>oDn?zwd0jyB%B#Hm@qbS9#m9)Wq-!OO=9cRSwXK!@r7(y-@$aAb{0;Z!8^>P) zI+LoKnsg-yqco0t!7IP}E1dt6Ptd)7#S{1@#UwFO`T;(d-HFaxtg%^^CB|9XjeEUw z&hekYod#Y)i1W`S-A=A<>$O@xES37HvB}A!VHlKrs&c^LcYQAh?|T~}+imJ7WbT%` znK^nJt%ZwRdgL>#|L(t|wY7#Z2Bo#P!&j1WTA{oa(OcUPizXpMn#!ih|(B#Ib}mp;49;7TBv+dap3|G@u1tJUV|FFZ~XCphWYd~uzH z&(2ey8>2o|AgX+%R#g7J)#Mm_T12iHdPzt#)dAF0g;W%bn$W_V*9g7jq zrVw^!b2H6?^-|t(n1bjaEzZlhfrE3=z|*;5cLH088<2(0OE3b(xnaj=S1dq<#85dB zF->7)!C6OdZHdLte9Xzq&j}NE5n5BP)?Lf8>8$&WI7$B5pI*E04IPShqtJW}5990x zu-IxeQs*qTb(vU5Pu>fG!CUNGD-a0hoU_i^o^vjC&b6I$*MMul?;*tR$uQ_V+inb@ z+PCXy3TywVRO)>*b8|JNWJxMbM?@U_jvwLJJ3oL7!lBF?B?Kyp2o4@+{OE1yat+sQ z5(>edBL_SW)Qd^FJ-TrhDI~R04P#T%c1kbpQK?i(dI>hROilY_N}C!|YcMuNW%D3f zX_TH|Vse5z?morwlgF9bIn7wTp1C9V0^l+b-wn~pB1aGVt5-%%A&dIi?6EQz07!u_ zIr|{8nIY#n8yrGw4jezsgWvY8tY2GYX<-qZBW}f9{^JYiy5`6Sj={KK_mSO<&5U#Q zm9xxWz2p~3?NdXI@quXF)h?Z_Hk(&hK?^2#?qF(mmWjzpW_Rr3#I1MGYB$(!Z;>WF zT;jLV-DZc?wd-uIt&((nv6F#BrhWmJQevI;ao1WyB#?om6qMMzXFs$1XVGO%DpNGx z6mxrFi|$6py9P)g@B^Bq>NLUzfWwGhCTTWEqiLO8V)NlMY@eB@xw%cbR7ELJv-=r4 zc8XwZDxb2!#4*Ao2&Dmw4$4`M&0rCy(1qk5Q{L6&&>Dr#r{8^uzR_mCtIfL`Lk5R2 z7y*dXz`~|K6v=SPCk(5~(t@i%o~Aj<=SW`5F{!MBN;5;vzT-i$fH4sGXbHwRx{DXM z^dJABz4+9Zg>c^Kx!3DCXWY6q=2w+c|Hq##Uu}J(uZ1@X&DXfr02k9F?nxvd$&ucX+uI3GhSGCsz`W5rPSe3i+DL>U0?BLDw<@yZ1N!YAPmgHeS5*c~+K}FmZ|$lC5hSoc+C*38y1=y?ZaVVku2V+;iVO?BBPK z3zyEbvbKbcjdulbg3xMQ;^;J6q$**1bAyHR7jda0s#TbnoIxpXw3+mJNT=v_J8W(& zllEdP7Lyv^)kr^#DUI^Oo&rQBi!M)9*fF`2xjl1~>lJjQ^5A8^yYHneUt98=lJP%h zS&dVz??VzGoX%n={U1ie^p-bR|HIRCURWe;$CSbn?RFFN1P31aPIjKW8>uwi%~jT4 zc?u^K6Nhg_MT(?425S4H=&p+d?eCl7Ni!VGa zBOOX11yNWciR0}~yZtB5*?;=T;zH}2VIjOxXugKW>9~{JuA~3poV&w0_wCNPvbEMY zYn@5cF0h*YIs^O>@VJbk`KMdk1FZISB9CqlOQB1WzomoV?^f!y*-E*hj7^CXLvZ*G z?)<)=V(+~Vd0QC@QcQA{kWXDUoepbfo}pf=;1b2%_ub9SCy%3}kb_4Ka{pW3%;v@> z-A2EkY~cdmt@y!8iRpRkpCAm8sYRCqoUn+*|6FM=K`0*(S05W^|A7P4ch#v^ z>)u3?#B(f8XKnlMZ%h=3 z`{G;*1vOfc&&kbZiv&G*)Gjt7&H%1pzBvMk-DCIL3v7~(YJl;4po>H$j&wY++%E=JExqZc!+ya}ZN4!c+{L5Qb~$d+_Z=xLLz#t4?y@{24RVETYF|0z1}Zbh z(B18_ZK)^}7bl0lRc5r~aKg{mi0pMqA=$To5AXTldzoLDr*Y;Sfer{|NV=3T|GSq+ zw-Szh=mhn>W2Dlclpp?_nwui+CakQiF~5A3cC$@FOuC+6l_gaMDFmr8$WRcJLyR>z z?Uy`HWhq}ULT@#L@bS>&l}SpKGGjC2jL(cy8?O;)AIt5*Ktbfn-i13WGR`>`ug;Si zpP(v3iKh-1yHbK8cow= zq;M3AO0f$XEi!phX3h`kLbpUV#cvCa(^`1L?VRsPU&m+An%COt2m!XUP3OzMmpu1d zzm%@d&qoMk6qYd7xJF}Z!y5bB&bfd6SY!RwZ>DwdMxpudQEWVE|I4?B<^T9x-0A&g z&T)HC8pF9etu;RrMA2R4YNb-G)FGa5Iq#$Oz_-4g<414Grr6v_l%W{py<}ZPpOG!ff(l$p|G9lmzQC|%sZ=7#;V!%F6X+THOXn z2-5)31s7Y-iwK8Sf%l0MUb$Bpt5P2uN6UbjJu^&>PoSf~56Whd4jy8X-c-{CNCXx^ zLIOBCTV1-Xj`uV}qm)8dDg-kV7}3kDgfd3}m(V@G%F3^Oh32bE*w`U;fDR(2b{}Nw zTi(m`(OYRPUFD_!=jU;o%SZ&9+bw49xr>Qid%bf(_O|DvO|szBT+EQ6V5yXo{yDqW zGsDo9D|n@jLTAO{OspU9%-sl7He@Nph_tw1?pfRu1)1hJWmpxL7o1297qryA#$|fI zC1p@vXnXe3Z~u$VwXgn}-n@RjRIAp7)*2y&HHle>Mfd-1wp%~{cw@c!&9(;KC^Y{) z3(jAn$lMW@Luc(<1pFNxMGxp8D2GuPI_K#2x-?rYZu+sG=I~qJPf(xe-x&EWF&{DM z51wT=iZzB(eZt=)q2`Tmc_U#M_BoG!9>=J^I}D7XUT>h1!kwE}HCq^5C>Ee16U<<1 zED9Ztuzgw~gWFs`5i2KsJ#;2A$7Tw#r3^ZpAre7QY{`NkLr>HWvq_0S$_J8M|&h-HEU0yLr)P^nd!ou1|B(POMHud&tG zq!V{Yla!J!`+?TTb2ZheI{#?0@jD;eyg&!oKj?7wi3~@~arwmvz7L+OVwVGx@xC3Mrl)PFHW zGl$9Y;uT0ovV6rXKmG>`Xa4Ln&UNG6wQ602VT7~RHCxT)xYzsLB#nRJo3Y5;C^TQk z$K91$C5e+eowXm5QoScCmuAY9N*I+&B943B&U|Vgr+(z`bMU^mBa|MBpUn?dxY>#- znm{W`vwKL4#Tb}hSmf5*Zt2fHV4c4)`xeOs9wYy-BtQDMf1Dk& zJ9z1<&(mqQ>2|w*kzX)e{z+h2Mp|YXWSj5D{Xs5l**-3Ah31ksx^n^h>iMEQ84f+Z_gF!m)iPl+f zBaK97WP>h`Gq(FCR9M22dba^1NEbRZe)kOBFJGmmt8}^@PjXkPRByeH18@6o+KZPs z{p&wRXYmR;j1W>0?K{ft-|<7#r)K);u0^6fZ*YTxQEXmVv>5)_9litT+x$}~2qWld z{&D7emD~+F4=l@nB?WsJoab=zy-;3E^4HxLB{2Bjd4b7adv1%9ll%E4o+nhOLL|c0 z#WUTD|KWdKJNNWgqd@7IFe=MxsR{_&ZnYM-w>N)FDgCpLZLO_;v#w`1VgkMnkK3b) zo|xPD5h27+1Y!7=QnkDz2!j9+skJzv89((F-tysp!>*HefmHpSpex|aMc3S-X`%OB z5=2wGSbFYDOqDek&c4dgTaPm{JypOb3eLFBWl+};D3z@Q_AlsC#K0^{is6XEVli^V z(AltCV`idR5Iz?nHvc*X|0YIb5wmTrKnx1k&}(;nc3CRHjX zvISPy!q4i^R(o$U2hs_o6CO?zAcevT%l7IvXV0C%ID_qa(xF`6NoB`=f=UgCH|}b` zyvpT&`#Bm9zlv%@tKC8=O{F%*%-wI};QM|YT^r}QU->AlYZtt{+N6Nsj=%ZOm_BxA zU$vG0i5Lz%8%PZb6aNg`@8_Xu#RB6-8qs0{T%6CLK+NZ_AC2P*l3v%ui5? z;n^55a{eMGQ#AGzBS^4UtqHgB{Fl~W_|0E9zj^M(y-Bw_p|loK2+}l-owZlfIR3cS z!OwnS{rcuN^O|;}(0m;p`^(i29y)r{PuIuB5A?d7s&h`1D|MXIxbdCb{DU9n&hPsv zYBO_y=-&voa1#^>RaL;gbI1Wem&$Zn4HlnxnD+KI>swo#y7x{>VL04LxIs73&w}B(7Lo1`^x;`9y)umBUzE-vyw!I^@N#@by810%;NU6Frg;| z)W_-^zUdGX)01>s9U6@WsY!`@F>x}%SMLi2S8nbj-fGczBJN~PO2*Vc5>i#>)NjWK=q zL)`mQKhNG%Z$U-nKI|}RwO$NyDo!+~Zukb3Lg0kt@)!OX;ts0|*QrlWa_HzGR1jnm zV}_>e`zIVtei{n@7%4b-sK-f(P_nos^#3V29I`$V+#v?|SXOjKAh^+@SLA*2V#Huu zErzzwV%X#=dukX2>^rcJ<2N70DA?H8V0CpBB^7}RaH&IfB<+h$y4Tx2{7pDY~-(`+waqdk9tUaP_7OPATX zdyYN(cB7Ok1b!3>h!`m%MOXgqnHjX!va-Xrta)h^OH+TAX_ z)DVu(u>0*F;P`j{Pt^7t=B3~J7*{_1?-9-sl`04X_50q*oj>?tRCT=nG3WY^JS0qv za4VwNxQ!#@ft5)g8fN;Hxj`t2bYaj1qE55 z`^he`VNNsOz&U5zmtI_a;$QylS6}^;-#!vV(Ow~hjFXsNx9e=0Zdq#|1%Bw^r7Nee zb=o%;v>S!y>+`tWX(l@m4;W((1VK1itJkT`9c1@gzJt=()DUhg3(B1Q=E!g0Tp~*0 z=9dinP6^?o2PO_4XXUxCU|U;kt*o)Kxz3T3$C#d*?c*6DlkK?dPIQ6xf6wnuCHv{q3(P=3N^%jENMAipVVZ`&^D2 ze7z6j>o{lWbUWBAbgtL!A$rhT>(aT}ruoVyjf-2@ z#F8Z5T1J)fWSJlvjP&I+72ZC^1AZ2b^qy*&R8C}&V9xyr;r-r_5+xL!tuEItUcqV$ z9f4Q^ce;mpxfmnb|%(mUl5?B&00wMv5P0u|ez`JB&bIMgB#NoU=ImS#%gEe$0^? z?mR{%%`k{+?n8MLj5e*8R~ONM{Q1@m&MgJR+w1A8pZbOQuYT-jn!SZ9H&?2)aX=Vr zkU}OBu_%T7WH;{poiA;!EZtbiZWNlY`(sY&o=MY(f+(DE&dJWk8gg=usiU`}3e}@X z@aJo8k#G&<5I)xLI5Jyy>ybN#VvB^yQZ^i`3Fi(meb2XY=-YmP*?S(OG%?Nm6QASh|MSDpZKE^D zta{V!-0@={Wo-9>*JRumA*3Q-BS+BEB21>`NTiS(So_P7bL0iUj6!l^c-AJ;!yOG| z)-Q6<)vF>;GxGh5P6f6|{fWY$vjky{OV$=PpZw&%HRpftS0-pTcE>x(8vpw2 z#&-}#Q6DzTA%wothT(9j;yi*FS+MiOLSK{wrLhT?&OJ}Ea*cAS%=xpg;*{j(TTT#0 z;Sl^JMhnCURQ6i0yiw^|4*kw)NR$M*Ft zny+rN^~^d~AG^fr)61;BxI*K?Ht}kV-7us*gKJwv7vgqIui2xu)`A|`t|4j1#2Yc& zm$&IIciDVtovZ)fC6*ptWd3(9VxEstS0!%AAhsouEfeVy`K(pfL2%?w_PzTo^4EN)@6ir~c;8F@Esofmy>yC!9Bpc6j`$zt_mSh+@L! zkg$-!rbv$%REiOvu^1lKk91Z87>xp-liC3JKnB0zE@`NvDx53lgmjjsnIXAD2!RtI zk~mrT?8mQu>7V}O=GN&iO=3-12qD8Tq7;=}633gZX7hzcWAlGgQTUn9EnKoUR+^VHedzl#Bof$K1PzJw0lj0a!9w=!7A%{m_QO$OOQIBJ2W8(Wbnp4>=?lI+C2Rq{xKU*e3nYNiZO;pufvHS|7i}s`P)&2b|vR#ik3#jA~gDu z+Jd?)U;I^JXm(Uf!s}=|Y@v%OLc%&bj~VeIE4nuqyC_po*PFugimuD~_scIMX%n}7 z;f40qFZ{u^tAG6QS|uvaBxw?EH@C8j)7dzVw*wXYQ5b~(`y;E@&fi$EZgez%C68(6 zt{RixS}K(fMWu3NlP)XQt}^$AcMz1To&p&qIOVWJG=~TBKV1QG8$zhE=T@d>aiuEr zUws4{cQJ9o{MC6*z2Pni!NC!Dw?M3crn_VXyn(!5rnt1OH37T5+`!uj>fS zXnlFj{%U~7^d-+jawYn+Kd*TO*?S(AB4+1iIe60{j^B2In{GKyRE}^0x^Wk0EUjjf zxEoUrDugZ|>7>|hN?-zXPvcq+x9(_PZXve8ZWx;L4LXZ0y4TulU)Unv=n-$lw71%H zwmKy3lwLcgv9SdfdU2Q37_8Kkb{(O5@D}zw^w*es=mS(wzLC<@toM2ofJr#}r@zU< zpMDaTCf+gHS@yp3dpP>-KY*0d*Mfp9cyt!4*p1ji96(-FY$1p&x7g23EmfhQ7X^e; zjC2)+>-sgHTtV{O|Cr?fIh71cn2Yhzx`6E3kq)T4aNb=1?8n!>`tLrnz4Fu-cZ6X$ z-RZViR6bwI`& z%joGjcAq$f$vTB1+yKLaaf!($re%RbDPY}wW97UM2}ONwKkEyZ*gW?l&KOp&FR|Hb zaq8|ENmaJmQY7`}rVsBytKms60^uAauwobq8oRdH9otZncOWAqfyq}j!=HRm* z?C#9&+_|%Jp8I=#&+mD1P7Wz-0?!8xS}Tmvcufx#DkKuuaItML5|!13O;Jrg!`t6SuvC{AJf*3d2atZqHK*0dq(8bL21oBaQML zQ5evymMLw$j%^?OW$b*Z)9*7e*hsM?`lo9!wgo=zf#Dv52E)=uf0tVj-SNt;zs)pN zm!{~_|1XJOmYwI>CI3&&?WB7(ag4J}Gy8P995aQX-QkpNMl*AEirK|QwqL!S zTt2(B;ge>XM31*+GHfZjE=9WsFS~m+bltyem@{3X2=NL`aHoB~6bzFYoFx@gN@8TC zdNi$*lM*@@ArLKdu6A|T`H(`y{$<4iD^{*x^QD{Fvh8xVY~RAx9ot#8W;OYNA_Id1 z#t7t$l;qaQ`DaPMs(_Lez&^!%by9n#o2)%2y#Yi={PPKH-qE4&1R!*Zh9N9`NXf2DGs%%iLTgM(VdIl zj=j}OO$yVrL~8^kREC*@PqX_E{{{Zk2?k0f1_lP$_4*t5_%D5u;y|&RR8LRer3w(! zv$>lkbXMo+L{Fgty{XLI^EIYT-uLi;?Fa&v?dzm_GhJY}pcFwhlsSn$>hn7uVu$S`+bHsUD;&=(>fI8H#ze4KVkZzuVEpugu&Pu zR=w|^u;I41B5k*|i5nfCLfJBC)uvl!oPMh5iTjrPS($G9Zo#@r4NImCDoxKBZ;4rY z?Q2xafKztxUGym41l_`fR#2I4$2<$7z#}?;R3HD+Z-wO(hobV_f*nPn+w_|vo5>+9 zNg-dLUaMX3e1EsssQ+nT^!Hv2`T+C)Wc5uoU+q@{wzbdqyw7N3{#7=gov<87RG+<% z7gwy|>Yw}+BAZ88v1PnWt_tHTPeHRhPh)Wg%gHdXYJHnhP$~b)w0(MOdvz?qs%_V@ z<7fXh$L{{`IMXK(2%dlR8NN^|@{v#c47q%+d&fvSBDbdCQuLL1rOiAwSSf^Q+rg9G zuTxbQJ_&R`vNK|7bGhdwhR4i)P_jp>ebq`Rsz%hznNWZJP1ky;A0iCPV<+f4vt z;?Jd&NeXFPp|E}}O2sh^Ldv+ulJIesV}p=bj)hKkcFVFc#vm=h;=%%z*#)%HWOGIQ zAc(W*SFP`A+PCeA43tkFq5Rx~_{|1kvxe=sth)KFth@OxjODf)=Q?)j(XDyi)>M9) z5=+aRWzPn0Qj}*4s6-0*TARL|3O!3hx~AifoCc6ccTzTGE3YOc4oIuh+jJf&8MTV2 z&z!?Meb~%C|8R8Sse1w)YCG_Q0>%)j2&EK3;4?Bh=B?bYzH#9B=fBacR{m^X0?9Qf8} z+5b2HjRXJrpK|=E`w_VUD>iLGT6ULZyQZ7>ZclRC7NeJJVr2am8VhsO&Yz@SuW@+) zL5yXwb=y`P*Xiatx{!gc3ZyL>c%^xno)X(Ep~g~8f?ln&5Xu;4`h)styGlc2i5{=fK57LM;HXx6Y$WLB)>ijV#( zxzUyJYu>HS(o!H)(x*wcs#>R{?RA!#?AIxqqx7{!S`^r-!lmeL*r&w-X0S$cI+#P#Zo4p%`ks-9}DwytlYK> zRK(1&1ML3d@3ZF*{}mUXzL)0Y35>K*)di-WxQ8f{XKeG87(3f_C5h;^V5cQ#Mc@uk z;Eu21)Qh{RO`bwW5hq_hig0bVY}<kHdF=j;V*fPUP2dghpfvT>dlvmeK7u zB8BYAue0JRC6ppAf_o**EgWt&*;UGxCJj1PN*s{3fC+W?U~#*zqEqIWrqfGIH~-UA zG3g#-3Se4C+FYFF{4@76b>A1v)ct>@&p&;ynV&o>8|AWX&`uBp!tUrMrEbV%vTGt0T9MzNeEdZwPafge zBj4u5&;AAr2Yv`)fRr{uI=H1(v2T%`m_B`;dg!z1(oJNu*`<|4x_2R#!HD!Ov5b1H>+@IaBrbAlUg6>J@$UawDE;z}(9FYMjN z3s3LCYX(HxQ1=>K@}~DQvS}MKHSc3ETsZJ7Q{VnGq|po%vW$;Ukh$U}w!PoR%iH&Pz*@ z++~d;Ao81-C}e8?Q=I(H=a_%wuUUBJo@n~uvwCszwDcNv%NCZfq$P6M9Il(e&155G z^!covdD^j@d+YV;Z`zLggS}pLVXDy|^6vx9|AA{-tIBAkr>d3mR?D_VwAM~_VV?5Q z{WQ)Tjnz=XA~SL+n{WOo+wb@#cD(){v1Z$wSy-5)Idhcq(fv%lw1=@vw^JOQKw6?( zjb>8ftM;2+P#9au__k}AKJhZ%g)^u~ap1YVG=q?>+qaU)b0f zR4IBusY~^?OqF6&9fulLwgOH^*YM;2*Zdd(pbV^p)o3IKPQdA z5+aUQrlXc@MJ~7cK$_IRr7;Mj34D*a6Ngwh@e(J#^XKN`Lths4-QQ#J*gob?9-%xl zBSYV}q!1$X1C&SC7qKn41i|e#8HN@#>2Ke$3YX z$iM%3cR(%9&V3%Eb0CD2HbO|;p^a?4_2XQ&noY1>`qh`MJ2yhTTitlP}ZpZX0R|E+&a^Xw5aj>SD+_!_05 zL4NXs@1syG(A88=J1j2Q#XGc8y0GYol~RrZV!0+xuPQ91`s(5PyUG6)$I}ZSrpK0G zSu8XBXtCxpw~LN3m`OjD=&>L$3EkHAc`>i>`(s|ISS(UotYf)(q~l^02D+?Pgwaes z_YiZ>J%9>)MoM|KQ()pPA7W_J_VxuuYgRQ%`Yx{30hE?%tKG{ZNw+i|PccDT?&OxeFI$;CYt8;MW_NWDqEu&BY0)mSt?m z(V0xPTwPpzNh!78v7Ij)*!|f21&{d){SBrMH2rn$(1=it#v8&Y_)oxUAuWWkjI=Xi zTc* zaI-W6UJ4l7w4ED2`Rg3~%im`1&~Aj$eEV}>W^rMG4}bJSjEs%ajUaT-&ZKwkbmmz4 z>t2vZ?a(UmebY)Ig~WB;gq|_4Sfz9*4ovw!qs|%cc;A>RpE>Oz4*tSbJzLraF zelxCPx6gB1a-2FPcF(}0l-+U4BGu1n9b#H4Z%GOH5{?Qn=Z;gqaEbvuhMO}q%jcLp zcb-bQMxf#R6W>Kki~R5koP3F#2nlg(!e5ouv;n{gtd;g_2Z_ z#>ar)5<(Oa5`kdglIywZb)Pcpx88~6WP3bzW7IGSXFsv-8eaQ>Kjo>v`9&HthiFcp zW#6Cw8rfor)z{okU<6Ss<2^MO(V{by()jf%jmiR}tJfkHC#lTM5QY)o{ruOMJwMIQ z{=z?G!{!ZGmc2|rhSWr-=<%FM$(rcQrx;`K8Xgy?r#W%_6h{sp9e?Q79lM%nb<_L^|UNBXP*(+85}2?Jjtq(N3JBzp%V*) zm01y$%Y@B1ZozgOnu}AEgMeZ_kJ4Z}E``A&i}PjtMvaW?U?N4+YZ8Sa(z3u9w27tP zq3_2^!1!-X8-o``QPcChX#smI%YIrb^|Fxi={~^pfu_HD*3L|B$b{jq0-uTlNhH#; zx%9Sw%9S^L#FU0F0b|;`ms!$xFiCYISi9+Fu6xIC^20BEl&~>N{p?ZpeCF41{`okg zo3BKshzs&o8 z{zJU+EpK38aIl+}>h&TsJ^hD(Aba&K zth)A&HZ^LesM1yyYp0SfL*2QbN|{}ztCz?uZ{XcJ1&$?X%uS&dF5oLqRho_OOUn{b z6kTCi)^I*wEcss33Zqa2L4b-B)i8+v?!thX^N`Kuv2BNHc@cp~;u*lg;My*ZZ4m@M z(y}6>wQnF$QB=`dAF?g`2?0+Scy6y(>s!Y3fu_G+0c3I*^EnW21!D<>$qsMg%G>`5 zTd)87#Mz5cq!7}j5Q8_|3JfM>q`OGNbxln?FYncw|IcK+o=}PTCzL&Y8jd<3<4^Z8k6VF^TeZ1vhUfwy!`0Xv8_J>6)7UWL4JG# zo3FWpZP(txmL0b;G_ryVXI|pJf99{a<4xPR^$oWo(}DA;`IY6FGSlT5uw>Ro^j117 zy)6wA=9NH&?tBHYw1Vo!qmB|F3L_qU;4%LA*M1kj;b9D9b2&oKCkO*%CWkNv$FY$> zpbY1pzMr|n&!a;R*OG|bARAx%7P9$#+b*UBIO!D1bgkv4?D*SrF{ayD!lENVZuMze z`iHm@7BLW3F5+9#OrAOW-3PyW_ZN#!{#U+#mhEcUy{4hjYS(=L%aTAAMr6RI!mZ07QVc5KV zJEg&asXgZ=4`lO&s|JTgR$>s(KlU6a4jtp~f9ykCd(-s{4i9$wgC$$q{QM#(j-B9< z2Oi-EU-|}>$qQJeVyuAE3SDpF7Dw3ewhys>(^YKQaSMY(<79G$_A^_x{z^vP`>%QS z;V)ymPjS<&H^r4%3SipS{!5fyz0RIJRfy^FH+iKhsO!Gzpq8bro74d z_wI76ALuaro-yWn;Ih#7H|K|jHtI-aY|G9{OP1VBrr7WsNXs&TAJnx{0YYGuuK1om zV@td0H=BEd(0>RxA*7raLPY!gM$q3p`asiPf46F85M%xof}ByIoY?*@{hGJ_su`ZR zyqDnbcIX$Kpkk32z8ljXQx_zWz&mgI1kJ_*Cm;VWAOu0JOkIT(&1!Ovi!h4FE0Zr4 zFR~e+sKuiVe218A7i?c5s3X*T0EN zx4(vMyKZNE<@&hU-Qx^QGA*CU4|4Ub@8fU2@NdZFa_qW(7b1yEUQ#ji@;uAZT)pV9 z9E;Xd1qpikP=AL$PMShYj;C6#^3sbhaqr#VXaB=bQ>oUdRw_7|44F&@Cu6f_^JXp_ zK1!n*5QIKPMakeHES!9a`s7KJR)j%-=VrL#&Y!|640XJ}QbA&l?1bpGhAczf$uY`U z9nnBLGJupq+jKL5b}AM?Yk^%FpSuqQTt3IvE3fEr2H;0@_Qmoy3YLP2 z>B;_m1x#Au0>B;?8M04lr$DqOxtrV71lBL0+H7A;lmB6{))3iVIsz8;h zeLV~Rto#gEu3muU+0?4F`??b-TlaC9Tr zzvI*5i7$M_7!|8|ydY=>zCUTS_8axO)u`9&VGwwhWnENJ*mNAXrnEk$lzO<3FC5(; z`W1jj=ceXwERFny9fh+~7p6WuG&ppX<+y9A)tWW=^mFWa_%VbOSgwo7=7}POl!7g< z`zfxu^&PBPx0Ru>)#M8Uf2TqqU6h1@&$&|vIey?tDs_wRef4fe$3|JPY6Wc_Z)-rZ zl?-Zndm>_)rhK|)G~M8{>@ept2WysjITFwb!-yvzd6K=)?d9l;hdKWIix?p(3=L7Q z*NAkJ;jwY9dEIT?`JTVWj_a?ZP%Luc+$8x@iF(7sQkozP39EC|W(u6&`zTUc( zM#j19?LUK48tL>{lB%O6I&0BfzKTD$CAczi`?fmjG?7YfZGjS`QZ$LFw6u{YfDU~c zl|^Qqfb!x(HjKh-|E=8zn*Mq1a!a;-w1Q!jDh)HC>g z9U+8hxfnZcp0$^~j=`1NSUk5|0A_mfEL!RB43>r_Gj5v$$V31DAOJ~3K~!dCDPP*Z z5Y9jDI*91dBX>|_SSbXI6Q%y$#qpOy;PH!5s$!=1OX^M>2V zWHU=E4*^}q^u4}2;z!koVyQB@3)Wv@ShEKqgTUwH@l!nZz@wZvaf$(=nL5B`1L@b6 zdsMD`1lSfu!35wCC@F*x(#|lndNW&Yd^6jweFGaV+eJ24!m_Pp!DP9d5z|ro;x%iW zJ#~;r@A)i8pZF$51!QtrZn*1qe)-@3bB0HTu`DaKzo(l!X@9a*a7r&I7?!8S#NSd# zik`2N$GkW_!_mV>x$oQea&+&D%+Jjsgd~%IY#0U@W5^Z?Y`^tp?s)54*>T-<42_O- zlyt;u565*GU%i^e`7%)yw<*H%9P{Un;|f93K*MWN99>Cvc)VlhFS}ildtIJeLI7qtn;F}7QX?c*&sranS1o<~suMn~w# zYf(&bFpLm41cA5Z-pLcsrVr@4kuiaQ-E*^MXC_y`nAdC1`w8G3z$oB~*!u=ySt7q; zJy+cL7IxhDX4Y-Gl6+|d%eK4r{oX5K^CM^|ui4=6fhT$FJAcO6eUG4mCYEK98z}PO zfBuhn=eypPDBRK*V3t9M-uarI9h1(4{_<$^$_!;!g{Ks?YMsX)d4g|!@ozZ!;vq0F zP#k1@bQO!0`8bx@b`Tkdt8TfOH@@>7Ty@Pg^7+t#)DJ^4+!M0t~Y*ysa z-Ctt%$b&>)*=Q9AW3&)LlnlIoS2q8=F~$ZQjJZCl)vgBScDh*$V?GXS6+&jf*nkj1 ziu|h0jIF(l+ur_BHf*|*fsvKS)MjVQ-;EaQ5aSi#4mn=8(({4=gMEaf>C8!qP*<1eveg-_@4`*)y5F`K8y2<96NHH#~yr)1JAvH zH&?;;ePnDYNfar3ze%o8q_}dNyWaC2uDS6>a)mro=cjn!p6~MPqmME-GsFCaY5Zmr z6NEG>6|%WJj^j|TR`ITBFj5F5r8NCFcOPi_>s7Mc;h{z_ zzwjMk7r@-h_lUDcA2XY-{E6i*r_I!Sg;h@nv6vmJN-e|NL0kZ>`09>F%TW%`t)}CVL2N~J4 zgX?d9FIQdnMn+d$@*~0JZ^zgeV5;SL_V2!*$G-8$%%3_)6nL>mrERhDip%(kcfXBy zzwe!lj*TrpC(~0AbtQMbBK_4917LceL@LeG7(CD8)UlHUVaUN3UgE*;{($-ESsIHK z8uc2s<4`ONV3HI^fFSe{Qm|?3Ra|r1tvq@E1AOZ*KaXFpvv^^eFbr{Q2g|Z)HfkUQ zj_WWwx&k2u*?a-ZcBocPp|!zl)KKS7ksTamcyt1Ups;2WxzSba;Ypp&cp)*$qnuQlWV6tDg{lV?M?aA-4-@Z__$#8E}xbyW)teR-cXqOC9EYQ2hG9AM*(cOl$t$L1{+v)q*j zBU+V5dVR6~ccelgp1FtG}Klpp1eCly*x4_8dcX8Xhe_Q8ED}*sx zTs-%JId$kkaq`LkCgR9vi=hoSapkQaXZ89U+E@4+uXrPKulST}+B^BcCx3_G@wHvxA$n4fUx_YDXOam4f$y;}JISE~KjeWg{NL1P z&e9Sn2_aZ<`9|LSuD9}z_q?4;)~`#<6PHmCnB^)Pv1ESbm8U9~dYl=fY1A9ksx=P1 zbePj8PxHv#_c3+q90G|S_^2oX1Q|DjZQ0n;iiHb}22m7|%jSr}kVt@(HcEMTo=3CU zppY*D2G94=+EA^=US^}?6G+EFW?Y6RR+1eYWMuUk21iH9WO4+RMJ}E>O~dn10$f{A z99x02=5mJDZH^5xlfH|H-F8Ha60_)7#k5XKt5>5_YO>alXRFGwMaP0hrv^Qh?oerx z&diSGx~M2b2ubX)EO!83?!UYHK+|8ZlC@`H&g{(O{sdz_0&LVuapvV8uyNa6*lr#` zo;mywr=I*{q@5u*emS?i>o-llv_fbVieoQ+pJ%`L(?Yj1?j#t+^ow`1cLtg9_*NKaS@$ zmR|gu9}P0S%vBV69Nzx~`=0tP2OjtmL9^BcFqZ8wzG@|Rz4_GxJ6-zF;K79sMYEmKYWaHlT++}dJm@#97b3cwQ2>w z84v_MQ5fOaHlFXHq6p8j$z^j`mQBN};byW3DF~vFoMjV55dwj2*#tpsAgQ$`2qPk` z7@Al`Y3*8uhlW|TZUfnY62h{{7V=2TLTim}+2}}-9~#D*Y z2D^GPt%OXKYV@~mYtPE0s+AVqmd+|_i3N=5R6ZgV#|%p?;0%(;_s9s*QaTp;@9aL% z^w+Dcs>$W%RHN}Lz<&i(y!g`H%)R!bOsu;`_{~L*?)hsB0^81Tj7)5$GdEeu#y5#a#1QM-Zp`UIH)yf>Fj_l>d=k90! z17F6k&9^di41lyOk;:=qi!Xo$mm4sz!33C34Xuwlz)hQ~%27#d*p`n8k>ia1UT zJW>iQ%Sv);z-S#`WhY#ZOe!JY3urc*1VPB`#aYguJ5QxjVe-^DT-)LKr*?Dl;L9ju za9tP6axh7VTcunj4165h0b}sIW=xgII3vf+#Y?G&n*S1_VKXB_vJ1iBrgP z^)0VseAODpM#q`BWF4j95gf+_OR}&ykHMgoihDXqcU?*gDJ7O=v-XPZRA*+Wmlp{= zpK7Iy5joagzB8U(F`b6K0nv&@Hgr^BR%#~3q$n}1yI;>YK5q!sZkv}_-g@n zCX>U~K4?EM|I;12{^|owfBk=7)hy1NUAe+nj8fMcqd%s?Abar1&xnzU|3r1+EVGC1 zL0TEIL+e<7`5hnx7tcP=3wQqulo43A&1JX$U*_^%?>4rRrBRs@kAL+SM04f{^$Q1> zncQ#IZoUP8Om=`ZSH6{*9Bc;*?94o`gd&$;@ByBJ-u zc6kzN8IY-#=Q;Y~6FmI2KVbIsOZc^N+e4YSIiv~$gF;%Cm31>L&d*U7$;vW;$$6i`8?8+gkePB2WX`*mcX$cjErT+v(q!2 zJbaAFL&pf~9$J9bn$qAPu9KlsEu$iZKK(UZT3x(HgVp$U9*a*uaYiCd@!m=Ec zj?hZu`5v|vQ)jMaqm5x?<0dpPbK)oi#bMTMy^1%#?}MydzoDHfDrFql<#|miwK75A zC+8*x$5zgdF*>#g8W}-54!J^+jN@Xt+4lTU%j8n(PUAl^7@g!Fv?G#JhM87U<6=&*04;7mG)pg7wvMg-JAzvyI`XP}Y zP_Na{+R&)iY1EsHu2?}B7|tI*$GIb?+frJkB8)afVT5H_NXsIOg1AD!5Je#>R5Y6n zR6+LxBwzc3-ysT`%ubzS=KMKUuHVqou%WdDF-OY- ztFnnys-;Co79Hu1x~vuJtmAyS_O*m1x~(guKx%{3DgYq~8WmK%7C3GuAnfOk^?|0p zUY##isdzN1*6uMz{d^eu#Y0d3rBRUw!UhZ@E4L%0B|^W(xdY$EXoWktmMd@lxN$S3 z_FUfF^kEiHKZ_6&J2y&ca8(y36o%JgB3}qAFEXVSMo6o*=V(B>PucmJw=lY5T^qJcyZ;g}ef~HnUVM`MkAH)+FF#A@)l;}8kkTTTFNmSRVM>F8 zLTQa3_&AP(Wjlk5mu5^%1EO`(Q!;GaeicEZ!HF04ppAk?nZ-kU zSg~pqYW)tZOtx*`Z;99!!nCRynX>;+Uc6SbKTs)=K*~r#n{Iai)uTE~*~Ce0u{i;)AlSt(#n;&&`^hZuYCdPwL3eoqPVTEw?a&ls3}NP$-Q9;5QeI z4x7SY7};$}RD+TwYnlSLV6hF0$&kwLfbBP~a) zx%_rc@BIoveTM4k7uoZ}?{L?FQnN3PtA5o+dw> zqgI}xn$J@R0!${`@gi%5lZj3h(|U2kq#OxMr*ET^q)n@J3<(gmWX!T7gk@*in}?MtVA6O$^v-uW;u)1u8r_b#ZMr1(; zWV1!O!&hR!T5-uP23K9h%&~_A(&DMRKg0F6yp!RvH7w3ead7wj?0f7ROdWfkW_d2& zsHMbqU2+41-2VO#aqZ2wP%I5{-xvRq^M_w1Qi?l2{4=cHa4C_Bkd}oI60M?mK+&?= zKo*7p<;ns<;Ine$rZ%`Kr7%X5&F0a507er z(=!)9YZj)?vp6?PX=peGn&kJ`wu4d%tu@A&M9^SpCEK;C!7zzE&J~O7y!G|e78ZE^ zkp~cq2brE*V8gnts6vS-sj8#|3q;FirllB@tsI#oebc08WR@{GO(fFo@2VbUTiYKE zgi;FKtTRx^Q&YZBDzw7Ta)`~I`>PK${q<^FFL(`qr89j{We@gw|2q-?{YG*1V2R zvtrr&klA$2Pl|=CN7lNh6sGOh|T#Uk5YcRM%S zb_ZLx@5Ht(<}Xe&Gc(Qn#c3*y8colmFgV!WU|Y=sku(E@5J*cBgg*6p4XqVM$4zqE zv5{I~G}x}o%5@vCEW0ZO0MasSL%mv|S+C*M$}BD{a&hWBqZ6xQS+ynGl|y_yolRbA z9mh+nxcRSI1Em6tjzLCB3$0Y_NoH9wUnM1W#-&-Wp`r+1okkno=Al}S2wE$QG0D$q zA}P>OytPXylLXQj2xam!VHlDt6sasO5H>1=(IWH5Ut-nhDv)+(a5J@9G+5e&*-h{~ z(w(ZM)t71YVR}tuOse7`QLMEd%dgDST%4tmhm4c4GH$jI#HOpK`|s%gL#~her{KpB zYy$5b@L6L_&1j7Zo0LX35Ie#kY&*;PYu}Hw92(R6Ir!A)WE3{Ly@y3tYL@}S!t`OD z`qsY`{=z8)aQU15Ev48kx_8uG2x-gpSKKKER$P{_@h*>k@jvq5mwuCzFFZnJ<}5-8 zY{w-xILP)p?&R$s{{?Qi{f&&RTuq$A28~)3zgEMN7CARd6a*=d=^U^~DhoqQ9bt3= z0G;N(*K86+3T+f&7!ZbG$EPPf*OA&)Gr1gtgTo9C3}Z`+xr-Ot4U87Z7!y|#QBq+j zrSN^fEjW-e29fxK#GKN^_tgr^l5vAy3Z#^5+I|&|<6_x1j);|Uam04#8Ml;UQ4|qH zDmjKknGJtt$ncR4lD(CRKS5rK&wiOr6Qp ztc@kRFH2+sC{Y3`Qqnf&Y@KVR!9*ch*C7l778mCoKk)M)`o@}lpy{t4gY^KI88F%y zEl%$FvQUv1?~l@A!1F1sLrqo*J zP-`8}1_`iThk>DCa@hh|X&7moU07v%M}$~f!6@CK%`mh_dRulgq%3Ic1eDstoGteN z(aC{J|8L1Q_=s$25XZ5RmW7kaNWfDn>PIm5sk8q2F{o;eCvxXcgUBsT?qmMqQC6(k zVF1R~T*be_;Orn-KLlXBB7HMQV3KO(rDHh7#NHJ zqEp4Schh)t*GS8TC?fPdW~L_NCcGt+;Y`}2?j3VUfwU}a+m0&<6ZeHwq!ZCVrxNN^ zAIbN$A)Cu1Y@5jUFvf8B;C^nr<4x^e4>}eeSeDg37jbVU9=#Mow$*1!t5n}92Bgfu zAW{f2ZpQ3?@~N3%^G#nHdF^}uU8p+_0PUpAB(}L%U6xjVr0KGjyjdjo)hUzC^dE{y zzHbY#vIPPw9@un*(6(hOX<3@c@4u1zK+|8Z`X$6?G3GWfZ&g9fJ+%8PVr=CVMp_P1 z+FX6}&ymXw^U`B~OmpriQDdHCkNjtjiPY{%Qe9XMZf?-z$1Y>r>po>RZhd2#T5HYw z2^9s@7AHCIjPV&D-d6#*_<#eJgj)oa;T zsZd#%5#`0j;mmXQ4XwWQ-A5adyi6w4R+MsVXnB?ivD6e(irDU7rP8mJ?sfsNWEXyS z%iA^hwF*XsWF3q0LRlG%qqG|Azk&Ne(_cRhRgK@Q?R2yM4A=%{?V0EPs&M|wx3Om9 zjR}i^{3fgD_&+G0FrHng!bJSGwq+*Z}9g%@HC=n~qNGZfj^0>KtfkJ7J z%G^byvoQ#M;T_{Gny zyy+9a^PsVYE+c8^BU2)P4=|nuv%*cix&|=lR$Wc zK@fyd7y|u?%|6id*N+i}c50`a{cYf1M$Ng^PyE$~3)}AaWpl+1KaG^DRMb{y1%Yn&ZsPJQ{$HtB6p(SU+ z`asiPKRyhaZGYZG(J1gfuR1kx;0K>xQ@(iET7TtR&DiQ4BAXvVS}ys436md~5UV!5 zrbUOvJ>9rnBN0OA$j57z&GebQ;^O&(oO2AeQ%9c$wlR+re?)$VhS0Q8!ILXNh!vGaU z$z#NTqm*ik1!53O6lYQrg%R4-Ne||mh~)qPAOJ~3K~yQOP=qZB!!V%}edcE`vS#Dv z1dL+~o%r!|(udJ)O0G?(CC4Z&i*&lTW!q#kIqKdtDhw@Y$%&`_-Os7FfAD8Ma(uyj zf5B&?NL6MnFiBTzT@uB_w5$~s&~j>)XstM2b%u+F8$wq z=#KPQh3MAvY*#la^RJYQI(Cyz0YR}u7zSW$Y&*k+GpE>b!%Zn#Ok!I$UK=1g0M-GV zn3{~DC=mykHq|B^hgz))Ahj_?og3Kkh7IEL^G%MH1G7=4lQLU*H7v~sZyRK$GHTid z9^J9f?HFg#sfq-kf+l_t5C{zz)vQ!~ZRk5V_kpIre(b=;YXra-cDmW8jnV%|h0SJd z_QY6Y;oOS3b1!7vOkOF!s)sk-Mqy|zDs0*sA?wpGi70GRpF2qudO`(NA4C>|V7+|CoKaTH3G`)pil<)IBy!6sb2ur&3(jYA$-O|#EgtT;b zcM3~Mw-O@V4GYrUy`*#q0s_x|-rwi<7u>J=in(UaoO9;nDOR=-MNxSwjhm{-?BQ*d z=p!w9qdgNml~>%-fNVKgNzQERAt2eAp|uQ5Ldjh^_lc_BuzRj_Mp4iC;wn8_jEW?W zjg?8J2%&Tu&#Z;yLZ=`{b*4=EX&HXcu!#O*3I=eIkRaE&9kVYoC! zj?U}W7k{%Xt>?>mB;`=1orxM((m0x4S-xZID=mSjw4v9B%*YOxV;RdnGz3Bk z+KYYgf6@&8!b^jXTwVEN?f(~ek9_FP6HbT8pEIKi@w?TncQWP-!aPWA3dhQ_X0!;72{6lobDNG4BX?8R4n$_5;YK_+5GNok{=G>0y0nu&At;5@MifN9fs8>n_#Z`+8O`Y5-RR!SM&#!U^FNzxb_*n%Evr1L& zjivj$`S}IMht8pmOy70cJuIXW{GSp7Cx+MWFU;e=&#aIobPPS4oOPIUsZ2cl+%Qt> zcnt9OSz7AkTixYq8EJ$mYBDovCUdez;2F5YK`&l9n=sZ?LSsVt(bY_bG|@4>*h509 zgi-LYqRm9(KCu-dA=cxV_bx3K9+n&X)9F5@{Rs#9#1B80q*R-F%PH~zPe zIs4uL7Vd6TIct32_kN^nYjw<0FWea=N%-5FGR@0bWxjX-5Z%i90rUkwROn4KV;D^q zmlu1?-lXf~T8-TnRgqaQ-;>dlpm@FL=I-QFexj}K1SCbGd`4YF<(W0i13& zV)b8;0ZIi5OMdmx*i}K;{>&)ixco!Ng2)Y?ccXRsTxVHkt?%Bz*W+Y|rDexqMe?aa zN1t?H{Q3Iqd3Bz<^O_`(Au&BY;P%FjkS5^Xytz{!vMdto`tnZc_{|>_C}m}d3o86J zZi}|eQj5jCwT5!a-LDSqB|d)3SGozk3{{MBWl5X!>YRuLU0i;9e>)Fhxkl7;xd*Jo zvJaRg8S`J!G{UBE!nUtQ?iM=w-=+{SR?C*Kb6E1BONDLiF++>yUEhY(?rnE$XPyftxR|7ev*8GAyP5V-)CbmYGY~k9rl^0GsyBpBwS|eG4YYjcWK& z&?z$&K#gIS!Vn60Tn8wDrG#p2CLtL7zwiz1NTPJf)+fgJqvB~|+zsdBVPw@+-`P0G z_+Dxod}5D^&^KnYLI18Mx+8@%-##;4eY4iNT)y3V&{D>P@WZ;Q%yF+Gfe1 z#oiBC;_*^OGwbpmAAG)+Aus)j)aKi3xe_TD+$#P=2*Z1Jr;`5bZ(Y3jA>pXG}J zc$=6QD3CSwoFz8m0Fr(IaFYr7J-6@lM=yY2;prE5Q3fs8D9o1-U(3$%eI$eXqu>ap zwyIsc%d={+COR!TrYQE7&9n`-i&4H!MOC$?p|+;ZZ!Z@PXaTSg)X~$;_p`jbe(y`8 zmB#s3iY~p$gx@OoxEy#>R0-XoAf#UgucKT_oTdi6@|Ot*J& z6)d=Pukx*DIQZS0EW<6UXvPz-%}L`ZrQZX>Oq-*7Bm9!^l}&!Q-53#V)4KKPnZ*|w z+wj93Q0xG;j*i(Yky?HSi*0<4w)j_#H~+F`Erm+mO7jTLv5N5DDHlLhDs@$$CG_JV zDau2<06$CK?=iK1MIGC3meoJ_{z)ZIB)lED^NSGP0bk(^Jl_(Y4{to(I$a3`;P3uh zL=~EU^7=e=RBx$5aNQ_y;Y3pSig&fPygc+sXwN%$_XMjP<7?xxj|w)OkMj2f*bDZU z)%S8neWUF|c18h%#IAtJAwxPCn5VYPJlW%COxFoB&41&P1L>!?cLKU!5 z#b5PDwM;Un4260|RUil+oZ|o?Hm6=2vsYxTa!R>#P*y_390SHRBWZvlJ-d`iRR(ud z_xwx|U_i5YVokx)>Z*Jh($5@6N5`Z=A50Fg=NAt?1XTWF_8!UG^U^ZZaQ(3m#DJBt zuNRYyt@)>Z{=@D2z(5yB?ug~Hw9e&3b?Mbd?%HE(-n>HykO+fx>l)MHU(qu`-re2H zo;C6StlA;U>VkqCxvBx@kLl}J@sh+5^hUpHp*$jQxYDi+SQ}nDNN93S*3Zow#eiNd zia5u3`gZUDWzKof8-k5T239MU9t$=AG%UPUaZ5C@b7_DBf(T?7p+g>3;pL4c^H(Q? zTFCW!#;)wjoT(LFepOi%v|>+cakykoo3vTxuc1Z%aa@X3PLoXd^_%y&`gZLegzu)` zkQasWR*xj1m@HY2es!T71lSbe7QfToA`Ekmt6C$;hcP6W@hI0Aj?xVe&orO}U3ClV ztb9nKl6Y;I<;fCsA@3@h-8>@&mX9(^X_`5?ZhmK5MEs)dcK`nSz(sm_`Mr(7yTFu? z0PmLfI~E4Nc{YV>mK1or(YPP0y5jZ&4<+D7U3XpP-d(?l%7WzN?TYF>EpMKzeyG$+7Q5J}a-zV!#D{Hzsv0E~Y_vZX z2lHHqOhbS*i(Rp`qeM(KFE4oE8l=NU_Zd?Z_8d>&&%TI~B4QE= zABM^PQk%WZ=OzJ!T1v@h@@av&uda<`1IPTYrI79rl)m(#XxOZ&7STi*bCDD!BHgAi z2p$76HmHl-AUY%NO0Ohb8wDDkU?%kq_`OgtU6Qm(z|X{Tj^78?&whAOO054L7KU&I zs=pWvqCViq@mY^+q=^VyL={G9z=dG}fbO$^s=PCafIAHA%_eTFi!!~srO4{B{Xl0P zS_yHmBOcl~LKu$-lhVwcd}QK@Z-@Jd;D`Tl;J`tRRZ>FZ&&Np;MZp`88&7tN6n}dzzG6pVsNRbN6Q1|1Gpfk8OQ!qpf-Y zBlVCVkwg&)4w{u*aEtVi+;Q0dsUqOU0VgX}8(_@0tC{RSwNV5~r@?QSKaSR9Pw=j; z3VI8fM%A)uSdD`~)BGfI3~vmpF-myh&WFP!!tM8zF>|OoI>g^U!MODh)wiwz1;eg@ z=N)BGV4=R{%a*qGi!(QcA}j^Og(QrrEDWj1mDUMTb=>@$7l_fsKTshi8+b-7pV*Fe zu`Uuv>m?dejH~lv69o&>4YmTb>TMJFzWLaA1Nd)Md{|5PF?e#+%K1+i3)%eldnx!3 z%-=gUG7qi4C2D!3?~m3NQHu-5n1B9kkGT1aY|z!-;c@l9t@8HDYy*Y>`f=E>OY8vB zCRd>}`I^5Kl*ZK13}p;&0jax+$ppF;Ov15a!bywN)CwD^y3{sj)i>k}@zp62A5`(( z5&}+wdItoqcw{}z(FTQn1oI{E#3WVgrg_+FtjMv>njG?RJ%XkIbauyfaVKMIR12D< zBE!gSB?F%vXP**hH~(9<`xj16^6_l{(J%F7{&3(Q@uHK&F@nT(KG8Q%xHiegYRUC1 z(aI>qxSG7E!HRYu1C)nq#Cg*XDWU{Bm~Lay{C)gPA?i_&f!udHLb~z zv5B7ZiztVR(-;~M2h}y|DSIc9R*jh%|B470(a`6I6c&$9OBn0Y)nfV%NW&FfIGS&(&_8_v*9AK z;7{V9)Iamu%BOMLSI>`!TT?3DX%iK-!>P&i31*zbFQn;t-$IE~8FDvdoxJc3abVuT z&;*L078t#agr>d1jINR6iFN(7YzoqTUnjd1R3iDsV!j~bF7~rB+fJulB zLsh1{0b5Z&K7rQOO+G-E!09bpS&flR^Ru4Hxfi8&Y_AkM>b}H3Ce933?zu)40*c_Q zC}G>DCt0-HtG6z=@?&_EgqFpnNk^F1L6kp{L3i4xExMeZNWUi~%;X}zCN>bUY)2^> zv3p(j^0oICZd^@QSH{@-j|LxgP#B>i)5Lf}8H4mMh+1;~%n3&5QxGnlK9}lS0VY|= z-&6nx+k7T8WV(-BfhzvPZ}cO^W-##?B~kryrqW0(%dP6vHHF2~zE?%rD%BDPse&Pc z5#7n4kQ0(J&^f?6w_vp^bige{tvYgew>9Sddg&#Csu$h{A%?T8cBxtQn^> zp^krHWZf~m^-xp2l$sIfMsZp_gq*lJvwWn$sfR&pQ#(}G zXfUJzbmf?fCY+zf7F*H(xH?HWNdc-})QZXET5L*zU!WE*)H`BhJK4k0My*$FGDTe^nqY)P2JJ#*)Ar&ZjL z%%Q3p*>{w@33!O`d3ADjw$V|fcSo!YrC#sAN7ABnmLM3`)|_1tQq>~O-XQ)?OAiXf zm_33(Lq}h=EMsDS@u!=Oc~HwdqX6yTDf?%Itq<6r2a9tEzv6F8_uVZr1&8o`GQbSV zhv9JGwO4;Vk}Pgua6rwi>2c1rb{o4IeKh4jHJ{xd1sOi%GUX7ocDyNs${UbzRl;Yw zLm{#TWbnuC->K`{A)A9X^*x{Y+RAx=J>EeOASj$y*t|UkDdVE(v%ML-6unr%YC;dn ze7u@Y6@HW`)}r~KtJEFpDSb4xb6|}o$(>O6%*h?Ahtz`0J=oX=msT}Cm6W8id4b;b zd+d6y)I;8rr1_@Rc)4@N> z^O2zTsig!|Z-EWq;rXT{t`i5?5Jd#(nggLUkecSDzC0Br4RIwtfs{__Jdvc3yvI2& zKmbH+&R{-}CjCxuVgMD4oDm4j*&0GcRnR2U(7~|C`If4R=ibIP!!&&F-;j7xNF>(r zp50oxfJ3`_=5YJ(0gw^rwb&+A-Q!Z;V!+OwACvg`&ebysAeZv-RJN175}MhY32vK87TsYj$t^!h@Pk8JAKw%P5MIrp z=BQ!KJg&@d%dXU9T)Zxbx3;KKXelxC%0Qc{?M_IF96t@l}Y@i3P-~dev_hkNssX0 z_@QgYMoYY?=X#jmldIQ1|BZM^Ox1`aa_qC^R|n?Osl~BHaZr9iG?C70|LDVJ{l4kE z{BoSt&VUyNjj~NEXoL)5&d2V2%c4Xi6J`tvbC_Nhoh}SwSjuE3)S1C6HEFJIdCd7^ zNcOqEPGvOgPk9rRFamkav_7$`czxSYUq08m>PIhuloQX$6d`@jj}gc@fW$hv=C4E| zK&UWc`tU_&2;!!x#^b^e7)qs{7Q*_Oz(XzPJHE(?@aSo4RcTQv=!R^t5{fHcxFk%P(o=(x^|Cf-zS~OT!sy`o;aiwwx5#jL zNG;;EJn-^!FvrNx(X>hB3uY`S+g=T+;T3-FYc(8c<;As7p3#DHP3kIU5UX{~H zRZJ$Wm?MsCa#-fgph$n*llb=lP82*bmSX_Qd|DzlNRzUQhsOPD9^pK!o12zba-AvA z|5V%`H~2{>ljtkVL<+!!QJ<8bEu;H_jY`HJ5zf7t{(S!tBbH&PRu(*f+>9XpCY_sy zl5a_+A2g&jUSP0k(kGaoLqha9iNctBxAw9YhXG9+SYI7!1+F1net$`0vAFC^aN zK-Wg;6_)R&K$_<3peUQY5eb74J0}NehL{HKD7Z)iVR8u&oG-<^!i10#S+H!tN0I?n zSkghf(A3Lo9x|PK_}s!qy2Vlv;LXO9{Qn&wH>T8gh7~%FJe!l73#AMlqNh5R7qTn4?07o+SHxiXh;FHBey1L#zYzOiacw- zGinKGS{;aC_T3#WHF(ex9La-5k% z-tuzv61>nJppH%f8yiTOhtknhj1pNymzURm!0EGX;D7z{OF=nXzq8rcD-kf_+b~XV z!lLa`}F0X{brV zw5^s_n%?^s@$qAvZayCrS>MXzTS;0RpA^ZO^MFH~6N-w^_|mi^*2o4~`E>z6WRZ|I zg5lGFQhFs)st|dA7YW9bUlesEXmaR`<~b>Z;wYN^>$V1mYA0wZg6N1m9}W@(@fUe9 zU&tMtnl*(cUw&;fEi0Qc@!#LhwLY;z_KBGue2wNT8Vr5K_<&Rp&?Txgcu#uVQ za5y`OVVR<|<_u5PvSS-?@ru6gJw0^wTETh~b~0m?bn|e4KM0`HAGPv2MLcttreMds z+8Dk(9xNt(26b1QIJ*CL5mj}%e7zJpe4GDZUHy`kvLTM3D+c95GF~1t)Ue&wuY?z( zx9B4gH>5QK66U%yOMp^Ce)>?7IlZ$ubZ4DSD1vF}|InQ@488!pCkb=LLy6&u?x~L; z5Dww#zL^*NHoZuVSHq+{B&Gl!JcySUex98H#|uh<3KIr0kwRjp6bd?|5SW>r9igbG zFEkbvaQ^V}q0DQG&(UzVJ%BZNa`SlQ_}c()Z3(ab9Rto1R-M2wwqUB3dr+23D+FJf zKO^4QW7d3FcsrpcI6ArC&DI%*Rk_kqyWcqqsuc7ScYfoN)LwowbUfevBx!90bDz|L z$^M!@($IEjfbJW=dE1;>gplzao0@U^#BpL}GYqtO?N11ybuv6NT4 zE7@DY&`D)Zjgt`pEYvay5s-8m;E%OQ8%7Em1g$A zTi1}Uw0m`3mOP``!m?wix$ErCEoMdNN5RmmDCH0mRJu3;GFGYa<-Z@AeeMV3 zt0rYlgDNoe-^hT`^>^5*X^zd`b%#qN+B-cj_{H~v^FPtg(FKOGzYst(% zr~JkaCMA~pvf>cCID~3Oc0=F>>;?v>-ptBp8~T1>%=gFRvsx8~K-ZF!#zS`2Kz)@zBi5b*_K(=QSqd}rU6h|N zsS46At1p6{$EvDwV$0NW_gFmCO?kjuhcEvTiT(YXqEAc1kWZR|z*d~aI7*NbWq8Lg zTN3T5XGyOh+!cRfN{(0WVIn_sw}=7grZW1v$&>EQprLC~l*OAc^qX`1*D@srh&%Us z4@K38qJ-{~ea0c&8V*Vc;cX>D$$yu#iT(1qasf|ZO}wg2c7aT!=|?AyL8?BNo<=^z z6kR^vE`%a8^WlY{+OoyzJLyW17fH6*E?)SEt)az99^@E`o{Snav)PV8K`cd_IKif$ z-dps5{Dq?{5*GC{CZ&6lv-MS`6Gz|wqGXxz1VIyGYX0UU#Wkh`jobxmm4JX@28cY@ zhlMuaL0kWALe2AX1;ns`7)NUQig#E|fxbk9Uk^*DX8={1RCu*3mVUzDEl4Dk6Z*Gr z^{-zGyYI=RRdJZ^IWPKfM0tzm3wy@TaAz}lmvJq4X%*2?$lGI-Gr)v9By3v1gm?Ja zH;&I9m2U7Mftgrf-Eho%dhn z{N8*HMErNdCFbr=PqZJQYER4aH{&1A+MR^q*%2oxD3*Vk+*HAXC$!3_) z1EmJNBd+BD;P-3B@xq^VTy$%5f^o&cQm;8Xm@<2wYA){&dS_%KVI|#@qj+*yYR7` zj9F0%etD;FQVKTa+=$nd_WPa=?Q)dQ^M0G%ucmJtJEE7KXsiJhyEvbJ#`7R;aj9XN zqT8>|avq)|pqo^0Na&Kd^Ap#RWgiBA(!NNca6~e(oPp1#d&06Z8)3OkQ)H}qCkZ8` zQu22HuNi;%fx5)ZhBYGf|Mqz4{s)QGuQpLcBpYi$KrUxMee(7;o6*#vTgaVDLjB4> zDxn|Y>pr?LkUsTGDRQR!$2ZgUk#1L{`Wg2!({ci6LB^^DG2v%GHYQMi%~;x$pn&!Y zLB3i&BLTHvie!6M9TtU_r%V8Ms62B*)^N)=3-Y_qXVVooO6JvtM;)>3bWAaY=lNEb zE>T@9DVvA);FFhxJQ3N3cJBl4n2<~yo;Zy()Ox4vVMqJHB`#CK_?Tu7w=jm67$#`92zoZN_kW{dbb_7Y2v4^&y}K7LX5`2e)I zJ*{pigY+d1!*JKGD_=ELXlkvc#29!&Q~_5LCClBLV{C6aFSJgi= z)SMqvtIc@xOa!x}uYini|C!^qm3_CF??-d~q^*>ym2X&B_gb=S24g=M-wX{|1S)d} z2;BY(1(<>)`%p8JG_(qZD7QMT*5j8xhm^C`@UFj2DZWa1xhOi5i*1h_Wv1fjfO`f` zh#nrfJaaFu9`5%Qdt0+aw%t&Nty34NXl?rHHVm5i;Jc<>Bo2V+ivblhCrjXhkPO&zWNhmIM{ z^!Y}0wdI}-HVsGPqz;y+S=nX9)t8r$G3gzLX?1F+r1@~_@$EEy4ChEIMc|^k`G})w z5v;;cu~A8OspW?*QxA=SHELLtWnAz3amBiA8<2McmvOd@14_TKq3=Brvkb4g zjBRiPsJh>w#T!lXiNg6JJGC0XDf*b{AvXxNvLT^v*@Bb8p|$ywP+*irGer)LecZ<6 z(7H1of0cmo<0ZLfRa$9X5^=jIs`~3(P4SU(~+nT-&m3kw4cA6dgJmhNOVKnLXj z(Ezk;UgXr-C#Sfnc`i0ojx<-dHh*OK(#!0sH4Ks`3W1>S2Rp0$T$0R3CzSZZ|2p)` zTAjOops-H_^bf;H+5eHa7#4itqGC$Zd7b~RMW0iCO-+R&KaPs;1ypAJAJ!|}v+{hL zxV;0H8)ZCx^dEuzp>I8}kG({lgNQbQs>uC) z9Vpck+sQVt$}W$;FRt$SXfS|MsQTl;n%+mu5>jbp2t|;6_Mb%dlFKwv_^zQ(Orx(_ zHlK+*UaMHhJ7P_6aPVf$ZTrhCs|mEQ0;r23D{r2vm`Z#dV9jBIgtr)0DpN$7<;ya; zw2B12`dwPWKo(^yhmQkR_lST8R-6A4+=ipWF`7c`fPdS&3Qt91Bi!wG!|eUm>imU_ zD0HNR0h^&-JHI^tqRsIYgmuqJc+tu=_S!ateM2w5pim^stX8QwUT|=eksQIB>7z&% zmebKemdX9ruD+^eX6U&MWV@UY(@NCep~=EnV4b=Vj^^f$INwv%#8*v>j;H?f-Q)2) zlhnbP`-e}bH_QSI@s%hwN0#*sKc);3>>vMfl)q}~22PFx`46kyjk6cdq`)pt@>RJJ zK6W%;RUvZN;}mR~bc$y0eXel|A-!Jh$VSr7j0s5idtXOU8*)>yPfXnuEfKnD)Ri7> zQ<@N7DYluquC$-ygVO*1`@df$Hd+|}TQDk9dx{itTo-%pEqkK`1j_gEdU)JSo)J3V zpl4w_zvd!)UmRqWHsnP~GK)SJn(oxNE!kUZ> z(otbGr^}wm$wR{VTh^za3-L7A!7I2eyKhjA=eo?J1>}+m*lpRtRc@|@mgJ|!HCHws z^u;$Sc79p9lsZiF^#ZLuf>$&d?krANEew<#W!kIWe_klkjhg=i*7Ko4ZzpmVAHO8y z#8DQ8yu*=(5|)>jgO+OyzPf?X=^DqgvG%FwY_W&Iy-<1L!KjqQ>R4z=lo`W1|FN)4 z4w)9f5YbzdUNA#yVGzV8&&GDcPaK?>0x2^7e^iAr{t;JDQv98*gEKwK8X?}J% zf}5=W(toJ%$5+tN4PcS6R;`L~IDTI*t%D7%(oACxu6r`J$cr{_%XFp!BKMl7%XKg# zh7H3_K0oxsQH+LN05!Ix;j_TPMJAW53`ar|&4w%!Tfb&VfM-x-UI2M7W6xI4n@jpD z(PDaTzb3|$Tx+rQa&B42A-D;bp1jD2r8MOlLDiB){8X-UD4C_79ILR^x>C@r?X=-Ts86=% zV+FTC9zQ;uqS2!XbS=NRnoQR|Xh37L`I-g}1u|{IB#~?Jg)_fFTK7{1XKC~Kfd#CD zmm)`aiOZr7r|#m>vy2XC2_ZNYh}zZrK{h zBcJBj{+IsSJ5X(}SwmP9R+ON+SD8h=?vDD}vL~-^XHpv%j}vP$AScF1E?Z6hTAGQuh-CeeFk`ZKIyC z0h)i20SXH_qo^g$WUp&3L<96kOTDgk(?8$JNqWWo(n1lF*ZI`|MV*7Nz3Yv8$&R(D zOrOyntr-ZE240HESUD1AV@)a}2?G2lCcSWRkqt76{URudna&vOU- zzR?1!Zq{{t!yZ7!rc_FL+AC2E(X?E;?^$wT#usx z0rT~=aDxpl-O))U5oE^xBQ0O7-^rCkat(u@!mL_26z!m zXT=@+)LTBUoM?po6n&w?H?!Jv+_kXY$i}{JfKagQ=hAR1%5n}WfWfn>J7W+P)!qP_ zyw|vbi@~Lp0f8qO@vc`-7}*RssL!6#!2WIERj80gG!9}5jKtkL+0`M3f8GjH?n7g! z)ytfJmr7x>% z8wJ8_F|sz`FWjdixx_Dro<~uix^eS-xn9KLAsd#OuzaC|qH=V#_bnk0>o=blxK98QEonuP__ts*26PaUTHd0xmJ9V-OX!?S^ph^3 z6v!KG*l^qoJ$c-8(Q1&NOvruzlg#LGY6}_x|NF0|3UXnUc24h4<1PjHed6Ob52m`s z6EG;}e-9jc+E!4XTp5pc3AI*>^{Gtwt;-y zN{D_;Z8@?FUsPpZfuaQ=vmPk~5Xu~HbRK%Da1k%ZZ3_zuHB}*8_dXH=r5yR?eQrok z*E_H|F<@GzUn~++|;t&?>WSQ|Nfj&W-gJn>--2=Zvja-vdMk(mVQv-tr zmMWQ+4woK?FM}api}x?|f3R88Nde9wvQ~DuN@aD-PHx@X`i5$;hvb*v$akfI8!f_2 z{^9|)lO1HmkY(ePh{sm`8?G3%iPRRJ1lhSA4E8hud{kLPDMn=e|K~ z#r2+(XjG;9r}MJeSBGKJ21?NHnlRMVBzL{Uk7h$}v0 z$YZy51fTtc2z+9iU-bCV%OhVcbe<{o(?pK7uLbMnC1Wr&hKD-Qvj`eMuG4yA`(KXV zy57-oJJ~Xl_>WL2S?ns6+!!+ODM4*I7*pdN6B61Vm$>2*JD(Mm6sZ_gUZy#X7<+LJ zn56u8KU$Wgnm|`9ne3MDg??;|ifzXIY9~9GF9O07$EOVaq+`Y_(u+*!lvnWM1O&!_} z_8a=*=I!XL0`_MCJz3Qs!$GK0AbKFf!6%^LB8o-C{IUFJX}0PXUQ`uZ1?$mO2WPwn zVcBjGWGgAG8$J*VOabc{xVleh7NvN6b^u+>I!I$9 z`>O+o3bZoG#lSwGQnvg)trcysE9!dxgSf&+!n&@m2Vw(nXMgd%3_$#z z`+GW;rC*u0i3I+g&}qY(uTO6`pPD4F;VoUY4z#P41v44c$L9CTI+A^Ee9AKJaFfRx zES&Lg4I|ZUgx^Vr@6Zi*f=&#}%TaOrd<(N4KUENj)*%>Q{(eijmQaq7Ex=IuM)s(N z0;8#tZy6N$dQ(H$yS2ua(b4BU!zWdsGB$5az;^G@@2F4D$5fxf{95|s$-976jK!po zZ1bajE=5PXu{i_a;mbbF><@S$O3$A(V*R7&(SS+JtgvM8$q8M(1R)*UTNZ_ku`*$? z*ZmheVDH9WGr>O*dAA8u$;F{iwckIck|}!`;p6`48rZ=)jmQk(c*D;%R5}pWzjgbj zrC~aKsUa%gA^Qas*f^IAB_1E3WVl)PLp4x=9TO5p#rDSztyAMs|FjYwkDCEh=WfkW z7e=KJsM-`&T)UdQOdsPIRNca1dAPYFhAOXxBh|gh^5Mk?7M~wW)0GDKMAdvYzjdP) zt}0FE3`^rc#B#abGb%##Mn|NSyl6tz9|oox7VxVwT;H`P$}CBJ^~k3(mzf*dRq>-^F+?*TnX>A}XX;>5ZW z?MNAvM|*PeR5svpccW+g&*dE6u<&J{A`AqH3%USwXtOvU9$JBzE{xK~;&}P$nqVJF z1emcNymn{u`jN_oVpzs_ss0!6=Xxu7C8;r(3(UCbJ+ooZ5YC#gWYdfQnm|b6kB3E%l00`*V&K{M;mUbdpTT>)S9)dj>KrddqBknXLrvy`W5xTG{ui z1)ps2-q@$7yS+B4FU@69!hs79*YYsP(DCNc`btKe0H!9n@Ua-2;71?QF)q})5>?d2 z7eK7wCnzOM@5s!(|KK6+47J7<%yj$zcaV?maZJzE^)O+2s!ua_)*znGK=Q;D9IMigGVIGJ8e7>3&o!Q^U6VQ^4+Bni^{jcX4 zHEyE8-Ta+U3^TvOHd`|$peb?pQwY^WAb~SD*tO{Hz#&JL=M744^H_t>waItVa^*rO zyCT!rx)htNGY(t0GbtIdW>aka${*j<((o>LD+|SS$M|?DpEa}DJZz^a8Flr?FDl!@ zPKlS;o06DEIdMYQZYlw>uS?uzoxc3a#>ySqB)bcO=h#(;vc=c3^?(OYzw>4615AVG zPOJ$-Fum|5osdd?Dqzr~oks7{8t@uZCeBkG5=D>u4KMB$qYYM$F`+Y<4v(Se`!8ME ze!Ib7pJQlh?;gC-9rxRYUkM|!BH3IufECJuBM#gjGS)@%S=96HPRHSYCpvuXn*Mw7 z_CyQTXDIR{9yigtCgVlbH(H!SJyU3vwn=d)iHXBOi=9r`>VZ2&2lxuc+?rM`v-}%8 zG5Cv&tkcDz>d$+F`C+nO_K^qc3cw%J9l7!bGl+QqnaS>f+yYR{@rty9^_!rI>oA32 zlP4&wKy$ZEGp9kH4j(t28T7+o657x>>F6PNn(t@gmUY`q{v4{Nc#r92+ZHIz zpBzAFn=6HuF=nNYv}sa$JVCNE->P5*X<1U7c#w`=;{5YnvK^aMoJH^|e^1Pbn6{&z zwJgQ2k8p5%t#$ZyKHqlod--&iCtOjxkVAzq96tPUYjd9St>aqQ4Z<%L{|Pu}RvIVC2VT zg$li}4{4zJBADr5V+)RmAozf0?a0%;=YNa%`yVVF3~2U!5L{YZ?+i@l4%j*Ai~o3c zyra>S2X96KZN|!s$mY+Fm|%X)cz$VnQ!U@ojc`Mgt0|KO{sMXy%b9X(-Rt!^ZxXv~Ia|-uVjlUfQq4pc%bsILu&wJgqsE77)9LVWN$%)I@ zSQcPyLpB9lDc1d9u8086l53ci&JUif)t=A1J!S%t)5Obce^X-_Gz7ZgN^uaNMjFQH zYO9Uk!U9^P>FTw|b+MiOn>AL)JeOG)JsU4+ALcD)DnZF2e>SRun zmC2$@rFbMQ`6ZmGPI#V5{tT$@xOtT}!qf}t|9*8#pr5-+$-CF%dY8i=kC1X*m_~n`PR-MG7n}k{i?QsW zNxvg^M6#ri-O4EQejBX1UFz4W7qgLFgrV{AO&o!#;$o8gAw04yCuY9Bgh-N9n8s+? z;NNSB2X|zShSZdW_O%^2d@h)zJNV03FBr+iuc6ypn?6cM;c{9%i^6cay1d$(FCm*& z1wu!`G%|WKI;t6q44*GG5#;A;3e${$_7ZBkplLW#!kJi)9>IFmd~#eQm@2m zp`|%kkqq#{5vmdd?v4T$c)o;UK}Jmu^l|ic6)nC&5Ij#Vv45NDmCPwACuMb2)p{oh zdq(-|^HfQP7gLerV%M92f@>QRk+nD#wX)r4ZodB4_x^Z-g1qU(jt`rWNjLXTwhi99 z)szJ$QXn%PYATchOjz3A-ZOtxA!C2+JKNwS45U=@wW4H-s$wsM-LwtgzUq=9BuENK z0>nfOLy4^Iw6aK}s)1SvFK%EF7B)C%K0M2skIl}|#N0$1f#{(XF7_-tqb%aSKb)ON zY}1a%R@i*IMThIU2tiO&nOV1#aNV;4Ag?IctSdbzgwH|2AAP_!S})g^V3L_Y6iCmZ zh!fUOO+~kimP17-s510ADLx9dHN)KCEpL|kTP#wHD2>R`nZ1UEjQ6iO<`857AC`*N@t&HxxAipN5}1JY<{-Op#j6@jrGMXB!wrq&fy> zU-XjJ>?fzN388l1a}w~&e(!JUJH%-o%%R8j89`%uJ^w$N&VsG2uItuFfZ)Nk6n7{N z#hnt|-Jv*zLUDJe(BSS4#oe{IyHlXJyPZ7mxxSx}oxSIrYpi>WNuG$S98GcN;zOQ! z9XuL|4M7^dLQ@6fS_D909Lh;SbNDq5&S zfo$ZifSZcBPVEoVbFYo*4>7As*8kN>)WzA3OBtDTy?3#$O}`4Lg>DQre1?7wDIZH( zppEb>tABU%y5nDrOv5YKY)w5bgm8yXitg0J%xu(6NS8_QJt8h&pOswBM3ti<7|0J5 z76S@>;8kO4FroJ-U;avk)Z!YC!Tf}vfFb@>%D7DCk0>5l0W$2p)P|!emw74%dNuyt zA5R**>K;8cG`SyER8kgyFR_MegHQsy%bp{&UaC(Sh*<#uX~{o!S+V(CIHq4P{duV9 zc|+?mm1%;NUcC=FvjdahOh9Qq*vLK7bXeN)Uo+uQFb&^DyuK0JE&s?2^YP-J6>{^u zp5r8zfdA(J0w5&7@P&gYzy+0GX!KN7V+)2gO_#B0q*Q74mST6ysHL965^BrrWD>Qn zeyUP4rVYpzd{KrGi|&`lmT=2&+kDyhFj;>;5hs-4oUXZCV~3TqVd5ly-`3Z1Ue&Pp zL@SfGm2`BPR$jrV-j*CMiCAp{p;T0}0u`)RMVQ@X*QECIqoNL9qhvVs%c7Pgl$6c% z<18UVW}bXJ@Uwgjo1{}UIMj}ujIZl$rTjm^EI8#h>nrS(4x-#a z$7z(RH0~(jt?khMv9pcOq&XAxBoF6rEXcl}wEmV+Gw+mZVW^EFSvgltUOvNZGsoZGlqOl$e76+~qRQ!0YHl$3 z!nV*74Q?Tc8JA$&9me_$auoQ#I-z|%6x9Cp>j6LsqmtvVA&B%!KCqeWgTXx(Behp{ z^(#6#CVQI?pU*N%RoaB%F9?5K>%rUD;^$2NX5N*Tp!&oi@`s+rr^l74UaRX0ZRD_D zIjtN8FRFW=M>IdFP-anH$lhnhftvTEg_E*c7SyHV8A3(dEBp<5r+5s$$~ztqGb| zvm`K>zbz!QxsrceGTk0h6-D_bmel`FMR1Y{2p_2sO|q005aW81lgp``<4GkWo=HI* zc2K;JcBaSO3^#{(H=H3>CF9|6U>Cith{@|;(YD9z4ZpLf0Bk@7<2kAfbI|zqhuuDj6N9d! zADpVN6IoVU_I5jyIoGZq1i=RPg;k`iAYq_lqGfPWUVDms7 zJ)fH=Db8L-f&I+^fl3k$1`-k>DVZ+6dtdw9YXTR;5qcvT1)#DZgd9kGEbMGHWB9RY z{T{}%<1@6QL+kY^Z`JnS(pl(0-|6<+;MQ=UE3>)rzsHGCg(~Jv3=mOQEN(Jrb4lHU z0>-tXNlHC%u_fz+zv&$>Uq6bjob~{Z(K?M&)Njk8oo3CGk~OD}$H$v-Y|&57&$h0+ z?)8SH!?uDcK@>Z#krQizou2l9^`k)U3$*nqv*sleBnN>NW|)#PNhaCuR2VAUpgvf9 zo>(H%K~t{r#cgaRA7+0X8&8gUja@y2j&xCVvz<~WhHGahT(6^gXGsU)V$06>l}8;N z<8^L!dyVIb%`pW--=}zNqt`35EvXP{S?Ftqi!LTG3KK^hvnfbmmQ*?vbIg5ITwTmi znOlY;X$`T6sAcZvlPI@fOWPQ+36do5&`wm1WaB8Wg?hQ9*lYg~?)K#R_}L_pZ5Y3f zTg3tcK(Lp#{j6WB%bnyM!WSGvb3eBgV#lR;>im&H? zyD`!`k`sKq__%u!!(>cO7#m8cB=fJjVk;&SYw(Z}!qPgPF}gn@1GcERIi*&`m6m6S zLJRZq+R8|sz1ih43qLF$_hHfLU36ua6T?q33D|u4GL)cg3Ji?<+(Zs1 zgqYGwkIA)hn^xU6uj%9QfYssfuh(&U3||QI5*urpYf&nx4ZRL6^nLe^JyIIU+CfdR zHY5M5iWQ3L22?gQ3OS%_7J!|W+ zFikQUbuo9}D4zME@rgB8EY8>@OWxusuj0W*9-*FA_15&} zyZx{oTp4m6z1WP+c9C-v)fo$H2cDU`wNh(uNUqK|7EAKOCB61TlpI__get?9$Z2;V zdW>RqT>ZSm-;t#Tf}__io50-yd@TMLWXs;V`3&07wJH5Hd5*!7<2<@S*fd zQO&6(WT9rlKbx5Lm(zMhrII!e(Jquj@`nxI?GIO(rJ35RD=`;xf)w7kL!2#KCE+a5 zC5f52(8+(>Di`9`+M$dPnrlo{u-le3`gCRF&SoR!hMI0TxUnrBQ(@%umo2Lf6{;JS z9yhaqs{!AC`n0t2U%{!Ao&ecjhnc8smeWTCFaJ*`KVw(43>*DHc#3O-4HG~hLq znSj~+d+Z}eLW!}PodfGfk4q^=WbEqzOH6!RtVm%;Q<8x1;QK6KhlpHL)inY$J2llB z+OSJ6T|6t%v|4@32vd*=2dTK2N$vu0XKII;#(*`o`CZX6A2r%LnMC`RrlMetQpOn! zsX%CfYPc5Y8*-(hi45kd@J(5U@XL!!QG^gpsE6oFLcd^=dQ5Ym^jTyTiND`^eXJpC zq<0a~XTQ3Au3bmmi53Dq;w(|BHbjiMFr$#%OYOPJMHhSY-5uC^dk`3GXV4NIG@48v zMVjFhU5BzAq32J3dvmW$-eF17qD4r2wLIvf`xz(NcQTUuQYr6m?? z+GW_{p3p#L&37e9Urp!ZTY`?|I~NzA!>ydgi5eoIvd{BaWAeQf@ew!xENJ_&`}S>x z5Kugnr`@)P?|nNh19h233c>@oDbW0D@sl6>h$D$Jal*zYLTsS9Zc4d`Kcs98%|VZe(4l%LInskIfK^ z3is|U8upx>VKg>YQ;il4%k2&gR_qTlJbXy{yP(awu#{@wY8?hL<{(PfCl$bI=G}|x zGWvl1r7iY*uN<$`e8`My?gtfr5PkVjZVVqRn4#Ht3;h(O5I5-6NAOi9TbhR`KLPt0 z=^5xX3X&UQo{)&9s>Ab#QaKg23I+Z=xVRR?2@W7kfLEY?p@iY$PaQeO}=d?@5F&(M4LSgmZ2%5KVo)W?U&8Y z`erV1zIgdSM<41+o-1aFc*|qm<9pk}*jk&|s{DxkamV%9Gv~6)P5+HeIP}y_irTPK72*mkR_|OY zy}^ch38avc<&`mBh#GtNz&{fq=n2F32DA8v&Qk}=I@*a+PQi?*PIObwrKx-e=Zv5{ zx2+mO@|nSZrM8Jo(06gz^x7el^~H7KigV0dNS*=`a&AXO3OMqW=v6&Sc4@RzR^%5) z-s1Xy<{F&(YF*Q2H&eV+dhq3j1|(6lpdl8%e-;NOxFWsA{6I5gq98=7?=^N@!ZvX) zV~j+Cd0Clmdilq1!?oFeT*bFn#^~qiV7*6&O!3N`UQ0R24mHxeEa+hkA}=^}!P7Z( z)v2hn)j3$BoFo*46c*w^3;GIg^ul*HFasiz*TY!#I|;Otc%0~W1e)?AV8T^YRGDSq z5nc(qdreep0ucyv2ib7SOr)(fMWxSs1trEf;>1R=@7G+3zqP9y^AnozXKroHSa|Ok zy`y*@ACpJtW)^)BFu2(#z-rJHzRz-Yi1LY`R|Ew&AkzV1ElE}Xko3p85-k|ZhnQHk zue9sIUXNG)F}6jM-f)3%+20`daHWs&@h4jZjLTIAS)56zURr#LUE_Hbl zDHCTnubkfT-ZeInwUg(Gc(;xr%52{KH-UNMRAE+SBR9HMy)Vi(UGqX+gfmur#wxfJ zvZ~A#)fA_9Y<_q6q+O?L@|P7_#;qpFrh*;&`}ot=_g~f5Mw%ty0K>&Nf_H~XTSrVr z0~`AqxH^a)&w@XpDLN&oJ;c6|McwywTdyh1J^0xH~Cb!C3n@8CnL@Vglfe&=h@ zns#pV5Y@@YGpca2DRQ>nUe{Gz+a4%`kj)ni6hvP#5d{pg%}NrlB1*~k7N=rIh)lPQ z5zjJ12JEOs>8m=P7&qLZGY4W=iFt^%Z}>vxeGshy2&^n?U?zSiDhd?Cy;>QYLF{O0 zFmh3H#S^@#4+oieKML~G2~s{*guep%Z1c3wmC=1 z-COKVPi~Yayr0HzZ`@5cz5VxL_)RRjbG(RV6!}p_{6fz|&QzpR4$f(64NL%4Z2sU) zip#z*w9qXl67X2GLu2i$X|E4$c|@>PUcR7k7B+`He}sT=ci|E%*w&VNX-2wIzei)SUI~J}V1!d7J!47?3nO6q#+hV`;$5(0NQ%<}^?%>#+2fPEt4} zPB7&l-f58`8|=BmzY>Jsg%h(xHs1~&$nvjE;MC-U^6(G0`KMef1XrQ9+%!|s0YePU zFkqd>XJKNrX+s^@y|G=I5k)r$2w(!#A#$FjmhD0AaWuZ+s!F#aJmM+2EmGqhG{x!C z49>dE)zj4dD%crjW|_+X!#( z!++_1b5^lcBE`o&^J={4p-3X|(u!zd62u``y=?t2D~LO;1eTjVAMrI8Uyh0lF|9>^ zrQM+hLL;f_n*$#orJ~^ZVxn){!_@JzUS|j{uW;h>NaK1UU_0e>Oa(ufF?xb59gq~f zeC<`kzUzc0)Vk<@gtw#h=f8>ecaEgSP|?7KpcwDsOP&f}j3ft4H!g3UpZlxYoGL&? z?pSEESCutdBC`BfU;xpG;Dh>PU?Xe09W9aiGCu@;T#8Q3W6lAB!q_pY45T`{;shsa zNCukkUap((5{q+1p$EA9;8Ll|dsCM(%lk>d>$9_T=e^$`&{k z%=PRWozS+iLmyhf=ns|t#AT7kNiW5g5iRKq#iw-id))GQ@rm2%(SmX+)twZ{J80>wFpe<$f5IJ+!@mkKyVH z3c=E~MiPu=hfoaHpiUi z!mUwq+WH0(-+W=CFLl?-&>AT%A{MjWQLd(^q^Z@F)kSZ#D#_LIRcETQ=n3nxY!(JY z^*+RTyxsz)=fqO`;06{J$TV9GltF)?k>0yl{cOQYn=-;#2j9`Q?&BDHRPsN!zTp@U1pPfR=YJeJbvVy-UVn6` z-jvBYfU#88H$L0fV{2->Ll-&VrX`1A|0R{?TGQ!E8h?9r1-?ggP?L@L30*>5Qf z%b%Gy_FY{g#Du&5Wd_BZOgy7GoY4S4TpEj!ZUT*kX3F7+85HJ#IUbPl{y)(nW1Q-RxS)EQ!zv1(O7SH~!{Vq4R;Ykw{tBxfl>6H5A@T z0h&XxunEa>?yHJp|Dnve+MI7>{T(>{1qo#qtLPcua(jazUgm zPz`g(T{K6qQ%D2Fa|u5z4Na9G3VeygBDADO4w_LjkMs|K%b)1hVnTdcKqPv0{mv(ui1nS{ATCU*f|YJtYyKn?lVIcxw$AR8Pe zoQOrsCh8zGm$#%0JJBLULn8!Q2W0)5E#wpFezEiIZuH69+NVpS!;~Q+tYZN(h$IN1 z*}A%YiA>eYDS>I-Q%5dNCkw0Oy&!?=j>zc=o{@GK3Q-nt-B6Ej#okD1R>fn5Y+zcum-F}wy&X3kzm@=L=PX_bb zqx(^;fT5KmL|xg@EQsw>IaLYS$>|pF`+&$$qGc8w9Uv&kM_GJ25}G}80Fz}*-wJyD zp**J@y#PZ6z>}YjPqaBXxQ#ZWDa2LhU1a?+Q)mm3RyapVWq?G_%NMb2g<{*^Qm5G{ zD+q0v(H4LhInKG$HetAwWsz&ka*3d~fM^qJ8%V!sq<7)v2fcFk0Fu@~u!>d0>8UNb zv9^Ih=$92j(vtwSK-abyHXu7GMh-;0ZI)XbNU;?RCG6DU`X-MejjuYaa4JDpVL}NJ=L~i&{Q4Ffnt(Tw zC#r!9+-)}WVMiH601ym{@ymK!WdOxN0s{yt00t&?jY9*Bt;O6r>GW|#J{%MzV-qLj zplvADEg^E7@`FXHd~xVcx7ywjF_kI!j=^gOR)! z0S(Opg1&`n;l#K&w)A{yXO~x<&!I95mJ1WT2$W_#WPBKG0{(-dYb_s1T0uyqU*27d zHP{N!!kbw@slB9Nv>E#nmdeoH_8ewaZ13n0DOiY03GDtXkz|n)8>XBnNh(?L1z78j zO&u=eel}HJrdlVRiSbO?zvfJM)I#)q>}Ig?G-`$z8j!M%kh27pm}x!j{!Quov!N`c zNY`8ZPSr^BmeyhQl0qvcpsq2-;599B<$-iH3lPSufm#P$#92exGDXuW_#xo-5%vsV>d?hnL!2KBe&OoHX zYj~*3Lrgp-ag#|Yd2xAJwE%!w~BZ) z*~-8yY_pp~c0`*ZHrki9{jGO}cscOPTCeg4E@1kYZ3|of>O6>URcCtJ4X0VOf7S&@_=ir*tKw+UgdZ<2LQ_j1Su3~92ZS3w8?0nye z`pM@ItDq9MO)q_z7KfgNA^+s=kNXYpMAW}a%aN0d65anl-EFn{IkZS1zj_QlGAQ>Z z@WGmqcBmCQE(UD|)UR?QNSW|Z?S;xY1~fF7{kuJ|w7X>BYHXklSnl#(h*+Ja7SQt`Z`Dcn%o4()bK#3^`C@TY6jQV7 zsj8WetuJrBX5>Vmc&a5dQmlD*{eCyGS`faWBZNLeOpI;3D0ks$_4@GUTPDHuP!>bo zNr}z>{(|?RAGz~II!Uj;f&EB$Dirgi&_h&HV{Du718B#!m=zm;(Xq$KYKt}ll~lwP zd);BvE1-oYp@O=xsv}_YMdY1<$H<#(_76ZRD@YYOW=v&f%M=kcvd7(hxc46@HHy+m z?88lINU-KX3;}~hOb8JKm`gVMs%#$$9*s;OUWR1Y@f%1_xJSsLt>oGHH(V%g3&A-OF}_>Hl$**383D^8F!|V>GU8=zrBo=#%cB`{dRqdQ|taLh9CppAsQW zoA2;n_}8VeX3z!uKbgElmaLxU&L7P!Q0yz!bk)Ut@;$o0e1NWvB%}y;hl&3VF$u_H zX6x$27%-D(i!;8(zaY2ULRcvl;(zu_ZvSKVkkW@r$|=w7-9`^An719)pPwFFI4xo< zyvO0pY4Q-sXdB{LlF`vLq%TpoAC_hCF5o;E>nGNB{pCzgD@jt##(>Uhd`a3jJ0YW{-a0}y!uBxNM(qUN)#kE`4JuxTKfyjY>vdyMnP03Q@j+S zm&h(c!zWg0o2NiaT!`DtBg24al>%de68#xE)y7*4w%3)tFiyyupy|p1DU>y6I$xHR zs7OdDW3d6^qBox5y~Exc;QR`(S4s(aAauKd_<9A)%pBms2NFawd$Kt@MGi4>aKO?_ z*HSq`SyAkmu;y1>O^FTNpUUH&Sa<#e$NKxW7m9iB6ru)ft_JF0|Gw<)$hGa2VNfQ7IV5F8y zO6Ww?CAo$u%l}KOvFo>UF4ov8`LF%%7fWH&E-(tiUsjOATBlg%)b;I^b|YaVvChL! zC;@!sskRdqq6`w0jz^?HM#{=IEZX$eOJ`PHRn~!vV^QQk%mPcC4Ipl^3mZ-4pJkhW zk+vrar^2E7z(VUX9qd*&Eu{E3R z1-G@R=^ofCyFfx>siaxgVonjFI6vleMMSso3xaHxYpR%Wm3;O^FMoYd-z!)9h^glV*GTedPzL?_7_* zptZ_+41@z9^1#z0YV&PXTV>*NMRnq5u{;N^;GEe*6Z==fUbcFbew0O4quyOiKaA}6 z2EP!F$qJMVu@Mw;K#I|7w~3<4p!1U5CLCEICkA{VJ4DxW)o0P1o?;4pl_>02_t$!m zwB2lpQT|Mobt>(!Rp#T)4VQn-ukA*x7QZ%&PWXXLj?OH&Ejqq$(K#_wHP$XVnltby z#524&`wfCcSP$aXmJwhu+eo|kW_i+yS8*e(dtoOH8Q&!Dk;td($#uXU_g8RsM3xi(<|VDsoN3lO;$(#}AXh2Kf)`DMaE{VKt(ZBd6V zg3eaoqh)CU1@qLh3_Z==kN2G)<6?%EJO-M9>K1>Rx1v~9-Y%5^N*y@!mha}4avu}- zyK-Xo&q8Qa$w&=hE;^8cg4%Sgz1|+id9zo%cO!pl6y~%2<%$+1%2#1Z)cpevpE z@#c6u2K+5!9bKHfzSxE7ypc~ddev-=-*aT9r}$W9p2#5%%twRiX>r>OBaiganf1hX z|EBx%#?zUv(Fwa(k#f<{4?XT}y7=OXQ_0x-wv0hNn9|;@5heC();eJ&&ptLGsl>O<;5PN%3Zh;Eale4 zzqAzAyUFV|F+cfb!~j2lGu^!ripEKitR3~)+=&Z&zYKqR z-ifI1p(pya$PZ(y;NtnO z#>yjWT{BOePSUTDkvghyH2u}swy0^#iIDQW5d|;6R4|-;PWuxFqylO?*TL0pIb>c? z%(}`}BOP!*y!^C%YuOd}r#l4#2ZIH7O{cikZ{HNezor1rmM$xxu=x*rfHNVS49@X5 zjV9?LuHcj@VJjC7Z6A&&NJVe5-3Ro%PcSg_*!A=5!X2D>3RKxUm>%3}i4jSp6$wWE znsDK7A&<(_J$CunmZcEKcw+>ScFqbbhIw%we02Nq^s1KWP%TA-qpDfY97zjM*Dbp4otc>;t7 zE*wNb$N}G;t1$ED&$t#exciEAP7<0!%!ZUGvgI$9ptWZ5?WwDW#K;2?dGFu-em8Ky zou3D5RMNkGKlk|8msuP7Zmpff8539#q20veu zcY0O!SMP>rcY1Rc$L{DWF*v|6j*e6>*3TFMk5xa(N|1f~f}$vBqvg;@Q7(T+0ztueGp~1T07Nvx7Y=|09)1i~-m~Ik=4ffk^kWc%~gBjEx zV+mv7J;VjO@U0X5{4wiXVh&7VSF@r3*QkOM6)~W)gHS{3+oM>kIVaai!J7B>iXPkz z704lpe(w;jRNMVGEM2vVUz#KYXKy_1SGUPd%^n}f0kviH1bGs`j=D6(;&PLl{@XG> z-F%;N-ZWIo)(Fs5lx&-i--`7;y_r0(9TOKY;f-?U(ZXfL`AZ<->jvD@=&050Gq4vJ z093}KQKvaIG{O>RK;5Os7H77u{HU(F-qG9NH%gger@5zhMqrydWdZXpYCB(LE(MMB z>~h3vTKmCUGEQL~x$}jpF4H;SCzAW&A>E}{*VU-|_O)Ly^y2wHs)&A|=K{2QNZ2<)<`{V4 z7|ds%@BE!CkHGBuiG&au=;*u0__np^2j3Rf#<$jj0UJ}s3`B?T;maPadubb?^h>WQ zGioKIe*ar)%Hheh-p>ann-fjvh=dv{Wsn_O9(dR&&a+5+~|D8^} zzUhl;;QPKRLl9WIoRAYMVB-C67rK=UUP5wK=x)_8pRxjSH?g6nCTIcj{Dq_h)YB0 z7&9mtoS3o#t|{qL-Z4$%k*YRuL!w_@I2|(gwfsl8N%`R)`Z)TuIdkW(S~Ig$Z1xTp zs{3l%~-viGIf6;+a;$pugghg4UWvG6;X+qaFY-K5?Eu2s{5*`Dv|6#pd!xu&Triu2&CAJhBh;F9U%a~NN{Cqn)<1+XyM**6yX&8(hLDeGYS zlc3t33UY7dZPX4}qnI#7Ya)1NbfI)10 z?3wbuni}($UI`N-vQHfZ!uNxPyss|T$=_Oo{_419a1?=cQdl}c3(RUgEaJp709>8W zOeU?173WFQXBt0nPfSEj(dS>Q^Cv|`NNF;gXXv$6le zMwKCu2dCjAGN0X}z7^$57sO57kgm4Cms|YEnA_lSrH{TeJ$T%Zy@J)I$DxmdbAeOA zHA(1@X{@&Eg-(GSa4ntf@LJY@*Z|+$h_2Sh z`(Dq?8aFhRW}?Y3A3oDqt;7IXSd<4Mip!h*jV20BUiO)f^sMYAV%w~Aw1e`KO&_)< z^jvGEvI9Ah!Q*n{EoRf%E%vi`r zu;Vgg{XTWE_1nicGW%JR3iKLcl*xkQ%2ascXH|HrG02yw5pp(yNcIw+-R<_KcCSx;}6OmO~`0(AjP41Ew#a{D5_5WN(qJ^(|B< zTNxa@6+!!VqKx@GJyv?Mx?yH?F^ab-)Yd>!sB(TYd;eEV&&5wmkI=pJiJiZh2UwEZ zVZ=jjbZm%TFI&^NmUMA5jl!KY53CjR_6XfBcv zss(Qq@;2UEZ<;ux!RirHpt~>lW`#9$)?f#a@qV3<%#H3Ug#{Vu+XJczFtR;nh4bpq;dbu@Yn348v z2V@(sZ5C!7BEGvdXl7kZpWgj$Zbe+M*^Nmy`i)!w2y{|Slo}=!P}_&nSR-%lYJYlE zmf!HLxtQd=x#SbhK>^_qNcb!(*;9m3cbmw|D^v@V(1j8AH|G))O!Eh$v!P7KiNTXt zmj@h?2N5TyjQya1#~=e}3wYo-_zbnx)OCfeFLuT*Y5Rf1!>6XAz#~zu6^8oAy-eS} zu6?D7j}&wnTecgcBq;&%`@p#~K?^bSzu( zr~Vf>ca!n*ZdKa-VnfJ#5~*rS;@s!MH-V;*hC(b|C*+Bnt{;g{H>k%C>tV_AW=&^H z5E%3N7@OZA8bebv2O`ScB#OYzL{+Hb5R(fIajHiD(_%^1 z&?=PSHRJ5JERQ9>f7V(gyyfD?iFBE3>Pd_uU`oUna%;^-O5y$Do+N3WH6H zoTQZ9vvau%mB*T|=94cjzWG2yGas%~PEIM(6}wx0lS8j0(V$qoJWk1g8ffU7%x`aO zX8AG0E=XqpaDp6axd~l3Ue*A6z^s`tY7~A|zYXTglpB|HUf^uKd|+iYmR4u4Td~<$ z?awkV{YI;Z_l*|m5VfVxE~BR~Dw`)xtBtG8It<%JDzrg`&bFVjuTya7t8+^9r$Aqt z#T;=prq~MRo&a_wVP#HM_?2{v8ALTO?->m=Fs1Nc1G0nes1r0t_F)54zt64f92@#| zkMena$8=st&J%spBayo%RuX?XI?w326XwkWn{?4Z;ASP%`-Iq7;w{v!4^*NzUMPWk z&Cj{#gEDW|AE7u2V>C}xK&>?I6hJE8YmBZcj!zR!xgD(m$z-o^=J6!b=w^XVjliF% z7Ce=jk`Hr5%$qKhReH~Ia{j*b_HGA5v+O!T9@uHhcHiuGT9kaSS3h+ExX0Typ_@(r zN`;oG(sTFl{exq&#LDbMH9e#T^$)V^Fs{m@MWJwBwygwRA-eMxI~FG9&Vct=jtl30 zxTn6ZnHMsD6|-#bp3*krM&)T32vxNyf=y17wPgY3&zXyMMgQpL^qB3SBUs@i&De4#3V7Jh<^BkyIBOYWKZAx6p`8Cl=P1 z^OyG!odx1kU1vs^Qm+fMcAg7dOknx|+&1sYsI9%eno7Z6=kWwrF@LW^Q6I5wlh=p6 zrUnhAs6ovJRKW{OU+pEd%cX9!fpmhG8ut{fIFd)V}%H>&+KniVPSCqU&)AJ)d zWgW^%P7qid1aQ{S$;u~h8`@d8{)W4pUbbApHm##Z4PA5L%#Ws<^U58rMljuWY6x&15|#W%5|J)XYC8g?{!j^7Ak&K`USTPjNE_KD>&Xo^6@YvJ%%EB*tHhcw>7ja+Uv#$Tvd#b*Gul#;S%OZXP_BRfHN2i@tEmP-h4?;oj)~Sb*oZ z5ljg{&xsf^%sg>shr~r5fQeDLwEMvHx5MA&IORT48<8Md+}#!oM&V~j)tu9W(@WCo z^d?_ya<)6}fcrmDa4+9CCWbic!cLb4#;UGVhb<0^@B}Y9|-{FqkCyUtYyn8OH5vphLye%d0J}w43L*zx~bcpET^Jch6d8>9EA7 zD5+i=&OPvCuPl|QeD6xxeQ*6d;g)Tc@>*Y*%Q8oEmO%r?t5xs}nymomOi&5+P5}a$ zwAJkspX=;6XSu@q@6T8D&T8WP; z>^BMbBe>oWbP(Cx!0M6YT1SZ!f{o%CKB`Qym4^auiy53 zoe@9zF{ODKLuc3KPPiX>_q0u_N?;}<(tSs;UWRz&| z!~59&%;Y{KK%Mpy?zc!oqnt<_BoR?L4)@8MW~fdn>7g%9$?-P}7GeO_vZmV9AF`3m zMHPErbn|!Yqyx2o95V3-;XA;N5UGN7;RU7a%fqx=fAC9(i&`*6a7s#WE%U3`6c?t4 zL=JI{xB`OoXGxGh`&oL32_<$m_KLpBOelPxIlr_<;v1?k$r6ukw=8m2sblWM+>$xAghc(acXwSFP^dw`e7 zO~;n_97O8*zY32O&URG0=nH zJ@e$x1BCAi)2)Xe!YA6%O<(bU7NFYy`j}}kdO|SwncVq3MB@!rsUy?t`mJS_(roOY z<3Y%)uX)zLi8gRKRf}Kux0&|miatFvO&Z`d=bN#@QGht9D%hzU1=;*tTikoLq zd_R3qSgT$wqB1_VO=*AQ>Ys>uxQuIL=T&-#gyvDuunDR!Z7^S6p{fbqF5zaskKtxN z_XE1F-${3x-Und(URIIZkK!2`tK?78=6=@&vaz`-$x5pD|AdDUlDo!k1W=O$O824O zgo%R%I;t%RFn_p9amHBg=iuM%qF%P>=mmt()>8xW7u}@CuKx$nKrg>bi4k)WLeOfZ z9>;O_u}Kc`pSk_#LI?~;0~AHxa3pYz{2LjNAm+f8Bq@R*@NC2Rr6t^a*W0nPvyJJ& zf$>bE43sev#8Ft}`Atg7*H8BrUb^C4q>rvQeWO_<^uOSOUlc(gGzd1%-;H}d@F8P} zcSECzhf@U846LlcDha|V#7YWc_sDWTgWR108pt{=jJqk&jJx<#08`U!PGDte9WQ?2 zk5H5uqBsF%JSg&FMQg=ZxcK~^=g54Xhx5yn|1^NVM+o_d)asPds+S}!URI^0ke0~u z0y^p zgf`ek)bG+=zDjcq;{FWUxDF5~sKZU*a0@yggK7!F1S(bM!gxnxVzfN&aUI>4Hb8de z>Djh1a5l>nYc$*@(ZIb&_j~6i9JBtaf7YdYxkW;E)1WA8 z7)lPWBHnosJlh4!4srj7{y+BKJJ{0mJ`a1|_O(-QzuR|#U9<(Ti$ah@AU3gyB2_4f zDv=ynN~FvA|MbXIfOgYk)uJ%03pyyp(t}GB~ew?yeHh; zjK|(bd7gs{fi%e)LRK^&P&76e4f;G~m`p}yInK0;Y=Ku71{czljQKYRl&fIwk z+dJFXcq*1f8YjdiUKZGGV?# z2#7Wy+JJThNX#8%p`mu%4uesYt>j37sVS)Q1q=otjN-iyya&VY{W1LOfAbqC@+k}q z$vUltd^-D?GSA0X)AlbtGaLW41|>b(Un13HdLLu#7YQXlvb?z3G63J%*@V^_?N%4v zP9NL5TTnbj>(WDrPTmEUbs+>tRVjEXD53L#V|7<&T>P+u8!LGTj-Y|E><9LK~o39^W^9C>( zrI-yUhT9TnPF}p1 zcTb%dw3pZ)sx+#bBM@bOX}G$8GLC`}@9hB9W-;oFb6i?FiM`c(H!$@$QUvxHRgd>kkLS+BS7BWaQ@=0#42qXQR*n}9_zMnwhFUBkj7 zpG11;6ANo^55J$Y8 zeJJf_8zwNWbYtgGCvG~Z%5MO)wiZLJ4oKRC$|vZH0{5Qn&(L?ipeivLJsU|$<@dVHU{G)t*W-JSR$wIfD&)>|{2%%5jJ#P)VO z{=9{S&;S$)^5%eN#-VOdhMF59inoY^XY)efDzcsGW_0~~B^pw-Gi86#3kBta)UtecS$~HY znk#X}v{IjAk+{Fr?g*t6F23&rxbyyp!m!k1!DP7)8H>g+aK5uS49fvPYcN7v6Wn#_GB$QL@W$&eqml(=RS^TzmQ{Iijq>L< zwY>e;adMW8=@_klAx_gDpUx(0#=xqcwFXbxp#62QwM&T4Uq$z>M-jCbti`-Gp*uh` z+rv?7n|Ao#I^Q_`MssmJtgg5E1qMUvp{my^z_Y0cg%EVEL$U?Tgapa(v$S5&ahR>v zm~v}l045OiRv;yik`iZ6EFs^!jeI-?&AOnDVoT>15i+-s)XcYV-GxmPk;2Y_~;YggY&1(qu=U=%oRWTF^t&!XYWj{45%x(pu{F>x-LTG z1=@QfboPem4#qf^vX=sR=b2lGm=FK>>tQ7|Sq?v}Q8%4@l6U9-C z>2&N&RngGZppKSkFxreZkg`Iz)3dW0cSIqwfH9mte<${~HnG3GiF`HzU|2EBbEEaQ zHnqC;?y~+4FEpnY7ohXv`#Qb;Wu>K{l;gru~|PKx+1Zp(7_ukyrPZFQ+EiXRq9@^fh`JFlf8rIcWC3(3ig$nJU{l5-Ct zJ#`Vh)rW{9Xl)=XC$#iTD3@QNn|@hy3%qq)_J)jM7~LQX1d~eCZoxMHr_MA9#)mM_ z8cx7zz$tUuk{T|ejf@dAtVI}WIvD$lL&AF-LV&b~;Y?%WwU@Bm78q_`hnyUMv=>9M zVU*Ro>Bg{^lG^FGN!hj@Tuy|lZS1r6ZPTWak>fI7;79`jhVh@x6?B4zDJJoqp}Q}o z4$vBBG-Sa9U$0_}bn6Ako$JV4WWd(e2HNc|PMyDi#f4?uckV&__@{pgSMGZly;e6E zPg&o&iELJ4O=P%o`V!8sox_ctTOd(_;r=#8 z!vi~WnNE>r8E(Dy3YJgVViVj94q??{e#aQ{*%StreBs~I7(E9$cu}vnH8KWB)2umE zZOqT=xsY)#1yV`OW;1B5=I&`6A}aU|lhzuX3$$9D+NC1g`vggvf+q=uoIg@5Y7RBe1EW4L8CaSW;U5|eRcU*p`5iDi(Grg^Sh@t{7 zr8U!xIoNs!gi)Bhg1kNqAxkRa7%laoBHp|=>w-g$LT6NIwD*Ug(iXC;)yDGT3cm5; zU!p8?pRUM3$a-1idneND$&IS`E2B8Bf}{Zcn^w1TFQY7-&89%wL-*=Ok(|E*+FM1G zS_cHUou5=Xu%uw>5Ua}DviqU6(jn>4G_pIq{eF|0>es)fr6X4=`S+}I@52FrWgRGy;o#OAIJeqEM*s)cUx%R_tknx0g>nlE zX=s6%OM3*d5Mb>i*6`5> zf_nWa@W~bgDvT#1P|6_U7%Tl1T)O9eeC7v!6yN=kPoRHl1<`sNd?^86Z9$x9L!9hF zthOLlGKlpy#Bv6{n1J;X@NNv63Xntq2?t>m;MS&zHqtDOD>{Y|7$?|lvd0#C3%LK> zy)b2k;cSEw64UY6UQa1;;o?OM_x90VTtchU4QZHjUS;lD2w`OiN=i^dAzg6UVQAYY zq1sMTfpLZ;P8?)b(?-3(xQ>}1A==vuIL#q8jE|W%4U<(68%MslxEzGTb+>C@b#ZkK z*I#`ZJGX9NHl3gOyMx(c}4`K{NRe@-Lv?K79wuKA!X3)D+`)@)}rU^!iU8qLJh-vJA0z;;;W-z7E z-Ps4L6qr=doMUzU1Ulzd@U3q=jWVBEPbW%5RhIV>tzX+v)r)^sCuWVZGnBC(O0)Dr zRaIQXF_?%z`=`J=OVFk$Ua#EeF5bAQz7BdESCphwPA6lNDt*kbFDiDnQRC&-9)<>0w=n>TTcE8)j5ltg zpD{2sfjroSF$BoEP_Ae+*<3V4JexXrjk3_0SdX;&{fw+&suHBiAtrk;gWI5kP0;;Y zP&d8>laE1o1QKU1;LO5{su7Fe-I#snEF#_@Ow`fIx|m`7!j~XMw~)mGole&+{08SP zUBqYq)1Sll{)eB#9S>bbe4-1n(gN?N;0q~uKLP6`U~K``O~CpoSSPjxrk{c@W#MnM z(t=oNfi5KA3-;$oCj#NLo}>6pi86rEAj)B|u0Y38f^#R%BhL$r8yJBcJtAZ1nSU5L*hB7rF4=P*{kRo{zQmVpo&HY_2% z^Y9|WIL6~4q^ufx9diU)_476xZ()fxaU9pN+GuXN2)4I2@zPUYgAjsLQcgKxH>#re zz1!8hshsa<)>$!~#xQ2JtP0A7fUG2pkMo_|h5$rsh`e+*wg#-1*oQ?MsM|vjsR3qp zG&1Iv2oPHH#tqXbJONiH08tu58)$BYqC{&%?HHf_;m<*|QvBop`tL()3C0+0cf0GO zgM(kXB9a^5sPeD>-#rNrFD?^3p0q)Tpdi8kiPq|UQJO|syKQ2Tpuez)qADPVuVH7n z3wHJakhI-c_^B->-0jFi;FT9RGApF?j~JyPFUC3sn-CP{i%wOkFyryX#=|^}(T1+X zo>FhzlcMu@T=KpB)akS@a7G+2!xyL|_V+JsW?DDJ)esEdZ^c6-6t6Akx*Fu$BDJocJx?`#JB&OF@aB@k!O?)0Fl z0#O{3;cyg7ttbHX?$Z7aE;KNvO$b>w+CWtjMgzmmTQEuiUb8@ec$$N14W<;J4G1S- zOPPfz4rb6ZX@i~}JxrkRX$4;6rKECoK<0**LFxE8^h7!=0fQSUX`{SR)Uq1CU zeBrl#1C&!31D2%e8C6#Q_^~+o`LB%!&jfmM*5OhrqP02$rB+3pXsP7sENu^yD84Wp z50|RpXqi)f0mg7DSUXNqx^n6?J$L7YD~z#3%_R1=x6n>o&;a({dF$Usx z^?8;YaR6wx!9kr~M=&DFOBhD&Ycz-h#u%hohQIY6{~eTD6Fm9l&x10CBuzzCmRGB? z`t?V%?k{sLUP+Vm4oc|ByqGN%MSkzERC54KR=eg(6eFTfZDAvmH)U^tY}T3V))XoD=C16eqMWMK_aoB>SC zIZu1XWdZ_abZ~w4A!kx4aMy)NWoJ8-QAjCK-F_A2wXdTUQxK9N&u37j#CN^_a=iZ1OOSVJ z+EgN%cN&z>E?8KtI5u}D0%tCP>#y~{^MJuf} zBsgjaKn{J8X^nWAy9buSP+M?VOTcSWT0F&1{lHJ-_U-Gqb@NqlE&w26oZSV2|DJ>G zQ%W_Zl(oCvq(!Vj$r5Ezpxx$(|hQ%?znA+-oj85=3=XCPif z60{}W>q{9ZKc@+nGWO&tRfmY7u`~4@34+V84uU$b*Qo`0_0F)4c!mo<({qY^5-6-xGIm#NcgwUOsDjK&AxoTDg< zc?O-kul)UNjKOp^0c8xs;XbYxCdi?k_oY_wPI2!tX{Z;dmnoO z+y$1UYIpUu!wsEks0Pnwbm|k|=)J{|q?fp?`fr#6! zC#O1~g25<*;>HN=sD(SvUc$8-Z(?t-?XBpE5Ii=NbPY8Ntxl)Ug=i&7%E#lObG;yL zoiM1162&aXbUcR98VgG+xb)yveE0+3gZDr9UAXU_D_C4w1<6wMu3klZ^#tC0>Z^!F z}qbpy1(oSw$-1c@syLNM6iFB3YIpx)MX7R;OjgUeF!XUx-mePN-E z=w?rit~EBE=3Cplc(^U}L!h+k%oMC5{zYaQ{0N08q6D3bL%!CQS8YK=)fMVa~? zH=Xy(sv{PhW=E;Hfi`oy`5<&HOQ<)Vff?LD6mdjRf_B=)gZDj#AO7@DSjJNbe{)4d zyL+*L{~Ax|aJm&wYc`AmbCxVNZ8mi01on6Q@jKr+BMnd}=t%`VE}=^W%qr+o!;}^} zgEF>4$WcSh8IFyp&{-Ch_-M9 zA`ynFrj#(1)f?P(?h=0fAN(WylYjclc=bzvfHccsw1iZWW?9<~Af?1`G=zv^Fis(r zLYlR)khYO!ZQOg$Rh(EqjsEHa?t1ToSXo&EpBm(E4dL7eEzKGPk9_y1FrAF>rCD|HEh?FWBN@0;zyIk20lo!+wN-L@99g zeqiwwhR^*8y6)@iD}8Ki-b6mQj@530w6lcqWP**&Z5SFMI(ZNH#nb2{-C)^bjLV%T zb(ospO?zrLbsCuFl-LKX0oItbEG1;60;I_(gHjS?_f0Hgg6!fYj7CF18=PD}hadWp zpTY9dx}`!h<2l#XBaCtoW1ty@j07}iHdR(CRA~%WNf4z#9f^fX>rTz2a^w~riV9qU zXjuD|s-FNi&(q3)>|3jS6LU~Tz*+)26?V?!x*wJaFu`&61NY;^xpT-mZERe>j@c}S zAq1~I^As-Jbq~0U`e?cZ)E%xZ7XAJrhQk4pI0p{`J5V384AI}0~)Mf94*BEg%mptp?i(2Upk1p2bqY-s}`RS*qw&Oj8IGty(z0dVtM zXf5}UrIxHvNR0=uW!+eG0Rv45s2@0n)B!(q2e?v* zCo^cqz^e*ODx|{+l97`EIH(y-V`RrtGa4X;geC--lrWrGNUa-#WddeefuKb_*O7oW#qZx0L0t2KqXaqa7f1cFYxXNUHt0_P$aSb8W-`?bJD zEZF&t#Ati~#u%1Y)<6lLGv=&Mi$NU4Xk~3o#v>a92rm$AgyjX-2)p@ZT48Xohpg2K z8?kH8e-mXs^_`a)9}K6I($Tw1`gcU30W%smWL4?m=m459Y`pq{4IGMMv?mjYq6`&* zc48nAcF4UwhN)Zuax0Te1j-~nG=Mx>WSRmo0w9_dc6aUUYYZWl4(jbNrj>p82!R$1 zl5@1XZ9MUr&*6~|e-GY#={YD_qSfkH>MUbeJaHOv+5+R;rV7HKb!!LN-Y~!(x=OcIEPvM2XcoN_E{O^DogHAicc>5YkrO~?k{V+_-McMiXPU|`! z#27t?A9BH9wEenN8kJEE`*jmsi^BpOATB%D_nu$GS6e` z9bx#(>V+wES78=noU62UX_fZqbgKuQT|u$k!(_Y%rYa0)fXMnV{T_I49hyeqjsoll z`91@t8Iaa6c(ytZ*m;ug)Kr+gP{4b+X%);iIrkz!4P8|zu04$oO313j=I8)4Y2oVk zd=?LW|Bs+ZGZe=>D8|g&r-c7DB9Y;p3osuoZ73i)LlH;w%$v2PK$ywKQ^eC8?OmJi zWC;W&6dOnlP-2M$N<&XI^h`oA%f@7#7$jzR@X~{L`s9Ci zX>A=|SPAdG-S8Mme;VmXG7P@valVX+t^umXF5O2BLq@bn9e2`9t^OsuvB-@ zF2qVVAV&j(I7uOuw9uPIa8+ogcs4huMUgvZCq-43*tq@%h%u051wx3@TJ37BZoj*v ze+LvAZOjxfBPFGtjE3keE`vp}r70?d#T#3V*581vwf!%`9L&O?)88S(wMFY7+nmXm zdUH9)i+AfS)doB--5|AofN9L(Vl6D2$K%`}&>qtz6j`^2d*Ac;QL@3I&WV6PGZu&j zfY&i-(2T(-0@8|LhK2pUHlU>pi(b}Sz-RySzlY&q9~)2qxrG5#iRl~P09p&^-f^`N zciV6bKphXv-MpZAfWb79S)+dG3q!Eow}MCOq@9S*Igbm2yxNb-5<>Kt4ncfFfQ!54CU#FdAG45FQ2EE2lNH$prF2 z9Xahg7?1c756KYB2}pe>2%~KWLmJu{184_PaY~Ticphr^b;L`{7>$RBlQu5C_XGH@ z&;3V;o3<)Abbk^YS^SQ4=w#lgfWV&LW=A;3d!Yo{sq4oJ9gO-N?44K!(HhBQhGd$f zJs5!%RZueCpM%8|ydB}gkAD=;J@Yj3eC%?hG+ue`SzNsDfdI{s zxp;(zr<}3z&Ar|NcB?JKag01SbukSrG=1nCXiFwwcE;1~_AD&ybyrG<`0;kTgYjqx zN*T0vx*f-s^o+9RnUYn7>2!?oc!XYW0k^KdiEH2bCJy#?EhMUS6^VGGsESwKUDDr~ ze-0-%>P{`kMqDJA?*mXm)HkrR)HK8LD39jG3rULb7)(5 z{J-aPHCkIYXl>kX&wy}hEj*|#20C{-9YdfwhY}pe@C=T$Podzs1-5F&N)rN8Dd=e# z#C1Hi6m9MN+OpAP?$DRkPvQH1?(d+rdIGb2hN8&9ppd`uEYxIwPFc@63+jDOXZE7Y zy2#XQG{%^n$p{waAWg;)=QLSCtGJPTw&AWX_vSyX&U324Mn3#Gr8thDE3xz1uiafz}#TrBId?Drs|es!D}~ zPp|I@$((R(xRKyfOPK-oIY_1lrh9{3eoN3p-+52+6zlZ3d|e@ zzwtL{Fc1Ab{QLf%X4L99Nz(>{9BuLm0W={{jA7bqV{d&KH}5)&%{xwE*6+X&OGtpW z^HI|nY-mm)D}!pkzzM#L}M2TwO=pTfhr{{w2sfM;yl>s=(}EAEbX0pgdT`kYE`@=MoWVBU9ZzY&19; zHADZoq^r7o8#w0z?IMzcnA3GLei8BhV*r8REWl|^ zlSEHes68cXvVl|zQmHv}%MjGo*iC}~jMJK}<)fTk@$~KobdJ?j8-NBcIMcAJCkCpl zAa1{ao>0h(35qhu{{9|5@^gO|S3mrT2CMJ*duZ-{C38v0N8mL=<_KPIOX&|rEacmC zPn4pHBaHi9%z7=9trTS|hA67qQN2NP_tD+`?gE~9{_BVmi%5*eBi#Sk<4Dphc%RkB zZI1c86mgtj;(WuZs%p^4ZTD<~#?78@|JOzjD0I8sz+gMPF`$$ppG{Ge1+)`~Hm?B< z%*kdbAHkb1K98^d{=dR-e-BDlpoAhXa$XcOQWnLtC!=IM?1E&<}-T^vW`_?=Y1hkicE~IvmDHQam2rLxh7%Ah$9-Pu36qq@b=on26anPAv z*zLgIFb38VAj}PcD}5wI@VFvFFz=%l{@Z}=WF#!?=H@{Fpk^{)*t{ECnyMu~fhtwQ zgW(J^JosH7#pMrt4DH?mqBsF127Gu6#arKkQkM0ky^*Fd0gCdTWqz5k3>poo?V{X_ zGY$-)Ft2d#!^FaAN^4Y7)|oY~7*a|?Jg*<{mz6|SsW8j&9T#ipb|S&87DcImGem+RibU{UYo>9AS+&~{dq!OSIjzNs5G=6b ze6+PcZUO>6-hw%}1;z}@sz9FSIQ8)RarJ|r0HN&IPKF$_@Kb_gVc8=>hsqJSdW$3iK&P|!mJ-bHNI;J|g)poUIRict5CX;c1E(-;QTREr@du59>q@$2F+-Y&5j?^h(C+8OErPq{0S_bJOiUO(j-L|$Iv&Pg&gjNXkhQ|?05KO zX`v#eRG{k;M^m^Hy7XARe9yGz#f z4wuz41}Sx*HFIWN5k#XKlTsqT{yd7wE|jW}B^lCgA0PR#zlq-RN>lzaUqHz5_tJ6y zor@^PeBqee^c*T&-xhj11lcuTw-OwqUK`tIR&nF*bC`8oR*ORb%_yQY#mTi(AfPDA z0z8WG)~he0s;b&G+{Y>VY$8S*B3*mX?RF2HPS3Ie84m;(-(`44qXED~M#&{i)7SdzMoYn_0*t~HafB2jK47Xo+-e%}1Id{Scr6S3) z6I_U&=3M;Uhtu}TyUY7K6goSdX3$ElkM{T9+v;?d%d+5RR^q!KcpU9^8-^0FZVY~^ zXT6)GhP<{1Q>i&zVZ7ACc%frWLCB#8w}Ekk%y~A#7@)m3M3h_Jk8w2Gc&%lHnw3Uz za|ASCGZk?hEcNCdTvH<{Z$F52ub)hFM0x3)rtJe1EoZia0#NPcK%wgS6Cs#7%C>2| z=i>TFI6a`0M^|3 z<8WG`$Kf3#ODWy3`XPaw;D`K8s0;uqDMQCIhspcgmqxs@b$0jfiN^PwgEJ5a1Egts zXFQY5MLWZa0lBaR!+&O_v_xmir@c+gld4>l3+Uc>2=>nO_-Whrs# ziI3vLKl(Gl-Po9U!iqTtGHZ4oN4l0{ibXR9gOK_A|1ey398`B0t~>nm9-`BnVbbqF zB?3%qFsVS5!5g>Uz_Twrjafd$Y&L}<6zA``4_T{S3vGRzwJYk)SZu%f@oASzD@&Pf zI+LT}RuO0&#<@mFP|mD{Oar#{n-AjPGYjL&u%R%aJGR&O_M30ukAMBwFuZXc!et%_ zAwZG@f(s-`0&3Z4gmK;~%i^4pQmymotD8!`Yq0rFW1T%UKF|;H`25Q0(=AGARFx&t zh{KeX?PeGOJK2S&0hvi@dHoG*a~TN?SNkqK@Mw`~b}vVUp)l5{v+@5Fu=*K7tV&we zzEOr!l!qvz&4)6~$T3fkonxXg+Srv6OExGZcoYMaf~5>{0%&UOMMP178Ux)BR$4b^ zhDSg88NB(8uj842`@3L_A&w+savS;HZJ7QEcPs|l*oR4Q8Wtqa$O#w5E%0R}!F@Pa zqsVxAYBNO6?@oyuoO@xT@-T;Y)^&3qC3T33W{fmC0Bd*{ac;>3a^Bj-7+t4kDjm9w zpuP{sRu>A(`EE2TZZD^yB@9yH(TdzaJF?zj)&_P>M zSW9mv-V%n+Z*Kbi1r)^$T3dG6+&mC<+N*`isB`OeL}N!t)?S2}&8NvLu9%6##$R zX#E8MfA;@mVSGTuF=Ij+t%xxubB4o}Et;lB2}Px3S5}qOM$g=pC>=@^$8lo1t?qa@ z9-^p|0v)Ufphs(2_D8;PX zLXjkgOfu^t(;R{x#U%{Hw6Ko2a1U-OKw~>VHg0p`VJt(4Epl(i7Q*pGrb$PwA~Cl; zGyqgC!P=4C*|lTn{n9OB1iYxgDhVCcvDE&<^p{uh{vY@Wy!wr=V|@Dt0AMm6K)(7l zBoBWNh)Cvk&w+8)5JUQzj4>)CURF|toDiSF89D@5CK+?NGD>U6Qd$wEV0GA+yC9ZL zMnVKY(4e@5K|Ac8Ie5;Sfcn3I4d!;j)Io3Dy&j))nyx<|a|DPQ8uP9R^?A@nLpjB~ z?QpCCC)~nkbWMyXD;Z``fvx0cK<=CVL)X#R zpd2&6H^+1p-jQdn`!P6TA9Q&Ba=1tla?E|&BoUgU#}-HjuDBikGihg-T|5JI;Vk-# zE2yd|2q8$)41=vLterg%IzB+Jw=fq5cQ`hiGctnsRuiy&Zi za;(yrPAAsN20*XB=!h^hXui6=KBlt?I1?eD&z?7potroDr@#B#7;W4}r`<&>Ygv(J z#<6($GTKW^P)cDz-Hn4+UIEh@RaF82VT>(kt$*P`kv#ism5<+U0lYtLkrs<$tyQNe ziv_LZ3I$o@gq=59rHrvvk)}&=E9>(p%JSi8+V1wE;r^Z=#B>%`m-%csJYXWqX2a2x zMIwumq$A66JQ(ipr~NLYGRbFy!RSFAm&TYWu^(~-m`xaL8Dnw~vO@@w00saGLdXt_ zqT$n%q5l76p^2kpGarw0tt4U|L3B@soew+F2|F1*si5~~4gAQUY$X`2_MtgFen4v8 zj(cqXq?6osG>k&~0esBdZrDKW=O9uA5hn;i-p-ESed2i7%p4lv=2>E`M5GG4Qm-2# zf`U0_o!8Q+NCcZ5fBM1s0*L^m*X+bMaPvM(lJO$L#J?kGW3S=VFY z{;iaCSoXFrb@C%c(?%YsL(@Eo!Nw1eMuMZurO~K`gN7a=7m$$GVqgN}%zi#TR{*`i zr(YPgrqES^>aFL|q8ii57?a5ud~p@;`S@q%7wls?-Q${$BQ{FMH6`ZwPN;c58gr!~%tV#?IN<<>IEVMb&f(dWp1;W0V zw_0tqrfnMmozJXm0JVe^t<@0B-abZm7uL(53yIot0RKUfODkN1?Drp`hgGJ=5%7-j1q#EF+E7c4^IDG>6!bhi#ae$8;EeI}YYMd~B2wboz@} zSv!UOGKWbuG-a3^90bwsV6cZ35e0^#IoyIdRwQxr6c}J>aRpmj8&E<82L?YsqfYy! z8}>-PZk1($;cy>ml7ev&3K1i~;^GR*s=#DA#=+h;{_=}|jB8(cvJu>8Uz5c#R<1mN z&ic9|s@UQdwOXhsMY6ICN-3s$d!USwIALj36z^Bl>A$-grQOl!pvQ$+e&iD$dw6+u z^>RKQ-?6x~d}{0V?Hg;0OIM@&E@ykUZyPzwiD;!FT|WU-5@nuaI<}IEwus^+&7h+U zQY#Px6h$8I6$2Er8JA@V-RXf+LPe5TM_8o<<2(Tjk|;v9w1j*%1Lp#qb7-y5ijxc= z&`Pc@_4=|b%c@c;XF@0nB>Q`Nv)O3GwbsKp%f>v4)MPN&HA?Lmr3Mf3c#kpmEduhI zRB{7^Y!OO}ZxmDYjw>`DK7F3hSlp4t$q88&5a7tt3|X3io#_SNB{P^p4RQxxS(Zzc z#5h=Agp9=zTCuKu36CuJ{`-yWN2`q~OkpFdK{P}qp*(bk`B-WL;GRbx$K8)TfmbFI><@M! z^3a{`tC`(x{NKP$J34*7YH={I; zPRcp0%Y)a&7(F*s@NkJ|m&wR1BU2dhse6ATXau(Y%aVn~?R2_dk!u!2{=`7ECNKYj<>ufGOk4BBmL zP&=87!CNi#@4W}D)zv_&=bQ&PSEMNx&YVRaC+K&380_p|bTCMiRu2LZUnlBMZ~M}xtdt}1j-p1zYC0xdPJ+4Z$i6ET}j#b`Lp#^Vu22L~u-vrajifm71&_IhZwT3GD$ z6)35|sM@}DyDIZsQO<_l#pTg>cmH{#_3)u6yGbbhs+83Xz-@@jcgB{#Zz>I=v{gmB;in-4lF}oc%#nxhkVc_-cv|~GzoSXIjE?ZY zQ39H9=!4w8C!-*aW^3LCYUwO2S$rj7CJAKvJ1T`lhOBqz-=Y@9o)V{(~u( z25P$^7a-;Yd&)UO*T+J@sLl4FU{3Qtx(@&VAOJ~3K~&FDi#9{iaC$5cp(q~^hgujK zbR^zrl=vBzb@Z;M2MywbBQz+f!6v(?cHTtUO;8pQhT{<)`jMZ;%IS0UVtoic3wkd) zA1glBb^KpgP#kwZkYgB-1mDJJ_7GEZ&g<<^=QO8xZJJF3SU!0g-GwC_q-~5RBV^+- zXyPBNii7gVsUX9LI~GE(S~DynX~@41QU+Mg=Lgw4#1!+OBa7pr@Push3}L! zv{ulXSZC-YL#N#hCv|UY6JPt%7x3r*>bEi4-*b8~>k6G_E%evd(YfOewANSW;s@ra z^jd>uDU{%t=2M>#N-3px7=z{MY%()2E0deI^{@W7|J|QH{E-i(cVE8z{VTl%Jo>%| zapue!aK-}#n^Jbnjv~-B8%5cYZ78(@*LJ&uyeM$$^eK3uEF}byh=5As0F{z-duKcSr@r`OWd+9+Qe-Xen5b`n=qI_mL(*Lg& znrS}Otu&TV6epZ>lqN@KaS`I&Vu)(hL#vyiu#0dN3us0$T}*Ac zxM*)3QoBH#AX4?5U#&F+v&Bg(T~n{!dos=%OgkW=Y;G3iwMiD<^X>~8eE$YS#GsYL zXgox^w2mtu_?Qb&Yd}oon8p1#2G}t)=O*KCj#htMcS4StxirLV#}NXKW3Is*KTm== zdVG`%^tx@_VgyyCv9);{QL6)`tPaH}I|H0)jlI1cEG@0N^R4H?^3b?jDD@tA44qC7 zWm%%CO2~#|HXOa3F>VPR(jKkW231+%z-7p^T5W9HcoYBZm;WKQUwaiqYqYW!IJ3)A zsU&ExgY?{4q$^8q6HseznsY!;mlmxSrh@|{LLhCmXjN4$qxFv(Z4wB+8pm_l!1O^7JRtsfOVCvi!+;-Z=csuBrz-A0FM!|#tNeHBrm`tY- zQG`fDID6(S-v7S$BTZ5m7`*WEOZe&+z5sLuIdkSbe(@LoF3PeLd;9y?+TM&eHa2>< zZ{5V!))pydv&)n5_6G%6vZyR_!j56&^hJ?jj1+J`nU&calXi}*;V`1k=94t~f2B1&n^jN;9 zpTgOYkVe(_x*OvxOT13Q!ZUE9Q|n^wEoumLK3NW?lTtggO@y4Ea87)uG~7b|#c-Ttj?cg(g99@|lbuK@m!8u%*$no&n zaTI?pA`GWFq`R-HvOr#zkX02RMte^gB=hu)BBVji)?N&EXo%4Ja z%ws*R-Z)kobN3ac_QhtiDYTM!^|@#9$N%!TaN}Fg+8JOJq0B3!Nrrf70c>#q(m*Z0 z0qN2rqAUy7*ZZ{@V-Q7A?cZh$ruzfzzxo=MmKKpur_fsA(gT+}Nt%3GmPN$5=mUtV zN|NblLS$8ew%fS9xq-dCJv{UDQ>dy6?M@dDKlT{zJbwquBFDz&Mm3$zh|%ZftyNGCC+WH#e`% z#?x1-Y5u~4JpM9(uYuChv*oP%D=jp}=vXPz8yyU^(h6!;VqtkPJRNFh;;i&-qF|ZE zP=aI9Yuh1y6CyaQojKf99MaUp<5{3d`!CXth2o6VHd)X?Tc8A*QCo0uyvNjB0Xl?t z&mE5eiYS5-0=#ftlQOku2mx5a!32da6*M7;r#YC?P)^lOkNbRt;N1OJv2yMrHm|*6 zi4DYn&IZtX?l*Gw4DhDWc5;VgaGX5%PTJ5h&7WJ|*k*YN14J`2{gQF)tA

    4mGZ^lrFnyH(V7J$!h<^gB+C# zK8+}~Xx{d+X=1>90h}_qb3|@FxdzPm^nwVb50gQ;Y(=u|op=Rejh3Lioe-`VOo_0M z^Jd&GK!?>vc`r_C+g)A(xD77xWfx+Cjh#=l_g_n6=@5>Gw$eRnQrN2>f~gK$>tod zXi)+hWDM4^IJA$RzS^^Nca&5=HTNN1MLBc zOWuRsNOc_-pZmY@ru0124-%%xy+mm%Cq;p9Kr`iu{kBxg+pP}%zImLafZ5}Q5>5xa z&swXEgiVsVgHL$b^t05qSt^`)-^HLxW|e%$xuc)8-m1t=?GGfYOzhADsHoA9T}XZY zi}b9(sR0l%zQ zGa_I1gw?!iB==`(457#3pZ<9}7Ht_};6=>8iSL2;>%-cjkGPg%kRu8lk995y3}7n; zE#xFHCKZ|KlElgaZeH0weilk3yEwISUh=2`ZuY;4Q%h;hgaUIIe}jOcG&p5l1ct46 zo!)E8Yz-2>SXvtz6sZ~5%~T1heO-!hOG_hr6b!pI;15<7ck8Ef7qx(ua)G2{$p2Yd z2)FLAKMEvW)RWq+iubZHM+=C z_g7?g|7m7tmcM-s`_}>JOB5aR#^^^gc0Xg^;Jn|qo^qFjl0|AvsyW8~JOJ&OJ6#aw zo?8HKm4(UCZEXZAdc0+@zA~4Z>rq|nYEG={0 z8R%yNh_d`-MOG;#q(GK^z*!@`CeIFu4a$sMQ7kzA_7QWuNNI(xh6xBSDO#6 zpE#f}O|c5=MKaxAI3I|%401n31 zKlcLJgX?teK%s6^BKa^5u~?;n(yw6?kF0X;52zu1g89MDd%HQBaPb2pD92j`UAUY2 z?#gmW+jlYpG&owWO@dqfydy^b9WVXkD()e7t7XmJWjz1rr-o#8Lde_S{||@y=AT$8 zElMRO022&s|HmYH6c6PCJ=-N!0!3#8_BIf=AhnnwFuYT12J1a$LOb?7QYj6*5WB!jS@QFCy> zKTsKiK<#EMFpX2jam;NPn6GRPfFJzu-`hk5J?r3vo&{ftgm;}Ff#CQfC#i|lKPo%C zO3VY;6m=&Gseysp>LjzW@l`vVXRgVU*rcceoBUDz9cgfWdqt6b#LU~})#g8hwKPH$ zAng4c-}VEHSu|{2cOU^jUA4hpe~E$0W2I?^yXNmah%Wjtm=>W!$_YMQ`>uVn?@n@~ zeNWiweA{sO#S5*sbhPpxVFU>iXTEk8^?fyWt zXmEK~C|=$OR;IC6<61?;$ig0b%n%;P_M4z;qWvpJk>J+7TNdPin=oq;_S-A4ENk7y z$N%=&P0&s_N^XcK0wzW*TyzFWoST|6R*XD`a7T}sQiSji%`DB!j2T=k7#Bj_)~aY~ zj9S~N5#=j$B~5)oXxioMz2aCcFSD6O-MnTCSKSvRMpj9Ny>&v+x$|!jy!W3x#!u0D zYzJb;q>fBz*(rHpoet4mL0lY+;tpMi$w`Sujd!r~SVGJ?jG&KRyvK5 zyG1atrl2a4Hhhqww-q;R8ynKZ)Qy+66GO1W@8PQI3&NHHO<*UGbPW9b5Muo9`fFU# zhsPmCiZDOTU?*XDXn?#hDi6xNi}r3UMD0|OT`YlnQ{|0W%|sEN!&Zx6g0 zWoU|Gz|a`r9;w4t~6;k_dK2?^?dYMl^F z^-bn=D|4{^{wUQ57fkQ*GB(dpQF1VxIbB~)-g)1_`^`5u|C*q8tO{AOGp$40C75QY z8g~b}i6#v+)vIlIfK^J>kei_a+0GKW<4Vw8QN5$|%|vWnmpL{f5!}k-a=aT^Ko-L3 zQrkt`T2&!QnA9{;^x;J^c`Jc5U)CW+9ycByiwvlGAXve`*|%bZ`$dbsHO6^P^pX*Z zZ5UBGzPvgv=XzQmL;c+w{Hq~hUE?^6876SIfP4A!N1n<+3(6(}%6QYH)nAkd)%SI) zY_}(K=HgV;o*ywb&FBPku*2dYHXP&=H^$3C$hm`a(PfoC3*LF4$u0_Gn*qZkjlhj^ z3AV*on|7op)pu(W76 zw;7MKDMv0rHZr|M_rN#*?-gB_O&##W?1SUN1uwO_)YEaNm57g~o5dcuE;gFU2Wavk z{K8Ew%vB}O;-9_yfbNAat8Q)2jT}@Yw{}YV(uciNYrP0hsQ*164!t#jL~scTJm~JM z8K^oouItR+&DZXV_L+HS!XP2Z^0?&D;&)~Pu?(+Lx@4ATAZq*XsY)#~mnG>R`*ntj z=^fs@`;wG=X1(Y5Q;FNr=2d?h2OsTn4fuOi5{t!Ma7Is8qW%B2qQ#fRo=GQIvKa(E z);)n0MKSamGs`{+R*iarLClZ8YkDJ!H7C+JN|`XDaX0+rOVZ{qP`oz1d(X;aEZ|It z>5dKV#Qf0%a2q&C@!BuAJbVY@7|S}|Ka8QE@3e(qO6}Ss)Z2yQb@H8p+W8Zsv)}_P zY;pXP(O8|KT1Km++%+#wA}h2sw_;{-iUPNy^DlCz7R6Sk&b_DAi-Ll+0Yos(gcj)4 z#cPeEsb^nR9tchAhrI?7U{V~I#9IA} zZ>Y)KG5dT5nWQElRf3Q4x8#F>uK46qyr%O{+N9+U<#Yzw#1ObuPucp>D*nu4ejCz! z{N@NQYvY@wO3`^p7NbI~_ob?fSXA?o{l%HsqgOqq^pJ5*HNOVJ{FsORC-@`t=hKJ; z+kwndY&()Dtsse6^O3J>M^`z@M-+?N3xd{zsdjN1KH*@JM2klLhNB-h;!&oaWgHd= zR#|Dg0)wV{j=q)Wi$HPu_ArPGAar`)yNDy|sJ~It_4%Jsp;z=K3S{)>!95#7puuHX z4g}b@0Y(9uCW_ikWLEKf*2fA}Nl|8%;o1iIs5&0xen%eE(Bo5c^w|tz&&}8ldZFF%=I3VK@4+a8{$dWQYqG#p zC41->?7$T>EOG;LF0ZLOT+3Kd6qT%?gDf;m%}$Ul0+h%hKv!&-1jkF=aRRV)dNl0Ew8R{hQ@~P{J#HCH*Eqjhr5s6Q6*6pvAd?oa{rP$q=2WQNqA?BaARyu!+ z!`QS5H~Ao&1MxE*%zP_}%h#eO(38sb!Kib4s;ELpkNahRm!M)oPS5LjwNbo>xAO_= zZ`c2CVokG>2lS!BY@Il?;DZLCVp$ex`vaFlI8zzPicSsM%*S9AV^ZG>U2B;nB@0n0MB6>e9j0*{Z{?>{{}1nqo`<%Kwqp*yPcoN z80bS3*g&-IJ%Uo8Dyw~fw-evR@wcmcmqI!E z@l&NE=}QJsNE4NC*MB)pSj|J-U$7c`5B2FN<5VvRBSkXV$`Dy^^m`*JSxPrCD507f zyR0*~8Rm?Tp#o1XD1eqRFZIY(FMQ48t`wC4YcmUARxA*IFLnvBeGrXkzVAo0l>DwHfr>$+!;mh$W6 z0XlPEDlbGkF8P6yl6;#T^X(hjkO{Li<-25#SfI!9)c6of3xFd+b#c^jVJqEz|IFIn z7Zs!&x0C7>JrCWQysQx{U@;k?p9|R(_4Sil7jYXAmkfm3Y6Rw|-W^&^b+oWm>^TMS zA&Me>%;r#U6!Z(dL#e?G;h^-;G-%EZl8j`3CQeHYKuO{IP)Y}t^Jcidx!P0~7N>3% z;eW5okZkkiyUUa1?NTQ>1>LWM93(${6CI6OL4vS{QA-%$0a3Su;-qqx;OjX6?(4RI zT|Kw44gT|JvrN=GS)LcN4R*r!RZQZH=*3B+5M@_x^-|hOnV!NOY@K2O0Ii=*X_+2fl{C&DKbGv(~2Ogv({v0#mjQqC{%zEw8iPET1nZ0VwV62B0l5gh<>G*0*(N@+R_ZW^zgzzUB(%?xAUyoz#xKA!& z2dMdVWKZaEMzKPH^VrYo`p!$ls|6M8r@sF3-S!9N4bNqF9sO*5_XCFw;G5LJVBPl1 znqKeYgGbB9lt)UmZ_=8p(o!H1WNdg@*l>wOnCvS*3Vfi9^0n~2f|s?!gxs%3F#hyf7pqnO{xUbw8bbma@4J; zPDfKGMWM!c2)A0L;2P~>0(Q)A?WaS1S9?r}{}_!3 zTyahw^e$+sQ*E#OD;*e5hilyvf_tLdL;hEH=RF@D9S%hqgjKZmo=wZz=2~#Z!AGF1JZ*H@y3^-9$v3uVL?{N&(E?UE!{Zlji+oTv zeXzlKDYgkOv7Nh#!DrW9l5X3ihb}3!9L%}|!U>^gq9gbLfW^YZhe?w)8EIw5f`!vN z%mi2sxVKX_@J;1la*yG!TNkV!QW?)=I?vENc<Z<{)oNLwU1Gz!(JXxOLWPR#^HU z{NZ2~JOBk-3T|lot!iJSUs*!jV|aIB;COc?@%u{Wc?;@AGV+VmGXE?7B|b4{A{tn= zE-F5ICzcB8;^gPvz3ozqrlf#DBA;delvBPpM7hY!`enz|HLbR{*^1)TS*nl^aPvAx zs>t~8#xRMy+5w)EtH7KZ?NxsXO5cf;!!f>{7#w&Jfc9b$u-a4k;FvK|UY3Z1xcR|)_Cm7Y``{}Q z1}1D2s^tA!_+^pgjA5t=?xLZG-g{If5JM4*uN^L}`y^UJZ7~PVWZGBZNjQ5#x}x1m z-jx{n`C93a*JKtXQ$H0>Gnn@st2nDURDO$^iyQrL?ugx}vup_s{ zf3Kl{UJQcEBm4?!kem7B z-=zNSOSv>;wV(0OzxIOH`#Wgp@mH08@~*e>r6PL-*`r7vpXH^f5m=6vLbzA52(C^X z>62s6iO0*$_3Qk!6y0@Rw%&8(*xvz`#}<%TyGIhn;6gNZ;X}dVC0}JJjA*yt~pikW7J&!ljj)$4wg(AfmW%C>3ypT3JgsU?wzl{V+y^bpX2(Hap9j_kc6Qhv|`Z5&v&;ZGbKu;v^^RCWX=I&Elv(SOvs zPZt2)6zw_gDxe$`A(ge`Yp=3COn&|@B1t!G3W|LovXEI37KeY zOWi+z$=*uZK!ZkMHk{kVlO zG(t3)gGms^<-J$t6@65-d*DIq-(ExbPE*&K$;h5hCsVwRHKtjDqg|KCk3c9j+Kdsz z;VlLVdM5aKT7Oo?({45jXE1*^e#q*3+-dV;c5?8l0n=sV%YGQ4tw=d{ z=D~;NBHH=AUGBlELaP+61+rtF<@{=7exvs$@Smb=Q-ha~txd5}R?ptO#t~4Qd#{Qz z4l903wopT%M9s7pMI1$m#{@}cZu75I)#40r1PiIz_Byr>%GCcifD$*;^qa}zlPqI< z#=p!A0;bO)5*3Oh<_K(@xWfJFUYmEXVVGEeadvR-Ob`ttX-BYc3JTzB%K3+Jo*5X$ zBI#Rkw||+$r2n2$49d?K3=|KhhT}&wvV$`4P59YaF+rsJ=)S#*vHdA}H~Q%ih%iU8 z!TH$9g{cDkL!STq6x!-i4>?`=r!Io67YuG%FRSn$@sU|s?-cbkfS3fs^E z%x~*yI6K3ULTHM9XQh{#p;-{X3Qha9dS#17oW@>(pOJn@*QfNt-_`v#J5lVh2dD+3 zlo)_xt!GZ#W34K>>=}?l*Q05m5uuPBIyA&LK`Hj_!Kd>Nu%`5-4li%)P-|-}@(>k}CEzgp#-^Ha2UYH)@~G%+!0b7~2BEeVDcK?P!fEpdpKlQ0 zI>Ao+lB9CNdKq7oM2~}TeQh@s)Wk`3JCJBc#($r#9{WnAnqEdLV?*gb+i;!t+;+Di z(WsJ4^Z&An`}=JK)UGQpG>E~`L}%>V-gP+csY)SmO1C&Q7p7;To#y|tl;R|LnXJ>T z4v|5r>&&_7cFs<%6YANq(}4l^ghleLDuo;;vC7ZMDqGN^cGf->5LjQk_D%k6n=Z>= zR5eqzp`G!S_LKJ}oeb_o1;$%Wvl!36yFfZ(=nKub>0a`j=d0f!AQ=q3b_LKr)8=e% z_Yaxau6>=jU$KR%d%t1+6LCYHS(a z*X!ju^oT9nitZk?jPEQ;hWb~cJ=r-?d!YzOIJ%?PjC9do=Ha&+9NRiLb**1>=cCzP zqnx8#&24lm1zD69IU}})2a1bDw9Mk#yQV>VxO@75(U}p@Ypiowp|YCO6ShKuY52=TbAPL%&!3S*4ysay$PY+z? z?~bc`y?`|x&TSetI1U+PO97GC+^%%wNMfJaUHse+n#tYj6nEU|b=Im@W!?o&4GsP5 zf;<*j9R=63d!sKwXuOy`7=bq$D}2eth<|MYj8+3rIG;YZHgAR7Dh#od-S?-CebsgG z@Y7!rh`q8;M5sZsmEp=2r{Va>R{?{ltjSD$Z>e9pOk%Hm^iRhXM0!lwx~wM>nX>>e zo5cS;f{5q(8mMu@ene$!LjcSq?-u$bo~_Me%KMS#5*Lp(Q^O-GGNU!!)pTON+!I^{ z^~y1{c(pkAvH;sbR16HMp~O?z+Y_>n@%Tda*{7uyN z*qTaQHZ*?-TpZL1r7h_xv&<}XLxUpZhx)`6sId1EI6BlZX}#(Wa06t$w>+In+U*3bE?5`^Cp0#hga5|7q+j=n32D+#O+xLc7m zEiHKI8s+_fe27(c->qMAwx!XKsJK{{k>I2{)$$m9D@)9XRH^E8f^sIB;UHf@!A?Ak z6qT)vdII9;@bstmr#1(kuS6X6vnqk`DImE;66?*%ab2Iy2|Q-um1RgJ{(A$C+^=ha zsd;MRT-aBq<_Ak1mw2|fUC-O+4q*#Oq5}YJt8E*t*na*z2fw#P4t zwp3*P^Y0|kC9P*)p_~Cu$U$?f+dm04H}b%5HZFm|n@mc~?2jz)z+y;y5U0+kvub-X z`Dzu;N`1Y=n%Pt>C7fP0md&$dbL)w-?Q^nlx8B94fGa3k<@zdoHb5}#?O#`vGZHK zx2|HT+qSoRoI@!#Y|yR-lojDyHJmY#d5PcYk`^sNR@r8A`=30lYk(%pM9}JZM5d29 z*8fa|rnbv$&6v%rZ0pme@L9`6uUW*lU#7S13;3d~t7XkDzRx2_Z@Eq=4XX?*h+H3m zZ(8%f{4A=3zgCTe?_c3?Fcb{{19l@yyN0Y>YDgGbHFq_9 zjbI`l3K<11{DfHs>Zz5=nioU7fB&?Zh*Tcsi+f0YnrSg}(jujlN@DK4B2;2p$NP1s zSUq-lzSHW)rP?j=8kHyfogICV%ry!Rhkk}J`M`;IqOlUNHIVqY?UZ)8-=?f%%=||w zui0^^8lQ4lQEzy+Y6P==Aca^hId$PgdbSmVb9&_#dj2h$L<5KjWjpC(X z>eHH*CblU9UxC+PE4nz4xHl>5xqIPz7;`C8rleK&s+@Bqqt_o<4)SSmkvuWso>i`kNEj%jun&=m}-WKXw3I z$bSlSE98lKN(H1Ug9d*zU3i!U%ovdIi7#b&uo{V=yOrY7`H z$%}Uza@{kqNypr2n&z#|s;xDEv?WERw0l>9AX#5P8JK$Zx&O|Q`*Xl{tahc{#YlHi(HDr>+IZ3xeT$4<7I3fSR z3ph>Nt@lCWkDAdmv%7p$MO6@z%bpk)EP~^HHnz0tGY$ffN2P;h>66v8D!x-OuPTli zat&ozs5AfYGOi)3f`Jv8$V#M0aINf|8L(U>_`RBRzg~prI4Jms0IW%(3g4;b@*{RS zP*tx9dz1yW%fB?f(p|ll{b~!6mwXf|j~~2zCmbiP{jcurtO3u-oG~E6o`D%Z!1M*7 z?feACd$~2Kt|$${aYy@)ofJw@^wh7$nI2Up-#WjI()-p@Y~hH1!-F`@`{wnvh%)M_ z$+oHH1E!sI@~zL@LF#(a&{=3z5AkT2tlCeADAmQzJe9o?Q>|t!2m@pDBMBJT>xG03 z?TQKgys^7QL<$&!{iHQew5`E z1t5r?-Ln`HSk;I4WH|6zj`^)f;R|gPwEsWyl41jgK10#(nb{BB%* z832!!lEKn-EXdsFL^z(5-}mVoOKj7T-X=e{)<0ghemwWnt<^q=vndQ%%JAO4SLq}$ zT$OsG4v8}6a+;2{!*QruL zwzZpyi>@K~WcpbE>*(y@mH;+L+G{3 za#GU?EqQxSI%ogw?C`*6%GYi^AMo(yDSj$Nm*K@7(5gQgHUQp`1HY8b`xIcnVwkI@ z#3l)Y1H;5Fmv}SQh9a8$qk zd2)(BMN4M#L=)eAWpi6U0V2RmiwsCXGpekn&j{tix*C{FPDmFw5mA$4{OP|d}U{Ie!X`GbDJ&QWUbr!U_N>yY9#$)#%J zr2Q`<;V$1oF#4`Bb|HT`Z`vFc&JEaUdu>^(rvs8-Gz>|}ez z=&c#JP|e%TX8JnJeu%#GkCxHq3!Rb|KiXcLA&ih34Xki0;a6RI%{E`G6ZfO4k_jR1 zvDIrk4h#I$_vm=pJtU)(Xg87Xql9o&(`^4cy(vpF?)W{?G7#@8k9*i_OivEC+Mh}9 z$iwMsgfdEc_s$T^J@Xwen|`Pyy4-gIXtT7zvdxlI-fvybxVv8`=OWiiNj>||kF#6> z@W;k7rI`Wj&!LAdl?b>>&de~8Z0q}vapXVR;?6RRgl#ETQ18l+C&ceiH(Y~VmL)B8 z(b$E|($3;uG#=aYMP8GpC)DfTvKr9%d~?AVgSO+wCm@-|xbQ_39n7k%q|cckk3X0d z@TpjHVu{K3g8%sVYKw0miRHVsgM(^hJ}uvmc2;?t}=fUN*!BqyE7m zaLTMpRr^D}5-Z`c2w#%xQ5fYyq~QEdPwj-wgasaB_|ZQVkPMz6n$2qzrbhuduZf&( zb}8SQ=P~fy+!sVJRwyFq5D5X)_*t8!&WV^&Xt%2e(l0V^ZV9`J5(S!sw74!L(tBOD zRu`a|qwiE-muXad->)7_4$t5h^Repw0*i&oG>c$s`{xu}2w=i6!uz6sPl7L9WF;8w ztyd`;$40qlUhwoLt6Vm^A-0Z83psI>8gYb3eCtE1Z0Ul0(&5g0b}%)m*ww=o$50Ys zJ&_xUN3;65g{OcS*Y+b}M0J!cOldZm^0)uT(O%jaWw`Os+6h4c;3|W^zalWqxj?T=UR`{v_S}{V#kw67fUPOi5io-Pf z=PjlaQoMdT@oSfM^^^#$V*#yS>5i8=C`*-UsDoHb8*3o`AK$xQ5l3kyr>%T3FsXYI z=cdAbijDj64Bufu(>B~6~qpIl&cXRGzVS4rLIFA zB|rN_QqB{|(x>$2(lX6@d?xSmqFM?gD%%frSC~nF*|I*s^!~E2yKc^gpPoHPF5e5g zncM8~E13qD`v0o$&W@rHi+{O`jhiswknDVQ5c`~h(^@`bI#kVz?w6?ISccgCm~|l* zxhaT5&ow9oGW&)^s2ca2fv9}w+9ILYB}@Lz56iHPi>`HLg?8a%6>@_nIYd0Nf>j*T zr8jZS=z0|E%UxDk30`wB%`1inF*qgvA{8faox~CRd6tx9v~tPg^V^Hds333abyp7P z%EVaxbomJ(DJ~E&Y3MrjlEnaLf(&ZtzZdTJ#oafXXsd&Af&^D9f9K1)UepSx7$D?f zar5$Rg%c0L(W7DJasEb3WOygS3SUf4epiilxj9(LaP0)oPgr#K&y62id~n`G;z)pL z6GjST_dRcHn7X|E*LXxe>1OT~)sWkS^3D9~4w~*f^~6+RP-)Dn0JwC;4qdY2z6%0!H6tz_IA6d7HfPvM={#!zf5b zX-z6W1pm+$P+l(k@I(Q&33mRm2Cx`6Go1NzJpSS@VcV|jfH9ECCvMg4@8CtLhSu^XDEyXU;K1-s{wnrz6wuSqOpI(~j z&HvJ3ioZ}rO*9rH2R+B+01YMwj}c`k_>2G? z^HcaXpVoJq*+DT)korM)_+2QC?l=?Rkp}NwVd)yt3H|hl;Kx?V$O!!~P*LyvgU63l#WN_aJ(2R+J#rkLTG_U7 zd(<(Tofk0W%MeJ+C%o16M`Gd#l;+|4kjqO_SF82L%HrlVJQfvAtzMxg_)vllIEdl9 zjDks0?1L|*WIt8GV%>XPWU`VV9&rl19IDHkIEbHrDeO~I zwm*8?`Xbfv%Ws}EM?R|aGXtrhppQE?of)yeOT!Z5SrHcLBg4S0Z!BM*)0X`#d2tKx zgdwpNy&$9m!RKf{$+T6)Dk;N%s$No<5TbUncx@l`g2pwKVF)HKI1dcV|Z+* zv1BS59^Y6YC*|aq|H{* zl{%H}!9d}nVF+?h^Z(}KAGf0S-4)i8EfrZ-R_biV7occD**ORo<(hd_L0W}?tnqyp z_-jP*7poUE2-hn{glAE2-U08A6BMP2m^GCH!Nr$szkmuCyKjxwz}`=uPQhaH6@A3v zpr6yP&({IBnR;RrS(JWX@|~~_cqg0d?dw={E~TeJqyu)vWiUV=M}XgVnsG$p?Hp#O=-`J`i|NS!i(VwtI{-JRc48U$$$*AaQ zpTS>Q2~gE2<^o5nv|02lG3L*N%x>S2<+4*&pWBjxW=h09?!NLzwusKaz#n@4of{0MRc?RTrX=3ONa2mw|Cz4`0Lg}*N;f@3|x0t^Z*q$y)Xeu{!Y z#;+K@b9c(Sut&iyHW&n5l2Pyq%xknQf=I~XMYz+mnGz_6Xrh^7)wp%eoD4dnWHg#D zliz(oUxt)ru!!Aruw4)rF&Ku&I*wn3Z4Y(k2fA-VK#|&wf7B9BMh7OU_V zHYGCO5uz=&2`Gi5!aM%5U*X+c(%Hw0DF75$NNC1f-^0tkYYE&Biw!z8y5+6J?$Gk88SKR*lNcyS^1hND_g9 z@*xIc7p(T3lSoWYoQb4gPlNyY3xmecV1u)cvHqK*&MnRx3+*CnUpg|^YCCpk0%jLK zuD*xb`0IHqmy7uXF5AUXr&fq;phZrZ>$0|$P|y}TR*%}X<-lXf&Gxy_bN{omwdwe* zVNG?;^y(CoXfjt7l(zkT{&T(|{h}kUu;*Tbj_lz+#HaLZlA{Jr69CYbf+`Kr{RXP* zTs$iorj(=}(jLj)H9Glwrb5E;9B)_=Z|=|Y9d$yBNy!k)TUd(ka!S=`u*W9h+J2*7 zooUi>i1pT>N^Z!xD2Y3SOr!eigKP88ipvueFfamFHKwNPE%n7VClA5E{6gr0`0O)Y z9#sJwaxW4h`!#{W?u3GJGznD@VS?(I>(dvNgLp+1hANPS;FR<~;jYXWXVw5+Y7yg{ zk#eztfMUY|^I|5zp~o0^JNLTfOeOWIkV4y9r4;aTJCEFq4OO(*pt14`AJl8ECFdQ= zLr;ZZ2RcFathkg=doXU*%OQSX$+)K-2rV$9mc#^p=AKv|B&`5C{QF&L zAzSS^8FKxU?(bXMv-6D}H6cQxjxTC1cxASJtPHM9UAKlgXpDdFsDgmQ+m^G2fxL^|d4Cu&55tf6US8$m&c_eT_ju|e@ zeIg6AHsKNo^jYK}I zwmVB~f53oGI%{o9UDfp4^j4_9UQ`jYjuXwXlX1Ne$t1~W0LDdRGNz+YkIM!2`_e#S zn-F{a)r)TDvhjban+#t$nK}ev_l!@ zV%?j2B^FS|t}o;G@GA*Hs{kEa{M%4|BOtUYE(g_i<@;;t%ST;OEO(*RWcP{GldAkv;4Q9d+RT6RWx!Gz zf^Icd8MLi-V*YI*Sxvy@&j}Syf93?^h>Un62V5VH`5laX_ z4CmTS_8%6VQ|OWtYBjfEWJN$NP}@>>Y3 z32}a(*NrfBjp?zTa(Q|!e6zmVy7RXU6=?-UfoP3Ed;XJ|M*k5n@m={X^=vUOHT#w_ zIwQz+Ei#+@ic31q&5gxwSdh^f;OL$UKxq*Li}w-!f9`3X-OhFK2QRG2WG)oiinjEIh>xJ&S7BAMLoqQ5;B*YRize3MgHe=4gB#*=#K)FJ8KR zp}bwRE})7`<^BEfCh2i^twI&<=pJ;Um`Om3VA?8-)U&$yIa}kEm7 z#o9bF!UkCYL6Wp7f)$_85mOM;HJB2(a7)EEQ!R8|IL?4?Av6JkW?}iqgZ%PBj`yNS zscH{ap4fU8@+LUtd71k2Qy0&1e#D!H9scdtm6R4To$o=&kawhXAy;peK@WrcP`DWr zN0s5oZ_F#K!RT!>f%ckshRuqVg0g8+{^ zEG`Vrjg5u$@{-z1AR9_h8BKB1@pMbtF<(t~N}!SDsrx-|SdQUpdY)Ra!mkd$p4Bo? z4{`br=N$@0lTM$Hp<}{DKsCJbLwn{xB&+5{;-{0iR;EO!|O2YSv8KhE1jyta|&t zqQ@k#XUj})I&-&c5?h4GodlZI>}h8(%Dqv!*R>*qZo7a4{7IEcVv zK$jp{o&ry!ycY9Ik_yIXrjixO4q6{&i>#{<2k3n#^fP5QyT4tu4?Vfjh2PoAONtvr zoeDD*PmkJOs6P^t(6H!TOB8cHAjZPI)UXfQos9VMe5cmT8q!8(P)1{ffda+y7PDqB zU~ZvN;W5&3D8%X@+X)UDQZU>UQ79B~V@@_<&6u=#8dq1Wl628*^*_RCuj;CLfB}{{y7sX5;*khXitIHupi}UE#}r z6Qw!p>7yPPS&^c$>}oN;<Xy(kNF+KFz>lw7Tp!6Y*$p(GO|+)!-llDN^+VZfP0v&*Br6^kA{+4 zL66(7w*U9(art%FTEEv+sc z@t((ZwJNj%dh13%i_4y;?O2eJC+CvwEGzQmy;DgZ7@Kz; zL|@S?ur1>Y&rR<|j^k&D(dz6fNWSq$RNdC972zoNrIIqQ@cCadm`cgNEzRfG{of+DZ6f0U5*sZR{3jU zZf2t(WNXNx#~2L*i?YvzSGCh68nARbTqc!2+I_)oCHH;qp>p@UKkK7X0Fs}(w$BA} zr5I=b$Gn;2Nj%YyevkJ=(AKY59Zk6yBu^3QvPn=`r{+$;5EI^{8}%w~Tm4DJ z@OxVpU}_Pmw{OK(kLVl^H_M{vkZlmr;JB9hriew@p6r?PY9z$VS+4{?{GMnu+485P@4>cVDSOG<}r$qJyynFy%>y4UGrzTE$G zUaDLfu)r$M7nG9)%kR%h;m-!a8?1pslJxE;`3axiOvHrrt8TiSJ1pY5rE_k$e@r?D zq}OVd@psUD#hs9)J+|BL>g*@f|M=rqt0FnZ<2#blE&|2phl9NOiY8dbiBdr*zueXf z%fGpvlOC>*MUP{P!x-vHD1&!>K)5Q!Z&w$RKiwJBrpv^Tp4K+cuPs#}?1n7d@$TYLaVE-_ zM@)orkO?bt9c+(;w=WvCOIBXe6UZcJ@L3HHSUu#uefcYCCy3~Pqo?X!#?V2;K9cZj ze$mXQCv&reEnhEk_u|lUiD(G@!OTv^kFpKAbEZI2Nj!SY$%M&Xbx*)D6S_aL{KKnn z7y&mS=T>E=td4N5}%P3XsFt?+sAjdlCf#MjpU$<1LKhfdw2|{) z5B9=E^uK_O*bsKplfqEy6#F&Y-x}vUqIv492f3ypR*mDGh%!l?JLCvhk-wSpnViaZ zQuSHU^ryMmr#=Q|(n6csssCp73RcM1a1<>{?o|zz9S4N-U6)u~R6b9v97?dI&FLfl z>-XI#643Z}vPeXBdwm2k91$N~s8JKld*IFr84!m=;kT#FdyI^& zH6OkT@FK{h@P9{sKqvtpNziAd9)Gfoxuo0Q|JE|tR0O(vnQES}if!zqAft*ur+o z?AjLi*q^c(HjMd+yg;HP^`9N^mbh4{%oxY3 zSnJN!2z_9!7Hr3_RhjZ=w$Vd9W}J0hz^{k3_G&Zll$HAWc-20L9+Hit_rr@8GDmX6 zMG6OZ@<8?bNzj2LJHWfacphWh(~}uTK|B@qfEXf$8=*Pqy0Q73H1NipE%s;pL-F(ZEmizG=~4Cd#4^Qz|w0*$8D z!iJBI6Fdzi)OTx}yQJA;gKqm}QY>0;7TzoX3n?D*l5GQjGc}6k9QJz_K0aJ>APC9h z^+aGQgR$&8->iN)A(TI~jS$Y#HT^s624)6EbP%)^wXHDAf1c`{t0awR7Xk$3{ZIX( zC6Z|W@c#OG9ZdB2z;H8LnNsy`>vc6y(C7UM^fcefu3V+AMn<>}O*O}7!9yME7gj^-Ib5zHXQ+Ev-)eog16L~rS-tdkte+p1g0=Jr`x%7o9*#sl_lTR z^0x-!l|14QG;e8-m~QIXycQrHrIFOX8VP>0UV#g#R)DK>y#7DHO7S}p^%Pm`kmj}MP|L; z4H%{m3v9UK>4K^8)@&|C(@OYokL5RbRvif?s<@#H}Pr2Cj!oXhq=U7AVSo zP4g*d(pL|-Q2OCQqC8wN*YWq=Cr>&c6aS5wLu|P8$E0hhtIc+(F}%B~0@GmVR4~y_ z(aSLIb>*Etp%U^aMj{gE(L+TO_}fItZ$BlF!iX)$e)E73_4tjBQx|#GSccPvMvT6F zl$B3r!$+`iE+{X+nA$}ZQ(8@dUhXAfN~ft%i@Dk9s}Cs)dR#hAjFbp0Bnf(pC9;7N z^a(ui5Do;aO&;kJe&(y+%c)qN;8nf6qK*6>|LBJ2+4I{a-kn<(gl4#5fm+GRMzt$e zFs0LsZoOz<)cwa8g_IRWMC#!PE_zYl$x+`iri5fFNySm(o9S{h;u>;Ziii2K^gmWC zJE{kmij6S$wT6ESAOjGivnlX1lNn`3i}oa-A8j`N->xb0an`1jZ+q6_B~%=mnDqNk zaA$(p{T1#Eez?~_9GmD;!*S$@<4x0F&B@0)0~6mMVL)hrUZM}STzQ}yTDeQ&w#|=6 z{5#52!en_`V6N>eKyH~29S6jo1S*2E#ZXVl7LVl`P2li3fz+93Ld&)m-vI0yqCLii z44l#MD0AZn&G36sMG=FoP%_4d4oZp|gArsaN6{I0jbO>I)Bo#YJEe73yJo7l_}Hf4}fV*?SYLiN(IGY!mx(PA1{}sN46`|6At!`@{%-Q%HVxY z+%f#$Xmi`Oj=T47|Kz1yw`i)~fl)u^ao2$?0lvJxJ z+2w5b-Whx>M865e7-h}`fx9s}PNlc$crS3+fdw5Ln+Cv#hm8MwFY^#|Z4_jC#*bJ7 z(wxplJ#b9X3z@U^j||4Te7V08+<)LJdc~Y|W}$g!fYt9#&M(c=e{%gC`TQk-NcQtz zN3!1LHaD8@t!`Z{ZEjifZEjC)2TR%1Gq2qn{;)nw*wER7Lt=!mSzap0DI@Mk?TzDxwtz?jqOqrm0vgP<% zM78{79&9bcaiGPs^)j5Ss<(aEy0s*T=YR=~?2)6IVR#A^AN8^ZkdXFRlpbc4;$dbF zJ$ZGL0u1i_YOyDzyq&l2lxp+{8ym^Sw!1+Qu{Vby7B1xmE3&P_$9H zl*A<=i9C7-4=)9s@Iv*(7}0;&rczK877q?TjLS^SUtG<1p=7MiNwmAjNcW#mHrlzl zZ3Z3D&V+~STze!e`mrMkq!+Zn;O$=HD=UgG(%fEQ8DRZ!z(W9-BE!OKm|iA%fy;~x zuiig-G7Qy~D7vSc!--pZoTeXiPXLk^!ZO14^F{8dJcp?H+UkEE573rqMF8*C^H&uT z67`{);J@PdoiYKPE#{@4i{_WcK7^?m-WJUp4-}fO8-T$XSiP+Uqo?ece|4ZHJ@RHQ zauh3>1Y2%L_wT}^lnL0``?8+b5_h^ z8g^i*6WYd0;REUE?+zBceh@h?swkeVqQGc-A6f)BJ2u3+~*CcRG0E5{M`gcs}Mx#x12@(=? zZ*x$JO!Dtdu#_(6nb=>`XCo)Qu!d`~r!=xqo{NW;NxU%kQW(t953QX9IiI!dlWR*4 z$?LM(O4tz&fA0JSqTlx+Ew1~k+)#pQbt39=`rEfgeCve`LQumeW`hOI{UhppOK+v7 zoZb|(87pq21Q%*BtGef`2R-929!R9nEh*93i&09O;>md98g3LFDqN~~DT~sDt!JUi z>=Wg+W4#*aO)L5e7^U~XOn8zhLwXZgnhK)5`j!UOZ2Kk`PdF?!wqmH00%|1KG^$HR zLXyHD0i)k3{j=s*kRnPG5dLao8KsLM(#ZT@O}AmO0xserh-#fUxHS64pZ{H;iFA2i zeg}k))!oHkM!$?cV&IK}>tPlr#96(^+=|B={j)FyPv%~Gn z{dppfP$#!c&-pHN3wmf&`@M<8dGX95Y*^g?(WjfDu9ZF)6v6~VVn$F?_ZzImr{sj< zwxhjc;N|xioTMPoIG%c~W#>+z2^c(>n>d+*lK1~Vrr00w{`C6lE0?99qoEF{q6WA@ I-YWY40DIqW9{>OV literal 66906 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 D{?b2= diff --git a/launcher/resources/backgrounds/rory-flat-xmas.png b/launcher/resources/backgrounds/rory-flat-xmas.png index 96c3ae3811db74674e47dabeff9ea411019f5829..05e6687ca9b6bd05aba5f4cf0698190f12614ce6 100644 GIT binary patch literal 51816 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%0A(ZWp|H&}NYViSqem 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 n000000000000000003|TJCiFY*!jbX00000NkvXXu0mjfP*|t* literal 59495 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 diff --git a/launcher/resources/backgrounds/rory-flat.png b/launcher/resources/backgrounds/rory-flat.png index ccec0662bcbef77e2c9a59d6fa5cbd4414193804..4536dee78f276613f55680817d472336c69aba3f 100644 GIT binary patch literal 44719 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 literal 52337 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 aG&83}H#6^X>&c@)g$$mqelF{r5}E)}QR6TG diff --git a/launcher/resources/backgrounds/rory-spooky.png b/launcher/resources/backgrounds/rory-spooky.png index a727619b48c680461bae4c2a96359ea66f9d076b..1aa928671516c3ccef497aec3b3eb454ba115e25 100644 GIT binary patch literal 76908 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 literal 95940 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