From 79fa8f722bbb928a0fc7676290c8e612434cef44 Mon Sep 17 00:00:00 2001 From: Shiewk Date: Sun, 23 Nov 2025 12:50:32 +0100 Subject: [PATCH] Add mouse cursor changing --- .../client/screen/EditWidgetPositionsScreen.java | 5 +++++ .../widgets/client/screen/WidgetSettingsScreen.java | 13 ++++++++++++- .../client/screen/components/WidgetListWidget.java | 3 +-- .../screen/components/WidgetSettingsEditWidget.java | 3 +-- .../client/screen/components/WidgetWidget.java | 5 +++++ .../widgets/widgets/settings/EnumWidgetSetting.java | 4 ++++ .../widgets/settings/IntSliderWidgetSetting.java | 11 +++++++++++ .../widgets/settings/RGBAColorWidgetSetting.java | 12 ++++++++++++ .../widgets/settings/ToggleWidgetSetting.java | 12 ++++++++++++ 9 files changed, 63 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/shiewk/widgets/client/screen/EditWidgetPositionsScreen.java b/src/main/java/de/shiewk/widgets/client/screen/EditWidgetPositionsScreen.java index c5b45b9..de7be6c 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/EditWidgetPositionsScreen.java +++ b/src/main/java/de/shiewk/widgets/client/screen/EditWidgetPositionsScreen.java @@ -6,6 +6,7 @@ import de.shiewk.widgets.WidgetSettings; import de.shiewk.widgets.client.WidgetManager; import net.minecraft.client.gui.Click; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.cursor.StandardCursors; import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.widget.ButtonWidget; @@ -92,6 +93,10 @@ public class EditWidgetPositionsScreen extends AnimatedScreen { } widget.render(context, mt, textRenderer, wx, wy); } + + if (hoveredWidget != null){ + context.setCursor(StandardCursors.RESIZE_ALL); + } } private boolean canAlign(int val1, int val2){ diff --git a/src/main/java/de/shiewk/widgets/client/screen/WidgetSettingsScreen.java b/src/main/java/de/shiewk/widgets/client/screen/WidgetSettingsScreen.java index 7d452ae..7647c07 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/WidgetSettingsScreen.java +++ b/src/main/java/de/shiewk/widgets/client/screen/WidgetSettingsScreen.java @@ -2,8 +2,9 @@ package de.shiewk.widgets.client.screen; import de.shiewk.widgets.ModWidget; import de.shiewk.widgets.client.screen.components.WidgetSettingsEditWidget; -import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.*; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.text.Text; import net.minecraft.util.Util; @@ -34,6 +35,16 @@ public class WidgetSettingsScreen extends AnimatedScreen { widget.render(context, Util.getMeasuringTimeNano(), textRenderer, (int) ((float) (this.width * 3) / 4 - (widget.width() * widget.getScaleFactor()) / 2), (int) ((float) this.height / 2 - (widget.height() * widget.getScaleFactor()) / 2)); } + @Override + public boolean mouseReleased(Click click) { + for (Element child : children()) { + if (child instanceof ClickableWidget s){ + s.mouseReleased(click); + } + } + return super.mouseReleased(click); + } + @Override public void close() { assert client != null; diff --git a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetListWidget.java b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetListWidget.java index 4114312..7ca1187 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetListWidget.java +++ b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetListWidget.java @@ -90,8 +90,7 @@ public class WidgetListWidget extends ScrollableWidget { return true; } } - if (super.checkScrollbarDragged(newClick)) return true; - return super.mouseClicked(newClick, doubled); + return super.checkScrollbarDragged(newClick); } @Override diff --git a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetSettingsEditWidget.java b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetSettingsEditWidget.java index 72398ee..034bb8e 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetSettingsEditWidget.java +++ b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetSettingsEditWidget.java @@ -100,8 +100,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget { customSetting.setFocused(false); } } - if (checkScrollbarDragged(click)) return true; - return super.mouseClicked(click, doubled); + return checkScrollbarDragged(click); } @Override diff --git a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetWidget.java b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetWidget.java index b7110d8..c5d7017 100644 --- a/src/main/java/de/shiewk/widgets/client/screen/components/WidgetWidget.java +++ b/src/main/java/de/shiewk/widgets/client/screen/components/WidgetWidget.java @@ -7,6 +7,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.Click; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.cursor.StandardCursors; import net.minecraft.client.gui.screen.narration.NarrationMessageBuilder; import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.text.OrderedText; @@ -66,6 +67,10 @@ public class WidgetWidget extends ClickableWidget { context.drawText(textRenderer, t, getX() + 5 + ((getWidth() - 5) / 2) - (textRenderer.getWidth(t) / 2), y, COLOR_FG, false); } this.renderToggleButton(context, mouseX, mouseY, widgetEnabled); + + if (hover || isMouseOverToggle(mouseX, mouseY)){ + context.setCursor(StandardCursors.POINTING_HAND); + } } @Override diff --git a/src/main/java/de/shiewk/widgets/widgets/settings/EnumWidgetSetting.java b/src/main/java/de/shiewk/widgets/widgets/settings/EnumWidgetSetting.java index 755c57f..654d3dc 100644 --- a/src/main/java/de/shiewk/widgets/widgets/settings/EnumWidgetSetting.java +++ b/src/main/java/de/shiewk/widgets/widgets/settings/EnumWidgetSetting.java @@ -7,6 +7,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.Click; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.cursor.StandardCursors; import net.minecraft.text.Text; import java.awt.*; @@ -74,6 +75,9 @@ public class EnumWidgetSetting> extends WidgetSettingOption { this.value = constant; this.changed = true; } + if (hover){ + context.setCursor(StandardCursors.POINTING_HAND); + } nx += textRendererWidth + 20; } diff --git a/src/main/java/de/shiewk/widgets/widgets/settings/IntSliderWidgetSetting.java b/src/main/java/de/shiewk/widgets/widgets/settings/IntSliderWidgetSetting.java index cb41b2f..6ef68b2 100644 --- a/src/main/java/de/shiewk/widgets/widgets/settings/IntSliderWidgetSetting.java +++ b/src/main/java/de/shiewk/widgets/widgets/settings/IntSliderWidgetSetting.java @@ -7,6 +7,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.Click; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.cursor.StandardCursors; import net.minecraft.client.input.KeyInput; import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; @@ -71,6 +72,16 @@ public class IntSliderWidgetSetting extends WidgetSettingOption { this.changed = true; this.value = MathHelper.clamp(xPosToValue(mouseX), minValue, maxValue); } + if (isHovering(mouseX, mouseY)){ + context.setCursor(StandardCursors.RESIZE_EW); + } + } + + private boolean isHovering(int mouseX, int mouseY) { + return mouseX >= this.getX() + && mouseY >= this.getY() + && getY() + getHeight() > mouseY + && getX() + getWidth() > mouseX; } @Override diff --git a/src/main/java/de/shiewk/widgets/widgets/settings/RGBAColorWidgetSetting.java b/src/main/java/de/shiewk/widgets/widgets/settings/RGBAColorWidgetSetting.java index 4c7722c..0184703 100644 --- a/src/main/java/de/shiewk/widgets/widgets/settings/RGBAColorWidgetSetting.java +++ b/src/main/java/de/shiewk/widgets/widgets/settings/RGBAColorWidgetSetting.java @@ -7,6 +7,7 @@ import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; import net.minecraft.client.gui.Click; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.cursor.StandardCursors; import net.minecraft.text.Text; import net.minecraft.util.math.MathHelper; @@ -105,6 +106,17 @@ public class RGBAColorWidgetSetting extends WidgetSettingOption { case 4 -> a = col; } } + + + if ( + (mouseY > this.getY() + 5 && mouseY < this.getY() + 20) + || (mouseY > this.getY() + 25 && mouseY < this.getY() + 40) + || (mouseY > this.getY() + 45 && mouseY < this.getY() + 60) + || (mouseY > this.getY() + 65 && mouseY < this.getY() + 80) + && mouseX > getX() + 5 + 7 && mouseX < getX() + getWidth() + ) { + context.setCursor(StandardCursors.RESIZE_EW); + } } @Override diff --git a/src/main/java/de/shiewk/widgets/widgets/settings/ToggleWidgetSetting.java b/src/main/java/de/shiewk/widgets/widgets/settings/ToggleWidgetSetting.java index 83d5c1f..0fa3b71 100644 --- a/src/main/java/de/shiewk/widgets/widgets/settings/ToggleWidgetSetting.java +++ b/src/main/java/de/shiewk/widgets/widgets/settings/ToggleWidgetSetting.java @@ -6,6 +6,7 @@ import de.shiewk.widgets.WidgetSettingOption; import de.shiewk.widgets.utils.WidgetUtils; import net.minecraft.client.gui.Click; import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.cursor.StandardCursors; import net.minecraft.text.Text; import net.minecraft.util.Util; import net.minecraft.util.math.MathHelper; @@ -54,6 +55,17 @@ public class ToggleWidgetSetting extends WidgetSettingOption { : value ? getX() + getWidth() - 4 - 12 : getX() + 4; context.fill(getX() + 2, getY() + 2, getX() + getWidth() - 2, getY() + getHeight() - 2, col); context.fill(thumbLoc, getY() + 4, thumbLoc + 12, getY() + getHeight() - 4, thumb); + + if (isHovering(mouseX, mouseY)){ + context.setCursor(StandardCursors.POINTING_HAND); + } + } + + private boolean isHovering(int mouseX, int mouseY) { + return mouseX >= this.getX() + && mouseY >= this.getY() + && getY() + getHeight() > mouseY + && getX() + getWidth() > mouseX; } @Override