Signs and markers

Signs and Markers

看板とマーカー

Overviewrは看板やマーカー、ポイント(原文points of interest:以下POI)をマップに表示できます。
普通の設定とはちょっと違うので、注意して見てみましょう。

設定ファイル


フィルタ関数

フィルタ関数とはpythonの関数で、POIがどのmarkerSetに属するかを決め、どのように表示するかを設定します。
引数は一つ(辞書:連想配列のようなもの)で、返り値は表示するために用意された文字列です。
def signFilter(poi):
    if poi['id'] == 'Sign':
        return "\n".join([poi['Text1'], poi['Text2'], poi['Text3'], poi['Text4']])
 
もしPOIが合わなければ、何も返しません。
(Pythonの関数の仕様で、'return'無しに関数が終わった時にこうなります。)
引数はチャンクファイルから直接取得したTileEntityやEntityです。
プレイヤーの場所やスポーンのような特殊なEntitiyであることもあるでしょう。

上の例ではEntityが看板(sign)だった場合、書かれている4行を返します。
TileEntityやEntityについてもっと知りたければ、MinecraftWikiのChunk Formatを見て下さい。

ちょっと違う例
def chestFilter(poi):
    if poi['id'] == "Chest":
        return "Chest with %d items" % len(poi['Items'])
 
idがChest(チェスト)なら、チェスト内のアイテム数を取得していますね。

特殊なPOI

2種類の特殊なPOIがあり、それぞれ特殊なIDをもっています。
PlayerSpawn
スポーン位置を示しています。
プレイヤー名はEntityIdキーに、場所はx,y,zキーに格納されています。
Player
プレイヤーの最後の位置を示しています。
プレイヤー名はEntityIdキーに、場所はx,y,zキーに格納されています。

プレイヤーの位置は、シングルであればlevel.datマルチであればplayer.datファイルから取得されます。
位置情報はワールドをセーブした時のみ書き込まれますので、リアルタイムの情報というわけではありません。

player関係の例
def playerIcons(poi):
    if poi['id'] == 'Player':
        poi['icon'] = "http://overviewer.org/avatar/%s" % poi['EntityId']
        return "Last known location for %s" % poi['EntityId']
 
idがPlayerならiconに使用しているスキンの画像を取得して(上のURLの%sに自分がminecraftで使っているIDを入れてみるとわかります)
誰々の最後の位置はここだというメッセージを返してますね。

レンダー辞書キー

それぞれのレンダーでフィルターを使わなくても、複数使っても良いです。
設定したフィルタ関数は、レンダリングしたマップの'Signs'ドロップダウンメニューから選ぶことができるようになります。
renders['myrender'] = {
        'world': 'myworld',
        'title': "Example",
        'markers': [dict(name="All signs", filterFunction=signFilter),
                    dict(name="Chests", filterFunction=chestFilter, icon="chest.png", createInfoWindow=False)]
}
 
以下マーカー辞書で使えるキーの解説
name
'Signs'ドロップダウンメニューで表示される名前。
filterFunction
使用するフィルター関数。最低1つは引数が必要で、その返り値は文字列か何も無し。
;icon|任意で追加。POIを表示するためのアイコンを指定。省略すると看板アイコン。
POIごとに違うアイコンを設定することの可能(上のPlayerの例を参照)。
createInfoWindow
任意で追加。アイコンをクリックして情報ウィンドウを開くか否か。デフォルトはTrue。
checked
任意で追加。マップを開いた時にこのマーカーグループが見えるかどうか。デフォルトはFalse。

POIマーカーを生成


通常のoverviwer.pyでのマップレンダーではマーカーが更新&追加されません!
以下のオプションのどれかを使って、マップを生成しましょう

--genpoi オプション

overviewer.pyを実行するときに--genpoiオプションを付けるとPOIマーカーを生成できます。
/path/to/overviewer.py --config /path/to/your/config/file.conf --genpoi
注:--genpoiオプションを付けるとマップは生成されません。マーカーのみの生成になります。

genPOI.py

genPOI.pyというスクリプトもあり、直接使う事ができます。
/path/to/overviewer/genpoi.py --config=/path/to/your/config.file
アウトプットディレクトリに必要なJavaScriptファイルも生成してくれます。
最終更新:2012年11月11日 22:17