Skip to content

治疗分源机制

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

治疗来源定义

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

预置来源:

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

接口方法

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

累加治疗 — addHealth

Groovy
// 为实体记录 50 点火焰治疗
handler.addHealth(uuid, "FIRE", 50.0)

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

扣除治疗 — takeHealth

Groovy
// 吸收 20 点火焰治疗
handler.takeHealth(uuid, "FIRE", 20.0)

// 从通用治疗中扣除
handler.takeHealth(uuid, 5.0)

设置治疗 — setHealth

Groovy
// 将火焰治疗设为 100
handler.setHealth(uuid, "FIRE", 100.0)

// 设置通用治疗
handler.setHealth(uuid, 200.0)

查询治疗 — getHealth

Groovy
// 查询指定来源的治疗值
double fireHealth = handler.getHealth(uuid, "FIRE")

// 查询该实体的总治疗(所有来源求和)
double total = handler.getHealth(uuid)

倍率治疗 — multiplyHealth

Groovy
// 将火焰治疗翻倍
handler.multiplyHealth(uuid, "FIRE", 2.0)

// 将通用治疗翻倍
handler.multiplyHealth(uuid, 2.0)

// 将实体所有治疗翻倍
handler.multiplyHealthData(uuid, 2.0)