Bukkit Spigot Japan Wikiは、Hello Minecraftを応援しています。

超まいくらひろば2017バナー

 

 

BungeeCord

提供: Bukkit Spigot Japan Wiki
移動: 案内検索
ツール名 BungeeCord
製作者 md_5 他(SpigotMC)
配布場所.1 BungeeCord
配布場所.2 BungeeCord(Jenkins)
最新バージョン #1212
最新版対応バージョン Minecraft 1.8~1.11
ライセンス GitHub参照
ソースコード https://github.com/SpigotMC/BungeeCord/
関連サイト 公式Wiki(en)

BungeeCordについて

BungeeCordが接続プレーヤーとサーバーを介することを表した図です。

BungeeCordとは、SpigotMCによるMinecraft用のプロキシサーバーおよびソフトウェアです。
BungeeCordは、サーバー(Spigot等のサーバー)とプレイヤーの間に設置され、プレイヤーを切断させることなく別の実際のサーバーに移動させたりすること(サーバー間移動)ができます(右図参照)。
また、複数サーバーを単一にみせられることから、それぞれのサーバーで負荷を分散したり、もしくは複数コアCPUを効率的に利用することができます。

BungeeCordの構築

始めはサーバー一つでのやり方を説明し、その後サーバー二つでのやり方を説明します。
なお、BungeeCordの構築は、先にサーバーを建てられる技能がないと厳しいため、
サーバー構築サーバーの設定を読んでいることを推薦します。

BungeeCordの構築の大まかな流れ

前提:サーバー構築サーバーの設定を参考にしてサーバーを立ておいて下さい。

できればBungeeCordを使用するのであれば、SpigotMCが開発しているためSpigotを使用することをおすすめします。
ここではSpigotで説明を行っていきます。

  1. #ダウンロード
  2. #起動およびファイル生成
  3. #チュートリアル
  4. #起動
  5. #サーバーを複数繋げるための設定変更
  6. #サーバーを複数繋げた後の起動

ダウンロード

BungeeCord(Jenkins)より、
「最新成功ビルドの成果物」の下のBungeeCord.jarをクリックしてダウンロードし、適当なフォルダに移動します。
念の為に日本語などの2バイト文字がパスに入らないようにすることを推薦します(例: C:\BungeeCord)。

起動およびファイル生成

BungeeCordを入れたフォルダ内に、以下の様な内容のスクリプトを作成して下さい。

  • Windows(拡張子:bat)
@echo off
java -Xms512M -Xmx512M -jar BungeeCord.jar
pause
  • Linux(拡張子:sh)
 #!/bin/bash
 
 java -Xms512M -Xmx512M -jar BungeeCord.jar

作成したスクリプトを実行して下さい。

すると、jarがあるフォルダ内にファイルが生成されます。
生成がされたら終了しましょう。
終了するには「end」とコマンドプロンプトに打つことで可能です。
(基本的にendをしてから終了して下さい)

設定変更

BungeeCordの起動は完了しましたが、この状態では何もできません。
ですので、以下のようにファイルを編集し、設定を変更しましょう。
(詳しいconfig.ymlの説明については、下記の#config.ymlの設定変更を確認してください)
なお先に、YAMLファイルを確認しておくことを推薦します。

BungeeCordのconfig.ymlの編集

  • 自分のMinecraftアカウントに権限を付与します。
    権限を付与するために、groupsの項目のmd_5を自分のMinecraftIDと置き換え、admin(管理者という意味)という権限を付与しましょう。

設定例(md_5からNotchに置き換え)

groups:
  Notch:
  - admin


  • BungeeCordの読み込むサーバーの追加をします。
    BungeeCordが読み込むサーバーを追加するために、serversの項目を設定します。
    以下の設定例を参考に編集して下さい。

設定例

servers:
  s1:
    address: 127.0.0.1:25566
    restricted: false
    motd: 'A Minecraft Server'
項目 解説
s1 読み込むサーバーのBungeeCordで扱う時のサーバー名を設定します。
address サーバーを実行しているコンピューターのアドレスを指定します。(127.0.0.1ならびにlocalhostは自分のコンピューターを指します)
restricted restrictedとは、権限を持っていなければそのサーバーへ移動できないようにするという設定です。
trueにすると、bungeecord.server.サーバー名の権限が無いとそのサーバーへ移動できなくなります。
falseで無効となります。
motd あまり使っているところを見たことがないですが、BungeeCordから表示されるMOTDを設定します。


  • UUIDの使用のために設定を変更します。
    ip_forwardの設定を、true(有効)にします。

基本的に、trueを推薦します。
なぜなら、serversで設定したサーバーを使用する際にサーバーをオフラインにする必要があるために、UUIDを正常に取得できない問題があるためです。
そしてこの設定は、その問題を対策する機能を有効にできます。

ただしこの機能は、この設定を有効にしただけでは機能しません。
有効にした際には、serversに登録したサーバー(Spigotのみ)のspigot.yml内のBungeeCordtrueにする必要があります。

ただし、公式サーバーを利用する際にこの設定が有効だと、標準では機能しない上に接続できない仕様になっています。
ですので、公式サーバーを利用する際は、#公式サーバーでの利用の項目を御覧ください。

  • BungeeCordをオンラインモードにします。
    online_modeの設定をtrueにします。

基本的にtrue(有効)にしておいて下さい。 この設定は、BungeeCord全体のオンラインモード、つまりプレーヤーが正規プレーヤー(オフラインのプレーヤーでないか、割れプレーヤーでない)かを確認し、そうでなければ入れなくする設定です。
なぜこの設定があるかと言うと、BungeeCordは接続するサーバーへアドレスとプレーヤーの情報を渡すために、接続するサーバーのオンラインモードを無効にする必要があるためです。
そのために、BungeeCordでしか正規プレーヤーかを確認することができません。ですので、有効にしておく必要があります。

また、この設定を有効にしていて接続するサーバーの設定でオンラインモードを無効にしているのに、割れサーバー(割れプレーヤーが入れるサーバー)と間違えられてしまった場合は、上記の理由があると言えば良いでしょう。

サーバーのserver.propertiesの編集

  • 不要な機能を無効にします。
    max-tick-time=-1にしてください。

問題が起こった際に自動停止するかの設定ですが、ラグでも止まってしまう事があるためにこのように設定して下さい。

  • 最大接続プレーヤー数を設定します。
    max-playersの設定は自由に設定して下さい。(例: max-players=20)

この設定は、最大接続プレーヤー数を設定できます。サーバーのスペックなどに応じた数に設定して下さい。

  • ポート番号を変更します。
    server-portの番号を25565から25566(自由で良い)へ変更して下さい。

サーバーが使用するポート番号を設定するものですが、同一コンピューターでサーバーとBungeeCordを実行していて、BungeeCordのポート番号を25565(標準の番号)で設定した場合に、サーバーのポートと被らないようにするため変更します。
ですが、上記の条件に当てはまらなければこのように変更する必要はありません

  • サーバーのオンラインモードを無効にします。
    online-modetrueからfalseにして下さい。

上記の通り、プレーヤーが正規プレーヤーかを確認する設定ですが、BungeeCordの仕様で、読み込むサーバーはオンラインモードを無効にする必要があるため、このように設定します。

サーバーのspigot.ymlの編集

  • BungeeCord下のサーバーで、UUIDを利用するために設定を変更します。
    bungeecordの設定をtrueへ変更します。

上記の「UUIDの使用のために設定を変更します。」で設定した機能のip_forwardを機能させるためには、この設定を有効にする必要があるため変更します。

サーバーのbukkit.ymlの編集

  • 不要な機能を無効にします。
    connection-throttleの設定を-1にします。

接続する間隔が設定した時間より早かったら、その接続を弾くという設定ですが、BungeeCordだと邪魔になるため、無効(-1)にします。

起動

起動にあったって

スクリプトの記述はそのままでも良いですが、安定動作のためにはメモリの割当を変更したり、する必要があります。 スクリプトの記述についての説明は起動用スクリプトにかかれているので参照して下さい。}

起動する

  1. BungeeCordのbatを押してBungeeCordを起動する。
  2. サーバーのbatを押して鯖を起動する。
  3. クライアントのMinecraftを起動する。
  4. 127.0.0.1もしくはlocalhostでサーバーに入る。
  5. /server等でサーバーがあること、BungeeCordが構築できたことを確認する。
  6. それぞれを終了する。

これで、サーバーが作られたことを確認できました。
起動時、接続時にエラーが出た時は、そのエラーを読んで下さい。
以降は、サーバーを複数繋げるために行います。

サーバーを複数繋げるための設定変更

既に上記で構築済みのBungeeCordとサーバーがあり、なおかつまだ追加していないサーバーがあることを前提とします。

BungeeCordのconfig.ymlの編集

  • serversの項目のサーバーをコピペしてもう一つ作ります。

設定例(コピペされるもの)

  s1:
    address: 127.0.0.1:25566
    restricted: false
    motd: 'A Minecraft Server'

コピーしたものの名前とポートをそれぞれ変更して下さい。
※ポート番号を変更するのは、コピペされたものとしたもののポート番号が被ってしまうのを防ぐためです。
するとserversの項目が以下のようになっていると思います。 設定例

servers:
  s1:
    address: 127.0.0.1:25566
    restricted: false
    motd: 'A Minecraft Server'
  s2:
    address: 127.0.0.1:25567
    restricted: false
    motd: 'A Minecraft Server'

config.ymlを保存して下さい。

追加する方サーバーのserver.propertiesの編集

  • server-port=25565をserver-port=25567にしてください。
    要するに先ほどのaddressのポート番号と同じにしてください。

server.propertiesを保存して下さい。

サーバーを複数繋げた後の起動

※起動の項目とほぼ同じです。

  1. BungeeCordのbatを押してBungeeCordを起動する。
  2. サーバーのbatを押してサーバーを起動する。
  3. もう一方のサーバーのbatを押してサーバーを起動する。
  4. クライアントのMinecraftを起動する。
  5. 127.0.0.1で鯖に入る。
  6. /server s2をしてみて、s2のサーバーに移動できたら増設完了です。
  7. それぞれを終了する。

以上の方法で、BungeeCordに読み込むサーバーの増築が可能です。
BungeeCordの構築が終わったら、次は設定をいじったり、#BungeeCordのプラグインを追加したりしましょう。

公式サーバーでの利用

公式サーバーでは、ip_forwardの機能を有効にすると接続できない仕様(#設定変更内で説明)になっています。
解決策は、基本的に以下の2つです。

  1. ip_forwardの機能を無効にする。
  2. VanillaCordでパッチを当てる。

1.は楽ですが、当然BungeeCord下のサーバーでUUIDの利用ができなくなってしまいます。
ですので2.の方法を使用する必要があります。

2.のVanillaCordは、公式サーバーでBungeeCordを利用する際、
ip_forwardの機能を利用できるようにパッチを当ててくれる(修正を加える)ソフトウェアです。
まず、VanillaCordからVanillaCordをダウンロードします。
次に、起動用スクリプトを作成し、実行します。
すると、inフォルダ(パッチを当てる前のバニラサーバーが入ってる)とoutフォルダ(パッチを当てた後のサーバーが入ってる)が生成されます。
ですので、outフォルダ内の<サーバーのバージョン>-bungee.jarを既存の公式サーバーのjarファイルと置き換えて、
起動することで機能するようになります。(サーバー起動用スクリプトの-jar部分の変更を忘れないで下さい)

それ以降は、Spigot等のサーバーと基本的に同じように設定することで、構築可能です。

config.ymlの初期設定

BungeeCord ver:1088 config.yml

player_limit: -1
ip_forward: false
permissions:
  default:
  - bungeecord.command.server
  - bungeecord.command.list
  admin:
  - bungeecord.command.alert
  - bungeecord.command.end
  - bungeecord.command.ip
  - bungeecord.command.reload
timeout: 30000
online_mode: true
servers:
  lobby:
    motd: '&1Just another BungeeCord - Forced Host'
    address: localhost:25565
    restricted: false
listeners:
- query_port: 25577
  motd: '&1Another Bungee server'
  tab_list: GLOBAL_PING
  query_enabled: false
  forced_hosts:
    pvp.md-5.net: pvp
  ping_passthrough: false
  default_server: lobby
  bind_local_address: true
  fallback_server: lobby
  host: 0.0.0.0:25577
  max_players: 1
  tab_size: 60
  force_default_server: false
disabled_commands:
- disabledcommandhere
network_compression_threshold: 256
groups:
  md_5:
  - admin
connection_throttle: 4000
stats: (それぞれによる)

config.ymlの設定変更

BungeeCordのconfig.ymlを書き変えることで、様々な設定を変更できます。
また、config.ymlにはYAML形式が使用されています。YAML形式についてはYAMLファイルを確認して下さい。

項目 説明
player_limit BungeeCordで入れる最大人数を設定します。後述されているlistners内にあるmax_playersと違い、実際に入れる人数の方を指定します。
-1と設定することで上限なしになります。
stats 統計に使ってる値です。触る必要はありません。
groups 権限を設定するユーザーを追加します。
permissions 権限を設定出来ます。
listeners リスナーの項目を始めるという目印です。
max_players 表示上のプレーヤー上限を設定出来ます。
fallback_server 接続失敗した時に接続するサーバーを設定出来ます。
host BungeeCordのIPとポートを設定します。0.0.0.0:25565を推薦。
tab_list 動作していないのことです。
default_server 接続時に入るサーバーを設定出来ます。
forced_hosts 鯖ごとにIPを設定する感じです。ただし他にもいろいろしなければなりません。
tab_size Tabキーを押した時のプレーヤーリストの大きさを設定します。
force_default_server BungeeCordに接続するときに、毎回default_serverで設定したサーバーに入るのかを設定します。
motd 鯖選択時(サーバーリスト)に表示される文字列を設定します。
query_enabled APIなどで特定の情報を取得する時に使うもの。
query_port 情報を公開時のポートを設定します。サーバーに使われているポートでも設定可能です。
timeout 接続がタイムアウトする時間の設定。
connection_throttle 次の接続までの接続が制限されるミリ秒を設定できます。(サーバーに対する連続攻撃を防ぐ目的です)
servers BungeeCordで読み込むサーバーを追加します。
ip_forward 基本的にtrueを推薦します。(詳細は上記)
online_mode 基本的にtrueにしておいて下さい。BungeeCord全体のonline_modeを設定します。

コマンド一覧

コマンド パーミッションノード 説明
alert <message> bungeecord.command.alert BungeeCordに入っているプレーヤーにメッセージを送ります。これはBungeeCordが読み込んでいるサーバー全てに表示されます。
「&」でカラーコードを使用することが出来ます。カラーコードではないが、&hは完全にカスタムメッセージを可能にし、すべてのデフォルトの書式設定を非表示になります。
alertraw <json> bungeecord.command.alert BungeeCordに入っているプレーヤーにメッセージを送ります。これはMinecraft JSONフォーマットを使用します。
bungee なし 実行しているBungeeCordのバージョンを表示します。
end bungeecord.command.end 全てのプレーヤーの接続を切り、BungeeCordを終了します。
find <player> bungeecord.command.find 選択したユーザーがどのサーバーに居るのかを表示します。
glist bungeecord.command.list BungeeCordに接続しているプレーヤーを表示します。
BungeeCordが読み込んでいるサーバーごとに分け、またBungeeCordに接続している総プレーヤー数も表示します。
greload bungeecord.command.reload BungeeCordのconfigを再読込します。このコマンドはBukkitのreloadコマンド同様、このコマンドは予期しない動作が発生することがあるため使用を推薦しません。
このコマンドでは、BungeeCordのconfig.yml内のserversとlistenersと幾つかのオプションを再読込します。しかしパーミッションとプラグインは再読込しません。
ip <player> bungeecord.command.ip BungeeCordに接続するプレーヤーのIPアドレスを表示します。
このコマンドはBukkitプラグインがIPコマンドが存在していると、正しく動作しない時にはBungeeCordのIPコマンドを使用すると良いと思います。
perms なし どのグループに入っていて、どんなパーミッションがあるのかを表示します。
send <player/current/all> <target> bungeecord.command.send 選択したプレーヤーを<target>のサーバーに移動します。
「all」を入力するとBungeeCordに接続ししている全てのプレーヤーを選択します。
プレーヤー名を入力するとそのプレーヤーを選択します。
「current」と入力すると現在居るサーバーのプレーヤーを選択します。
server [server] bungeecord.command.server [server]を何も入力しなかった時は、接続可能なサーバーのリストを表示します。
[server]の部分にサーバー名を入力すると、選択したサーバーに移動します。

BungeeCordのプラグイン

BungeeCordはプラグインを追加することで、機能の拡張が出来ます。
ここでは使うと良いプラグインを紹介します。
※導入は、殆どBungeeCord/pluginsに入れ、起動するだけで可能なことが多い。
しかし、設定等はそれぞれの配布ページを見たり、検索をしたりして行わなくてはなりません。

  • BungeeTabListPlus
    BungeeCordでタブリストを設定出来るプラグイン。
    BungeeTabListPlus_BukkitBridge.jarはSpigot・CraftBukkitのpluginsフォルダーに入れる必要があります。
  • MCBansProxy
    MCBansのBungeeCord版。荒らしの対策が可能なプラグイン。
  • AddressLimit
    単一IPで接続できる最大数を設定出来るプラグイン。
  • BungeeJapanizeMessenger
    サーバーのチャットで日本語化したり、他の鯖にチャットを表示出来るプラグイン。
  • BungeePortals
    serversの鯖間をポータルで移動できるようにするプラグイン。
  • TeleportSigns
    サーバー間を看板で移動できるようにするプラグイン。Spigot・CraftBukkitサーバーに導入する。
  • Janus
    サーバー間を移動できるネザーゲートを作成できるプラグイン。Spigot・CraftBukkitサーバーに導入する。(公式md_5氏作成)

リンク