格式
目標選擇器格式:
@<變數> [<參數> =<數值> ,<參數> =<數值>......]
(註:“<>"必須要填,“[]”可填可不填)
變數
目標選擇器變數用於指定待選目標的大致分類。共有5種變數。
@p
選擇最近的玩家。在伺服器控制台中輸入時,基準點的坐標為x0 y0 z0。如果有多個最近的玩家,他們與基準點距離完全相同,那么會選擇其中最晚進入伺服器的玩家。
在命令方塊中、玩家或使用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這三個參數可以修改目標選擇器選擇的基準點,與通過距離選擇的參數結合可以選擇特定距離內的目標,與通過體積尺寸參數選擇目標結合可以選擇特定立方體內的目標。如果僅指定基準點而未指定距離和體積尺寸,則會選擇整個世界(對選擇順序及部分選擇參數有效,並且限制選擇範圍為執行的世界)。
坐標可以是整數或像12.34這樣的小數(具體為雙精度浮點數)且不會進行中心校正(center-corrected),這意味著x=0不再自動更正為x=0.5。波浪號可用於此參數,僅限手機版。
格式:[x =<數值> ,y =<數值> ,z =,<數值> ,...]
距離
通過距離選擇目標的參數有兩個版本,一個是r和rm(僅手機版)和distance(僅Java版)。該參數的選擇範圍為球狀。
r和rm
r——最大搜尋半徑(圓),值可以填R,這樣會只選擇小於R個方塊的目標執行命令。使用小於0的值則會將命令限制為在相同維度執行,且不限制執行位置的距離。
rm——最大不搜尋半徑(圓),值也可以填 ,這樣會只選擇大於RM個方塊的目標執行命令。
distance
該參數只選擇與基準點的距離(單位為方塊格數)為某個值或者某個範圍內的目標。只允許非負數。
若精確到坐標(上方)和半徑中的一或多個坐標,則半徑將以坐標為執行中心而不是命令執行位置。
在Java版,範圍可以是“最小值..”、“..最大值”或者“最小值..最大值”的格式,比如:
•@e[distance=10]— 是距離10範圍
•@e[distance=10..12]— 是距離10到12範圍
•@e[distance=5..]— 是距離5或以上範圍
•@e[distance=..15]— 是距離15或以下範圍
•[1]
立方體
選擇立方體內的實體參數為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)內有重疊的實體會被選擇。 [1]
玩家可以結合通過距離和通過體積選擇目標,此時只考慮二者重疊的區域。(從西北下角算起在一定的半徑以內,且不超過定義的體積。)
計分板類
計分板類參數有score、tag和team。由於手機計分板暫且沒有隊伍計分板分支,所以沒有team參數。
分數
使用分數來選擇目標的參數為score。score有兩種格式,分別是score_<計分項目名稱> =<值>和score_<計分項目名稱>_min =<值>。前者是用於選擇分數沒有超過選定的計分項目所指定的值的實體,後者是選擇沒有小於選定的計分項目分數所指定的值的實體。
例子:
•score_name——選定叫name 的計分項目分數沒有超過所指定的值的實體。
•score_name_min——選定叫name的計分項目分數沒有小於所指定的值的實體。 [2]
標籤
實體的計分板標籤可以通過/tag來給予或者移除,無需事先定義。每一個實體都可以擁有一個或者多個標籤,或者沒有任何標籤。
格式:
1、[tag =<標籤名> ,....]——選擇指定標籤的實體。
2、[tag =!<標籤名> ,....]——排除指定標籤的實體。
1.[tag= ,......]— 只選擇沒有任何標籤的目標。
2.[tag=! ,......]— 只選擇擁有任意標籤的目標。
3.[tag=標籤1,tag=標籤2 ,......]— 選擇既有標籤1又有標籤2的目標。
4.[tag=!標籤1,tag=!標籤2 ,......]— 選擇既沒有標籤1又沒有標籤2的目標。
5.[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的默認排序方式。 [1]
經驗等級
經驗等級分為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版)。
這將自動過濾非玩家目標。
在Java版從1.13,遊戲模式只支持全稱。在1.13之前,用法與基岩版相同。其中,在1.9之前的版本,遊戲模式只允許使用數字,且不能反選。