Folia

Games
Report Issue

Fork of Paper which adds regionised multithreading to the dedicated server.

Contributors:
README

Folia

Fork of Paper which adds regionised multithreading to the dedicated server.

Check out the Folia 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 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
Startup Command
java -Xms128M -XX:MaxRAMPercentage=95.0 -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 folia 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
# Folia Installation Script
#
# Server Files: /mnt/server
PROJECT=folia

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.papermc.io/v2/projects/${PROJECT} | jq -r --arg VERSION $MINECRAFT_VERSION '.versions[] | contains($VERSION)' | grep -m1 true`
	LATEST_VERSION=`curl -s https://api.papermc.io/v2/projects/${PROJECT} | jq -r '.versions' | jq -r '.[-1]'`

	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://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r --arg BUILD ${BUILD_NUMBER} '.builds[] | tostring | contains($BUILD)' | grep -m1 true`
	LATEST_BUILD=`curl -s https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION} | jq -r '.builds' | jq -r '.[-1]'`

	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.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION}/builds/${BUILD_NUMBER}/downloads/${JAR_NAME}
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