package dev.isxander.yacl.gui.controllers; import dev.isxander.yacl.api.Controller; import dev.isxander.yacl.api.Option; import dev.isxander.yacl.api.utils.Dimension; import dev.isxander.yacl.gui.AbstractWidget; import dev.isxander.yacl.gui.YACLScreen; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.text.Text; import org.jetbrains.annotations.ApiStatus; /** * Simply renders some text as a label. */ public class LabelController implements Controller { private final Option option; /** * Constructs a label controller * * @param option bound option */ public LabelController(Option option) { this.option = option; } /** * {@inheritDoc} */ @Override public Option option() { return option; } @Override public Text formatValue() { return option().pendingValue(); } @Override public AbstractWidget provideWidget(YACLScreen screen, Dimension widgetDimension) { return new LabelControllerElement(widgetDimension); } @ApiStatus.Internal public class LabelControllerElement extends AbstractWidget { public LabelControllerElement(Dimension dim) { super(dim); } @Override public void render(MatrixStack matrices, int mouseX, int mouseY, float delta) { textRenderer.drawWithShadow(matrices, formatValue(), dim.x(), dim.centerY() - textRenderer.fontHeight / 2f, -1); } } }