Бесплатно Forge 1.20.1

Лекция 1: Настройка проекта на Forge

Установка IntelliJ IDEA, JDK 17, Forge MDK и первый запуск мода

Привет! Сейчас настроим проект на Forge 47.4.10 в IntelliJ IDEA с нуля и запустим Minecraft с нашим модом.

1. Установка среды разработки

Скачайте и установите IntelliJ IDEA Community Edition (бесплатная). Выберите версию для своей ОС:

Скачать IntelliJ IDEA

Лично я использую версию 2023.1.7 (т.к. с годами привык к ней), выбирать версии можно через приложение Toolbox, от Jetbrains. Вы же можете выбрать версию какую хотите. Intelijj IDEA

2. Установка JDK

Для Forge 1.20.1 нужен JDK 17 (Java Development Kit). Рекомендую Adoptium:

Скачать JDK 17

3. Загрузка Forge MDK

На странице Forge нажмите именно Mdk, не Installer. MDK — это шаблон проекта для разработчиков:

Скачать Forge MDK 1.20.1

Страница скачивания Forge MDK — кнопка Mdk

4. Открытие проекта в IntelliJ IDEA

Распакуйте архив в удобную папку. Распакованный архив

Переименуйте папку в название вашего мода, в моём случае это будет "Rinova"

Откройте IntelliJ IDEA → File → Open
file open

→ выберите распакованную папку: Открытие проекта — File → Open

Если IDEA предложит установить плагины (для Gradle и т.д.), соглашайтесь и дождитесь завершения.

IDEA распознает проект как Gradle-проект. Справа должна появиться панель Gradle:

Панель Gradle в IDEA

Если панель не появилась: File → Settings → Build, Execution, Deployment → Build Tools → Gradle → выберите Use Gradle from: wrapper, затем Refresh.

5. Настройка проекта

5.1. Файл gradle.properties

Откройте gradle.properties в корне проекта:

Структура проекта — gradle.properties

Версии Minecraft и Forge уже прописаны в MDK. Прокрутите до раздела ## Mod Properties — там нужно заполнить данные о моде.

Дефолтные значения выглядят так:

mod_id=examplemod
mod_name=Example Mod
mod_license=All Rights Reserved
mod_version=1.0.0
mod_group_id=com.example.examplemod
mod_authors=YourNameHere, OtherNameHere
mod_description=Example mod description.

Заменяем на свои:

mod_id=rinova
mod_name=Rinova
mod_license=All Rights Reserved
mod_version=0.0.1
mod_group_id=com.ringo.rinova
mod_authors=Ringoway
mod_description=A cool demonstration mod that will have a little bit of everything.

Что значит каждый параметр:

  • mod_id — уникальный идентификатор мода. Только строчные латинские буквы, вместо пробелов _. Пример: rinova

  • mod_name — название мода, которое видно в списке модов Minecraft. Пример: Rinova

  • mod_version — версия мода. 0.0.1 для начальной разработки, 1.0.0 для первого релиза.

  • mod_group_id — путь к главному пакету мода. Должен совпадать со структурой папок в src/main/java/. Если написать com.ringo.rinova, то в проекте нужна структура com/ringo/rinova:

Структура папок com/ringo/rinova

ringo — мой никнейм, rinova — ID мода.

Что такое пакеты и зачем нужна такая структура — в лекции Основы Java.

  • mod_authors — авторы мода
  • mod_description — описание, видно в списке модов

5.2. Файл build.gradle

build.gradle — конфигурация сборки. На старте менять его не нужно, параметры подтягиваются из gradle.properties:

version = mod_version
group = mod_group_id

Зависимость на Forge тоже собирается из переменных:

minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"

Наведите на переменную с зажатым Ctrl и кликните — IDEA перекинет в gradle.properties.

Если хотите, чтобы в имени JAR-файла была версия игры (например, rinova-1.20.1-0.0.1.jar), замените строку version:

version = "${project.minecraft_version}-${project.mod_version}"

После всех изменений нажмите кнопку синхронизации Gradle. Это слоник справа сверху:

Кнопка Gradle Sync

Ошибки при старте проекта? Смотрите Исправление ошибок старта проекта.

5.3. Главный класс мода

Главный класс — точка входа мода. Находится в src/main/java/com/example/examplemod/ExampleMod.java.

Для начала:

  1. Переименуйте пакет com.example.examplemod в com.ringo.rinova (или ваш mod_group_id)
  2. Переименуйте класс ExampleMod в RinovaMod (или название вашего мода)
  3. Удалите класс Config — он пока не нужен

Имена классов в Java пишутся в CamelCase. Подробнее: Основы Java.

Для переименования: выделите имя → Shift + F6. IDEA переименует по всему проекту.

Откройте переименованный класс и приведите к такому виду:

package com.ringo.rinova;

import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.server.ServerStartingEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

@Mod(RinovaMod.MOD_ID)
public class RinovaMod {
    public static final String MOD_ID = "rinova";

    public RinovaMod(FMLJavaModLoadingContext context) {
        IEventBus modEventBus = context.getModEventBus();

        modEventBus.addListener(this::commonSetup);

        MinecraftForge.EVENT_BUS.register(this);
    }

    private void commonSetup(final FMLCommonSetupEvent event) {
    }

    @SubscribeEvent
    public void onServerStarting(ServerStartingEvent event) {
    }

    @Mod.EventBusSubscriber(modid = MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD, value = Dist.CLIENT)
    public static class ClientModEvents {
        @SubscribeEvent
        public static void onClientSetup(FMLClientSetupEvent event) {
        }
    }
}

Что изменилось относительно шаблона:

  • MODID переименован в MOD_ID со значением "rinova"
  • Удалён лишний код из шаблона (логирование, пример с блоками, Config)
  • Остался каркас: конструктор, commonSetup, onServerStarting, ClientModEvents

Ctrl + Alt + L — форматирование кода в IDEA. Расставит пробелы, скобки, удалит неиспользуемые импорты.

5.4. Запуск проекта

Откройте панель Gradle → Tasks → forgegradle runs → runClient. Дважды кликните:

Gradle — runClient

Если всё сделано правильно, Minecraft запустится. Откройте Mods и найдите свой мод:

Мод Rinova в списке модов Minecraft


Весь код доступен на GitHub. Можете сравнить со своим или скопировать:

GitHub: Rinova — начальный коммит