主题
可用变量
在 buffs/*.yml 的 attributes 配置中,公式可以使用以下变量:
| 变量 | 含义 | 类型 | 示例值 |
|---|---|---|---|
level | Buff 等级 | 整数 | 1, 2, 3... |
time | 剩余时间(tick) | 整数 | 100, 80, 60... |
duration | 总持续时间(tick) | 整数 | 120 |
使用场景
这些变量用于 Buff 配置文件中的属性修改公式。
配置文件位置:plugins/HNAttribute/buffs/*.yml
示例 1:基于等级的加成
yml
力量提升:
display: "&c力量提升"
default-time: 100
attributes:
attack_damage:
operation: ADD
formula: "10 + level * 5"
# 1级 = 15 攻击力
# 2级 = 20 攻击力
# 3级 = 25 攻击力示例 2:等级平方增长
yml
狂暴:
display: "&c狂暴"
default-time: 100
attributes:
attack_damage:
operation: ADD
formula: "level * level * 2"
# 1级 = 2
# 2级 = 8
# 3级 = 18
# 4级 = 32示例 3:随时间衰减
yml
衰减效果:
display: "&e衰减"
default-time: 100
attributes:
attack_damage:
operation: ADD
formula: "level * 10 * (time / duration)"
# 刚施加时:100% 效果
# 剩余 50% 时间:50% 效果
# 即将结束:接近 0示例 4:随时间增强
yml
蓄力:
display: "&a蓄力"
default-time: 100
attributes:
attack_damage:
operation: ADD
formula: "level * 10 * (1 - time / duration)"
# 刚施加时:0% 效果
# 剩余 50% 时间:50% 效果
# 即将结束:100% 效果示例 5:时间阈值判断
yml
爆发:
display: "&6爆发"
default-time: 100
attributes:
attack_damage:
operation: ADD
formula: "time < 20 ? level * 50 : level * 10"
# 最后 1 秒(20 tick):50 倍加成
# 其他时间:10 倍加成示例 6:多条件组合
yml
复杂Buff:
display: "&d复杂Buff"
default-time: 100
attributes:
attack_damage:
operation: ADD
formula: |-
if (level >= 3 && time > 50) {
return 100
} else if (level >= 2) {
return 50
} else {
return 20
}
# 3级且剩余时间>50:100 攻击力
# 2级:50 攻击力
# 1级:20 攻击力注意事项
1. 时间单位是 tick
- 1 秒 = 20 tick
time是剩余时间,会递减duration是总持续时间,固定不变
2. 除零保护
当使用 time 或 duration 做除数时,注意保护:
yml
# ❌ 危险
formula: "100 / time"
# ✅ 安全
formula: "time > 0 ? 100 / time : 0"3. 等级从 1 开始
Buff 等级最小值是 1,不是 0。
调试方法
使用命令查看 Buff 效果:
text
/hnattr buffs # 查看当前所有 Buff
/hnattr lookup # 查看最终属性值
/hnattr trace <属性ID> # 查看属性计算过程相关文档
- 公式系统概述 - 了解公式语法
- 运算符与函数参考 - 查看可用的运算符和函数
- 如何配置Buff效果 - Buff 配置完整教程
- Buff 系统 - Buff 系统详细说明
