Skip to content

Commit 43b58da

Browse files
authored
Merge pull request #10 from keepittechie/function-installJar-update
improved installJar function.
2 parents 1ab7e10 + ef193ae commit 43b58da

2 files changed

Lines changed: 127 additions & 206 deletions

File tree

docker_build/install-docker.sh

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@
66
# ANSI color codes
77
RED='\033[0;31m'
88
GREEN='\033[0;32m'
9-
BLUE='\033[0;34m'
109
NC='\033[0;0m' # No Color
1110

1211
# Define Minecraft server directory
@@ -15,94 +14,79 @@ MINECRAFT_DIR="/data/minecraft"
1514
# Create Minecraft directory
1615
mkdir -p "$MINECRAFT_DIR" # Create the directory
1716

18-
function version {
17+
version() {
1918
echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'
2019
}
2120

2221
# Select which java version to use
23-
if [ $(version $SERVER_VERSION) -ge $(version "1.20.5") ]; then
22+
if [ "$(version "$SERVER_VERSION")" -ge "$(version "1.20.5")" ]; then
2423
export JAVA_HOME="/usr/lib/jvm/java-21-openjdk"
25-
export PATH=$JAVA_HOME/bin:$PATH
26-
JAVA_BINARY=$JAVA_HOME/bin/java
24+
export PATH="$JAVA_HOME/bin:$PATH"
2725
echo "Using java version 21..."
28-
elif [ $(version $SERVER_VERSION) -ge $(version "1.17") ]; then
26+
elif [ "$(version "$SERVER_VERSION")" -ge "$(version "1.17")" ]; then
2927
export JAVA_HOME="/usr/lib/jvm/java-17-openjdk"
30-
export PATH=$JAVA_HOME/bin:$PATH
31-
JAVA_BINARY=$JAVA_HOME/bin/java
28+
export PATH="$JAVA_HOME/bin:$PATH"
3229
echo "Using java version 17..."
3330
else
3431
export JAVA_HOME="/usr/lib/jvm/java-8-openjdk"
35-
export PATH=$JAVA_HOME/bin:$PATH
36-
JAVA_BINARY=$JAVA_HOME/bin/java
32+
export PATH="$JAVA_HOME/bin:$PATH"
3733
echo "Using java version 8..."
3834
fi
3935

4036
ls -l /data
4137
# ls -l /
4238

4339
# Download the specific Minecraft server version
44-
# Originally I had it check if either the server jar either exists, or if the SERVER_VERSION or SERVER_SOFTWARE had changed, before downloading.
45-
# I decided against this so you get the newest build every time you restart the container.
46-
# Feel free to change this if you want to, by adding this if statement around the current one: if [ ! -e "$MINECRAFT_DIR"/*.jar ] || [ "grep -Po 'Minecraft Server Type: \K.*' "/opt/minecraft/server_info.txt"" != $SERVER_SOFTWARE ] || [ "grep -Po 'Minecraft Server Version: \K.*' "/opt/minecraft/server_info.txt"" != $SERVER_VERSION ]; then
4740
if [ "$SERVER_SOFTWARE" = "paper" ]; then
48-
49-
# Get the build number of the most recent build
50-
latest_build=$(curl -sX GET "https://papermc.io/api/v2"/projects/"paper"/versions/"$SERVER_VERSION"/builds -H 'accept: application/json' | jq '.builds [-1].build')
51-
52-
# Construct download URL
53-
download_url="https://papermc.io/api/v2"/projects/"paper"/versions/"$SERVER_VERSION"/builds/"$latest_build"/downloads/"paper"-"$SERVER_VERSION"-"$latest_build".jar
54-
55-
# Download file
41+
latest_build=$(curl -sX GET "https://papermc.io/api/v2/projects/paper/versions/$SERVER_VERSION/builds" -H 'accept: application/json' | jq '.builds[-1].build')
42+
download_url="https://papermc.io/api/v2/projects/paper/versions/$SERVER_VERSION/builds/$latest_build/downloads/paper-$SERVER_VERSION-$latest_build.jar"
5643
SERVER_JAR="$MINECRAFT_DIR/paper-$SERVER_VERSION.jar"
5744
wget -O "$SERVER_JAR" "$download_url"
5845

5946
elif [ "$SERVER_SOFTWARE" = "purpur" ]; then
60-
# Construct download URL
61-
download_url="https://api.purpurmc.org/v2/purpur/"$SERVER_VERSION"/latest/download"
62-
63-
# Download file
47+
download_url="https://api.purpurmc.org/v2/purpur/$SERVER_VERSION/latest/download"
6448
SERVER_JAR="$MINECRAFT_DIR/purpur-$SERVER_VERSION.jar"
6549
wget -O "$SERVER_JAR" "$download_url"
6650

6751
elif [ "$SERVER_SOFTWARE" = "vanilla" ]; then
68-
# Get the download url from mojang
6952
download_url=$(curl -sX GET "https://launchermeta.mojang.com/mc/game/version_manifest.json" | jq -r --arg ver "$SERVER_VERSION" '.versions[] | select(.id == $ver) | .url' | xargs curl -s | jq -r '.downloads.server.url')
70-
71-
# Download file
7253
SERVER_JAR="$MINECRAFT_DIR/vanilla-$SERVER_VERSION.jar"
7354
wget -O "$SERVER_JAR" "$download_url"
7455

7556
elif [ "$SERVER_SOFTWARE" = "manual" ]; then
76-
$SERVER_JAR = "$MINECRAFT_DIR/$SERVER_JAR"
57+
SERVER_JAR="$MINECRAFT_DIR/$SERVER_JAR"
7758
if [ -f "$SERVER_JAR" ]; then
7859
echo -e "${GREEN}Minecraft server JAR file found.${NC}"
7960
else
8061
echo -e "${RED}Failed to find the Minecraft server JAR file. Exiting...${NC}"
8162
exit 1
8263
fi
64+
8365
elif [ "$SERVER_SOFTWARE" = "fabric" ]; then
8466
loader_version=$(curl -sX GET "https://meta.fabricmc.net/v2/versions/loader/$SERVER_VERSION" | jq -r '[.[] | select(.loader.stable == true)] | sort_by(.loader.build) | last | .loader.version')
8567
installer_version=$(curl -sX GET "https://meta.fabricmc.net/v2/versions/installer" | jq -r '[.[] | select(.stable == true)] | sort_by(.version) | last | .version')
8668
download_url="https://meta.fabricmc.net/v2/versions/loader/$SERVER_VERSION/$loader_version/$installer_version/server/jar"
8769
SERVER_JAR="$MINECRAFT_DIR/fabric-$SERVER_VERSION.jar"
8870
wget -O "$SERVER_JAR" "$download_url"
8971
fi
72+
9073
# Write Minecraft server type and version to a text file
9174
echo "Minecraft Server Type: $SERVER_SOFTWARE" | tee "$MINECRAFT_DIR/server_info.txt"
9275
echo "Minecraft Server Version: $SERVER_VERSION" | tee -a "$MINECRAFT_DIR/server_info.txt"
9376

9477
# Change to Minecraft directory
95-
cd "$MINECRAFT_DIR"
78+
cd "$MINECRAFT_DIR" || exit
9679

97-
# Start server and accept the EULA if the file does not exist.
98-
if [ ! -e $MINECRAFT_DIR"/eula.txt" ]; then
99-
java -Xms1024M -Xmx1024M -jar $SERVER_JAR nogui
80+
# Start server and accept the EULA if the file does not exist.
81+
if [ ! -e "$MINECRAFT_DIR/eula.txt" ]; then
82+
java -Xms1024M -Xmx1024M -jar "$SERVER_JAR" nogui
10083
# Accept EULA by modifying eula.txt
10184
echo -e "${GREEN}Accepting EULA...${NC}"
10285
sed -i 's/eula=false/eula=true/g' eula.txt
10386
sed -i 's/enable-rcon=false/enable-rcon=true/g' server.properties
10487
sed -i 's/rcon.password=/rcon.password=mcsli-docker/g' server.properties
10588
fi
89+
10690
echo -e "${GREEN}Minecraft server installation and setup complete! Starting...${NC}"
10791

10892
# Startup command; uses aikar's flags for better garbage collection

0 commit comments

Comments
 (0)