Egg Repository

Pterodactyl Community Egg Repository

SpongeForge

A community-driven open source Minecraft: Java Edition modding platform.

Read Me

SpongeForge

SpongeForge is the implementation of the Sponge API on the Minecraft Forge platform.

SpongePowered Website

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

Author & Contributers

NameGithub ProfileBuy me a Coffee
Red-Banana-Officialhttps://github.com/Red-Banana-Official/
Parkervcphttps://github.com/parkervcp/
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 21ghcr.io/ptero-eggs/yolks:java_21
java 22ghcr.io/ptero-eggs/yolks:java_22
Variables
NameDescriptionEnvironment VariableDefault ValueUser ViewableUser Editable
Server Jar FileThe name of the Jarfile to use when running Forge Mod.SERVER_JARFILEserver.jarYesYes
Spongeforge Minecraft VersionEither use a full version such as: 1.20.6-50.0.22-11.0.0-RC1633 to fetch an exact version Or just use the Minecraft version such as: 1.20.6, 1.19.4, etc. to get the recommended version Supported versions can be found here: https://spongepowered.org/downloads/spongeforgeSF_MC_VERSION1.20.6YesYes
Install Script
#!/bin/bash
# SpongeForge Installation Script
#
# Server Files: /mnt/server
apt update
apt install -y jq curl

mkdir -p /mnt/server
mkdir -p /mnt/server/mods
cd /mnt/server

# Create spongeForge download URL using SF_MC_VERSION variable
if [[ "${SF_MC_VERSION}" == *-* ]]; then
    echo -e "Using specific SpongeForge version: ${SF_MC_VERSION}"
    SF_VERSION=${SF_MC_VERSION}
else
    echo -e "Fetching recommended SpongeForge version for Minecraft ${SF_MC_VERSION}"
    API_URL="https://dl-api-new.spongepowered.org/api/v2/groups/org.spongepowered/artifacts/spongeforge/latest?tags=minecraft:${SF_MC_VERSION}&recommended=true"
    SF_VERSION=$(curl -s ${API_URL} | jq -r '.coordinates.version // empty') || true
    if [[ -z "${SF_VERSION}" ]]; then
        echo -e "Attempting to fetch latest SpongeForge version for Minecraft ${SF_MC_VERSION}"
        API_URL="https://dl-api-new.spongepowered.org/api/v2/groups/org.spongepowered/artifacts/spongeforge/latest?tags=minecraft:${SF_MC_VERSION}&recommended=false"
        SF_VERSION=$(curl -s ${API_URL} | jq -r '.coordinates.version // empty') || true
    fi
    if [[ -z "${SF_VERSION}" ]]; then
        echo -e "Error: Failed to retrieve SpongeForge version for Minecraft ${SF_MC_VERSION}"
        exit 1
    fi
    echo -e "Found SpongeForge version: ${SF_VERSION}"
fi

# Handle older versions legacy-transfer
MC_VERSION=${SF_VERSION%%-*}
SF_BASE_URL="https://repo.spongepowered.org/repository/maven-releases"
if [[ "${MC_VERSION}" == "1.12.2" || $(printf '%s\n' "$MC_VERSION" "1.12" | sort -V | head -n1) == "$MC_VERSION" ]]; then
    SF_BASE_URL="https://repo.spongepowered.org/repository/legacy-transfer"
fi

# Download SpongeForge
if [[ $(printf '%s\n' "$MC_VERSION" "1.16.5" | sort -V | tail -n1) == "$MC_VERSION" || "${MC_VERSION}" == "1.21.4" ]]; then
    SF_DL_LINK="${SF_BASE_URL}/org/spongepowered/spongeforge/${SF_VERSION}/spongeforge-${SF_VERSION}-universal.jar"
else
    SF_DL_LINK="${SF_BASE_URL}/org/spongepowered/spongeforge/${SF_VERSION}/spongeforge-${SF_VERSION}.jar"
fi

echo -e "Downloading SpongeForge: ${SF_DL_LINK}"
curl -L --retry 5 --retry-delay 5 -o /mnt/server/mods/spongeforge-${SF_VERSION}.jar ${SF_DL_LINK} || {
    echo -e "Error: SpongeForge download failed. Attempted URL: ${SF_DL_LINK}"
    exit 1
}

# Forge version mappings for older versions
declare -A FORGE_VERSIONS=(
    ["1.12.2"]="14.23.5.2838"
    ["1.12.1"]="14.22.1.2480"
    ["1.11.2"]="13.20.1.2476"
    ["1.10.2"]="12.18.3.2477"
    ["1.9.4"]="12.17.0.1968"
    ["1.8.9"]="11.15.1.1890-1.8.9"
)

# Determine Forge version
if [[ -n "${FORGE_VERSIONS[${MC_VERSION}]}" ]]; then
    FORGE_VERSION=${FORGE_VERSIONS[${MC_VERSION}]}
else
    IFS='-' read -ra VERSION_PARTS <<< "$SF_VERSION"
    FORGE_VERSION=${VERSION_PARTS[1]:-${VERSION_PARTS[2]}}
fi

# Use unix_args.txt for versions 1.17 and above
if printf '%s\n' "$MC_VERSION" "1.17" | sort -V | tail -n1 | grep -q "$MC_VERSION"; then
    echo -e "Using unix_args.txt for versions 1.17 and above."
    ln -sf libraries/net/minecraftforge/forge/${MC_VERSION}-${FORGE_VERSION}/unix_args.txt unix_args.txt
fi

# Download Forge
echo -e "Downloading Forge for Minecraft ${MC_VERSION}"
FORGE_DL_LINK="https://maven.minecraftforge.net/net/minecraftforge/forge/${MC_VERSION}-${FORGE_VERSION}/forge-${MC_VERSION}-${FORGE_VERSION}-installer.jar"

echo -e "Forge download URL: ${FORGE_DL_LINK}"
curl -L --retry 5 --retry-delay 5 -o installer.jar ${FORGE_DL_LINK} || {
    echo -e "Error: Failed to download Forge installer. URL attempted: ${FORGE_DL_LINK}"
    exit 1
}

# Run installer
if ! java -jar installer.jar --installServer; then
    echo -e "Error: Invalid or corrupt Forge installer. URL: ${FORGE_DL_LINK}"
    exit 1
fi
rm installer.jar

# Locate universal jar
SERVER_JAR_PATH=$(find . -type f -name "forge-*-universal.jar" | head -n 1)
if [[ -f "$SERVER_JAR_PATH" ]]; then
    echo -e "Found Forge universal JAR: $SERVER_JAR_PATH"
    cp "$SERVER_JAR_PATH" server.jar
    cp "$SERVER_JAR_PATH" "${SERVER_JAR_PATH}.backup"
else
    echo -e "Error: Universal Forge JAR not found. Installation failed."
    exit 1
fi

echo -e "SpongeForge installation complete."