server-memo.net

dynmapの導入方法

      2016/06/21

spigotにdynmapを導入する方法と設定方法です。

dynmapとは

minecraft(spigot/bukkit)のマップをweb上に表示するためのプラグインです。

通常のマップ以外にも「nether(ネザー)」や「the end(ジエンド)」のマップも表示することが出来て、表示の種類としては「Flat(平面図)」「Surface(投射図)」「Cave(地下洞窟)」の表示があります。

表示例

Flat

dynmap000

Surface

dynmap001

Cave

dynmap002

dymapインストール

spigotインストールディレクトリ内にある「plugins」ディレクトリを、dynmapのjarファイルをダウンロードすることで使用できるようになります。

dynmapダウンロード

作業は「spigot」を実行するユーザで行って下さい。

「spigot」がインストールされているディレクトリの「plugins」フォルダに移動します。

※私の環境では、「/opt/spigot/」ディレクトリにインストールされているので、下記のようになりますが、移動するディレクトリは適宜読み替えてください。

$ cd /opt/spigot/plugins/

今回は「wget」を使用してダウンロードを行いました。

$ wget http://dev.bukkit.org/media/files/911/888/dynmap-2.3-alpha-1.jar

dynmap配布サイト

ダウンロード場所は下記の場所から、必要なバージョンを選んでダウンロードしてください。

http://dev.bukkit.org/bukkit-plugins/dynmap/files/

ファイアウォール設定

dynmapは8123番ポートを使用するので、ファイアウォールの設定変更も忘れずに行います。

firewalld設定

私の環境はCentOS7なので、ファイアウォールが「firewalld」となります。

そこで「firewalld」での通信許可設定の例を記述していきます。

ポートの追加

「dynmap」で使用する8123番ポートでの通信を許可する設定を行います。

「firewall-cmd」に「--permanent」オプションを付けて、サーバを再起動しても設定が元に戻らないようにし、8123番ポートへの通信を許可するポリシーをゾーンに追加します。

# firewall-cmd --permanent --add-port=8123/tcp
success
設定反映

追加した8123番への通信を許可する設定を反映させるために。「firewall-cmd --reload」コマンドを実行します。

# firewall-cmd --reload
success
設定確認

「firewall-cmd --list-all」コマンドで、ゾーンの設定が表示されますので、「ports」の欄に「8123/tcp」が追加されていることを確認します。

# firewall-cmd --list-all
dmz (default, active)
interfaces: eth0
sources:
services: http https
ports: 10022/tcp 8123/tcp 25565/tcp
masquerade: no
forward-ports:
icmp-blocks:
rich rules:

ちなみに、設定されてるポートはそれぞれ、10022番ポートは待ち受けポートの変更を行った「SSH」用、8123番ポートは「dynmap」用、25565番ポートは「spigot」用となっています。

spigot再起動

インストールした「dynmap」は「spigot」を再起動することで動作し始めるので、「spigot」の再起動を行ってください。

マップの表示

「spigot」の再起動が完了しましたら、webブラウザで「spigot」が動作しているサーバの8123番ポートにアクセスしてください。

http://サーバのアドレス:8123

ブラウザで表示してみると最初は真っ暗ですが、マイクラのクライアントでログインして歩き回ると少しづつマップが表示されるようになります。

dynmap導入直後の画面は真っ黒です…

dynmap003

マイクラのクライアントでログインして、歩き回っているとその範囲が少しづつ描画されていきます。

dynmap004

マップのレンダリング

一気にマップを描画させたい場合は、spigotが動作しているサーバのコンソールで「dynmap fullrender」コマンドを実行することで強制的にレンダリング(マップの描画)を行うことができます。

書式

dynmap fullrender [ワールド名]

※ワールド名は「server.properties」の「level-name」で設定変更してなければ「world」になります。

>dynmap fullrender world
[15:17:26 INFO]: Full render starting on world 'world'...
[15:17:38 INFO]: Full render of map 'flat' of 'world' in progress - 100 tiles rendered (119.52 msec/tile, 90.73 msec per render)
[15:17:49 INFO]: Full render of map 'flat' of 'world' in progress - 200 tiles rendered (111.35 msec/tile, 78.99 msec per render)
[15:17:54 INFO]: Full render of map 'flat' of 'world' completed - 233 tiles rendered (106.06 msec/map-tile, 72.21 msec per render)

レンダリングが完了するまではマップの広さにもよりますが、結構な時間がかかりますので気長にお待ちください。

レンダリング完了後のマップを確認すると、周りのマップも描画されていました。

dynmap004

設定色々

「dynmap」を使っていく上で知っておきたい設定についてまとめています。

※後で色々と追記していきます。

「Cave」を表示させない方法

地下洞窟のマップを表示してしまう「Cave」は、地下洞窟の構造がまるわかりになってしまい探索する楽しみが無くなってしまう気がするので、私は「Cave」を表示させないように設定を行っています。

作業の手順は下記の通りとなります。

  • マップのレンダリング停止
  • caveマップデータの削除
  • dynmap からcave表示ボタンを削除
  • マップのレンダリング再開

各項目の詳細な手順を説明していきます。

マップのレンダリング停止

まずは、マップのレンダリングを停止します。

書式
dynmap pause all
実行例
>dynmap pause all
[12:55:11 INFO]: [dynmap] Full/radius render pause set to true
[12:55:11 INFO]: [dynmap] Update render pause set to true
[12:55:11 INFO]: Full/Radius renders are PAUSED
[12:55:11 INFO]: Update renders are PAUSED
[12:55:11 INFO]: Zoom out processing is ACTIVE

caveマップデータの削除

特に必要もないので、すでに作成された「cave」マップのデータを削除します。

書式
dynmap purgemap [マップ名] cave
実行例
>dynmap purgemap world cave
[12:59:04 INFO]: Map tile purge starting on map 'cave' for world 'world'...
[12:59:04 INFO]: Purge of tiles for map 'cave' for world 'world' completed

dynmap からcave表示ボタンを削除

webブラウザに表示されているマップ画面から、「cave」の表示ボタンを削除します。

dmap mapdelete [マップ名:cave]
実行例
>dmap mapdelete world:cave
[12:59:55 INFO]: Refreshing configuration for world world
[12:59:55 INFO]: [dynmap] Loaded 2 maps of world 'world'.
[12:59:55 INFO]: If you are done editing map data, run '/dynmap pause none' to resume rendering

マップのレンダリング再開

最後に、マップのレンダリング処理を再開して作業完了となります。

dynmap pause none
実行例
>dynmap pause none
[13:01:00 INFO]: [dynmap] Full/radius render pause set to false
[13:01:00 INFO]: [dynmap] Update render pause set to false
[13:01:00 INFO]: Full/Radius renders are ACTIVE
[13:01:00 INFO]: Update renders are ACTIVE
[13:01:00 INFO]: Zoom out processing is ACTIVE

これで、「cave」のマップは削除されましたので、webブラウザで表示して確認をお願いします。

「Nether」や「The End」を表示させない方法

「Cave」のマップを表示させたくない理由と同じように、「Nether」や「The End」のマップを表示させたくない場合もあると思いますので、その方法についてまとめました。

作業手順は下記の通りとなります。

  • マップのレンダリング停止
  • dynmapから表示ボタンを削除
  • マップのレンダリング再開

※「Nether」や「The End」で作成されたマップデータの削除については、ここでは解説していませんが、必要ならひとつ前の項目で手順を載せた「Cave」マップを表示させない方法の手順を参考にして削除してください。

マップのレンダリング停止

マップのレンダリングを停止します。

書式
dynmap pause all
実行例
>dynmap pause all
[12:07:35 INFO]: Full/Radius renders are PAUSED
[12:07:35 INFO]: Update renders are PAUSED
[12:07:35 INFO]: Zoom out processing is ACTIVE

表示ボタンを削除

「Nether」や「The End」のワールド自体を「dynmap」で表示させないように設定します。

書式

ここで指定するワールド名は、「dynmap」に登録されているワールド名となります。

マップに名前が表示されているので、それを指定してください。

dynmap003

dmap worldset [ワールド名] enabled:false
実行例

今回は「Nether」のマップを表示させないように設定を行いました。

「dynmap」では「world_nether」と登録されているので、ワールド名をそのように指定します。

>dmap worldset world_nether enabled:false
[12:33:49 INFO]: Refreshing configuration for world world_nether
[12:33:49 INFO]: [dynmap] World 'world_nether' disabled
[12:33:49 INFO]: If you are done editing map data, run '/dynmap pause none' to resume rendering
マップを再度表示させたい場合

「dynmap」に表示させない設定を行った後に、やっぱり表示させたいとなった場合は、マップのレンダリングを停止してから下記のコマンドを実行することで、再度マップを表示させることが出来るようになります。

最後に、マップのレンダリング再開を忘れないように注意してください。

dmap worldset [ワールド名] enabled:true

マップのレンダリングを再開

表示を行わない設定が終わったら、マップのレンダリングを再開させます。

書式
dynmap pause none
実行例
>dynmap pause none
[12:36:48 INFO]: [dynmap] Full/radius render pause set to false
[12:36:48 INFO]: [dynmap] Update render pause set to false
[12:36:48 INFO]: Full/Radius renders are ACTIVE
[12:36:48 INFO]: Update renders are ACTIVE
[12:36:48 INFO]: Zoom out processing is ACTIVE

dynmapを確認してNetherが消えていることを確認してください。

dynmap004

 - dynmap