
UniMixins
UniMixins - загрузчик Mixin для Minecraft 1.7.10 с максимальной совместимостью. Решает проблему несовместимости разных миксин-лоадеров, объединяя их фичи в одном.
UniMixins - это загрузчик Mixin для Minecraft 1.7.10 (с частичной поддержкой версий 1.8.9-1.12.2), созданный для максимальной совместимости. Он объединяет фичи как можно большего числа миксин-лоадеров, а его модульная структура позволяет использовать его вместе с другими лоадерами, если это нужно.
Зачем это вообще нужно?
На версии 1.7.10 существует куча разных загрузчиков Mixin. Каждый из них даёт свой набор дополнительных возможностей - так называемые "экстры", которые навешиваются поверх обычного Mixin. Проблема в том, что они монолитны: их нельзя использовать одновременно из-за пересечения функций. UniMixins решает эту проблему, предлагая каждую фичу как отдельный модуль (хотя для удобства есть и единый jar-файл).
Сравнение с другими лоадерами
Ниже - таблица возможностей известных миксин-лоадеров:
- [NOP]: ничего не делает (баг)
- [SEP]: доступен как отдельный мод
Установка
Просто скачай jar с суффиксом -all и кинь в папку mods. Удали все остальные конфликтующие загрузчики Mixin (сверься с таблицей выше).
Важно: jar-файл должен называться так, чтобы в алфавитном порядке быть первым - иначе может возникнуть проблема сортировки с модами, в которых уже вшит Mixin. Поэтому в начале названия стоит
+. Если возникают проблемы с переименованными jar-файлами, замени+на!.Для справки: порядок сортировки у некоторых символов:
!<+<0<a
Продвинутая установка
Можно собрать свою комбинацию модулей из отдельных jar-файлов. Некоторые модули зависят от других - смотри раздел "Список модулей".
Если других загрузчиков Mixin нет, обычно ставят:
- Mixin (любая одна версия разработчика)
- Compat и Mixingasm (опционально, но настоятельно рекомендую)
- Модули с нужными экстрами
Если каких-то зависимостей не хватает - игра упадёт. В конфиге это можно отключить.
Список модулей
Все модули зависят от модуля Mixin. При этом они не обязательно должны быть из UniMixins - можно использовать и другие моды.
Входят в полный jar
- Mixin (UniMix) - форк Mixin от разработчиков UniMixins, основанный на Fabric-версии.
- SpongeMixins (только 1.7.10) - эмуляция экстров SpongeMixins.
- MixinBooterLegacy (только 1.7.10) - эмуляция экстров MixinBooterLegacy с перемещённым MixinExtras.
- MixinExtras - сам MixinExtras.
- GasStation (только 1.7.10) - эмуляция экстров GasStation. Зависит от SpongeMixins, MixinBooterLegacy и MixinExtras.
- GTNHMixins (только 1.7.10) - эмуляция экстров GTNHMixins с перемещённым MixinExtras. Зависит от SpongeMixins.
- Compat - разные твики совместимости: перемаппинг неверных ссылок на классы Mixin, а также добавление информации о миксинах в краш-логи (только 1.7.10).
- Mixingasm - улучшает совместимость Mixin с ASM-трансформерами.
Опциональные
- Future Compat (только 1.8.9+) - делает модули доступными на версиях 1.8.9+. Нужен для работы на 1.8+. Для Mixingasm не требуется.
Совсем необязательные (только для тестов)
Можно использовать только один модуль Mixin за раз:
- Mixin (SpongePowered) - оригинальный форк Mixin.
- Mixin (Fabric) - Fabric-форк Mixin.
- Mixin (GasMix) - GasStation-форк Mixin.
- Mixin (GTNH) - GTNH-форк Mixin.
FAQ (или "Важно знать")
Почему ещё один загрузчик Mixin? Вы не видели тот xkcd-стрип?
До появления UniMixins в моде на 1.7.10 царила настоящая фрагментация: разные моды требовали разные несовместимые загрузчики. Причина - и конфликты между разработчиками, и технические ограничения (лоадеры были монолитными, а это автоматически вело к несовместимости). У UniMixins нет ни того, ни другого.
Почему вы используете Fabric-форк Mixin? Это же Forge-мод?
Fabric-форк Mixin развивается активнее оригинала и содержит дополнительные фиксы. Большинство его изменений не завязаны на Fabric.
Что вообще делают эти "экстры"?
- SpongeMixins, Grimoire, MixinBooterLegacy, GasStation и GTNHMixins позволяют вливаться в классы не-coremod-ов (по умолчанию Mixin это не поддерживает, потому что все его фазы проходят до того, как Forge найдёт не-coremod-ы и загрузит их в classpath).
- MixinBooterLegacy, GasStation и GTNHMixins добавляют "позднюю" фазу миксина, которая запускается прямо перед первой конструкцией мода (на этом этапе все моды уже найдены).
- SpongeMixins даёт возможность вручную добавлять моды в classpath по их имени - старый, хакерский способ.
- Для новых модов рекомендую GTNHMixins - самый активный и поддерживаемый вариант.
- Mixingasm чинит баг Mixin, из-за которого ломаются некоторые ASM-трансформеры (Mixin меняет способ их вызова).
- MixinExtras добавляет новые фичи Mixin, чтобы писать менее инвазивные миксины.
Mixin? mixin? SpongeMixins? SpongePowered? В чём разница?
- Mixin - Java-библиотека для гибкого преобразования классов.
- SpongePowered - организация, создавшая Mixin (они же разработали апи Sponge).
- mixin - специальный Java-класс, описывающий изменение, которое надо применить к другому классу. Эти изменения применяются через Mixin.
- SpongeMixins - загрузчик Mixin от TimeConqueror (название, конечно, неудачное).
Лицензия
UniMixins распространяется под лицензией Unlicense, за исключением некоторых модулей. Подробнее - в LICENSE.
