minecraft-src/net/minecraft/client/gui/components/FittingMultiLineTextWidget.java
2025-07-04 03:45:38 +03:00

70 lines
2.1 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.network.chat.Component;
@Environment(EnvType.CLIENT)
public class FittingMultiLineTextWidget extends AbstractTextAreaWidget {
private final Font font;
private final MultiLineTextWidget multilineWidget;
public FittingMultiLineTextWidget(int x, int y, int width, int height, Component message, Font font) {
super(x, y, width, height, message);
this.font = font;
this.multilineWidget = new MultiLineTextWidget(message, font).setMaxWidth(this.getWidth() - this.totalInnerPadding());
}
public FittingMultiLineTextWidget setColor(int color) {
this.multilineWidget.setColor(color);
return this;
}
@Override
public void setWidth(int width) {
super.setWidth(width);
this.multilineWidget.setMaxWidth(this.getWidth() - this.totalInnerPadding());
}
@Override
protected int getInnerHeight() {
return this.multilineWidget.getHeight();
}
@Override
protected double scrollRate() {
return 9.0;
}
@Override
protected void renderBackground(GuiGraphics guiGraphics) {
super.renderBackground(guiGraphics);
}
public boolean showingScrollBar() {
return super.scrollbarVisible();
}
@Override
protected void renderContents(GuiGraphics guiGraphics, int mouseX, int mouseY, float partialTick) {
guiGraphics.pose().pushPose();
guiGraphics.pose().translate((float)this.getInnerLeft(), (float)this.getInnerTop(), 0.0F);
this.multilineWidget.render(guiGraphics, mouseX, mouseY, partialTick);
guiGraphics.pose().popPose();
}
@Override
protected void updateWidgetNarration(NarrationElementOutput narrationElementOutput) {
narrationElementOutput.add(NarratedElementType.TITLE, this.getMessage());
}
@Override
public void setMessage(Component message) {
super.setMessage(message);
this.multilineWidget.setMessage(message);
}
}