/java-edition

🚧 A modular Kotlin and Rust-based Minecraft: Java Edition network inspired by Mineclub, Origin Realms and Wynncraft

Primary LanguageKotlinOtherNOASSERTION

⚠️ The Hexalite project is highly experimental, so bugs and possibly codebase and texture changes are expected. Contributions and bug tracking are welcome and gladly accepted. You can also join our Discord community to interact with the art and development teams.

Summary

Hexalite Network is an open-source modular network of Minecraft: Java Edition servers inspired by Mineclub, Wynncraft and Origin Realms. This project aims to bring the best experience possible to players without the need of mods.

📚 Table of contents

💻 Technologies

All of our Minecraft servers are built on top of the Purpur server software, proxied by Velocity. We also use PostgreSQL as our database, and use Redis for our multiserver caching and session system. We usually make a request to our rest webservers instead of directly accessing the database in multiple servers to avoid unsynchronization or/and loss of data, and for communications we use RabbitMQ. We also appreciate the work and we are very grateful to the various open source libraries used in the project which you can find here.

Contributors


Pedro Henrique

💻

Gabriel

💻

Breno S.

💻

Herocrife

🎨

🏟️ Running locally

If you are interesting in contributing, please make sure to read our [contribution guide][contribution-guide] and join our Discord community for further information and interaction with the developers and artists, and whoever knows what they are doing.

Prerequisites

  • Install the Java Development Kit. We recommend using the IBM's Semeru for the OpenJ9 virtual machine and Eclipse's Adoptium for the Hotspot VM. We recommend installing both though.
  • Install the latest nightly build of Rust.
  • Install Docker and Docker Compose for setting up the development environment in an easier way.
  • Install ProtoBuf's protoc locally and add it to the $PATH.

Building the applications

  • Compile the command-line interface first by going to the cli directory then running cargo build --release. This will generate a binary in cli/target/release/hexalite that will be referenced soon as hexalite for simplicity. You can add it to the $PATH on UNIX-like environments by running the scripts/apply_cli.sh script.
  • Link the required components to the ~/.hexalite folder by running hexalite init. This is required for getting all server resources internally without any dumb workarounds.

Command-line tool explanation

A explanation of every subcommand in the command-line tool can be obtained by running the hexalite help command.

🏗️ Project structure

This section will cover the project structure and the files that are used in the project.

  • arcade/* - Every single game the Minecraft server has.
  • cli/* - The command-line interface.
  • branding - Assets related to the Hexalite branding.
  • common* - Common files that are used by multiple components.
  • docker - Compose files for Docker, for an easier setup of the development environment.
  • docs - Documentation for features used in this project.
  • kraken - A library for easier Minecraft development.
  • resource-pack - The source code for the resource pack generator. Output is located at resource-pack/out.
  • rest-webserver - The REST webserver for the server.
  • rest-webclient - A consumer library for the REST webserver.
  • reusable-plugins - A collection of reusable plugins for the server.
  • web - The web interface for the server.
  • run - A development environment for a Purpur setup.

💸 Supporting

Starring the repository

If you do not want to help us with money, you can just star the repository, it still means a lot to us!

Donations

You can support us by the GitHub sponsors program (pending) or on OpenCollective.

🎉 Third party

We depend on many third party libraries and applications, a complete list can be found here.

📜 Licensing

To know about the license of this project, you can read the LICENSE.md file.