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