Skip to content

这页不讲长篇原理,只回答一个问题:

我要改某个功能,到底该去改哪份文件?

如果你一打开 plugins/HNAttribute/ 就开始在各个目录里来回翻,这页就是给你准备的。


一、当前目录结构

text
plugins/HNAttribute/
├── config.yml                      # 全局开关、Lore/NBT、条件系统、Groovy、原版行为
├── display.yml                     # 伤害显示与投递方式
├── mythicmobs.yml                  # MythicMobs 联动入口与标签配置
├── vanilla.yml                     # 自定义属性同步到原版属性
├── equipment/
│   ├── read-patterns.yml           # Lore 读取规则
│   └── slot.yml                    # 槽位到 source 名称的映射
├── attributes/
│   ├── base.yml                    # 基础属性
│   ├── combat.yml                  # 战斗属性
│   ├── element.yml                 # 元素/通道属性
│   └── ...                         # 你自己的属性文件
├── damage_types/
│   ├── physical.yml                # 伤害类型显示 + 可选 resist-formula
│   ├── magic.yml
│   └── ...
├── stages/
│   ├── hit.yml                     # boolean / value / modifier / per_channel / collect_channels
│   ├── dodge.yml
│   ├── resist.yml
│   └── ...
├── pipelines/
│   ├── melee.yml                   # 按攻击方式编排 Stage
│   ├── ranged.yml
│   ├── spell.yml
│   └── ...
├── buffs/
│   └── default.yml                 # Buff 模板
├── periodic/
│   ├── settings.yml                # 周期系统全局设置
│   └── *.yml                       # DOT / HOT / direct / instance 效果
├── gui/
│   └── attribute-stats.yml         # 属性面板 GUI
├── items/
│   ├── materials.yml               # 模板化材料
│   └── tokens.yml                  # 模板化 token
└── storage/
    └── player-runtime.db           # 玩家运行时数据

二、最短索引:按你现在要改的东西来找

如果你现在要改的是:

  • 全局开关、Lore/NBT、条件系统、Groovy、安全级别 → config.yml
  • Lore 正则读取规则 → equipment/read-patterns.yml
  • 装备槽位来源名 → equipment/slot.yml
  • 属性本体、别名、默认值、派生映射 → attributes/*.yml
  • 伤害类型显示、颜色、可选减伤公式 → damage_types/*.yml
  • 战斗步骤公式与终止语义 → stages/*.yml
  • 近战 / 远程 / 法术 / DOT 的 Stage 顺序 → pipelines/*.yml
  • Buff 模板 → buffs/*.yml
  • 周期系统全局项 → periodic/settings.yml
  • DOT / HOT / 周期实例具体模板 → periodic/*.yml
  • 伤害显示、BossBar、ActionBar、全息 → display.yml
  • 原版属性同步 → vanilla.yml
  • MythicMobs 标签、入口、Mechanic 联动 → mythicmobs.yml
  • 玩家属性面板 → gui/attribute-stats.yml
  • 模板化材料 / token 道具 → items/*.yml
  • 压测资源 → perf/*

三、按场景找配置

1)我在做装备 / Lore 属性

优先看:

  • attributes/*.yml
  • equipment/read-patterns.yml
  • equipment/slot.yml

你通常是在处理:

  • 新增属性 ID
  • 调整属性显示名 / names
  • 改 Lore 识别格式
  • 改装备来源名
  • 配主属性到战斗属性的派生关系

当前推荐的派生写法是直接写在属性定义里:

yml
strength:
  priority: 100
  mapping:
    targets:
      attack_damage:
        operation: ADD
        formula: "total * 0.5"

也就是说:

  • 属性定义入口在 attributes/*.yml
  • Lore 怎么读在 equipment/read-patterns.yml
  • 不是去 damage_types/*.yml 里绑属性

2)我在做 Buff

优先看:

  • buffs/*.yml

典型场景:

  • 力量提升
  • 狂暴
  • 护盾强化
  • 抗性加成
  • 职业状态

如果你要理解 Buff 的运行模型,再配模板,建议配合阅读:


3)我在做 DOT / HOT / 周期效果

优先看:

  • periodic/settings.yml
  • periodic/*.yml

最常见判断:

  • 要改全局行为periodic/settings.yml
  • 要写具体效果模板periodic/*.yml

常见用途:

  • 脱战回血
  • 周期伤害
  • 周期治疗
  • direct 模式
  • instance 模式
  • 生命周期 hooks

4)我在做伤害模型

优先看:

  • attributes/*.yml
  • damage_types/*.yml
  • stages/*.yml
  • pipelines/*.yml

这四层的分工要分清:

attributes/*.yml

负责声明伤害通道归属:

yml
attack_damage:
  channel: physical
  channel-role: damage

defense:
  channel: physical
  channel-role: resist

也就是说,当前版本是属性自己通过 channel + channel-role 声明归属

damage_types/*.yml

负责:

  • 显示名
  • 颜色
  • 显示模板
  • 可选 resist-formula

它不负责绑定属性,也不负责编排 Stage。

stages/*.yml

负责:

  • boolean 判定
  • value 数值计算
  • modifier 修正
  • collect_channels 收集伤害通道
  • per_channel 按通道结算

pipelines/*.yml

负责:

  • 按攻击方式编排 Stage 顺序
  • 近战 / 远程 / 法术 / 持续伤害 走哪些步骤

一句话记忆:

属性声明通道,DamageType 管显示,Stage 管计算,Pipeline 管顺序。


5)我在做显示层

优先看:

  • display.yml

通常会改:

  • BossBar
  • ActionBar
  • Hologram
  • 文本模板
  • delivery-mode
  • 显示节流、偏移、持续时间

6)我在做玩家属性面板

优先看:

  • gui/attribute-stats.yml

通常会改:

  • 分组按钮
  • 页面布局
  • 属性归类
  • 空状态文案
  • 是否隐藏 0 值属性

7)我在做原版属性同步

优先看:

  • vanilla.yml

例如:

  • max_health 对应原版生命值
  • movement_speed 对应原版移速
  • attack_speed 对应原版攻速

如果 /hnattr lookup 看起来数值对了,但玩家体感没变化,优先先查这里。


8)我在做 MythicMobs 联动

优先看:

  • mythicmobs.yml

它负责:

  • 怪物属性标签名
  • 联动入口配置
  • Mechanic / Condition 的统一入口说明

如果要看具体 skill 参数,再去:


9)我在做系统级基础行为

优先看:

  • config.yml

它负责的通常是:

  • Lore / NBT / PDC 开关
  • 血量缩放
  • 原版护甲处理
  • 横扫攻击行为
  • 公式脚本引擎开关
  • 条件系统

如果你遇到的是:

  • Lore 完全不读
  • NBT 完全不读
  • 红心显示不对
  • 原版护甲体感不对

先查 config.yml


10)我在做压测 / 演示

优先看:

  • perf/*

更适合:

  • 批量属性压测
  • Lore / NBT 高负载测试
  • 多通道伤害压测
  • DOT / HOT / 周期实例压测

它不是正式服主配置入口,更像一套热点放大用的测试档。


四、新手最不容易乱的修改顺序

建议顺序:

  1. attributes/*.yml
  2. equipment/read-patterns.yml
  3. buffs/*.yml
  4. periodic/settings.ymlperiodic/*.yml
  5. damage_types/*.yml
  6. stages/*.yml
  7. pipelines/*.yml
  8. display.yml / gui/attribute-stats.yml

原因很简单:

  • 先把属性和读取跑通
  • 再配 Buff / 周期效果
  • 最后再碰战斗模型和显示层

五、这一页最该记住的重点

  1. config.yml 不是万能入口,很多功能已经拆到专门目录。
  2. DOT / HOT 优先看 periodic/settings.ymlperiodic/*.yml
  3. 战斗系统不要再按旧的 combat/* 心智去找文件。
  4. 伤害通道归属现在在属性里的 channel + channel-role
  5. damage_types/*.yml 负责显示与可选减伤公式,不负责编排 Stage。
  6. 真正的战斗步骤定义在 stages/*.yml,顺序定义在 pipelines/*.yml

如果你下次又忘了“该改哪份文件”,直接回来看第二节“最短索引”就行。

HN 系列插件文档