minecraft-src/net/minecraft/client/gui/components/FocusableTextWidget.java
2025-07-04 01:41:11 +03:00

62 lines
2 KiB
Java

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.GuiGraphics;
import net.minecraft.client.gui.narration.NarratedElementType;
import net.minecraft.client.gui.narration.NarrationElementOutput;
import net.minecraft.client.sounds.SoundManager;
import net.minecraft.network.chat.Component;
@Environment(EnvType.CLIENT)
public class FocusableTextWidget extends MultiLineTextWidget {
private static final int DEFAULT_PADDING = 4;
private final boolean alwaysShowBorder;
private final int padding;
public FocusableTextWidget(int maxWidth, Component message, Font font) {
this(maxWidth, message, font, 4);
}
public FocusableTextWidget(int maxWidth, Component message, Font font, int padding) {
this(maxWidth, message, font, true, padding);
}
public FocusableTextWidget(int maxWidth, Component message, Font font, boolean alwaysShowBorder, int padding) {
super(message, font);
this.setMaxWidth(maxWidth);
this.setCentered(true);
this.active = true;
this.alwaysShowBorder = alwaysShowBorder;
this.padding = padding;
}
public void containWithin(int width) {
this.setMaxWidth(width - this.padding * 4);
}
@Override
protected void updateWidgetNarration(NarrationElementOutput narrationElementOutput) {
narrationElementOutput.add(NarratedElementType.TITLE, this.getMessage());
}
@Override
public void renderWidget(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
if (this.isFocused() || this.alwaysShowBorder) {
int i = this.getX() - this.padding;
int j = this.getY() - this.padding;
int k = this.getWidth() + this.padding * 2;
int l = this.getHeight() + this.padding * 2;
int m = this.alwaysShowBorder ? (this.isFocused() ? -1 : -6250336) : -1;
guiGraphics.fill(i + 1, j, i + k, j + l, -16777216);
guiGraphics.renderOutline(i, j, k, l, m);
}
super.renderWidget(guiGraphics, mouseX, mouseY, partialTick);
}
@Override
public void playDownSound(SoundManager handler) {
}
}