AbstractStringWidget.java

net.minecraft.client.gui.components.AbstractStringWidget

信息

  • 全限定名:net.minecraft.client.gui.components.AbstractStringWidget
  • 类型:public abstract class
  • 包:net.minecraft.client.gui.components
  • 源码路径:src/main/java/net/minecraft/client/gui/components/AbstractStringWidget.java
  • 起始行号:L16
  • 继承:AbstractWidget
  • 职责:

    TODO

字段/常量

  • componentClickHandler

    • 类型: Consumer<Style>
    • 修饰符: private
    • 源码定位: L17
    • 说明:

      TODO

  • font

    • 类型: Font
    • 修饰符: private final
    • 源码定位: L18
    • 说明:

      TODO

内部类/嵌套类型

构造器

public AbstractStringWidget(int x, int y, int width, int height, Component message, Font font) @ L20

  • 构造器名:AbstractStringWidget
  • 源码定位:L20
  • 修饰符:public

参数:

  • x: int
  • y: int
  • width: int
  • height: int
  • message: Component
  • font: Font

说明:

TODO

方法

下面的方法块按源码顺序生成。

public abstract void visitLines(ActiveTextCollector output) @ L25

  • 方法名:visitLines
  • 源码定位:L25
  • 返回类型:void
  • 修饰符:public abstract

参数:

  • output: ActiveTextCollector

说明:

TODO

public void extractWidgetRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float a) @ L27

  • 方法名:extractWidgetRenderState
  • 源码定位:L27
  • 返回类型:void
  • 修饰符:public

参数:

  • graphics: GuiGraphicsExtractor
  • mouseX: int
  • mouseY: int
  • a: float

说明:

TODO

public void onClick(MouseButtonEvent event, boolean doubleClick) @ L43

  • 方法名:onClick
  • 源码定位:L43
  • 返回类型:void
  • 修饰符:public

参数:

  • event: MouseButtonEvent
  • doubleClick: boolean

说明:

TODO

protected void updateWidgetNarration(NarrationElementOutput output) @ L58

  • 方法名:updateWidgetNarration
  • 源码定位:L58
  • 返回类型:void
  • 修饰符:protected

参数:

  • output: NarrationElementOutput

说明:

TODO

protected final Font getFont() @ L62

  • 方法名:getFont
  • 源码定位:L62
  • 返回类型:Font
  • 修饰符:protected final

参数:

说明:

TODO

public void setMessage(Component message) @ L66

  • 方法名:setMessage
  • 源码定位:L66
  • 返回类型:void
  • 修饰符:public

参数:

  • message: Component

说明:

TODO

public AbstractStringWidget setComponentClickHandler(Consumer<Style> clickEventConsumer) @ L72

  • 方法名:setComponentClickHandler
  • 源码定位:L72
  • 返回类型:AbstractStringWidget
  • 修饰符:public

参数:

  • clickEventConsumer: Consumer

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public abstract class AbstractStringWidget extends AbstractWidget {
    private @Nullable Consumer<Style> componentClickHandler = null;
    private final Font font;
 
    public AbstractStringWidget(int x, int y, int width, int height, Component message, Font font) {
        super(x, y, width, height, message);
        this.font = font;
    }
 
    public abstract void visitLines(ActiveTextCollector output);
 
    @Override
    public void extractWidgetRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float a) {
        GuiGraphicsExtractor.HoveredTextEffects effects;
        if (this.isHovered()) {
            if (this.componentClickHandler != null) {
                effects = GuiGraphicsExtractor.HoveredTextEffects.TOOLTIP_AND_CURSOR;
            } else {
                effects = GuiGraphicsExtractor.HoveredTextEffects.TOOLTIP_ONLY;
            }
        } else {
            effects = GuiGraphicsExtractor.HoveredTextEffects.NONE;
        }
 
        this.visitLines(graphics.textRendererForWidget(this, effects));
    }
 
    @Override
    public void onClick(MouseButtonEvent event, boolean doubleClick) {
        if (this.componentClickHandler != null) {
            ActiveTextCollector.ClickableStyleFinder finder = new ActiveTextCollector.ClickableStyleFinder(this.getFont(), (int)event.x(), (int)event.y());
            this.visitLines(finder);
            Style clickedStyle = finder.result();
            if (clickedStyle != null) {
                this.componentClickHandler.accept(clickedStyle);
                return;
            }
        }
 
        super.onClick(event, doubleClick);
    }
 
    @Override
    protected void updateWidgetNarration(NarrationElementOutput output) {
    }
 
    protected final Font getFont() {
        return this.font;
    }
 
    @Override
    public void setMessage(Component message) {
        super.setMessage(message);
        this.setWidth(this.getFont().width(message.getVisualOrderText()));
    }
 
    public AbstractStringWidget setComponentClickHandler(@Nullable Consumer<Style> clickEventConsumer) {
        this.componentClickHandler = clickEventConsumer;
        return this;
    }
}

引用的其他类