配置说明
LyWarehouse 的主配置文件为 plugins/LyWarehouse/config.yml,用于配置数据保存方式、自动处理、仓库定义、仓库按钮、GUI 显示和提示文本。
修改普通配置后,可由 OP 执行 /lyck reload 重载配置。修改 mysql 配置时建议重启服务器,避免旧连接继续存在。
基础配置
| 配置键 | 默认值 | 说明 |
|---|---|---|
papi-slot-amount-default-value | '0' | %lyck_slot_amount:仓库ID:槽位ID% 查询不存在的物品槽位时返回的值。 |
debug | false | 调试开关。 |
auto-save-interval | 3 | 自动保存间隔,单位为秒。用于定期保存玩家仓库数据。 |
use-give-or-take-command-message | true | /lyck give 和 /lyck take 执行成功时,是否发送命令反馈。执行失败时仍会发送失败提示。 |
mythicmobs-drop-to-warehouse | true | 是否尝试将 MythicMobs 怪物掉落物优先存入仓库。 |
show-operation-log | true | 是否记录玩家对仓库进行存入、取出、出售、分解和删除等操作。 |
hide-item-amount | true | 是否隐藏仓库物品实际数量。启用后,GUI 中通常显示为 1 个;部分界面刷新逻辑会根据物品最大堆叠数显示数量。 |
try-auto-unlock | true | 玩家打开未解锁仓库时,是否自动尝试解锁。关闭后需要玩家先执行解锁指令。 |
pickup-to-warehouse-enable | true | 是否启用地面物品自动存入仓库功能。玩家仍可通过 /lyck autopick 切换自己的自动拾取状态。 |
prohibited-lore-for-storage | [] | 包含指定 Lore 的物品禁止存入仓库。 |
禁止存入 Lore
配置值为 Lore 关键字列表。物品任意 Lore 行包含其中一项时,存入会被拒绝。
yaml
prohibited-lore-for-storage:
- '&c禁止放入随身仓库'数据库配置
MySQL 前置要求
启用 MySQL 存储前,必须安装 LyMySQLCore,并确认 LyMySQLCore 已成功连接数据库。插件未加载或数据库连接失败时,LyWarehouse 的 MySQL 数据读取、保存、同步以及数据转换功能都不会生效。
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.username | mc2 | 数据库用户名。 |
mysql.password | mc1234 | 数据库密码。 |
mysql.port | 3306 | 数据库端口。 |
mysql.ip | 127.0.0.1 | 数据库地址。 |
关闭 MySQL 时,玩家数据默认保存在:
text
plugins/LyWarehouse/data/<玩家UUID>.yml启用 MySQL 后,插件会使用插件名称创建数据表,并在玩家进入、保存数据时读取或写入玩家仓库数据。
从本地 YAML 转移到 MySQL 前,请先备份 plugins/LyWarehouse/data/。确认 LyMySQLCore 已成功连接数据库后,再由控制台执行:
text
/lyck yaml-to-mysql该转换命令仅允许控制台执行,并且要求 MySQL 已连接。
自动分解
auto-decompose-item 用于定义自动分解组。玩家开启对应分解组后,符合 Lore 条件的物品在进入仓库时会尝试自动分解。
自动分解需要同时满足以下条件:
- 玩家已通过
/lyck autofj <分解组ID>开启对应分解组。 - 玩家拥有
lyck.autofj.<分解组ID>权限。 - 配置中存在对应的分解组。
- 物品 Lore 包含配置的任意关键字。
- LyDecomposition 已提供该物品的分解配置。
- 玩家背包有足够空间接收分解产物。
自动分解优先级高于自动出售。
yaml
auto-decompose-item:
'垃圾分解':
- '&7品质: &a优秀'
- '&7品质: &f普通'
- '&7品质: &7破烂'| 配置路径 | 说明 |
|---|---|
auto-decompose-item.<分解组ID> | 分解组名称。组 ID 用于指令、权限和变量。 |
auto-decompose-item.<分解组ID>.[ ] | 需要匹配的 Lore 关键字列表。任意 Lore 行包含关键字即可匹配。 |
自动出售
auto-sell-item 用于定义自动出售组。玩家开启对应出售组后,符合 Lore 条件的物品在进入仓库时会尝试自动出售。
自动出售需要同时满足以下条件:
- 玩家已通过
/lyck autosell <出售组ID>开启对应出售组。 - 玩家拥有
lyck.autosell.<出售组ID>权限。 - 配置中存在对应的出售组。
- 物品 Lore 包含配置的任意关键字。
- LySell 已提供该物品的出售处理。
yaml
auto-sell-item:
'垃圾出售':
- '&7品质: &a优秀'
- '&7品质: &f普通'
- '&7品质: &7破烂'| 配置路径 | 说明 |
|---|---|
auto-sell-item.<出售组ID> | 出售组名称。组 ID 用于指令、权限和变量。 |
auto-sell-item.<出售组ID>.[ ] | 需要匹配的 Lore 关键字列表。任意 Lore 行包含关键字即可匹配。 |
排序按钮
sort-button 用于定义仓库按钮中的排序规则。按钮事件使用 sort:<排序ID> 调用对应规则。
排序规则从上到下执行。物品 Lore 包含越靠前的关键字,排序位置越靠前;没有匹配到关键字的物品会排在后面。
yaml
sort-button:
品质排序:
- '&7品质: &6史诗'
- '&7品质: &d极品'
- '&7品质: &b精良'
- '&7品质: &a优秀'
- '&7品质: &f普通'
作用排序:
- '&7类型: &b武器'
- '&7类型: &b装备'
- '&7类型: &b首饰'
- '&7类型: &b材料'
- '&7类型: &b道具'排序期间玩家不能操作仓库。排序完成后会刷新界面,并发送 message.warehouse-sort-success 或 message.warehouse-sort-failed。
仓库配置
所有仓库定义位于 warehouse 下。仓库 ID 用于打开仓库、解锁仓库、按钮跳转和变量查询。
yaml
warehouse:
'仓库1':
main-id: '54:0'
main-name: '&6随身仓库1 {status}'
main-lore:
- '&7这是一个随身仓库'
- '&a[点击解锁/打开]'
title: '&6随身仓库'
size: 5
open-condition: []
unlock-condition: []
button: {}仓库基本属性
| 配置路径 | 说明 |
|---|---|
warehouse.<仓库ID>.main-id | 仓库总览界面显示的物品类型。示例:54:0。 |
warehouse.<仓库ID>.main-name | 仓库总览界面的物品名称。支持 {status},会替换为已解锁或未解锁文本。 |
warehouse.<仓库ID>.main-lore | 仓库总览界面的物品 Lore。支持 PlaceholderAPI 变量和 {status}。 |
warehouse.<仓库ID>.title | 打开仓库后的 GUI 标题。 |
warehouse.<仓库ID>.size | 仓库物品区域的行数。代码会限制为 1 至 5 行,每行 9 个槽位。最后一行会用于显示自定义按钮,因此实际 GUI 高度为 size + 1 行。 |
warehouse.<仓库ID>.open-condition | 每次打开仓库时检查的条件。不满足时直接阻止打开。 |
warehouse.<仓库ID>.unlock-condition | 解锁仓库时检查的条件。涉及物品、经济或点券的条件在解锁成功时会扣除对应数量。 |
warehouse.<仓库ID>.button | 仓库底部 9 个按钮的配置。有效槽位为 0 至 8。 |
打开条件
open-condition 支持以下条件:
| 条件格式 | 说明 |
|---|---|
papi:{表达式} | 使用 PlaceholderAPI 变量进行数值或表达式判断。支持 >、>=、==、<、<=。 |
permission:{权限节点} | 玩家必须拥有指定权限。 |
nopermission:{权限节点} | 玩家不能拥有指定权限。 |
示例:
yaml
open-condition:
- 'permission:{warehouse.vip.open}'
- 'papi:{%player_level% > 10}'解锁条件
unlock-condition 支持以下条件:
| 条件格式 | 说明 |
|---|---|
unlock:{仓库ID} | 玩家必须已经解锁指定仓库。 |
eco:{金额} | 玩家需要拥有指定余额。解锁成功后会扣除金额,需要 Vault 经济服务正常工作。 |
point:{数量} | 玩家需要拥有指定点券。解锁成功后会扣除点券,需要 PlayerPoints 正常工作。 |
item:{物品名称#数量} | 玩家背包需要拥有指定名称和数量的物品。解锁成功后会扣除物品。 |
papi:{表达式} | 使用 PlaceholderAPI 变量进行判断。支持 >、>=、==、<、<=。 |
permission:{权限节点} | 玩家必须拥有指定权限。 |
nopermission:{权限节点} | 玩家不能拥有指定权限。 |
示例:
yaml
unlock-condition:
- 'unlock:{仓库0}'
- 'eco:{10}'
- 'point:{10}'
- 'item:{&6牛马工具#10}'
- 'papi:{%player_level% > 10}'
- 'permission:{解锁权限.10级}'
- 'nopermission:{解锁权限.10级}'条件扣除
eco、point 和 item 条件会在全部条件检查通过后扣除对应资源。配置这些条件时,请确认 Vault、PlayerPoints 以及相关物品匹配功能可正常使用。
仓库按钮
按钮配置位于 warehouse.<仓库ID>.button.<槽位>,槽位范围为 0 至 8。
| 配置路径 | 说明 |
|---|---|
item | 按钮物品类型。示例:54:0。 |
name | 按钮名称。支持 & 颜色代码。 |
lore | 按钮 Lore 列表。 |
handle | 点击按钮后依次执行的事件列表。 |
示例:
yaml
button:
1:
item: '54:0'
name: '&6一键存入'
lore:
- '&a将背包内尽可能所有物品依次尝试存入本仓库'
handle:
- 'dislodge'
2:
item: '66:0'
name: '&6一键排序'
lore:
- '&a根据品质排序'
handle:
- 'sort:品质排序'支持的按钮事件:
| 事件格式 | 说明 |
|---|---|
close | 关闭当前 GUI。 |
delay:<秒数> | 延迟指定秒数后继续执行后续事件。支持小数。 |
message:<文本> | 向玩家发送文本。支持 & 颜色代码。 |
command:<指令> | 以控制台身份执行指令,并先解析玩家的 PlaceholderAPI 变量。 |
open:<仓库ID> | 打开指定仓库的存储模式。 |
fj:<仓库ID> | 打开指定仓库的分解模式。需要 LyDecomposition 提供分解功能。 |
sell:<仓库ID> | 打开指定仓库的出售模式。需要 LySell 提供出售功能。 |
remove:<仓库ID> | 打开指定仓库的删除模式。 |
sort:<排序ID> | 使用 sort-button.<排序ID> 中的规则整理仓库。 |
dislodge | 尝试将玩家背包中的物品依次存入当前仓库。 |
常用模式按钮示例:
yaml
button:
3:
item: '54:0'
name: '&6存储模式'
lore:
- '&a[点击进入]'
handle:
- 'message:&7你进入了 仓库1 存储模式'
- 'open:仓库1'
4:
item: '145:2'
name: '&6分解模式'
lore:
- '&a[点击进入]'
handle:
- 'fj:仓库1'
5:
item: '266:0'
name: '&6出售模式'
lore:
- '&a[点击进入]'
handle:
- 'sell:仓库1'
6:
item: '327:0'
name: '&6删除模式'
lore:
- '&a[点击进入]'
handle:
- 'remove:仓库1'GUI 配置
yaml
gui:
lock-replace: '&7[未解锁]'
unlock-replace: '&a[已解锁]'
main-title: '&6仓库总览'
fill-item: '160:9'
fill-name: '&7封锁'
search-last-item: '341:0'
search-last-name: '&b上翻页'
search-next-item: '341:0'
search-next-name: '&b下翻页'总览和搜索界面
| 配置键 | 说明 |
|---|---|
gui.lock-replace | 仓库总览中未解锁仓库的状态文本。 |
gui.unlock-replace | 仓库总览中已解锁仓库的状态文本。 |
gui.main-title | 仓库总览界面的标题。 |
gui.fill-item | GUI 空白位置使用的填充物品。 |
gui.fill-name | 填充物品名称。 |
gui.search-last-item | 搜索界面上翻页按钮物品。 |
gui.search-last-name | 搜索界面上翻页按钮名称。 |
gui.search-next-item | 搜索界面下翻页按钮物品。 |
gui.search-next-name | 搜索界面下翻页按钮名称。 |
搜索界面每页显示最多 45 个匹配物品,并使用上翻页和下翻页按钮切换页面。搜索内容会匹配物品显示名称和 Lore,也支持拼音匹配。
物品 Lore
以下配置用于在仓库物品后追加操作说明。{amount} 会替换为仓库中该物品的实际数量。
| 配置键 | 使用场景 |
|---|---|
gui.extra-lore | 普通存储模式和搜索界面。 |
gui.fj-lore | 分解模式。 |
gui.sell-lore | 出售模式。 |
gui.remove-lore | 删除模式。 |
默认示例:
yaml
gui:
extra-lore:
- '&7&m '
- '&7物品数量: &a{amount}'
- ''
- '&6左键&a取出1个'
- '&6右键&a取出10个'
- '&6SHIFT+左键&a取出一组'
- '&6SHIFT+右键&a尽量全部取出'
- ''
- '&6中键点击&a后再&6中键点击&6另一位置可进行位置互换'
fj-lore:
- '&7&m '
- '&7物品数量: &a{amount}'
- ''
- '&6左键&a分解1个'
- '&6右键&a分解10个'
- '&6SHIFT+左键&a分解100个'
- '&6SHIFT+右键&a分解1000个'
sell-lore:
- '&7&m '
- '&7物品数量: &a{amount}'
- ''
- '&6左键&a出售1个'
- '&6右键&a出售10个'
- '&6SHIFT+左键&a出售100个'
- '&6SHIFT+右键&a出售1000个'
remove-lore:
- '&7&m '
- '&7物品数量: &a{amount}'
- ''
- '&6左键&c删除1个'
- '&6右键&c删除10个'
- '&6SHIFT+左键&c删除100个'
- '&6SHIFT+右键&c删除1000个'提示文本
所有提示文本位于 message 下。文本支持 & 颜色代码。消息中的占位符会在发送时替换。
| 配置键 | 支持占位符 | 说明 |
|---|---|---|
message.not-storage | 无 | 仓库只允许取出时,阻止存入提示。 |
message.prohibited-lore-for-storage | 无 | 物品 Lore 被禁止时的提示。 |
message.storage-success | {amount} | 存入成功提示。 |
message.warehouse-full | 无 | 没有可用仓库槽位时的提示。 |
message.replace-event-log | {slot} | 记录待交换的仓库槽位。 |
message.replace-event-success | {oldSlot}、{newSlot} | 槽位互换成功提示。 |
message.get-warehouse-item-success | {getAmount}、{warehouseAmount} | 取出成功提示。 |
message.fj-warehouse-item-success | {getAmount}、{time}、{warehouseAmount} | 分解成功提示。 |
message.fj-result | {name}、{amount} | 分解产物提示。 |
message.fj-warehouse-item-failed | {slot} | 分解时仓库空间不足提示。 |
message.remove-warehouse-item-success | {name}、{amount} | 删除物品成功提示。 |
message.sell-warehouse-item-success | {getAmount}、{warehouseAmount} | 出售成功提示。 |
message.unlock-success | 无 | 强制解锁成功提示。 |
message.unlock-fail | 无 | 不满足解锁条件提示。 |
message.unlock-repeat | 无 | 重复解锁提示。 |
message.warehouse-is-lock | 无 | 仓库未解锁提示。 |
message.auto-pickup-to-warehouse | {name}、{amount}、{id}、{has} | 背包已满,物品自动进入仓库提示。 |
message.give-command-message | {name}、{amount}、{id} | /lyck give 发放成功提示。 |
message.mythicmobs-drop-to-warehouse | {mob}、{name}、{amount} | MythicMobs 掉落物进入仓库提示。 |
message.warehouse-sort-success | 无 | 仓库排序成功提示。 |
message.warehouse-sort-failed | 无 | 仓库排序失败提示。 |
message.auto-sell | {item}、{amount} | 物品进入仓库后自动出售提示。 |
message.auto-decompose | {item}、{amount} | 物品进入仓库后自动分解提示。 |
message.auto-sell-permission | {group} | 没有权限切换自动出售组提示。 |
message.auto-sell-enable | {group} | 自动出售组开启提示。 |
message.auto-sell-disable | {group} | 自动出售组关闭提示。 |
message.auto-decompose-permission | {group} | 没有权限切换自动分解组提示。 |
message.auto-decompose-enable | {group} | 自动分解组开启提示。 |
message.auto-decompose-disable | {group} | 自动分解组关闭提示。 |
配置文件中的变量
以下变量由插件注册到 PlaceholderAPI,变量标识符为 lyck。
| 变量 | 返回内容 |
|---|---|
%lyck_now_warehouse% | 当前打开的仓库 ID。未打开仓库时返回空文本。 |
%lyck_now_warehouse_mode% | 当前 GUI 模式:存储、分解、出售、删除 或 总览。 |
%lyck_unlock:<仓库ID>% | 玩家是否解锁指定仓库,返回 true 或 false。 |
%lyck_empty_slot_all% | 所有已解锁仓库的剩余空槽位数量。 |
%lyck_empty_slot:<仓库ID>% | 指定仓库的剩余空槽位数量。 |
%lyck_amount:<物品名>% | 玩家所有已解锁仓库中指定物品的数量。可匹配物品类型名称或显示名称。 |
%lyck_autopick% | 玩家自动拾取入库状态,返回 §a启用中 或 §7未启用。 |
%lyck_slot_amount:<仓库ID>:<槽位ID>% | 指定仓库指定槽位的物品数量。槽位不存在时返回 papi-slot-amount-default-value。 |
%lyck_autofj_<分解组ID>% | 指定自动分解组是否开启,返回 true 或 false。 |
%lyck_autosell_<出售组ID>% | 指定自动出售组是否开启,返回 true 或 false。 |
尖括号内容是需要替换的实际参数,例如:
text
%lyck_unlock:仓库1%
%lyck_empty_slot:仓库1%
%lyck_slot_amount:仓库1:0%
%lyck_autofj_垃圾分解%
%lyck_autosell_垃圾出售%配置相关注意事项
- 仓库
size最终只会生效为1至5行,超出范围的值会被限制。 - 仓库底部额外增加 1 行,用于放置
button中配置的按钮。 open-condition只在打开仓库时检查,不满足条件时不会发送专用失败提示。unlock-condition中的经济和点券条件会在解锁成功后扣除资源。- 自动分解和自动出售都要求物品拥有 Lore,并按照 Lore 包含关系匹配配置关键字。
- MySQL 功能依赖
LyMySQLCore的有效数据库连接;仅填写mysql配置但未成功连接时不会启用 MySQL 数据存储。