Skip to content

Commit 527ad56

Browse files
committed
feat(auth): load Ely and authlib-injector patches from metadata
Signed-off-by: so5iso4ka <so5iso4ka@icloud.com>
1 parent ea258a9 commit 527ad56

21 files changed

Lines changed: 339 additions & 419 deletions

CMakeLists.txt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -201,13 +201,7 @@ set(Launcher_UPDATER_GITHUB_REPO "https://github.com/FreesmTeam/FreesmLauncher"
201201
set(Launcher_BUILD_ARTIFACT "" CACHE STRING "Artifact name to help the updater identify valid artifacts.")
202202

203203
# The metadata server
204-
set(Launcher_META_URL "https://meta.prismlauncher.org/v1/" CACHE STRING "URL to fetch Launcher's meta files from.")
205-
206-
# Ely.by metadata URL
207-
set(Launcher_EPL_META_URL "https://freesmlauncher.org/metadata/epl_metadata.json" CACHE STRING "URL to fetch Ely authlibs metadata")
208-
209-
# Ely.by metadata fallback URL
210-
set(Launcher_EPL_META_FALLBACK_URL "https://raw.githubusercontent.com/FreesmTeam/FreesmLauncher/refs/heads/develop/epl_metadata.json" CACHE STRING "Fallback URL to fetch Ely authlibs metadata")
204+
set(Launcher_META_URL "https://meta.freesmlauncher.org/v1/" CACHE STRING "URL to fetch Launcher's meta files from.")
211205

212206
# Imgur API Client ID
213207
set(Launcher_IMGUR_CLIENT_ID "5b97b0713fba4a3" CACHE STRING "Client ID you can get from Imgur when you register an application")

buildconfig/BuildConfig.cpp.in

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,6 @@ Config::Config()
116116
ELYBY_CLIENT_ID = "@Launcher_ELYBY_CLIENT_ID@";
117117
FLAME_API_KEY = "@Launcher_CURSEFORGE_API_KEY@";
118118
META_URL = "@Launcher_META_URL@";
119-
EPL_META_URL = "@Launcher_EPL_META_URL@";
120-
EPL_META_FALLBACK_URL = "@Launcher_EPL_META_FALLBACK_URL@";
121119
LEGACY_FMLLIBS_BASE_URL = "@Launcher_LEGACY_FMLLIBS_BASE_URL@";
122120

123121
GLFW_LIBRARY_NAME = "@Launcher_GLFW_LIBRARY_NAME@";

buildconfig/BuildConfig.h

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,6 @@ class Config {
175175
*/
176176
QString META_URL;
177177

178-
QString EPL_META_URL;
179-
QString EPL_META_FALLBACK_URL;
180-
181178
QString GLFW_LIBRARY_NAME;
182179
QString OPENAL_LIBRARY_NAME;
183180

epl_metadata.json

Lines changed: 0 additions & 201 deletions
This file was deleted.

launcher/BaseInstance.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -469,7 +469,7 @@ QString BaseInstance::windowTitle() const
469469
}
470470

471471
// FIXME: why is this here? move it to MinecraftInstance!!!
472-
QStringList BaseInstance::extraArguments()
472+
QStringList BaseInstance::extraArguments(AuthSessionPtr session)
473473
{
474474
return Commandline::splitArgs(settings()->get("JvmArgs").toString());
475475
}

launcher/BaseInstance.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ class BaseInstance : public QObject {
168168
void setManagedPack(const QString& type, const QString& id, const QString& name, const QString& versionId, const QString& version);
169169
void copyManagedPack(BaseInstance& other);
170170

171-
virtual QStringList extraArguments();
171+
virtual QStringList extraArguments(AuthSessionPtr session);
172172

173173
/// Traits. Normally inside the version, depends on instance implementation.
174174
virtual QSet<QString> traits() const = 0;

launcher/CMakeLists.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -276,10 +276,12 @@ set(MINECRAFT_SOURCES
276276
minecraft/update/LibrariesTask.cpp
277277
minecraft/update/LibrariesTask.h
278278

279-
minecraft/launch/ApplyLibraryOverrides.cpp
280-
minecraft/launch/ApplyLibraryOverrides.h
279+
minecraft/launch/ApplyLibraryOverride.cpp
280+
minecraft/launch/ApplyLibraryOverride.h
281281
minecraft/launch/ApplyAuthlibInjector.cpp
282282
minecraft/launch/ApplyAuthlibInjector.h
283+
minecraft/launch/ApplyElyPatch.cpp
284+
minecraft/launch/ApplyElyPatch.h
283285
minecraft/launch/ClaimAccount.cpp
284286
minecraft/launch/ClaimAccount.h
285287
minecraft/launch/CreateGameFolders.cpp

launcher/minecraft/MinecraftInstance.cpp

Lines changed: 21 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@
4848
#include "java/JavaVersion.h"
4949

5050
#include "launch/ApplyAuthlibInjector.h"
51-
#include "launch/ApplyLibraryOverrides.h"
5251
#include "launch/LaunchTask.h"
5352
#include "launch/SetDiscordActivity.h"
5453
#include "launch/TaskStepWrapper.h"
@@ -59,6 +58,8 @@
5958
#include "launch/steps/QuitAfterGameStop.h"
6059
#include "launch/steps/TextPrint.h"
6160

61+
#include "minecraft/launch/ApplyAuthlibInjector.h"
62+
#include "minecraft/launch/ApplyElyPatch.h"
6263
#include "minecraft/launch/AutoInstallJava.h"
6364
#include "minecraft/launch/ClaimAccount.h"
6465
#include "minecraft/launch/CreateGameFolders.h"
@@ -71,7 +72,6 @@
7172
#include "minecraft/launch/ReconstructAssets.h"
7273
#include "minecraft/launch/ScanModFolders.h"
7374
#include "minecraft/launch/VerifyJavaInstall.h"
74-
#include "minecraft/ScreenshotsWatcher.h"
7575

7676
#include "minecraft/update/AssetUpdateTask.h"
7777
#include "minecraft/update/FoldersTask.h"
@@ -89,6 +89,8 @@
8989

9090
#include "WorldList.h"
9191

92+
#include "minecraft/ScreenshotsWatcher.h"
93+
9294
#include "AssetsUtils.h"
9395
#include "MinecraftLoadAndCheck.h"
9496
#include "PackProfile.h"
@@ -523,9 +525,9 @@ static QString replaceTokensIn(const QString& text, const QMap<QString, QString>
523525
return result;
524526
}
525527

526-
QStringList MinecraftInstance::extraArguments()
528+
QStringList MinecraftInstance::extraArguments(AuthSessionPtr session)
527529
{
528-
auto list = BaseInstance::extraArguments();
530+
auto list = BaseInstance::extraArguments(nullptr);
529531
auto version = getPackProfile();
530532
if (!version)
531533
return list;
@@ -545,7 +547,11 @@ QStringList MinecraftInstance::extraArguments()
545547
for (const auto& agent : agents) {
546548
QStringList jar, temp1, temp2, temp3;
547549
agent.library->getApplicableFiles(runtimeContext(), jar, temp1, temp2, temp3, getLocalLibraryPath());
548-
list.append("-javaagent:" + jar[0] + (agent.argument.isEmpty() ? "" : "=" + agent.argument));
550+
QString arg = agent.argument;
551+
if (session && agent.library->artifactPrefix() == "moe.yushi:authlibinjector") {
552+
arg = replaceTokensIn(arg, { { "authlib_injector_auth_url", session->authlib_injector_auth_url } });
553+
}
554+
list.append("-javaagent:" + jar[0] + (agent.argument.isEmpty() ? "" : "=" + arg));
549555
}
550556

551557
{
@@ -579,14 +585,14 @@ QStringList MinecraftInstance::extraArguments()
579585
return list;
580586
}
581587

582-
QStringList MinecraftInstance::javaArguments()
588+
QStringList MinecraftInstance::javaArguments(AuthSessionPtr session)
583589
{
584590
QStringList args;
585591

586592
args << "-Duser.language=en";
587593

588594
// custom args go first. we want to override them if we have our own here.
589-
args.append(extraArguments());
595+
args.append(extraArguments(std::move(session)));
590596

591597
// OSX dock icon and name
592598
#ifdef Q_OS_MAC
@@ -667,7 +673,7 @@ QMap<QString, QString> MinecraftInstance::getVariables()
667673
out.insert("INST_DIR", QDir::toNativeSeparators(QDir(instanceRoot()).absolutePath()));
668674
out.insert("INST_MC_DIR", QDir::toNativeSeparators(QDir(gameRoot()).absolutePath()));
669675
out.insert("INST_JAVA", QDir::toNativeSeparators(QDir(settings()->get("JavaPath").toString()).absolutePath()));
670-
out.insert("INST_JAVA_ARGS", javaArguments().join(' '));
676+
out.insert("INST_JAVA_ARGS", javaArguments(nullptr).join(' '));
671677
out.insert("NO_COLOR", "1");
672678
#ifdef Q_OS_MACOS
673679
// get library for Steam overlay support
@@ -1171,8 +1177,8 @@ LaunchTask* MinecraftInstance::createLaunchTask(AuthSessionPtr session, Minecraf
11711177
}
11721178

11731179
// load meta
1180+
auto mode = session->launchMode != LaunchMode::Offline ? Net::Mode::Online : Net::Mode::Offline;
11741181
{
1175-
auto mode = session->launchMode != LaunchMode::Offline ? Net::Mode::Online : Net::Mode::Offline;
11761182
process->appendStep(makeShared<TaskStepWrapper>(pptr, makeShared<MinecraftLoadAndCheck>(this, mode)));
11771183
}
11781184

@@ -1191,13 +1197,15 @@ LaunchTask* MinecraftInstance::createLaunchTask(AuthSessionPtr session, Minecraf
11911197
process->appendStep(step);
11921198
}
11931199

1200+
if (session->wants_ely_patch) {
1201+
process->appendStep(makeShared<ApplyElyPatch>(pptr, m_runtimeContext, mode));
1202+
} else if (session->wants_authlib_injector) {
1203+
process->appendStep(makeShared<ApplyAuthlibInjector>(pptr, m_runtimeContext, mode));
1204+
}
1205+
11941206
// if we aren't in offline mode
11951207
if (session->launchMode != LaunchMode::Offline) {
11961208
process->appendStep(makeShared<ClaimAccount>(pptr, session));
1197-
process->appendStep(makeShared<ApplyLibraryOverrides>(pptr, session));
1198-
if (session->wants_authlib_injector) {
1199-
process->appendStep(makeShared<ApplyAuthlibInjector>(pptr, session));
1200-
}
12011209
for (auto t : createUpdateTask()) {
12021210
process->appendStep(makeShared<TaskStepWrapper>(pptr, t));
12031211
}

launcher/minecraft/MinecraftInstance.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,12 +128,12 @@ class MinecraftInstance : public BaseInstance {
128128
////// Launch stuff //////
129129
QList<Task::Ptr> createUpdateTask() override;
130130
LaunchTask* createLaunchTask(AuthSessionPtr account, MinecraftTarget::Ptr targetToJoin) override;
131-
QStringList extraArguments() override;
131+
QStringList extraArguments(AuthSessionPtr session) override;
132132
QStringList verboseDescription(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin) override;
133133
QList<Mod*> getJarMods() const;
134134
QString createLaunchScript(AuthSessionPtr session, MinecraftTarget::Ptr targetToJoin);
135135
/// get arguments passed to java
136-
QStringList javaArguments();
136+
QStringList javaArguments(AuthSessionPtr session);
137137
QString getLauncher();
138138
bool shouldApplyOnlineFixes();
139139

0 commit comments

Comments
 (0)