EmakiAccessory
EmakiAccessory 是 Emaki 系列的饰品栏模块。它给玩家一套独立的 GUI 饰品栏,不占用原版装备槽位,戴在里面的饰品照常提供属性与技能。
饰品栏是多页的:parts.yml 定义全局部位与槽位实例,pages/*.yml 决定每一页启用哪些部位,gui/accessory_gui.yml 描述页面布局。各页存储彼此隔离,但只有当前启用页的饰品产生属性、技能与套装件数。饰品的属性与技能通过 EmakiAttribute 的贡献提供者与 EmakiSkills 的技能来源接入,不需要在这两个模块里另配槽位。
基本信息
| 项目 | 值 |
|---|---|
| 模块版本 | 1.1.0 |
| API 坐标 | emaki.jiuwu.craft:emaki-accessory-api:1.1.0 |
| 主类 | emaki.jiuwu.craft.accessory.EmakiAccessoryPlugin |
| 主命令 | /emakiaccessory |
| 别名 | /eaccessory、/eacc |
| 硬依赖 | EmakiCoreLib |
| 软依赖 | EmakiItem、EmakiAttribute、EmakiSkills、PlaceholderAPI |
| 描述符基线 | api-version: "1.21.8"、folia-supported: true |
| Java | Java 25 |
| 主要权限 | emakiaccessory.use(默认 true)、emakiaccessory.reload(op)、emakiaccessory.debug(op)、emakiaccessory.admin(op)、emakiaccessory.admin.edit(op)、emakiaccessory.page.secondary(op,页权限示例) |
功能页面
| 页面 | 内容 |
|---|---|
| 命令与权限 | /emakiaccessory 的子命令、页面取回、管理指令与 6 个权限节点。 |
| 配置详解 | config.yml 的槽位来源、掉落、去重与持久化,以及 pages/*.yml 的字段。 |
| 部位与槽位 | parts.yml 的部位定义、槽位实例展开规则与孤儿槽。 |
| 饰品套装 | sets/<套装>.yml 的成员、槽位判据、件数阈值与效果。 |
| 界面模板 | gui/accessory_gui.yml 的四种槽位类型与页面切换格。 |
| 属性与技能接入 | 饰品属性如何进入 EmakiAttribute,技能如何进入 EmakiSkills。 |
| API 与集成 | emaki-accessory-api 的门面、查询接口与线程约束。 |
| 事件 API | AccessorySetBonusChangeEvent。 |
核心能力
- 独立饰品栏:饰品栏是自己的 GUI,不占用原版装备槽位,也不与 EmakiItem 的装备栏共享槽位。
- 多页与页间隔离:
pages/*.yml定义多页,同一个槽位实例 id 在不同页各存一件饰品,互不覆盖。 - 只有启用页生效:非启用页的饰品保留数据但停止提供属性、技能与套装件数;
page_enable格用于切换生效页。 - 按权限开放页:页的
permission非空时逐字判定;失去权限不清数据、不自动换页,玩家用/eacc retrieve <页>取回。 - 部位展开为槽位实例:
parts.yml里一个部位配count: 2会展开出ring_1与ring_2两个槽位实例,界面上一格对应一个实例。 - 属性与装备同源解析:饰品属性走 EmakiAttribute 的同一个解析器,一件饰品和一顶同数据的头盔产出完全相同的数值,父属性展开与范围伴生键一并生效。
- 累加式套装阈值:戴够 3 件时 2 件档与 3 件档同时生效,不是互斥择一。
- 饰品套装与装备套装互不干扰:饰品套装只统计饰品槽内的件数,EmakiItem 只统计装备栏。同一件物品同时属于两边的套装是允许的,两边各自独立计数。
- 孤儿槽不丢数据:缩减
count、删除部位或把部位从某页移除都不会删数据。该页不再声明的槽位里的饰品变成「孤儿」,显示在该页孤儿区供玩家取回;判定按「所属页是否声明该槽位」,其他页的饰品不会被当成孤儿。 - 管理员可代看代编:
/eacc admin view只读查看,/eacc admin edit需要额外的emakiaccessory.admin.edit权限。
文件结构
服务器运行后,EmakiAccessory 主要使用以下文件:
text
plugins/EmakiAccessory/
├─ config.yml
├─ parts.yml
├─ pages/
│ ├─ main.yml
│ └─ secondary.yml
├─ sets/
│ └─ example_set.yml
├─ gui/
│ └─ accessory_gui.yml
└─ lang/
├─ zh_CN.yml
└─ en_US.yml| 路径 | 说明 |
|---|---|
config.yml | 主配置:槽位来源、死亡掉落、去重、持久化。 |
parts.yml | 饰品部位定义,决定全局有哪些槽位实例。 |
pages/<页>.yml | 饰品页定义。页 id 取 page_id,文件名不参与识别;parts 决定该页启用哪些部位。 |
sets/<套装>.yml | 饰品套装定义。一个文件一个套装,文件名不参与识别。 |
gui/accessory_gui.yml | 饰品栏界面模板,可被多页共用。 |
lang/*.yml | 命令、界面与控制台文案。 |
快速开始
- 把
EmakiCoreLib-*.jar与EmakiAccessory-*.jar放入服务器plugins/。 - 想让饰品提供属性和技能,还要安装 EmakiAttribute、EmakiSkills,并用 EmakiItem 定义饰品物品。
- 不要把
emaki-accessory-api-*.jar放进plugins/;API Jar 只作为开发者的编译依赖。 - 首次启动后检查
plugins/EmakiAccessory/parts.yml、pages/main.yml与gui/accessory_gui.yml。 - 打开自己的饰品栏:
text
/eacc open
/eacc open secondary- 查看所有页与当前启用页:
text
/eacc pages- 修改配置后重载配置、部位、页与套装:
text
/eacc reload使用提示
- 改了
parts.yml的部位或count,必须同步在gui/accessory_gui.yml里为每个展开出的槽位实例摆一格type: "accessory_slot"且键名相同的格子,否则该槽位玩家用不到;还要确认目标页的parts里声明了该部位。 - 属性、技能与套装件数只统计当前启用页。玩家换页前,新页的饰品不会生效。
unique: true优先按 EmakiItem 的物品定义 id 判定。缺少 EmakiItem 时不会失效,而是回退为原版材质判定,此时同材质的两件饰品会被视为重复。- 饰品套装的
pieces[].item也依赖 EmakiItem 的定义 id,缺少 EmakiItem 时整个套装不生效。 - 部位 id 不能以
_<数字>结尾,那会与槽位实例 id 撞车。 /eacc admin edit只对在线玩家有效;/eacc admin clear不可撤销且会记入日志。