跳到主要内容

Curios 槽位

本模组为玩家提供两个 back_weapon 槽位、两个 belt_item 槽位与四个 charm 槽位。全部都是物理槽位,不创建 Curios cosmetic 槽位;背部和腰部物品渲染直接读取物理槽位,charm 里的物品不渲染在角色身上。

槽位 id格数排序验证器接收什么
back_weapon20curios:tag、mxt:back_weapon_auto物品标签里的物品,加上自动验证器放行的部分。
belt_item21curios:tag、mxt:belt_item_auto同上。
charm4200curios:tag、mxt:charm_artifact_auto物品标签里的物品,加上声明了 curios_equipable: true 的法器。

三个槽位都注册给 minecraft:player。back_weapon/belt_item 的 curios:tag 标签里已经列了原版剑(腰带另有弓)与本模组自己的 #mxt:back_equipable、#mxt:belt_equipable 扩展标签;charm 用的是 Curios 内置槽型,本模组不往 curios:charm 标签里塞东西。

自动验证器​

back_weapon 和 belt_item 都保留 curios:tag 验证器,并额外使用一个由本模组注册的自动验证器:

  • mxt:back_weapon_auto
  • mxt:belt_item_auto
  • mxt:charm_artifact_auto——只放行定义里声明了 curios_equipable: true 的法器,别的都不放。

服务端配置​

服务端配置的**「饰品栏」标签页**控制自动验证范围,改完由服务端同步给客户端:

条目默认可选值
背部槽位手动手动 / 仅武器 / 全部
腰部槽位手动手动 / 武器与灵宝 / 全部
强制渲染关开 / 关

背部槽位可选手动、仅武器、全部:

  • 手动:自动验证不允许额外物品,只有 curios:tag 允许的物品可放入。
  • 仅武器:在 tag 物品之外,允许匹配 weapon_binding 的物品。
  • 全部:在 tag 物品之外,允许所有物品。

腰部槽位可选手动、武器与灵宝、全部:

  • 手动:只允许 curios:tag。
  • 武器与灵宝:额外允许已匹配 weapon_binding 的武器,以及 artifact 里声明了 curios_equipable: true 的法器。判断依据是定义本身,不是物品堆上有没有法器状态。
  • 全部:在 tag 物品之外,允许所有物品。

charm 槽位(四个)​

四个 charm 槽位直接用 Curios 内置的 charm 槽型:本模组只在它上面补了格数(4)和一个自动验证器 mxt:charm_artifact_auto,它只接收 artifact 里声明了 curios_equipable: true 的法器,没有对应的服务端配置项——要让别的物品也能放进去,就把物品加进 curios:charm 物品标签(curios:tag 验证器仍然生效)。放在槽里的法器照常生效:它授予的被动/主动技能与其他 Curios 物品走同一条同步,脱下即回收。

Curios 的槽位 id 是全局字符串,同 id 的定义会合并,所以这 4 格是给整个整合包的 charm 槽型定的:别的模组的 charm 物品同样共享它们。

三个验证器都是“额外允许”逻辑,不会覆盖或修改 curios:tag。其他模组也可以通过 Curios API 注册自己的 validator,但不能通过数据包创建新的验证算法。

可见性与渲染​

Curios 的槽位界面按钮会控制每个槽位的 getRenders() 状态以及槽位整体的可见状态;本模组的背部和腰部渲染会遵守这些状态。服务端配置「饰品栏 → 强制渲染」打开时,仅强制显示本模组的背部和腰部槽位,不影响其他模组槽位。四个 charm 槽位完全没有渲染器——法器本身就是一件任意物品、没有自己的模型——所以身上没有东西可画,它们也没有偏移文件。

交换快捷键​

「与背武器槽交换主手」(key.mxt.swap_back)把主手物品与第一个 back_weapon 槽位互换;主手物品对该槽位不合法时什么也不做。该快捷键默认不绑定,见按键与轮盘。

资源包渲染偏移​

背部与腰部的渲染偏移完全由客户端资源包控制:

  • assets/<namespace>/mxt/back_render/*.json:背部槽位。
  • assets/<namespace>/mxt/belt_render/*.json:腰部槽位。

每个文件是一条规则。item 匹配器命中这堆物品、且 priority 最大的那条规则生效;没有规则命中时,带原版 minecraft:weapon 组件的物品回退到 weapon 预设,其余物品回退到 default。

字段类型默认说明
itemItemMatcher必填这条规则适用的物品或物品标签,匹配方式与绑定表一致。
priority整数0规则优先级;命中的规则里数值最大者生效。
presetdefault、weapon、big_weapondefault物品挂在身上的基础摆放。
back变换单位变换物品位于背部槽位时额外施加的变换。
belt变换单位变换物品位于腰部槽位时额外施加的变换。
预设背部基础摆放
default不额外平移、旋转或缩放。
weapon平移 [0, 10, 0]、旋转 [180, 0, 0]——斜背在背上的武器。
big_weapon平移 [0, 4.8, 0],不额外旋转。

预设只改变背部的摆放;腰部槽位对每个预设都用默认摆放。

一个变换有三个可选字段:

字段类型默认说明
translation3 个浮点[0, 0, 0]偏移量,单位为 1/16 格。
rotation3 个浮点[0, 0, 0]旋转角度,按 X、Y、Z 的顺序施加。
scale3 个浮点[1, 1, 1]每个轴上的缩放。

渲染器先把物品摆到身上,再施加命中的预设与变换,所以资源包只需要描述与默认摆放的差别。这些定义随客户端资源包一起加载与重载。