Giter Site home page Giter Site logo

srgaabriel / java-edition Goto Github PK

View Code? Open in Web Editor NEW

This project forked from warpedvoxels/java-edition

0.0 0.0 0.0 1.23 MB

๐Ÿšง A modular Kotlin and Rust-based Minecraft: Java Edition network of servers inspired by Mineclub, Origin Realms and Wynncraft

Home Page: https://discord.hexalite.org

License: Other

Shell 1.66% JavaScript 0.20% Java 0.34% Rust 54.32% Kotlin 43.41% CSS 0.01% HTML 0.06% Vue 0.02%

java-edition's Introduction


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

  1. ๐Ÿ’ป Technologies / Project stack
  2. โœจ Contributors
  3. ๐Ÿ’ธ Supporting
  4. ๐ŸŸ๏ธ Contributing / Running locally
  5. ๐Ÿ—๏ธ Project structure
  6. ๐ŸŽ‰ Third party
  7. ๐Ÿ“œ Licensing

๐Ÿ’ป Technologies

The technology stack in this project is pretty straightforward and consists mainly of Rust and Kotlin when talking about programming languages. For transferring data between modules, we use a gRPC server based on prost over the CBOR binary format and compressed data. It is used for requesting data, and communicating between other stuff over RabbitMQ. Every Minecraft server on Hexalite is running on top of the Purpur server software, proxied by Velocity. Purpur is a great alternative for Paper, providing a lot of new features, such as mechanics, performance improvements and useful API changes.

This is subject to change, since this type of infrastructure can improve over time. If you are interested in discussing this or any other technology topics, feel free to join our Discord server to chat with our development and artistic team.

โœจ Contributors


Pedro Henrique

๐Ÿ’ป ๐Ÿš‡ ๐Ÿ‘€ ๐Ÿ“– ๐ŸŒ

Gabriel

๐Ÿ’ป ๐ŸŒ

Breno S.

๐Ÿ’ป ๐ŸŒ

Luis

๐Ÿ’ป

Herocrife

๐ŸŽจ

๐ŸŸ๏ธ Contributing / running locally

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

Prerequisites

IMPORTANT! A build of JDK with Project Panama is really necessary to run Hexalite locally, since we depend on its nifty features in development which aren't available in other JDK distributions such as Temurin or Azul's for now. You may have issues with the toolchain being not supported by Gradle; if this is the case, you can use Gradle with Java 18, and set org.gradle.java.installations.paths=/path/to/panama/jdk in your ~/.gradle/gradle.properties file.

The reason why we will use the OpenJ9 virtual machine in the future is it is known to use less memory and CPU than Hotspot, so it is a better choice for running Minecraft servers. In contrast to this, the hotspot virtual machine is known to be more stable and more efficient in terms of IDE support, so it is a better choice for developing. Since there is no available build for OpenJ9 with Project Panama, we will use Hotspot for now.

Extra prequisites

You may also be interested on holmgr/cargo-sweep if you actively develop Rust with the nightly toolchain.

Windows:

  • cargo install -f cargo-binutils
  • rustup component add llvm-tools-preview

Linux:

MacOS:

Developer resources

Building everything

โ—‰ NOTICE: If you are an IntelliJ IDEA user, make sure to exclude the following directories at the Module Settings (F4):

  • **/**/target
  • /target/
  • /web/node_modules

1. Compiling the command-line interface

The command-line interface is a tool written in Rust highly used in both development and productivity environments on Hexalite. It is a unified interface for doing all necessary things for running Hexalite.

  • You can start by cloning the repository, which needs Git to be installed in your system: git clone https://git.hexalite.org/java-edition hexalite-java-edition.
  • Then you can compile all the Rust-based applications by running cd hexalite-java-edition && cargo build --release.
  • You still need to install some Cargo binary crates though, which you can do by running cargo install cbindgen.

It is done now! You can link the compiled binaries to the $PATH by running the ./scripts/apply_cli.sh command on UNIX-based systems. I'm not too sure in how to do this on Windows, but I'm sure you can find some help there by Googling it, since it doesn't seem that hard.

2. Initializing the environment

After the compilation of the command-line interface, we need to initialize the environment. In this document, we will be referring to the command-line interface command as hexalite. It may be different in your machine if you didn't add it to the $PATH, so it probably it would be ./target/release/hexalite, assuming you already compiled it.

  • hexalite init โ—‰ This will initialize the environment, creating the .hexalite folder in your home directory, and symlinking all required files to this folder. You can get further explanation about how the command-line interface works by running hexalite help.

๐Ÿ—๏ธ 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 code used in multiple modules.
  • 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.
  • grpc-server - The gRPC server for interacting with the database other stuff.
  • rest-server - A public version of our gRPC server available as a REST server.
  • kotlin-grpc-client - A consumer library for our gRPC server.
  • js-rest-client - A consumer library for our REST server.
  • 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.

java-edition's People

Contributors

allcontributors[bot] avatar axyiee avatar baskerbyte avatar herocrife avatar justleoo avatar srgaabriel avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.