Skip to content

部位与槽位 ​

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>.countinteger否1≥ 1; 小于 1 时该部位被跳过 (记录 accessory.part_count_invalid)该部位展开出几个槽位实例
parts.<部位id>.display_namestring否""—部位显示名, 支持 MiniMessage. 仅作为空槽位占位物品的回退名称: 对应 GUI 格子未声明 item.components 时才生效
parts.<部位id>.iconstring否""—空槽位占位物品的材质/物品来源. 对应 GUI 格子未写 item.source 时用它作为备用; 写空的格子会退化成屏障物品
parts.<部位id>.durability_deductionboolean否truetrue / 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展开出的槽位实例
necklace1necklace_1
ring2ring_1, ring_2
belt1belt_1
charm2charm_1, charm_2

部位 id 的命名约束 ​

读取时键名会先做规范化 (去首尾空白, 转小写, 空格换成下划线), 然后必须只含小写字母, 数字和下划线, 且不能以 _<数字> 结尾 -- 那种写法会和槽位实例 id 撞车 (写 ring_2 会与 ring 部位的第二格同名)

不合法的 id 会被拒绝并记录 accessory.part_id_illegal 警告, 插件不会替你改名

两个部位展开出同一个槽位实例 id 时, 后出现的部位整体被跳过并记录 accessory.part_instance_conflict

必须同步页与界面 ​

改完 parts.yml 你还有两步要做:

  1. 在 pages/*.yml 的 parts 列表里加上该部位, 否则它不属于任何页, 玩家看不到
  2. 每个展开出来的槽位都要在页所用的布局 (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 区域供玩家取回

取走后不能再放回. 孤儿饰品也永不计入套装件数, 因此从配置里移除一个部位会降低套装事件里报告的件数