package dev.isxander.yacl3.impl.controller; import dev.isxander.yacl3.api.Controller; import dev.isxander.yacl3.api.Option; import dev.isxander.yacl3.api.controller.EnumControllerBuilder; import dev.isxander.yacl3.api.controller.ValueFormatter; import dev.isxander.yacl3.gui.controllers.cycling.EnumController; import net.minecraft.network.chat.Component; import java.util.function.Function; public class EnumControllerBuilderImpl> extends AbstractControllerBuilderImpl implements EnumControllerBuilder { private Class enumClass; private ValueFormatter formatter = null; public EnumControllerBuilderImpl(Option option) { super(option); } @Override public EnumControllerBuilder enumClass(Class enumClass) { this.enumClass = enumClass; return this; } @Override public EnumControllerBuilder formatValue(ValueFormatter formatter) { this.formatter = formatter; return this; } @Override public Controller build() { ValueFormatter formatter = this.formatter; if (formatter == null) { Function formatFunction = EnumController.getDefaultFormatter(); formatter = formatFunction::apply; } return EnumController.createInternal(option, formatter, enumClass.getEnumConstants()); } }