java.lang.Object
net.minecraft.client.gui.components.AbstractWidget
net.minecraft.client.gui.components.AbstractContainerWidget
org.hiedacamellia.immersiveui.client.gui.component.widget.tree.TreeWidget<T,V>
类型参数:
T - 节点数据的类型
V - 节点组件的类型,必须继承自 TreeEntryWidget
所有已实现的接口:
net.minecraft.client.gui.components.events.ContainerEventHandler, net.minecraft.client.gui.components.events.GuiEventListener, net.minecraft.client.gui.components.Renderable, net.minecraft.client.gui.components.TabOrderedElement, net.minecraft.client.gui.layouts.LayoutElement, net.minecraft.client.gui.narration.NarratableEntry, net.minecraft.client.gui.narration.NarrationSupplier, net.neoforged.neoforge.client.extensions.IAbstractWidgetExtension
直接已知子类:
DebugTreeWidget, WheelTreeWidget

public class TreeWidget<T,V extends TreeEntryWidget<T>> extends net.minecraft.client.gui.components.AbstractContainerWidget
TreeWidget 是一个自定义的树形组件,用于显示和管理树形结构的节点。 它支持拖拽、选择、更新布局以及渲染标题和子节点。
  • 嵌套类概要

    从接口继承的嵌套类/接口 net.minecraft.client.gui.narration.NarratableEntry

    net.minecraft.client.gui.narration.NarratableEntry.NarrationPriority
  • 字段概要

    字段
    修饰符和类型
    字段
    说明
    protected boolean
     
    protected net.minecraft.client.gui.Font
     
    protected TreeEntryWidget<T>
     
    protected List<? extends V>
     
    protected TreeEntryWidget<T>
     
    protected int
     
    protected int
     

    从类继承的字段 net.minecraft.client.gui.components.AbstractWidget

    active, alpha, height, isHovered, packedFGColor, UNSET_FG_COLOR, visible, width

    从接口继承的字段 net.minecraft.client.gui.components.events.GuiEventListener

    DOUBLE_CLICK_THRESHOLD_MS
  • 构造器概要

    构造器
    构造器
    说明
    TreeWidget(List<? extends V> root, int x, int y, net.minecraft.network.chat.Component component, net.minecraft.client.gui.Font font)
    构造一个 TreeWidget 实例,使用多个根节点。
    TreeWidget(V root, int x, int y, net.minecraft.network.chat.Component component, net.minecraft.client.gui.Font font)
    构造一个 TreeWidget 实例,使用单个根节点。
  • 方法概要

    修饰符和类型
    方法
    说明
    List<? extends net.minecraft.client.gui.components.events.GuiEventListener>
    获取树的根节点。
    getAt(double mouseX, double mouseY)
    根据鼠标位置获取对应的节点。
    获取当前选中的节点。
    void
    隐藏标题。
    boolean
    isDrag(V widget)
    判断指定的节点是否正在被拖拽。
    boolean
    mouseClicked(double mouseX, double mouseY, int button)
    处理鼠标点击事件。
    boolean
    mouseDragged(double mouseX, double mouseY, int button, double dragX, double dragY)
    检查是否正在拖拽。
    boolean
    mouseReleased(double mouseX, double mouseY, int button)
    处理鼠标释放事件。
    static <T, V extends TreeEntryWidget<T>>
    TreeWidget<T,V>
    of(List<V> root, int x, int y, net.minecraft.network.chat.Component component, net.minecraft.client.gui.Font font)
    创建一个 TreeWidget 实例,使用多个根节点。
    static <T, V extends TreeEntryWidget<T>>
    TreeWidget<T,V>
    of(V root, int x, int y, net.minecraft.network.chat.Component component, net.minecraft.client.gui.Font font)
    创建一个 TreeWidget 实例,使用单个根节点。
    protected void
    renderBg(net.minecraft.client.gui.GuiGraphics guiGraphics, int mouseX, int mouseY, float v)
    渲染组件的背景。
    protected void
    renderChildren(net.minecraft.client.gui.GuiGraphics guiGraphics, int mouseX, int mouseY, float v)
    渲染子节点。
    protected void
    renderTitle(net.minecraft.client.gui.GuiGraphics guiGraphics, int mouseX, int mouseY, float v)
    渲染组件的标题。
    protected void
    renderWidget(net.minecraft.client.gui.GuiGraphics guiGraphics, int mouseX, int mouseY, float v)
    渲染组件,包括背景、标题和子节点。
    void
    更新组件的布局,包括根节点及其子节点的位置和大小。
    protected void
    updateWidgetNarration(net.minecraft.client.gui.narration.NarrationElementOutput narrationElementOutput)
     

    从类继承的方法 net.minecraft.client.gui.components.AbstractContainerWidget

    getFocused, isDragging, isFocused, nextFocusPath, setDragging, setFocused, setFocused

    从类继承的方法 net.minecraft.client.gui.components.AbstractWidget

    clearFGColor, clicked, createNarrationMessage, defaultButtonNarrationText, getBottom, getFGColor, getHeight, getMessage, getRectangle, getRight, getTabOrderGroup, getTooltip, getWidth, getX, getY, isActive, isHovered, isHoveredOrFocused, isMouseOver, isValidClickButton, narrationPriority, onClick, onDrag, onRelease, playDownSound, render, renderScrollingString, renderScrollingString, renderScrollingString, setAlpha, setFGColor, setHeight, setMessage, setRectangle, setSize, setTabOrderGroup, setTooltip, setTooltipDelay, setWidth, setX, setY, updateNarration, visitWidgets, wrapDefaultNarrationMessage

    从类继承的方法 java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

    从接口继承的方法 net.minecraft.client.gui.components.events.ContainerEventHandler

    charTyped, getChildAt, getCurrentFocusPath, keyPressed, keyReleased, mouseScrolled

    从接口继承的方法 net.minecraft.client.gui.components.events.GuiEventListener

    getRectangle, isMouseOver, mouseMoved

    从接口继承的方法 net.neoforged.neoforge.client.extensions.IAbstractWidgetExtension

    onClick

    从接口继承的方法 net.minecraft.client.gui.layouts.LayoutElement

    setPosition

    从接口继承的方法 net.minecraft.client.gui.components.TabOrderedElement

    getTabOrderGroup
  • 字段详细资料

    • font

      protected net.minecraft.client.gui.Font font
    • root

      protected List<? extends V extends TreeEntryWidget<T>> root
    • onDrag

      protected TreeEntryWidget<T> onDrag
    • select

      protected TreeEntryWidget<T> select
    • dragable

      protected boolean dragable
    • titleWidth

      protected int titleWidth
    • titleHeight

      protected int titleHeight
  • 构造器详细资料

    • TreeWidget

      public TreeWidget(V root, int x, int y, net.minecraft.network.chat.Component component, net.minecraft.client.gui.Font font)
      构造一个 TreeWidget 实例,使用单个根节点。
      参数:
      root - 根节点
      x - 组件的 X 坐标
      y - 组件的 Y 坐标
      component - 标题文本
      font - 用于渲染文本的字体
    • TreeWidget

      public TreeWidget(List<? extends V> root, int x, int y, net.minecraft.network.chat.Component component, net.minecraft.client.gui.Font font)
      构造一个 TreeWidget 实例,使用多个根节点。
      参数:
      root - 根节点列表
      x - 组件的 X 坐标
      y - 组件的 Y 坐标
      component - 标题文本
      font - 用于渲染文本的字体
  • 方法详细资料

    • getSelect

      public TreeEntryWidget<T> getSelect()
      获取当前选中的节点。
      返回:
      当前选中的节点
    • isDrag

      public boolean isDrag(V widget)
      判断指定的节点是否正在被拖拽。
      参数:
      widget - 要检查的节点
      返回:
      如果正在拖拽该节点返回 true,否则返回 false
    • hideTitle

      public void hideTitle()
      隐藏标题。
    • updateWidget

      public void updateWidget()
      更新组件的布局,包括根节点及其子节点的位置和大小。
    • of

      public static <T, V extends TreeEntryWidget<T>> TreeWidget<T,V> of(V root, int x, int y, net.minecraft.network.chat.Component component, net.minecraft.client.gui.Font font)
      创建一个 TreeWidget 实例,使用单个根节点。
      类型参数:
      T - 节点数据的类型
      V - 节点组件的类型
      参数:
      root - 根节点
      x - 组件的 X 坐标
      y - 组件的 Y 坐标
      component - 标题文本
      font - 用于渲染文本的字体
      返回:
      创建的 TreeWidget 实例
    • of

      public static <T, V extends TreeEntryWidget<T>> TreeWidget<T,V> of(List<V> root, int x, int y, net.minecraft.network.chat.Component component, net.minecraft.client.gui.Font font)
      创建一个 TreeWidget 实例,使用多个根节点。
      类型参数:
      T - 节点数据的类型
      V - 节点组件的类型
      参数:
      root - 根节点列表
      x - 组件的 X 坐标
      y - 组件的 Y 坐标
      component - 标题文本
      font - 用于渲染文本的字体
      返回:
      创建的 TreeWidget 实例
    • getAt

      public TreeEntryWidget<T> getAt(double mouseX, double mouseY)
      根据鼠标位置获取对应的节点。
      参数:
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      返回:
      鼠标所在的节点
    • children

      public List<? extends net.minecraft.client.gui.components.events.GuiEventListener> children()
      获取树的根节点。
      返回:
      根节点
    • mouseClicked

      public boolean mouseClicked(double mouseX, double mouseY, int button)
      处理鼠标点击事件。 如果点击了一个子节点,则选择该节点并可能开始拖拽。 如果点击了根节点,则更新组件布局。
      指定者:
      mouseClicked 在接口中 net.minecraft.client.gui.components.events.ContainerEventHandler
      指定者:
      mouseClicked 在接口中 net.minecraft.client.gui.components.events.GuiEventListener
      覆盖:
      mouseClicked 在类中 net.minecraft.client.gui.components.AbstractContainerWidget
      参数:
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      button - 鼠标按钮
      返回:
      如果点击了一个子节点返回 true,否则返回 false
    • mouseReleased

      public boolean mouseReleased(double mouseX, double mouseY, int button)
      处理鼠标释放事件。 如果正在拖拽,则结束拖拽并处理拖拽的节点。
      指定者:
      mouseReleased 在接口中 net.minecraft.client.gui.components.events.ContainerEventHandler
      指定者:
      mouseReleased 在接口中 net.minecraft.client.gui.components.events.GuiEventListener
      覆盖:
      mouseReleased 在类中 net.minecraft.client.gui.components.AbstractContainerWidget
      参数:
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      button - 鼠标按钮
      返回:
      始终返回 false
    • mouseDragged

      public boolean mouseDragged(double mouseX, double mouseY, int button, double dragX, double dragY)
      检查是否正在拖拽。
      指定者:
      mouseDragged 在接口中 net.minecraft.client.gui.components.events.ContainerEventHandler
      指定者:
      mouseDragged 在接口中 net.minecraft.client.gui.components.events.GuiEventListener
      覆盖:
      mouseDragged 在类中 net.minecraft.client.gui.components.AbstractContainerWidget
      返回:
      如果正在拖拽返回 true,否则返回 false
    • renderWidget

      protected void renderWidget(net.minecraft.client.gui.GuiGraphics guiGraphics, int mouseX, int mouseY, float v)
      渲染组件,包括背景、标题和子节点。
      指定者:
      renderWidget 在类中 net.minecraft.client.gui.components.AbstractWidget
      参数:
      guiGraphics - 渲染上下文
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      v - 渲染的部分时间
    • renderBg

      protected void renderBg(net.minecraft.client.gui.GuiGraphics guiGraphics, int mouseX, int mouseY, float v)
      渲染组件的背景。
      参数:
      guiGraphics - 渲染上下文
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      v - 渲染的部分时间
    • renderTitle

      protected void renderTitle(net.minecraft.client.gui.GuiGraphics guiGraphics, int mouseX, int mouseY, float v)
      渲染组件的标题。
      参数:
      guiGraphics - 渲染上下文
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      v - 渲染的部分时间
    • renderChildren

      protected void renderChildren(net.minecraft.client.gui.GuiGraphics guiGraphics, int mouseX, int mouseY, float v)
      渲染子节点。
      参数:
      guiGraphics - 渲染上下文
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      v - 渲染的部分时间
    • updateWidgetNarration

      protected void updateWidgetNarration(net.minecraft.client.gui.narration.NarrationElementOutput narrationElementOutput)
      指定者:
      updateWidgetNarration 在类中 net.minecraft.client.gui.components.AbstractWidget