ターゲットセレクタ
Scenamatica ターゲットセレクタについて説明しています。
概要
Scenamatica ターゲットセレクタは, エンティティやプレイヤを指定するための簡単な構文の記法です。 Minecraft のターゲットセレクタ を拡張したもので, Scenamatica による独自エンジンで解釈されます。
Minecraft ターゲットセレクタとは?
Minecraft ターゲットセレクタは, コマンドの実行者が, その対象となるエンティティ・プレイヤを選択する際に, より複雑な条件を指定するために使用されます。
アットマーク(@
)のあとに母集団を指定し, その後に細かな条件を 角括弧([]
) で括って指定します。
例:
@e[type=minecraft:cow,distance=..10] ~ ~ ~
@a[tag=foo] Hello, world!
これが必要な理由
通常の Minecraft ターゲットセレクタを用いたエンティティの参照は, 通常 Bukkit API を用いてアクセスします。 しかし, Bukkit API は削除されたエンティティや, ワールドでロードされていないエンティティへのアクセスを提供しておらず, Scenamatica の一部のアクションやコンテキストのエンティティ での使用時に不都合が生じます。
そのために, Scenamatica は独自のエンティティ参照システムを導入してこれを解決するとともに, 一部の機能を拡張することによって より柔軟なエンティティの指定を可能にしています。
基本的な構文
通常の Minecraft ターゲットセレクタと同様に, @母集団の種類[引数]
で指定します。
また, @母集団の種類
および [引数]
は省略可能です。
引数は キー=値
の KV 形式で指定します。
詳しくは次章:セレクタの引数を参照してください。
各メタ文字間は任意の空白文字を含められます。
空白文字に該当する文字は, 半角スペースまたは \t
(タブ文字)です。
母集団の種類
母集団には以下のいづれかを指定します。
@e
: すべてのエンティティ@a
: すべてのプレイヤ@p
: (主役から)最も近いプレイヤ@r
: ランダムなプレイヤ@s
: アクションの主役となるプレイヤ
アクションの主役とは, プレイヤに関するアクションにおいては, そのプレイヤを指します。
その他のアクションにも「主役」が定義されている場合があります。各アクションのドキュメントを参照してください。
引数の構文
セレクタの引数は, [キー1=値1, キー2=値2...]
の形式で指定し, それぞれを ,
で区切ります。
それぞれメタ文字以外の任意の文字列を指定できます。
母集団の種類を省略した場合は, [
および ]
を省略できます。
同じ階層に重複したキーを持つ引数の値は, 暗黙的にそのキーのリスト値の要素として扱われます。
例えば, @e[tag=foo,tag=bar]
というセレクタは, @e[tag={foo,bar}]
と同じ意味になります。
つまりこれは AND 検索(すべての条件を満たすこと)となります。
文字列値
文字列は, 任意の文字の並びです。基本的には "
で囲んで表現できます。
省略した場合は, メタ文字以外の任意の文字列を指定できます。
"
自体を含めたい場合は, \"
とエスケープします。
あいまい文字列
あいまい指定を行うために, 対象の文字列を正規表現で指定でき, これらの文字列を「あいまい文字列」と呼びます。
正規表現で指定する場合はマップで指定し, regex
というキーを指定します。
例:
[foo={regex="bar.*"}]
上記の例は, foo
の値が bar
で始まる文字列を指定します。
数値
数値は任意の整数, 小数, 指数で表現できます。
例:
[foo=1]
[foo=1.0]
[foo=1e3]