aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/shedaniel/rei/api/widgets/BaseWidget.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/shedaniel/rei/api/widgets/BaseWidget.java')
-rw-r--r--src/main/java/me/shedaniel/rei/api/widgets/BaseWidget.java30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/main/java/me/shedaniel/rei/api/widgets/BaseWidget.java b/src/main/java/me/shedaniel/rei/api/widgets/BaseWidget.java
new file mode 100644
index 000000000..fe6212473
--- /dev/null
+++ b/src/main/java/me/shedaniel/rei/api/widgets/BaseWidget.java
@@ -0,0 +1,30 @@
+package me.shedaniel.rei.api.widgets;
+
+import me.shedaniel.math.Point;
+import me.shedaniel.rei.gui.widget.WidgetWithBounds;
+import org.jetbrains.annotations.NotNull;
+import org.jetbrains.annotations.Nullable;
+
+import java.util.function.BiPredicate;
+
+public abstract class BaseWidget<T extends BaseWidget<T>> extends WidgetWithBounds {
+ @Nullable
+ private BiPredicate<T, Point> containsMousePredicate;
+
+ public final void setContainsMousePredicate(@Nullable BiPredicate<T, Point> predicate) {
+ this.containsMousePredicate = predicate;
+ }
+
+ @NotNull
+ public final T containsMousePredicate(@Nullable BiPredicate<T, Point> predicate) {
+ setContainsMousePredicate(predicate);
+ return (T) this;
+ }
+
+ @Override
+ public boolean containsMouse(double mouseX, double mouseY) {
+ if (containsMousePredicate != null)
+ return containsMousePredicate.test((T) this, new Point(mouseX, mouseY));
+ return super.containsMouse(mouseX, mouseY);
+ }
+}