ガイド
BungeeCordプラグインの作り方
2026年10月18日に更新
BungeeCordプラグインは、ゲームサーバーではなく、サーバーの前に置かれたプロキシで動きます。プレイヤーの接続、サーバーの移動、退出がわかるので、ネットワーク全体のチャット、スタッフ用ツール、メンテナンスモード、MOTD、サーバー間のプレイヤーの転送に適しています。ワールドやブロックは持たないため、ゲームプレイはバックエンドサーバーのプラグインで扱います。
コマンドを自分のネットワークに合わせて変えてください。
Codexeでこれを生成手順
1.使っているプロキシを確認する
BungeeCord(またはWaterfallなどのフォーク)とVelocityは、別々のAPIです。BungeeCordプラグインはVelocityでは動かず、その逆も同じです。
2.プロジェクトを用意する
MavenまたはGradleのプロジェクトで、
bungeecord-apiの依存関係をprovidedスコープで追加します。実行時にはプロキシが提供します。3.メインクラスを書く
net.md_5.bungee.api.plugin.Pluginを継承するクラスを作り、onEnable()で、getProxy().getPluginManager()を通じてコマンドとリスナーを登録します。4.bungee.ymlに記述する
name、version、main、author。BungeeCordはplugin.ymlも読み込みますが、bungee.ymlにすればSpigotプラグインと紛らわしくなりません。コマンドはファイルではなくコードで登録します。5.コマンドとリスナーを書く
コマンドは
Commandを継承し、リスナーはListenerを実装して、PostLoginEventやServerSwitchEventなどのイベント用に@EventHandlerメソッドを持たせます。6.必要ならバックエンドサーバーとやり取りする
プロキシからはインベントリやワールドが見えません。それが必要なら、各バックエンドサーバーに小さな補助プラグインを置き、プロキシプラグインとプラグインメッセージをやり取りします。
7.プロキシにインストールする
.jarをプロキシの
plugins/フォルダに入れ、バックエンドサーバーではなくプロキシを再起動します。
便利なプロキシのイベント
| イベント | 発生するタイミング | よくある用途 |
|---|---|---|
ProxyPingEvent | クライアントがサーバーリストを更新したとき | MOTD、プレイヤー数、メンテナンスのお知らせ |
PostLoginEvent | プレイヤーがプロキシに参加したとき | 参加メッセージ、プレイヤーデータの読み込み |
ServerConnectEvent | プレイヤーがサーバーに接続しようとしているとき | プレイヤーをロビーに送る、サーバーへの接続をブロックする |
ServerSwitchEvent | プレイヤーが別のサーバーに移動したとき | ネットワーク全体への「サーバーに参加しました」メッセージ |
PlayerDisconnectEvent | プレイヤーがネットワークから退出したとき | データの保存、スタッフへの通知 |
ChatEvent | プレイヤーがチャットメッセージやコマンドを送信したとき | ネットワークチャット、フィルター、スタッフチャット |
ネットワークを正しく設定する
- プロキシの
config.ymlでip_forwardを有効にし、各SpigotまたはPaperサーバーのspigot.ymlでbungeecord: trueにします。これで、プレイヤー名とUUIDが引き継がれます。 - バックエンドサーバーを
online-mode=falseにし、インターネットから直接ではなく、プロキシ経由でしか接続できないようにします。 - プラグインメッセージは、プレイヤーがそのバックエンドサーバーに接続している間しか届きません。誰もいないサーバーへのメッセージは配信されません。
説明の例
「NetUtilsという名前のBungeeCord 1.21プロキシプラグイン。/lobbyでプレイヤーをロビーサーバーに送る。/staffchat <message>(エイリアス/sc)で、どのサーバーにいてもnetutils.staffを持つ全員にメッセージを送る。/maintenance on|offでメンテナンス用のMOTDを表示し、netutils.bypassを持たないプレイヤーをキックする。スタッフがサーバーを移動するとスタッフチャットに参加メッセージ。サーバー名、MOTD、メッセージはconfig.ymlに置く。」
Codexeで
BungeeCord/Velocityタイプを選び、使っているプロキシを書いてください。この2つは別々のAPIです。CodexeはMavenでプラグインをコンパイルし、準備完了になる前に、.jarに正しい記述ファイルがあるか確認します。リクエストにバージョンがなければ、BungeeCord API 1.21が使われます。バックエンド用の補助プラグインが必要なら、別のSpigot/Paperプロジェクトとして依頼してください。
「今すぐ試す」はまだプロキシサーバーに対応していないので、プロキシプラグインは自分のネットワークか、バックエンドサーバー1台を付けたローカルのプロキシでテストしてください。BungeeCordプラグインジェネレーターも参照してください。
よくある質問
BungeeCordプラグインでブロックやインベントリを変更できますか?
いいえ。プロキシが扱うのは接続とメッセージだけです。ゲームプレイにはバックエンドのプラグインを使い、2つを連携させる必要があればプラグインメッセージを使います。
Velocityでも動きますか?
いいえ。Velocityには独自のAPIとvelocity-plugin.jsonがあります。両方を使うなら、プロジェクトを2つ作ってください。
チャットにはプロキシプラグインとバックエンドプラグインのどちら?
チャットをすべてのサーバーのプレイヤーに届けるならプロキシプラグイン、1つのサーバー内で完結するならバックエンドプラグインです。
ネットワーク用のプラグインを作る
このプロンプトは、そのまま送信できる状態で開きます:
“NetUtilsという名前のBungeeCord 1.21プロキシプラグイン: /lobbyでプレイヤーをロビーサーバーへ、/staffchat(エイリアス/sc)でどのサーバーにいてもnetutils.staffを持つ全員にメッセージ、/maintenance on|offでメンテナンス用MOTDを表示しnetutils.bypassのないプレイヤーをキック、スタッフのサーバー移動をスタッフチャットで通知、サーバー名、MOTD、メッセージはconfig.yml。”
Codexeでこれを生成