[1.16.1] Новые инструменты

Привет! Сегодня добавим целый ряд предметов, а именно топоры, кирки, лопаты и т.д. А также пару новых материалов для инструментов и бонусом их рецепты.

Список уроков

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

Поехали!

Немножечко об инструментах

В чём отличие инструментов от обычных предметов? Сейчас мы исключаем их особенности, вроде вспахивания земли или создания тропинок, а говорим об общем для всех. Они более эффективны на определённых блоках (даже мотыга, с 1.16). Поэтому у нас есть класс ToolItem, где и происходит указание новой скорости разрушения для подходящих инструменту блоков, двойной урон по состоянию инструмента при использовании его как оружия и т.д. Сами же блоки, как и особенные взаимодействия конкретных инструментов прописаны в дочерних классах от ToolItem. Для лопаты это ShovelItem, для топора – AxeItem, для кирки – PickaxeItem, мотыга – HoeItem. Кстати, меча тут нет, он ведь не инструмент. Но его мы сегодня тоже добавим. Дело в том, что для SwordItem родительским классом является TieredItem, он же родитель для ToolItem. По сути, эти предметы требуют для создания не только Item.Properties(), а и «тир» предмета, урон и скорость атаки. Что за тир предмета вы должны понимать, это алмазный, железный и т.д.

Так что для новых инструментов мы в первую очередь создадим новый «тир», даже два. А потом просто несколько объектов соответствующих классов.

JAVA-часть

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

Хорошо. В папку item добавляем ModItemTier.class, он буквально копирует существующий ItemTier.class из игры (смотрите папку item), но вместо существующих элементов мы пишем эти. Никаких иных регистраций или вроде того сейчас делать не нужно. Для нормальной работы важно, чтобы эти статические свойства наследовали класс IItemTier.

Фактически это enum тип с набором параметров, которые будут определять эффективность, прочность и т.д.

Если по порядку в конструкторе, то первое – уровень материала. В зависимости от этого значения новая кирка сможет или нет добывать обсидиант или незерит. Второе – максимальное количество использований. Далее эффективность, влияет на скорость добычи. Четвёртое – урон от атаки, а пятое – зачаровываемость. Последнее это материал, при помощи которого можно будет починить инструменты с этим материалом.

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

На этом с кодом всё. Теперь нужно добавить локализацию, текстуры и модели, всё, как и с каменной палкой из прошлого гайда.

Правда родителем модели нужно указать minecraft:item/handheld:

Если вы оставите модель как для обычного предмета, то выглядеть они будут не особо:

item/generated
minecraft:item/handheld

Рецепты

Бонусом я обещал наконец-то рассказать о рецептах. А то мы добавили уже предмет, еду, но получить их в выживании всё ещё нельзя. В этот раз рассмотрим только верстак, и то, только рецепты с фиксированным положением ингредиентов.

Для начала нужно создать папку ресурсов для рецептов. В отличие от текстур и моделей – рецепты находятся по такому пути: src\ main\ resources\ data\ tutorial_mod_gs\ recipes. И вот в последнюю и нужно собирать ваши рецепты.

Имена рецептов не принципиальны, но должны соответствовать общем правилам, вроде никаких специальных символов, пробелов и т.д. Для примера вот вам рецепт топора:

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

Далее в рецепте следует «шаблон». Он есть только у форменных рецептов крафта.

После можно увидеть расшифровку символов шаблона, где символам присваиваются предметы. Если символу не присвоить никаких предметов, то в рецепте ячейка будет пустой.

В конце файла видим результат, новый топор.

Прошу обратить внимание, что для использования предметов из игры нужно писать перед именем предмета minecraft:, а для доступа к нашим предметам: tutorial_mod_gs:.

Остальные рецепты выглядят абсолютно так же, разница только в шаблоне и результате. Кирка тому пример:

 Запускаем!

Все новые предметы, и палка тоже, да
Стальной клинок
Лунная кирка
Стальная кирка
Стальной топор
Рецепты в действии
И топор
И ещё рецептик…

1 комментарий к “[1.16.1] Новые инструменты”

  1. Пингбэк: Создание модов для Minecraft 1.15 – GeekStand

Оставьте комментарий