User Tools

Site Tools






Blocks and Block Entities



World Generation

Recipe Types




Dynamic Data Generation

Tutorials for Minecraft 1.15

Tutorials for Minecraft 1.14

Contribute to Fabric

Extremely Strange People


Manipulating a Block's appearance

This is the 1.15+ (1.16 and 1.17 work fine too) version of this tutorial. For the 1.14 version, see Manipulating a Block's appearance (1.14).

Making a block transparent

You may have noticed that even if your block's texture is transparent, it still looks opaque. To fix this, you need to set your block's render layer to cutout or transparent.

In a client-sided mod initializer, add:

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

You probably also want to make your block transparent. To do that, use the nonOpaque method on your block settings.

class MyBlock extends Block {
    public MyBlock() {

If you do not mark your block as non-opaque like this, then block faces behind the block will not render and you will be able to see through the world.

Be sure to add your client entrypoint to fabric.mod.json. You can do this like so:

  "entrypoints": {
    "main": [
    "client": [

Note: For non-transparent blocks that are not full, you may have to ovverride the getOutlineShape method to return a non-full shape to avoid seeing through the world.

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/blockappearance.txt · Last modified: 2022/01/30 02:43 by solidblock