Skip to content

物品类型与能力矩阵

所属:服主指南 · 相关:物品定义 · 品质与显示

物品类型决定一件物品「属于哪一类」以及「能用哪些功能」。配置文件:plugins/QinhItems/item_types.yml

📋 想看每个类型的默认材质 / 编辑器图标 / 库分类全表?看 资源文件总览 → item_types 完整表


1. 能力(TypeCapability)是什么

每个类型声明自己支持的能力。能力是个枚举:

能力含义
SKILL支持技能 / 动作触发(如 left_click 触发器)
ATTRIBUTE支持属性修饰(如 providers.ap
GEM_SOCKET支持宝石孔(gem-sockets 字段)
SET支持套装加成
RENDER支持自定义渲染(资源包 / 模型数据)
CONSUMABLE可消耗动作(consume 触发器)
PROJECTILE投射物行为(弓 / 弩 / 三叉戟)

能力矩阵决定边界:给一个 currency(货币,只有 RENDER)物品加 gem-sockets 是没意义的,因为它不支持 GEM_SOCKET

查询接口(开发者):

kotlin
TypeCapabilityMatrix.capabilitiesOf(typeId): Set<TypeCapability>   // 含继承自父类型的能力
TypeCapabilityMatrix.supports(typeId, capability): Boolean

2. 内置类型大全

下表是 QI 内置的全部类型(来自 QinhItemTypeRegistry.builtinDefaults()),按用途分组。别名列出可在 type: 处互换使用的写法。

战斗类

类型别名能力
weaponsword/weaponsSKILL · ATTRIBUTE · GEM_SOCKET · RENDER
armorarmourATTRIBUTE · RENDER
helmet(父:armor)ATTRIBUTE · RENDER
chestplate(父:armor)ATTRIBUTE · RENDER
leggings(父:armor)ATTRIBUTE · RENDER
boots(父:armor)ATTRIBUTE · RENDER
shieldATTRIBUTE · RENDER · SET
projectileammoPROJECTILE · RENDER
bowPROJECTILE · ATTRIBUTE · RENDER
crossbowPROJECTILE · ATTRIBUTE · RENDER
tridentPROJECTILE · SKILL · ATTRIBUTE · RENDER

饰品类

类型别名能力
ringSKILL · ATTRIBUTE · GEM_SOCKET · RENDER
necklaceSKILL · ATTRIBUTE · GEM_SOCKET · RENDER
braceletwristlet/bandSKILL · ATTRIBUTE · GEM_SOCKET · RENDER
accessorySKILL · ATTRIBUTE · GEM_SOCKET · RENDER

合成 / 材料类

类型别名能力
gemjewelRENDER · ATTRIBUTE
materialmat/materialsRENDER · SET

消耗类

类型别名能力
consumableuseableCONSUMABLE · RENDER · SET
foodedible/foodsCONSUMABLE · RENDER
scrollCONSUMABLE · SKILL · RENDER
seedcropsCONSUMABLE · RENDER
baitCONSUMABLE · RENDER

工具 / 杂项类

类型别名能力
tooltoolsRENDER · ATTRIBUTE
fishing_rodRENDER · SET
wandstaffSKILL · ATTRIBUTE · GEM_SOCKET · RENDER
horse_armorATTRIBUTE · RENDER
horsemountRENDER · SET
skullheadRENDER
currencycoin/coins/moneyRENDER
tokenticketsRENDER · CONSUMABLE
trophyaward/prizeRENDER · CONSUMABLE
propgadget/propsSKILL · CONSUMABLE · RENDER
miscother/miscellaneousRENDER(兜底类型)

3. 父类型与能力继承

部分类型有父类型,会继承父的能力。最典型是护甲:

armor
├── helmet      (继承 armor 的 ATTRIBUTE · RENDER)
├── chestplate
├── leggings
└── boots

所以 helmet 不用单独声明能力,它从 armor 继承。TypeCapabilityMatrix.capabilitiesOf("helmet") 会把继承来的能力一并返回。


4. item_types.yml 结构

item_types.yml 定义类型 ID、显示名、能力、父类型、库分类等。结构大致为:

yaml
types:
  weapon:
    display: "武器"
    aliases: [sword, weapons]
    capabilities: [SKILL, ATTRIBUTE, GEM_SOCKET, RENDER]
    library-category: weapons
  helmet:
    display: "头盔"
    parent: armor          # 继承 armor 能力
    capabilities: [ATTRIBUTE, RENDER]

一般情况下你不需要改这个文件,内置类型已覆盖绝大多数需求。需要全新类型时再加。display 会显示在物品 Lore 的「物品类型:xxx」行。


5. 自定义类型

要加一个全新类型,在 types: 下加一项,至少给 displaycapabilities,然后 /qi reload。物品就能 type: 你的新类型

注意:类型必须存在,否则物品会因「类型未知」而 unhealthy(见 物品定义 → 健康检查)。


6. 类型与「库(Library)」

类型可以归入一个库分类(library-category)。库(LibraryManifest)是把一组类型 / 能力打包成可分发内容包的元数据描述,主要给内容分发 / 编辑器分组用。开发者细节见 层与装配 → 库清单


下一步