From 4a524a13e9c003dbd27c60ff937c7e86e29c4f9e Mon Sep 17 00:00:00 2001 From: xander Date: Mon, 5 Sep 2022 19:16:17 +0100 Subject: require restart attribute --- src/main/java/dev/isxander/yacl/api/Option.java | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) (limited to 'src/main/java/dev/isxander/yacl/api') 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 @@ -51,6 +51,11 @@ public interface Option { */ 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. */ @@ -96,6 +101,8 @@ public interface Option { private Binding binding; + private boolean requiresRestart; + private final Class typeClass; private Builder(Class typeClass) { @@ -122,7 +129,7 @@ public interface Option { * @param tooltips text lines - merged with a new-line on {@link Builder#build()}. */ public Builder 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 { return this; } + /** + * Dictates whether the option should require a restart. + * {@link Option#requiresRestart()} + */ + public Builder requiresRestart(boolean requiresRestart) { + this.requiresRestart = requiresRestart; + return this; + } + public Option 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 { concatenatedTooltip.append(line); } - return new OptionImpl<>(name, concatenatedTooltip, controlGetter, binding, typeClass); + return new OptionImpl<>(name, concatenatedTooltip, controlGetter, binding, requiresRestart, typeClass); } } } -- cgit