zh_cn:tutorial:blockappearance
This is an old revision of the document!
操纵方块的外观
这是教程的1.15版本。如需1.14版本,请参考操纵方块的外观(1.14)。
使方块透明
您可能已经注意到,即使方块的材质是透明的,它仍然看起来是不透明的。如需解决,请将方块的渲染层设为cutout或transparent。
在客户端模组初始化器中,添加:
BlockRenderLayerMap.INSTANCE.putBlock(ExampleMod.MY_BLOCK, RenderLayer.getCutout()); // 如果有半透明纹理,可以将 RenderLayer.getCutout() 替换为 RenderLayer.getTranslucent()。
您可能还想使方块透明。为此,可在方块设置中使用 nonOpaque
方法。
class MyBlock extends Block { public MyBlock() { super(Settings.of(Material.STONE).nonOpaque()); } [...] }
如果你不像这样把方块标记为非不透明的,则方块后面的面不会渲染,你将会“看穿”整个世界(到虚空或渲染范围之外之类的)。
使方块不可见
首先,我们需要使该方块看起来不可见。
为此,我们在方块类中重写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.empty(); }
zh_cn/tutorial/blockappearance.1631853811.txt.gz · Last modified: 2021/09/17 04:43 by solidblock