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:
@@ -1,42 +1,45 @@
|
||||
getForge() {
|
||||
SERVER_TYPE="Forge Server"
|
||||
|
||||
if [[ -n "$MC_VERSION" ]]; then
|
||||
VER_MINECRAFT=$MC_VERSION
|
||||
if [[ -n "${FORGE_VERSION}" ]]; then
|
||||
VER_LOADER="${FORGE_VERSION}"
|
||||
DL_URL=https://maven.minecraftforge.net/net/minecraftforge/forge/${VER_MINECRAFT}-${VER_LOADER}/forge-${VER_MINECRAFT}-${VER_LOADER}-installer.jar
|
||||
else
|
||||
LATEST_BUILD=$(curl -s https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json | jq -r ".promos[\"${VER_MINECRAFT}-latest\"]")
|
||||
VER_LOADER=$LATEST_BUILD
|
||||
DL_URL=https://maven.minecraftforge.net/net/minecraftforge/forge/${VER_MINECRAFT}-${VER_LOADER}/forge-${VER_MINECRAFT}-${VER_LOADER}-installer.jar
|
||||
fi
|
||||
else
|
||||
echo "Minecraft version not set"
|
||||
exit 1
|
||||
if [[ -z "${MC_VERSION}" ]]; then
|
||||
die "MC_VERSION is required for Forge loader"
|
||||
fi
|
||||
|
||||
if [[ -n "$DL_URL" ]]; then
|
||||
echo "$DL_URL"
|
||||
rm -rf server.jar
|
||||
curl -o forge-install.jar "${DL_URL}"
|
||||
echo "$JAVA -jar forge-install.jar --installServer"
|
||||
$JAVA -jar forge-install.jar --installServer
|
||||
local DL_URL
|
||||
if [[ -n "${FORGE_VERSION}" ]]; then
|
||||
VER_LOADER="${FORGE_VERSION}"
|
||||
DL_URL="https://maven.minecraftforge.net/net/minecraftforge/forge/${MC_VERSION}-${VER_LOADER}/forge-${MC_VERSION}-${VER_LOADER}-installer.jar"
|
||||
else
|
||||
log "Fetching latest Forge version for MC ${MC_VERSION}..."
|
||||
local LATEST_BUILD
|
||||
LATEST_BUILD=$(curl -sf --connect-timeout 10 --max-time 30 \
|
||||
"https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json" |
|
||||
jq -r ".promos[\"${MC_VERSION}-latest\"]")
|
||||
|
||||
if [[ "$(printf '%s\n' "1.17.1" "$MC_VERSION" | sort -V | head -n1)" = "1.17.1" ]]; then
|
||||
NEW_FORGE=true
|
||||
rm -f forge-install.jar
|
||||
rm -f forge-install.jar.log
|
||||
else
|
||||
NEW_FORGE=false
|
||||
rm -f forge-install.jar
|
||||
rm -f forge-install.jar.log
|
||||
ln -s forge-"${VER_MINECRAFT}"-"${VER_LOADER}".jar server.jar
|
||||
if [[ -z "$LATEST_BUILD" || "$LATEST_BUILD" == "null" ]]; then
|
||||
die "No Forge version found for MC ${MC_VERSION}"
|
||||
fi
|
||||
|
||||
touch server.properties
|
||||
else
|
||||
echo "No Valid Download URL"
|
||||
crash
|
||||
VER_LOADER="$LATEST_BUILD"
|
||||
DL_URL="https://maven.minecraftforge.net/net/minecraftforge/forge/${MC_VERSION}-${VER_LOADER}/forge-${MC_VERSION}-${VER_LOADER}-installer.jar"
|
||||
fi
|
||||
|
||||
log "Downloading Forge ${MC_VERSION}-${VER_LOADER} installer..."
|
||||
rm -f server.jar
|
||||
curl -fL -o forge-install.jar "${DL_URL}"
|
||||
|
||||
log "Running Forge installer..."
|
||||
$JAVA -jar forge-install.jar --installServer
|
||||
|
||||
newForge
|
||||
rm -f forge-install.jar forge-install.jar.log
|
||||
|
||||
if [[ "${NEW_FORGE}" == "true" ]]; then
|
||||
log "Forge ${MC_VERSION} installed (new-style launcher)."
|
||||
else
|
||||
ln -sf "forge-${MC_VERSION}-${VER_LOADER}.jar" server.jar
|
||||
log "Forge ${MC_VERSION}-${VER_LOADER} installed."
|
||||
fi
|
||||
|
||||
touch server.properties
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user