Are you an LLM? You can read better optimized documentation at /paid-plugins\lyinventory\faq.md for this page in Markdown format
常见问题
背包打不开
按以下顺序检查:
- 确认背包配置文件中的
id与指令中的背包 ID 完全一致。 - 确认背包配置中的
permission满足当前玩家权限。删除或留空permission时不检查权限。 - 确认背包配置中的
condition条件全部满足。背包条件支持以下类型:
| 条件 | 说明 |
|---|---|
papi:{表达式} | 使用 PlaceholderAPI 变量计算表达式。 |
permission:{权限节点} | 检查玩家是否拥有权限。 |
nopermission:{权限节点} | 检查玩家是否没有权限。 |
- 检查背包配置文件是否位于插件读取的背包目录中,并确认 YAML 缩进正确。
- 如果刚修改了背包配置,使用
/li reload重载配置。
使用 /li open 背包ID 时,执行者必须是玩家;使用 /li open 背包ID 玩家名 让其他玩家打开背包时,执行者必须是管理员。
指令没有反应或提示无权限
插件注册的主指令是 /li。当前项目中可确认的指令如下:
| 指令 | 执行要求 | 说明 |
|---|---|---|
/li reload | 管理员 | 重载插件配置与背包配置。 |
/li open 背包ID | 玩家 | 打开指定背包。 |
/li open 背包ID 玩家名 | 管理员 | 让指定玩家打开背包。 |
/li look 玩家名 背包ID | 玩家 | 查看指定玩家的背包;普通玩家不能修改被查看的背包。 |
/li remove 玩家名 背包ID 槽位ID | 管理员 | 删除指定玩家指定背包槽位中的物品。 |
/li show 背包ID | 玩家 | 切换展示指定背包中的龙时装。填写 disable 可关闭展示。 |
/li show 背包ID 玩家名 | 管理员 | 切换指定玩家展示的龙时装。填写 disable 可关闭展示。 |
/li refreshattr 玩家名 | 管理员 | 刷新指定玩家的背包属性。 |
管理员指的是命令执行者满足插件代码中的管理员判断,即拥有服务器管理员身份;项目证据未定义独立的 LyInventory 权限节点。
物品放不进去
检查目标槽位的 replace-condition。槽位只有在物品满足所有条件时才会接受物品。
常用槽位条件包括:
| 条件 | 作用 |
|---|---|
papi:{表达式} | 按 PlaceholderAPI 变量计算条件。 |
permission:{权限节点} | 要求玩家拥有指定权限。 |
nopermission:{权限节点} | 要求玩家没有指定权限。 |
name:{文本} | 检查物品名称是否包含指定文本。 |
noname:{文本} | 检查物品名称是否不包含指定文本。 |
lore:{文本} | 检查物品 Lore 是否包含指定文本。 |
nolore:{文本} | 检查物品 Lore 是否不包含指定文本。 |
all-only-name:{名称#数量} | 检查玩家所有 LyInventory 槽位中的同名物品数量限制。 |
all-only-lore:{Lore#数量} | 检查玩家所有 LyInventory 槽位中的同 Lore 物品数量限制。 |
only-name:{背包ID#名称#数量} | 检查指定背包中的同名物品数量限制。 |
only-lore:{背包ID#Lore#数量} | 检查指定背包中的同 Lore 物品数量限制。 |
sz-type:{类型} | 检查龙时装物品类型。 |
hasNbt:{NBT路径} | 检查物品是否存在指定 NBT 节点。 |
nbtCheck:{表达式} | 读取 NBT 节点并计算表达式。 |
单条条件可以使用 && 表示并且,使用 || 表示或者;条件后的 <-> 用于分隔失败提示。例如:
yaml
replace-condition:
- 'lore:{类型:头盔}<->&7该槽位只可放&6头盔&7部位的装备!'1
2
2
如果物品包含禁止穿戴的 Lore,还会受到主配置 anti-equip-item-lore 的限制。主配置 check-put-on-condition 还可以根据物品 Lore 中的数值执行额外条件检查。
Shift 左键没有自动装备
插件支持在打开 LyInventory 背包时使用 Shift 左键自动匹配槽位,但必须同时满足以下条件:
- 物品数量不能大于 1,堆叠物品不能直接装备。
- 槽位没有已经装备的物品。
- 槽位已经解锁,或该槽位不需要解锁。
- 物品满足槽位的
replace-condition。 - 物品满足主配置中的
anti-equip-item-lore与check-put-on-condition。
插件会按背包槽位顺序寻找第一个满足条件的槽位。没有匹配槽位时,物品不会被移入 LyInventory。
物品取不出来
检查槽位的 take-out-condition。物品放入槽位后,取出时仍然必须满足该条件。
同时检查以下情况:
- 玩家背包是否有空位。
- 是否触发了
click-cooldown冷却。 - 是否是通过龙核映射槽位操作;龙核槽位同样会检查取出条件。
取出条件支持 papi:{表达式}、permission:{权限节点} 和 nopermission:{权限节点}。
如果玩家背包已满,插件会发送 message.inventory-full;如果取出条件不满足,插件会发送 message.not-take-out。
槽位无法解锁
检查槽位的 unlock-condition 是否全部满足。当前项目支持以下解锁条件:
| 条件 | 说明 |
|---|---|
permission:{权限节点} | 玩家必须拥有指定权限。 |
papi:{表达式} | 使用 PlaceholderAPI 变量计算条件。 |
item:{物品名#数量} | 检查并扣除玩家背包中的指定名称物品。 |
eco:{数量} | 检查并扣除经济余额。 |
point:{数量} | 检查并扣除点券。 |
如果 unlock-condition 被删除或设置为空列表,则该槽位不需要解锁。主配置 unlock-empty-condition-slot: true 时,无解锁条件的槽位会自动视为已解锁,并且不会触发 unlock-command。
解锁失败和成功提示分别由以下配置控制:
yaml
message:
unlock-fail: '&c解锁失败, 条件不足.'
unlock-success: '&a解锁成功!'
not-unlocked-yet: '&c该槽位还没有解锁.'1
2
3
4
2
3
4
解锁条件中的物品没有被识别
item:{物品名#数量} 按物品名称检查物品,不是按普通材质 ID 检查。检查玩家背包时,插件会读取物品名称和 Lore;如果服务器启用了 LyLootsWareHouse,也会检查其中匹配的物品数据。
请确认:
- 物品名称与配置中的文本一致。
- 数量格式为
名称#数量。 - 颜色代码使用
&,并与物品实际名称颜色一致。 - 玩家拥有足够数量的物品。
属性没有生效
先检查主配置 attribute-plugin 是否填写为实际使用的属性插件。项目代码支持以下值:
attribute-plugin | 属性处理方式 |
|---|---|
AttributePlus | 将装备 Lore 加入 AttributePlus。 |
SX-Attribute2 | 使用 SX-Attribute2 处理属性。 |
SX-Attribute3 | 使用 SX-Attribute3 处理属性。 |
AttributeSystem | 使用 AttributeSystem 处理属性。 |
ItemLoreOrigin | 使用 ItemLoreOrigin 处理属性。 |
然后检查:
- 槽位是否配置了
attribute-condition。 - 玩家是否满足
attribute-condition中的权限或 PlaceholderAPI 条件。 - 物品是否确实存在 Lore 属性文本。
- 槽位是否已经解锁并成功装备物品。
- 属性插件本身是否已正确安装并启用。
修改 attribute-plugin 后需要重启服务器。修改属性相关配置后,可以使用以下指令刷新指定玩家的背包属性:
text
/li refreshattr 玩家名1
原版背包物品的属性没有加载
原版背包槽位属性由主配置 load-attribute-form-origin-inventory 控制,槽位编号只能使用 0 到 35。
示例配置:
yaml
load-attribute-form-origin-inventory:
- 10
- 111
2
3
2
3
如果某个原版槽位还配置了 load-attribute-form-origin-inventory-condition.槽位ID,只有条件满足时,该槽位物品才会加载属性。例如:
yaml
load-attribute-form-origin-inventory-condition:
10:
- 'lore:{类型:头盔}'1
2
3
2
3
该功能的属性加载代码针对 AttributePlus 进行了实际处理。使用其它属性插件时,不应仅凭该配置判断原版背包槽位一定会生效。
属性加载比例没有生效
属性比例功能需要同时满足以下条件:
- 主配置开启
attribute-rate-enable: true。 - 主配置
attribute-rate-key中填写了需要计算的属性关键词。 - 槽位配置了
attribute-rate,或使用默认值1.0。 - 物品 Lore 中包含配置的属性关键词和数字。
- 槽位的
attribute-condition满足。
示例:
yaml
attribute-rate-enable: true
attribute-rate-key:
- '物理伤害'
- '生命上限'1
2
3
4
2
3
4
槽位中的 attribute-rate: 2.0 表示将匹配到的属性数值按两倍计算,0.5 表示按一半计算。颜色代码中的数字不会作为属性数值计算。
装备后 Lore 没有替换
主配置 lore-replace 只会在物品成功装备到槽位时处理物品 Lore,并按整行文本进行替换。
例如:
yaml
lore-replace:
'&c装备后绑定': '&6已绑定: &a%player_name%'1
2
2
请确认:
- 原 Lore 整行文本与配置键一致。
- 颜色代码一致。
- 替换发生在装备操作时,已经存在于槽位中的旧物品不会因为打开背包而重新替换。
- 替换结果中的 PlaceholderAPI 变量可以正常解析。
龙核界面槽位没有同步
先确认主配置已开启:
yaml
dragoncore-slot-mapping-enable: true1
龙核界面槽位的标识必须严格使用以下格式:
text
lyinv_背包ID_槽位ID1
例如,背包 ID 为 test、槽位 ID 为 头盔 时,标识应为:
text
lyinv_test_头盔1
还需要确认 DragonCore 已安装并正常启用。该映射功能在配置中注明需要重启服务器后生效;修改后建议重启服务器,再重新打开龙核界面测试。
龙核映射槽位点击没有反应
检查以下项目:
- 槽位标识是否以
lyinv_开头。 - 标识中的背包 ID 是否存在。
- 标识中的槽位 ID 是否存在于该背包配置。
- 玩家是否已经载入该背包数据。
- 是否触发了
click-cooldown。 - 槽位是否满足解锁、放入和取出条件。
龙核槽位点击同样会执行槽位的 click-command、replace-command、take-out-command 和 unlock-command。
GermPlugin 界面槽位没有同步
GermPlugin 槽位需要在 LyInventory 槽位配置中设置对应的映射槽位标识。插件会按 GermPlugin 槽位的 identity 查找 mapping-slot 相同的 LyInventory 槽位。
请确认:
- GermPlugin 槽位的 identity 与 LyInventory 的映射值完全一致。
- 对应背包已载入玩家数据。
- 槽位 ID 没有在同一背包或全局配置中重复。
- 操作物品满足槽位条件和解锁条件。
龙时装没有显示
龙时装展示由 /li show 指令控制,并依赖 DragonArmourers。
| 操作 | 指令 |
|---|---|
| 展示指定背包的龙时装 | /li show 背包ID |
| 关闭当前展示 | /li show disable |
| 为指定玩家展示 | /li show 背包ID 玩家名 |
| 为指定玩家关闭展示 | /li show disable 玩家名 |
请确认:
- DragonArmourers 已安装并启用。
- 指定背包 ID 存在。
- 背包槽位中的物品确实包含 DragonArmourers 可识别的时装数据。
- 指令中的
disable拼写正确。
变量返回 null
插件当前可确认的变量如下:
| 变量 | 返回内容 |
|---|---|
%li_name_背包ID:槽位ID% | 指定背包指定槽位物品的名称;槽位没有物品时返回字符串 null。 |
%li_unlock_背包ID:槽位ID% | 指定槽位的解锁状态;已解锁返回 true,未解锁返回 false。 |
如果槽位有物品但名称变量仍返回 null,检查:
- 背包 ID 是否与背包配置中的
id一致。 - 槽位 ID 是否与
slot-set下的槽位键一致。 - 变量中的分隔符是否使用英文冒号
:。 - 物品是否实际保存到该槽位,而不是只显示在界面中。
数据重启后丢失
插件支持 YAML 和 MySQL 两种玩家数据保存路径,具体使用哪一种取决于数据库配置与连接状态。
YAML 保存
YAML 保存会在玩家退出或被踢出时保存数据,并按 auto-save-interval 定时自动保存。主配置中的间隔单位为秒:
yaml
auto-save-interval: 31
YAML 数据保存使用临时文件、备份文件和恢复逻辑。若主数据文件损坏,插件会尝试从对应的 .bak 备份文件恢复。
MySQL 保存
启用 MySQL 时,必须安装 LyMySQLCore,并且 LyMySQLCore 成功连接数据库后,相关 MySQL 数据保存与读取功能才会生效。
主配置示例:
yaml
mysql:
enable: true
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 开关或连接配置后需要重启服务器。若数据库连接失败,插件会将数据库状态视为不可用;此时不能把“已开启 mysql.enable”当作数据库已经生效。
MySQL 已开启但数据没有保存
按以下顺序检查:
mysql.enable是否设置为true。LyMySQLCore是否安装并成功连接数据库。- 数据库地址、端口、库名、用户名和密码是否正确。
- 控制台是否显示数据库连接成功。
- 数据库用户是否有创建表和读写数据的权限。
- 是否在修改配置后重启了服务器。
插件连接成功后会使用新版玩家数据表;如果检测到旧数据表,初始化过程会尝试迁移旧数据。数据库初始化或迁移失败时,相关 MySQL 功能不会生效。
修改配置后没有生效
不同配置的生效方式不同:
| 配置 | 生效要求 |
|---|---|
attribute-plugin | 修改后重启服务器。 |
dragoncore-slot-mapping-enable | 修改后重启服务器。 |
mysql.enable 及 MySQL 连接参数 | 修改后重启服务器。 |
| 背包文件内容 | 使用 /li reload 重载。 |
message | 使用 /li reload 重载。 |
| 槽位条件与命令 | 使用 /li reload 重载。 |
如果重载期间服务器正在处理玩家数据,建议等待重载完成后再重新打开背包测试。
点击操作过快
插件会对点击槽位、放入、取出、替换物品和部分界面刷新操作使用冷却时间。主配置如下:
yaml
click-cooldown: 300
click-cooldown-message: '&7对不起, 操作过快, 请稍后尝试.'1
2
2
click-cooldown 的单位是毫秒,300 表示 0.3 秒。需要调整时修改该值并重载配置。
为什么堆叠物品不能装备
插件会阻止数量大于 1 的物品直接装备到槽位,以避免一次装备整组物品。触发时会发送:
yaml
message:
equip-item-amount-too-large: '&c装备禁止堆叠'1
2
2
请先将物品拆分为单个物品,再进行装备。
槽位配置重复导致异常
slot-set 下的槽位 ID 必须全局唯一,不能在不同背包中重复使用同一个槽位 ID。项目示例配置已明确提示全局不可重复,否则可能出现严重异常。
同时建议检查:
- 每个槽位的
slot位置是否符合背包行数范围。 - 同一个背包内是否有多个槽位占用同一位置。
- 龙核映射标识是否由正确的背包 ID 和槽位 ID 组成。
hasNbt 或 nbtCheck 条件始终失败
这两种条件需要 LyCore 提供 NBT 读取能力。请确认 LyCore 已安装并正常启用。
条件格式如下:
yaml
replace-condition:
- 'hasNbt:{NBT节点A.B.C}'
- 'nbtCheck:{{NBT节点A.B.C} > 3}'1
2
3
2
3
其中:
hasNbt:{NBT路径}检查指定 NBT 节点是否存在。nbtCheck:{表达式}将表达式中的{NBT路径}替换为实际值后进行计算。- 多层 NBT 节点使用英文句点
.分隔。
如果控制台提示 NBT 工具未初始化,这两类条件会判定失败。
条件中的表达式不通过
papi:{表达式} 会先解析 PlaceholderAPI 变量,再处理逻辑和比较运算。支持的逻辑运算符包括:
| 运算符 | 说明 |
|---|---|
&& | 并且,左右条件都满足。 |
| ` | |
>、>= | 大于、大于等于。 |
<、<= | 小于、小于等于。 |
== | 相等。 |
!= | 不相等。 |
请检查变量解析结果是否为空,以及表达式中的括号、运算符和数字格式是否正确。条件失败提示可以使用 <value> 获取 check-put-on-condition 从物品 Lore 中读取到的数值;该占位符必须放在行内代码或代码块中,避免被文档解析为标签。
关闭背包后属性没有立即更新
玩家关闭 LyInventory 背包后,插件会异步保存玩家数据并更新背包属性。属性刷新不是由关闭界面线程同步完成的,因此可能存在短暂延迟。
如果等待后仍未更新,使用管理员指令手动刷新:
text
/li refreshattr 玩家名1
同时确认 attribute-plugin 配置值、属性插件状态以及槽位 attribute-condition 均正确。