diff options
author | isXander <isxander@users.noreply.github.com> | 2022-09-19 19:11:13 +0100 |
---|---|---|
committer | isXander <isxander@users.noreply.github.com> | 2022-09-19 19:11:13 +0100 |
commit | de1c8a317226b58fe03497027136eaed1adfd808 (patch) | |
tree | 5f97d6d91bc37f83d8de8c6f4a335d06a014cee0 /src/main/java/dev/isxander/yacl/api | |
parent | 904e4d61b6cf84c807a99e66fc70527b01ae6fcc (diff) | |
download | YetAnotherConfigLib-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.java | 21 | ||||
-rw-r--r-- | src/main/java/dev/isxander/yacl/api/Option.java | 7 |
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. */ |