版本:1.19.4
计分板中有个叫“minecraft.custom:minecraft:damage_taken”的判据,用于储存玩家受到伤害的总量,理论上来说挺好用的。
但这个计分板判据对除玩家外的其他生物无效,其他生物不管受到多少伤害,也不会给自己的这个计分板赋值。
现在我需求一个办法来让其他生物也将自己受到伤害的总量(需要考虑其会回血等情况)乘以10(和玩家的计分板判据一致)之后赋给自己的一个名为“damage_taken”的计分板上,假设其他生物的当前血量会乘以10以后会赋给自己的一个叫“mob_health”的计分板上
计分板中有个叫“minecraft.custom:minecraft:damage_taken”的判据,用于储存玩家受到伤害的总量,理论上来说挺好用的。
但这个计分板判据对除玩家外的其他生物无效,其他生物不管受到多少伤害,也不会给自己的这个计分板赋值。
现在我需求一个办法来让其他生物也将自己受到伤害的总量(需要考虑其会回血等情况)乘以10(和玩家的计分板判据一致)之后赋给自己的一个名为“damage_taken”的计分板上,假设其他生物的当前血量会乘以10以后会赋给自己的一个叫“mob_health”的计分板上


原理:每一tick都通过x和y记录实体的生命值变化,并以10倍进行记录,如果生命值相比上1tick有减少就把差记录在y-x上,然后累积到mob_damage
缺点:如果实体死了就记录不进去了
由于选择器无法选择死亡的实体,因此可以使用被记录的实体的UUID或玩家id来操作他的计分板:
- execute unless entity <UUID> run scoreboard players operation <UUID> mob_damage += <UUID> mob_damage_if_y
- #实体死亡后,把它在上1tick的生命值都累积进去,表示他受到了致命伤害