summarylogtreecommitdiffstats
path: root/PKGBUILD
diff options
context:
space:
mode:
Diffstat (limited to 'PKGBUILD')
-rw-r--r--PKGBUILD201
1 files changed, 143 insertions, 58 deletions
diff --git a/PKGBUILD b/PKGBUILD
index 761a2ad8efc4..d4ff362a76a2 100644
--- a/PKGBUILD
+++ b/PKGBUILD
@@ -1,75 +1,160 @@
# Maintainer: 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>
+## Maintainer: Gordian Edenhofer <gordian.edenhofer@gmail.com>
+## Contributor: Philip Abernethy <chais.z3r0@gmail.com>
+## Contributor: sowieso <sowieso@dukun.de>
-_game="forge-1.10.2"
-_server_root="/srv/forge-1.10.2"
+[ -z "$FORGE_SRV_PKGVER" ] && FORGE_SRV_PKGVER="1.10.2_12.18.3.2185-3"
+[ -z "$FORGE_SRV_MCVER_LATEST" ] && FORGE_SRV_MCVER_LATEST="1.14.4"
-_minecraft_ver=1.10.2
-_pkgver=${_minecraft_ver}-12.18.3.2185
+IFS="-" read -ra _ver_temp <<< "$FORGE_SRV_PKGVER"
+IFS="_" read -ra _pkgver_temp <<< "${_ver_temp[0]}"
+IFS="." read -ra _minecraft_ver_temp <<< "${_pkgver_temp[0]}"
-pkgname=forge-server-1.10.2
+_minecraft_ver=${_pkgver_temp[0]}
+_minecraft_ver_major=${_minecraft_ver_temp[0]:-0}
+_minecraft_ver_minor=${_minecraft_ver_temp[1]:-0}
+_minecraft_ver_patch=${_minecraft_ver_temp[2]:-0}
+_forge_ver=${_pkgver_temp[1]}
+
+_pkgver="${_minecraft_ver}-${_forge_ver}"
+
+[ "$_minecraft_ver" = "$FORGE_SRV_MCVER_LATEST" ] && pkgname="forge-server" || pkgname="forge-server-${_minecraft_ver}"
pkgver=${_pkgver//-/_}
-pkgrel=2
-pkgdesc="Minecraft Forge server unit files, script, and jar"
-arch=('any')
-url="https://minecraftforge.net/"
-license=('custom')
-depends=('java-runtime-headless=8' 'screen' 'sudo' 'bash' 'awk' 'sed')
-optdepends=("tar: needed in order to create world backups" "netcat: required in order to suspend an idle server")
-backup=("etc/conf.d/${_game}")
-install="${pkgname}.install"
-source=("${_game}-${_pkgver}-installer.jar"::"https://files.minecraftforge.net/maven/net/minecraftforge/forge/${_pkgver}/forge-${_pkgver}-installer.jar"
- "${_game}d-backup.service"
- "${_game}d-backup.timer"
- "${_game}d.service"
- "${_game}d.conf"
- "${_game}d.sh"
- "LICENSE-fml.txt"
- "LICENSE-new.txt"
- "MinecraftForge-License.txt")
-noextract=("${_game}-${_pkgver}-installer.jar")
-sha512sums=('12ef115f29883ee48ddfe0463e5a817d8754fba776d97951347b9d657227836f148c392df49eaed61887f7fb7f8653321ba419e07d34df89e76888e42f2283ae'
- 'c56f06606d96a08e7b55ef00e95d57d2931218f2e887f70a2be092dc20e47a3fc40c4898a5d315964f08126eb4860c8d7925e26bc52acf0dbaf681e6906f2915'
+pkgrel=${_ver_temp[1]}
+pkgdesc="Minecraft Forge server unit files, script and jar"
+arch=("any")
+url="https://minecraftforge.net"
+license=("custom")
+depends=("java-runtime-headless=8" "screen" "sudo" "bash" "awk" "sed")
+optdepends=("tar: needed in order to create world backups"
+ "netcat: required in order to suspend an idle server")
+provides=("forge-server=${pkgver}")
+conflicts=("forge-server")
+backup=("etc/conf.d/forge")
+[ "$FORGE_SRV_PKGVER" = "1.10.2_12.18.3.2185-3" ] && install="forge-server.install" || install="forge-server-custom.install"
+source=("forged-backup.service"
+ "forged-backup.timer"
+ "forged.service"
+ "forged.conf"
+ "forged.sh")
+noextract=("forge-${_pkgver}.jar")
+sha512sums=('e9a391a330320a7aea127a3e8ad399d8d6e3c926eac2c0df7a4e550ba61cc13fec737f7e984bd98b9e1f9f9d5a654ee241eeef6a2e433ec845e300ef29405f62'
'a47b5a9e2262877008a5dcae3a833fe99f911631d6fdbe97b95e0451e1dd2b5a26b6f7b843dd6a8ccd4f663cf5c3bca53a89a1d3aabb363281ab6c6fb19e41a4'
- '1c97696602817701590faac010855702f74e1a4c9b628e6c27b53187dc27fd563a57f2027cd3af94377bf189b48fdd8e5b154b2b9314bec893234cdf4100c175'
- '78578e1e736d946ff09c4f2eeaa9a667d5baeb56918dc702b9eae6969aaf62369207612e6825d0b4f88cd70ec5f120400d7badcbe95255a5486077805c60d730'
- '9f2d532dd2f7c897f6082aee8a1164fcd9f639e49bd1f025ae2b6ca7a97560ad0b34971a618eb669cdfc19a86426850bae4c7600805a4ce9fc40576154971f08'
+ 'd6bde61a7aa479b85e35b4a3eccb9b3237a6c97f8919b3d704434f1df15672b74c7ae9ca9473eea6a0593e6e80892a2510782115185c1b7fe332720ccb78a7bd'
+ '6c82f776e337d8c5eca11fea87ce6f6cfe4a5e881db947336d9c8605bd36a4ce0b7b8811e11d79285dd855cd2bdc3f65526b7aaa8d47cb14a7b8cf452462329c'
+ '2a9a911e9290573718d7cf00a834e4dc0211c63a2de4d132c0b6c418d2616084dee68b934ae6e6554a0f6a037e35620d2df8b8d736acbd2fe8f71e0656c3ea46'
+ '12ef115f29883ee48ddfe0463e5a817d8754fba776d97951347b9d657227836f148c392df49eaed61887f7fb7f8653321ba419e07d34df89e76888e42f2283ae'
+ 'dedd8e121e79bdd39c824a2d4acbc231ae6339cfd29894c4e7299359d23bc92423f4a865865372745be996b0bc14f5777e06baae8b1f4e5c302eadeac5aecf15'
+ '7f158bed6957e5285ce45a480f6a222065af5427bd48481ef24eb770ff540aa67b2d1c1ed976d216db94323017f7c7ee1dfe16e3f222b14189f9823e0b49f0f3'
+ '2c9bdefe7d022be139e7aec2e5f1cc1f83ea9d35d2c945e26422e140027b5107ce32c56f0b97e7dbf6b6edb282075df4a18c156a6ed6b064bcb10a3b4481a9aa'
'07860198b7d40726e9597f9ac748904a8e27bdcf87151f0b1c8c2ade024ad16aa83d412b70f900a7de3f58773f325ee45eb6c30cb1395e45a4d8092a19b4f845'
- '7fe8163f3f1bb86e59508aff851eb571e280da36c24a6faf49ae51d6a000282bac8c388ac1c0c1208220b3f8fb62466285a306213f5a014faa1b619f4c48bf9b'
- 'dedd8e121e79bdd39c824a2d4acbc231ae6339cfd29894c4e7299359d23bc92423f4a865865372745be996b0bc14f5777e06baae8b1f4e5c302eadeac5aecf15')
+ '7fe8163f3f1bb86e59508aff851eb571e280da36c24a6faf49ae51d6a000282bac8c388ac1c0c1208220b3f8fb62466285a306213f5a014faa1b619f4c48bf9b')
+
+# -- Forge Installer -- #
+if [ "$_minecraft_ver_minor" = 7 ]; then
+ source+=("forge-${_pkgver}-installer.jar"::"https://files.minecraftforge.net/maven/net/minecraftforge/forge/${_pkgver}-${_minecraft_ver}/forge-${_pkgver}-${_minecraft_ver}-installer.jar")
+else
+ source+=("forge-${_pkgver}-installer.jar"::"https://files.minecraftforge.net/maven/net/minecraftforge/forge/${_pkgver}/forge-${_pkgver}-installer.jar")
+fi
+
+[ "$_minecraft_ver_minor" = 5 ] && source+=("https://files.minecraftforge.net/fmllibs/fml_libs15.zip") && noextract+=("fml_libs15.zip")
+# -- /Forge Installer -- #
+
+# -- Licenses -- #
+_licenses=()
+_license_suffix="-${pkgname}-${_pkgver}.txt"
+
+if [ "$_minecraft_ver_minor" -ge 9 ]; then
+ _branch="${_minecraft_ver_major}.${_minecraft_ver_minor}.x"
+elif [ "$_minecraft_ver_minor" -ge 7 ]; then
+ _branch="$_minecraft_ver"
+elif [ "$_minecraft_ver_minor" = 6 ]; then
+ _branch="1.6"
+else
+ _branch="v7.9"
+fi
+
+_add_license() {
+ _path=$1
+ _repo=${2:-MinecraftForge}
+ _github_branch=${3:-"$_branch"}
+ _filename="$(basename "$_path")${_license_suffix}"
+
+ _licenses+=("$_filename")
+ source+=("$_filename"::"https://raw.githubusercontent.com/MinecraftForge/${_repo}/${_github_branch}/${_path}.txt")
+}
+
+if [ "$_minecraft_ver_minor" -ge 13 ]; then
+ _add_license "LICENSE"
+elif [ "$_minecraft_ver_minor" = 12 ]; then
+ _add_license "LICENSE-Paulscode%20IBXM%20Library"
+ _add_license "LICENSE-Paulscode%20SoundSystem%20CodecIBXM"
+ _add_license "LICENSE"
+elif [ "$_minecraft_ver_minor" -ge 7 ]; then
+ _add_license "MinecraftForge-License"
+ _add_license "Paulscode%20IBXM%20Library%20License"
+ _add_license "Paulscode%20SoundSystem%20CodecIBXM%20License"
+
+ case "$_minecraft_ver_minor" in
+ 8) _add_license "LICENSE-fml";;
+ 7) _add_license "fml/LICENSE-fml";;
+ *) _add_license "LICENSE-fml" && _add_license "LICENSE-new";;
+ esac
+elif [ "$_minecraft_ver_minor" = 6 ]; then
+ _add_license "install/MinecraftForge-License"
+ _add_license "install/Paulscode%20IBXM%20Library%20License"
+ _add_license "install/Paulscode%20SoundSystem%20CodecIBXM%20License"
+ _add_license "LICENSE-fml" "FML" "902772ed0cb6c22c4cd7ad9b0ec7a02961b5e016"
+else
+ _add_license "LICENSE-fml"
+fi
+# -- /Licenses -- #
prepare() {
- mkdir mods
- java -jar "${_game}-${_pkgver}-installer.jar" --installServer
+ [ "$_minecraft_ver_minor" = 10 ] && mkdir mods
+ [ "$_minecraft_ver_minor" = 5 ] && unzip fml_libs15.zip -d lib
+ java -jar "forge-${_pkgver}-installer.jar" --installServer
}
package() {
- install -Dm644 "LICENSE-fml.txt" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE-fml.txt"
- install -Dm644 "LICENSE-new.txt" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE-new.txt"
- install -Dm644 "MinecraftForge-License.txt" "${pkgdir}/usr/share/licenses/${pkgname}/MinecraftForge-License.txt"
-
- install -Dm644 "${_game}d.conf" "${pkgdir}/etc/conf.d/${_game}"
- install -Dm755 "${_game}d.sh" "${pkgdir}/usr/bin/${_game}d"
- install -Dm644 "${_game}d.service" "${pkgdir}/usr/lib/systemd/system/${_game}d.service"
- install -Dm644 "${_game}d-backup.service" "${pkgdir}/usr/lib/systemd/system/${_game}d-backup.service"
- install -Dm644 "${_game}d-backup.timer" "${pkgdir}/usr/lib/systemd/system/${_game}d-backup.timer"
- install -Dm644 "mods/mod_list.json" "${pkgdir}${_server_root}/mods/mod_list.json"
- install -Dm644 "forge-${_pkgver}-universal.jar" "${pkgdir}${_server_root}/${_game}-${_pkgver}.jar"
- install -Dm644 "minecraft_server.${_minecraft_ver}.jar" "${pkgdir}${_server_root}/minecraft_server.${_minecraft_ver}.jar"
- ln -s "${_game}-${_pkgver}.jar" "${pkgdir}${_server_root}/${_game}.jar"
-
- # Install libraries
- find libraries -type f -print0 | xargs -0 -i@ install -Dm644 '@' "${pkgdir}${_server_root}/@"
-
- # Link the log files
+ # Install forged
+ install -Dm644 "forged-backup.service" "${pkgdir}/usr/lib/systemd/system/forged-backup.service"
+ install -Dm644 "forged-backup.timer" "${pkgdir}/usr/lib/systemd/system/forged-backup.timer"
+ install -Dm644 "forged.service" "${pkgdir}/usr/lib/systemd/system/forged.service"
+ install -Dm644 "forged.conf" "${pkgdir}/etc/conf.d/forge"
+ install -Dm755 "forged.sh" "${pkgdir}/usr/bin/forged"
+
+ # Install Forge
+ _forge_jar="forge-${_pkgver}.jar"
+ [ "$_minecraft_ver_minor" -le 12 ] && _forge_jar="forge-${_pkgver}-universal.jar"
+ [ "$_minecraft_ver_minor" = 7 ] && _forge_jar="forge-${_pkgver}-${_minecraft_ver}-universal.jar"
+ [ "$_minecraft_ver_minor" -le 6 ] && _forge_jar="minecraftforge-universal-${_pkgver}.jar"
+
+ install -Dm644 "$_forge_jar" "${pkgdir}/srv/forge/$_forge_jar"
+ ln -s "$_forge_jar" "${pkgdir}/srv/forge/forge.jar"
+ find libraries -type f -print0 | xargs -0 -i@ install -Dm644 "@" "${pkgdir}/srv/forge/@"
+ [ "$_minecraft_ver_minor" = 5 ] && find lib -type f -print0 | xargs -0 -i@ install -Dm644 "@" "${pkgdir}/srv/forge/@"
+
+ # Install Minecraft Server (for 1.12.2 or lower)
+ if [ "$_minecraft_ver_minor" = 5 ]; then
+ install -Dm644 "minecraft_server.${_minecraft_ver}.jar" "${pkgdir}/srv/forge/minecraft_server.jar"
+ elif [ "$_minecraft_ver_minor" -le 12 ]; then
+ install -Dm644 "minecraft_server.${_minecraft_ver}.jar" "${pkgdir}/srv/forge/minecraft_server.${_minecraft_ver}.jar"
+ fi
+
+ # Link log files
mkdir -p "${pkgdir}/var/log/"
- install -dm2755 "${pkgdir}/${_server_root}/logs"
- ln -s "${_server_root}/logs" "${pkgdir}/var/log/${_game}"
+ install -dm2755 "${pkgdir}/srv/forge/logs"
+ ln -s "/srv/forge/logs" "${pkgdir}/var/log/forge"
+
+ # Install licenses
+ for _license in "${_licenses[@]}"; do
+ _filename="$(basename "$_license" "$_license_suffix").txt"
+ _filename="${_filename//\%20/ }"
+ install -Dm644 "$_filename" "${pkgdir}/usr/share/licenses/${pkgname}/$_filename"
+ done
- # Give the group write permissions and set user or group ID on execution
- chmod g+ws "${pkgdir}${_server_root}"
+ chmod g+ws "${pkgdir}/srv/forge"
}