points-rewards.yml
points-rewards.yml 管的是“成就分达到多少后,可以额外领取什么奖励”。
它不是单个成就自己的 rewards:,而是整套成就系统的第二层奖励线。
最适合做:
- 成就总分档位奖励
- 某分类专属成长奖励
- 累计收集奖励
- 成就商店前置门槛
两大分组
| 分组 | 作用 |
|---|---|
total-rewards | 总成就分奖励 |
category-rewards | 分类成就分奖励 |
总分奖励
yaml
total-rewards:
beginner:
name: "&a初级收集者"
points: 50
rewards:
- "cmd{give {player} diamond 5}"
- "cmd{eco give {player} 1000}"
message: "&a恭喜! 你获得了 &e初级收集者 &a奖励!"这里的 beginner 是奖励 ID,不会直接显示给玩家,但会影响:
/ach claim <奖励ID>- 奖励领取状态记录
- PAPI 奖励序列
分类奖励
yaml
category-rewards:
combat:
combat_beginner:
name: "&c战斗新手"
points: 30
rewards:
- "mm{新手剑}"这层的结构是:
- 第一层:分类 ID
- 第二层:奖励 ID
也就是说,这条奖励只在 combat 分类成就分达标时可领。
当前实现支持的奖励语法
按当前文件注释和奖励处理逻辑,最推荐的是统一 rewards: 列表。
| 写法 | 说明 |
|---|---|
cmd{命令} | 控制台执行命令 |
cmd[player]{命令} | 玩家执行命令 |
mm{物品ID} | MythicMobs 物品 |
mm{物品ID:数量} | MythicMobs 物品带数量 |
ni{物品ID} | NeigeItems 物品 |
ni{物品ID:数量} | NeigeItems 物品带数量 |
ly{物品ID} | LyItemSave 物品 |
ly{物品ID:数量} | LyItemSave 物品带数量 |
attr{属性名: 数值} | 固定值属性奖励 |
attr{属性名: 数值(%)} | 百分比属性奖励 |
其中 {player} 可以直接替换成玩家名。
旧格式还兼容吗
还兼容。
按当前注释说明,旧版的这些字段仍然支持:
commandsattributes
但如果你是新项目,建议直接统一到 rewards: 列表,后面更好维护。
领取规则
这套奖励有几个规则要先想清楚:
- 每条奖励只能领取一次
- 总分奖励看的是全分类总和
- 分类奖励只看对应分类
- 属性奖励属于永久奖励,重新登录后仍然会恢复
使用建议
- 先把奖励 ID 命名规范定好,后面
/ach claim和 PAPI 调用都要靠它。 - 奖励尽量只做“结果”,不要把复杂前置逻辑写在这里,前置门槛交给成就或任务本身。
- 属性奖励、MM 物品、NI 物品、LY 物品都依赖对应前置插件,没装就别先往线上配。
- 真要做兑换型玩法,建议“成就分奖励”和“成就商店”分开,不要把所有消费逻辑都挤在这里。
常见问题
奖励能看见,但不能领
优先检查:
- 奖励 ID 是否写对
- 当前总分 / 分类分是否真的达标
- 这条奖励是不是已经领过
属性奖励没生效
先确认:
- 服务器是否安装了
AttributePlus - 写的是固定值还是百分比格式
- 属性名是不是你服里真正使用的那套名字