From 6f3dc40a6bc554b6decb685cb6d1eb6370b1eea6 Mon Sep 17 00:00:00 2001 From: isXander Date: Sun, 13 Nov 2022 19:04:45 +0000 Subject: lots of QOL and minor improvements smooth category scrolling individual reset buttons for all controllers separate Dimension into Dimension and MutableDimension to prevent mods from modifying controller dimensions without invoking the hooks made the dimension field private in AbstractWidget so people can't modify it without the method setDimension new Option API method to check if pending value is equal to default value add documentation to ConfigInstance fix bug where Option#requestSetDefault and Option#forgetPendingValue implementations weren't notifying listeners --- src/main/java/dev/isxander/yacl/api/Controller.java | 1 - src/main/java/dev/isxander/yacl/api/Option.java | 5 +++++ src/main/java/dev/isxander/yacl/api/utils/Dimension.java | 12 ++---------- .../java/dev/isxander/yacl/api/utils/MutableDimension.java | 11 +++++++++++ 4 files changed, 18 insertions(+), 11 deletions(-) create mode 100644 src/main/java/dev/isxander/yacl/api/utils/MutableDimension.java (limited to 'src/main/java/dev/isxander/yacl/api') diff --git a/src/main/java/dev/isxander/yacl/api/Controller.java b/src/main/java/dev/isxander/yacl/api/Controller.java index 7fbc466..7bf7e7f 100644 --- a/src/main/java/dev/isxander/yacl/api/Controller.java +++ b/src/main/java/dev/isxander/yacl/api/Controller.java @@ -4,7 +4,6 @@ import dev.isxander.yacl.api.utils.Dimension; import dev.isxander.yacl.gui.AbstractWidget; import dev.isxander.yacl.gui.YACLScreen; import net.minecraft.text.Text; -import org.jetbrains.annotations.ApiStatus; /** * Provides a widget to control the option. diff --git a/src/main/java/dev/isxander/yacl/api/Option.java b/src/main/java/dev/isxander/yacl/api/Option.java index 8ec7338..772c816 100644 --- a/src/main/java/dev/isxander/yacl/api/Option.java +++ b/src/main/java/dev/isxander/yacl/api/Option.java @@ -104,6 +104,11 @@ public interface Option { */ void requestSetDefault(); + /** + * Checks if the current pending value is equal to its default value + */ + boolean isPendingValueDefault(); + /** * Adds a listener for when the pending value changes */ diff --git a/src/main/java/dev/isxander/yacl/api/utils/Dimension.java b/src/main/java/dev/isxander/yacl/api/utils/Dimension.java index 69958b1..0de0a58 100644 --- a/src/main/java/dev/isxander/yacl/api/utils/Dimension.java +++ b/src/main/java/dev/isxander/yacl/api/utils/Dimension.java @@ -17,25 +17,17 @@ public interface Dimension { boolean isPointInside(T x, T y); - Dimension clone(); - - Dimension setX(T x); - Dimension setY(T y); - Dimension setWidth(T width); - Dimension setHeight(T height); + MutableDimension clone(); Dimension withX(T x); Dimension withY(T y); Dimension withWidth(T width); Dimension withHeight(T height); - Dimension move(T x, T y); - Dimension expand(T width, T height); - Dimension moved(T x, T y); Dimension expanded(T width, T height); - static Dimension ofInt(int x, int y, int width, int height) { + static MutableDimension ofInt(int x, int y, int width, int height) { return new DimensionIntegerImpl(x, y, width, height); } } diff --git a/src/main/java/dev/isxander/yacl/api/utils/MutableDimension.java b/src/main/java/dev/isxander/yacl/api/utils/MutableDimension.java new file mode 100644 index 0000000..eff0186 --- /dev/null +++ b/src/main/java/dev/isxander/yacl/api/utils/MutableDimension.java @@ -0,0 +1,11 @@ +package dev.isxander.yacl.api.utils; + +public interface MutableDimension extends Dimension { + MutableDimension setX(T x); + MutableDimension setY(T y); + MutableDimension setWidth(T width); + MutableDimension setHeight(T height); + + MutableDimension move(T x, T y); + MutableDimension expand(T width, T height); +} -- cgit