diff options
author | xander <xander@isxander.dev> | 2022-09-05 19:16:17 +0100 |
---|---|---|
committer | xander <xander@isxander.dev> | 2022-09-05 19:16:24 +0100 |
commit | 4a524a13e9c003dbd27c60ff937c7e86e29c4f9e (patch) | |
tree | f285a293bdd130354aac58ac22c9d93786581dbb /src/main/java/dev/isxander/yacl/api | |
parent | 6dd21acc75fb5f334df724db4fbc0582dd901876 (diff) | |
download | YetAnotherConfigLib-4a524a13e9c003dbd27c60ff937c7e86e29c4f9e.tar.gz YetAnotherConfigLib-4a524a13e9c003dbd27c60ff937c7e86e29c4f9e.tar.bz2 YetAnotherConfigLib-4a524a13e9c003dbd27c60ff937c7e86e29c4f9e.zip |
require restart attribute
Diffstat (limited to 'src/main/java/dev/isxander/yacl/api')
-rw-r--r-- | src/main/java/dev/isxander/yacl/api/Option.java | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/src/main/java/dev/isxander/yacl/api/Option.java b/src/main/java/dev/isxander/yacl/api/Option.java index a353ae4..ced0772 100644 --- a/src/main/java/dev/isxander/yacl/api/Option.java +++ b/src/main/java/dev/isxander/yacl/api/Option.java @@ -52,6 +52,11 @@ public interface Option<T> { boolean changed(); /** + * If true, modifying this option recommends a restart. + */ + boolean requiresRestart(); + + /** * Value in the GUI, ready to set the actual bound value or be undone. */ @NotNull T pendingValue(); @@ -96,6 +101,8 @@ public interface Option<T> { private Binding<T> binding; + private boolean requiresRestart; + private final Class<T> typeClass; private Builder(Class<T> typeClass) { @@ -122,7 +129,7 @@ public interface Option<T> { * @param tooltips text lines - merged with a new-line on {@link Builder#build()}. */ public Builder<T> tooltip(@NotNull Text... tooltips) { - Validate.notEmpty(tooltips, "`tooltips` cannot be empty"); + Validate.notNull(tooltips, "`tooltips` cannot be empty"); tooltipLines.addAll(List.of(tooltips)); return this; @@ -172,6 +179,15 @@ public interface Option<T> { return this; } + /** + * Dictates whether the option should require a restart. + * {@link Option#requiresRestart()} + */ + public Builder<T> requiresRestart(boolean requiresRestart) { + this.requiresRestart = requiresRestart; + return this; + } + public Option<T> build() { Validate.notNull(controlGetter, "`control` must not be null when building `Option`"); Validate.notNull(binding, "`binding` must not be null when building `Option`"); @@ -185,7 +201,7 @@ public interface Option<T> { concatenatedTooltip.append(line); } - return new OptionImpl<>(name, concatenatedTooltip, controlGetter, binding, typeClass); + return new OptionImpl<>(name, concatenatedTooltip, controlGetter, binding, requiresRestart, typeClass); } } } |