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 FabricBlockStateModel.emitQuads(QuadEmitter, BlockAndTintGetter, BlockPos, BlockState, RandomSource, Predicate), which happens in SectionCompiler in vanilla; this code is not patched automatically. Renderers must also ensure that the following vanilla methods support FabricBlockStateModel.emitQuads(QuadEmitter, BlockAndTintGetter, BlockPos, BlockState, RandomSource, Predicate); 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 FabricModelBlockRenderer or FabricBlockRenderDispatcher.

  • 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 pose, BlockMultiBufferSource bufferSource, net.minecraft.client.renderer.block.model.BlockStateModel model, float red, float green, float blue, int light, int overlay, net.minecraft.world.level.BlockAndTintGetter level, net.minecraft.core.BlockPos pos, net.minecraft.world.level.block.state.BlockState state)
     
    void
    render(net.minecraft.client.renderer.block.ModelBlockRenderer blockRenderer, net.minecraft.world.level.BlockAndTintGetter level, 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 poseStack, BlockMultiBufferSource bufferSource, boolean cull, long seed, int overlay)
     
    void
    renderBlockAsEntity(net.minecraft.client.renderer.block.BlockRenderDispatcher renderDispatcher, net.minecraft.world.level.block.state.BlockState state, com.mojang.blaze3d.vertex.PoseStack poseStack, net.minecraft.client.renderer.MultiBufferSource bufferSource, int light, int overlay, net.minecraft.world.level.BlockAndTintGetter level, net.minecraft.core.BlockPos pos)
     
    void
    setLayerRenderTypeGetter(net.minecraft.client.renderer.item.ItemStackRenderState.LayerRenderState layer, ItemRenderTypeGetter renderTypeGetter)