docker-minecraft-server/scripts/start-deployAutoCF

72 lines
1.6 KiB
Bash

#!/bin/bash
set -eu
# shellcheck source=start-utils
. "${SCRIPTS:-/}start-utils"
: "${CF_PAGE_URL:=}"
: "${CF_SLUG:=}"
: "${CF_FILE_ID:=}"
: "${CF_FILENAME_MATCHER:=}"
: "${CF_PARALLEL_DOWNLOADS:=4}"
: "${CF_FORCE_SYNCHRONIZE:=false}"
resultsFile=/data/.install-curseforge.env
isDebugging && set -x
args=(
--results-file="$resultsFile"
)
if [[ $CF_PAGE_URL ]]; then
args+=(--modpack-page-url="$CF_PAGE_URL")
fi
if [[ $CF_FILE_ID ]]; then
args+=(--file-id="$CF_FILE_ID")
fi
if [[ $CF_SLUG ]]; then
args+=(--slug="$CF_SLUG")
fi
if [[ $CF_FILENAME_MATCHER ]]; then
args+=(--filename-matcher="$CF_FILENAME_MATCHER")
fi
args+=(
--parallel-downloads="$CF_PARALLEL_DOWNLOADS"
--force-synchronize="$CF_FORCE_SYNCHRONIZE"
)
defaultModExcludes=(
581495 # oculus
363363 # extreme-sound-muffler
448233 # entityculling
574856 # rubidium
441114 # nekos-enchanted-books
521480 # skin-layers-3d
433760 # not-enough-animations
568563 # entity-texture-features-fabric
274259 # carry-on
787666 # ignitioncoil, not a client mod, but doesn't seem to play nice with server mode
700629 # defensive-measures
)
: "${CF_EXCLUDE_MODS:=${defaultModExcludes[@]}}"
args+=(--exclude-mods="$CF_EXCLUDE_MODS")
defaultModForceIncludes=(
656526 # revelationary
)
: "${CF_FORCE_INCLUDE_MODS:=${defaultModForceIncludes[@]}}"
args+=(--force-include-mods="$CF_FORCE_INCLUDE_MODS")
if ! mc-image-helper install-curseforge "${args[@]}"; then
log "ERROR failed to auto-install CurseForge modpack"
exit 1
fi
# grab SERVER, FAMILY and export it
set -a
# shellcheck disable=SC1090
source "${resultsFile}"
set +a
exec "${SCRIPTS:-/}start-setupWorld" "$@"