Как сделать собственный мод
Создание модификаций с помощью Forge
В этой статье описывается процесс создания модификаций для Minecraft с использованием API Forge и Eclipse. Для создания даже простых модификаций требуется знание основ Java. Если во время создания модификаций возникнут вопросы или проблемы, не описанные здесь, опишите их на странице обсуждения.
Таблица готовности | ||||||
---|---|---|---|---|---|---|
Урок | 1.6+ | 1.7+ | 1.9+ | 1.10+ | 1.12+ | 1.14+ |
Блок | Готов | Готов | Готов | Готов | Готов | Не планируется |
Предмет | Готов | Готов | Готов | Готов | Приостановлено | Не планируется |
Крафт | Готов | Готов | Готов | Готов | Приостановлено | Не планируется |
Компиляция | Готов | Готов | Готов | Готов | Приостановлено | Не планируется |
Генерация | Возможно | Готов | Готов | Не планируется | Приостановлено | Не планируется |
Прокси и инстанция | Не планируется | Готов | Не планируется | Не планируется | Приостановлено | Не планируется |
Моб | Возможно | Готов | Не планируется | Не планируется | Не планируется | Не планируется |
Блоки с моделью | Возможно | Возможно | Не планируется | Не планируется | Приостановлено | Не планируется |
Доп. Уроки | Всего: 3 | Всего: 12 | Всего: 10 | Всего: 0 | Всего:0 | Всего:0 |
Общие сведения [ править | править код ]
Для создания модификаций в любом случае нужны JDK и Eclipse. Первая — это комплект разработчика Java и отличается от обычной Java тем, что имеет средства для компиляции/декомпиляции, несколько дополнительных библиотек и документацию. С 2019-го года ввиду изменений в лицензировании для загрузки JDK потребуется учётная запись Oracle. Также важно то, что Minecraft 1.12 не поддерживает Java ниже 7-й и выше 9-й включительно, тогда как 1.14 поддерживает практически все версии Java выше 8-го выпуска. Eclipse — это среда разработки, которая имеет поддержку синтаксиса нужного языка программирования, а также в ней был написан сам Minecraft.
Создание модификаций с помощью Forge/1.7+/Основные уроки
Здесь представлены основные уроки по созданию модификаций с помощью Forge/1.7+. Остальную информацию по данной теме смотрите в соответствующей статье.
Содержание
Урок 1. Директория Eclipse (Установка среды) [ править | править код ]
Теперь вы можете приступать к созданию своей первой модификации.
Урок 2. Главный класс [ править | править код ]
Итак, можно приступить к созданию модификации. Создадим его основу.
Нажмите ПКМ на директории модификации (com.platon.mybestmod) и выберите New → Class, и в поле Name введите название класса. Это главный класс модификации, поэтому пусть это будет указано. Например, одно из возможных названий — «BaseMyBestMod». Обратите внимание, что каждое слово написано с большой буквы (естественно, именно так делать необязательно, но общепринятым считается именно этот вариант). Далее просто нажмите Finish. Всё, у вас теперь есть главный класс модификации.
Приступим к написанию кода. Запишем ВНЕ тела, то есть над строчкой public class. [4] класса следующую строчку:
Вы написали, что ваша модификация называется «My Best Mod» и имеет версию 1.0. Но Eclipse сообщает об ошибке, так как ему неизвестно, что значит @Mod. Нужно импортировать соответствующий класс, для этого после строчки с указанием пакета ( package platon.mods.mybestmod; ) напишите следующую строчку:
После этого сообщение об ошибке должно исчезнуть.
Далее уже в теле (в фигурных скобках) пишем:
Вот и всё. Основа модификации готова. Можете запустить Minecraft (Зеленая кнопка сверху → Client) и увидеть в списке модификаций свою модификацию. По крайней мере для того, чтобы приступить к созданию первого блока.
Урок 3. Блок [ править | править код ]
Приступим к созданию своего первого собственного блока.
В самом начале тела Класса (После первой фигурной скобки если вы ещё не поняли) пишем:
Теперь укажем, где про блок будет написано более подробно. В теле метода preLoad() напишем строчку:
Эта строка говорит, что про объект bestblockever будет написано в классе BlockBestBlockEver. И он выдаёт ошибку. Естественно, ведь никакого класса BlockBestBlockEver не существует. Его легко создать, нажав по ошибке и выбрав Create Class… Далее нажмите Finish.
В скобках у объекта, где написаны аргументы, которые должны быть посланы снаружи уберите аргумент Material par1Material. Мы пошлем его отсюда, а не снаружи класса. Теперь в следующей строчке в скобках у super() замените «par1Material» на «Material.rock», или после точки сами выберите нужный вам материал.(Не забудьте про импорт) То есть мы посылаем в суперкласс Block что материал блока камень. То есть блок как камень: на звук как камень, ломается с тем же звуком и т. д. Список доступных материалов можно посмотреть через точку после Material.
Итак, давайте поработаем над характеристиками блока. Это можно сделать из главного класса, указывая их через точку после bestblockever = new BlockBestBlockEver(); (до точки с запятой). Но можно и отсюда. Для этого пишите их в теле этого объекта после «this.» также можно не писать.
Также можно установить будет ли блок светиться. Чем больше число, тем светлее. Вместо 0 пишете уровень света, создаваемого блоком, умноженное на 10. Таким образом нужно вставить туда значение от 0 до 150 (150 означает уровень света 15, максимальное значение).
Так, текстура есть, теперь пропишем её в код. Следующее пропишите всё в том же методе блока.
Теперь поместим текстуру в проект. Слева в окне директорий проекта выберите src/main/resources и нажмите правой кнопкой и создайте директорию.(New → package) Назовите так: assets.краткое название модификации.textures.blocks (assets.mybestmod.textures.blocks). Теперь мышкой перетяните текстуру из windows в эту директорию. В окне выберите «Copy files».
Теперь нужно зарегистрировать блок. Перейдите в главный класс и в самом конце метода preLoad допишите
Это должно зарегистрировать блок в Forge.
Начиная с версии 1.9, блоки регистрируются в два этапа. О том, как это сделать, можно посмотреть здесь
И последнее: мы не указали, как будет называться блок в игре. Локализация описана в этом доп. уроке.
Ну вот и всё, блок создан. Теперь необходимо проверить его работоспособность. Запускайте Minecraft с вашей модификацией! Но сначала сохраните оба класса ( Ctrl-S ). Для запуска нужно нажать сверху зелёный круг с треугольником (или Ctrl-F11 ). После запуска посмотрите, есть ли ваша модификация в списке модификаций (в главном меню), создайте новый мир в режиме креатив и найдите свой блок в креатив-инвентаре во вкладке блоки. Если он там есть, берется, ставится и ломается, то поздравляю: модификация, добавляющая блок, создана!
Урок 4. Предмет [ править | править код ]
Ну вот мы и создали блок. Но ведь в игре присутствуют не только блоки, но и предметы. Такие как еда, инструменты, в общем всё подряд, что обычно нельзя поставить на землю. Давайте создадим такой предмет. Для примера возьмём кирку.
Перейдем в главный класс модификации. До метода preLoad() сразу после public static Block bestblockever; допишите:
Тем самым мы создадим переменную типа Item с кодовым названием кирки.
В методе preLoad() для удобства отступите одну строку от того что уже написано, и пишите туда следующее: (Я сразу напишу всё, что нужно, многие элементы описания предмета совпадают с описанием блока, особой разницы нет)
Итак, мы создали кирку, дали ей нелокализированное имя [7] и зарегистрировали в Forge. Щелкнув по ошибке создадим класс этой кирки. Класс создан, но Eclipse не знает, что мы хотим создать — еду или инструмент, поэтому сделаем этот класс наследником класса, где написано про инструмент или еду или что хотите, главное, что про предмет, а не блок. В строчке public class BestPickAxe< после BestPickAxe допишите extends ItemPickaxe и импортируйте этот самый ItemPickaxe.
Немного об ItemPickaxe: pickaxe — это кирка по-английски, и, соответственно, extends ItemPickaxe говорит о том, что мы «продолжаем» или дополняем класс ItemPickaxe, в котором указаны все базовые характеристики и функции, такого Item’а или предмета, как кирка. Таким образом можно продолжать любой класс, в зависимости от того, какой предмет нужен. То есть, если нужна еда, то мы продолжаем класс ItemFood, если броня, то ItemArmor, а если свой особенный предмет, то просто Item. Не забывайте: вы всегда можете посмотреть список возможных продолжений того, что вы пишете. [8]
Теперь, не обращая внимания на появившуюся ошибку вставьте в тело это:
Тогда ошибка исчезнет. Строка super(ToolMaterial.EMERALD); говорит о том, что пошлёт в супер-класс информацию о том, что кирка обладает свойствами алмазной кирки. Ну и также допишем после этой строчки
тем самым добавив кирку в раздел инструменты в режиме «Творчество».
Почти готово. осталось только добавить текстуру, давайте модифицируем текстуру из Minecraft. Зайдите в папку c Minecraft\versions\1.7.2, там откройте jar-файл c помощью архиватора, в архиве перейдите в assets\items и там найдите какую-нибудь текстуру кирки, извлеките на рабочий стол. Файлы текстур НЕЛЬЗЯ редактировать обычным Paint’ом, так как текстура должна быть кое-где прозрачной, если вы не хотите конечно идеально квадратную кирку. В общем отредактируйте текстуру как угодно, главное чтоб была 16×16. Назовите текстуру BestPickAxe.png Теперь создайте в проекте директорию с текстурами предметов. Для этого ПКМ по src → New → package а в названии напишите assets.mybestmod.textures.items и туда мышью с раб. стола перенесите готовую текстуру и нажмите ОК. Теперь скажем предмету где его текстура. Пропишите следующее всё в том же методе кирки.
И можно запускать для проверки.
Собственно вот мы и создали первый предмет — инструмент — кирку, которая по свойствам, как алмазная. В этом доп. уроке вы можете посмотреть, как создать инструмент с особыми свойствами.
Урок 5. Крафт [ править | править код ]
Собственно, у нас есть блок и предмет. Мы можем их держать в руках, а блок даже ставить. Но а если мы хотим достать их, играя в режиме Выживания? Тогда блок или предмет можно только найти или скрафтить. Добавить крафт очень просто. Предположим, рецепт блока должен быть следующим:
Ингредиенты | Рецепты крафта | ||||||||
---|---|---|---|---|---|---|---|---|---|
Параметр | Описание |
---|---|
MyBestEntity.class | Класс моба. |
«myBestEntity» | ID моба |
0x00FFFF | Цвет фона яйца |
0x00008B | Цвет пупырышек яйца. |
Теперь создайте класс моба и добавьте туда следующий код:
В примере суперклассом класса моба является класс «EntityMob», предназначенный для враждебных мобов. Также существуют классы «EntityCreature», «EntityAnimal», «EntityLiving» и другие.
Теперь модель, текстура и рендер. В класс CommonProxy добавьте следующий код:
Далее в класс ClientProxy добавьте следующий код:
Теперь надо вызвать созданный метод в главном файле модификации. Просто добавьте этот код:
Далее создайте класс RenderВашМоб. В нашем случае это «RenderMyBestEntity». Его суперклассом должен быть класс «RenderBiped». В класс добавьте следующий код:
Для локализации яйца моба добавьте в файл локализации следующий код:
Теперь зайдите в игру. Во вкладке «Разное» будет яйцо.
Создание модификаций с помощью Forge/1.12+
В этой статье описывается создание модификаций на основе Minecraft Forge с использованием Eclipse для версий Minecraft с 1.12.
Содержание
Установка Forge Gradle [ править | править код ]
Не забудьте! Далее, все связанное с Java кодом мы будем делать в каталоге src\main\java, а остальное в src\main\resources.
Примечание! Для установки потребуется компьютер с минимальным объёмом ОЗУ от 4Гб! Если у вас недостаточно ОЗУ, добавьте необходимый объём из файла подкачки, но такой метод работает лишь на 64-битных системах.
Создание модификации [ править | править код ]
build.gradle [ править | править код ]
Это файл, который задает свойства проекта и его нужно немного подправить:
Если вы используете IntelliJ IDEA, то в конец build.gradle дополнительно добавьте это:
pack.mcmeta [ править | править код ]
Этот файл нужен для корректной работы игры с ресурсами модификации, такими как локализации, модели, рецепты, таблицы добычи и так далее. Заполняется следующим образом:
mcmod.info [ править | править код ]
Этот файл задаёт более подробную информацию о модификации и заполняется следующим образом:
Класс модификации [ править | править код ]
Данный класс создается в патче и является главным файлом, благодаря которому игра видит нашу модификацию. Заполняется следующим образом:
Блок [ править | править код ]
Класс блока [ править | править код ]
Для создания блока создайте класс с названием блока в стиле TutorialBlock в пакете патч.blocks и заполните его следующим образом:
Примечание регистрируемое имя и ключ локализации указывать только в нижнем регистре, используя при надобности нижнее подчёркивание!
Модель [ править | править код ]
Модель решает то, как наш блок будет выглядеть. Важно знать, что для блоков используется две модели. Одна задает вид блока, поставленного в мире, а вторая, его иконку в инвентаре. Это дает нам возможность сделать блоку отдельную иконку для инвентаря. Сами же модели для блока подключаются к нему как состояния, normal для блока в мире и inventory для его иконки в инвентаре. Поэтому для начала создадим файл идентификатор_блока.json в пакете assets.идентификатор_мода.blockstates, который и подключит наши модели.
Теперь подключим модели. Для этого создайте файл регистрируемое_имя.json в пакете assets.идентификатор_мода.models.block со следующим содержимым:
Теперь зададим иконку блока в инвентаре в пакете assets.идентификатор_модификации.models.block с именем идентификатор_блока.json со следующим содержанием:
Регистрация [ править | править код ]
Наш блок имеет текстуры и свойства, но его нужно зарегистрировать в игре. Создадим в пакете домен.автор.мод.init класс BlocksInit :
Предмет [ править | править код ]
Основное [ править | править код ]
Класс предмета [ править | править код ]
Для создания предмета создадим класс с именем TutorialItem:
Регистрация [ править | править код ]
Для регистрации предмета создадим класс ItemsRegister:
Модель [ править | править код ]
Примечание: название файла модели должно совпадать с RegistryName предмета
- Как сделать лизинг своими руками
- Как сделать макияж глаз стойким