伤害飘字系统
CombatEffect 伤害飘字配置:来源选择、飘字类型、治疗显示、合并与样式
伤害飘字系统
付费模块
伤害飘字子系统(digis-display)将伤害与治疗事件显示为 ArcartX 客户端数字飘字,支持四种属性插件来源自动检测、六种飘字类型、伤害/治疗合并、TACZ 枪械伤害,以及 MythicMobs 技能治疗显示。
伤害来源
来源模式
伤害来源通过 digis-display.damage-display.source.mode 配置,决定优先采用哪个属性插件的伤害事件:
| 模式 | 配置值 | 说明 |
|---|---|---|
| 自动检测 | auto | 按优先级自动选择第一个可用的来源 |
| MythicLib | mythiclib | 仅使用 MythicLib/MMOItems 伤害事件 |
| CraneAttribute | craneattribute | 仅使用 CraneAttribute 伤害事件 |
| AttributePlus | attributeplus | 仅使用 AttributePlus 伤害事件 |
| Symphony | symphony | 仅使用 Symphony 伤害事件 |
| Bukkit 原版 | bukkit | 仅使用 Bukkit 原版伤害事件 |
自动检测优先级
auto 模式按以下优先级检测可用来源(不可自定义顺序):
| 优先级 | 来源 | 检测条件 |
|---|---|---|
| 1 | MythicLib / MMOItems | 插件可用 + mythiclib.enabled=true |
| 2 | CraneAttribute | 插件可用 + craneattribute.enabled=true |
| 3 | AttributePlus | 插件可用 + original.ap-compatible=true |
| 4 | Symphony | 插件可用 + symphony.enabled=true |
| 5 | Bukkit 原版 | original.enabled=true 或 player.enabled=true |
所有来源均不可用时伤害飘字不启用。选择了属性插件来源时原版伤害不重复显示。
回退策略
当指定来源(非 auto)不可用时,fallback 控制是否回退:
fallback | 行为 |
|---|---|
true | 指定来源不可用时,按优先级回退到下一个可用来源 |
false | 指定来源不可用时,伤害飘字不启用 |
伤害飘字类型
子系统支持六种伤害飘字类型,按优先级处理:闪避 > 暴击 > 元素克制 > 普通伤害。
| 优先级 | 飘字类型 | 配置路径 |
|---|---|---|
| 1 | 闪避 | dodged.enabled / dodged.config-id |
| 2 | 暴击 | critical.enabled / critical.config-id / critical.player-config-id |
| 3 | 元素克制(优势) | advantaged.enabled / advantaged.config-id |
| 3 | 元素克制(劣势) | disadvantaged.enabled / disadvantaged.config-id |
| 4 | 普通伤害 | 按来源分发 |
暴击/闪避/克制飘字当前仅 Symphony 能提供对应标记。其他属性插件触发时自动降级为普通伤害飘字。
普通伤害按来源分发
普通伤害根据当前伤害来源分发到不同的 configId:
| 来源 | 普通目标 configId | PVP 目标 configId | 最小阈值字段 |
|---|---|---|---|
| Bukkit | original.config-id | player.config-id | original.min-amount / player.min-amount |
| MythicLib | mythiclib.config-id | mythiclib.player-config-id | mythiclib.min-amount / mythiclib.player-min-amount |
| CraneAttribute | craneattribute.config-id | craneattribute.player-config-id | craneattribute.min-amount / craneattribute.player-min-amount |
| AttributePlus | original.config-id(复用) | player.config-id(复用) | original.min-amount / player.min-amount |
| Symphony | symphony.config-id | symphony.player-config-id | symphony.min-amount / symphony.player-min-amount |
AttributePlus 来源复用
original的样式和阈值配置,通过original.ap-compatible=true控制是否允许显示。
PVP 与非 PVP 区分
每种伤害类型区分普通目标(怪物/动物)与 PVP 目标(玩家),使用不同的飘字样式:
旁观者可见性
show-others-damage 控制是否向能看到目标的其他玩家也显示伤害飘字:
| 配置值 | 行为 | 适用场景 |
|---|---|---|
false(默认) | 仅攻击者自己看到伤害飘字 | 避免信息过载,PVE 默认 |
true | 所有能看到目标的玩家都看到 | PVP 场景,所有人可见伤害数字 |
治疗飘字
原版治疗
| 字段 | 默认值 | 说明 |
|---|---|---|
heal-display.original.enabled | true | 是否启用原版治疗飘字 |
heal-display.original.config-id | ArcartXSuite-heal | 治疗飘字样式 ID |
heal-display.original.min-amount | 1.0 | 最小显示阈值 |
MythicMobs 技能治疗
仅当治疗目标为玩家时显示:
| 字段 | 默认值 | 说明 |
|---|---|---|
heal-display.mythic.enabled | true | 是否启用 MythicMobs 治疗飘字 |
heal-display.mythic.config-id | ArcartXSuite-heal | 治疗飘字样式 ID |
heal-display.mythic.min-amount | 1.0 | 最小显示阈值 |
heal-display.mythic.exact-mode | true | 是否显示实际生效治疗量 |
exact-mode | 显示内容 | 说明 |
|---|---|---|
true | 实际生效治疗量 | 扣除溢出(如满血时治疗 100,显示 0) |
false | 技能理论治疗量 | 不扣除溢出,显示技能原始治疗量 |
MythicMobs 治疗飘字仅在 MythicMobs / MythicBukkit 插件安装时可用。
伤害/治疗合并
合并机制将短时间内的多段伤害/治疗合并为一次飘字,减少刷屏。
伤害合并
| 字段 | 默认值 | 说明 |
|---|---|---|
damage-display.damage-merge.enabled | false | 是否启用伤害合并 |
damage-display.damage-merge.window-ticks | 2 | 合并窗口(tick,1 tick = 50ms) |
damage-display.damage-merge.min-amount | 1.0 | 合并后最小显示阈值 |
damage-display.damage-merge.max-entries | 500 | 最大缓存条目数 |
同一攻击者-目标-样式组合在窗口内的伤害累加,窗口结束后一次性发送合并后的总伤害。
治疗合并
| 字段 | 默认值 | 说明 |
|---|---|---|
heal-display.heal-merge.enabled | false | 是否启用治疗合并 |
heal-display.heal-merge.window-ticks | 2 | 合并窗口(tick) |
heal-display.heal-merge.min-amount | 1.0 | 合并后最小显示阈值 |
heal-display.heal-merge.max-entries | 500 | 最大缓存条目数 |
TACZ 枪械伤害
TACZ 枪械伤害飘字为内置集成,无需额外安装。选择了属性插件伤害来源时,TACZ 伤害由属性插件的伤害事件覆盖,不重复显示。
飘字样式配置
飘字样式文件自动导出到 plugins/ArcartX/damage_display/ 目录,由 ArcartX 客户端读取渲染。
样式文件清单
| 样式文件 | 样式 ID | 用途 |
|---|---|---|
ArcartXSuite-damage.yml | ArcartXSuite-damage | 普通伤害 |
ArcartXSuite-heal.yml | ArcartXSuite-heal | 治疗 |
ArcartXSuite-critical.yml | ArcartXSuite-critical | 暴击伤害 |
ArcartXSuite-dodged.yml | ArcartXSuite-dodged | 闪避 |
ArcartXSuite-advantaged.yml | ArcartXSuite-advantaged | 元素克制(优势) |
ArcartXSuite-disadvantaged.yml | ArcartXSuite-disadvantaged | 元素克制(劣势) |
样式文件格式
| 字段 | 说明 |
|---|---|
textureWidth / textureHeight | 每张贴图的宽高(像素),决定数字大小 |
randomMin / randomMax | 飘字位置随机偏移范围(世界坐标单位) |
decimalPlaces | 小数位数:0 = 仅整数,1 = 1 位小数,2 = 2 位小数 |
textures | 贴图列表:第 1-10 张对应数字 0-9,第 11 张为小数点,第 12 张为千位分隔逗号(可选) |
闪避飘字固定显示 "0",无需配置
decimalPlaces与小数点贴图。治疗飘字使用较小的贴图尺寸(22×33)与伤害区分。
最小显示阈值
所有飘字类型均支持最小显示阈值,低于阈值的伤害/治疗不显示,避免微量数字刷屏:
| 飘字类型 | 阈值字段 | 默认值 |
|---|---|---|
| 原始伤害 | original.min-amount | 1.0 |
| PVP 伤害 | player.min-amount | 1.0 |
| MythicLib 伤害 | mythiclib.min-amount / mythiclib.player-min-amount | 1.0 |
| CraneAttribute 伤害 | craneattribute.min-amount / craneattribute.player-min-amount | 1.0 |
| Symphony 伤害 | symphony.min-amount / symphony.player-min-amount | 1.0 |
| 暴击 | critical.min-amount | 1.0 |
| 原版治疗 | heal-display.original.min-amount | 1.0 |
| MythicMobs 治疗 | heal-display.mythic.min-amount | 1.0 |
| 伤害合并后 | damage-merge.min-amount | 1.0 |
| 治疗合并后 | heal-merge.min-amount | 1.0 |
闪避与元素克制飘字无最小阈值配置,启用即显示。