TabManager.java

net.minecraft.client.gui.components.tabs.TabManager

信息

  • 全限定名:net.minecraft.client.gui.components.tabs.TabManager
  • 类型:public class
  • 包:net.minecraft.client.gui.components.tabs
  • 源码路径:src/main/java/net/minecraft/client/gui/components/tabs/TabManager.java
  • 起始行号:L15
  • 职责:

    TODO

字段/常量

  • addWidget

    • 类型: Consumer<AbstractWidget>
    • 修饰符: private final
    • 源码定位: L16
    • 说明:

      TODO

  • removeWidget

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

      TODO

  • onSelected

    • 类型: Consumer<Tab>
    • 修饰符: private final
    • 源码定位: L18
    • 说明:

      TODO

  • onDeselected

    • 类型: Consumer<Tab>
    • 修饰符: private final
    • 源码定位: L19
    • 说明:

      TODO

  • currentTab

    • 类型: Tab
    • 修饰符: private
    • 源码定位: L20
    • 说明:

      TODO

  • tabArea

    • 类型: ScreenRectangle
    • 修饰符: private
    • 源码定位: L21
    • 说明:

      TODO

内部类/嵌套类型

构造器

public TabManager(Consumer<AbstractWidget> addWidget, Consumer<AbstractWidget> removeWidget) @ L23

  • 构造器名:TabManager
  • 源码定位:L23
  • 修饰符:public

参数:

  • addWidget: Consumer
  • removeWidget: Consumer

说明:

TODO

public TabManager(Consumer<AbstractWidget> addWidget, Consumer<AbstractWidget> removeWidget, Consumer<Tab> onSelected, Consumer<Tab> onDeselected) @ L27

  • 构造器名:TabManager
  • 源码定位:L27
  • 修饰符:public

参数:

  • addWidget: Consumer
  • removeWidget: Consumer
  • onSelected: Consumer
  • onDeselected: Consumer

说明:

TODO

方法

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

public void setTabArea(ScreenRectangle tabArea) @ L34

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

参数:

  • tabArea: ScreenRectangle

说明:

TODO

public void setCurrentTab(Tab tab, boolean playSound) @ L42

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

参数:

  • tab: Tab
  • playSound: boolean

说明:

TODO

public Tab getCurrentTab() @ L64

  • 方法名:getCurrentTab
  • 源码定位:L64
  • 返回类型:Tab
  • 修饰符:public

参数:

说明:

TODO

代码

@OnlyIn(Dist.CLIENT)
public class TabManager {
    private final Consumer<AbstractWidget> addWidget;
    private final Consumer<AbstractWidget> removeWidget;
    private final Consumer<Tab> onSelected;
    private final Consumer<Tab> onDeselected;
    private @Nullable Tab currentTab;
    private @Nullable ScreenRectangle tabArea;
 
    public TabManager(Consumer<AbstractWidget> addWidget, Consumer<AbstractWidget> removeWidget) {
        this(addWidget, removeWidget, t -> {}, t -> {});
    }
 
    public TabManager(Consumer<AbstractWidget> addWidget, Consumer<AbstractWidget> removeWidget, Consumer<Tab> onSelected, Consumer<Tab> onDeselected) {
        this.addWidget = addWidget;
        this.removeWidget = removeWidget;
        this.onSelected = onSelected;
        this.onDeselected = onDeselected;
    }
 
    public void setTabArea(ScreenRectangle tabArea) {
        this.tabArea = tabArea;
        Tab tab = this.getCurrentTab();
        if (tab != null) {
            tab.doLayout(tabArea);
        }
    }
 
    public void setCurrentTab(Tab tab, boolean playSound) {
        if (!Objects.equals(this.currentTab, tab)) {
            if (this.currentTab != null) {
                this.currentTab.visitChildren(this.removeWidget);
            }
 
            Tab oldTab = this.currentTab;
            this.currentTab = tab;
            tab.visitChildren(this.addWidget);
            if (this.tabArea != null) {
                tab.doLayout(this.tabArea);
            }
 
            if (playSound) {
                Minecraft.getInstance().getSoundManager().play(SimpleSoundInstance.forUI(SoundEvents.UI_BUTTON_CLICK, 1.0F));
            }
 
            this.onDeselected.accept(oldTab);
            this.onSelected.accept(this.currentTab);
        }
    }
 
    public @Nullable Tab getCurrentTab() {
        return this.currentTab;
    }
}

引用的其他类