物品类型与能力矩阵
物品类型决定一件物品「属于哪一类」以及「能用哪些功能」。配置文件: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。
查询接口(开发者):
TypeCapabilityMatrix.capabilitiesOf(typeId): Set<TypeCapability> // 含继承自父类型的能力
TypeCapabilityMatrix.supports(typeId, capability): Boolean2. 内置类型大全
下表是 QI 内置的全部类型(来自 QinhItemTypeRegistry.builtinDefaults()),按用途分组。别名列出可在 type: 处互换使用的写法。
战斗类
| 类型 | 别名 | 能力 |
|---|---|---|
weapon | sword/weapons | SKILL · ATTRIBUTE · GEM_SOCKET · RENDER |
armor | armour | ATTRIBUTE · RENDER |
helmet | (父:armor) | ATTRIBUTE · RENDER |
chestplate | (父:armor) | ATTRIBUTE · RENDER |
leggings | (父:armor) | ATTRIBUTE · RENDER |
boots | (父:armor) | ATTRIBUTE · RENDER |
shield | ATTRIBUTE · RENDER · SET | |
projectile | ammo | PROJECTILE · RENDER |
bow | PROJECTILE · ATTRIBUTE · RENDER | |
crossbow | PROJECTILE · ATTRIBUTE · RENDER | |
trident | PROJECTILE · SKILL · ATTRIBUTE · RENDER |
饰品类
| 类型 | 别名 | 能力 |
|---|---|---|
ring | SKILL · ATTRIBUTE · GEM_SOCKET · RENDER | |
necklace | SKILL · ATTRIBUTE · GEM_SOCKET · RENDER | |
bracelet | wristlet/band | SKILL · ATTRIBUTE · GEM_SOCKET · RENDER |
accessory | SKILL · ATTRIBUTE · GEM_SOCKET · RENDER |
合成 / 材料类
| 类型 | 别名 | 能力 |
|---|---|---|
gem | jewel | RENDER · ATTRIBUTE |
material | mat/materials | RENDER · SET |
消耗类
| 类型 | 别名 | 能力 |
|---|---|---|
consumable | useable | CONSUMABLE · RENDER · SET |
food | edible/foods | CONSUMABLE · RENDER |
scroll | CONSUMABLE · SKILL · RENDER | |
seed | crops | CONSUMABLE · RENDER |
bait | CONSUMABLE · RENDER |
工具 / 杂项类
| 类型 | 别名 | 能力 |
|---|---|---|
tool | tools | RENDER · ATTRIBUTE |
fishing_rod | RENDER · SET | |
wand | staff | SKILL · ATTRIBUTE · GEM_SOCKET · RENDER |
horse_armor | ATTRIBUTE · RENDER | |
horse | mount | RENDER · SET |
skull | head | RENDER |
currency | coin/coins/money | RENDER |
token | tickets | RENDER · CONSUMABLE |
trophy | award/prize | RENDER · CONSUMABLE |
prop | gadget/props | SKILL · CONSUMABLE · RENDER |
misc | other/miscellaneous | RENDER(兜底类型) |
3. 父类型与能力继承
部分类型有父类型,会继承父的能力。最典型是护甲:
armor
├── helmet (继承 armor 的 ATTRIBUTE · RENDER)
├── chestplate
├── leggings
└── boots所以 helmet 不用单独声明能力,它从 armor 继承。TypeCapabilityMatrix.capabilitiesOf("helmet") 会把继承来的能力一并返回。
4. item_types.yml 结构
item_types.yml 定义类型 ID、显示名、能力、父类型、库分类等。结构大致为:
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: 下加一项,至少给 display 和 capabilities,然后 /qi reload。物品就能 type: 你的新类型。
注意:类型必须存在,否则物品会因「类型未知」而 unhealthy(见 物品定义 → 健康检查)。
6. 类型与「库(Library)」
类型可以归入一个库分类(library-category)。库(LibraryManifest)是把一组类型 / 能力打包成可分发内容包的元数据描述,主要给内容分发 / 编辑器分组用。开发者细节见 层与装配 → 库清单。