Variants-CIT
Альтернативный формат CIT для больших коллекций вариантов с повторяющимися шаблонами.
- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 1,9 млн
- Подписчиков на Modrinth
- 361
- версия
- 191
- Обновлён
- 13 октября 202613 окт.
- Опубликован
- в 2024
Коротко о моде
Ставится только в игру; на сервер ставить не нужно
Variants-CIT
Альтернативный формат CIT, созданный для обработки большого количества вариантов.
Этот мод отлично подходит для случаев, когда у одного предмета много вариантов, основанных на одних и тех же данных. Он обеспечивает лучшую производительность при огромном количестве CIT, а также использует менее избыточный формат ресурсов, требующий всего одного короткого файла для настройки всех возможных вариантов предмета сразу.
Назначать модели по отдельности (как это делает Optifine-CIT) по-прежнему можно, но такой подход не может похвастаться той же производительностью.
Формат ресурспака
Это краткая демонстрация. Полное руководство смотри в The Wiki.
Формат строится на том, что варианты предметов автоматически связываются с моделями или текстурами по совпадающим именам. Вместо того чтобы задавать отдельные условия для каждого варианта, ты задаёшь одно правило, управляющее всеми вариантами в коллекции (так называемые модули). Этот модуль определяет, на какой предмет он влияет, как вычислить его варианты и где находятся модели вариантов.
Полностью автоматическая связь вариантов с моделями
Вот простой модуль, который меняет текстуру зачарованных книг:
{
"items": "enchanted_book", // Тип(ы) затронутых предметов
"modelPrefix": "book_cit/", // Папка с возможными моделями/текстурами.
"assetGen": "item_model/generated", // Автогенерация моделей из текстур (если их нет)
"type": "stored_entchantment", // Как вычислить "ID варианта" предмета
"parameters": { // Дополнительные параметры, специфичные для типа модуля
"levelSeparator": "_lvl_" // Включать уровень зачарования в ID варианта
}
}Здесь книга с зачарованием minecraft:unbreaking уровня 2 получит ID варианта minecraft:unbreaking_lvl_2 и, соответственно, будет использовать текстуру, хранящуюся по пути /assets/minecraft/textures/item/book_cit/unbreaking_lvl_2.png. Этот единственный модуль будет работать для любого возможного зачарования, ванильного или модового, при условии, что существует соответствующая текстура.
Автоматические варианты на основе пользовательских данных
У модуля выше есть специально созданный тип для зачарованных книг. Если для конкретного случая типа не существует, всё равно можно использовать более универсальные модули, чтобы получить вариант из любого компонента:
{
"items": "minecraft:suspicious_stew",
"modelPrefix": "item/suspicious_stew_cit/",
"assetGen": "item_model/generated",
"type": "component_data",
"parameters": {
"componentType": "suspicious_stew_effects", // Компонент, содержащий ID варианта
"nbtPath": "[0].id" // Расположение ID варианта в компоненте.
}
}Обработка данных, которые нельзя использовать как есть:
{
"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"
// (Например: "steev18's great Steel Sword" => "Steel Sword")
}
{
// Превращает любой текст в допустимый идентификатор
"function": "sanitize"
// (Например: "Steel Sword" => "minecraft:steel_sword")
}
]
}
}Объединение нескольких фрагментов данных из разных источников:
{
"items": "minecraft:diamond_sword",
"modelPrefix": "item/trimmed_diamond_sword/",
"assetGen": "item_model/handheld",
"type": "component_format",
"parameters":
{
// Как объединить различные фрагменты данных в ID варианта
// (Например: sentry_diamond)
"format": "${pattern}_${material}",
// Где найти эти фрагменты данных.
"variables": {
"pattern": {
"componentType": "trim",
"nbtPath": ".pattern"
},
"material": {
"componentType": "trim",
"nbtPath": ".material",
"transform": "discard_namespace"
}
}
}
}
### Варианты для отдельных случаев
Для систем, которые не следуют никаким правилам (или если у вас слишком мало вариантов, чтобы заморачиваться с автоматизмом), можно использовать формат, более близкий к парадигмам Optifine-CIT:
```jsonc
{
"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 }
}
}
// etc
]
}
}Частые вопросы
Как установить Variants-CIT?
Установите Fabric под свою версию Minecraft, скачайте Variants-CIT под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Variants-CIT?
У Variants-CIT есть сборки для Minecraft 1.21–26.3.
Нужен ли Variants-CIT на сервере?
Ставится только в игру; на сервер ставить не нужно