Are you an LLM? You can read better optimized documentation at /paid-plugins\lyinventory\config.md for this page in Markdown format
配置说明
LyInventory 的配置分为主配置与背包配置:
| 文件 | 用途 |
|---|---|
plugins/LyInventory/config.yml | 控制属性插件、数据保存、槽位映射、全局装备检测、操作冷却和提示文本 |
plugins/LyInventory/inventory/*.yml | 定义背包界面、预设物品、装备槽位、解锁条件和槽位指令 |
示例背包
inventory/示例背包.yml 每次重载都会被插件覆盖,并且不会作为正式背包载入。请复制并重命名后再修改。
主配置 config.yml
属性插件
yaml
attribute-plugin: 'AttributePlus'1
| 值 | 说明 |
|---|---|
AttributePlus | 将背包装备 lore 载入 AttributePlus |
SX-Attribute2 | 使用 SX-Attribute 2.x 接口 |
SX-Attribute3 | 使用 SX-Attribute 3.x 接口 |
AttributeSystem | 将背包装备 lore 载入 AttributeSystem |
ItemLoreOrigin | 将背包装备 lore 交给 ItemLoreOrigin 处理 |
修改该配置后需要重启服务器。属性会在玩家数据载入、关闭插件背包、放入装备、替换装备或取出装备后刷新,也可以通过 /li refreshattr [玩家] 手动刷新在线玩家的背包属性。
原版背包属性读取
yaml
load-attribute-form-origin-inventory:
- 0
- 1
load-attribute-form-origin-inventory-condition:
0:
- 'lore:{类型:头盔}'
1:
- 'permission:{example.attribute}'1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
load-attribute-form-origin-inventory 指定玩家原版背包中参与属性读取的槽位,槽位范围为 0-35。该功能仅在 attribute-plugin 设置为 AttributePlus 时生效。
load-attribute-form-origin-inventory-condition 按原版槽位编号配置物品检测条件。对应槽位未配置条件时,只要槽位中存在带 lore 的物品,就会载入该物品的属性。
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 检测 PlaceholderAPI 表达式 |
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
name:{文本} | 物品名称需要包含指定文本 |
lore:{文本} | 物品 lore 需要包含指定整行 |
nolore:{文本} | 物品 lore 不能包含指定整行 |
全局 check-put-on-condition 同样会参与原版背包槽位的属性读取检测。
装备时 Lore 替换
yaml
lore-replace:
'&c装备后绑定': '&6已绑定: &a%player_name%'1
2
2
lore-replace 使用“原 lore 行到新 lore 行”的映射格式。玩家通过插件背包装备物品时,如果物品中存在与配置键完全相同的 lore 行,插件会替换该行。
- 配置键和值均支持
&颜色符。 - 替换后的文本支持 PlaceholderAPI 变量。
- 只替换完整匹配的单行 lore,不会替换一行中的部分文本。
- 插件会克隆事件中的物品后进行替换,不直接修改原物品引用。
DragonCore 槽位映射
yaml
dragoncore-slot-mapping-enable: false1
启用后,DragonCore 界面中使用以下标识的槽位会映射到对应插件背包槽位:
text
lyinv_背包ID_槽位ID1
DragonCore 槽位配置中的标识格式为:
yaml
identifier: 'lyinv_test_头盔'1
其中 test 对应背包配置的 id,头盔 对应 slot-set 下的槽位 ID。插件会同步玩家载入时已有的装备,并接管映射槽位的解锁、放入、交换、取出、冷却和属性刷新逻辑。
该监听器在插件启动时注册,修改 dragoncore-slot-mapping-enable 后需要重启服务器。
属性倍率
yaml
attribute-rate-enable: false
attribute-rate-key:
- '物理伤害'
- '生命上限'1
2
3
4
5
2
3
4
5
启用后,插件会读取每个装备槽位的 attribute-rate,对命中 attribute-rate-key 的属性 lore 进行倍率计算。
yaml
slot-set:
头盔:
attribute-rate: 1.51
2
3
2
3
| 配置 | 说明 |
|---|---|
attribute-rate-enable | 是否启用属性倍率处理 |
attribute-rate-key | 需要进行倍率计算的属性关键词列表 |
slot-set.<槽位ID>.attribute-rate | 当前槽位的属性倍率,默认值为 1.0 |
计算规则:
1.0表示保留原属性。2.0表示属性数值乘以两倍。0.5表示属性数值减半。- 只有同时包含指定关键词与数字的 lore 行才会参与计算。
- 命中行中的数值会按倍率计算,并格式化为两位小数。
&或§后的颜色代码数字不会作为属性数值计算。- 彩色属性关键词可以直接使用
§颜色符配置。
槽位的 attribute-condition 未通过时,该槽位不会载入属性,也不会参与倍率处理。
ItemLoreOrigin 刷新间隔
yaml
ilo-update-task: 201
当 attribute-plugin 设置为 ItemLoreOrigin 且 ItemLoreOrigin 已加载时,插件会建立异步刷新任务,将背包装备的属性 lore 提交给 ItemLoreOrigin。
ilo-update-task 的单位为 tick,未配置时默认使用 20 tick。
符文属性兼容
yaml
Rune-plugin-enable: false1
启用后,插件会读取背包装备中已镶嵌符文提供的属性,并与装备 lore 属性一起提交给当前属性插件。服务器必须同时具备代码所需的符文 API,否则不要启用。
自动保存
yaml
auto-save-interval: 31
auto-save-interval 是自动保存检查间隔,单位为秒。玩家装备、取出物品、解锁槽位或切换龙之时装展示背包后,数据会被标记为待保存,并在自动保存任务中写入存储。
插件还会在玩家退出、被踢、关闭插件背包和插件关闭时保存相关数据。
不建议将间隔设置为 0 或负数,也不建议设置得过长。
禁止穿戴的 Lore
yaml
anti-equip-item-lore:
- '未绑定'1
2
2
物品 lore 中存在与列表内容完全相同的单行文本时,插件会拒绝装备该物品。检测忽略英文大小写,并支持将配置中的 & 转换为游戏颜色符。
该配置不是关键词包含检测。例如配置 未绑定 时,lore 行 状态: 未绑定 不属于完全相同的文本。
拒绝装备时使用 message.anti-equip-item-lore 发送提示。
全局装备条件
yaml
check-put-on-condition:
等级检测:
contain-lore: '&f装备等级: '
condition:
- 'papi:{%player_level% >= <value>} <-> &7该装备需要<value>级才可装备, 你当前%player_level%级了!'1
2
3
4
5
2
3
4
5
check-put-on-condition 用于根据装备 lore 中的数值执行全局检测。每个检测节点名称只需保持不重复。
| 配置 | 说明 |
|---|---|
contain-lore | 用于定位数值的 lore 前缀,支持 & 颜色符 |
condition | 找到非零数值后需要执行的条件列表 |
<value> | 从对应 lore 中读取到的数值 |
<-> | 条件与失败提示的分隔符 |
可在 condition 中使用:
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 使用 PlaceholderAPI 变量进行表达式检测 |
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
条件失败提示支持 PlaceholderAPI 变量和 <value>。该检测会用于插件背包装备条件,也会参与配置过的原版背包属性读取检测。
空配置节点
插件会直接读取 check-put-on-condition 配置段。请保留该节点;没有全局检测时可以配置为空节点。
yaml
check-put-on-condition: {}1
MySQL 存储
MySQL 前置要求
启用 MySQL 存储时必须安装 LyMySQLCore,并确认 LyMySQLCore 已成功连接数据库。该模式依赖 LyMySQLCore 提供的安全加载与保存事件;前置未加载或数据库连接失败时,MySQL 数据读取、保存、同步和相关记录不会正常生效。
yaml
mysql:
enable: false
databasename: mc2
username: mc2
password: mc1234
port: 3306
ip: 127.0.0.1
custom-property:
cachePrepStmts: 'true'1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
| 配置 | 说明 |
|---|---|
mysql.enable | 是否启用 MySQL 存储 |
mysql.databasename | 数据库名称 |
mysql.username | 数据库用户名 |
mysql.password | 数据库密码 |
mysql.port | MySQL 端口,默认 3306 |
mysql.ip | MySQL 地址 |
mysql.custom-property | 追加到数据源的自定义连接参数 |
插件使用连接池管理数据库连接,并固定设置以下连接参数:
| 参数 | 值 |
|---|---|
useSSL | false |
serverTimezone | UTC |
characterEncoding | UTF-8 |
connectTimeout | 5000 毫秒 |
socketTimeout | 30000 毫秒 |
cachePrepStmts | true |
玩家数据存放在 LyInventory_data 表中,以玩家名称作为主键,装备、槽位解锁状态和龙之时装展示背包会序列化到 data 字段。
如果新版数据表不存在,插件会尝试读取旧版 LyInventory 表,将其中的 name 和 data 数据迁移到临时表,完成后再改名为 LyInventory_data。多台服务器同时连接同一数据库时,迁移过程会使用 MySQL 命名锁避免重复迁移。
关闭 MySQL 时,玩家数据保存在:
text
plugins/LyInventory/data/玩家UUID.yml1
切换 mysql.enable 后需要重启服务器,避免数据监听器与实际存储模式不一致。切换存储方式前应自行备份已有数据。
点击冷却
yaml
click-cooldown: 300
click-cooldown-message: '&7对不起, 操作过快, 请稍后尝试.'1
2
2
| 配置 | 说明 |
|---|---|
click-cooldown | 背包点击、装备、取出、界面刷新和映射槽位操作的冷却时间,单位为毫秒 |
click-cooldown-message | 玩家在冷却期间重复操作时发送的提示 |
1000 毫秒等于 1 秒。冷却同样用于 Shift 左键自动装备、Shift 左键取回和 DragonCore 映射槽位。
无条件槽位自动解锁
yaml
unlock-empty-condition-slot: true1
启用后,玩家打开背包时,未配置 unlock-condition 或条件列表为空的槽位会自动记录为已解锁。
该自动解锁不会执行槽位的 unlock-command,也不会发送解锁成功提示。
打开背包时重新检测装备
yaml
check-replace-condition-on-open: false1
启用后,玩家打开背包时,插件会重新检查已装备物品是否仍符合:
- 槽位的
replace-condition。 - 主配置的
check-put-on-condition。 - 主配置的
anti-equip-item-lore。
不再符合条件的装备会尝试退回背包所有者的原版背包,并恢复槽位默认物品。如果玩家原版背包没有空位,该物品会暂时保留在插件背包中。
提示文本
yaml
message:
inventory-full: '&c背包已满!'
unlock-fail: '&c解锁失败, 条件不足.'
unlock-success: '&a解锁成功!'
not-unlocked-yet: '&c该槽位还没有解锁.'
anti-equip-item-lore: '&c存在禁止穿戴的lore'
equip-item-amount-too-large: '&c装备禁止堆叠'
switch-dragon-armourers-show: '&a切换时装成功.'
disable-dragon-armourers-show: '&a时装显示关闭.'
not-take-out: '&c条件不足, 无法取出.'1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
| 配置 | 触发场景 |
|---|---|
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 | 尝试装备数量大于 1 的堆叠物品 |
message.switch-dragon-armourers-show | 成功切换龙之时装展示背包 |
message.disable-dragon-armourers-show | 关闭龙之时装展示 |
message.not-take-out | 装备未满足 take-out-condition |
提示文本支持 & 颜色符。
背包配置 inventory/*.yml
基础配置
yaml
id: 'test'
title: '&6示例背包'
size: 6
permission: ''
condition: []1
2
3
4
5
2
3
4
5
| 配置 | 说明 |
|---|---|
id | 背包唯一 ID,用于指令、变量、API 和槽位映射 |
title | 背包标题,支持 & 颜色符 |
size | 背包行数,最小 1,最大 6 |
permission | 玩家打开自己背包时需要的权限;删除或留空表示不限制 |
condition | 打开背包前需要满足的条件列表;删除或留空表示不检测 |
背包 id 应保持唯一。如果不同文件使用相同 ID,后载入的配置会覆盖已读取的数据。
condition 支持:
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 检测 PlaceholderAPI 表达式 |
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
预设物品 default-set
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'1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
| 配置 | 说明 |
|---|---|
id | 显示物品 ID,可使用配置文件现有的 物品ID:子ID 格式 |
name | 物品名称,支持 & 颜色符 |
lore | 物品 lore,支持颜色符和 PlaceholderAPI 变量 |
command | 点击后由控制台执行的指令列表,支持 PlaceholderAPI 变量 |
slot | 显示位置,多个位置使用逗号分隔,连续位置使用 起始-结束 |
预设物品只能执行点击指令和触发界面内容刷新,不能作为装备槽位保存物品。
装备槽位 slot-set
yaml
slot-set:
头盔:
slot: 22
id: '160:9'
name: ' '
lore:
- ' &7头盔槽位 '
- ' &7解锁状态: {unlock}'
replace-condition:
- 'lore:{类型:头盔}<->&7该槽位只可放&6头盔&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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
slot-set 下的节点名称就是槽位 ID。槽位 ID 必须在所有背包中保持全局唯一,避免映射和数据操作定位到错误槽位。
| 配置 | 说明 |
|---|---|
slot | 槽位在箱子界面中的数字位置,只能填写一个位置 |
id | 未装备物品时显示的默认物品 ID |
name | 未装备物品时显示的名称 |
lore | 未装备物品时显示的 lore |
{unlock} | 在默认 lore 中显示 已解锁 或 未解锁 |
replace-condition | 允许放入或替换装备的条件 |
click-command | 点击槽位时执行的指令 |
replace-command | 成功放入或替换装备后执行的指令 |
take-out-command | 成功取出装备后执行的指令 |
unlock-condition | 解锁槽位需要满足和消耗的条件 |
unlock-command | 成功解锁槽位后执行的指令 |
attribute-condition | 当前装备参与属性读取需要满足的条件 |
take-out-condition | 允许取出或替换当前装备的条件 |
attribute-rate | 当前槽位的属性倍率,默认 1.0 |
mapping-slot | GermPlugin 槽位标识,留空表示不映射 |
放入与替换条件
replace-condition 中的每一项都需要通过。条件后可以使用 <-> 添加失败提示。
yaml
replace-condition:
- 'lore:{类型:头盔}<->&7该槽位只可放头盔!'
- 'permission:{equip.helmet}<->&c你没有装备权限!'1
2
3
2
3
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 检测 PlaceholderAPI 表达式 |
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
name:{文本} | 物品名称需要包含指定文本 |
lore:{文本} | 物品 lore 需要包含指定整行 |
nolore:{文本} | 物品 lore 不能包含指定整行 |
all-only-name:{名称#数量} | 所有插件背包中,名称匹配物品必须少于指定数量 |
all-only-lore:{Lore#数量} | 所有插件背包中,lore 匹配物品必须少于指定数量 |
only-name:{背包ID#名称#数量} | 指定背包中,名称匹配物品必须少于指定数量 |
only-lore:{背包ID#Lore#数量} | 指定背包中,lore 匹配物品必须少于指定数量 |
sz-type:{类型} | 检测 DragonArmourers 时装类型 |
hasNbt:{节点} | 检测物品是否存在指定 NBT 节点,需要 LyCore |
nbtCheck:{{节点} 表达式} | 读取 NBT 节点数值并执行表达式检测,需要 LyCore |
sz-type 支持示例配置中确认的类型:
| 类型 | 时装部位 |
|---|---|
outfit | 套装 |
head | 帽子 |
chest | 衣服 |
legs | 裤子 |
feet | 鞋子 |
wings | 翅膀 |
sword | 武器或副手 |
bow | 弓 |
同一行可以组合多个物品条件:
yaml
replace-condition:
- 'lore:{类型:头盔}||lore:{类型:帽子}<->&7该槽位只可放头盔或帽子!'
- 'lore:{类型:头盔}&&lore:{品质:优秀}<->&7该槽位只可放优秀品质头盔!'1
2
3
2
3
| 连接符 | 说明 |
|---|---|
&& | 两侧条件必须同时满足 |
| ` |
在 only-name 系列条件中,可以使用固定文本 <item> 表示当前待装备物品的名称:
yaml
replace-condition:
- 'only-name:{test#<item>#1}'1
2
2
尖括号内容必须保持原样,不能替换为其他变量格式。
槽位指令
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
| 配置 | 执行时机 |
|---|---|
click-command | 玩家点击槽位时执行 |
replace-command | 装备成功放入或替换后执行 |
take-out-command | 装备成功取出后执行 |
unlock-command | 槽位成功解锁后执行 |
这些指令支持 PlaceholderAPI 变量,并由控制台身份执行。配置中不要添加 / 前缀。
解锁条件
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 扣除点券 | 是 |
使用 eco 条件时需要 Vault 与可用的经济插件。使用 point 条件时需要 PlayerPoints。
删除 unlock-condition 或配置为空列表表示槽位不需要付费或条件解锁。是否自动记录为空条件的槽位,由主配置 unlock-empty-condition-slot 控制。
属性加载条件
yaml
attribute-condition:
- 'permission:{attribute.helmet}'
- 'papi:{%player_level% >= 10}'
- 'hasName:{test#武器#传说之剑}'
- 'hasLore:{test#护符#套装: 烈焰}'1
2
3
4
5
2
3
4
5
只有全部条件通过时,当前槽位装备的 lore 才会提交给属性插件。
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 检测 PlaceholderAPI 表达式 |
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
hasName:{背包ID#槽位ID#关键词} | 指定槽位必须存在装备,且装备名称包含关键词 |
hasLore:{背包ID#槽位ID#关键词} | 指定槽位必须存在装备,且至少一行 lore 包含关键词 |
hasName 和 hasLore 的关键词支持 PlaceholderAPI 变量与 & 颜色符。目标背包或槽位数据不存在时,条件会判定失败。
取出条件
yaml
take-out-condition:
- 'permission:{takeout.头盔}'
- 'papi:{%player_level% >= 10}'1
2
3
2
3
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 检测 PlaceholderAPI 表达式 |
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
取出、Shift 左键取回以及使用鼠标物品替换已有装备时,都需要先通过 take-out-condition。条件失败时使用 message.not-take-out 提示。
GermPlugin 槽位映射
yaml
slot-set:
头盔:
mapping-slot: '界面槽位标识'1
2
3
2
3
服务器加载 GermPlugin 时,插件会注册 GermPlugin 槽位监听器。mapping-slot 与 GermPlugin GUI 槽位标识相同时,该槽位会使用对应 LyInventory 槽位的解锁、放入检测和槽位指令。
mapping-slot 默认留空。不同装备槽位不要配置相同的映射标识。
背包操作规则
- 装备物品数量必须为
1,不能直接装备整组堆叠物品。 - 在玩家原版背包中 Shift 左键物品时,插件会按界面槽位顺序寻找第一个已解锁、为空且满足条件的装备槽位。
- 在插件背包中 Shift 左键已装备物品时,插件会将物品放回玩家原版背包。
- 玩家原版背包已满时,Shift 左键取回会被拒绝。
- 非背包所有者只能查看背包;不是管理员时不能操作他人的插件背包。
- 拖拽物品进入插件背包会被阻止。
- 放入、替换和取出装备后会重新计算玩家的背包属性。
- 关闭插件背包时会保存玩家数据,并在 DragonArmourers 可用时刷新玩家时装外观。