複製鏈接
請複製以下鏈接發送給好友

execute

(遊戲Minecraft裏的一種指令)

鎖定
/execute是《minecraft》遊戲在1.8版本加入的新指令,作用就是讓一個或多項實體執行命令。在Java版,基岩版1.19.10實驗性玩法以及更高版本中,/execute是各不同功能的子命令的集合,用於改變命令執行上下文(修飾子命令),執行邏輯判斷(條件子命令)和管理並存儲命令返回值(存儲子命令)[僅JE]並在此基礎上執行任意目標命令。 [2] 
指令單詞
execute
權限限制
操作員
作    用
讓一個(或多項)實體執行命令
格式1
/execute
格式2
見“格式”目錄
需要的權限等級
JE:2 BE:1

execute使用方法

execute聊天欄

玩家可以在聊天欄輸入/execute來執行指令,但只能是一次性的。

execute命令方塊

玩家可以在命令方塊輸入/execute執行指令。

execute格式

/execute指令以1.19.10實驗性玩法為分界點分為新、舊兩種語法,1.8-1.19.10為舊/execute,1.19.10(實驗性玩法)-至今為新/execute。相比之下,舊/execute比新/execute更簡單,而新/execute的功能比舊/execute的功能更強大。

execute舊/execute

/execute有兩種格式,有不同的作用。(注:“[]”可以省略,“<>”不可以省略)
第一種:
/execute <實體> <x、y、z或寫~~~> <執行指令>
第二種:
/execute <實體> <x、y、z或寫~~~> detect <x、y、z或寫~~~> <方塊id> <數據值|狀態值> <執行指令> [1] 

execute新/execute

/execute <子命令>
基岩版的/execute子命令分為四類:
修飾子命令:修改命令變量並改變命令執行時的狀態,從而以特定的執行位置、執行基準點、執行者、執行朝向、執行維度執行後續子命令。
條件子命令:檢測特定條件是否成立並輸出結果,或限制子命令執行的條件。
存儲子命令[僅JE]:將命令返回值存儲至方塊實體、實體或存儲容器的NBT數據中,記分板的記分項中,或Boss欄的當前值或最大值中。
run子命令:執行目標命令。
子命令按從左到右的順序執行。

execute返回值

若有語法錯誤或指定的命名空間ID不存在,命令就中途終止並提示錯誤,此時無返回值。
在Java版中,若命令未中途終止,命令執行後,會返回其success(成功次數)和result(結果)兩個返回值
其值均來自結尾的條件子命令或run子命令。若被執行多次,返回值為最後一次執行的;
其值均為整數,result遇小數時向下取整;
success的值總為0或1。
無命令執行成功時兩值均為0;
均可由存儲子命令存儲。
/execute命令本身也有成功次數(無論是否中途終止),通常為0或1,但若被分開執行多次(如/execute as @a -> execute)則可大於1。使用命令方塊執行命令時,此值會被返回到該命令方塊上,可用條件制約的命令方塊檢查是否成功,或用紅石比較器讀取成功次數。

execute修飾子命令

1.align <軸> <子命令>
將執行位置轉化為方塊座標(向下取整)。
<軸> 取整的座標軸,可以填x、y、z、xy、yz、xz、xyz。可以顛倒順序,但不能重複聲明。
2.anchored <eyes|feet> <子命令>
將局部座標的執行基準點設為眼睛(eyes)或腳(feet),並改變facing子命令所指向的位置,基準點默認為腳。
3.as <實體> <子命令>
將執行者改為目標實體,並改變後面的子命令中@s的含義。
4.at <實體> <子命令>
將命令的執行位置、朝向和維度更改為目標實體的。(影響相對座標和局部座標的定位)
注:at... ⇔ in... + positioned... + facing...
5.facing <x、y、z或寫~~~> <子命令>
將命令的執行朝向設置為執行基準點到指定座標的射線方向。
facing entity <實體> <eyes|feet> <子命令>
將命令的執行朝向設置為執行基準點到指定實體的指定基準點的射線方向。
6.in <緯度> <子命令>
更新執行維度。並依據原維度與現維度間關係,按比例縮放相對座標和局部座標(不包括Y軸)。
<緯度>可填寫overworld(主世界),nether(下界)或the_end(末地)。
在下界中行走1格,相當於在主世界(或末地)中行走8格。用座標表示為:主世界座標(x,y,z),對應的下界座標(x÷8,y,z÷8)。若不想使用此規則可以將in子命令寫在前面,positioned子命令放在後面。
in子命令後聲明的執行座標是位於指定緯度的座標,如:(位於主世界執行)/execute positioned x y z in nether positioned ~Δx ~Δy ~Δz ... 該指令的執行緯度為下界,執行座標為(x÷8+Δx,y+Δy,z÷8+Δz)。
7.on <關係> <子命令>[僅JE]
將執行者設置為與當前執行者有指定類型的關係的實體。
attacker:最近5秒內對當前執行者造成傷害的最後實體。
controller:控制當前執行者的實體。
leasher:用拴繩牽引當前執行者的實體。
origin:當前執行者的來源。
若當前執行者為彈射物,則為其發射者。
若當前執行者為物品,則為其擲出者。
若當前執行者為區域效果雲,則為其來源者。
若當前執行者為被激活的TNT,則為其點燃者。
若當前執行者為喚魔者尖牙或惱鬼,則為其召喚者。
owner:當前執行者為可馴服生物時,此實體的主人。
passengers:直接騎乘於當前執行者的實體。
target:當前執行者的攻擊目標。若當前執行者為交互實體,則為最後與其交互的玩家。
vehicle:正在被當前執行者騎乘的實體。
8.positioned <x、y、z或寫~~~> <子命令>
將執行位置設置為指定座標。
positioned as <實體> <子命令>
將執行位置設置為指定實體位置。
9.rotated <繞Y軸旋轉角度> <繞X軸旋轉角度> <子命令>
將命令的執行朝向設為特定方向
旋轉角度必須為兩個雙精度浮點數組成的朝向
繞Y軸旋轉時,-180.0表示北,-90.0表示東,0.0表示南,90.0表示西。
繞X軸旋轉時,豎直上方為-90.0,豎直下方90.0。
旋轉角度前加波浪號“~”將相對於執行者進行旋轉。
10.summon <實體> <子命令>[僅JE]
立即生成一個實體,並將執行者設置為此實體。

execute條件子命令

if 如果測試通過,那麼繼續執行子命令(當後面沒有其他子命令時,返回“測試通過。”);如果測試不通過,則停止執行子命令並返回“Execute subcommand if ... test failed.”
unless 如果測試不通過,那麼繼續執行子命令(當後面沒有其他子命令時,返回“測試通過。”);如果測試通過,那麼停止執行子命令並返回“Execute subcommand unless ... test failed.”
1.if/unless biome <整數座標x、y、z或寫~~~> <生物羣系> [子命令][僅JE]
檢測給定位置上的生物羣系是否為特定生物羣系。
若該子命令位於末尾且執行成功,success和result均返回1。
2.if/unless block <整數座標x、y、z或寫~~~> <方塊id> [數據值|狀態值](或[方塊狀態],僅1.19.70及更高的版本) [子命令]
檢測給定位置上的方塊是否是特定的方塊或方塊狀態。
若該子命令位於末尾且執行成功,success和result均返回1。
3.if/unless blocks <起點方塊座標x、y、z或寫~~~> <終點方塊座標x、y、z或寫~~~> <對照區域方塊座標x、y、z或寫~~~> <檢測模式> [子命令]
檢測給定區域內的方塊是否匹配另一個同等大小區域內的方塊。
其中的座標都必須是整數,對照區域方塊座標為對照區域的西北下角方塊座標,即長方體區域座標最小處。檢測模式分為all和masked,all用於檢測全部方塊,masked用於檢測除空氣以外的方塊。
若位於末尾且執行成功,success返回1。result返回:匹配上的方塊數(if)或1(unless)。
4.if/unless data block <整數座標x、y、z或寫~~~> <NBT路徑> [子命令][僅JE]
if/unless data entity <實體> <NBT路徑> [子命令]
if/unless data storage <存儲容器> <NBT路徑> [子命令]
檢測方塊、實體或存儲容器是否擁有給定的NBT標籤。
若位於末尾且執行成功,success返回1。result返回:匹配上的NBT標籤數(if)或1(unless)。
5.if/unless dimension <緯度> [子命令][僅JE]
檢測命令執行時所處的維度是否為特定維度。
若位於末尾且執行成功,success返回1。result返回:匹配上的維度數(if)或1(unless)。
6.if/unless entity <實體> [子命令]
檢測一個或多個特定實體是否存在。
若位於末尾且執行成功,success返回1。result返回:匹配上的實體數(if)或1(unless)。
7.if/unless function <函數> <子命令>[僅JE]
用於執行一個函數或函數標籤,並檢查其返回值是否滿足條件。若指定的是函數標籤,無論標籤內靠前的函數的結果如何,所有函數都會被執行。
8.if/unless loaded <整數座標x、y、z或寫~~~> [子命令][僅JE]
檢測給定位置是否已被加載
若該子命令位於末尾且執行成功,success和result均返回1。
9.if/unless predicate <謂詞> [子命令][僅JE]
檢測謂詞計算結果是否為正。
若該子命令位於末尾且執行成功,success和result均返回1。
10.if/unless score <實體> <計分項> <指定運算符> <實體> <計分項> [子命令]
檢測指定目標的記分板中的記分項的分數是否與另一個(或同一個)目標的記分板的記分項的分數是否符合指定的關係。
<指定運算符>應填寫“=”(等於)/“<”(小於)/“<=”(小於等於)/“>”(大於)/“>=”(大於等於)
if/unless score <實體> <計分板> matches <範圍> [子命令]
檢測指定目標的記分板中的記分項的分數是否在給定的範圍之內。
其中範圍必須是整數。可以填寫0(精確匹配0)、..0(匹配小於等於0的數)、0..(匹配大於等於0的數)、0..1(匹配0到1之間的數),其中的數字可任意修改。
若該子命令位於末尾且執行成功,success和result均返回1。

execute存儲子命令[僅JE]

存儲子命令可以將最後一個命令的result或success值存儲到指定位置。
它與其他子命令一起處理,先行記錄存儲位置,不影響其他子命令。當最後一個子命令執行後,將其返回值存入指定位置,可以是記分板、NBT數據或Boss欄。
1.store result/success block <整數座標x、y、z或寫~~~> <NBT路徑> <數據類型> <存儲倍率> <子命令>
將result或success存入指定方塊實體的指定NBT標籤內。
座標是返回值需要存入的目標方塊實體的座標。
NBT路徑為返回值需要存入的NBT路徑。
數據類型是返回值及目標NBT的數據類型,只能填int(整型)、float(單精度浮點型)、short(短整型)、long(長整型)、double(雙精度浮點型)、byte(字節型)。
存儲倍率為返回值存儲的倍率,必須是雙精度浮點數
參數不正確時,視為語法錯誤。
路徑不存在時不進行操作。
執行成功時,將返回值向下取整並乘以<存儲倍率>後存儲在<座標>處方塊實體的<NBT路徑>NBT標籤處,並存儲為指定的NBT格式。
2.store result/success bossbar <Boss欄ID> value/max <子命令>
將result或success存為Boss欄的當前值或最大值。
返回值需要存入的目標Boss欄的命名空間ID。
返回值需要存入的是Boss欄的當前值(value)或是最大值(max)。
執行成功時,將返回值向下取整,存為命名空間ID為<Boss欄ID>的Boss欄的當前值或最大值。
3.store result/success entity <實體> <NBT路徑> <數據類型> <存儲倍率> <子命令>
將result或success存入指定實體的指定NBT標籤內。與/data一樣,此命令不能修改玩家的NBT。
實體是返回值需要存入的目標實體。
NBT路徑為返回值需要存入的NBT路徑。
數據類型是返回值及目標NBT的數據類型,只能填int(整型)、float(單精度浮點型)、short(短整型)、long(長整型)、double(雙精度浮點型)、byte(字節型)。
存儲倍率為返回值存儲的倍率,必須是雙精度浮點數
執行成功時,將返回值向下取整並乘以<存儲倍率>後存儲在<實體>實體的<NBT路徑>NBT標籤處,並存儲為指定的NBT格式。
4.store result/success score <目標> <計分項> <子命令>
將result或success存入指定分數持有者的指定記分項上。
目標為返回值需要存入的目標分數持有者。
返回值需要存入的目標記分項名稱。
執行成功時,將返回值向下取整並乘以<存儲倍率>後存儲在<目標>持有的<計分項>的分數中。
4.store result/success storage <目標存儲容器> <NBT路徑> <數據類型> <存儲倍率> <子命令>
目標存儲容器是返回值需要存入的目標存儲容器的命名空間ID。
NBT路徑為返回值需要存入的NBT路徑。
數據類型是返回值及目標NBT的數據類型,只能填int(整型)、float(單精度浮點型)、short(短整型)、long(長整型)、double(雙精度浮點型)、byte(字節型)。
存儲倍率為返回值存儲的倍率,必須是雙精度浮點數
執行成功時,將返回值向下取整並乘以<存儲倍率>後存儲在<目標存儲容器>存儲容器的<NBT路徑>NBT標籤處,並存儲為指定的NBT格式。

executerun子命令

run <指令>
用於執行指令。(指令執行的結果受run子命令以前的子命令影響)

execute舊execute例子

execute例一

比如你需要克隆某個建築到指定地方去,但是又懶得打指令,那就可以輸入以下指令:
指令(第一個命令塊):/execute @e [type =你要執行命令的實體] ~~~ clone <建築的一個對角座標x><建築的一個對角座標y><建築的一個對角座標z><建築的另一個對角座標x><建築的另一個對角座標y><建築的另一個對角座標z> ~~~
要求(第一個命令塊):重複 始終活動 無條件的 朝向第二個命令塊
指令(第二個命令塊):/kill @e [type =第一個命令塊執行命令的實體]
要求(第二個命令塊):鏈 始終活動有條件的

execute例二

比如你開了個服務器,想做個在腳底下墊某個方塊即可傳送到主城的機制,那就需要以下指令:
指令:/execute @a ~~~ detect ~~-1 ~ [你要的墊腳傳送方塊id] [數據值] tp @p [目的地x座標] [目的地y座標] [目的地z座標]
要求:重複 始終活動 無條件的 在常加載區塊裏

execute新execute例子

execute例一

在主世界使用/locate指令尋找距離末地0,0,0最近的末地城。
指令:/execute positioned 0 0 0 in the_end run locate structure end_city
返回結果示例:
最近的 末地城 位於方塊 -920,(y?),-872(距離1267個方塊)

execute例二

在主世界使用/locate指令尋找距離下界1600,100,608最近的堡壘遺蹟。
指令:/execute in nether positioned 1600 100 608 run locate structure bastion_remnant
返回結果示例:最近的 堡壘遺蹟 位於方塊 1752,(y?),760(距離 214 個方塊)
錯誤指令示例1:/execute positioned 1600 100 608 in nether run locate structure bastion_remnant
錯誤返回結果示例:最近的 堡壘遺蹟 位於方塊 -408,(y?),-136(距離 643 個方塊)
錯誤原因:這個/execute指令先將執行座標改為1600 100 608,然後再改變緯度為下界。執行座標按1:8的比例縮放為200 100 76(1600÷8=200,608÷8=76),最終返回了距離下界200 100 76最近堡壘遺蹟。
錯誤指令示例2:(位於主世界1600 100 608執行)/execute in nether at @s run locate bastion_remnant
錯誤返回結果示例:將'locate' 執行為 Steve 失敗(在合理距離內未發現有效結構)
錯誤原因:at子命令包括了執行者的座標,朝向與緯度。該指令將執行緯度改為下界後,at子命令將執行緯度改為主世界,所以無法在主世界查找堡壘遺蹟。

execute例三

將自己的座標改為方塊座標(整數座標)。
指令:/execute positioned ~~~ align xyz run tp ~~~

execute例四

讓所有的殭屍自殺。
指令:/execute as @e[type=zombie] run kill @s
效果:所有的殭屍自殺。
錯誤指令示例:/execute at @e[type=zombie] run kill @s
效果:殺死自己。
錯誤原因:at聲明指令的執行位置,不聲明指令的執行者。該指令的執行者仍是玩家本身。

execute舊/execute轉新/execute

execute例一

將所有名稱為a的盔甲架向z軸正方向移動一格
舊:/execute @e[type=armor_stand,name=a] ~~~ tp @s ~~~1
新:/execute as @e[type=armor_stand,name=a] at @s run tp @s ~~~1

execute例二

當a在b計分板的值不為1時,將所有名稱為a的盔甲架隱身60秒,不顯示粒子效果。
舊:/scoreboard players test a b 1 1(重複,始終活動)
紅石比較器,紅石火把連接
/effect @e[type=armor_stand,name=a] invisibility 60 0 true(脈衝,需要紅石)
新:/execute as @e[type=armor_stand,name=a] unless score a b matches 1 run effect @s invisibility 60 0 true(重複,始終活動)
(當後續的子命令不涉及到座標時,at子命令可省略)

execute歷史

execute命令
Java版
1.8
14w07a
加入了/execute命令。
14w08a
在命令方塊中運行的run子命令現在會把成功值傳回命令方塊了。
1.11
16w32a
加入了方塊狀態支持。
1.13
17w45a
語法被拆分。
17w45b
重製了/execute store (result|success)。
18w02a
加入了新的子命令以允許通過命令進行更多的控制。
18w05a
加入了/execute store (result|success) bossbar。
1.14
18w43a
加入了/execute (if|unless) data。
1.15
19w38a
加入了/execute (if|unless) predicate 和 /execute store (result|success) storage。
1.19.3
22w46a
加入了/execute (if|unless) biome。
1.19.4
23w03a
加入了/execute on、/execute (if|unless) dimension 和 /execute (if|unless) loaded。
23w04a
為/execute on加入了origin關係。
23w06a
加入了/execute summon。
pre1
加入了/execute positioned over。
1.20.2
23w31a
加入了/execute (if|unless) function。
pre1
暫時移除了/execute (if|unless) function。
1.20.3
23w41a
重新加入(了/execute (if|unless) function。
攜帶版Alpha
0.16.0
build 1
加入了/execute。
此命令的功能相當於其在Java版1.10的功能,但在/execute中實體目標是可選的。
基岩版
1.19.10
1.19.10.20
更新了語法以近似匹配Java版,屬於實驗性玩法。
1.19.40
1.19.40.20
加入了/execute rotated 和 /execute rotated as子命令,屬於實驗性玩法。
1.19.40.21
加入了/execute facing、/execute facing entity 和 /execute align子命令,屬於實驗性玩法。
1.19.40.23
加入了/execute in和/execute anchored <eyes|feet>子命令,屬於實驗性玩法。
1.19.50
1.19.50.23
1.19.10.20起的所有實驗性玩法均不再屬於實驗性玩法。
1.19.70
1.19.70.21
移除了data: int參數。
參考資料