Перейти к содержанию

Создание блока#

Основа#

Создаём класс для нашего блока в пакете ru.mcmodding.fabrictut.block и наследуем Block:

package ru.mcmodding.fabrictut.block;

import net.minecraft.block.Block;

public class WhiteStoneBlock extends Block {
    public WhiteStoneBlock(Settings settings) {
        super(settings);
    }

    @Override
    public float getBlastResistance() {
        return 4.0F;            // взрывоустойчивость
    }
}

Регистрация#

Создадим класс для блоков и импортируем туда статичный метод из класса для работы с реестром, а так же зарегистрируем сам блок:

package ru.mcmodding.fabrictut.block;

import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
import net.minecraft.block.Block;
import net.minecraft.block.Material;

import static ru.mcmodding.fabrictut.util.FabricTutRegistry.registerBlock;

public class FTutBlocks {

    public static final Block WHITE_STONE = registerBlock("white_stone", new WhiteStoneBlock(FabricBlockSettings.of(Material.STONE)));

    public static void init() {}
}
Material.STONE означает материал блока. Теперь нам необходимо зарегистрировать предмет для блока. Вернемся в класс наших предметов и добавим эту строку:
    public static final Item WHITE_STONE = registerItem("white_stone", new BlockItem(FTutBlocks.WHITE_STONE, new FabricItemSettings()));
Где FTutBlocks.WHITE_STONE - наш блок.

Не забываем про FTutBlocks.init(); в главном классе мода.

Отображение в игре#

Если мы сейчас зайдем в игру, наш блок не будет иметь модели и текстуры. Поэтому нам необходимо создать блокстейт (blockstate), модель и текстуру.

По пути assets/<mod_id>/blockstates создаем white_stone.json с таким содержимым:

{
  "variants": {
    "": {
      "model": "fabrictut:block/white_stone"
    }
  }
}
Затем создаем white_stone.json по пути assets/<mod_id>/models/block:
{
  "parent": "minecraft:block/cube_all",
  "textures": {
    "all": "fabrictut:block/white_stone"
  }
}
Текстуру надо положить в assets/<mod_id>/textures/block.

К слову, для блоков в руках нужно создавать модель отдельно, иначе отображаться блок будет нормально только когда он поставлен. Для этого нужно просто создать там же где и остальные модели предметов файл с ID нашего блока (white_stone.json) и заполнить вот так:

{
  "parent": "fabrictut:block/white_stone"
}

Теперь игру можно запустить. блок в игре