配置说明
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-Item、NeonFlash、AzureFlow、neigeItems的顺序判断;如果多个开关同时开启,优先使用排在前面的物品库。
变量注释
配置文件中记录了以下 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.enable | false | 是否启用 MySQL 存储。关闭时使用本地 YAML 文件保存玩家数据。 |
mysql.databasename | mc2 | MySQL 数据库名称。 |
mysql.username | mc2 | MySQL 用户名。 |
mysql.password | mc1234 | MySQL 密码。 |
mysql.port | 3306 | MySQL 端口。 |
mysql.ip | 127.0.0.1 | MySQL 服务器地址。 |
MySQL 前置要求
启用 MySQL 存储时,必须安装 LyMySQLCore,并确认 LyMySQLCore 已成功连接数据库。只有数据库连接成功后,玩家数据的 MySQL 读取、保存和相关同步流程才会生效。
启用 MySQL 后,插件会使用 HikariCP 建立连接池,并创建以插件名称命名的数据表,用于保存玩家 UUID 和仓库数据。连接失败时,MySQL 相关功能不会正常工作;玩家登录也可能被阻止,直到数据库初始化完成。
关闭 MySQL 时,玩家数据保存在:
text
plugins/LyLootsWareHouse/playerdata/<玩家名称>.yml保存设置
yaml
auto-save-interval: 3| 配置项 | 默认值 | 说明 |
|---|---|---|
auto-save-interval | 3 | 自动保存间隔,单位为秒。仅保存已经发生数据变化的在线玩家。 |
玩家加入服务器时加载数据,退出或被踢出时保存数据。未启用 MySQL 时使用本地 YAML 文件保存;启用 MySQL 时使用数据库保存。
自动存入
yaml
pickup-item-to-warehouse: true
shift-right-save-item: true
mythicmobs-drop-to-warehouse: false| 配置项 | 默认值 | 说明 |
|---|---|---|
pickup-item-to-warehouse | true | 玩家拾取与仓库配置完全匹配的物品时,是否自动存入仓库。 |
shift-right-save-item | true | 是否允许玩家手持与仓库配置完全匹配的物品时使用 Shift+右键存入仓库。 |
mythicmobs-drop-to-warehouse | false | 是否拦截 MythicMobs 掉落并优先将匹配的物品存入仓库。 |
自动存入会检查仓库分页的条件。只有玩家满足对应仓库的 condition 时,物品才会被存入该仓库。
启用 mythicmobs-drop-to-warehouse 后,插件会处理 MythicMobs 怪物掉落以及普通实体死亡掉落。匹配仓库配置的物品会从掉落中移除并存入仓库;未匹配的 MythicMobs 物品会重新掉落到世界中。
赠送功能
yaml
trade-enable: true| 配置项 | 默认值 | 说明 |
|---|---|---|
trade-enable | true | 是否启用仓库界面的鼠标中键赠送功能。 |
启用后,玩家在仓库界面中键点击物品,插件会依次要求输入目标玩家名称和赠送数量。目标玩家必须在线。输入 取消 可以取消当前赠送流程。
赠送过程使用以下消息配置:
message.trade-plan-1message.trade-cancelmessage.trade-player-offlinemessage.trade-plan-2message.trade-numbermessage.trade-not-countmessage.trade-successmessage.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 个物品,底部 45 和 53 号槽位分别用于上一页和下一页按钮。
仓库条件
| 条件格式 | 说明 |
|---|---|
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-save | Shift+右键存入手持物品时发送。 | {item}、{amount}、{has} |
message.get-command | 通过 give 指令增加仓库数量时发送给目标玩家。 | {item}、{amount}、{has} |
message.right-error | Shift+右键时玩家不满足仓库条件。 | 无 |
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'