From 21da6d89658aef25c1def27dc5fa2c4055e6a6f9 Mon Sep 17 00:00:00 2001 From: Shokara Date: Mon, 4 Jan 2021 20:05:46 -0500 Subject: add offline account support I added the offline patch from my MultiMC repo[1]. The only change I made compared to my fork was adding an extra sentence in the account adder dialog that the password needs to be blank for an offline account. Signed-off-by: Shokara --- api/logic/minecraft/MinecraftInstance.cpp | 2 +- api/logic/minecraft/auth/MojangAccount.cpp | 15 +++++++++++++++ api/logic/minecraft/auth/MojangAccount.h | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) (limited to 'api/logic/minecraft') diff --git a/api/logic/minecraft/MinecraftInstance.cpp b/api/logic/minecraft/MinecraftInstance.cpp index 28073edf..4617b09f 100644 --- a/api/logic/minecraft/MinecraftInstance.cpp +++ b/api/logic/minecraft/MinecraftInstance.cpp @@ -821,7 +821,7 @@ shared_qobject_ptr MinecraftInstance::createLaunchTask(AuthSessionPt } else { - process->appendStep(new Update(pptr, Net::Mode::Offline)); + process->appendStep(new Update(pptr, Net::Mode::Online)); } // if there are any jar mods diff --git a/api/logic/minecraft/auth/MojangAccount.cpp b/api/logic/minecraft/auth/MojangAccount.cpp index 657e0009..28f31266 100644 --- a/api/logic/minecraft/auth/MojangAccount.cpp +++ b/api/logic/minecraft/auth/MojangAccount.cpp @@ -19,6 +19,7 @@ #include "flows/RefreshTask.h" #include "flows/AuthenticateTask.h" +#include #include #include #include @@ -103,6 +104,20 @@ MojangAccountPtr MojangAccount::createFromUsername(const QString &username) return account; } +MojangAccountPtr MojangAccount::createFromUsernameOffline(const QString &username) +{ + MojangAccountPtr account(new MojangAccount()); + account->m_clientToken = "ff64ff64ff64ff64ff64ff64ff64ff64"; + account->m_accessToken = "ff64ff64ff64ff64ff64ff64ff64ff64"; + account->m_username = username; + QList profiles; + QString uuid = QCryptographicHash::hash(username.toLocal8Bit(), QCryptographicHash::Md5).toHex(); + profiles.append({uuid, username, false}); + account->m_profiles = profiles; + account->setCurrentProfile(uuid); + return account; +} + QJsonObject MojangAccount::saveToJson() const { QJsonObject json; diff --git a/api/logic/minecraft/auth/MojangAccount.h b/api/logic/minecraft/auth/MojangAccount.h index 7006435e..92679076 100644 --- a/api/logic/minecraft/auth/MojangAccount.h +++ b/api/logic/minecraft/auth/MojangAccount.h @@ -77,6 +77,9 @@ public: /* construction */ //! Creates an empty account for the specified user name. static MojangAccountPtr createFromUsername(const QString &username); + //! Creates an offline account for the specified user name. + static MojangAccountPtr createFromUsernameOffline(const QString &username); + //! Loads a MojangAccount from the given JSON object. static MojangAccountPtr loadFromJson(const QJsonObject &json); -- cgit v1.2.3