Перейти к содержимому

Dynamic Patcher

Динамически компилирует и загружает патчи Mixin из исходного кода во время выполнения.

Fabric
Загрузчики
Fabric
Скачиваний на Modrinth
93
Подписчиков на Modrinth
1
версия
1
Обновлён
24 июля 202624 июл.
Опубликован
в 2026

Коротко о моде

Работает на Fabric
Для Minecraft 26.1–26.3
Работает и в игре, и на сервере — ставьте, где нужен
Последняя версия — 1.0.0-beta.1 от 24 июля 2026
Лицензия CC0-1.0 — бесплатно
Где нужен
В игренеобязателенНа серверенеобязателен

Работает и в игре, и на сервере — ставьте, где нужен

Версии игры26.1–26.3
Описание переведено автоматическиПоказать оригинал (EN)

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:

  1. Конфигурация и обнаружение: Читает config.json и сканирует config/dynpatcher/patches/ в поисках файлов .java, отфильтровывая отключённые патчи.
  2. Разрешение кэша: Проверяет кэшированные файлы .class по index.json, используя временные метки и хэши содержимого SHA-256.
  3. Предобработка: Читает устаревшие или некэшированные исходники, применяя синтаксические корректировки (внедрение пакета по умолчанию и удаление модификатора public) в памяти.
  4. Компиляция во время выполнения: Компилирует исходные объекты в памяти с помощью Eclipse Compiler for Java (ECJ).
  5. Инспекция байт-кода и патчинг: Использует ASM для проверки скомпилированных классов на наличие аннотаций net.fabricmc.api.Environment (отфильтровывая Mixin, несовместимые с текущим окружением) и добавляет remap = false к аннотациям Mixin, в которых не указаны предпочтения по ремаппингу.
  6. Регистрация Mixin: Динамически генерирует JSON-конфигурации Mixin для каждого пакета и регистрирует их через Mixins.addConfiguration.

Частые вопросы

Как установить Dynamic Patcher?

Установите Fabric под свою версию Minecraft, скачайте Dynamic Patcher под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть Dynamic Patcher?

У Dynamic Patcher есть сборки для Minecraft 26.1–26.3.

Нужен ли Dynamic Patcher на сервере?

Работает и в игре, и на сервере — ставьте, где нужен

Лицензия и источник
Creative Commons Zero v1.0 Universalможно свободно использовать и распространять с указанием автора
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее