ツール/BungeeCord

提供:Minecraft Japan Wiki
ツール > BungeeCord
ナビゲーションに移動 検索に移動
ツール名 BungeeCord
製作者 md_5 他(SpigotMC)
配布場所.1 【1.8-1.15】 BungeeCord
配布場所.2 http://ci.md-5.net/job/BungeeCord/
最新バージョン (参照:https://ci.md-5.net/job/BungeeCord/lastStableBuild/)
最新版対応バージョン Minecraft 1.8~1.15
ライセンス GitHub参照
ソースコード https://github.com/SpigotMC/BungeeCord/
関連サイト 公式Wiki(en)
備考 -





BungeeCordについて[編集 | ソースを編集]

BungeeCordとは、SpigotMCによるMinecraft用のプロキシサーバーです。
BungeeCordは、サーバー(Spigot等のサーバー)とプレイヤーの間に設置され、プレイヤーを切断させること無く別の実際のサーバーに移動させたりすることが出来ます。

BungeeCordの機能[編集 | ソースを編集]

BungeeCordとは何か(misterT氏)より、

プレイヤーの認証
BungeeCordは、プレイヤーが実際にMinecraftを購入している正規のユーザーか確認してくれる(online-modeの場合)
なので、実際のサーバーはoffline-mode(後述)でも、online-modeのBungeeCordを経由していれば、 非正規のユーザーが入ってくることはない。
サーバー間移動
BungeeCordを使う大きな理由として、 プレイヤーが切断して別のサーバーにログインするという作業をしなくても、 別のサーバーに移動させることが出来る。 しかしこれは、接続先のサーバーがそのBungeeCordから接続されることを想定して設定している場合に限り、 関係ない他人のサーバーに繋げることが出来るわけではない。 そして、この機能を使い実際のサーバーを分けて、BungeeCord自体も複数に分けることで、 数万人規模のユーザーを同時に接続させているサーバーもある。
BungeeCordが、ユーザーを移動させる時には以下の様なことをしている。 また、ユーザーがBungeeCordにログインしてきた時に、 少し異なるが同じような方法で実際のサーバーに接続している。
接続先のサーバーに、移動させるユーザーとしてログインする。
技術的に、online-modeのサーバーにユーザーとしてログインさせることは出来ないので、 独自のIP Forwardingという技術(後述)を使って、移動させるユーザーの情報を送信している。
ログインに成功した場合は、ユーザーに対してワールドを移動したように見せかけて、 移動先のサーバーの情報を送信する。 またこの際に、移動元のサーバーの一部の情報(プレイヤーリストやスコアボード等)を、 削除するように通知する。
移動先のサーバーから送られてきている、ワールドやエンティティなどの様々な情報を、 プレイヤーに転送する。
しかし、移動先のサーバーからはBungeeCordがクライアントだと思っているので、 一部Entity ID等の問題があるので、それは書き換えて転送する。
IP Forwarding
BungeeCordを使う場合、実際のサーバーはoffline-modeである必要がある。 offline-modeだとプレイヤーのUUID等はプレイヤーネームから生成されるので、 プレイヤーネームを変更された場合に問題が発生する。 またoffline-modeだとスキン等も反映されず、いろいろな問題がある。 そし>て、実際のサーバーからは、BungeeCordをクライアントとして処理されるので、 プレイヤーのIPアドレスもBungeeCordのものになり、IP BAN等も使えなくなってしまう。
その問題を解決するために使われるのがIP Forwardingだ。 これは、Spigot等のIP Forwardingに対応するパッチを適応されているサーバーで、 かつ設定でそれが有効になっている実際のサーバーに対して、 BungeeCordがプレイヤーの情報を送信する仕組みだ。
BungeeCordのconfig.yml内のip_forwardを有効にし、 Spigot又はそれのフォークでは、spigot.yml内のbungeecordを有効にした場合に利用出来る。 forgeやCraftBukkitサーバーとはこの機能は利用出来ないが、 バニラサーバーならVanillaCordを使ってパッチを当てたサーバーなら利用出来る。
IP Forwardingでは、プレイヤーのIPアドレスとUUID、そして存在するならGameProfile(スキン等の情報)を、 BungeeCordから実際のサーバーに送信している。
online-mode
何度も同じことを言っているがBungeeCordを使う場合、 実際のサーバーはoffline-modeである必要がある。 これをそのままにして、サーバーを運用すると、セキュリティーに問題があるため、対策をする必要がある。 具体的には、BungeeCordを動かしているホスト以外から接続出来ないようにする必要がある。
実際のサーバーとBungeeCordを同じホストで動かすのならば、 server.properties内のserver-ipを127.0.0.1にすることで対策出来るだろう。 別のホストで動かすのならば、iptables等のファイヤーウォールを使って対策するべきだろう。 詳しくはSpigotMCのページを見るといいだろう。
対策をしなかったら、何が起きるのか。 簡単に説明すると、悪意のある人が他人に成りすましてログインすることが出来てしまう。
権限を持った運営に成りすましてログインしてきたらどうなるだろうか? 当然サーバーは荒らされたり、負荷を掛けられたり、サーバーを止められるかもしれない。
バックアップを取っておけばそんなの問題にならないし、対策するの面倒だしそのままでいいと思う人が居ないとは限らない。 でも、そんな身勝手なことは許されない。 セキュリティーに対して意識が無い人はサーバーやサービスを運用するべきではない。 もしも、プラグイン等に外部にアクセスするものが含まれていたとしたら、 攻撃者はそれを悪用して貴方のではない第三者のサーバーやサービスを攻撃する可能性だってある。


BungeeCordの構築方法[編集 | ソースを編集]

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

目次[編集 | ソースを編集]

前提:CraftBukkit・Spigotを参考にしてサーバーを立ておいて下さい。
できればBungeeCordを使用するのであれば、SpigotMCが開発しているためSpigotを使用することをおすすめします。
ここではSpigotで説明を行っていきます。バニラサーバー少し手順が異なるため、バニラサーバーでの利用を参照下さい。

  1. ダウンロード
  2. BungeeCordの起動/ファイル生成
  3. チュートリアル
  4. 詳細設定
  5. 起動


ダウンロード[編集 | ソースを編集]

http://ci.md-5.net/job/BungeeCord/より
「最新成功ビルドの成果物」
の下のBungeeCord.jarクリックしてダウンロードして下さい。
そのファイルを適当なフォルダに入れてください。

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ファイルを見て下さい。)
先にYAMLファイルを見ていることをおすすめします

BungeeCordのconfig.ymlの編集[編集 | ソースを編集]

  • 権限を与えるために、groupsにmd_5を置き換えて自分のMinecraftIDを追加しましょう。


  • 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を設定します。


  • ip_forwardの設定をtrueにします。

基本的にtrueを推薦します。
serversで設定した鯖を使用する際にサーバーをオフラインにする必要があり、プレイヤーUUIDも正常に取得できない問題があります。
その問題に対して対策する機能です。
これをtrueにした後、serversに登録したサーバーのspigot.yml内のBungeeCord:をtrueにすることによって利用できるようになります。
ただし、バニラサーバーではip_forwardを有効にしていると、標準では接続できない仕様になっているので、
バニラサーバーの項目を御覧ください。

  • online_modeの設定をtrueにします。

基本的にtrueにしておいて下さい。
BungeeCord全体のonline_modeを設定します。
falseにするとオフラインのプレーヤーが入れてしまうため、おすすめしません。
なぜここをfalseにしてはならないかと言えば、BungeeCordは接続するサーバーにアドレスとプレーヤーの情報を渡すためには、利用下のサーバーのonline_modeをfalseにしなければなりません。
そのため、BungeeCordでしかオンライン判定が出来ないためです。
※割れサーバーと間違えられてしまった場合は、BungeeCordを利用しているのでと言えばよいでしょう。

サーバーのserver.propertiesの編集[編集 | ソースを編集]

  • max-tick-time=-1にしてください。

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

  • max-players=の人数とかはご自由に。(例)max-players=20
  • server-port=25565をserver-port=25566にする。
  • online-mode=trueをonline-mode=falseにする。

→BungeeCordポートが被らないようにするため。
→BungeeCordではサーバーがofflineでないとサーバーに接続できないため。

サーバーの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とサーバーがあり、なおかつまだ追加していないサーバーがあることを前提とします。

BungeeCordのconfig.ymlの編集[編集 | ソースを編集]

serversの項目に、一つサーバーがあると思います。(例)

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

それをコピペしてもう一つ作ります。
そのコピーした方の名前とポートをそれぞれ変更して下さい。
※port番号を変更するのは、port番号が被ってしまうのを防ぐためです。
すると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機能を有効にすると接続できない仕様(上記)になっています。
解決策は、基本的に以下の二つです。

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


1.は楽ですが、当然BungeeCord下のSpigotでUUIDの利用ができなくなってしまいます。
ですので2.の方法を使用する必要があります。
2.のVanillaCordは、バニラサーバーでBungeeCordを利用する際、
ip_forwardを利用できるようにパッチを当ててくれるソフトです。
まず、VanillaCordからVanillaCordをダウンロードします。
次に、起動用スクリプトを作成、保存し、実行します。
すると、inフォルダ(パッチを当てる前のバニラサーバーが入ってる)とoutフォルダ(パッチを当てた後のサーバーが入ってる)が生成されます。
ですのでoutフォルダ内の<サーバーのバージョン>-bungee.jarを既存のサーバーjarと置き換えて、
起動すれば良いです。(サーバー起動用スクリプトの-jar部分の変更を忘れず)
それ以降は、基本的に同じように設定することで、構築可能です。

設定ファイルの初期設定/記述[編集 | ソースを編集]

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ファイルでの設定変更[編集 | ソースを編集]

プラグイン導入後に生成されるplugins/(プラグイン名)フォルダの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に入れ、起動するだけで可能なことが多い。
しかし、設定等はそれぞれの配布ページを見たり、検索をしたりして行わなくてはなりません。

BungeeCordでタブリストを設定出来るプラグイン。
BungeeTabListPlus_BukkitBridge.jarはBukkit/Spigotのpluginsに入れる必要があります。

MCBansのBungeeCord版。荒らしの対策が可能なプラグイン。

単一IPで接続できる最大数を設定出来るプラグイン。

サーバーのチャットで日本語化したり、他の鯖にチャットを表示出来るプラグイン。

serversの鯖間をポータルで移動できるようにするプラグイン。

サーバー間を看板で移動できるようにするプラグイン。Bukkitサーバーに導入する。

サーバー間を移動できるネザーゲートを作成できるプラグイン。Bukkitサーバーに導入する。(公式md_5氏作成)

リンク[編集 | ソースを編集]

Wiki内のマルチプレイ項目





参考にしたリンク等です。

http://spigotuser.jp/wiki/BungeeCordについて

Cookieは私達のサービスを提供するのに役立ちます。このサービスを使用することにより、お客様はCookieの使用に同意するものとします。