diff options
Diffstat (limited to 'src/main/java/dev/isxander/yacl/impl')
-rw-r--r-- | src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java | 11 | ||||
-rw-r--r-- | src/main/java/dev/isxander/yacl/impl/OptionImpl.java | 20 |
2 files changed, 24 insertions, 7 deletions
diff --git a/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java b/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java index b531dec..2cdc8a6 100644 --- a/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java +++ b/src/main/java/dev/isxander/yacl/impl/ButtonOptionImpl.java @@ -1,8 +1,10 @@ package dev.isxander.yacl.impl; +import com.google.common.collect.ImmutableSet; import dev.isxander.yacl.api.Binding; import dev.isxander.yacl.api.ButtonOption; import dev.isxander.yacl.api.Controller; +import dev.isxander.yacl.api.OptionFlag; import dev.isxander.yacl.gui.YACLScreen; import net.minecraft.text.Text; import org.jetbrains.annotations.ApiStatus; @@ -64,6 +66,11 @@ public class ButtonOptionImpl implements ButtonOption { } @Override + public @NotNull ImmutableSet<OptionFlag> flags() { + return ImmutableSet.of(); + } + + @Override public boolean requiresRestart() { return false; } @@ -84,8 +91,8 @@ public class ButtonOptionImpl implements ButtonOption { } @Override - public void applyValue() { - + public boolean applyValue() { + return false; } @Override diff --git a/src/main/java/dev/isxander/yacl/impl/OptionImpl.java b/src/main/java/dev/isxander/yacl/impl/OptionImpl.java index d63f20b..445420e 100644 --- a/src/main/java/dev/isxander/yacl/impl/OptionImpl.java +++ b/src/main/java/dev/isxander/yacl/impl/OptionImpl.java @@ -1,8 +1,10 @@ package dev.isxander.yacl.impl; +import com.google.common.collect.ImmutableSet; import dev.isxander.yacl.api.Binding; import dev.isxander.yacl.api.Controller; import dev.isxander.yacl.api.Option; +import dev.isxander.yacl.api.OptionFlag; import net.minecraft.text.Text; import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.NotNull; @@ -16,7 +18,8 @@ public class OptionImpl<T> implements Option<T> { private final Text tooltip; private final Controller<T> controller; private final Binding<T> binding; - private final boolean requiresRestart; + + private final ImmutableSet<OptionFlag> flags; private final Class<T> typeClass; @@ -27,14 +30,14 @@ public class OptionImpl<T> implements Option<T> { @Nullable Text tooltip, @NotNull Function<Option<T>, Controller<T>> controlGetter, @NotNull Binding<T> binding, - boolean requiresRestart, + ImmutableSet<OptionFlag> flags, @NotNull Class<T> typeClass ) { this.name = name; this.tooltip = tooltip; this.controller = controlGetter.apply(this); this.binding = binding; - this.requiresRestart = requiresRestart; + this.flags = flags; this.typeClass = typeClass; this.pendingValue = binding().getValue(); } @@ -65,8 +68,13 @@ public class OptionImpl<T> implements Option<T> { } @Override + public @NotNull ImmutableSet<OptionFlag> flags() { + return flags; + } + + @Override public boolean requiresRestart() { - return requiresRestart; + return flags.contains(OptionFlag.GAME_RESTART); } @Override @@ -85,10 +93,12 @@ public class OptionImpl<T> implements Option<T> { } @Override - public void applyValue() { + public boolean applyValue() { if (changed()) { binding().setValue(pendingValue); + return true; } + return false; } @Override |