1
mirror of https://github.com/Shiewk/Widgets.git synced 2026-04-28 11:34:17 +02:00

Add mouse cursor changing

This commit is contained in:
Shy
2025-11-23 12:50:32 +01:00
parent ceb507078c
commit 79fa8f722b
9 changed files with 63 additions and 5 deletions
@@ -6,6 +6,7 @@ import de.shiewk.widgets.WidgetSettings;
import de.shiewk.widgets.client.WidgetManager; import de.shiewk.widgets.client.WidgetManager;
import net.minecraft.client.gui.Click; import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext; 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.screen.Screen;
import net.minecraft.client.gui.tooltip.Tooltip; import net.minecraft.client.gui.tooltip.Tooltip;
import net.minecraft.client.gui.widget.ButtonWidget; import net.minecraft.client.gui.widget.ButtonWidget;
@@ -92,6 +93,10 @@ public class EditWidgetPositionsScreen extends AnimatedScreen {
} }
widget.render(context, mt, textRenderer, wx, wy); widget.render(context, mt, textRenderer, wx, wy);
} }
if (hoveredWidget != null){
context.setCursor(StandardCursors.RESIZE_ALL);
}
} }
private boolean canAlign(int val1, int val2){ private boolean canAlign(int val1, int val2){
@@ -2,8 +2,9 @@ package de.shiewk.widgets.client.screen;
import de.shiewk.widgets.ModWidget; import de.shiewk.widgets.ModWidget;
import de.shiewk.widgets.client.screen.components.WidgetSettingsEditWidget; 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.screen.Screen;
import net.minecraft.client.gui.widget.ClickableWidget;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.util.Util; 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)); 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 @Override
public void close() { public void close() {
assert client != null; assert client != null;
@@ -90,8 +90,7 @@ public class WidgetListWidget extends ScrollableWidget {
return true; return true;
} }
} }
if (super.checkScrollbarDragged(newClick)) return true; return super.checkScrollbarDragged(newClick);
return super.mouseClicked(newClick, doubled);
} }
@Override @Override
@@ -100,8 +100,7 @@ public class WidgetSettingsEditWidget extends ScrollableWidget {
customSetting.setFocused(false); customSetting.setFocused(false);
} }
} }
if (checkScrollbarDragged(click)) return true; return checkScrollbarDragged(click);
return super.mouseClicked(click, doubled);
} }
@Override @Override
@@ -7,6 +7,7 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Click; import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext; 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.screen.narration.NarrationMessageBuilder;
import net.minecraft.client.gui.widget.ClickableWidget; import net.minecraft.client.gui.widget.ClickableWidget;
import net.minecraft.text.OrderedText; 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); context.drawText(textRenderer, t, getX() + 5 + ((getWidth() - 5) / 2) - (textRenderer.getWidth(t) / 2), y, COLOR_FG, false);
} }
this.renderToggleButton(context, mouseX, mouseY, widgetEnabled); this.renderToggleButton(context, mouseX, mouseY, widgetEnabled);
if (hover || isMouseOverToggle(mouseX, mouseY)){
context.setCursor(StandardCursors.POINTING_HAND);
}
} }
@Override @Override
@@ -7,6 +7,7 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Click; import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.cursor.StandardCursors;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import java.awt.*; import java.awt.*;
@@ -74,6 +75,9 @@ public class EnumWidgetSetting<T extends Enum<T>> extends WidgetSettingOption {
this.value = constant; this.value = constant;
this.changed = true; this.changed = true;
} }
if (hover){
context.setCursor(StandardCursors.POINTING_HAND);
}
nx += textRendererWidth + 20; nx += textRendererWidth + 20;
} }
@@ -7,6 +7,7 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Click; import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.cursor.StandardCursors;
import net.minecraft.client.input.KeyInput; import net.minecraft.client.input.KeyInput;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
@@ -71,6 +72,16 @@ public class IntSliderWidgetSetting extends WidgetSettingOption {
this.changed = true; this.changed = true;
this.value = MathHelper.clamp(xPosToValue(mouseX), minValue, maxValue); 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 @Override
@@ -7,6 +7,7 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer; import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gui.Click; import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.cursor.StandardCursors;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
@@ -105,6 +106,17 @@ public class RGBAColorWidgetSetting extends WidgetSettingOption {
case 4 -> a = col; 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 @Override
@@ -6,6 +6,7 @@ import de.shiewk.widgets.WidgetSettingOption;
import de.shiewk.widgets.utils.WidgetUtils; import de.shiewk.widgets.utils.WidgetUtils;
import net.minecraft.client.gui.Click; import net.minecraft.client.gui.Click;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.cursor.StandardCursors;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.util.Util; import net.minecraft.util.Util;
import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.MathHelper;
@@ -54,6 +55,17 @@ public class ToggleWidgetSetting extends WidgetSettingOption {
: value ? getX() + getWidth() - 4 - 12 : getX() + 4; : value ? getX() + getWidth() - 4 - 12 : getX() + 4;
context.fill(getX() + 2, getY() + 2, getX() + getWidth() - 2, getY() + getHeight() - 2, col); context.fill(getX() + 2, getY() + 2, getX() + getWidth() - 2, getY() + getHeight() - 2, col);
context.fill(thumbLoc, getY() + 4, thumbLoc + 12, getY() + getHeight() - 4, thumb); 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 @Override