Skip to content

Instantly share code, notes, and snippets.

@D3strukt0r
Created March 8, 2020 23:38
Show Gist options
  • Save D3strukt0r/18a18616bf4318863b670566cae8fe27 to your computer and use it in GitHub Desktop.
Save D3strukt0r/18a18616bf4318863b670566cae8fe27 to your computer and use it in GitHub Desktop.
Download a Spigot version and run
#!/bin/bash
# Verify versions
echo "[ ] Check if Java is available..."
if java -version 2>&1 >/dev/null | grep -q "openjdk version" ; then
echo -e "\e[1A[ \e[32mOK\e[39m ]"
elif java -version 2>&1 >/dev/null | grep -q "java version"; then
echo -e "\e[1A[ \e[32mOK\e[39m ]"
else
echo -e "\e[1A[\e[31mFAIL\e[39m]" >&2
exit 2
fi
java -version
# Array for known Spigot versions having a different name
declare -A spigot_versions
spigot_versions=(
[latest]="1.14.3"
[1.10.2]="1.10.2-R0.1-SNAPSHOT-latest"
[1.10]="1.10-R0.1-SNAPSHOT-latest"
[1.9.4]="1.9.4-R0.1-SNAPSHOT-latest"
[1.9.2]="1.9.2-R0.1-SNAPSHOT-latest"
[1.9]="1.9-R0.1-SNAPSHOT-latest"
[1.8.8]="1.8.8-R0.1-SNAPSHOT-latest"
[1.8.7]="1.8.7-R0.1-SNAPSHOT-latest"
[1.8.6]="1.8.6-R0.1-SNAPSHOT-latest"
[1.8.5]="1.8.5-R0.1-SNAPSHOT-latest"
[1.8.4]="1.8.4-R0.1-SNAPSHOT-latest"
[1.8.3]="1.8.3-R0.1-SNAPSHOT-latest"
[1.8]="1.8-R0.1-SNAPSHOT-latest"
[1.7.10]="1.7.10-SNAPSHOT-b1657"
[1.7.9]="1.7.9-R0.2-SNAPSHOT"
[1.7.8]="1.7.8-R0.1-SNAPSHOT"
[1.7.5]="1.7.5-R0.1-SNAPSHOT-1387"
[1.7.2]="1.7.2-R0.4-SNAPSHOT-1339"
[1.6.4]="1.6.4-R2.1-SNAPSHOT"
[1.6.2]="1.6.2-R1.1-SNAPSHOT"
[1.5.2]="1.5.2-R1.1-SNAPSHOT"
[1.5.1]="1.5.1-R0.1-SNAPSHOT"
[1.4.7]="1.4.7-R1.1-SNAPSHOT"
[1.4.6]="1.4.6-R0.4-SNAPSHOT"
)
# Download specified Spigot version if file doesn't already exist
SPIGOT_LOCATION=spigot.jar
if [[ ! -e $SPIGOT_LOCATION ]]; then
# getbukkit.org uses different names with older versions. Get the proper one.
SPIGOT_BASE_URL=${SPIGOT_BASE_URL:=https://cdn.getbukkit.org/spigot/spigot-}
SPIGOT_VERSION=${SPIGOT_VERSION:=latest}
# Check if the default domain hasn't been changed
if [[ $SPIGOT_BASE_URL == *"getbukkit.org"* ]]; then
# Check whether the given version is in the known naming scheme
if [[ -v spigot_versions["$SPIGOT_VERSION"] ]]; then
SPIGOT_VERSION=${spigot_versions[$SPIGOT_VERSION]}
fi
fi
echo "[ ] Downloading ${SPIGOT_URL:=${SPIGOT_BASE_URL}${SPIGOT_VERSION}${SPIGOT_FILE_URL:=.jar}}"
if ! curl -o $SPIGOT_LOCATION -fL "$SPIGOT_URL"; then
echo -e "\e[1A\e[1A\e[1A\e[1A[\e[31mFAIL\e[39m]\n\n\n" >&2
exit 2
else
echo -e "\e[1A\e[1A\e[1A\e[1A[ \e[32mOK\e[39m ]\n\n\n"
fi
fi
# Link all words
for dir in /data/*/ ; do
if [ -f "$dir"/level.dat ]; then
echo "[ ] Linking $dir from the volume"
ln -s "$dir" .
if [ $? -eq 0 ]; then
echo -e "\e[1A[ \e[32mOK\e[39m ]"
else
echo -e "\e[1A[\e[31mFAIL\e[39m]"
fi
fi
done
# Set variables for java runtime
echo "[ ] Setting initial memory to ${JAVA_BASE_MEMORY:=${JAVA_MEMORY:=512M}} and max to ${JAVA_MAX_MEMORY:=${JAVA_MEMORY}}"
JAVA_OPTIONS="-Xms${JAVA_BASE_MEMORY} -Xmx${JAVA_MAX_MEMORY} ${JAVA_OPTIONS}"
echo -e "\e[1A[ \e[32mOK\e[39m ]"
java "$JAVA_OPTIONS" -jar spigot.jar "$@"
# Worlds that have been created should be moved to /data (TODO: Symlinks are not recognized "if [ ! -L "$dir" ]")
echo ""
for dir in */ ; do
if [[ -d $dir && ! -L $dir && -f $dir/level.dat ]]; then
echo "[ ] Move $dir to the volume"
mv "$dir" /data/
if [[ $? -eq 0 ]]; then
echo -e "\e[1A[ \e[32mOK\e[39m ]"
else
echo -e "\e[1A\e[1A[\e[31mFAIL\e[39m]\n"
fi
fi
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment