zh_cn:tutorial:blockappearance
This is an old revision of the document!
操纵方块的外观
使方块透明
您可能已经注意到,即使块的纹理是透明的,它仍然看起来是不透明的。
要解决此问题,请覆盖getRenderLayer
并返回BlockRenderLayer.TRANSLUCENT
:
class MyBlock extends Block { @Override public BlockRenderLayer getRenderLayer() { return BlockRenderLayer.TRANSLUCENT; } [...] }
您可能还想使方块透明。 为此,请使用Material构造函数将blocksLight
设置为false。
class MyBlock extends Block { private static Material myMaterial = 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(myMaterial); } [...] }
使方块不可见
首先,我们需要使该方块看起来不可见。
为此,我们在块类中重写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.cuboid(0,0,0,0,0,0); }
zh_cn/tutorial/blockappearance.1576734784.txt.gz · Last modified: 2019/12/19 05:53 by lightcolour