spigotにdynmapを導入する方法と設定方法です。
dynmapとは
minecraft(spigot/bukkit)のマップをweb上に表示するためのプラグインです。
通常のマップ以外にも「nether(ネザー)」や「the end(ジエンド)」のマップも表示することが出来て、表示の種類としては「Flat(平面図)」「Surface(投射図)」「Cave(地下洞窟)」の表示があります。
表示例
Flat
Surface
Cave
dymapインストール
spigotインストールディレクトリ内にある「plugins」ディレクトリを、dynmapのjarファイルをダウンロードすることで使用できるようになります。
dynmapダウンロード
※2020/01/07 一部手順修正
「wget」コマンドで「dynmap」のjarファイルをダウンロードする方法をwebブラウザでダウンロードしてから、spigotサーバにアップロードする手順に変更しました。
作業は「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
ダウンロード場所は下記の場所から、必要なバージョンを選んでダウンロードしてください。
「Game Version」欄で対応するspigotのバージョンが確認できるので、「↓」ボタンをクリックしてダウンロードしてください。
dynmapのアップロード
ダウンロードした「dynmap」のjarファイルを「spigot」がインストールされているサーバに何らかの方法でアップロードしてください。
ちなみに、TeraTermを使用してのアップロード方法は下記の通りとなります。
所有者情報の確認
アップロードしたjarファイルの所有者とグループが「spigot」を動作させるユーザであることを確認してください。
もし、異なるユーザが所有者であった場合は「chown」コマンドで変更しておいてください。
本環境では「spiadmin」というユーザで「spigot」を動作させているので、下記のように設定を行います
# chown spiadmin:spiadmin Dynmap-3.0-beta-9-spigot.jar
pluginsフォルダに格納
アップロードしたjarファイルを「spigot」がインストールされているディレクトリの「plugins」フォルダに格納することで「dynmap」をプラグインとして動作せることが出来るようになります。
私の環境では「/opt/spigot/」ディレクトリにインストールされているので、下記のようになりますが、移動先のディレクトリは適宜読み替えてください。
# mv Dynmap-3.0-beta-9-spigot.jar /opt/spigot/plugins/
ファイアウォール設定
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導入直後の画面は真っ黒です…
マイクラのクライアントでログインして、歩き回っているとその範囲が少しづつ描画されていきます。
マップのレンダリング
一気にマップを描画させたい場合は、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)
レンダリングが完了するまではマップの広さにもよりますが、結構な時間がかかりますので気長にお待ちください。
レンダリング完了後のマップを確認すると、周りのマップも描画されていました。
設定色々
「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」に登録されているワールド名となります。
マップに名前が表示されているので、それを指定してください。
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が消えていることを確認してください。
コメント
初めてのさくらVPSを使用したminecraftサーバーの立ち上げでしたが、このサイトのおかげで無事立ち上げることが出来ました。どうしてもお礼を伝えたくメッセージとして残します。ありがとうございます。
かっさんさん
ご丁寧なコメントありがとうございます。
minecraftサーバの立ち上げのお役に立てたようで私もうれしく思います。
これからもお互いにマイクラを楽しんでいけると良いですね!
さくらVPSにて鯖を建てていますがとても参考になります。
dynmapにて特定のMapをweb上で見れなくする方法はどのように行うといいのでしょうか…?
うましゅーさん
ご質問ありがとうございます。
>dynmapにて特定のMapをweb上で見れなくする方法はどのように行うといいのでしょうか…?
1つ質問させてください。
特定のMapとは具体的にどのMapを指しているのでしょうか?
「nether」や「the end」のマップを表示させたくないという事でしょうか?
それとも、「Cave」以外の「Flat」や「Surface」のどちらかでしょうか?
Netherやendといったワールドそのもののことです。
うましゅーさん
ご回答ありがとうございます。
コメント欄に手順を記述すると読みづらくなってしまうので、ページ本文に手順を追記しました。時間があるときにでも確認してみてください。
手順の中で分からない点などがありましたら、お手数をお掛けしますがご連絡ください。
IPアドレス:8123 にアクセスしても「このサイトにアクセスできません
(IP) からの応答時間が長すぎます。」となってしまいます,どうしたらよいでしょうか.
そいんすさん
お返事が遅くなり申し訳ありません。
もうすでに解決されてるかもしれませんが、
spigot起動時のログでdynmapに関するエラー等が出力されていたりしていないでしょうか?
まずは、logsディレクトリの中にログファイルがあるので確認してみてください。
以上、よろしくお願いします。
そいんすさん
私の同じ症状が出ましたが、Dynmap-Worldguardを入れたら治りました
https://dev.bukkit.org/projects/dynmap-worldguard