From 6ede3c13b2bcda315e65dd78f2bfd729bc8b699b Mon Sep 17 00:00:00 2001 From: Zakhar Afonin Date: Fri, 8 May 2020 21:07:34 +0300 Subject: [PATCH] base patch --- api/logic/minecraft/MinecraftInstance.cpp | 3 ++- api/logic/minecraft/auth/AuthSession.cpp | 6 ++++++ application/LaunchController.cpp | 22 +++++++++++++++++++++- 3 files changed, 29 insertions(+), 2 deletions(-) diff --git a/api/logic/minecraft/MinecraftInstance.cpp b/api/logic/minecraft/MinecraftInstance.cpp index 28073edf..912a3829 100644 --- a/api/logic/minecraft/MinecraftInstance.cpp +++ b/api/logic/minecraft/MinecraftInstance.cpp @@ -821,7 +821,8 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt } else { - process->appendStep(new Update(pptr, Net::Mode::Offline)); + process->appendStep(new Update(pptr, Net::Mode::Online)); + // TODO: Separate "cracked" logins (offline from auth servers) from genuine offline logins (no internet) } // if there are any jar mods diff --git a/api/logic/minecraft/auth/AuthSession.cpp b/api/logic/minecraft/auth/AuthSession.cpp index 4e858796..4d54a59c 100644 --- a/api/logic/minecraft/auth/AuthSession.cpp +++ b/api/logic/minecraft/auth/AuthSession.cpp @@ -24,6 +24,12 @@ bool AuthSession::MakeOffline(QString offline_playername) return false; } session = "-"; + // Filling session with dummy data + client_token = "ff64ff64ff64ff64ff64ff64ff64ff64"; + access_token = "ff64ff64ff64ff64ff64ff64ff64ff64"; + // TODO: Fetch actual UUID's from Mojang API so they match with real ones + uuid = QString(QCryptographicHash::hash(offline_playername.toLocal8Bit(), QCryptographicHash::Md5).toHex()); + player_name = offline_playername; status = PlayableOffline; return true; diff --git a/application/LaunchController.cpp b/application/LaunchController.cpp index bebc3db1..43f380a9 100644 --- a/application/LaunchController.cpp +++ b/application/LaunchController.cpp @@ -36,6 +36,26 @@ void LaunchController::login() { JavaCommon::checkJVMArgs(m_instance->settings()->get("JvmArgs").toString(), m_parentWidget); + // Mojang account login bypass + QString usedname = "Player"; + QString name = QInputDialog::getText(m_parentWidget, tr("Player name"), + tr("Choose your offline mode player name."), + QLineEdit::Normal, "Player", &ok); + if (!ok) + { + return; + } + if (name.length()) + { + usedname = name; + } + m_session = std::make_shared(); + m_session->MakeOffline(usedname); + + launchInstance(); + + // Original login code + /* // Find an account to use. std::shared_ptr accounts = MMC->accounts(); MojangAccountPtr account = accounts->activeAccount(); @@ -182,7 +202,7 @@ void LaunchController::login() } } } - emitFailed(tr("Failed to launch.")); + emitFailed(tr("Failed to launch."));*/ } void LaunchController::launchInstance()