今回はMinecraftの複数のサーバをまとめて扱える、その名もBungeeCordの導入だ!
パパッとググれる情報が少なくてどうしたもんかと思っていたけど、ゆっくり手順通りにやればそんなに難しいもんでもなかった。 ただ、バニラの対応方法とか探すのもだいぶ苦労したので、その辺も後に続く皆さんの参考になれば。
そもそも、なんでコレが必要なのか? 誰に必要なのか? 自分は下記のどれに当て嵌まるのか、じっくり考えてから導入しよう。 導入するのはソコソコ面倒だし、サーバにかなり負荷もかかるからね。
- 1台のサーバで複数のマルチサーバを運用したい
- ひとつのマルチサーバで複数ワールドを使いたいだけなら、SpigotでMultiverseプラグインを使うのが手っ取り早い。
- 異なるバージョンやバニラとの併用、複数のマルチサーバをどうしても使いたいなら、下記の要領でポートを分けて複数のマルチサーバを起動させればいい。 ただし、マルチサーバをいくつも動かすのは負荷が大きいよ。
まずはserver.propertysのポート番号をデフォルトと違う番号に変更する。server-port=25565以外
このサーバにクライアントから接続する時は、サーバ名の後ろに「:(コロン)」をつけてあげれば接続ができる。
your.server.name:上記で設定した番号
- 異なるバージョンやバニラとの併用、複数のマルチサーバをどうしても使いたいが、クライアントから接続する入口のマルチサーバは一つで、そこから他のマルチサーバ間へ移動したいという人はBungeeCord。
- 複数台のサーバでマルチサーバを運用したい
- それぞれのサーバに個別にログインすれば良い
- クライアントから接続する入口は一つのサーバに固定して、個別のサーバには直接ログイン出来ないようにしたいという人はBungeeCord。
読んでの通りで、BungeeCordとは複数のマルチサーバがあっても、入口となるマルチサーバは一つで、そこから他のサーバに移動できるようにしたい時につかうものだ。 で、オレは1-3や2-2をやりたかったので、迷うこと無くBungeeCordの一択。
公式サーバのインストール方法は、下記の本家サイトが詳しい。 英語だけど、翻訳サイトとか使いながらやれば何とかなる。
Installation & Usage | SpigotMC – High Performance Minecraft
我が家は2台のサーバを使っていて、メインとなるサーバ(サーバA)でBungeeCordとマルチサーバその1(Spigot)を、2台目のサブのサーバ(サーバB)でマルチサーバその2(Vanilla)を動かしている。 サーバAは仲間達と色々作っているサーバで、サーバBは配布ワールドを遊ぶためのサーバという区別をしている。
この記事もそのメモとして書いてあるので、他の構成の場合にはやっぱり本家をしっかり読まないといかんぞなもし。
ちなみに、BungeeCordを使うなら、BungeeCord+Spigotをメインのマルチサーバとした方が、プラグインで便利に遊べるのでオススメだ。
あぁ、まずは手順通り素直にやっていこう。 作業用のディレクトリを作って中に入るところからだ。
$ mkdir bungee && cd bungee
次にファイルをダウンロード。
$ wget 'http://ci.md-5.net/job/BungeeCord/lastSuccessfulBuild/artifact/bootstrap/target/BungeeCord.jar'
初回起動時にあれやこれやのファイルが作成される。 初回は起動させたらすぐに終了させて、設定ファイルを自分の環境に合わせて編集していく。
$ java -jar BungeeCord.jar >end $
では、さっそく生成された設定ファイルをいじってみよう。
$ vim config.yml
設定しないといけないのは、下記の赤字のところ。 これを自分の環境に合わせて書き換える。 改めて説明しておくと、サーバAでBungeeCordとSpigotを、サーバBでVanillaを動かしている。 設定としてはこんな感じだ。
サーバA
IP:aaa.aaa.aaa.aaa
BungeeCordのポート:25565
マルチサーバのポート:25566(入口としたいマルチサーバ)
サーバB
IP:bbb.bbb.bbb.bbb
マルチサーバのポート:25567
groups: ? md_5: ? - admin disabled_commands: - disabledcommandhere player_limit: 20 stats: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx permissions: ? default: ? - bungeecord.command.server ? - bungeecord.command.list ? - bungeejapanizemessenger.dictionary ? - bunzeecord.server.bbb.bbb.bbb.bbb ? admin: ? - bungeecord.command.alert ? - bungeecord.command.end ? - bungeecord.command.ip ? - bungeecord.command.reload listeners: - query_port: 25565 ? 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: aaa.aaa.aaa.aaa:25565 ? max_players: 20 ? tab_size: 60 ? force_default_server: true timeout: 30000 connection_throttle: 4000 servers: ? lobby: ←入口としたいマルチサーバの名称(上記緑色の箇所も同じにすること) ??? motd: '&1Main server' ??? address: localhost:25566 ??? restricted: false ? Vanilla: ??? motd: '&1Vanilla minecraft server' ??? address: bbb.bbb.bbb.bbb:25567 ??? restricted: false ip_forward: true online_mode: true
サーバ名は何でも良いけど、lobbyというのが一般的みたい。 一般的とか知ったこっちゃないが。 そうそう、motdというのはログインしたときのメッセージのことで、カラーコードが使えるよ。
ここまで設定したら、簡単だけど起動スクリプトも書いておこう。 ファイル名は何でも良いが、実行権限の付与をお忘れ無く。
$ vim bungee.sh
スクリプトの中身はコレ。 screenコマンドを使って、裏で動くようにしておく。 簡単すぎて公開を恥じ入っちゃうレベルだなぁ(笑
#!/bin/sh #cd "${0%/*}" screen -AmdS bungee java -jar BungeeCord.jar
さ、ここまででBungeeCordの設定は完了だ。 さっそく起動させておく。
$ ./bungee.sh
次に、入口をBungeeCordにするので、マルチサーバ側にも対応が必要だ。 SpigotにはBungeeCordを使うという設定がちゃんとある。
$ vim spigot.yml
下記を変えるだけ。
bungeecord: false
↓
bungeecord: true
次に、BungeeCordにMinecraftのデフォルトポート(25565)を使わせるために、他のマルチサーバのポートは標準以外の番号に変えておく。 これをやらないとBungeeCordを使う意味が無い(笑
$ vim server.properties
番号はウェルノウンポートと呼ばれるインターネットで使われる既定のポート番号以外なら何でもいい。 例えば下記とか。
server-port=25565
↓
server-port=25566
ポート番号の他にも、BungeeCordが入口となることでユーザ認証もBungeeCordがやることになるので、下記も設定しておかないとユーザがマルチサーバに接続できなくなる。
online-mode=true
↓
online-mode=false
公式のマルチサーバをバニラと呼ぶけど、BungeeCordでは何故かバニラを認識してくれない。 そこで登場するのが、バニラをBungeeCord対応にするパッチを当ててくれるツールだ。
下記の赤枠を押すとダウンロードできる。
下記のようにパッチを当てたいバージョンを指定して実行するだけでダウンロード~パッチ当てまで自動でやってくれる便利ツール。
$ java -jar vanillacord.jar 1.8.3
実行すると下記のメッセージが表示されて、ほどなくして処理が完了する。
Downloading
Loading
Found the handshake listener in lo.class
Hooking
Found the login listener in lp.class
Adding helper
実行したディレクトリにin と out というディレクトリが生成されていて、inの中に元となるマルチサーバ用ファイルが、outの中にパッチを当てたファイルが保存されているので、outの中の下記ファイルをマルチサーバプログラムとして使う。 ファイル名は下記のようになっている。
1.8.3-bungee.jar
これをマルチサーバとして普通に起動させれば、BungeeCordから認識されるようになる。
次にいくつか便利プラグインも入れておく。
- BungeeJapanizeMessenger
- 日本人なら必須
- 複数のマルチサーバを通してチャットやメッセージの送受信ができる
- 日本語対応。 って言うか作者の方は日本人。
- だからローマ字を漢字に変換してくれたりする
- BungeeTabListPlus
- それぞれのサーバに誰がログインしているか表示する
- ただしjava8じゃないと動かない(変更方法はこちら)
- その他Spigot&BungeeCordで便利そうなもの(まだ設定してない)
- Teleportsigns
- 看板に他サーバの状態を表示したり、クリックして他サーバに転送してくれたりする。
- Spigotのpluginフォルダに入れる
- Bungeeportals
- 他サーバへ転送してくれるポータルを作る
- Spigotのpluginフォルダに入れる
- Teleportsigns
Minecraftって奥が深いね。