GitHub Featherrsfeather A Minecraft Server Implementation In Rust

From Imoodle
Jump to: navigation, search

A Minecraft server implementation written in Rust.



Status



The project is still in the early stages. Many features are still unimplemented. We welcome any help!



Minecraft versions supported



Feather supports 1.6.5 clients and world savings. While we do not currently plan to support multiple versions simultaneously, we may 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 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 set of Rust crates providing Minecraft functionality. quill is our currently-in-progress plugin API. Quill plugins were written in Rust. They are compiled to WebAssembly. Feather runs them in a sandboxed WebAssembly VM. feather is the server software that was built on top libcraft, quill.



Performance



Feather is so sparsely implemented that it will make comparisons with vanilla performance very misleading. If you really need them:



- Feather can handle 1,000,000 entities spawned by a plugin before it starts to max out the CPU. The vanilla server won't croak until then. - Feather can support 500 concurrent player connections. Each player must walk in a random order.



These results will change as Feather implements more features. Please take these results with a grain.



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



Running



We offer precompiled binaries for Windows, Linux, and macOS at GitHub Actions. NB: Do NOT use github releases, they are majorly outdated



To run Feather:



- Extract the downloaded archive. - Run the binary. - Linux and macOS:./featherserver in the directory. Windows: double-click featherserver.exe



The server will create configuration files (config.toml), that you can modify.



Feather will automatically generate a new 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. If Feather has not been backed up, do not allow Feather to touch the worlds you love.



Compiling



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



Compiling from source will require the most current stable version Rust. Older Rust versions might be able to compile Feather but are not guaranteed to work.



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



Architecture



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



- Is Feather production ready?



No. There are still many bugs and missing features, and the codebase is not tested enough to make the server production ready.



- How can I contribute?



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



- Are there any other ways I could help?



Yes! Yes. Please submit an issue on our issue tracker if there is anything you don't like.