Перейти к содержанию

Структура мода#

Так как используемое нами Minecraft Forge использует автоматический сборщик Gradle, то мы должны придерживаться определенной структуры папок.

└── src    
    └── main
        ├── java
        └── resources

Создайте папку "src" и остальные в нашей рабочей директории, где мы ранее распаковывали архив MDK. Idea автоматически узнает названия папок и присвоит им нужное значение.

Для Eclipse#

Если вы используете Eclipse, то вам нужно пометить "src/main/java" и "src/main/resources" как "Source Folder" (папка исходников).

Это можно сделать двумя разными способами:

  1. Создать эти папки через ПКМ > New > Source Folder
  2. Выделить уже созданные папки "java" и "resources" и ПКМ > Build Path > Use as Source Folder

Смысл папок#

"src" в полном варианте пишется source и переводится как "Источники/Исходники".

Весь наш мод будет находиться внутри этой папки.

Далее идет "main", внутри которого находятся две папки: "java" и "resources".

  • В "java" хранится исходный код нашего мода
  • В "resources" хранятся ресурсы мода: картинки, звуки, модели и так далее

mcmod.info#

Создадим в папке "resources" файл mcmod.info.

Этот файл определяет метаданные нашего мода: идентификатор, название, авторов, зависимости и так далее. Это обычный JSON файл, хотя он и имеет расширение .info.

Минимально правильный mcmod.info файл должен содержать следующее:

[{
  "modid": "mcmodding",
  "name": "McModding Mod"
}]

Где modid — идентификатор мода. Не используйте заглавные буквы, пробелы, подчеркивания и т.д. Только английские буквы в нижнем регистре.

Параметр name отвечает за красивое название вашего мода. Тут можно использовать все что угодно. Работать будут и коды форматирования текста.

Параметр Описание
modid Уникальный идентификатор мода
name Название мода
description Описание мода в 1-2 абзаца
version Версия мода
url Ссылка на сайт мода
updateUrl Ссылка для обновления мода
authorList Список имен авторов
credits Строка с выражением благодарности кому-то
logoFile Путь к логотипу мода
screenshots Массив путей к скриншотам мода. В данный момент не поддерживается
parent modid родительского мода
useDependencyInformation Если true, то следующие три параметра будут учитываться
requiredMods Массив modid модов, которые требуются для работы данного мода. Если данные моды не установлены, то будет краш игры. Данный параметр не указывает порядок загрузки модов. Используйте для этой цели параметр dependencies
dependencies Массив modid модов, которые должны быть загружены до загрузки данного мода
dependants Массив modid модов, которые должны быть загружены после загрузки данного мода

Вот пример заполненного файла:

[{
  "modid": "mcmodding",
  "name": "McModding Mod",
  "description": "Это мой первый, крутой мод!",
  "version": "1.0.0",
  "url": "mcmodding.ru",
  "authorList": ["Icosider", "CMTV"],
  "credits": "Спасибо что читаете наш учебник."
}]

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

Главный файл мода#

В предыдущем разделе мы создали файл mcmod.info, но игра все еще не распознает мод, в чем можно убедиться, запустив клиент. Вы не найдете свой мод в списке установленных модов. Для того чтобы все заработало, нам нужно создать главный файл мода.

В папке "java" создайте базовый пакет вашего мода. Если у вас уже есть домен для вашего мода, то отличным названием для пакета будет что-то вроде ru.mcmodding.tutorial. Если домена у вас нет, вполне подойдет использование вашего никнейма, как название пакета верхнего уровня: mcmodding.tutorial.

Для данного урока мы будем использовать такой вид: ru.mcmodding.tutorial.

Теперь создадим в нем файл McModding.java. Это и будет главным файлом нашего мода.

Для того чтобы Minecraft Forge понял, что данный файл действительно является главным, мы должны добавить к определению класса аннотацию @Mod:

package ru.mcmodding.tutorial;

import net.minecraftforge.fml.common.Mod;

@Mod(modid = "mcmodding")
public class McModding {}

Естественно, что поле modid в аннотации должно быть равно modid в mcmod.info. В противном случае мод будет распознан, но выведет сообщение о том, что mcmod.info не найден. Впрочем, на работу мода это никак не повлияет.

Разбору полей аннотации @Mod посвящена отдельная статья.

Итог#

Мы создали базовую структуру любого мода для Minecraft. Выглядит она следующим образом:

└── src    
    └── main
        ├── java
        │   └── ru.mcmodding.tutorial
        │       └── McModding.java
        └── resources
            └── mcmod.info