From 71278ff7ea9df7b17c68371eea66653b647f53cf Mon Sep 17 00:00:00 2001 From: TheKodeToad Date: Thu, 12 Feb 2026 21:03:59 +0000 Subject: [PATCH] Add opt-in for showing mod incompatibilities Signed-off-by: TheKodeToad --- launcher/Application.cpp | 1 + launcher/minecraft/mod/ResourceFolderModel.cpp | 10 ++++++---- launcher/ui/pages/global/LauncherPage.cpp | 2 ++ launcher/ui/pages/global/LauncherPage.ui | 16 +++++++++++++--- 4 files changed, 22 insertions(+), 7 deletions(-) diff --git a/launcher/Application.cpp b/launcher/Application.cpp index ac5cd8f4f..a7c983c1e 100644 --- a/launcher/Application.cpp +++ b/launcher/Application.cpp @@ -774,6 +774,7 @@ Application::Application(int& argc, char** argv) : QApplication(argc, argv) m_settings->registerSetting("ModMetadataDisabled", false); m_settings->registerSetting("ModDependenciesDisabled", false); m_settings->registerSetting("SkipModpackUpdatePrompt", false); + m_settings->registerSetting("ShowModIncompat", false); // Minecraft offline player name m_settings->registerSetting("LastOfflinePlayerName", ""); diff --git a/launcher/minecraft/mod/ResourceFolderModel.cpp b/launcher/minecraft/mod/ResourceFolderModel.cpp index ed0e07574..2899b4eee 100644 --- a/launcher/minecraft/mod/ResourceFolderModel.cpp +++ b/launcher/minecraft/mod/ResourceFolderModel.cpp @@ -503,7 +503,7 @@ bool ResourceFolderModel::validateIndex(const QModelIndex& index) const // and they only delegate to the superclass for compatible columns QBrush ResourceFolderModel::rowBackground(int row) const { - if (m_resources[row]->hasIssues()) { + if (APPLICATION->settings()->get("ShowModIncompat").toBool() && m_resources[row]->hasIssues()) { return { QColor(255, 0, 0, 40) }; } else { return {}; @@ -538,8 +538,10 @@ QVariant ResourceFolderModel::data(const QModelIndex& index, int role) const QString tooltip = m_resources[row]->internal_id(); if (column == NameColumn) { - for (const QString& issue : at(row).issues()) { - tooltip += "\n" + issue; + if (APPLICATION->settings()->get("ShowModIncompat").toBool()) { + for (const QString& issue : at(row).issues()) { + tooltip += "\n" + issue; + } } if (at(row).isSymLinkUnder(instDirPath())) { @@ -559,7 +561,7 @@ QVariant ResourceFolderModel::data(const QModelIndex& index, int role) const } case Qt::DecorationRole: { if (column == NameColumn) { - if (at(row).hasIssues()) { + if (APPLICATION->settings()->get("ShowModIncompat").toBool() && at(row).hasIssues()) { return QIcon::fromTheme("status-bad"); } else if (at(row).isSymLinkUnder(instDirPath()) || at(row).isMoreThanOneHardLink()) { return QIcon::fromTheme("status-yellow"); diff --git a/launcher/ui/pages/global/LauncherPage.cpp b/launcher/ui/pages/global/LauncherPage.cpp index 7a0f11c83..d6d15a2c4 100644 --- a/launcher/ui/pages/global/LauncherPage.cpp +++ b/launcher/ui/pages/global/LauncherPage.cpp @@ -244,6 +244,7 @@ void LauncherPage::applySettings() // Mods s->set("ModMetadataDisabled", !ui->metadataEnableBtn->isChecked()); s->set("ModDependenciesDisabled", !ui->dependenciesEnableBtn->isChecked()); + s->set("ShowModIncompat", ui->showModIncompatCheckBox->isChecked()); s->set("SkipModpackUpdatePrompt", !ui->modpackUpdatePromptBtn->isChecked()); } void LauncherPage::loadSettings() @@ -293,6 +294,7 @@ void LauncherPage::loadSettings() ui->metadataEnableBtn->setChecked(!s->get("ModMetadataDisabled").toBool()); ui->metadataWarningLabel->setHidden(ui->metadataEnableBtn->isChecked()); ui->dependenciesEnableBtn->setChecked(!s->get("ModDependenciesDisabled").toBool()); + ui->showModIncompatCheckBox->setChecked(s->get("ShowModIncompat").toBool()); ui->modpackUpdatePromptBtn->setChecked(!s->get("SkipModpackUpdatePrompt").toBool()); } diff --git a/launcher/ui/pages/global/LauncherPage.ui b/launcher/ui/pages/global/LauncherPage.ui index 0debe3f4d..1e7686e5f 100644 --- a/launcher/ui/pages/global/LauncherPage.ui +++ b/launcher/ui/pages/global/LauncherPage.ui @@ -41,9 +41,9 @@ 0 - 0 + -149 746 - 1194 + 1222 @@ -418,6 +418,16 @@ + + + + Currently this just shows mods which are not marked as compatible with the current Minecraft version. + + + Detect and show mod incompatibilities (experimental) + + + @@ -671,7 +681,7 @@ - +