第六十八章 新版execute的變化
?。ū菊鹿?jié)于2022年7月14日重寫)
在第三十三章,我們了解了Java1.13更新前的和基巖版的execute指令的使用,讓我們復(fù)習(xí)一下:
格式(基巖版、Java1.13更新前):
/execute <執(zhí)行者:目標(biāo)選擇器><基準(zhǔn)點(diǎn):坐標(biāo)><執(zhí)行的指令>
/execute <執(zhí)行者:目標(biāo)選擇器><基準(zhǔn)點(diǎn):坐標(biāo)> detect <探測的坐標(biāo)><方塊id><方塊數(shù)據(jù)值><執(zhí)行的指令>
看起來相當(dāng)簡單,就連幼兒園大班的孩子都會(huì)用。我們馬上就可以根據(jù)上面的格式,舉一個(gè)小小的例子:
/execute @e[type=zombie]~~~ detect 36 71 202 redstone_block -1 tp @s @p
這條指令的意思是:將所有僵尸作為執(zhí)行者,他們所處的位置作為執(zhí)行地點(diǎn),如果坐標(biāo)(36,71,202)處的方塊為任意數(shù)據(jù)值的紅石塊,就將每個(gè)僵尸分別傳送到距離它們最近的玩家。
但Java1.13更新后的execute呢?還有目前(2022/7/14)基巖版1.19.10版本在測試中的execute呢?這些新版本的execute有何變化?
答案是很大的變化。由于目前基巖版的execute命令還在測試中,并且功能比Java版要少且類似,我們就先不了解。
在Java1.13更新中,execute的語法被徹底重寫,最終變成了四類12條子命令:修飾子命令(8條)、條件子命令(2條)、存儲(chǔ)子命令(1條)和run子命令(運(yùn)行子命令)(1條)。
正如這四類子命令的名字,它們的功能分別是:
修飾子命令——對指令進(jìn)行修飾,也就是對執(zhí)行指令的一些基本條件進(jìn)行修改,也就是更改指令執(zhí)行者、執(zhí)行地點(diǎn)、執(zhí)行朝向等內(nèi)容。
條件子命令——就像編程中的if,如果條件成立才會(huì)執(zhí)行指令。
存儲(chǔ)子命令——還記得之前講到的/stats指令嗎?在Java1.13更新后,它的功能就被合并到了execute中,作為存儲(chǔ)子命令,而且還升級(jí)了!不光能夠?qū)⒅噶顖?zhí)行的結(jié)果存儲(chǔ)到計(jì)分板中,還能存儲(chǔ)到其他地方去!
run子命令(本書稱為運(yùn)行子命令)——也就是最終execute要運(yùn)行的指令
這四種12條子命令可以自由組合,但有些詳細(xì)的規(guī)則我們會(huì)在以后了解到。
看起來這12條子命令很多,但其實(shí)它們中的大多數(shù)我們都已經(jīng)在前面遇見過了,因?yàn)樾掳姹镜膃xecute把許多獨(dú)立的指令給合并掉了。如果你前面的章節(jié)有細(xì)心看的話,那么你應(yīng)該能夠列出execute吃掉了哪些指令:
/stats(獲取并存儲(chǔ)指令執(zhí)行結(jié)果)
/testfor、/testforblock、/testforblocks(檢測方塊、實(shí)體)
/scoreboard players test子命令(檢測分?jǐn)?shù))
你可以猜一猜上述指令被execute吃掉后變成了哪一類execute的子命令,我們下一章就會(huì)開始正式的學(xué)習(xí)過程。