Перейти к содержимому
  • записей
    5
  • комментариев
    5
  • просмотр
    1 941

Крафт программ. Делаем свой мод - часть 1. Регистрация в Minecraft.

ProgramCrafter

790 просмотров

Благодаря посту «Путь от нуля до разработчика OpenComputers» я вспомнил, что сам тоже хотел сделать моды для Minecraft. Два раза я пытался установить всё необходимое, два раза Gradle ругался на отсутствие JDK.

 

Почему бы не попробовать ещё раз? К тому же, нашлась замечательная ссылка на документацию Forge: https://mcforge.readthedocs.io/en/latest/gettingstarted/ (спасибо @Totoro).

 

Итак, я раскопал на диске Gradle от 1.14 версии Minecraft и выполнил новую для себя команду gradlew genEclipseRuns . Жду… нет, ничего не завершается с ошибкой, Minecraft спокойно декомпилируется, и наконец появляется надпись «BUILD SUCCESSFUL». До такого этапа я раньше не доходил, поэтому решил выбрать, какую из своих идей реализовать.

 

Мне понравилась идея заводика, интегрированного с OpenComputers. Заводик импортирует в себя руду, перерабатывает (с помощью верстаков, печек, дробилок) и экспортирует готовый продукт. При этом каждую команду даёт компьютер из OpenComputers.

 

Как и положено по документации, я написал в файл TestMod.java:

Скрытый текст

 

package org.octechnics.octechnics;

 

import net.minecraftforge.common.MinecraftForge;

import net.minecraftforge.fml.common.Mod;

import net.minecraftforge.fml.common.Mod.EventBusSubscriber;

import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;

import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;

import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

import net.minecraftforge.eventbus.api.SubscribeEvent;

 

@Mod( "octechnics" )

public class TestMod {

    public TestMod() {

        FMLJavaModLoadingContext.get().getModEventBus().register(this::setup);

        MinecraftForge.EVENT_BUS.register(this);

    }

    @SubscribeEvent

    public void setup(FMLCommonSetupEvent event) {

       

    }

}

 

 

В файл mcmod.info (прямо внутри папки src/main/resources):

Скрытый текст

 

[

{

  "modid": "octechnics",

  "name": "OC Technic Factories",

  "version": "1.0",

  "description": "This mod adds factory blocks which can interact with OpenComputers.",

  "mcversion": "1.14.3",

  "authorList": ["ProgramCrafter"],

  "credits": "Thanks eu_tomat for help with installing Forge"

}

]

 

Пишу gradlew build. Мод собирается. Закидываю его к другим модам, запускаю Minecraft 1.14. Запуск происходит очень спокойно, никакого мода по имени OCTechnics в списке не появилось.

Что делать? Правильно, искать другие моды под ту же версию (не важно, исходники или скомпилированные моды, главное, чтобы работали). Смотреть, где там лежат файлы и делать такие же файлы у себя.

 

Нашёлся некий файл pack.mcmeta. Пишем туда (спасибо IronChests):

Скрытый текст

 

{

    "pack": {

        "description": "OC Technic Factories Resources",

        "pack_format": 4,

        "_comment": "A pack_format of 4 requires json lang files. Note: we require v4 pack meta for all mods."

    }

}

 

 

Кроме того, нужен ещё файл mods.toml:

Скрытый текст

 

modLoader="javafml"

loaderVersion="[27,)"

 

[[mods]]

  modId="octechnics"

  version="1.0.0"

  displayName="OC Technic Factories"

  authors="ProgramCrafter"

  credits="Thanks eu_tomat for help with installing Forge"

  description='''

  This mod adds factory blocks (furnaces, crafting tables, etc) which can interact with OpenComputers.

  '''

 

  [[dependencies.octechnics]]

    modId="forge"

    mandatory=true

    versionRange="[27,)"

    ordering="NONE"

    side="BOTH"

 

  [[dependencies.octechnics]]

    modId="minecraft"

    mandatory=true

    versionRange="[1.14.3]"

    ordering="NONE"

    side="BOTH"

 

На этом этапе я безуспешно пытался понять, какие ссылки (для проверки обновлений мода) сюда надо подключить. В конце концов просто удалил их все. Тогда в логах пропала ошибка MalformedURL, и мод стал опознаваться.

 

Итоговая схема расположения файлов:

src - main  - java - org - octechnics - octechnics - TestMod.java

                 - resources - assets - octechnics - lang - en_us.json (пустой)

                                    - META-INF - mods.toml

                                    - mcmod.info

                                    - pack.mcmeta

 

В следующей записи - создание базового блока для завода.

  • Нравится 3


3 комментария


Рекомендуемые комментарии

Не совсем понятно, зачем для заводика нужен отдельный мод. Неужели под 1.14 нет хороших технических модов?

Поделиться комментарием


Ссылка на комментарий

Идея мода - полная интеграция с OpenComputers (может быть, даже не будет GUI у блоков). Компьютер сможет управлять заводом: напрямую отдавать команды о переплавке чего-нибудь, получать прогресс выполняемого действия.

Почему версия 1.14? Она просто валялась у меня на диске, и я решил проверить, а работает ли вообще Gradle по новой инструкции.

Поделиться комментарием


Ссылка на комментарий
Гость
Добавить комментарий...

×   Вы вставили отформатированное содержимое.   Удалить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...