diff options
author | Yasin <LifeIsAParadox@users.noreply.github.com> | 2023-10-09 12:11:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-09 12:11:19 +0200 |
commit | 3696b874cd89f55ae79cadfd923c26a047add5fe (patch) | |
tree | 6078bbe54377991439ecd5680f02c3ec3648485b /src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java | |
parent | 6ccb02d50bcded84ab21437895c9344c9ec416cb (diff) | |
parent | 9086f1ff94daa4933bf29552cfdaa633a251a792 (diff) | |
download | Skyblocker-3696b874cd89f55ae79cadfd923c26a047add5fe.tar.gz Skyblocker-3696b874cd89f55ae79cadfd923c26a047add5fe.tar.bz2 Skyblocker-3696b874cd89f55ae79cadfd923c26a047add5fe.zip |
Merge branch 'master' into better-durability
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java b/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java index baadb8b3..a17f58d6 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java +++ b/src/main/java/me/xmrvizzy/skyblocker/config/controllers/EnumDropdownControllerBuilder.java @@ -3,8 +3,25 @@ package me.xmrvizzy.skyblocker.config.controllers; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.controller.ControllerBuilder; +import java.util.function.Function; + public interface EnumDropdownControllerBuilder<E extends Enum<E>> extends ControllerBuilder<E> { + EnumDropdownControllerBuilder<E> toString(Function<E, String> toString); + static <E extends Enum<E>> EnumDropdownControllerBuilder<E> create(Option<E> option) { return new EnumDropdownControllerBuilderImpl<>(option); } + + /** + * Creates a factory for {@link EnumDropdownControllerBuilder}s with the given function for converting enum constants to strings. + * Use this if a custom toString function for an enum is needed. + * Use it like this: + * <pre>{@code Option.<MyEnum>createBuilder().controller(createEnumDropdownControllerBuilder.getFactory(MY_CUSTOM_ENUM_TO_STRING_FUNCTION))}</pre> + * @param toString The function used to convert enum constants to strings used for display, suggestion, and validation + * @return a factory for {@link EnumDropdownControllerBuilder}s + * @param <E> the enum type + */ + static <E extends Enum<E>> Function<Option<E>, ControllerBuilder<E>> getFactory(Function<E, String> toString) { + return opt -> EnumDropdownControllerBuilder.create(opt).toString(toString); + } } |