PaperにGeyserとFloodgateを導入してクロスプラットフォーム対応をしている。サーバ本体とプラグインを更新するときに用いているスクリプトを紹介する。curlを使用している。
Paper
Paperはダウンロードリンクをそのままwgetしても手に入るのだが、公式が案内している方法はそうではなかった。公式のものを少しアレンジしている。curl以外にjqを用いるので必要に応じてインストールされたい。
download.sh
#!/bin/bash
PROJECT="paper"
MINECRAFT_VERSION="1.21.3"
LATEST_BUILD=$(curl -s https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION}/builds | \
jq -r '.builds | map(select(.channel == "default") | .build) | .[-1]')
if [ "$LATEST_BUILD" != "null" ]; then
JAR_NAME=${PROJECT}-${MINECRAFT_VERSION}-${LATEST_BUILD}.jar
PAPERMC_URL="https://api.papermc.io/v2/projects/${PROJECT}/versions/${MINECRAFT_VERSION}/builds/${LATEST_BUILD}/downloads/${JAR_NAME}"
# Download the latest Paper version
echo "Latest stable build is $JAR_NAME"
curl -o paper.jar $PAPERMC_URL
echo "Download completed"
chmod 744 paper.jar
else
echo "No stable build for version $MINECRAFT_VERSION found :("
fi
exit 0
ダウンロード後にパーミッションを変更するようにしている。
GeyserとFloodgate
公式のダウンロードAPIの説明を基に構成した。
download.sh
#!/bin/bash
curl -L https://download.geysermc.org/v2/projects/geyser/versions/latest/builds/latest/downloads/spigot -H "Accept: application/json" --output Geyser-Spigot.jar
curl -L https://download.geysermc.org/v2/projects/floodgate/versions/latest/builds/latest/downloads/spigot -H "Accept: application/json" --output floodgate-spigot.jar
echo "Download completed"
chmod 744 Geyser-Spigot.jar
chmod 744 floodgate-spigot.jar
exit 0
こちらもダウンロード後にパーミッションを変更するようにしている