2.11.4 • Published 1 year ago

@powerm1nt/xmcl-core v2.11.4

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

Launcher Core Module

npm version Downloads Install size npm Build Status

Provide the core function to parse Minecraft version and launch.

Usage

Parse Version JSON

Parse minecraft version as a resolved version, which is used for launching process. You can also read version info from it if you want.

import { Version } from "@powerm1nt/xmcl-core";
const minecraftLocation: string;
const minecraftVersionId: string;

const resolvedVersion: ResolvedVersion = await Version.parse(minecraftLocation, minecraftVersionId);

Diagnose

Get the report of the version. It can check if version missing assets/libraries.

import { MinecraftLocation, diagnose, ResolvedVersion } from "@powerm1nt/xmcl-core";

const minecraft: MinecraftLocation;
const version: string; // version string like 1.13
const resolvedVersion: ResolvedVersion = await Version.parse(minecraft, version);

const report: MinecraftIssueReport = await diagnose(resolvedVersion.id, resolvedVersion.minecraftDirectory);

const issues: MinecraftIssues[] = report.issues;

for (let issue of issues) {
    switch (issue.role) {
        case "minecraftJar": // your jar has problem
        case "versionJson": // your json has problem
        case "library": // your lib might be missing or corrupted
        case "assets": // some assets are missing or corrupted
        // and so on
    }
}

Launch Game

Launch minecraft from a version:

import { launch } from "@powerm1nt/xmcl-core"
const version: string; // full version id, like 1.13, or your forge version like, 1.13-forge-<someForgeVersion>
const javaPath: string; // java executable path
const gamePath: string; // .minecraft path
const proc: Promise<ChildProcess> = launch({ gamePath, javaPath, version });

Detach from the parent process. So your launcher's exit/crash won't affact the Minecraft running.

const proc: Promise<ChildProcess> = Launcher.launch({ gamePath, javaPath, version, extraExecOption: { detached: true } });