Skip to content

ferrumc-rs/ferrumc

Repository files navigation

FerrumC Header

License Code Size Lines of Code Language

Join our Discord&style=for-the-badge

About β€’ Features β€’ Getting Started β€’ Development β€’ License β€’ Acknowledgments

πŸ“– About

FerrumC is a Minecraft server implementation written from the ground up in Rust. Leveraging the power of the Rust programming language, it is completely multi-threaded; and offers high performance as well as amazing memory efficiency!

In-game screenshot

✨ Key Features

  • πŸ›ˆ Customizable server list

    Server list
  • πŸš„ Extremely fast and adaptable update speeds

    Mind boggling
  • πŸ–₯️ Highly efficient memory usage

    Low memory usage
  • πŸ—‚οΈ Customizable configuration

    Configuration
  • πŸ”„ Can import existing worlds from vanilla minecraft

    Configuration
  • 🌐 Compatible with vanilla Minecraft clients (Currently only 1.20.1)

  • πŸ’ͺ Powerful Entity Component System to handle high entity loads

    Entity Component System

    ECS Block Diagram (credits: Unity)

  • πŸ“¦ Fully multithreaded; Utilizes all available CPU cores, instead of a single "main" thread

  • πŸ“ Custom made network and NBT encoding system to allow for minimal I/O lag

  • πŸ’Ύ Lighting fast database to ensure extremely fast world loading speeds

    32 render distance* Chunk Loading DEMO

βœ… Upcoming features

  • Ability to view other players

  • World modification (place / break blocks etc)

  • Chat & Command system

  • Optimizations

  • Plugin support (Javascript, Rust, and other WASM support languages)

πŸš€ Getting Started

Prerequisites

  • Rust compiler (latest nightly version)
  • Cargo (comes with Rust)
  • LLVM (required for RocksDB compilation)

πŸ“₯ Installation

Unfortunately, the server is not yet ready for production use. If you want to try it out, you can compile it from source.

Compile from source (Bleeding edge updates, always up-to-date)

  1. Ensure you have LLVM installed on your system. This is required for RocksDB compilation.

    • The env variable LIBCLANG_PATH must be set to the path of the [LLVM path]/bin.
  2. Clone and build the project.

# Clone the repository
git clone https://github.com/Sweattypalms/ferrumc
cd ferrumc

# Build the project
cargo build --release

The binary will be in target/release/

πŸ–₯️ Usage

  1. Move the FerrumC binary to your desired server directory
  2. Open a terminal in that directory
  3. (Optional) Generate a config file: ./ferrumc --setup
    • Edit the generated config.toml file to customize your server settings
  4. Import an existing world: Place the region files (.mca) in the folder named import then run ./ferrumc --import. The location of these files is explained here.
  5. Run the server:
    • Windows: .\ferrumc.exe
    • Linux/macOS: ./ferrumc

πŸ› οΈ Development

We welcome contributions! If you'd like to contribute to FerrumC, please follow these steps:

  1. Fork the repository
  2. Create a new branch for your feature
  3. Implement your changes
  4. Write or update tests as necessary
  5. Submit a pull request

Join our Discord server to get help or discuss the project!

❔ FAQ

How does this project differ from:

  • Valence: Valence is a framework for building your own custom server by pulling in different components of their library. FerrumC is a fully built server designed to act as a potential replacement for the vanilla server. It's like the difference between buying the ingredients to make a meal yourself or just buying a pre-made meal.
  • Minestom: Same as Valence, it's a framework to build your own server, which is different to what we are trying to do.
  • Paper/Spigot/Bukkit: These are all great tools and have undoubtably set the groundwork for projects like this to exist, but ultimately they are still somewhat bound to the original server implementation. We aim to write the entire server from the ground up, hopefully giving us a leg up.
  • Pumpkin: It really doesn't differ that much. We are both trying to acheive the same thing. It's also not a competition, we are both aware of each other's progress and to be honest the Pumpkin team are doing really well. We won't tolarate any disrespect towards them as they are also undertaking the same monumental task.

πŸ“œ License

This project is licensed under the MIT License - see the LICENSE.md file for details.