Egg Repository

Pterodactyl Community Egg Repository

Arclight

A Bukkit server implementation on common mod loaders.

Read Me

Arclight

A Bukkit server implementation on common mod loaders.

Check out the Github for more information.

Server Ports

The minecraft server requires a single port for access (default 25565) but plugins may require extra ports to enabled for the server.

Portdefault
Game25565
Yolks
NameTag
Java 8ghcr.io/ptero-eggs/yolks:java_8
Java 11ghcr.io/ptero-eggs/yolks:java_11
Java 16ghcr.io/ptero-eggs/yolks:java_16
Java 17ghcr.io/ptero-eggs/yolks:java_17
Java 19ghcr.io/ptero-eggs/yolks:java_19
Java 21ghcr.io/ptero-eggs/yolks:java_21
Java 22ghcr.io/ptero-eggs/yolks:java_22
Variables
NameDescriptionEnvironment VariableDefault ValueUser ViewableUser Editable
Server Jar FileName of the server JAR file that will be created (e.g. server.jar).SERVER_JARFILEserver.jarYesYes
Minecraft VersionThe version of Minecraft to download.MINECRAFT_VERSIONautoYesYes
Download PathOptional custom download URL. Leave empty to use the Arclight API.DOWNLOAD_URLNoNo
Arclight ChannelSelect the Arclight build channel (e.g. stable, beta). Use 'auto' to use the most recent one.ARCLIGHT_CHANNELautoYesYes
Arclight LoaderSelect the mod loader you want to use (forge, neoforge, fabric).ARCLIGHT_LOADERforgeYesYes
Install Script
#!/bin/bash
# Arclight Installation Script
#
# Server Files: /mnt/server
cd /mnt/server

BASE_API_URL="https://files.hypoglycemia.icu/v1/files/arclight"

if [ -n "${DOWNLOAD_URL}" ]; then
    echo "Using custom download URL: ${DOWNLOAD_URL}"
else
    echo "Fetching available Minecraft versions for Arclight..."
    ARCLIGHT_VERSION=$(curl -s "${BASE_API_URL}/minecraft" | jq -r '.files[].name' | sort -Vr)
    if [ -z "$ARCLIGHT_VERSION" ] || [ "$ARCLIGHT_VERSION" == "null" ]; then
        echo "Error: Could not fetch version list from API."
        exit 1
    fi
    if [ "$MINECRAFT_VERSION" == "auto" ]; then
        MINECRAFT_VERSION=$(echo "$ARCLIGHT_VERSION" | head -n 1)
        echo "Auto-selected Minecraft version: ${MINECRAFT_VERSION}"
    else
        VERSION_EXISTS=$(echo "$ARCLIGHT_VERSION" | grep -Fx "$MINECRAFT_VERSION")
        if [ -z "$VERSION_EXISTS" ]; then
            echo "Warning: Specified version '${MINECRAFT_VERSION}' not found. Falling back to the latest available version."
            MINECRAFT_VERSION=$(echo "$ARCLIGHT_VERSION" | head -n 1)
            echo "Fallback version: ${MINECRAFT_VERSION}"
        fi
    fi

    echo "Fetching available loaders for version ${MINECRAFT_VERSION}..."
    LOADER_LIST=$(curl -s "${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders" | jq -r '.files[].name')
    if [ -z "$LOADER_LIST" ] || [ "$LOADER_LIST" == "null" ]; then
        echo "Error: Could not fetch loader list from API."
        exit 1
    fi
    LOADER_EXISTS=$(echo "$LOADER_LIST" | grep -Fx "$ARCLIGHT_LOADER")
    if [ -z "$LOADER_EXISTS" ]; then
        echo "Warning: Specified loader '${ARCLIGHT_LOADER}' not found for version ${MINECRAFT_VERSION}"
        exit 1
    fi

    echo "Fetching available channels for version ${MINECRAFT_VERSION} and loader ${ARCLIGHT_LOADER}..."
    CHANNEL_LIST=$(curl -s "${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}")
    CHANNEL_LIST_NAME=$(echo "$CHANNEL_LIST" | jq -r '.files[].name')
    if [ "$ARCLIGHT_CHANNEL" == "auto" ]; then
        echo "Selecting preferred channel for loader ${ARCLIGHT_LOADER} ${MINECRAFT_VERSION}..."
        ARCLIGHT_CHANNEL=$(echo "$CHANNEL_LIST_NAME" | grep -E 'latest-stable|version-stable|latest-snapshot|version-snapshot' | \
            grep -x 'latest-stable' || \
            echo "$CHANNEL_LIST_NAME" | grep -x 'version-stable' || \
            echo "$CHANNEL_LIST_NAME" | grep -x 'latest-snapshot' || \
            echo "$CHANNEL_LIST_NAME" | grep -x 'version-snapshot' | head -n 1)
    
        if [ -z "$ARCLIGHT_CHANNEL" ]; then
            echo "No preferred channel found. Falling back to last in list."
            ARCLIGHT_CHANNEL=$(echo "$CHANNEL_LIST_NAME" | tail -n 1)
        fi

        CHANNEL_TYPE=$(echo "$CHANNEL_LIST" | jq -r ".files[] | select(.name==\"${ARCLIGHT_CHANNEL}\") | .type")
        echo "Auto-selected channel: ${ARCLIGHT_CHANNEL}"
    else
        if [ "$ARCLIGHT_CHANNEL" == "beta" ]; then
            CHANNELS=("latest-snapshot" "versions-snapshot")
        elif [ "$ARCLIGHT_CHANNEL" == "stable" ]; then
            CHANNELS=("latest-stable" "versions-stable")
        fi
        
        for CHANNEL in "${CHANNELS[@]}"; do
            if echo "$CHANNEL_LIST_NAME" | grep -q "$CHANNEL"; then
                ARCLIGHT_CHANNEL="$CHANNEL"
                break
            fi
        done
        
        if [ -z "$ARCLIGHT_CHANNEL" ]; then
            echo "Warning: Specified channel '${ARCLIGHT_CHANNEL}' not found for loader ${ARCLIGHT_LOADER} and Minecraft version ${MINECRAFT_VERSION}. Falling back to default channel."
    
            ARCLIGHT_CHANNEL=$(echo "$CHANNEL_LIST_NAME" | grep -E 'latest-stable|version-stable|latest-snapshot|version-snapshot' | \
                grep -x 'latest-stable' || \
                echo "$CHANNEL_LIST_NAME" | grep -x 'version-stable' || \
                echo "$CHANNEL_LIST_NAME" | grep -x 'latest-snapshot' || \
                echo "$CHANNEL_LIST_NAME" | grep -x 'version-snapshot' | head -n 1)
    
            if [ -z "$ARCLIGHT_CHANNEL" ]; then
                ARCLIGHT_CHANNEL=$(echo "$CHANNEL_LIST_NAME" | tail -n 1)
            fi
    
            echo "Fallback channel: ${ARCLIGHT_CHANNEL}"
        fi

        CHANNEL_TYPE=$(echo "$CHANNEL_LIST" | jq -r ".files[] | select(.name==\"${ARCLIGHT_CHANNEL}\") | .type")
    fi

    echo "Fetching builds for ${ARCLIGHT_LOADER}-${MINECRAFT_VERSION}-${ARCLIGHT_CHANNEL}..."
    if [ -z "$CHANNEL_TYPE" ] || [ "$CHANNEL_TYPE" == "null" ] || [ "$CHANNEL_TYPE" == "link" ]; then
        BUILD_NAME=${ARCLIGHT_CHANNEL}
        DOWNLOAD_URL="${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}/${ARCLIGHT_CHANNEL}"
    elif [ "$CHANNEL_TYPE" == "directory" ]; then
        BUILD=$(curl -s "${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}/${ARCLIGHT_CHANNEL}" | jq -r '.files[0]')
        BUILD_NAME=$(echo "${BUILD}" | jq -r '.name')
        DOWNLOAD_URL="${BASE_API_URL}/minecraft/${MINECRAFT_VERSION}/loaders/${ARCLIGHT_LOADER}/${ARCLIGHT_CHANNEL}/${BUILD_NAME}"
    else
        echo "Error: Unknown channel type. Exiting."
        exit 1
    fi


    echo "Selected build: ${BUILD_NAME}"
fi

echo "Downloading Arclight from: ${DOWNLOAD_URL}"

if [ -f "${SERVER_JARFILE}" ]; then
    echo "Backing up existing server jar..."
    mv "${SERVER_JARFILE}" "${SERVER_JARFILE}.old"
fi

curl -s -L -o "${SERVER_JARFILE}" "${DOWNLOAD_URL}"

if [ $? -ne 0 ]; then
    echo "Download failed. Please check the URL or your internet connection."
    exit 1
fi

echo "Download complete. File saved as ${SERVER_JARFILE}"