常见问题
玩家无法解锁仓库
按以下顺序检查:
- 确认仓库 ID 与
warehouse下配置的键完全一致。 - 检查玩家数据是否已加载。玩家数据未加载时,解锁、开关和仓库操作可能无法执行。
- 检查
unlock-condition中的全部条件。多个条件会一起判断,只有全部满足才会解锁。 - 如果通过仓库总览点击解锁,确认
try-auto-unlock没有被关闭。关闭后应使用/lyck unlock 仓库ID或自定义菜单触发解锁。 - 检查
message.unlock-fail、message.unlock-repeat和message.warehouse-is-lock对应的提示。
常见解锁条件如下:
| 条件格式 | 检查内容 |
|---|---|
unlock:{仓库ID} | 玩家是否已经解锁指定仓库 |
eco:{数量} | Vault 经济金币条件 |
point:{数量} | PlayerPoints 点券条件 |
item:{物品名#数量} | 玩家背包内的指定物品 |
papi:{表达式} | PlaceholderAPI 变量表达式 |
permission:{权限} | 玩家必须拥有指定权限 |
nopermission:{权限} | 玩家必须没有指定权限 |
papi 条件支持 >、>=、==、!=、<、<=,并支持使用 && 和 || 组合判断。涉及金币、点券或 PlaceholderAPI 的条件时,还要确认对应插件已安装并正常工作。
仓库已经解锁,但仍然无法打开
检查仓库的 open-condition。该条件会在已解锁玩家尝试打开仓库时判断,判断失败时不会发送提示。
open-condition 可以留空或删除。配置了条件时,可使用 PlaceholderAPI 表达式、permission 和 nopermission 条件。
还需要确认:
/lyck open 仓库ID使用的仓库 ID 正确。- 玩家数据已经完成加载。
- 仓库仍然存在于当前
warehouse配置中。 - 数据库模式下数据库已经连接完成。
点击仓库总览时为什么直接尝试解锁
仓库总览会先检查玩家是否已经解锁仓库:
- 已解锁:打开对应仓库。
- 未解锁:调用仓库解锁判断。
如果不希望玩家点击总览时自动尝试解锁,将 try-auto-unlock 设置为 false,再通过 /lyck unlock 仓库ID 或自定义菜单控制解锁流程。
物品无法存入仓库
按以下顺序检查:
- 玩家是否已经解锁至少一个可用仓库。
- 仓库是否还有空槽位,或是否已经存在可以叠加的相同物品。
- 物品 Lore 是否命中了
prohibited-lore-for-storage。 - 当前界面是否处于存储模式。其他模式主要用于取出、出售、分解或删除。
LyWarehouseStorageItemEvent是否被其他插件取消,或是否把入库数量修改为0。- 自动分解或自动出售是否在入库事件中提前处理了该物品。
禁止存储规则采用 Lore 包含判断。颜色符号会把 & 转换为 Minecraft 颜色符号,因此配置文本和实际 Lore 的颜色、空格与内容需要对应。
仓库显示已满,但同类物品仍有槽位
插件判断同类物品时会比较物品本身及其物品数据。材质、名称、Lore、附魔、耐久或其他物品数据不同,都可能被识别为不同物品并占用新槽位。
仓库容量按 warehouse.仓库ID.size × 9 计算。界面底部按钮行不属于物品存储容量。
可通过以下变量检查剩余槽位:
| 变量 | 含义 |
|---|---|
%lyck_empty_slot_all% | 全部仓库剩余空槽位数量 |
%lyck_empty_slot:仓库ID% | 指定仓库剩余空槽位数量 |
点击背包物品后为什么整类物品都被存入
在仓库存储界面内左键点击背包物品时,插件会统计玩家背包前 36 格中全部相似物品,并尝试一次性存入当前仓库。成功后会从这些背包槽位中移除对应物品。
如果只希望存入部分数量,需要通过其他受支持的入库入口控制数量;当前仓库界面的该点击操作不是单个存入。
自动拾取不生效
自动拾取需要同时满足以下条件:
| 检查项 | 要求 |
|---|---|
pickup-to-warehouse-enable | 必须为 true |
| 玩家个人开关 | 使用 /lyck autopick 开启 |
| 玩家数据 | 必须已经加载 |
| 仓库状态 | 至少存在已解锁且可存入的仓库 |
| 禁止 Lore | 物品不能命中 prohibited-lore-for-storage |
| 拾取事件 | 不能已经被其他插件取消 |
自动拾取会按仓库配置顺序查找位置,并优先寻找能够叠加该物品的槽位;没有可叠加槽位时,再寻找空槽位。所有可用仓库都没有位置时,物品不会进入仓库。
/lyck autopick 显示暂时无法切换
该提示表示玩家数据尚未加载到内存。可以等待数据加载完成后再次执行。
如果长期无法切换:
- 本地 YAML 模式下,检查玩家数据文件是否能够正常读取。
- MySQL 模式下,检查 LyMySQLCore 与数据库连接状态。
- 检查控制台是否存在玩家数据文件损坏、数据库连接失败或加载异常。
自动出售不触发
自动出售必须同时满足以下条件:
- 已配置
auto-sell-item.出售组ID。 - 玩家执行
/lyck autosell 出售组ID开启该组。 - 玩家拥有
lyck.autosell.出售组ID权限。 - 入库物品带有 Lore。
- 物品任意一行 Lore 包含出售组中的任意关键词。
- LySell 能够成功出售该物品。
- 入库事件没有被取消,数量也没有被修改为
0。
自动出售不是扫描仓库已有物品,而是在物品进入仓库时处理。开启开关前已经存放在仓库中的物品,不会因为开启开关而自动出售。
自动分解不触发
自动分解必须同时满足以下条件:
- 已配置
auto-decompose-item.分解组ID。 - 玩家执行
/lyck autofj 分解组ID开启该组。 - 玩家拥有
lyck.autofj.分解组ID权限。 - 入库物品带有 Lore。
- 物品任意一行 Lore 包含分解组中的任意关键词。
- LyDecomposition 能够为该物品返回有效分解结果。
- 全部仓库剩余空槽位足以容纳分解结果。
- 入库事件没有被取消,数量也没有被修改为
0。
自动分解不是扫描仓库已有物品,而是在物品进入仓库时处理。配置说明中明确自动分解优先级高于自动出售。
自动出售或自动分解提示没有权限
权限会根据分组 ID 动态生成:
| 功能 | 权限格式 |
|---|---|
| 自动出售 | lyck.autosell.出售组ID |
| 自动分解 | lyck.autofj.分解组ID |
分组 ID 必须与 auto-sell-item 或 auto-decompose-item 下的键完全一致,包括中文、大小写和其他字符。
自动处理为什么匹配不到 Lore
自动出售、自动分解和禁止入库都使用 Lore 包含判断,并会把配置中的 & 颜色符号转换为 Minecraft 颜色符号。
检查以下内容:
- 物品是否确实带有 Lore。
- 关键词是否位于同一行 Lore 中。
- 颜色符号是否一致。
- 关键词前后的空格是否一致。
- 分组 ID 是否写在正确的配置节点下。
- 玩家开启的是否是同一个分组。
配置一组多个关键词时,命中其中任意一个即可匹配,不要求全部关键词同时存在。
MythicMobs 掉落没有进入仓库
检查以下配置:
yaml
mythicmobs-drop-to-warehouse: true
pickup-to-warehouse-enable: true还需要满足:
- 击杀者必须是玩家。
- 玩家必须有可用的仓库位置。
- 入库事件不能被其他插件取消。
- 入库数量必须大于
0。
当仓库无法接收 MythicMobs 物品时,MythicMobs 事件处理会把物品自然掉落在怪物位置。
搜索仓库时没有结果
/lyck search 搜索内容 会建立仓库搜索结果并打开搜索界面。检查以下内容:
- 玩家数据已经加载。
- 搜索内容与物品可搜索信息匹配。
- 指令只提交了一个搜索参数。当前指令处理要求参数数量固定,带空格的搜索内容会被拆成多个参数而无法进入搜索逻辑。
- 搜索结果超过一页时,使用界面第 46 格和第 54 格的翻页按钮。
搜索界面支持直接取出物品:
| 点击方式 | 取出数量 |
|---|---|
| 左键 | 1 个 |
| 右键 | 10 个 |
| Shift + 左键 | 一组,按物品最大堆叠数量计算 |
| Shift + 右键 | 在背包容量允许的范围内尽量全部取出 |
Shift + 右键不能全部取出
Shift + 右键会循环向玩家背包添加物品,直到仓库物品取完或背包无法继续容纳。背包空间不足时,只会扣除实际成功放入背包的数量。
取出普通物品前,插件还会检查玩家背包是否至少存在一个空槽位。背包完全没有空槽位时,即使已有同类物品可能继续叠加,点击操作也可能不会执行。
如何交换仓库槽位
在普通取出模式中使用鼠标中键:
- 中键点击一个存在物品的槽位,记录原槽位。
- 再中键点击目标槽位。
- 目标槽位有物品时交换两个位置;目标槽位为空时移动到新位置。
如果第一次记录的槽位物品已经不存在,记录会被重置。
排序按钮没有反应
排序按钮的处理格式为 sort:排序组ID,排序组必须存在于 sort-button 下。
例如:
yaml
sort-button:
品质排序:
- '&7品质: &6史诗'
- '&7品质: &d极品'
warehouse:
'仓库1':
button:
2:
item: '66:0'
name: '&6一键排序'
lore:
- '&a根据品质排序'
handle:
- 'sort:品质排序'排序执行期间,玩家不能继续操作仓库。排序规则按列表从前往后排列。
分解模式或出售模式无法使用
仓库按钮只负责切换界面模式,实际处理依赖对应插件:
| 模式 | 依赖 |
|---|---|
| 分解模式 | LyDecomposition |
| 出售模式 | LySell |
配置示例中的按钮说明标注了 LyDecompositionReload 1.0.7+ 和 LySell 2.0.3+,但项目依赖未提供完整版本约束。实际使用时应确保服务器安装的对应插件提供当前代码调用的 API。
模式下的点击数量如下:
| 点击方式 | 分解、出售或删除数量 |
|---|---|
| 左键 | 1 个 |
| 右键 | 10 个 |
| Shift + 左键 | 100 个 |
| Shift + 右键 | 1000 个 |
删除模式是否可以恢复物品
删除模式会直接扣除仓库内物品,不会把物品返还到背包。操作前应确认界面模式与点击数量。
如果误删,只能依赖操作前的数据备份或其他外部恢复方式。show-operation-log 只控制控制台操作记录,不等于可恢复备份。
/lyck give 发放失败
/lyck give 玩家 物品库插件@物品ID 数量 需要满足:
- 执行者为 OP。
- 目标玩家在线且玩家数据已加载。
- 物品库标识与物品 ID 能够生成有效物品。
- 数量是整数并且大于
0。 - 入库事件未被取消。
- 至少一个仓库存在可叠加槽位或空槽位。
代码中明确处理的物品来源标识包括:
neigeItemsSX-ItemZaphkielMythicMobsSX-Attribute
无法读取物品时,控制台会输出“检测到道具读取不存在”。
/lyck take 扣除失败
/lyck take 玩家 物品名称 数量 按物品名称统计仓库内数量。以下情况会失败:
- 目标玩家不在线或数据不存在。
- 数量不是整数。
- 仓库内该名称物品的总数量不足。
- 输入名称与实际物品名称不一致。
数量不足时不会执行部分扣除。物品名称中的 & 会转换为 Minecraft 颜色符号。
/lyck pick 没有拾取附近物品
/lyck pick 玩家 范围 需要 OP 执行,目标玩家必须在线且数据已经加载,范围必须是有效数字。
插件会查找目标玩家所在世界、指定立方范围内的掉落物,并逐个尝试放入仓库。只有确认入库成功后,才会移除地面实体。仓库没有空间或入库事件被取消时,物品会留在地面。
修改配置后为什么没有生效
普通配置可以使用 /lyck reload 重载。以下内容不应只依赖重载:
- 切换
mysql.enable后需要重启服务器。 - 数据库连接状态异常时需要修复 LyMySQLCore 或数据库配置,再重新启动服务器。
- 增删依赖插件后应完整重启服务器。
重载前应检查 YAML 缩进和节点层级。错误的层级可能导致配置存在但功能读取不到。
开启 MySQL 后玩家无法进入服务器
MySQL 存储必须安装 LyMySQLCore,并确保 LyMySQLCore 已成功连接数据库后相关功能才会生效。
当 MySQL 模式启用但数据库连接尚未完成时,插件会拒绝玩家登录,并提示服务器尚未初始化完毕;OP 会看到 LyWarehouse 数据库未连接完成的附加说明。
检查以下配置:
yaml
mysql:
enable: true
databasename: mc2
username: mc2
password: mc1234
port: 3306
ip: 127.0.0.1修改 mysql.enable 或连接信息后重启服务器。还需要确认数据库地址、端口、库名、账号、密码和网络权限正确。
切换 MySQL 后为什么看不到原来的本地数据
开启 MySQL 不会自动把 plugins/LyWarehouse/data/ 中的本地 YAML 数据迁移到数据库。
迁移前先备份本地数据目录和数据库,然后执行以下步骤:
- 安装 LyMySQLCore,并确保其成功连接数据库。
- 配置
mysql.enable: true。 - 重启服务器,确认 LyWarehouse 数据库连接成功。
- 在控制台执行
/lyck yaml-to-mysql。 - 检查控制台中每名玩家的转换结果和最终完成提示。
/lyck yaml-to-mysql 只能由控制台执行,并且执行者需要满足 OP 判断。数据库没有连接时会直接提示“数据库尚未连接”。
/lyck yaml-to-mysql 没有执行
该指令必须满足以下条件:
- 从服务器控制台执行,不能由玩家执行。
mysql.enable已开启并完成重启。- LyMySQLCore 已安装且成功连接数据库。
plugins/LyWarehouse/data/目录存在。- 本地数据文件名是有效的玩家 UUID。
迁移过程会把每个 YAML 文件的完整数据写入数据库。数据库中已有同名玩家记录时会更新,没有记录时会新增。
如何迁移 LegendWarehouse 数据
项目中提供了控制台转换指令:
text
/lyck legenwarehouse注意指令参数在代码中就是 legenwarehouse,不是完整的 legendwarehouse。该指令只能从控制台执行,并要求 OP 判断通过。
转换逻辑会:
- 扫描
plugins/LegendWarehouse/data/。 - 只读取路径中包含玩家
item子目录的.yml文件。 - 按玩家名合并相同物品的数量。
- 按 LyWarehouse 当前仓库配置顺序填充槽位。
- 将转换出的本地数据写入
plugins/LyWarehouse/data/玩家UUID.yml。 - 将当前配置中的全部仓库写入玩家解锁列表。
- 重置自动拾取、自动出售组和自动分解组。
如果全部仓库容量不足,超出的物品条目不会写入,控制台会显示溢出条目数量。转换前必须备份两个插件的数据目录,并确认 LyWarehouse 已配置足够容量。
本地 YAML 数据文件损坏怎么办
本地存储使用安全写入与备份恢复机制:
- 保存时先写入唯一
.tmp临时文件。 - 旧主文件会移动为同名
.bak备份。 - 临时文件完成后再替换主文件。
- 主文件损坏时会尝试读取
.bak。 - 备份可用时会恢复主文件。
- 主文件和备份都损坏时会返回空数据,并删除损坏文件。
- 历史
.tmp文件会在首次读取对应数据目录时清理。
文件读取与写入使用 UTF-8,并兼容历史 UTF-8 BOM。检测到 NUL 字符或无效 YAML 时,会把文件判定为损坏并在控制台输出警告。
不要在服务器运行期间手动同时修改玩家主文件和 .bak 文件。恢复或替换数据前应先停止服务器并保留原文件副本。
玩家退出后数据没有保存
本地 YAML 模式会在玩家退出或被踢出时异步保存;关闭普通仓库、分解、出售、删除或搜索界面时也会保存。插件还会根据 auto-save-interval 定时自动保存。
检查以下内容:
auto-save-interval是否为合理的秒数。- 数据目录是否具有写入权限。
- 控制台是否存在 YAML 损坏或保存异常。
- MySQL 模式下 LyMySQLCore 是否触发了安全保存事件。
- 服务器是否被强制终止,导致最后一次保存未完成。
仓库物品数量为什么始终显示为 1
检查:
yaml
hide-item-amount: true开启后,仓库界面中的物品图标会始终显示数量 1。实际存储数量不会因此变成 1,真实数量仍通过 Lore 中的 {amount}、消息或 PlaceholderAPI 变量显示。
需要显示原始堆叠数量时,将该配置改为 false 并重载插件。
操作日志没有输出
检查:
yaml
show-operation-log: true关闭后,玩家存储、取出、扣除等仓库操作不会通过该日志工具输出到控制台。此开关不控制普通报错、数据库连接信息和数据迁移日志。
PlaceholderAPI 变量显示为原文本
确认 PlaceholderAPI 已安装并启用。LyWarehouse 在 plugin.yml 中将 PlaceholderAPI 声明为软依赖,没有安装时相关变量和 papi 条件不能正常解析。
还需要检查:
- 变量格式是否正确。
- 仓库 ID、槽位 ID或物品名是否与实际数据一致。
- 玩家数据是否已加载。
%lyck_slot_amount:仓库ID:槽位ID%指定槽位不存在时,会返回papi-slot-amount-default-value配置的默认值。
仓库界面材质显示错误
插件同时兼容旧版数字 ID 与运行版本的英文材质 ID。配置示例使用 54:0、160:9 等旧版格式,高版本也可以使用类似 CHEST#0 的格式。
检查材质是否存在于当前服务器版本。无法识别的材质可能无法正确生成物品,部分物品构建逻辑在读取失败时会回退为石头。
为什么只能看到重载指令
插件在核心验证或加载完成前使用客户端指令处理器,此时 OP 只能看到 /lyck reload,并收到“更多指令将在验证通过后显示”的提示。
如果完整指令长期没有出现,检查插件启动日志、核心加载状态和许可证验证相关报错。不要仅根据 /lyck 的简化帮助判断功能已经正常加载。