Paper

games
Report Issue

High performance Spigot fork that aims to fix gameplay and mechanics inconsistencies.

Contributors:
README

Paper

Paper is the next generation of Minecraft server, compatible with Spigot plugins and offering uncompromising performance.

Check out the Paper Website 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.

Port default
Game 25565
Docker Images (6)
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
Startup Command
java -Xms128M -Xmx{{SERVER_MEMORY}}M -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}
Variables (4)

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:
nullable|string|max:20

Server Jar File

The name of the server jarfile to run the server with.

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

Download Path

A URL to use to download a server.jar rather than the ones in the install script. This is not user viewable.

Environment:
DL_PATH
Default:
None
User Viewable:
User Editable:
Rules:
nullable|string

Build Number

The build number for the paper release. Leave at latest to always get the latest version. Invalid versions will default to latest.

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=paper

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://fill.papermc.io/v3/projects/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions | any(.[]; index($VERSION))' | grep -m1 true`
	LATEST_VERSION=`curl -s https://fill.papermc.io/v3/projects/${PROJECT} | jq -r '.versions | to_entries | .[0].value[0]'`

	if [ "${VER_EXISTS}" == "true" ]; then
		echo -e "Version is valid. Using version ${MINECRAFT_VERSION}"
	else
		echo -e "Specified version not found. Defaulting to the latest ${PROJECT} version"
		MINECRAFT_VERSION=${LATEST_VERSION}
	fi

	BUILD_EXISTS=`curl -s https://fill.papermc.io/v3/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`
	LATEST_BUILD=`curl -s https://fill.papermc.io/v3/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[0]'`

	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

	echo "Version being downloaded"
	echo -e "Project: ${PROJECT}"
	echo -e "MC Version: ${MINECRAFT_VERSION}"
	echo -e "Build: ${BUILD_NUMBER}"
	DOWNLOAD_URL=`curl -s https://fill.papermc.io/v3/projects/${PROJECT}/versions/${MINECRAFT_VERSION}/builds/${BUILD_NUMBER} | jq -r '.downloads."server:default".url'`
fi

cd /mnt/server

echo -e "Running curl -o ${SERVER_JARFILE} ${DOWNLOAD_URL}"

if [ -f ${SERVER_JARFILE} ]; then
	mv ${SERVER_JARFILE} ${SERVER_JARFILE}.old
fi

curl -o ${SERVER_JARFILE} ${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