
Valence: Building Minecraft Servers with Rust
valence (valence-rs/valence)
A Rust framework for building Minecraft servers.
If you've ever wondered what it'd be like to build a Minecraft server from the ground up instead of modifying existing software, Valence gives you that chance. It's a Rust framework that treats a Minecraft server like a blank canvas, letting you write custom game logic without carrying around a ton of legacy code.
What This Project Does
Valence is a framework for creating Minecraft: Java Edition servers entirely in Rust. Instead of extending Bukkit, Spigot, or Fabric (the usual paths), you're working with a from-scratch implementation powered by Bevy ECS, an entity-component system game engine. Think of it like this: most Minecraft server software started by copying the original game and patching plugins on top. Valence starts with nothing and you add only what you need.
The project handles the Minecraft protocol layer for you - networking, authentication, encryption, compression. It doesn't dictate gameplay. You could build a parkour minigame server, a creative-building sandbox, a role-playing world, or something that barely resembles vanilla Minecraft. The framework gets out of your way and lets you define the rules.
Why You'd Want This
Most Minecraft server creators reach for Spigot or Paper because they're familiar and have ten thousand plugins. That makes sense if you want vanilla gameplay with some tweaks. But if you're building something custom - especially minigame servers or highly unusual game modes - you're fighting an uphill battle. You're disabling vanilla mechanics, fighting with plugin conflicts, and dealing with performance compromises from features you'll never use.
With Valence, you skip all that friction. Since you're writing Rust directly, you get:
- Explicit control over what runs on your server (no bloat)
- Strong type safety that catches bugs at compile time instead of runtime
- Access to Bevy's plugin ecosystem for extending functionality
- Potential for extremely efficient resource usage - Valence is designed to support thousands of players simultaneously on reasonable hardware
This is also a smart choice if you're experimenting with novel server architectures or want to understand the Minecraft protocol deeply. You're not learning how to work around someone else's decisions; you're learning how the protocol actually works.
Getting Started with Valence
You'll need Rust installed. If you don't have it, grab it from rustup.rs.

curl - proto '=https' - tlsv1.2 -sSf https://sh.rustup.rs | shNext, create a new Cargo project:
cargo new my_minecraft_server
cd my_minecraft_serverAdd Valence to your Cargo.toml:
[dependencies]
valence = "0.1"
bevy = { version = "0.14", default-features = false }The Valence GitHub repository includes examples that show off basic server setup. One learning curve is real though - you're not clicking toggles in a GUI. You're reading Rust and understanding how entities, chunks, and players interact in the ECS model. Plan on spending time with the documentation and examples before your first working server.
Features That Matter
Authentication and security are built in. Valence handles the Minecraft login sequence (including Mojang's session servers if you want online mode) and encryption automatically. You don't get to accidentally skip TLS or accept invalid logins. The framework makes it hard to do the wrong thing.

The protocol abstraction is full. Chunk rendering? Handled. Block states? Covered. Entity metadata, particles, inventories, dimensions, biomes - it's all there. The project includes a Fabric mod that extracts Minecraft's data (block properties, item types, etc.) and generates Rust code from it. You're not hardcoding Minecraft's rules; you're letting the framework generate them.
There's built-in support for spatial queries. Want to find all entities within a 50-block radius? The framework uses a bounding volume hierarchy to do that efficiently, not a naive search. For servers with lots of entities this matters.
Player skins render correctly. Whitelistings work. Multiple worlds and dimensions are supported. If you've ever run a server, you know these aren't small features - they're foundational pain points on every platform.
What You Should Know Before Diving In
Valence is early in development (version 0.1.0). Breaking changes happen. Features are incomplete. You might hit gaps where the framework doesn't quite do what you need yet, forcing you to work around something or contribute back. That's the tradeoff with fresh projects - less polish, but more flexibility to shape where it goes.

The Rust learning curve matters. If you've never written Rust, Valence is a steep entry point. The compiler is strict in ways that feel annoying until you realize it's catching entire classes of bugs. But the initial friction is real.
Deployment is different from traditional Minecraft hosting. You're building a binary, not running a Java JAR on existing infrastructure. That actually simplifies things in some ways (no JVM tuning, lower memory overhead) but complicates things in others (you need to compile for your target architecture, manage Rust dependencies).
Actually, here's something worth noting: if you're building a server for thousands of players, Valence's efficiency is a huge advantage. You won't necessarily need the same beefy hardware a Paper server would need. But if you're hosting 20 friends, this advantage doesn't matter. Pick the right tool for your scale.
Integrating with Your Server Ecosystem
If you're running a production Minecraft server, you probably use tools like server status checkers to monitor uptime and player counts. Valence can expose these metrics through standard monitoring APIs. There's also proxy support - you can sit Valence behind Velocity or Bungeecord, letting players connect through a proxy layer for smooth server-hopping.
For administrative tasks like managing whitelists, you can integrate with standard tools. Many communities use whitelist creation utilities to streamline onboarding. Valence's modular design means you can build these admin features as plugins.
How Valence Compares
If you're debating between Valence and something like Paper, you're asking different questions. Paper is "how do I add features to vanilla Minecraft?" Valence is "what if I built a server from scratch?" They're not competitors; they're different choices for different goals.
Against Velocity (a proxy), Valence isn't a replacement - it's a backend. Velocity handles routing players between servers; Valence handles individual servers.
There are other Minecraft server frameworks in Rust (like Feather), but Valence's use of Bevy ECS and its focus on being a proper game engine framework (rather than just a protocol implementation) sets it apart. You're not just getting server code; you're getting a foundation for building complex game systems.
Is This Worth Your Time?
Valence makes sense if:
- You're building a custom minigame or novel game mode that fights vanilla server software
- You want to understand how Minecraft servers actually work
- You're comfortable with Rust and want to use its safety guarantees
- You need extreme efficiency for high player counts
It doesn't make sense if you just want to run vanilla with a few plugin tweaks. Reach for Paper for that.
The community around Valence is small but active. That maintainers are responsive. If you're considering this, join the Discord and see what others are building. Real projects are happening - people are shipping minigame servers on top of Valence and sharing what they learn.
valence-rs/valence - MIT, ★3206

