zh_cn:tutorial:blockappearance
This is an old revision of the document!
操纵方块的外观
这是教程的1.15版本。如需1.14版本,请参考操纵方块的外观(1.14)。
使方块透明
您可能已经注意到,即使方块的材质是透明的,它仍然看起来是不透明的。如需解决,请将方块的渲染层设为cutout或transparent。
在客户端模组初始化器(initializer)中,添加:
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.1610782665.txt.gz · Last modified: 2021/01/16 07:37 by solidblock