目標選擇器

“目標選擇器”是遊戲《minecraft》中用於指令方面的一種東西。大多數以玩家作為參數的命令,可以通過某些限定條件來選擇一個或多個玩家,而不必要用名字來指定玩家。以實體作為參數的命令,也可以通過目標選擇器選擇符合條件的一個或多個實體。

基本介紹

  • 中文名:目標選擇器
  • 變數種數:5種
格式,變數,參數,坐標類,計分板類,其他類,

格式

目標選擇器格式:
@<變數> [<參數> =<數值> ,<參數> =<數值>......]
(註:“<>"必須要填,“[]”可填可不填)

變數

目標選擇器變數用於指定待選目標的大致分類。共有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,這樣會只選擇大於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 =<值>。前者是用於選擇分數沒有超過選定的計分項目所指定的值的實體,後者是選擇沒有小於選定的計分項目分數所指定的值的實體。
      例子:
      • score_name——選定叫name 的計分項目分數沒有超過所指定的值的實體。
      • score_name_min——選定叫name的計分項目分數沒有小於所指定的值的實體。
      標籤
      實體的計分板標籤可以通過/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的默認排序方式。
      經驗等級
      經驗等級分為3種參數,分別是l、lm和level。
      l
      l參數是選擇經驗值等級低於所給的等級的目標(僅手機版)
      格式
      [l =<數值> ,...... ]
      lm
      lm參數是選擇經驗值等級高於所給的等級的目標(僅手機版)
      格式
      [lm =<等級> ,......]
      level
      level參數是選擇經驗值等級在某個值或某個範圍內的目標(僅Java版),在1.13以前用法和手機版一樣。
        
      格式
      [level =<值> ,...... ]
      [level =<最小等級>..<最大等級> ,...... ]
      遊戲模式
      遊戲模式分為兩種不同版本的參數,分別是m(僅基岩版)和gamemode(僅Java版)
      格式
      m(僅基岩版)
      [m =M ,...... ]——選擇處於指定模式的玩家。
      [m =!M ,...... ]——選擇不處於指定模式的玩家。
      gamemode(僅Java版)
      [gamemode =M ,...... ]——選擇處於指定模式的玩家。
      [gamemode =!M ,...... ]——選擇不處指定模式的玩家。
      變數M可以是
      • 0(僅基岩版)、s(僅基岩版)、survival:生存模式。
      • 1(僅基岩版)、c(僅基岩版)、creative:創造模式。
      • 2(僅基岩版)、a(僅基岩版)、adventure:冒險模式。
      • spectator:旁觀者模式(僅Java版)
      這將自動過濾非玩家目標。
      在Java版從1.13,遊戲模式只支持全稱。在1.13之前,用法與基岩版相同。其中,在1.9之前的版本,遊戲模式只允許使用數字,且不能反選。

      相關詞條

      熱門詞條

      聯絡我們