File size: 3,250 Bytes
d46f4a3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package net.minecraft.client.gui.components;

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;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

@OnlyIn(Dist.CLIENT)
public class FittingMultiLineTextWidget extends AbstractTextAreaWidget {
    private final Font font;
    private final MultiLineTextWidget multilineWidget;

    public FittingMultiLineTextWidget(int p_289785_, int p_289777_, int p_289760_, int p_289801_, Component p_289788_, Font p_289781_) {
        super(p_289785_, p_289777_, p_289760_, p_289801_, p_289788_);
        this.font = p_289781_;
        this.multilineWidget = new MultiLineTextWidget(p_289788_, p_289781_).setMaxWidth(this.getWidth() - this.totalInnerPadding());
    }

    public FittingMultiLineTextWidget setColor(int p_289780_) {
        this.multilineWidget.setColor(p_289780_);
        return this;
    }

    @Override
    public void setWidth(int p_289765_) {
        super.setWidth(p_289765_);
        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 p_289758_) {
        if (this.scrollbarVisible()) {
            super.renderBackground(p_289758_);
        } else if (this.isFocused()) {
            this.renderBorder(
                p_289758_,
                this.getX() - this.innerPadding(),
                this.getY() - this.innerPadding(),
                this.getWidth() + this.totalInnerPadding(),
                this.getHeight() + this.totalInnerPadding()
            );
        }
    }

    @Override
    public void renderWidget(GuiGraphics p_289802_, int p_289778_, int p_289798_, float p_289804_) {
        if (this.visible) {
            if (!this.scrollbarVisible()) {
                this.renderBackground(p_289802_);
                p_289802_.pose().pushPose();
                p_289802_.pose().translate((float)this.getX(), (float)this.getY(), 0.0F);
                this.multilineWidget.render(p_289802_, p_289778_, p_289798_, p_289804_);
                p_289802_.pose().popPose();
            } else {
                super.renderWidget(p_289802_, p_289778_, p_289798_, p_289804_);
            }
        }
    }

    public boolean showingScrollBar() {
        return super.scrollbarVisible();
    }

    @Override
    protected void renderContents(GuiGraphics p_289766_, int p_289790_, int p_289786_, float p_289767_) {
        p_289766_.pose().pushPose();
        p_289766_.pose().translate((float)this.getInnerLeft(), (float)this.getInnerTop(), 0.0F);
        this.multilineWidget.render(p_289766_, p_289790_, p_289786_, p_289767_);
        p_289766_.pose().popPose();
    }

    @Override
    protected void updateWidgetNarration(NarrationElementOutput p_289784_) {
        p_289784_.add(NarratedElementType.TITLE, this.getMessage());
    }
}