<本站文本内容除另有声明外,转载时均必须注明出处。(详情…本站文本内容除另有声明外,转载时均必须注明出处。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。>

指令/execute

出自Minecraft Wiki
前往: 導覽搜尋
execute
限制條件

管理員

加入版本

1.814w07a
PE Alpha 0.16.0攜帶版Alpha 0.16.0 build 1

Clock.png
此條目的部分內容由於太久沒更新而已過期。
你可以幫助我們來更新此條目。

/execute是一個在多種場景中執行其他指令的通用指令。

Java版[編輯 | 編輯原始碼]

在Java版,execute後由多個子指令連接而成。子指令分為修飾子指令、條件子指令、存儲子指令和run子指令。

  • 修飾子指令改變指令執行的方式,以特定的執行者、執行位置、執行維度和執行朝向執行後續子指令。
  • 條件子指令用於測試特定條件是否成立,並輸出結果或限制指令執行的條件。
  • 存儲子指令可以將指令的結果存儲至記分板或者實體或方塊實體的數據中,也可以更改boss欄的最大值或當前值。

你可以將所有你所需要的子指令串連在一起。除run子指令外的子指令可以隨意排列或重複使用多次,run子指令只能使用一次且只能位於指令最後位置。指令必須以條件子指令或run子指令結尾,否則執行後沒有任何效果。遊戲會按順序從前向後依次處理,比如,以下指令是不同的:

  • 所有的實體向各自所朝的方向移動一格:execute as @e at @s run tp ^ ^ ^1
  • 所有的實體移動到執行者的前方一格:execute at @s as @e run tp ^ ^ ^1

遊戲會在處理run後的指令和存儲子指令之前,先處理其他子指令,故run後的指令和存儲子指令無法影響其他子指令。run後的指令和存儲子指令也無法相互影響。在某些情況下,指令會中途終止執行。

如果有語法錯誤或指定的命名空間ID不存在,指令就不會執行並提示錯誤。當結尾的條件子指令或run子指令以及所有的儲存子指令都執行成功時,execute指令執行成功。

指令執行後如果沒有中途停止,就會返回成功次數和一個特定的數值(詳見儲存子指令),這兩個數值都來自於結尾的條件子指令或run子指令以及儲存子指令。注意指令的返回值必定為整數,若為小數會被向下取整。成功次數通常會是0或1, 但如果此指令分開被執行多次(比如通過at @a)那麼其成功次數可以大於1。當指令沒有執行成功時,兩個返回值均為0。當結尾的條件子指令或run子指令被執行了多次時,僅以最後一次執行為準。它們可以由儲存子指令記錄。使用指令方塊執行指令時將把它們返回到該指令方塊上,這可以用條件制約的指令方塊檢測是否成功,也可以使用紅石比較器讀取成功次數。

/execute指令有12個子指令,每一個都有其自身的語法。

所有子指令構成的語法樹:
/execute . . .
  • align <坐标轴> -> execute
  • anchored (eyes|feet) -> execute
  • as <实体> -> execute
  • at <实体> -> execute
  • facing (<坐标>|entity <实体> (eyes|feet)) -> execute
  • in <维度> -> execute
  • positioned (<坐标>|as <实体>) -> execute
  • rotated (<旋转角度>|as <实体>) -> execute
  • store (result|success) . . .
    • … block <坐标> <路径> (byte|short|int|long|float|double) <倍率> -> execute
    • … bossbar <id> (max|value) -> execute
    • … entity <实体> <路径> (byte|short|int|long|float|double) <倍率> -> execute
    • … score <实体> <目标记分项> -> execute
    • … storage <目标> <路径> (byte|short|int|long|float|double) <倍率> -> execute
  • … (if|unless) . . .
    • … block <坐标> <方块> -> [execute]
    • … blocks <开始坐标> <结束坐标> <对照区域坐标> (all|masked) -> [execute]
    • … data . . .
      • … block <坐标> <路径> -> [execute]
      • … entity <实体> <路径> -> [execute]
      • … storage <> <路径> -> [execute]
    • … entity <实体> -> [execute]
    • … predicate <谓词> -> [execute]
    • … score <实体> <目标记分项> . . .
      • … (<|<=|=|>|>=) <对照实体> <对照实体记分板项> -> [execute]
      • … matches <范围> -> [execute]
  • run <命令>
…此處-> execute代表的是另一個要執行的子指令的開始。

以下是對所有子指令的詳細介紹。

修飾子指令[編輯 | 編輯原始碼]

align[編輯 | 編輯原始碼]

把執行位置轉換為方塊坐標(向下取整,只針對指定坐標軸的坐標)。

語法
... align <坐标轴> ...
參數
坐標軸
xyz中的1至3個的任意組合。
效果
參數不是字母xyz時視為語法錯誤。
示例
  • x=-1.8,y=2.3,z=5.9時,使用x將變為x=-2,y=2.3,z=5.9
    • 比如,execute positioned -1.8 2.3 5.9 align x run tp ~ ~ ~將把自己傳送到(-2, 2.3, 5.9)
  • x=2.4,y=-1.1,z=3.8時,使用yxz將變為x=2,y=-2,z=3
    • 比如,execute positioned 2.4 -1.1 3.8 align yxz run tp ~ ~ ~將把自己傳送到(2, -2, 3)
  • 將自己的y坐標微調至向下取整:execute align y run tp ~ ~ ~

anchored[編輯 | 編輯原始碼]

在使用局部坐標時或者使用朝向指令時更改此指令的基準點為實體腳或眼睛的位置。預設為腳的位置。

語法
... anchored (feet|eyes) ...
效果
參數不正確時,視為語法錯誤。

as[編輯 | 編輯原始碼]

改變指令的執行者,但不改變執行位置或執行朝向。

語法
... as <实体> ...
參數
實體
指定後續內容的執行者。可以是玩家名、UUID或目標選擇器
效果
參數不正確時,視為語法錯誤。當目標實體不存在時指令終止執行。當選擇到多個實體時,以各個實體為執行者分別執行一次後續子指令。
示例
  • 獲取所有的數據:execute as @e[type=sheep] run data get entity @s

at[編輯 | 編輯原始碼]

改變指令的執行位置、執行朝向和執行維度為指定<实体>的坐標、朝向和維度,不改變指令執行者。它通常與as子指令連用,可以以指定實體的身份執行指令。
語法
... at <实体> ...
參數
實體
指定目標實體,可以是玩家名、UUID或目標選擇器。
效果
參數不正確時,視為語法錯誤。當目標實體不存在時指令終止執行。如果選擇多個實體,則以多個實體的執行位置、執行朝向和執行維度,分別執行一次後續子指令。
示例
  • 所有的羊向上移動1格:execute as @e[type=sheep] at @s run tp ~ ~1 ~
    • 注意從Java版1.13開始,/tp合併至/teleport,不再自動以目標實體坐標為基準坐標,因此tp @e[type=sheep] ~ ~1 ~指令會使所有的羊移動至執行者上方的一格,而非所有的羊各自向上移動一格。
  • 注意execute at @e[type=sheep] run kill @s會執行自殺(清除執行者)而對羊沒有影響,因為at子指令沒有修改執行者。

facing[編輯 | 編輯原始碼]

將指令執行的朝向改為面向指定的坐標,還可以面向某個實體的眼睛或腳部,不改變指令執行者和執行位置。

語法
... facing <坐标> ...
... facing entity <实体> (eyes|feet) ...
參數
坐標
需要朝向的坐標,格式為<x> <y> <z>,可以使用波浪號插入符。執行朝向將會是朝向該坐標。
實體
需要朝向的實體,可以是玩家名、UUID或目標選擇器。執行朝向將會是朝向該實體。
eyes|feet(僅在entity模式可用)
確定朝向實體眼睛還是腳的位置。
效果
參數不正確時,視為語法錯誤。當目標實體不存在時指令終止執行。當選擇到多個實體時,則以多個執行朝向分別執行一次後續子指令。
示例
所有的實體都朝着(0, 64, 0)的方向移動一格(不改變自身的朝向):execute as @e at @s facing 0 64 0 run tp ^ ^ ^1
所有非玩家實體朝着各自距離最近的玩家的方向移動一格(不改變自身的朝向):execute as @e at @s facing entity @p feet run tp ^ ^ ^1

in[編輯 | 編輯原始碼]

將指令執行維度設為特定維度。指令將在指定的維度中執行。

語法
... in <维度> ...
參數
維度
執行指令所處的維度的命名空間ID。只能是minecraft:overworldminecraft:the_endminecraft:the_nether,或Mod中的維度(若有)。命名空間若為minecraft可省。
效果
參數不正確時,視為語法錯誤。當指定維度不存在時指令不執行並提示錯誤。
示例
  • 尋找終界中的終界城(執行者在主世界或地獄時也能夠找到終界中的終界城的位置):execute in the_end run locate EndCity
  • 將玩家傳送至地獄(坐標不變):execute in the_nether run teleport ~ ~ ~

positioned[編輯 | 編輯原始碼]

在指定的坐標執行指令。改變執行位置,但不改變執行者、執行朝向。

語法
... positioned <坐标> ...
... positioned as <实体> ...
參數
坐標
指定指令執行的坐標,格式為<x> <y> <z>,可以使用相對坐標局部坐標
實體(僅在as模式可用)
指定指令執行的位置為<实体>所處的坐標,可以是玩家名、UUID或目標選擇器
效果
參數不正確時,視為語法錯誤。當目標實體不存在時指令終止執行。如果選擇多個實體,則以各個執行位置,分別執行一次後續子指令。
示例
  • 假設執行者處於主世界時,尋找(0, 64, 0)附近的村莊:/execute positioned 0 64 0 run locate Village
  • 假設執行者處於其他維度時,尋找主世界(0, 64, 0)附近的村莊:/execute in overworld positioned 0 64 0 run locate Village
  • 讓所有的羊向着玩家(執行者)的朝向移動一格(比如,玩家看着東邊時,羊向東移動一格;玩家看着上方時,羊向上移動一格):/execute as @e[type=sheep] positioned as @s run tp @s ^ ^ ^1

rotated[編輯 | 編輯原始碼]

將指令的執行朝向設為特定方向,或者設為指定實體的朝向。改變執行朝向,不改變執行者和執行位置。

語法
... rotated <y-旋转角度> <x-旋转角度> ...
... rotated as <实体> ...
參數
y-旋轉角度
指定水平旋轉角度(正北方為-180.0,正東為-90.0,正南為0.0,正西為90.0,正北以西為179.9,之後回到-180.0)。可使用波浪號指定基於當前旋轉角度的相對偏移。
x-旋轉角度
指定垂直旋轉角度(豎直上方為-90.0,至豎直下方90.0)。可使用波浪號指定基於當前旋轉角度的相對偏移。
實體(僅在as模式可用)
採用指定實體的朝向。
效果
參數不正確時,視為語法錯誤。當目標實體不存在時指令終止執行。如果選擇多個實體,則以各個執行朝向,分別執行一次後續子指令。
示例
  • 讓所有的羊向着各自距離最近的玩家朝着的方向移動1格:execute as @e[type=sheep] at @spositioned as @s rotated as @p run tp @s ^ ^ ^1

條件子指令[編輯 | 編輯原始碼]

當位於execute指令中間時,條件子指令讓指令在所有條件測試通過後才會繼續運行。條件子指令作為/execute指令的結尾時,檢測測試是否通過並會返回結果。

語法及參數
... (if|unless) block <坐标> <方块>
  • 探測位於x y z的方塊是否是指定的方塊或屬於指定的方塊的標籤。
  • 方塊
指定一個方塊ID或方塊標籤,可以附加方塊狀態和數據標籤,參見指令
... (if|unless) blocks <开始坐标> <结束坐标> <对照区域坐标> (all|masked) ...
  • 探測<开始坐标><结束坐标>之間的區域與對應<對照區域坐標>的區域內的方塊相同
  • 開始坐標結束坐標對照區域坐標
定義源區域兩個對角方塊的坐標和對照區域的西北下角方塊的坐標。格式為<x> <y> <z>,可以使用相對坐標局部坐標。參見clone
  • all|masked
選擇all將探測區域內的全部方塊,選擇masked將忽略源區域內空氣方塊所在的位置。
... (if|unless) data block <坐标> <NBT>...
  • 探測指定的方塊是否擁有特定的NBT標籤或存在特定的NBT路徑。
... (if|unless) data entity <实体> <NBT>...
  • 探測指定的實體是否擁有特定的NBT標籤或存在特定的NBT路徑。
  • NBT
指定NBT標籤或者NBT路徑。例如parent.targetDataTag或者{id:"Custom"}
... (if|unless) entity <实体> ...
  • 探測<实体>是否存在(1個或以上)。可能包括死亡的玩家。
... (if|unless) predicate <谓词> ...
  • 探測謂詞<谓词>的結果是否為真。
  • 關於謂詞的更多內容,請見謂詞
... (if|unless) score <目标> <目标记分项> <运算符> <选择器> <选择器记分板项> ...
  • 探測<目标><目标记分项>的分數與<选择器><选择器记分板项>的分數是否符合運算符的關係。
  • 運算符
只能是下列等式或不等式運算符之一:<<==>=>
... (if|unless) score <目标> <目标记分项> matches <范围> ...
  • 探測<目标><目标记分项>的分數是否在指定<范围>
  • 範圍
檢查目標實體的目標記分板項是否為指定範圍,如3..53..5,參見指令#通過分數選擇目標
通用參數
坐標
需要探測的方塊的坐標。格式為x y z,可以使用相對坐標局部坐標
目標
指定實體,可以是玩家名、UUID、目標選擇器或記分板自定義的目標。
目標記分項
記分項
效果
當處於execute指令結尾時:對於if,如果條件成立則指令成功,否則失敗。對於unless,如果條件不成立則指令成功,否則失敗。
當位於execute指令中間時:對於if,如果條件成立繼續執行後續子指令,否則終止執行。對於unless,如果條件不成立則繼續執行後續子指令,否則終止執行。
示例
  • 對於每個玩家,如果他下方1個的方塊是羊毛,則擊殺該玩家(簡而言之,就是擊殺所有踩在羊毛上的玩家):/execute as @a at @s if block ~ ~-1 ~ #wool run kill @s
  • execute if entity @e[type=sheep] run function my_function相當於Java版1.13之前的/function my_function if @e[type=sheep]
  • 檢測自己的a分數與b分數是否相等:/execute if score @s a = @s b
  • 擊殺所有在3格範圍內沒有山貓的苦力怕:/execute as @e[type=creeper] at @s unless entity @e[type=ocelot,distance=..3] run kill @s

存儲子指令[編輯 | 編輯原始碼]

存儲子指令可以讓指令在執行之後將指令返回的結果或成功次數儲存於記分板、實體數據、方塊數據或者boss欄中,有store resultstore success兩種模式:

  • store result將會儲存指令返回的結果。取代了過去的這些指令統計:
    • AffectedBlocks — 返回受指令影響的方塊的數量。
    • AffectedEntities — 返回受指令影響的實體的數量。
    • AffectedItems —返回受指令影響的物品的數量。
    • QueryResult — 返回指令的查詢結果。
  • store success將會儲存這個指令執行的成功次數。它取代了過去的這些指令統計:
    • SuccessCount — 返回一個指令成功執行的次數。

注意指令的返回值必定為整數,若為小數會被向下取整。當指令沒有執行成功(success0)時,result也將為0

語法
..store (result|success) score <实体> <目标记分项> ...
  • 返回值或成功次數會被儲存在<实体><目标记分项>分數里。
..store (result|success) block <坐标> <路径> (byte|double|float|int|long|short) <倍率> ...
  • 將返回值或成功次數乘以<倍率>後儲存在<坐标>處方塊實體的NBT標籤的<路径>處,並儲存為指定的NBT格式(只包括byte、double、float、int、long和short)。若返回值為小數,則先乘以<倍率>再取整。注意不能通過此指令為列表標籤加入新元素,只能取代現有元素。
..store (result|success) entity <实体> <路径> (byte|double|float|int|long|short) <倍率> ...
  • 將返回值或成功次數乘以<倍率>後儲存在<实体>的NBT標籤的<路径>上,並儲存為指定的NBT格式(只包括byte、double、float、int、long和short)。若返回值為小數,則先乘以<倍率>再取整。注意不能通過此指令為列表標籤加入新元素,只能取代現有元素。像/data merge/modify/remove entity一樣,不能修改玩家的數據。
..store (result|success) bossbar <id> (value|max) ...
  • 將id為<id>的boss欄的當前值或最大值((value|max))修改為指令的返回值或成功次數。
.. store (result|success) storage <目标> <路径> (byte|short|int|long|float|double) <倍率> ...
  • 將返回值或者成功次數乘以倍率後儲存到存儲<目标>的NBT路徑<路径>里。
  • 存儲不存在則會創建該存儲。
  • <目标>—目標指令存儲,以命名空間ID的形式。
  • <路径>—要儲存進的數據標籤名。見上方條件子指令(if|unless) data以獲取更多信息。
參數
實體
可以是玩家名、UUID或目標選擇器
坐標
坐標,格式為x y z,可以使用相對坐標局部坐標
目標記分項
記分項
路徑
索引NBT格式標籤的路徑。具體語法參見指令/術語列表#指令格式
倍率
指定返回值乘以的數字,必須為雙精確浮點數
id
boss欄的id。參見/bossbar
效果
參數錯誤時視為語法錯誤。
score模式,當目標記分項不存在時指令失敗。
block模式,指定坐標沒有方塊實體時指令失敗,路徑不存在時成功但不儲存。
entity模式,實體不存在時指令失敗,路徑不存在時成功但不儲存。
bossbar模式,ID不存在時指令失敗。
示例
  • 給所有拿着沒有海洋的祝福附魔的釣竿的玩家以海洋的祝福附魔,並且將這些玩家的記分板holding_rod的值設為1(該方法有時可用於篩選拿着釣竿的玩家):
    /execute as @a store success score @s holding_rod run enchant luck_of_the_sea
  • 將所有站在羊毛上的苦力怕變為閃電苦力怕,否則變為普通苦力怕:
    /execute as @e[type=creeper] store result entity @s powered byte 1 at @s if block ~ ~-1 ~ #wool
  • 執行指令「/say hi」,如果成功,則將所有玩家的foo分數設為1,否則設為0:
    /execute store success score @a foo run say hi
  • 將所有在5米以內有玩家的豬上,否則不上鞍:
    /execute as @e[type=pig] at @s store success entity @s Saddle byte 1 if entity @p[distance=..5]

run子指令[編輯 | 編輯原始碼]

用來執行的指令。

語法
... run <完整的命令>
參數
完整的指令
一個完整的指令,不可以以斜線開頭。
效果
執行這個指令。指定的指令執行成功時成功,失敗時失敗。

基岩版[編輯 | 編輯原始碼]

語法
execute <执行源:目标> <坐标:x y z> <命令:命令>
可以限制在指定方塊被檢測到時才執行指令:
execute <执行源:目标> <坐标:x y z> detect <探测坐标:x y z> <方块:方块> <数据:整数> <命令:命令>

以上文字的顏色是為了便於閱讀。

參數
執行源:目標
指定目標指令執行者。必須為一個玩家名或目標選擇器。若多個目標被選中,則每個目標各運行一次指定的指令。
坐標:x y z
指定指令運行的位置。xz必須在-30,000,000到30,000,000內(含)。使用波浪號指定的相對坐標的參考點為指令代行者所處位置,而非此指令的執行位置。
指令:指令
指定要運行的指令。必須為一個有效指令。
探測坐標:x y z
指定要檢測方塊的位置。x2z2必須在-30,000,000到30,000,000內(含)。可使用波浪號來指定與(x,y,z)的相對坐標。
方塊:方塊(僅在detect模式可用)
指定方塊ID,必須與(x2,y2,z2)處的方塊相同,指令才會執行。方塊必須是有效的方塊ID或方塊名(例如,minecraft:stone)。
數據:整數(僅在detect模式可用)
必須與測試方塊的方塊數據相等,指令才會執行。設為-1可匹配任意的方塊數據。
效果
若參數指定不正確,或實體無法解析為一個或多個有效實體(指定名字的玩家必須在線),或檢測到的方塊ID、數據或狀態不匹配,或指定的指令執行失敗則失敗。
若成功,指定的指令將在指定的坐標位置,使用管理員等級的權限,以目標的身份執行。
示例
  • 在每個殭屍的位置生成閃電:
    execute @e[type=zombie] ~ ~ ~ summon lightning_bolt
  • 在每個站在任意種類沙上的殭屍的位置生成閃電:
    execute @e[type=zombie] ~ ~ ~ detect ~ ~-1 ~ sand -1 summon lightning_bolt
  • 在最近的玩家處召喚10隻苦力怕(只會在已載入的世界中存在至少10個實體時生效):
    execute @e[c=10] ~ ~ ~ execute @p ~ ~ ~ summon creeper

Java版1.13之前[編輯 | 編輯原始碼]

使用此指令執行者的權限,以其他玩家或實體的身份執行一條指令。可以添加一個/testforblock格式的限制條件。

語法
execute <实体> <x> <y> <z> <命令>
可以限制在指定方塊被檢測到時才執行指令:
execute <实体> <x> <y> <z> detect <x2> <y2> <z2> <方块> <数据|状态> <命令…>

以上文字的顏色是為了便於閱讀。

參數
實體
指定目標指令執行者。必須為一個玩家名或目標選擇器。若多個目標被選中,則每個目標各運行一次指定的指令。
x y z
指定指令運行的位置。xz必須在-30,000,000到30,000,000內(含)。使用波浪號指定的相對坐標的參考點為指令代行者所處位置,而非此指令的執行位置。
指令
指定要運行的指令。必須為一個有效指令。
x2 y2 z2(僅在detect模式可用)
指定要檢測方塊的位置。x2z2必須在-30,000,000到30,000,000內(含)。可使用波浪號來指定與(x,y,z)的相對坐標
方塊(僅在detect模式可用)
指定方塊ID,必須與(x2,y2,z2)處的方塊相同,指令才會執行。方塊必須是有效的方塊ID(例如,minecraft:stone)。
數據(僅在detect模式可用)
必須與測試方塊的方塊數據相等,指令才會執行。設為-1可匹配任意的方塊數據。
狀態
必須與測試方塊的方塊狀態相等,指令才會執行。設為*可匹配任意的方塊狀態。
效果
若參數指定不正確,或實體無法解析為一個或多個有效實體(指定名字的玩家必須在線),或檢測到的方塊ID、數據或狀態不匹配,或指定的指令執行失敗則失敗。
若成功,指定的指令將在指定的坐標位置,使用管理員等級的權限,以目標的身份執行。
示例
  • 在每個殭屍的位置生成閃電:
    execute @e[type=zombie] ~ ~ ~ summon LightningBolt
  • 在每個站在任意種類沙上的殭屍的位置生成閃電:
    execute @e[type=zombie] ~ ~ ~ detect ~ ~-1 ~ minecraft:sand -1 summon lightning_bolt
  • 在最近的玩家處召喚10隻苦力怕(只會在已載入的世界中存在至少10個實體時生效):
    execute @e[c=10] ~ ~ ~ execute @p ~ ~ ~ summon creeper

歷史[編輯 | 編輯原始碼]

Java版
1.814w07a加入了/execute指令。
14w08a在指令方塊中運行的run指令現在會把成功值返回值傳回指令方塊了。
1.1116w32a加入了方塊狀態支持。
1.1317w45a語法已被拆開。
17w45b重製了/execute store指令
18w02a加入了新的子指令以允許通過指令進行更多的控制。
18w05a加入了/execute store子指令。
1.1418w43a加入了/execute (if|unless) data
1.1519w38a加入了/execute if predicate
加入了/execute store storage
攜帶版(Alpha)
0.16.0build 1加入了/execute
此指令的功能相當於其在Java版1.10的功能,但在/execute中實體目標是可選的。