主题
这页优先回答当前版本最常见的三类问题:
- 为什么装备属性不生效
- 为什么 Buff 生效了但体感不对
- 为什么 DOT / HOT / 周期实例没有按预期运行
改完配置后为什么没生效
先区分你改的是哪类文件。
改了注册表或系统配置
例如:
config.ymlread-patterns.ymlattributes/*.ymldamage_types/*.ymlpipelines/*.ymldisplay.ymlvanilla.ymlslot.ymlbuffs/*.ymlperiodic/settings.yml与periodic/*.ymlmythicmobs.yml
通常要执行:
text
/hnattr reload只想让某个玩家重新读一遍装备
text
/hnattr refresh <玩家名>为什么装备有 Lore 但系统没加属性
按这个顺序查:
/hnattr inspect- 看 Lore 原文是不是你以为的那几行
- 看属性名称是否真的存在于
attributes/*.yml -> names - 看
read-pattern是否匹配 - 看条件系统有没有把它卡掉
- 看
skip-contains是否跳过了整件装备
一句话:装备问题第一优先级永远是 inspect。
为什么 Buff 模板写了但 /hnattr buff list 里没有
优先检查:
- 文件是否位于
buffs/*.yml - 顶层 key 是否真的是 Buff key
- 是否至少定义了一条有效属性
- 引用的属性 ID 是否存在
operation/formula格式是否正确
为什么 Buff 模板有了,但施加后没效果
按这个顺序查:
text
/hnattr buff list
/hnattr buff apply <buffKey> 100 1
/hnattr buffs
/hnattr source
/hnattr trace <属性ID>重点看两件事:
- 运行时身上到底有没有这个 Buff
- 这个 Buff 生成出来的修饰符有没有真的进入来源系统
为什么 REPLACE 和 REFRESH 体感差不多
这是当前版本的运行时特征之一。
你可以简单理解成:
IGNORE:已有同 key Buff / 实例时直接跳过REPLACE / REFRESH:当前都偏向覆盖刷新
如果你需要真正更明显的“叠层”或“合并”效果,优先看周期实例系统里的:
stackmerge
而不是指望 Buff 的 REPLACE / REFRESH 在体感上拉开很大差距。
为什么玩家受伤了但没有自动回血
当前版本默认回血已经不走旧的独立回血配置,而是走:
text
periodic/settings.yml
periodic/regen.yml优先检查:
periodic/regen.yml里的玩家脱战回血.enabled是否为true- 装备或来源里是否真的给了
health_regen /hnattr trace health_regen有没有值- 当前是否还在战斗中
periodic/settings.yml -> combat-timeout是否太长
为什么周期效果不生效
先区分你用的是哪一种。
direct 模式
direct 模式不会生成实例列表,它是“扫描后直接执行动作”。
排查顺序:
/hnattr reload- 看
enabled是否开启 - 看
selector是否能选中目标 - 看
condition是否成立 - 看
actions是否真的配置了有效amount
instance 模式 / Mythic 的 hna-dot / hna-hot
这类会生成运行中实例,可以直接查。
排查顺序:
text
/hnattr periodic list
/hnattr periodic inspect <key>
/hnattr periodic debug detail <key>为什么 /hnattr periodic list 里什么都没有
最常见原因有三类:
- 你当前测的是
direct模式,而不是instance模式 - 条件不成立,所以实例根本没创建
- 实例一创建就被
tick-condition + fail-policy: cancel取消掉了
如果你不确定,直接打开:
text
/hnattr periodic debug basic然后重新触发一次,看后台有没有:
prepareapplycancelexpire
这些事件。
为什么实例会自己消失
当前版本里实例被移除,最常见是这些原因:
- 正常跑完了,触发
expire tick-condition失败,且fail-policy: cancel- 来源实体失效,且实例配置要求来源失效时停止
- 你手动执行了
periodic clear / clearpair / clearall
这时候:
text
/hnattr periodic debug detail <key>最有价值,因为你能直接看到 cancel 或 expire 的事件日志。
为什么 MythicMobs 的 DOT / HOT 看起来没接入系统
现在 Mythic 的:
hna-dothna-hot
都已经接进统一周期 runtime 了。
所以如果你怀疑它没跑,优先查:
text
/hnattr periodic list
/hnattr periodic inspect <key>
/hnattr periodic debug detail <key>而不是只盯 Mythic 控制台。
为什么周期 debug 开了还是没有日志
优先检查:
- 你开的是否是正确 key
- 当前 debug 是否被命令覆盖关闭了
- 这个实例是否根本没创建出来
- 配置里
settings.debug.key-filter是否把它过滤掉了
先看:
text
/hnattr periodic debug status为什么 PlaceholderAPI 读到的是 0 或空
常见原因:
- 玩家不在线
- 属性 ID 拼错了
- 这个属性根本没注册
- 你看的不是最终会变化的那个属性
建议先用:
text
/hnattr lookup
/hnattr trace <属性ID>确认服务端内部值到底是多少,再回去看占位符。
如果你只是想先确认占位符格式有没有写错,直接看:
为什么 MythicMobs 怪物没读到属性
优先检查:
text
mythicmobs.yml当前默认会按顺序读取:
Attributeattribute
如果你怪物配置里写的是别的标签名,例如:
StatsAttrHNAttribute
那就要同步把它加到 mythicmobs.yml 里。
注意:/hnattr inspect、/hnattr trace 等命令只能查玩家属性,不能直接查怪物。要验证怪物属性是否正确加载,推荐开启 /hnattr debug debug 后攻击怪物,看控制台输出的战斗管线日志。
为什么改了 Java 代码注入的来源,但 source 看起来很乱
因为 HNAttribute 是按 source 分组管理修饰符的。
如果你给程序注入来源时随便命名,就会导致:
/hnattr source不好读/hnattr trace不好排- 后续也不好精确移除
建议永远用稳定命名,例如:
custom:quest-rewardcustom:skill-auracustom:artifact-bonus
什么叫“链式派生”,它到底值不值得用
你可以先把它理解成:
text
普通映射:A → B
链式派生:A → B → C它不是新系统,也不是特殊语法,本质上就是多个普通 mapping 串起来。
最简单的例子:
text
智力 → 法术强度 → 魔法伤害它的价值不在于“更高级”,而在于“更分层”:
- 主属性负责成长(如智力)
- 中间属性负责专精(如法术强度)
- 最终属性负责真正进战斗或技能公式(如魔法伤害)
什么时候值得用:
- 你要做职业差异化成长
- 你想让多个最终属性共享一个中间层
- 你希望后面调平衡时不用改一大堆最终公式
什么时候先别用:
- 你只是做简单的一层属性服
力量 → 攻击力这种关系已经够用了
如果你现在最大的困惑是“我知道怎么写,但不知道为什么要这样分层”,直接去看:
为什么 perf 目录没生成
因为 perf 资源默认不会自动释放。
需要手动执行:
text
/hnattr perf release
/hnattr perf release confirm其中第一条只是申请释放;需要在 15 秒内执行确认命令,资源才会真正生成。
如果你发现 perf/ 目录已经有文件,但压测配置仍未生效,继续执行:
text
/hnattr perf apply
/hnattr perf apply confirm它会把 perf/ 目录覆盖到当前活动配置并自动重载。
然后再去:
text
plugins/HNAttribute/perf/看资源。
我现在最应该先看哪几页
如果你时间有限,推荐顺序:
如果你当前最头疼的是 DOT / HOT 或周期实例,直接优先看:
