package de.hysky.skyblocker.config.controllers; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.controller.ControllerBuilder; import java.util.function.Function; public interface EnumDropdownControllerBuilder> extends ControllerBuilder { EnumDropdownControllerBuilder toString(Function toString); static > EnumDropdownControllerBuilder create(Option 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: *
{@code Option.createBuilder().controller(createEnumDropdownControllerBuilder.getFactory(MY_CUSTOM_ENUM_TO_STRING_FUNCTION))}
* @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 the enum type */ static > Function, ControllerBuilder> getFactory(Function toString) { return opt -> EnumDropdownControllerBuilder.create(opt).toString(toString); } }