第六十八章 新版execute的变化
(本章节于2022年7月14日重写)
在第三十三章,我们了解了Java1.13更新前的和基岩版的execute指令的使用,让我们复习一下:
格式(基岩版、Java1.13更新前):
/execute <执行者:目标选择器><基准点:坐标><执行的指令>
/execute <执行者:目标选择器><基准点:坐标> detect <探测的坐标><方块id><方块数据值><执行的指令>
看起来相当简单,就连幼儿园大班的孩子都会用。我们马上就可以根据上面的格式,举一个小小的例子:
/execute @e[tybr /e=zombie]~~~ detect 36 71 202 redstone_block -1 tbr / @s @br /
这条指令的意思是:将所有僵尸作为执行者,他们所处的位置作为执行地点,如果坐标(36,71,202)处的方块为任意数据值的红石块,就将每个僵尸分别传送到距离它们最近的玩家。
但Java1.13更新后的execute呢?还有目前(2022/7/14)基岩版1.19.10版本在测试中的execute呢?这些新版本的execute有何变化?
答案是很大的变化。由于目前基岩版的execute命令还在测试中,并且功能比Java版要少且类似,我们就先不了解。
在Java1.13更新中,execute的语法被彻底重写,最终变成了四类12条子命令:修饰子命令(8条)、条件子命令(2条)、存储子命令(1条)和run子命令(运行子命令)(1条)。
正如这四类子命令的名字,它们的功能分别是:
修饰子命令——对指令进行修饰,也就是对执行指令的一些基本条件进行修改,也就是更改指令执行者、执行地点、执行朝向等内容。
条件子命令——就像编程中的if,如果条件成立才会执行指令。
存储子命令——还记得之前讲到的/stats指令吗?在Java1.13更新后,它的功能就被合并到了execute中,作为存储子命令,而且还升级了!不光能够将指令执行的结果存储到计分板中,还能存储到其他地方去!
run子命令(本书称为运行子命令)——也就是最终execute要运行的指令
这四种12条子命令可以自由组合,但有些详细的规则我们会在以后了解到。
看起来这12条子命令很多,但其实它们中的大多数我们都已经在前面遇见过了,因为新版本的execute把许多独立的指令给合并掉了。如果你前面的章节有细心看的话,那么你应该能够列出execute吃掉了哪些指令:
/stats(获取并存储指令执行结果)
/testfor、/testforblock、/testforblocks(检测方块、实体)
/scoreboard br /layers test子命令(检测分数)
你可以猜一猜上述指令被execute吃掉后变成了哪一类execute的子命令,我们下一章就会开始正式的学习过程。