mirror of
https://github.com/UltimMC/Launcher.git
synced 2026-01-06 15:10:06 +00:00
Merge branch 'MultiMC:develop' into develop
This commit is contained in:
@@ -78,6 +78,15 @@ set(MultiMC_PASTE_EE_API_KEY "utLvciUouSURFzfjPxLBf5W4ISsUX4pwBDF7N1AfZ" CACHE S
|
|||||||
# Google analytics ID
|
# Google analytics ID
|
||||||
set(MultiMC_ANALYTICS_ID "UA-87731965-2" CACHE STRING "ID you can get from Google analytics")
|
set(MultiMC_ANALYTICS_ID "UA-87731965-2" CACHE STRING "ID you can get from Google analytics")
|
||||||
|
|
||||||
|
# Bug tracker URL
|
||||||
|
set(MultiMC_BUG_TRACKER_URL "" CACHE STRING "URL for the bug tracker.")
|
||||||
|
|
||||||
|
# Discord URL
|
||||||
|
set(MultiMC_DISCORD_URL "" CACHE STRING "URL for the Discord guild.")
|
||||||
|
|
||||||
|
# Subreddit URL
|
||||||
|
set(MultiMC_SUBREDDIT_URL "" CACHE STRING "URL for the subreddit.")
|
||||||
|
|
||||||
#### Check the current Git commit and branch
|
#### Check the current Git commit and branch
|
||||||
include(GetGitRevisionDescription)
|
include(GetGitRevisionDescription)
|
||||||
get_git_head_revision(MultiMC_GIT_REFSPEC MultiMC_GIT_COMMIT)
|
get_git_head_revision(MultiMC_GIT_REFSPEC MultiMC_GIT_COMMIT)
|
||||||
|
|||||||
@@ -150,7 +150,7 @@ JavaInstallPtr JavaUtils::GetDefaultJava()
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if defined(Q_OS_WIN32)
|
#if defined(Q_OS_WIN32)
|
||||||
QList<JavaInstallPtr> JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString keyName)
|
QList<JavaInstallPtr> JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString keyName, QString keyJavaDir, QString subkeySuffix)
|
||||||
{
|
{
|
||||||
QList<JavaInstallPtr> javas;
|
QList<JavaInstallPtr> javas;
|
||||||
|
|
||||||
@@ -175,8 +175,6 @@ QList<JavaInstallPtr> JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString
|
|||||||
RegQueryValueExA(jreKey, "CurrentVersion", NULL, NULL, (BYTE *)value, &valueSz);
|
RegQueryValueExA(jreKey, "CurrentVersion", NULL, NULL, (BYTE *)value, &valueSz);
|
||||||
}
|
}
|
||||||
|
|
||||||
QString recommended = value;
|
|
||||||
|
|
||||||
TCHAR subKeyName[255];
|
TCHAR subKeyName[255];
|
||||||
DWORD subKeyNameSize, numSubKeys, retCode;
|
DWORD subKeyNameSize, numSubKeys, retCode;
|
||||||
|
|
||||||
@@ -195,7 +193,7 @@ QList<JavaInstallPtr> JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString
|
|||||||
if (retCode == ERROR_SUCCESS)
|
if (retCode == ERROR_SUCCESS)
|
||||||
{
|
{
|
||||||
// Now open the registry key for the version that we just got.
|
// Now open the registry key for the version that we just got.
|
||||||
QString newKeyName = keyName + "\\" + subKeyName;
|
QString newKeyName = keyName + "\\" + subKeyName + subkeySuffix;
|
||||||
|
|
||||||
HKEY newKey;
|
HKEY newKey;
|
||||||
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, newKeyName.toStdString().c_str(), 0,
|
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE, newKeyName.toStdString().c_str(), 0,
|
||||||
@@ -204,11 +202,11 @@ QList<JavaInstallPtr> JavaUtils::FindJavaFromRegistryKey(DWORD keyType, QString
|
|||||||
// Read the JavaHome value to find where Java is installed.
|
// Read the JavaHome value to find where Java is installed.
|
||||||
value = new char[0];
|
value = new char[0];
|
||||||
valueSz = 0;
|
valueSz = 0;
|
||||||
if (RegQueryValueEx(newKey, "JavaHome", NULL, NULL, (BYTE *)value,
|
if (RegQueryValueEx(newKey, keyJavaDir.toStdString().c_str(), NULL, NULL, (BYTE *)value,
|
||||||
&valueSz) == ERROR_MORE_DATA)
|
&valueSz) == ERROR_MORE_DATA)
|
||||||
{
|
{
|
||||||
value = new char[valueSz];
|
value = new char[valueSz];
|
||||||
RegQueryValueEx(newKey, "JavaHome", NULL, NULL, (BYTE *)value,
|
RegQueryValueEx(newKey, keyJavaDir.toStdString().c_str(), NULL, NULL, (BYTE *)value,
|
||||||
&valueSz);
|
&valueSz);
|
||||||
|
|
||||||
// Now, we construct the version object and add it to the list.
|
// Now, we construct the version object and add it to the list.
|
||||||
@@ -237,37 +235,78 @@ QList<QString> JavaUtils::FindJavaPaths()
|
|||||||
{
|
{
|
||||||
QList<JavaInstallPtr> java_candidates;
|
QList<JavaInstallPtr> java_candidates;
|
||||||
|
|
||||||
|
// Oracle
|
||||||
QList<JavaInstallPtr> JRE64s = this->FindJavaFromRegistryKey(
|
QList<JavaInstallPtr> JRE64s = this->FindJavaFromRegistryKey(
|
||||||
KEY_WOW64_64KEY, "SOFTWARE\\JavaSoft\\Java Runtime Environment");
|
KEY_WOW64_64KEY, "SOFTWARE\\JavaSoft\\Java Runtime Environment", "JavaHome");
|
||||||
QList<JavaInstallPtr> JDK64s = this->FindJavaFromRegistryKey(
|
QList<JavaInstallPtr> JDK64s = this->FindJavaFromRegistryKey(
|
||||||
KEY_WOW64_64KEY, "SOFTWARE\\JavaSoft\\Java Development Kit");
|
KEY_WOW64_64KEY, "SOFTWARE\\JavaSoft\\Java Development Kit", "JavaHome");
|
||||||
QList<JavaInstallPtr> NEWJRE64s = this->FindJavaFromRegistryKey(
|
|
||||||
KEY_WOW64_64KEY, "SOFTWARE\\JavaSoft\\JRE");
|
|
||||||
QList<JavaInstallPtr> NEWJDK64s = this->FindJavaFromRegistryKey(
|
|
||||||
KEY_WOW64_64KEY, "SOFTWARE\\JavaSoft\\JDK");
|
|
||||||
QList<JavaInstallPtr> JRE32s = this->FindJavaFromRegistryKey(
|
QList<JavaInstallPtr> JRE32s = this->FindJavaFromRegistryKey(
|
||||||
KEY_WOW64_32KEY, "SOFTWARE\\JavaSoft\\Java Runtime Environment");
|
KEY_WOW64_32KEY, "SOFTWARE\\JavaSoft\\Java Runtime Environment", "JavaHome");
|
||||||
QList<JavaInstallPtr> JDK32s = this->FindJavaFromRegistryKey(
|
QList<JavaInstallPtr> JDK32s = this->FindJavaFromRegistryKey(
|
||||||
KEY_WOW64_32KEY, "SOFTWARE\\JavaSoft\\Java Development Kit");
|
KEY_WOW64_32KEY, "SOFTWARE\\JavaSoft\\Java Development Kit", "JavaHome");
|
||||||
QList<JavaInstallPtr> NEWJRE32s = this->FindJavaFromRegistryKey(
|
|
||||||
KEY_WOW64_32KEY, "SOFTWARE\\JavaSoft\\JRE");
|
|
||||||
QList<JavaInstallPtr> NEWJDK32s = this->FindJavaFromRegistryKey(
|
|
||||||
KEY_WOW64_32KEY, "SOFTWARE\\JavaSoft\\JDK");
|
|
||||||
|
|
||||||
|
// Oracle for Java 9 and newer
|
||||||
|
QList<JavaInstallPtr> NEWJRE64s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_64KEY, "SOFTWARE\\JavaSoft\\JRE", "JavaHome");
|
||||||
|
QList<JavaInstallPtr> NEWJDK64s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_64KEY, "SOFTWARE\\JavaSoft\\JDK", "JavaHome");
|
||||||
|
QList<JavaInstallPtr> NEWJRE32s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_32KEY, "SOFTWARE\\JavaSoft\\JRE", "JavaHome");
|
||||||
|
QList<JavaInstallPtr> NEWJDK32s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_32KEY, "SOFTWARE\\JavaSoft\\JDK", "JavaHome");
|
||||||
|
|
||||||
|
// AdoptOpenJDK
|
||||||
|
QList<JavaInstallPtr> ADOPTOPENJRE32s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_32KEY, "SOFTWARE\\AdoptOpenJDK\\JRE", "Path", "\\hotspot\\MSI");
|
||||||
|
QList<JavaInstallPtr> ADOPTOPENJRE64s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_64KEY, "SOFTWARE\\AdoptOpenJDK\\JRE", "Path", "\\hotspot\\MSI");
|
||||||
|
QList<JavaInstallPtr> ADOPTOPENJDK32s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_32KEY, "SOFTWARE\\AdoptOpenJDK\\JDK", "Path", "\\hotspot\\MSI");
|
||||||
|
QList<JavaInstallPtr> ADOPTOPENJDK64s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_64KEY, "SOFTWARE\\AdoptOpenJDK\\JDK", "Path", "\\hotspot\\MSI");
|
||||||
|
|
||||||
|
// Microsoft
|
||||||
|
QList<JavaInstallPtr> MICROSOFTJDK64s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_64KEY, "SOFTWARE\\Microsoft\\JDK", "Path", "\\hotspot\\MSI");
|
||||||
|
|
||||||
|
// Azul Zulu
|
||||||
|
QList<JavaInstallPtr> ZULU64s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_64KEY, "SOFTWARE\\Azul Systems\\Zulu", "InstallationPath");
|
||||||
|
QList<JavaInstallPtr> ZULU32s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_64KEY, "SOFTWARE\\Azul Systems\\Zulu", "InstallationPath");
|
||||||
|
|
||||||
|
// BellSoft Liberica
|
||||||
|
QList<JavaInstallPtr> LIBERICA64s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_64KEY, "SOFTWARE\\BellSoft\\Liberica", "InstallationPath");
|
||||||
|
QList<JavaInstallPtr> LIBERICA32s = this->FindJavaFromRegistryKey(
|
||||||
|
KEY_WOW64_64KEY, "SOFTWARE\\BellSoft\\Liberica", "InstallationPath");
|
||||||
|
|
||||||
|
// List x64 before x86
|
||||||
java_candidates.append(JRE64s);
|
java_candidates.append(JRE64s);
|
||||||
java_candidates.append(NEWJRE64s);
|
java_candidates.append(NEWJRE64s);
|
||||||
|
java_candidates.append(ADOPTOPENJRE64s);
|
||||||
java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre8/bin/javaw.exe"));
|
java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre8/bin/javaw.exe"));
|
||||||
java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre7/bin/javaw.exe"));
|
java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre7/bin/javaw.exe"));
|
||||||
java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre6/bin/javaw.exe"));
|
java_candidates.append(MakeJavaPtr("C:/Program Files/Java/jre6/bin/javaw.exe"));
|
||||||
java_candidates.append(JDK64s);
|
java_candidates.append(JDK64s);
|
||||||
java_candidates.append(NEWJDK64s);
|
java_candidates.append(NEWJDK64s);
|
||||||
|
java_candidates.append(ADOPTOPENJDK64s);
|
||||||
|
java_candidates.append(MICROSOFTJDK64s);
|
||||||
|
java_candidates.append(ZULU64s);
|
||||||
|
java_candidates.append(LIBERICA64s);
|
||||||
|
|
||||||
java_candidates.append(JRE32s);
|
java_candidates.append(JRE32s);
|
||||||
java_candidates.append(NEWJRE32s);
|
java_candidates.append(NEWJRE32s);
|
||||||
|
java_candidates.append(ADOPTOPENJRE32s);
|
||||||
java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre8/bin/javaw.exe"));
|
java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre8/bin/javaw.exe"));
|
||||||
java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre7/bin/javaw.exe"));
|
java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre7/bin/javaw.exe"));
|
||||||
java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre6/bin/javaw.exe"));
|
java_candidates.append(MakeJavaPtr("C:/Program Files (x86)/Java/jre6/bin/javaw.exe"));
|
||||||
java_candidates.append(JDK32s);
|
java_candidates.append(JDK32s);
|
||||||
java_candidates.append(NEWJDK32s);
|
java_candidates.append(NEWJDK32s);
|
||||||
|
java_candidates.append(ADOPTOPENJDK32s);
|
||||||
|
java_candidates.append(ZULU32s);
|
||||||
|
java_candidates.append(LIBERICA32s);
|
||||||
|
|
||||||
java_candidates.append(MakeJavaPtr(this->GetDefaultJava()->path));
|
java_candidates.append(MakeJavaPtr(this->GetDefaultJava()->path));
|
||||||
|
|
||||||
QList<QString> candidates;
|
QList<QString> candidates;
|
||||||
|
|||||||
@@ -39,6 +39,6 @@ public:
|
|||||||
JavaInstallPtr GetDefaultJava();
|
JavaInstallPtr GetDefaultJava();
|
||||||
|
|
||||||
#ifdef Q_OS_WIN
|
#ifdef Q_OS_WIN
|
||||||
QList<JavaInstallPtr> FindJavaFromRegistryKey(DWORD keyType, QString keyName);
|
QList<JavaInstallPtr> FindJavaFromRegistryKey(DWORD keyType, QString keyName, QString keyJavaDir, QString subkeySuffix = "");
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -306,29 +306,35 @@ public:
|
|||||||
helpMenu = new QMenu(MainWindow);
|
helpMenu = new QMenu(MainWindow);
|
||||||
helpMenu->setToolTipsVisible(true);
|
helpMenu->setToolTipsVisible(true);
|
||||||
|
|
||||||
actionReportBug = TranslatedAction(MainWindow);
|
if (!BuildConfig.BUG_TRACKER_URL.isEmpty()) {
|
||||||
actionReportBug->setObjectName(QStringLiteral("actionReportBug"));
|
actionReportBug = TranslatedAction(MainWindow);
|
||||||
actionReportBug->setIcon(MMC->getThemedIcon("bug"));
|
actionReportBug->setObjectName(QStringLiteral("actionReportBug"));
|
||||||
actionReportBug.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Report a Bug"));
|
actionReportBug->setIcon(MMC->getThemedIcon("bug"));
|
||||||
actionReportBug.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the bug tracker to report a bug with MultiMC."));
|
actionReportBug.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Report a Bug"));
|
||||||
all_actions.append(&actionReportBug);
|
actionReportBug.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open the bug tracker to report a bug with MultiMC."));
|
||||||
helpMenu->addAction(actionReportBug);
|
all_actions.append(&actionReportBug);
|
||||||
|
helpMenu->addAction(actionReportBug);
|
||||||
|
}
|
||||||
|
|
||||||
actionDISCORD = TranslatedAction(MainWindow);
|
if (!BuildConfig.DISCORD_URL.isEmpty()) {
|
||||||
actionDISCORD->setObjectName(QStringLiteral("actionDISCORD"));
|
actionDISCORD = TranslatedAction(MainWindow);
|
||||||
actionDISCORD->setIcon(MMC->getThemedIcon("discord"));
|
actionDISCORD->setObjectName(QStringLiteral("actionDISCORD"));
|
||||||
actionDISCORD.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Discord"));
|
actionDISCORD->setIcon(MMC->getThemedIcon("discord"));
|
||||||
actionDISCORD.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open MultiMC discord voice chat."));
|
actionDISCORD.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Discord"));
|
||||||
all_actions.append(&actionDISCORD);
|
actionDISCORD.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open MultiMC discord voice chat."));
|
||||||
helpMenu->addAction(actionDISCORD);
|
all_actions.append(&actionDISCORD);
|
||||||
|
helpMenu->addAction(actionDISCORD);
|
||||||
|
}
|
||||||
|
|
||||||
actionREDDIT = TranslatedAction(MainWindow);
|
if (!BuildConfig.SUBREDDIT_URL.isEmpty()) {
|
||||||
actionREDDIT->setObjectName(QStringLiteral("actionREDDIT"));
|
actionREDDIT = TranslatedAction(MainWindow);
|
||||||
actionREDDIT->setIcon(MMC->getThemedIcon("reddit-alien"));
|
actionREDDIT->setObjectName(QStringLiteral("actionREDDIT"));
|
||||||
actionREDDIT.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Reddit"));
|
actionREDDIT->setIcon(MMC->getThemedIcon("reddit-alien"));
|
||||||
actionREDDIT.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open MultiMC subreddit."));
|
actionREDDIT.setTextId(QT_TRANSLATE_NOOP("MainWindow", "Reddit"));
|
||||||
all_actions.append(&actionREDDIT);
|
actionREDDIT.setTooltipId(QT_TRANSLATE_NOOP("MainWindow", "Open MultiMC subreddit."));
|
||||||
helpMenu->addAction(actionREDDIT);
|
all_actions.append(&actionREDDIT);
|
||||||
|
helpMenu->addAction(actionREDDIT);
|
||||||
|
}
|
||||||
|
|
||||||
actionAbout = TranslatedAction(MainWindow);
|
actionAbout = TranslatedAction(MainWindow);
|
||||||
actionAbout->setObjectName(QStringLiteral("actionAbout"));
|
actionAbout->setObjectName(QStringLiteral("actionAbout"));
|
||||||
@@ -1454,12 +1460,12 @@ void MainWindow::droppedURLs(QList<QUrl> urls)
|
|||||||
|
|
||||||
void MainWindow::on_actionREDDIT_triggered()
|
void MainWindow::on_actionREDDIT_triggered()
|
||||||
{
|
{
|
||||||
DesktopServices::openUrl(QUrl("https://www.reddit.com/r/MultiMC/"));
|
DesktopServices::openUrl(QUrl(BuildConfig.SUBREDDIT_URL));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionDISCORD_triggered()
|
void MainWindow::on_actionDISCORD_triggered()
|
||||||
{
|
{
|
||||||
DesktopServices::openUrl(QUrl("https://discord.gg/multimc"));
|
DesktopServices::openUrl(QUrl(BuildConfig.DISCORD_URL));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionChangeInstIcon_triggered()
|
void MainWindow::on_actionChangeInstIcon_triggered()
|
||||||
@@ -1637,7 +1643,7 @@ void MainWindow::on_actionManageAccounts_triggered()
|
|||||||
|
|
||||||
void MainWindow::on_actionReportBug_triggered()
|
void MainWindow::on_actionReportBug_triggered()
|
||||||
{
|
{
|
||||||
DesktopServices::openUrl(QUrl("https://github.com/MultiMC/MultiMC5/issues"));
|
DesktopServices::openUrl(QUrl(BuildConfig.BUG_TRACKER_URL));
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::on_actionPatreon_triggered()
|
void MainWindow::on_actionPatreon_triggered()
|
||||||
|
|||||||
@@ -17,6 +17,8 @@ FlamePage::FlamePage(NewInstanceDialog* dialog, QWidget *parent)
|
|||||||
listModel = new Flame::ListModel(this);
|
listModel = new Flame::ListModel(this);
|
||||||
ui->packView->setModel(listModel);
|
ui->packView->setModel(listModel);
|
||||||
|
|
||||||
|
ui->versionSelectionBox->setMaxVisibleItems(10);
|
||||||
|
|
||||||
// index is used to set the sorting with the curseforge api
|
// index is used to set the sorting with the curseforge api
|
||||||
ui->sortByBox->addItem(tr("Sort by featured"));
|
ui->sortByBox->addItem(tr("Sort by featured"));
|
||||||
ui->sortByBox->addItem(tr("Sort by popularity"));
|
ui->sortByBox->addItem(tr("Sort by popularity"));
|
||||||
|
|||||||
Binary file not shown.
@@ -34,6 +34,10 @@ Config::Config()
|
|||||||
NEWS_RSS_URL = "@MultiMC_NEWS_RSS_URL@";
|
NEWS_RSS_URL = "@MultiMC_NEWS_RSS_URL@";
|
||||||
PASTE_EE_KEY = "@MultiMC_PASTE_EE_API_KEY@";
|
PASTE_EE_KEY = "@MultiMC_PASTE_EE_API_KEY@";
|
||||||
META_URL = "@MultiMC_META_URL@";
|
META_URL = "@MultiMC_META_URL@";
|
||||||
|
|
||||||
|
BUG_TRACKER_URL = "@MultiMC_BUG_TRACKER_URL@";
|
||||||
|
DISCORD_URL = "@MultiMC_DISCORD_URL@";
|
||||||
|
SUBREDDIT_URL = "@MultiMC_SUBREDDIT_URL@";
|
||||||
}
|
}
|
||||||
|
|
||||||
QString Config::printableVersionString() const
|
QString Config::printableVersionString() const
|
||||||
|
|||||||
@@ -65,6 +65,10 @@ public:
|
|||||||
*/
|
*/
|
||||||
QString META_URL;
|
QString META_URL;
|
||||||
|
|
||||||
|
QString BUG_TRACKER_URL;
|
||||||
|
QString DISCORD_URL;
|
||||||
|
QString SUBREDDIT_URL;
|
||||||
|
|
||||||
QString RESOURCE_BASE = "https://resources.download.minecraft.net/";
|
QString RESOURCE_BASE = "https://resources.download.minecraft.net/";
|
||||||
QString LIBRARY_BASE = "https://libraries.minecraft.net/";
|
QString LIBRARY_BASE = "https://libraries.minecraft.net/";
|
||||||
QString MOJANG_STATUS_URL = "https://status.mojang.com/check";
|
QString MOJANG_STATUS_URL = "https://status.mojang.com/check";
|
||||||
|
|||||||
Reference in New Issue
Block a user