UNPKG

@origami-minecraft/devbuilds

Version:

Origami is a terminal-first Minecraft launcher that supports authentication, installation, and launching of Minecraft versions โ€” with built-in support for Microsoft accounts, mod loaders, profile management, and more. Designed for power users, modders, an

99 lines โ€ข 4.28 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.installFabricViaExecutor = installFabricViaExecutor; const axios_1 = __importDefault(require("axios")); const inquirer_1 = __importDefault(require("inquirer")); const ora_1 = __importDefault(require("ora")); const path_1 = __importDefault(require("path")); const minecraft_versions_1 = require("../../../utils/minecraft_versions"); const download_1 = require("../../../utils/download"); const common_1 = require("../../../utils/common"); const executor_1 = require("../../../tools/executor"); const launcher_1 = __importDefault(require("../../../tools/launcher")); const handler_1 = require("../../launch/handler"); const metadata = { name: 'Fabric', description: 'A lightweight, experimental modding toolchain for Minecraft.', author: 'FabricMC' }; const FABRIC_META = 'https://meta.fabricmc.net/v2'; const FABRIC_MAVEN = `https://maven.fabricmc.net`; const INSTALLER_DIR = path_1.default.join((0, common_1.localpath)(true), 'fabric-client'); async function getLatestInstaller() { const res = await axios_1.default.get(`${FABRIC_META}/versions/installer`); const latest = res.data.find((v) => v.stable); return latest.version; } async function getAvailableLoaders() { const res = await axios_1.default.get(`${FABRIC_META}/versions/loader`); return res.data.map((v) => v.version); } async function getInstallerJarUrl(installerVersion) { return `${FABRIC_MAVEN}/net/fabricmc/fabric-installer/${installerVersion}/fabric-installer-${installerVersion}.jar`; } async function installFabricViaExecutor() { const spinner = (0, ora_1.default)('๐Ÿงต Preparing Fabric installation...').start(); try { const manifest = await (0, minecraft_versions_1.fetchMinecraftVersionManifest)(); const latestMC = manifest.latest.release; spinner.stop(); const minecraftVersion = await (0, minecraft_versions_1.askForVersion)(manifest.versions, latestMC); const loaderVersions = await getAvailableLoaders(); const { loaderVersion } = await inquirer_1.default.prompt([ { type: 'list', name: 'loaderVersion', message: '๐Ÿงต Pick Fabric loader version:', choices: loaderVersions, loop: false } ]); const installerVersion = await getLatestInstaller(); const jarUrl = await getInstallerJarUrl(installerVersion); const jarName = `fabric-installer-${installerVersion}.jar`; const jarPath = path_1.default.join(INSTALLER_DIR, jarName); (0, common_1.cleanDir)(INSTALLER_DIR); (0, common_1.ensureDir)(INSTALLER_DIR); spinner.text = '๐Ÿ“ฆ Downloading Fabric installer...'; spinner.stop(); await (0, download_1.downloader)(jarUrl, jarPath); spinner.text = '๐Ÿš€ Executing Fabric installer...'; (0, common_1.waitForFolder)(metadata, minecraftVersion).then(versionFolder => { const profileManager = new launcher_1.default(); const versionId = path_1.default.basename(versionFolder); profileManager.addProfile(versionId, minecraftVersion, versionId, metadata, versionId, metadata.name); }); spinner.stop(); await (0, executor_1.run)(jarPath, [ 'client', `-snapshot`, `-dir`, (0, common_1.minecraft_dir)(), `-mcversion`, minecraftVersion, `-loader`, loaderVersion ]); spinner.succeed('๐ŸŽ‰ Fabric installed successfully!'); return { name: metadata.name, version: minecraftVersion, url: jarUrl, client: { dir: INSTALLER_DIR, jar: jarName } }; } catch (err) { spinner.fail('โŒ Failed to install Fabric.'); handler_1.logger.error(err.message || err); return null; } } // Run if invoked directly if (require.main === module) { installFabricViaExecutor(); } exports.default = { metadata, get: installFabricViaExecutor, }; //# sourceMappingURL=fabric.js.map