package net.minecraft.client.gui.components; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiGraphicsExtractor; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.ComponentUtils; import net.minecraft.network.chat.Style; import net.minecraft.util.Mth; @Environment(EnvType.CLIENT) public class PlainTextButton extends Button { private final Font font; private final Component message; private final Component underlinedMessage; public PlainTextButton(final int x, final int y, final int width, final int height, final Component message, final Button.OnPress onPress, final Font font) { super(x, y, width, height, message, onPress, DEFAULT_NARRATION); this.font = font; this.message = message; this.underlinedMessage = ComponentUtils.mergeStyles(message, Style.EMPTY.withUnderlined(true)); } @Override public void extractContents(final GuiGraphicsExtractor graphics, final int mouseX, final int mouseY, final float a) { Component messageToRender = this.isHoveredOrFocused() ? this.underlinedMessage : this.message; graphics.text(this.font, messageToRender, this.getX(), this.getY(), 16777215 | Mth.ceil(this.alpha * 255.0F) << 24); } }