MinecraftのマルチサーバにBungeeCordを導入した

今回はMinecraftの複数のサーバをまとめて扱える、その名もBungeeCordの導入だ!

パパッとググれる情報が少なくてどうしたもんかと思っていたけど、ゆっくり手順通りにやればそんなに難しいもんでもなかった。 ただ、バニラの対応方法とか探すのもだいぶ苦労したので、その辺も後に続く皆さんの参考になれば。

そもそも、なんでコレが必要なのか? 誰に必要なのか? 自分は下記のどれに当て嵌まるのか、じっくり考えてから導入しよう。 導入するのはソコソコ面倒だし、サーバにかなり負荷もかかるからね。

  1. 1台のサーバで複数のマルチサーバを運用したい
    1. ひとつのマルチサーバで複数ワールドを使いたいだけなら、SpigotMultiverseプラグインを使うのが手っ取り早い。
    2. 異なるバージョンやバニラとの併用、複数のマルチサーバをどうしても使いたいなら、下記の要領でポートを分けて複数のマルチサーバを起動させればいい。 ただし、マルチサーバをいくつも動かすのは負荷が大きいよ。
      まずはserver.propertysのポート番号をデフォルトと違う番号に変更する。

      server-port=25565以外

      このサーバにクライアントから接続する時は、サーバ名の後ろに「:(コロン)」をつけてあげれば接続ができる。

      your.server.name:上記で設定した番号
    3. 異なるバージョンやバニラとの併用、複数のマルチサーバをどうしても使いたいが、クライアントから接続する入口のマルチサーバは一つで、そこから他のマルチサーバ間へ移動したいという人はBungeeCord。
  2. 複数台のサーバでマルチサーバを運用したい
    1. それぞれのサーバに個別にログインすれば良い
    2. クライアントから接続する入口は一つのサーバに固定して、個別のサーバには直接ログイン出来ないようにしたいという人は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対応にするパッチを当ててくれるツールだ。

VanillaCord | SpigotMC – High Performance Minecraft

下記の赤枠を押すとダウンロードできる。

VanillaCord ダウンロード

下記のようにパッチを当てたいバージョンを指定して実行するだけでダウンロード~パッチ当てまで自動でやってくれる便利ツール。

$ 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から認識されるようになる。

次にいくつか便利プラグインも入れておく。

  1. BungeeJapanizeMessenger
    • 日本人なら必須
    • 複数のマルチサーバを通してチャットやメッセージの送受信ができる
    • 日本語対応。 って言うか作者の方は日本人。
    • だからローマ字を漢字に変換してくれたりする
  2. BungeeTabListPlus
    • それぞれのサーバに誰がログインしているか表示する
    • ただしjava8じゃないと動かない(変更方法はこちら
  3. その他Spigot&BungeeCordで便利そうなもの(まだ設定してない)
    • Teleportsigns
      • 看板に他サーバの状態を表示したり、クリックして他サーバに転送してくれたりする。
      • Spigotのpluginフォルダに入れる
    • Bungeeportals
      • 他サーバへ転送してくれるポータルを作る
      • Spigotのpluginフォルダに入れる

Minecraftって奥が深いね。

All original content on these pages is fingerprinted and certified by Digiprove