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
This commit is contained in:
+19
-8
@@ -3,9 +3,13 @@ javaVersionDetect() {
|
||||
return
|
||||
fi
|
||||
|
||||
log "Auto-detecting Java version from Mojang manifest..."
|
||||
|
||||
local MANIFEST
|
||||
MANIFEST=$(curl -sf "https://launchermeta.mojang.com/mc/game/version_manifest.json")
|
||||
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
|
||||
@@ -13,13 +17,15 @@ javaVersionDetect() {
|
||||
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 "$VERSION_URL")
|
||||
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
|
||||
@@ -31,6 +37,7 @@ javaVersionDetect() {
|
||||
else
|
||||
JAVA_VERSION="temurin@${JAVA_MAJOR}"
|
||||
fi
|
||||
log "Detected Java version: ${JAVA_VERSION}"
|
||||
}
|
||||
|
||||
javaCheck() {
|
||||
@@ -38,16 +45,20 @@ javaCheck() {
|
||||
|
||||
JAVA_HOME="/data/java/${JAVA_VERSION}"
|
||||
if [[ -f "$HOME/.jabba/jabba.sh" ]]; then
|
||||
source $HOME/.jabba/jabba.sh
|
||||
# shellcheck disable=SC1090
|
||||
source "$HOME/.jabba/jabba.sh"
|
||||
else
|
||||
echo "Something went wrong with locating jabba(the java installer)"
|
||||
exit 1
|
||||
die "Jabba not found at ~/.jabba/jabba.sh — installation may have failed"
|
||||
fi
|
||||
|
||||
if [[ ! -f "/data/java/${JAVA_VERSION}/bin/java" ]]; then
|
||||
rm -rf /data/java/${JAVA_VERSION}
|
||||
jabba install ${JAVA_VERSION} -o /data/java/${JAVA_VERSION}
|
||||
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
|
||||
PATH="${JAVA_HOME}/bin:$PATH"
|
||||
JAVA="java"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user