getFabric() { SERVER_TYPE="Fabric Minecraft" if [[ -z "${MC_VERSION}" ]]; then die "MC_VERSION is required for Fabric loader" fi log "Fetching Fabric loader version for MC ${MC_VERSION}..." local LATEST_BUILD LATEST_INSTALLER LATEST_BUILD=$(curl -sf --connect-timeout 10 --max-time 30 \ "https://meta.fabricmc.net/v2/versions/loader/${MC_VERSION}" | jq -r '.[0].loader.version') LATEST_INSTALLER=$(curl -sf --connect-timeout 10 --max-time 30 \ "https://maven.fabricmc.net/net/fabricmc/fabric-installer/maven-metadata.xml" | xmllint --xpath "/metadata/versioning/latest/text()" -) if [[ -z "$LATEST_BUILD" || "$LATEST_BUILD" == "null" ]]; then die "No Fabric loader found for MC ${MC_VERSION}" fi if [[ -z "$LATEST_INSTALLER" ]]; then die "Could not determine latest Fabric installer version" fi local VER_LOADER VER_LOADER="${FABRIC_LOADER_VERSION:-${LATEST_BUILD}}" local DL_URL DL_URL="https://meta.fabricmc.net/v2/versions/loader/${MC_VERSION}/${VER_LOADER}/${LATEST_INSTALLER}/server/jar" log "Downloading Fabric (loader ${VER_LOADER}, installer ${LATEST_INSTALLER})..." curl -fL -o server.jar "${DL_URL}" log "Fabric ${MC_VERSION} (loader ${VER_LOADER}) downloaded." }