#!/bin/bash # shellcheck source=start-utils . "${SCRIPTS:-/}start-utils" set -e isDebugging && set -x if [ $TYPE = "CURSEFORGE" ]; then worldDest=$FTB_DIR/${LEVEL:-world} else worldDest=/data/${LEVEL:-world} fi if [[ "$WORLD" ]] && ( isTrue "${FORCE_WORLD_COPY}" || [ ! -d "$worldDest" ] ); then if isTrue "${FORCE_WORLD_COPY}"; then log "Removing existing world data in $worldDest ${worldDest}_nether ${worldDest}_the_end" rm -rf "$worldDest" \ "${worldDest}_nether" \ "${worldDest}_the_end" fi if isURL $WORLD; then curl -fsSL "$WORLD" -o /tmp/world.zip zipSrc=/tmp/world.zip elif [[ "$WORLD" =~ .*\.zip ]]; then zipSrc="$WORLD" fi if [[ "$zipSrc" ]]; then log "Unzipping world" # Stage contents so that the correct subdirectory can be picked off mkdir -p /tmp/world-data (cd /tmp/world-data && unzip -o -q "$zipSrc") if [ "$FAMILY" = "SPIGOT" ]; then baseDirs=$(find /tmp/world-data -name "level.dat" -not -path "*_nether*" -not -path "*_the_end*" -exec dirname "{}" \;) else baseDirs=$(find /tmp/world-data -name "level.dat" -exec dirname "{}" \;) fi count=$(echo "$baseDirs" | wc -l) if [[ $count -gt 1 ]]; then baseDir="$(echo "$baseDirs" | sed -n ${WORLD_INDEX:-1}p)" baseName=$(basename "$baseDir") log "WARN multiple levels found, picking: $baseName" elif [[ $count -gt 0 ]]; then baseDir="$baseDirs" else log "ERROR invalid world content" exit 1 fi rsync --remove-source-files --recursive --delete "$baseDir/" "$worldDest" if [ "$FAMILY" = "SPIGOT" ]; then log "Copying end and nether ..." [ -d "${baseDir}_nether" ] && rsync --remove-source-files --recursive --delete "${baseDir}_nether/" "${worldDest}_nether" [ -d "${baseDir}_the_end" ] && rsync --remove-source-files --recursive --delete "${baseDir}_the_end/" "${worldDest}_the_end" fi else log "Cloning world directory from $WORLD ..." rsync --recursive --delete "${WORLD%/}"/ "$worldDest" fi if [ "$FAMILY" = "SPIGOT" ]; then # Reorganise if a Spigot server log "Moving End and Nether maps to Spigot location" [ -d "$worldDest/DIM1" ] && mv -f "$worldDest/DIM1" "${worldDest}_the_end" [ -d "$worldDest/DIM-1" ] && mv -f "$worldDest/DIM-1" "${worldDest}_nether" fi fi exec "${SCRIPTS:-/}start-setupVanillaTweaks" "$@"