Skip to content

配置说明

LyLootsWareHouse 的配置文件为 plugins/LyLootsWareHouse/config.yml,用于设置物品库、数据存储、自动保存、自动存入、赠送功能、仓库分页、界面和消息。

配置文件

文件 / 目录用途
config.yml全局配置、数据库、仓库分页、界面和消息
playerdata/未启用 MySQL 时保存玩家战利品数据

配置重载通过插件的重载流程重新读取。修改 mysql.enable 后需要重启服务器。

物品库支持

yaml
# 是否启用 AzureFlow 物品库支持
AzureFlow: false
# 是否启用 NeigeItems 物品库支持
neigeItems: false
# 是否启用 SX-Item 物品库支持
SX-Item: false
# 是否启用 NeonFlash 物品库支持
NeonFlash: false
配置项说明
AzureFlow启用后,仓库物品优先从 AzureFlow 获取。获取失败时回退到 MythicMobs。
neigeItems启用后,仓库物品优先从 NeigeItems 获取。获取失败时回退到 MythicMobs。
SX-Item启用后,仓库物品优先从 SX-Item 获取。获取失败时回退到 MythicMobs。
NeonFlash启用后,从 NeonFlash 获取仓库物品。

未启用上述物品库时,仓库物品默认按 MythicMobs 物品 ID 获取。配置仓库物品前,应确认对应物品已经在所使用的物品库中注册。

当前物品解析逻辑按 SX-ItemNeonFlashAzureFlowneigeItems 的顺序判断;如果多个开关同时开启,优先使用排在前面的物品库。

变量注释

配置文件中记录了以下 PlaceholderAPI 变量。变量实际注册前提是服务器已安装并启用 PlaceholderAPI。

变量说明
%llwh_物品id%查询指定物品 ID 的仓库数量。将 物品id 替换为 warehouse.<仓库ID>.item 中配置的物品 ID。
%llwh_file%查询玩家当前打开的仓库页数。未记录当前页面时返回 1
%llwh_warehouse%查询玩家当前打开的仓库 ID。未打开仓库时返回空字符串。
%llwh_slot_amount:仓库id:槽位id%查询指定仓库中指定槽位对应物品的数量。槽位从 0 开始计算。
%llwh_now_amount:槽位id%查询玩家当前仓库页面中指定槽位对应物品的数量。槽位从 0 开始计算。

数据库

yaml
mysql:
  enable: false
  databasename: mc2
  username: mc2
  password: mc1234
  port: 3306
  ip: 127.0.0.1
配置项默认值说明
mysql.enablefalse是否启用 MySQL 存储。关闭时使用本地 YAML 文件保存玩家数据。
mysql.databasenamemc2MySQL 数据库名称。
mysql.usernamemc2MySQL 用户名。
mysql.passwordmc1234MySQL 密码。
mysql.port3306MySQL 端口。
mysql.ip127.0.0.1MySQL 服务器地址。

MySQL 前置要求

启用 MySQL 存储时,必须安装 LyMySQLCore,并确认 LyMySQLCore 已成功连接数据库。只有数据库连接成功后,玩家数据的 MySQL 读取、保存和相关同步流程才会生效。

启用 MySQL 后,插件会使用 HikariCP 建立连接池,并创建以插件名称命名的数据表,用于保存玩家 UUID 和仓库数据。连接失败时,MySQL 相关功能不会正常工作;玩家登录也可能被阻止,直到数据库初始化完成。

关闭 MySQL 时,玩家数据保存在:

text
plugins/LyLootsWareHouse/playerdata/<玩家名称>.yml

保存设置

yaml
auto-save-interval: 3
配置项默认值说明
auto-save-interval3自动保存间隔,单位为秒。仅保存已经发生数据变化的在线玩家。

玩家加入服务器时加载数据,退出或被踢出时保存数据。未启用 MySQL 时使用本地 YAML 文件保存;启用 MySQL 时使用数据库保存。

自动存入

yaml
pickup-item-to-warehouse: true
shift-right-save-item: true
mythicmobs-drop-to-warehouse: false
配置项默认值说明
pickup-item-to-warehousetrue玩家拾取与仓库配置完全匹配的物品时,是否自动存入仓库。
shift-right-save-itemtrue是否允许玩家手持与仓库配置完全匹配的物品时使用 Shift+右键存入仓库。
mythicmobs-drop-to-warehousefalse是否拦截 MythicMobs 掉落并优先将匹配的物品存入仓库。

自动存入会检查仓库分页的条件。只有玩家满足对应仓库的 condition 时,物品才会被存入该仓库。

启用 mythicmobs-drop-to-warehouse 后,插件会处理 MythicMobs 怪物掉落以及普通实体死亡掉落。匹配仓库配置的物品会从掉落中移除并存入仓库;未匹配的 MythicMobs 物品会重新掉落到世界中。

赠送功能

yaml
trade-enable: true
配置项默认值说明
trade-enabletrue是否启用仓库界面的鼠标中键赠送功能。

启用后,玩家在仓库界面中键点击物品,插件会依次要求输入目标玩家名称和赠送数量。目标玩家必须在线。输入 取消 可以取消当前赠送流程。

赠送过程使用以下消息配置:

  • message.trade-plan-1
  • message.trade-cancel
  • message.trade-player-offline
  • message.trade-plan-2
  • message.trade-number
  • message.trade-not-count
  • message.trade-success
  • message.trade-get-item

仓库分页

仓库配置位于 warehouse 下。每个键代表一个仓库 ID,也是打开仓库时使用的标识。

yaml
warehouse:
  分页1:
    title: '&7分类1战利品仓库'
    condition:
      - 'permission:{loots.分页2}'
      - 'papi:{%player_level% < 100}'
    item:
      - '材料1'
      - '材料2'
  分类2:
    title: '&7分类2战利品仓库'
    condition:
      - 'permission:{loots.分页2}'
      - 'papi:{%player_level% < 100}'
    item:
      - '材料3'
      - '材料4'
配置项类型说明
warehouse.<仓库ID>.title字符串仓库界面标题,支持 & 颜色代码。
warehouse.<仓库ID>.condition字符串列表玩家使用、存入或匹配该仓库前需要满足的条件。
warehouse.<仓库ID>.item字符串列表该仓库收录的物品 ID,物品顺序同时决定界面中的排列顺序。

仓库中的物品 ID 会通过启用的物品库解析。物品不存在或解析失败时,该物品不会被载入仓库,并会在控制台输出失败信息。

每页最多显示 45 个物品,底部 4553 号槽位分别用于上一页和下一页按钮。

仓库条件

条件格式说明
permission:{权限节点}玩家拥有指定权限节点时条件通过。
nopermission:{权限节点}当前实现会在玩家拥有指定权限节点时通过;不要根据名称将它理解为“没有权限时通过”。
papi:{表达式}先解析 PlaceholderAPI 变量,再计算表达式。

多个条件会同时检查,全部通过后仓库才可使用。papi:{表达式} 支持数值比较、字符串相等比较、&&|| 逻辑运算,具体表达式由 ValueCheck 解析。

界面配置

yaml
gui:
  item-name-format: '{name} x{amount}'
  fill-item: '160:9'
  fill-name: '&7封锁'
  next-item1: '341:0'
  next-name1: '&6上一页'
  next-item2: '341:0'
  next-name2: '&6下一页'
  add-lore:
    - ' '
    - '&a左键取1个 / Shift+左键取10个'
    - '&a右键取32个 / Shift+右键取64个'
    - ''
    - '&7在该界面点击背包内的战利品, 可全部存入仓库.'
    - ''
    - '&7鼠标中键点击, 可以将指定数量的该物品送给其他在线玩家.'
    - ''
    - '&7该战利品你当前还有 &a{amount} &7个. '
配置项说明
gui.item-name-format仓库物品显示名格式。{name} 替换为物品名称,{amount} 替换为玩家当前拥有数量。
gui.fill-item界面底部填充物品,格式为物品 ID 或 数字:子数据值
gui.fill-name填充物品名称,支持 & 颜色代码。
gui.next-item1上一页按钮物品。
gui.next-name1上一页按钮名称,支持 & 颜色代码。
gui.next-item2下一页按钮物品。
gui.next-name2下一页按钮名称,支持 & 颜色代码。
gui.add-lore追加到仓库物品 Lore 末尾的提示文本列表。

gui.add-lore 中可使用:

占位符说明
{amount}玩家当前拥有该物品的数量。

仓库界面中的取出数量固定为以下值:

点击方式取出数量
左键1
Shift+左键10
右键32
Shift+右键64
鼠标中键进入赠送流程,是否可用受 trade-enable 控制。

取出物品时,玩家背包至少需要存在一个空槽位。数量不足或没有空槽位时,插件会发送对应消息。

消息配置

消息位于 message 下。所有消息都支持 & 颜色代码。

存入与取出

配置项用途可用占位符
message.pick-save拾取物品或掉落物自动存入仓库时发送。{item}{amount}{has}
message.right-saveShift+右键存入手持物品时发送。{item}{amount}{has}
message.get-command通过 give 指令增加仓库数量时发送给目标玩家。{item}{amount}{has}
message.right-errorShift+右键时玩家不满足仓库条件。
message.get-error玩家仓库数量不足,无法取出指定数量。{need}{has}
message.get-success成功取出物品时发送。{item}{amount}{has}
message.slot-empty-error玩家背包没有空槽位时发送。

赠送流程

配置项用途可用占位符
message.trade-plan-1进入赠送流程后,提示输入目标玩家名称。
message.trade-cancel玩家输入 取消 后发送。
message.trade-player-offline目标玩家不在线时发送。
message.trade-plan-2目标玩家确认后,提示输入赠送数量。{count}
message.trade-number输入内容不是有效非负整数时发送。
message.trade-not-count仓库数量不足时发送。
message.trade-success赠送方成功扣除物品后发送。
message.trade-get-item接收方收到物品后发送。{player}{item}{count}

完整配置结构

以下示例包含项目默认配置中已确认的主要键。仓库 ID、物品 ID、标题、条件和消息文本可以按服务器实际内容修改。

yaml
AzureFlow: false
neigeItems: false
SX-Item: false
NeonFlash: false

mysql:
  enable: false
  databasename: mc2
  username: mc2
  password: mc1234
  port: 3306
  ip: 127.0.0.1

auto-save-interval: 3
pickup-item-to-warehouse: true
shift-right-save-item: true
trade-enable: true
mythicmobs-drop-to-warehouse: false

gui:
  item-name-format: '{name} x{amount}'
  fill-item: '160:9'
  fill-name: '&7封锁'
  next-item1: '341:0'
  next-name1: '&6上一页'
  next-item2: '341:0'
  next-name2: '&6下一页'
  add-lore:
    - ' '
    - '&a左键取1个 / Shift+左键取10个'
    - '&a右键取32个 / Shift+右键取64个'
    - ''
    - '&7在该界面点击背包内的战利品, 可全部存入仓库.'
    - ''
    - '&7鼠标中键点击, 可以将指定数量的该物品送给其他在线玩家.'
    - ''
    - '&7该战利品你当前还有 &a{amount} &7个. '

message:
  pick-save: '&7您拾取的 {item}x{amount} &7已存入了战利品仓库, 当前仓库已有{has}.'
  right-save: '&7您将手中的 {item}x{amount} &7存入了战利品仓库, 当前仓库已有{has}.'
  get-command: '&7您获得了 {item}x{amount} &7, 已存入了战利品仓库, 当前仓库已有{has}.'
  right-error: '&7您还未开启该战利品的储藏权限, 无法存入战利品仓库.'
  get-error: '&7您无法取出数量的战利品, 您本次需要&a{need}个&7, 但你只有&a{has}&7个.'
  get-success: '&7取出成功, 本次取出 {item}x{amount}&7, 仓库内剩余: {has}'
  slot-empty-error: '&7取出失败, 背包至少存在一个空格才可以取出.'
  trade-plan-1: "&a你已进入交易状态, 现在请输入你要赠与的玩家的名字并回车, 或者输入'取消'本次赠送."
  trade-cancel: '&c已取消操作.'
  trade-player-offline: '&c目标玩家不在线,请重新输入, 或者输入\'取消\'本次赠送.'
  trade-plan-2: '&a请输入要赠送多少数量? 你现在拥有{count}个, 或者输入\'取消\'本次赠送.'
  trade-number: '&c请输入整数!! 或者输入\'取消\'本次赠送.'
  trade-not-count: '&c你没有那么多该物品!! 或者输入\'取消\'本次赠送.'
  trade-success: '&a赠送成功!'
  trade-get-item: '§a你收到了来自 {player} 的 {item}x{count} !'

warehouse:
  分页1:
    title: '&7分类1战利品仓库'
    condition:
      - 'permission:{loots.分页2}'
      - 'papi:{%player_level% < 100}'
    item:
      - '材料1'
      - '材料2'