InexactCIT
Добавляет сопоставление по регулярным выражениям в стиле CIT в ванильную систему условных моделей.
- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 436
- Подписчиков на Modrinth
- 1
- версий
- 5
- Обновлён
- 15 апреля 202615 апр.
- Опубликован
- в 2025
Коротко о моде
Ставится только в игру; на сервер ставить не нужно
Восстановление условных моделей предметов на основе шаблонов.
Назначение
Мод Custom Item Textures (CIT), изначально часть McPatcher, а затем Optifine, позволял заменять текстуры (и модели) предметов, метаданные которых совпадали с неточными шаблонами. Теперь у нас есть почти эквивалентная замена текстур предметов в стандартном Minecraft с помощью условных клиентских типов предметов, хотя неточное сопоставление больше невозможно. Этот мод добавляет замену CIT с регулярными выражениями в новую стандартную систему условных определений предметов.
Совместимость и зависимости
- Minecraft: 1.21.8
- Загрузчик: Fabric 0.136.1
Fabric API не требуется.
Установка
Добавьте JAR мода в папку mods Fabric.
Использование (игроки)
Этот мод добавляет функцию в определения моделей предметов, которой могут воспользоваться создатели ресурспаков. Она всегда активна, когда мод установлен.
Интеграция с ресурспаками (авторы паков)
JSON-файлы в assets/minecraft/item — это определения предметов. Это не обязательно файл модели, используемый для отрисовки предмета (то есть модель предмета), которые находятся в assets/minecraft/models/item.
В файле определения предмета JSON-объект в поле "model" определяет, какой файл модели используется для отрисовки предмета. Обычно один тип предмета всегда отрисовывается одной и той же моделью, поэтому у этого объекта "type" установлен в minecraft:model. Но для одного и того же предмета можно использовать разные модели в разных контекстах, применяя объекты "model" с другими типами, например minecraft:condition и minecraft:select.
Этот мод добавляет тип модели определения предмета inexactcit:match. Он похож на встроенный тип select тем, что содержит список моделей со связанными условиями, и когда одно условие совпадает, для отрисовки предмета используется связанная с ним модель. В отличие от Select, условия Match — это потенциально неточные регулярные выражения.
Модели определения предмета Match используют те же поля, что и Select, в частности "property", "component", "cases" и "fallback".
Структура полей с метками
{ "model": { "type": "inexactcit:match" , "property": ... # Вероятно, всегда minecraft:component , "component": ... # Имя компонента, к которому обращаемся , "cases": [ { "regex": ... # Регулярное выражение для этого случая , "model": { ... } # Модель опр. предмета, используемая при совпадении regexp } , ... # Ещё один случай, как выше , ... # Любое количество дополнительных случаев ] , "fallback": { ... } # Модель опр. предмета, используемая, когда ни один случай не совпал } }
Обязательные поля
Сопоставление по регулярным выражениям предназначено для текстовых метаданных, поэтому поле "property" будет minecraft:component. Поведение, когда "property" не minecraft:component, пока не проверено.
Поле "component" должно быть установлено в ID с пространством имён для компонента, который будет проверяться условием, например minecraft:lore, minecraft:custom_name.
Поле "cases" должно содержать список JSON-объектов. Каждый объект должен содержать поле "regex" и соответствующее поле "model". Это должны быть (в стиле Java) регулярное выражение и модель определения предмета соответственно. Когда регулярное выражение совпадает с содержимым компонента, указанного в поле "component", для этого предмета используется соответствующая модель.
Поле "fallback" задаёт модель, которая используется, когда ни один из объектов "case" не совпал, так же как в стандартном Select.
Пример
Ниже приведён пример определения предмета Match. Он заменяет все деревянные мотыги, в названиях которых есть слово "Quarterstaff", на модель по пути pixelatedvolume:item/quarterstaff.
{ "model": { "type": "inexactcit:match" , "property": "minecraft:component" , "component": "minecraft:custom_name" , "cases": [ { "model": { "model": "pixelatedvolume:item/quarterstaff" , "type": "minecraft:model" } , "regex": ".Quarterstaff." } ] , "fallback": { "model": "minecraft:item/wooden_hoe" , "type": "minecraft:model" } } , "oversized_in_gui": true }
Сравнение текста
Содержимое проверяемого поля сериализуется через toString. Возможности текстовых компонентов (JSON), форматирование кодами разделов и т. д. — всё это попадает в строку сравнения, поэтому невозможно определить, что может стоять до или после текста, видимого в игре, или что происходит между строками многострочных компонентов.
Ошибки регулярных выражений или моделей
Файл определения предмета с некорректным регулярным выражением не может быть прочитан, поэтому предмет будет отображаться с моделью по умолчанию (пурпурно-чёрный куб). Сбой (с указанием проблемного файла) записывается в лог как ошибка во время загрузки ресурспака.
Несколько целевых компонентов
Чтобы задать одному предмету несколько правил замены, использующих разные компоненты (например, один набор правил для lore и один для custom_name), установите модель по умолчанию на новую Match-модель предмета клиента, которая выбирает второй компонент.
Статус
Возможность сопоставления свойств, отличных от minecraft:component, будет добавлена в будущем. Сейчас такие сопоставления принимаются без ошибок, но не оказывают никакого эффекта.
Частые вопросы
Как установить InexactCIT?
Установите Fabric под свою версию Minecraft, скачайте InexactCIT под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть InexactCIT?
У InexactCIT есть сборки для Minecraft 1.21.8–1.21.11.
Нужен ли InexactCIT на сервере?
Ставится только в игру; на сервер ставить не нужно