summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorImperatorStorm2022-05-31 20:04:05 -0700
committerImperatorStorm2022-05-31 20:04:05 -0700
commit7b61dd812aa6b1fbf7763fe6eb7149ac0d4c82c6 (patch)
tree5bdd8f881d721dc26f29423378295bec56518fe1
downloadaur-7b61dd812aa6b1fbf7763fe6eb7149ac0d4c82c6.tar.gz
New package: `quilt-server`
-rw-r--r--.SRCINFO24
-rw-r--r--.gitignore1
-rw-r--r--PKGBUILD120
-rw-r--r--quilt-server.install37
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."
+}