Files
jeremy 5688b30892 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
2026-08-21 12:49:27 -04:00

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