diff options
author | ImperatorStorm | 2022-05-31 20:04:05 -0700 |
---|---|---|
committer | ImperatorStorm | 2022-05-31 20:04:05 -0700 |
commit | 7b61dd812aa6b1fbf7763fe6eb7149ac0d4c82c6 (patch) | |
tree | 5bdd8f881d721dc26f29423378295bec56518fe1 | |
download | aur-7b61dd812aa6b1fbf7763fe6eb7149ac0d4c82c6.tar.gz |
New package: `quilt-server`
-rw-r--r-- | .SRCINFO | 24 | ||||
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | PKGBUILD | 120 | ||||
-rw-r--r-- | quilt-server.install | 37 |
4 files changed, 182 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO new file mode 100644 index 000000000000..a559b8435a7e --- /dev/null +++ b/.SRCINFO @@ -0,0 +1,24 @@ +pkgbase = quilt-server + pkgdesc = Minecraft Quilt server unit files, script and jar + pkgver = 1.18.2_0.4.2_0.16.1 + pkgrel = 1 + url = https://quiltmc.org + install = quilt-server.install + arch = any + license = Apache + depends = java-runtime-headless>=17 + depends = tmux + depends = sudo + depends = bash + depends = awk + depends = sed + depends = tar + optdepends = netcat: required in order to suspend an idle server + noextract = quilt-1.18.2-0.4.2-0.16.1.jar + backup = etc/conf.d/quilt + source = minecraft-server-1.0.2.tar.gz::https://github.com/Edenhofer/minecraft-server/archive/refs/tags/v1.0.2.tar.gz + source = quilt-installer-0.4.2.jar::https://maven.quiltmc.org/repository/release/org/quiltmc/quilt-installer/0.4.2/quilt-installer-0.4.2.jar + sha256sums = 739d526568d440f5bca0706d6d03d64e44e4e942766d27a4f273a812341978df + sha256sums = 813469aa39a9313da97fd1aaa6a5513d841ceb8b7ed473e28e67360dc5015958 + +pkgname = quilt-server diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..d392f0e82c4a --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.jar diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..47825c04b4b4 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,120 @@ +# Maintainer: Imperator Storm <ImperatorStorm11@protonmail.com> + +# Based on the 'quilt-server' AUR package by: +# Maintainer: lgm <lgm dot aur at outlook dot com> +# Contributor: Ndoskrnl <lollipop.studio.cn@gmail.com> +# Contributor: flying <flyinghat42@gmail.com> + +# Based on the 'forge-server' AUR package by: +# Contributor: Nitroretro <nitroretro@protonmail.com> + +# Based on the `minecraft-server` AUR package by: +## Maintainer: Gordian Edenhofer <gordian.edenhofer@gmail.com> +## Contributor: Philip Abernethy <chais.z3r0@gmail.com> +## Contributor: sowieso <sowieso@dukun.de> + +_ver="1.18.2_0.4.2_0.16.1-1" +_minecraft_ver_latest="1.18.2" + +IFS="-" read -ra _ver_temp <<< "$_ver" +IFS="_" read -ra _pkgver_temp <<< "${_ver_temp[0]}" + +# the minecraft version +_minecraft_ver=${_pkgver_temp[0]} + +# the version of the installer +_quilt_ver=${_pkgver_temp[1]} + +# the version of the loader to install +_quilt_loader_ver=${_pkgver_temp[2]} + +_mng_ver=1.0.2 + +_pkgver=${_ver_temp[0]//_/-} + +if [ "$_minecraft_ver" = "$_minecraft_ver_latest" ]; then + pkgname="quilt-server" + _quilt_name="quilt" +else + pkgname="quilt-server-${_minecraft_ver}" + _quilt_name="quilt-${_minecraft_ver}" +fi + +pkgver=${_ver_temp[0]} +pkgrel=${_ver_temp[1]} +pkgdesc="Minecraft Quilt server unit files, script and jar" +arch=("any") +url="https://quiltmc.org" +license=("Apache") +depends=("java-runtime-headless>=17" "tmux" "sudo" "bash" "awk" "sed" "tar") +optdepends=("netcat: required in order to suspend an idle server") +backup=("etc/conf.d/${_quilt_name}") +install="quilt-server.install" + +source=("minecraft-server-${_mng_ver}.tar.gz"::"https://github.com/Edenhofer/minecraft-server/archive/refs/tags/v${_mng_ver}.tar.gz" + "quilt-installer-${_quilt_ver}.jar"::"https://maven.quiltmc.org/repository/release/org/quiltmc/quilt-installer/${_quilt_ver}/quilt-installer-${_quilt_ver}.jar") +noextract=("quilt-${_pkgver}.jar") +sha256sums=('739d526568d440f5bca0706d6d03d64e44e4e942766d27a4f273a812341978df' + '813469aa39a9313da97fd1aaa6a5513d841ceb8b7ed473e28e67360dc5015958') + +prepare() { + java -Duser.home="${srcdir}" -jar "quilt-installer-${_quilt_ver}.jar" install server ${_minecraft_ver} ${_quilt_loader_ver} --download-server +} + +_game="quilt" +_server_root="${pkgdir}/srv/${_quilt_name}" +build() { + make -C "${srcdir}/minecraft-server-${_mng_ver}" \ + GAME=${_game} \ + INAME=${_game}d \ + SERVER_ROOT=${_server_root} \ + BACKUP_PATHS="world world_nether world_the_end" \ + GAME_USER=${_game} \ + MAIN_EXECUTABLE=quilt-server-launch.jar \ + SERVER_START_CMD="java -Dlog4j2.formatMsgNoLookups=true -Xms512M -Xmx1024M -jar './\$\${MAIN_EXECUTABLE}' --nogui" \ + clean + make -C "${srcdir}/minecraft-server-${_mng_ver}" \ + GAME=${_game} \ + INAME=${_game}d \ + SERVER_ROOT=${_server_root} \ + BACKUP_PATHS="world world_nether world_the_end" \ + GAME_USER=${_game} \ + MAIN_EXECUTABLE=quilt-server-launch.jar \ + SERVER_START_CMD="java -Dlog4j2.formatMsgNoLookups=true -Xms512M -Xmx1024M -jar './\$\${MAIN_EXECUTABLE}' --nogui" \ + all +} + +package() { + _server_root="${pkgdir}/srv/${_quilt_name}" + + make -C "${srcdir}/minecraft-server-${_mng_ver}" \ + DESTDIR="${pkgdir}" \ + GAME=${_game} \ + INAME=${_game}d \ + install + + # Install Quilt + install -Dm644 "server/quilt-server-launch.jar" "${_server_root}/quilt-server-launch.jar" + + # Install Minecraft Server + install -Dm644 "server/server.jar" "${_server_root}/server.jar" + + # install the libraries subfolder + # 1 create the emptyfolder structure + install -dm755 "libraries" "${_server_root}/libraries" + for d in $(find "libraries" -type d);do + install -d --mode 755 "$d" "${_server_root}/${d}"; + done + # 2 install all files + for f in $(find "libraries" -type f); do + install -D --mode 755 "$f" "${_server_root}/${f}"; + done + + # Link log files + mkdir -p "${pkgdir}/var/log/" + install -dm2755 "${_server_root}/logs" + ln -s "/srv/${_quilt_name}/logs" "${pkgdir}/var/log/${_quilt_name}" + + # Give the group write permissions and set user or group ID on execution + chmod g+ws "${_server_root}" +} diff --git a/quilt-server.install b/quilt-server.install new file mode 100644 index 000000000000..a08faf3b3dd5 --- /dev/null +++ b/quilt-server.install @@ -0,0 +1,37 @@ +_fabric_name="fabric" +_fabric_user="fabric" +_server_root="/srv/${_fabric_name}" + +post_install() { + if ! getent group "$_fabric_user" &>/dev/null; then + echo "Adding ${_fabric_user} system group..." + groupadd -r "$_fabric_user" 1>/dev/null + fi + + if ! getent passwd "$_fabric_user" &>/dev/null; then + echo "Adding ${_fabric_user} system user..." + useradd -r -g "${_fabric_user}" -d "$_server_root" "$_fabric_user" 1>/dev/null + fi + + chown -R "${_fabric_user}:${_fabric_user}" "$_server_root" + + echo "The world data is stored under ${_server_root} and the server runs as the fabric user to increase security." + echo "Use the ${_fabric_name}d script under /usr/bin/${_fabric_name}d to start, stop or backup the server." + echo "Adjust the configuration file under /etc/conf.d/${_fabric_name} to your liking." + echo -e "`tput setaf 3`To start the server you have to accept the EULA in ${_server_root}/eula.txt ${_fabric_name}d.service will fail to start otherwise!`tput sgr0`" +} + +post_upgrade() { + chown -R "${_fabric_user}:${_fabric_user}" "${_server_root}" + + echo "The management script switched from GNU screen to tmux." + echo "Manual intervention is needed to close any previous GNU screen sessions:" + echo "Use \`sudo -u ${_user} screen -S ${_game} -rx\` to attach to the ${_game} session and stop it." + echo "Do the same for the \`idle_server_${_game}\` session if one is running." +} + +post_remove() { + [ -d "$_server_root" ] && echo "Game saves in ${_server_root} have been kept on your system." + echo "The configuration in /etc/conf.d/ has been kept on your system." + echo "The ${_fabric_user} user has been kept on your system." +} |