Skip to content

Minecraft Launcher Core

npmBuild StatusConvensional CommitsDiscord

Provide several useful functions to build a Minecraft Launcher.

Most packages are targeting the Electron environment. Feel free to report issues related to it.

Looking for C# Launcher Core?

Introduce the awesome .net framework launcher core, ProjBobcat.

It's the next generation Minecraft launcher core written in C# providing the freest, fastest and the most complete experience.

  • x-minecraft-launcher: An launcher provides general electron api related to minecraft launching (in renderer side), making other developers can easily create new launcher view.
  • PureLauncher: An awesome Minecraft Launcher using React to build beautiful UI.

Getting Started

You can see Active Packages section to quickly find a package you need.

Go our document website to find more detail usage.

Active Packages

NameUsageVersionLocationRuntime Envrionment
@xmcl/coreLaunch Minecraftnpm versionpackages/core Node
@xmcl/installerInstall Minecraftnpm versionpackages/installer Node
@xmcl/userUser Authentication and skinnpm versionpackages/user Node/Browser
@xmcl/mod-parserParse forge/liteloader/fabric modnpm versionpackages/mod-parser Node/Browser
@xmcl/curseforgeProvide Curseforge APInpm versionpackages/curseforge Node/Browser
@xmcl/modrinthProvide Modrinth APInpm versionpackages/modrinth Node/Browser
@xmcl/forge-site-parserParse forge websitenpm versionpackages/forge-site-parserNode/Browser
@xmcl/clientUtilities of Minecraft client network. Ping Minecraft Servernpm versionpackages/client Node
@xmcl/modelDisplay player/block modelnpm versionpackages/model Browser
@xmcl/gamesettingParse game settingnpm versionpackages/gamesetting Node/Browser
@xmcl/nbtParse NBTnpm versionpackages/nbt Node/Browser
@xmcl/text-componentParse and render Minecraft textnpm versionpackages/text-component Node/Browser
@xmcl/game-dataLoad level data or servers.datnpm versionpackages/game-data Node/Browser
@xmcl/resourcepackParse resource packnpm versionpackages/resourcepack Node/Browser
@xmcl/taskUtil package to create tasknpm versionpackages/task Node/Browser
@xmcl/systemA fs middleware for browser/nodenpm versionpackages/system Node/Browser
@xmcl/unzipyauzl unzip wrappernpm versionpackages/unzip Node
@xmcl/file-transferHigh performance undici file download implementationnpm versionpackages/file-transfer Node
@xmcl/nat-apiPort mapping with UPnP and NAT-PMPnpm versionpackages/nat-api Node
@xmcl/bytebufferThe bytebuffer module port from bytebuffer.jsnpm versionpackages/bytebuffer Node/Browser

Comsuming the Packages with bundlers

The whole project use typescript and esbuild to build. It will build both esm and commonjs version js files. Some modules can be used in browser, and they will have browser version built.

Nowaday, the bundler should all support reading the module field in package.json and use the esm version. If you are using webpack, you can use the resolve.mainFields option to specify which field to use.

From my experience, the esbuild and vite works pretty fine with current package.json.



Special Thanks

yushijinhun, the author of JMCCC which inspire this library.

Indexyz, helped me a lot on Minecraft launching, authing.

And all of contributors of this repo!

Released under the MIT License.