プロキシの導入
プレースホルダー・自動更新のタブリスト・MOTD・参加メッセージを内蔵した Velocity のフォーク、Storia Proxy を動かす。
Storia Proxy は、PaperMC のプロキシ Velocity のフォークです。Velocity と同じく、 1 つのアドレスでプレイヤーを複数のサーバーにつなぎます。さらに次の機能を加えています。
- プロキシ・各サーバー・表示するプレイヤーの情報を出せる 50 個のプレースホルダー(プレースホルダー一覧 を参照)
- プレースホルダーを使える サーバーリストの MOTD
- 毎秒更新される タブリストのヘッダーとフッター
- ネットワーク全体への 参加・退出・サーバー移動のメッセージ
- 自作の Velocity プラグイン向けの プレースホルダー API(プレースホルダー API を参照)
- 一覧表示・試し表示・再読み込みができる
/storiaproxyコマンド
それ以外は Velocity そのままです。velocity.toml もプラグインもフォワーディングも同じです。
インストール#
Java 21 以上が必要です。
- ダウンロードページ から
storia-proxy-26.2.jarを入手します。 -
起動します。
bash java -Xms512M -Xmx512M -jar storia-proxy-26.2.jar -
velocity.toml、forwarding.secret、storia-proxy.tomlが作られます。endで止めます。
Storia サーバーをつなぐ#
プレイヤーの UUID やスキンを安全に引き継げる modern フォワーディング を使います。
プロキシの velocity.toml:
bind = "0.0.0.0:25565"
online-mode = true
player-info-forwarding-mode = "modern"
forwarding-secret-file = "forwarding.secret"
[servers]
lobby = "127.0.0.1:30066"
survival = "192.168.0.10:30067"
try = ["lobby"]
各 Storia サーバー では:
# server.properties
server-port=30066
online-mode=false
# config/paper-global.yml
proxies:
velocity:
enabled: true
online-mode: true
secret: "<forwarding.secret の中身>"
各サーバーを再起動してから、プロキシを再起動します。プレイヤーはプロキシのアドレスに接続します。
注意
各サーバーは認証をプロキシに任せるようになるので、インターネットから直接つながらないようにしてください(ファイアウォール)。
storia-proxy.toml#
文字列には MiniMessage と {プレースホルダー} を使えます。
[motd]
# サーバーリストの説明文を置き換えます(2 行)。
enabled = true
lines = [
"<gradient:#bdbdbd:#ffffff><bold>{proxy_name}</bold></gradient> <dark_gray>|</dark_gray> <gray>{servers_online}/{server_count} servers up",
"<gray>{online} players online <dark_gray>·</dark_gray> {time}"
]
# サーバーリストに出す最大人数。-1 なら velocity.toml の show-max-players のまま。
max-players = -1
[tablist]
enabled = true
# ヘッダーとフッターの更新間隔(ミリ秒)。
interval-ms = 1000
header = [
"",
"<white><bold>{proxy_name}</bold>",
"<gray>{online}/{max} online <dark_gray>·</dark_gray> {time}",
""
]
footer = [
"",
"<gray>{player_server} <dark_gray>({player_server_online})</dark_gray> <dark_gray>·</dark_gray> ping <{player_ping_color}>{player_ping}ms</{player_ping_color}>",
"<dark_gray>uptime {uptime}",
""
]
[messages]
# 全員に送ります。空("")にすると送りません。
join = "<dark_gray>[<green>+</green>]</dark_gray> <gray>{player}"
leave = "<dark_gray>[<red>-</red>]</dark_gray> <gray>{player}"
# {previous_server} も使えます。
switch = "<dark_gray>[<aqua>»</aqua>]</dark_gray> <gray>{player}: {previous_server} → {player_server}"
[server-status]
# {status_<server>} や {motd_<server>} などのために各サーバーへ ping する間隔。
refresh-seconds = 10
| 項目 | 初期値 | 説明 |
|---|---|---|
motd.enabled |
true |
サーバーリストの説明文を置き換えます。 |
motd.lines |
上記 | 最大 2 行。まだプレイヤーがいないので、プレイヤーのプレースホルダーは空になります。 |
motd.max-players |
-1 |
表示する最大人数。-1 は velocity.toml の show-max-players。 |
tablist.enabled |
true |
タブリストにヘッダーとフッターを表示します。 |
tablist.interval-ms |
1000 |
更新間隔。最小 250。 |
tablist.header / footer |
上記 | 表示する行。 |
messages.join / leave / switch |
上記 | ネットワーク全体へのメッセージ。"" で無効。 |
server-status.refresh-seconds |
10 |
各サーバーに ping する間隔。最小 2。 |
変更は /storiaproxy reload で、再起動せずに反映できます。
/storiaproxy#
権限:storiaproxy.admin(コンソールは常に使えます)
| コマンド | 説明 |
|---|---|
/storiaproxy placeholders |
すべてのプレースホルダーと、その説明・自分にとっての現在の値。 |
/storiaproxy parse <テキスト> |
プレースホルダー入りの MiniMessage を 1 行表示して試せます。 |
/storiaproxy reload |
storia-proxy.toml を読み込み直します。 |
/storiaproxy parse <green>{online_lobby}</green> 人がロビーにいます。あなたは {player_server} にいます({player_ping}ms)
Velocity のプラグイン#
Storia Proxy では Velocity のプラグインがそのまま動きます。Storia Proxy 独自の部分以外は、 docs.papermc.io/velocity の Velocity のドキュメントがそのまま当てはまります。