Модификаторы классов (Class Tweakers) 26.1.2
Изучите, что такое модификаторы классов и как их настроить.
WARNING
Эта страница написана для версии 26.1.2. Документация для более старых версий может быть неполной.
Модификаторы классов (ранее известные как расширители доступа, до расширения их возможностей) предоставляют инструменты трансформации, которые дополняют манипуляции с байт-кодом через Mixin. Они также позволяют сделать некоторые runtime-модификации (изменения в среде выполнения) доступными внутри среды разработки (IDE).
WARNING
Модификаторы классов не привязаны к конкретной версии Minecraft, однако они доступны только начиная с Fabric Loader 0.18.0 и Loom 1.12, и могут применяться исключительно к ванильным классам Minecraft.
Установка
Формат файла
По общему правилу файлы модификаторов классов называют по вашему modid — например, example-mod.classtweaker, чтобы плагины среды разработки (IDE) могли их распознать. Находиться такие файлы должны в папке resources.
Первой строкой файла обязательно должен идти следующий заголовок:
classtweaker
classTweaker v1 official1
Для некоторых функций может потребоваться версия выше v1 — это будет указано на соответствующих страницах.
Файлы модификаторов классов могут содержать пустые строки и комментарии, начинающиеся на #. Комментарии могут начинаться с конца строки.
Синтаксис может меняться в зависимости от используемой функции, но каждая модификация объявляется как отдельная "запись" (entry) с новой строки и начинается с "директивы" (directive), которая определяет тип применяемого изменения. Элементы записи можно разделять любыми пробельными символами, включая знаки табуляции.
Транзитивные записи
Чтобы сделанные вами изменения в декомпилированном исходном коде были видны модам, которые зависят от вашего, добавьте к директиве префикс transitive-:
classtweaker
# Transitive Access Widening directives
transitive-accessible
transitive-extendable
transitive-mutable
# Transitive Interface Injection directive
transitive-inject-interface
# Transitive Enum Extension directive
transitive-extend-enumУказание расположения файла
Файл модификатора класса должен быть указан в файлах build.gradle и fabric.mod.json. Помните, что для использования модификаторов классов ваш проект также должен зависеть от Fabric Loader версии 0.18.0 или выше.
Эти параметры по-прежнему называются в честь расширителей доступа (access wideners) для сохранения обратной совместимости.
build.gradle
gradle
loom {
accessWidenerPath = file("src/main/resources/example-mod.classtweaker")
}1
2
3
4
5
2
3
4
5
fabric.mod.json
json
...
"accessWidener": "example-mod.classtweaker",
...После указания расположения файла в build.gradle не забудьте перезагрузить Gradle-проект в IDE.
Проверка файла
По умолчанию модификатор классов будет игнорировать записи, ссылающиеся на целевые объекты модификации, которые не удалось найти. Чтобы проверить все классы, поля и методы, указанные в файле на правильность, запустите Gradle-задачу validateAccessWidener.
Ошибки укажут на неправильную запись, однако они могут не показать, какая именно часть записи содержит ошибку.




