Skip to content

常见问题

玩家无法解锁仓库

按以下顺序检查:

  1. 确认仓库 ID 与 warehouse 下配置的键完全一致。
  2. 检查玩家数据是否已加载。玩家数据未加载时,解锁、开关和仓库操作可能无法执行。
  3. 检查 unlock-condition 中的全部条件。多个条件会一起判断,只有全部满足才会解锁。
  4. 如果通过仓库总览点击解锁,确认 try-auto-unlock 没有被关闭。关闭后应使用 /lyck unlock 仓库ID 或自定义菜单触发解锁。
  5. 检查 message.unlock-failmessage.unlock-repeatmessage.warehouse-is-lock 对应的提示。

常见解锁条件如下:

条件格式检查内容
unlock:{仓库ID}玩家是否已经解锁指定仓库
eco:{数量}Vault 经济金币条件
point:{数量}PlayerPoints 点券条件
item:{物品名#数量}玩家背包内的指定物品
papi:{表达式}PlaceholderAPI 变量表达式
permission:{权限}玩家必须拥有指定权限
nopermission:{权限}玩家必须没有指定权限

papi 条件支持 >>===!=<<=,并支持使用 &&|| 组合判断。涉及金币、点券或 PlaceholderAPI 的条件时,还要确认对应插件已安装并正常工作。

仓库已经解锁,但仍然无法打开

检查仓库的 open-condition。该条件会在已解锁玩家尝试打开仓库时判断,判断失败时不会发送提示。

open-condition 可以留空或删除。配置了条件时,可使用 PlaceholderAPI 表达式、permissionnopermission 条件。

还需要确认:

  • /lyck open 仓库ID 使用的仓库 ID 正确。
  • 玩家数据已经完成加载。
  • 仓库仍然存在于当前 warehouse 配置中。
  • 数据库模式下数据库已经连接完成。

点击仓库总览时为什么直接尝试解锁

仓库总览会先检查玩家是否已经解锁仓库:

  • 已解锁:打开对应仓库。
  • 未解锁:调用仓库解锁判断。

如果不希望玩家点击总览时自动尝试解锁,将 try-auto-unlock 设置为 false,再通过 /lyck unlock 仓库ID 或自定义菜单控制解锁流程。

物品无法存入仓库

按以下顺序检查:

  1. 玩家是否已经解锁至少一个可用仓库。
  2. 仓库是否还有空槽位,或是否已经存在可以叠加的相同物品。
  3. 物品 Lore 是否命中了 prohibited-lore-for-storage
  4. 当前界面是否处于存储模式。其他模式主要用于取出、出售、分解或删除。
  5. LyWarehouseStorageItemEvent 是否被其他插件取消,或是否把入库数量修改为 0
  6. 自动分解或自动出售是否在入库事件中提前处理了该物品。

禁止存储规则采用 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 与数据库连接状态。
  • 检查控制台是否存在玩家数据文件损坏、数据库连接失败或加载异常。

自动出售不触发

自动出售必须同时满足以下条件:

  1. 已配置 auto-sell-item.出售组ID
  2. 玩家执行 /lyck autosell 出售组ID 开启该组。
  3. 玩家拥有 lyck.autosell.出售组ID 权限。
  4. 入库物品带有 Lore。
  5. 物品任意一行 Lore 包含出售组中的任意关键词。
  6. LySell 能够成功出售该物品。
  7. 入库事件没有被取消,数量也没有被修改为 0

自动出售不是扫描仓库已有物品,而是在物品进入仓库时处理。开启开关前已经存放在仓库中的物品,不会因为开启开关而自动出售。

自动分解不触发

自动分解必须同时满足以下条件:

  1. 已配置 auto-decompose-item.分解组ID
  2. 玩家执行 /lyck autofj 分解组ID 开启该组。
  3. 玩家拥有 lyck.autofj.分解组ID 权限。
  4. 入库物品带有 Lore。
  5. 物品任意一行 Lore 包含分解组中的任意关键词。
  6. LyDecomposition 能够为该物品返回有效分解结果。
  7. 全部仓库剩余空槽位足以容纳分解结果。
  8. 入库事件没有被取消,数量也没有被修改为 0

自动分解不是扫描仓库已有物品,而是在物品进入仓库时处理。配置说明中明确自动分解优先级高于自动出售。

自动出售或自动分解提示没有权限

权限会根据分组 ID 动态生成:

功能权限格式
自动出售lyck.autosell.出售组ID
自动分解lyck.autofj.分解组ID

分组 ID 必须与 auto-sell-itemauto-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 + 右键会循环向玩家背包添加物品,直到仓库物品取完或背包无法继续容纳。背包空间不足时,只会扣除实际成功放入背包的数量。

取出普通物品前,插件还会检查玩家背包是否至少存在一个空槽位。背包完全没有空槽位时,即使已有同类物品可能继续叠加,点击操作也可能不会执行。

如何交换仓库槽位

在普通取出模式中使用鼠标中键:

  1. 中键点击一个存在物品的槽位,记录原槽位。
  2. 再中键点击目标槽位。
  3. 目标槽位有物品时交换两个位置;目标槽位为空时移动到新位置。

如果第一次记录的槽位物品已经不存在,记录会被重置。

排序按钮没有反应

排序按钮的处理格式为 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
  • 入库事件未被取消。
  • 至少一个仓库存在可叠加槽位或空槽位。

代码中明确处理的物品来源标识包括:

  • neigeItems
  • SX-Item
  • Zaphkiel
  • MythicMobs
  • SX-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 数据迁移到数据库。

迁移前先备份本地数据目录和数据库,然后执行以下步骤:

  1. 安装 LyMySQLCore,并确保其成功连接数据库。
  2. 配置 mysql.enable: true
  3. 重启服务器,确认 LyWarehouse 数据库连接成功。
  4. 在控制台执行 /lyck yaml-to-mysql
  5. 检查控制台中每名玩家的转换结果和最终完成提示。

/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:0160:9 等旧版格式,高版本也可以使用类似 CHEST#0 的格式。

检查材质是否存在于当前服务器版本。无法识别的材质可能无法正确生成物品,部分物品构建逻辑在读取失败时会回退为石头。

为什么只能看到重载指令

插件在核心验证或加载完成前使用客户端指令处理器,此时 OP 只能看到 /lyck reload,并收到“更多指令将在验证通过后显示”的提示。

如果完整指令长期没有出现,检查插件启动日志、核心加载状态和许可证验证相关报错。不要仅根据 /lyck 的简化帮助判断功能已经正常加载。