配置说明
LyArmourersWardrobe 的配置分为两部分:
config.yml:控制数据存储、属性插件、界面刷新、分页、试穿、自动发放、品质、类型名称和提示文本。armourers/:注册衣橱中的时装,配置时装名称、品质、描述、收藏属性和穿戴属性。
插件会递归读取 plugins/LyArmourersWardrobe/armourers/ 下的所有 .yml 文件,因此可以使用子目录分类管理时装。
重要兼容设置
DragonCore 自带的时装槽位逻辑会与本插件的穿戴逻辑冲突。如果出现时装频繁穿戴失败、穿戴后不显示或显示状态异常,请检查 DragonCore 配置中的 DragonAmourers,尝试将其设置为 false 后重启服务器。
主配置概览
| 配置项 | 默认值 | 说明 | 修改后是否需要重启 |
|---|---|---|---|
attribute-plugin | '' | 指定属性插件兼容模式。留空时不处理时装属性。 | 是 |
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 地址。 | 是 |
packet-interval | 300 | DragonCore 界面数据包的最小发送间隔,单位为毫秒。 | 否 |
debug-skin-update | false | 是否在控制台输出详细的时装刷新调试日志。 | 否 |
show-item-armourers | false | 衣橱槽位物品是否附加对应的 DragonArmourers 时装外观。 | 否 |
file-armourers-amount | 24 | 衣橱每页显示的时装数量。 | 否 |
try-on-time | 60 | 单次试穿持续时间,单位为秒。 | 否 |
next-try-on-cooldown | 300 | 每次试穿后再次试穿的冷却时间,单位为秒。 | 否 |
auto-give-armourers | 空列表 | 玩家数据加载时自动永久发放的时装 ID。 | 否 |
quality | 0 至 4 | 品质编号及其显示文本。 | 否 |
display-type | 八种类型 | 时装类型的界面显示名称。 | 否 |
filter-button-text | 见默认配置 | 品质、类型和拥有状态筛选按钮的文本格式。 | 否 |
message | 见默认配置 | 试穿、隐藏、预设切换、发放和移除等提示文本。 | 否 |
/lysz reload 会重新读取配置、品质、类型与时装文件,并重新启动自动保存任务。但存储监听器和部分属性插件接口在插件启动时注册,因此切换 mysql.enable 或 attribute-plugin 后应重启服务器。
属性插件
yaml
attribute-plugin: ''attribute-plugin 决定插件将时装属性提交给哪个属性系统。可填写的值如下:
| 配置值 | 对应属性插件 |
|---|---|
AttributePlus | AttributePlus |
SX-Attribute2 | SX-Attribute 2 接口 |
SX-Attribute3 | SX-Attribute 3 接口 |
AttributeSystem | AttributeSystem |
ItemLoreOrigin | ItemLoreOrigin |
| 空字符串 | 不向属性插件提交属性 |
配置值必须与表格中的名称一致,匹配时不区分大小写。选择某个属性系统前,需要确保服务器已经安装对应插件。
修改此项后需要重启服务器。SX-Attribute 使用同一个插件名加载,必须通过 SX-Attribute2 或 SX-Attribute3 明确选择接口版本;如果只安装了 SX-Attribute 但没有选择版本,插件会在控制台提示配置未选择 SX 版本。
属性生效规则
时装文件中存在两类属性:
| 时装配置项 | 生效条件 |
|---|---|
attribute | 玩家永久拥有该时装后生效。 |
equip-attribute | 玩家永久拥有并在当前预设中穿戴该时装后生效。 |
试穿属于临时拥有状态,不会提供 attribute 收藏属性,也不会提供 equip-attribute 穿戴属性。玩家关闭背包界面时,插件也会刷新一次属性缓存。
ItemLoreOrigin 刷新间隔
代码支持以下可选配置项,但默认 config.yml 中没有写出:
yaml
ilo-update-task: 20| 配置项 | 默认值 | 说明 |
|---|---|---|
ilo-update-task | 20 | ItemLoreOrigin 属性数据的异步刷新周期,单位为 tick。 |
该任务在 ItemLoreOrigin 接口初始化时创建,修改后建议重启服务器。
数据存储
yaml
mysql:
enable: false
databasename: mc2
username: mc2
password: mc1234
port: 3306
ip: 127.0.0.1本地 YAML 存储
当 mysql.enable 为 false 时,玩家数据保存在:
text
plugins/LyArmourersWardrobe/data/玩家UUID.yml本地数据包括:
- 下一次允许试穿的时间。
- 当前使用的时装预设编号。
- 玩家永久拥有的时装列表。
- 各预设穿戴的永久时装。
- 各预设中每个时装部位的隐藏状态。
插件保存本地数据时会先写入临时文件,并将上一份稳定数据保留为 .bak 备份。主文件损坏时,插件会尝试从备份恢复。临时试穿记录不会作为永久拥有时装写入数据文件,预设中也只会保存永久拥有的时装。
MySQL 存储
MySQL 前置要求
启用 MySQL 存储前,必须安装 LyMySQLCore,并确认它已经成功连接数据库。LyMySQLCore 未加载或数据库连接失败时,MySQL 玩家数据的读取、保存和相关事件不会正常生效。
| 配置项 | 说明 |
|---|---|
mysql.enable | 是否启用 MySQL 存储。切换后必须重启服务器。 |
mysql.ip | 数据库服务器地址。 |
mysql.port | 数据库服务器端口。 |
mysql.databasename | 已存在的数据库名称。 |
mysql.username | 数据库登录用户名。 |
mysql.password | 数据库登录密码。 |
启用后,插件会使用插件名 LyArmourersWardrobe 作为数据表名称,并初始化 name 与 data 字段。玩家数据按玩家名称查询和保存,具体衣橱数据以 YAML 文本形式写入 data 字段。
数据库连接未完成时,插件会阻止玩家进入服务器,避免玩家在数据尚未载入时覆盖已有数据。修改数据库开关或连接信息后必须重启服务器,不要只执行重载。
MySQL 自动保存间隔
代码支持以下可选配置项,但默认 config.yml 中没有写出:
yaml
auto-save-interval: 3| 配置项 | 默认值 | 说明 |
|---|---|---|
auto-save-interval | 3 | MySQL 自动保存任务的检查周期,单位为秒。 |
自动保存任务只在启用 MySQL、数据库已经连接且玩家数据发生变化时执行。本地 YAML 模式主要在玩家退出、被踢出或插件关闭时保存数据。
DragonCore 界面通信
yaml
packet-interval: 300
debug-skin-update: false
show-item-armourers: false
file-armourers-amount: 24| 配置项 | 说明 |
|---|---|
packet-interval | 同一玩家两次有效衣橱操作数据包之间的最小间隔,单位为毫秒。用于限制连点器或过于频繁的界面操作。 |
debug-skin-update | 开启后输出玩家当前预设、穿戴映射、隐藏映射、拥有状态和最终皮肤列表等调试信息。正常运行时建议关闭。 |
show-item-armourers | 开启后,衣橱中的展示物品会通过 DragonArmourers API 附加对应时装外观;关闭时使用普通书本图标。 |
file-armourers-amount | 每页注册到 DragonCore 界面的时装数量,需要与衣橱 GUI 的布局容量保持一致。 |
packet-interval 使用毫秒,试穿相关配置使用秒,两者单位不同。默认值 300 表示同一玩家约每 300 毫秒最多处理一次衣橱操作包。
试穿设置
yaml
try-on-time: 60
next-try-on-cooldown: 300| 配置项 | 说明 |
|---|---|
try-on-time | 玩家试穿一件未拥有时装时获得临时使用权限的持续时间,单位为秒。 |
next-try-on-cooldown | 玩家开始试穿后,再次试穿其他未拥有时装前需要等待的时间,单位为秒。 |
试穿机制具有以下规则:
- 玩家选择未拥有的时装时,插件先检查全局试穿冷却。
- 试穿开始后,玩家会立即获得该时装的临时使用权限并自动穿戴。
- 试穿时装会参与全局皮肤显示,其他玩家可以看到。
- 临时权限到期后,插件会移除该时装,并从所有预设中清除对应记录。
- 试穿时装不会提供收藏属性或穿戴属性。
- 冷却从试穿开始时计算,不是从试穿结束时计算。
next-try-on-cooldown是玩家级全局冷却,不按时装分别计算。
自动发放时装
yaml
auto-give-armourers:
# - '时装ID'auto-give-armourers 是一个时装 ID 列表。玩家数据加载时,插件会检查列表中的每件时装:
- 玩家尚未拥有时,将其设为永久拥有。
- 如果当前预设的对应部位没有穿戴时装,则自动穿戴新发放的时装。
- 如果对应部位已经有时装,只发放所有权,不覆盖当前穿戴。
示例:
yaml
auto-give-armourers:
- '离渊时装示例'
- '新手翅膀'列表中的 ID 应已经在 armourers/ 目录内注册,并且能被 DragonArmourers 正确识别类型。无效 ID 无法正常完成类型判断或穿戴。
品质配置
yaml
quality:
0: '&f普通'
1: '&a优秀'
2: '&b精良'
3: '&d稀有'
4: '&6传说'quality 定义品质编号与界面显示文本。配置键是时装文件中 quality 使用的整数编号,配置值支持使用 & 颜色代码。
品质配置需要遵守以下规则:
- 品质编号应从较小值到较大值连续配置,不要跳级。
- 即使不需要多品质系统,也至少要保留
0级品质。 - 时装引用了不存在的品质编号时,会自动回退到
0级。 0级也必须存在,否则回退后仍无法获得有效品质数据。- 品质会用于衣橱筛选、时装按钮显示和当前搭配详情。
自定义品质示例:
yaml
quality:
0: '&7基础'
1: '&9高级'
2: '&5珍藏'对应的时装文件应填写:
yaml
某件时装:
quality: 2时装类型显示
yaml
display-type:
sword: '武器'
bow: '弓箭'
outfit: '套装'
wings: '翅膀'
head: '帽子'
chest: '上衣'
legs: '裤子'
feet: '鞋子'时装类型由插件通过 DragonArmourers API 根据时装 ID 自动获取,不需要在时装文件中填写。display-type 只修改类型在界面和消息中的显示名称。
| 类型 ID | 默认显示名 | 用途 |
|---|---|---|
sword | 武器 | 剑或武器类时装。 |
bow | 弓箭 | 弓类时装。 |
outfit | 套装 | 整体套装时装。 |
wings | 翅膀 | 翅膀时装。 |
head | 帽子 | 头部时装。 |
chest | 上衣 | 胸部时装。 |
legs | 裤子 | 腿部时装。 |
feet | 鞋子 | 脚部时装。 |
插件还会在类型筛选中使用 all 表示全部类型,其显示文本固定为“全部”,不从 display-type 读取。
只有表格中的八种实际类型会被注册。DragonArmourers 返回空类型或未知类型时,该时装会注册失败,并在控制台输出错误。
筛选按钮文本
yaml
filter-button-text:
quality: '&f品质: {quality}'
type: '&f类型: {type}'
owner: '&f拥有: {status}'| 配置项 | 可用替换内容 | 说明 |
|---|---|---|
filter-button-text.quality | {quality} | 当前品质名称或“全部”。 |
filter-button-text.type | {type} | 当前类型名称或“全部”。 |
filter-button-text.owner | {status} | “全部”“已拥有”或“未拥有”。 |
这些文本会发送到 DragonCore 的“时装衣橱”界面,用于创建筛选选项和更新下拉框文本。配置值支持 & 颜色代码。
衣橱还支持按时装名称拼音搜索。插件会将配置中的时装名称转换为不带分隔符的拼音并进行包含匹配,因此搜索内容同样会先转换为拼音。
提示文本
yaml
message:
next-try-time: '§c你需要等待 §6{time}秒 §c后才能再次试穿时装!'
try-success: '§a你已成功试穿该时装! §7试穿时间{time}秒; §7冷却时间{cooldown}秒.'
try-on-expired: '§c你试穿的时装{name}§c已到期.'
hide-armourers: '§a已隐藏{type}部位的时装!'
show-armourers: '§a已显示{type}部位的时装!'
switch-plan: '§a已切换至时装方案{plan}!'
give-armourers: '§a你获得时装: {armourers}'
remove-armourers: '§a你失去时装: {armourers}'| 配置项 | 触发场景 | 可用占位内容 |
|---|---|---|
message.next-try-time | 玩家仍处于试穿冷却时再次试穿。 | {time} |
message.try-success | 玩家成功开始试穿。 | {time}、{cooldown} |
message.try-on-expired | 临时时装到期并被移除。 | {name} |
message.hide-armourers | 玩家隐藏当前预设中的某个时装部位。 | {type} |
message.show-armourers | 玩家重新显示某个时装部位。 | {type} |
message.switch-plan | 玩家切换时装预设。 | {plan} |
message.give-armourers | 管理员永久发放时装。 | {armourers} |
message.remove-armourers | 管理员移除时装。 | {armourers} |
{time} 和 {cooldown} 的单位均为秒。{type} 会替换为 display-type 中配置的显示名称,{name} 和 {armourers} 会替换为时装配置中的显示名称。
提示文本支持 & 颜色代码,也兼容配置默认值中使用的 § 颜色符号。若将某项配置为 YAML 空值,发送方法会跳过该条消息。
时装配置目录
默认示例文件位于:
text
plugins/LyArmourersWardrobe/armourers/示例.yml插件会递归扫描 armourers/ 及其子目录中的 .yml 文件。文件名只用于分类,真正的时装 ID 是 YAML 顶层节点名称。
完整示例
yaml
离渊时装示例:
quality: 0
name: '&6离渊时装示例'
lore:
- '&7这是一件时装'
- ''
- '&7收集后获得属性:'
- '{collect_attribute}'
- ''
- '&7穿戴时获得属性:'
- '{equip_attribute}'
- ''
attribute:
- '&a攻击力+1'
equip-attribute:
- '&a生命值+10'时装配置项
| 配置项 | 必填 | 默认值 | 说明 |
|---|---|---|---|
| 顶层 ID | 是 | 无 | DragonArmourers 时装 ID。所有文件之间必须保持唯一。 |
quality | 否 | 0 | 品质编号,必须对应 config.yml 中已定义的品质。 |
name | 否 | &7未知时装_时装ID | 衣橱显示名称,也用于生成拼音搜索内容。 |
lore | 否 | 空列表 | 展示物品的说明文本。 |
attribute | 否 | 空列表 | 永久收藏该时装后提供的属性。 |
equip-attribute | 否 | 空列表 | 永久拥有并穿戴该时装时提供的属性。 |
name 与 lore 中的 & 会转换为 Minecraft 颜色符号。属性列表会原样提交给所选择的属性插件,因此属性格式必须符合对应属性插件的要求。
Lore 属性插入标记
lore 支持两项整行匹配的特殊标记:
| 标记 | 替换内容 |
|---|---|
{collect_attribute} | 插入该时装的全部 attribute 内容。 |
{equip_attribute} | 插入该时装的全部 equip-attribute 内容。 |
标记必须单独占据一行。插件读取时会使用对应属性列表替换整行,而不是在一段文字中进行局部替换。
yaml
lore:
- '&7收藏属性:'
- '{collect_attribute}'
- ''
- '&7穿戴属性:'
- '{equip_attribute}'时装 ID 与类型
顶层 ID 必须满足以下条件:
- 与 DragonArmourers 中的时装 ID 完全一致。
- 在所有
armourers/配置文件中全局唯一。 - 能通过 DragonArmourers API 获取到支持的时装类型。
时装类型会自动读取,不要在时装配置中增加 type。无法获取类型或类型不属于 sword、bow、outfit、wings、head、chest、legs、feet 时,该时装不会注册。
参考配置
以下内容整合了默认 config.yml 以及代码支持的两个可选周期配置:
yaml
# 属性插件:AttributePlus、SX-Attribute2、SX-Attribute3、AttributeSystem、ItemLoreOrigin
attribute-plugin: ''
mysql:
enable: false
databasename: mc2
username: mc2
password: mc1234
port: 3306
ip: 127.0.0.1
# DragonCore 操作数据包最小间隔,单位为毫秒
packet-interval: 300
# 是否输出详细的时装刷新日志
debug-skin-update: false
# 衣橱物品是否附加 DragonArmourers 时装外观
show-item-armourers: false
# 每页显示的时装数量
file-armourers-amount: 24
# 试穿持续时间,单位为秒
try-on-time: 60
# 再次试穿的冷却时间,单位为秒
next-try-on-cooldown: 300
# 玩家数据加载时自动永久发放的时装
auto-give-armourers:
# - '时装ID'
quality:
0: '&f普通'
1: '&a优秀'
2: '&b精良'
3: '&d稀有'
4: '&6传说'
display-type:
sword: '武器'
bow: '弓箭'
outfit: '套装'
wings: '翅膀'
head: '帽子'
chest: '上衣'
legs: '裤子'
feet: '鞋子'
filter-button-text:
quality: '&f品质: {quality}'
type: '&f类型: {type}'
owner: '&f拥有: {status}'
message:
next-try-time: '§c你需要等待 §6{time}秒 §c后才能再次试穿时装!'
try-success: '§a你已成功试穿该时装! §7试穿时间{time}秒; §7冷却时间{cooldown}秒.'
try-on-expired: '§c你试穿的时装{name}§c已到期.'
hide-armourers: '§a已隐藏{type}部位的时装!'
show-armourers: '§a已显示{type}部位的时装!'
switch-plan: '§a已切换至时装方案{plan}!'
give-armourers: '§a你获得时装: {armourers}'
remove-armourers: '§a你失去时装: {armourers}'
# 可选:MySQL 自动保存检查周期,单位为秒
auto-save-interval: 3
# 可选:ItemLoreOrigin 属性刷新周期,单位为 tick
ilo-update-task: 20