diff options
author | Petr Mrázek <peterix@gmail.com> | 2017-12-03 14:05:35 +0100 |
---|---|---|
committer | Petr Mrázek <peterix@gmail.com> | 2017-12-03 14:05:35 +0100 |
commit | 0a56b562864ce56d14a9657681f221e91dfba129 (patch) | |
tree | 8e4c2fee83c82df453ecc792f265a14b321481b5 | |
parent | 30fad998a6795752911e69906f414bd52c6aa2ad (diff) | |
download | MultiMC-0a56b562864ce56d14a9657681f221e91dfba129.tar MultiMC-0a56b562864ce56d14a9657681f221e91dfba129.tar.gz MultiMC-0a56b562864ce56d14a9657681f221e91dfba129.tar.lz MultiMC-0a56b562864ce56d14a9657681f221e91dfba129.tar.xz MultiMC-0a56b562864ce56d14a9657681f221e91dfba129.zip |
NOISSUE in offline mode, do not contact the auth server if there is a valid account already
-rw-r--r-- | api/logic/minecraft/auth/MojangAccount.cpp | 27 | ||||
-rw-r--r-- | application/LaunchController.cpp | 12 |
2 files changed, 24 insertions, 15 deletions
diff --git a/api/logic/minecraft/auth/MojangAccount.cpp b/api/logic/minecraft/auth/MojangAccount.cpp index f4c628a6..08047438 100644 --- a/api/logic/minecraft/auth/MojangAccount.cpp +++ b/api/logic/minecraft/auth/MojangAccount.cpp @@ -170,8 +170,7 @@ AccountStatus MojangAccount::accountStatus() const return Verified; } -std::shared_ptr<YggdrasilTask> MojangAccount::login(AuthSessionPtr session, - QString password) +std::shared_ptr<YggdrasilTask> MojangAccount::login(AuthSessionPtr session, QString password) { Q_ASSERT(m_currentTask.get() == nullptr); @@ -186,18 +185,28 @@ std::shared_ptr<YggdrasilTask> MojangAccount::login(AuthSessionPtr session, return nullptr; } - if (password.isEmpty()) + if(accountStatus() == Verified && !session->wants_online) { - m_currentTask.reset(new RefreshTask(this)); + session->status = AuthSession::PlayableOffline; + session->auth_server_online = false; + fillSession(session); + return nullptr; } else { - m_currentTask.reset(new AuthenticateTask(this, password)); - } - m_currentTask->assignSession(session); + if (password.isEmpty()) + { + m_currentTask.reset(new RefreshTask(this)); + } + else + { + m_currentTask.reset(new AuthenticateTask(this, password)); + } + m_currentTask->assignSession(session); - connect(m_currentTask.get(), SIGNAL(succeeded()), SLOT(authSucceeded())); - connect(m_currentTask.get(), SIGNAL(failed(QString)), SLOT(authFailed(QString))); + connect(m_currentTask.get(), SIGNAL(succeeded()), SLOT(authSucceeded())); + connect(m_currentTask.get(), SIGNAL(failed(QString)), SLOT(authFailed(QString))); + } return m_currentTask; } diff --git a/application/LaunchController.cpp b/application/LaunchController.cpp index 70b71eaf..2e711933 100644 --- a/application/LaunchController.cpp +++ b/application/LaunchController.cpp @@ -23,18 +23,18 @@ LaunchController::LaunchController(QObject *parent) : Task(parent) void LaunchController::executeTask() { - login(); -} - -// FIXME: minecraft specific -void LaunchController::login() -{ if (!m_instance) { emitFailed(tr("No instance specified")); return; } + login(); +} + +// FIXME: minecraft specific +void LaunchController::login() +{ JavaCommon::checkJVMArgs(m_instance->settings()->get("JvmArgs").toString(), m_parentWidget); // Find an account to use. |