File size: 2,336 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
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.client.sounds.SoundManager;
import net.minecraft.network.chat.Component;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;

@OnlyIn(Dist.CLIENT)
public class FocusableTextWidget extends MultiLineTextWidget {
    private static final int DEFAULT_PADDING = 4;
    private final boolean alwaysShowBorder;
    private final int padding;

    public FocusableTextWidget(int p_298289_, Component p_300031_, Font p_298235_) {
        this(p_298289_, p_300031_, p_298235_, 4);
    }

    public FocusableTextWidget(int p_335481_, Component p_335339_, Font p_328204_, int p_334529_) {
        this(p_335481_, p_335339_, p_328204_, true, p_334529_);
    }

    public FocusableTextWidget(int p_299147_, Component p_299786_, Font p_299475_, boolean p_299140_, int p_335803_) {
        super(p_299786_, p_299475_);
        this.setMaxWidth(p_299147_);
        this.setCentered(true);
        this.active = true;
        this.alwaysShowBorder = p_299140_;
        this.padding = p_335803_;
    }

    public void containWithin(int p_328277_) {
        this.setMaxWidth(p_328277_ - this.padding * 4);
    }

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

    @Override
    public void renderWidget(GuiGraphics p_297672_, int p_301298_, int p_300386_, float p_299545_) {
        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 i1 = this.alwaysShowBorder ? (this.isFocused() ? -1 : -6250336) : -1;
            p_297672_.fill(i + 1, j, i + k, j + l, -16777216);
            p_297672_.renderOutline(i, j, k, l, i1);
        }

        super.renderWidget(p_297672_, p_301298_, p_300386_, p_299545_);
    }

    @Override
    public void playDownSound(SoundManager p_297351_) {
    }
}