Minecraft Rust Edition is an experiment to build a modular, 1:1 Minecraft client in Rust.
These describe what the project is aiming for, not guarantees or a roadmap.
-
Drop-In Client Replacement MCRE is intended to behave like the Minecraft Java Edition client, without requiring changes to existing servers, resource packs, or player workflows.
-
Native Resource Pack Support Standard Minecraft texture packs and resource packs should load and work as-is, with no conversion steps or special tooling.
-
Shader Compatibility via Transpilation The client will attempt to support existing Minecraft shader packs by transpiling them to WGSL at runtime.
- This is experimental and explicitly best-effort.
- Some shaders may render incorrectly or not at all, depending on complexity and hardware limits.
-
Vanilla Parity The goal is functional equivalence with Minecraft Java Edition: mechanics, rendering behavior, and gameplay semantics should match as closely as practical.
Reproducing every historical bug is very intentionally out of scope.
-
Protocol Compatibility The client should be able to speak the vanilla Minecraft network protocol without extensions or custom patches.
MCRE is early and experimental. These are constraints on how the code is written, not promises about what already exists.
They exist to keep the project technically honest while things are still flexible.
-
no_stdwhere it makes sense Core crates should avoid OS dependencies unless they are genuinely required. Ifstdisn’t pulling its weight, it shouldn’t be there. -
Platform-agnostic by default Core game logic should not care whether it’s running on desktop, web, or something more exotic. Platform-specific concerns (filesystem, networking backends, windowing) live behind traits.
Example: a storage abstraction that maps to
std::fson desktop and OPFS on the web. -
Modular, not monolithic The project is split into small, focused crates. You should be able to use the protocol layer or core game logic without pulling in rendering, audio, or windowing.
-
Performance matters early Rust is a deliberate choice. The code should avoid accidental overhead and prefer simple, predictable data layouts. Clarity still beats micro-optimizations until profiling proves otherwise.
-
Readable code beats clever code APIs should be boring, explicit, and easy to reason about. If something is hard to understand, that’s a design problem. Documentation and comments are treated as part of the architecture.
-
Extensibility isn’t an afterthought The original Minecraft client is famously rigid. MCRE tries to avoid baking in that inflexibility from the start. Clean boundaries, hooks, and replaceable systems are preferred, even if they add some upfront complexity.
MCRE is open-source software released under the MIT License.