|
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; |
|
25 | 26 | import meteordevelopment.meteorclient.systems.modules.world.HighwayBuilder; |
26 | 27 | import meteordevelopment.meteorclient.utils.Utils; |
27 | 28 | import meteordevelopment.meteorclient.utils.entity.fakeplayer.FakePlayerEntity; |
28 | | -import meteordevelopment.meteorclient.utils.render.CustomBannerGuiElementRenderer; |
29 | 29 | import meteordevelopment.meteorclient.utils.render.NametagUtils; |
30 | 30 | import meteordevelopment.meteorclient.utils.render.RenderUtils; |
31 | 31 | import net.minecraft.client.MinecraftClient; |
32 | | -import net.minecraft.client.gui.render.SpecialGuiElementRenderer; |
33 | | -import net.minecraft.client.render.BufferBuilderStorage; |
| 32 | +import net.minecraft.client.gui.DrawContext; |
34 | 33 | import net.minecraft.client.render.Camera; |
35 | 34 | import net.minecraft.client.render.GameRenderer; |
36 | 35 | import net.minecraft.client.render.RenderTickCounter; |
| 36 | +import net.minecraft.client.render.fog.FogRenderer; |
37 | 37 | import net.minecraft.client.util.math.MatrixStack; |
38 | 38 | import net.minecraft.entity.Entity; |
39 | 39 | import net.minecraft.item.ItemStack; |
|
48 | 48 | import org.spongepowered.asm.mixin.Unique; |
49 | 49 | import org.spongepowered.asm.mixin.injection.At; |
50 | 50 | import org.spongepowered.asm.mixin.injection.Inject; |
51 | | -import org.spongepowered.asm.mixin.injection.ModifyArg; |
52 | 51 | import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; |
53 | 52 |
|
54 | | -import java.util.ArrayList; |
55 | | -import java.util.List; |
56 | | - |
57 | 53 | @Mixin(GameRenderer.class) |
58 | 54 | public abstract class GameRendererMixin { |
59 | 55 | @Shadow |
@@ -97,6 +93,18 @@ public abstract class GameRendererMixin { |
97 | 93 | return List.of(list.toArray(new SpecialGuiElementRenderer<?>[0])); |
98 | 94 | } |
99 | 95 |
|
| 96 | + @Shadow |
| 97 | + @Final |
| 98 | + private GuiRenderer guiRenderer; |
| 99 | + |
| 100 | + @Shadow |
| 101 | + @Final |
| 102 | + private FogRenderer fogRenderer; |
| 103 | + |
| 104 | + @Shadow |
| 105 | + @Final |
| 106 | + private GuiRenderState guiState; |
| 107 | + |
100 | 108 | @Inject(method = "renderWorld", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", args = {"ldc=hand"})) |
101 | 109 | private void onRenderWorld(RenderTickCounter tickCounter, CallbackInfo ci, @Local(ordinal = 0) Matrix4f projection, @Local(ordinal = 1) Matrix4f position, @Local(ordinal = 1) float tickDelta, @Local MatrixStack matrixStack) { |
102 | 110 | if (!Utils.canUpdate()) return; |
@@ -144,6 +152,23 @@ private void onRenderWorldTail(CallbackInfo info) { |
144 | 152 | MeteorClient.EVENT_BUS.post(RenderAfterWorldEvent.get()); |
145 | 153 | } |
146 | 154 |
|
| 155 | + @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)) |
| 156 | + private void onRenderGui(RenderTickCounter tickCounter, boolean tick, CallbackInfo info) { |
| 157 | + if (client.currentScreen instanceof WidgetScreen widgetScreen) { |
| 158 | + guiState.clear(); |
| 159 | + var context = new DrawContext(client, guiState); |
| 160 | + |
| 161 | + var mouseX = (int) client.mouse.getScaledX(client.getWindow()); |
| 162 | + var mouseY = (int) client.mouse.getScaledY(client.getWindow()); |
| 163 | + |
| 164 | + widgetScreen.renderCustom(context, mouseX, mouseY, tickCounter.getDynamicDeltaTicks()); |
| 165 | + |
| 166 | + RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(client.getFramebuffer().getDepthAttachment(), 1.0); |
| 167 | + guiRenderer.render(fogRenderer.getFogBuffer(FogRenderer.FogType.NONE)); |
| 168 | + guiRenderer.incrementFrame(); |
| 169 | + } |
| 170 | + } |
| 171 | + |
147 | 172 | @ModifyReturnValue(method = "findCrosshairTarget", at = @At("RETURN")) |
148 | 173 | private HitResult onUpdateTargetedEntity(HitResult original, @Local HitResult hitResult) { |
149 | 174 | if (Modules.get().get(NoMiningTrace.class).canWork(original instanceof EntityHitResult ehr ? ehr.getEntity() : null) && hitResult.getType() == HitResult.Type.BLOCK) { |
|
0 commit comments