配置说明
修改 config.yml、message.yml 和 reward/*.yml 后,可以使用 /ybb reload 重载。
配置文件
| 文件 / 目录 | 用途 |
|---|---|
config.yml | 基础设置 |
message.yml | 消息文本 |
reward/ | 方块破坏奖励节点 |
配置示例
下面是一个精简后的方块破坏奖励示例。复制时注意文件路径。
yaml
# 是否开启调试模式
debug: false
# 是否启用 bStats
metrics: true
# 是否在同一次方块破坏事件中,命中第一个成功节点后就停止后续节点
stop-after-first-success: falseyaml
default:
match-item:
- "material:{DIAMOND_PICKAXE}"
- "permission:{blockbreak.reward}"
- "papi:{%player_level% >= 10}"
# true 为全部条件都满足,false 为满足任意一个条件
match-item-model: true
succeed-message: "&a方块奖励条件通过"
fail-message: "&c当前工具或条件不满足,无法触发奖励"
# 是否取消原版方块经验
limit-drop-exp: false
# 是否取消原版方块物品
limit-drop-item: true
# 精准采集时是否继续处理该奖励节点
limit-drop-set: false
worlds:
- "world"
blocks:
- "DIAMOND_ORE"
- "DEEPSLATE_DIAMOND_ORE"
reward:
diamond:
chance: 50
commands:
- "[console] give %player% diamond 1"
- "[message] &a你获得了 1 个钻石"
money:
chance: "%player_level% + 10"
commands:
- "[console] eco give %player% {chance}"
- "[actionbar] &a本次方块破坏奖励已发放"yaml
MESSAGE:
RELOAD: "配置文件重载完成"
COMMAND:
RELOAD: "重载插件的配置文件"
ADMIN:
NO_PERMISSION_CMD: "&c你没有权限执行此指令"
NO_CMD: "&c未找到此子指令"
NO_FORMAT: "&c格式错误"
NO_ONLINE: "&c玩家不在线或玩家不存在"
PLUGIN_RELOAD: "§c插件已重载"奖励节点
reward/*.yml 里的顶层节点就是奖励节点名。
玩家破坏方块后,插件会先按 worlds 和 blocks 找到可用节点,再判断 match-item 条件。条件通过后,从该节点的 reward 下按权重抽取一个奖励组执行。
权重
chance 是权重,不是百分比。
例如 common 为 50,rare 为 10 时,总权重是 60。每次执行会在总权重里随机抽取,common 被抽中的概率约为 50 / 60。
chance 支持四则运算和 PlaceholderAPI 变量,例如:
| 写法 | 说明 |
|---|---|
50 | 固定权重 |
%player_level% + 10 | 按玩家等级动态增加权重 |
(%player_level% + 10) * 1.5 | 支持括号和乘除 |
提示
计算结果会向下取整。权重建议保持为大于 0 的数值。
条件
match-item 用于判断玩家破坏方块时的主手物品和玩家状态。
| 条件 | 说明 |
|---|---|
name:{文本} | 完全匹配物品名 |
contain_name:{文本} | 物品名包含指定文本 |
lore:{文本} | 完全匹配一行 Lore |
contain_lore:{文本} | Lore 任意一行包含指定文本 |
material:{DIAMOND_PICKAXE} | 匹配物品类型 |
custom_model_data:{1001} | 匹配 CustomModelData,仅 1.14+ 有效 |
item_model:{minecraft:test} | 匹配 ItemModel,仅 1.21.2+ 有效 |
permission:{权限} | 玩家拥有指定权限 |
no_permission:{权限} | 玩家没有指定权限 |
papi:{%player_level% > 10} | PAPI 数值或字符串判断 |
nbt:{文本} | 主手物品 NBT 包含指定文本 |
match-item-model 为 true 时,需要全部条件都通过;为 false 时,只要有一个条件通过即可。
方块与世界
worlds 用于限制触发世界。填写 * 或不配置时,表示所有世界都可以触发。
blocks 用于限制触发方块。新版本可以写 DIAMOND_ORE 这类材质名,旧版本也可以按插件兼容格式填写数字 ID。
命令类型
| 标识 | 说明 |
|---|---|
[console] | 以控制台身份执行 |
[op] | 临时 OP 执行 |
[message] | 给玩家发送消息 |
[chat] | 让玩家发送聊天 |
[bc] | 全服广播 |
[sound] | 播放音效,格式为 [sound] 音效名:音量:音调 |
[actionbar] | 发送 ActionBar |
[title] | 发送标题,格式为 [title] 主标题:副标题:淡入:停留:淡出 |
[delay] | 延迟后续命令,单位 tick |
| 无标识 | 以玩家身份执行命令 |
可用变量
| 变量 | 说明 |
|---|---|
%player% | 目标玩家名 |
{chance} | 当前抽中奖励节点计算后的权重值 |
{node} | 当前节点 ID |
命令内容也支持 PlaceholderAPI 变量,例如 %player_name%、%player_level%。