|
13 | 13 | import meteordevelopment.meteorclient.events.render.GetFovEvent; |
14 | 14 | import meteordevelopment.meteorclient.events.render.Render3DEvent; |
15 | 15 | import meteordevelopment.meteorclient.events.render.RenderAfterWorldEvent; |
| 16 | +import meteordevelopment.meteorclient.gui.WidgetScreen; |
16 | 17 | import meteordevelopment.meteorclient.mixininterface.IVec3d; |
17 | 18 | import meteordevelopment.meteorclient.renderer.MeteorRenderPipelines; |
18 | 19 | import meteordevelopment.meteorclient.renderer.Renderer3D; |
|
28 | 29 | import meteordevelopment.meteorclient.utils.render.NametagUtils; |
29 | 30 | import meteordevelopment.meteorclient.utils.render.RenderUtils; |
30 | 31 | import net.minecraft.client.MinecraftClient; |
| 32 | +import net.minecraft.client.gui.DrawContext; |
| 33 | +import net.minecraft.client.gui.render.GuiRenderer; |
| 34 | +import net.minecraft.client.gui.render.state.GuiRenderState; |
31 | 35 | import net.minecraft.client.render.Camera; |
32 | 36 | import net.minecraft.client.render.GameRenderer; |
33 | 37 | import net.minecraft.client.render.RenderTickCounter; |
| 38 | +import net.minecraft.client.render.fog.FogRenderer; |
34 | 39 | import net.minecraft.client.util.math.MatrixStack; |
35 | 40 | import net.minecraft.entity.Entity; |
36 | 41 | import net.minecraft.item.ItemStack; |
@@ -78,6 +83,18 @@ public abstract class GameRendererMixin { |
78 | 83 | @Shadow |
79 | 84 | protected abstract void tiltViewWhenHurt(MatrixStack matrices, float tickDelta); |
80 | 85 |
|
| 86 | + @Shadow |
| 87 | + @Final |
| 88 | + private GuiRenderer guiRenderer; |
| 89 | + |
| 90 | + @Shadow |
| 91 | + @Final |
| 92 | + private FogRenderer fogRenderer; |
| 93 | + |
| 94 | + @Shadow |
| 95 | + @Final |
| 96 | + private GuiRenderState guiState; |
| 97 | + |
81 | 98 | @Inject(method = "renderWorld", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", args = {"ldc=hand"})) |
82 | 99 | private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Local(ordinal = 0) Matrix4f projection, @Local(ordinal = 2) Matrix4f view, @Local(ordinal = 1) float tickDelta, @Local MatrixStack matrixStack) { |
83 | 100 | if (!Utils.canUpdate()) return; |
@@ -125,6 +142,23 @@ private void onRenderWorldTail(CallbackInfo info) { |
125 | 142 | MeteorClient.EVENT_BUS.post(RenderAfterWorldEvent.get()); |
126 | 143 | } |
127 | 144 |
|
| 145 | + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/render/GuiRenderer;render(Lcom/mojang/blaze3d/buffers/GpuBufferSlice;)V", shift = At.Shift.AFTER)) |
| 146 | + private void onRenderGui(RenderTickCounter tickCounter, boolean tick, CallbackInfo info) { |
| 147 | + if (client.currentScreen instanceof WidgetScreen widgetScreen) { |
| 148 | + guiState.clear(); |
| 149 | + var context = new DrawContext(client, guiState); |
| 150 | + |
| 151 | + var mouseX = (int) client.mouse.getScaledX(client.getWindow()); |
| 152 | + var mouseY = (int) client.mouse.getScaledY(client.getWindow()); |
| 153 | + |
| 154 | + widgetScreen.renderCustom(context, mouseX, mouseY, tickCounter.getDynamicDeltaTicks()); |
| 155 | + |
| 156 | + RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(client.getFramebuffer().getDepthAttachment(), 1.0); |
| 157 | + guiRenderer.render(fogRenderer.getFogBuffer(FogRenderer.FogType.NONE)); |
| 158 | + guiRenderer.incrementFrame(); |
| 159 | + } |
| 160 | + } |
| 161 | + |
128 | 162 | @ModifyReturnValue(method = "findCrosshairTarget", at = @At("RETURN")) |
129 | 163 | private HitResult onUpdateTargetedEntity(HitResult original, @Local HitResult hitResult) { |
130 | 164 | if (Modules.get().get(NoMiningTrace.class).canWork(original instanceof EntityHitResult ehr ? ehr.getEntity() : null) && hitResult.getType() == HitResult.Type.BLOCK) { |
|
0 commit comments