java.lang.Object
net.minecraft.client.gui.components.AbstractWidget
org.hiedacamellia.immersiveui.client.gui.component.widget.tree.TreeEntryWidget<T>
类型参数:
T - 节点数据的类型
所有已实现的接口:
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
直接已知子类:
DebugTreeEntryWidget, WheelTreeEntryWidget

public class TreeEntryWidget<T> extends net.minecraft.client.gui.components.AbstractWidget
TreeEntryWidget 是一个自定义的树形结构组件,用于表示树的节点。 它支持折叠/展开、拖拽、子节点管理等功能。
  • 嵌套类概要

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

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

    字段
    修饰符和类型
    字段
    说明
    protected List<TreeEntryWidget<T>>
     
    protected T
     
    protected boolean
     
    protected final net.minecraft.network.chat.Component
     
    protected int
     
    protected net.minecraft.client.gui.Font
     
    protected boolean
     
    protected TreeEntryWidget<T>
     
    protected int
     
    protected int
     
     
    protected final net.minecraft.network.chat.Component
     

    从类继承的字段 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
  • 构造器概要

    构造器
    构造器
    说明
    TreeEntryWidget(net.minecraft.network.chat.Component message, net.minecraft.client.gui.Font font)
    构造一个 TreeEntryWidget 实例。
  • 方法概要

    修饰符和类型
    方法
    说明
    void
    接受一个拖拽的节点作为子节点。
    void
    addChild(int index, TreeEntryWidget<T> child)
    在当前节点的子节点列表中添加一个子节点。
    void
    在当前节点的子节点列表中添加一个子节点。
    void
    折叠当前节点的子节点,使其不可见。
    getAt(double mouseX, double mouseY)
    根据鼠标位置获取当前节点或其子节点。
    获取当前节点关联的数据。
    获取所属的树组件。
    getWidgetAt(double mouseX, double mouseY)
    根据鼠标位置获取直接子节点。
    boolean
    检查当前节点是否有子节点。
    void
    在当前节点之前插入一个节点。
    boolean
    isHovered(double mouseX, double mouseY)
    检查鼠标是否悬停在当前节点上。
    boolean
    判断当前节点是否为根节点。
    boolean
    mouseClicked(double mouseX, double mouseY, int button)
    处理鼠标点击事件。
    void
    moveChild(TreeEntryWidget<T> child, int index)
    移动一个子节点到指定位置。
    static <T> TreeEntryWidget<T>
    of(T data, net.minecraft.network.chat.Component component, net.minecraft.client.gui.Font font)
    创建一个 TreeEntryWidget 实例。
    void
    从当前节点的子节点列表中移除一个子节点。
    protected void
    renderChildren(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
    setData(T data)
    设置当前节点关联的数据。
    boolean
    shouldAccept(double mouseX, double mouseY)
    判断鼠标位置是否可以接受拖拽的节点。
    boolean
    shouldChangeFold(double mouseX, double mouseY, int button)
    检查鼠标位置是否可以切换折叠状态。
    void
    设置所属的树组件,并将当前节点标记为根节点。
    void
    展开当前节点的子节点,使其可见。
    void
    更新当前节点及其子节点的布局。
    protected void
    updateWidgetNarration(net.minecraft.client.gui.narration.NarrationElementOutput narrationElementOutput)
     

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

    clearFGColor, clicked, createNarrationMessage, defaultButtonNarrationText, getBottom, getFGColor, getHeight, getMessage, getRectangle, getRight, getTabOrderGroup, getTooltip, getWidth, getX, getY, isActive, isFocused, isHovered, isHoveredOrFocused, isMouseOver, isValidClickButton, mouseDragged, mouseReleased, narrationPriority, nextFocusPath, onClick, onDrag, onRelease, playDownSound, render, renderScrollingString, renderScrollingString, renderScrollingString, setAlpha, setFGColor, setFocused, 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.GuiEventListener

    charTyped, getCurrentFocusPath, keyPressed, keyReleased, mouseMoved, mouseScrolled

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

    onClick

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

    setPosition
  • 字段详细资料

    • font

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

      protected boolean fold
    • parent

      protected TreeEntryWidget<T> parent
    • children

      protected List<TreeEntryWidget<T>> children
    • data

      protected T data
    • isRoot

      protected boolean isRoot
    • tree

      protected TreeWidget<T,TreeEntryWidget<T>> tree
    • selfWidth

      protected int selfWidth
    • selfHeight

      protected int selfHeight
    • foldWidth

      protected int foldWidth
    • foldComponent

      protected final net.minecraft.network.chat.Component foldComponent
    • unfoldComponent

      protected final net.minecraft.network.chat.Component unfoldComponent
  • 构造器详细资料

    • TreeEntryWidget

      public TreeEntryWidget(net.minecraft.network.chat.Component message, net.minecraft.client.gui.Font font)
      构造一个 TreeEntryWidget 实例。
      参数:
      message - 节点显示的消息
      font - 用于渲染文本的字体
  • 方法详细资料

    • tree

      public void tree(TreeWidget<T,TreeEntryWidget<T>> tree)
      设置所属的树组件,并将当前节点标记为根节点。
      参数:
      tree - 所属的树组件
    • getTree

      public TreeWidget<T,TreeEntryWidget<T>> getTree()
      获取所属的树组件。
      返回:
      所属的树组件
    • isRoot

      public boolean isRoot()
      判断当前节点是否为根节点。
      返回:
      如果是根节点返回 true,否则返回 false
    • insert

      public void insert(TreeEntryWidget<T> widget)
      在当前节点之前插入一个节点。
      参数:
      widget - 要插入的节点
    • getAt

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

      public TreeEntryWidget<T> getWidgetAt(double mouseX, double mouseY)
      根据鼠标位置获取直接子节点。
      参数:
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      返回:
      鼠标所在的直接子节点
    • shouldAccept

      public boolean shouldAccept(double mouseX, double mouseY)
      判断鼠标位置是否可以接受拖拽的节点。
      参数:
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      返回:
      如果可以接受返回 true,否则返回 false
    • accept

      public void accept(TreeEntryWidget<T> widget)
      接受一个拖拽的节点作为子节点。
      参数:
      widget - 要接受的节点
    • of

      public static <T> TreeEntryWidget<T> of(T data, net.minecraft.network.chat.Component component, net.minecraft.client.gui.Font font)
      创建一个 TreeEntryWidget 实例。
      类型参数:
      T - 节点数据的类型
      参数:
      data - 节点关联的数据
      component - 节点显示的消息
      font - 用于渲染文本的字体
      返回:
      创建的 TreeEntryWidget 实例
    • addChild

      public void addChild(int index, TreeEntryWidget<T> child)
      在当前节点的子节点列表中添加一个子节点。
      参数:
      index - 子节点的插入位置
      child - 要添加的子节点
    • addChild

      public void addChild(TreeEntryWidget<T> child)
      在当前节点的子节点列表中添加一个子节点。
      参数:
      child - 要添加的子节点
    • removeChild

      public void removeChild(TreeEntryWidget<T> child)
      从当前节点的子节点列表中移除一个子节点。
      参数:
      child - 要移除的子节点
    • moveChild

      public void moveChild(TreeEntryWidget<T> child, int index)
      移动一个子节点到指定位置。
      参数:
      child - 要移动的子节点
      index - 新的位置索引
    • hasChild

      public boolean hasChild()
      检查当前节点是否有子节点。
      返回:
      如果有子节点返回 true,否则返回 false
    • setData

      public void setData(T data)
      设置当前节点关联的数据。
    • getData

      public T getData()
      获取当前节点关联的数据。
      返回:
      当前节点的数据
    • fold

      public void fold()
      折叠当前节点的子节点,使其不可见。 在折叠状态下,子节点不会被渲染。
    • unfold

      public void unfold()
      展开当前节点的子节点,使其可见。 在展开状态下,子节点会被渲染。
    • updateWidget

      public void updateWidget()
      更新当前节点及其子节点的布局。
    • shouldChangeFold

      public boolean shouldChangeFold(double mouseX, double mouseY, int button)
      检查鼠标位置是否可以切换折叠状态。
      参数:
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      button - 鼠标按钮
      返回:
      如果可以切换折叠状态返回 true,否则返回 false
    • mouseClicked

      public boolean mouseClicked(double mouseX, double mouseY, int button)
      处理鼠标点击事件。
      指定者:
      mouseClicked 在接口中 net.minecraft.client.gui.components.events.GuiEventListener
      覆盖:
      mouseClicked 在类中 net.minecraft.client.gui.components.AbstractWidget
      参数:
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      button - 鼠标按钮
      返回:
      如果处理了点击事件返回 true,否则返回 false
    • isHovered

      public boolean isHovered(double mouseX, double mouseY)
      检查鼠标是否悬停在当前节点上。
      参数:
      mouseX - 鼠标的 X 坐标
      mouseY - 鼠标的 Y 坐标
      返回:
      如果鼠标悬停在当前节点上返回 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 - 渲染的部分时间
    • renderChildren

      protected void renderChildren(net.minecraft.client.gui.GuiGraphics guiGraphics, int mouseX, int mouseY, float v)
    • updateWidgetNarration

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