diff --git a/patches/minecraft/net/minecraft/client/renderer/LevelRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/LevelRenderer.java.patch index 68a385fd0b..12a5c18fcb 100644 --- a/patches/minecraft/net/minecraft/client/renderer/LevelRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/LevelRenderer.java.patch @@ -61,7 +61,14 @@ multibuffersource = multibuffersource$buffersource; } -@@ -1226,6 +_,7 @@ +@@ -1220,12 +_,14 @@ + multibuffersource$buffersource.m_109912_(RenderType.m_110452_(TextureAtlas.f_118259_)); + multibuffersource$buffersource.m_109912_(RenderType.m_110458_(TextureAtlas.f_118259_)); + multibuffersource$buffersource.m_109912_(RenderType.m_110476_(TextureAtlas.f_118259_)); ++ net.minecraftforge.client.ForgeHooksClient.dispatchRenderStage(net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_ENTITIES, this, p_109600_, p_254120_, this.f_109477_, p_109604_, frustum); + profilerfiller.m_6182_("blockentities"); + + for(LevelRenderer.RenderChunkInfo levelrenderer$renderchunkinfo : this.f_194297_) { List list = levelrenderer$renderchunkinfo.f_109839_.m_112835_().m_112773_(); if (!list.isEmpty()) { for(BlockEntity blockentity1 : list) { @@ -93,6 +100,14 @@ this.f_172946_.m_112267_(blockentity, p_109601_, p_109600_, multibuffersource$buffersource); p_109600_.m_85849_(); } +@@ -1276,6 +_,7 @@ + this.f_109461_.m_91385_().m_83947_(false); + } + ++ net.minecraftforge.client.ForgeHooksClient.dispatchRenderStage(net.minecraftforge.client.event.RenderLevelStageEvent.Stage.AFTER_BLOCK_ENTITIES, this, p_109600_, p_254120_, this.f_109477_, p_109604_, frustum); + profilerfiller.m_6182_("destroyProgress"); + + for(Long2ObjectMap.Entry> entry : this.f_109409_.long2ObjectEntrySet()) { @@ -1291,7 +_,8 @@ p_109600_.m_85837_((double)blockpos2.m_123341_() - d0, (double)blockpos2.m_123342_() - d1, (double)blockpos2.m_123343_() - d2); PoseStack.Pose posestack$pose = p_109600_.m_85850_(); diff --git a/src/main/java/net/minecraftforge/client/event/RenderLevelStageEvent.java b/src/main/java/net/minecraftforge/client/event/RenderLevelStageEvent.java index a4900c2653..0557e215a4 100644 --- a/src/main/java/net/minecraftforge/client/event/RenderLevelStageEvent.java +++ b/src/main/java/net/minecraftforge/client/event/RenderLevelStageEvent.java @@ -169,6 +169,14 @@ public class RenderLevelStageEvent extends Event * Use this to render custom block-like geometry into the world. */ public static final Stage AFTER_CUTOUT_BLOCKS = register("after_cutout_blocks", RenderType.cutout()); + /** + * Use this to render custom block-like geometry into the world. + */ + public static final Stage AFTER_ENTITIES = register("after_entities", null); + /** + * Use this to render custom block-like geometry into the world. + */ + public static final Stage AFTER_BLOCK_ENTITIES = register("after_block_entities", null); /** * Use this to render custom block-like geometry into the world. * Due to how transparency sorting works, this stage may not work properly with translucency. If you intend to render translucency, diff --git a/src/test/java/net/minecraftforge/debug/client/rendering/RenderLevelStagesTest.java b/src/test/java/net/minecraftforge/debug/client/rendering/RenderLevelStagesTest.java new file mode 100644 index 0000000000..0a47b8adbf --- /dev/null +++ b/src/test/java/net/minecraftforge/debug/client/rendering/RenderLevelStagesTest.java @@ -0,0 +1,34 @@ +/* + * Copyright (c) Forge Development LLC and contributors + * SPDX-License-Identifier: LGPL-2.1-only + */ + +package net.minecraftforge.debug.client.rendering; + +import org.apache.logging.log4j.LogManager; + +import net.minecraftforge.client.event.RenderLevelStageEvent; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.common.Mod; + +@Mod("render_level_stages_test") +public class RenderLevelStagesTest +{ + public static final org.apache.logging.log4j.Logger LOGGER = LogManager.getLogger(); + + public RenderLevelStagesTest() + { + MinecraftForge.EVENT_BUS.addListener(this::onRenderLevelStages); + } + + private int count = 0; + public void onRenderLevelStages(RenderLevelStageEvent event) + { + if(count < 10) + { + LOGGER.info("Render Stage: " + event.getStage()); + if(event.getStage() == RenderLevelStageEvent.Stage.AFTER_WEATHER) + count++; + } + } +} diff --git a/src/test/resources/META-INF/mods.toml b/src/test/resources/META-INF/mods.toml index 590550228d..1a4a1b240d 100644 --- a/src/test/resources/META-INF/mods.toml +++ b/src/test/resources/META-INF/mods.toml @@ -275,6 +275,8 @@ modId="data_pack_registries_test" [[mods]] modId="creative_mode_tab_test" [[mods]] +modId="render_level_stages_test" +[[mods]] modId="trade_with_villager_event_test"