Files
dockercraft/scripts/lib/java.sh
T
jeremy 5688b30892 fix: migrate PaperMC to v3 API, fix NeoForge beta fallback, add test suite
- 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
2026-08-21 12:49:27 -04:00

65 lines
1.9 KiB
Bash

javaVersionDetect() {
if [[ -n "${JAVA_VERSION:-}" ]]; then
return
fi
log "Auto-detecting Java version from Mojang manifest..."
local MANIFEST
MANIFEST=$(curl -sf --connect-timeout 10 --max-time 30 \
"https://launchermeta.mojang.com/mc/game/version_manifest.json") || true
if [[ -z "$MANIFEST" ]]; then
warn "Could not fetch Mojang manifest, defaulting to temurin@21"
JAVA_VERSION="temurin@21"
return
fi
local VERSION_URL
VERSION_URL=$(echo "$MANIFEST" | jq -r ".versions[] | select(.id == \"${MC_VERSION}\") | .url")
if [[ -z "$VERSION_URL" || "$VERSION_URL" == "null" ]]; then
warn "Version ${MC_VERSION} not found in manifest, defaulting to temurin@21"
JAVA_VERSION="temurin@21"
return
fi
local VERSION_DATA
VERSION_DATA=$(curl -sf --connect-timeout 10 --max-time 30 "$VERSION_URL") || true
if [[ -z "$VERSION_DATA" ]]; then
warn "Could not fetch version data for ${MC_VERSION}, defaulting to temurin@21"
JAVA_VERSION="temurin@21"
return
fi
local JAVA_MAJOR
JAVA_MAJOR=$(echo "$VERSION_DATA" | jq -r ".javaVersion.majorVersion // empty")
if [[ -z "$JAVA_MAJOR" ]]; then
JAVA_VERSION="temurin@8"
else
JAVA_VERSION="temurin@${JAVA_MAJOR}"
fi
log "Detected Java version: ${JAVA_VERSION}"
}
javaCheck() {
javaVersionDetect
JAVA_HOME="/data/java/${JAVA_VERSION}"
if [[ -f "$HOME/.jabba/jabba.sh" ]]; then
# shellcheck disable=SC1090
source "$HOME/.jabba/jabba.sh"
else
die "Jabba not found at ~/.jabba/jabba.sh — installation may have failed"
fi
if [[ ! -f "/data/java/${JAVA_VERSION}/bin/java" ]]; then
log "Installing Java ${JAVA_VERSION}..."
rm -rf "/data/java/${JAVA_VERSION}"
jabba install "${JAVA_VERSION}" -o "/data/java/${JAVA_VERSION}"
log "Java ${JAVA_VERSION} installed."
else
log "Java ${JAVA_VERSION} already cached."
fi
PATH="${JAVA_HOME}/bin:$PATH"
JAVA="java"
}