From 09d258670aba47a2a0783ee8c443083a89342336 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Fri, 28 Jun 2024 19:26:11 +0300 Subject: [PATCH 001/177] create mod meta information when importing curseforge pack Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- .../minecraft/mod/tasks/LocalModUpdateTask.h | 4 +- launcher/modplatform/EnsureMetadataTask.h | 4 +- .../modplatform/flame/FileResolvingTask.cpp | 294 ++++++++++-------- .../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, 243 insertions(+), 223 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 <QDir> + 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 <alexandru.tripon97@gmail.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 <https://www.gnu.org/licenses/>. + */ + #include "FileResolvingTask.h" +#include <algorithm> #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<QNetworkAccessManager>& 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; - - 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); + m_result.reset(new QByteArray()); + + 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<TaskStepProgress>(); - 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<File*, std::shared_ptr<QByteArray>>(); + auto checkJob = makeShared<NetJob>("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<QByteArray>(); - 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<TaskStepProgress>(); - 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(); + m_result.reset(new QByteArray()); + QStringList addonIds; + for (auto file : m_manifest.files) { + addonIds.push_back(QString::number(file.projectId)); + } - for (auto it = blockedProjects.keyBegin(); it != blockedProjects.keyEnd(); it++) { - auto& out = *it; - auto bytes = blockedProjects[out]; - if (!out->resolved) { - continue; - } + m_task = flameAPI.getProjects(addonIds, m_result); - 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; + auto step_progress = std::make_shared<TaskStepProgress>(); + 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; } - } - // copy to an output list and filter out projects found on modrinth - auto block = std::make_shared<QList<File*>>(); - 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<QByteArray>(); - 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++; + + 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; } - auto step_progress = std::make_shared<TaskStepProgress>(); - 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 { + 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 <alexandru.tripon97@gmail.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 <https://www.gnu.org/licenses/>. + */ #pragma once +#include <QNetworkAccessManager> + #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<QNetworkAccessManager>& 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<QNetworkAccessManager> m_network; - Flame::Manifest m_toProcess; - std::shared_ptr<QByteArray> result; - NetJob::Ptr m_dljob; - NetJob::Ptr m_checkJob; - NetJob::Ptr m_slugJob; - - void modrinthCheckFinished(); - - QMap<File*, std::shared_ptr<QByteArray>> blockedProjects; + Flame::Manifest m_manifest; + std::shared_ptr<QByteArray> 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 <QFileInfo> #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<BlockedMod> 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<BlockedMod> 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<ConcurrentTask>(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<LocalModUpdateTask>(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<BlockedMod> 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 <QString> #include <QUrl> #include <QVector> +#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 <alexandru.tripon97@gmail.com> Date: Fri, 28 Jun 2024 20:28:52 +0300 Subject: [PATCH 002/177] create mod meta information when importing modrinth pack Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<Mod*>& mods, QDir dir, ModPlatform: m_hashing_task->addTask(hash_task); } } +EnsureMetadataTask::EnsureMetadataTask(QHash<QString, Mod*>& 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<Mod*>&, QDir, ModPlatform::ResourceProvider = ModPlatform::ResourceProvider::MODRINTH); + EnsureMetadataTask(QHash<QString, Mod*>&, 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 <QAbstractButton> #include <QFileInfo> +#include <QHash> #include <vector> 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<NetJob>(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<QString, Mod*> 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<EnsureMetadataTask>(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 <optional> - -#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<Modrinth::File> m_files; - NetJob::Ptr m_files_job; + Task::Ptr m_task; std::optional<InstancePtr> m_instance; 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 003/177] 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<QString>& 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<QString>& recomends); + void clearExternalRecomends(); signals: void nameChanged(const QString& name); @@ -77,6 +79,7 @@ class VersionList : public BaseVersionList, public BaseEntity { private: QVector<Version::Ptr> m_versions; + QStringList m_externalRecommendsVersions; QHash<QString, Version::Ptr> 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 <QMessageBox> #include <QString> #include <QUrl> +#include <algorithm> #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 004/177] 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 <QDateTime> +#include <algorithm> #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 <Version.h> +#include <qlogging.h> +#include <qttypetraits.h> #include <QCryptographicHash> #include <QDebug> #include <QDir> @@ -47,10 +49,14 @@ #include <QSaveFile> #include <QTimer> #include <QUuid> +#include <algorithm> +#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<QString, ModPlatform::ModLoaderType> 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 005/177] 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 <QList> #include <QMap> #include <QTimer> -#include <map> #include "Component.h" +#include "tasks/Task.h" class MinecraftInstance; using ComponentContainer = QList<ComponentPtr>; 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 006/177] 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<Component>(d->m_list, add.uid); + auto component = makeShared<Component>(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<size_t>(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<size_t>(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<RemoteLoadStatus> 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 <https://www.gnu.org/licenses/>. + * + */ + +#include "minecraft/Logging.h" +#include <qloggingcategory.h> + +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 <https://www.gnu.org/licenses/>. + * + */ + +#pragma once + +#include <QLoggingCategory> + +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 <Version.h> #include <qlogging.h> -#include <qttypetraits.h> #include <QCryptographicHash> #include <QDebug> #include <QDir> @@ -66,6 +65,8 @@ #include "PackProfile_p.h" #include "modplatform/ModIndex.h" +#include "minecraft/Logging.h" + static const QMap<QString, ModPlatform::ModLoaderType> 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<int>(index), static_cast<int>(index)); @@ -394,7 +395,7 @@ void PackProfile::componentDataChanged() { auto objPtr = qobject_cast<Component*>(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<LaunchProfile> PackProfile::getProfile() const try { auto profile = std::make_shared<LaunchProfile>(); 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 007/177] 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<QString>& 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<QString>& 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 <alexandru.tripon97@gmail.com> Date: Tue, 25 Jun 2024 11:13:15 +0300 Subject: [PATCH 008/177] clang-format Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<int>() << 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<int, QByteArray> 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<Component>(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<int>(index), static_cast<int>(index)); @@ -395,7 +405,8 @@ void PackProfile::componentDataChanged() { auto objPtr = qobject_cast<Component*>(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<LaunchProfile> PackProfile::getProfile() const try { auto profile = std::make_shared<LaunchProfile>(); 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 009/177] 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 <meta/VersionList.h> #include <QSaveFile> +#include <optional> #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<PatchProblem> 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<UpdateAction> 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 <QJsonDocument> #include <QList> #include <memory> +#include <optional> #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<UpdateActionChangeVerison, UpdateActionLatestRecommendedCompatable, UpdateActionRemove, UpdateActionImportantChanged>; + class Component : public QObject, public ProblemProvider { Q_OBJECT public: @@ -58,6 +79,8 @@ class Component : public QObject, public ProblemProvider { const QList<PatchProblem> 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<UpdateAction> getUpdateAction(); + std::optional<UpdateAction> takeUpdateAction(); + signals: void dataChanged(); @@ -104,6 +132,11 @@ class Component : public QObject, public ProblemProvider { std::shared_ptr<Meta::Version> m_metaVersion; std::shared_ptr<VersionFile> m_file; bool m_loaded = false; + + private: + QList<PatchProblem> m_componentProblems; + ProblemSeverity m_componentProblemSeverity = ProblemSeverity::None; + std::optional<UpdateAction> m_updateAction = std::nullopt; }; using ComponentPtr = shared_qobject_ptr<Component>; 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 <algorithm> #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 <class... Ts> +struct overload : Ts... { + using Ts::operator()...; +}; +template <class... Ts> +overload(Ts...) -> overload<Ts...>; + +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<size_t>(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<ComponentPtr> 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 <QTimer> #include <QUuid> #include <algorithm> +#include <utility> #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<QString, ModPlatform::ModLoaderType> 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 010/177] 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 | 185 +++++++++++++-------- 3 files changed, 132 insertions(+), 75 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 <assert.h> @@ -438,14 +439,14 @@ void Component::setUpdateAction(UpdateAction action) m_updateAction = action; } -std::optional<UpdateAction> 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 <QList> #include <memory> #include <optional> +#include <variant> #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<UpdateActionChangeVerison, UpdateActionLatestRecommendedCompatable, UpdateActionRemove, UpdateActionImportantChanged>; +using UpdateActionNone = std::monostate; + +using UpdateAction = std::variant<UpdateActionNone, + UpdateActionChangeVersion, + UpdateActionLatestRecommendedCompatable, + UpdateActionRemove, + UpdateActionImportantChanged>; 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<UpdateAction> getUpdateAction(); - std::optional<UpdateAction> takeUpdateAction(); + UpdateAction getUpdateAction(); signals: void dataChanged(); @@ -136,7 +141,7 @@ class Component : public QObject, public ProblemProvider { private: QList<PatchProblem> m_componentProblems; ProblemSeverity m_componentProblemSeverity = ProblemSeverity::None; - std::optional<UpdateAction> m_updateAction = std::nullopt; + UpdateAction m_updateAction = UpdateAction{ UpdateActionNone{} }; }; using ComponentPtr = shared_qobject_ptr<Component>; 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<Ts...>; 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; - } - - 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(); + 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())); + } + }, + [&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 011/177] 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 | 201 +++++++++++---------- launcher/minecraft/PackProfile.cpp | 9 +- 4 files changed, 138 insertions(+), 103 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<UpdateActionNone, UpdateActionRemove, UpdateActionImportantChanged>; +struct ModloaderMapEntry { + ModPlatform::ModLoaderType type; + QStringList knownConfictingComponents; +}; +static const QMap<QString, ModloaderMapEntry> 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 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 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; + } + } + }; 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<QString, ModPlatform::ModLoaderType> 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<ModPlatform::ModLoaderTypes> PackProfile::getModLoaders() ModPlatform::ModLoaderTypes result; bool has_any_loader = false; - QMapIterator<QString, ModPlatform::ModLoaderType> i(modloaderMapping); + QMapIterator<QString, ModloaderMapEntry> 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 <alexandru.tripon97@gmail.com> Date: Fri, 28 Jun 2024 13:41:07 +0300 Subject: [PATCH 012/177] format the code Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- launcher/minecraft/ComponentUpdateTask.cpp | 190 +++++++++++---------- launcher/minecraft/PackProfile.cpp | 1 - 2 files changed, 97 insertions(+), 94 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 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 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; + } + } }; 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 013/177] 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 <meta/VersionList.h> #include <QSaveFile> -#include <optional> #include "Application.h" #include "FileSystem.h" @@ -50,6 +49,14 @@ #include <assert.h> +const QMap<QString, ModloaderMapEntry> 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<UpdateActionNone, UpdateActionChangeVersion, - UpdateActionLatestRecommendedCompatable, + UpdateActionLatestRecommendedCompatible, UpdateActionRemove, UpdateActionImportantChanged>; struct ModloaderMapEntry { ModPlatform::ModLoaderType type; - QStringList knownConfictingComponents; -}; -static const QMap<QString, ModloaderMapEntry> 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<QString, ModloaderMapEntry> 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<ModPlatform::ModLoaderTypes> PackProfile::getModLoaders() ModPlatform::ModLoaderTypes result; bool has_any_loader = false; - QMapIterator<QString, ModloaderMapEntry> i(KNOWN_MODLOADERS); + QMapIterator<QString, ModloaderMapEntry> i(Component::KNOWN_MODLOADERS); while (i.hasNext()) { i.next(); From c886111e18566c10ec15e5c389a3d4d1da3d2ccf Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sat, 6 Jul 2024 09:09:54 +0300 Subject: [PATCH 014/177] format the code Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<int>() << 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 <alexandru.tripon97@gmail.com> Date: Fri, 19 Jul 2024 17:10:04 +0300 Subject: [PATCH 015/177] fix merge issue Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<ModPlatform::ModLoaderType> PackProfile::getModLoadersList() { QList<ModPlatform::ModLoaderType> 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 fe23e76714598f134f07ba04b482bdb2bf1ee34c Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 5 Aug 2024 12:04:08 +0300 Subject: [PATCH 016/177] fix codeql Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <optional> #include "BaseInstance.h" #include "InstanceCreationTask.h" 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 017/177] 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 <alexandru.tripon97@gmail.com> Date: Thu, 5 Sep 2024 09:36:45 +0300 Subject: [PATCH 018/177] ensure that the shortcut destination exists Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Fri, 6 Sep 2024 21:47:35 +0300 Subject: [PATCH 019/177] Remove all the slowdown code from CocurrentTask Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <QDebug> #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<TaskStepProgress>(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<unsigned int>(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<Task::Ptr> m_queue; QHash<Task*, Task::Ptr> m_doing; @@ -107,7 +100,4 @@ class ConcurrentTask : public Task { QHash<QUuid, std::shared_ptr<TaskStepProgress>> 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 020/177] 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 <assert.h> const QMap<QString, ModloaderMapEntry> 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 <alexandru.tripon97@gmail.com> Date: Sun, 8 Sep 2024 01:00:59 +0300 Subject: [PATCH 021/177] Fix launch when no java is loaded Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<BaseIns virtual void loadSpecificSettings() = 0; /// returns a valid update task - virtual Task::Ptr createUpdateTask(Net::Mode mode) = 0; + virtual QList<Task::Ptr> createUpdateTask() = 0; /// returns a valid launcher (task container) virtual shared_qobject_ptr<LaunchTask> createLaunchTask(AuthSessionPtr account, MinecraftTarget::Ptr targetToJoin) = 0; @@ -215,7 +215,7 @@ class BaseInstance : public QObject, public std::enable_shared_from_this<BaseIns virtual QString typeName() const = 0; - void updateRuntimeContext(); + virtual void updateRuntimeContext(); RuntimeContext runtimeContext() const { return m_runtimeContext; } bool hasVersionBroken() const { return m_hasBrokenVersion; } diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt index 58de35a7d..7ab9c654f 100644 --- a/launcher/CMakeLists.txt +++ b/launcher/CMakeLists.txt @@ -160,8 +160,6 @@ set(LAUNCH_SOURCES launch/steps/PreLaunchCommand.h launch/steps/TextPrint.cpp launch/steps/TextPrint.h - launch/steps/Update.cpp - launch/steps/Update.h launch/steps/QuitAfterGameStop.cpp launch/steps/QuitAfterGameStop.h launch/steps/PrintServers.cpp @@ -172,6 +170,8 @@ set(LAUNCH_SOURCES launch/LaunchTask.h launch/LogModel.cpp launch/LogModel.h + launch/TaskStepWrapper.cpp + launch/TaskStepWrapper.h ) # Old update system @@ -290,8 +290,6 @@ set(MINECRAFT_SOURCES minecraft/ComponentUpdateTask.h minecraft/MinecraftLoadAndCheck.h minecraft/MinecraftLoadAndCheck.cpp - minecraft/MinecraftUpdate.h - minecraft/MinecraftUpdate.cpp minecraft/MojangVersionFormat.cpp minecraft/MojangVersionFormat.h minecraft/Rule.cpp diff --git a/launcher/NullInstance.h b/launcher/NullInstance.h index 3ee38e76c..3d01c9d33 100644 --- a/launcher/NullInstance.h +++ b/launcher/NullInstance.h @@ -53,7 +53,7 @@ class NullInstance : public BaseInstance { QSet<QString> traits() const override { return {}; }; QString instanceConfigFolder() const override { return instanceRoot(); }; shared_qobject_ptr<LaunchTask> createLaunchTask(AuthSessionPtr, MinecraftTarget::Ptr) override { return nullptr; } - shared_qobject_ptr<Task> createUpdateTask([[maybe_unused]] Net::Mode mode) override { return nullptr; } + QList<Task::Ptr> createUpdateTask() override { return {}; } QProcessEnvironment createEnvironment() override { return QProcessEnvironment(); } QProcessEnvironment createLaunchEnvironment() override { return QProcessEnvironment(); } QMap<QString, QString> getVariables() override { return QMap<QString, QString>(); } 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 <QSet> #include <QString> +#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 <QRegularExpression> #include <QStandardPaths> #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<LaunchTask> create(InstancePtr inst); - virtual ~LaunchTask() {}; + virtual ~LaunchTask() = default; void appendStep(shared_qobject_ptr<LaunchStep> step); void prependStep(shared_qobject_ptr<LaunchStep> 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 <launch/LaunchStep.h> #include <net/Mode.h> -// 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 <launch/LaunchTask.h> - -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<int>& 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<LaunchStep::Ptr> 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<FoldersTask>(this), + // libraries download + makeShared<LibrariesTask>(this), + // FML libraries download and copy into the instance + makeShared<FMLLibrariesTask>(this), + // assets update + makeShared<AssetUpdateTask>(this), + }; } shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) @@ -1090,14 +1090,10 @@ shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(step); } - // if we aren't in offline mode,. - if (session->status != AuthSession::PlayableOffline) { - if (!session->demo) { - process->appendStep(makeShared<ClaimAccount>(pptr, session)); - } - process->appendStep(makeShared<Update>(pptr, Net::Mode::Online)); - } else { - process->appendStep(makeShared<Update>(pptr, Net::Mode::Offline)); + // load meta + { + auto mode = session->status != AuthSession::PlayableOffline ? Net::Mode::Online : Net::Mode::Offline; + process->appendStep(makeShared<TaskStepWrapper>(pptr, makeShared<MinecraftLoadAndCheck>(this, mode, pptr))); } // check java @@ -1106,6 +1102,16 @@ shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(makeShared<CheckJava>(pptr)); } + // if we aren't in offline mode,. + if (session->status != AuthSession::PlayableOffline) { + if (!session->demo) { + process->appendStep(makeShared<ClaimAccount>(pptr, session)); + } + for (auto t : createUpdateTask()) { + process->appendStep(makeShared<TaskStepWrapper>(pptr, t)); + } + } + // if there are any jar mods { process->appendStep(makeShared<ModMinecraftJar>(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<PackProfile> getPackProfile() const; @@ -120,7 +120,7 @@ class MinecraftInstance : public BaseInstance { std::shared_ptr<GameOptions> gameOptionsModel(); ////// Launch stuff ////// - Task::Ptr createUpdateTask(Net::Mode mode) override; + QList<Task::Ptr> createUpdateTask() override; shared_qobject_ptr<LaunchTask> 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 <QList> -#include <QObject> -#include <QUrl> - -#include <quazip/quazip.h> +#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<FoldersTask>(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<LibrariesTask>(m_inst)); - } - - // FML libraries download and copy into the instance - { - addTask(makeShared<FMLLibrariesTask>(m_inst)); - } - - // assets update - { - addTask(makeShared<AssetUpdateTask>(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<ModPlatform::ModLoaderTypes> getSupportedModLoaders(); QList<ModPlatform::ModLoaderType> 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 <launch/LaunchStep.h> #include <launch/LaunchTask.h> -#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 <QDir> #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 <QString> #include <QUrl> +#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<SequentialTask>(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 <qaz.cetelic@protonmail.com> Date: Mon, 9 Sep 2024 15:40:31 +0200 Subject: [PATCH 022/177] Sort files chronologically in descending order Signed-off-by: Qaz <dev@malplena.net> --- 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 <qaz.cetelic@protonmail.com> Date: Mon, 9 Sep 2024 16:24:40 +0200 Subject: [PATCH 023/177] DCO Remediation Commit for QazCetelic <qaz.cetelic@protonmail.com> I, QazCetelic <qaz.cetelic@protonmail.com>, hereby add my Signed-off-by to this commit: 7fbf0d3bf3c3821916119a5303d6bc302f954580 Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com> --- 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 024/177] 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 c85294af9debc472446585b7851f41596fbcc0be Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Thu, 12 Sep 2024 17:57:57 +0300 Subject: [PATCH 025/177] Improve wizzard page Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <QWidget> +#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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>AutoJavaWizardPage</class> + <widget class="QWidget" name="AutoJavaWizardPage"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string><html><head/><body><p><span style=" font-size:14pt; font-weight:600;">New Feature Alert!</span></p></body></html></string> + </property> + <property name="textFormat"> + <enum>Qt::RichText</enum> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>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?</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QRadioButton" name="defaultSettingsRadioButton"> + <property name="text"> + <string>Enable Auto-Download</string> + </property> + <property name="checked"> + <bool>true</bool> + </property> + <attribute name="buttonGroup"> + <string notr="true">buttonGroup</string> + </attribute> + </widget> + </item> + <item> + <widget class="QRadioButton" name="previousSettingsRadioButton"> + <property name="text"> + <string>Disable Auto-Download</string> + </property> + <property name="checked"> + <bool>false</bool> + </property> + <attribute name="buttonGroup"> + <string notr="true">buttonGroup</string> + </attribute> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>156</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> + <buttongroups> + <buttongroup name="buttonGroup"/> + </buttongroups> +</ui> 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 <QWidget> +#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 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>LoginWizardPage</class> + <widget class="QWidget" name="LoginWizardPage"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>400</width> + <height>300</height> + </rect> + </property> + <property name="windowTitle"> + <string>Form</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string><html><head/><body><p><span style=" font-size:14pt; font-weight:600;">Add Microsoft account</span></p></body></html></string> + </property> + <property name="textFormat"> + <enum>Qt::RichText</enum> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>In order to play Minecraft, you must have at least one Microsoft account logged in. Do you want to log in now?</string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QPushButton" name="pushButton"> + <property name="text"> + <string>Add Microsoft account</string> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>156</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <resources/> + <connections/> + <buttongroups> + <buttongroup name="buttonGroup"/> + </buttongroups> +</ui> 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 <QFileDialog> #include <QGroupBox> #include <QLabel> +#include <QLayoutItem> #include <QLineEdit> #include <QMessageBox> #include <QPushButton> +#include <QSizePolicy> #include <QSpinBox> #include <QToolButton> #include <QVBoxLayout> @@ -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<JavaChecker> m_checker; JavaChecker::Result m_result; + QTimer* m_memoryTimer; }; From 973b43ca7a12cdcb6891d069b3bb6782eda6f28a Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Fri, 13 Sep 2024 20:01:45 +0300 Subject: [PATCH 026/177] Add techinc client ID Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<GenericPageProvider>(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 @@ <rect> <x>0</x> <y>0</y> - <width>800</width> - <height>600</height> + <width>841</width> + <height>620</height> </rect> </property> <layout class="QVBoxLayout" name="verticalLayout"> @@ -288,6 +288,36 @@ </layout> </widget> </item> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="title"> + <string>Techinc Client ID</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_9"> + <item> + <widget class="QLabel" name="label_11"> + <property name="text"> + <string><html><head/><body><p>Note: you only need to set this to access private data.</p></body></html></string> + </property> + </widget> + </item> + <item> + <widget class="QLineEdit" name="techicClientID"> + <property name="placeholderText"> + <string>(None)</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="label_12"> + <property name="text"> + <string>Enter a custom GUID client ID for Techinc here.</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> <item> <spacer name="verticalSpacer"> <property name="orientation"> 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 <alexandru.tripon97@gmail.com> Date: Fri, 13 Sep 2024 21:13:21 +0300 Subject: [PATCH 027/177] Apply suggestions from code review Co-authored-by: seth <getchoo@tuta.io> Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com> --- 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 @@ <item> <widget class="QGroupBox" name="groupBox"> <property name="title"> - <string>Techinc Client ID</string> + <string>Technic Client ID</string> </property> <layout class="QVBoxLayout" name="verticalLayout_9"> <item> @@ -302,7 +302,7 @@ </widget> </item> <item> - <widget class="QLineEdit" name="techicClientID"> + <widget class="QLineEdit" name="technicClientID"> <property name="placeholderText"> <string>(None)</string> </property> @@ -311,7 +311,7 @@ <item> <widget class="QLabel" name="label_12"> <property name="text"> - <string>Enter a custom GUID client ID for Techinc here.</string> + <string>Enter a custom GUID client ID for Technic here.</string> </property> </widget> </item> 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 <alexandru.tripon97@gmail.com> Date: Fri, 13 Sep 2024 21:37:50 +0300 Subject: [PATCH 028/177] fix typo Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Fri, 13 Sep 2024 22:57:08 +0300 Subject: [PATCH 029/177] fix server launch Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPt process->appendStep(makeShared<CreateGameFolders>(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 <alexandru.tripon97@gmail.com> Date: Fri, 13 Sep 2024 23:26:04 +0300 Subject: [PATCH 030/177] fix java crash on refresh Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Sat, 14 Sep 2024 00:13:16 +0300 Subject: [PATCH 031/177] fix download java abort being stuck Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Sat, 14 Sep 2024 00:19:48 +0300 Subject: [PATCH 032/177] Update launcher/ui/pages/global/APIPage.cpp Co-authored-by: TheKodeToad <TheKodeToad@proton.me> Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Sat, 14 Sep 2024 00:36:31 +0300 Subject: [PATCH 033/177] fix java autodetect when instance settings are open Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Sat, 14 Sep 2024 18:27:12 +0300 Subject: [PATCH 034/177] add open java folder action Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <QLineEdit> #include <QList> #include <QPushButton> +#include <QRegularExpression> #include <QStringList> #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 @@ <x>0</x> <y>0</y> <width>800</width> - <height>22</height> + <height>27</height> </rect> </property> <widget class="QMenu" name="fileMenu"> @@ -192,6 +192,7 @@ <addaction name="actionViewInstanceFolder"/> <addaction name="actionViewCentralModsFolder"/> <addaction name="actionViewSkinsFolder"/> + <addaction name="actionViewJavaFolder"/> <addaction name="separator"/> <addaction name="actionViewIconThemeFolder"/> <addaction name="actionViewWidgetThemeFolder"/> @@ -788,6 +789,18 @@ <string>Open the cat packs folder in a file browser.</string> </property> </action> + <action name="actionViewJavaFolder"> + <property name="icon"> + <iconset theme="viewfolder"> + <normaloff>.</normaloff>.</iconset> + </property> + <property name="text"> + <string>Java</string> + </property> + <property name="toolTip"> + <string>Open the java folder in a file browser.</string> + </property> + </action> </widget> <customwidgets> <customwidget> 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 <QDir> +#include <QLoggingCategory> #include <QString> +#include <memory> #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 <alexandru.tripon97@gmail.com> Date: Sat, 14 Sep 2024 21:18:20 +0300 Subject: [PATCH 035/177] Add extra step to macos java install Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.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 <https://www.gnu.org/licenses/>. + */ +#include "java/download/SymlinkTask.h" +#include <QFileInfo> + +#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<FS::LinkPair> 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 <alexandru.tripon97@gmail.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 <https://www.gnu.org/licenses/>. + */ + +#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<SequentialTask>(this, tr("Install Java")); + seq->addTask(m_current_task); + seq->addTask(makeShared<Java::SymlinkTask>(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<SequentialTask>(this, tr("Install Java")); + seq->addTask(task); + seq->addTask(makeShared<Java::SymlinkTask>(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 <qaz.cetelic@protonmail.com> Date: Sat, 14 Sep 2024 22:04:18 +0200 Subject: [PATCH 036/177] Disable folder action instead of hiding it and add additional information in the tooltip. Signed-off-by: QazCetelic <qaz.cetelic@protonmail.com> --- 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 @@ <string>Java</string> </property> <property name="toolTip"> - <string>Open the java folder in a file browser.</string> + <string>Open the java folder in a file browser. Only available if the built-in Java downloader is used.</string> </property> </action> </widget> From 8932a42644411924e64a96c4c905b9f8071fba64 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com> Date: Sun, 15 Sep 2024 00:24:43 +0000 Subject: [PATCH 037/177] 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 d38e7fa1424c406b86c5556e9c78c870eaa6b317 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 12:41:33 +0300 Subject: [PATCH 038/177] Add more null protection for skin management Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 12:42:09 +0300 Subject: [PATCH 039/177] Wrap FS::write in try catch Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 14:30:23 +0300 Subject: [PATCH 040/177] add Launcher_ prefix to enable java option Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- .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 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 15:51:51 +0300 Subject: [PATCH 041/177] move some URLs in cmake Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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( <noscript> - <meta http-equiv="Refresh" content="0; URL=https://prismlauncher.org/successful-login" /> + <meta http-equiv="Refresh" content="0; URL=%1" /> </noscript> Login Successful, redirecting... <script> - window.location.replace("https://prismlauncher.org/successful-login"); + window.location.replace("%1"); </script> - )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 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 15:53:54 +0300 Subject: [PATCH 042/177] disable retry for translation files Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 16:15:36 +0300 Subject: [PATCH 043/177] reshow login dialog in case account login fails Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 16:36:05 +0300 Subject: [PATCH 044/177] Apply suggestions from code review Co-authored-by: seth <getchoo@tuta.io> Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com> --- 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"); </script> )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 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 16:41:16 +0300 Subject: [PATCH 045/177] split the auth loading screen Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- launcher/ui/dialogs/MSALoginDialog.cpp | 14 +- launcher/ui/dialogs/MSALoginDialog.h | 3 +- launcher/ui/dialogs/MSALoginDialog.ui | 178 +++++++++++++++++-------- 3 files changed, 138 insertions(+), 57 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("<div style='width: 200px;'>%1</div>").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 @@ <x>0</x> <y>0</y> <width>440</width> - <height>430</height> + <height>447</height> </rect> </property> <property name="minimumSize"> @@ -21,12 +21,12 @@ </property> <layout class="QVBoxLayout" name="verticalLayout_6"> <item> - <widget class="QStackedWidget" name="stackedWidget"> + <widget class="QStackedWidget" name="stackedWidget2"> <property name="currentIndex"> <number>1</number> </property> - <widget class="QWidget" name="loadingPage"> - <layout class="QVBoxLayout" name="verticalLayout_3"> + <widget class="QWidget" name="loadingPage2"> + <layout class="QVBoxLayout" name="verticalLayout_31"> <item> <spacer name="verticalSpacer_4"> <property name="orientation"> @@ -41,7 +41,7 @@ </spacer> </item> <item> - <widget class="QLabel" name="loadingLabel"> + <widget class="QLabel" name="loadingLabel2"> <property name="font"> <font> <pointsize>16</pointsize> @@ -61,7 +61,7 @@ </widget> </item> <item> - <widget class="QLabel" name="status"> + <widget class="QLabel" name="status2"> <property name="text"> <string>Status</string> </property> @@ -74,7 +74,7 @@ </widget> </item> <item> - <spacer name="verticalSpacer_3"> + <spacer name="verticalSpacer_31"> <property name="orientation"> <enum>Qt::Vertical</enum> </property> @@ -88,8 +88,8 @@ </item> </layout> </widget> - <widget class="QWidget" name="mpPage"> - <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,0,0,0"> + <widget class="QWidget" name="mpPage1"> + <layout class="QVBoxLayout" name="verticalLayout_21" stretch="0"> <item> <layout class="QHBoxLayout" name="horizontalLayout_7"> <item> @@ -136,51 +136,125 @@ </item> </layout> </item> + </layout> + </widget> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_5"> + <item> + <widget class="Line" name="line_3"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="orLabel"> + <property name="font"> + <font> + <pointsize>16</pointsize> + </font> + </property> + <property name="text"> + <string>Or</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + </widget> + </item> + <item> + <widget class="Line" name="line_4"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QStackedWidget" name="stackedWidget"> + <property name="currentIndex"> + <number>1</number> + </property> + <widget class="QWidget" name="loadingPage"> + <layout class="QVBoxLayout" name="verticalLayout_3"> <item> - <layout class="QHBoxLayout" name="horizontalLayout_5"> - <item> - <widget class="Line" name="line_3"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="orLabel"> - <property name="font"> - <font> - <pointsize>16</pointsize> - </font> - </property> - <property name="text"> - <string>Or</string> - </property> - <property name="alignment"> - <set>Qt::AlignCenter</set> - </property> - </widget> - </item> - <item> - <widget class="Line" name="line_4"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - </layout> + <spacer name="verticalSpacer_41"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> </item> + <item> + <widget class="QLabel" name="loadingLabel"> + <property name="font"> + <font> + <pointsize>16</pointsize> + <weight>75</weight> + <bold>true</bold> + </font> + </property> + <property name="text"> + <string>Please wait...</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="status"> + <property name="text"> + <string>Status</string> + </property> + <property name="alignment"> + <set>Qt::AlignCenter</set> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <spacer name="verticalSpacer_3"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>20</width> + <height>40</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + <widget class="QWidget" name="mpPage"> + <layout class="QVBoxLayout" name="verticalLayout_2" stretch="0,0,0"> <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> From 8d14060ad14e6463825210c2d28c266e1563e3e1 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 16:46:01 +0300 Subject: [PATCH 046/177] Apply suggestions from code review Co-authored-by: seth <getchoo@tuta.io> Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com> --- 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<FS::LinkPair> 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 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 17:47:58 +0300 Subject: [PATCH 047/177] Apply suggestions from code review Co-authored-by: seth <getchoo@tuta.io> Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 17:51:35 +0300 Subject: [PATCH 048/177] replace TRANSLATIONS_BASE_URL with TRANSLATION_FILES_URL Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Mon, 16 Sep 2024 20:00:38 +0300 Subject: [PATCH 049/177] Use macOS 14 in CI (#2826) * chore: fix mac CI build Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> * try what the error says Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> * set -DCMAKE_OSX_ARCHITECTURES=x86_64 Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --------- Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- .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 <alexandru.tripon97@gmail.com> Date: Wed, 18 Sep 2024 21:17:15 +0300 Subject: [PATCH 050/177] display minecraft log before instance run Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <alexandru.tripon97@gmail.com> Date: Fri, 20 Sep 2024 16:53:36 +0300 Subject: [PATCH 051/177] fix folder duplication for modrinth Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<EnsureMetadataTask>(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 <alexandru.tripon97@gmail.com> Date: Fri, 20 Sep 2024 16:58:22 +0300 Subject: [PATCH 052/177] fix updater typo Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<QDir> 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 <alexandru.tripon97@gmail.com> Date: Sat, 21 Sep 2024 22:17:44 +0300 Subject: [PATCH 053/177] fix java archive typo Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<MMCZip::ExtractZipTask>(zip, m_final_path, files[0]); From 1b2e9b95e2dd62f844c5d019d9b0b503084dd382 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Wed, 25 Sep 2024 19:37:25 +0300 Subject: [PATCH 054/177] add prefix to non-standard packwiz fields Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 055/177] 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 @@ <string>Java</string> </property> <property name="toolTip"> - <string>Open the java folder in a file browser. Only available if the built-in Java downloader is used.</string> + <string>Open the Java folder in a file browser. Only available if the built-in Java downloader is used.</string> </property> </action> </widget> 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 @@ <item> <widget class="QLabel" name="label_2"> <property name="text"> - <string>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?</string> + <string>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?</string> </property> <property name="wordWrap"> <bool>true</bool> 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 056/177] 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 057/177] 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 058/177] 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 059/177] use `/norestart` with redist install Co-authored-by: seth <getchoo@tuta.io> 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 <mrocha@turretllc.us> Date: Fri, 27 Sep 2024 16:42:59 -0500 Subject: [PATCH 060/177] fix: don't annoy when java tmpdir jvmarg is set & /tmp is noexec Signed-off-by: Mason Rocha <mrocha@turretllc.us> 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 061/177] 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?= <edgarsciruliss@gmail.com> Date: Sat, 28 Sep 2024 12:11:25 +0300 Subject: [PATCH 062/177] 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 <edgarsciruliss@gmail.com> --- .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 063/177] 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]" <github-actions[bot]@users.noreply.github.com> Date: Sun, 29 Sep 2024 00:25:33 +0000 Subject: [PATCH 064/177] 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 <getchoo@tuta.io> Date: Thu, 19 Sep 2024 16:27:06 -0400 Subject: [PATCH 065/177] ci: drop garnix Signed-off-by: seth <getchoo@tuta.io> --- 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 <getchoo@tuta.io> Date: Thu, 19 Sep 2024 16:34:59 -0400 Subject: [PATCH 066/177] 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 <getchoo@tuta.io> --- 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 <getchoo@tuta.io> Date: Thu, 19 Sep 2024 16:44:19 -0400 Subject: [PATCH 067/177] ci: add nix job Signed-off-by: seth <getchoo@tuta.io> --- .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 <getchoo@tuta.io> Date: Thu, 19 Sep 2024 16:50:45 -0400 Subject: [PATCH 068/177] chore: add nix reformat to .git-blame-ignore-revs Signed-off-by: seth <getchoo@tuta.io> --- .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 <getchoo@tuta.io> Date: Mon, 30 Sep 2024 16:21:07 -0400 Subject: [PATCH 069/177] chore(nix): use cachix for binary cache Signed-off-by: seth <getchoo@tuta.io> --- 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 <getchoo@tuta.io> Date: Mon, 30 Sep 2024 16:30:22 -0400 Subject: [PATCH 070/177] fix(nix): don't write to files in formatting check Signed-off-by: seth <getchoo@tuta.io> --- 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 <getchoo@tuta.io> Date: Mon, 30 Sep 2024 16:32:35 -0400 Subject: [PATCH 071/177] style: format with clang-format Signed-off-by: seth <getchoo@tuta.io> --- 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 072/177] 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 <alexandru.tripon97@gmail.com> Date: Wed, 25 Sep 2024 15:04:31 +0300 Subject: [PATCH 073/177] fix some transtaions warnings Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<QuaZip>(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<ModFolderModel> 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<ModFolderModel> mods, QWidget* parent = 0); virtual ~NilModFolderPage() = default; From 5ea2dece54f27c812af3eb5ba697ec7aab07e04b Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Thu, 26 Sep 2024 22:59:00 +0300 Subject: [PATCH 074/177] fix search term not remaining the same between providers on resource download Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<ResourcePage*>(selected); + Q_ASSERT(result != nullptr); + result->setSearchTerm(prev_page->getSearchTerm()); } ModDownloadDialog::ModDownloadDialog(QWidget* parent, const std::shared_ptr<ModFolderModel>& mods, BaseInstance* instance) From 946e791d39a19f50d7604b1f57714f8f3a7f63cb Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 30 Sep 2024 21:50:07 +0300 Subject: [PATCH 075/177] sync modpack search field Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<ModpackProviderBasePage*>(previous); + if (prevPage) { + m_searchTerm = prevPage->getSerachTerm(); + } + + auto nextPage = dynamic_cast<ModpackProviderBasePage*>(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 <alexandru.tripon97@gmail.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 <https://www.gnu.org/licenses/>. + */ + +#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 <QWidget> #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 <Application.h> #include <modplatform/flame/FlamePackIndex.h> #include <QTimer> -#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 <Application.h> #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 <QTimer> @@ -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 <Application.h> #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 <alexandru.tripon97@gmail.com> Date: Wed, 2 Oct 2024 01:06:45 +0300 Subject: [PATCH 076/177] add curseforge modpack filter Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<ResourceAPI::SortingMethod> FlameAPI::getSortingMethods() const { 8, "GameVersion", QObject::tr("Sort by Game Version") } }; } -Task::Ptr FlameAPI::getModCategories(std::shared_ptr<QByteArray> response) +Task::Ptr FlameAPI::getCategories(std::shared_ptr<QByteArray> response, ModPlatform::ResourceType type) { auto netJob = makeShared<NetJob>(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<QByteArray> response) +{ + return getCategories(response, ModPlatform::ResourceType::MOD); +} + QList<ModPlatform::Category> FlameAPI::loadModCategories(std::shared_ptr<QByteArray> response) { QList<ModPlatform::Category> 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<QByteArray> response) const; Task::Ptr getFile(const QString& addonId, const QString& fileId, std::shared_ptr<QByteArray> response) const; + static Task::Ptr getCategories(std::shared_ptr<QByteArray> response, ModPlatform::ResourceType type); static Task::Ptr getModCategories(std::shared_ptr<QByteArray> response); static QList<ModPlatform::Category> loadModCategories(std::shared_ptr<QByteArray> 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<QString> getSearchURL(SearchArgs const& args) const override + public: + static std::optional<QString> 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<QString> getSearchURL(SearchArgs const& args) const override { return getStaticSearchURL(args); } + private: [[nodiscard]] std::optional<QString> getInfoURL(QString const& id) const override { return QString("https://api.curseforge.com/v1/mods/%1").arg(id); - }; + } [[nodiscard]] std::optional<QString> 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<QString> 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 <QUrl> #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<QByteArray> response) return netJob; } -QList<ModPlatform::Category> ModrinthAPI::loadModCategories(std::shared_ptr<QByteArray> response) +QList<ModPlatform::Category> ModrinthAPI::loadCategories(std::shared_ptr<QByteArray> response, QString projectType) { QList<ModPlatform::Category> categories; QJsonParseError parse_error{}; @@ -147,7 +147,7 @@ QList<ModPlatform::Category> ModrinthAPI::loadModCategories(std::shared_ptr<QByt for (auto val : arr) { auto cat = Json::requireObject(val); auto name = Json::requireString(cat, "name"); - if (Json::ensureString(cat, "project_type", "") == "mod") + if (Json::ensureString(cat, "project_type", "") == projectType) categories.push_back({ name, name }); } @@ -157,4 +157,9 @@ QList<ModPlatform::Category> ModrinthAPI::loadModCategories(std::shared_ptr<QByt qDebug() << doc; } return categories; -}; \ No newline at end of file +} + +QList<ModPlatform::Category> ModrinthAPI::loadModCategories(std::shared_ptr<QByteArray> 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<QByteArray> response) const override; static Task::Ptr getModCategories(std::shared_ptr<QByteArray> response); + static QList<ModPlatform::Category> loadCategories(std::shared_ptr<QByteArray> response, QString projectType); static QList<ModPlatform::Category> loadModCategories(std::shared_ptr<QByteArray> 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 <Json.h> #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; } } + ResourceAPI::SortingMethod sort{}; + sort.index = currentSort + 1; + auto netJob = makeShared<NetJob>("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); - - netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchUrl), response)); + 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<ModFilterWidget::Filter> 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 <net/NetJob.h> #include <functional> +#include "ui/widgets/ModFilterWidget.h" #include <modplatform/flame/FlamePackIndex.h> @@ -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<ModFilterWidget::Filter> 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<ModFilterWidget::Filter> 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 <QKeyEvent> +#include <memory> #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<Version> 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<ModFilterWidget::Filter> 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<Flame::IndexedPack>(); - 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<QByteArray>(); @@ -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<QByteArray>(); + 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 <modplatform/flame/FlamePackIndex.h> #include <QTimer> #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<ModFilterWidget> 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 @@ </widget> </item> <item> - <widget class="QLineEdit" name="searchEdit"> - <property name="placeholderText"> - <string>Search and filter...</string> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout"> + <layout class="QHBoxLayout" name="horizontalLayout"> <item> - <widget class="QListView" name="packView"> - <property name="horizontalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="iconSize"> - <size> - <width>48</width> - <height>48</height> - </size> + <widget class="QLineEdit" name="searchEdit"> + <property name="placeholderText"> + <string>Search and filter...</string> </property> </widget> </item> <item> - <widget class="ProjectDescriptionPage" name="packDescription"> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - <property name="openLinks"> - <bool>true</bool> + <widget class="QPushButton" name="filterButton"> + <property name="text"> + <string>Filter</string> </property> </widget> </item> </layout> </item> + <item> + <widget class="QSplitter" name="splitter"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <widget class="QWidget" name="widget" native="true"/> + <widget class="QListView" name="packView"> + <property name="horizontalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOff</enum> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="iconSize"> + <size> + <width>48</width> + <height>48</height> + </size> + </property> + </widget> + <widget class="ProjectDescriptionPage" name="packDescription"> + <property name="openExternalLinks"> + <bool>true</bool> + </property> + <property name="openLinks"> + <bool>true</bool> + </property> + </widget> + </widget> + </item> <item> <layout class="QHBoxLayout"> <item> 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<ModFilterWidget> FlameModPage::createFilterWidget() void FlameModPage::prepareProviderCategories() { auto response = std::make_shared<QByteArray>(); - 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 077/177] 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 078/177] 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 079/177] 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 080/177] 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 081/177] Update .github/workflows/build.yml Co-authored-by: Sefa Eyeoglu <contact@scrumplex.net> 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 <alexandru.tripon97@gmail.com> Date: Fri, 4 Oct 2024 17:06:47 +0300 Subject: [PATCH 082/177] add modrinth modpack filter Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<Version> 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<Version> 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<QString> 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<QString> override + static std::optional<QString> 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<QString> override + { + return getStaticSearchURL(args); + } + inline auto getInfoURL(QString const& id) const -> std::optional<QString> 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<Version> mcVersions) const -> QString + static QString getGameVersionsArray(std::list<Version> 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<Version> 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<Version> 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<ModFilterWidget::Filter> filter) { if (!filter) @@ -161,7 +152,7 @@ bool checkVersionFilters(const Flame::IndexedVersion& v, std::shared_ptr<ModFilt 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} + 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 + 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 netJob = makeShared<NetJob>("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); - - netJob->addNetAction(Net::ApiDownload::makeByteArray(QUrl(searchAllUrl), m_all_response)); + 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<ModFilterWidget::Filter> 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<ModFilterWidget::Filter> 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<ModFilterWidget::Filter> m_filter; int nextSearchOffset = 0; enum SearchState { None, CanPossiblyFetchMore, ResetRequested, Finished } searchState = None; Task::Ptr jobPtr; - std::shared_ptr<QByteArray> m_all_response = std::make_shared<QByteArray>(); + std::shared_ptr<QByteArray> m_allResponse = std::make_shared<QByteArray>(); 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<ModFilterWidget::Filter> 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<QByteArray>(); + 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 <QTimer> @@ -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<ModFilterWidget> 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 @@ </property> <layout class="QVBoxLayout" name="verticalLayout"> <item> - <widget class="QLineEdit" name="searchEdit"> - <property name="placeholderText"> - <string>Search and filter ...</string> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout"> + <layout class="QHBoxLayout" name="horizontalLayout"> <item> - <widget class="QListView" name="packView"> - <property name="horizontalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> - </property> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="iconSize"> - <size> - <width>48</width> - <height>48</height> - </size> + <widget class="QLineEdit" name="searchEdit"> + <property name="placeholderText"> + <string>Search and filter...</string> </property> </widget> </item> <item> - <widget class="ProjectDescriptionPage" name="packDescription"> - <property name="openExternalLinks"> - <bool>true</bool> - </property> - <property name="openLinks"> - <bool>true</bool> + <widget class="QPushButton" name="filterButton"> + <property name="text"> + <string>Filter</string> </property> </widget> </item> </layout> </item> + <item> + <widget class="QSplitter" name="splitter"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Expanding"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <widget class="QWidget" name="widget" native="true"/> + <widget class="QListView" name="packView"> + <property name="horizontalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOff</enum> + </property> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="iconSize"> + <size> + <width>48</width> + <height>48</height> + </size> + </property> + </widget> + <widget class="ProjectDescriptionPage" name="packDescription"> + <property name="openExternalLinks"> + <bool>true</bool> + </property> + <property name="openLinks"> + <bool>true</bool> + </property> + </widget> + </widget> + </item> <item> <layout class="QHBoxLayout"> <item> 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 083/177] 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 <a.arnaldur+git@gmail.com> Date: Sat, 5 Oct 2024 17:58:53 +0000 Subject: [PATCH 084/177] 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 <a.arnaldur+git@gmail.com> --- 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]" <github-actions[bot]@users.noreply.github.com> Date: Sun, 6 Oct 2024 00:24:57 +0000 Subject: [PATCH 085/177] 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 <TheKodeToad@proton.me> Date: Sun, 6 Oct 2024 13:51:36 +0100 Subject: [PATCH 086/177] 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 <TheKodeToad@proton.me> --- 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<QByteArray>(); 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 <alexandru.tripon97@gmail.com> Date: Sun, 6 Oct 2024 23:33:24 +0300 Subject: [PATCH 087/177] move checkMcVersions to Filter struct Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<Version> 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<Version> 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_ptr<ModFilt 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} + 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_ptr<ModF 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} + 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<ModFilterWidget> create(MinecraftInstance* instance, bool extended, QWidget* parent = nullptr); From 5bd5627a9646361ccee2d96bb555de58072bc7ab Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Tue, 8 Oct 2024 15:06:50 +0300 Subject: [PATCH 088/177] extended the modrinth search and applied the suggested change Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- .../modplatform/modrinth/ModrinthPage.cpp | 2 +- launcher/ui/widgets/ModFilterWidget.cpp | 20 ++++++++++++------- 2 files changed, 14 insertions(+), 8 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) { - auto allVersions = new AllVersionProxyModel(this); - allVersions->setSourceModel(proxy); - proxy = allVersions; - } - 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; 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 <alexandru.tripon97@gmail.com> Date: Tue, 8 Oct 2024 19:19:03 +0300 Subject: [PATCH 089/177] removed static functions Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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<QString> getStaticSearchURL(SearchArgs const& args) + [[nodiscard]] std::optional<QString> 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<QString> getSearchURL(SearchArgs const& args) const override { return getStaticSearchURL(args); } private: [[nodiscard]] std::optional<QString> 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<QString> getStaticSearchURL(SearchArgs const& args) + [[nodiscard]] inline auto getSearchURL(SearchArgs const& args) const -> std::optional<QString> 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<QString> override - { - return getStaticSearchURL(args); - } - inline auto getInfoURL(QString const& id) const -> std::optional<QString> 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<Version> mcVersions) + QString getGameVersionsArray(std::list<Version> 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<NetJob>("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<NetJob>("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 <alexandru.tripon97@gmail.com> Date: Tue, 8 Oct 2024 22:02:38 +0300 Subject: [PATCH 090/177] fix crash when no resorce version is available Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 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 091/177] 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 <TheKodeToad@proton.me> Date: Wed, 9 Oct 2024 15:07:09 +0100 Subject: [PATCH 092/177] Change LaunchTask to only accept MinecraftInstance Signed-off-by: TheKodeToad <TheKodeToad@proton.me> --- 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> LaunchTask::create(InstancePtr inst) +shared_qobject_ptr<LaunchTask> LaunchTask::create(MinecraftInstancePtr inst) { shared_qobject_ptr<LaunchTask> 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<LaunchStep> 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 <QObjectPtr.h> +#include <minecraft/MinecraftInstance.h> #include <QProcess> #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<LaunchTask> create(InstancePtr inst); + static shared_qobject_ptr<LaunchTask> create(MinecraftInstancePtr inst); virtual ~LaunchTask() = default; void appendStep(shared_qobject_ptr<LaunchStep> step); void prependStep(shared_qobject_ptr<LaunchStep> step); void setCensorFilter(QMap<QString, QString> 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<LogModel> m_logModel; QList<shared_qobject_ptr<LaunchStep>> m_steps; QMap<QString, QString> 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<MinecraftInstance>(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> minecraftInstance = std::dynamic_pointer_cast<MinecraftInstance>(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> minecraftInstance = std::dynamic_pointer_cast<MinecraftInstance>(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<QMetaObject::Connection> 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> minecraftInstance = std::dynamic_pointer_cast<MinecraftInstance>(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<MinecraftInstance>(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<MinecraftInstance>(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> minecraftInstance = std::dynamic_pointer_cast<MinecraftInstance>(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<MinecraftInstance>(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<MinecraftInstance>(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 <TheKodeToad@proton.me> Date: Wed, 9 Oct 2024 16:59:56 +0100 Subject: [PATCH 093/177] Use UTF-8 to decode logs on Java 18 or newer Signed-off-by: TheKodeToad <TheKodeToad@proton.me> --- 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 <QTextDecoder> #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<QMetaObject::Connection> connection{ new QMetaObject::Connection }; From 2bc6ae97568f9c9e522c4a64988cb325eb4d25ec Mon Sep 17 00:00:00 2001 From: TheKodeToad <TheKodeToad@proton.me> Date: Fri, 11 Oct 2024 19:53:28 +0100 Subject: [PATCH 094/177] Prevent directories from being removed on instance update Signed-off-by: TheKodeToad <TheKodeToad@proton.me> --- 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 095/177] 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<uint>(std::numeric_limits<int>::max()); + static constexpr uint maxCache = static_cast<uint>(std::numeric_limits<int>::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 <qpixmap.h> #include <QDebug> #include <QDir> @@ -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<Metadata::ModStruct>; auto metadata() const -> const std::shared_ptr<Metadata::ModStruct>; @@ -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 <TheKodeToad@proton.me> Date: Fri, 11 Oct 2024 21:35:13 +0100 Subject: [PATCH 096/177] Continue deleting before failing Signed-off-by: TheKodeToad <TheKodeToad@proton.me> --- 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 <alexandru.tripon97@gmail.com> Date: Sat, 12 Oct 2024 00:19:54 +0300 Subject: [PATCH 097/177] remove client overrides instead of double deleting the normal ones Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 098/177] 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 @@ <bool>false</bool> </property> <layout class="QGridLayout" name="gridLayout_4"> - <item row="2" column="0"> - <widget class="QLabel" name="labelPostExitCmd"> - <property name="text"> - <string>P&ost-exit command:</string> - </property> - <property name="buddy"> - <cstring>postExitCmdTextBox</cstring> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="preLaunchCmdTextBox"/> - </item> <item row="0" column="0"> <widget class="QLabel" name="labelPreLaunchCmd"> <property name="text"> @@ -61,8 +48,8 @@ </property> </widget> </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="postExitCmdTextBox"/> + <item row="0" column="1"> + <widget class="QLineEdit" name="preLaunchCmdTextBox"/> </item> <item row="1" column="0"> <widget class="QLabel" name="labelWrapperCmd"> @@ -77,6 +64,19 @@ <item row="1" column="1"> <widget class="QLineEdit" name="wrapperCmdTextBox"/> </item> + <item row="2" column="0"> + <widget class="QLabel" name="labelPostExitCmd"> + <property name="text"> + <string>P&ost-exit command:</string> + </property> + <property name="buddy"> + <cstring>postExitCmdTextBox</cstring> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="postExitCmdTextBox"/> + </item> </layout> </widget> </item> From 3c836ece71c61c19eacd7bb4f324940071c6e89a Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <github-actions[bot]@users.noreply.github.com> Date: Sun, 13 Oct 2024 00:24:52 +0000 Subject: [PATCH 099/177] 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 100/177] 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<QMetaObject::Connection> m_taskConnections; bool m_is_multi_step = false; QHash<QUuid, SubTaskProgressBar*> taskProgress; From ac13579b9963a312b909e712c372cb115f21f0db Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 14 Oct 2024 11:10:54 +0300 Subject: [PATCH 101/177] fix heap-use-after-free in modrinth creation task Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- .../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<EnsureMetadataTask>(mods, folder, ModPlatform::ResourceProvider::MODRINTH); From 7519c63f2e8a5ebc9480a470a1e7702436178c51 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sat, 19 Oct 2024 01:11:27 +0300 Subject: [PATCH 102/177] Replace http with https on skins Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 <getchoo@tuta.io> Date: Sat, 19 Oct 2024 11:59:32 -0400 Subject: [PATCH 103/177] fix(nix): enable checks Signed-off-by: seth <getchoo@tuta.io> --- 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 <getchoo@tuta.io> Date: Sat, 19 Oct 2024 12:33:40 -0400 Subject: [PATCH 104/177] 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 <getchoo@tuta.io> --- 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 <getchoo@tuta.io> Date: Sat, 19 Oct 2024 12:38:17 -0400 Subject: [PATCH 105/177] fix(flatpak): run tests for launcher Signed-off-by: seth <getchoo@tuta.io> --- 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 <alexandru.tripon97@gmail.com> Date: Sat, 19 Oct 2024 01:10:04 +0300 Subject: [PATCH 106/177] Fix tests segfault Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- CMakeLists.txt | 12 +++++------ launcher/Application.h | 6 ++++++ launcher/CMakeLists.txt | 10 +++------- .../minecraft/mod/ResourceFolderModel.cpp | 7 +++---- launcher/net/NetJob.cpp | 5 +++-- .../ui/pages/modplatform/ResourceModel.cpp | 20 +++++++++++-------- 6 files changed, 33 insertions(+), 27 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<Application*>(QCoreApplication::instance())) +// Used for checking if is a test +#if defined(APPLICATION_DYN) +#undef APPLICATION_DYN +#endif +#define APPLICATION_DYN (dynamic_cast<Application*>(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<QNetworkAccessManager> 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*, bool> 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<ResourceModel*>(this)->getIcon(const_cast<QModelIndex&>(index), pack->logoUrl); - icon_or_none.has_value()) - return icon_or_none.value(); - - return APPLICATION->getThemedIcon("screenshot-placeholder"); + if (APPLICATION_DYN) { + if (auto icon_or_none = const_cast<ResourceModel*>(this)->getIcon(const_cast<QModelIndex&>(index), pack->logoUrl); + icon_or_none.has_value()) + return icon_or_none.value(); + + 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 <alexandru.tripon97@gmail.com> Date: Sat, 19 Oct 2024 22:07:31 +0300 Subject: [PATCH 107/177] make sure that tests are only disabled fro cmark Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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]" <github-actions[bot]@users.noreply.github.com> Date: Sun, 20 Oct 2024 00:25:22 +0000 Subject: [PATCH 108/177] 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 9a810dfa6e609d736511fb166efa403eaf9506b3 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sun, 20 Oct 2024 23:14:05 +0300 Subject: [PATCH 109/177] fix sparkle signature Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 0586d38e03de6890bf5697c7e1a965aac9bd36fb) --- .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 ff97affa7210524a506a7ae25d8d17c41ca6f0ae Mon Sep 17 00:00:00 2001 From: TheKodeToad <TheKodeToad@proton.me> Date: Mon, 21 Oct 2024 14:41:48 +0100 Subject: [PATCH 110/177] Fix /norestart Signed-off-by: TheKodeToad <TheKodeToad@proton.me> (cherry picked from commit 78e24962f93b5cc2350d04bebd7e5231d1bc4819) --- 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 1cf91fa5d93aa2a4b2caab10a20b65ca4b95869a Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 21 Oct 2024 16:17:48 +0300 Subject: [PATCH 111/177] do not require java if auto-download is enabled Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit fcadbbb739076096a9057ec340f7f6d39bc4b72f) --- 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 577f8074e1ec203e119b50b1588d2b789eb40425 Mon Sep 17 00:00:00 2001 From: TheKodeToad <TheKodeToad@proton.me> Date: Mon, 21 Oct 2024 16:30:08 +0100 Subject: [PATCH 112/177] Fix removing portable.txt on Linux portable build Signed-off-by: TheKodeToad <TheKodeToad@proton.me> (cherry picked from commit f3f4c446206647b69b9c19e63617b163b99c6164) --- 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 199c5497d327f35d0bc70aa7949be397ed583aa7 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 21 Oct 2024 19:28:34 +0300 Subject: [PATCH 113/177] do not try to import skin if path is empty Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 9a5b773e69e7198cc37413ab7d69ba6d0a66f854) --- 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 6da14d66bb80cbd6818582347b49bc6eb3a4c1f2 Mon Sep 17 00:00:00 2001 From: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com> Date: Mon, 21 Oct 2024 22:59:51 +0300 Subject: [PATCH 114/177] Update launcher/ui/dialogs/skins/SkinManageDialog.cpp Co-authored-by: TheKodeToad <TheKodeToad@proton.me> Signed-off-by: Alexandru Ionut Tripon <alexandru.tripon97@gmail.com> (cherry picked from commit 69028969f1a6c42b698b900256ad2e6d9ee208eb) --- 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 51a71d04715bfc47c1688bd7606b3c4f043cd3d8 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 21 Oct 2024 23:53:23 +0300 Subject: [PATCH 115/177] skip QSaveFile temprary files Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 562c3013269dbb9cad411f58ded333dee1aea158) --- 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 <QDebug> #include <QFlag> #include <QIcon> +#include <QMutex> +#include <QSet> #include <QUrl> #include <memory> @@ -303,4 +305,13 @@ class Application : public QApplication { QList<QUrl> m_urlsToImport; QString m_instanceIdToShowWindowOf; std::unique_ptr<QFile> logFile; + + public: + void addQSavePath(QString); + void removeQSavePath(QString); + bool checkQSavePath(QString); + + private: + QSet<QString> 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 <QDirIterator> #include <QFile> #include <QFileInfo> -#include <QSaveFile> #include <QStandardPaths> #include <QStorageInfo> #include <QTextStream> @@ -54,6 +53,7 @@ #include <system_error> #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 <alexandru.tripon97@gmail.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 <https://www.gnu.org/licenses/>. + */ +#pragma once + +#include <QSaveFile> +#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 <QDebug> #include <QDir> #include <QDirIterator> -#include <QSaveFile> #include <QString> #include <FileSystem.h> @@ -57,6 +56,7 @@ #include <optional> #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 <memory> +#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 <QSaveFile> - +#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<QSaveFile> m_output_file; + std::unique_ptr<PSaveFile> 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 <QDebug> #include <QFile> -#include <QSaveFile> #include <QStringList> #include <QTemporaryFile> #include <QTextStream> 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 <icons/IconList.h> #include <QDebug> #include <QFileInfo> -#include <QSaveFile> #include <QSortFilterProxyModel> #include <QStack> #include <functional> From 85422427b9794a3bb6765e9947c03844862035e4 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Tue, 22 Oct 2024 09:41:00 +0300 Subject: [PATCH 116/177] Replaced QSet with QHash Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 73d33f93b30f658f9671358ac52bf4e03afeaefd) --- launcher/Application.cpp | 13 +++++++++---- launcher/Application.h | 3 +-- launcher/PSaveFile.h | 21 +++++++++++---------- 3 files changed, 21 insertions(+), 16 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 <QFlag> #include <QIcon> #include <QMutex> -#include <QSet> #include <QUrl> #include <memory> @@ -312,6 +311,6 @@ class Application : public QApplication { bool checkQSavePath(QString); private: - QSet<QString> m_qsaveResources; + QHash<QString, int> 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 <QFileInfo> #include <QSaveFile> #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) + 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->addQSavePath(name + "."); + app->removeQSavePath(m_absoluteFilePath); } } - virtual ~PSaveFile() + + private: + void addPath(const QString& path) { + m_absoluteFilePath = QFileInfo(path).absoluteFilePath() + "."; // add dot for tmp files only if (auto app = APPLICATION_DYN) { - app->removeQSavePath(fileName() + "."); + app->addQSavePath(m_absoluteFilePath); } } + QString m_absoluteFilePath; }; #else #define PSaveFile QSaveFile From b983ae0fb000b0a413115f4b8bd64f8447cca80b Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Tue, 22 Oct 2024 13:43:16 +0300 Subject: [PATCH 117/177] fix small leak Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 836aebc0d91fe8658052b8c4a5a4ab31da4a4b15) --- 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<ModFolderModel> 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 fb7d19941f7f7e314df1c776fde8cafb3fb248ad Mon Sep 17 00:00:00 2001 From: TheKodeToad <TheKodeToad@proton.me> Date: Wed, 23 Oct 2024 13:44:39 +0100 Subject: [PATCH 118/177] Fix CleanEnviroment()'s usage of stripVariableEntries Signed-off-by: TheKodeToad <TheKodeToad@proton.me> (cherry picked from commit e7cd8fe078e3a68bd3179816020a9ed08f1b2847) --- 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 729cec5f45468e9647027ea75155fc1fb6d7c0f1 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 119/177] fix don't hang the ui for a full version load Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> (cherry picked from commit 7bd04ae928527b065174021fba98dc78d0d119a3) --- 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 a839258c07d1faf7958c9c9b0246faacefaabedc Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Fri, 25 Oct 2024 00:19:06 +0300 Subject: [PATCH 120/177] bump develop to 9.2 Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b677b0b7c..728e9c246 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -181,7 +181,7 @@ set(Launcher_FMLLIBS_BASE_URL "https://files.prismlauncher.org/fmllibs/" CACHE S ######## Set version numbers ######## set(Launcher_VERSION_MAJOR 9) -set(Launcher_VERSION_MINOR 0) +set(Launcher_VERSION_MINOR 2) set(Launcher_VERSION_NAME "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}") set(Launcher_VERSION_NAME4 "${Launcher_VERSION_MAJOR}.${Launcher_VERSION_MINOR}.0.0") From 008d69e5e5fc7e0b05125a464dcd23fd95c9fcb5 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 121/177] 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> (cherry picked from commit 4ce025c0a209a4eec20f7f1b9a7777bbe886be8c) --- 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 - - 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 + commit: 7b6aead9fb88b3623e3b3725ebb42670cbe4c579 # 3.4 - 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 <danilklishch@gmail.com> +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 98819a0d02499514590809049ed46feafbb7501a 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 122/177] chore(deps): update actions/cache action to v4.1.2 (cherry picked from commit 210d0d8aa25578cbbf8250797504ae1652544600) --- .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 27c6596bcbfd079c404d99a08688d1a9e72a498c Mon Sep 17 00:00:00 2001 From: TheKodeToad <TheKodeToad@proton.me> Date: Thu, 24 Oct 2024 01:33:01 +0100 Subject: [PATCH 123/177] Use Launcher log level in AutoInstallJava Signed-off-by: TheKodeToad <TheKodeToad@proton.me> (cherry picked from commit d8702e1357d36423a0d40b916d49fd937284a204) --- 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<JavaInstall>(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 5f06517b62745219183fd364e2557f23dcc04d66 Mon Sep 17 00:00:00 2001 From: seth <getchoo@tuta.io> Date: Fri, 25 Oct 2024 02:33:29 -0400 Subject: [PATCH 124/177] chore(nix): sync with nixpkgs Signed-off-by: seth <getchoo@tuta.io> (cherry picked from commit a5c554cf6ee32afa41c5a2af1ea8e8feb0087a49) --- nix/unwrapped.nix | 20 ++++---- nix/wrapper.nix | 115 ++++++++++++++++++++-------------------------- 2 files changed, 63 insertions(+), 72 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, + version, zlib, + msaClientID ? null, - gamemodeSupport ? stdenv.isLinux, - version, - libnbtplusplus, + 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 31031ec92311c1ccba385ce4cb10553f8172a2ed Mon Sep 17 00:00:00 2001 From: seth <getchoo@tuta.io> Date: Fri, 25 Oct 2024 02:34:15 -0400 Subject: [PATCH 125/177] chore(nix): use `self` for version Signed-off-by: seth <getchoo@tuta.io> (cherry picked from commit 63b10738b2a1065d55077e729fcada6e7f64d10a) --- 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 f06505b1381a13826a04adfe42acbc6369f6e012 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sun, 27 Oct 2024 11:58:34 +0200 Subject: [PATCH 126/177] change contributors name Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit f373a5cea0e816158cdabca3423107989aed0a85) --- 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 << "<h3>" << QObject::tr("With thanks to", "About Credits") << "</h3>\n"; stream << QString("<p>Boba %1</p>\n").arg(getWebsite("https://bobaonline.neocities.org/")); - stream << QString("<p>Davi Rafael %1</p>\n").arg(getWebsite("https://auti.one/")); + stream << QString("<p>AutiOne %1</p>\n").arg(getWebsite("https://auti.one/")); stream << QString("<p>Fulmine %1</p>\n").arg(getWebsite("https://fulmine.xyz/")); stream << QString("<p>ely %1</p>\n").arg(getGitHub("elyrodso")); stream << QString("<p>gon sawa %1</p>\n").arg(getGitHub("gonsawa")); From 42a6bd11515e9dd7fd51d79c015e9a62ea99f925 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sun, 27 Oct 2024 13:17:58 +0200 Subject: [PATCH 127/177] change ZekeZ name Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit c4cd7cf6c173b7052f31614b4641d2172defa91a) --- 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("<p>d-513 %1</p>\n").arg(getGitHub("d-513")); stream << QString("<p>txtsd %1</p>\n").arg(getWebsite("https://ihavea.quest")); stream << QString("<p>timoreo %1</p>\n").arg(getGitHub("timoreo22")); - stream << QString("<p>Ezekiel Smith (ZekeSmith) %1</p>\n").arg(getGitHub("ZekeSmith")); + stream << QString("<p>ZekeZ %1</p>\n").arg(getGitHub("ZekeZDev")); stream << QString("<p>cozyGalvinism %1</p>\n").arg(getGitHub("cozyGalvinism")); stream << QString("<p>DioEgizio %1</p>\n").arg(getGitHub("DioEgizio")); stream << QString("<p>flowln %1</p>\n").arg(getGitHub("flowln")); From 9560447c92a5d5c794f9a890134de38839eda81e Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sun, 27 Oct 2024 12:06:45 +0200 Subject: [PATCH 128/177] swap search with filter button for modpacks Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 61448a61ea400eebd91f97aa07e9419cc2f35823) --- 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 @@ <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> - <widget class="QLineEdit" name="searchEdit"> - <property name="placeholderText"> - <string>Search and filter...</string> + <widget class="QPushButton" name="filterButton"> + <property name="text"> + <string>Filter options</string> </property> </widget> </item> <item> - <widget class="QPushButton" name="filterButton"> - <property name="text"> - <string>Filter</string> + <widget class="QLineEdit" name="searchEdit"> + <property name="placeholderText"> + <string>Search and filter...</string> </property> </widget> </item> 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 @@ <item> <layout class="QHBoxLayout" name="horizontalLayout"> <item> - <widget class="QLineEdit" name="searchEdit"> - <property name="placeholderText"> - <string>Search and filter...</string> + <widget class="QPushButton" name="filterButton"> + <property name="text"> + <string>Filter options</string> </property> </widget> </item> <item> - <widget class="QPushButton" name="filterButton"> - <property name="text"> - <string>Filter</string> + <widget class="QLineEdit" name="searchEdit"> + <property name="placeholderText"> + <string>Search and filter...</string> </property> </widget> </item> From 8e4994590bd59bcabca2c0b27e4b064f49d00c31 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sun, 27 Oct 2024 03:02:13 +0300 Subject: [PATCH 129/177] fix unzipping typo Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 685d3c79ac78d7e41ab257de82dc743020189a33) --- 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 98fe035442edc0efa9b58e9b4924ca05da864f8b Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 28 Oct 2024 12:39:26 +0200 Subject: [PATCH 130/177] replace unzipping with unpacking Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 9eb1ce3ad7dde0b2ca551b0b281081724e6fd58e) --- 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<QStringList> 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<QStringList> 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 130714a9ab24ce45ad935d7e2ab2a9440b2708fd Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Wed, 18 Sep 2024 21:01:34 +0300 Subject: [PATCH 131/177] translate standard buttons Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit bd82737efbb99dfc488d6d073046e5fe62693a9e) --- 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 <DesktopServices.h> +#include <QPushButton> #include <QUrl> #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 <icons/IconList.h> #include <QDebug> #include <QFileInfo> +#include <QPushButton> +#include <QSaveFile> #include <QSortFilterProxyModel> #include <QStack> #include <functional> @@ -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<Mod*> 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<PackProfile> 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 <QDebug> #include <QItemSelectionModel> +#include <QPushButton> #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 <QPushButton> #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 <QPushButton> #include <QTextBrowser> #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 3d55236fdf14cbe0c39b922ed7ef21e831a3688e Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Fri, 25 Oct 2024 01:05:58 +0300 Subject: [PATCH 132/177] add extra protection against empty download link Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 8daa1219a508ddb37070c01046c78b731a277887) --- 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 817079439..68a12c479 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 <QDesktopServices> @@ -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 1d9c97803a51ac1a4d44fe23adf129388688dde9 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sun, 27 Oct 2024 03:05:30 +0200 Subject: [PATCH 133/177] rename snake_case to camelCase Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 44894a29b1784cfa8a04807c17d21169230ff922) --- 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<ModModel*>(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<QString, QString> 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<ResourcePackResourceModel*>(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<QString, QString> ResourcePackResourcePage::urlHandlers() const diff --git a/launcher/ui/pages/modplatform/ResourcePage.cpp b/launcher/ui/pages/modplatform/ResourcePage.cpp index 68a12c479..1fcc2bdd8 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); @@ -478,10 +478,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<ShaderPackResourceModel*>(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<QString, QString> 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<ModFilterWidget> FlameModPage::createFilterWidget() { - return ModFilterWidget::create(&static_cast<MinecraftInstance&>(m_base_instance), false, this); + return ModFilterWidget::create(&static_cast<MinecraftInstance&>(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<ModFilterWidget> ModrinthModPage::createFilterWidget() { - return ModFilterWidget::create(&static_cast<MinecraftInstance&>(m_base_instance), true, this); + return ModFilterWidget::create(&static_cast<MinecraftInstance&>(m_baseInstance), true, this); } void ModrinthModPage::prepareProviderCategories() From 1e696328bb89ce363e36d3c460b9ec05709b8644 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sun, 27 Oct 2024 03:05:56 +0200 Subject: [PATCH 134/177] fix #3001 Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit b593ff09e9c4b5fa30ca082eea4cd69f12a286e5) --- 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 1fcc2bdd8..80258946c 100644 --- a/launcher/ui/pages/modplatform/ResourcePage.cpp +++ b/launcher/ui/pages/modplatform/ResourcePage.cpp @@ -484,11 +484,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<int>::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 c3cf5d31da70ed980ebab0cbf0a2216156dc835c Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 28 Oct 2024 12:54:21 +0200 Subject: [PATCH 135/177] replace currentData with itemData on QComboBox::currentIndexChanged slots Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 0cafac84ac6328fefb8992de2c6a2385b1c0053c) --- 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 80258946c..2c2f97b77 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; } @@ -485,7 +485,7 @@ void ResourcePage::openProject(QVariant projectID) m_ui->gridLayout_4->addWidget(buttonBox, 1, 2); connect(m_ui->versionSelectionBox, QOverload<int>::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 db32b2ad992a534b8824d905339ba15d3bf371f8 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 28 Oct 2024 19:19:06 +0200 Subject: [PATCH 136/177] remove message box Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 9cdda4377b0090a035e286a86fd78f126f995356) --- 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 2c2f97b77..77cbe29a3 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 63a6f823fd9a35c749f061b26f53d5b0623f50cf Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 28 Oct 2024 22:27:40 +0200 Subject: [PATCH 137/177] add qassert Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 94f65f8727bfd12cc50eb8b62d52bca308cef9b5) --- 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 77cbe29a3..766070f20 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 698a838b56d47a6be806eb92107e2ae617583d9f Mon Sep 17 00:00:00 2001 From: Ben Westover <me@benthetechguy.net> Date: Tue, 29 Oct 2024 18:20:00 +0000 Subject: [PATCH 138/177] Shorten metainfo.xml app summary Signed-off-by: Ben Westover <me@benthetechguy.net> (cherry picked from commit fd109c47401c755e35da9c2884e9b38532bed56c) --- 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 @@ <launchable type="desktop-id">org.prismlauncher.PrismLauncher.desktop</launchable> <name>Prism Launcher</name> <developer_name>Prism Launcher Contributors</developer_name> - <summary>A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once</summary> + <summary>Custom Minecraft Launcher to easily manage multiple Minecraft installations at once</summary> <metadata_license>CC0-1.0</metadata_license> <project_license>GPL-3.0-only</project_license> <url type="homepage">https://prismlauncher.org/</url> From d105d76f2af754d71104f0d05c4911b57b71fc00 Mon Sep 17 00:00:00 2001 From: Ben Westover <me@benthetechguy.net> Date: Tue, 29 Oct 2024 18:24:19 +0000 Subject: [PATCH 139/177] Fix some typos Signed-off-by: Ben Westover <me@benthetechguy.net> (cherry picked from commit f6511c601e1fd63a864f1681beef0f85adfe6f7e) --- .../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 dd8dec8be8c9c12f659c89a13746e4e52d0d0aa7 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Wed, 30 Oct 2024 17:15:42 +0200 Subject: [PATCH 140/177] fix macos system detection Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 14c95b9d376975144faddc33e7154cca86621804) --- 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 d21cda188061778ab678cc69bfaa004b7bf99b59 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sun, 27 Oct 2024 12:36:14 +0200 Subject: [PATCH 141/177] lock m_instanceExtras Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 11d4d948aa1a1ba67cee59193eb98a7fdad2d909) --- 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<InstanceWindow*>(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<LaunchController> controller; }; std::map<QString, InstanceXtras> m_instanceExtras; + mutable QMutex m_instanceExtrasMutex; // main state variables size_t m_openWindows = 0; From 484d90899f293121558a5a6da984bd7eb5a1c508 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Fri, 1 Nov 2024 17:34:29 +0200 Subject: [PATCH 142/177] disable retry for modrinth currentVersions API Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 6f2f3c2d3bf6a170060523ad47fe69fef57bd9b4) --- 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 40af3cf3d2fbf0c931eb9e137e6a69f6e8831a86 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Fri, 1 Nov 2024 11:03:47 +0200 Subject: [PATCH 143/177] use isPortable to determine if the MSAStep should check for url handler Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 99cfb6237030f03c148e531da78b8da8f7d4c2f1) --- 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 c0394c52b7e944c7e5d14e8da5128b5f92e19ace 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 144/177] ci: bump linux qt version Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> (cherry picked from commit d63a3364111a99337c2096c807550f3d7c62b47a) --- .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 7f074ca7b94d56a8700752ede95c7474291ee307 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 145/177] ci: libxcb-curcsor_dev ? Signed-off-by: Rachel Powers <508861+Ryex@users.noreply.github.com> (cherry picked from commit ba6743d134589294ac3ba754e6ad83c2e59d4ffd) --- .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 1dce1360bdea93e5c8450585e1154cead29463aa Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Thu, 31 Oct 2024 14:51:18 +0200 Subject: [PATCH 146/177] Fix installed typo Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 670c932f32753fd67979f95810b052d7a62a0006) --- launcher/ui/dialogs/ModUpdateDialog.cpp | 2 +- launcher/ui/dialogs/ReviewMessageBox.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/launcher/ui/dialogs/ModUpdateDialog.cpp b/launcher/ui/dialogs/ModUpdateDialog.cpp index f906cfcea..308072c5e 100644 --- a/launcher/ui/dialogs/ModUpdateDialog.cpp +++ b/launcher/ui/dialogs/ModUpdateDialog.cpp @@ -418,7 +418,7 @@ void ModUpdateDialog::appendMod(CheckUpdateTask::UpdatableMod const& info, QStri 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 984daa450bbc53cec83b183472d83e022efc3739 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Thu, 7 Nov 2024 14:45:14 +0200 Subject: [PATCH 147/177] Close the window using the invokeMethod to not block Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 9601fbf2d5b36d3609cce6b1a3b458db0d170531) --- launcher/Application.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index b64b9decb..474493f5a 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1489,7 +1489,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 76602391f4079b303f31143cf60b4823e2a2b2b2 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Thu, 14 Nov 2024 16:26:21 +0200 Subject: [PATCH 148/177] Fix crash caused by invalid resource pointer Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- launcher/minecraft/mod/ResourceFolderModel.cpp | 15 +++++++++------ launcher/minecraft/mod/ResourceFolderModel.h | 6 +++--- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index ce3e16bce..b577c7272 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -261,7 +261,7 @@ bool ResourceFolderModel::update() return true; } -void ResourceFolderModel::resolveResource(Resource* res) +void ResourceFolderModel::resolveResource(Resource::Ptr res) { if (!res->shouldResolve()) { return; @@ -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(); }, @@ -317,7 +320,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]; @@ -629,7 +632,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]; diff --git a/launcher/minecraft/mod/ResourceFolderModel.h b/launcher/minecraft/mod/ResourceFolderModel.h index ca919d3e3..354eedc28 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.h +++ b/launcher/minecraft/mod/ResourceFolderModel.h @@ -76,7 +76,7 @@ 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; } @@ -285,7 +285,7 @@ void ResourceFolderModel::applyUpdates(QSet<QString>& current_set, QSet<QString> } m_resources[row].reset(new_resource); - resolveResource(m_resources.at(row).get()); + resolveResource(m_resources.at(row)); emit dataChanged(index(row, 0), index(row, columnCount(QModelIndex()) - 1)); } } @@ -333,7 +333,7 @@ void ResourceFolderModel::applyUpdates(QSet<QString>& current_set, QSet<QString> for (auto& added : added_set) { auto res = new_resources[added]; m_resources.append(res); - resolveResource(m_resources.last().get()); + resolveResource(m_resources.last()); } endInsertRows(); From ea9029d7b62a729206a8f137d58065e574540b7b Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Thu, 14 Nov 2024 13:17:52 +0200 Subject: [PATCH 149/177] Fix file remaingin open after program closure Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit ce61ed2f86d313f63c999d012d768425ea3793c3) --- launcher/InstanceCreationTask.cpp | 4 +- launcher/InstanceImportTask.cpp | 64 +++++++++++-------- launcher/InstanceImportTask.h | 7 +- .../flame/FlameInstanceCreationTask.cpp | 1 + 4 files changed, 42 insertions(+), 34 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<ModrinthCreationTask> 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<ModrinthCreationTask>(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<ModrinthCreationTask>(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(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); - - inst_creation_task->start(); + 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(inst_creation_task.get(), &Task::aborted, this, &Task::abort); + connect(inst_creation_task.get(), &Task::abortStatusChanged, this, &Task::setAbortable); + + 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 <QUrl> #include "InstanceTask.h" -#include <memory> -#include <optional> - class QuaZip; class InstanceImportTask : public InstanceTask { Q_OBJECT public: explicit InstanceImportTask(const QUrl& sourceUrl, QWidget* parent = nullptr, QMap<QString, QString>&& 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 b8c40ee42..35929d2da 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 eefeb5799df51ef7a1d634c84596553a2107555d Mon Sep 17 00:00:00 2001 From: TheKodeToad <TheKodeToad@proton.me> Date: Wed, 6 Nov 2024 23:57:24 +0000 Subject: [PATCH 150/177] Add scrollbar to Settings -> Launcher -> Features Signed-off-by: TheKodeToad <TheKodeToad@proton.me> (cherry picked from commit 71e55f88294976577ad0b2f8c21b635cf8fc9735) --- launcher/ui/pages/global/LauncherPage.ui | 636 ++++++++++++----------- 1 file changed, 329 insertions(+), 307 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 @@ </attribute> <layout class="QVBoxLayout" name="verticalLayout_9"> <item> - <widget class="QGroupBox" name="updateSettingsBox"> - <property name="title"> - <string>Update Settings</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_7"> - <item> - <widget class="QCheckBox" name="autoUpdateCheckBox"> - <property name="text"> - <string>Check for updates automatically</string> - </property> - </widget> - </item> - <item> - <layout class="QFormLayout" name="updateSetingsLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="updateIntervalLabel"> - <property name="text"> - <string>Update interval</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="updateIntervalSpinBox"> - <property name="toolTip"> - <string>Set it to 0 to only check on launch</string> - </property> - <property name="suffix"> - <string>h</string> - </property> - <property name="minimum"> - <number>0</number> - </property> - <property name="maximum"> - <number>99999999</number> - </property> - </widget> - </item> - </layout> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="foldersBox"> - <property name="title"> - <string>Folders</string> - </property> - <layout class="QGridLayout" name="foldersBoxLayout"> - <item row="8" column="0"> - <widget class="QLabel" name="labelDownloadsDir"> - <property name="text"> - <string>&Downloads:</string> - </property> - <property name="buddy"> - <cstring>downloadsDirTextBox</cstring> - </property> - </widget> - </item> - <item row="8" column="2"> - <widget class="QToolButton" name="downloadsDirBrowseBtn"> - <property name="text"> - <string>Browse</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLineEdit" name="iconsDirTextBox"/> - </item> - <item row="3" column="1"> - <widget class="QLineEdit" name="javaDirTextBox"/> - </item> - <item row="4" column="0"> - <widget class="QLabel" name="labelSkinsDir"> - <property name="text"> - <string>&Skins:</string> - </property> - <property name="buddy"> - <cstring>skinsDirTextBox</cstring> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="labelIconsDir"> - <property name="text"> - <string>&Icons:</string> - </property> - <property name="buddy"> - <cstring>iconsDirTextBox</cstring> - </property> - </widget> - </item> - <item row="9" column="1" colspan="2"> - <widget class="QCheckBox" name="downloadsDirWatchRecursiveCheckBox"> - <property name="toolTip"> - <string>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).</string> - </property> - <property name="text"> - <string>Check downloads folder recursively</string> - </property> - </widget> - </item> - <item row="8" column="1"> - <widget class="QLineEdit" name="downloadsDirTextBox"/> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="labelJavaDir"> - <property name="text"> - <string>&Java:</string> - </property> - <property name="buddy"> - <cstring>javaDirTextBox</cstring> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="labelModsDir"> - <property name="text"> - <string>&Mods:</string> - </property> - <property name="buddy"> - <cstring>modsDirTextBox</cstring> - </property> - </widget> - </item> - <item row="4" column="1"> - <widget class="QLineEdit" name="skinsDirTextBox"/> - </item> - <item row="1" column="1"> - <widget class="QLineEdit" name="modsDirTextBox"/> - </item> - <item row="0" column="1"> - <widget class="QLineEdit" name="instDirTextBox"/> - </item> - <item row="1" column="2"> - <widget class="QToolButton" name="modsDirBrowseBtn"> - <property name="text"> - <string>Browse</string> - </property> - </widget> - </item> - <item row="0" column="2"> - <widget class="QToolButton" name="instDirBrowseBtn"> - <property name="text"> - <string>Browse</string> - </property> - </widget> - </item> - <item row="2" column="2"> - <widget class="QToolButton" name="iconsDirBrowseBtn"> - <property name="text"> - <string>Browse</string> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="labelInstDir"> - <property name="text"> - <string>I&nstances:</string> - </property> - <property name="buddy"> - <cstring>instDirTextBox</cstring> - </property> - </widget> - </item> - <item row="3" column="2"> - <widget class="QToolButton" name="javaDirBrowseBtn"> - <property name="text"> - <string>Browse</string> - </property> - </widget> - </item> - <item row="4" column="2"> - <widget class="QToolButton" name="skinsDirBrowseBtn"> - <property name="text"> - <string>Browse</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="modsBox"> - <property name="title"> - <string>Mods</string> + <widget class="QScrollArea" name="scrollArea"> + <property name="horizontalScrollBarPolicy"> + <enum>Qt::ScrollBarAlwaysOff</enum> </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item> - <widget class="QCheckBox" name="metadataDisableBtn"> - <property name="toolTip"> - <string>Disable using metadata provided by mod providers (like Modrinth or CurseForge) for mods.</string> - </property> - <property name="text"> - <string>Disable using metadata for mods</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="metadataWarningLabel"> - <property name="text"> - <string><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></string> - </property> - <property name="wordWrap"> - <bool>true</bool> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="dependenciesDisableBtn"> - <property name="toolTip"> - <string>Disable the automatic detection, installation, and updating of mod dependencies.</string> - </property> - <property name="text"> - <string>Disable automatic mod dependency management</string> - </property> - </widget> - </item> - <item> - <widget class="QCheckBox" name="skipModpackUpdatePromptBtn"> - <property name="toolTip"> - <string>When creating a new modpack instance, do not suggest updating existing instances instead.</string> - </property> - <property name="text"> - <string>Skip modpack update prompt</string> - </property> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="miscellaneousGroupBox"> - <property name="title"> - <string>Miscellaneous</string> + <property name="widgetResizable"> + <bool>true</bool> </property> - <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="1"> - <widget class="QSpinBox" name="numberOfConcurrentDownloadsSpinBox"> - <property name="minimum"> - <number>1</number> - </property> - </widget> - </item> - <item row="0" column="0"> - <widget class="QLabel" name="numberOfConcurrentTasksLabel"> - <property name="text"> - <string>Number of concurrent tasks</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QSpinBox" name="numberOfConcurrentTasksSpinBox"> - <property name="minimum"> - <number>1</number> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="numberOfConcurrentDownloadsLabel"> - <property name="text"> - <string>Number of concurrent downloads</string> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="numberOfManualRetriesLabel"> - <property name="text"> - <string>Number of manual retries</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QSpinBox" name="numberOfManualRetriesSpinBox"> - <property name="minimum"> - <number>0</number> - </property> - </widget> - </item> - <item row="3" column="0"> - <widget class="QLabel" name="timeoutSecondsLabel"> - <property name="toolTip"> - <string>Seconds to wait until the requests are terminated</string> - </property> - <property name="text"> - <string>Timeout for HTTP requests</string> - </property> - </widget> - </item> - <item row="3" column="1"> - <widget class="QSpinBox" name="timeoutSecondsSpinBox"> - <property name="suffix"> - <string>s</string> - </property> - </widget> - </item> - </layout> + <widget class="QWidget" name="scrollAreaWidgetContents"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>473</width> + <height>770</height> + </rect> + </property> + <layout class="QVBoxLayout" name="verticalLayout_8"> + <item> + <widget class="QGroupBox" name="updateSettingsBox"> + <property name="title"> + <string>Update Settings</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_7"> + <item> + <widget class="QCheckBox" name="autoUpdateCheckBox"> + <property name="text"> + <string>Check for updates automatically</string> + </property> + </widget> + </item> + <item> + <layout class="QFormLayout" name="updateSetingsLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="updateIntervalLabel"> + <property name="text"> + <string>Update interval</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="updateIntervalSpinBox"> + <property name="toolTip"> + <string>Set it to 0 to only check on launch</string> + </property> + <property name="suffix"> + <string>h</string> + </property> + <property name="minimum"> + <number>0</number> + </property> + <property name="maximum"> + <number>99999999</number> + </property> + </widget> + </item> + </layout> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="foldersBox"> + <property name="title"> + <string>Folders</string> + </property> + <layout class="QGridLayout" name="foldersBoxLayout"> + <item row="8" column="0"> + <widget class="QLabel" name="labelDownloadsDir"> + <property name="text"> + <string>&Downloads:</string> + </property> + <property name="buddy"> + <cstring>downloadsDirTextBox</cstring> + </property> + </widget> + </item> + <item row="8" column="2"> + <widget class="QToolButton" name="downloadsDirBrowseBtn"> + <property name="text"> + <string>Browse</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLineEdit" name="iconsDirTextBox"/> + </item> + <item row="3" column="1"> + <widget class="QLineEdit" name="javaDirTextBox"/> + </item> + <item row="4" column="0"> + <widget class="QLabel" name="labelSkinsDir"> + <property name="text"> + <string>&Skins:</string> + </property> + <property name="buddy"> + <cstring>skinsDirTextBox</cstring> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="labelIconsDir"> + <property name="text"> + <string>&Icons:</string> + </property> + <property name="buddy"> + <cstring>iconsDirTextBox</cstring> + </property> + </widget> + </item> + <item row="9" column="1" colspan="2"> + <widget class="QCheckBox" name="downloadsDirWatchRecursiveCheckBox"> + <property name="toolTip"> + <string>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).</string> + </property> + <property name="text"> + <string>Check downloads folder recursively</string> + </property> + </widget> + </item> + <item row="8" column="1"> + <widget class="QLineEdit" name="downloadsDirTextBox"/> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="labelJavaDir"> + <property name="text"> + <string>&Java:</string> + </property> + <property name="buddy"> + <cstring>javaDirTextBox</cstring> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="labelModsDir"> + <property name="text"> + <string>&Mods:</string> + </property> + <property name="buddy"> + <cstring>modsDirTextBox</cstring> + </property> + </widget> + </item> + <item row="4" column="1"> + <widget class="QLineEdit" name="skinsDirTextBox"/> + </item> + <item row="1" column="1"> + <widget class="QLineEdit" name="modsDirTextBox"/> + </item> + <item row="0" column="1"> + <widget class="QLineEdit" name="instDirTextBox"/> + </item> + <item row="1" column="2"> + <widget class="QToolButton" name="modsDirBrowseBtn"> + <property name="text"> + <string>Browse</string> + </property> + </widget> + </item> + <item row="0" column="2"> + <widget class="QToolButton" name="instDirBrowseBtn"> + <property name="text"> + <string>Browse</string> + </property> + </widget> + </item> + <item row="2" column="2"> + <widget class="QToolButton" name="iconsDirBrowseBtn"> + <property name="text"> + <string>Browse</string> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="labelInstDir"> + <property name="text"> + <string>I&nstances:</string> + </property> + <property name="buddy"> + <cstring>instDirTextBox</cstring> + </property> + </widget> + </item> + <item row="3" column="2"> + <widget class="QToolButton" name="javaDirBrowseBtn"> + <property name="text"> + <string>Browse</string> + </property> + </widget> + </item> + <item row="4" column="2"> + <widget class="QToolButton" name="skinsDirBrowseBtn"> + <property name="text"> + <string>Browse</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="modsBox"> + <property name="title"> + <string>Mods</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <widget class="QCheckBox" name="metadataDisableBtn"> + <property name="toolTip"> + <string>Disable using metadata provided by mod providers (like Modrinth or CurseForge) for mods.</string> + </property> + <property name="text"> + <string>Disable using metadata for mods</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="metadataWarningLabel"> + <property name="text"> + <string><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></string> + </property> + <property name="wordWrap"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="dependenciesDisableBtn"> + <property name="toolTip"> + <string>Disable the automatic detection, installation, and updating of mod dependencies.</string> + </property> + <property name="text"> + <string>Disable automatic mod dependency management</string> + </property> + </widget> + </item> + <item> + <widget class="QCheckBox" name="skipModpackUpdatePromptBtn"> + <property name="toolTip"> + <string>When creating a new modpack instance, do not suggest updating existing instances instead.</string> + </property> + <property name="text"> + <string>Skip modpack update prompt</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="miscellaneousGroupBox"> + <property name="title"> + <string>Miscellaneous</string> + </property> + <layout class="QGridLayout" name="gridLayout"> + <item row="1" column="1"> + <widget class="QSpinBox" name="numberOfConcurrentDownloadsSpinBox"> + <property name="minimum"> + <number>1</number> + </property> + </widget> + </item> + <item row="0" column="0"> + <widget class="QLabel" name="numberOfConcurrentTasksLabel"> + <property name="text"> + <string>Number of concurrent tasks</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QSpinBox" name="numberOfConcurrentTasksSpinBox"> + <property name="minimum"> + <number>1</number> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="numberOfConcurrentDownloadsLabel"> + <property name="text"> + <string>Number of concurrent downloads</string> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="numberOfManualRetriesLabel"> + <property name="text"> + <string>Number of manual retries</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QSpinBox" name="numberOfManualRetriesSpinBox"> + <property name="minimum"> + <number>0</number> + </property> + </widget> + </item> + <item row="3" column="0"> + <widget class="QLabel" name="timeoutSecondsLabel"> + <property name="toolTip"> + <string>Seconds to wait until the requests are terminated</string> + </property> + <property name="text"> + <string>Timeout for HTTP requests</string> + </property> + </widget> + </item> + <item row="3" column="1"> + <widget class="QSpinBox" name="timeoutSecondsSpinBox"> + <property name="suffix"> + <string>s</string> + </property> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <spacer name="verticalSpacer_FeaturesTab"> + <property name="orientation"> + <enum>Qt::Vertical</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>0</width> + <height>0</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> </widget> </item> - <item> - <spacer name="verticalSpacer_FeaturesTab"> - <property name="orientation"> - <enum>Qt::Vertical</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>0</width> - <height>0</height> - </size> - </property> - </spacer> - </item> </layout> </widget> <widget class="QWidget" name="userInterfaceTab"> From 1c94a3e3e5e6273216987041c926652c8bf6f34c Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Tue, 29 Oct 2024 00:40:13 +0200 Subject: [PATCH 151/177] fix leak on resource search Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 8e7d84d05beffac492522f4b2c0d9e638b15146b) --- .../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 4c4017d7ca84162ff8c508d4b9f22a979d6c223e Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 28 Oct 2024 19:13:14 +0200 Subject: [PATCH 152/177] remove task parent from constuctor Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- 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 ++---- launcher/minecraft/mod/tasks/BasicFolderLoadTask.h | 8 ++------ launcher/minecraft/mod/tasks/GetModDependenciesTask.cpp | 7 +++---- launcher/minecraft/mod/tasks/GetModDependenciesTask.h | 5 +---- launcher/minecraft/mod/tasks/LocalDataPackParseTask.cpp | 2 +- launcher/minecraft/mod/tasks/LocalModParseTask.cpp | 2 +- .../minecraft/mod/tasks/LocalResourcePackParseTask.cpp | 4 +--- .../minecraft/mod/tasks/LocalShaderPackParseTask.cpp | 2 +- .../minecraft/mod/tasks/LocalTexturePackParseTask.cpp | 3 +-- launcher/minecraft/mod/tasks/LocalWorldSaveParseTask.cpp | 2 +- launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp | 2 +- launcher/modplatform/CheckUpdateTask.h | 2 +- launcher/modplatform/EnsureMetadataTask.cpp | 8 ++++---- launcher/modplatform/flame/FlameInstanceCreationTask.cpp | 2 +- launcher/modplatform/flame/FlamePackExportTask.cpp | 3 +-- launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp | 3 +-- 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/ModUpdateDialog.cpp | 9 ++++----- launcher/ui/dialogs/ResourceDownloadDialog.cpp | 2 +- launcher/ui/java/InstallJavaDialog.cpp | 2 +- launcher/ui/pages/instance/ModFolderPage.cpp | 6 +++--- launcher/ui/pages/instance/ResourcePackPage.cpp | 5 +---- launcher/ui/pages/instance/ShaderPackPage.cpp | 2 +- launcher/ui/pages/instance/TexturePackPage.cpp | 3 +-- launcher/ui/pages/instance/VersionPage.cpp | 2 +- launcher/ui/widgets/JavaSettingsWidget.cpp | 2 +- tests/Task_test.cpp | 2 +- 58 files changed, 76 insertions(+), 103 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 474493f5a..1d5efe7fc 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -1853,7 +1853,7 @@ bool Application::handleDataMigration(const QString& currentData, matcher->add(std::make_shared<SimplePrefixMatcher>("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 <QtConcurrent> -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 687da1322..aaf84eac4 100644 --- a/launcher/LaunchController.cpp +++ b/launcher/LaunchController.cpp @@ -61,7 +61,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 6e2a94258..af52ad450 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 <QProcess> #include <QTimer> -#include <memory> #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<QString> 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<SequentialTask>( - this, tr("Load meta for %1:%2", "This is for the task name that loads the meta index.").arg(uid, version)); + auto loadTask = + makeShared<SequentialTask>(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<SequentialTask>(this, tr("Load meta for %1", "This is for the task name that loads the meta index.").arg(m_uid)); + auto loadTask = makeShared<SequentialTask>(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 98ac7647f..d6d45af6b 100644 --- a/launcher/minecraft/MinecraftInstance.cpp +++ b/launcher/minecraft/MinecraftInstance.cpp @@ -1093,7 +1093,7 @@ shared_qobject_ptr<LaunchTask> MinecraftInstance::createLaunchTask(AuthSessionPt // load meta { auto mode = session->status != AuthSession::PlayableOffline ? Net::Mode::Online : Net::Mode::Offline; - process->appendStep(makeShared<TaskStepWrapper>(pptr, makeShared<MinecraftLoadAndCheck>(this, mode, pptr))); + process->appendStep(makeShared<TaskStepWrapper>(pptr, makeShared<MinecraftLoadAndCheck>(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 <Application.h> -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<AuthFlow> 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<AuthFlow> 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<SequentialTask>(this, tr("Install Java")); + auto seq = makeShared<SequentialTask>(tr("Install Java")); seq->addTask(m_current_task); seq->addTask(makeShared<Java::SymlinkTask>(final_path)); m_current_task = seq; diff --git a/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h b/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h index fb2e22de6..168e4b6fa 100644 --- a/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h +++ b/launcher/minecraft/mod/tasks/BasicFolderLoadTask.h @@ -26,16 +26,12 @@ class BasicFolderLoadTask : public Task { [[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()) + BasicFolderLoadTask(QDir dir) : Task(false), m_dir(dir), m_result(new Result), m_thread_to_spawn_into(thread()) { m_create_func = [](QFileInfo const& entry) -> Resource::Ptr { return makeShared<Resource>(entry); }; } BasicFolderLoadTask(QDir dir, std::function<Resource::Ptr(QFileInfo const&)> 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()) + : Task(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; } 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_ptr<GetModDependenciesTask::PackDepend (!loaders || !sel->version.loaders || sel->version.loaders & loaders); } -GetModDependenciesTask::GetModDependenciesTask(QObject* parent, - BaseInstance* instance, +GetModDependenciesTask::GetModDependenciesTask(BaseInstance* instance, ModFolderModel* folder, QList<std::shared_ptr<PackDependency>> selected) - : SequentialTask(parent, tr("Get dependencies")) + : SequentialTask(tr("Get dependencies")) , m_selected(selected) , m_flame_provider{ ModPlatform::ResourceProvider::FLAME, std::make_shared<ResourceDownload::FlameModModel>(*instance), std::make_shared<FlameAPI>() } @@ -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<SequentialTask>( - 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<ResourceAPI> api; }; - explicit GetModDependenciesTask(QObject* parent, - BaseInstance* instance, - ModFolderModel* folder, - QList<std::shared_ptr<PackDependency>> selected); + explicit GetModDependenciesTask(BaseInstance* instance, ModFolderModel* folder, QList<std::shared_ptr<PackDependency>> selected); auto getDependecies() const -> QList<std::shared_ptr<PackDependency>> { return m_pack_dependencies; } QHash<QString, PackDependencyExtraInfo> 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/ModFolderLoadTask.cpp b/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp index 63996e584..2c3439ca4 100644 --- a/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp +++ b/launcher/minecraft/mod/tasks/ModFolderLoadTask.cpp @@ -43,7 +43,7 @@ #include <QThread> ModFolderLoadTask::ModFolderLoadTask(QDir mods_dir, QDir index_dir, bool is_indexed, bool clean_orphan) - : Task(nullptr, false) + : Task(false) , m_mods_dir(mods_dir) , m_index_dir(index_dir) , m_is_indexed(is_indexed) diff --git a/launcher/modplatform/CheckUpdateTask.h b/launcher/modplatform/CheckUpdateTask.h index 24b82c28e..ff064c904 100644 --- a/launcher/modplatform/CheckUpdateTask.h +++ b/launcher/modplatform/CheckUpdateTask.h @@ -16,7 +16,7 @@ class CheckUpdateTask : public Task { std::list<Version>& mcVersions, QList<ModPlatform::ModLoaderType> loadersList, std::shared_ptr<ModFolderModel> mods_folder) - : Task(nullptr), m_mods(mods), m_game_versions(mcVersions), m_loaders_list(loadersList), m_mods_folder(mods_folder) {}; + : Task(), m_mods(mods), m_game_versions(mcVersions), m_loaders_list(loadersList), m_mods_folder(mods_folder) {}; struct UpdatableMod { QString name; diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index f6f49f38d..5f04e3c12 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(Mod* mod, 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(mod); if (!hash_task) @@ -30,9 +30,9 @@ EnsureMetadataTask::EnsureMetadataTask(Mod* mod, QDir dir, ModPlatform::Resource } EnsureMetadataTask::EnsureMetadataTask(QList<Mod*>& mods, 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* mod : mods) { auto hash_task = createNewHash(mod); if (!hash_task) @@ -43,7 +43,7 @@ EnsureMetadataTask::EnsureMetadataTask(QList<Mod*>& mods, QDir dir, ModPlatform: } } EnsureMetadataTask::EnsureMetadataTask(QHash<QString, Mod*>& mods, QDir dir, ModPlatform::ResourceProvider prov) - : Task(nullptr), m_mods(mods), m_index_dir(dir), m_provider(prov), m_current_task(nullptr) + : Task(), 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/flame/FlameInstanceCreationTask.cpp b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp index 35929d2da..d6eb45ef5 100644 --- a/launcher/modplatform/flame/FlameInstanceCreationTask.cpp +++ b/launcher/modplatform/flame/FlameInstanceCreationTask.cpp @@ -677,7 +677,7 @@ void FlameCreationTask::validateZIPResources(QEventLoop& loop) break; } } - auto task = makeShared<ConcurrentTask>(this, "CreateModMetadata", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + auto task = makeShared<ConcurrentTask>("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 70bf138a8..fd9138ec8 100644 --- a/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp +++ b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp @@ -40,7 +40,7 @@ void ModrinthCheckUpdate::executeTask() setProgress(0, 9); auto hashing_task = - makeShared<ConcurrentTask>(this, "MakeModrinthHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + makeShared<ConcurrentTask>("MakeModrinthHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); for (auto* mod : m_mods) { auto hash = mod->metadata()->hash; @@ -91,7 +91,6 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr<QByteArray> resp // 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; - continue; } 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<QNetworkAccessManager> 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 <QDebug> #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<ConcurrentTask>; - 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 <QDebug> -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 <QDebug> #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<ConcurrentTask>( - 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/ModUpdateDialog.cpp b/launcher/ui/dialogs/ModUpdateDialog.cpp index 308072c5e..4fb6154e1 100644 --- a/launcher/ui/dialogs/ModUpdateDialog.cpp +++ b/launcher/ui/dialogs/ModUpdateDialog.cpp @@ -45,8 +45,7 @@ ModUpdateDialog::ModUpdateDialog(QWidget* parent, , m_parent(parent) , m_mod_model(mods) , 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(includeDeps) { @@ -89,7 +88,7 @@ void ModUpdateDialog::checkCandidates() auto versions = mcVersions(m_instance); auto loadersList = mcLoadersList(m_instance); - 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_mod_model)); @@ -187,7 +186,7 @@ void ModUpdateDialog::checkCandidates() } if (m_include_deps && !APPLICATION->settings()->get("ModDependenciesDisabled").toBool()) { // dependencies - auto depTask = makeShared<GetModDependenciesTask>(this, m_instance, m_mod_model.get(), selectedVers); + auto depTask = makeShared<GetModDependenciesTask>(m_instance, m_mod_model.get(), selectedVers); connect(depTask.get(), &Task::failed, this, [&](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); @@ -261,7 +260,7 @@ auto ModUpdateDialog::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<QString, bool> should_try_others; diff --git a/launcher/ui/dialogs/ResourceDownloadDialog.cpp b/launcher/ui/dialogs/ResourceDownloadDialog.cpp index 02a8454b4..06fa6dbf3 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<GetModDependenciesTask::PackDependency>(selected->getPack(), selected->getVersion())); } - return makeShared<GetModDependenciesTask>(this, m_instance, model, selectedVers); + return makeShared<GetModDependenciesTask>(m_instance, model, selectedVers); } } return nullptr; 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<SequentialTask>(this, tr("Install Java")); + auto seq = makeShared<SequentialTask>(tr("Install Java")); seq->addTask(task); seq->addTask(makeShared<Java::SymlinkTask>(final_path)); task = seq; diff --git a/launcher/ui/pages/instance/ModFolderPage.cpp b/launcher/ui/pages/instance/ModFolderPage.cpp index a6fbf5088..8d03b6d9a 100644 --- a/launcher/ui/pages/instance/ModFolderPage.cpp +++ b/launcher/ui/pages/instance/ModFolderPage.cpp @@ -209,7 +209,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("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(); @@ -292,7 +292,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(); @@ -423,7 +423,7 @@ void ModFolderPage::changeModVersion() ResourceDownload::ModDownloadDialog mdownload(this, m_model, m_instance); mdownload.setModMetadata((*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 85be64256..054bede01 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" @@ -72,8 +70,7 @@ void ResourcePackPage::downloadRPs() ResourceDownload::ResourcePackDownloadDialog mdownload(this, std::static_pointer_cast<ResourcePackFolderModel>(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(); diff --git a/launcher/ui/pages/instance/ShaderPackPage.cpp b/launcher/ui/pages/instance/ShaderPackPage.cpp index 40366a1be..61ee01445 100644 --- a/launcher/ui/pages/instance/ShaderPackPage.cpp +++ b/launcher/ui/pages/instance/ShaderPackPage.cpp @@ -65,7 +65,7 @@ void ShaderPackPage::downloadShaders() ResourceDownload::ShaderPackDownloadDialog mdownload(this, std::static_pointer_cast<ShaderPackFolderModel>(m_model), m_instance); if (mdownload.exec()) { - auto tasks = new ConcurrentTask(this, "Download Shaders", APPLICATION->settings()->get("NumberOfConcurrentDownloads").toInt()); + auto tasks = new ConcurrentTask("Download Shaders", 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 7c8d7e061..9c8ee3c78 100644 --- a/launcher/ui/pages/instance/TexturePackPage.cpp +++ b/launcher/ui/pages/instance/TexturePackPage.cpp @@ -74,8 +74,7 @@ void TexturePackPage::downloadTPs() ResourceDownload::TexturePackDownloadDialog mdownload(this, std::static_pointer_cast<TexturePackFolderModel>(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(); 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<SequentialTask>(this); + auto task = makeShared<SequentialTask>(); 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 a9147474169bdad603c139b5b8bad4e1912563d4 Mon Sep 17 00:00:00 2001 From: Kationor <n96211028@gmail.com> Date: Sun, 24 Nov 2024 19:30:59 +0100 Subject: [PATCH 153/177] 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 <n96211028@gmail.com> (cherry picked from commit b40a1973bfe590fb21b486419a8d223b2c6aae7f) --- 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 fa5d479ba..7417dffe6 100644 --- a/launcher/minecraft/mod/tasks/LocalModParseTask.cpp +++ b/launcher/minecraft/mod/tasks/LocalModParseTask.cpp @@ -8,6 +8,7 @@ #include <QJsonDocument> #include <QJsonObject> #include <QJsonValue> +#include <QRegularExpression> #include <QString> #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 e7e9265c40a1621e5a7f7c08db47bc77dc859896 Mon Sep 17 00:00:00 2001 From: leia uwu <leia@tutamail.com> Date: Sat, 30 Nov 2024 11:30:25 -0300 Subject: [PATCH 154/177] 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 <leia@tutamail.com> (cherry picked from commit fd9c80db62436b1a364cb8342ba45a059c53f899) --- 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 9791c306dcd0ba4b33335c649fe56cc08e394193 Mon Sep 17 00:00:00 2001 From: leia uwu <leia@tutamail.com> Date: Sat, 30 Nov 2024 12:50:57 -0300 Subject: [PATCH 155/177] fix: icon search paths memory leak Signed-off-by: leia uwu <leia@tutamail.com> (cherry picked from commit 3f67ef968bb9be3b1cdfdfa68e2d38ddf8e1a3cf) --- 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 af74d5f41012847ee3116bf38d3b40cc7996bee8 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sun, 24 Nov 2024 20:29:07 +0200 Subject: [PATCH 156/177] Make FTB Import note italic to match others Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit a09af619cee3265710097724f539d9457695658d) --- 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 @@ <layout class="QVBoxLayout" name="verticalLayout"> <item> <widget class="QLabel" name="label"> + <property name="font"> + <font> + <italic>true</italic> + </font> + </property> <property name="text"> <string>Note: If your FTB instances are not in the default location, select it using the button next to search.</string> </property> From 686e0b7b189dd0dfa5852fe0e8c47ce439fdd577 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 157/177] flatpak: update xrandr to 1.5.3 Signed-off-by: guihkx <626206+guihkx@users.noreply.github.com> (cherry picked from commit 4a50e949672461b5b69b039ff240ced6dad9bdd5) --- 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 73b4223b6136898a76c12e4531f651aa0c529e16 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 158/177] 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> (cherry picked from commit f6770a847a8419ef0b1acab30144077f745a48ee) --- .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 bbf21e5824a4e271e071c72aa3604b0ef1b012d3 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 159/177] 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> (cherry picked from commit e0faee7f262fda898ceb8ea5ab40249dbd6c52ea) --- .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 a58f125535e45fea0bf9b955f9babba6afc524d9 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 160/177] chore(deps): update actions/cache action to v4.2.0 (cherry picked from commit 94c893bd865ceba286dffc1d6392df07d47c11d9) --- .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 887db29f35f7037994fbbdb8db3f5ebfcefe03bd Mon Sep 17 00:00:00 2001 From: leia uwu <leia@tutamail.com> Date: Fri, 6 Dec 2024 16:40:07 -0300 Subject: [PATCH 161/177] fix icon theme search paths using fallback search paths breaks qadwaitadecorations Signed-off-by: leia uwu <leia@tutamail.com> (cherry picked from commit 614574f15c507f884fc2ceff74db8c919674a0f1) --- 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 344ae87f257f2d3bc706d7ebad56e405b2330165 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Sun, 8 Dec 2024 22:04:16 +0200 Subject: [PATCH 162/177] fix crash with invalid mrpack format Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit 1dd0728a58159bc835b2e7724a707776ae0b93ce) --- .../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 994dd774f..3592d2ed7 100644 --- a/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp +++ b/launcher/modplatform/modrinth/ModrinthInstanceCreationTask.cpp @@ -261,12 +261,14 @@ bool ModrinthCreationTask::createInstance() mod->setDetails(d); mods[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 4c28a94de1ce8a64fa16c187379c4cb59b2bbf8b 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 163/177] Add local network usage description Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com> (cherry picked from commit c3e44554abccfd16ff7f84740932848e59d28474) --- 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 @@ <string>A Minecraft mod wants to access your microphone.</string> <key>NSDownloadsFolderUsageDescription</key> <string>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.</string> + <key>NSLocalNetworkUsageDescription</key> + <string>Minecraft uses the local network to find and connect to LAN servers.</string> <key>NSPrincipalClass</key> <string>NSApplication</string> <key>NSHighResolutionCapable</key> From 1d29f63bec66f0dca653e4f1b75924172a6e25e5 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 164/177] Fix tab order in launcher settings Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com> (cherry picked from commit c3712ba6483f6386e2930ec0ed059d8c94f671b6) --- 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 @@ <string notr="true"/> </property> <property name="tabShape"> - <enum>QTabWidget::Rounded</enum> + <enum>QTabWidget::TabShape::Rounded</enum> </property> <property name="currentIndex"> <number>0</number> @@ -48,7 +48,7 @@ <item> <widget class="QScrollArea" name="scrollArea"> <property name="horizontalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> + <enum>Qt::ScrollBarPolicy::ScrollBarAlwaysOff</enum> </property> <property name="widgetResizable"> <bool>true</bool> @@ -365,7 +365,7 @@ <item> <spacer name="verticalSpacer_FeaturesTab"> <property name="orientation"> - <enum>Qt::Vertical</enum> + <enum>Qt::Orientation::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -465,7 +465,7 @@ <item row="0" column="1"> <spacer name="horizontalSpacer"> <property name="orientation"> - <enum>Qt::Horizontal</enum> + <enum>Qt::Orientation::Horizontal</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -506,7 +506,7 @@ <item> <spacer name="verticalSpacer_UserInterfaceTab"> <property name="orientation"> - <enum>Qt::Vertical</enum> + <enum>Qt::Orientation::Vertical</enum> </property> <property name="sizeHint" stdset="0"> <size> @@ -615,13 +615,13 @@ </sizepolicy> </property> <property name="horizontalScrollBarPolicy"> - <enum>Qt::ScrollBarAlwaysOff</enum> + <enum>Qt::ScrollBarPolicy::ScrollBarAlwaysOff</enum> </property> <property name="undoRedoEnabled"> <bool>false</bool> </property> <property name="textInteractionFlags"> - <set>Qt::TextSelectableByKeyboard|Qt::TextSelectableByMouse</set> + <set>Qt::TextInteractionFlag::TextSelectableByKeyboard|Qt::TextInteractionFlag::TextSelectableByMouse</set> </property> </widget> </item> @@ -667,15 +667,33 @@ </customwidgets> <tabstops> <tabstop>tabWidget</tabstop> + <tabstop>scrollArea</tabstop> <tabstop>autoUpdateCheckBox</tabstop> + <tabstop>updateIntervalSpinBox</tabstop> <tabstop>instDirTextBox</tabstop> <tabstop>instDirBrowseBtn</tabstop> <tabstop>modsDirTextBox</tabstop> <tabstop>modsDirBrowseBtn</tabstop> <tabstop>iconsDirTextBox</tabstop> <tabstop>iconsDirBrowseBtn</tabstop> + <tabstop>javaDirTextBox</tabstop> + <tabstop>javaDirBrowseBtn</tabstop> + <tabstop>skinsDirTextBox</tabstop> + <tabstop>skinsDirBrowseBtn</tabstop> + <tabstop>downloadsDirTextBox</tabstop> + <tabstop>downloadsDirBrowseBtn</tabstop> + <tabstop>downloadsDirWatchRecursiveCheckBox</tabstop> + <tabstop>metadataDisableBtn</tabstop> + <tabstop>dependenciesDisableBtn</tabstop> + <tabstop>skipModpackUpdatePromptBtn</tabstop> + <tabstop>numberOfConcurrentTasksSpinBox</tabstop> + <tabstop>numberOfConcurrentDownloadsSpinBox</tabstop> + <tabstop>numberOfManualRetriesSpinBox</tabstop> + <tabstop>timeoutSecondsSpinBox</tabstop> <tabstop>sortLastLaunchedBtn</tabstop> <tabstop>sortByNameBtn</tabstop> + <tabstop>catOpacitySpinBox</tabstop> + <tabstop>preferMenuBarCheckBox</tabstop> <tabstop>showConsoleCheck</tabstop> <tabstop>autoCloseConsoleCheck</tabstop> <tabstop>showConsoleErrorCheck</tabstop> From 335941fb46c8be4d6043bd882bb8c555ce648984 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 165/177] Update Sparkle to v2.6.4 Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com> (cherry picked from commit b6cd46ad27e8046962dcb7b3b43a973ff08564eb) --- CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 728e9c246..4e7f14ac6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -397,8 +397,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 9cb2a3ab2d0aa89a081ce65f9a9c84f7c20493a5 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 166/177] Correct symbolic link destination on manifest Java download Signed-off-by: Kenneth Chew <79120643+kthchew@users.noreply.github.com> (cherry picked from commit 8d53242952ceeed11bd1a57c9ac43344d854ac8c) --- 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 7bb686c85bab381fd8a2b4a8dc18e958f22c134d Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Thu, 12 Dec 2024 17:29:46 +0200 Subject: [PATCH 167/177] Do not fail curseforge import if modrinth file check fails Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> (cherry picked from commit a1c1c0b769d77eb8c44cef3dc0966e7184b2ce78) --- 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 0c962dff599fda5818161d08e65ca7ff06cc7eb2 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Fri, 1 Nov 2024 13:44:06 +0200 Subject: [PATCH 168/177] fix the flame loaders match Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- launcher/modplatform/ModIndex.cpp | 13 +++++++ launcher/modplatform/ModIndex.h | 1 + launcher/modplatform/flame/FlameAPI.cpp | 38 +++++++++++++------ .../modrinth/ModrinthCheckUpdate.cpp | 11 ++---- launcher/modplatform/packwiz/Packwiz.cpp | 7 +--- 5 files changed, 46 insertions(+), 24 deletions(-) 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<QString, IndexedVersionType::VersionType> s_indexed_version_ty { "alpha", IndexedVersionType::VersionType::Alpha } }; +static const QList<ModLoaderType> loaderList = { NeoForge, Forge, Cauldron, LiteLoader, Quilt, Fabric }; + +QList<ModLoaderType> modLoaderTypesToList(ModLoaderTypes flags) +{ + QList<ModLoaderType> 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<ModLoaderType> 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<ModPlatform::IndexedVersion> FlameAPI::getLatestVersion(QList<ModP QList<ModPlatform::ModLoaderType> 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<ModPlatform::IndexedVersion> ver; - for (auto file_tmp : versions) { - if (file_tmp.loaders & loader && (!ver.has_value() || file_tmp.date > ver->date)) { - ver = file_tmp; + QHash<ModPlatform::ModLoaderType, ModPlatform::IndexedVersion> 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; } - return ver; }; - for (auto l : instanceLoaders) { - auto ver = bestVersion(l); - if (ver.has_value()) { - return ver; + 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); + } + } + } + // 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/modrinth/ModrinthCheckUpdate.cpp b/launcher/modplatform/modrinth/ModrinthCheckUpdate.cpp index fd9138ec8..fcabe24fc 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" @@ -97,13 +98,9 @@ void ModrinthCheckUpdate::checkVersionsResponse(std::shared_ptr<QByteArray> 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.testFlag(flag)) { - loader_filter = ModPlatform::getModLoaderAsString(flag); - break; - } + for (auto flag : ModPlatform::modLoaderTypesToList(loader)) { + loader_filter = ModPlatform::getModLoaderAsString(flag); + break; } // Currently, we rely on a couple heuristics to determine whether an update is actually available or not: diff --git a/launcher/modplatform/packwiz/Packwiz.cpp b/launcher/modplatform/packwiz/Packwiz.cpp index 272900f0e..04c8a926e 100644 --- a/launcher/modplatform/packwiz/Packwiz.cpp +++ b/launcher/modplatform/packwiz/Packwiz.cpp @@ -186,11 +186,8 @@ void V1::updateModIndex(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) { From bbfa5a5ed151d5d7966160f044de89a82550a264 Mon Sep 17 00:00:00 2001 From: Trial97 <alexandru.tripon97@gmail.com> Date: Mon, 16 Dec 2024 14:51:59 +0200 Subject: [PATCH 169/177] Fix automatically choose mod provider option Signed-off-by: Trial97 <alexandru.tripon97@gmail.com> --- launcher/modplatform/EnsureMetadataTask.cpp | 17 +++++++++-------- launcher/modplatform/EnsureMetadataTask.h | 4 ++-- launcher/ui/dialogs/ModUpdateDialog.cpp | 13 ++++++++++--- 3 files changed, 21 insertions(+), 13 deletions(-) diff --git a/launcher/modplatform/EnsureMetadataTask.cpp b/launcher/modplatform/EnsureMetadataTask.cpp index 5f04e3c12..fb4a32918 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(Mod* mod, 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(mod); - if (!hash_task) + auto hashTask = createNewHash(mod); + if (!hashTask) 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); }); - hash_task->start(); + connect(hashTask.get(), &Hashing::Hasher::resultsReady, [this, mod](QString hash) { m_mods.insert(hash, mod); }); + connect(hashTask.get(), &Task::failed, [this, mod] { emitFail(mod, "", RemoveFromList::No); }); + m_hashingTask = hashTask; } EnsureMetadataTask::EnsureMetadataTask(QList<Mod*>& mods, 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<ConcurrentTask>("MakeHashesTask", APPLICATION->settings()->get("NumberOfConcurrentTasks").toInt()); + m_hashingTask = hashTask; for (auto* mod : mods) { auto hash_task = createNewHash(mod); 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); }); - m_hashing_task->addTask(hash_task); + hashTask->addTask(hash_task); } } EnsureMetadataTask::EnsureMetadataTask(QHash<QString, Mod*>& mods, QDir dir, ModPlatform::ResourceProvider prov) diff --git a/launcher/modplatform/EnsureMetadataTask.h b/launcher/modplatform/EnsureMetadataTask.h index 631b32ae7..14b75a1a7 100644 --- a/launcher/modplatform/EnsureMetadataTask.h +++ b/launcher/modplatform/EnsureMetadataTask.h @@ -20,7 +20,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; @@ -58,6 +58,6 @@ class EnsureMetadataTask : public Task { ModPlatform::ResourceProvider m_provider; QHash<QString, ModPlatform::IndexedVersion> m_temp_versions; - ConcurrentTask::Ptr m_hashing_task; + Task::Ptr m_hashingTask; Task::Ptr m_current_task; }; diff --git a/launcher/ui/dialogs/ModUpdateDialog.cpp b/launcher/ui/dialogs/ModUpdateDialog.cpp index 4fb6154e1..81f544a90 100644 --- a/launcher/ui/dialogs/ModUpdateDialog.cpp +++ b/launcher/ui/dialogs/ModUpdateDialog.cpp @@ -8,6 +8,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" @@ -402,9 +403,15 @@ void ModUpdateDialog::onMetadataFailed(Mod* mod, bool try_others, ModPlatform::R connect(task.get(), &EnsureMetadataTask::metadataReady, [this](Mod* candidate) { onMetadataEnsured(candidate); }); connect(task.get(), &EnsureMetadataTask::metadataFailed, [this](Mod* candidate) { onMetadataFailed(candidate, false); }); connect(task.get(), &EnsureMetadataTask::failed, - [this](QString reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); - - m_second_try_metadata->addTask(task); + [this](const QString& reason) { CustomMessageBox::selectable(this, tr("Error"), reason, QMessageBox::Critical)->exec(); }); + if (task->getHashingTask()) { + auto seq = makeShared<SequentialTask>(); + 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 6934381c28aaef077dcbe198d2ef26bd1e3c0079 Mon Sep 17 00:00:00 2001 From: windstone-aristotle-yellow <notwindstone@gmail.com> Date: Mon, 30 Dec 2024 13:18:59 +0300 Subject: [PATCH 170/177] style(lint): remove unnecessary spaces --- tests/ResourceModel_test.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/ResourceModel_test.cpp b/tests/ResourceModel_test.cpp index 6d8c25535..dfe74b2b3 100644 --- a/tests/ResourceModel_test.cpp +++ b/tests/ResourceModel_test.cpp @@ -61,7 +61,6 @@ class ResourceModelTest : public QObject { private slots: void test_abstract_item_model() { - } void test_search() From 3cdb7986709272d28f488713bbeed9cea03055e9 Mon Sep 17 00:00:00 2001 From: windstone-aristotle-yellow <notwindstone@gmail.com> Date: Mon, 30 Dec 2024 13:19:58 +0300 Subject: [PATCH 171/177] style(lint): use clang-format --- tests/ResourceModel_test.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/ResourceModel_test.cpp b/tests/ResourceModel_test.cpp index dfe74b2b3..13618d8c3 100644 --- a/tests/ResourceModel_test.cpp +++ b/tests/ResourceModel_test.cpp @@ -59,8 +59,7 @@ class DummyResourceModel : public ResourceModel { class ResourceModelTest : public QObject { Q_OBJECT private slots: - void test_abstract_item_model() - { + void test_abstract_item_model() { } void test_search() From 97aa15621ece6eb92fc0ee41852eb323db2a8194 Mon Sep 17 00:00:00 2001 From: windstone-aristotle-yellow <notwindstone@gmail.com> Date: Mon, 30 Dec 2024 13:21:22 +0300 Subject: [PATCH 172/177] style(lint): use clang-format --- tests/ResourceModel_test.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/ResourceModel_test.cpp b/tests/ResourceModel_test.cpp index 13618d8c3..9eeb24d39 100644 --- a/tests/ResourceModel_test.cpp +++ b/tests/ResourceModel_test.cpp @@ -59,8 +59,8 @@ class DummyResourceModel : public ResourceModel { class ResourceModelTest : public QObject { Q_OBJECT private slots: - void test_abstract_item_model() { - } + void test_abstract_item_model() + {} void test_search() { From 92940adee32f8f3120abe71bab1c51b4574a2437 Mon Sep 17 00:00:00 2001 From: windstone-aristotle-yellow <notwindstone@gmail.com> Date: Mon, 30 Dec 2024 13:23:06 +0300 Subject: [PATCH 173/177] chore(garnix): add placeholder variable so that function is not empty --- tests/ResourceModel_test.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/ResourceModel_test.cpp b/tests/ResourceModel_test.cpp index 9eeb24d39..69ea6b016 100644 --- a/tests/ResourceModel_test.cpp +++ b/tests/ResourceModel_test.cpp @@ -60,7 +60,9 @@ class ResourceModelTest : public QObject { Q_OBJECT private slots: void test_abstract_item_model() - {} + { + int placeholder = 1; + } void test_search() { From 4498660b0e9d68ef372c2738b7e2af032b774fd3 Mon Sep 17 00:00:00 2001 From: windstone-aristotle-yellow <notwindstone@gmail.com> Date: Mon, 30 Dec 2024 13:27:00 +0300 Subject: [PATCH 174/177] style(lint): use clang-format --- tests/ResourceModel_test.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/tests/ResourceModel_test.cpp b/tests/ResourceModel_test.cpp index 69ea6b016..4df8c32f5 100644 --- a/tests/ResourceModel_test.cpp +++ b/tests/ResourceModel_test.cpp @@ -59,10 +59,7 @@ class DummyResourceModel : public ResourceModel { class ResourceModelTest : public QObject { Q_OBJECT private slots: - void test_abstract_item_model() - { - int placeholder = 1; - } + void test_abstract_item_model() { int placeholder = 1; } void test_search() { From 225c9a592bc129c473950ba8f2e24aa152c79ebc Mon Sep 17 00:00:00 2001 From: windstone-aristotle-yellow <notwindstone@gmail.com> Date: Mon, 30 Dec 2024 14:09:02 +0300 Subject: [PATCH 175/177] feat: add new cat pack (miside screenshot) --- launcher/Application.cpp | 1 + .../resources/backgrounds/backgrounds.qrc | 1 + .../backgrounds/miside-screenshot.png | Bin 0 -> 1038696 bytes launcher/ui/themes/ThemeManager.cpp | 1 + 4 files changed, 3 insertions(+) create mode 100644 launcher/resources/backgrounds/miside-screenshot.png diff --git a/launcher/Application.cpp b/launcher/Application.cpp index 5da81d436..b78f801f4 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -562,6 +562,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->registerSetting("IconTheme", QString("fluent_dark")); m_settings->registerSetting("ApplicationTheme", QString("freesm")); m_settings->registerSetting("BackgroundCat", QString("typescript")); + m_settings->registerSetting("BackgroundCat", QString("miside-screenshot")); // Remembered state m_settings->registerSetting("LastUsedGroupForNewInstance", QString()); diff --git a/launcher/resources/backgrounds/backgrounds.qrc b/launcher/resources/backgrounds/backgrounds.qrc index c74aa81eb..35116aa27 100644 --- a/launcher/resources/backgrounds/backgrounds.qrc +++ b/launcher/resources/backgrounds/backgrounds.qrc @@ -1,6 +1,7 @@ <!DOCTYPE RCC> <RCC version="1.0"> <qresource prefix="/backgrounds"> + <file alias="miside-screenshot">miside-screenshot.png</file> <file alias="typescript">typescript.png</file> <file alias="kitteh">kitteh.png</file> <file alias="kitteh-xmas">kitteh-xmas.png</file> diff --git a/launcher/resources/backgrounds/miside-screenshot.png b/launcher/resources/backgrounds/miside-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..604899c8b5b32d30ebda56922809bef3e3a0ec1c GIT binary patch literal 1038696 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�V@oK=;s^~zq;|KtX-2k-x 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%0ANfd;VKIV2*9r6HfZ8=ObeFki%ATa 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	)tI_OJ* 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 literal 0 HcmV?d00001 diff --git a/launcher/ui/themes/ThemeManager.cpp b/launcher/ui/themes/ThemeManager.cpp index da104169c..8aae73417 100644 --- a/launcher/ui/themes/ThemeManager.cpp +++ b/launcher/ui/themes/ThemeManager.cpp @@ -299,6 +299,7 @@ void ThemeManager::initializeCatPacks() { QList<std::pair<QString, QString>> defaultCats{ { "kitteh", QObject::tr("Background Cat (from MultiMC)") }, { "typescript", QObject::tr("You should have used Typescript") }, + { "miside-screenshot", QObject::tr("MiSide screenshot") }, { "rory", QObject::tr("Rory ID 11 (drawn by Ashtaka)") }, { "rory-flat", QObject::tr("Rory ID 11 (flat edition, drawn by Ashtaka)") }, { "teawie", QObject::tr("Teawie (drawn by SympathyTea)") } }; From a6b46da3c8606b894bf32a2a417c939c11efd54e Mon Sep 17 00:00:00 2001 From: windstone-aristotle-yellow <notwindstone@gmail.com> Date: Mon, 30 Dec 2024 14:17:43 +0300 Subject: [PATCH 176/177] feat: change launcher logo --- program_info/freesmlauncher.ico | Bin 372526 -> 248894 bytes .../org.freesmTeam.freesmlauncher.svg | 77 +++++------------- 2 files changed, 21 insertions(+), 56 deletions(-) diff --git a/program_info/freesmlauncher.ico b/program_info/freesmlauncher.ico index 2f0fa67ff6be7681f76aa8ccbdfedabcef766b72..872f6a5c42408da052589d7b3f70acd84eb1f1d5 100644 GIT binary patch literal 248894 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 literal 372526 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 diff --git a/program_info/org.freesmTeam.freesmlauncher.svg b/program_info/org.freesmTeam.freesmlauncher.svg index 949cabdf3..9885f1962 100644 --- a/program_info/org.freesmTeam.freesmlauncher.svg +++ b/program_info/org.freesmTeam.freesmlauncher.svg @@ -1,57 +1,22 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> -<svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> - <title>Freesm Launcher Logo</title> - <g stroke-width=".26458"> - <path d="m6.35 6.35" fill="#99cd61"/> - <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" fill="#df6277"/> - <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" fill="#fb9168"/> - <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.072554-2.6584-0.21808-2.9104z" fill="#f3db6c"/> - <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104h-5.2591z" fill="#7ab392"/> - <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443l-5.041-2.9104z" fill="#4b7cbc"/> - <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661l-2.6298-4.5548z" fill="#6f488c"/> - <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208l-2.5208-1.4552z" fill="#4d3f33"/> - <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104h-5.041z" fill="#7a573b"/> - <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104v-5.8208z" fill="#99cd61"/> - </g> - <g transform="matrix(.88 0 0 .88 -10.906 -1.2421)"> - <g transform="translate(13.26 2.2776)"> - <path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458"/> +<?xml version="1.0" encoding="utf-8"?> +<svg viewBox="1.0907 0.5291 10.5185 11.6417" xmlns="http://www.w3.org/2000/svg"> + <g stroke-width=".26458" id="g24" transform="matrix(1, 0, 0, 1, -7.105427357601002e-15, 0)"> + <path d="m6.35 6.35" fill="#99cd61" id="path4"/> + <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" id="path6" style="fill: rgb(245, 194, 231);"/> + <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" id="path8" style="fill: rgb(242, 205, 205);"/> + <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.07255-2.6584-0.21808-2.9104z" id="path10" style="fill: rgb(245, 224, 220);"/> + <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104z" id="path12" style="fill: rgb(255, 241, 233);"/> + <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443z" id="path14" style="fill: rgb(249, 246, 243);"/> + <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661z" id="path16" style="fill: rgb(252, 252, 252);"/> + <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208z" fill="#4d3f33" id="path18"/> + <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104z" fill="#7a573b" id="path20"/> + <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104z" id="path22" style="fill: rgb(203, 166, 247);"/> </g> - <path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458"/> - </g> - <path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458"/> - <metadata> - <rdf:RDF> - <cc:Work rdf:about=""> - <dc:title>Freesm Launcher Logo</dc:title> - <dc:date>19/10/2022</dc:date> - <dc:creator> - <cc:Agent> - <dc:title>Freesm Launcher</dc:title> - </cc:Agent> - </dc:creator> - <dc:contributor> - <cc:Agent> - <dc:title>NotWindstone, s0me1newithhand7s</dc:title> - </cc:Agent> - </dc:contributor> - <dc:source>https://github.com/FreesmTeam/FreesmLauncher</dc:source> - <dc:publisher> - <cc:Agent> - <dc:title>Freesm Launcher</dc:title> - </cc:Agent> - </dc:publisher> - <cc:license rdf:resource="http://creativecommons.org/licenses/by-sa/4.0/"/> - </cc:Work> - <cc:License rdf:about="http://creativecommons.org/licenses/by-sa/4.0/"> - <cc:permits rdf:resource="http://creativecommons.org/ns#Reproduction"/> - <cc:permits rdf:resource="http://creativecommons.org/ns#Distribution"/> - <cc:requires rdf:resource="http://creativecommons.org/ns#Notice"/> - <cc:requires rdf:resource="http://creativecommons.org/ns#Attribution"/> - <cc:permits rdf:resource="http://creativecommons.org/ns#DerivativeWorks"/> - <cc:requires rdf:resource="http://creativecommons.org/ns#ShareAlike"/> - </cc:License> - </rdf:RDF> - </metadata> -</svg> + <g transform="matrix(0.8799999952316284, 0, 0, 0.8799999952316284, -10.906000137329102, -1.2421000003814697)" id="g32"> + <g transform="translate(13.26 2.2776)" id="g28"> + <path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458" id="path26"/> + </g> + <path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458" id="path30"/> + </g> + <path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458" id="path34" transform="matrix(1, 0, 0, 1, -7.105427357601002e-15, 0)"/> +</svg> \ No newline at end of file From 40073049e8ee8a6320e995a6708941a863467412 Mon Sep 17 00:00:00 2001 From: windstone-aristotle-yellow <notwindstone@gmail.com> Date: Mon, 30 Dec 2024 14:38:01 +0300 Subject: [PATCH 177/177] feat: fix launcher logos --- program_info/freesmlauncher.ico | Bin 248894 -> 11013 bytes .../org.freesmTeam.freesmlauncher.svg | 35 +++++++++--------- 2 files changed, 18 insertions(+), 17 deletions(-) diff --git a/program_info/freesmlauncher.ico b/program_info/freesmlauncher.ico index 872f6a5c42408da052589d7b3f70acd84eb1f1d5..573e943fcc83325ebfd6aba242693d6c66f9ba6c 100644 GIT binary patch literal 11013 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 LhT1in4(R^}#KdYc literal 248894 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 diff --git a/program_info/org.freesmTeam.freesmlauncher.svg b/program_info/org.freesmTeam.freesmlauncher.svg index 9885f1962..245cc9703 100644 --- a/program_info/org.freesmTeam.freesmlauncher.svg +++ b/program_info/org.freesmTeam.freesmlauncher.svg @@ -1,22 +1,23 @@ <?xml version="1.0" encoding="utf-8"?> -<svg viewBox="1.0907 0.5291 10.5185 11.6417" xmlns="http://www.w3.org/2000/svg"> - <g stroke-width=".26458" id="g24" transform="matrix(1, 0, 0, 1, -7.105427357601002e-15, 0)"> - <path d="m6.35 6.35" fill="#99cd61" id="path4"/> - <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" id="path6" style="fill: rgb(245, 194, 231);"/> - <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" id="path8" style="fill: rgb(242, 205, 205);"/> - <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.07255-2.6584-0.21808-2.9104z" id="path10" style="fill: rgb(245, 224, 220);"/> - <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104z" id="path12" style="fill: rgb(255, 241, 233);"/> - <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443z" id="path14" style="fill: rgb(249, 246, 243);"/> - <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661z" id="path16" style="fill: rgb(252, 252, 252);"/> - <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208z" fill="#4d3f33" id="path18"/> - <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104z" fill="#7a573b" id="path20"/> - <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104z" id="path22" style="fill: rgb(203, 166, 247);"/> +<svg width="48" height="48" version="1.1" viewBox="0 0 12.7 12.7" xmlns="http://www.w3.org/2000/svg"> + <title>Prism Launcher Logo</title> + <g stroke-width=".26458"> + <path d="m6.35 6.35" fill="#99cd61"/> + <path d="m6.35 0.52917-2.5208 4.3656 2.5208 1.4552 2.5203-1.4552 0.10955-3.0996c-1.1511-0.66459-2.3388-1.2661-2.6298-1.2661z" style="fill: rgb(245, 194, 231);"/> + <path d="m8.9798 1.7952-2.6298 4.5548 2.5203 1.4552 2.5208-4.3656c-0.14552-0.25205-1.2601-0.97975-2.4112-1.6443z" style="fill: rgb(242, 205, 205);"/> + <path d="m11.391 3.4396-5.041 2.9104 2.5203 1.4552 2.7389-1.4552c0-1.3292-0.072554-2.6584-0.21808-2.9104z" style="fill: rgb(245, 224, 220);"/> + <path d="m6.35 6.35v2.9104h5.041c0.14552-0.25205 0.21807-1.5812 0.21808-2.9104h-5.2591z" style="fill: rgb(255, 241, 233);"/> + <path d="m6.35 6.35v2.9104l2.6298 1.6443c1.1511-0.66459 2.2657-1.3923 2.4112-1.6443l-5.041-2.9104z" style="fill: rgb(249, 246, 243);"/> + <path d="m6.35 6.35-2.5208 1.4552 2.5208 4.3656c0.29104 0 1.4787-0.60148 2.6298-1.2661l-2.6298-4.5548z" style="fill: rgb(252, 252, 252);"/> + <path d="m3.8292 4.8948-2.5203 4.3656c0.29104 0.5041 4.459 2.9104 5.041 2.9104v-5.8208l-2.5208-1.4552z" fill="#4d3f33"/> + <path d="m1.309 3.4396c-0.29104 0.5041-0.29104 5.3167 0 5.8208l5.041-2.9104v-2.9104h-5.041z" fill="#7a573b"/> + <path d="m6.35 0.52917c-0.58208-2e-8 -4.75 2.4063-5.041 2.9104l5.041 2.9104v-5.8208z" style="fill: rgb(203, 166, 247);"/> </g> - <g transform="matrix(0.8799999952316284, 0, 0, 0.8799999952316284, -10.906000137329102, -1.2421000003814697)" id="g32"> - <g transform="translate(13.26 2.2776)" id="g28"> - <path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458" id="path26"/> + <g transform="matrix(.88 0 0 .88 -10.906 -1.2421)"> + <g transform="translate(13.26 2.2776)"> + <path transform="matrix(.96975 0 0 .96975 .1921 .1921)" d="m6.3498 2.9393c-0.34105 0-2.7827 1.4099-2.9532 1.7052l2.9532 5.1157 2.9538-5.1157c-0.17052-0.29535-2.6127-1.7052-2.9538-1.7052z" fill="#fff" stroke-width=".26458"/> </g> - <path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458" id="path30"/> + <path d="m16.746 6.9737 2.8639 4.9609c0.33073 0 2.6991-1.3672 2.8644-1.6536 0.16536-0.28642 0.16536-3.0209 0-3.3073l-2.8644 1.6536z" fill="#dfdfdf" stroke-width=".26458"/> </g> - <path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458" id="path34" transform="matrix(1, 0, 0, 1, -7.105427357601002e-15, 0)"/> + <path d="m3.8299 4.8948c-0.14551 0.25205-0.14553 2.6584 0 2.9104 0.14553 0.25204 2.2292 1.4552 2.5203 1.4552v-2.9104z" fill="#d6d2d2" stroke-width=".26458"/> </svg> \ No newline at end of file