主题
这页不讲长篇原理,只回答一个问题:
我要改某个功能,到底该去改哪份文件?
如果你一打开 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/*.ymlequipment/read-patterns.ymlequipment/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.ymlperiodic/*.yml
最常见判断:
- 要改全局行为 →
periodic/settings.yml - 要写具体效果模板 →
periodic/*.yml
常见用途:
- 脱战回血
- 周期伤害
- 周期治疗
- direct 模式
- instance 模式
- 生命周期 hooks
4)我在做伤害模型
优先看:
attributes/*.ymldamage_types/*.ymlstages/*.ymlpipelines/*.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 / 周期实例压测
它不是正式服主配置入口,更像一套热点放大用的测试档。
四、新手最不容易乱的修改顺序
建议顺序:
attributes/*.ymlequipment/read-patterns.ymlbuffs/*.ymlperiodic/settings.yml与periodic/*.ymldamage_types/*.ymlstages/*.ymlpipelines/*.ymldisplay.yml/gui/attribute-stats.yml
原因很简单:
- 先把属性和读取跑通
- 再配 Buff / 周期效果
- 最后再碰战斗模型和显示层
五、这一页最该记住的重点
config.yml不是万能入口,很多功能已经拆到专门目录。- DOT / HOT 优先看
periodic/settings.yml与periodic/*.yml。 - 战斗系统不要再按旧的
combat/*心智去找文件。 - 伤害通道归属现在在属性里的
channel + channel-role。 damage_types/*.yml负责显示与可选减伤公式,不负责编排 Stage。- 真正的战斗步骤定义在
stages/*.yml,顺序定义在pipelines/*.yml。
如果你下次又忘了“该改哪份文件”,直接回来看第二节“最短索引”就行。
