在上一章,我们了解了Operation的『属性增量』和『倍率增量』计算模式,还有一个『最终倍乘』。那什么是最终倍乘呢?
『最终倍乘』是这样计算的:
R=C?×(1+A?)×(1+A?)×......×(1+A?)
C?=C?×(1+a?+a?+.....+a?)
C?=C+m?+m?+.....+m?
R······最终结果
A??...?······计算模式为『最终倍乘』的修饰符的Amount值
a??...?······计算模式为『倍率增量』的修饰符的Amount值
m??...?······计算模式为『属性增量』的修饰符的Amount值
C?······『倍率增量』计算结果
C?······『属性增量』计算结果
举个例子,假设现在有这些修饰符:
{AttributeName:'generic.max_health',Amount:5.0,Operation:0}
{AttributeName:'generic.max_health',Amount:3.0,Operation:0}
{AttributeName:'generic.max_health',Amount:2.0,Operation:1}
{AttributeName:'generic.max_health',Amount:1.5,Operation:1}
{AttributeName:'generic.max_health',Amount:1.1,Operation:2}
{AttributeName:'generic.max_health',Amount:0.1,Operation:2}
当这些修饰符在一个玩家身上全部生效,且该名玩家的最大生命值仅仅受这些修饰符影响时,这名玩家的生命值上限将会从20.0点变成291.06点。这个『291.06』是这样得出来的:
[(20+5+3)×(1+2+1.5)]×(1+1.1)×(1+0.1)
↓先计算『属性增量』↓
[28×(1+2+1.5)]×(1+1.1)×(1+0.1)
↓再计算『倍率增量』↓
126×(1+1.1)×(1+0.1)
↓最后计算『最终倍乘』↓
291.06
这就是『最终倍乘』,到这Operation的全部内容也就讲完了。
但这不代表本章到此结束。还记得上一章提到的/attribute指令吗?让我们来了解下这指令如何使用:
/attribute
作用:可以更改和读取属性
存在版本:Java1.16-今
需要权限等级:Java-2
需要作弊:是
格式:
/attribute <目标玩家/生物><属性>[base] get [乘数]
\\返回指定属性的『总值』。如果指定了base,则返回『基值』\\
/attribute <目标玩家/生物><属性> base set <值>
\\将指定属性的『基值』设定为指定的值\\
/attribute <目标玩家/生物><属性> modifier add
\\如果没有UUID相同的属性修饰符,就给指定属性添加上属性修饰符\\
/attribute <目标玩家/生物><属性> modifier remove
\\移除指定属性的具有指定UUID的修饰符\\
/attribute <目标玩家/生物><属性> modifier value get
\\返回具有指定UUID的属性修饰符的值\\
使用这条指令可以很方便地修改实体的属性,以及为实体添加上属性修饰符。只不过由于/attribute指令是直接给实体添加上修饰符,没有物品作为载体,所以在这边添加的修饰符无需指定『栏位』参数。
让我们来试一试,直接修改属性的值。比如,把我们的生命值上限改成40点:
/attribute @s generic.max_health base set 40.0
→实体xxx的属性最大生命值的基值已设置为40.0
很好,这下子我们就有40点生命值了。只不过要注意,玩家的属性会在死亡后重置,也就是说如果你死一次,最大生命值就会变回20点。
这章没有结束,请点击下一页继续阅读!
喜欢Minecraft指令手册请大家收藏:(m.2yq.org)Minecraft指令手册爱言情更新速度全网最快。