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