aboutsummaryrefslogtreecommitdiff
path: root/src/client/java/dev/isxander/yacl/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/java/dev/isxander/yacl/api')
-rw-r--r--src/client/java/dev/isxander/yacl/api/YetAnotherConfigLib.java15
-rw-r--r--src/client/java/dev/isxander/yacl/api/utils/Dimension.java33
-rw-r--r--src/client/java/dev/isxander/yacl/api/utils/MutableDimension.java11
3 files changed, 15 insertions, 44 deletions
diff --git a/src/client/java/dev/isxander/yacl/api/YetAnotherConfigLib.java b/src/client/java/dev/isxander/yacl/api/YetAnotherConfigLib.java
index a69ae4e..ae6c060 100644
--- a/src/client/java/dev/isxander/yacl/api/YetAnotherConfigLib.java
+++ b/src/client/java/dev/isxander/yacl/api/YetAnotherConfigLib.java
@@ -1,6 +1,7 @@
package dev.isxander.yacl.api;
import com.google.common.collect.ImmutableList;
+import dev.isxander.yacl.config.ConfigInstance;
import dev.isxander.yacl.gui.YACLScreen;
import dev.isxander.yacl.impl.YetAnotherConfigLibImpl;
import net.minecraft.client.gui.screen.Screen;
@@ -12,6 +13,7 @@ import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.function.BiFunction;
import java.util.function.Consumer;
/**
@@ -53,6 +55,14 @@ public interface YetAnotherConfigLib {
return new Builder();
}
+ /**
+ * Creates an instance using a {@link ConfigInstance} which autofills the save() builder method.
+ * This also takes an easy functional interface that provides defaults and config to help build YACL bindings.
+ */
+ static <T> YetAnotherConfigLib create(ConfigInstance<T> configInstance, ConfigBackedBuilder<T> builder) {
+ return builder.build(configInstance.getDefaults(), configInstance.getConfig(), createBuilder().save(configInstance::save)).build();
+ }
+
class Builder {
private Text title;
private final List<ConfigCategory> categories = new ArrayList<>();
@@ -133,4 +143,9 @@ public interface YetAnotherConfigLib {
return new YetAnotherConfigLibImpl(title, ImmutableList.copyOf(categories), saveFunction, initConsumer);
}
}
+
+ @FunctionalInterface
+ interface ConfigBackedBuilder<T> {
+ YetAnotherConfigLib.Builder build(T defaults, T config, YetAnotherConfigLib.Builder builder);
+ }
}
diff --git a/src/client/java/dev/isxander/yacl/api/utils/Dimension.java b/src/client/java/dev/isxander/yacl/api/utils/Dimension.java
deleted file mode 100644
index 0de0a58..0000000
--- a/src/client/java/dev/isxander/yacl/api/utils/Dimension.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package dev.isxander.yacl.api.utils;
-
-import dev.isxander.yacl.impl.utils.DimensionIntegerImpl;
-
-public interface Dimension<T extends Number> {
- T x();
- T y();
-
- T width();
- T height();
-
- T xLimit();
- T yLimit();
-
- T centerX();
- T centerY();
-
- boolean isPointInside(T x, T y);
-
- MutableDimension<T> clone();
-
- Dimension<T> withX(T x);
- Dimension<T> withY(T y);
- Dimension<T> withWidth(T width);
- Dimension<T> withHeight(T height);
-
- Dimension<T> moved(T x, T y);
- Dimension<T> expanded(T width, T height);
-
- static MutableDimension<Integer> ofInt(int x, int y, int width, int height) {
- return new DimensionIntegerImpl(x, y, width, height);
- }
-}
diff --git a/src/client/java/dev/isxander/yacl/api/utils/MutableDimension.java b/src/client/java/dev/isxander/yacl/api/utils/MutableDimension.java
deleted file mode 100644
index eff0186..0000000
--- a/src/client/java/dev/isxander/yacl/api/utils/MutableDimension.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package dev.isxander.yacl.api.utils;
-
-public interface MutableDimension<T extends Number> extends Dimension<T> {
- MutableDimension<T> setX(T x);
- MutableDimension<T> setY(T y);
- MutableDimension<T> setWidth(T width);
- MutableDimension<T> setHeight(T height);
-
- MutableDimension<T> move(T x, T y);
- MutableDimension<T> expand(T width, T height);
-}