/effect clear @e[type=zombie,limit=1,sort=nearest](Java1.13更新后)
这两条指令将会清除离执行地点最近的僵尸所拥有的所有状态效果。但如果这个僵尸拥有其他我们不想清除的状态效果怎么办?
在Java1.13及之后的版本中,我们可以执行/effect clear @e[type=zombie,limit=1,sort=nearest] regeneration来清除生命恢复效果而不清除其他状态效果。可是在Java1.13前的版本和基岩版中似乎没有清除指定状态效果的方法呀?
还是有的。
想一想,当目标已经有了指定的状态效果,我们再添加一个状态效果上去会发生什么?
再想一想,当两个名称、类型一样的文件相遇的时候,计算机会给你提示什么?
想到了没有?没错,只有两种可能性:覆盖和保留原来的状态效果
而Minecraft选择了什么呢?两者均有。当目标具有相同的状态效果时,游戏将会根据以下情况选择是保留还是覆盖:
①新状态效果持续时间比源状态效果要短,且持续时间不等于0,保留原来的状态效果
②新状态效果持续时间比源状态效果要长或相等,覆盖原来的状态效果
③新状态效果持续时间为0,移除原来的状态效果(实际上也是覆盖)。
发现了没有?我们可以通过添加一个持续时间为0的状态效果来移除指定的状态效果:
/effect @e[type=zombie,c=1] regeneration 0
这样子就成功保住了那只僵尸的命。而且,这个方法在Java1.13更新后仍然可用。
状态效果的持续时间最大为秒(11.574天),如果指定更大的值将会被视为秒。默认的持续时间是30秒,即半分钟。(注,在基岩版1.16.200版本之前,持续时间最大为,但超过秒的话就没有效果了)
持续时间的单位一般是秒,但有三个状态效果的值例外:瞬间伤害、瞬间治疗和饱和。它们三所使用的单位是游戏刻,默认的持续时间也被改为了1游戏刻。毕竟是“瞬间”嘛,一“瞬间”持续太长时间就不正常了。
本小章还未完,请点击下一页继续阅读后面精彩内容!
现在可以尝试给我们的僵尸BOSS加血量上限了:
/effect @e[type=zombie,tag=boss] health_boost (Java1.13前和基岩版)
/effect give @e[type=zombie,tag=boss] health_boost (Java1.13更新后)
health_boost是“生命提升”效果,可以提升生命最大值。上面的指令将会为我们的僵尸boss增加4点生命值上限,持续秒。
对于一个Boss来说,24点血也太少了。因此我们要提高生命提升的等级。生命提升效果能够增加的最大生命值等于强度等级乘4的积。作为一个小型boss,100点血就足够了,也就是说我们需要给僵尸添加20级的生命提升:
/effect @e[type=zombie,tag=boss] health_boost ,19(Java1.13前和基岩版)