UNPKG

dmclc

Version:

Dolphin Minecraft Launcher Core

29 lines (28 loc) 1.4 kB
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(); }