第三十三章 execute-这年头,猪都会说话了
在Minecraft有一个很有意思且功能强大的指令。
没错,它就是:/execute。
这是一个相当有用的指令,我们会在以后经常碰见它。为何?因为通过它,你可以使一个或多个实体作为执行源像命令方块一样执行指令,甚至可以添加一些条件来判断是否要执行指令。
由于Java1.12.2以上版本和Java1.13以下版本、基岩版有很大的区别,所以今天我们只讨论Java1.13以下和基岩版的格式,这样子讲起来比较简单。
/execute
作用:使一个或多个实体分别作为执行者执行指令
需要权限等级:Java-2,基岩-1
需要作弊:是
格式(基岩版、Java1.13更新前):
/execute <执行者:目标选择器><基准点:坐标><执行的指令>
/execute <执行者:目标选择器><基准点:坐标> detect <探测的坐标><方块id><方块数据值><执行的指令>
execute有什么用呢?它可以更改执行指令者和执行指令的基准点,如果有多个执行者则会每一个执行者都执行一遍指令。更进一步可以检测某个坐标的方块是否符合条件,符合条件就会执行指令。比如我们要让猪说话,就可以:
/execute @e [tybr /e =br /ig ]~~~ say 你好!
这条指令可以将所有猪作为执行者,它们的位置作为执行地点,分别执行『say 你好!』这条指令。这样子,主世界内的所有猪都会说:“你好!”了。
你无聊的时候,还可以像这样子:
/execute @e ~~~ execute @e ~~~ execute @e ~~~ execute @e ~~~ execute @e ~~~...............
(没错作者在套娃)
使用execute,就可以干一些特别的事了。比如:
/execute @a ~~~ setblock ~~-1 ~ diamond_block
这条指令将所有在线玩家作为执行者,他们的位置作为执行地点,分别执行『setblck ~~-1 ~ diamond_block』指令,在他们的脚下放置一个钻石块。这样子,所有玩家的脚下就会生成一个钻石块。
使用execute甚至可以毁灭世界。这样子写:
/execute @e [tybr /e =item]~~~ fill ~-1 ~-1 ~-1 ~1 ~1 ~1 air destroy
这个是什么意思呢?
这样子写,如果有一个掉落物,那么这个掉落物就会破坏掉其周围的3x3的空间,并且其破坏掉的方块都会掉落成掉落物。然后这些掉落物又会破坏掉周围3x3的空间,然后掉落,扩大,再破坏、掉落、扩大.......。如果在重复、无条件的命令方块里运行,你的电脑(或手机)会在1游戏刻内到1秒内卡死。因为这个比2的次方还要恐怖。
然后是detect。
前文说到,一个网易我的世界租贷服搞了一个回城雪球。后来,另一个服务器的腐竹由此受到启发,开发了一个“回城红石块”。
这个回城红石块很简单,只需要一个命令方块:
A→
A:重复执行,无条件,始终活动
/execute @a ~~~ detect ~~-1 ~ redstone_block 0 tbr / @s 30 64 24
这条指令的意思是:将所有玩家作为指令执行者,当其脚底下是数据值为0的红石块时,传送他们自己到(30,64,24)。
其中,参数『方块数据值』可以填写-1来代指不判断数据值。在Java1.11及以上版本,这个参数还可以填写方块状态,并用星号『*』来代指所有方块状态(也就是不判断方块状态)。
比如:
/execute @a ~~~ detect ~~-1 ~ minecraft:magenta_glazed_terracotta facing=south tellraw @s [{“text“:“该箭头朝向“,“color“:“yellow“},{“text“:“北方“,“color“:“light_br /urbr /le“}]
这条指令的意思是:将所有玩家作为指令执行者,他们的位置作为指令执行地点,如果他们脚下的方块是朝向南方的品红色带釉陶瓦(也就是上面有箭头的那一个粉色方块),就告诉他们『该箭头朝向(黄色)北方(浅紫色)』。
现在,你应该能看得懂那个回城雪球的第一条指令吧?尝试理解一下:
/execute @e[tybr /e=snowball]~~~ execute @br /[r=1.5,rx=90,rxm=60]~~~ execute @e[tybr /e=snowball,c=1]~~~ tag @s add back_home
(实际上这条指令还有一个更好的替代方案:
/execute @a[rx=90,rxm=60]~~~ execute @e[r=1.5,tybr /e=snowball,c=1]~~~ tag @s add back_home
)
历史
Java
1.8——加入了/execute命令。
1.11——/execute支持方块状态
1.13——/execute的语法被拆分
携带版Albr /ha
0.16.0——加入了/execute