From 202ae508203b88c61b35900383adcb8feceea222 Mon Sep 17 00:00:00 2001 From: Nightenom <17338378+Nightenom@users.noreply.github.com> Date: Wed, 11 Mar 2020 08:00:21 +0100 Subject: [PATCH] Add projection matrix to RenderWorldLastEvent (#6536) --- .../client/renderer/GameRenderer.java.patch | 2 +- .../client/ForgeHooksClient.java | 6 +++++ .../client/event/RenderWorldLastEvent.java | 26 +++++++++++++++++++ 3 files changed, 33 insertions(+), 1 deletion(-) diff --git a/patches/minecraft/net/minecraft/client/renderer/GameRenderer.java.patch b/patches/minecraft/net/minecraft/client/renderer/GameRenderer.java.patch index 7cdecaf3d..bdfb8afd0 100644 --- a/patches/minecraft/net/minecraft/client/renderer/GameRenderer.java.patch +++ b/patches/minecraft/net/minecraft/client/renderer/GameRenderer.java.patch @@ -40,7 +40,7 @@ p_228378_4_.func_227863_a_(Vector3f.field_229181_d_.func_229187_a_(activerenderinfo.func_216778_f() + 180.0F)); this.field_78531_r.field_71438_f.func_228426_a_(p_228378_4_, p_228378_1_, p_228378_2_, flag, activerenderinfo, this, this.field_78513_d, matrix4f); + this.field_78531_r.func_213239_aq().func_219895_b("forge_render_last"); -+ net.minecraftforge.client.ForgeHooksClient.dispatchRenderLast(this.field_78531_r.field_71438_f, p_228378_4_, p_228378_2_); ++ net.minecraftforge.client.ForgeHooksClient.dispatchRenderLast(this.field_78531_r.field_71438_f, p_228378_4_, p_228378_1_, matrix4f, p_228378_2_); this.field_78531_r.func_213239_aq().func_219895_b("hand"); if (this.field_175074_C) { RenderSystem.clear(256, Minecraft.field_142025_a); diff --git a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java index c23e50d16..06c329c54 100644 --- a/src/main/java/net/minecraftforge/client/ForgeHooksClient.java +++ b/src/main/java/net/minecraftforge/client/ForgeHooksClient.java @@ -172,11 +172,17 @@ public class ForgeHooksClient return MinecraftForge.EVENT_BUS.post(new DrawHighlightEvent(context, info, target, partialTicks, matrix, buffers)); } + @Deprecated // TODO: Remove in 1.16 public static void dispatchRenderLast(WorldRenderer context, MatrixStack mat, float partialTicks) { MinecraftForge.EVENT_BUS.post(new RenderWorldLastEvent(context, mat, partialTicks)); } + public static void dispatchRenderLast(WorldRenderer context, MatrixStack mat, float partialTicks, Matrix4f projectionMatrix, long finishTimeNano) + { + MinecraftForge.EVENT_BUS.post(new RenderWorldLastEvent(context, mat, partialTicks, projectionMatrix, finishTimeNano)); + } + public static boolean renderSpecificFirstPersonHand(Hand hand, MatrixStack mat, IRenderTypeBuffer buffers, int light, float partialTicks, float interpPitch, float swingProgress, float equipProgress, ItemStack stack) { return MinecraftForge.EVENT_BUS.post(new RenderHandEvent(hand, mat, buffers, light, partialTicks, interpPitch, swingProgress, equipProgress, stack)); diff --git a/src/main/java/net/minecraftforge/client/event/RenderWorldLastEvent.java b/src/main/java/net/minecraftforge/client/event/RenderWorldLastEvent.java index 12810f014..dacef4b65 100644 --- a/src/main/java/net/minecraftforge/client/event/RenderWorldLastEvent.java +++ b/src/main/java/net/minecraftforge/client/event/RenderWorldLastEvent.java @@ -21,6 +21,7 @@ package net.minecraftforge.client.event; import com.mojang.blaze3d.matrix.MatrixStack; +import net.minecraft.client.renderer.Matrix4f; import net.minecraft.client.renderer.WorldRenderer; public class RenderWorldLastEvent extends net.minecraftforge.eventbus.api.Event @@ -28,11 +29,26 @@ public class RenderWorldLastEvent extends net.minecraftforge.eventbus.api.Event private final WorldRenderer context; private final MatrixStack mat; private final float partialTicks; + private final Matrix4f projectionMatrix; + private final long finishTimeNano; + + @Deprecated // TODO: Remove in 1.16 public RenderWorldLastEvent(WorldRenderer context, MatrixStack mat, float partialTicks) { this.context = context; this.mat = mat; this.partialTicks = partialTicks; + this.projectionMatrix = null; + this.finishTimeNano = 0; + } + + public RenderWorldLastEvent(WorldRenderer context, MatrixStack mat, float partialTicks, Matrix4f projectionMatrix, long finishTimeNano) + { + this.context = context; + this.mat = mat; + this.partialTicks = partialTicks; + this.projectionMatrix = projectionMatrix; + this.finishTimeNano = finishTimeNano; } public WorldRenderer getContext() @@ -49,4 +65,14 @@ public class RenderWorldLastEvent extends net.minecraftforge.eventbus.api.Event { return partialTicks; } + + public Matrix4f getProjectionMatrix() + { + return projectionMatrix; + } + + public long getFinishTimeNano() + { + return finishTimeNano; + } }