Purpur-Geyser-Floodgate

games
Report Issue

A drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features, with the addition of GeyserMC and Floodgate

Contributors:
README

Purpur-Geyser-Floodgate

Purpur-GeyserMC-Floodgate is a drop-in replacement for Paper servers designed for configurability, and new fun and exciting gameplay features, with the addition of GeyserMC and Floodgate

Purpur GitHub Purpur Website GeyserMC/Floodgate Website GeyserMC GitHub Floodgate GitHub

Server Ports

The minecraft server requires a single port for access (default 25565). GeyserMC requires an additional port (default 19132). Any other plugins you add may require extra ports to enabled for the server.

Port default Protocol
Java 25565 TCP
Bedrock 19132 UDP
Docker Images (9)
Name Image
Java 8 ghcr.io/ptero-eggs/yolks:java_8
Java 11 ghcr.io/ptero-eggs/yolks:java_11
Java 16 ghcr.io/ptero-eggs/yolks:java_16
Java 17 ghcr.io/ptero-eggs/yolks:java_17
Java 21 ghcr.io/ptero-eggs/yolks:java_21
Java 22 ghcr.io/ptero-eggs/yolks:java_22
Java 23 ghcr.io/ptero-eggs/yolks:java_23
Java 24 ghcr.io/ptero-eggs/yolks:java_24
Java 25 ghcr.io/ptero-eggs/yolks:java_25
Startup Command
java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true --add-modules=jdk.incubator.vector -jar {{SERVER_JARFILE}}
Variables (3)

Minecraft Version

The version of Minecraft to download. Leave at latest to always get the latest version. Invalid versions will default to latest.

Environment:
MINECRAFT_VERSION
Default:
latest
User Viewable:
User Editable:
Rules:
required|string|max:20

Server Jar File

The name of the .jar file to run the server with.

Environment:
SERVER_JARFILE
Default:
server.jar
User Viewable:
User Editable:
Rules:
required|regex:/^([\w\d._-]+)(\.jar)$/|max:80

Build Number

The build number for the Purpur release. Leave at latest to always get the latest version. Invalid versions will default to latest-stable. Accepted values: 'latest-stable' 'latest-successful'

Environment:
BUILD_NUMBER
Default:
latest
User Viewable:
User Editable:
Rules:
required|string|max:20
Installation Script
Container: ghcr.io/ptero-eggs/installers:alpine
Entrypoint: ash
#!/bin/ash
# Paper Installation Script
#
# Server Files: /mnt/server
PROJECT=purpur

# Download paths for Geyser and Floodgate. Do not change!!
GEYSER_DOWNLOAD_URL="https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot"
FLOODGATE_DOWNLOAD_URL="https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot"


if [ -n "${DL_PATH}" ]; then
	echo -e "Using supplied download url: ${DL_PATH}"
	DOWNLOAD_URL=`eval echo $(echo ${DL_PATH} | sed -e 's/{{/${/g' -e 's/}}/}/g')`
else
	VER_EXISTS=`curl -s https://api.purpurmc.org/v2/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep true`
	LATEST_VERSION=`curl -s https://api.purpurmc.org/v2/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`

	if [ "${VER_EXISTS}" == "true" ]; then
		echo -e "Version is valid. Using version ${MINECRAFT_VERSION}"
	else
		echo -e "Using the latest ${PROJECT} version"
		MINECRAFT_VERSION=${LATEST_VERSION}
	fi
	
	BUILD_EXISTS=`curl -s https://api.purpurmc.org/v2/${PROJECT}/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds.all | tostring | contains($BUILD)' | grep true`
	LATEST_BUILD=`curl -s https://api.purpurmc.org/v2/${PROJECT}/${MINECRAFT_VERSION} | jq -r '.builds.latest'`
	
	if [ "${BUILD_EXISTS}" == "true" ]; then
		echo -e "Build is valid for version ${MINECRAFT_VERSION}. Using build ${BUILD_NUMBER}"
	else
		echo -e "Using the latest ${PROJECT} build for version ${MINECRAFT_VERSION}"
		BUILD_NUMBER=${LATEST_BUILD}
	fi
	
	JAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${BUILD_NUMBER}.jar
	
	echo "Version being downloaded"
	echo -e "MC Version: ${MINECRAFT_VERSION}"
	echo -e "Build: ${BUILD_NUMBER}"
	echo -e "JAR Name of Build: ${JAR_NAME}"
	DOWNLOAD_URL=https://api.purpurmc.org/v2/${PROJECT}/${MINECRAFT_VERSION}/${BUILD_NUMBER}/download
fi

cd /mnt/server

echo -e "Downloading the requested purpur buid with curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}"

if [ -f ${SERVER_JARFILE} ]; then
	mv ${SERVER_JARFILE} ${SERVER_JARFILE}.old
fi
mkdir -p /mnt/server/plugins
curl -sSL -o ${SERVER_JARFILE} ${DOWNLOAD_URL}

echo -e "Downloading last successful build with curl -o plugins/geyser-spigot ${GEYSER_DOWNLOAD_URL}"
curl -sSL -o plugins/geyser-spigot.jar ${GEYSER_DOWNLOAD_URL}

echo -e "Downloading last successful build with curl -o plugins/floodgate-spigot.jar ${FLOODGATE_DOWNLOAD_URL}"
curl -sSL -o plugins/floodgate-spigot.jar ${FLOODGATE_DOWNLOAD_URL}

if [ ! -f server.properties ]; then
	echo -e "Downloading MC server.properties"
	curl -o server.properties https://raw.githubusercontent.com/ptero-eggs/game-eggs/main/minecraft/java/server.properties
fi
echo -e "Installation Finished"