From 9abe65118ffff8fb90462e2fa66d8b7b4d626e98 Mon Sep 17 00:00:00 2001 From: MachieCodes Date: Tue, 12 May 2026 23:12:56 -0500 Subject: [PATCH 1/3] Actually fix render layering this time Need to render pre-MC if we have screens open --- .../meteorclient/mixin/GuiRendererMixin.java | 34 +++++++++++++------ 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/mixin/GuiRendererMixin.java b/src/main/java/meteordevelopment/meteorclient/mixin/GuiRendererMixin.java index a7bd98d707..48086824ae 100644 --- a/src/main/java/meteordevelopment/meteorclient/mixin/GuiRendererMixin.java +++ b/src/main/java/meteordevelopment/meteorclient/mixin/GuiRendererMixin.java @@ -53,39 +53,51 @@ public abstract class GuiRendererMixin { ); } + @Inject(method = "render", at = @At("HEAD")) + private void render$preGui(CallbackInfo ci) { + if ((GuiRenderer) (Object) this instanceof MeteorMcGuiRenderer) return; + var mc = Minecraft.getInstance(); + + if (mc.screen == null || mc.screen instanceof WidgetScreen) return; + meteor$render2D(mc); + } + @Inject(method = "render", at = @At("TAIL")) - private void draw$executeDrawRange(CallbackInfo ci) { + private void render$postGui(CallbackInfo ci) { if ((GuiRenderer) (Object) this instanceof MeteorMcGuiRenderer) return; var mc = Minecraft.getInstance(); + RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(mc.getMainRenderTarget().getDepthTexture(), 1.0); + + if (mc.screen == null || mc.screen instanceof WidgetScreen) { + meteor$render2D(mc); + } + + guiRenderer.endFrame(); + } + + @Unique + private void meteor$render2D(Minecraft mc) { var mouseX = (int) mc.mouseHandler.getScaledXPos(mc.getWindow()); var mouseY = (int) mc.mouseHandler.getScaledYPos(mc.getWindow()); var fogRenderer = ((GameRendererAccessor) mc.gameRenderer).meteor$fogRenderer(); var delta = mc.getDeltaTracker().getGameTimeDeltaTicks(); - - RenderSystem.getDevice().createCommandEncoder().clearDepthTexture(mc.getMainRenderTarget().getDepthTexture(), 1.0); + var graphics = new GuiGraphicsExtractor(mc, renderState, mouseX, mouseY); if (Utils.canUpdate() || HudEditorScreen.isOpen()) { Profiler.get().push(MeteorClient.MOD_ID + "_render_2d"); Utils.unscaledProjection(); - - var graphics = new GuiGraphicsExtractor(mc, renderState, mouseX, mouseY); - MeteorClient.EVENT_BUS.post(Render2DEvent.get(graphics, graphics.guiWidth(), graphics.guiWidth(), delta)); + MeteorClient.EVENT_BUS.post(Render2DEvent.get(graphics, graphics.guiWidth(), graphics.guiHeight(), delta)); guiRenderer.render(fogRenderer.getBuffer(FogRenderer.FogMode.NONE)); - Utils.scaledProjection(); - Profiler.get().pop(); } if (mc.screen instanceof WidgetScreen widgetScreen) { - var graphics = new GuiGraphicsExtractor(mc, renderState, mouseX, mouseY); widgetScreen.renderCustom(graphics, mouseX, mouseY, delta); guiRenderer.render(fogRenderer.getBuffer(FogRenderer.FogMode.NONE)); } - - guiRenderer.endFrame(); } } From 89c0e1d11536f258f2b50f37403c164a4da12096 Mon Sep 17 00:00:00 2001 From: MachieCodes Date: Tue, 12 May 2026 23:48:30 -0500 Subject: [PATCH 2/3] Fix zoom scrolling inside screens --- .../meteorclient/systems/modules/render/Zoom.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java index 1ab92dc2ab..442905a0f7 100644 --- a/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java +++ b/src/main/java/meteordevelopment/meteorclient/systems/modules/render/Zoom.java @@ -140,6 +140,8 @@ private void onTick(TickEvent.Post event) { @EventHandler private void onMouseScroll(MouseScrollEvent event) { + if (mc.screen != null) return; + if (scrollSensitivity.get() > 0 && isActive()) { value += event.value * 0.25 * (scrollSensitivity.get() * value); if (value < 1) value = 1; From 09c427ddfa3aafb69ba946021516e921755d348f Mon Sep 17 00:00:00 2001 From: MachieCodes Date: Wed, 13 May 2026 00:07:51 -0500 Subject: [PATCH 3/3] FIx dropdowns not rendering on edges of windows --- .../meteorclient/gui/widgets/input/WDropdown.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WDropdown.java b/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WDropdown.java index bf20da4708..576432638c 100644 --- a/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WDropdown.java +++ b/src/main/java/meteordevelopment/meteorclient/gui/widgets/input/WDropdown.java @@ -16,6 +16,8 @@ import net.minecraft.client.input.KeyEvent; import net.minecraft.util.Mth; +import static meteordevelopment.meteorclient.utils.Utils.getWindowHeight; + public abstract class WDropdown extends WPressable { public Runnable action; @@ -112,11 +114,14 @@ public boolean render(GuiRenderer renderer, double mouseX, double mouseY, double animProgress = Mth.clamp(animProgress, 0, 1); WView view = getView(); - boolean rootInView = view == null || view.isWidgetInView(root); + boolean rootInView = view == null || view.isWidgetInView(this); if (!render && animProgress > 0 && rootInView) { + double dropdownY = y + height; + double scissorHeight = Math.min(root.height * animProgress, getWindowHeight() - dropdownY); + renderer.absolutePost(() -> { - renderer.scissorStart(x, y + height, width, root.height * animProgress); + renderer.scissorStart(x, dropdownY, width, scissorHeight); root.render(renderer, mouseX, mouseY, delta); renderer.scissorEnd(); });