#!/bin/bash
apt update
apt install -y jq curl
mkdir -p /mnt/server
cd /mnt/server
vercomp() {
if [[ $1 == $2 ]]
then
return 1
fi
local IFS=.
local i ver1=($1) ver2=($2)
for ((i=${#ver1[@]}; i<${#ver2[@]}; i++))
do
ver1[i]=0
done
for ((i=0; i<${#ver1[@]}; i++))
do
if [[ -z ${ver2[i]} ]]
then
ver2[i]=0
fi
if ((10#${ver1[i]} > 10#${ver2[i]}))
then
return 0
fi
if ((10#${ver1[i]} < 10#${ver2[i]}))
then
return 1
fi
done
return 1
}
FORGE_VERSION="$(echo "$FORGE_VERSION" | tr -d ' ')"
if [[ ! ${SERVER_JARFILE} = *\.jar ]]; then
SERVER_JARFILE="${SERVER_JARFILE}.jar"
fi
if [ -z ${SF_VERSION} ] || [ "$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION})" == "Unknown version" ]; then
echo -e "defaulting to recommended"
SF_VERSION="recommended"
fi
if [ "${SF_VERSION}" == "recommended" ]; then
echo -e "using recommended SpongeForge version"
SF_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/recommended | jq -r '.version')
echo -e "found SpongeForge Version ${SF_VERSION}"
SF_DL_LINK=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/recommended | jq -r '.artifacts."".url')
FORGE_DOWNLOAD_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/recommended | jq -r '.dependencies.forge')
echo -e "found Forge Version ${FORGE_DOWNLOAD_VERSION}"
MC_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.dependencies.minecraft')
elif [ "${SF_VERSION}" == "latest" ]; then
echo -e "using latest SpongForge version"
SF_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge | jq -r '.buildTypes.stable.latest.version')
echo -e "found SpongeForge Version ${SF_VERSION}"
SF_DL_LINK=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.artifacts."".url')
FORGE_DOWNLOAD_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.dependencies.forge')
MC_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.dependencies.minecraft')
else
echo -e "found SpongeForge Version ${SF_VERSION}"
SF_DL_LINK=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.artifacts."".url')
FORGE_DOWNLOAD_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.dependencies.forge')
echo -e "found Forge Version ${FORGE_DOWNLOAD_VERSION}"
MC_VERSION=$(curl -s https://dl-api.spongepowered.org/v1/org.spongepowered/spongeforge/downloads/${SF_VERSION} | jq -r '.dependencies.minecraft')
fi
if [[ ! -z ${FORGE_VERSION} ]]; then
if curl --output /dev/null --silent --head --fail https://maven.minecraftforge.net/net/minecraftforge/forge/${FORGE_VERSION}/forge-${FORGE_VERSION}-installer.jar; then
echo -e "Custom Forge Version found."
if [ ${MC_VERSION} != ${FORGE_VERSION%%-*} ]; then
echo -e "You need Forge Minecraft Version ${MC_VERSION}. Exiting now!"
exit 1
elif vercomp ${FORGE_DOWNLOAD_VERSION} ${FORGE_VERSION##*-}; then
echo -e "Forge Build Version must be greater than ${FORGE_DOWNLOAD_VERSION}. Exiting now!"
exit 1
else
FORGE_DOWNLOAD_VERSION=${FORGE_VERSION##*-}
fi
else
echo -e "Forge Version not found. Check if Version is spelled right. Exiting now!"
exit 1
fi
fi
FORGE_DL_LINK=https://maven.minecraftforge.net/net/minecraftforge/forge/${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}/forge-${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}
if [ -f server.jar ] && [ $(sha1sum server.jar | awk '{ print $1 }') == $(curl -s ${FORGE_DL_LINK}-universal.jar.sha1) ]; then
echo -e "Already have the correct forge version"
else
echo -e "Downloading forge version ${MC_VERSION} - ${FORGE_DOWNLOAD_VERSION}"
echo -e "running: curl -s -o installer.jar -o ${FORGE_DL_LINK}-installer.jar"
curl -s -o installer.jar ${FORGE_DL_LINK}-installer.jar
echo -e "running: curl -s -o ${SERVER_JARFILE} -o ${FORGE_DL_LINK}-universal.jar"
curl -s -o ${SERVER_JARFILE} ${FORGE_DL_LINK}-universal.jar
java -jar installer.jar --installServer
rm installer.jar forge-${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}-universal.jar forge-${MC_VERSION}-${FORGE_DOWNLOAD_VERSION}.jar
fi
if [ ! -d /mnt/server/mods/ ]; then
echo -e "making mods directory"
mkdir -p /mnt/server/mods/
fi
if [ -f /mnt/server/mods/spongeforge*.jar ]; then
mkdir -p /mnt/server/mods/old/
mv -f /mnt/server/mods/spongeforge*.jar /mnt/server/mods/old/spongeforge*.jar
fi
echo -e "running: curl -s ${SF_DL_LINK} -o /mnt/server/mods/spongeforge-${SF_VERSION}.jar"
curl -s ${SF_DL_LINK} -o /mnt/server/mods/spongeforge-${SF_VERSION}.jar
if [ ! -f server.properties ]; then
echo -e "Downloading MC server.properties"
curl -o server.properties https://raw.githubusercontent.com/ptero-eggs/game-eggs/main/minecraft/java/server.properties
fi
echo -e "Install for SpongeForge is complete"