getForge() { SERVER_TYPE="Forge Server" if [[ -z "${MC_VERSION}" ]]; then die "MC_VERSION is required for Forge loader" fi 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 [[ -z "$LATEST_BUILD" || "$LATEST_BUILD" == "null" ]]; then die "No Forge version found for MC ${MC_VERSION}" fi 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 }