サイトアイコン ナカヤン.jp

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

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

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

$ 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って奥が深いね。

モバイルバージョンを終了