LecternScreen.java
net.minecraft.client.gui.screens.inventory.LecternScreen
信息
- 全限定名:net.minecraft.client.gui.screens.inventory.LecternScreen
- 类型:public class
- 包:net.minecraft.client.gui.screens.inventory
- 源码路径:src/main/java/net/minecraft/client/gui/screens/inventory/LecternScreen.java
- 起始行号:L16
- 继承:BookViewScreen
- 实现:MenuAccess
- 职责:
TODO
字段/常量
-
MENU_BUTTON_MARGIN- 类型:
int - 修饰符:
private static final - 源码定位:
L17 - 说明:
TODO
- 类型:
-
MENU_BUTTON_SIZE- 类型:
int - 修饰符:
private static final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
TAKE_BOOK_LABEL- 类型:
Component - 修饰符:
private static final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
menu- 类型:
LecternMenu - 修饰符:
private final - 源码定位:
L20 - 说明:
TODO
- 类型:
-
listener- 类型:
ContainerListener - 修饰符:
private final public public - 源码定位:
L21 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public LecternScreen(LecternMenu menu, Inventory inventory, Component title) @ L39
- 构造器名:LecternScreen
- 源码定位:L39
- 修饰符:public
参数:
- menu: LecternMenu
- inventory: Inventory
- title: Component
说明:
TODO
方法
下面的方法块按源码顺序生成。
public LecternMenu getMenu() @ L43
- 方法名:getMenu
- 源码定位:L43
- 返回类型:LecternMenu
- 修饰符:public
参数:
- 无
说明:
TODO
protected void init() @ L47
- 方法名:init
- 源码定位:L47
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
public void onClose() @ L53
- 方法名:onClose
- 源码定位:L53
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
public void removed() @ L59
- 方法名:removed
- 源码定位:L59
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
protected void createMenuControls() @ L65
- 方法名:createMenuControls
- 源码定位:L65
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
protected void pageBack() @ L77
- 方法名:pageBack
- 源码定位:L77
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
protected void pageForward() @ L82
- 方法名:pageForward
- 源码定位:L82
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
protected boolean forcePage(int page) @ L87
- 方法名:forcePage
- 源码定位:L87
- 返回类型:boolean
- 修饰符:protected
参数:
- page: int
说明:
TODO
private void sendButtonClick(int button) @ L97
- 方法名:sendButtonClick
- 源码定位:L97
- 返回类型:void
- 修饰符:private
参数:
- button: int
说明:
TODO
public boolean isPauseScreen() @ L101
- 方法名:isPauseScreen
- 源码定位:L101
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
private void bookChanged() @ L106
- 方法名:bookChanged
- 源码定位:L106
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
private void pageChanged() @ L111
- 方法名:pageChanged
- 源码定位:L111
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
protected void closeContainerOnServer() @ L115
- 方法名:closeContainerOnServer
- 源码定位:L115
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class LecternScreen extends BookViewScreen implements MenuAccess<LecternMenu> {
private static final int MENU_BUTTON_MARGIN = 4;
private static final int MENU_BUTTON_SIZE = 98;
private static final Component TAKE_BOOK_LABEL = Component.translatable("lectern.take_book");
private final LecternMenu menu;
private final ContainerListener listener = new ContainerListener() {
{
Objects.requireNonNull(LecternScreen.this);
}
@Override
public void slotChanged(AbstractContainerMenu container, int slotIndex, ItemStack itemStack) {
LecternScreen.this.bookChanged();
}
@Override
public void dataChanged(AbstractContainerMenu container, int id, int value) {
if (id == 0) {
LecternScreen.this.pageChanged();
}
}
};
public LecternScreen(LecternMenu menu, Inventory inventory, Component title) {
this.menu = menu;
}
public LecternMenu getMenu() {
return this.menu;
}
@Override
protected void init() {
super.init();
this.menu.addSlotListener(this.listener);
}
@Override
public void onClose() {
this.minecraft.player.closeContainer();
super.onClose();
}
@Override
public void removed() {
super.removed();
this.menu.removeSlotListener(this.listener);
}
@Override
protected void createMenuControls() {
if (this.minecraft.player.mayBuild()) {
int buttonY = this.menuControlsTop();
int middle = this.width / 2;
this.addRenderableWidget(Button.builder(CommonComponents.GUI_DONE, button -> this.onClose()).pos(middle - 98 - 2, buttonY).width(98).build());
this.addRenderableWidget(Button.builder(TAKE_BOOK_LABEL, button -> this.sendButtonClick(3)).pos(middle + 2, buttonY).width(98).build());
} else {
super.createMenuControls();
}
}
@Override
protected void pageBack() {
this.sendButtonClick(1);
}
@Override
protected void pageForward() {
this.sendButtonClick(2);
}
@Override
protected boolean forcePage(int page) {
if (page != this.menu.getPage()) {
this.sendButtonClick(100 + page);
return true;
} else {
return false;
}
}
private void sendButtonClick(int button) {
this.minecraft.gameMode.handleInventoryButtonClick(this.menu.containerId, button);
}
@Override
public boolean isPauseScreen() {
return false;
}
private void bookChanged() {
ItemStack book = this.menu.getBook();
this.setBookAccess(Objects.requireNonNullElse(BookViewScreen.BookAccess.fromItem(book), BookViewScreen.EMPTY_ACCESS));
}
private void pageChanged() {
this.setPage(this.menu.getPage());
}
@Override
protected void closeContainerOnServer() {
this.minecraft.player.closeContainer();
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
Button.builder()
- 引用位置:
-
- 引用位置:
方法调用/继承 - 关联成员:
BookViewScreen.BookAccess.fromItem()
- 引用位置:
-
- 引用位置:
实现
- 引用位置:
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
ContainerListener()
- 引用位置:
-
- 引用位置:
参数/字段/返回值
- 引用位置: