Class RenderLevelStageEvent
java.lang.Object
net.neoforged.bus.api.Event
net.neoforged.neoforge.client.event.RenderLevelStageEvent
- Direct Known Subclasses:
RenderLevelStageEvent.AfterEntities,RenderLevelStageEvent.AfterLevel,RenderLevelStageEvent.AfterOpaqueBlocks,RenderLevelStageEvent.AfterParticles,RenderLevelStageEvent.AfterSky,RenderLevelStageEvent.AfterTranslucentBlocks,RenderLevelStageEvent.AfterTripwireBlocks,RenderLevelStageEvent.AfterWeather
public abstract class RenderLevelStageEvent
extends net.neoforged.bus.api.Event
Fires at various times during LevelRenderer.renderLevel(com.mojang.blaze3d.resource.GraphicsResourceAllocator, net.minecraft.client.DeltaTracker, boolean, net.minecraft.client.Camera, org.joml.Matrix4f, org.joml.Matrix4f, org.joml.Matrix4f, com.mojang.blaze3d.buffers.GpuBufferSlice, org.joml.Vector4f, boolean) and GameRenderer.renderLevel(net.minecraft.client.DeltaTracker).
Custom render state used in the various stages must be extracted in
ExtractLevelRenderStateEvent and
stored in the provided LevelRenderState
The sub-events are not cancellable.
The sub-events are fired on the main NeoForge event bus, only on the logical client.
The sub-events are fired in the following order:
RenderLevelStageEvent.AfterSky,
RenderLevelStageEvent.AfterOpaqueBlocks,
RenderLevelStageEvent.AfterEntities,
RenderLevelStageEvent.AfterTranslucentBlocks,
RenderLevelStageEvent.AfterTripwireBlocks,
RenderLevelStageEvent.AfterParticles,
RenderLevelStageEvent.AfterWeather,
RenderLevelStageEvent.AfterLevel
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classFired within LevelRenderer.addMainPass(com.mojang.blaze3d.framegraph.FrameGraphBuilder, net.minecraft.client.renderer.culling.Frustum, org.joml.Matrix4f, com.mojang.blaze3d.buffers.GpuBufferSlice, boolean, net.minecraft.client.renderer.state.LevelRenderState, net.minecraft.client.DeltaTracker, net.minecraft.util.profiling.ProfilerFiller) after entities and block entities have been rendered.static classFired within GameRenderer.renderLevel(net.minecraft.client.DeltaTracker) after LevelRenderer.renderLevel(com.mojang.blaze3d.resource.GraphicsResourceAllocator, net.minecraft.client.DeltaTracker, boolean, net.minecraft.client.Camera, org.joml.Matrix4f, org.joml.Matrix4f, org.joml.Matrix4f, com.mojang.blaze3d.buffers.GpuBufferSlice, org.joml.Vector4f, boolean) is called.static classFired early in LevelRenderer.addMainPass(com.mojang.blaze3d.framegraph.FrameGraphBuilder, net.minecraft.client.renderer.culling.Frustum, org.joml.Matrix4f, com.mojang.blaze3d.buffers.GpuBufferSlice, boolean, net.minecraft.client.renderer.state.LevelRenderState, net.minecraft.client.DeltaTracker, net.minecraft.util.profiling.ProfilerFiller) after solid and cutout chunk geometry has been rendered.static classFired at the end of LevelRenderer.addParticlesPass(com.mojang.blaze3d.framegraph.FrameGraphBuilder, com.mojang.blaze3d.buffers.GpuBufferSlice) after particles have been rendered.static classFired at the end of LevelRenderer.addSkyPass(com.mojang.blaze3d.framegraph.FrameGraphBuilder, net.minecraft.client.Camera, com.mojang.blaze3d.buffers.GpuBufferSlice) after the sky has been rendered.static classFired within LevelRenderer.addMainPass(com.mojang.blaze3d.framegraph.FrameGraphBuilder, net.minecraft.client.renderer.culling.Frustum, org.joml.Matrix4f, com.mojang.blaze3d.buffers.GpuBufferSlice, boolean, net.minecraft.client.renderer.state.LevelRenderState, net.minecraft.client.DeltaTracker, net.minecraft.util.profiling.ProfilerFiller) after translucent chunk geometry has been rendered.static classFired near the end of LevelRenderer.addMainPass(com.mojang.blaze3d.framegraph.FrameGraphBuilder, net.minecraft.client.renderer.culling.Frustum, org.joml.Matrix4f, com.mojang.blaze3d.buffers.GpuBufferSlice, boolean, net.minecraft.client.renderer.state.LevelRenderState, net.minecraft.client.DeltaTracker, net.minecraft.util.profiling.ProfilerFiller) after tripwire chunk geometry has been rendered.static classFired near the end of LevelRenderer.addWeatherPass(com.mojang.blaze3d.framegraph.FrameGraphBuilder, net.minecraft.world.phys.Vec3, com.mojang.blaze3d.buffers.GpuBufferSlice) after weather has been rendered, before world border rendering. -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final LevelRendererprivate final LevelRenderStateprivate final Matrix4fprivate final PoseStackprivate final Iterable<? extends IRenderableSection> -
Constructor Summary
ConstructorsConstructorDescriptionRenderLevelStageEvent(LevelRenderer levelRenderer, LevelRenderState levelRenderState, @Nullable PoseStack poseStack, Matrix4f modelViewMatrix, Iterable<? extends IRenderableSection> renderableSections) -
Method Summary
Modifier and TypeMethodDescriptionReturns the level renderer.Returns the level render state.Returns the model view matrix used for rendering.Returns the pose stack used for rendering.Iterable<? extends IRenderableSection> Returns an iterable of all visible sections.
-
Field Details
-
levelRenderer
-
levelRenderState
-
poseStack
-
modelViewMatrix
-
renderableSections
-
-
Constructor Details
-
RenderLevelStageEvent
public RenderLevelStageEvent(LevelRenderer levelRenderer, LevelRenderState levelRenderState, @Nullable @Nullable PoseStack poseStack, Matrix4f modelViewMatrix, Iterable<? extends IRenderableSection> renderableSections)
-
-
Method Details
-
getLevelRenderer
Returns the level renderer.- Returns:
- the level renderer
-
getLevelRenderState
Returns the level render state.- Returns:
- the level render state
-
getPoseStack
Returns the pose stack used for rendering.- Returns:
- the pose stack used for rendering
-
getModelViewMatrix
Returns the model view matrix used for rendering.- Returns:
- the model view matrix used for rendering
-
getRenderableSections
Returns an iterable of all visible sections.Calling
Iterable.forEach(Consumer)on the returned iterable allows the underlying renderer to optimize how it fetches the visible sections, and is recommended.
-