变体-CIT

变体-CIT

用于大型且可扩展的变体集合的替代CIT格式。

Variants-CIT

一种为具有标准化变体的物品设计的精简 CIT 格式。

此模组不如 OptiFine 灵活,但在同一物品基于同一份数据拥有大量变体的场景中表现出色。当存在极大量 CIT 时,它能带来更好的性能,并且使用的资源格式冗余更少,只需一个简短的文件即可一次性配置所有可能的变体。

可直接使用的此模组资源包分支:

资源包格式

此处为概览,完整指南请参阅 wiki。

该格式的核心在于:物品变体会自动与名称匹配的模型或纹理关联。 你无需为每个 CIT 定义条件,而是定义一条单一规则来统管一个集合中的所有 CIT(即所谓的模块)。该模块定义了受影响的物品、如何判断其变体,以及它们的模型位于何处。

例如,下面是一个简单的模块,用于更改附魔书的纹理:

{
	"type": "stored_enchantment", // 模块的行为
	"items": "minecraft:enchanted_book", // 受影响的物品类型
	"modelPrefix": "item/book_cit/", // 包含可能模型/纹理的文件夹。
	"modelParent": "item/generated", // 从纹理自动生成模型(如果模型缺失)
	"parameters": { // 模块类型特有的额外选项
		"levelSeparator": "_lvl_" // 在变体 ID 中包含附魔等级
	}
}

在这里,一本带有 2 级 minecraft:unbreaking 附魔的书将拥有变体 ID minecraft:unbreaking_lvl_2,因此会使用存储在 /assets/minecraft/texture/item/book_cit/unbreaking_lvl_2.png 处的纹理。 只要存在对应的纹理,这一个模块就能适用于所有可能的附魔,无论是原版还是模组添加的。

上述模块类型为附魔书提供了专门设计的逻辑。如果某个特定组件没有对应的模块类型,你仍然可以使用更通用的模块来从任意组件获取变体:

{
	"type": "component_data",
	"items": "minecraft:suspicious_stew",
	"modelPrefix": "item/suspicious_stew_cit/",
	"parameters": {
		"componentType": "suspicious_stew_effects", // 包含变体 ID 的组件
		"nbtPath": "[0].id" // 变体 ID 在组件中的位置。
	}
}

在更高层级上,你可以通过组合来自多个组件的多份数据来创建变体:

{
	"type": "component_format",
	"items": "minecraft:diamond_sword",
	"modelPrefix": "item/trimmed_diamond_sword/",
	"parameters":{
		"format": "${pattern}_${material}", // 如何将多份数据组合成一个变体 ID
		"variables": { // 从何处找到这些数据。
			"pattern": {
				"componentType": "trim",
				"nbtPath": ".pattern"
			},
			"material": {
				"componentType": "trim",
				"nbtPath": ".material",
				"transform": "discard_namespace"
			}
		}
	}
}