dmclc
Version:
Dolphin Minecraft Launcher Core
29 lines (28 loc) • 1.4 kB
JavaScript
import got from "got";
import { checkAndDownload } from "../utils/downloads.js";
import { YggdrasilAccount } from "./yggdrasil/yggdrasil_account.js";
export class AuthlibInjectorAccount extends YggdrasilAccount {
async login() {
this.data.apiurl = await getRealApiUrl(await this.launcher.askUserOne("accounts.authlib_injector.apiurl"));
return await super.login();
}
async prepareLaunch(versionDir) {
const obj = await got("https://bmclapi2.bangbang93.com/mirrors/authlib-injector/artifact/latest.json").json();
const sha256 = obj.checksums.sha256;
const path = `${versionDir}/authlib-injector-latest.jar`;
return await checkAndDownload(obj.download_url, path, sha256, this.launcher, "sha256");
}
async getLaunchJVMArgs(mc) {
const content = (await got(this.data.apiurl)).body;
return [`-javaagent:${mc.extras.enableIndependentGameDir ? "../.." : "."}/authlib-injector-latest.jar=${this.data.apiurl}`, `-Dauthlibinjector.yggdrasil.prefetched=${Buffer.from(content).toString("base64")}`];
}
toString() {
return `${this.data.name} (${this.data.serverName})`;
}
}
async function getRealApiUrl(input) {
const api = (await got.get(input)).headers["x-authlib-injector-api-location"];
if (api instanceof Array || api === undefined)
return input;
return new URL(api, input).toString();
}