Skip to content

常见问题

背包打不开

按以下顺序检查:

  1. 确认背包配置文件中的 id 与指令中的背包 ID 完全一致。
  2. 确认背包配置中的 permission 满足当前玩家权限。删除或留空 permission 时不检查权限。
  3. 确认背包配置中的 condition 条件全部满足。背包条件支持以下类型:
条件说明
papi:{表达式}使用 PlaceholderAPI 变量计算表达式。
permission:{权限节点}检查玩家是否拥有权限。
nopermission:{权限节点}检查玩家是否没有权限。
  1. 检查背包配置文件是否位于插件读取的背包目录中,并确认 YAML 缩进正确。
  2. 如果刚修改了背包配置,使用 /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部位的装备!'

如果物品包含禁止穿戴的 Lore,还会受到主配置 anti-equip-item-lore 的限制。主配置 check-put-on-condition 还可以根据物品 Lore 中的数值执行额外条件检查。

Shift 左键没有自动装备

插件支持在打开 LyInventory 背包时使用 Shift 左键自动匹配槽位,但必须同时满足以下条件:

  • 物品数量不能大于 1,堆叠物品不能直接装备。
  • 槽位没有已经装备的物品。
  • 槽位已经解锁,或该槽位不需要解锁。
  • 物品满足槽位的 replace-condition
  • 物品满足主配置中的 anti-equip-item-lorecheck-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该槽位还没有解锁.'

解锁条件中的物品没有被识别

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 玩家名

原版背包物品的属性没有加载

原版背包槽位属性由主配置 load-attribute-form-origin-inventory 控制,槽位编号只能使用 035

示例配置:

yaml
load-attribute-form-origin-inventory:
  - 10
  - 11

如果某个原版槽位还配置了 load-attribute-form-origin-inventory-condition.槽位ID,只有条件满足时,该槽位物品才会加载属性。例如:

yaml
load-attribute-form-origin-inventory-condition:
  10:
    - 'lore:{类型:头盔}'

该功能的属性加载代码针对 AttributePlus 进行了实际处理。使用其它属性插件时,不应仅凭该配置判断原版背包槽位一定会生效。

属性加载比例没有生效

属性比例功能需要同时满足以下条件:

  1. 主配置开启 attribute-rate-enable: true
  2. 主配置 attribute-rate-key 中填写了需要计算的属性关键词。
  3. 槽位配置了 attribute-rate,或使用默认值 1.0
  4. 物品 Lore 中包含配置的属性关键词和数字。
  5. 槽位的 attribute-condition 满足。

示例:

yaml
attribute-rate-enable: true
attribute-rate-key:
  - '物理伤害'
  - '生命上限'

槽位中的 attribute-rate: 2.0 表示将匹配到的属性数值按两倍计算,0.5 表示按一半计算。颜色代码中的数字不会作为属性数值计算。

装备后 Lore 没有替换

主配置 lore-replace 只会在物品成功装备到槽位时处理物品 Lore,并按整行文本进行替换。

例如:

yaml
lore-replace:
  '&c装备后绑定': '&6已绑定: &a%player_name%'

请确认:

  • 原 Lore 整行文本与配置键一致。
  • 颜色代码一致。
  • 替换发生在装备操作时,已经存在于槽位中的旧物品不会因为打开背包而重新替换。
  • 替换结果中的 PlaceholderAPI 变量可以正常解析。

龙核界面槽位没有同步

先确认主配置已开启:

yaml
dragoncore-slot-mapping-enable: true

龙核界面槽位的标识必须严格使用以下格式:

text
lyinv_背包ID_槽位ID

例如,背包 ID 为 test、槽位 ID 为 头盔 时,标识应为:

text
lyinv_test_头盔

还需要确认 DragonCore 已安装并正常启用。该映射功能在配置中注明需要重启服务器后生效;修改后建议重启服务器,再重新打开龙核界面测试。

龙核映射槽位点击没有反应

检查以下项目:

  • 槽位标识是否以 lyinv_ 开头。
  • 标识中的背包 ID 是否存在。
  • 标识中的槽位 ID 是否存在于该背包配置。
  • 玩家是否已经载入该背包数据。
  • 是否触发了 click-cooldown
  • 槽位是否满足解锁、放入和取出条件。

龙核槽位点击同样会执行槽位的 click-commandreplace-commandtake-out-commandunlock-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: 3

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'

修改 MySQL 开关或连接配置后需要重启服务器。若数据库连接失败,插件会将数据库状态视为不可用;此时不能把“已开启 mysql.enable”当作数据库已经生效。

MySQL 已开启但数据没有保存

按以下顺序检查:

  1. mysql.enable 是否设置为 true
  2. LyMySQLCore 是否安装并成功连接数据库。
  3. 数据库地址、端口、库名、用户名和密码是否正确。
  4. 控制台是否显示数据库连接成功。
  5. 数据库用户是否有创建表和读写数据的权限。
  6. 是否在修改配置后重启了服务器。

插件连接成功后会使用新版玩家数据表;如果检测到旧数据表,初始化过程会尝试迁移旧数据。数据库初始化或迁移失败时,相关 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对不起, 操作过快, 请稍后尝试.'

click-cooldown 的单位是毫秒,300 表示 0.3 秒。需要调整时修改该值并重载配置。

为什么堆叠物品不能装备

插件会阻止数量大于 1 的物品直接装备到槽位,以避免一次装备整组物品。触发时会发送:

yaml
message:
  equip-item-amount-too-large: '&c装备禁止堆叠'

请先将物品拆分为单个物品,再进行装备。

槽位配置重复导致异常

slot-set 下的槽位 ID 必须全局唯一,不能在不同背包中重复使用同一个槽位 ID。项目示例配置已明确提示全局不可重复,否则可能出现严重异常。

同时建议检查:

  • 每个槽位的 slot 位置是否符合背包行数范围。
  • 同一个背包内是否有多个槽位占用同一位置。
  • 龙核映射标识是否由正确的背包 ID 和槽位 ID 组成。

hasNbtnbtCheck 条件始终失败

这两种条件需要 LyCore 提供 NBT 读取能力。请确认 LyCore 已安装并正常启用。

条件格式如下:

yaml
replace-condition:
  - 'hasNbt:{NBT节点A.B.C}'
 - 'nbtCheck:&#123;&#123;NBT节点A.B.C} > 3}'

其中:

  • hasNbt:{NBT路径} 检查指定 NBT 节点是否存在。
  • nbtCheck:{表达式} 将表达式中的 {NBT路径} 替换为实际值后进行计算。
  • 多层 NBT 节点使用英文句点 . 分隔。

如果控制台提示 NBT 工具未初始化,这两类条件会判定失败。

条件中的表达式不通过

papi:{表达式} 会先解析 PlaceholderAPI 变量,再处理逻辑和比较运算。支持的逻辑运算符包括:

运算符说明
&&并且,左右条件都满足。
`
>>=大于、大于等于。
<<=小于、小于等于。
==相等。
!=不相等。

请检查变量解析结果是否为空,以及表达式中的括号、运算符和数字格式是否正确。条件失败提示可以使用 <value> 获取 check-put-on-condition 从物品 Lore 中读取到的数值;该占位符必须放在行内代码或代码块中,避免被文档解析为标签。

关闭背包后属性没有立即更新

玩家关闭 LyInventory 背包后,插件会异步保存玩家数据并更新背包属性。属性刷新不是由关闭界面线程同步完成的,因此可能存在短暂延迟。

如果等待后仍未更新,使用管理员指令手动刷新:

text
/li refreshattr 玩家名

同时确认 attribute-plugin 配置值、属性插件状态以及槽位 attribute-condition 均正确。