Signs and markers

「Signs and markers」の編集履歴(バックアップ)一覧に戻る

Signs and markers - (2012/11/11 (日) 03:24:19) のソース

*Signs and Markers
看板とマーカー

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

*設定ファイル

**フィルタ関数
フィルタ関数とはpythonの関数で、POIがどのにmarkerSetに属するかを決め、どのように表示するかを設定します。
引数は一つ(辞書:連想配列のようなもの)で、返り値は表示するために用意された文字列です。
例
#highlight(python){{
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>http://www.minecraftwiki.net/wiki/Chunk_format]]を見て下さい。

ちょっと違う例
#highlight(python){{
def chestFilter(poi):
    if poi['id'] == "Chest":
        return "Chest with %d items" % len(poi['Items'])
}}

**特殊なPOI
2種類の特殊なPOIがあり、それぞれ特殊なIDをもっています。
:PlayerSpawn|スポーン位置を示しています。
プレイヤー名はEntityIdキーに、場所はx,y,zキーに格納されています。
:Player|プレイヤーの最後の位置を示しています。
プレイヤー名はEntityIdキーに、場所はx,y,zキーに格納されています。
>注
>プレイヤーの位置は、シングルであればlevel.datマルチであればplayer.datファイルから取得されます。
>位置情報はワールドをセーブした時のみ書き込まれますので、リアルタイムの情報というわけではありません。