# minecraft-server

minecraft-server is a wrapper for the Java, Fabric, and Bedrock Minecraft servers that adds
proper systemd support. The core functionality includes proper signal handling for
`SIGINT` and `SIGTERM`, systemd user services, support for the XDG Base Directory
Specification, and a Fedora Copr package for seamless upgrades.

The repository also ships matching Kotlin/JVM wrapper jars for the version-locked
Minecraft Java server, Minecraft Fabric server, Geyser Standalone, and
MCXboxBroadcast Standalone. Each wrapper downloads and verifies its application
jar on first use, then uses Java's Foreign Function and Memory API and a small
Rust library to replace itself with the
final Java process.

[![Latest Release](https://gitlab.com/kaidelorenzo/minecraft-server-rs/-/badges/release.svg)](https://gitlab.com/kaidelorenzo/minecraft-server-rs/-/releases)
[![Copr build status](https://copr.fedorainfracloud.org/coprs/kaidelorenzo/minecraft-server/package/minecraft-server/status_image/last_build.png)](https://copr.fedorainfracloud.org/coprs/kaidelorenzo/minecraft-server/package/minecraft-server/)

Mozilla Public License Version 2.0

[TOC]

## Release Schedule

Each release is tied to a specific version of the Minecraft server binaries provided by Mojang.

New releases are built and deployed on Copr for every server binary update released by Mojang.
Copr automatically deletes old builds so the latest version is the only one that's
guaranteed to be available.

Builds are made available for/build against the latest [Fedora](https://fedoraproject.org/) and
[EPEL](https://docs.fedoraproject.org/en-US/epel/) versions on the x86_64 and AArch64 platforms.

## Features

-   Standard input and output are passed through to the Minecraft server executables
    (works almost identically to the Mojang released CLI)
-   Proper signal handling for `SIGTERM` and `SIGINT` (including ctrl+c) for safe server shutdown
-   systemd user services
-   Support for the XDG Base Directory Specification
-   Copr package for seamless upgrades built against latest Fedora and EPEL
-   Arguments passed to the minecraft-server executables are passed on to the Minecraft server binaries
