2017-11-01 06:42:44 +01:00
|
|
|
#!/bin/bash
|
|
|
|
|
2023-06-17 13:00:22 -05:00
|
|
|
# shellcheck source=start-utils
|
|
|
|
. "${SCRIPTS:-/}start-utils"
|
2020-10-30 17:03:13 -05:00
|
|
|
isDebugging && set -x
|
2020-03-06 16:52:17 +01:00
|
|
|
|
2019-02-26 22:19:43 -06:00
|
|
|
set -e
|
|
|
|
|
2017-11-01 06:42:44 +01:00
|
|
|
function buildSpigotFromSource {
|
2020-05-11 20:14:01 -05:00
|
|
|
if [[ ${TYPE^^} = *BUKKIT ]] && ! versionLessThan "1.14"; then
|
|
|
|
log "ERR craftbukkit build is only supported for versions less than 1.14"
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
|
2020-03-06 16:52:17 +01:00
|
|
|
log "Building Spigot $VANILLA_VERSION from source, might take a while, get some coffee"
|
2019-07-22 21:33:54 -05:00
|
|
|
rm -rf /data/temp
|
2017-11-01 06:42:44 +01:00
|
|
|
mkdir /data/temp
|
|
|
|
cd /data/temp
|
2019-02-26 22:19:43 -06:00
|
|
|
|
|
|
|
jvmOpts="-Xms${INIT_MEMORY:-$MEMORY} -Xmx${MAX_MEMORY:-$MEMORY}"
|
|
|
|
|
2020-03-06 16:52:17 +01:00
|
|
|
logn ''
|
2018-06-25 19:13:47 -05:00
|
|
|
curl -sSL -o /data/temp/BuildTools.jar https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar && \
|
2023-08-20 13:00:06 -05:00
|
|
|
java $jvmOpts -jar /data/temp/BuildTools.jar --rev "$VERSION" 2>&1 |tee /data/spigot_build.log| while read l; do echo -n .; done; log "done"
|
2020-05-11 20:14:01 -05:00
|
|
|
|
|
|
|
case ${TYPE^^} in
|
|
|
|
SPIGOT)
|
|
|
|
if ! mv spigot-*.jar /data/${SERVER}; then
|
|
|
|
log "ERR failed to build Spigot"
|
|
|
|
cat /data/spigot_build.log
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
*BUKKIT)
|
|
|
|
if ! mv craftbukkit-*.jar /data/${SERVER}; then
|
|
|
|
log "ERR failed to build Spigot"
|
|
|
|
cat /data/spigot_build.log
|
|
|
|
exit 1
|
|
|
|
fi
|
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2020-03-06 16:52:17 +01:00
|
|
|
log "Cleaning up"
|
2017-11-01 06:42:44 +01:00
|
|
|
rm -rf /data/temp
|
|
|
|
cd /data
|
|
|
|
}
|
|
|
|
|
|
|
|
function downloadSpigot {
|
|
|
|
local match
|
|
|
|
case "$TYPE" in
|
|
|
|
*BUKKIT|*bukkit)
|
2018-08-18 18:51:45 -05:00
|
|
|
match="CraftBukkit"
|
2017-11-01 06:42:44 +01:00
|
|
|
downloadUrl=${BUKKIT_DOWNLOAD_URL}
|
2018-03-16 17:03:21 -05:00
|
|
|
getbukkitFlavor=craftbukkit
|
2017-11-01 06:42:44 +01:00
|
|
|
;;
|
|
|
|
*)
|
|
|
|
match="Spigot"
|
|
|
|
downloadUrl=${SPIGOT_DOWNLOAD_URL}
|
2018-03-16 17:03:21 -05:00
|
|
|
getbukkitFlavor=spigot
|
2017-11-01 06:42:44 +01:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
|
2020-09-27 10:21:33 -05:00
|
|
|
if [[ ${VERSION^^} = LATEST ]]; then
|
2023-06-17 13:00:22 -05:00
|
|
|
VERSION=$(restify https://getbukkit.org/download/spigot --attribute='property=og:title' | jq -r '.[0] | .attributes | select(.property == "og:title") | .content | split(" ") | .[-1]')
|
2020-09-27 10:21:33 -05:00
|
|
|
fi
|
|
|
|
|
2017-11-01 06:42:44 +01:00
|
|
|
if [[ -z $downloadUrl ]]; then
|
2023-06-17 13:00:22 -05:00
|
|
|
if versionLessThan 1.16.5 || ([[ ${getbukkitFlavor} = "craftbukkit" ]] && [[ ${VERSION} = "1.16.5" ]]); then
|
|
|
|
downloadUrl="https://cdn.getbukkit.org/${getbukkitFlavor}/${getbukkitFlavor}-${VERSION}.jar"
|
2021-07-09 19:55:46 -05:00
|
|
|
else
|
2023-06-17 13:00:22 -05:00
|
|
|
downloadUrl="https://download.getbukkit.org/${getbukkitFlavor}/${getbukkitFlavor}-${VERSION}.jar"
|
2021-07-09 19:55:46 -05:00
|
|
|
fi
|
2017-11-01 06:42:44 +01:00
|
|
|
fi
|
|
|
|
|
2020-11-03 16:49:38 -06:00
|
|
|
setServerVar
|
2022-12-28 14:05:31 -06:00
|
|
|
if [ -f "$SERVER" ] && ! isTrue "$FORCE_REDOWNLOAD"; then
|
2020-07-11 13:17:28 -05:00
|
|
|
# tell curl to only download when newer
|
2020-11-03 16:49:38 -06:00
|
|
|
curlArgs="-z $SERVER"
|
|
|
|
fi
|
|
|
|
if isDebugging; then
|
|
|
|
curlArgs="$curlArgs -v"
|
2020-07-11 13:17:28 -05:00
|
|
|
fi
|
2020-03-06 16:52:17 +01:00
|
|
|
log "Downloading $match from $downloadUrl ..."
|
2022-12-28 14:05:31 -06:00
|
|
|
curl -fsSL -o "$SERVER" $curlArgs "$downloadUrl"
|
2020-11-03 16:47:46 -06:00
|
|
|
if [[ $? != 0 || $(grep -c "DOCTYPE html" $SERVER) != 0 ]]; then
|
2018-03-16 17:03:21 -05:00
|
|
|
cat <<EOF
|
|
|
|
|
|
|
|
ERROR: failed to download from $downloadUrl
|
|
|
|
Visit https://getbukkit.org/download/${getbukkitFlavor} to lookup the
|
2021-03-13 16:54:56 -06:00
|
|
|
exact version, such as 1.4.6-R0.4-SNAPSHOT or 1.8-R0.1-SNAPSHOT-latest.
|
|
|
|
Click into the version entry to find the **exact** version, because something
|
|
|
|
like "1.8" is not sufficient according to their download naming.
|
2018-03-16 17:03:21 -05:00
|
|
|
|
|
|
|
EOF
|
2020-11-04 17:04:57 -06:00
|
|
|
|
2022-12-28 14:05:31 -06:00
|
|
|
if isDebugging && [[ $(grep -c "DOCTYPE html" "$SERVER") != 0 ]]; then
|
|
|
|
cat "$SERVER"
|
2020-11-04 17:04:57 -06:00
|
|
|
fi
|
|
|
|
|
|
|
|
# remove invalid download
|
2022-12-28 14:05:31 -06:00
|
|
|
rm "$SERVER"
|
2017-11-01 06:42:44 +01:00
|
|
|
exit 3
|
|
|
|
fi
|
2020-04-18 18:42:55 -05:00
|
|
|
|
|
|
|
JVM_OPTS="${JVM_OPTS} -DIReallyKnowWhatIAmDoingISwear"
|
|
|
|
export JVM_OPTS
|
2017-11-01 06:42:44 +01:00
|
|
|
}
|
|
|
|
|
2020-11-03 16:49:38 -06:00
|
|
|
function setServerVar {
|
|
|
|
case "$TYPE" in
|
|
|
|
*BUKKIT|*bukkit)
|
2023-06-17 13:00:22 -05:00
|
|
|
export SERVER=craftbukkit_server-${VERSION}.jar
|
2020-11-03 16:49:38 -06:00
|
|
|
;;
|
|
|
|
*)
|
2023-06-17 13:00:22 -05:00
|
|
|
export SERVER=spigot_server-${VERSION}.jar
|
2020-11-03 16:49:38 -06:00
|
|
|
;;
|
|
|
|
esac
|
|
|
|
}
|
2017-11-01 06:42:44 +01:00
|
|
|
|
2020-07-11 13:17:28 -05:00
|
|
|
if isTrue "$BUILD_SPIGOT_FROM_SOURCE" || isTrue "$BUILD_FROM_SOURCE"; then
|
2023-06-17 13:00:22 -05:00
|
|
|
resolveVersion
|
2020-11-03 16:49:38 -06:00
|
|
|
setServerVar
|
2022-12-28 14:05:31 -06:00
|
|
|
if [ ! -f "$SERVER" ] || isTrue "$FORCE_REDOWNLOAD"; then
|
2020-07-11 13:17:28 -05:00
|
|
|
buildSpigotFromSource
|
|
|
|
fi
|
|
|
|
else
|
|
|
|
downloadSpigot
|
2017-11-01 06:42:44 +01:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Normalize on Spigot for operations below
|
2021-12-10 20:50:40 -06:00
|
|
|
export FAMILY=SPIGOT
|
2017-11-01 06:42:44 +01:00
|
|
|
|
2021-03-21 11:43:21 -05:00
|
|
|
exec ${SCRIPTS:-/}start-spiget "$@"
|