mirror of
https://github.com/itzg/docker-minecraft-server
synced 2024-12-15 14:52:27 +00:00
aa7b997697
Co-authored-by: christopher blodgett <christopher.blodgett@gmail.com> Co-authored-by: Geoff Bourne <itzgeoff@gmail.com> Co-authored-by: Floyd Everest <me@floydeverest.com>
126 lines
4 KiB
Bash
126 lines
4 KiB
Bash
#!/bin/bash
|
|
|
|
set -e -o pipefail
|
|
|
|
: "${REMOVE_OLD_VANILLATWEAKS:=false}"
|
|
: "${VANILLATWEAKS_FILE:=}"
|
|
: "${VANILLATWEAKS_SHARECODE:=}"
|
|
: "${REMOVE_OLD_VANILLATWEAKS_DEPTH:=1} "
|
|
: "${REMOVE_OLD_VANILLATWEAKS_INCLUDE:=*.zip}"
|
|
|
|
# shellcheck source=start-utils
|
|
. "${SCRIPTS:-/}start-utils"
|
|
isDebugging && set -x
|
|
|
|
VT_VERSION=""
|
|
DATAPACKS_DIR="/data/${LEVEL:-world}/datapacks"
|
|
RESOURCEPACKS_DIR="/data/resourcepacks"
|
|
|
|
# Remove old VANILLATWEAKS
|
|
if isTrue "${REMOVE_OLD_VANILLATWEAKS}"; then
|
|
# NOTE: datapacks include crafting tweaks.
|
|
if [ -d "$DATAPACKS_DIR" ]; then
|
|
find "$DATAPACKS_DIR" -mindepth 1 -maxdepth ${REMOVE_OLD_VANILLATWEAKS_DEPTH:-16} -wholename "${REMOVE_OLD_VANILLATWEAKS_INCLUDE:-*}" -not -wholename "${REMOVE_OLD_VANILLATWEAKS_EXCLUDE:-}" -delete
|
|
fi
|
|
if [ -d "$RESOURCEPACKS_DIR" ]; then
|
|
find "$RESOURCEPACKS_DIR" -mindepth 1 -maxdepth ${REMOVE_OLD_VANILLATWEAKS_DEPTH:-16} -wholename "${REMOVE_OLD_VANILLATWEAKS_INCLUDE:-*}" -not -wholename "${REMOVE_OLD_VANILLATWEAKS_EXCLUDE:-}" -delete
|
|
fi
|
|
fi
|
|
|
|
# Gets the download url and downloads the actual files.
|
|
getUrlAndDownload(){
|
|
VT_FILE=$1
|
|
URL_SUFFIX=$2
|
|
OUTPUT_FILE=$3
|
|
PACKS=$(jq -jc '.packs // empty' $VT_FILE)
|
|
if [ ! "$PACKS" ]; then
|
|
log "ERROR: unable to retrieve ${URL_SUFFIX} from ${VT_FILE}"
|
|
exit 2
|
|
fi
|
|
|
|
ZIPDATA_URL="https://vanillatweaks.net/assets/server/zip${URL_SUFFIX}.php"
|
|
DOWNLOAD_URL=$(curl -X POST -F "packs=${PACKS}" -F "version=${VT_VERSION}" $ZIPDATA_URL | jq -r '.link // empty')
|
|
if [ ! "$DOWNLOAD_URL" ]; then
|
|
log "ERROR: unable to retrieve ${URL_SUFFIX} packs from vanillatweaks.net!"
|
|
exit 2
|
|
fi
|
|
|
|
if ! get -o $OUTPUT_FILE "https://vanillatweaks.net${DOWNLOAD_URL}"; then
|
|
log "ERROR: failed to download ${URL_SUFFIX} from ${DOWNLOAD_URL}"
|
|
exit 2
|
|
fi
|
|
}
|
|
|
|
# Datapacks Handler
|
|
downloadDatapacks(){
|
|
VT_FILE=$1
|
|
URL_SUFFIX="datapacks"
|
|
OUTPUT_FILE="/tmp/vanillatweaks.zip"
|
|
getUrlAndDownload $VT_FILE $URL_SUFFIX $OUTPUT_FILE
|
|
mkdir -p "$DATAPACKS_DIR"
|
|
if ! unzip -o -d "$DATAPACKS_DIR" $OUTPUT_FILE; then
|
|
log "ERROR: failed to unzip the datapacks ${DATAPACKS} from ${OUTPUT_FILE}"
|
|
fi
|
|
rm -f $OUTPUT_FILE
|
|
}
|
|
|
|
# Crafting Tweaks Handler
|
|
downloadCraftingtweaks(){
|
|
VT_FILE=$1
|
|
mkdir -p "$DATAPACKS_DIR"
|
|
getUrlAndDownload $VT_FILE "craftingtweaks" "${DATAPACKS_DIR}/craftingtweaks.zip"
|
|
}
|
|
|
|
# Resourcepacks Handler
|
|
downloadResourcepacks(){
|
|
VT_FILE=$1
|
|
mkdir -p "$RESOURCEPACKS_DIR"
|
|
getUrlAndDownload $VT_FILE "resourcepacks" "${RESOURCEPACKS_DIR}/resourcepacks.zip"
|
|
}
|
|
|
|
# Example: VANILLATWEAKS_SHARECODE=MGr52E
|
|
# Code generated from the UI website, typically a alphanumeric 6 digit code.
|
|
if [[ "$VANILLATWEAKS_SHARECODE" ]]; then
|
|
VANILLATWEAKS_FILE=()
|
|
for SHARECODE in ${VANILLATWEAKS_SHARECODE//,/ }; do
|
|
TMP_FILE="/tmp/${SHARECODE}.json"
|
|
SHARECODE_LOOKUP_URL="https://vanillatweaks.net/assets/server/sharecode.php?code=${SHARECODE}"
|
|
if ! get -o "$TMP_FILE" "$SHARECODE_LOOKUP_URL"; then
|
|
log "ERROR: Unable to use ${SHARECODE} share code provided to retrieve vanillatweaks file"
|
|
exit 2
|
|
fi
|
|
VANILLATWEAKS_FILE+="${TMP_FILE},"
|
|
done
|
|
fi
|
|
|
|
# Use vanillatweaks file to specify VT and datapacks and crafting tweaks
|
|
if [[ "$VANILLATWEAKS_FILE" ]]; then
|
|
for VT_FILE in ${VANILLATWEAKS_FILE//,/ }; do
|
|
if [ ! -f "$VT_FILE" ]; then
|
|
log "ERROR: given VANILLATWEAKS_FILE file does not exist"
|
|
exit 2
|
|
fi
|
|
|
|
VT_VERSION=$(jq -jc '.version // empty' $VT_FILE)
|
|
if [ ! "$VT_VERSION" ]; then
|
|
log "ERROR: unable to retrieve version from $VT_FILE"
|
|
exit 2
|
|
fi
|
|
|
|
TYPE=$(jq -jc '.type // empty' $VT_FILE)
|
|
if [[ "$TYPE" = "datapacks" ]]; then
|
|
downloadDatapacks $VT_FILE
|
|
elif [[ "$TYPE" = "craftingtweaks" ]]; then
|
|
downloadCraftingtweaks $VT_FILE
|
|
elif [[ "$TYPE" = "resourcepacks" ]]; then
|
|
downloadResourcepacks $VT_FILE
|
|
fi
|
|
|
|
# cleans up temp vanilla tweaks file download to get stored packs
|
|
if [[ "$VANILLATWEAKS_SHARECODE" ]]; then
|
|
rm -f $VT_FILE
|
|
fi
|
|
done
|
|
fi
|
|
|
|
exec "${SCRIPTS:-/}start-setupDatapack" "$@"
|