第一中文网

第七十一章 条件子命令 (第2/5页)

天才一秒记住【第一中文网】地址: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是基岩版目前较为冷门的一个指令,因为是

本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!

如遇章节错误,请点击报错(无需登陆)

新书推荐

都市超品仙医 活在两个世界 大秦:这个太子总想着造反 与其说瞎话不如 穿越万界:神功自动满级 诛神乾坤 多子多福,仙女都被他抢了怎么办