Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
c3ab66f
Update install
undiscoveredboy-dev Feb 28, 2025
6b4119b
Update PaperInstall
undiscoveredboy-dev Feb 28, 2025
461be74
Update startserver
undiscoveredboy-dev Feb 28, 2025
7ab1324
Update install
undiscoveredboy-dev Feb 28, 2025
84057cf
Update install
undiscoveredboy-dev Feb 28, 2025
7f76964
Update install
undiscoveredboy-dev Feb 28, 2025
6390424
Update FabricInstall
undiscoveredboy-dev Mar 13, 2025
59db968
Update FabricInstall
undiscoveredboy-dev Mar 13, 2025
53807de
Patch Java
undiscoveredboy-dev Jan 20, 2026
8a620c5
Refactor install script for improved clarity
undiscoveredboy-dev Jan 20, 2026
610b2df
Update startJavaServer
undiscoveredboy-dev Jan 20, 2026
20395e0
Remove JDK 21 installation and add AFK monitor
undiscoveredboy-dev Jan 20, 2026
4509318
Enhance installJava script for version handling
undiscoveredboy-dev Jan 20, 2026
d837c03
Refactor RAM detection and usage calculation
undiscoveredboy-dev Jan 20, 2026
4626b96
Update prompt for server installation choice
undiscoveredboy-dev Jan 20, 2026
91c262c
Update read command for user input prompts
undiscoveredboy-dev Jan 20, 2026
b2b056f
Update installJava
undiscoveredboy-dev Jan 20, 2026
05e7734
Refactor Paper installation script for clarity
undiscoveredboy-dev Jan 20, 2026
4a3fab3
Refactor VanillaInstall script for improved clarity
undiscoveredboy-dev Jan 20, 2026
5479906
Refactor Fabric installation script for clarity
undiscoveredboy-dev Jan 20, 2026
41cb664
Refactor ForgeInstall script for clarity and functionality
undiscoveredboy-dev Jan 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
45 changes: 22 additions & 23 deletions JavaInstallScripts/FabricInstall
Original file line number Diff line number Diff line change
@@ -1,36 +1,35 @@
#!/bin/bash
sudo apt update -qq
set -e

sudo apt update -qq
sudo apt install -y -qq curl jq unzip dos2unix wget

cd ..
mkdir -p server
cd server

echo -e 'Please check if your mc version is available: https://meta.fabricmc.net/v2/versions/game'
echo -e '\n> Enter Minecraft version: '
read MC_VERSION
MC_VERSION="${MC_VERSION:-latest}"
echo "> Using Minecraft version: $MC_VERSION"

SERVER_JARFILE=server.jar
FABRIC_VERSION=latest

if [ -z "$MC_VERSION" ]; then
$MC_VERSION=latest
echo -e 'continuing with the latest version'
if [ "$MC_VERSION" = "latest" ]; then
MC_VERSION=$(curl -s https://meta.fabricmc.net/v2/versions/game \
| jq -r '.[] | select(.stable==true) | .version' | head -n1)
elif [ "$MC_VERSION" = "snapshot" ]; then
MC_VERSION=$(curl -s https://meta.fabricmc.net/v2/versions/game \
| jq -r '.[] | select(.stable==false) | .version' | head -n1)
fi

# -- EDIT HERE | DO NOT EDIT ABOVE -- #
SERVER_JARFILE=server.jar # LEAVE THIS PART ALONE
FABRIC_VERSION=latest # FABRIC_VERSION: https://meta.fabricmc.net/v2/versions/installer
# -- EDIT HERE | DO NOT EDIT BELOW -- #
[ "$FABRIC_VERSION" = "latest" ] && \
FABRIC_VERSION=$(curl -s https://meta.fabricmc.net/v2/versions/installer | jq -r '.[0].version')

wget -q -O fabric-installer.jar \
https://maven.fabricmc.net/net/fabricmc/fabric-installer/$FABRIC_VERSION/fabric-installer-$FABRIC_VERSION.jar

# Enable snapshots
if [ -z "$MC_VERSION" ] || [ "$MC_VERSION" == "latest" ]; then
MC_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/game | jq -r '.[] | select(.stable== true )|.version' | head -n1)
elif [ "$MC_VERSION" == "snapshot" ]; then
MC_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/game | jq -r '.[] | select(.stable== false )|.version' | head -n1)
fi
java -jar fabric-installer.jar server \
-mcversion "$MC_VERSION" \
-downloadMinecraft

if [ -z "$FABRIC_VERSION" ] || [ "$FABRIC_VERSION" == "latest" ]; then
FABRIC_VERSION=$(curl -sSL https://meta.fabricmc.net/v2/versions/installer | jq -r '.[0].version')
fi
wget -O fabric-installer.jar https://maven.fabricmc.net/net/fabricmc/fabric-installer/$FABRIC_VERSION/fabric-installer-$FABRIC_VERSION.jar
java -jar fabric-installer.jar server -mcversion $MC_VERSION -downloadMinecraft
echo -e "Install Complete"
echo "> Fabric install complete"
175 changes: 88 additions & 87 deletions JavaInstallScripts/ForgeInstall
Original file line number Diff line number Diff line change
Expand Up @@ -4,140 +4,141 @@ sudo apt update -qq
sudo apt install -y -qq jq curl

export MAIN_DIR=$(pwd)
echo -e 'fetching forge versions data...'
JSON_DATA=`curl -sSL https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json`
echo -e '> fetching forge versions data...'

JSON_DATA=$(curl -sSL https://files.minecraftforge.net/maven/net/minecraftforge/forge/promotions_slim.json)
FILE_SITE=https://maven.minecraftforge.net/net/minecraftforge/forge/
echo $MAIN_DIR

cd ..
rm ./startJavaServer
wget https://raw.githubusercontent.com/lordofwizard/mcserver/main/startJavaServer
rm -f ./startJavaServer
wget -q https://raw.githubusercontent.com/lordofwizard/mcserver/main/startJavaServer
chmod +x ./startJavaServer

mkdir -p server
cd server

echo -e '\nPlease visit https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json to check for available versions and choose accordingly'
# MC_VERSION : BUILD_TYPE: https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json
echo -e "\n> Enter Forge build type(default 1):"
echo -e "Type [1] recommended"
echo -e "Type [2] latest"
echo -e '\n> Visit https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json for available versions'

# -----------------------------
# Forge build type selection
# -----------------------------
echo -e "\n> Enter Forge build type (default 1):"
echo -e " [1] recommended"
echo -e " [2] latest"
read BUILD_TYPE

# if no build type, use recommended
[[ -z $BUILD_TYPE ]] && BUILD_TYPE=1

if [[ $BUILD_TYPE -eq 1 ]]; then
BUILD_TYPE=recommended

BUILD_TYPE=recommended
elif [[ $BUILD_TYPE -eq 2 ]]; then
BUILD_TYPE=latest

BUILD_TYPE=latest
else
echo -e "Please enter the appropriate number"
cd "$MAIN_DIR"
./ForgeInstall
exit
echo -e "> Invalid option"
cd "$MAIN_DIR"
./ForgeInstall
exit 1
fi

echo -e "you chose $BUILD_TYPE"
echo -e "> Build type selected: $BUILD_TYPE"

echo -e "\n> Enter minecraft version: "
read MC_VERSION
# -----------------------------
# Minecraft version (FROM ENV)
# -----------------------------
MC_VERSION="${MC_VERSION:-latest}"
echo -e "\n> Using Minecraft version: $MC_VERSION"

if [ -z $MC_VERSION ] || [ "$MC_VERSION" == "latest" ]; then
MC_VERSION=`echo -e ${JSON_DATA} | jq -r '.promos | to_entries[] | .key | select(contains("latest")) | split("-")[0]' | sort -t. -k2,2n -k3,3n -k4,4n | tail -1`
if [ "$MC_VERSION" == "latest" ]; then
MC_VERSION=$(echo "${JSON_DATA}" | jq -r '.promos | to_entries[] | .key | select(contains("latest")) | split("-")[0]' \
| sort -t. -k2,2n -k3,3n -k4,4n | tail -1)
fi

if [ ! -z $FORGE_VERSION ]; then
DOWNLOAD_LINK=https://maven.minecraftforge.net/net/minecraftforge/forge/${FORGE_VERSION}-${BUILD_TYPE}/forge-${FORGE_VERSION}
FORGE_JAR=forge-${FORGE_VERSION}*.jar

# -----------------------------
# Forge version resolution
# -----------------------------
if [ -n "$FORGE_VERSION" ]; then
DOWNLOAD_LINK=https://maven.minecraftforge.net/net/minecraftforge/forge/${FORGE_VERSION}-${BUILD_TYPE}/forge-${FORGE_VERSION}
else

echo -e "\nMinecraft version: ${MC_VERSION}"
echo -e "Build Type: ${BUILD_TYPE}\n"

## some variables for getting versions and things
VERSION_KEY=`echo -e ${JSON_DATA} | jq -r --arg MC_VERSION "${MC_VERSION}" --arg BUILD_TYPE "${BUILD_TYPE}" '.promos | to_entries[] | .key | select(contains($BUILD_TYPE)) | select(contains($MC_VERSION))' | head -1`
echo $VERSION_KEY

## locating the forge version
if [ "${VERSION_KEY}" == "" ] && [ "${BUILD_TYPE}" == "latest" ]; then
echo -e "dropping back to latest from recommended due to there not being a recommended version of forge for the mc version requested."
VERSION_KEY=`echo -e ${JSON_DATA} | jq -r --arg MC_VERSION "${MC_VERSION}" '.promos | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains("latest"))' | head -1`
echo -e "\n> Minecraft version: ${MC_VERSION}"
echo -e "> Build type: ${BUILD_TYPE}\n"

VERSION_KEY=$(echo "${JSON_DATA}" | jq -r \
--arg MC_VERSION "$MC_VERSION" \
--arg BUILD_TYPE "$BUILD_TYPE" \
'.promos | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains($BUILD_TYPE))' | head -1)

if [[ -z "$VERSION_KEY" && "$BUILD_TYPE" == "latest" ]]; then
echo -e "> No recommended build found, falling back to latest"
VERSION_KEY=$(echo "${JSON_DATA}" | jq -r \
--arg MC_VERSION "$MC_VERSION" \
'.promos | to_entries[] | .key | select(contains($MC_VERSION)) | select(contains("latest"))' | head -1)
fi

## Error if the mc version set wasn't valid.
if [ "${VERSION_KEY}" == "" ] || [ "${VERSION_KEY}" == "null" ]; then
echo -e "The install failed because there is no valid version of forge for the version on minecraft selected."
exit 1
if [[ -z "$VERSION_KEY" || "$VERSION_KEY" == "null" ]]; then
echo -e "> No valid Forge version found for Minecraft $MC_VERSION"
exit 1
fi

FORGE_VERSION=`echo -e ${JSON_DATA} | jq -r --arg VERSION_KEY "$VERSION_KEY" '.promos | .[$VERSION_KEY]'`
FORGE_VERSION=$(echo "${JSON_DATA}" | jq -r --arg KEY "$VERSION_KEY" '.promos[$KEY]')

if [ "${MC_VERSION}" == "1.7.10" ] || [ "${MC_VERSION}" == "1.8.9" ]; then
if [[ "$MC_VERSION" == "1.7.10" || "$MC_VERSION" == "1.8.9" ]]; then
DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}

else
else
DOWNLOAD_LINK=${FILE_SITE}${MC_VERSION}-${FORGE_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}

fi
fi
fi

echo -e "Downloading forge version ${FORGE_VERSION}"
echo -e "Download link is ${DOWNLOAD_LINK}"
if [ ! -z "${DOWNLOAD_LINK}" ]; then
if curl --output /dev/null --silent --head --fail ${DOWNLOAD_LINK}-installer.jar; then
echo -e "installer jar download link is valid."
else
echo -e "link is invalid closing out"
exit 2
fi
else
echo -e "no download link closing out"
exit 3
# -----------------------------
# Download + install
# -----------------------------
echo -e "\n> Downloading Forge $FORGE_VERSION"
echo -e "> URL: ${DOWNLOAD_LINK}-installer.jar"

if ! curl --silent --head --fail "${DOWNLOAD_LINK}-installer.jar"; then
echo -e "> Invalid Forge download link"
exit 2
fi

curl -s -o installer.jar -sS ${DOWNLOAD_LINK}-installer.jar
curl -sSL -o installer.jar "${DOWNLOAD_LINK}-installer.jar"

#Checking if downloaded jars exist
if [ ! -f ./installer.jar ]; then
echo "!!! Error by downloading forge version ${FORGE_VERSION} !!!"
exit
if [ ! -f installer.jar ]; then
echo -e "> Forge installer download failed"
exit 3
fi

#Installing server
echo -e "Installing forge server.\n"
java -jar installer.jar --installServer || { echo -e "install failed"; exit 4; }
echo -e "\n> Installing Forge server"
java -jar installer.jar --installServer || { echo -e "> Forge install failed"; exit 4; }

rm -f installer.jar

#Deleting installer.jar
echo -e "Deleting installer.jar file.\n"
rm -rf installer.jar
# -----------------------------
# Server launch files
# -----------------------------
cd "$MAIN_DIR/../server"
echo "eula=true" > eula.txt

# creating launch file
cd $MAIN_DIR/../server
echo "eula=true" > eula.txt # accepted the eula
FORGE_RUN_FILE=./run.sh

if [ -f "$FORGE_RUN_FILE" ]; then
echo "#!/bin/bash
cat > run.sh <<EOF
#!/bin/bash
export JAVA=../bin/java_bins/bin/java
\$JAVA @user_jvm_args.txt @libraries/net/minecraftforge/forge/${MC_VERSION}-${FORGE_VERSION}/unix_args.txt "\$@"
EOF
chmod +x run.sh

\$JAVA @user_jvm_args.txt @libraries/net/minecraftforge/forge/${MC_VERSION}-${FORGE_VERSION}/unix_args.txt \"\$@\"" > run.sh
chmod +x ./run.sh

echo '#!/bin/bash
cat > ../startJavaServer <<EOF
#!/bin/bash
cd server
./run.sh -nogui' > ../startJavaServer
./run.sh -nogui
EOF
chmod +x ../startJavaServer

else
# 1.7.10 thanks to Optifinel3ss#9059
if [ "$MC_VERSION" == "1.8.9" ] || [ "$MC_VERSION" == "1.7.10" ]; then
if [[ "$MC_VERSION" == "1.7.10" || "$MC_VERSION" == "1.8.9" ]]; then
FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}-${MC_VERSION}-universal.jar
else
FORGE_JAR=forge-${MC_VERSION}-${FORGE_VERSION}.jar
fi
SERVER_JARFILE=server.jar
mv $FORGE_JAR $SERVER_JARFILE

mv "$FORGE_JAR" server.jar
fi
85 changes: 33 additions & 52 deletions JavaInstallScripts/PaperInstall
Original file line number Diff line number Diff line change
@@ -1,73 +1,54 @@
#!/bin/bash
#!/bin/bash
# Paper Installation Script
#
# Server Files: /mnt/server

set -e

sudo apt update -qq
sudo apt install -y -qq curl jq > /dev/null

cd ..
mkdir -p server
cd server

# -----------------------------
# Minecraft version (from installJava)
# -----------------------------
MINECRAFT_VERSION="${MC_VERSION:-latest}"
echo "> Using Minecraft version: $MINECRAFT_VERSION"

echo -e "\n> Enter minecraft version for server: "
MINECRAFT_VERSION=latest
read MINECRAFT_VERSION


# -- EDIT HERE | DO NOT EDIT ABOVE -- #
BUILD_NUMBER=latest # https://papermc.io/downloads
PROJECT=paper # PROJECT: https://papermc.io/api/v2/projects/
SERVER_JARFILE=server.jar # LEAVE THIS PART ALONE
# -- EDIT HERE | DO NOT EDIT BELOW -- #



# -- CONFIG --
BUILD_NUMBER=latest
PROJECT=paper
SERVER_JARFILE=server.jar
# ------------

if [ -n "${DL_PATH}" ]; then
echo -e "Using supplied download url: ${DL_PATH}"
DOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
DOWNLOAD_URL=$(eval echo "${DL_PATH}")
else
VER_EXISTS=`curl -s https://papermc.io/api/v2/projects/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`
LATEST_VERSION=`curl -s https://papermc.io/api/v2/projects/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`
LATEST_VERSION=$(curl -s "https://api.papermc.io/v2/projects/${PROJECT}" | jq -r '.versions[-1]')

if [ "${VER_EXISTS}" == "true" ]; then
echo -e "Version is valid. Using version ${MINECRAFT_VERSION}"
else
echo -e "Using the latest ${PROJECT} version"
MINECRAFT_VERSION=${LATEST_VERSION}
fi

BUILD_EXISTS=`curl -s https://papermc.io/api/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep true`
LATEST_BUILD=`curl -s https://papermc.io/api/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`

if [ "${BUILD_EXISTS}" == "true" ]; then
echo -e "Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}"
else
echo -e "Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}"
BUILD_NUMBER=${LATEST_BUILD}
fi

JAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar

echo "Version being downloaded"
echo -e "MC Version: ${MINECRAFT_VERSION}"
echo -e "Build: ${BUILD_NUMBER}"
echo -e "JAR Name of Build: ${JAR_NAME}"
DOWNLOAD_URL=https://papermc.io/api/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION}/builds/${BUILD_NUMBER}/downloads/${JAR_NAME}
fi
if [ "$MINECRAFT_VERSION" = "latest" ]; then
MINECRAFT_VERSION="$LATEST_VERSION"
echo "> Resolved latest version: $MINECRAFT_VERSION"
fi

SERVER_JARFILE=server.jar
echo -e "Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}"
LATEST_BUILD=$(curl -s \
"https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION}/builds" \
| jq -r '.builds | map(select(.channel=="default")|.build) | .[-1]')

[ "$BUILD_NUMBER" = "latest" ] && BUILD_NUMBER="$LATEST_BUILD"

if [ -f ${SERVER_JARFILE} ]; then
mv ${SERVER_JARFILE} ${SERVER_JARFILE}.old
JAR_NAME="${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar"
DOWNLOAD_URL="https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION}/builds/${BUILD_NUMBER}/downloads/${JAR_NAME}"
fi

curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}
echo "> Downloading server.jar"
[ -f server.jar ] && mv server.jar server.jar.old
curl -sSL -o server.jar "$DOWNLOAD_URL"

if [ ! -f server.properties ]; then
echo -e "Downloading MC server.properties"
curl -o server.properties https://raw.githubusercontent.com/parkervcp/eggs/master/minecraft/java/server.properties
curl -sSL -o server.properties \
https://raw.githubusercontent.com/parkervcp/eggs/master/minecraft/java/server.properties
fi

echo "> Paper install complete"
Loading