aboutsummaryrefslogtreecommitdiff
path: root/launcher
diff options
context:
space:
mode:
Diffstat (limited to 'launcher')
-rw-r--r--launcher/Application.cpp13
-rw-r--r--launcher/BaseInstance.cpp2
-rw-r--r--launcher/CMakeLists.txt2
-rw-r--r--launcher/FileSystem.cpp33
-rw-r--r--launcher/LaunchController.cpp2
-rw-r--r--launcher/RuntimeContext.h32
-rw-r--r--launcher/UpdateController.cpp6
-rw-r--r--launcher/java/JavaUtils.cpp4
-rw-r--r--launcher/main.cpp2
-rw-r--r--launcher/minecraft/Library.h14
-rw-r--r--launcher/minecraft/MojangVersionFormat.cpp2
-rw-r--r--launcher/minecraft/VersionFile.h30
-rw-r--r--launcher/minecraft/auth/AccountList.h2
-rw-r--r--launcher/minecraft/auth/MinecraftAccount.h2
-rw-r--r--launcher/minecraft/launch/LauncherPartLaunch.cpp2
-rw-r--r--launcher/minecraft/launch/MinecraftServerTarget.cpp2
-rw-r--r--launcher/net/HttpMetaCache.cpp12
-rw-r--r--launcher/net/HttpMetaCache.h1
-rw-r--r--launcher/resources/OSX/scalable/launcher.svg66
-rw-r--r--launcher/resources/flat/scalable/launcher.svg66
-rw-r--r--launcher/resources/iOS/scalable/launcher.svg66
-rw-r--r--launcher/resources/multimc/multimc.qrc2
-rw-r--r--launcher/resources/multimc/scalable/instances/polymc.svg21
-rw-r--r--launcher/resources/multimc/scalable/instances/prismlauncher.svg18
-rw-r--r--launcher/resources/multimc/scalable/launcher.svg66
-rw-r--r--launcher/resources/pe_blue/scalable/launcher.svg66
-rw-r--r--launcher/resources/pe_colored/scalable/launcher.svg66
-rw-r--r--launcher/resources/pe_dark/scalable/launcher.svg66
-rw-r--r--launcher/resources/pe_light/scalable/launcher.svg66
-rw-r--r--launcher/settings/INISettingsObject.cpp25
-rw-r--r--launcher/settings/INISettingsObject.h5
-rw-r--r--launcher/settings/Setting.h2
-rw-r--r--launcher/ui/MainWindow.cpp152
-rw-r--r--launcher/ui/MainWindow.h14
-rw-r--r--launcher/ui/dialogs/AboutDialog.cpp29
-rw-r--r--launcher/ui/dialogs/UpdateDialog.cpp8
-rw-r--r--launcher/ui/pages/global/AccountListPage.cpp2
-rw-r--r--launcher/ui/pages/global/LauncherPage.cpp2
-rw-r--r--launcher/ui/pages/instance/ExternalResourcesPage.cpp4
-rw-r--r--launcher/ui/pages/instance/LogPage.cpp6
-rw-r--r--launcher/ui/pages/instance/ModFolderPage.cpp4
-rw-r--r--launcher/ui/pages/modplatform/ImportPage.ui2
-rw-r--r--launcher/ui/pages/modplatform/ModModel.cpp2
-rw-r--r--launcher/ui/pages/modplatform/ModPage.cpp4
-rw-r--r--launcher/ui/pages/modplatform/ModPage.h1
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModPage.cpp5
-rw-r--r--launcher/ui/pages/modplatform/flame/FlameModPage.h1
-rw-r--r--launcher/ui/pages/modplatform/flame/FlamePage.ui2
-rw-r--r--launcher/ui/pages/modplatform/modrinth/ModrinthModel.cpp2
-rw-r--r--launcher/ui/setupwizard/LanguageWizardPage.cpp2
-rw-r--r--launcher/ui/setupwizard/SetupWizard.cpp2
-rw-r--r--launcher/ui/widgets/JavaSettingsWidget.cpp2
-rw-r--r--launcher/updater/DownloadTask.h2
-rw-r--r--launcher/updater/GoUpdate.cpp2
54 files changed, 624 insertions, 390 deletions
diff --git a/launcher/Application.cpp b/launcher/Application.cpp
index 968dd08e..d07ad99e 100644
--- a/launcher/Application.cpp
+++ b/launcher/Application.cpp
@@ -237,7 +237,7 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
// Commandline parsing
QCommandLineParser parser;
- parser.setApplicationDescription(BuildConfig.LAUNCHER_NAME);
+ parser.setApplicationDescription(BuildConfig.LAUNCHER_DISPLAYNAME);
parser.addOptions({
{{"d", "dir"}, "Use a custom path as application root (use '.' for current directory)", "directory"},
@@ -301,6 +301,12 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
dataPath = foo.absolutePath();
adjustedBy = "Persistent data path";
+ QDir polymcData(FS::PathCombine(QStandardPaths::writableLocation(QStandardPaths::GenericDataLocation), "PolyMC"));
+ if (polymcData.exists()) {
+ dataPath = polymcData.absolutePath();
+ adjustedBy = "PolyMC data path";
+ }
+
#ifdef Q_OS_LINUX
// TODO: this should be removed in a future version
// TODO: provide a migration path similar to macOS migration
@@ -482,7 +488,8 @@ Application::Application(int &argc, char **argv) : QApplication(argc, argv)
// Initialize application settings
{
- m_settings.reset(new INISettingsObject(BuildConfig.LAUNCHER_CONFIGFILE, this));
+ // Provide a fallback for migration from PolyMC
+ m_settings.reset(new INISettingsObject({ BuildConfig.LAUNCHER_CONFIGFILE, "polymc.cfg", "multimc.cfg" }, this));
// Updates
// Multiple channels are separated by spaces
m_settings->registerSetting("UpdateChannel", BuildConfig.VERSION_CHANNEL);
@@ -1157,7 +1164,7 @@ void Application::setIconTheme(const QString& name)
QIcon Application::getThemedIcon(const QString& name)
{
if(name == "logo") {
- return QIcon(":/org.polymc.PolyMC.svg");
+ return QIcon(":/org.prismlauncher.PrismLauncher.svg"); // FIXME: Make this a BuildConfig variable
}
return QIcon::fromTheme(name);
}
diff --git a/launcher/BaseInstance.cpp b/launcher/BaseInstance.cpp
index a0bd8823..8680361c 100644
--- a/launcher/BaseInstance.cpp
+++ b/launcher/BaseInstance.cpp
@@ -355,7 +355,7 @@ QString BaseInstance::name() const
QString BaseInstance::windowTitle() const
{
- return BuildConfig.LAUNCHER_NAME + ": " + name().replace(QRegularExpression("\\s+"), " ");
+ return BuildConfig.LAUNCHER_DISPLAYNAME + ": " + name().replace(QRegularExpression("\\s+"), " ");
}
// FIXME: why is this here? move it to MinecraftInstance!!!
diff --git a/launcher/CMakeLists.txt b/launcher/CMakeLists.txt
index c5894268..6ad91a85 100644
--- a/launcher/CMakeLists.txt
+++ b/launcher/CMakeLists.txt
@@ -968,7 +968,6 @@ add_library(Launcher_logic STATIC ${LOGIC_SOURCES} ${LAUNCHER_SOURCES} ${LAUNCHE
target_include_directories(Launcher_logic PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(Launcher_logic
systeminfo
- Launcher_classparser
Launcher_murmur2
nbt++
${ZLIB_LIBRARIES}
@@ -976,6 +975,7 @@ target_link_libraries(Launcher_logic
BuildConfig
Katabasis
Qt${QT_VERSION_MAJOR}::Widgets
+ ghcFilesystem::ghc_filesystem
)
if (UNIX AND NOT CYGWIN AND NOT APPLE)
diff --git a/launcher/FileSystem.cpp b/launcher/FileSystem.cpp
index 5d179641..39e68c20 100644
--- a/launcher/FileSystem.cpp
+++ b/launcher/FileSystem.cpp
@@ -59,7 +59,24 @@
#include <utime.h>
#endif
+// Snippet from https://github.com/gulrak/filesystem#using-it-as-single-file-header
+
+#ifdef __APPLE__
+#include <Availability.h> // for deployment target to support pre-catalina targets without std::fs
+#endif // __APPLE__
+
+#if ((defined(_MSVC_LANG) && _MSVC_LANG >= 201703L) || (defined(__cplusplus) && __cplusplus >= 201703L)) && defined(__has_include)
+#if __has_include(<filesystem>) && (!defined(__MAC_OS_X_VERSION_MIN_REQUIRED) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101500)
+#define GHC_USE_STD_FS
#include <filesystem>
+namespace fs = std::filesystem;
+#endif // MacOS min version check
+#endif // Other OSes version check
+
+#ifndef GHC_USE_STD_FS
+#include <ghc/filesystem.hpp>
+namespace fs = ghc::filesystem;
+#endif
#if defined Q_OS_WIN32
@@ -147,7 +164,7 @@ bool ensureFolderPathExists(QString foldernamepath)
bool copy::operator()(const QString& offset)
{
- using copy_opts = std::filesystem::copy_options;
+ using copy_opts = fs::copy_options;
// NOTE always deep copy on windows. the alternatives are too messy.
#if defined Q_OS_WIN32
@@ -159,7 +176,7 @@ bool copy::operator()(const QString& offset)
std::error_code err;
- std::filesystem::copy_options opt = copy_opts::none;
+ fs::copy_options opt = copy_opts::none;
// The default behavior is to follow symlinks
if (!m_followSymlinks)
@@ -170,7 +187,7 @@ bool copy::operator()(const QString& offset)
// blacklisted paths, so we iterate over the source directory, and if there's no blacklist
// match, we copy the file.
QDir src_dir(src);
- QDirIterator source_it(src, QDir::Filter::Files, QDirIterator::Subdirectories);
+ QDirIterator source_it(src, QDir::Filter::Files | QDir::Filter::Hidden, QDirIterator::Subdirectories);
while (source_it.hasNext()) {
auto src_path = source_it.next();
@@ -182,7 +199,7 @@ bool copy::operator()(const QString& offset)
auto dst_path = PathCombine(dst, relative_path);
ensureFilePathExists(dst_path);
- std::filesystem::copy(toStdString(src_path), toStdString(dst_path), opt, err);
+ fs::copy(toStdString(src_path), toStdString(dst_path), opt, err);
if (err) {
qWarning() << "Failed to copy files:" << QString::fromStdString(err.message());
qDebug() << "Source file:" << src_path;
@@ -197,7 +214,7 @@ bool deletePath(QString path)
{
std::error_code err;
- std::filesystem::remove_all(toStdString(path), err);
+ fs::remove_all(toStdString(path), err);
if (err) {
qWarning() << "Failed to remove files:" << QString::fromStdString(err.message());
@@ -376,15 +393,15 @@ bool createShortCut(QString location, QString dest, QStringList args, QString na
bool overrideFolder(QString overwritten_path, QString override_path)
{
- using copy_opts = std::filesystem::copy_options;
+ using copy_opts = fs::copy_options;
if (!FS::ensureFolderPathExists(overwritten_path))
return false;
std::error_code err;
- std::filesystem::copy_options opt = copy_opts::recursive | copy_opts::overwrite_existing;
+ fs::copy_options opt = copy_opts::recursive | copy_opts::overwrite_existing;
- std::filesystem::copy(toStdString(override_path), toStdString(overwritten_path), opt, err);
+ fs::copy(toStdString(override_path), toStdString(overwritten_path), opt, err);
if (err) {
qCritical() << QString("Failed to apply override from %1 to %2").arg(override_path, overwritten_path);
diff --git a/launcher/LaunchController.cpp b/launcher/LaunchController.cpp
index e61c5f67..11e3de15 100644
--- a/launcher/LaunchController.cpp
+++ b/launcher/LaunchController.cpp
@@ -382,7 +382,7 @@ void LaunchController::launchInstance()
m_launcher->prependStep(new TextPrint(m_launcher.get(), "Launched instance in " + online_mode + " mode\n", MessageLevel::Launcher));
// Prepend Version
- m_launcher->prependStep(new TextPrint(m_launcher.get(), BuildConfig.LAUNCHER_NAME + " version: " + BuildConfig.printableVersionString() + "\n\n", MessageLevel::Launcher));
+ m_launcher->prependStep(new TextPrint(m_launcher.get(), BuildConfig.LAUNCHER_DISPLAYNAME + " version: " + BuildConfig.printableVersionString() + "\n\n", MessageLevel::Launcher));
m_launcher->start();
}
diff --git a/launcher/RuntimeContext.h b/launcher/RuntimeContext.h
index c1b71318..70e7d0d1 100644
--- a/launcher/RuntimeContext.h
+++ b/launcher/RuntimeContext.h
@@ -28,31 +28,38 @@ struct RuntimeContext {
QString javaPath;
QString system;
- QString mappedJavaRealArchitecture() const {
- if (javaRealArchitecture == "aarch64") {
+ QString mappedJavaRealArchitecture() const
+ {
+ if (javaRealArchitecture == "amd64")
+ return "x86_64";
+ if (javaRealArchitecture == "i386" || javaRealArchitecture == "i686")
+ return "x86";
+ if (javaRealArchitecture == "aarch64")
return "arm64";
- }
+ if (javaRealArchitecture == "arm" || javaRealArchitecture == "armhf")
+ return "arm32";
return javaRealArchitecture;
}
- void updateFromInstanceSettings(SettingsObjectPtr instanceSettings) {
+ void updateFromInstanceSettings(SettingsObjectPtr instanceSettings)
+ {
javaArchitecture = instanceSettings->get("JavaArchitecture").toString();
javaRealArchitecture = instanceSettings->get("JavaRealArchitecture").toString();
javaPath = instanceSettings->get("JavaPath").toString();
system = currentSystem();
}
- QString getClassifier() const {
- return system + "-" + mappedJavaRealArchitecture();
- }
+ QString getClassifier() const { return system + "-" + mappedJavaRealArchitecture(); }
// "Legacy" refers to the fact that Mojang assumed that these are the only two architectures
- bool isLegacyArch() const {
- QSet<QString> legacyArchitectures{"amd64", "x86_64", "i386", "i686", "x86"};
- return legacyArchitectures.contains(mappedJavaRealArchitecture());
+ bool isLegacyArch() const
+ {
+ const QString mapped = mappedJavaRealArchitecture();
+ return mapped == "x86_64" || mapped == "x86";
}
- bool classifierMatches(QString target) const {
+ bool classifierMatches(QString target) const
+ {
// try to match precise classifier "[os]-[arch]"
bool x = target == getClassifier();
// try to match imprecise classifier on legacy architectures "[os]"
@@ -62,7 +69,8 @@ struct RuntimeContext {
return x;
}
- static QString currentSystem() {
+ static QString currentSystem()
+ {
#if defined(Q_OS_LINUX)
return "linux";
#elif defined(Q_OS_MACOS)
diff --git a/launcher/UpdateController.cpp b/launcher/UpdateController.cpp
index 646f8e57..9ff44854 100644
--- a/launcher/UpdateController.cpp
+++ b/launcher/UpdateController.cpp
@@ -358,7 +358,7 @@ void UpdateController::fail()
msg = QObject::tr(
"Couldn't replace file %1. Changes will be reverted.\n"
"See the %2 log file for details."
- ).arg(m_failedFile, BuildConfig.LAUNCHER_NAME);
+ ).arg(m_failedFile, BuildConfig.LAUNCHER_DISPLAYNAME);
doRollback = true;
QMessageBox::critical(m_parent, failTitle, msg);
break;
@@ -368,7 +368,7 @@ void UpdateController::fail()
msg = QObject::tr(
"Couldn't remove file %1. Changes will be reverted.\n"
"See the %2 log file for details."
- ).arg(m_failedFile, BuildConfig.LAUNCHER_NAME);
+ ).arg(m_failedFile, BuildConfig.LAUNCHER_DISPLAYNAME);
doRollback = true;
QMessageBox::critical(m_parent, failTitle, msg);
break;
@@ -399,7 +399,7 @@ void UpdateController::fail()
{
msg = QObject::tr("The rollback failed too.\n"
"You will have to repair %1 manually.\n"
- "Please let us know why and how this happened.").arg(BuildConfig.LAUNCHER_NAME);
+ "Please let us know why and how this happened.").arg(BuildConfig.LAUNCHER_DISPLAYNAME);
QMessageBox::critical(m_parent, rollFailTitle, msg);
qApp->quit();
}
diff --git a/launcher/java/JavaUtils.cpp b/launcher/java/JavaUtils.cpp
index 2f91605b..040fe821 100644
--- a/launcher/java/JavaUtils.cpp
+++ b/launcher/java/JavaUtils.cpp
@@ -174,7 +174,7 @@ JavaInstallPtr JavaUtils::GetDefaultJava()
QStringList addJavasFromEnv(QList<QString> javas)
{
- auto env = qEnvironmentVariable("POLYMC_JAVA_PATHS");
+ auto env = qEnvironmentVariable("PRISMLAUNCHER_JAVA_PATHS"); // FIXME: use launcher name from buildconfig
#if defined(Q_OS_WIN32)
QList<QString> javaPaths = env.replace("\\", "/").split(QLatin1String(";"));
@@ -441,7 +441,7 @@ QList<QString> JavaUtils::FindJavaPaths()
scanJavaDir("/usr/lib/jvm");
scanJavaDir("/usr/lib64/jvm");
scanJavaDir("/usr/lib32/jvm");
- // javas stored in PolyMC's folder
+ // javas stored in Prism Launcher's folder
scanJavaDir("java");
// manually installed JDKs in /opt
scanJavaDir("/opt/jdk");
diff --git a/launcher/main.cpp b/launcher/main.cpp
index 85fe1260..c6a7614c 100644
--- a/launcher/main.cpp
+++ b/launcher/main.cpp
@@ -75,7 +75,7 @@ int main(int argc, char *argv[])
Q_INIT_RESOURCE(multimc);
Q_INIT_RESOURCE(backgrounds);
Q_INIT_RESOURCE(documents);
- Q_INIT_RESOURCE(polymc);
+ Q_INIT_RESOURCE(prismlauncher);
Q_INIT_RESOURCE(pe_dark);
Q_INIT_RESOURCE(pe_light);
diff --git a/launcher/minecraft/Library.h b/launcher/minecraft/Library.h
index 950aec9d..26dbf962 100644
--- a/launcher/minecraft/Library.h
+++ b/launcher/minecraft/Library.h
@@ -194,7 +194,7 @@ public: /* methods */
QString getCompatibleNative(const RuntimeContext & runtimeContext) const;
private: /* methods */
- /// the default storage prefix used by PolyMC
+ /// the default storage prefix used by Prism Launcher
static QString defaultStoragePrefix();
/// Get the prefix - root of the storage to be used
@@ -215,23 +215,23 @@ protected: /* data */
/// DEPRECATED URL prefix of the maven repo where the file can be downloaded
QString m_repositoryURL;
- /// DEPRECATED: PolyMC-specific absolute URL. takes precedence over the implicit maven repo URL, if defined
+ /// DEPRECATED: Prism Launcher-specific absolute URL. takes precedence over the implicit maven repo URL, if defined
QString m_absoluteURL;
- /// PolyMC extension - filename override
+ /// Prism Launcher extension - filename override
QString m_filename;
- /// DEPRECATED PolyMC extension - display name
+ /// DEPRECATED Prism Launcher extension - display name
QString m_displayname;
/**
- * PolyMC-specific type hint - modifies how the library is treated
+ * Prism Launcher-specific type hint - modifies how the library is treated
*/
QString m_hint;
/**
- * storage - by default the local libraries folder in polymc, but could be elsewhere
- * PolyMC specific, because of FTB.
+ * storage - by default the local libraries folder in Prism Launcher, but could be elsewhere
+ * Prism Launcher specific, because of FTB.
*/
QString m_storagePrefix;
diff --git a/launcher/minecraft/MojangVersionFormat.cpp b/launcher/minecraft/MojangVersionFormat.cpp
index e00d2c6e..9bbb4ada 100644
--- a/launcher/minecraft/MojangVersionFormat.cpp
+++ b/launcher/minecraft/MojangVersionFormat.cpp
@@ -214,7 +214,7 @@ void MojangVersionFormat::readVersionProperties(const QJsonObject &in, VersionFi
QObject::tr("The 'minimumLauncherVersion' value of this version (%1) is higher than supported by %3 (%2). It might not work properly!")
.arg(out->minimumLauncherVersion)
.arg(CURRENT_MINIMUM_LAUNCHER_VERSION)
- .arg(BuildConfig.LAUNCHER_NAME)
+ .arg(BuildConfig.LAUNCHER_DISPLAYNAME)
);
}
}
diff --git a/launcher/minecraft/VersionFile.h b/launcher/minecraft/VersionFile.h
index e1b62f6a..11c5a3af 100644
--- a/launcher/minecraft/VersionFile.h
+++ b/launcher/minecraft/VersionFile.h
@@ -62,19 +62,19 @@ public: /* methods */
void applyTo(LaunchProfile* profile, const RuntimeContext & runtimeContext);
public: /* data */
- /// PolyMC: order hint for this version file if no explicit order is set
+ /// Prism Launcher: order hint for this version file if no explicit order is set
int order = 0;
- /// PolyMC: human readable name of this package
+ /// Prism Launcher: human readable name of this package
QString name;
- /// PolyMC: package ID of this package
+ /// Prism Launcher: package ID of this package
QString uid;
- /// PolyMC: version of this package
+ /// Prism Launcher: version of this package
QString version;
- /// PolyMC: DEPRECATED dependency on a Minecraft version
+ /// Prism Launcher: DEPRECATED dependency on a Minecraft version
QString dependsOnMinecraftVersion;
/// Mojang: DEPRECATED used to version the Mojang version format
@@ -86,13 +86,13 @@ public: /* data */
/// Mojang: class to launch Minecraft with
QString mainClass;
- /// PolyMC: class to launch legacy Minecraft with (embed in a custom window)
+ /// Prism Launcher: class to launch legacy Minecraft with (embed in a custom window)
QString appletClass;
/// Mojang: Minecraft launch arguments (may contain placeholders for variable substitution)
QString minecraftArguments;
- /// PolyMC: Additional JVM launch arguments
+ /// Prism Launcher: Additional JVM launch arguments
QStringList addnJvmArguments;
/// Mojang: list of compatible java majors
@@ -110,38 +110,38 @@ public: /* data */
/// Mojang: DEPRECATED asset group to be used with Minecraft
QString assets;
- /// PolyMC: list of tweaker mod arguments for launchwrapper
+ /// Prism Launcher: list of tweaker mod arguments for launchwrapper
QStringList addTweakers;
/// Mojang: list of libraries to add to the version
QList<LibraryPtr> libraries;
- /// PolyMC: list of maven files to put in the libraries folder, but not in classpath
+ /// Prism Launcher: list of maven files to put in the libraries folder, but not in classpath
QList<LibraryPtr> mavenFiles;
- /// PolyMC: list of agents to add to JVM arguments
+ /// Prism Launcher: list of agents to add to JVM arguments
QList<AgentPtr> agents;
/// The main jar (Minecraft version library, normally)
LibraryPtr mainJar;
- /// PolyMC: list of attached traits of this version file - used to enable features
+ /// Prism Launcher: list of attached traits of this version file - used to enable features
QSet<QString> traits;
- /// PolyMC: list of jar mods added to this version
+ /// Prism Launcher: list of jar mods added to this version
QList<LibraryPtr> jarMods;
- /// PolyMC: list of mods added to this version
+ /// Prism Launcher: list of mods added to this version
QList<LibraryPtr> mods;
/**
- * PolyMC: set of packages this depends on
+ * Prism Launcher: set of packages this depends on
* NOTE: this is shared with the meta format!!!
*/
Meta::RequireSet requires;
/**
- * PolyMC: set of packages this conflicts with
+ * Prism Launcher: set of packages this conflicts with
* NOTE: this is shared with the meta format!!!
*/
Meta::RequireSet conflicts;
diff --git a/launcher/minecraft/auth/AccountList.h b/launcher/minecraft/auth/AccountList.h
index 8136a92e..a8c3529a 100644
--- a/launcher/minecraft/auth/AccountList.h
+++ b/launcher/minecraft/auth/AccountList.h
@@ -44,7 +44,7 @@
/*!
* List of available Mojang accounts.
- * This should be loaded in the background by PolyMC on startup.
+ * This should be loaded in the background by Prism Launcher on startup.
*/
class AccountList : public QAbstractListModel
{
diff --git a/launcher/minecraft/auth/MinecraftAccount.h b/launcher/minecraft/auth/MinecraftAccount.h
index 7777f846..0dcaeb53 100644
--- a/launcher/minecraft/auth/MinecraftAccount.h
+++ b/launch