User Tools

Site Tools


Manipulating a Block's appearance (1.14)

This is the 1.14 version of this tutorial. For the latest version, see Manipulating a Block's appearance.

Making a block transparent

You may have noticed that even if your block's texture is transparent, it still looks opaque. To fix this, override getRenderLayer and return BlockRenderLayer.TRANSLUCENT:

class MyBlock extends Block {
    public BlockRenderLayer getRenderLayer() {
        return BlockRenderLayer.TRANSLUCENT;

You probably also want to make your block transparent. To do that, use the Material constructor to set blocksLight to false.

class MyBlock extends Block {
     private static final Material MY_MATERIAL = new Material(
            MaterialColor.AIR, // materialColor,
            false, // isLiquid,
            false, // isSolid,
            true, // blocksMovement,
            false, // blocksLight,  <----- Important part, the other parts change as you wish
            true, // !requiresTool,
            false, // burnable,
            false, // replaceable,
            PistonBehavior.NORMAL // pistonBehavior
    public MyBlock() {

Making a block invisible

First we need to make the block appear invisible. To do this we override getRenderType in our block class and return BlockRenderType.INVISIBLE:

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

We then need to make our block unselectable by making its outline shape be non-existent. So override getOutlineShape and return an empty VoxelShape:

    public VoxelShape getOutlineShape(BlockState blockState, BlockView blockView, BlockPos blockPos, EntityContext entityContext) {
       return VoxelShapes.empty;
tutorial/1.14/blockappearance.txt · Last modified: 2020/01/17 14:04 by jamieswhiteshirt