====== Manipulating a Block's appearance (1.14) ====== //This is the 1.14 version of this tutorial. For the latest version, see [[tutorial:blockappearance|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 { @Environment(EnvType.CLIENT) @Override 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() { super(Settings.of(MY_MATERIAL)); } [...] } ===== 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'': @Override 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'': @Override public VoxelShape getOutlineShape(BlockState blockState, BlockView blockView, BlockPos blockPos, EntityContext entityContext) { return VoxelShapes.empty; }