#!/bin/bash set -eu # shellcheck source=start-utils . ${SCRIPTS:-/}start-utils requireVar VANILLA_VERSION export TYPE=FABRIC export SERVER=fabric-server-${VANILLA_VERSION}.jar isDebugging && set -x if [[ ! -e ${SERVER} ]]; then : ${FABRIC_INSTALLER:=} : ${FABRIC_INSTALLER_URL:=} : ${FABRIC_INSTALLER_VERSION:=${FABRICVERSION:-LATEST}} if [[ -z $FABRIC_INSTALLER && -z $FABRIC_INSTALLER_URL ]]; then log "Checking Fabric version information." if [[ ${FABRIC_INSTALLER_VERSION^^} = LATEST ]]; then FABRIC_INSTALLER_VERSION=$(maven-metadata-release https://maven.fabricmc.net/net/fabricmc/fabric-installer/maven-metadata.xml) fi FABRIC_INSTALLER="fabric-installer-${FABRIC_INSTALLER_VERSION}.jar" FABRIC_INSTALLER_URL="https://maven.fabricmc.net/net/fabricmc/fabric-installer/${FABRIC_INSTALLER_VERSION}/fabric-installer-${FABRIC_INSTALLER_VERSION}.jar" elif [[ -z $FABRIC_INSTALLER ]]; then FABRIC_INSTALLER="fabric-installer.jar" elif [[ ! -e $FABRIC_INSTALLER ]]; then log "ERROR: the given Fabric installer doesn't exist : $FABRIC_INSTALLER" exit 2 fi if [[ ! -e $FABRIC_INSTALLER ]]; then log "Downloading $FABRIC_INSTALLER_URL ..." if ! get -o "$FABRIC_INSTALLER" "$FABRIC_INSTALLER_URL"; then log "Failed to download from given location $FABRIC_INSTALLER_URL" exit 2 fi fi log "Installing Fabric ${VANILLA_VERSION} using $FABRIC_INSTALLER" tries=3 set +e while ((--tries >= 0)); do java -jar $FABRIC_INSTALLER server \ -mcversion $VANILLA_VERSION \ -downloadMinecraft \ -dir /data if [[ $? == 0 ]]; then break fi done set -e if (($tries < 0)); then log "Fabric failed to install after several tries." >&2 exit 10 fi mv fabric-server-launch.jar "${SERVER}" fi exec ${SCRIPTS:-/}start-setupWorld "$@"