tutorial:1.14:blockappearance
Table of Contents
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 { @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;
}
tutorial/1.14/blockappearance.txt · Last modified: 2020/01/17 14:04 by jamieswhiteshirt