Skip to content

Targets

A Target is the pinned, fully-resolved combination of:

  • a Minecraft version (with parsed manifest),
  • a loader (vanilla / Fabric / Forge),
  • a Mojang Java runtime,
  • a directory.

The Target is the unit that every other API consumes. Build one with kit.targets.create (from already-resolved components) or kit.targets.resolve (sugar that resolves everything in one call).

Resolve

ts
const target = await kit.targets.resolve({
  id: "fabric-client",
  directory: "./minecrafts/fabric-client",
  minecraft: { version: "1.20.1" },
  loader: { type: Loaders.FABRIC, preference: VersionPreference.LATEST },
  runtime: { preference: RuntimePreference.RECOMMENDED },
});

latest / recommended / auto are inputs to the resolver. Once the call returns, the target carries concrete versions only — there is no “latest” inside a resolved target.

Create from resolved components

ts
const target = kit.targets.create({
  id,
  directory,
  minecraft,   // ResolvedMinecraft
  loader,      // Loader
  runtime,     // ResolvedRuntime
});

This shape is preferred when you already resolved the components separately (e.g. to show a preview to the user).

List

ts
const installed = await kit.targets.list({ rootDir: "./minecrafts" });

list() answers exactly one question: what is on disk? It scans rootDir for sub-folders that look like Minecraft installations (presence of versions/ plus libraries/ or assets/) and returns the version IDs and loader hints it found. It does not check for correctness, completeness, or repair state — for that, use kit.verify.run.

MIT License