Skip to content

7.3 Block 与 Blockstate

介绍

方块模型由两部分组成:BlockModel和BlockState。 前者决定了该方块的手持时的渲染。后者决定在世界中的渲染形态。 缺失前者:无论如何都是紫黑块。缺失后者:放在世界当中时,会变成紫黑块。

使用

当美工给你发来了一个blockbench导出的物品/方块模型json文件时,就可以继承BlockStateProvider为其生成对应的blockstate

public class ModBlockState extends BlockStateProvider {
    public ModBlockState(PackOutput output, String modid, ExistingFileHelper exFileHelper) {
        super(output, modid, exFileHelper);
    }

    @Override
    protected void registerStatesAndModels() {

    }
}

比如你需要生成一个四个方向旋转的blockstate,就可以用horizontalBlock方法

    @Override
    protected void registerStatesAndModels() {
        this.horizontalBlock(BlockRegistry.Grill.get(), new ModelFile.UncheckedModelFile(new ResourceLocation(MODID,"block/grill")));
    }

运行runData后,就有一个生成好的blockstate文件了

附录

这里有原版的方法对应生成的模型模板skyinr的Datagen教程