Minecraft server software rewritten from scratch in C++23. No JVM.
Basalt is a complete reimplementation of Minecraft: Java Edition server software, written entirely in C++23 and shipped as native binaries. The core needs no JVM installed on the host. Bukkit, Spigot and Paper plugins run through Shim, a JVM in C++ that is built into the binary and only starts when a Java plugin is present.
Two rules decide everything else:
- Vanilla parity. A Basalt server with no plugins behaves exactly like the official one. Same seed, same world. Same drops, same damage, same redstone, bugs included. Parity is the acceptance criterion for every system, not a long-term aspiration.
- No external JVM. Not for a feature, not for compatibility, not for convenience. Where a Java library would normally be reached for, the functionality is written instead.
| Server | The Minecraft server: worlds, entities, gameplay, Lua plugins, Bukkit plugins through Shim, and a REST/WebSocket management API |
| Proxy | The proxy: one address in front of many servers, and it works with any of them, Basalt or not |
| Wire | The network layer both of them build on. One implementation of the protocol, not two |
| Shim | A lightweight, embeddable JVM in C++ targeting modern Java LTS releases, forked from Avian |
| Kiln | Compiler and verifier for Lua plugins |
| DevTools | Editor extensions and API autocompletion for plugin authors |
| Metamorph | World conversion between Anvil and Linear, and upgrades from older versions |
| Quarry | Extracts the data Basalt needs from the official server jar |
| Swarm | Bot swarm and stress testing for Minecraft servers |
| ServerPlugin-Example | A reference plugin for the Server plugin API |
| Website | The project site, at basaltmc.org |
Early development. Most of vanilla's gameplay is in place in the server and Java plugins run, but some systems are still incomplete and little of it has seen long-term use, so back up your worlds before trusting it with a public server. Older Java clients and Bedrock clients are served through translation layers that are still maturing. The proxy relays real connections and switches servers, but has only been exercised on Linux with bots. Shim modernizes its VM core toward Java 25 LTS. Each repository keeps an honest status in its own README, and none of them rounds up.
Native plugins are written in Lua and packaged as single files: .bspkg for the
server, .bppkg for the proxy. They run sandboxed with an instruction budget, so
a broken plugin cannot take a server down, and the same runtime ships everywhere
Basalt runs: the official Lua, built into the binary, with nothing to install
alongside it. Kiln and DevTools cover building and writing them. The server also
runs Bukkit, Spigot and Paper plugins through Shim.
Basalt is distributed under the GNU General Public License v3.0 (Shim and Website are MIT; see individual repositories).
Basalt is not affiliated with Mojang Studios or Microsoft. Minecraft is a trademark of Mojang Studios.