Урок девять. Добавляем свой блок

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

Список уроков
Урок восемь. Делаем из сосиски еду
Бонусный урок. Эффекты и блестяшка

Фактически в этом уроке мы частично повторим шаги из четвертого и пятого уроков, но цель немного иная, а шаги чуть сложнее.

Сначала открываем в файл ModEventSubscriber. Для регистрации предметов мы использовали onRegisterItem, аналогичная функция нужна нам и для блоков:

Регистрация блока будет так же в чём-то похожа.

Разберем что я тут написал. Используем снова функцию setup, она общая и для блоков, и для предметов. Первый параметр, это наш блок. Мы создаём объект типа Block, с такими характеристиками: материал Material.ROCK, т.е. материал каменный, прочность 3 и устойчивость 3. Данные параметры сделают наш блок схожим по свойствам с блоком железной руды. От прочности зависит скорость добычи блока игроком, а устойчивость влияет на его сопротивление взрыву и т.д. Вторым параметром, как и для предмета, будет имя в реестре. Я делаю sun_bricks блок, что в переводе значит солнечные кирпичи.

Как и с предметом в уроках ранее — можно запускать. В инвентаре вы ничего не увидите, ведь у блока нет предмета. Поясню так, у КАЖДОГО блока, который можно увидеть в инвентаре — есть свой предмет. Т.е. когда вы держите в руке верстак — это предмет. Но когда вы ставите его куда-либо, то предмет из ваших рук пропадает, а в мире появляется блок. И так как блок у нас уже есть — при помощи команды /setblock его можно призвать в мир. Посмотрим.

Если все сделано верно — игра подскажет имя вашего блока

Жму энтер…ииии!

Ура!

Текстура и модель блока

Да. Блок появился, но выглядит он откровенно не очень. Давайте добавим ему модель и текстуру.

Как и для уже созданной папки для предметов (item) по пути assets\tutorial_mod_gs\models добавляем папку block. Туда добавляем .json файл, имя которого должно совпадать с регистрационным именем вашего блока.

Его содержимое должно быть приблизительно таким:

Где мы указываем родительскую модель cube_all, т.е. куб с одинаковыми сторонами. И у этой модели есть одна текстура, имя которой all. Её мы и указали. По сути все так же, как и для предмета, только имена другие.

Теперь нам нужно добавить текстуру. Путь к папке текстур у нас такой: assets\tutorial_mod_gs\textures и там сейчас только одна папка — item. Добавляем block и сюда, и перемещаем туда текстуру sun_bricks.png.

Мой блок будет выглядеть так:

16×16 — стандартный размер текстур игры

Окей. Но если для предмета этого было бы достаточно, то блоку нужен еще файл состояний. Знаете, это такой файл, который определяет вид блока в зависимости от состояния. Что-то вроде включенной и выключенной лампы или нажимной плиты. С ним мы еще столкнемся, обязательно. Ну, а пока наш блок будет иметь только одно состояние — нашу модель.

Папку blockstates нужно добавить в assets\tutorial_mod_gs, туда, где наши lang, models и textures. В неё добавляем еще один .json файл с именем нашего блока. У меня это еще один sun_bricks.json, а его содержание должно быть приблизительно таким:

Фактически мы указали единственный вариант для нашего блока, так как других пока не предусмотрено.

Запускаем. И если все сделано верно — блок должен получить вашу текстуру.

Нууу? Вроде оно.

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

На этом все. Спасибо за внимание!

Добавить комментарий