奖励系统
概述
奖励配置在宝箱文件的 claim 节点下。插件使用权重随机从 generator 中抽取物品,放入 GUI 的指定槽位供玩家领取。
基本结构
claim:
# 布局内可领取的物品编号(对应 layout 中的字符)
key: 1
# 生成的物品数量,支持范围写法
amount: 3~8
# 物品布局方式
# random 随机分布
# order 顺序分布
layout: random
generator:
# 自定义编号(可以有多个)
custom:
chance: 30
display: overwrite
give: none
unique: true
material: "mm: treasure"
amount: 1~3
name: "生成了 {name}"
flags:
- 'hide_attribute'
nbt:
c1:
c2: 'xxx'
lore:
- "被覆盖的lore"
actions:
left: |-
tell "获取了"
generator 配置详解
每个 generator 条目代表一种可能的奖励物品:
| 配置项 | 说明 |
|---|---|
chance | 权重值(整数),值越大被抽中的概率越高 |
material | 物品来源,格式为 来源: 物品ID,详见下方物品源表 |
amount | 物品数量,支持 最小~最大 范围写法,如 1~3 |
name | 显示名称,留空则不修改。{name} 会替换为源物品的名称 |
lore | 显示 Lore 列表 |
flags | ItemFlag 列表,如 hide_attribute |
nbt | 自定义 NBT 数据 |
unique | 是否唯一生成(默认 false),设为 true 则该奖励在一次开箱中最多出现一次 |
display | 显示规则,控制 Lore 如何处理 |
give | 给予规则,控制玩家实际获得什么物品 |
actions | 点击动作,支持按点击类型绑定 Kether 脚本 |
display 显示规则
| 值 | 说明 |
|---|---|
overwrite | 覆盖源物品的 Lore |
add | 在源物品 Lore 末尾追加 |
clear | 清空 Lore |
insert:N | 在第 N 行插入 Lore |
give 给予规则
| 值 | 说明 |
|---|---|
none | 点击后物品消失,不给予任何物品 |
source | 给予 material 生成的原始物品 |
display | 给予 GUI 中显示的物品(经过 name/lore 修改后的) |
actions 点击动作
支持按点击类型绑定不同的 Kether 脚本:
actions:
left: |-
tell "左键获取了"
right: |-
tell "右键获取了"
all: |-
tell "任意点击都会执行"
all 键表示任意点击类型都会执行。Kether 脚本中可使用 &amount 变量获取物品数量。
物品源
通过 material 字段指定物品来源,格式为 来源前缀: 物品ID。不写前缀则默认为原版物品。
| 来源 | 前缀 | 别名 | 格式示例 |
|---|---|---|---|
| Minecraft 原版 | minecraft | mc | stone 或 minecraft: stone |
| MythicMobs | mythicmobs | mm, mythic | mm: treasure |
| Zaphkiel | zaphkiel | zap, zl | zap: itemID |
| ItemsAdder | itemsadder | ia | ia: namespace:itemID |
| MMOItems | mmoitems | mi, mmo | mi: SWORD,itemID |
| NeigeItems | neigeitems | ni | ni: itemID |
| Oraxen | oraxen | ox | ox: itemID |
| SX-Item | sxitem | sx, si | sx: itemID:key1:value1 |
| CraftEngine | craftengine | ce | ce: namespace:itemID |
| PxRpg | pxrpg | pr | pr: item:itemID 或 pr: equip:itemID 或 pr: gem:itemID |
| AzureFlow | azureflow | af | af: itemID |
提示
物品源为软依赖,只有服务器安装了对应插件才会自动挂钩。未安装的物品源会回退到原版物品解析。
权重计算
权重是相对值。例如有三个奖励,权重分别为 30、50、20,则:
- 奖励 A 概率 = 30 / (30+50+20) = 30%
- 奖励 B 概率 = 50 / (30+50+20) = 50%
- 奖励 C 概率 = 20 / (30+50+20) = 20%
物品掉落
当玩家背包满时,领取的物品会掉落到地面。如果 config.yml 中 drop_owner 设为 true,掉落的物品只有该玩家能拾取。