“目標選擇器”是遊戲《minecraft》中用於指令方面的一種東西。大多數以玩家作為參數的命令,可以通過某些限定條件來選擇一個或多個玩家,而不必要用名字來指定玩家。以實體作為參數的命令,也可以通過目標選擇器選擇符合條件的一個或多個實體。
基本介紹
- 中文名:目標選擇器
- 變數種數:5種
- 登場作品:《minecraft》
- 用途:用於指令方面
格式,變數,參數,坐標類,計分板類,其他類,
格式
目標選擇器格式:
(註:“<>”必須要填,“[]”可填可不填)
變數
目標選擇器變數用於指定待選目標的大致分類。共有5種變數。
@p
在命令方塊中、玩家或使用execute用實體執行時,會以自身為基準點。
@r
選擇隨機玩家(或使用type目標選擇器參數來包含實體)。
如果沒有使用type參數,@r只會選擇隨機玩家。type參數可以用來選擇非玩家的實體(舉例來說,@r[type=zombie]會隨機選擇殭屍,@r[type=!player]會隨機選擇非玩家實體,等等)。
@a
選擇所有玩家,包括已死亡玩家。除了@a以及@s以外的其他所有目標選擇器都不能選中已死亡玩家。
@e
選擇所有實體(包含玩家)。
@s
只選擇唯一一個實體:執行該命令的實體,包括已死亡玩家。若命令執行者不是一個實體,比如是命令方塊或伺服器控制台執行命令,則此選擇器不會選中任何東西。
(信息來源)
參數
在使用目標選擇器之後,玩家可以隨意地使用參數來限定所要選擇的群組。當使用@a或@e時,待選目標從
全體篩選成特定的少數。當使用@p或@r時,待選目標根據距離遠近或隨機而從全體中產生。當使用@s時,命令執行者只有在所有參數都滿足時才會被選擇,否則命令執行失敗。
在目標選擇器變數之後附加鍵值對構成的逗號分隔,並包含在方括弧中(見“格式”目錄)
坐標類
坐標類參數用於範圍檢測,分為3種。
基準點
通過x、y、z這三個參數可以修改目標選擇器選擇的基準點,與通過距離選擇的參數結合可以選擇特定距離內的目標,與通過體積尺寸參數選擇目標結合可以選擇特定立方體內的目標。如果僅指定基準點而未指定距離和體積尺寸,則會選擇整個世界(對選擇順序及部分選擇參數有效,並且限制選擇範圍為執行的世界)。
格式:[x =<數值> ,y =<數值> ,z =<數值> ,...]
距離
通過距離選擇目標的參數有兩個版本,一個是r和rm(僅手機版)和distance(僅Java版)。該參數的選擇範圍為球狀。
r和rm
r——最大搜尋半徑(圓),值可以填R,這樣會只選擇小於R個方塊的目標執行命令。使用小於0的值則會將命令限制為在相同維度執行,且不限制執行位置的距離。
rm——最大不搜尋半徑(圓),值也可以填RM,這樣會只選擇大於RM個方塊的目標執行命令。
distance
該參數只選擇與基準點的距離(單位為方塊格數)為某個值或者某個範圍內的目標。只允許非負數。
若精確到坐標(上方)和半徑中的一或多個坐標,則半徑將以坐標為執行中心而不是命令執行位置。
在Java版,範圍可以是“最小值..”、“..最大值”或者“最小值..最大值”的格式,比如:
- @e[distance=10]— 是距離10範圍
- @e[distance=10..12]— 是距離10到12範圍
- @e[distance=5..]— 是距離5或以上範圍
- @e[distance=..15]— 是距離15或以下範圍
立方體
選擇立方體內的實體參數為dx、dy、dz,只會選擇位於一定長方體區域內部的目標,體積定義為從基準點開始,向“x”方向(東/西方)延伸DX格(包括基準點本身,下同),向“y”方向(上/下方)延伸DY格,並向“z”方向(北/南方)延伸DZ格。(dx、dy和dz用來指定與坐標的距離;它們不是指定一個新的坐標。)dx、dy、dz也可以是負數(即為反向延伸)。
例子:
- @e[x=1,y=2,z=3,dx=4,dy=5,dz=6]— 只有碰撞箱在方塊區域(1~5, 2~7,3~9)(或坐標{(x,y,z)|x∈[1,6],y∈[2,8],z∈[3,10]}區域)內有重疊的實體會被選擇。
- @e[x=1,y=2,z=3,dx=0,dy=0,dz=0]— 只有碰撞箱在方塊區域(1,2,3)內有重疊的實體會被選擇。
玩家可以結合通過距離和通過體積選擇目標,此時只考慮二者重疊的區域。(從西北下角算起在一定的半徑以內,且不超過定義的體積。)
計分板類
計分板類參數有score、tag和team。由於手機計分板暫且沒有隊伍計分板分支,所以沒有team參數。
分數
使用分數來選擇目標的參數為score。score有三種格式,分別是score_<計分項目名稱> =<值>、score_<計分項目名稱>_min =<值>(僅Java版)和scores={<名稱>=<分數或範圍>,…}(僅手機版)。Java版中,前者是用於選擇分數沒有超過選定的計分項目所指定的值的實體,後者是選擇沒有小於選定的計分項目分數所指定的值的實體。手機版中,範圍有1.. (≥1)、..1(≤1)、1.. 2(1~2)(數字可以隨意改變)。
例子:
- score_name——選定叫name 的計分項目分數沒有超過所指定的值的實體。
- score_name_min——選定叫name的計分項目分數沒有小於所指定的值的實體。
- scores={name=5..10}——選定叫name的積分項目分數在5到10之間的實體。
標籤
實體的計分板標籤可以通過/tag來給予或者移除,無需事先定義。每一個實體都可以擁有一個或者多個標籤,或者沒有任何標籤。
格式:
1、[tag =<標籤名> ,....]——選擇指定標籤的實體。
2、[tag =!<標籤名> ,....]——排除指定標籤的實體。
- [tag= ,......]— 只選擇沒有任何標籤的目標。
- [tag=! ,......]— 只選擇擁有任意標籤的目標。
- [tag=標籤1,tag=標籤2 ,......]— 選擇既有標籤1又有標籤2的目標。
- [tag=!標籤1,tag=!標籤2 ,......]— 選擇既沒有標籤1又沒有標籤2的目標。
- [tag=標籤1,tag=!標籤2 ,......]— 選擇既有標籤1又沒有標籤2的目標。
隊伍
通過隊伍選擇目標的參數是team。隊伍可以通過計分板指令:/scoreboard team add來創建,詳情見“計分板—中文百科”。
格式:
1、[team =<隊伍名> ,......]——選擇在指定隊伍名的實體。
2、[team =!<隊伍名> ,......]——選擇不在指定隊伍名的實體。
3、[team = ,......]——選擇不屬於任何一個隊伍的實體。
4、[team =! ,...... ]——選擇隨機一個隊伍包含的實體。
其他類
數量
通過數量選擇目標的參數在手機版和Java版都不一樣。
手機版
手機版需要用c參數來選擇,是選擇指定數量的目標,通常以距離命令執行點的順序排列。如果變數為p,數值為負數,將會從最遠的地方向命令執行點的順序排列。
格式:
[c =<數量> ,...... ]
Java版
Java版的數量參數分為兩個,分別是limit和sort。
limit
當使用@p或@r變數時,此參數被預設為1,而更大的數值會增加回傳的目標數量。當使用@a或@e變數時,此參數只會限制目標數量(默認選擇所有目標)。
在Java版,不能使用負數,若要反選實體需要使用sort參數。(在1.13之前,用法同基岩版。)
sort
sort參數具體見參數——其他類——數量——Java版——格式目錄。
格式
- limit:[limit =<數量> ,...... ]
- sort:
- [sort =nearest ,......]——表示距離最近的,是@p的默認排序方式。
- [sort =furthest ,......]——表示距離最遠的。
- [sort =random ,......]——表示隨即排序,是@r的默認排序方式。
- [sort =arbitrary ,......]——表示無序,是@a和@e的默認排序方式。
經驗等級
經驗等級分為3種參數,分別是l、lm和level。
l
l參數是選擇經驗值等級低於所給的等級的目標。
格式
[l =<數值> ,...... ]
lm
lm參數是選擇經驗值等級高於所給的等級的目標。
格式
[lm =<等級> ,......]
level
level參數是選擇經驗值等級在某個值或某個範圍內的目標,在1.13以前用法和手機版一樣。
格式
[level =<值> ,...... ]
[level =<最小等級>..<最大等級> ,...... ]
遊戲模式
遊戲模式分為兩種不同版本的參數,分別是m和gamemode。
格式
m:
[m =M ,...... ]——選擇處於指定模式的玩家。
[m =!M ,...... ]——選擇不處於指定模式的玩家。
gamemode:
[gamemode =M ,...... ]——選擇處於指定模式的玩家。
[gamemode =!M ,...... ]——選擇不處指定模式的玩家。
變數M可以是
- 0、s、survival:生存模式。
- 1、c、creative:創造模式。
- 2、a、adventure:冒險模式。
- spectator:旁觀者模式。
這將自動過濾非玩家目標。
在Java版從1.13,遊戲模式只支持全稱。在1.13之前,用法與基岩版相同。其中,在1.9之前的版本,遊戲模式只允許使用數字,且不能反選。