//У меня тут немного лишнего, под свои нужды.
/*
name - id блока
block - непосредственно блок
props - свойства блока-предмета (в инвентаре)
desc - строки описания
foil - эффект зачарования
*/
public static Block createBlock(String name, Supplier<Block> block, @Nullable Item.Properties props,
@Nullable List<Component> desc, boolean foil) {
//Регистрация блока
Block register = Registry.register(BuiltInRegistries.BLOCK, new ResourceLocation(WizzMod.MODID, name), block.get());
//Регистрация предмета. Если не назначен свой Item.Properties, делаем заглушку
//final необходим, т.к. регистрация проходит только для неизменяемых значений
//Здесь его можно было опустить, т.к. нигде дальше он не меняет, но я оставил, дабы случайно нигде ничего не сломать потом
final Item.Properties properties = props != null ? props : new Item.Properties();
//Регаем предмет
//Использую lambda, поскольку мне лень переделывать кучу других итемов
Items.createItem(name, () -> new BlockItem(register, properties) {
//Для добавления описания блоку в инвентаре
@Override
public void appendHoverText(ItemStack stack, @Nullable Level level,
List<Component> list, TooltipFlag flag) {
if(desc != null)
list.addAll(desc);
super.appendHoverText(stack, level, list, flag);
}
//По угару хотел посмотреть как выглядит. Понравилось. Оставил.
@Override
public boolean isFoil(ItemStack stack) {
return foil;
}
});
//Возвращаем блок
return register;
}
//Пример использования
public static final Block LOL = createBlock("lol", () -> new Block(BlockBehavior.Properties.of()),
null, null, true);