Return to site

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 features are still unimplemented. We are open to any and all help! Minecraft versions supported Feather supports world saves and clients with 1.16.5. 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. For servers that only need a small amount of vanilla functionality, the limited gameplay features in Feather are not a problem. Feather's modularity is and performance makes it an ideal platform for these types servers. Our current focus is on developing a rich plugin API that will enable these use-cases. Feather could be used in the long-term on larger servers that are more survival-like. Its performance should allow many players concurrently to play on the same world with very little resources. Ecosystem The Feather ecosystem is made up of several repositories. libcraft is a collection of Rust crates that provide Minecraft functionality. quill, our work-in-progress plugin API. Quill plugins are written in Rust and compiled to WebAssembly. Feather runs them on a WebAssembly VM sandboxed. feather, the server software built on top of libcraft and quill. Performance Comparisons to vanilla performance will be extremely misleading, because Feather implements so few features. But they are available if you want them. - Feather can handle 1,000,000 entities spawned by a plugin before it starts to max out the CPU. The vanilla server will croak much sooner. - Feather can manage 500 concurrent player connections. Each player walks in a random way. These results will change as Feather implements more features. Please take these results with a grain. Memory usage in Feather varies according to how many chunks are loaded, and not the player count. In the 500 player test, the server uses ~40 MiB of RAM until the players start to spread out. In the 1,000,000 entities test, it uses 400 MiB of RAM without any chunks loaded. Running We offer precompiled binaries that are compatible with Windows, Linux, or macOS at GitHub actions. NB! Do not use github release, they are very outdated To run Feather Extract the downloaded archive. - Run it. - On Linux and macOS: ./feather-server in the server directory - On Windows: double-click feather-server.exe The server will create configuration files (config.toml), that you can modify. Feather will automatically generate a new world. If you wish to load a vanilla planet, copy the world file to the server directory and name it world (by default). Warning: Feather world persistence is fairly new and will likely cause problems when attempting to open Feather worlds in vanilla. Do not let Feather touch worlds you care about unless they have been backed up. Compiling If you are on another platform, compile the server yourself to try it out: Compiling from source needs the latest stable version Rust. Older Rust versions might be able to compile Feather but are not guaranteed to work. The executable server will be located at target/release Architecture For contributors, we have a work-in-progress explanation of Feather's architecture here. Feather production is now possible Not yet. Minecraft servers There are still many bugs and missing features, and the codebase is not tested enough to make the server production ready. How can you help? Check out our issue tracker to find out what needs to be worked on. Feel free to join our Discord and ask questions whenever you need. We are grateful for your interest to contribute! - Are you looking for other ways to help? Yes! Yes. Please submit an issue on our issue tracker if there is anything you don't like.

Minecraft servers