Are you an LLM? You can read better optimized documentation at /paid-plugins\lyinventory\inventories.md for this page in Markdown format
背包配置
背包配置文件放在 plugins/LyInventory/inventory 目录中。每个 YAML 文件定义一个独立背包,包括界面标题、界面大小、打开限制、固定展示物品和可保存装备的功能槽位。
插件重载时会覆盖 示例背包.yml,并且不会将该文件载入为正式背包。创建背包时需要先复制该文件、重命名,再编辑复制后的文件。
完整结构
yaml
id: 'equipment'
title: '&6装备背包'
size: 6
permission: ''
condition: []
default-set:
边框:
id: '160:0'
name: ' '
lore:
- '&7边界'
command: []
slot: '0-8,45-53'
slot-set:
头盔:
slot: 22
id: '160:9'
name: ' '
lore:
- '&7头盔槽位'
- '&7解锁状态: {unlock}'
replace-condition:
- 'lore:{类型:头盔}<->&7该槽位只可放入头盔。'
click-command: []
replace-command: []
take-out-command: []
unlock-condition: []
unlock-command: []
attribute-condition: []
take-out-condition: []
attribute-rate: 1.0
mapping-slot: ''1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
背包配置需要直接从 id 开始,不要在最外层额外添加文件名或背包名称节点。
背包基础配置
yaml
id: 'equipment'
title: '&6装备背包'
size: 6
permission: ''
condition: []1
2
3
4
5
2
3
4
5
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
id | 字符串 | 无 | 背包唯一 ID,用于指令、变量、API、玩家数据和外部槽位映射 |
title | 字符串 | 离渊背包 | 背包界面标题,支持使用 & 颜色符 |
size | 整数 | 6 | 背包行数,实际读取时会限制在 1 至 6 |
permission | 字符串 | 空字符串 | 玩家打开自己的背包时需要的权限,删除或留空表示不限制 |
condition | 字符串列表 | 空列表 | 打开背包时需要满足的条件 |
size 表示行数,不是槽位总数。界面槽位总数等于 size × 9,例如 size: 6 会创建 54 格界面,有效槽位编号为 0 至 53。
每个正式背包都需要填写非空且不重复的 id。背包 ID 会写入玩家存档;修改已经投入使用的 ID 后,旧 ID 下保存的装备和解锁记录不会自动转移到新 ID。
打开权限
permission 只在玩家打开自己的背包时检查。管理员查看其他玩家背包时不会使用目标背包的该项权限进行限制。
yaml
permission: 'inventory.equipment'1
不需要权限时可以删除该项或留空:
yaml
permission: ''1
打开条件
yaml
condition:
- 'papi:{%player_level% >= 10}'
- 'permission:{inventory.equipment}'1
2
3
2
3
示例配置确认支持以下打开条件:
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 检测 PlaceholderAPI 变量表达式 |
permission:{权限} | 玩家拥有指定权限时通过 |
nopermission:{权限} | 玩家没有指定权限时通过 |
列表中的条件需要全部满足。任意条件不满足时,插件会阻止打开背包。
使用 papi 条件或 %变量% 时需要安装 PlaceholderAPI。
默认物品
default-set 用于放置边框、说明、按钮、玩家信息等固定物品。默认物品不会保存玩家装备,只负责展示内容、执行点击指令和刷新当前界面。
yaml
default-set:
边框:
id: '160:0'
name: ' '
lore:
- '&7边界'
command:
- 'tell %player_name% 你点击了边框'
slot: '0-8,9,17,18,26,27,35,36,44,45-53'
玩家信息:
id: '160:2'
name: '&6玩家信息'
lore:
- ''
- '&7名字: %player_name%'
- '&7等级: %player_level%'
- '&7世界: %player_world%'
- ''
- '&a点击刷新'
command:
- 'tell %player_name% 你刷新了玩家信息'
slot: '23'1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| 配置项 | 类型 | 说明 |
|---|---|---|
| 节点名称 | 字符串 | 当前默认物品的配置名称,只用于区分同一文件中的不同物品 |
id | 字符串 | 展示物品 ID,项目示例使用旧版 数字ID:子ID 格式 |
name | 字符串 | 展示名称,支持 & 颜色符 |
lore | 字符串列表 | 展示说明,支持 & 颜色符和 PlaceholderAPI 变量 |
command | 字符串列表 | 玩家点击默认物品后执行的指令 |
slot | 字符串 | 物品占用的界面槽位,支持单个槽位、多个槽位和连续范围 |
默认物品槽位
default-set.*.slot 使用从 0 开始的界面槽位编号。多个值使用英文逗号分隔,连续范围使用半角减号连接。
| 写法 | 对应槽位 |
|---|---|
'23' | 仅槽位 23 |
'0,8,45,53' | 槽位 0、8、45、53 |
'0-8' | 槽位 0 至 8,包含两端 |
'0-8,45-53' | 第一行和最后一行 |
配置的槽位应处于当前背包范围内。例如 6 行背包的有效槽位为 0 至 53。
默认物品指令
command 中的指令会先解析 PlaceholderAPI 变量,再由控制台执行。直接填写命令内容,不要添加 /,也不要添加 [console]、[op] 或 [player] 前缀。
yaml
command:
- 'tell %player_name% 你点击了按钮'1
2
2
点击默认物品后,插件会重新构建当前背包中的默认物品和未装备物品的功能槽位。名称、Lore、变量和 {unlock} 状态会随之刷新。
查看其他玩家背包时,默认物品指令不会由查看者代替背包主人执行。
功能槽位
slot-set 定义真正保存玩家装备的功能槽位。每个子节点名称就是槽位 ID,会用于玩家数据、变量、API、条件引用和外部界面映射。
yaml
slot-set:
头盔:
slot: 22
id: '160:9'
name: ' '
lore:
- '&7头盔槽位'
- '&7解锁状态: {unlock}'
replace-condition:
- 'lore:{类型:头盔}<->&7该槽位只可放入头盔。'
click-command:
- 'tell %player_name% 你点击了头盔槽位'
replace-command:
- 'tell %player_name% 你将装备放入了头盔槽位'
take-out-command:
- 'tell %player_name% 你从头盔槽位取出了装备'
unlock-condition:
- 'permission:{unlock.头盔}'
unlock-command:
- 'tell %player_name% 你解锁了头盔槽位'
attribute-condition:
- 'permission:{unlock.头盔}'
take-out-condition:
- 'permission:{takeout.头盔}'
attribute-rate: 1.0
mapping-slot: ''1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| 节点名称 | 字符串 | 无 | 槽位 ID,需要在全部背包配置中保持唯一 |
slot | 整数 | 0 | 功能槽位在原版背包界面中的位置,只能填写一个槽位编号 |
id | 字符串 | 160:0 | 槽位没有装备时显示的物品 ID |
name | 字符串 | 空字符串 | 空槽位的显示名称 |
lore | 字符串列表 | 空列表 | 空槽位的显示说明,可使用 {unlock} 和 PlaceholderAPI 变量 |
replace-condition | 字符串列表 | 空列表 | 放入或替换装备时需要满足的条件 |
click-command | 字符串列表 | 空列表 | 玩家点击功能槽位时执行的指令 |
replace-command | 字符串列表 | 空列表 | 成功放入或替换装备后执行的指令 |
take-out-command | 字符串列表 | 空列表 | 成功取出装备后执行的指令 |
unlock-condition | 字符串列表 | 空列表 | 解锁槽位需要满足的条件,可包含资源扣除项 |
unlock-command | 字符串列表 | 空列表 | 槽位成功解锁后执行的指令 |
attribute-condition | 字符串列表 | 空列表 | 当前装备属性参与加载时需要满足的条件 |
take-out-condition | 字符串列表 | 空列表 | 取出或替换已有装备时需要满足的条件 |
attribute-rate | 小数 | 1.0 | 当前槽位的属性 Lore 数值倍率 |
mapping-slot | 字符串 | 空字符串 | GermPlugin 槽位的 Identity,用于匹配萌芽界面槽位 |
项目示例明确要求槽位 ID 全局不可重复。不要在两个背包中使用相同的 slot-set 节点名称,否则玩家数据、API、条件引用或外部槽位映射可能指向错误的槽位。
slot-set.*.slot 只能填写一个整数,不能填写 '0-8' 等范围。不同功能槽位也不应占用同一个界面位置。
空槽位显示
槽位没有装备时,界面显示该槽位配置的 id、name 和 lore。装备物品后,界面改为显示玩家实际放入的物品。
lore 支持 {unlock}:
| 槽位状态 | 替换内容 |
|---|---|
| 已解锁 | §a已解锁 |
| 未解锁 | §7未解锁 |
yaml
lore:
- '&7头盔槽位'
- '&7解锁状态: {unlock}'1
2
3
2
3
{unlock} 只用于空槽位物品的 Lore,不会写入玩家已经装备的物品。
放入条件
replace-condition 控制物品能否放入当前槽位。普通点击放入、替换已有装备、Shift 自动装备和 DragonCore 映射槽位操作都会使用该条件。
yaml
replace-condition:
- 'lore:{类型:头盔}<->&7该槽位只可放入头盔。'
- 'nolore:{未绑定}<->&c未绑定装备不能穿戴。'1
2
3
2
3
可用物品条件
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 检测 PlaceholderAPI 变量表达式 |
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
name:{内容} | 物品名称包含指定内容 |
lore:{整行内容} | 物品 Lore 包含指定完整行 |
nolore:{整行内容} | 物品 Lore 不包含指定完整行 |
all-only-name:{名称#数量} | 全部 LyInventory 背包中,同名物品数量必须小于指定数量 |
all-only-lore:{Lore#数量} | 全部 LyInventory 背包中,包含指定 Lore 的物品数量必须小于指定数量 |
only-name:{背包ID#名称#数量} | 指定背包中,同名物品数量必须小于指定数量 |
only-lore:{背包ID#Lore#数量} | 指定背包中,包含指定 Lore 的物品数量必须小于指定数量 |
sz-type:{类型} | 检测 DragonArmourers 时装类型 |
hasNbt:{节点} | 检测物品是否存在指定 NBT 节点,需要 LyCore |
nbtCheck:{表达式} | 读取 NBT 节点并执行表达式判断,需要 LyCore |
名称、Lore 和条件文本需要与物品实际内容一致。物品含有彩色文本时,应在配置中写入对应颜色符。
DragonArmourers 类型
sz-type 示例确认支持以下时装类型:
| 类型 | 时装部位 |
|---|---|
outfit | 套装 |
head | 帽子 |
chest | 衣服 |
legs | 裤子 |
feet | 鞋子 |
wings | 翅膀 |
sword | 武器或副手 |
bow | 弓 |
使用 sz-type 前需要安装 DragonArmourers。
同名装备互斥
only-name 条件中的名称参数可以填写固定名称,也可以使用字面量 <item> 代表当前准备装备物品的名称。
yaml
replace-condition:
- 'only-name:{equipment#<item>#1}'1
2
2
该配置表示 equipment 背包中,与当前物品同名的装备数量必须小于 1。<item> 只适用于 only-name 系列条件,它不是 PlaceholderAPI 变量,必须按原样填写并放在代码字符串中。
NBT 条件
NBT 多层节点使用英文句点分隔。
yaml
replace-condition:
- 'hasNbt:{装备.品质.等级}'
- 'nbtCheck:{{装备.强化} >= 3}'1
2
3
2
3
hasNbt 和 nbtCheck 是 LyCore 联动条件。未安装 LyCore 时不要配置这两类条件。
多条件表达式
单条放入条件支持使用 && 表示“并且”,使用 || 表示“或者”。
yaml
replace-condition:
- 'lore:{类型:头盔}||lore:{类型:帽子}<->&7该槽位只可放入头盔或帽子。'
- 'lore:{类型:头盔}&&lore:{品质:优秀}<->&7该槽位只可放入优秀品质的头盔。'1
2
3
2
3
可以使用 <-> 在条件末尾添加失败提示。分隔符左侧是检测内容,右侧是发送给玩家的消息,消息支持变量。
yaml
replace-condition:
- 'permission:{equipment.use}<->&c你没有穿戴该装备的权限。'1
2
2
全局穿戴限制
功能槽位的 replace-condition 通过后,插件还会继续执行主配置中的全局限制:
| 主配置 | 作用 |
|---|---|
check-put-on-condition | 从指定 Lore 中读取数值,再将数值代入全局条件 |
anti-equip-item-lore | 物品包含指定完整 Lore 行时禁止装备 |
因此,物品满足当前槽位的 replace-condition,不代表一定可以装备。只要全局穿戴条件或禁止 Lore 检测失败,插件仍会拒绝该物品。
全局穿戴限制的配置方式见 主配置。
槽位解锁
unlock-condition 控制功能槽位的永久解锁状态。成功解锁后,槽位 ID 会加入该玩家、该背包的解锁列表,并随玩家数据保存。
yaml
unlock-condition:
- 'permission:{unlock.头盔}'
- 'papi:{%player_level% >= 10}'
- 'item:{解锁石#1}'
- 'eco:{100}'
- 'point:{100}'1
2
3
4
5
6
2
3
4
5
6
| 条件格式 | 说明 | 解锁成功后是否扣除 |
|---|---|---|
papi:{表达式} | 检测 PlaceholderAPI 变量表达式 | 否 |
permission:{权限} | 玩家必须拥有指定权限 | 否 |
nopermission:{权限} | 玩家必须没有指定权限 | 否 |
item:{物品名称#数量} | 按名称检查玩家原版背包中的物品数量 | 是 |
eco:{数量} | 检查 Vault 经济余额 | 是 |
point:{数量} | 检查 PlayerPoints 点券余额 | 是 |
插件会先检查全部解锁条件。只有所有条件都通过后,才会扣除 item、eco 和 point 对应资源,并记录解锁状态。
使用不同资源条件前需要安装对应插件:
| 条件 | 需要的插件或服务 |
|---|---|
papi | PlaceholderAPI |
eco | Vault,以及可用的经济插件 |
point | PlayerPoints |
空解锁条件
空解锁条件的行为由主配置 unlock-empty-condition-slot 决定。
| 配置值 | 行为 |
|---|---|
true | 玩家打开背包时,自动把没有解锁条件的槽位标记为已解锁,不执行 unlock-command |
false | 打开背包时不自动记录;玩家点击未解锁槽位时仍会按空条件尝试解锁 |
不需要额外条件的槽位可以删除 unlock-condition,或写为空列表:
yaml
unlock-condition: []1
解锁指令
yaml
unlock-command:
- 'tell %player_name% 你解锁了头盔槽位'1
2
2
unlock-command 只在玩家成功执行槽位解锁操作时触发。主配置自动解锁空条件槽位时不会触发该指令。
指令会解析 PlaceholderAPI 变量并由控制台执行。
属性生效条件
attribute-condition 控制槽位内物品的 Lore 是否交给主配置选定的属性插件处理。条件不满足时,装备仍保存在槽位中,但该装备的属性 Lore 不会参与 LyInventory 的属性加载。
yaml
attribute-condition:
- 'permission:{attribute.头盔}'
- 'papi:{%player_level% >= 10}'
- 'hasName:{equipment#项链#远古}'
- 'hasLore:{equipment#项链#套装:远古}'1
2
3
4
5
2
3
4
5
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 检测 PlaceholderAPI 变量表达式 |
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
hasName:{背包ID#槽位ID#关键字} | 指定槽位中装备的名称必须包含关键字 |
hasLore:{背包ID#槽位ID#关键字} | 指定槽位中装备的任意 Lore 行必须包含关键字 |
hasName 和 hasLore 会读取指定玩家已经加载的目标背包缓存。目标背包不存在、目标槽位没有装备,或装备不包含指定内容时,条件失败。
名称和 Lore 关键字支持 PlaceholderAPI 变量及 & 颜色符。参数使用 # 分隔为背包 ID、槽位 ID和关键字三部分。
取出条件
take-out-condition 控制玩家能否取出已有装备。使用鼠标替换已有装备时,也会先检查取出条件,因为替换操作需要把旧装备交还给玩家。
yaml
take-out-condition:
- 'permission:{takeout.头盔}'
- 'papi:{%player_level% >= 10}'1
2
3
2
3
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 检测 PlaceholderAPI 变量表达式 |
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
任意条件不满足时,插件会阻止取出或替换,并发送主配置 message.not-take-out 的消息。
删除该项或配置为空列表表示不增加取出限制:
yaml
take-out-condition: []1
槽位指令
功能槽位支持四组指令:
| 配置项 | 执行时机 |
|---|---|
click-command | 玩家点击功能槽位时 |
replace-command | 物品成功放入空槽位,或成功替换已有装备后 |
take-out-command | 已有装备成功取出后 |
unlock-command | 槽位成功解锁后 |
yaml
click-command:
- 'tell %player_name% 你点击了头盔槽位'
replace-command:
- 'tell %player_name% 你装备了头盔'
take-out-command:
- 'tell %player_name% 你取下了头盔'
unlock-command:
- 'tell %player_name% 你解锁了头盔槽位'1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
这些指令会解析 PlaceholderAPI 变量并由控制台执行。直接填写命令内容,不需要 / 或执行身份前缀。
普通界面中,只有背包主人能够触发功能槽位的配置指令。其他玩家查看背包时不能代替背包主人装备、取出或解锁物品;非 OP 玩家也不能操作他人的背包内容。
属性倍率
yaml
attribute-rate: 0.51
attribute-rate 需要在主配置中启用 attribute-rate-enable 才会参与计算。未填写时默认为 1.0。
| 数值 | 效果 |
|---|---|
1.0 | 按原数值加载属性 |
0.5 | 按原数值的 50% 加载属性 |
2.0 | 按原数值的 200% 加载属性 |
倍率处理只会选择同时满足以下条件的 Lore 行:
- Lore 行包含主配置
attribute-rate-key中的属性关键字。 - 移除关键字后,剩余文本中存在可以计算的数字。
- 当前槽位的
attribute-condition已通过。
yaml
attribute-rate-enable: true
attribute-rate-key:
- '物理伤害'
- '生命上限'1
2
3
4
2
3
4
符合条件的数字会乘以槽位倍率,并格式化为两位小数。& 或 § 颜色代码后的数字不会作为属性数值计算。
启用倍率功能后,倍率不等于 1.0 的槽位只会提交命中属性关键字且包含数字的 Lore 行。没有命中关键字的 Lore 行不会加入该槽位的倍率属性列表。
未启用倍率功能时,符合 attribute-condition 的装备会按原 Lore 内容交给属性插件。
装备事件与 Lore 替换
玩家通过原版背包界面成功放入或替换装备前,插件会触发装备事件。事件中的物品可以被其他插件取消或修改。
主配置 lore-replace 也通过该装备事件工作。配置键与物品 Lore 完整行相同时,插件会在装备写入槽位前替换该行,并支持解析 PlaceholderAPI 变量。
yaml
lore-replace:
'&c装备后绑定': '&6已绑定: &a%player_name%'1
2
2
该功能按完整 Lore 行匹配,不是包含匹配。通过 API 直接设置槽位物品时不会触发装备事件,因此不会自动执行该 Lore 替换流程。
物品数量限制
待装备物品的堆叠数量不能大于 1。普通点击、替换、Shift 自动装备以及外部映射槽位操作都会进行数量检测。
尝试装备整组物品时,插件会拒绝操作并发送主配置 message.equip-item-amount-too-large 的消息。
该限制只影响装备操作,不影响空槽位的展示物品数量。
Shift 快捷操作
原版背包界面支持 Shift+左键快捷装备和快捷取出。
Shift 自动装备
玩家在原版背包区域 Shift+左键物品时,插件会按界面槽位编号从小到大查找可用功能槽位。目标槽位必须同时满足:
- 当前没有装备物品。
- 已经解锁。
- 待装备物品数量不大于
1。 - 满足槽位
replace-condition。 - 满足主配置中的全局穿戴限制。
- 装备事件没有被其他插件取消。
成功后,物品会写入第一个匹配的槽位,并执行该槽位的 replace-command。
Shift 自动取出
玩家在 LyInventory 界面中 Shift+左键已装备物品时,插件会检查:
- 玩家原版背包存在空位。
- 当前槽位满足
take-out-condition。
通过后,装备会放回玩家原版背包,功能槽位恢复为空槽位物品,并执行 take-out-command。
所有 Shift 操作都会受到主配置 click-cooldown 的限制。
打开时重新检查装备
主配置 check-replace-condition-on-open 启用后,玩家打开背包前会重新使用各槽位的 replace-condition 和全局穿戴限制检查已经装备的物品。
yaml
check-replace-condition-on-open: true1
不再符合条件的装备会尝试退回背包主人的原版背包,并恢复对应空槽位物品。如果原版背包没有空位,该装备会继续保留在功能槽位中。
该检查只处理仍存在对应槽位配置的装备。存档中存在但当前背包配置已经删除的槽位 ID,不会在此流程中自动迁移或退回。
点击冷却
默认物品点击、功能槽位点击、放入、取出、替换、Shift 操作和 DragonCore 映射操作会使用主配置中的统一冷却时间。
| 主配置 | 说明 |
|---|---|
click-cooldown | 操作冷却时间,单位为毫秒 |
click-cooldown-message | 冷却未结束时发送的消息 |
冷却按执行操作的玩家记录。数值过大会让连续装备和界面刷新产生明显等待。
DragonCore 槽位映射
启用主配置 dragoncore-slot-mapping-enable 后,插件会接管符合以下格式的 DragonCore 槽位:
text
lyinv_背包ID_槽位ID1
例如背包 ID 为 equipment、槽位 ID 为 头盔:
yaml
identifier: 'lyinv_equipment_头盔'1
DragonCore 标识直接由背包 ID 和槽位 ID 组成,不读取功能槽位中的 mapping-slot。
DragonCore 映射会同步玩家已经装备的物品,并接管对应槽位的解锁、放入、替换、取出、点击指令和属性刷新。相关操作同样会检查物品数量、replace-condition、take-out-condition 和点击冷却。
dragoncore-slot-mapping-enable 修改后需要重启服务器才能完成监听注册。
当前映射监听使用英文下划线拆分背包 ID 与槽位 ID。需要使用 DragonCore 映射时,背包 ID 和槽位 ID 不应包含英文下划线 _,否则标识可能无法被正确解析。
GermPlugin 槽位映射
mapping-slot 用于匹配 GermPlugin 界面槽位的 Identity。
yaml
slot-set:
头盔:
slot: 22
mapping-slot: 'equipment_head'1
2
3
4
2
3
4
插件检测到 GermPlugin 后,会遍历全部背包的功能槽位,查找 mapping-slot 与萌芽槽位 Identity 相同的配置。匹配成功后,插件会接管该槽位事件,并使用功能槽位的解锁条件、放入条件和配置指令。
不同功能槽位不应填写相同的 mapping-slot。监听会按已加载配置查找第一个匹配项,重复 Identity 无法可靠确定目标背包和槽位。
mapping-slot 只用于 GermPlugin,不影响原版背包槽位和 DragonCore 标识。
数据保存关系
玩家数据按“背包 ID + 槽位 ID”保存以下内容:
- 功能槽位中的装备物品。
- 已经解锁的槽位 ID 列表。
- DragonArmourers 当前展示使用的背包 ID。
未启用 MySQL 时,玩家数据保存到 plugins/LyInventory/data/玩家UUID.yml。启用 MySQL 后,只有安装 LyMySQLCore、数据库配置正确并且 LyInventory 成功建立数据库连接时,MySQL 存储及对应的安全加载、保存流程才会生效;连接未成功时不能将相关功能视为可用。
修改背包 ID 或槽位 ID 会改变数据键,插件不会自动把旧名称下的装备和解锁记录迁移到新名称。正式服修改这些 ID 前应先处理已有玩家数据。
相关主配置
以下主配置会直接影响背包和功能槽位行为,完整说明见 主配置。
| 配置项 | 对背包配置的影响 |
|---|---|
dragoncore-slot-mapping-enable | 启用 DragonCore 的 lyinv_背包ID_槽位ID 映射 |
attribute-plugin | 指定接收背包装备 Lore 的属性插件 |
attribute-rate-enable | 决定 attribute-rate 是否参与属性计算 |
attribute-rate-key | 指定需要执行倍率计算的 Lore 属性关键字 |
anti-equip-item-lore | 包含指定完整 Lore 行的物品禁止装备 |
check-put-on-condition | 根据装备 Lore 中读取的数值执行全局穿戴条件 |
lore-replace | 物品通过装备事件放入槽位前,按完整 Lore 行进行替换 |
click-cooldown | 点击、放入、取出、替换和界面刷新的操作冷却,单位为毫秒 |
click-cooldown-message | 操作仍处于冷却时发送的消息 |
unlock-empty-condition-slot | 决定空解锁条件槽位是否在打开背包时自动解锁 |
check-replace-condition-on-open | 打开背包时重新检查已装备物品的放入条件 |
message.inventory-full | 玩家原版背包已满时的提示 |
message.unlock-fail | 解锁条件不足时的提示 |
message.unlock-success | 槽位成功解锁时的提示 |
message.not-unlocked-yet | 尝试向未解锁槽位放入物品时的提示 |
message.anti-equip-item-lore | 物品包含禁止穿戴 Lore 时的提示 |
message.equip-item-amount-too-large | 尝试装备堆叠物品时的提示 |
message.not-take-out | 取出条件不足时的提示 |
配置注意事项
- 不要直接修改
示例背包.yml。该文件每次重载都会被覆盖,也不会作为正式背包载入。 - 每个正式背包都需要独立且非空的
id。 size填写行数,插件会将其限制在1至6。default-set.*.slot支持多个槽位和连续范围,slot-set.*.slot只能填写一个整数。- 全部背包中的功能槽位 ID 必须保持唯一。
- 默认物品和功能槽位应避免占用同一个界面位置。
- 配置指令由控制台执行,不要添加
/或执行身份前缀。 - 使用 PlaceholderAPI 表达式或变量前需要安装 PlaceholderAPI。
- 使用
eco解锁条件前需要安装 Vault,并提供可用的经济服务。 - 使用
point解锁条件前需要安装 PlayerPoints。 - 使用
hasNbt或nbtCheck条件前需要安装 LyCore。 - 使用
sz-type条件前需要安装 DragonArmourers。 - 功能槽位一次只能装备一件物品,堆叠数量大于
1的物品会被拒绝。 - 修改背包 ID 或槽位 ID 会改变玩家数据键,已有数据不会自动迁移。
- DragonCore 映射使用下划线拆分标识,映射所用的背包 ID 和槽位 ID 不应包含英文下划线。
- GermPlugin 的
mapping-slot应保持唯一,避免多个功能槽位映射到相同 Identity。