fix: enable demo launch only on supported instances
e.g. >= 1.3.1 instances Signed-off-by: flow <flowlnlnln@gmail.com>
This commit is contained in:
parent
1b2a7de4e2
commit
81e326571b
@ -245,6 +245,14 @@ QString MinecraftInstance::getLocalLibraryPath() const
|
|||||||
return libraries_dir.absolutePath();
|
return libraries_dir.absolutePath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool MinecraftInstance::supportsDemo() const
|
||||||
|
{
|
||||||
|
Version instance_ver { getPackProfile()->getComponentVersion("net.minecraft") };
|
||||||
|
// Demo mode was introduced in 1.3.1: https://minecraft.fandom.com/wiki/Demo_mode#History
|
||||||
|
// FIXME: Due to Version constraints atm, this can't handle well non-release versions
|
||||||
|
return instance_ver >= Version("1.3.1");
|
||||||
|
}
|
||||||
|
|
||||||
QString MinecraftInstance::jarModsDir() const
|
QString MinecraftInstance::jarModsDir() const
|
||||||
{
|
{
|
||||||
QDir jarmods_dir(FS::PathCombine(instanceRoot(), "jarmods/"));
|
QDir jarmods_dir(FS::PathCombine(instanceRoot(), "jarmods/"));
|
||||||
|
@ -69,6 +69,8 @@ public:
|
|||||||
// where the instance-local libraries should be
|
// where the instance-local libraries should be
|
||||||
QString getLocalLibraryPath() const;
|
QString getLocalLibraryPath() const;
|
||||||
|
|
||||||
|
/** Returns whether the instance, with its version, has support for demo mode. */
|
||||||
|
[[nodiscard]] bool supportsDemo() const;
|
||||||
|
|
||||||
////// Profile management //////
|
////// Profile management //////
|
||||||
std::shared_ptr<PackProfile> getPackProfile() const;
|
std::shared_ptr<PackProfile> getPackProfile() const;
|
||||||
|
@ -166,7 +166,13 @@ void InstanceWindow::updateLaunchButtons()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_launchOfflineButton->setEnabled(true);
|
m_launchOfflineButton->setEnabled(true);
|
||||||
m_launchDemoButton->setEnabled(true);
|
|
||||||
|
// Disable demo-mode if not available.
|
||||||
|
auto instance = dynamic_cast<MinecraftInstance*>(m_instance.get());
|
||||||
|
if (instance) {
|
||||||
|
m_launchDemoButton->setEnabled(instance->supportsDemo());
|
||||||
|
}
|
||||||
|
|
||||||
m_killButton->setText(tr("Launch"));
|
m_killButton->setText(tr("Launch"));
|
||||||
m_killButton->setObjectName("launchButton");
|
m_killButton->setObjectName("launchButton");
|
||||||
m_killButton->setToolTip(tr("Launch the instance"));
|
m_killButton->setToolTip(tr("Launch the instance"));
|
||||||
|
@ -1253,6 +1253,13 @@ void MainWindow::updateToolsMenu()
|
|||||||
normalLaunchOffline->setDisabled(true);
|
normalLaunchOffline->setDisabled(true);
|
||||||
normalLaunchDemo->setDisabled(true);
|
normalLaunchDemo->setDisabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Disable demo-mode if not available.
|
||||||
|
auto instance = dynamic_cast<MinecraftInstance*>(m_selectedInstance.get());
|
||||||
|
if (instance) {
|
||||||
|
normalLaunchDemo->setEnabled(instance->supportsDemo());
|
||||||
|
}
|
||||||
|
|
||||||
QString profilersTitle = tr("Profilers");
|
QString profilersTitle = tr("Profilers");
|
||||||
launchMenu->addSeparator()->setText(profilersTitle);
|
launchMenu->addSeparator()->setText(profilersTitle);
|
||||||
launchOfflineMenu->addSeparator()->setText(profilersTitle);
|
launchOfflineMenu->addSeparator()->setText(profilersTitle);
|
||||||
@ -2164,6 +2171,13 @@ void MainWindow::instanceChanged(const QModelIndex ¤t, const QModelIndex &
|
|||||||
ui->actionLaunchInstance->setEnabled(m_selectedInstance->canLaunch());
|
ui->actionLaunchInstance->setEnabled(m_selectedInstance->canLaunch());
|
||||||
ui->actionLaunchInstanceOffline->setEnabled(m_selectedInstance->canLaunch());
|
ui->actionLaunchInstanceOffline->setEnabled(m_selectedInstance->canLaunch());
|
||||||
ui->actionLaunchInstanceDemo->setEnabled(m_selectedInstance->canLaunch());
|
ui->actionLaunchInstanceDemo->setEnabled(m_selectedInstance->canLaunch());
|
||||||
|
|
||||||
|
// Disable demo-mode if not available.
|
||||||
|
auto instance = dynamic_cast<MinecraftInstance*>(m_selectedInstance.get());
|
||||||
|
if (instance) {
|
||||||
|
ui->actionLaunchInstanceDemo->setEnabled(instance->supportsDemo());
|
||||||
|
}
|
||||||
|
|
||||||
ui->actionKillInstance->setEnabled(m_selectedInstance->isRunning());
|
ui->actionKillInstance->setEnabled(m_selectedInstance->isRunning());
|
||||||
ui->actionExportInstance->setEnabled(m_selectedInstance->canExport());
|
ui->actionExportInstance->setEnabled(m_selectedInstance->canExport());
|
||||||
ui->renameButton->setText(m_selectedInstance->name());
|
ui->renameButton->setText(m_selectedInstance->name());
|
||||||
|
Loading…
Reference in New Issue
Block a user