dynmapを実装しているマインクラフトマルチサーバーから、全プレイヤーの位置情報を取得するテスト。(実験中)
手法
1.dynmap以下のすべてのファイルをローカルに保存(保存先のフォルダをdynmapフォルダとする。)
いらないファイルもあると思う。
これのやり方は 項目:ローカル保存方法 を見る。
2.dynmap/config.jsを次のように変える。
config.js
var config={
url : {
configuration: '(dynmapのURL)/up/configuration',
update: '(dynmapのURL)/up/world/{world}/{timestamp}',
sendmessage: '(dynmapのURL)/up/sendmessage',
login: '(dynmapのURL)/up/login',
register: '(dynmapのURL)/up/register',
tiles: '(dynmapのURL)/tiles/',
markers: '(dynmapのURL)/tiles/'
}
};
3.これでdynmap/index.htmlを開けばdynmapが見れる。
すなわち、あとはjavascriptをいじるだけ。
追記:jqueryのクロスドメインサポートをONにしなければなりません。
書き忘れてました。
やり方は、dynmap/index.htmlのscriptタグ内の最初の行に以下の文を足すだけです。
index.html
//追加するコード
jQuery.support.cors = true;
4a.map.js の Dynmap関数内のupdatePlayer関数が、playerのUpdate時に読み込まれる。(予測)
よって、
map.js
//(map.js/Dynmap.prototype.updatePlayerの最後らへんに追加する)
console.log("PlayerLocation["+player.name+"]=" +player.location.x+","+player.location.y+","+player.location.z);
とすればプレイヤーの名前と位置情報のペアが出力できる。
ローカル保存方法
- まず、サイト内の関連付けられたファイルをすべて取得するソフトウェアを用いてdynmap以下のファイルを全部ダウンロードする。一応フォルダ名はdynmapにする。私はCompleteGetterを使った。
- これだけだとjavascriptで動的に生成されるURLによるファイルなどを取得できないので、以下のファイルを自前でダウンロードする。
dynmap/up/configuration
dynmap/js/index.html内に定義されているjsファイルすべて
(js/chat.js,js/chatballoon.js,...)
これで完了。
注意
・このコードが正しいかどうかはわかりません。
・これはdynmapのソースコードを私的使用のために改変したものです。