- 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
82 lines
2.1 KiB
Bash
Executable File
82 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
|
|
# ---------- source helpers first (so log/die are available) ----------------
|
|
# shellcheck disable=SC1091
|
|
source "${SCRIPT_DIR}/lib/common.sh"
|
|
|
|
# ---------- environment variables ------------------------------------------
|
|
|
|
MC_VERSION="${MC_VERSION:-}"
|
|
MC_LOADER="${MC_LOADER:-}"
|
|
MC_LOADER_VERSION="${MC_LOADER_VERSION:-}"
|
|
|
|
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:-}"
|
|
|
|
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"
|
|
|
|
# ---------- validate required vars early -----------------------------------
|
|
|
|
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
|
|
|
|
serverStart
|