diff --git a/testing/Dockerfile b/testing/Dockerfile index 0d9f903..d654c86 100644 --- a/testing/Dockerfile +++ b/testing/Dockerfile @@ -4,8 +4,19 @@ LABEL maintainer="fithwum" # Environment Variables ENV ACCEPT_EULA="" ENV GAME_PORT="" + +ENV MC_TYPE="" + ENV MC_VERSION="" -ENV JAVA_VERSION="25" +ENV QUILT_VERSION="" +ENV FORGE_VERSION="" +ENV NEOFORGED_VERSION="" +ENV FABRIC_VERSION="" +ENV FABRIC_INSTALLER_VERSION="" + +ENV JAVA_TYPE="" +ENV JAVA_VERSION="" + ENV XMX_SIZE="" ENV XMS_SIZE="" ENV XMN_SIZE="" diff --git a/testing/install_script.sh b/testing/install_script.sh index 6e1984a..cf2086c 100644 --- a/testing/install_script.sh +++ b/testing/install_script.sh @@ -8,10 +8,21 @@ EULA_MARKER=$MC_DIR/.eula_accepted VERSION_CHECK=$(curl -s "https://piston-meta.mojang.com/mc/game/version_manifest_v2.json" | grep -Pom 1 '"url": "\K[^"]*'$MC_VERSION'.json') MC_SERVER_FILE=$(curl -s $VERSION_CHECK | jq --raw-output '.downloads.server.url') -MC_RUN_FILE=https://gitea.fithwum.tech/fithwum/minecraft/raw/branch/master/vanilla/run.sh + +MC_VANILLA_RUN_FILE=https://gitea.fithwum.tech/fithwum/minecraft/raw/branch/master/vanilla/run.sh +FORGE_INSTALLER_FILE=https://maven.minecraftforge.net/net/minecraftforge/forge/$MC_VERSION-$FORGE_VERSION/forge-$MC_VERSION-$FORGE_VERSION-installer.jar +NEOFORGED_INSTALLER_FILE=https://maven.neoforged.net/releases/net/neoforged/neoforge/$NEOFORGED_VERSION/neoforge-$NEOFORGED_VERSION-installer.jar +FABRIC_SERVER_FILE=https://meta.fabricmc.net/v2/versions/loader/$MC_VERSION/$FABRIC_VERSION/$FABRIC_INSTALLER_VERSION/server/jar +MC_FABRIC_RUN_FILE=https://gitea.fithwum.tech/fithwum/minecraft/raw/branch/master/fabric/run.sh +QUILT_INSTALLER_FILE=https://quiltmc.org/api/v1/download-latest-installer/java-universal +MC_QUILT_RUN_FILE=https://gitea.fithwum.tech/fithwum/minecraft/raw/branch/master/quilt/run.sh +BUKKIT_INSTALLER_FILE=https://cdn.getbukkit.org/craftbukkit/craftbukkit-$MC_VERSION.jar +MC_BUKKIT_RUN_FILE=https://gitea.fithwum.tech/fithwum/minecraft/raw/branch/master/bukkit/run.sh # Install java -if dpkg -s openjdk-$JAVA_VERSION-jre-headless &> /dev/null +if [ "$JAVA_TYPE" = "openjdk" ]; then + echo "INFO ! openjdk selected" + if dpkg -s openjdk-$JAVA_VERSION-jre-headless &> /dev/null then echo "INFO ! openjdk-$JAVA_VERSION-jre-headless installed ... moving on." else @@ -19,48 +30,207 @@ if dpkg -s openjdk-$JAVA_VERSION-jre-headless &> /dev/null echo "WARNING ! openjdk-$JAVA_VERSION-jre-headless not installed ... will install now." apt-get update apt-get --no-install-recommends -y install openjdk-$JAVA_VERSION-jre-headless -fi + fi -# if dpkg -s msopenjdk-$JAVA_VERSION &> /dev/null -# then -# echo "INFO ! msopenjdk-$JAVA_VERSION installed ... moving on." -# else -# echo " " -# echo "WARNING ! msopenjdk-$JAVA_VERSION not installed ... will install now." -# wget https://packages.microsoft.com/config/debian/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \ -# dpkg -i packages-microsoft-prod.deb \ -# apt-get update && apt-get install -y msopenjdk-25 \ -# apt-get -y update && apt-get -y --fix-broken install -# fi +elif [ "$JAVA_TYPE" = "msopenjdk" ]; then + echo "INFO ! msopenjdk selected" + if dpkg -s msopenjdk-$JAVA_VERSION &> /dev/null + then + echo "INFO ! msopenjdk-$JAVA_VERSION installed ... moving on." + else + echo " " + echo "WARNING ! msopenjdk-$JAVA_VERSION not installed ... will install now." + wget https://packages.microsoft.com/config/debian/$(lsb_release -rs)/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \ + dpkg -i packages-microsoft-prod.deb \ + apt-get update && apt-get install -y msopenjdk-25 \ + apt-get -y update && apt-get -y --fix-broken install + fi + +else + echo "ERROR ! JAVA_TYPE must be set to on first run" + sleep infinity +fi # Main install (Debian). # Check for server files and download if needed. -if [ -e $MC_DIR/MCserver-$MC_VERSION.jar ] - then - echo " " - echo "INFO ! MCserver-$MC_VERSION.jar found starting now." - else - echo " " - echo "WARNING ! MCserver-$MC_VERSION.jar is out of date/missing ... will download now." - echo " " - echo "INFO ! Cleaning old files." - mkdir -p $MC_DIR/old-server-versions/ - mv $MC_DIR/MCserver-*.jar $MC_DIR/old-server-versions/ - wget --no-cache --show-progress --progress=bar:force:noscroll $MC_SERVER_FILE -O $MC_DIR/MCserver-$MC_VERSION.jar - chmod +x $MC_DIR/MCserver-$MC_VERSION.jar -fi +if [ "$MC_TYPE" = "vanilla" ]; then + echo "INFO ! Vanilla Selected" + if [ -e $MC_DIR/MCserver-$MC_VERSION.jar ] + then + echo " " + echo "INFO ! MCserver-$MC_VERSION.jar found starting now." + else + echo " " + echo "WARNING ! MCserver-$MC_VERSION.jar is out of date/missing ... will download now." + echo " " + echo "INFO ! Cleaning old files." + mkdir -p $MC_DIR/old-server-versions/ + mv $MC_DIR/MCserver-*.jar $MC_DIR/old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $MC_SERVER_FILE -O $MC_DIR/MCserver-$MC_VERSION.jar + chmod +x $MC_DIR/MCserver-$MC_VERSION.jar + fi + # Looking for run-${MC_VERSION}.sh + if [ -e $MC_DIR/run-$MC_VERSION.sh ] + then + echo " " + echo "INFO ! run-$MC_VERSION.sh found ... will use existing file." + else + echo " " + echo "WARNING ! run.sh is out of date/missing ... will download now." + mv $MC_DIR/run-*.sh $MC_DIR/old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $MC_VANILLA_RUN_FILE -O $MC_DIR/run-$MC_VERSION.sh + chmod +x $MC_DIR/run-$MC_VERSION.sh + fi -# Looking for run-${MC_VERSION}.sh -if [ -e $MC_DIR/run-$MC_VERSION.sh ] - then - echo " " - echo "INFO ! run-$MC_VERSION.sh found ... will use existing file." - else - echo " " - echo "WARNING ! run.sh is out of date/missing ... will download now." - mv $MC_DIR/run-*.sh $MC_DIR/old-server-versions/ - wget --no-cache --show-progress --progress=bar:force:noscroll $MC_RUN_FILE -O $MC_DIR/run-$MC_VERSION.sh - chmod +x $MC_DIR/run-$MC_VERSION.sh +elif [ "$MC_TYPE" = "forge" ]; then + echo "INFO ! Forge Selected" + if [ -e $MC_DIR/forge-$MC_VERSION-$FORGE_VERSION-installer.jar ] + then + echo " " + echo "INFO ! forge-$MC_VERSION-$FORGE_VERSION-installer.jar found starting now." + else + echo " " + echo "WARNING ! forge-$MC_VERSION-$FORGE_VERSION-installer.jar is out of date/missing ... will download now." + echo " " + echo "INFO ! Cleaning old files." + cd $MC_DIR + mkdir -p /old-server-versions/ + mv neoforge-*.jar old-server-versions/ + mv run-*.sh old-server-versions/ + mv /libraries /libraries_OLD + mv /libraries_OLD old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $FORGE_INSTALLER_FILE -O forge-$MC_VERSION-$FORGE_VERSION-installer.jar + chmod +x forge-$MC_VERSION-$FORGE_VERSION-installer.jar + java -jar forge-$MC_VERSION-$FORGE_VERSION-installer.jar --installServer + mv run.sh run-$MC_VERSION.sh + chmod +x run-$MC_VERSION.sh + cd .. + fi + +elif [ "$MC_TYPE" = "neoforged" ]; then + echo "INFO ! Neoforged Selected" + if [ -e $MC_DIR/neoforge-$NEOFORGED_VERSION-installer.jar ] + then + echo " " + echo "INFO ! neoforge-$NEOFORGED_VERSION-installer.jar found starting now." + else + echo " " + echo "WARNING ! neoforge-$NEOFORGED_VERSION-installer.jar is out of date/missing ... will download now." + echo " " + echo "INFO ! Cleaning old files." + cd $MC_DIR + mkdir -p /old-server-versions/ + mv neoforge-*.jar old-server-versions/ + mv run-*.sh old-server-versions/ + mv /libraries /libraries_OLD + mv /libraries_OLD old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $NEOFORGED_INSTALLER_FILE -O neoforge-$NEOFORGED_VERSION-installer.jar + chmod +x neoforge-$NEOFORGED_VERSION-installer.jar + java -jar neoforge-$NEOFORGED_VERSION-installer.jar --installServer + mv run.sh run-$MC_VERSION.sh + chmod +x run-$MC_VERSION.sh + cd .. + fi + +elif [ "$MC_TYPE" = "fabric" ]; then + echo "INFO ! Fabric Selected" + if [ -e $MC_DIR/fabric-$MC_VERSION-$FABRIC_VERSION.jar ] + then + echo " " + echo "INFO ! fabric-$MC_VERSION-$FABRIC_VERSION.jar found starting now." + else + echo " " + echo "WARNING ! fabric-$MC_VERSION-$FABRIC_VERSION.jar is out of date/missing ... will download now." + echo " " + echo "INFO ! Cleaning old files." + mkdir -p $MC_DIR/old-server-versions + mv $MC_DIR/fabric-*-*.jar $MC_DIR/old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $FABRIC_SERVER_FILE -O $MC_DIR/fabric-$MC_VERSION-$FABRIC_VERSION.jar + chmod +x $MC_DIR/fabric-$MC_VERSION-$FABRIC_VERSION.jar + fi + # Looking for run.sh + if [ -e $MC_DIR/run-$MC_VERSION.sh ] + then + echo " " + echo "INFO ! run-$MC_VERSION.sh found ... will use existing file." + else + echo " " + echo "WARNING ! run-$MC_VERSION.sh is out of date/missing ... will download now." + mv $MC_DIR/run-*.sh $MC_DIR/old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $MC_FABRIC_RUN_FILE -O $MC_DIR/run-$MC_VERSION.sh + chmod +x $MC_DIR/run-$MC_VERSION.sh + fi + +elif [ "$MC_TYPE" = "quilt" ]; then + echo "INFO ! Quilt Selected" + if [ -e $MC_DIR/quilt-installer-$QUILT_VERSION.jar ] + then + echo " " + echo "INFO ! quilt-installer-$QUILT_VERSION.jar found starting now." + else + echo " " + echo "WARNING ! quilt-installer-$QUILT_VERSION.jar is out of date/missing ... will download now." + echo " " + echo "INFO ! Cleaning old files." + cd $MC_DIR + mkdir -p /old-server-versions/ + mv quilt-installer-*.jar old-server-versions/ + mv /libraries /libraries_OLD + mv /libraries_OLD old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $QUILT_INSTALLER_FILE -O quilt-installer-$QUILT_VERSION.jar + chmod +x quilt-installer-$QUILT_VERSION.jar + java -jar quilt-installer-$QUILT_VERSION.jar install server $MC_VERSION --download-server + cd server + mv * /$MC_DIR + cd .. + rm -fr server + cd .. + fi + # Looking for run.sh + if [ -e $MC_DIR/run-$MC_VERSION.sh ] + then + echo " " + echo "INFO ! run-$MC_VERSION.sh found ... will use existing file." + else + echo " " + echo "WARNING ! run-$MC_VERSION.sh is out of date/missing ... will download now." + mv $MC_DIR/run-*.sh $MC_DIR/old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $MC_QUILT_RUN_FILE -O $MC_DIR/run-$MC_VERSION.sh + chmod +x $MC_DIR/run-$MC_VERSION.sh + fi + +elif [ "$MC_TYPE" = "bukkit" ]; then + echo "INFO ! Bukkit Selected" + if [ -e $MC_DIR/craftbukkit-$MC_VERSION.jar ] + then + echo " " + echo "INFO ! craftbukkit-$MC_VERSION.jar found starting now." + else + echo " " + echo "WARNING ! craftbukkit-$MC_VERSION.jar is out of date/missing ... will download now." + echo " " + echo "INFO ! Cleaning old files." + mkdir -p $MC_DIR/old-server-versions/ + mv $MC_DIR/craftbukkit-*.sh $MC_DIR/old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $BUKKIT_INSTALLER_FILE -O $MC_DIR/craftbukkit-$MC_VERSION.jar + chmod +x $MC_DIR/craftbukkit-$MC_VERSION.jar + fi + # Looking for run-${MC_VERSION}.sh + if [ -e $MC_DIR/run-$MC_VERSION.sh ] + then + echo " " + echo "INFO ! run-$MC_VERSION.sh found ... will use existing file." + else + echo " " + echo "WARNING ! run.sh is out of date/missing ... will download now." + mv $MC_DIR/run-*.sh $MC_DIR/old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $MC_BUKKIT_RUN_FILE -O $MC_DIR/run-$MC_VERSION.sh + chmod +x $MC_DIR/run-$MC_VERSION.sh + fi + +else + echo "ERROR ! MC_TYPE must be set first run" + sleep infinity fi echo "INFO ! Setting game port."