Skip to content

配置说明

LyKit 的配置由主配置文件 config.ymlkit 目录中的礼包配置文件组成。

  • 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必得奖励提示物品。
18必得奖励展示区域,最多展示 8 项。
9随机奖励提示物品。
1017随机奖励展示区域,最多展示 8 项。
18自选奖励提示物品。
1926自选奖励区域,最多展示并选择 8 项。
27领取按钮。
2835填充物品。

礼包界面的实际标题读取礼包文件中的 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:0160: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-itemrandom-itemselect-item 下的每个子节点都是一个奖励条目。子节点名称会作为该奖励的内部 ID,并用于物品不存在时的错误提示。

配置项类型默认值说明
item字符串空字符串奖励物品,格式为 来源@物品ID。当 givetrue 时必须正确填写。
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 4MM4@物品ID通过 MythicMobs 4 的物品管理器读取物品。
MythicMobs 5MM5@物品ID通过 MythicMobs 5 的物品管理器读取物品。
NeigeItemsNI@物品ID通过 NeigeItems 读取物品,并传入当前玩家。
SX-ItemSI@物品ID通过 SX-Item 读取物品,并传入当前玩家。

示例:

yaml
item: 'MM5@ExampleSword'

givecommand 是奖励条目的配置项,不是物品来源。当前代码没有提供使用 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% 你领取了自选奖励二'

领取检查与发放顺序

玩家点击领取按钮后,插件依次执行以下检查和操作:

  1. 检查背包前 36 个槽位中的空槽数量是否达到 need-slot
  2. 检查已选择的奖励数量是否达到 select-item-amount
  3. 检查背包中是否仍存在至少一个名称与 match-item-name 完全一致的物品。
  4. 发放全部必得奖励。
  5. 从随机池中不重复抽取并发放随机奖励。
  6. 发放玩家选择的自选奖励。
  7. 从背包中扣除一个名称与 match-item-name 相同的物品。
  8. 发送 message.success 并关闭界面。

need-slot 只检查空槽数量,不会根据奖励是否能够合并进已有物品堆叠进行计算。配置该值时,应按礼包可能发放的物品种类预留足够空间。