配置说明
LyKit 的配置由主配置文件 config.yml 和 kit 目录中的礼包配置文件组成。
config.yml:控制自选状态效果、提示消息和礼包界面样式。kit/*.yml:每个 YAML 文件定义一个礼包,可放在kit目录的子目录中。- 修改配置后,可由服务器管理员执行
/lkit reload重载配置和礼包文件。 - 配置中的颜色代码使用
&,插件读取后会转换为 Minecraft 颜色格式。
主配置文件
主配置文件位于 plugins/LyKit/config.yml。
自选物品效果
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
selected-enchant-enable | 布尔值 | true | 自选物品被选中后,是否在界面中添加幸运附魔光效。该效果只用于标记界面内的选中状态。 |
selected-extra-lore | 字符串列表 | 见默认配置 | 自选物品被选中后,追加到物品 Lore 末尾的文本。支持 & 颜色代码。 |
默认配置:
yaml
selected-enchant-enable: true
selected-extra-lore:
- ''
- '&a<已选中>'关闭附魔光效后,仍可通过 selected-extra-lore 显示选中状态:
yaml
selected-enchant-enable: false
selected-extra-lore:
- ''
- '&a<已选中>'消息配置
| 配置项 | 可用内容 | 触发条件 |
|---|---|---|
message.empty-slot | {amount} | 点击领取时,玩家背包空位少于礼包的 need-slot。{amount} 会替换为要求的空位数量。 |
message.no-select | {amount} | 玩家选择的奖励少于 select-item-amount 时点击领取。{amount} 会替换为要求选择的数量。 |
message.beyond-select | {amount} | 玩家已经选满奖励后继续左键选择。{amount} 会替换为最多可选数量。 |
message.success | 无 | 礼包奖励发放完成并扣除一个匹配物品后。 |
默认配置:
yaml
message:
empty-slot: '&7背包剩余空位不足, 至少需要{amount}个!'
no-select: '&7你需要选择{amount}个物品才可以领取!'
beyond-select: '&7你不能选择那么多物品, 你只能选择{amount}个!'
success: '&a领取成功!'消息支持 & 颜色代码。这里的 {amount} 是 LyKit 自身替换的内容,不是 PlaceholderAPI 变量。
界面配置
礼包界面固定为 36 格,按行展示必得奖励、随机奖励、自选奖励和领取按钮。
| 槽位 | 用途 |
|---|---|
0 | 必得奖励提示物品。 |
1 至 8 | 必得奖励展示区域,最多展示 8 项。 |
9 | 随机奖励提示物品。 |
10 至 17 | 随机奖励展示区域,最多展示 8 项。 |
18 | 自选奖励提示物品。 |
19 至 26 | 自选奖励区域,最多展示并选择 8 项。 |
27 | 领取按钮。 |
28 至 35 | 填充物品。 |
礼包界面的实际标题读取礼包文件中的 title,没有配置时使用礼包 id。主配置内虽然存在 gui.title,但当前代码没有使用该配置项。
通用界面配置
| 配置项 | 类型 | 说明 |
|---|---|---|
gui.title | 字符串 | 默认配置中保留的界面标题格式。当前代码未读取此项,修改后不会改变礼包界面标题。 |
gui.fill-item | 字符串 | 界面底部填充物品的材质。 |
gui.fill-name | 字符串 | 填充物品的显示名称,支持 & 颜色代码。 |
gui.item-name-format | 字符串 | 奖励物品在界面中的名称格式。支持 {name} 和 {amount}。 |
gui.item-name-format 中的内容:
| 内容 | 替换结果 |
|---|---|
{name} | 奖励物品原本的显示名称;物品没有自定义名称时使用材质名称。 |
{amount} | 礼包奖励配置中的实际发放数量。 |
奖励的界面显示数量不会超过该物品的最大堆叠数量,但 {amount} 仍显示配置的实际发放数量。
yaml
gui:
title: '&0当前分类: &n&l{class}'
fill-item: '160:0'
fill-name: '&7封锁'
item-name-format: '{name} x{amount}'界面材质支持运行版本的英文材质名,也兼容插件内已登记的旧版数字 ID 和子 ID,例如 160:0、160:3。
必得区域
| 配置项 | 类型 | 说明 |
|---|---|---|
gui.must-item | 字符串 | 必得区域提示物品的材质。 |
gui.must-name | 字符串 | 必得区域提示物品的名称。 |
gui.must-lore | 字符串列表 | 必得区域提示物品的 Lore。 |
yaml
gui:
must-item: '160:1'
must-name: '&7必定获得'
must-lore:
- ''
- '&7该行物品可全部获得。'随机区域
| 配置项 | 类型 | 说明 |
|---|---|---|
gui.random-item | 字符串 | 随机区域提示物品的材质。 |
gui.random-name | 字符串 | 随机区域提示物品的名称,支持 {amount}。 |
gui.random-lore | 字符串列表 | 随机区域提示物品的 Lore,支持 {amount}。 |
{amount} 会替换为当前礼包的 random-item-amount。
yaml
gui:
random-item: '160:2'
random-name: '&7随机获得'
random-lore:
- ''
- '&7该行物品可随机获得 &6{amount}&7 个。'自选区域
| 配置项 | 类型 | 说明 |
|---|---|---|
gui.select-item | 字符串 | 自选区域提示物品的材质。 |
gui.select-name | 字符串 | 自选区域提示物品的名称,支持 {amount}。 |
gui.select-lore | 字符串列表 | 自选区域提示物品的 Lore,支持 {amount}。 |
{amount} 会替换为当前礼包的 select-item-amount。玩家左键选择奖励,右键取消选择。
yaml
gui:
select-item: '160:3'
select-name: '&7自选物品'
select-lore:
- ''
- '&7该行物品可自选 &6{amount}&7 个。'
- ''
- '&a左键选择 &7| &a右键取消'领取按钮
| 配置项 | 类型 | 说明 |
|---|---|---|
gui.button-item | 字符串 | 领取按钮的材质。 |
gui.button-name | 字符串 | 领取按钮的名称。 |
gui.button-lore | 字符串列表 | 领取按钮的 Lore,可以使用空列表。 |
yaml
gui:
button-item: '160:7'
button-name: '&a点击领取'
button-lore: []完整主配置
yaml
# 选中自选物品后是否添加附魔光效
selected-enchant-enable: true
# 选中后追加到奖励物品末尾的 Lore
selected-extra-lore:
- ''
- '&a<已选中>'
# 提示消息
message:
empty-slot: '&7背包剩余空位不足, 至少需要{amount}个!'
no-select: '&7你需要选择{amount}个物品才可以领取!'
beyond-select: '&7你不能选择那么多物品, 你只能选择{amount}个!'
success: '&a领取成功!'
# 礼包界面
GUI:
title: '&0当前分类: &n&l{class}'
fill-item: '160:0'
fill-name: '&7封锁'
item-name-format: '{name} x{amount}'
must-item: '160:1'
must-name: '&7必定获得'
must-lore:
- ''
- '&7该行物品可全部获得。'
random-item: '160:2'
random-name: '&7随机获得'
random-lore:
- ''
- '&7该行物品可随机获得 &6{amount}&7 个。'
select-item: '160:3'
select-name: '&7自选物品'
select-lore:
- ''
- '&7该行物品可自选 &6{amount}&7 个。'
- ''
- '&a左键选择 &7| &a右键取消'
button-item: '160:7'
button-name: '&a点击领取'
button-lore: []注意
配置节点必须使用小写的 gui。上方完整配置中的节点应写为 gui:,不能写成其他大小写形式。
礼包配置文件
礼包配置文件位于 plugins/LyKit/kit 目录。插件会递归读取该目录及其子目录中的 .yml 文件,因此可以使用子目录整理礼包。
执行 /lkit reload 时,插件会重新读取所有礼包文件。控制台会分别输出每个文件的载入成功或载入失败信息。
基础配置
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id | 字符串 | 无 | 礼包唯一 ID,也是插件内部保存和查找礼包的标识。不同礼包不应使用相同 ID。 |
match-item-name | 字符串 | 空字符串 | 用于识别礼包物品的完整显示名称,支持 & 颜色代码。玩家主手物品名称完全一致时,右键会打开礼包界面。成功领取后会扣除一个同名物品。 |
need-slot | 整数 | 1 | 点击领取时要求的背包空槽数量。插件检查玩家背包前 36 个槽位中的空槽。 |
title | 字符串 | id 的值 | 当前礼包界面的标题,支持 & 颜色代码。 |
must-item | 配置段 | 无 | 必得奖励列表。存在时,领取礼包会执行其中的全部奖励。 |
random-item-amount | 整数 | 1 | 从随机奖励池中抽取多少项。实际抽取数量不会超过随机池的项目数量,同一次领取不会重复抽中同一项。 |
random-item | 配置段 | 无 | 随机奖励池。删除该节点后不发放随机奖励。 |
select-item-amount | 整数 | 0 | 玩家必须选择的奖励数量。领取时选择数量少于此值会被阻止。 |
select-item | 配置段 | 无 | 自选奖励列表。删除该节点后不显示和发放自选奖励。 |
yaml
id: '离渊大礼包'
match-item-name: '&6离渊大礼包'
need-slot: 3
title: '&0离渊大礼包'match-item-name 只比较物品显示名称,不检查物品材质、Lore 或其他数据。领取成功后,插件同样按显示名称从玩家背包中扣除一个物品。
奖励条目
must-item、random-item 和 select-item 下的每个子节点都是一个奖励条目。子节点名称会作为该奖励的内部 ID,并用于物品不存在时的错误提示。
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
item | 字符串 | 空字符串 | 奖励物品,格式为 来源@物品ID。当 give 为 true 时必须正确填写。 |
amount | 整数 | 1 | 发放的物品数量。界面中的 {amount} 也读取该值。 |
give | 布尔值 | true | 是否发放 item 指定的物品。设为 false 时只执行 command。 |
command | 字符串列表 | 空列表 | 选中或抽中该奖励后执行的指令列表。指令先执行,随后再根据 give 决定是否发放物品。 |
yaml
must-item:
物品1:
item: 'MM4@物品ID'
amount: 1
give: true
command:
- '[console]tell %player_name% 你领取了奖励'奖励条目名称可以自定义,但同一个奖励区域内不应重复。
必得奖励
领取礼包时,must-item 下的全部奖励都会发放。界面最多展示前 8 项,但发放逻辑会处理配置中的全部必得奖励。
yaml
must-item:
必得物品一:
item: 'MM5@物品ID'
amount: 1
give: true
command: []
必得物品二:
item: 'NI@物品ID'
amount: 3
give: true
command:
- '[console]tell %player_name% 获得了必得奖励'随机奖励
random-item-amount 控制抽取项目数量。抽取范围是完整的 random-item 奖励池,同一次领取不会重复抽中同一奖励条目。
界面最多展示前 8 项随机奖励,但抽取逻辑会使用配置中的完整随机池。
yaml
random-item-amount: 1
random-item:
随机物品一:
item: 'MM4@物品ID'
amount: 1
give: true
command: []
随机物品二:
item: 'SI@物品ID'
amount: 1
give: true
command:
- '[console]tell %player_name% 获得了随机奖励'当 random-item-amount 大于随机池项目数时,实际发放数量会限制为随机池项目数。
自选奖励
玩家在礼包界面中左键选择奖励,右键取消选择。选择数量达到 select-item-amount 后,不能继续选择其他奖励。
yaml
select-item-amount: 1
select-item:
自选物品一:
item: 'MM5@物品ID'
amount: 1
give: true
command: []
自选物品二:
item: 'NI@物品ID'
amount: 2
give: true
command:
- '[console]tell %player_name% 选择了一项奖励'自选区域只有 8 个可点击槽位,因此 select-item 最多应配置 8 项,并且 select-item-amount 不应大于可选择的项目数量。否则玩家无法满足领取要求。
奖励物品来源
item 必须使用 来源@物品ID 格式。当前代码确认支持以下来源:
| 来源 | 写法 | 说明 |
|---|---|---|
| MythicMobs 4 | MM4@物品ID | 通过 MythicMobs 4 的物品管理器读取物品。 |
| MythicMobs 5 | MM5@物品ID | 通过 MythicMobs 5 的物品管理器读取物品。 |
| NeigeItems | NI@物品ID | 通过 NeigeItems 读取物品,并传入当前玩家。 |
| SX-Item | SI@物品ID | 通过 SX-Item 读取物品,并传入当前玩家。 |
示例:
yaml
item: 'MM5@ExampleSword'give 和 command 是奖励条目的配置项,不是物品来源。当前代码没有提供使用 give@物品ID 发放原版物品的奖励来源。
如果来源插件未安装、物品 ID 不存在或物品无法读取,礼包界面或领取过程会向玩家发送物品不存在的错误。应确保服务器安装了礼包实际使用的物品来源插件。
奖励指令
每个奖励条目都可以配置多条指令:
| 写法 | 执行身份 |
|---|---|
[console]指令 | 由控制台执行。 |
[op]指令 | 临时以管理员身份让领取玩家执行,执行后恢复玩家原来的管理员状态。 |
指令 | 由领取玩家直接执行。 |
yaml
command:
- '[console]give %player_name% diamond 1'
- '[op]say 我领取了礼包'
- 'say 我领取了礼包'指令内容会先交给 PlaceholderAPI 处理,因此可以使用当前服务器已安装扩展提供的变量,例如 %player_name%。需要使用变量替换时,应安装并正常启用 PlaceholderAPI 及对应变量扩展。
指令前缀会从指令文本中移除,配置时不需要在前缀后额外添加 /。
如果奖励只需要执行指令,不需要发放物品,可将 give 设为 false:
yaml
must-item:
指令奖励:
item: 'MM5@不会使用的物品ID'
amount: 1
give: false
command:
- '[console]say %player_name% 领取了指令奖励'当 give: false 时,插件不会解析或发放 item 对应的物品,但该条目在礼包界面展示时仍会尝试读取 item。如果该奖励需要正常显示,仍应填写有效物品。
完整礼包配置
yaml
# 礼包唯一 ID
id: '离渊大礼包'
# 玩家主手物品名称与此项完全一致时,右键打开礼包
# 领取成功后会扣除一个同名物品
match-item-name: '&6离渊大礼包'
# 领取时要求的背包空槽数量
need-slot: 3
# 礼包界面标题
# 删除后默认使用 id
title: '&0离渊大礼包'
# 全部发放的必得奖励
must-item:
物品1:
item: 'MM4@物品ID'
amount: 1
give: true
command:
- '[console]tell %player_name% 你领取了必得奖励'
# 从随机池中不重复抽取的项目数量
random-item-amount: 1
# 随机奖励池
random-item:
物品1:
item: 'MM4@物品ID'
amount: 1
give: true
command:
- '[console]tell %player_name% 你领取了随机奖励一'
物品2:
item: 'MM5@物品ID'
amount: 1
give: true
command:
- '[console]tell %player_name% 你领取了随机奖励二'
# 玩家必须选择的项目数量
select-item-amount: 1
# 自选奖励列表
select-item:
物品1:
item: 'NI@物品ID'
amount: 1
give: true
command:
- '[console]tell %player_name% 你领取了自选奖励一'
物品2:
item: 'SI@物品ID'
amount: 1
give: true
command:
- '[console]tell %player_name% 你领取了自选奖励二'领取检查与发放顺序
玩家点击领取按钮后,插件依次执行以下检查和操作:
- 检查背包前 36 个槽位中的空槽数量是否达到
need-slot。 - 检查已选择的奖励数量是否达到
select-item-amount。 - 检查背包中是否仍存在至少一个名称与
match-item-name完全一致的物品。 - 发放全部必得奖励。
- 从随机池中不重复抽取并发放随机奖励。
- 发放玩家选择的自选奖励。
- 从背包中扣除一个名称与
match-item-name相同的物品。 - 发送
message.success并关闭界面。
need-slot 只检查空槽数量,不会根据奖励是否能够合并进已有物品堆叠进行计算。配置该值时,应按礼包可能发放的物品种类预留足够空间。