User Tools

Site Tools


zh_cn:tutorial:blockappearance

This is an old revision of the document!


操纵方块的外观

这是教程的1.15版本。如需1.14版本,请参考操纵方块的外观(1.14)

使方块透明

您可能已经注意到,即使方块的材质是透明的,它仍然看起来是不透明的。如需解决,请将方块的渲染层设为cutout或transparent。

在客户端模组中,添加:

BlockRenderLayerMap.INSTANCE.putBlock(ExampleMod.MY_BLOCK, RenderLayer.getCutout());
// Replace `RenderLayer.getCutout()` with `RenderLayer.getTranslucent()` if you have a translucent texture.

您可能还想使方块透明。为此,可在方块设置中使用nonOpaque方法。

class MyBlock extends Block {
    public MyBlock() {
        super(Settings.of(Material.STONE).nonOpaque());
    }
 
    [...]
}

如果你不像这样把方块标记为非不透明的,则方块后面的面不会渲染,你将会“看穿”整个世界(到虚空或渲染范围之外之类的)。

使方块不可见

首先,我们需要使该方块看起来不可见。 为此,我们在方块类中重写getRenderType并返回BlockRenderType.INVISIBLE

    @Override
    public BlockRenderType getRenderType(BlockState blockState) {
        return BlockRenderType.INVISIBLE;
    }

然后,我们需要通过使其outlineShape不存在来使我们的方块不能被选中。 因此,覆盖getOutlineShape并返回一个空的VoxelShape

    @Override
    public VoxelShape getOutlineShape(BlockState blockState, BlockView blockView, BlockPos blockPos, EntityContext entityContext) {
       return VoxelShapes.empty();
    }
zh_cn/tutorial/blockappearance.1605187160.txt.gz · Last modified: 2020/11/12 13:19 by solidblock