天才一秒记住【第一中文网】地址:www.dyzww.cc
=..1,nbt={Item:{id:“minecraft:snowball“,tag:{display:{Name:'{“text“:“回城雪球“}'}}}},type=item,limit=1,sort=nearest] run tag @s add hub
这条execute有四个子命令:as、at、if和run,其效果是:
将所有在线且活着的玩家分别作为执行者,他们的位置作为执行位置,他们的旋转角度作为执行朝向,如果执行者周围1米有一个叫做『回城雪球』的雪球掉落物,就给执行者自己添加上标签hub。
其中,我们重点看一下if子命令这一段:
if entity @e[distance=..1,nbt=物品是叫做『回城雪球』的雪球,type=item,limit=1,sort=nearest]
这个if子命令用到了entity,也就是相当于1.13之前的testfor指令,用于探测指定实体是否存在。在这边,entity的参数就不讲了,涉及到nbt,你大概知道是探测一个叫做『回城雪球』的掉落物就行。
让我们试一试将上面这一段if子命令转化为testfor指令:
\/testfor @e[r=1,name=回城雪球,type=item,c=1]
是不是立马就理解了?所以,在使用if子命令的block、entity和blocks子命令时,不妨可以回忆回忆以前的指令是怎么个用法。
例子二:
\/testforblocks ~-1 ~-1 ~-1 ~1 ~-1 ~1 ~-1 ~2 ~-1
这是我们在第三十七章讲\/testforblocks时引用的例子,其作用是『检测执行者脚下3x3的区域是否和头顶3x3的区域完全一样』,现在我们尝试将这一串指令转化为1.13+的版本:
\/execute if blocks ~-1 ~-1 ~-1 ~1 ~-1 ~1 ~-1 ~2 ~-1 all
这个1.13+版本的指令和上面的testforblocks例子的效果是完全一样的,唯一需要注意的是比较模式参数从可选变成了必选,并且由于testforblocks默认就是all比较模式,所以转化后要在最后加上个『all』。
你可能会疑惑:run呢?run子命令呢?我那么大一个run呢?
其实,当一个execute指令中含有条件子命令时,就不一定要含有run子命令了。因为条件子命令也可以看做是一个具有功能的,能够返回东西的指令(毕竟原来就是由几条单独指令结合在一起的嘛)。
例子三:
\/execute as @a at @s if block ~~-1 ~ redstone_block run camerashake add @s
这条指令并不适用于Java版,而是适用于基岩版。
没错,这个例子是使用目前基岩版还在测试中的新版execute指令写成的,不难发现基岩版的新版execute和Java版的几乎没差别。
这条指令的作用是:
将所有玩家分别作为执行者,将执行者的位置作为执行位置,将执行者的旋转角度作为执行朝向,如果执行位置下方一格方块(玩家脚底下的方块)是红石块,就摇晃玩家的镜头(站久就变鬼畜了)。
其中,指令camerashake是基岩版目前较为冷门的一个指令,因为是
本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!