- Migrate Paper loader from sunset v2 API to v3 (fill.papermc.io) - Fix NeoForge: fall back to beta versions when no stable exists (set -e + grep) - Fix setEula/setperms ordering (was writing eula.txt before /data was writable) - Fix setEula/serverInfoWrite to use absolute paths (/data/server/) - Add VOLUME directive removal (was shadowing bind mounts) - Add comprehensive API test suite (110 tests across 6 suites) - Move test.sh to tests/integration.sh, switch to named volumes - Add Docker build cache to CI workflows - Add .editorconfig, expand .gitignore, improve README docs
50 lines
1.8 KiB
Bash
50 lines
1.8 KiB
Bash
BEDROCK_API_URL="https://net.web.minecraft-services.net/api/v1.0/download/links"
|
|
BEDROCK_FALLBACK_URL="https://raw.githubusercontent.com/kittizz/bedrock-server-downloads/refs/heads/main/bedrock-server-downloads.json"
|
|
|
|
_bedrockDownload() {
|
|
local platform="$1"
|
|
local version="${2:-}"
|
|
|
|
log "Fetching Bedrock download URL (platform: ${platform})..."
|
|
local DL_URL
|
|
DL_URL=$(curl -sL -A "Mozilla/5.0 (X11; Linux x86_64)" --connect-timeout 10 --max-time 30 \
|
|
"$BEDROCK_API_URL" |
|
|
jq -r ".result.links[] | select(.downloadType == \"${platform}\") | .downloadUrl // empty")
|
|
|
|
if [[ -z "$DL_URL" ]]; then
|
|
warn "Primary API failed, trying fallback source..."
|
|
DL_URL=$(curl -sL -A "Mozilla/5.0 (X11; Linux x86_64)" --connect-timeout 10 --max-time 30 \
|
|
"$BEDROCK_FALLBACK_URL" |
|
|
jq --arg type "$( [[ "$platform" == *Preview* ]] && echo preview || echo release )" -r '
|
|
.[$type] | to_entries | sort_by(.key | split(".") | map(tonumber)) | last | .value.linux.url // empty
|
|
')
|
|
fi
|
|
|
|
if [[ -z "$DL_URL" ]]; then
|
|
die "Failed to look up Bedrock download URL"
|
|
fi
|
|
|
|
if [[ -n "$version" ]]; then
|
|
DL_URL=$(echo "$DL_URL" | sed -E "s/(bedrock-server-)[^/]+(\.zip)/\1${version}\2/")
|
|
fi
|
|
|
|
local VER
|
|
VER=$(echo "$DL_URL" | grep -oP 'bedrock-server-\K[\d.]+(?=\.zip)')
|
|
log "Downloading Bedrock server version ${VER}..."
|
|
curl -fL -o bedrock-server.zip -A "Mozilla/5.0 (X11; Linux x86_64)" "$DL_URL"
|
|
unzip -o bedrock-server.zip
|
|
rm -f bedrock-server.zip
|
|
chmod +x bedrock_server
|
|
log "Bedrock ${VER} downloaded."
|
|
}
|
|
|
|
getBedrock() {
|
|
SERVER_TYPE="Bedrock Server"
|
|
_bedrockDownload "serverBedrockLinux" "${MC_VERSION:-}"
|
|
}
|
|
|
|
getBedrockPreview() {
|
|
SERVER_TYPE="Bedrock Server (Preview)"
|
|
_bedrockDownload "serverBedrockPreviewLinux" "${MC_VERSION:-}"
|
|
}
|