aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl/impl
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/dev/isxander/yacl/impl')
-rw-r--r--src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java5
-rw-r--r--src/main/java/dev/isxander/yacl/impl/OptionImpl.java11
2 files changed, 15 insertions, 1 deletions
diff --git a/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java b/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
index 748dd0c..d3fbaa6 100644
--- a/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
+++ b/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java
@@ -59,6 +59,11 @@ public class ButtonOptionImpl implements ButtonOption {
}
@Override
+ public @NotNull Class<Consumer<YACLScreen>> typeClass() {
+ throw new UnsupportedOperationException();
+ }
+
+ @Override
public boolean changed() {
return false;
}
diff --git a/src/main/java/dev/isxander/yacl/impl/OptionImpl.java b/src/main/java/dev/isxander/yacl/impl/OptionImpl.java
index 176bf93..2d66aee 100644
--- a/src/main/java/dev/isxander/yacl/impl/OptionImpl.java
+++ b/src/main/java/dev/isxander/yacl/impl/OptionImpl.java
@@ -17,18 +17,22 @@ public class OptionImpl<T> implements Option<T> {
private final Controller<T> controller;
private final Binding<T> binding;
+ private final Class<T> typeClass;
+
private T pendingValue;
public OptionImpl(
@NotNull Text name,
@Nullable Text tooltip,
@NotNull Function<Option<T>, Controller<T>> controlGetter,
- @NotNull Binding<T> binding
+ @NotNull Binding<T> binding,
+ @NotNull Class<T> typeClass
) {
this.name = name;
this.tooltip = tooltip;
this.controller = controlGetter.apply(this);
this.binding = binding;
+ this.typeClass = typeClass;
this.pendingValue = binding().getValue();
}
@@ -53,6 +57,11 @@ public class OptionImpl<T> implements Option<T> {
}
@Override
+ public @NotNull Class<T> typeClass() {
+ return typeClass;
+ }
+
+ @Override
public boolean changed() {
return !binding().getValue().equals(pendingValue);
}