跳到主要内容

奖励系统

概述

奖励配置在宝箱文件的 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 列表
flagsItemFlag 列表,如 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 原版minecraftmcstoneminecraft: stone
MythicMobsmythicmobsmm, mythicmm: treasure
Zaphkielzaphkielzap, zlzap: itemID
ItemsAdderitemsadderiaia: namespace:itemID
MMOItemsmmoitemsmi, mmomi: SWORD,itemID
NeigeItemsneigeitemsnini: itemID
Oraxenoraxenoxox: itemID
SX-Itemsxitemsx, sisx: itemID:key1:value1
CraftEnginecraftenginecece: namespace:itemID
PxRpgpxrpgprpr: item:itemIDpr: equip:itemIDpr: gem:itemID
AzureFlowazureflowafaf: itemID
提示

物品源为软依赖,只有服务器安装了对应插件才会自动挂钩。未安装的物品源会回退到原版物品解析。

权重计算

权重是相对值。例如有三个奖励,权重分别为 30、50、20,则:

  • 奖励 A 概率 = 30 / (30+50+20) = 30%
  • 奖励 B 概率 = 50 / (30+50+20) = 50%
  • 奖励 C 概率 = 20 / (30+50+20) = 20%

物品掉落

当玩家背包满时,领取的物品会掉落到地面。如果 config.ymldrop_owner 设为 true,掉落的物品只有该玩家能拾取。