SpectatorMenu.java
net.minecraft.client.gui.spectator.SpectatorMenu
信息
- 全限定名:net.minecraft.client.gui.spectator.SpectatorMenu
- 类型:public class
- 包:net.minecraft.client.gui.spectator
- 源码路径:src/main/java/net/minecraft/client/gui/spectator/SpectatorMenu.java
- 起始行号:L17
- 职责:
TODO
字段/常量
-
CLOSE_SPRITE- 类型:
Identifier - 修饰符:
private static final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
SCROLL_LEFT_SPRITE- 类型:
Identifier - 修饰符:
private static final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
SCROLL_RIGHT_SPRITE- 类型:
Identifier - 修饰符:
private static final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
CLOSE_ITEM- 类型:
SpectatorMenuItem - 修饰符:
private static final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
SCROLL_LEFT- 类型:
SpectatorMenuItem - 修饰符:
private static final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
SCROLL_RIGHT_ENABLED- 类型:
SpectatorMenuItem - 修饰符:
private static final - 源码定位:
L23 - 说明:
TODO
- 类型:
-
SCROLL_RIGHT_DISABLED- 类型:
SpectatorMenuItem - 修饰符:
private static final - 源码定位:
L24 - 说明:
TODO
- 类型:
-
MAX_PER_PAGE- 类型:
int - 修饰符:
private static final - 源码定位:
L25 - 说明:
TODO
- 类型:
-
CLOSE_MENU_TEXT- 类型:
Component - 修饰符:
private static final - 源码定位:
L26 - 说明:
TODO
- 类型:
-
PREVIOUS_PAGE_TEXT- 类型:
Component - 修饰符:
private static final - 源码定位:
L27 - 说明:
TODO
- 类型:
-
NEXT_PAGE_TEXT- 类型:
Component - 修饰符:
private static final - 源码定位:
L28 - 说明:
TODO
- 类型:
-
EMPTY_SLOT- 类型:
SpectatorMenuItem - 修饰符:
public static final public public public public - 源码定位:
L29 - 说明:
TODO
- 类型:
-
listener- 类型:
SpectatorMenuListener - 修饰符:
private final - 源码定位:
L48 - 说明:
TODO
- 类型:
-
category- 类型:
SpectatorMenuCategory - 修饰符:
private - 源码定位:
L49 - 说明:
TODO
- 类型:
-
selectedSlot- 类型:
int - 修饰符:
private - 源码定位:
L50 - 说明:
TODO
- 类型:
-
page- 类型:
int - 修饰符:
private - 源码定位:
L51 - 说明:
TODO
- 类型:
内部类/嵌套类型
-
net.minecraft.client.gui.spectator.SpectatorMenu.CloseSpectatorItem- 类型:
class - 修饰符:
private static - 源码定位:
L121 - 说明:
TODO
- 类型:
-
net.minecraft.client.gui.spectator.SpectatorMenu.ScrollMenuItem- 类型:
class - 修饰符:
private static - 源码定位:
L146 - 说明:
TODO
- 类型:
构造器
public SpectatorMenu(SpectatorMenuListener listener) @ L53
- 构造器名:SpectatorMenu
- 源码定位:L53
- 修饰符:public
参数:
- listener: SpectatorMenuListener
说明:
TODO
方法
下面的方法块按源码顺序生成。
public SpectatorMenuItem getItem(int slot) @ L58
- 方法名:getItem
- 源码定位:L58
- 返回类型:SpectatorMenuItem
- 修饰符:public
参数:
- slot: int
说明:
TODO
public List<SpectatorMenuItem> getItems() @ L73
- 方法名:getItems
- 源码定位:L73
- 返回类型:List
- 修饰符:public
参数:
- 无
说明:
TODO
public SpectatorMenuItem getSelectedItem() @ L83
- 方法名:getSelectedItem
- 源码定位:L83
- 返回类型:SpectatorMenuItem
- 修饰符:public
参数:
- 无
说明:
TODO
public SpectatorMenuCategory getSelectedCategory() @ L87
- 方法名:getSelectedCategory
- 源码定位:L87
- 返回类型:SpectatorMenuCategory
- 修饰符:public
参数:
- 无
说明:
TODO
public void selectSlot(int slot) @ L91
- 方法名:selectSlot
- 源码定位:L91
- 返回类型:void
- 修饰符:public
参数:
- slot: int
说明:
TODO
public void exit() @ L102
- 方法名:exit
- 源码定位:L102
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public int getSelectedSlot() @ L106
- 方法名:getSelectedSlot
- 源码定位:L106
- 返回类型:int
- 修饰符:public
参数:
- 无
说明:
TODO
public void selectCategory(SpectatorMenuCategory category) @ L110
- 方法名:selectCategory
- 源码定位:L110
- 返回类型:void
- 修饰符:public
参数:
- category: SpectatorMenuCategory
说明:
TODO
public SpectatorPage getCurrentPage() @ L116
- 方法名:getCurrentPage
- 源码定位:L116
- 返回类型:SpectatorPage
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class SpectatorMenu {
private static final Identifier CLOSE_SPRITE = Identifier.withDefaultNamespace("spectator/close");
private static final Identifier SCROLL_LEFT_SPRITE = Identifier.withDefaultNamespace("spectator/scroll_left");
private static final Identifier SCROLL_RIGHT_SPRITE = Identifier.withDefaultNamespace("spectator/scroll_right");
private static final SpectatorMenuItem CLOSE_ITEM = new SpectatorMenu.CloseSpectatorItem();
private static final SpectatorMenuItem SCROLL_LEFT = new SpectatorMenu.ScrollMenuItem(-1, true);
private static final SpectatorMenuItem SCROLL_RIGHT_ENABLED = new SpectatorMenu.ScrollMenuItem(1, true);
private static final SpectatorMenuItem SCROLL_RIGHT_DISABLED = new SpectatorMenu.ScrollMenuItem(1, false);
private static final int MAX_PER_PAGE = 8;
private static final Component CLOSE_MENU_TEXT = Component.translatable("spectatorMenu.close");
private static final Component PREVIOUS_PAGE_TEXT = Component.translatable("spectatorMenu.previous_page");
private static final Component NEXT_PAGE_TEXT = Component.translatable("spectatorMenu.next_page");
public static final SpectatorMenuItem EMPTY_SLOT = new SpectatorMenuItem() {
@Override
public void selectItem(SpectatorMenu menu) {
}
@Override
public Component getName() {
return CommonComponents.EMPTY;
}
@Override
public void extractIcon(GuiGraphicsExtractor graphics, float brightness, float alpha) {
}
@Override
public boolean isEnabled() {
return false;
}
};
private final SpectatorMenuListener listener;
private SpectatorMenuCategory category;
private int selectedSlot = -1;
private int page;
public SpectatorMenu(SpectatorMenuListener listener) {
this.category = new RootSpectatorMenuCategory();
this.listener = listener;
}
public SpectatorMenuItem getItem(int slot) {
int index = slot + this.page * 6;
if (this.page > 0 && slot == 0) {
return SCROLL_LEFT;
} else if (slot == 7) {
return index < this.category.getItems().size() ? SCROLL_RIGHT_ENABLED : SCROLL_RIGHT_DISABLED;
} else if (slot == 8) {
return CLOSE_ITEM;
} else {
return index >= 0 && index < this.category.getItems().size()
? MoreObjects.firstNonNull(this.category.getItems().get(index), EMPTY_SLOT)
: EMPTY_SLOT;
}
}
public List<SpectatorMenuItem> getItems() {
List<SpectatorMenuItem> items = Lists.newArrayList();
for (int i = 0; i <= 8; i++) {
items.add(this.getItem(i));
}
return items;
}
public SpectatorMenuItem getSelectedItem() {
return this.getItem(this.selectedSlot);
}
public SpectatorMenuCategory getSelectedCategory() {
return this.category;
}
public void selectSlot(int slot) {
SpectatorMenuItem item = this.getItem(slot);
if (item != EMPTY_SLOT) {
if (this.selectedSlot == slot && item.isEnabled()) {
item.selectItem(this);
} else {
this.selectedSlot = slot;
}
}
}
public void exit() {
this.listener.onSpectatorMenuClosed(this);
}
public int getSelectedSlot() {
return this.selectedSlot;
}
public void selectCategory(SpectatorMenuCategory category) {
this.category = category;
this.selectedSlot = -1;
this.page = 0;
}
public SpectatorPage getCurrentPage() {
return new SpectatorPage(this.getItems(), this.selectedSlot);
}
@OnlyIn(Dist.CLIENT)
private static class CloseSpectatorItem implements SpectatorMenuItem {
@Override
public void selectItem(SpectatorMenu menu) {
menu.exit();
}
@Override
public Component getName() {
return SpectatorMenu.CLOSE_MENU_TEXT;
}
@Override
public void extractIcon(GuiGraphicsExtractor graphics, float brightness, float alpha) {
graphics.blitSprite(
RenderPipelines.GUI_TEXTURED, SpectatorMenu.CLOSE_SPRITE, 0, 0, 16, 16, ARGB.colorFromFloat(alpha, brightness, brightness, brightness)
);
}
@Override
public boolean isEnabled() {
return true;
}
}
@OnlyIn(Dist.CLIENT)
private static class ScrollMenuItem implements SpectatorMenuItem {
private final int direction;
private final boolean enabled;
public ScrollMenuItem(int direction, boolean enabled) {
this.direction = direction;
this.enabled = enabled;
}
@Override
public void selectItem(SpectatorMenu menu) {
menu.page = menu.page + this.direction;
}
@Override
public Component getName() {
return this.direction < 0 ? SpectatorMenu.PREVIOUS_PAGE_TEXT : SpectatorMenu.NEXT_PAGE_TEXT;
}
@Override
public void extractIcon(GuiGraphicsExtractor graphics, float brightness, float alpha) {
int color = ARGB.colorFromFloat(alpha, brightness, brightness, brightness);
if (this.direction < 0) {
graphics.blitSprite(RenderPipelines.GUI_TEXTURED, SpectatorMenu.SCROLL_LEFT_SPRITE, 0, 0, 16, 16, color);
} else {
graphics.blitSprite(RenderPipelines.GUI_TEXTURED, SpectatorMenu.SCROLL_RIGHT_SPRITE, 0, 0, 16, 16, color);
}
}
@Override
public boolean isEnabled() {
return this.enabled;
}
}
}引用的其他类
-
- 引用位置:
构造调用 - 关联成员:
RootSpectatorMenuCategory()
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置:
-
- 引用位置:
字段/构造调用/返回值 - 关联成员:
SpectatorMenuItem()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
构造调用/返回值 - 关联成员:
SpectatorPage()
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Identifier.withDefaultNamespace()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ARGB.colorFromFloat()
- 引用位置: