diff --git a/.gitea/workflows/pipeline.yml b/.gitea/workflows/pipeline.yml index 1bbe6d1..643825a 100644 --- a/.gitea/workflows/pipeline.yml +++ b/.gitea/workflows/pipeline.yml @@ -21,7 +21,7 @@ env: IMAGE_REPO_MINECRAFT: minecraft IMAGE_TAG_DEBIAN: bookworm DIGEST_FILE: .cache/debian-base.digest - VERSIONS: vanilla testing-vanilla fabric testing-fabric + VERSIONS: vanilla testing-vanilla fabric testing-fabric neoforged testing-neoforged jobs: poll-debian-base-and-detect-changes: @@ -149,7 +149,7 @@ jobs: needs.poll-debian-base-and-detect-changes.outputs.new_versions != '' strategy: matrix: - version: [vanilla, testing-vanilla, fabric, testing-fabric] + version: [vanilla, testing-vanilla, fabric, testing-fabric, neoforged, testing-neoforged] name: Build and Push ${{ matrix.version }} steps: - name: Checkout repo diff --git a/neoforged/Dockerfile b/neoforged/Dockerfile index 008807b..7828846 100644 --- a/neoforged/Dockerfile +++ b/neoforged/Dockerfile @@ -1,12 +1,16 @@ FROM gitea.fithwum.tech/fithwum/debian-base:bookworm LABEL maintainer="fithwum" -ENV ACCEPT_EULA="false" -ENV GAME_PORT=25565 -ENV FORGE_URL=https://maven.minecraftforge.net/net/minecraftforge/forge/1.19.2-43.2.0/forge-1.19.2-43.2.0-installer.jar +ENV ACCEPT_EULA="" +ENV GAME_PORT="" +ENV SERVER_VERSION="" +ENV NEOFORGED_VERSION="" +ENV XMX_SIZE="" +ENV XMS_SIZE="" +ENV XMN_SIZE="" # URL's for files -ARG INSTALL_SCRIPT=https://gitea.fithwum.tech/fithwum/minecraft/raw/branch/master/forge/Install_Script.sh +ARG INSTALL_SCRIPT=https://gitea.fithwum.tech/fithwum/minecraft/raw/branch/master/neoforged/Install_Script.sh # Install java-17 & Dependencies. RUN apt-get -y update && apt-get -y autoclean && apt-get -y autoremove \ @@ -22,10 +26,7 @@ RUN apt-get -y update && apt-get -y --fix-broken install \ RUN mkdir -p /MCserver /MCtemp \ && chmod 777 -R /MCserver /MCtemp \ && chown 99:100 -R /MCserver /MCtemp \ - && cd /MCserver \ - && wget $FORGE_URL -O forge-1.19.2-43.2.0-installer.jar \ - && java -jar forge-1.19.2-43.2.0-installer.jar --installServer \ - && rm -frv forge-1.19.2-43.2.0-installer.jar forge-1.19.2-43.2.0-installer.jar.log + && cd /MCserver ADD "$INSTALL_SCRIPT" /MCtemp RUN chmod +x /MCtemp/Install_Script.sh diff --git a/neoforged/Install_Script.sh b/neoforged/Install_Script.sh index e6ec577..8a43dd4 100644 --- a/neoforged/Install_Script.sh +++ b/neoforged/Install_Script.sh @@ -2,71 +2,101 @@ # Copyright (c) 2022 fithwum # All rights reserved -# Variables. -echo " " -echo "INFO ! Checking for latest Minecraft Server version." -MC_VERSION=1.19.2 +# Main Install Links +INSTALLER_FILE=https://maven.neoforged.net/releases/net/neoforged/neoforge/$NEOFORGED_VERSION-beta/neoforge-$NEOFORGED_VERSION-beta-installer.jar +SERVER_FILE=https://github.com/neoforged/ServerStarterJar/releases/download/$SERVER_VERSION/server.jar +MC_RUN_FILE=https://gitea.fithwum.tech/fithwum/minecraft/raw/branch/master/fabric/run.sh -EULA_FILE=https://raw.githubusercontent.com/fithwum/minecraft/refs/heads/master/forge/forge-${MC_VERSION}/files/eula.txt -OPS_FILE=https://raw.githubusercontent.com/fithwum/minecraft/refs/heads/master/forge/forge-${MC_VERSION}/files/ops.json -WHITELIST_FILE=https://raw.githubusercontent.com/fithwum/minecraft/refs/heads/master/forge/forge-${MC_VERSION}/files/whitelist.json +rm -fr /MCserver/run_*.sh # Main install (Debian). -# Check for files in /MCserver and download if needed. -# Looking for run-forge_${MC_VERSION}.sh -if [ -e /MCserver/run-forge_${MC_VERSION}.sh ] +# Check for server files and download if needed. +if [ -e /MCserver/server-$NEOFORGED_VERSION.jar ] then echo " " - echo "INFO ! run-forge_${MC_VERSION}.sh found ... will use existing file." + echo "INFO ! server-$NEOFORGED_VERSION.jar found starting now." else echo " " - echo "WARNING ! run-forge_${MC_VERSION_OLD}.sh is out of date/missing ... will download now." - mv /MCserver/run.sh /MCserver/run-forge_${MC_VERSION}.sh + echo "WARNING ! server-$NEOFORGED_VERSION.jar is out of date/missing ... will download now." + echo " " + echo "INFO ! Cleaning old files." + rm -fr /MCserver/neoforge-*.jar /MCserver/server-*.jar + wget --no-cache --show-progress --progress=bar:force:noscroll $INSTALLER_FILE -O /MCserver/neoforge-$NEOFORGED_VERSION-beta-installer.jar + java -jar neoforge-$NEOFORGED_VERSION-beta-installer.jar --installServer + wget --no-cache --show-progress --progress=bar:force:noscroll $SERVER_FILE -O /MCserver/server-$NEOFORGED_VERSION.jar fi -# Check for needed files -if [ -e /MCserver/eula.txt ] +sleep 1 + +# Looking for run.sh +if [ -e /MCserver/run-$NEOFORGED_VERSION.sh ] then echo " " - echo "INFO ! eula.txt found ... will use existing file." + echo "INFO ! run-$NEOFORGED_VERSION.sh found ... will use existing file." else echo " " - echo "WARNING ! eula.txt is missing ... will download now." - wget --no-cache ${EULA_FILE} -O /MCserver/eula.txt + echo "WARNING ! run-$NEOFORGED_VERSION.sh is out of date/missing ... will download now." + rm -fr /MCserver/run-*.sh + wget --no-cache --show-progress --progress=bar:force:noscroll $MC_RUN_FILE -O /MCserver/run-$NEOFORGED_VERSION.sh fi -if [ -e /MCserver/ops.json ] - then - echo " " - echo "INFO ! ops.json found ... will use existing file." - else - echo " " - echo "WARNING ! ops.json is missing ... will download now." - wget --no-cache ${OPS_FILE} -O /MCserver/ops.json +# Check for EULA +if [ ! -f /MCserver/eula.txt ]; then + : +else + if [ "$ACCEPT_EULA" == "false" ]; then + if grep -rq 'eula=true' /MCserver/eula.txt; then + sed -i '/eula=true/c\eula=false' /MCserver/eula.txt + fi + echo " " + echo "WARNING ! EULA not accepted, you must accept the EULA" + echo " to start the Server, putting server in sleep mode" + sleep infinity + fi fi -if [ -e /MCserver/whitelist.json ] - then +sleep 1 + +if [ ! -f /MCserver/eula.txt ]; then + echo " " + echo "WARNING ! EULA not found please stand by..." + sleep 5 +fi +if [ "$ACCEPT_EULA" == "true" ]; then + if grep -rq 'eula=false' /MCserver/eula.txt; then + sed -i '/eula=false/c\eula=true' /MCserver/eula.txt echo " " - echo "INFO ! whitelist.json found ... will use existing file." - else - echo " " - echo "WARNING ! whitelist.json is missing ... will download now." - wget --no-cache ${WHITELIST_FILE} -O /MCserver/whitelist.json + echo "INFO ! EULA accepted, server restarting, please wait..." + sleep 1 + exec /MCserver/run-$NEOFORGED_VERSION.sh --dataPath=/MCserver + exit 0 + fi +elif [ "$ACCEPT_EULA" == "false" ]; then + echo " " + echo "WARNING ! EULA not accepted, you must accept the EULA" + echo " to start the Server, putting server in sleep mode" + sleep infinity +else + echo " " + echo "WARNING ! Something went wrong, please check EULA variable" fi +sleep 1 +echo "INFO ! Setting game port." +sed -i '/server-port='*'/c\server-port='$GAME_PORT'' /MCserver/server.properties sleep 1 # Set permissions. chown 99:100 -R /MCserver chmod 777 -R /MCserver -chmod +x /MCserver/run-forge_${MC_VERSION}.sh +chmod +x /MCserver/run-$NEOFORGED_VERSION.sh +chmod +x /MCserver/neoforge-$NEOFORGED_VERSION-beta-installer.jar sleep 1 # Run Minecraft server. echo " " -echo "INFO ! Starting Minecraft Server ${MC_VERSION}" -exec /MCserver/run-forge_${MC_VERSION}.sh --dataPath=/MCserver +echo "INFO ! Starting Minecraft Server $NEOFORGED_VERSION" +exec /MCserver/run-$NEOFORGED_VERSION.sh --dataPath=/MCserver -exit +exit \ No newline at end of file diff --git a/neoforged/run.sh b/neoforged/run.sh new file mode 100644 index 0000000..c063690 --- /dev/null +++ b/neoforged/run.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Copyright (c) 2022 fithwum +# All rights reserved + +cd /MCserver +JAR=./server-*.jar + +while [ true ]; do + java -Xmx$XMX_SIZE -Xms$XMS_SIZE -Xmn$XMN_SIZE -Dbungee.epoll=false -jar $JAR nogui + if [ $? -eq 0 ]; then + break + fi +done \ No newline at end of file diff --git a/testing-neoforged/Dockerfile b/testing-neoforged/Dockerfile new file mode 100644 index 0000000..3dfe870 --- /dev/null +++ b/testing-neoforged/Dockerfile @@ -0,0 +1,40 @@ +FROM gitea.fithwum.tech/fithwum/debian-base:bookworm +LABEL maintainer="fithwum" + +ENV ACCEPT_EULA="" +ENV GAME_PORT="" +ENV NEOFORGE_VERSION="" +ENV XMX_SIZE="" +ENV XMS_SIZE="" +ENV XMN_SIZE="" + +# URL's for files +ARG INSTALL_SCRIPT=https://gitea.fithwum.tech/fithwum/minecraft/raw/branch/master/neoforged/Install_Script.sh + +# Install java-17 & Dependencies. +RUN apt-get -y update && apt-get -y autoclean && apt-get -y autoremove \ + && apt-get install -y wget +RUN wget https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O packages-microsoft-prod.deb \ + && dpkg -i packages-microsoft-prod.deb +RUN apt-get -y update && apt-get -y --fix-broken install \ + && apt-get install -y --no-install-recommends msopenjdk-21 bzip2 lsb-release screen jq \ + && rm -rf /var/lib/apt/lists/* \ + && update-ca-certificates -f; + +# Folder creation. +RUN mkdir -p /MCserver /MCtemp \ + && chmod 777 -R /MCserver /MCtemp \ + && chown 99:100 -R /MCserver /MCtemp \ + && cd /MCserver + +ADD "$INSTALL_SCRIPT" /MCtemp +RUN chmod +x /MCtemp/Install_Script.sh + +# Directory where data is stored +VOLUME /MCserver + +# 25565 Default. +EXPOSE 25565/udp 25565/tcp + +# Run command +CMD [ "/bin/bash", "./MCtemp/Install_Script.sh" ] diff --git a/testing-neoforged/Install_Script.sh b/testing-neoforged/Install_Script.sh new file mode 100644 index 0000000..a95909a --- /dev/null +++ b/testing-neoforged/Install_Script.sh @@ -0,0 +1,100 @@ +#!/bin/bash +# Copyright (c) 2022 fithwum +# All rights reserved + +# Main Install Links +SERVER_FILE=https://maven.neoforged.net/releases/net/neoforged/neoforge/$NEOFORGE_VERSION-beta/neoforge-$NEOFORGE_VERSION-beta-installer.jar +MC_RUN_FILE=https://gitea.fithwum.tech/fithwum/minecraft/raw/branch/master/fabric/run.sh + +rm -fr /MCserver/run_*.sh + +# Main install (Debian). +# Check for server files and download if needed. +if [ -e /MCserver/neoforge-$NEOFORGE_VERSION-beta-installer.jar ] + then + echo " " + echo "INFO ! neoforge-$NEOFORGE_VERSION-beta-installer.jar found installing now." + else + echo " " + echo "WARNING ! neoforge-$NEOFORGE_VERSION-beta-installer.jar is out of date/missing ... will download now." + echo " " + echo "INFO ! Cleaning old files." + mkdir /MCserver/old-server-versions + mv /MCserver/fabric-*-*.jar /MCserver/old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $SERVER_FILE -O /MCserver/neoforge-$NEOFORGE_VERSION-beta-installer.jar +fi + +sleep 1 + +# Looking for run.sh +if [ -e /MCserver/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 /MCserver/run-*.sh /MCserver/old-server-versions/ + wget --no-cache --show-progress --progress=bar:force:noscroll $MC_RUN_FILE -O /MCserver/run-$MC_VERSION.sh +fi + +# Check for EULA +if [ ! -f /MCserver/eula.txt ]; then + : +else + if [ "$ACCEPT_EULA" == "false" ]; then + if grep -rq 'eula=true' /MCserver/eula.txt; then + sed -i '/eula=true/c\eula=false' /MCserver/eula.txt + fi + echo " " + echo "WARNING ! EULA not accepted, you must accept the EULA" + echo " to start the Server, putting server in sleep mode" + sleep infinity + fi +fi + +sleep 1 + +if [ ! -f /MCserver/eula.txt ]; then + echo " " + echo "WARNING ! EULA not found please stand by..." + sleep 5 +fi +if [ "$ACCEPT_EULA" == "true" ]; then + if grep -rq 'eula=false' /MCserver/eula.txt; then + sed -i '/eula=false/c\eula=true' /MCserver/eula.txt + echo " " + echo "INFO ! EULA accepted, server restarting, please wait..." + sleep 1 + exec /MCserver/run-$MC_VERSION.sh --dataPath=/MCserver + exit 0 + fi +elif [ "$ACCEPT_EULA" == "false" ]; then + echo " " + echo "WARNING ! EULA not accepted, you must accept the EULA" + echo " to start the Server, putting server in sleep mode" + sleep infinity +else + echo " " + echo "WARNING ! Something went wrong, please check EULA variable" +fi + +sleep 1 +echo "INFO ! Setting game port." +sed -i '/server-port='*'/c\server-port='$GAME_PORT'' /MCserver/server.properties +sleep 1 + +# Set permissions. +chown 99:100 -R /MCserver +chmod 777 -R /MCserver +chmod +x /MCserver/run-$MC_VERSION.sh +chmod +x /MCserver/neoforge-$NEOFORGE_VERSION-beta-installer.jar + +sleep 1 + +# Run Minecraft server. +echo " " +echo "INFO ! Starting Minecraft Server $MC_VERSION" +exec /MCserver/run-$MC_VERSION.sh --dataPath=/MCserver + +exit \ No newline at end of file diff --git a/testing-neoforged/eula.txt b/testing-neoforged/eula.txt new file mode 100644 index 0000000..9721c7a --- /dev/null +++ b/testing-neoforged/eula.txt @@ -0,0 +1,3 @@ +#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula). +#Mon Jul 13 15:34:07 PDT 2020 +eula=true diff --git a/testing-neoforged/ops.json b/testing-neoforged/ops.json new file mode 100644 index 0000000..33686a5 --- /dev/null +++ b/testing-neoforged/ops.json @@ -0,0 +1,14 @@ +[ + { + "uuid": "e9191443-8706-461c-a4a9-6b12b86f7fc0", + "name": "fithwum", + "level": 4, + "bypassesPlayerLimit": true + }, + { + "uuid": "fb505f65-bfb5-45f7-8e16-16ce5ef09eb2", + "name": "Lacarthian", + "level": 4, + "bypassesPlayerLimit": true + } +] \ No newline at end of file diff --git a/testing-neoforged/run.sh b/testing-neoforged/run.sh new file mode 100644 index 0000000..c9e2f8b --- /dev/null +++ b/testing-neoforged/run.sh @@ -0,0 +1,13 @@ +#!/bin/bash +# Copyright (c) 2022 fithwum +# All rights reserved + +cd /MCserver +JAR=./server.jar + +while [ true ]; do + java -Xmx$XMX_SIZE -Xms$XMS_SIZE -Xmn$XMN_SIZE -Dbungee.epoll=false -jar $JAR nogui + if [ $? -eq 0 ]; then + break + fi +done \ No newline at end of file diff --git a/testing-neoforged/whitelist.json b/testing-neoforged/whitelist.json new file mode 100644 index 0000000..8db31e4 --- /dev/null +++ b/testing-neoforged/whitelist.json @@ -0,0 +1,38 @@ +[ + { + "uuid": "9b8d4ecf-beae-4277-ba52-7c9d25bb1968", + "name": "DHRmike" + }, + { + "uuid": "6218840a-7cba-4eb6-aec2-5246f2152c8a", + "name": "lordWiseman28" + }, + { + "uuid": "e9191443-8706-461c-a4a9-6b12b86f7fc0", + "name": "fithwum" + }, + { + "uuid": "62bb6a62-c176-4ad7-a49d-e5b2ce0954cf", + "name": "OzyWizard" + }, + { + "uuid": "fb505f65-bfb5-45f7-8e16-16ce5ef09eb2", + "name": "Lacarthian" + }, + { + "uuid": "a90f9d4e-33d5-4855-9be5-de025b707f54", + "name": "Drakaul" + }, + { + "uuid": "f4d00276-62f4-4d30-a085-998c71916ecd", + "name": "___ORANGE___" + }, + { + "uuid": "27b719c4-daf3-429b-af2d-da3aab113f79", + "name": "Rekage_" + }, + { + "uuid": "d02f2de9-d414-42e2-b2fd-ec18bc2625ef", + "name": "Izzy761" + } +] \ No newline at end of file