From 9eb9ddc6680244f2c10fa3ac50fbbeffefd2db29 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Sun, 20 Feb 2022 17:51:26 +0100 Subject: feat: initial Quilt support --- launcher/ui/pages/instance/VersionPage.cpp | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'launcher/ui/pages/instance/VersionPage.cpp') diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index ed37dd1a..c8857017 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -243,6 +243,9 @@ void VersionPage::updateVersionControls() bool supportsFabric = minecraftVersion >= Version("1.14"); ui->actionInstall_Fabric->setEnabled(controlsEnabled && supportsFabric); + bool supportsQuilt = minecraftVersion >= Version("1.17.1"); + ui->actionInstall_Quilt->setEnabled(controlsEnabled && supportsQuilt); + bool supportsLiteLoader = minecraftVersion <= Version("1.12.2"); ui->actionInstall_LiteLoader->setEnabled(controlsEnabled && supportsLiteLoader); @@ -498,6 +501,33 @@ void VersionPage::on_actionInstall_Fabric_triggered() } } +void VersionPage::on_actionInstall_Quilt_triggered() +{ + auto vlist = APPLICATION->metadataIndex()->get("org.quiltmc.quilt-loader"); + if(!vlist) + { + return; + } + VersionSelectDialog vselect(vlist.get(), tr("Select Quilt Loader version"), this); + vselect.setEmptyString(tr("No Quilt Loader versions are currently available.")); + vselect.setEmptyErrorString(tr("Couldn't load or download the Quilt Loader version lists!")); + + auto currentVersion = m_profile->getComponentVersion("org.quiltmc.quilt-loader"); + if(!currentVersion.isEmpty()) + { + vselect.setCurrentVersion(currentVersion); + } + + if (vselect.exec() && vselect.selectedVersion()) + { + auto vsn = vselect.selectedVersion(); + m_profile->setComponentVersion("org.quiltmc.quilt-loader", vsn->descriptor()); + m_profile->resolve(Net::Mode::Online); + preselect(m_profile->rowCount(QModelIndex())-1); + m_container->refreshContainer(); + } +} + void VersionPage::on_actionAdd_Empty_triggered() { NewComponentDialog compdialog(QString(), QString(), this); -- cgit From 74cdf5350de1649955814d6bcd596d8abfe9c5e2 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Sun, 20 Feb 2022 20:33:13 +0100 Subject: fix: restrict quilt-mappings versions to MC version --- launcher/ui/pages/instance/VersionPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'launcher/ui/pages/instance/VersionPage.cpp') diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index c8857017..6b9c82a2 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -395,7 +395,7 @@ void VersionPage::on_actionChange_version_triggered() return; } VersionSelectDialog vselect(list.get(), tr("Change %1 version").arg(name), this); - if (uid == "net.fabricmc.intermediary") + if (uid == "net.fabricmc.intermediary" || uid == "org.quiltmc.quilt-mappings") { vselect.setEmptyString(tr("No intermediary mappings versions are currently available.")); vselect.setEmptyErrorString(tr("Couldn't load or download the intermediary mappings version lists!")); -- cgit From 89125fde22d39aed93ab516956b3a4e30cca7a88 Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Sat, 9 Apr 2022 14:56:07 +0200 Subject: refactor: switch Quilt mappings to hashed MojMap --- launcher/minecraft/ComponentUpdateTask.cpp | 39 +++++++----------------------- launcher/ui/pages/instance/VersionPage.cpp | 2 +- 2 files changed, 10 insertions(+), 31 deletions(-) (limited to 'launcher/ui/pages/instance/VersionPage.cpp') diff --git a/launcher/minecraft/ComponentUpdateTask.cpp b/launcher/minecraft/ComponentUpdateTask.cpp index a0559232..0095c613 100644 --- a/launcher/minecraft/ComponentUpdateTask.cpp +++ b/launcher/minecraft/ComponentUpdateTask.cpp @@ -494,31 +494,6 @@ static bool getTrivialComponentChanges(const ComponentIndex & index, const Requi return succeeded; } -QString ComponentUpdateTask::findBestComponentVersion(const ComponentPtr component) -{ - auto & components = d->m_list->d->components; - auto versions = component->getVersionList(); - versions->load(d->netmode); - - for (auto & version : versions->versions()) { - if (version->isRecommended()) { // only look at recommended versions - bool requirementsMet = true; - for (auto req : version->requires()) { - auto requirementMet = std::any_of(components.begin(), components.end(), [&req](ComponentPtr & cmp){ - return cmp->getID() == req.uid && cmp->getVersion() == req.equalsVersion; - }); - if (!requirementMet) { - requirementsMet = false; - } - } - - if (requirementsMet) // return first recommended version that meets all requirements - return version->version(); - } - } - return nullptr; -} - // 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 @@ -615,13 +590,17 @@ void ComponentUpdateTask::resolveDependencies(bool checkOnly) { component->m_version = "3.1.2"; } -// HACK HACK HACK HACK FIXME: this is a placeholder for deciding what version to use. For now, it is hardcoded. -// ############################################################################################################ -// below is not ugly anymore - else if (add.uid == "net.fabricmc.intermediary" || add.uid == "org.quiltmc.quilt-mappings") + else if (add.uid == "net.fabricmc.intermediary" || add.uid == "org.quiltmc.hashed") { - component->m_version = findBestComponentVersion(component); + auto minecraft = std::find_if(components.begin(), components.end(), [](ComponentPtr & cmp){ + return cmp->getID() == "net.minecraft"; + }); + if(minecraft != components.end()) { + component->m_version = (*minecraft)->getVersion(); + } } +// HACK HACK HACK HACK FIXME: this is a placeholder for deciding what version to use. For now, it is hardcoded. +// ############################################################################################################ } } component->m_dependencyOnly = true; diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index 6b9c82a2..7264f362 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -395,7 +395,7 @@ void VersionPage::on_actionChange_version_triggered() return; } VersionSelectDialog vselect(list.get(), tr("Change %1 version").arg(name), this); - if (uid == "net.fabricmc.intermediary" || uid == "org.quiltmc.quilt-mappings") + if (uid == "net.fabricmc.intermediary" || uid == "org.quiltmc.hashed") { vselect.setEmptyString(tr("No intermediary mappings versions are currently available.")); vselect.setEmptyErrorString(tr("Couldn't load or download the intermediary mappings version lists!")); -- cgit From 18ac109e5abb86eebd254931efeea3630371a0bb Mon Sep 17 00:00:00 2001 From: Sefa Eyeoglu Date: Thu, 14 Apr 2022 17:20:07 +0200 Subject: fix: support Quilt from Minecraft 1.14 onwards --- launcher/ui/pages/instance/VersionPage.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'launcher/ui/pages/instance/VersionPage.cpp') diff --git a/launcher/ui/pages/instance/VersionPage.cpp b/launcher/ui/pages/instance/VersionPage.cpp index 7264f362..23e2367b 100644 --- a/launcher/ui/pages/instance/VersionPage.cpp +++ b/launcher/ui/pages/instance/VersionPage.cpp @@ -243,7 +243,7 @@ void VersionPage::updateVersionControls() bool supportsFabric = minecraftVersion >= Version("1.14"); ui->actionInstall_Fabric->setEnabled(controlsEnabled && supportsFabric); - bool supportsQuilt = minecraftVersion >= Version("1.17.1"); + bool supportsQuilt = minecraftVersion >= Version("1.14"); ui->actionInstall_Quilt->setEnabled(controlsEnabled && supportsQuilt); bool supportsLiteLoader = minecraftVersion <= Version("1.12.2"); -- cgit