どうも楓です。
今回はちょっとしたメモ。
少し前にWindows Subsystem for LinuxでC言語の開発環境を構築しましたが、今回は全く別です。
目的
Minecraftというゲームを御存じですか? 数年前から爆発的に人気が出だしたサンドボックスゲームです。
その旧PC版、Java Editionでは自分でサーバーを立ててマルチプレイをすることができます。
で、このマルチプレイではプラグインと呼ばれる拡張機能を入れることができるしくみを有志が開発しており、シングルプレイをするよりも便利な機能がたくさんあります。
マルチプレイをみんなでワイワイするというよりは、一人でプラグインを使ったプレイを楽しみたいと思ったので、サーバーを構築することにしました。
MODを使わない理由
ここまで聞いて、Minecraftに詳しい人は何故MODを使わないのかと思ったのではないでしょうか。
はい。今回使いたい機能はWorldEditとMultiverseのみで、それ以上のものを使う気が無いからです。
WorldeditはMOD版もありますが、Multiverseはありません。Mystcraftなどを入れるとバニラとの互換性問題が出てくるし、本体バージョンの更新に支障が出ます。
WSLの注意点
WSLの仕様上の問題
- WSLはサーバー用途を想定していない
- WSLは開発用に組み込まれたもの
- WSLではDeamonが動かない
Minecraftの場合
上の問題から、ポート開放してグローバルに公開するとかそういったことは想定していませんん。
飽くまでシングルプレイ(またはLan内マルチプレイ)でWorldEditなどのプラグインを動かすだけとなります。
サーバー解放したい人は素直にサーバー機作るかVPS使ってくだされ。完全バニラなら一応動きはしますが……。
WSLを使う意味
ぶっちゃけ、上の欠点を考えるとWSL使うメリットは皆無です。
重要なのは、Linuxであること。つまりサーバープラグインを導入するための改造版、Spigotをインストールする時。
Spigotはサーバープラグインを導入するための改造版クライアントですが、ライセンスの問題で配布することができません。
その為、自分でソースコードからビルドする必要があるのですが、これがLinuxだと簡単にできるので、WSLでビルドします。
なおWSLでビルドしてwindowsで起動すれば公開することもできます。
Spigotのビルド手順
例によってWSLのインストール方法は省略します。
楓の使っているディストリビューションはUbuntuです。それ以外はご自分で調べてどうぞ。
前提プログラムのインストール
まず、WSL端末を起動しGitをインストールします。
sudo apt-get install git
大前提ですので、もはや言うまでもないです。
続いて、Javaをインストールします。ビルドと起動のために必要です。
sudo apt-get install java
WindwosのGUIでビルドするのが面倒でサーバー機を用意するわけでもないもの好きくらいしかこのページをわざわざ見に来るのはいないはずなのでこれくらは当然でしょう。
Buildtool.jarのダウンロード
Spigotをビルドするためのフォルダ作成を行います。
mkdir spigot cd spigot
CUIだとほんとに一瞬で終わるので楽でいいよね。
続いて、Buildtoolを公式から落とします。wgetでもcurlでもどっちでもいいです。
wget https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
curl -L -O https://hub.spigotmc.org/jenkins/job/BuildTools/lastSuccessfulBuild/artifact/target/BuildTools.jar
判らない人(ここを見る人にはいないと思うけど)はwget使えばいいと思う。短いし。
本題からそれるけど違いが知りたい人はこのページでも見てください。
さて、入手したBuildtoolでSpigotを起動します。
java -jar BuildTools.jar --rev 1.12.2
バージョンは適宜変えてください。執筆当時(2018/04/21)最新版は1.12.2でした。
引数を打つのが面倒な人はスクリプトを組むこともできますが楓はスクリプトを組むのが面倒なので放置です。そんなに頻繁にアップデートしませんし。
続いて起動します。メモリとかの引数は一回目は指定しなくていいです。
java -jar spigot-1.12.2.jar nogui
Loading libraries, please wait... [07:56:02 INFO]: Starting minecraft server version 1.12.2 [07:56:02 INFO]: Loading properties [07:56:02 WARN]: server.properties does not exist [07:56:02 INFO]: Generating new properties file [07:56:02 WARN]: Failed to load eula.txt [07:56:02 INFO]: You need to agree to the EULA in order to run the server. Go to eula.txt for more info. [07:56:02 INFO]: Stopping server
こんな感じで、サーバーが立ち上がった後すぐに終了します。
eulaに同意しなさいということなのでvim使って変更します。別にviでも構いませんが。
vim eula.txt
#By changing the setting below to TRUE you are indicating your agreement to our EULA (https://account.mojang.com/documents/minecraft_eula). #Sat Apr 21 07:56:02 GMT 2018 eula=falsetrue -- INSERT --
流石にvimの使い方がわからない人はいないよね……?
そんなガチガチのGUIユーザーはWSLなんて興味すら沸かないはずだし。
Eulaが変更出来たら試験起動。今度は引数指定しましょう。
(初期設定だからあまり意味がないけど)
java -Xms1024M -Xmx1024M -jar spigot-1.12.2.jar nogui
Loading libraries, please wait...
[08:06:22 INFO]: Starting minecraft server version 1.12.2
<長いため中略>
[08:07:13 INFO]: Done (48.811s)! For help, type "help" or "?"
>_
実際に入って確認します。
動いていますね。
あとは起動用シェルを作るなり、プラグインを入れるなりしてよいシングルマルチプレイをお楽しみ下さい。