aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/dev/isxander/yacl/api
diff options
context:
space:
mode:
authorisXander <isxander@users.noreply.github.com>2022-09-19 19:11:13 +0100
committerisXander <isxander@users.noreply.github.com>2022-09-19 19:11:13 +0100
commitde1c8a317226b58fe03497027136eaed1adfd808 (patch)
tree5f97d6d91bc37f83d8de8c6f4a335d06a014cee0 /src/main/java/dev/isxander/yacl/api
parent904e4d61b6cf84c807a99e66fc70527b01ae6fcc (diff)
downloadYetAnotherConfigLib-de1c8a317226b58fe03497027136eaed1adfd808.tar.gz
YetAnotherConfigLib-de1c8a317226b58fe03497027136eaed1adfd808.tar.bz2
YetAnotherConfigLib-de1c8a317226b58fe03497027136eaed1adfd808.zip
1.4.0
improved tooltips `ButtonOption` now consumes itself, so you can access it when building.
Diffstat (limited to 'src/main/java/dev/isxander/yacl/api')
-rw-r--r--src/main/java/dev/isxander/yacl/api/ButtonOption.java21
-rw-r--r--src/main/java/dev/isxander/yacl/api/Option.java7
2 files changed, 22 insertions, 6 deletions
diff --git a/src/main/java/dev/isxander/yacl/api/ButtonOption.java b/src/main/java/dev/isxander/yacl/api/ButtonOption.java
index 519131e..1124a9a 100644
--- a/src/main/java/dev/isxander/yacl/api/ButtonOption.java
+++ b/src/main/java/dev/isxander/yacl/api/ButtonOption.java
@@ -9,14 +9,15 @@ import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.List;
+import java.util.function.BiConsumer;
import java.util.function.Consumer;
import java.util.function.Function;
-public interface ButtonOption extends Option<Consumer<YACLScreen>> {
+public interface ButtonOption extends Option<BiConsumer<YACLScreen, ButtonOption>> {
/**
* Action to be executed upon button press
*/
- Consumer<YACLScreen> action();
+ BiConsumer<YACLScreen, ButtonOption> action();
static Builder createBuilder() {
return new Builder();
@@ -26,8 +27,8 @@ public interface ButtonOption extends Option<Consumer<YACLScreen>> {
private Text name;
private final List<Text> tooltipLines = new ArrayList<>();
private boolean available = true;
- private Function<ButtonOption, Controller<Consumer<YACLScreen>>> controlGetter;
- private Consumer<YACLScreen> action;
+ private Function<ButtonOption, Controller<BiConsumer<YACLScreen, ButtonOption>>> controlGetter;
+ private BiConsumer<YACLScreen, ButtonOption> action;
private Builder() {
@@ -59,15 +60,23 @@ public interface ButtonOption extends Option<Consumer<YACLScreen>> {
return this;
}
+ public Builder action(@NotNull BiConsumer<YACLScreen, ButtonOption> action) {
+ Validate.notNull(action, "`action` cannot be null");
+
+ this.action = action;
+ return this;
+ }
+
/**
* Action to be executed upon button press
*
* @see ButtonOption#action()
*/
+ @Deprecated
public Builder action(@NotNull Consumer<YACLScreen> action) {
Validate.notNull(action, "`action` cannot be null");
- this.action = action;
+ this.action = (screen, button) -> action.accept(screen);
return this;
}
@@ -87,7 +96,7 @@ public interface ButtonOption extends Option<Consumer<YACLScreen>> {
*
* @see dev.isxander.yacl.gui.controllers
*/
- public Builder controller(@NotNull Function<ButtonOption, Controller<Consumer<YACLScreen>>> control) {
+ public Builder controller(@NotNull Function<ButtonOption, Controller<BiConsumer<YACLScreen, ButtonOption>>> control) {
Validate.notNull(control, "`control` cannot be null");
this.controlGetter = control;
diff --git a/src/main/java/dev/isxander/yacl/api/Option.java b/src/main/java/dev/isxander/yacl/api/Option.java
index 1df90a8..fe11778 100644
--- a/src/main/java/dev/isxander/yacl/api/Option.java
+++ b/src/main/java/dev/isxander/yacl/api/Option.java
@@ -48,6 +48,13 @@ public interface Option<T> {
boolean available();
/**
+ * Sets if the option can be configured after being built
+ *
+ * @see Option#available()
+ */
+ void setAvailable(boolean available);
+
+ /**
* Class of the option type.
* Used by some controllers.
*/