Skip to content

伤害分源机制

Damagehandler 用于按 实体伤害来源 两个维度记录并管理累计伤害。核心思路是 伤害分源:不仅知道“总共受了多少伤害”,还能精确区分这些伤害分别来自哪里。

伤害来源定义

伤害来源通过自定义 String 标签区分,由开发者在项目中统一约定。

预置来源:

  • GENERIC — 通用伤害,未明确来源时的默认类型。调用不含 source 参数的方法时,内部自动操作此来源。

接口方法

所有方法均围绕 (UUID, Source, Value) 三元组操作,同时提供面向 LivingEntity 的便捷方法。

累加伤害 — addDamage

Groovy
// 为实体记录 50 点火焰伤害
handler.addDamage(uuid, "FIRE", 50.0)

// 不指定来源则默认使用 GENERIC
handler.addDamage(uuid, 10.0)

扣除伤害 — takeDamage

Groovy
// 吸收 20 点火焰伤害
handler.takeDamage(uuid, "FIRE", 20.0)

// 从通用伤害中扣除
handler.takeDamage(uuid, 5.0)

设置伤害 — setDamage

Groovy
// 将火焰伤害设为 100
handler.setDamage(uuid, "FIRE", 100.0)

// 设置通用伤害
handler.setDamage(uuid, 200.0)

查询伤害 — getDamage

Groovy
// 查询指定来源的伤害值
double fireDamage = handler.getDamage(uuid, "FIRE")

// 查询该实体的总伤害(所有来源求和)
double total = handler.getDamage(uuid)

倍率伤害 — multiplyDamage

Groovy
// 将火焰伤害翻倍
handler.multiplyDamage(uuid, "FIRE", 2.0)

// 将通用伤害翻倍
handler.multiplyDamage(uuid, 2.0)

// 将实体所有伤害翻倍
handler.multiplyDamageData(uuid, 2.0)