Что такое Mixin? Моддинг байткода Minecraft (2026)

Mixin — это библиотека для внедрения байт-кода, которая позволяет модам для Minecraft изменять классы игры во время загрузки. Вот что она делает и зачем она нужна модам.

Frameworksby trqUpdated June 4, 2026
Key takeaways
  • Mixin — это Java-библиотека, которая изменяет скомпилированные классы Minecraft во время загрузки.
  • Моды описывают, куда внедрять код, а не как выглядит файл, поэтому патчи выживают после обновлений игры.
  • Fabric построен на Mixin и применяет миксины каждого мода во время загрузки классов.
  • Mixin никогда не устанавливается отдельно; загрузчик включает его в себя.

Mixin — это Java-библиотека, которая позволяет модам изменять скомпилированные классы Minecraft во время загрузки игры, не редактируя исходный код. Моды пишут небольшие классы, которые указывают: «добавить этот код в этой точке в этом игровом методе», и Mixin вставляет их в байткод во время выполнения. Fabric использует её в качестве основного механизма моддинга.

Где используется Opal

Opal — это Fabric мод, поэтому он использует Mixin в своей основе. Вам не нужно устанавливать Mixin самостоятельно; руководство по настройке охватывает запуск Opal и Fabric.

Как работает Mixin

Mixin изменяет классы после их компиляции, но до запуска JVM. Мод поставляется с классом Mixin, нацеленным на реальный класс игры. Аннотации в этом классе отмечают места, куда должен быть внедрен код: начало метода, конец, конкретный вызов метода или возвращаемое значение. Когда Minecraft загружает целевой класс, Mixin переписывает его байт-код, чтобы вставить код мода.

Это важно, потому что Minecraft не предназначен для расширения. В игре нет официальных точек расширения для большинства функций. Mixin предоставляет модам возможность, рассматривая сам скомпилированный игровой код как поверхность для расширения.

Почему моды используют его вместо редактирования игры

Две причины: совместимость и обновления.

Редактирование исходного кода игры напрямую означает отправку полной модифицированной копии, на которой никто другой не может строить и которая ломается в момент обновления игры. Mixin-патчи небольшие и точные, поэтому многие моды могут патчить одну и ту же игру, не отправляя каждый свою полную версию.

Патчи также описывают, куда внедрять, а не как выглядит файл, поэтому Mixin, написанный для одной версии, часто все еще работает после обновления игры, при условии, что целевой метод все еще существует.

Как это сочетается с Fabric

Fabric построен на Mixin. Загрузчик читает конфигурацию mixin каждого мода, а затем передает указанные классы mixin в Mixin для их применения во время загрузки классов. Типичный мод Fabric состоит в основном из собственных классов и небольшого количества mixin, которые перехватывают немногие методы игры, которые ему необходимо изменить.

Общие точки внедрения

АннотацияЧто делает
@InjectВыполняет ваш код в выбранной точке внутри целевого метода
@RedirectЗаменяет конкретный вызов метода внутри целевого
@ModifyArgИзменяет аргумент, передаваемый в вызов внутри целевого
@ModifyVariableПереписывает локальную переменную в середине метода
@OverwriteЗаменяет весь метод (крайняя мера; легко ломается)

@Inject является инструментом по умолчанию, поскольку он наименее инвазивен и наиболее вероятно выдержит обновление игры. @Overwrite избегают, потому что он конфликтует с любым другим модом, затрагивающим тот же метод.

Часто задаваемые вопросы