63 lines
1.6 KiB
Bash
Executable File
63 lines
1.6 KiB
Bash
Executable File
#! /bin/bash
|
|
#
|
|
# start-server.sh
|
|
# Copyright (C) 2021 Vintage Salt <rehashedsalt@cock.li>
|
|
#
|
|
# 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 --no-perms --no-owner --no-group --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
|
|
|