第189章 ,/.

指令①的返回值为正常的40.0,也就是将我们自己在health_max计分项上的值改为40。指令②虽然给我们的消息是40.0,但实际返回的是80.0,计分项上的分数也会改为80。

所以,『乘数』参数并不是没有用,而是它的用处在于影响指令的返回值。

修改属性还是很简单的。那使用/attribute给实体添加修饰符呢?让我们再试一试:

/attribute @s generic.max_health modifier add 1-1-1-1-1 A 1.0 add

→为实体xxx的属性最大生命值添加了修饰符00000001-0001-0001-0001-000000000001

在上面的指令中,使用了『modifier』子命令的『add』子命令来添加一个修饰符,参数『1-1-1-1-1』指定了该修饰符的UUID,『A』指定了该修饰符的名称,『1.0』指定了该修饰符的值,『add』指定了该修饰符的计算模式是『属性增量』。其中得讲一下的就是这个UUID参数。

在这边的UUID参数,填写的是『带连字符的十六进制UUID』。这种形式的UUID很常见,它长下面这样:

xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

详细内容会在第一百一十章讲到,在这边你只需要把这东西当做填写五个用连字符『-』连在一起的整数即可:

1-1-1-1-1

上面的『add』参数所在的位置,也可以填写multiply_base(倍率增量)和multiply(最终倍乘),来改变运算模式。

现在,让我们看看的生命值上限是不是高达41.0:

/attribute @s generic.max_health base get

→实体xxx的属性最大生命值的基值为40.0

?怎么还是40.0?啊,是用错了,这获取到的是基值,应该把『base』参数去掉:

/attribute @s generic.max_health get

→实体xxx的属性最大生命值的值为41.0

很好,所以你现在会用/attribute给实体添加属性修饰符了吗?

remove和value get两个子命令的使用很简单,让我们试一试:

/attribute @s minecraft:generic.max_health modifier value get 1-1-1-1-1 2.0

→实体xxx的属性最大生命值中修饰符00000001-0001-0001-0001-000000000001值为1.0

上面这条指令会返回这个修饰符的值。并且由于指定了乘数为『2.0』,这条指令的返回值还会是『2.0』(1.0×2.0)。

/attribute @s minecraft:generic.max_health modifier remove 1-1-1-1-1

→为实体xxx的属性最大生命值移除了修饰符00000001-0001-0001-0001-000000000001

这样子我们就删掉了刚刚给我们自己添加的属性修饰符,生命值上限回到了40.0。

本章到此为止。

附录:/attribute历史

Java

1.16——加入了/attribute