主题
这页带你从零开始配置一个完整的 Buff 效果,并验证它能正常工作。
不用担心,我们会一步一步来,每个字段都会详细解释。
一、准备工作
确认文件位置
Buff 配置文件位于:
text
plugins/HNAttribute/buffs/你可以:
- 直接编辑
buffs/default.yml - 或创建新文件如
buffs/custom.yml
理解 Buff 的本质
在 HNAttribute 里,Buff 本质上是:
一组按
source管理的属性修饰符
用人话说就是:
- Buff 不是只挂一个名字,而是真的会改变角色的属性
- 比如"力量提升"Buff 会增加攻击力,"钢铁护体"Buff 会增加防御力
- 这些改变会真实地参与战斗计算、显示、原版属性同步
它会:
- 给目标挂一个状态标记: 比如"力量提升"、"中毒"、"加速"
- 把配置编译成属性修饰符: 比如"增加 50 点攻击力"
- 以
buff:<key>的形式进入属性系统: 系统会记录这些属性来自哪个 Buff - 参与战斗结算、显示、原版同步: 这些属性会真实地影响战斗结果
举个例子:
你给玩家施加了一个"力量提升"Buff:
- 配置为"增加 50 点攻击力"
- 系统会创建一个来源为
buff:力量提升的修饰符 - 玩家的攻击力会真实地增加 50 点
- 这 50 点攻击力会参与伤害计算
- 当 Buff 结束时,这 50 点攻击力会被移除
二、第一步:写一个最简单的 Buff
打开 buffs/custom.yml,添加:
yml
新手力量: # Buff 的唯一标识符 (key)
display: "&c新手力量" # 显示名称,支持颜色代码 (&c = 红色)
default-time: 120 # 默认持续时间 (tick), 120 tick = 6 秒
reapply-mode: REFRESH # 重施策略: REFRESH(刷新时间), IGNORE(忽略新的), REPLACE(替换旧的)
attributes: # 属性修饰列表
attack_damage: # 要修改的属性 ID (攻击力)
operation: ADD # 操作类型: ADD(加法), MULTIPLY_BASE(基础乘法), MULTIPLY_TOTAL(总值乘法)
formula: "10 + level * 5" # 公式: level 是 Buff 等级 (1级=15, 2级=20, 3级=25)这段配置的含义
- key:
新手力量(Buff 的唯一标识) - display:
&c新手力量(显示名称) - default-time:
120(默认持续 120 tick,即 6 秒) - reapply-mode:
REFRESH(重复施加时刷新持续时间) - attributes: 定义 Buff 对属性的影响
attack_damage: 增加攻击力operation: ADD: 使用加法运算formula: 公式为10 + level * 5- 1 级 = 15 攻击力
- 2 级 = 20 攻击力
- 3 级 = 25 攻击力
三、第二步:重载配置
保存文件后,在游戏中执行:
text
/hnattr reload四、第三步:验证 Buff 是否加载
执行:
text
/hnattr buff list 新手如果看到 新手力量,说明 Buff 已成功加载。
五、第四步:施加 Buff
给自己施加 Buff:
text
/hnattr buff apply 新手力量 120 2参数说明:
新手力量: Buff key120: 持续时间 (tick)2: 等级
六、第五步:查看 Buff 是否生效
查看当前 Buff
text
/hnattr buffs应该能看到 新手力量 及其剩余时间。
查看属性来源
text
/hnattr source应该能看到 buff:新手力量 这个来源。
追踪属性变化
text
/hnattr trace attack_damage应该能看到来自 buff:新手力量 的 +20 攻击力 (2 级)。
七、进阶:配置双属性 Buff
现在我们配置一个同时影响攻击力和暴击率的 Buff:
yml
狂战姿态: # Buff key
display: "&c狂战姿态" # 显示名称
default-time: 120 # 持续 120 tick (6 秒)
reapply-mode: REFRESH # 重施时刷新时间
attributes: # 可以同时修改多个属性
attack_damage: # 第一个属性: 攻击力
operation: ADD
formula: "15 + level * 8" # 1级=23, 2级=31, 3级=39
crit_chance: # 第二个属性: 暴击率
operation: ADD
formula: "4 + level * 2" # 1级=6, 2级=8, 3级=10验证步骤
text
/hnattr reload
/hnattr buff apply 狂战姿态 120 1
/hnattr buffs
/hnattr trace attack_damage
/hnattr trace crit_chance八、进阶:配置 Debuff
Debuff 本质上就是负面效果的 Buff,只需要使用负数或降低属性:
yml
易伤: # Debuff 示例 (负面效果)
display: "&c易伤" # 显示名称
default-time: 60 # 持续 60 tick (3 秒)
reapply-mode: REFRESH # 重施时刷新
attributes:
damage_reduction: # 减伤属性
operation: ADD
formula: "-(8 + level * 3)" # 使用负数降低属性 (1级=-11, 2级=-14, 3级=-17)这个 Debuff 会降低目标的减伤能力。
九、进阶:配置高风险高收益 Buff
yml
狂暴:
display: "&4狂暴"
default-time: 100
reapply-mode: REFRESH
attributes:
attack_damage:
operation: ADD
formula:
mode: expression
script: "25 + level * 12"
crit_chance:
operation: ADD
formula:
mode: expression
script: "6 + level * 2"
defense:
operation: ADD
formula:
mode: expression
script: "-(20 + level * 8)"这个 Buff 会:
- 大幅提高攻击力和暴击率
- 但同时降低防御力
十、重施策略详解
REFRESH (推荐,最常用)
重复施加时刷新持续时间和等级。
适合什么场景?
- 大多数普通 Buff
- 你希望重复施加时重置持续时间
举个例子:
yml
力量提升:
reapply-mode: REFRESH
default-time: 100 # 持续 5 秒- 玩家获得"力量提升",剩余 5 秒
- 2 秒后再次获得"力量提升",剩余时间重置为 5 秒
- 如果第二次施加的等级更高,会更新为新等级
IGNORE
已有同 key Buff 时忽略新的。
适合什么场景?
- "已有就不再重复挂"的状态
- 比如无敌、复活保护等特殊状态
举个例子:
yml
无敌:
reapply-mode: IGNORE
default-time: 100- 玩家有"无敌"状态时,再次施加会被忽略
- 必须等当前"无敌"结束后才能再次施加
REPLACE
用新 Buff 完全替换旧 Buff。
适合什么场景?
- "高等级同名 Buff 顶掉旧 Buff"的场景
- 你希望新 Buff 完全覆盖旧 Buff
举个例子:
yml
力量提升:
reapply-mode: REPLACE- 玩家有 1 级"力量提升"
- 施加 2 级"力量提升"会完全替换掉旧的
- 旧 Buff 的剩余时间会被丢弃,使用新 Buff 的时间
十一、操作类型详解
ADD (推荐新手优先使用)
直接加值,最容易理解。
yml
operation: ADD
formula: "20" # 直接 +20示例:
装备攻击力: 100
Buff: +20
→ 最终 = 120MULTIPLY_BASE (基础乘法)
对基础值进行百分比加成。
yml
operation: MULTIPLY_BASE
formula: "0.5" # 50% 加成示例:
装备攻击力: 100 (ADD)
Buff: 50% (MULTIPLY_BASE)
计算: 100 × (1 + 0.5) = 150多个 MULTIPLY_BASE 叠加:
装备: 100 (ADD)
Buff1: 50% (MULTIPLY_BASE)
Buff2: 30% (MULTIPLY_BASE)
计算: 100 × (1 + 0.5 + 0.3) = 180
→ 百分比是相加的,不是相乘!MULTIPLY_TOTAL (总值乘法)
对最终值进行百分比加成,在所有计算的最后阶段应用。
yml
operation: MULTIPLY_TOTAL
formula: "0.2" # 20% 加成示例:
装备: 100 (ADD)
Buff1: 50% (MULTIPLY_BASE)
Buff2: 20% (MULTIPLY_TOTAL)
计算:
1. 基础值: 100
2. 应用 MULTIPLY_BASE: 100 × 1.5 = 150
3. 应用 MULTIPLY_TOTAL: 150 × 1.2 = 180计算顺序总结
1
ADD→得到基础值
2
MULTIPLY_BASE(百分比相加)→得到中间值
3
MULTIPLY_TOTAL(逐个相乘)→得到最终值
如何选择
- 刚开始配置: 优先用
ADD - 常规百分比增益: 用
MULTIPLY_BASE - 最终爆发倍率: 用
MULTIPLY_TOTAL(需谨慎测试)
十二、常见问题
Buff 没有加载
可能的原因:
- 文件位置不对: 确保文件保存在
plugins/HNAttribute/buffs/目录 - YAML 格式错误: 检查缩进是否正确(用空格,不要用 Tab)
- 没有重载: 保存后需要执行
/hnattr reload
如何排查:
text
/hnattr buff list如果看不到你的 Buff,说明没有加载成功。检查控制台是否有错误信息。
Buff 施加后没效果
可能的原因:
- Buff 没有真正施加: 用
/hnattr buffs查看是否有这个 Buff - 属性 ID 错误: 比如写成了
attack而不是attack_damage - 公式错误: 公式语法有问题,导致计算失败
- 来源没有进入系统: 用
/hnattr source查看是否有buff:<key>来源
如何排查:
按顺序执行这些命令:
text
/hnattr buffs # 1. 确认 Buff 是否存在
/hnattr source # 2. 确认来源是否进入系统
/hnattr trace <属性ID> # 3. 确认属性是否有修饰符如果 /hnattr buffs 显示有 Buff,但 /hnattr source 没有对应来源,说明 Buff 配置有问题。
数值不对
可能的原因:
- 公式错误: 检查
formula是否正确 - 操作类型错误: 检查
operation是否选对(ADD/MULTIPLY_BASE/MULTIPLY_TOTAL) - 等级参数错误: 检查施加 Buff 时的等级参数是否正确
如何排查:
text
/hnattr trace <属性ID>这个命令会显示:
- 这个属性有哪些修饰符
- 每个修饰符的来源、操作类型、数值
- 最终计算结果
对比配置和实际数值,找出差异。
属性 ID 不知道怎么写
解决方法:
text
/hnattr info这个命令会列出所有已注册的属性 ID。
常用的属性 ID:
attack_damage: 攻击力defense: 防御力max_health: 最大生命值crit_chance: 暴击率crit_multiplier: 暴击倍率movement_speed: 移动速度
十三、与 MythicMobs 集成
如果你想在 MythicMobs 技能中使用 Buff:
text
hna-buff{key="新手力量";time=100;level=1} @target
hna-buff{key="狂战姿态";time=120;level=2} @self更多 MythicMobs 集成方法,参见:
十四、下一步
现在你已经学会了如何配置 Buff,可以继续学习:
- Buff Cookbook - 更多 Buff 配方
- Buff 配置速查 - 快速查阅字段说明
- 如何配置周期伤害治疗 - 配置 DOT/HOT 效果
