Skip to content

Paper

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

Report an issue
updated
variables
4
images
7
author
parker@pterodactyl.io
sha256
fa76a2409a1f

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

Startup command

java -Xms128M -XX:MaxRAMPercentage=95.0 -Dterminal.jline=false -Dterminal.ansi=true -jar {{SERVER_JARFILE}}

The parts in blue are filled in by the panel when the server starts, from the variables below.

Docker images

  • Java 25 ghcr.io/ptero-eggs/yolks:java_25
  • Java 22 ghcr.io/ptero-eggs/yolks:java_22
  • Java 21 ghcr.io/ptero-eggs/yolks:java_21
  • Java 17 ghcr.io/ptero-eggs/yolks:java_17
  • Java 16 ghcr.io/ptero-eggs/yolks:java_16
  • Java 11 ghcr.io/ptero-eggs/yolks:java_11
  • Java 8 ghcr.io/ptero-eggs/yolks:java_8

Panel features

  • eula
  • java_version
  • pid_limit

5 contributors

Variables

4 settings

  • Minecraft Version

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

    env
    MINECRAFT_VERSION
    default
    latest
    rules
    nullable|string|max:20
    • viewable
    • editable
  • Server Jar File

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

    env
    SERVER_JARFILE
    default
    server.jar
    rules
    required|regex:/^([\w\d._-]+)(\.jar)$/
    • viewable
    • editable
  • Download Path

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

    env
    DL_PATH
    default
    none
    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.

    env
    BUILD_NUMBER
    default
    latest
    rules
    required|string|max:20
    • viewable
    • editable
Installation script 52 lines container ghcr.io/ptero-eggs/installers:alpine entrypoint ash show
#!/bin/ash
# Paper Installation Script
#
# Server Files: /mnt/server
PROJECT=paper
USER_AGENT="Pterodactyl (https://Pterodactyl.io)"

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 --user-agent "${USER_AGENT}"  -s https://fill.papermc.io/v3/projects/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions | any(.[]; index($VERSION))' | grep -m1 true`
	LATEST_VERSION=`curl --user-agent "${USER_AGENT}"  -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 --user-agent "${USER_AGENT}"  -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 --user-agent "${USER_AGENT}"  -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 --user-agent "${USER_AGENT}"  -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 --user-agent \"${USER_AGENT}\"  -o ${SERVER_JARFILE} ${DOWNLOAD_URL}"

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

curl --user-agent "${USER_AGENT}"  -o ${SERVER_JARFILE} ${DOWNLOAD_URL}

if [ ! -f server.properties ]; then
    echo -e "Downloading MC server.properties"
    curl --user-agent "${USER_AGENT}"  -o server.properties https://raw.githubusercontent.com/pterodactyl/game-eggs/main/minecraft/java/server.properties
fi