Создание модификаций с помощью Forge/1.7+
**Здесь находятся инструкции по созданию модификаций, работающие для версии 1.7+**

## Подготовка среды и настройка

Сначала подготовим среду для работы с кодом Minecraft.

### Forge

Собственно, для создания модификаций нужен Forge. Скачать его можно здесь с пометкой Mdk или с пометкой Src (для версий 1.8/1.7). Теперь создайте любую папку там, где вам удобно (в примере это `D:\MCModding`

), в ней будет находиться Forge и модификация. В эту папку распакуйте содержимое архива с Forge. Вы увидите следующее:

С 15 января 2020 года Maven больше не поддерживает протокол HTTP и требует использовать HTTPS. А с 4 ноября 2022 года сайт Amazon S3 удалил файлы версии 1.7.10, что сделало невозможным их скачивание. Поэтому для создания модификаций под версию 1.7.10 необходимо внести несколько коррекций в файлы скачанного архива.

Сначала в файле `gradle/wrapper/gradle-wrapper.properties`

нужно изменить значение параметра `distributionUrl`

:

distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

Затем в файле `build.gradle`

нужно заменить содержимое тега `buildscript{}`

следующим образом:

buildscript { repositories { mavenCentral() maven { name = "github" url = "https://github.com/juanmuscaria/maven/raw/master" } } dependencies { classpath 'net.minecraftforge.gradle:ForgeGradle:[1.2-1.4.6-SNAPSHOT,)' } }

Проделанные шаги заменяют ссылки на их рабочие варианты.

### Среда разработки

Теперь нам нужно установить Forge, который при установке также произведёт декомпиляцию и деобфускацию кода Minecraft, чтобы сразу можно было начать создание модификации. Для этого необходимо установить Java Development Kit (**JDK**), скачав его с официального сайта Oracle. Minecraft 1.7.10 работает на JDK версии 1.8.

Помните, что JDK **включает в себя** JRE, так что вы можете удалить отдельную JRE с компьютера.

При первой установке **JDK** откройте `⊞ Win` + `PauseBreak`->Дополнительные параметры->Переменные среды и проверьте содержимое. Там должны существовать две переменные (если их нет, то их нужно создать вручную):

**JAVA_HOME**: «`C:\Program Files\Java\jdk1.8.0_241`

» (по умолчанию; у вас может быть другая версия jdk или путь установки)**Path**: «`C:\Program Files\Java\jdk1.8.0_241\bin`

» (по умолчанию; у вас может быть другая версия jdk или путь установки)

После создания/обновления переменных сред необходимо перезагрузить компьютер, чтобы изменения вступили в силу.

Затем с помощью командной строки необходимо выполнить следующую команду (замените `eclipse`

на `idea`

, если вы используете IntelliJ IDEA):

`gradlew.bat setupDecompWorkspace eclipse`


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

Также имеются команды без возможности просмотра исходного кода Minecraft во время разработки:

`gradlew.bat setupDevWorkspace eclipse`

`gradlew.bat genEclipseRuns eclipse`


Если вы являетесь пользователем операционной системы Linux, нужно прописать следующие строки в терминале:

`cd <путь>/<папка с Forge>`

и`./gradlew setupDecompWorkspace eclipse --refresh-dependencies`


Чтобы выполнить команду, можно создать в папке .bat-файл с выбранной вами командой (но обычно он там уже есть) и запустить его. Также вместо всего этого можно запустить командную строку в этой папке (например, нажать `⇧ Shift` + `ПКМ` по этой папке и выбрать «Открыть окно команд») и выполнить выбранную команду.

Выполнение команды займёт какое-то время, после чего должно появиться сообщение рода Build Successful.

Если же появляется какая-либо ошибка:

- Проверьте ещё раз ваши переменные среды,
**JAVA_HOME**и**Path**. Их пути должны вести в существующие папки с установленным JDK. - Введите команду
`set JAVA_HOME="Тут нужно вставить адрес папки с JDK без кавычек"`

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

### Настройка Eclipse

Нужно настроить Eclipse для работы с Minecraft. Первым делом зайдите в него. Он предложит выбрать рабочую директорию (Workspace). Введите туда путь к папке «eclipse» в папке (Путь к папке должен содержать только английские буквы), куда вы распаковали содержимое Forge и поставьте галочку для того, чтоб окно больше не появлялось. В примере это «D:\MCModding\**eclipse**». Если всё прошло успешно, то слева в Eclipse вы увидите раскрывающееся меню Minecraft.

Затем вы должны убедиться, что Eclipse использует правильную версию JDK для работы с исходниками. Откройте в меню сверху Window->Preferences->Java->Installed JREs. Перед вами откроется список установленных сред Java. Обычно там помечена галочкой встроенная в Eclipse версия JDK, которая слишком новая и не подходит для разработки. Чтобы исправить это, нажмите на версию, справа нажмите кнопку «Remove», а затем кнопку «Add». В открывшемся диалоге выберите «Standart VM» и укажите путь к той папке, куда у вас в системе установлена JDK 1.8 (вы этот путь уже находили при настройке переменных сред). После этого подтвердите добавление виртуальной машины и пометьте её галочкой, сохранив изменения.

После всех действий остаётся настроить Compliance. По умолчанию значение Compliance равняется 1.6 и не будет препятствовать работе. Однако, если вы попробуете открыть код, использующий нововведения Compliance 1.7-1.8, то некоторые фрагменты кода будут подчёркнуты как ошибки, несмотря на то, что код там правильный. Чтобы исправить это, откройте в меню сверху Window->Preferences->Java->Compiler и выберите там Compliance 1.8. Ошибки, связанные с нераспознанными новыми возможностями языка Java, исчезнут.

Для того, чтобы осуществлять сборку проекта с изменённым Compilance, отредактируйте в файле `build.gradle`

содержимое тега `minecraft{}`

следующим образом:

minecraft { version = "1.7.10-10.13.4.1614-1.7.10" runDir = "eclipse" srcCompat = JavaVersion.VERSION_1_8 targetCompat = JavaVersion.VERSION_1_8 }

Здесь добавились две строчки, обеспечивающие поддержку новых возможностей Java.

### Настройка IntelliJ IDEA

Если вместо Eclipse Вы решили использовать IntelliJ IDEA, то после того как вы установите ее, в стартовом окне в правом нижнем углу нажмите на кнопку «Configure», откройте вкладку «Project Defaults» и выберите пункт «Project Structure» или в главном меню нажмите комбинацию клавиш (Ctrl+Alt+Shift+S).

В открывшемся окне нажмите на красную надпись «No SDK», для контекстного меню и выберите пункт с вашей версией JDK. (Если же в меню нет вашей версии JDK нажмите «Add SDK» и укажите путь. В нашем случае это `C:\Program Files\Java\jdk1.8.0_241`

)

После этого можно воспользоваться двумя способами:

#### Первый способ:

После того, как Forge скомпилирован и установлен, необходимо запустить IDEA, и в появившемся окне нажать 'Import Project'. После чего выбираем в папке «D:\MCModding» файл build.gradle. В появившемся окне Вам предложат выбрать способ компиляции (рекомендуется оставить значение Use default gradle wrapper.) В строчке ниже выберите Ваш JAVA_HOME. В пункте «Формат проекта» нужно обязательно выбрать «.ipr (file based)». В противном случае, придётся подключать все библиотеки и настраивать запуск самостоятельно. После всего этого нажмите OK. Ждите, пока сборка скомпилируется.

В случае, если ваша IntelliJ IDEA установлена правильно и она различает формат *.ipr, вы можете просто дважды нажать по файлу <НазваниеПроекта>.ipr в директории вашего MCP. IDEA все сделает за вас.

#### Второй способ:

После того, как вы распаковали файлы в «D:\MCModding», сразу запускайте IntelliJ IDEA. В появившемся окне нажать 'Import Project'. После чего выбираем в папке «D:\MCModding» файл build.gradle.

Если IDEA указывает на старую версию Gradle, нужно обновить ее на более новую. Для этого запустите консоль с директорией к папке с Forge (щелкните `⇧ Shift` + `ПКМ` по папке с Forge > Открыть консоль команд) и выполните следующую команду:

`gradlew.bat wrapper --gradle-version <Нужная версия>`


Список всех версий можно посмотреть на официальном сайте.

Потребуется подождать пару минут, пока среда разработки полностью все выполнит и импортирует. После завершения процесса откройте меню «View» в верхней части экрана и выберите пункты «Tools Windows > Gradle». У вас откроется окно с Gradle задачами. Переходим в раздел Tasks > forgegradle.

Выполните task `setupDecompWorkspace`

. После его выполнения запустите `genIntellijRuns`


Готово. Мы проделали все то же самое, что и в первом способе, только без использования консоли, а это может быть большим плюсом для новичков.

#### Запуск

После выполнения выше перечисленных действий, в верхней части экрана перейдите в раздел «Run» и выберите пункт «Run configurations». По очереди выберите «Minecraft Client» и «Minecraft Server» и уже в правой части окна, в раскрывающемся списке «Use classpath of module» выберите тот пункт, который заканчивается на _main. Теперь вы можете запустить клиент или сервер и удостовериться, что все работает.

Поздравляем! Вы успешно настроили среду для того, чтобы начать писать модификации при помощи нее.

## Основные уроки

- Директория Eclipse (Установка среды)
- Главный класс
- Блок
- Предмет
- Крафт
- Компиляция
- Генерация
- Прокси и инстанция
- Моб

## Дополнительные уроки

- Локализация названий в игре
- Дроп определённого предмета при разрушении блока
- Разносторонняя текстура блока
- Собственная вкладка в Творческом режиме
- Обновление Forge
- Обновление ForgeGradle
- Свой материал для инструмента
- Создание брони
- Свой материал для брони
- Генерация предметов в контейнерах натуральных структур
- Атрибуты для моба
- Интеллект для моба
- Свой скин при моддинге

## Примечания

- ↑ При первом выполнении лог может быть длиннее.