読者です 読者をやめる 読者になる 読者になる

シアトル生活はじめました

20年以上すんだ東海岸から西海岸に引っ越してきました。MicrosoftのUniversal Storeで働いてます。

MODやプラグインを利用できるマインクラフトサーバーを立てる

ゲーム テクノロジー

先日、Microsoft Azure でマインクラフトサーバーをホストしたんだけど、やっぱりただのマインクラフトではなく、いろんな拡張機能を楽しめるMOD(Modification「改変・改造」の意味)やプラグインを入れられるようにしたい。

ということで、MODを可能にさせるマインクラフトサーバーを別にインストールしたんで、その手順を紹介。

サーバーの種類

まず、普通のサーバーとMODが出来るサーバーの違いの比較と理解。

  • バニラ 通常のマインクラフトサーバーのこと。アイスクリームで例えると、バニラ風味は基本でトッピングとか何も乗ってない。それと同じように、基本機能だけを楽しめるマインクラフトサーバーのこと。
  • Bukkit MODを可能にさせるマインクラフトサーバーの中でもとくに人気のもの。CraftBukkitという名称が正式らしい。Mojangというマインクラフトの開発元(今はマイクロソフトの一部)がリリースしてるものらしい。Bukkit用に数多くのプラグインが存在する。
  • Spigot これもMODを可能にさせるマインクラフトサーバー。実はBukkitをベースにしていて、APIレベルではBukkitと同じだと考えてもよい。Bukkitに比べてパフォーマンスが優れているらしい(とくにサーバーとの通信の遅延が小さくなるように実装されている)。APIレベルでBukkitと互換性があるとうことで、Bukkitのプラグインをそのまま使える、という前提でOK。
  • その他...

今回はSpigotサーバーを立ち上げることにした。

Spigotサーバーインストール手順

Spigotのインストールの手順は BuildTools | SpigotMC - High Performance Minecraft に詳しくある。下は主にそれに従ったもの。

 (1)java と git と screen がインストールされているか確認

Javaは当然必要(マインクラフトそのもんがJavaアプリですからね)。

gitはSpigotをビルドするのに必要。すでにビルドされているSpigotのバイナリーをダウンロードしては?っと思うでしょ?私も探したんですが、どうやら「はい、各自ソースをダウンロードしてローカルでビルドしてね♪」って方針らしい。

screen はあとでマインクラフトサーバーをサービス(デーモン。バックグラウンドで実行するプロセスのこと)として設定するときに仮想端末として使う。

インストールが必要なら

sudo apt-get install openjdk-7-jre.headless

sudo apt-get install git

sudo apt-get install screen

(2)マインクラフトサーバーを設置するフォルダーを作成する

このフォルダーには、インストールの過程でわんさとフォルダーやらファイルが作成されることになる。すでにバニラのサーバーを自分のホームの下に作ってたんで、横にもう一つ、「minecraft_server2」という名前で新規フォルダーを作った。

~/minecraft_server ← これはバニラ味。一応、取っておく。

~/minecraft_server2 ← ここにSpigotを入れる予定!

(3)BuildTools.jar をダウンロードする

Spigotをローカルでビルドするためのすべてのモノがこのjarファイルに詰め込まれている。Spigotの方針として、つねに最新のものをダウンロードすることが推奨されている。上のステップで作成したフォルダーにcdで移動したあた、

wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar

(4)BuildTools.jarをビルドする

まずはgitの設定。

git config --global --unset core.autocrlf

(これはよく調べてないけど改行とかの文字の扱い関係でしょう。システムによって扱いが違うから。)

そして、ビルドそのものを実行

java -jar BuildTools.jar

ビルドが完了すると、ほぼ空っぽだったフォルダーにいろんなフォルダーやらファイルやらがダウンロードされたり生成されたりしたのが見て取れる。

f:id:watanabe_tsuyoshi:20150614034227p:plain

目的のjarファイル spigot-1.8.7.jar が作成されたのを確認。

これでSpigotのマインクラフトサーバーをスタートするのに必要なファイルが出来たのでさっそく実行。

(5)サーバーの使用許諾契約書に同意する

マインクラフトサーバーを初めて実行すると、いつもこれに引っかかる (><)

f:id:watanabe_tsuyoshi:20150614043101p:plain

要は、eula.txt という名前のテキストファイルを開けて「同意します」と同じ意味の操作をすればいい。エディター(この場合 nano)で開いて eula=false のところを eula=true にして保存するだけ。

f:id:watanabe_tsuyoshi:20150614043307p:plain

これでサーバーがスタートしてくれるようになる。

一度でもサーバーが実行されると、World(ゲームの世界)が生成され、設定ファイル等も自動で生成される。

今の段階で ~/minecraft_server2 はこんな感じになってる。

f:id:watanabe_tsuyoshi:20150614043524p:plain

(6)マインクラフトサーバーのポートにアクセスできるようにする。

これはすでに 超簡単にMicrosoft Azureでマインクラフトサーバーを立てる方法 - シアトル生活はじめました で説明してある。Microsoft Azureの場合はこれで出来たけど、別の環境ならファイアーウォールのルール設定をうまいことしてあげないといけないはず。具体的には iptables を使ってサーバーのポート、55565 にリクエストが来た時に弾かないように設定する必要がある。

このステップは私は必要はなかったんで省く。

(7)マインクラフトサーバーをサービス(デーモン)にする

まず、仮想マシーンを再起動するたびにSSHしてサーバーを実行するのは面倒くさい。そこでバックグラウンドで実行するように設定する。

 ここを参考にした。

http://www.lowendguide.com/3/games/installing-your-own-minecraft-server-spigot/

この設定が面倒だったり、自宅サーバーなんで手動でも構わない、って人は無視してね。

ステップを簡潔にまとめると

  1. /etc/init.d/ フォルダー内に minecraft_server という名前のテキストファイルを作成する(名前はなんでもいい)
  2. そのテキストファイル内で、マシーンの起動時にSpigotのjarファイルがある~/minecraft_server2にcd移動して、java プロセスをスタートするようにスクリプトを書く。同様に、シャットダウン時の動作も指定する。(コピペして、cd コマンドの行を探して、パスが正しいか確認、必要なら変更すればOK)
  3. chmodコマンドを利用して、/etc/init.d/minecraft_server ファイルを実行可能にする
  4. update-rc.d コマンドで /etc/init.d/minecraft_server を登録(?)する。これでサービス設定完了。

あとは再起動してちゃんとマインクラフトサーバーがスタートするか確認する。

ps aux | grep java

アウトプットで java -Xmx512M -jar spigot-1.8.7.jar みたいなのがあればOK。(もちろん、クライエントで接続してみてね)

 完了!

っで、これで何が出来るかというと、数千(?)はあるだろう Bukkit のプラグインをインストールして、マインクラフトを全く別の次元というかやり方で楽しめるようになるのである。YouTubeminecraft bukkit で検索すると、プラグインTop10とかたくさん出てくるんで、それを見れば大体雰囲気は分かるはず。