Портирование мода с 1.14 на 1.7.10 версию оказалось настоящим эпическим сражением, продлившимся целый день. Сейчас я опишу, как мне удалось в нём победить.
Половину дня я пытался понять, почему один мой Gradle (для Minecraft 1.7.10) не может определить версию Java по строке «12.0.1», а другой (для 1.14) заявляет, что надо указать версию плагина «forge». Ключом к решению оказалось использование OpenJDK 10 и обновление Gradle до 4.1 версии.
На этом проблемы не закончились. Gradle стал скачивать нужные файлы, но не смог скачать их все. Некоторые файлы (такие, как twitch-5.16.jar) отсутствуют на двух сайтах-источниках (minecraftforge.net и ещё один), а с официального сайта Minecraft Java скачать файлы не может, так как там есть проблема с сертификатом. Добавление корневого сертификата с minecraft.net в доверенные (тут как раз пригодилось то, что я скачал дополнительную Java) ничего не дало.
Я скачал все недостающие файлы через браузер, и тут у меня возникла проблема: а в какую папку их надо положить? Не считать ведь хеш-суммы каждого файла и не раскидывать по отдельным папкам руками?
Решение оказалось очень простым: если Gradle стучится и проверяет, нет ли файла на files.minecraftforge.net, то этот запрос можно перехватить и направить на локальный сервер, где файл уже есть. Как это можно сделать? Правильно, с помощью файла hosts. Тогда я прописал перенаправление с files.minecraftforge.net на 127.0.0.1, поднял локальный сервер и положил туда все нужные файлы. Запустил Gradle - ура, все файлы скачались! Сервер можно выключать.
Дальше осталось совсем немного: посмотреть в исходники каких-нибудь модов под 1.7.10 и разобраться, как они работают. Поменять в своём коде пришлось (почти) только основной класс. Также изменился файл локализации.
В каком виде мод работает (OCTechnics.java):
Файл ./common/blocks/BasicFactoryBlock.java:
assets/octechnics/lang/en_us.lang:
tile.octechnics:basic_factory_block.name=Factory Base
Текстуры немного переехали: из папки block попали в папку blocks.
Наконец, я запустил мод и он заработал: в первой вкладке творческого инвентаря появился блок с моей текстурой, правильно названный и нормально ставящийся в мир. Этого я и хотел! Дальнейшие приключения (расширение ассортимента и добавление к блокам блок-сущностей) будут в следующей статье.