GitHub Featherrsfeather A Minecraft Server Implementation In Rust

From Wifi Adapters DB
Jump to: navigation, search

A Minecraft server implementation written in Rust.



Status



The project is still at an infancy stage. Many, many features remain unimplemented. We welcome any 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.



Mid-term, our goal is to make Feather available on minigame and hub 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. To enable these use cases, our current focus is to build a rich plugin API.



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 includes several repositories.



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



Performance



Feather implements so many features that comparisons with vanilla performance can be misleading. But if you really want them:



Feather can handle 1,000,000 entities generated by a plugin before the CPU starts to overload. Minecraft servers The vanilla server will croak well before that. - Feather can manage 500 concurrent player connections. Each player walks in a random way.



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



Memory usage in Feather depends on the number of loaded chunks and not player counts. 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: Don't use github releases. They are often out of date.



To run Feather:



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



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



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: Featherworld persistence is relatively new and can cause problems when trying to open Feather realms in vanilla. Feather cannot touch the worlds you care about without backing them up.



Compiling



If you are on a different platform, compile the server by yourself to test it out.



Compiling from source requires the latest stable version of Rust. Older Rust version may be able compile Feather, but it is not guaranteed to continue working.



The target/release location will contain the executable for the server.



Architecture



For contributors, we have a work-in-progress explanation of Feather's architecture here.



Feather production ready?



It's not yet. There are many bugs and missing features that still need to be fixed. The codebase is not yet tested enough to allow for server production.



How can I help?



You can check out our issue tracker to see what needs attention. Feel free to join our Discord and ask questions whenever you need. We appreciate your interest in contributing.



- Are there other ways I can help?



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