Variants-CIT - это мод для Майнкрафт, который предлагает альтернативный формат CIT (Custom Item Textures), заточенный под работу с огромным количеством вариантов одного предмета. Если ты когда-нибудь пытался сделать ресурспак, где у каждой зачарованной книги своя текстура, или мечи с разными названиями выглядят по-своему - ты знаешь, как это быстро превращается в ад из сотен JSON-файлов. Variants-CIT решает эту проблему кардинально.
Вместо того чтобы прописывать условия для каждого варианта отдельно (как это делает Optifine-CIT), ты создаёшь один модуль, который автоматически подбирает модель или текстуру под конкретный предмет. Это не просто удобно - это даёт реальный прирост производительности, когда у тебя в папке лежат тысячи текстур.
Всё крутится вокруг идеи: варианты предметов автоматически сопоставляются с моделями или текстурами, у которых совпадают имена. Ты задаёшь одно правило (модуль), которое определяет, какой предмет меняется, как вычислить его вариант и где искать модели.
Допустим, ты хочешь, чтобы у каждой зачарованной книги была уникальная текстура. Вместо того чтобы писать условие для unbreaking, sharpness, protection и так далее, ты делаешь так:
{
"items": "enchanted_book",
"modelPrefix": "book_cit/",
"assetGen": "item_model/generated",
"type": "stored_entchantment",
"parameters": {
"levelSeparator": "_lvl_"
}
}
Всё. Теперь книга с чарами minecraft:unbreaking уровня 2 будет искать текстуру по пути /assets/minecraft/textures/item/book_cit/unbreaking_lvl_2.png. И так для любого зачарования - ванильного или модного. Есть текстура - работает. Нет - использует стандартную.
Для более специфичных случаев можно использовать модуль component_data. Например, для подозрительного рагу, у которого эффекты хранятся в компоненте:
{
"items": "minecraft:suspicious_stew",
"modelPrefix": "item/suspicious_stew_cit/",
"assetGen": "item_model/generated",
"type": "component_data",
"parameters": {
"componentType": "suspicious_stew_effects",
"nbtPath": "[0].id"
}
}
Бывает, что вариант нужно вытащить из названия предмета. Например, у тебя есть алмазные мечи с разными именами вроде "Steel Sword" или "steev18's great Steel Sword of doom". Через регулярки можно вычленить нужную часть:
{
"items": "diamond_sword",
"modelPrefix": "item/named_swords/",
"assetGen": "item_model/handheld",
"type": "component_data",
"parameters": {
"componentType": "custom_name",
"transform": [
{
"function": "regex",
"regex": "(?i)(.*'s )?(Great |Grand )?(?<var>.*(sword|dagger))( of doom)?",
"substitution": "$var"
},
{
"function": "sanitize"
}
]
}
}
А если нужно собрать вариант из нескольких параметров? Например, для тримованных алмазных мечей - узор и материал:
{
"items": "minecraft:diamond_sword",
"modelPrefix": "item/trimmed_diamond_sword/",
"assetGen": "item_model/handheld",
"type": "component_format",
"parameters": {
"format": "${pattern}_${material}",
"variables": {
"pattern": {
"componentType": "trim",
"nbtPath": ".pattern"
},
"material": {
"componentType": "trim",
"nbtPath": ".material",
"transform": "discard_namespace"
}
}
}
}
Если у тебя всего пара уникальных предметов, которые не вписываются ни в какую систему, можно использовать старый добрый подход с предикатами - почти как в Optifine-CIT:
{
"items": "trident",
"modelPrefix": "item/godly_tridents/",
"assetGen": "item_model/trident",
"type": "predicates",
"parameters": {
"predicates": [
{
"variantId": "zeus_smite",
"precondition": {
"enchantments.channeling": { "greater_or_equals": 1 }
}
},
{
"variantId": "jupiter_syphon",
"precondition": {
"enchantments.riptide": { "greater_or_equals": 1 }
}
}
]
}
}
Если ты делаешь ресурспак для Майнкрафт с парой десятков текстур - Variants-CIT тебе вряд ли пригодится. Но когда речь идёт о масштабных проектах вроде тотальных конверсий или сборок с сотнями модов, где каждый предмет должен выглядеть уникально - этот мод реально спасает. Он уменьшает количество дублирующегося кода, упрощает поддержку и не тормозит игру при загрузке.
Скачать Variants-CIT стоит хотя бы ради того, чтобы попробовать новый подход к организации текстур. Особенно если ты уже сталкивался с тормозами Optifine-CIT на больших коллекциях. Мод работает на Fabric и совместим с Minecraft 1.20-1.21. Для работы потребуется Fabric API.
В целом, Variants-CIT - это инструмент для тех, кто хочет делать красиво и без лагов. Если тебе надоело копипастить условия для каждой мелочи - попробуй этот формат.

Мод Variants-CIT для Майнкрафт - альтернативный формат CIT, созданный для больших коллекций вариантов с повторяющимися паттернами. Он упрощает создание ресурспаков с сотнями вариаций предметов, экономя время и ресурсы.