#! /bin/bash # # start-server.sh # Copyright (C) 2021 Vintage Salt # # Distributed under terms of the MIT license. # set -e # Download and extract a pack zip, if one is provided if [ -n "$FORGE_PACK_ZIP" ]; then echo "Downloading pack: $FORGE_PACK_ZIP" tmpdir="$(mktemp -d)" pushd "$tmpdir" > /dev/null 2>&1 curl -L "$FORGE_PACK_ZIP" -o pack.zip unzip -q pack.zip ls -alh directory="$(find . -type d -iname "mods" -execdir pwd \; | sort -n | head -n 1)" if [ -z "$directory" ]; then echo "Unable to find mods directory" else echo "Found modpack directory: $directory" fi echo "Syncing content to /minecraft" rsync --ignore-existing "$directory"/ /minecraft/ popd > /dev/null 2>&1 fi # Then also download and extract a config repo, if one exists if [ -n "$CONFIG_REPO" ]; then echo "Downloading config repo: $CONFIG_REPO" tmpdir="$(mktemp -d)" pushd "$tmpdir" > /dev/null 2>&1 git clone "$CONFIG_REPO" . rm -rf .git rsync -av --delete ./ /minecraft/ popd > /dev/null 2>&1 fi # Entrypoint will be server.jar args="-jar server.jar nogui" # Memory configuration [ -n "$JRE_XMX" ] && args="-Xmx$JRE_XMX $args" [ -n "$JRE_XMS" ] && args="-Xms$JRE_XMS $args" [ -n "$ARGS" ] && args="$ARGS $args" # Debugging info java -version echo "Invoking java with args: $args" echo echo "To see the server console, execute this command in the container:" echo " screen -r minecraft" # Start 'er up cleanup() { screen -p 0 -S minecraft -X stuff save-all^M screen -p 0 -S minecraft -X stuff stop^M } trap cleanup EXIT screen -DmS minecraft java $args