
Fabric-loom: Создание Модов Minecraft Без Настройки
FabricMC/fabric-loom
Плагин системы сборки Gradle для автоматизации настройки окружения разработки модов Minecraft.
Просмотреть на GitHub ↗Раньше создание модов Minecraft означало часы настройки: декомпиляцию кода, сопоставление переменных, настройку IDE. Fabric-loom автоматизирует почти всё, чтобы вы могли начать кодирование за минуты, а не дни.
Что делает fabric-loom
Fabric-loom - плагин Gradle, предназначенный для превращения вашего компьютера в полностью функциональную среду разработки модов Minecraft. Но фактически он обрабатывает все мудроручные задачи, стоящих между вами и написанием реального кода.
При запуске Minecraft код обфускается (намеренно перемешан), чтобы его было сложно читать. Хотите изменить его? Сначала необходимо деобфусцировать. Затем нужны сопоставления, переводящие перемешанные имена в понятные для человека. Затем необходимо настроить IDE (IntelliJ, Eclipse, VS Code), чтобы она действительно распознавала всё. Fabric-loom делает всё три задания на фоне, пока вы грабите кофе.
Он построен специально для экосистемы Fabric, которая использует сопоставления Yarn (сопоставления, вносящиеся сообществом, человечески читаемые имена для кода Minecraft). Плагин автоматически интегрирует эти сопоставления, настраивает перемаппинг и генерирует правильные конфигурации запуска, чтобы вы могли сразу же войти в режим отладки. Поддерживает современные версии Minecraft (1.14.4 и выше), требует Java 16 или новее, и работает с Gradle 7 и выше.
Почему моддеры используют его вместо ручной настройки
До fabric-loom настройка окружения разработки модов была многочасовой мучной работой. Вам нужно было скачать серверный jar Minecraft, декомпилировать его с помощью инструментов, таких как Fernflower или CFR, вручную патчить сопоставления, настраивать IDE, устанавливать задачи запуска и надеяться, что ничего не сломается в процессе. Полутора раз что-то было неправильно настроено, и вы тратили ещё час на отладку, почему ваш мод не запускается.
Fabric-loom полностью устраняет это. Всё обрабатывается автоматически и последовательно.
Другая огромная выгода: при обновлении Minecraft вы не начинаете с нуля. Этот плагин обрабатывает перемаппинг и повторную декомпиляцию для новых версий. Yarn (проект сопоставлений) регулярно обновляется, и fabric-loom включает эти улучшения без каких-либо ручных изменений с вашей стороны.
Кроме того, интеграция IDE действительно полезна. Вы получаете правильные конфигурации запуска, отладочные точки работают сразу, и IntelliJ действительно понимает код Minecraft. Если вы когда-либо пытались читать обфусцированный Java, вы знаете, какой это облегчение.
Начало работы: Установка и Настройка
На самом деле, давайте вернёмся назад. Самый простой способ начать работать с fabric-loom - это склонировать официальный пример мода, а не строить loom с нуля. Один пример мода уже имеет всё правильно настроено.
git clone https://github.com/FabricMC/fabric-example-mod.git
cd fabric-example-modЭто всё для базовой настройки. Файл build.gradle примера мода уже настроен с fabric-loom.
Если вы добавляете loom в существующий проект, вы добавите его в build.gradle:
plugins {
id 'fabric-loom' version '1.16'
}
repositories {
mavenCentral()
maven { url 'https://maven.fabricmc.net' }
}
dependencies {
minecraft 'com.mojang:minecraft:1.21.1'
mappings loom.officialMojangMappings()
modImplementation 'net.fabricmc:fabric-loader:0.19.0+'
}Затем запустите `gradle build`, и loom займётся остальным. Он скачает Minecraft, деобфусцирует его, применит сопоставления и настроит вашу IDE автоматически.
Ключевые Функции, Которые Уберяют Часы
Автоматическая декомпиляция и перемаппинг. Серьёзно, это главная функция. Ваш исходный код превращается из непонятных обфусцированных имён в фактически английские имена переменных, поскольку сопоставления Yarn поддерживаются сообществом. Когда вы видите метод `method_12847`, Yarn, вероятно, сопоставил его с чем-то осмысленным, например, `canFly()`. Fabric-loom применяет эти сопоставления прозрачно.
Конфигурации запуска IDE. После запуска gradle ваша IDE знает, как запустить Minecraft в режиме разработки. Вы можете нажать кнопку отладки и пройти по точкам останова в коде Minecraft. Но это большая проблема для понимания того, что действительно происходит, когда запускается ваш мод.
Поддержка декомпиляторов. Fabric-loom использует декомпиляторы Fernflower и CFR для генерации фактического исходного кода с комментариями, а не просто байт-кода. Разница в читаемости огромна. Вы читаете код, который выглядит как написанный человеком, а не машиной.
Поддержка tiny mappings. Плагин был построен с нуля для использования сопоставлений Yarn (маленький формат). Но это значит, что вы получаете поддерживаемые сообществом, человечески читаемые имена для всего в Minecraft. Это не идеально, но это намного лучше, чем работа с обфусцированным кодом.
Мульти-IDE поддержка. Будь то IntelliJ IDEA, Eclipse или VS Code, fabric-loom генерирует правильные файлы конфигурации. Вам не нужно手опительно подключать пути к исходникам или директории вывода.
Советы и Общие Проблемы
Сначала: убедитесь, что у вас Java 16 или новее. Я видел, как люди пытаются использовать более старые JDK и получают загадочные ошибки, которые не имеют отношения к реальной проблеме.
Второе: версия gradle важна. Плагин ориентирован на Gradle 7 или новее. Если ваш сборщик разбивается загадочно, проверьте `gradle -version` сначала. То же самое с обёрткой Gradle - иногда кэшированная обёртка устарела.
Декомпиляция и перемаппинг могут занять несколько минут при первом сборке, особенно на более медленных машинах. Не паникуйте, если gradle кажется зависшим. Грабите кофе. При последующих сборках это закэшировано, поэтому вы будете ждать только фактическую компиляцию.
Одна вещь, которая сбивает с толку людей: смешивание сопоставлений Yarn с другими источниками сопоставлений. Выберите одно и придерживайтесь его. Если вы используете Yarn (как большинство проектов Fabric), просто используйте `loom.officialMojangMappings()` и продолжайте.
Для развертывания помните, что ваш jar мода должен включать fabric-loader как требование. Вы не упаковываете сам Minecraft - только ваш код мода плюс загрузчик, который подключается к Minecraft во время выполнения.
Тестирование Ваших Модов и Широкая Экосистема
Как только ваш мод действительно компилируется и запускается, тестирование становится важным. Если вы строите моды, взаимодействующие с функциями сервера (системы голосования, команды и т.д.), инструменты, такие как Тестер Minecraft Votifier, полезны для проверки, что эта часть экосистемы работает. Аналогично, если ваш мод генерирует текст или команды, Генератор текста Minecraft полезен для быстрой прототипизации синтаксиса команд или сообщений в игре, которые вы хотите протестировать.
Более широкая точка зрения: fabric-loom быстро приводит вас к рабочей среде разработки, но вы потратите большинство своего времени на фактическое построение функций, а не настройку. Это вся идея.
Когда Вы Можете Хотеть Альтернативы
Fabric-loom специально построен для модов Fabric. Если вы строите моды Forge, плагин Gradle Forge является стандартом и работает достаточно по-другому, чтобы вам нужны были их документы вместо этого.
Если вы работаете над чистыми плагинами сервера (Spigot, Paper, Bukkit), вам не нужен loom вовсе. Они используют разные архитектуры и настройки сборки.
И если вы работаете над запуском Minecraft или совершенно отдельными инструментами, fabric-loom не поможет. Он предназначен специально для разработки модов в экосистеме Fabric.
Но если вы строите мод Fabric? Нет реальной альтернативы, которая делает то, что делает loom. Это стандарт по хорошей причине. Проект имеет 337 звёзд GitHub и активное обслуживание. Но последний релиз (1.16) добавил более строгую валидацию плагинов и лучшую поддержку кэша сборки, показывая, что поддерживающие продолжают активно улучшать вещи.
Lead writer at minecraft.how. Long-time Minecraft player running a small SMP server, testing every build, mod, and seed before writing about it.
Комментарии
Пока нет комментариев. Станьте первым, кто поделится своим мнением!


