#!/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