diff options
Diffstat (limited to 'src/main/java/dev/isxander/yacl/api/utils')
-rw-r--r-- | src/main/java/dev/isxander/yacl/api/utils/Dimension.java | 21 | ||||
-rw-r--r-- | src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java | 28 |
2 files changed, 49 insertions, 0 deletions
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 cf7127a..69958b1 100644 --- a/src/main/java/dev/isxander/yacl/api/utils/Dimension.java +++ b/src/main/java/dev/isxander/yacl/api/utils/Dimension.java @@ -12,8 +12,29 @@ public interface Dimension<T extends Number> { T xLimit(); T yLimit(); + T centerX(); + T centerY(); + boolean isPointInside(T x, T y); + Dimension<T> clone(); + + Dimension<T> setX(T x); + Dimension<T> setY(T y); + Dimension<T> setWidth(T width); + Dimension<T> setHeight(T height); + + Dimension<T> withX(T x); + Dimension<T> withY(T y); + Dimension<T> withWidth(T width); + Dimension<T> withHeight(T height); + + Dimension<T> move(T x, T y); + Dimension<T> expand(T width, T height); + + Dimension<T> moved(T x, T y); + Dimension<T> expanded(T width, T height); + static Dimension<Integer> 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/OptionUtils.java b/src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java new file mode 100644 index 0000000..ed51683 --- /dev/null +++ b/src/main/java/dev/isxander/yacl/api/utils/OptionUtils.java @@ -0,0 +1,28 @@ +package dev.isxander.yacl.api.utils; + +import dev.isxander.yacl.api.ConfigCategory; +import dev.isxander.yacl.api.Option; +import dev.isxander.yacl.api.OptionGroup; +import dev.isxander.yacl.api.YetAnotherConfigLib; + +import java.util.function.Consumer; +import java.util.function.Function; + +public class OptionUtils { + public static void consumeOptions(YetAnotherConfigLib yacl, Function<Option<?>, Boolean> consumer) { + for (ConfigCategory category : yacl.categories()) { + for (OptionGroup group : category.groups()) { + for (Option<?> option : group.options()) { + if (!consumer.apply(option)) return; + } + } + } + } + + public static void forEachOptions(YetAnotherConfigLib yacl, Consumer<Option<?>> consumer) { + consumeOptions(yacl, (opt) -> { + consumer.accept(opt); + return true; + }); + } +} |