#!/bin/bash

# shellcheck source=start-utils
. "$(dirname "$0")/start-utils"
set -o pipefail
handleDebugMode

: "${PAPER_PROJECT:=paper}"
: "${PAPER_BUILD:=${PAPERBUILD:-}}"
: "${PAPER_CHANNEL:=default}"
: "${PAPER_DOWNLOAD_URL:=}"
: "${PAPER_CUSTOM_JAR:=}"
: "${PAPER_CONFIG_DEFAULTS_REPO:=${PAPER_CONFIG_REPO:=https://raw.githubusercontent.com/Shonz1/minecraft-default-configs/main}}"

resultsFile=/data/.paper.env
if [[ $PAPER_CUSTOM_JAR ]]; then
  export SERVER="$PAPER_CUSTOM_JAR"
elif [[ $PAPER_DOWNLOAD_URL ]]; then
  if ! mc-image-helper install-paper \
    --output-directory=/data \
    --results-file="$resultsFile" \
    --url="$PAPER_DOWNLOAD_URL"; then
      logError "Failed to download from custom PaperMC URL"
      exit 1
  fi
  applyResultsFile ${resultsFile}
else
  args=(
    --output-directory=/data
    --results-file="$resultsFile"
    --project="$PAPER_PROJECT"
    --version="$VERSION"
    --channel="$PAPER_CHANNEL"
  )
  if [[ $PAPER_BUILD ]]; then
    args+=(--build="$PAPER_BUILD")
  fi
  if ! mc-image-helper install-paper "${args[@]}"; then
      logError "Failed to download $PAPER_PROJECT"
      exit 1
  fi
  applyResultsFile ${resultsFile}
fi

defaultTopLevelConfigs="bukkit.yml spigot.yml"
if versionLessThan 1.19; then
  defaultTopLevelConfigs+=" paper.yml"
else
  # Download default configs to allow for consistent patching
  DOWNLOAD_DEFAULT_CONFIGS=$(buildDownloadList "$PAPER_CONFIG_DEFAULTS_REPO" "$VERSION" paper-global.yml paper-world-defaults.yml)
  export DOWNLOAD_DEFAULT_CONFIGS
fi

# Download top-level configs to allow for consistent patching
DOWNLOAD_DEFAULTS=$(buildDownloadList "$PAPER_CONFIG_DEFAULTS_REPO" "$VERSION" $defaultTopLevelConfigs)
export DOWNLOAD_DEFAULTS

# Normalize on Spigot for downstream operations
export FAMILY=SPIGOT

exec "$(dirname "$0")/start-spiget" "$@"
