An experimental ECS-based voxel simulation engine and framework, primarily focusing on implementing a future-proof, extendable and moddable Minecraft: Java Edition server in C#.
While clients can connect to the server and interact with the world, keep in mind the project is in its very early stage. Player can connect, break/place blocks, use inventories, drop items, use commands, chat and it all will be saved onto disk. It's compatible with MCJE 1.19.4-1.20.1 using a version-agnostic protocol abstraction and we also have modding, including custom blocks and items.
I primarily design it with API in mind first, and optimizations later, but it doesn't mean we're running slow, especially since server supports NativeAOT. It should be easy and straight-forward to create and implement new content, constructing it from a pre-made components or making own ones if necessary. Sample mod got a few examples on how can you use existing ones and how to create your own object components.
- Gamemodes
- Better type mapper
- Refactor version-specific code into Vanilla mod
- Feature parity with Vanilla server
- Entity AI components
- Bedrock Edition support
- Runtime generated resource packs
- More async and multi-threading
- Many many more features and enhancements!
While it's too early to talk about performance, I still find it impressive to be able to show you this demo, which runs an AOT build:
demo.mp4
I will focus on performance after finishing basic feature set.
- Install the .NET 8.0 SDK.
- Clone the repository:
git clone https://github.com/TacoGuyAT/SharpMinerals.git cd SharpMinerals - Build the solution:
dotnet build SharpMinerals.sln
- Run the server:
dotnet run --project SharpMinerals.CLI
- Or run build using NativeAOT:
dotnet publish -p:AOT=true
- Launch Minecraft: Java Edition (version 1.19.4–1.20.1) and connect to
localhost:25565.
To help this project you can open issues, submit code or support me with a small donation.
- MiNET, an amazing MCBE server written in C#. It was the biggest inspiration for this project (and perhaps, think of it as a love letter).
- Arch, an awesome and fast ECS implementation in C#.
- Tyler Kennedy, #mcdevs and minecraft.wiki for protocol documentation.
- PrismarineJS for minecraft-data, like blocks, items, entities, protocol and much more.
- FabricMC for Yarn mappings
- Henrik Kniberg's "Minecraft terrain generation in a nutshell"
- Shukoloton's "The History of Minecraft World Generation"
- HarmonyX for runtime patching
- RocksDB & its C# wrapper
- ZLogger, ZLinq and Kokuban by Cysharp
- Brigadier.NET, a port of Mojang's Brigadier command parsing and dispatching library
- FastCache
Apache License 2.0 — see LICENSE and NOTICE.
Minecraft is a trademark of Mojang Synergies AB. SharpMinerals is an independent project, not affiliated with or endorsed by Mojang or Microsoft.