- Загрузчики
- Fabric
- Скачиваний на Modrinth
- 93
- Подписчиков на Modrinth
- 1
- версия
- 1
- Обновлён
- 24 июля 202624 июл.
- Опубликован
- в 2026
Коротко о моде
Работает и в игре, и на сервере — ставьте, где нужен
DynPatcher
Динамически компилирует и загружает патчи Mixin из исходного кода во время выполнения.
Руководство пользователя
Обзор
DynPatcher позволяет добавлять или изменять Fabric Mixin без перекомпиляции JAR-файла мода. Исходные файлы .java, помещённые в директорию патчей, компилируются при запуске с помощью встроенного компилятора Java и регистрируются в Mixin.
Структура файлов
При запуске игры с установленным DynPatcher в папке .minecraft/config/dynpatcher/ создаётся следующая структура директорий:
patches/: Поместите сюда исходные файлы Mixin.java. Для организации файлов можно использовать поддиректории.config.json: Файл конфигурации мода..cache/: Внутренняя директория, содержащая скомпилированный байт-код и индекс кэша. Не изменяйте вручную.
Отключение патчей
Чтобы отключить определённые патчи без удаления исходных файлов, перечислите их относительные пути в disabledPatches в config.json:
{
"disabledPatches": [
"example/MyMixin.java"
]
}Пути указываются относительно директории config/dynpatcher/patches/.
Обработка исходных файлов
- Переименованные файлы: Если файл
.javaпереименован так, что его имя больше не совпадает с объявлениемpublic class, DynPatcher удаляет модификаторpublicв памяти во время компиляции, чтобы избежать ошибок компилятора. - Пакет по умолчанию: Если в файле
.javaотсутствует объявлениеpackage, DynPatcher автоматически переназначает его наdynpatcher.generatedв памяти, чтобы Mixin мог его загрузить. - Фильтрация по окружению: Классы Mixin могут быть аннотированы
net.fabricmc.api.Environment(@Environment(EnvType.CLIENT)или@Environment(EnvType.SERVER)). Mixin без аннотаций загружаются во всех окружениях, а аннотированные Mixin загружаются только в соответствующем целевом окружении (CLIENTилиSERVER).
Кэширование
Скомпилированный байт-код кэшируется в config/dynpatcher/.cache/. Исходный файл перекомпилируется только при изменении его содержимого или временной метки, либо при изменении версии установленного мода.
Документация для разработчиков
Архитектура
DynPatcher выполняется на раннем этапе запуска как IMixinConfigPlugin:
- Конфигурация и обнаружение: Читает
config.jsonи сканируетconfig/dynpatcher/patches/в поисках файлов.java, отфильтровывая отключённые патчи. - Разрешение кэша: Проверяет кэшированные файлы
.classпоindex.json, используя временные метки и хэши содержимого SHA-256. - Предобработка: Читает устаревшие или некэшированные исходники, применяя синтаксические корректировки (внедрение пакета по умолчанию и удаление модификатора
public) в памяти. - Компиляция во время выполнения: Компилирует исходные объекты в памяти с помощью Eclipse Compiler for Java (ECJ).
- Инспекция байт-кода и патчинг: Использует ASM для проверки скомпилированных классов на наличие аннотаций
net.fabricmc.api.Environment(отфильтровывая Mixin, несовместимые с текущим окружением) и добавляетremap = falseк аннотациям Mixin, в которых не указаны предпочтения по ремаппингу. - Регистрация Mixin: Динамически генерирует JSON-конфигурации Mixin для каждого пакета и регистрирует их через
Mixins.addConfiguration.
Частые вопросы
Как установить Dynamic Patcher?
Установите Fabric под свою версию Minecraft, скачайте Dynamic Patcher под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.
Для каких версий Minecraft есть Dynamic Patcher?
У Dynamic Patcher есть сборки для Minecraft 26.1–26.3.
Нужен ли Dynamic Patcher на сервере?
Работает и в игре, и на сервере — ставьте, где нужен