Interface Renderer


public interface Renderer
Interface for rendering plug-ins that provide enhanced capabilities for model lighting, buffering and rendering. Such plug-ins implement the enhanced model rendering interfaces specified by the Fabric API.

Renderers must ensure that terrain buffering supports

invalid reference
BlockStateModel#emitQuads
, which happens in SectionCompiler in vanilla; this code is not patched automatically. Renderers must also ensure that the following vanilla methods support
invalid reference
BlockStateModel#emitQuads
; these methods are not patched automatically.
  • ModelBlockRenderer.renderModel(PoseStack.Pose, VertexConsumer, BlockStateModel, float, float, float, int, int)
  • BlockRenderDispatcher.renderBreakingTexture(BlockState, BlockPos, BlockAndTintGetter, PoseStack, VertexConsumer)
  • BlockRenderDispatcher.renderSingleBlock(BlockState, PoseStack, MultiBufferSource, int, int)

All other places in vanilla code that invoke BlockStateModel.collectParts(RandomSource, List), BlockStateModel.collectParts(RandomSource), or ModelBlockRenderer.renderModel(PoseStack.Pose, VertexConsumer, BlockStateModel, float, float, float, int, int) are, where appropriate, patched automatically to invoke the corresponding method above or the corresponding method in FabricBlockModelRenderer or FabricBlockRenderManager.

  • Method Summary

    Modifier and Type
    Method
    Description
    static Renderer
    get()
    Access to the current Renderer for creating and retrieving mesh builders and materials.
    getLayerRenderStateEmitter(net.minecraft.client.renderer.item.ItemStackRenderState.LayerRenderState layer)
     
    Obtain a new MutableMesh instance to build optimized meshes and create baked models with enhanced features.
    static void
    register(Renderer renderer)
    Rendering extension mods must implement Renderer and call this method during initialization.
    void
    render(com.mojang.blaze3d.vertex.PoseStack.Pose matrices, BlockVertexConsumerProvider vertexConsumers, net.minecraft.client.renderer.block.model.BlockStateModel model, float red, float green, float blue, int light, int overlay, net.minecraft.world.level.BlockAndTintGetter blockView, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state)
     
    void
    render(net.minecraft.client.renderer.block.ModelBlockRenderer modelRenderer, net.minecraft.world.level.BlockAndTintGetter blockView, net.minecraft.client.renderer.block.model.BlockStateModel model, net.minecraft.world.level.block.state.BlockState state, net.minecraft.core.BlockPos pos, com.mojang.blaze3d.vertex.PoseStack matrices, BlockVertexConsumerProvider vertexConsumers, boolean cull, long seed, int overlay)
     
    void
    renderBlockAsEntity(net.minecraft.client.renderer.block.BlockRenderDispatcher renderManager, net.minecraft.world.level.block.state.BlockState state, com.mojang.blaze3d.vertex.PoseStack matrices, net.minecraft.client.renderer.MultiBufferSource vertexConsumers, int light, int overlay, net.minecraft.world.level.BlockAndTintGetter blockView, net.minecraft.core.BlockPos pos)
     
    void
    setLayerRenderTypeGetter(net.minecraft.client.renderer.item.ItemStackRenderState.LayerRenderState layer, ItemRenderTypeGetter renderTypeGetter)