GitHub – Feather-rs/feather: A Minecraft Server Implementation In Rust


A Minecraft server implementation written in Rust.



Status



The project is still in the early stages. Many, many features remain unimplemented. We are open to any and all help!



Minecraft versions supported



Feather supports 1.6.5 clients and world savings. We don’t currently plan on supporting multiple versions at once but we may look into this in the future.



Goals



The Feather project aims to provide a Minecraft server that is fast, modular, and paired with an ergonomic plugin API.



Our mid-term goal is to make Feather usable on hub and minigame servers. The limited set of gameplay features available in Feather is not a problem for such servers that require a small subset of vanilla functionality. Feather’s modularity as well as performance make it a good choice for these types of servers. Our current focus is on developing a rich plugin API that will enable these use-cases.



Feather could eventually be used on larger servers with survival-like functions. This will allow for many players to play simultaneously in the same world without consuming too much resources.



Ecosystem



The Feather ecosystem has several repositories.



libcraft, a collection Rust-crates that provides Minecraft functionality. quill is our currently-in-progress plugin API. Quill plugins are written in Rust and compiled to WebAssembly. Feather runs them in a sandboxed WebAssembly VM. feather is the server-software built on top of quill and libcraft.



Performance



Feather has so few features that comparisons to vanilla performance are extremely misleading. But you can have them if you really need them.



Feather can handle 1,000,000 entities generated by a plugin before the CPU starts to overload. The vanilla server will croak well before that. – Feather can support 500 concurrent player connections. Each player must walk in a random order.



These results will change after more features are implemented in Feather, so take them with a grain of salt.



Memory usage in Feather is proportional to the number of loaded chunks, not player counts. In the 500 player test, the server uses ~40 MiB of RAM until the players start to spread out. It uses 400MiB of RAM for the 1,000,000 entities testing without any chunks.



Running



We offer precompiled binaries to Windows, Linux, and macOS through GitHub Actions. NB: Don’t use github releases. They are often out of date.



To run Feather:



Extract the downloaded archive. – Run the binary. – Linux and macOS:./feather_server in the server directory. – Windows: Double-click feather-server.exe



The server will create the configuration file (config.toml), which can be modified by you.



Feather will automatically create a world. If you want to load a vanilla world, copy the world save to the server directory under the name “world” (by default).



Warning: Feather world persistence is fairly new and will likely cause problems when attempting to open Feather worlds in vanilla. Feather cannot touch the worlds you care about without backing them up.



Compiling



If you are using another platform, compile it yourself to give it a try.



Compiling from source will require the most current stable version Rust. Older Rust versions may be able to compile Feather, but they are not guaranteed to keep working.



The server executable will be located in target/release.



Architecture



For contributors, you can find a work-in progress explanation of Feather’s Architecture here.



– Is Feather production ready?



Not yet. There are many bugs and missing features that still need to be fixed. https://minecraft-servers.site/ The codebase is not yet tested enough to allow for server production.



– How can I contribute?



Check out our issue tracker for information on what needs to change. Feel free to join our Discord, ask questions whenever and wherever you need. Thanks for your interest in contributing!



– Are there any other ways I could help?



Yes! Yes. If you find anything that doesn’t seem right to you, please submit an issue on the issue tracker.

Leave a comment

Design a site like this with WordPress.com
Get started