diff --git a/README.md b/README.md index 0f0007af..90e36b26 100644 --- a/README.md +++ b/README.md @@ -487,6 +487,18 @@ A [Tuinity](https://github.com/Spottedleaf/Tuinity) server, which is a fork of P > **NOTE** only `VERSION=LATEST` is supported +## Running a Purpur server + +A [Purpur](https://purpur.pl3x.net/) server, which is "a fork of Paper and Tuinity with the goal of providing new and interesting configuration options". + + -e TYPE=PURPUR + +> NOTE: the `VERSION` variable is used to lookup a build of Purpur to download + +Extra variables: +- `PURPUR_BUILD=LATEST` : set a specific Purpur build to use +- `FORCE_REDOWNLOAD=false` : set to true to force the located server jar to be re-downloaded + ## Running a Magma server A [Magma](https://magmafoundation.org/) server, which is a combination of Forge and PaperMC, can be used with diff --git a/start-configuration b/start-configuration index e4431321..1cb1a387 100644 --- a/start-configuration +++ b/start-configuration @@ -138,6 +138,10 @@ case "${TYPE^^}" in exec ${SCRIPTS:-/}start-deployCatserver "$@" ;; + PURPUR) + exec ${SCRIPTS:-/}start-deployPurpur "$@" + ;; + *) log "Invalid type: '$TYPE'" log "Must be: VANILLA, FORGE, BUKKIT, SPIGOT, PAPER, FTBA (multiarch-only)," diff --git a/start-deployPurpur b/start-deployPurpur new file mode 100755 index 00000000..91a5fbf3 --- /dev/null +++ b/start-deployPurpur @@ -0,0 +1,38 @@ +#!/bin/bash +set -euo pipefail +IFS=$'\n\t' + +. ${SCRIPTS:-/}start-utils +isDebugging && set -x + +: ${VANILLA_VERSION:?} +: ${PURPUR_BUILD:=LATEST} +: ${FORCE_REDOWNLOAD:=false} + +if [[ ${PURPUR_BUILD} == LATEST ]]; then + PURPUR_BUILD=$(curl -fsSL "https://purpur.pl3x.net/api/v1/purpur/${VANILLA_VERSION}" | + jq -r '.builds.latest' || echo "") + if [[ -z ${PURPUR_BUILD} ]]; then + log "ERROR: Failed to locate a Purpur build for ${VANILLA_VERSION}." + log " Please check if a download is available at https://purpur.pl3x.net/downloads/" + exit 3 + fi +fi + +export SERVER="purpur-${VANILLA_VERSION}-${PURPUR_BUILD}.jar" + +if [ ! -f "$SERVER" ] || isTrue "$FORCE_REDOWNLOAD"; then + downloadUrl="https://purpur.pl3x.net/api/v1/purpur/${VANILLA_VERSION}/${PURPUR_BUILD}/download" + log "Downloading Purpur from $downloadUrl ..." + if ! curl -fsSL -o "$SERVER" "$downloadUrl"; then + log "ERROR: failed to download from $downloadUrl (status=$?)" + exit 3 + fi +fi + +# Normalize on Spigot for later operations +export TYPE=SPIGOT +export SKIP_LOG4J_CONFIG=true + +# Continue to Final Setup +exec ${SCRIPTS:-/}start-finalSetupWorld $@ diff --git a/start-deployTuinity b/start-deployTuinity index f2c6f039..d0343402 100644 --- a/start-deployTuinity +++ b/start-deployTuinity @@ -20,7 +20,7 @@ if [ ! -f "$SERVER" ] || [ -n "$FORCE_REDOWNLOAD" ]; then fi fi -# Normalize on Spigot for operations below +# Normalize on Spigot for later operations export TYPE=SPIGOT # Continue to Final Setup