Создание модов для Minecraft 1.21.8 на Fabric

Практический курс по разработке модов для Minecraft Java Edition 1.21.8 с использованием Fabric. Вы пройдете путь от настройки окружения в Arch Linux до изменения игровых механик с помощью Mixin.

1. Настройка среды разработки Fabric в Arch Linux

Настройка рабочего окружения для моддинга

Создание модификаций для Minecraft — это процесс, который требует правильного фундамента. Прежде чем писать код, добавляющий в игру новые механики или предметы, необходимо подготовить рабочее место. Этот процесс называется настройкой среды разработки. Поскольку вашей операционной системой является Arch Linux с оконным менеджером Hyprland, мы будем использовать инструменты и команды, идеально подходящие для этой минималистичной и мощной системы.

Среда разработки состоит из нескольких ключевых компонентов, которые работают вместе: компилятора языка программирования, текстового редактора с умными подсказками и системы автоматической сборки. Понимание того, как эти элементы взаимодействуют, — первый шаг к созданию сложных и уникальных модов.

Установка фундамента: Java Development Kit

Minecraft Java Edition написан на языке программирования Java. Чтобы игра понимала ваш код, его нужно перевести из понятного человеку текста в машинные инструкции. Для этого используется Java Development Kit (JDK) — набор инструментов для разработки на языке Java.

> JDK можно сравнить с набором профессиональных инструментов плотника. Вы не сможете построить деревянный дом (написать мод), имея только чертежи (идеи). Вам нужны пилы, молотки и измерительные приборы, которые и предоставляет JDK.

Каждая версия Minecraft требует определенной версии Java. Для версии 1.21.8 необходим JDK 21. В Arch Linux установка программ происходит через пакетный менеджер pacman. Откройте ваш любимый эмулятор терминала в Hyprland (например, Kitty или Alacritty) и выполните следующую команду:

Поскольку в Arch Linux часто бывает установлено несколько версий Java одновременно, важно указать системе, какую из них использовать по умолчанию. Для этого существует специальная утилита archlinux-java. Установите двадцать первую версию как основную:

Проверить успешность установки можно командой java -version. Если терминал выдаст информацию о двадцать первой версии, фундамент заложен успешно.

Выбор и установка IDE

Писать код можно в любом текстовом редакторе, даже в базовом Nano или Vim. Однако для новичка это будет похоже на попытку собрать сложный механизм вслепую. Профессионалы используют Интегрированную среду разработки (IDE) — мощную программу, которая объединяет в себе редактор кода, систему поиска ошибок, автодополнение и инструменты для запуска проекта.

Для моддинга Minecraft существует два основных варианта:

| Характеристика | IntelliJ IDEA Community | Visual Studio Code | | :--- | :--- | :--- | | Специализация | Создана специально для Java | Универсальный редактор для любых языков | | Настройка | Работает «из коробки» | Требует установки множества плагинов | | Популярность в моддинге | Абсолютный стандарт, 95% туториалов написаны для неё | Используется реже, требует ручной конфигурации | | Потребление ресурсов | Высокое (требует много оперативной памяти) | Среднее |

Учитывая, что вы начинаете с нуля, IntelliJ IDEA станет лучшим выбором. Она возьмет на себя множество рутинных задач и подскажет, если вы допустите синтаксическую ошибку. Установим бесплатную версию Community Edition из официальных репозиториев Arch Linux:

После запуска IntelliJ IDEA рекомендуется установить плагин Minecraft Development. Он добавляет специфичные для Fabric подсказки и шаблоны. Для этого перейдите в настройки IDE (вкладка Plugins), найдите Minecraft Development в поиске и нажмите Install.

Система сборки Gradle

Третий важнейший компонент — это Gradle. Это система автоматической сборки проектов.

Когда вы пишете мод, ваш проект состоит из десятков файлов: исходного кода, текстур, моделей, файлов локализации. Gradle берет все эти разрозненные элементы, компилирует код, проверяет зависимости (например, сам загрузчик Fabric API) и упаковывает всё в один готовый файл с расширением .jar. Именно этот файл игроки будут помещать в папку mods.

Вам не нужно устанавливать Gradle отдельно. В каждом правильном проекте Fabric есть скрипт-обертка gradlew (Gradle Wrapper), который сам скачает нужную версию системы сборки при первом запуске.

!Архитектура проекта Fabric

Создание структуры проекта

Чтобы не писать конфигурационные файлы с нуля, разработчики Fabric предоставляют готовый шаблон. Самый простой способ начать — клонировать официальный шаблон с GitHub или скачать его архивом.

Откройте терминал и создайте папку для вашего будущего мода:

Теперь откройте эту папку в IntelliJ IDEA. При первом открытии IDE обнаружит файл build.gradle и начнет автоматическую настройку проекта. Этот процесс может занять несколько минут, так как Gradle будет скачивать исходный код Minecraft и необходимые библиотеки.

Анатомия мода

Понимание структуры папок — критически важный навык. Если вы положите файл не в ту директорию, игра просто его не увидит. Давайте разберем, из чего состоит ваш проект.

В левой панели IntelliJ IDEA вы увидите дерево проекта. Основная работа будет происходить в директории src/main/.

  • src/main/java/ — здесь хранится весь ваш программный код. Код организован по пакетам (папкам), которые обычно называются в формате обратного домена, например com.ваше_имя.название_мода.
  • src/main/resources/ — папка для всех не-программных файлов. Сюда вы будете помещать текстуры предметов, 3D-модели блоков, переводы на разные языки и рецепты крафта.
  • Внутри папки resources находится самый важный конфигурационный файл — fabric.mod.json. Это паспорт вашего мода. Игра читает этот файл, чтобы узнать, как называется мод, кто его автор и какой код нужно запустить при старте.

    Пример содержимого fabric.mod.json:

    Обратите особое внимание на поле id. Это уникальный идентификатор вашего мода (modid). Он должен состоять только из строчных английских букв, цифр и знаков подчеркивания. Никаких пробелов или заглавных букв. Этот идентификатор будет использоваться везде: при регистрации новых предметов, в названиях папок с текстурами и в коде.

    Поле entrypoints указывает загрузчику Fabric, где находится главный класс вашего мода — точка входа, с которой начинается выполнение вашей программы.

    Декомпиляция исходного кода игры

    Чтобы изменять игровые механики, нужно понимать, как они работают в оригинале. Для этого необходимо получить доступ к исходному коду Minecraft.

    В IntelliJ IDEA откройте панель Gradle (обычно находится у правого края экрана), раскройте список задач: Tasks -> fabric и дважды кликните по задаче genSources.

    Альтернативный способ для Arch Linux — выполнить команду прямо в терминале, находясь в папке проекта:

    Эта команда заставит Gradle скачать игру, деобфусцировать её (превратить нечитаемый машинный код обратно в понятный Java-код) и прикрепить к вашему проекту. После завершения этого процесса вы сможете нажать дважды клавишу Shift в IDE, ввести название любого игрового предмета (например, DiamondSwordItem) и изучить, как разработчики из Mojang написали его логику. Это бесценный инструмент для обучения.

    Первый запуск

    Теперь, когда среда настроена, пора проверить, всё ли работает. Мы запустим игру прямо из редактора кода, вместе с нашим пока ещё пустым шаблонным модом.

    В верхней панели IntelliJ IDEA найдите выпадающий список конфигураций запуска (рядом с зеленой кнопкой Play). Выберите конфигурацию Minecraft Client и нажмите на зеленый треугольник.

    Если конфигурации нет, вы можете запустить игру через терминал:

    Gradle скомпилирует ваш код, соберет временную версию мода и запустит Minecraft. В левом нижнем углу главного меню игры вы должны увидеть надпись, подтверждающую, что игра модифицирована с помощью Fabric.

    Настройка рабочего окружения — это разовая задача. Теперь у вас есть мощная лаборатория, в которой исходный код превращается в игровые механики. Вы подготовили холст и краски, и теперь всё готово к тому, чтобы написать первую строчку кода и добавить в игру свой собственный предмет.

    2. Структура проекта и инициализация мода

    Структура проекта и инициализация мода

    Ваше рабочее окружение в Arch Linux настроено, а IntelliJ IDEA готова к работе. Вы уже клонировали базовый шаблон проекта, и теперь перед вами стоит задача превратить эту пустую заготовку в ваш первый мод — Super Cheats. Поскольку вы начинаете с нуля, мы не будем просто копировать код. Мы разберем каждый файл и каждую строчку, чтобы вы понимали, как именно Minecraft взаимодействует с вашей модификацией.

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

    Анатомия проекта Fabric

    Если вы откроете панель проекта в левой части IntelliJ IDEA, вы увидите множество папок. Большинство из них созданы системой сборки Gradle для внутренних нужд, и вам не придется их трогать. Ваше основное рабочее пространство находится по пути src/main/.

    Эта директория строго разделена на две части:

  • java/ — здесь живут исходные тексты ваших программ. Это логика мода: как предметы работают, какой урон наносят, как взаимодействуют с миром.
  • resources/ — здесь хранятся ресурсы (ассеты) и конфигурации. Это текстуры, 3D-модели, переводы на разные языки и главный паспорт мода.
  • Пакеты: адреса для вашего кода

    Внутри папки java/ код не лежит просто так. Он организован в пакеты (packages). Пакет — это просто папка, но в Java принято называть их по определенному правилу: в формате обратного доменного имени.

    > Если у вас есть сайт supercheats.com, ваш пакет будет называться com.supercheats.mod. Если сайта нет, обычно используют имя автора: com.ваше_имя.название_мода.

    Зачем это нужно? Представьте, что вы назвали свой класс Sword. Другой разработчик тоже назвал свой класс Sword. Если игрок установит оба мода, игра запутается, какой именно меч загружать. Пакеты создают уникальный «адрес» для вашего кода, исключая конфликты.

    Создайте в папке src/main/java/ структуру пакетов: com.guru.supercheats.

    Паспорт мода: fabric.mod.json

    Прежде чем писать логику, нужно официально представить ваш мод загрузчику Fabric. Для этого используется конфигурационный файл fabric.mod.json, который находится в папке src/main/resources/.

    Когда игрок запускает Minecraft, загрузчик Fabric сканирует папку mods, находит ваш архив и первым делом читает именно этот файл. Если в нем ошибка — мод просто не загрузится.

    Откройте fabric.mod.json и приведите его к следующему виду:

    Разберем критически важные поля:

  • id — уникальный идентификатор мода. Это самое важное поле. Оно должно содержать только строчные английские буквы и подчеркивания. Никаких пробелов. Этот ID будет использоваться везде: от регистрации предметов до названия папок с текстурами.
  • environment — указывает, где должен работать мод. Значение * означает, что мод нужен и на клиенте (у игрока), и на сервере. Если бы вы делали мод только на интерфейс (например, мини-карту), здесь было бы написано client.
  • depends — список зависимостей. Здесь мы говорим игре: «Мой мод будет работать только на Minecraft 1.21.8 и требует Java 21».
  • entrypoints — точки входа. Это навигатор для Fabric. Он говорит: «Когда будешь запускать игру, найди класс SuperCheatsMod по адресу com.guru.supercheats и выполни его».
  • !Схема инициализации мода Fabric

    Первая строчка кода: Главный класс

    Теперь, когда паспорт готов, пора создать тот самый класс, который мы указали в entrypoints.

    В IntelliJ IDEA нажмите правой кнопкой мыши по вашему пакету com.guru.supercheats, выберите New -> Java Class и назовите его SuperCheatsMod.

    Поскольку вы новичок в Java, мы напишем код, а затем подробно разберем каждое слово. Вставьте следующий код в созданный файл:

    Расшифровка синтаксиса Java

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

    package com.guru.supercheats; — эта строка всегда идет первой. Она подтверждает, в какой папке (адресе) находится этот файл.

    import ... — это подключение внешних инструментов. Ваш класс не знает, что такое Logger (инструмент для вывода текста в консоль) или ModInitializer. С помощью import мы берем эти инструменты из библиотек Fabric и Java.

    public class SuperCheatsMod — объявление класса. Класс — это чертеж или контейнер для вашего кода. Слово public означает, что этот класс доступен для других частей программы (в том числе для загрузчика Fabric).

    implements ModInitializer — это ключевой момент. В Java есть понятие интерфейса — это строгий контракт. Добавляя эту фразу, вы подписываете контракт с Fabric: «Я клянусь, что в моем классе будет метод onInitialize, который вы сможете запустить».

    public static final String MOD_ID = "super_cheats"; — мы создаем константу (неизменяемую переменную), в которой храним ID нашего мода. Слово String означает, что это текст. Мы будем использовать эту переменную десятки раз в будущем, когда начнем добавлять читерские предметы. Хранить ID в одном месте — правило хорошего тона, чтобы при опечатке не сломать весь мод.

    public static final Logger LOGGER = LoggerFactory.getLogger(MOD_ID); — мы создаем логгер. Это специальный рупор, через который наш мод будет общаться с нами в терминале Hyprland или в консоли IDE.

    @Override — специальная метка (аннотация). Она показывает, что мы не просто придумали метод ниже, а выполняем тот самый контракт из ModInitializer.

    public void onInitialize() — это метод (функция). Метод — это блок действий. Именно сюда мы будем вписывать команды для регистрации наших супер-мечей и бесконечной еды. Пока что здесь только одна команда: вывести текст в консоль.

    Проверка работоспособности

    Вы написали свой первый код. Теперь нужно проверить, правильно ли Fabric читает ваш fabric.mod.json и находит ли он ваш класс.

    В верхней панели IntelliJ IDEA нажмите зеленую кнопку запуска (Play) рядом с конфигурацией Minecraft Client.

    Начнется процесс компиляции. Gradle переведет ваш понятный текст в машинный байт-код. Когда откроется окно Minecraft, не спешите нажимать «Одиночная игра». Сверните игру и посмотрите в нижнюю часть IntelliJ IDEA, где находится вкладка Run (Консоль).

    Среди сотен строк системной информации от самой игры вы должны увидеть вашу строчку:

    [main/INFO] [super_cheats/]: Инициализация Super Cheats: Готовьтесь к доминированию!

    Если вы видите это сообщение, поздравляю! Вы успешно связали конфигурацию мода с программным кодом. Загрузчик Fabric прочитал ваш паспорт, нашел точку входа и дернул рубильник onInitialize().

    Это фундаментальный шаг. Вы создали надежный каркас. Вся дальнейшая магия — создание предметов с уроном в 1000 единиц, брони, дающей полет, или блоков, генерирующих алмазы — будет начинаться именно в этом методе onInitialize(). Вы подготовили плацдарм для внедрения своих правил в мир Minecraft.