Skip to content

Commit f8a7bfb

Browse files
committed
Fix GUI rendering below vanilla elements
1 parent 36064ae commit f8a7bfb

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

src/main/java/meteordevelopment/meteorclient/gui/WidgetScreen.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,7 @@ public void renderBackground(DrawContext context, int mouseX, int mouseY, float
240240
}
241241
}
242242

243-
@Override
244-
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
243+
public void renderCustom(DrawContext context, int mouseX, int mouseY, float delta) {
245244
int s = mc.getWindow().getScaleFactor();
246245
mouseX *= s;
247246
mouseY *= s;

src/main/java/meteordevelopment/meteorclient/mixin/GameRendererMixin.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
import meteordevelopment.meteorclient.events.render.GetFovEvent;
1414
import meteordevelopment.meteorclient.events.render.Render3DEvent;
1515
import meteordevelopment.meteorclient.events.render.RenderAfterWorldEvent;
16+
import meteordevelopment.meteorclient.gui.WidgetScreen;
1617
import meteordevelopment.meteorclient.mixininterface.IVec3d;
1718
import meteordevelopment.meteorclient.renderer.MeteorRenderPipelines;
1819
import meteordevelopment.meteorclient.renderer.Renderer3D;
@@ -28,9 +29,13 @@
2829
import meteordevelopment.meteorclient.utils.render.NametagUtils;
2930
import meteordevelopment.meteorclient.utils.render.RenderUtils;
3031
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;
3135
import net.minecraft.client.render.Camera;
3236
import net.minecraft.client.render.GameRenderer;
3337
import net.minecraft.client.render.RenderTickCounter;
38+
import net.minecraft.client.render.fog.FogRenderer;
3439
import net.minecraft.client.util.math.MatrixStack;
3540
import net.minecraft.entity.Entity;
3641
import net.minecraft.item.ItemStack;
@@ -78,6 +83,18 @@ public abstract class GameRendererMixin {
7883
@Shadow
7984
protected abstract void tiltViewWhenHurt(MatrixStack matrices, float tickDelta);
8085

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+
8198
@Inject(method = "renderWorld", at = @At(value = "INVOKE_STRING", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", args = {"ldc=hand"}))
8299
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) {
83100
if (!Utils.canUpdate()) return;
@@ -125,6 +142,23 @@ private void onRenderWorldTail(CallbackInfo info) {
125142
MeteorClient.EVENT_BUS.post(RenderAfterWorldEvent.get());
126143
}
127144

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+
128162
@ModifyReturnValue(method = "findCrosshairTarget", at = @At("RETURN"))
129163
private HitResult onUpdateTargetedEntity(HitResult original, @Local HitResult hitResult) {
130164
if (Modules.get().get(NoMiningTrace.class).canWork(original instanceof EntityHitResult ehr ? ehr.getEntity() : null) && hitResult.getType() == HitResult.Type.BLOCK) {

0 commit comments

Comments
 (0)