add automatic java switch on minecraft version switch

Signed-off-by: Trial97 <alexandru.tripon97@gmail.com>
This commit is contained in:
Trial97 2024-08-20 01:08:03 +03:00
parent 7a66276838
commit ca298d1ed5
No known key found for this signature in database
GPG Key ID: 55EF5DA53DB36318
4 changed files with 10 additions and 0 deletions

View File

@ -138,6 +138,7 @@ void MinecraftInstance::loadSpecificSettings()
// Java Settings // Java Settings
auto locationOverride = m_settings->registerSetting("OverrideJavaLocation", false); auto locationOverride = m_settings->registerSetting("OverrideJavaLocation", false);
auto argsOverride = m_settings->registerSetting("OverrideJavaArgs", false); auto argsOverride = m_settings->registerSetting("OverrideJavaArgs", false);
m_settings->registerSetting("AutomaticJava", false);
if (auto global_settings = globalSettings()) { if (auto global_settings = globalSettings()) {
m_settings->registerOverride(global_settings->getSetting("JavaPath"), locationOverride); m_settings->registerOverride(global_settings->getSetting("JavaPath"), locationOverride);

View File

@ -132,6 +132,7 @@ void AutoInstallJava::setJavaPath(QString path)
auto settings = m_instance->settings(); auto settings = m_instance->settings();
settings->set("OverrideJavaLocation", true); settings->set("OverrideJavaLocation", true);
settings->set("JavaPath", path); 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::Info);
emitSucceeded(); emitSucceeded();
} }

View File

@ -38,6 +38,7 @@
#include "InstanceSettingsPage.h" #include "InstanceSettingsPage.h"
#include "minecraft/MinecraftInstance.h" #include "minecraft/MinecraftInstance.h"
#include "minecraft/WorldList.h" #include "minecraft/WorldList.h"
#include "settings/Setting.h"
#include "ui/dialogs/CustomMessageBox.h" #include "ui/dialogs/CustomMessageBox.h"
#include "ui/java/InstallJavaDialog.h" #include "ui/java/InstallJavaDialog.h"
#include "ui_InstanceSettingsPage.h" #include "ui_InstanceSettingsPage.h"
@ -346,6 +347,8 @@ void InstanceSettingsPage::loadSettings()
bool overrideLocation = m_settings->get("OverrideJavaLocation").toBool(); bool overrideLocation = m_settings->get("OverrideJavaLocation").toBool();
bool overrideArgs = m_settings->get("OverrideJavaArgs").toBool(); bool overrideArgs = m_settings->get("OverrideJavaArgs").toBool();
connect(m_settings->getSetting("OverrideJavaLocation").get(), &Setting::SettingChanged, ui->javaSettingsGroupBox,
[this] { ui->javaSettingsGroupBox->setChecked(m_settings->get("OverrideJavaLocation").toBool()); });
ui->javaSettingsGroupBox->setChecked(overrideLocation); ui->javaSettingsGroupBox->setChecked(overrideLocation);
ui->javaPathTextBox->setText(m_settings->get("JavaPath").toString()); ui->javaPathTextBox->setText(m_settings->get("JavaPath").toString());
ui->skipCompatibilityCheckbox->setChecked(m_settings->get("IgnoreJavaCompatibility").toBool()); ui->skipCompatibilityCheckbox->setChecked(m_settings->get("IgnoreJavaCompatibility").toBool());

View File

@ -393,6 +393,11 @@ void VersionPage::on_actionChange_version_triggered()
bool important = false; bool important = false;
if (uid == "net.minecraft") { if (uid == "net.minecraft") {
important = true; important = true;
if (APPLICATION->settings()->get("AutomaticJavaSwitch").toBool() && m_inst->settings()->get("AutomaticJava").toBool() &&
m_inst->settings()->get("OverrideJavaLocation").toBool()) {
m_inst->settings()->set("OverrideJavaLocation", false);
m_inst->settings()->set("JavaPath", "");
}
} }
m_profile->setComponentVersion(uid, vselect.selectedVersion()->descriptor(), important); m_profile->setComponentVersion(uid, vselect.selectedVersion()->descriptor(), important);
m_profile->resolve(Net::Mode::Online); m_profile->resolve(Net::Mode::Online);