From b8d9499027a45859fe2621ce2b7a61cd5fbdd496 Mon Sep 17 00:00:00 2001 From: Jonathan Coates Date: Thu, 17 Jul 2025 09:00:14 +0100 Subject: [PATCH] Fix terminals not receiving scroll events Minecraft 1.21.2 added a mouseScroll override to AbstractContainerScreen, which means that child widgets no longer receive scroll events. We reimplement that logic in our computer screen. Fixes #2245. --- .../computercraft/client/gui/AbstractComputerScreen.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/projects/common/src/client/java/dan200/computercraft/client/gui/AbstractComputerScreen.java b/projects/common/src/client/java/dan200/computercraft/client/gui/AbstractComputerScreen.java index 4ff2b34df..b1540c72a 100644 --- a/projects/common/src/client/java/dan200/computercraft/client/gui/AbstractComputerScreen.java +++ b/projects/common/src/client/java/dan200/computercraft/client/gui/AbstractComputerScreen.java @@ -125,6 +125,15 @@ public abstract class AbstractComputerScreen ext return super.mouseReleased(x, y, button); } + @Override + public boolean mouseScrolled(double mouseX, double mouseY, double scrollX, double scrollY) { + // Reimplement ContainerEventHandler.mouseScrolled, as AbstractContainerScreen overrides it. + var child = getChildAt(mouseX, mouseY); + if (child.isPresent() && child.get().mouseScrolled(mouseX, mouseY, scrollX, scrollY)) return true; + + return super.mouseScrolled(mouseX, mouseY, scrollX, scrollY); + } + @Override public void render(GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { super.render(graphics, mouseX, mouseY, partialTicks);