Привет! Ожидаемо, что этот урок во многом будет копировать старый, об обычном предмете. Правда в этот раз мы должны в руках увидеть не тонкую пластинку, а полноценный блок, который хотим поставить.
Список уроков
Урок девять. Добавляем свой блок
Помните как мы регистрировали предмет сосиску? В функции onRegisterItem, она у вас уже должна быть. Мы писали:
1 2 3 |
event.getRegistry().registerAll( <em>setup</em>(new Item(new Item.Properties().group(MyModItemGroups.<em>MOD_ITEM_GROUP</em>).food(MyFoods.<em>SAUSAGE</em>)), "sausage") ); |
Если вы не добавляли своих предметов, то после этого всего нужно поставить запятую и можно писать следующий предмет. Это я уже говорил в уроке, где было много сосисок с эффектами. Только в этот раз мы будем создавать объект не от простого Item, а от BlockItem (ну типо предмет-блок)
Если обычному Item мы передавали один лишь объект Item.Properties(), где указывали вкладку и некоторые свойства, то тут сперва нужно указать привязанный к предмету блок, а уже потом свойства предмета. Следовательно, нам нужна ссылка на блок, которой у нас пока нет.
Так что нужно создать специальный класс, который будет хранить статические ссылки на наши блоки. Назову я его ModBlocks.java, что не очень оригинально, зато выражает суть.
И пишем туда такой код:
1 2 3 4 5 6 7 8 9 10 |
//ваш package import mod.astler.tutorial_mod_gs.TutorialGSMod; import net.minecraft.block.Block; import net.minecraftforge.registries.ObjectHolder; public class ModBlocks { @ObjectHolder("sun_bricks") public static Block SUN_BRICKS; } |
Где в ObjectHolder указано уникальное имя блока, на который и будет указывать ссылка.
Теперь регистрирует наш предмет, где первый параметр, это только что созданная переменная SUN_BRICKS. А так же второй — Item.Properties() где указываем нашу вкладку.
1 2 3 4 5 6 7 |
@SubscribeEvent public static void onRegisterItem(RegistryEvent.Register<Item> event) { event.getRegistry().registerAll( setup(new Item(new Item.Properties().group(MyModItemGroups.MOD_ITEM_GROUP).food(MyFoods.SAUSAGE)), "sausage"), setup(new BlockItem(ModBlocks.SUN_BRICKS, new Item.Properties().group(MyModItemGroups.MOD_ITEM_GROUP)), "sun_bricks") ); } |
Не забываем добавить модель и имя предмету.
Только в этот раз нам нужна модель блока, так как предмет и блок должны выглядеть одинаково, а потому в модели для предмета указываем прямую ссылку на модель блока.
1 2 3 |
{ "parent": "tutorial_mod_gs:block/sun_bricks" } |
Дословно если, мы сказали взять родителем этой модели уже готовую модель блока. Понятное дело, что текстуру заново добавлять не нужно. Ведь наш предмет использует модель блока, а модель блока уже имеет текстуру.
Запускаем!
Такс, теперь у блока есть свой предмет, а сам блок тоже. Для творческих извращений все готово, но что насчет выживания? Если блок сломать, то ничего не выпадет, да и создать его мы не сможем. Что же делать? Узнаем в следующем уроке!