fix: migrate PaperMC to v3 API, fix NeoForge beta fallback, add test suite
- Migrate Paper loader from sunset v2 API to v3 (fill.papermc.io) - Fix NeoForge: fall back to beta versions when no stable exists (set -e + grep) - Fix setEula/setperms ordering (was writing eula.txt before /data was writable) - Fix setEula/serverInfoWrite to use absolute paths (/data/server/) - Add VOLUME directive removal (was shadowing bind mounts) - Add comprehensive API test suite (110 tests across 6 suites) - Move test.sh to tests/integration.sh, switch to named volumes - Add Docker build cache to CI workflows - Add .editorconfig, expand .gitignore, improve README docs
This commit is contained in:
+49
-17
@@ -1,49 +1,81 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
MC_VERSION=${MC_VERSION:-}
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
|
||||
MC_LOADER=${MC_LOADER:-}
|
||||
MC_LOADER_VERSION=${MC_LOADER_VERSION:-}
|
||||
# ---------- source helpers first (so log/die are available) ----------------
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/lib/common.sh"
|
||||
|
||||
FABRIC_LOADER_VERSION=${FABRIC_LOADER_VERSION:-${MC_LOADER_VERSION:-}}
|
||||
FORGE_VERSION=${FORGE_VERSION:-${MC_LOADER_VERSION:-}}
|
||||
NEOFORGE_VERSION=${NEOFORGE_VERSION:-${MC_LOADER_VERSION:-}}
|
||||
PAPER_BUILD=${PAPER_BUILD:-""}
|
||||
# ---------- environment variables ------------------------------------------
|
||||
|
||||
JAVA_VERSION=${JAVA_VERSION:-}
|
||||
JAVA_HOME=/data/java/${JAVA_VERSION}
|
||||
JAR=${JAR:-"server.jar"}
|
||||
MC_VERSION="${MC_VERSION:-}"
|
||||
MC_LOADER="${MC_LOADER:-}"
|
||||
MC_LOADER_VERSION="${MC_LOADER_VERSION:-}"
|
||||
|
||||
XMS=${XMS:-2G}
|
||||
XMX=${XMX:-4G}
|
||||
FABRIC_LOADER_VERSION="${FABRIC_LOADER_VERSION:-${MC_LOADER_VERSION:-}}"
|
||||
FORGE_VERSION="${FORGE_VERSION:-${MC_LOADER_VERSION:-}}"
|
||||
NEOFORGE_VERSION="${NEOFORGE_VERSION:-${MC_LOADER_VERSION:-}}"
|
||||
PAPER_BUILD="${PAPER_BUILD:-}"
|
||||
|
||||
ADD_ARGS=${ADD_ARGS:-""}
|
||||
JAVA_VERSION="${JAVA_VERSION:-}"
|
||||
JAVA_HOME="/data/java/${JAVA_VERSION}"
|
||||
JAR="${JAR:-server.jar}"
|
||||
|
||||
XMS="${XMS:-2G}"
|
||||
XMX="${XMX:-4G}"
|
||||
|
||||
ADD_ARGS="${ADD_ARGS:-}"
|
||||
|
||||
PUID="${PUID:-1000}"
|
||||
PGID="${PGID:-1000}"
|
||||
|
||||
PATH=${JAVA_HOME}/bin:$PATH
|
||||
PATH="${JAVA_HOME}/bin:$PATH"
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
# ---------- validate required vars early -----------------------------------
|
||||
|
||||
source "${SCRIPT_DIR}/lib/common.sh"
|
||||
if [[ -z "$MC_LOADER" ]]; then
|
||||
die "MC_LOADER is required. Valid: vanilla, paper, fabric, forge, neoforge, bedrock"
|
||||
fi
|
||||
|
||||
if [[ "$MC_LOADER" != "bedrock" ]]; then
|
||||
if [[ -z "$MC_VERSION" ]]; then
|
||||
die "MC_VERSION is required for ${MC_LOADER} loader"
|
||||
fi
|
||||
fi
|
||||
|
||||
# ---------- source libraries ------------------------------------------------
|
||||
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/lib/java.sh"
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/lib/server.sh"
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/lib/loaders/vanilla.sh"
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/lib/loaders/paper.sh"
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/lib/loaders/fabric.sh"
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/lib/loaders/forge.sh"
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/lib/loaders/neoforge.sh"
|
||||
# shellcheck disable=SC1091
|
||||
source "${SCRIPT_DIR}/lib/loaders/bedrock.sh"
|
||||
|
||||
# ---------- main flow -------------------------------------------------------
|
||||
|
||||
setperms
|
||||
setEula
|
||||
|
||||
if [[ "$MC_LOADER" != "bedrock" ]]; then
|
||||
javaCheck
|
||||
fi
|
||||
|
||||
serverSelect
|
||||
|
||||
if [[ "$MC_LOADER" != "bedrock" ]]; then
|
||||
buildCommand
|
||||
fi
|
||||
setEula
|
||||
|
||||
serverStart
|
||||
|
||||
Reference in New Issue
Block a user