|
|
|
|
@@ -18,6 +18,8 @@ if [ ! -e /data/eula.txt ]; then
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
SERVER_PROPERTIES=/data/server.properties
|
|
|
|
|
FTB_DIR=/data/FeedTheBeast
|
|
|
|
|
VERSIONS_JSON=https://launchermeta.mojang.com/mc/game/version_manifest.json
|
|
|
|
|
|
|
|
|
|
echo "Checking version information."
|
|
|
|
|
@@ -75,7 +77,7 @@ function downloadSpigot {
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo "Downloading $match"
|
|
|
|
|
curl -fsSL -o $SERVER "$downloadUrl"
|
|
|
|
|
curl -kfsSL -o $SERVER "$downloadUrl"
|
|
|
|
|
status=$?
|
|
|
|
|
if [ ! -f $SERVER ]; then
|
|
|
|
|
echo "ERROR: failed to download from $downloadUrl (status=$status)"
|
|
|
|
|
@@ -121,15 +123,22 @@ function installForge {
|
|
|
|
|
TYPE=FORGE
|
|
|
|
|
norm=$VANILLA_VERSION
|
|
|
|
|
|
|
|
|
|
case $VANILLA_VERSION in
|
|
|
|
|
*.*.*)
|
|
|
|
|
norm=$VANILLA_VERSION ;;
|
|
|
|
|
*.*)
|
|
|
|
|
norm=${VANILLA_VERSION}.0 ;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
echo "Checking Forge version information."
|
|
|
|
|
case $FORGEVERSION in
|
|
|
|
|
RECOMMENDED)
|
|
|
|
|
curl -fsSL -o /tmp/forge.json http://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json
|
|
|
|
|
FORGE_VERSION=$(cat /tmp/forge.json | jq -r ".promos[\"$norm-recommended\"]")
|
|
|
|
|
FORGE_VERSION=$(cat /tmp/forge.json | jq -r ".promos[\"$VANILLA_VERSION-recommended\"]")
|
|
|
|
|
if [ $FORGE_VERSION = null ]; then
|
|
|
|
|
FORGE_VERSION=$(cat /tmp/forge.json | jq -r ".promos[\"$norm-latest\"]")
|
|
|
|
|
FORGE_VERSION=$(cat /tmp/forge.json | jq -r ".promos[\"$VANILLA_VERSION-latest\"]")
|
|
|
|
|
if [ $FORGE_VERSION = null ]; then
|
|
|
|
|
echo "ERROR: Version $FORGE_VERSION is not supported by Forge"
|
|
|
|
|
echo "ERROR: Version $VANILLA_VERSION is not supported by Forge"
|
|
|
|
|
echo " Refer to http://files.minecraftforge.net/ for supported versions"
|
|
|
|
|
exit 2
|
|
|
|
|
fi
|
|
|
|
|
@@ -141,25 +150,67 @@ function installForge {
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
# URL format changed for 1.7.10 from 10.13.2.1300
|
|
|
|
|
sorted=$( (echo $FORGE_VERSION; echo 10.13.2.1300) | sort | head -1)
|
|
|
|
|
if [[ $norm == '1.7.10' && $sorted == '10.13.2.1300' ]]; then
|
|
|
|
|
# if $FORGEVERSION >= 10.13.2.1300
|
|
|
|
|
normForgeVersion="$norm-$FORGE_VERSION-$norm"
|
|
|
|
|
normForgeVersion=$VANILLA_VERSION-$FORGE_VERSION-$norm
|
|
|
|
|
shortForgeVersion=$VANILLA_VERSION-$FORGE_VERSION
|
|
|
|
|
|
|
|
|
|
forgeFileNames="
|
|
|
|
|
$normForgeVersion/forge-$normForgeVersion-installer.jar
|
|
|
|
|
$shortForgeVersion/forge-$shortForgeVersion-installer.jar
|
|
|
|
|
END
|
|
|
|
|
"
|
|
|
|
|
|
|
|
|
|
FORGE_INSTALLER="/tmp/forge-$shortForgeVersion-installer.jar"
|
|
|
|
|
installMarker=".forge-installed-$shortForgeVersion"
|
|
|
|
|
|
|
|
|
|
if [ ! -e $installMarker ]; then
|
|
|
|
|
if [ ! -e $FORGE_INSTALLER ]; then
|
|
|
|
|
echo "Downloading $normForgeVersion"
|
|
|
|
|
for fn in $forgeFileNames; do
|
|
|
|
|
if [ $fn == END ]; then
|
|
|
|
|
echo "Unable to compute URL for $normForgeVersion"
|
|
|
|
|
exit 2
|
|
|
|
|
fi
|
|
|
|
|
downloadUrl=http://files.minecraftforge.net/maven/net/minecraftforge/forge/$fn
|
|
|
|
|
echo "...trying $downloadUrl"
|
|
|
|
|
if curl -o $FORGE_INSTALLER -fsSL $downloadUrl; then
|
|
|
|
|
break
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
echo "Installing Forge $shortForgeVersion"
|
|
|
|
|
mkdir -p mods
|
|
|
|
|
tries=3
|
|
|
|
|
while ((--tries >= 0)); do
|
|
|
|
|
java -jar $FORGE_INSTALLER --installServer
|
|
|
|
|
if [ $? == 0 ]; then
|
|
|
|
|
break
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
if (($tries < 0)); then
|
|
|
|
|
echo "Forge failed to install after several tries." >&2
|
|
|
|
|
exit 10
|
|
|
|
|
fi
|
|
|
|
|
SERVER=$(ls *forge*$shortForgeVersion*.jar)
|
|
|
|
|
if [ -z $SERVER ]; then
|
|
|
|
|
echo "Unable to derive server jar for Forge $shortForgeVersion"
|
|
|
|
|
exit 2
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo "Using server $SERVER"
|
|
|
|
|
echo $SERVER > $installMarker
|
|
|
|
|
fi
|
|
|
|
|
else
|
|
|
|
|
normForgeVersion="$norm-$FORGE_VERSION"
|
|
|
|
|
SERVER=$(cat $installMarker)
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
FORGE_INSTALLER="forge-$normForgeVersion-installer.jar"
|
|
|
|
|
SERVER="forge-$normForgeVersion-universal.jar"
|
|
|
|
|
function isURL {
|
|
|
|
|
local value=$1
|
|
|
|
|
|
|
|
|
|
downloadUrl="http://files.minecraftforge.net/maven/net/minecraftforge/forge/$normForgeVersion/$FORGE_INSTALLER"
|
|
|
|
|
|
|
|
|
|
if [ ! -e "$SERVER" ]; then
|
|
|
|
|
echo "Downloading $FORGE_INSTALLER ..."
|
|
|
|
|
wget -q $downloadUrl
|
|
|
|
|
echo "Installing $SERVER"
|
|
|
|
|
java -jar $FORGE_INSTALLER --installServer
|
|
|
|
|
if [[ ${value:0:8} == "https://" || ${value:0:7} = "http://" ]]; then
|
|
|
|
|
return 0
|
|
|
|
|
else
|
|
|
|
|
return 1
|
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -174,6 +225,20 @@ function installFTB {
|
|
|
|
|
exit 2
|
|
|
|
|
fi
|
|
|
|
|
local srv_modpack=${FTB_SERVER_MOD}
|
|
|
|
|
if isURL ${srv_modpack}; then
|
|
|
|
|
case $srv_modpack in
|
|
|
|
|
*/download)
|
|
|
|
|
break;;
|
|
|
|
|
*)
|
|
|
|
|
srv_modpack=${srv_modpack}/download;;
|
|
|
|
|
esac
|
|
|
|
|
local file=$(basename $(dirname $srv_modpack))
|
|
|
|
|
local downloaded=/data/${file}.zip
|
|
|
|
|
echo "Downloading FTB modpack...
|
|
|
|
|
$srv_modpack -> $downloaded"
|
|
|
|
|
curl -sSL -o $downloaded $srv_modpack
|
|
|
|
|
srv_modpack=$downloaded
|
|
|
|
|
fi
|
|
|
|
|
if [[ ${srv_modpack:0:5} == "data/" ]]; then
|
|
|
|
|
# Prepend with "/"
|
|
|
|
|
srv_modpack=/${srv_modpack}
|
|
|
|
|
@@ -193,12 +258,12 @@ function installFTB {
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
echo "Unpacking FTB server modpack ${srv_modpack} ..."
|
|
|
|
|
local ftb_dir=/data/FeedTheBeast
|
|
|
|
|
mkdir -p ${ftb_dir}
|
|
|
|
|
unzip -o ${srv_modpack} -d ${ftb_dir}
|
|
|
|
|
cp -f /data/eula.txt ${ftb_dir}/eula.txt
|
|
|
|
|
FTB_SERVER_START=${ftb_dir}/ServerStart.sh
|
|
|
|
|
mkdir -p ${FTB_DIR}
|
|
|
|
|
unzip -o ${srv_modpack} -d ${FTB_DIR}
|
|
|
|
|
cp -f /data/eula.txt ${FTB_DIR}/eula.txt
|
|
|
|
|
FTB_SERVER_START=${FTB_DIR}/ServerStart.sh
|
|
|
|
|
chmod a+x ${FTB_SERVER_START}
|
|
|
|
|
sed -i "s/-jar/-Dfml.queryResult=confirm -jar/" ${FTB_SERVER_START}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function installVanilla {
|
|
|
|
|
@@ -303,8 +368,8 @@ if [[ "$MODPACK" ]]; then
|
|
|
|
|
case "X$MODPACK" in
|
|
|
|
|
X[Hh][Tt][Tt][Pp]*[Zz][iI][pP])
|
|
|
|
|
echo "Downloading mod/plugin pack via HTTP"
|
|
|
|
|
echo "$MODPACK"
|
|
|
|
|
wget -q -O /tmp/modpack.zip "$MODPACK"
|
|
|
|
|
echo " from $MODPACK ..."
|
|
|
|
|
curl -sSL -o /tmp/modpack.zip "$MODPACK"
|
|
|
|
|
if [ "$TYPE" = "SPIGOT" ]; then
|
|
|
|
|
mkdir -p /data/plugins
|
|
|
|
|
unzip -o -d /data/plugins /tmp/modpack.zip
|
|
|
|
|
@@ -430,7 +495,7 @@ if [ ! -e server.properties ]; then
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
sed -i "/gamemode\s*=/ c gamemode=$MODE" /data/server.properties
|
|
|
|
|
sed -i "/gamemode\s*=/ c gamemode=$MODE" $SERVER_PROPERTIES
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
@@ -467,12 +532,12 @@ if [ ! -e banned-ips.json ]; then
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# If any modules have been provided, copy them over
|
|
|
|
|
[ -d /data/mods ] || mkdir /data/mods
|
|
|
|
|
for m in /mods/*.jar
|
|
|
|
|
mkdir -p /data/mods
|
|
|
|
|
for m in /mods/*.{jar,zip}
|
|
|
|
|
do
|
|
|
|
|
if [ -f "$m" ]; then
|
|
|
|
|
if [ -f "$m" -a ! -f "/data/mods/$m" ]; then
|
|
|
|
|
echo Copying mod `basename "$m"`
|
|
|
|
|
cp -f "$m" /data/mods
|
|
|
|
|
cp "$m" /data/mods
|
|
|
|
|
fi
|
|
|
|
|
done
|
|
|
|
|
[ -d /data/config ] || mkdir /data/config
|
|
|
|
|
@@ -491,18 +556,25 @@ if [ "$TYPE" = "SPIGOT" ]; then
|
|
|
|
|
fi
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
if [[ $CONSOLE = false ]]; then
|
|
|
|
|
EXTRA_ARGS=--noconsole
|
|
|
|
|
else
|
|
|
|
|
EXTRA_ARGS=""
|
|
|
|
|
EXTRA_ARGS=""
|
|
|
|
|
# Optional disable console
|
|
|
|
|
if [[ ${CONSOLE} = false || ${CONSOLE} = FALSE ]]; then
|
|
|
|
|
EXTRA_ARGS+="--noconsole"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# Optional disable GUI for headless servers
|
|
|
|
|
if [[ ${GUI} = false || ${GUI} = FALSE ]]; then
|
|
|
|
|
EXTRA_ARGS="${EXTRA_ARGS} nogui"
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
# put these prior JVM_OPTS at the end to give any memory settings there higher precedence
|
|
|
|
|
echo "Setting initial memory to ${INIT_MEMORY:-${MEMORY}} and max to ${MAX_MEMORY:-${MEMORY}}"
|
|
|
|
|
JVM_OPTS="-Xms${INIT_MEMORY:-${MEMORY}} -Xmx${MAX_MEMORY:-${MEMORY}} ${JVM_OPTS}"
|
|
|
|
|
|
|
|
|
|
set -x
|
|
|
|
|
if [[ ${TYPE} == "FEED-THE-BEAST" ]]; then
|
|
|
|
|
cp -f $SERVER_PROPERTIES ${FTB_DIR}/server.properties
|
|
|
|
|
cp -f /data/{eula,ops,white-list}.txt ${FTB_DIR}/
|
|
|
|
|
cd ${FTB_DIR}
|
|
|
|
|
echo "Running FTB server modpack start ..."
|
|
|
|
|
exec sh ${FTB_SERVER_START}
|
|
|
|
|
else
|
|
|
|
|
|