Provide the core function to parse Minecraft version and launch.
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 "@xmcl/core";
const minecraftLocation: string;
const minecraftVersionId: string;
const resolvedVersion: ResolvedVersion = await Version.parse(minecraftLocation, minecraftVersionId);Launch minecraft from a version:
import { launch } from "@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 } });For newer Minecraft versions, use the quickPlayMultiplayer option to directly connect to a server:
import { launch, createQuickPlayMultiplayer } from "@xmcl/core"
// Option 1: Use quickPlayMultiplayer directly
const proc = launch({
gamePath,
javaPath,
version,
quickPlayMultiplayer: 'play.hypixel.net:25565'
});
// Option 2: Use helper function
const proc = launch({
gamePath,
javaPath,
version,
quickPlayMultiplayer: createQuickPlayMultiplayer('mc.example.com', 8080)
});For backward compatibility, the legacy server option is still supported:
// Legacy server option (still works)
const proc = launch({
gamePath,
javaPath,
version,
server: { ip: 'play.hypixel.net', port: 25565 }
});Both quickPlayMultiplayer and server options can be used together for compatibility:
// Both options together for compatibility
const proc = launch({
gamePath,
javaPath,
version,
quickPlayMultiplayer: 'play.hypixel.net:25565',
server: { ip: 'play.hypixel.net', port: 25565 }
});