简体中文
部位与槽位
plugins/EmakiAccessory/parts.yml 这样定义部位: 怎么写饰品部位, 一个部位怎么展开成界面上的一个个格子, 以及什么是孤儿槽
plugins/EmakiAccessory/parts.yml 定义全部可用部位, pages/*.yml 再决定每页启用哪些部位. 你在这里定义一次部位, 多页都能引用
完整示例
yaml
parts:
necklace:
count: 1
display_name: "<gold>项链</gold>"
icon: "LIGHT_GRAY_STAINED_GLASS_PANE"
ring:
count: 2
display_name: "<gold>戒指</gold>"
icon: "LIGHT_GRAY_STAINED_GLASS_PANE"
belt:
count: 1
display_name: "<gold>腰带</gold>"
icon: "LIGHT_GRAY_STAINED_GLASS_PANE"
charm:
count: 2
display_name: "<gold>护符</gold>"
icon: "LIGHT_GRAY_STAINED_GLASS_PANE"字段
parts 下的每个键就是一个部位 id; 键名要合法 (规则见下节). 顶层缺少 parts 节时没有任何部位生效, 并记录 accessory.parts_section_missing; 文件读取失败记录 accessory.parts_load_failed
| 字段 | 类型 | 必填 | 默认值 | 取值范围 | 说明 |
|---|---|---|---|---|---|
parts.<部位id> | object | 是 | — | 键名须匹配 ^[a-z0-9_]+$ 且不以 _<数字> 结尾 | 部位定义节点; id 不合法时该部位被跳过 (记录 accessory.part_id_illegal) |
parts.<部位id>.count | integer | 否 | 1 | ≥ 1; 小于 1 时该部位被跳过 (记录 accessory.part_count_invalid) | 该部位展开出几个槽位实例 |
parts.<部位id>.display_name | string | 否 | "" | — | 部位显示名, 支持 MiniMessage. 仅作为空槽位占位物品的回退名称: 对应 GUI 格子未声明 item.components 时才生效 |
parts.<部位id>.icon | string | 否 | "" | — | 空槽位占位物品的材质/物品来源. 对应 GUI 格子未写 item.source 时用它作为备用; 写空的格子会退化成屏障物品 |
parts.<部位id>.durability_deduction | boolean | 否 | true | true / false | 该部位的饰品是否允许被扣除耐久度. 仅对带耐久上限的物品有意义 (上限为 0 的饰品永不扣除); 要扣除还需主配置 durability.enabled 为 true |
示例: 把戒指扩到 3 格并改掉占位名与材质
yaml
parts:
ring:
count: 3
display_name: "<gold>戒指</gold>"
icon: "LIGHT_GRAY_STAINED_GLASS_PANE"槽位实例展开
每个部位会展开成 count 个槽位实例, 实例 id 为 <部位id>_<序号>, 序号从 1 开始
拿上面的示例来说, ring 部位配了 count: 2, 就会展开出 ring_1 与 ring_2:
| 部位 | count | 展开出的槽位实例 |
|---|---|---|
necklace | 1 | necklace_1 |
ring | 2 | ring_1, ring_2 |
belt | 1 | belt_1 |
charm | 2 | charm_1, charm_2 |
部位 id 的命名约束
读取时键名会先做规范化 (去首尾空白, 转小写, 空格换成下划线), 然后必须只含小写字母, 数字和下划线, 且不能以 _<数字> 结尾 -- 那种写法会和槽位实例 id 撞车 (写 ring_2 会与 ring 部位的第二格同名)
不合法的 id 会被拒绝并记录 accessory.part_id_illegal 警告, 插件不会替你改名
两个部位展开出同一个槽位实例 id 时, 后出现的部位整体被跳过并记录 accessory.part_instance_conflict
必须同步页与界面
改完 parts.yml 你还有两步要做:
- 在
pages/*.yml的parts列表里加上该部位, 否则它不属于任何页, 玩家看不到 - 每个展开出来的槽位都要在页所用的布局 (
gui_template指向的gui/*.yml) 里摆一格type: "accessory_slot"且键名相同的格子, 否则玩家用不到该槽位
同一部位被多页引用时, 各页的饰品分开存储, 互不覆盖; 但只有生效页的饰品会产生属性, 技能与套装件数
你缩减 count, 删除部位, 或把部位从某页 parts 移除, 都会让原有饰品变成孤儿, 需要靠 orphan_slot 或 /eacc retrieve <页> 取回. 详见界面模板与配置详解
yaml
slots:
ring_1:
slots: [12]
type: "accessory_slot"
ring_2:
slots: [13]
type: "accessory_slot"孤儿槽
你缩减 count 或删除部位都不会删数据: 落在已消失槽位里的饰品会变成"孤儿", 显示在界面的 orphan_slot 区域供玩家取回
取走后不能再放回. 孤儿饰品也永不计入套装件数, 因此从配置里移除一个部位会降低套装事件里报告的件数