Skip to content

发包与变量

时装衣橱通过 DragonCore 自定义数据包与服务端交互,并通过 PlaceholderAPI 提供玩家时装变量。默认界面已经包含所需逻辑,只有修改或重写 时装衣橱.yml 时才需要使用本页内容。

基本信息

项目内容
DragonCore 发包标识LyArmourersWardrobe
DragonCore 界面名称时装衣橱
默认界面文件时装衣橱.yml
打开界面/lysz open
PlaceholderAPI 标识law
发包间隔packet-interval 控制,默认 300 毫秒

服务端只处理标识为 LyArmourersWardrobe 的数据包。玩家数据尚未加载时,发包不会生效。

同一名玩家连续发包的时间间隔小于 packet-interval 时,后一个数据包会被直接忽略。自定义界面中的按钮、搜索框和下拉框应避免在短时间内重复发包。

客户端发包格式

数据包参数按顺序传递。第一个参数固定为操作名称,后续参数根据操作类型填写。

操作参数顺序说明
初始化初始化创建玩家本次打开界面使用的筛选缓存,并刷新列表、穿戴槽位、预设按钮与筛选按钮。
上一页上一页页码组件名页码大于 1 时进入上一页,并修改指定组件的 texts 值。
下一页下一页页码组件名当前页之后仍有时装时进入下一页,并修改指定组件的 texts 值。
穿戴或试穿穿戴显示时装时装ID已拥有时直接穿戴;未拥有时按试穿时间和冷却设置进行试穿。
脱下时装脱下时装类型移除当前预设中指定类型的时装。
显示或隐藏显示或隐藏时装类型组件名切换指定类型的隐藏状态,并调用界面方法修改对应组件。
设置显示状态显示或隐藏时装类型组件名true/false可选第四个参数用于明确设置隐藏状态,而不是直接反转当前状态。
搜索时装搜索时装搜索内容按时装显示名称的拼音结果筛选,并回到第 1 页。
选择类型选择时装类型类型修改类型筛选并回到第 1 页。
选择拥有状态选择是否拥有筛选值修改拥有状态筛选并回到第 1 页。
选择品质选择时装品质品质等级修改品质筛选并回到第 1 页。
切换预设切换预设预设序号切换当前穿戴方案,并刷新穿戴槽位、预设按钮和搭配详情。

初始化

打开界面后应发送一次初始化包:

text
LyArmourersWardrobe / 初始化

初始化会执行以下操作:

  • 新建筛选缓存,默认页码为 1
  • 默认显示全部类型、全部品质和全部拥有状态。
  • 清空并重新填充当前穿戴槽位。
  • 生成时装列表组件。
  • 生成 5 个时装预设按钮,序号为 04
  • 生成类型、品质和拥有状态筛选按钮。

筛选缓存只有初始化后才会创建。自定义界面不得在初始化之前发送翻页或筛选数据包。

翻页

text
LyArmourersWardrobe / 上一页 / 页码组件名
LyArmourersWardrobe / 下一页 / 页码组件名

页码组件名 是需要更新页码文本的 DragonCore 组件 ID。翻页成功后,服务端会把该组件的 texts 设置为新的页码。

每页显示数量由 file-armourers-amount 决定,默认值为 24。第一页页码固定从 1 开始;没有上一页或下一页时,服务端不会修改界面。

穿戴与试穿

text
LyArmourersWardrobe / 穿戴显示时装 / 时装ID

服务端会依次检查:

  1. DragonArmourers 中能否取得该时装的类型。
  2. 时装是否已经在插件的 armourers 配置目录中注册。
  3. 玩家是否永久拥有或正在试穿该时装。
  4. 未拥有时,玩家的试穿冷却是否已经结束。

玩家未拥有时装时,此操作会授予临时使用权限并自动穿戴。试穿持续时间由 try-on-time 控制,下次试穿冷却由 next-try-on-cooldown 控制。

重复选择当前部位已经穿戴的同一时装时,不会再次刷新皮肤。试穿时装到期后会从拥有列表和全部预设中移除。

脱下时装

text
LyArmourersWardrobe / 脱下时装 / 类型

此操作只修改当前预设。指定类型当前没有穿戴时装时,不会执行额外操作。

显示与隐藏

切换当前状态:

text
LyArmourersWardrobe / 显示或隐藏时装 / 类型 / 组件名

明确设置目标状态:

text
LyArmourersWardrobe / 显示或隐藏时装 / 类型 / 组件名 / true
LyArmourersWardrobe / 显示或隐藏时装 / 类型 / 组件名 / false

第四个参数含义如下:

参数结果
true隐藏该类型的时装。
false显示该类型的时装。
不传或不是布尔值反转当前隐藏状态。

状态发生变化后,服务端会刷新玩家皮肤,并根据结果调用以下界面方法:

状态服务端调用的方法
隐藏组件修改_当前时装槽位隐藏
显示组件修改_当前时装槽位显示

发包中的 组件名 会作为方法参数传回客户端。若目标状态与当前状态相同,服务端不会重复刷新或调用界面方法。

搜索

text
LyArmourersWardrobe / 搜索时装 / 搜索内容

搜索匹配的是时装配置中的 name,插件会把时装名称和搜索内容转换为不带分隔符的小写拼音后进行包含判断。因此可以使用完整名称、名称片段或对应拼音搜索。

搜索后列表会回到第 1 页。当前代码不会自动修改页码文本组件,自定义界面需要自行同步页码显示。

类型筛选

text
LyArmourersWardrobe / 选择时装类型 / 类型
类型值默认显示名称用途
all全部不限制时装类型,仅用于筛选。
sword武器武器时装。
bow弓箭弓箭时装。
outfit套装套装时装。
wings翅膀翅膀时装。
head帽子头部时装。
chest上衣胸部时装。
legs裤子腿部时装。
feet鞋子脚部时装。

类型显示名称来自 config.ymldisplay-type。筛选后列表会回到第 1 页,并重新生成类型按钮和下拉框文本。

拥有状态筛选

text
LyArmourersWardrobe / 选择是否拥有 / 筛选值
筛选值显示状态说明
all全部显示全部时装。
owned已拥有显示玩家拥有的时装,包含正在试穿的时装。
not_owned未拥有显示玩家当前没有使用权限的时装。
其它值全部未识别的值按全部处理。

筛选后列表会回到第 1 页,并重新生成拥有状态按钮和下拉框文本。

品质筛选

text
LyArmourersWardrobe / 选择时装品质 / 品质等级
品质值说明
-1显示全部品质。
0 及以上整数显示 config.yml 中对应等级的品质。

品质等级来自 config.ymlquality 配置。自定义界面应只发送实际存在的品质等级,否则后续刷新品质文本时可能无法取得对应品质数据。

筛选后列表会回到第 1 页,并重新生成品质按钮和下拉框文本。

切换预设

text
LyArmourersWardrobe / 切换预设 / 预设序号

插件当前为每名玩家创建 5 个预设,序号为 01234。默认预设序号为 0

每个预设分别保存:

  • 各类型当前穿戴的时装 ID。
  • 各类型当前是否隐藏。

切换预设后会清空客户端穿戴槽位,并按新预设重新填充。只有切换前后的穿戴映射或隐藏映射不同时,服务端才会请求刷新玩家皮肤。

自定义界面只能发送存在的预设序号。服务端没有为越界序号提供回退处理。

槽位命名

槽位格式说明
armourers_slot_序号当前页面中的可选时装槽位。序号从 0 开始。
armourers_equip_类型当前预设的穿戴槽位。

默认每页数量为 24 时,列表槽位为 armourers_slot_0armourers_slot_23

当前穿戴槽位如下:

类型槽位 ID
武器armourers_equip_sword
弓箭armourers_equip_bow
套装armourers_equip_outfit
翅膀armourers_equip_wings
帽子armourers_equip_head
上衣armourers_equip_chest
裤子armourers_equip_legs
鞋子armourers_equip_feet

file-armourers-amount 必须与自定义界面可容纳的 armourers_slot_序号 数量一致,否则服务端可能向界面不存在的槽位写入物品。

服务端调用的界面方法

服务端使用 DragonCore 的 方法.执行方法 动态创建或修改界面组件。自定义界面需要保留对应方法,或实现同名方法。

时装列表

每个列表项会按顺序调用以下方法:

方法参数
添加组件_时装选择贴图序号时装ID品质等级
添加组件_时装选择槽位序号时装ID品质等级
添加组件_时装选择属性序号时装ID品质等级
添加组件_时装选择显示序号时装ID穿戴或试穿品质等级
添加组件_时装品质文本序号品质与类型文本品质等级
添加组件_时装名称文本序号时装显示名称品质等级

刷新筛选结果或翻页前,服务端会调用:

text
清空组件_时装选择

添加组件_时装选择显示 的第三个参数取决于玩家是否拥有该时装:

  • 已拥有或正在试穿:穿戴
  • 未拥有:试穿

类型筛选组件

方法参数
添加按钮_选择时装类型序号类型显示文本
组件修改_时装类型下拉框文本显示文本

类型按钮序号固定为 08,依次对应 allswordbowoutfitwingsheadchestlegsfeet

拥有状态组件

方法参数
添加按钮_选择是否拥有序号筛选值显示文本
组件修改_是否拥有下拉框文本显示文本

拥有状态按钮依次为:

序号筛选值
0all
1owned
2not_owned

品质筛选组件

方法参数
添加按钮_选择时装品质序号品质等级显示文本
组件修改_时装品质下拉框文本显示文本

序号 0 固定表示全部品质,对应品质值 -1。其余按钮根据 config.yml 中已加载的品质生成。

当前穿戴组件

方法参数
添加组件_当前时装槽位序号类型
添加组件_隐藏时装按钮序号类型true/false
组件修改_当前时装槽位隐藏组件名
组件修改_当前时装槽位显示组件名

当前穿戴组件序号固定为 07,依次对应 swordbowoutfitwingsheadchestlegsfeet

预设组件

服务端使用以下方法生成预设按钮:

text
添加按钮_时装预设分页

参数顺序为 预设序号显示文本。当前预设的文本前会增加 §a[当前]

其它固定组件

组件或方法用途
搭配详情服务端修改该组件的 tip,写入当前预设的穿戴详情。
发包传入的页码组件翻页成功后,服务端修改该组件的 texts

搭配详情包含品质、类型、时装名称和隐藏状态。隐藏的部位会在文本末尾显示 §7(隐藏)

PlaceholderAPI 变量

变量功能需要服务器安装并启用 PlaceholderAPI。插件检测到 PlaceholderAPI 后会注册 law 变量扩展,不需要单独下载扩展文件。

支持的类型

以下变量中的 类型 可替换为:

类型对应部位
sword武器
bow弓箭
outfit套装
wings翅膀
head帽子
chest上衣
legs裤子
feet鞋子

all 只适用于拥有数量和总数量变量,不应作为当前穿戴、名称或隐藏状态变量的部位参数。

拥有状态

变量返回值说明
%law_status_时装ID%已拥有未拥有 或剩余秒数查询玩家是否拥有指定时装。

返回规则:

状态返回内容
永久拥有已拥有
正在试穿剩余秒数秒,例如 42秒
试穿时间刚结束但尚未完成清理0秒
未拥有未拥有

收集数量

变量说明
%law_owned_类型%返回玩家永久拥有的指定类型时装数量。
%law_owned_all%返回玩家永久拥有的全部时装数量。
%law_total_类型%返回插件已注册的指定类型时装总数。
%law_total_all%返回插件已注册的全部时装总数。

owned 数量只统计永久时装,不统计正在试穿的限时时装。total 数量来自插件加载的 armourers 配置,不代表 DragonArmourers 中所有存在的皮肤数量。

无效类型的数量变量返回 0

当前穿戴

变量说明无数据时返回
%law_id_类型%返回当前预设中指定类型的时装 ID。空字符串
%law_name_类型%返回当前预设中指定类型的时装显示名称。空字符串
%law_hide_类型%返回当前预设中指定类型是否隐藏。无效类型返回空字符串

%law_hide_类型% 的正常返回值为:

返回值说明
true当前预设隐藏该类型时装。
false当前预设显示该类型时装,或尚未记录隐藏状态。

当前穿戴变量读取的是玩家正在使用的预设。切换预设后,变量结果也会随之改变。

变量异常返回

情况返回值
玩家对象为空空字符串
玩家数据尚未载入空字符串
当前部位没有穿戴时装空字符串
当前时装 ID 未在插件中注册,查询名称空字符串
变量前缀能够识别但变量名称不受支持§c错误

自定义界面注意事项

  • 打开界面后先发送 初始化,再允许玩家执行其它操作。
  • 发包参数必须保持顺序,服务端直接按参数下标读取数据。
  • 按钮点击间隔不得小于 packet-interval,否则操作会被忽略。
  • 翻页操作必须传入页码组件名;原页面中不带参数的翻页格式已不适用于当前实现。
  • 类型、品质和拥有状态筛选不需要传入按钮组件名,服务端会统一重新生成对应按钮。
  • 搜索和筛选会把服务端页码重置为 1,但不会主动修改自定义页码文本。
  • file-armourers-amount 应与界面提供的 armourers_slot_序号 数量一致。
  • 预设序号只使用 04
  • 显示或隐藏操作中的组件名会原样拼入 DragonCore 方法调用,自定义组件 ID 应保持简单且固定。
  • 页面中需要显示拥有状态、穿戴名称或隐藏状态时,可配合 %law_status_时装ID%%law_name_类型%%law_hide_类型% 使用。