summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMistreaper2022-10-22 16:03:30 +0700
committerMistreaper2022-10-22 16:03:30 +0700
commitb914b11fdec39674bd1ec3891242902a39fe210e (patch)
tree46bd4aaeb66e0beab6d76b404c17519d9ee68181
downloadaur-b914b11fdec39674bd1ec3891242902a39fe210e.tar.gz
initial commit
-rw-r--r--.SRCINFO25
-rw-r--r--PKGBUILD84
-rw-r--r--forge-server.install28
3 files changed, 137 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..bd2ca80093f1
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,25 @@
+pkgbase = forge-server-1.19.2
+ pkgdesc = Forge is a free, open-source modding API all of your favourite mods use!
+ pkgver = 43.1.47
+ pkgrel = 2
+ url = https://minecraftforge.net
+ install = forge-server.install
+ arch = any
+ license = custom
+ makedepends = jdk-openjdk
+ depends = jdk-openjdk
+ depends = tmux
+ depends = forge-hooks
+ optdepends = tar: needed in order to create world backups
+ optdepends = netcat: required in order to suspend an idle server
+ provides = forge-server=43.1.47
+ noextract = forge-1.19.2-43.1.47-installer.jar
+ backup = etc/conf.d/forge
+ source = git+https://github.com/Edenhofer/minecraft-server
+ source = https://raw.githubusercontent.com/MinecraftForge/MinecraftForge/1.19.x/LICENSE.txt
+ source = https://maven.minecraftforge.net/net/minecraftforge/forge/1.19.2-43.1.47/forge-1.19.2-43.1.47-installer.jar
+ sha512sums = SKIP
+ sha512sums = SKIP
+ sha512sums = SKIP
+
+pkgname = forge-server-1.19.2
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..b836b9131317
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,84 @@
+# Maintainer: Mistreaper <mistreaper-doge@proton.me>
+# Contributor: Dominik Opyd <d.opyd@oad.earth>
+# Contributor: thisischrys <thisischrys+aur@gmail.com>
+# 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>
+
+minver=1.19.2
+srvpath=/srv/forge-1.19.2
+
+pkgver=43.1.47
+pkgrel=2
+pkgname=forge-server-1.19.2
+pkgdesc="Forge is a free, open-source modding API all of your favourite mods use!"
+url="https://minecraftforge.net"
+arch=('any')
+license=("custom")
+depends=("jdk-openjdk" "tmux" "forge-hooks")
+makedepends=("jdk-openjdk")
+optdepends=("tar: needed in order to create world backups"
+ "netcat: required in order to suspend an idle server")
+provides=("forge-server=${pkgver}")
+backup=("etc/conf.d/forge")
+install=forge-server.install
+source=(git+https://github.com/Edenhofer/minecraft-server
+ https://raw.githubusercontent.com/MinecraftForge/MinecraftForge/1.19.x/LICENSE.txt
+ https://maven.minecraftforge.net/net/minecraftforge/forge/1.19.2-43.1.47/forge-1.19.2-43.1.47-installer.jar)
+noextract=(forge-${minver}-${pkgver}-installer.jar)
+sha512sums=('SKIP'
+ 'SKIP'
+ 'SKIP')
+
+frgpath=${srvpath}/libraries/net/minecraftforge/forge/${minver}-${pkgver}
+
+prepare() {
+ mkdir -p forge-server && cd forge-server
+
+ java -jar ../forge-${minver}-${pkgver}-installer.jar --installServer
+}
+
+build() {
+ cd minecraft-server
+
+ make \
+ GAME=forge \
+ INAME=forged \
+ SERVER_ROOT=${srvpath} \
+ SERVER_START_CMD="java @${frgpath}/user_jvm_args.txt @${frgpath}/unix_args.txt" \
+ MAIN_EXECUTABLE=forge-${minver}-${pkgver}-server.jar \
+ all
+}
+
+package() {
+ cd minecraft-server
+
+ make \
+ GAME=forge \
+ INAME=forged \
+ DESTDIR=$pkgdir \
+ install
+
+ cd ../forge-server
+
+ rm *.log *.bat
+
+ rm libraries/net/minecraftforge/forge/${minver}-${pkgver}/win_args.txt
+
+ find libraries -type f -print0 | xargs -0 -i@ install -Dm644 "@" "${pkgdir}${srvpath}/@"
+
+ install -Dm 644 user_jvm_args.txt ${pkgdir}${frgpath}/user_jvm_args.txt
+ install -Dm 644 $srcdir/LICENSE.txt ${pkgdir}/usr/share/licenses/${pkgname}/LICENSE
+
+ mkdir -p $pkgdir/var/log/
+
+ install -dm2755 $pkgdir$srvpath/logs
+ install -dm2755 $pkgdir$srvpath/mods
+
+ ln -s ${srvpath}/logs $pkgdir/var/log/forge
+
+ chmod g+ws $pkgdir$srvpath
+}
diff --git a/forge-server.install b/forge-server.install
new file mode 100644
index 000000000000..5150eaf253fc
--- /dev/null
+++ b/forge-server.install
@@ -0,0 +1,28 @@
+_game="forge"
+_user="forge"
+_server_root="/srv/forge"
+
+post_install() {
+ chown -R "${user}:${user}" "$_server_root"
+
+ echo "The world data is stored under ${_server_root} and the server runs as ${_user} user to increase security."
+ echo "Use the ${_game} script under /usr/bin/${_game}d to start, stop or backup the server."
+ echo "Adjust the configuration file under /etc/conf.d/${_game} to your liking."
+ echo "For the server to start you have to accept the EULA in ${_server_root}/eula.txt !"
+ echo "The EULA file is generated after the first server start."
+}
+
+post_upgrade() {
+ chown -R "${user}:${user}" "$_server_root"
+
+ echo "The management script switched from GNU screen to tmux."
+ echo "Manual intervention is needed to close the 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 ${_forge_user} user has been kept on your system."
+}