diff --git a/launcher/ui/dialogs/CreateShortcutDialog.cpp b/launcher/ui/dialogs/CreateShortcutDialog.cpp index 1e57b142..63cc6a29 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.cpp +++ b/launcher/ui/dialogs/CreateShortcutDialog.cpp @@ -11,6 +11,8 @@ #include "ui_CreateShortcutDialog.h" #include "Application.h" #include "minecraft/auth/AccountList.h" +#include "minecraft/MinecraftInstance.h" +#include "minecraft/PackProfile.h" #include "icons/IconList.h" #ifdef Q_OS_WIN @@ -38,6 +40,15 @@ CreateShortcutDialog::CreateShortcutDialog(QWidget *parent, InstancePtr instance ui->profileComboBox->setCurrentText(accounts->defaultAccount()->profileName()); } + if (m_instance->typeName() == "Minecraft") + { + MinecraftInstancePtr minecraftInstance = qobject_pointer_cast(m_instance); + QString version = minecraftInstance->getPackProfile()->getComponentVersion("net.minecraft"); + bool enableJoinServer = QRegExp(JOIN_SERVER_DISALLOWED_VERSIONS).exactMatch(version); + ui->joinServerCheckBox->setEnabled(enableJoinServer); + ui->joinServer->setEnabled(enableJoinServer); + } + #if defined(Q_OS_UNIX) && !defined(Q_OS_LINUX) ui->createScriptCheckBox->setEnabled(false); ui->createScriptCheckBox->setChecked(true); diff --git a/launcher/ui/dialogs/CreateShortcutDialog.h b/launcher/ui/dialogs/CreateShortcutDialog.h index 22e789e0..8e6d961f 100644 --- a/launcher/ui/dialogs/CreateShortcutDialog.h +++ b/launcher/ui/dialogs/CreateShortcutDialog.h @@ -15,6 +15,22 @@ #include #endif +const QString JOIN_SERVER_DISALLOWED_VERSIONS( + "(19w0[89][a-z])" + "|(19w1[0-9][a-z])" + "|(1.14.?[1-4]?-pre[0-9])" + "|(1.14.?[1-4]?)" + "|(19w[34][0-9][a-z])" + "|(1.15.?[0-9]?-pre[0-9])" + "|(1.15.?[0-9]?)" + "|(20w[01][0-9][a-z])" + "|(20w20a)" + "|(21w[12][0-9][a-z])" + "|(1.17-pre[0-9])" + "|(1.17-rc[0-9])" + "|(1.17)" + ); + namespace Ui { class CreateShortcutDialog;