Minecraft Launcher Core
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. https://corona.studio
Featured Launcher
- 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
Name | Usage | Version | Location | Runtime Envrionment |
---|---|---|---|---|
@xmcl/core | Launch Minecraft | packages/core | Node | |
@xmcl/installer | Install Minecraft | packages/installer | Node | |
@xmcl/user | User Authentication and skin | packages/user | Node/Browser | |
@xmcl/mod-parser | Parse forge/liteloader/fabric mod | packages/mod-parser | Node/Browser | |
@xmcl/curseforge | Provide Curseforge API | packages/curseforge | Node/Browser | |
@xmcl/modrinth | Provide Modrinth API | packages/modrinth | Node/Browser | |
@xmcl/forge-site-parser | Parse forge website | packages/forge-site-parser | Node/Browser | |
@xmcl/client | Utilities of Minecraft client network. Ping Minecraft Server | packages/client | Node | |
@xmcl/model | Display player/block model | packages/model | Browser | |
@xmcl/gamesetting | Parse game setting | packages/gamesetting | Node/Browser | |
@xmcl/nbt | Parse NBT | packages/nbt | Node/Browser | |
@xmcl/text-component | Parse and render Minecraft text | packages/text-component | Node/Browser | |
@xmcl/game-data | Load level data or servers.dat | packages/game-data | Node/Browser | |
@xmcl/resourcepack | Parse resource pack | packages/resourcepack | Node/Browser | |
@xmcl/task | Util package to create task | packages/task | Node/Browser | |
@xmcl/system | A fs middleware for browser/node | packages/system | Node/Browser | |
@xmcl/unzip | yauzl unzip wrapper | packages/unzip | Node | |
@xmcl/file-transfer | High performance undici file download implementation | packages/file-transfer | Node | |
@xmcl/nat-api | Port mapping with UPnP and NAT-PMP | packages/nat-api | Node | |
@xmcl/bytebuffer | The bytebuffer module port from bytebuffer.js | packages/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
.
Contribute
See Contribute.md
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!