一馬力のメモ帳

MVSからLinuxまで。基盤屋さんは眠らない

Minecraft PE用マルチプレイサーバー構築(PE v0.14.2.0対応版)

目次


先日紹介した方法がPE0.14.0までしか対応してませんでした。
ichibariki.hatenablog.com

Minecraft PE版が先日バージョンアップされてv0.14.2になったので
対応方法探していたとろこ,Githubリポジトリ(https://github.com/PocketMine/PocketMine-MP)
の方が対応していたのでgitを利用しての導入法の紹介です。

前提となる環境

OS

CentOS 7
 事前に"perl gcc make automake libtool autoconf m4 git"が導入されている事
 インストールされていない場合は
 "yum install perl gcc make automake libtool autoconf m4 git"
 でインストールする事
 

Minecraft PE用マルチプレイサーバーソフトウェア

PocketMine-MP
https://github.com/PocketMine

Network

グローバルIPでのアクセス可能な環境

ユーザーの追加

まずは,pocketmine実行用のユーザーを作成します。
今回はユーザー名:”mine”で作成しています。

[root@PocketMineMP ~]# adduser mine
[root@PocketMineMP ~]# su - mine
[mine@PocketMineMP ~]$ pwd
/home/mine
[mine@PocketMineMP ~]$

PocketMineMPの導入

ユーザーの切替

まずは,先ほど作成したユーザー"mine"に切替ます。

[root@PocketMineMP ~]# su - mine
[mine@PocketMineMP ~]$ pwd
/home/mine

Gitコマンドを利用してPocketMine-MPのソースを入手する

git cloneコマンドでソースを入手します。

git clone --recursive https://github.com/PocketMine/PocketMine-MP.git PocketMine-MP.git

参考:git clone実行結果

[mine@PocketMineMP ~]$ git clone --recursive https://github.com/PocketMine/PocketMine-MP.git PocketMine-MP.git
Cloning into 'PocketMine-MP.git'...
remote: Counting objects: 40914, done.
remote: Compressing objects: 100% (11/11), done.
remote: Total 40914 (delta 1), reused 0 (delta 0), pack-reused 40903
Receiving objects: 100% (40914/40914), 11.35 MiB | 3.91 MiB/s, done.
Resolving deltas: 100% (30747/30747), done.
Submodule 'src/pocketmine/gui' (https://github.com/PocketMine/PocketMine-MP-GUI.git) registered for path 'src/pocketmine/gui'
Submodule 'src/pocketmine/lang/locale' (https://github.com/PocketMine/PocketMine-Language.git) registered for path 'src/pocketmine/lang/locale'
Submodule 'src/raklib' (https://github.com/PocketMine/RakLib.git) registered for path 'src/raklib'
Submodule 'src/spl' (https://github.com/PocketMine/PocketMine-SPL.git) registered for path 'src/spl'
Submodule 'tests/TesterPlugin' (https://github.com/PocketMine/TesterPlugin.git) registered for path 'tests/TesterPlugin'
Cloning into 'src/pocketmine/gui'...
remote: Counting objects: 26, done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 26 (delta 4), reused 26 (delta 4), pack-reused 0
Unpacking objects: 100% (26/26), done.
Submodule path 'src/pocketmine/gui': checked out 'b551c3d58ec2fd9fa0f3c92d36fcbaa5c70467f7'
Cloning into 'src/pocketmine/lang/locale'...
remote: Counting objects: 219, done.
remote: Total 219 (delta 0), reused 0 (delta 0), pack-reused 219
Receiving objects: 100% (219/219), 201.92 KiB | 346.00 KiB/s, done.
Resolving deltas: 100% (145/145), done.
Submodule path 'src/pocketmine/lang/locale': checked out 'a7d53d9229337323220c7370916a153accc0ebf3'
Cloning into 'src/raklib'...
remote: Counting objects: 688, done.
remote: Total 688 (delta 0), reused 0 (delta 0), pack-reused 688
Receiving objects: 100% (688/688), 173.79 KiB | 0 bytes/s, done.
Resolving deltas: 100% (518/518), done.
Submodule path 'src/raklib': checked out '944c6623e47a33cb3487a7db5a56722b2b016bf8'
Cloning into 'src/spl'...
remote: Counting objects: 102, done.
remote: Total 102 (delta 0), reused 0 (delta 0), pack-reused 102
Receiving objects: 100% (102/102), 38.70 KiB | 0 bytes/s, done.
Resolving deltas: 100% (64/64), done.
Submodule path 'src/spl': checked out '6edaf9802cbada5e7638ceadfe042be9921376d8'
Cloning into 'tests/TesterPlugin'...
remote: Counting objects: 11, done.
remote: Total 11 (delta 0), reused 0 (delta 0), pack-reused 11
Unpacking objects: 100% (11/11), done.
Submodule path 'tests/TesterPlugin': checked out '8839206a4818520d2ed5c4fbf388c22370e5e6b2'

ダウンロード出来ている事を確認します。

[mine@PocketMineMP ~]$ ls -l
合計 4
drwxrwxr-x 6 mine mine 4096  4月 30 09:59 PocketMine-MP.git
[mine@PocketMineMP ~]$

php7セットアップ

git cloneコマンドでソースは入手できますが,phpモジュールは別途準備する必要があります。
php7もPoketMine用にダウンロードサイトがあるので,下の手順で導入して下さい

php7のダウンロード

このサイトからダウンロード
https://bintray.com/pocketmine/PocketMine/Unix-PHP-Binaries/view#files

Linuxの最新版” PHP_7.0.3_x86-64_Linux.tar.gz”を入手

今回ダウンロードしファイル
  https://bintray.com/artifact/download/pocketmine/PocketMine/PHP_7.0.3_x86-64_Linux.tar.gz

  • wgetコマンドでダウンロードコマンド
wget https://bintray.com/artifact/download/pocketmine/PocketMine/PHP_7.0.3_x86-64_Linux.tar.gz

参考:ダウンロード結果

[mine@PocketMineMP ~]$ wget https://bintray.com/artifact/download/pocketmine/PocketMine/PHP_7.0.3_x86-64_Linux.tar.gz
--2016-04-24 15:50:15--  https://bintray.com/artifact/download/pocketmine/PocketMine/PHP_7.0.3_x86-64_Linux.tar.gz
Resolving bintray.com (bintray.com)... 119.81.184.206
Connecting to bintray.com (bintray.com)|119.81.184.206|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://dl.bintray.com/pocketmine/PocketMine/PHP_7.0.3_x86-64_Linux.tar.gz [following]
--2016-04-24 15:50:15--  https://dl.bintray.com/pocketmine/PocketMine/PHP_7.0.3_x86-64_Linux.tar.gz
Resolving dl.bintray.com (dl.bintray.com)... 75.126.118.188, 108.168.243.150
Connecting to dl.bintray.com (dl.bintray.com)|75.126.118.188|:443... connected.
HTTP request sent, awaiting response... 302
Location: https://akamai.bintray.com/05/05f53b3ff950a7ad0e527e46b7ccea6078c4377da667012c544409423f6639b1?__gda__=exp=1461481336~hmac=e4c5da3a1bbc433e0d9a387a90fccda92aff0b40a88187b0d4f36b046e3d2e28&response-content-disposition=attachment%3Bfilename%3D%22PHP_7.0.3_x86-64_Linux.tar.gz%22&response-content-type=application%2Fgzip [following]
--2016-04-24 15:50:16--  https://akamai.bintray.com/05/05f53b3ff950a7ad0e527e46b7ccea6078c4377da667012c544409423f6639b1?__gda__=exp=1461481336~hmac=e4c5da3a1bbc433e0d9a387a90fccda92aff0b40a88187b0d4f36b046e3d2e28&response-content-disposition=attachment%3Bfilename%3D%22PHP_7.0.3_x86-64_Linux.tar.gz%22&response-content-type=application%2Fgzip
Resolving akamai.bintray.com (akamai.bintray.com)... 104.113.89.125
Connecting to akamai.bintray.com (akamai.bintray.com)|104.113.89.125|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 17041887 (16M) [application/gzip]
Saving to: ‘PHP_7.0.3_x86-64_Linux.tar.gz’

100%[============================================================================================================================================>] 17,041,887  24.3MB/s   in 0.7s

2016-04-24 15:50:17 (24.3 MB/s) - ‘PHP_7.0.3_x86-64_Linux.tar.gz’ saved [17041887/17041887]

ダウンロードしたファイルの確認

ダウンロード出来ている事を確認します。
今回の例では"PHP_7.0.3_x86-64_Linux.tar.gz"がある事を確認

[mine@PocketMineMP ~]$
[mine@PocketMineMP ~]$ ls -l
total 16648
-rw-rw-r-- 1 mine mine 17041887 Feb  8 06:23 PHP_7.0.3_x86-64_Linux.tar.gz
drwxrwxr-x 6 mine mine     4096 Apr 24 15:47 PocketMine-MP.git

php7の展開

ダウンロードしたファイルをtarコマンドで展開します。
展開先は,前の手順でgitを利用して入手したPocketMineのフォルダ(PocketMine-MP.git/)の中

[mine@PocketMineMP ~]$ tar xzf PHP_7.0.3_x86-64_Linux.tar.gz -C PocketMine-MP.git/
[mine@PocketMineMP ~]$ ls PocketMine-MP.git/
bin  CONTRIBUTING.md  LICENSE  README.md  src  start.cmd  start.sh  tests

"bin"ディレクトができていれば成功です。

PocketMineの起動

初回起動(セットアップウィザードの実行)

インストール完了時のメッセージにある通り"./start.sh"を起動すれば
初回起動時に限りセットアップウィザードが動作します。
基本的にはデフォルトのままEnter連打で構いませんが,内容は確認しながら勧めて下さい。

[mine@PocketMineMP ~]$ ./start.sh
[*] PocketMine-MP set-up wizard
[*] Please select a language:
 English => en
 Español => es
 中文 => zh
 Pyccĸий => ru
 日本語 => ja
 Deutsch => de
 한국어 => ko
 Nederlands => nl
 Français => fr
 Italiano => it
 Melayu => ms
 Norsk => no
 Svenska => sv
 Suomi => fi
 Türkçe => tr
[?] Language (en): ja
[*] 日本語に設定されました
PocketMine-MPをインストールして頂きありがとうございます!サーバのセットアップを開始するにはライセンスに同意する必要があります。PocketMine-MPはLGPLライセンスに基づいて認可されており、これについてはこのフォルダ内のLICENSEファイルから確認することができます。

  This program is free software: you can redistribute it and/or modify
  it under the terms of the GNU Lesser General Public License as published by
  the Free Software Foundation, either version 3 of the License, or
  (at your option) any later version.

[?] ライセンスに同意しますか? (y/N): y
[?] セットアップウィザードをスキップしますか? (y/N): N

[*] サーバのセットアップを開始します
[*] 設定を変更しない場合は、Enterキーを押してください。
[*] それらの設定は後からでもserver.propertiesファイルから変更できます
[?] あなたのサーバに名前を付けてください (Minecraft: PE Server): mine
[*] これが初めてのサーバの場合は、ポート番号をデフォルトから変更しないでください
[?] サーバポート (19132): 19132
[*] クリエイティブモード(1)、またはサバイバルモード(0)を選択してください
[?] デフォルトのゲームモード: (0): 1
[?] 最大プレイヤー数 (20): 20
[*] スポーンプロテクションは、OPでないプレイヤーによるスポーン地点付近でのブロックの設置/破壊を制限します
[?] スポーンプロテクションを有効にしますか? (Y/n): Y
[*] OPとはそのサーバの管理権限を指します。OPを持ったプレイヤーは他のプレイヤーよりも多くのコマンドを使用できます。
[?] OPプレイヤー名(例: あなたのゲーム内での名前):
[!] 後から/op <プレイヤー名>コマンドを実行してOPプレイヤーを追加することもできます
[*] ホワイトリストはこのサーバに入ることのできるプレイヤーを制限します。
[?] ホワイトリストを有効にしますか? (y/N): N
[!] クエリは他のツールによりあなたのサーバやプレイヤーの情報を取得するためのプロトコルです。
[!] それを無効にした場合、サーバリストを使用できなくなる可能性があります。
[?] クエリを無効にしますか? (y/N): N
[*] RCONはパスワードを用いてサーバコンソールからリモート接続するためのプロトコルです。
[?] RCONを有効にしますか? (y/N): N
[*] グローバルIPとプライベートIPの取得
[!] あなたのグローバルIPはxxx.xxx.xxx.xxxです。プライベートIPyyy.yyy.yyy.yyyをポート解放してください。
[!] 必ずポート解放ができているか確認してください。ポートが解放できていなかった場合、他のプレイヤーがサーバに入れなくなる恐れがあります。[Enterキーを押してください]
[*] セットアップは正しく終了しました
[*] 拡張機能や管理システム、ミニゲームなどを追加できるプラグインリポジトリも確認してみてください
[*] PocketMine_MPを起動します。/helpと入力すれば使用可能なコマンド一覧を表示できます。


[13:22:04] [Server thread/INFO]: Loading pocketmine.yml...
[13:22:04] [Server thread/INFO]: Loading server properties...
[13:22:04] [Server thread/INFO]: Selected English (eng) as the base language
[13:22:04] [Server thread/INFO]: Starting Minecraft: PE server version v0.14.0.0 alpha
[13:22:04] [Server thread/INFO]: Opening server on 0.0.0.0:19132
[13:22:04] [Server thread/INFO]: This server is running PocketMine-MP version 1.6dev-23 "[REDACTED]" (API 2.0.0)
[13:22:04] [Server thread/INFO]: PocketMine-MP is distributed under the LGPL License
[13:22:04] [Server thread/INFO]: Loading recipes...
[13:22:04] [Server thread/NOTICE]: Level "world" not found
[13:22:04] [Server thread/INFO]: Preparing level "world"
[13:22:05] [Server thread/NOTICE]: Spawn terrain for level "world" is being generated in the background
[13:22:05] [Server thread/INFO]: Starting GS4 status listener
[13:22:05] [Server thread/INFO]: Setting query port to 19132
[13:22:05] [Server thread/INFO]: Query running on 0.0.0.0:19132
[13:22:05] [Server thread/INFO]: Default game type: Creative Mode
[13:22:05] [Server thread/INFO]: Done (111.521s)! For help, type "help" or "?"

[13:22:05] [Server thread/INFO]: Done (111.521s)! For help, type "help" or "?"
まで表示されれば,起動完了です。

あとは,iPhoneAndroidminecraft pocket editionから
起動したPocketMine-MPサーバのグローバルIP+ポートへ接続すれば完了です。

minecraft pocket edition側の操作はMinecraftPE Wikiの記事が参考になるかもしれません。
http://wiki.mcpe.jp/d/%A5%DE%A5%EB%A5%C1%A5%D7%A5%EC%A5%A4#pocketmine_guest

[参考]パーソナルFWの開放

さくらのクラウドクラウドでCentOS7を導入した場合
デフォルトでパーソナルファイアーウォールが動作しています。
下の参考コマンドを確認して,ポートを開放して下さい。

参考コマンド

firewall-cmd --zone=public --add-port=19132/udp --permanent # 19132/udpの開放
firewall-cmd --reload                                       # 設定の読み込み
firewall-cmd --list-all                                     # 設定内容確認

参考にした資料

http://pocketmine-mp.readthedocs.io/en/latest/installation.html#installing-on-linux-macos

試した環境

Minecraft PE用マルチプレイサーバー

PocketMine-MP 1.6dev 「[REDACTED]」 implementing API version 2.0.0 for Minecraft: PE v0.14.2.0 alpha (protocol version 60)

OS

[root@PocketMineMP ~]# cat /etc/redhat-release
CentOS Linux release 7.2.1511 (Core)
[root@PocketMineMP ~]# uname -a
Linux PocketMineMP 3.10.0-327.10.1.el7.x86_64 #1 SMP Tue Feb 16 17:03:50 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux