ManageServerScreen.java
net.minecraft.client.gui.screens.ManageServerScreen
信息
- 全限定名:net.minecraft.client.gui.screens.ManageServerScreen
- 类型:public class
- 包:net.minecraft.client.gui.screens
- 源码路径:src/main/java/net/minecraft/client/gui/screens/ManageServerScreen.java
- 起始行号:L16
- 继承:Screen
- 职责:
TODO
字段/常量
-
NAME_LABEL- 类型:
Component - 修饰符:
private static final - 源码定位:
L17 - 说明:
TODO
- 类型:
-
IP_LABEL- 类型:
Component - 修饰符:
private static final - 源码定位:
L18 - 说明:
TODO
- 类型:
-
DEFAULT_SERVER_NAME- 类型:
Component - 修饰符:
private static final - 源码定位:
L19 - 说明:
TODO
- 类型:
-
addButton- 类型:
Button - 修饰符:
private - 源码定位:
L20 - 说明:
TODO
- 类型:
-
callback- 类型:
BooleanConsumer - 修饰符:
private final - 源码定位:
L21 - 说明:
TODO
- 类型:
-
serverData- 类型:
ServerData - 修饰符:
private final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
ipEdit- 类型:
EditBox - 修饰符:
private - 源码定位:
L23 - 说明:
TODO
- 类型:
-
nameEdit- 类型:
EditBox - 修饰符:
private - 源码定位:
L24 - 说明:
TODO
- 类型:
-
lastScreen- 类型:
Screen - 修饰符:
private final - 源码定位:
L25 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public ManageServerScreen(Screen lastScreen, Component title, BooleanConsumer callback, ServerData serverData) @ L27
- 构造器名:ManageServerScreen
- 源码定位:L27
- 修饰符:public
参数:
- lastScreen: Screen
- title: Component
- callback: BooleanConsumer
- serverData: ServerData
说明:
TODO
方法
下面的方法块按源码顺序生成。
protected void init() @ L34
- 方法名:init
- 源码定位:L34
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
protected void setInitialFocus() @ L69
- 方法名:setInitialFocus
- 源码定位:L69
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
public void resize(int width, int height) @ L74
- 方法名:resize
- 源码定位:L74
- 返回类型:void
- 修饰符:public
参数:
- width: int
- height: int
说明:
TODO
private void onAdd() @ L83
- 方法名:onAdd
- 源码定位:L83
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
public void onClose() @ L90
- 方法名:onClose
- 源码定位:L90
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
private void updateAddButtonStatus() @ L95
- 方法名:updateAddButtonStatus
- 源码定位:L95
- 返回类型:void
- 修饰符:private
参数:
- 无
说明:
TODO
public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float a) @ L99
- 方法名:extractRenderState
- 源码定位:L99
- 返回类型:void
- 修饰符:public
参数:
- graphics: GuiGraphicsExtractor
- mouseX: int
- mouseY: int
- a: float
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class ManageServerScreen extends Screen {
private static final Component NAME_LABEL = Component.translatable("manageServer.enterName");
private static final Component IP_LABEL = Component.translatable("manageServer.enterIp");
private static final Component DEFAULT_SERVER_NAME = Component.translatable("selectServer.defaultName");
private Button addButton;
private final BooleanConsumer callback;
private final ServerData serverData;
private EditBox ipEdit;
private EditBox nameEdit;
private final Screen lastScreen;
public ManageServerScreen(Screen lastScreen, Component title, BooleanConsumer callback, ServerData serverData) {
super(title);
this.lastScreen = lastScreen;
this.callback = callback;
this.serverData = serverData;
}
@Override
protected void init() {
this.nameEdit = new EditBox(this.font, this.width / 2 - 100, 66, 200, 20, NAME_LABEL);
this.nameEdit.setValue(this.serverData.name);
this.nameEdit.setHint(DEFAULT_SERVER_NAME);
this.nameEdit.setResponder(v -> this.updateAddButtonStatus());
this.addWidget(this.nameEdit);
this.ipEdit = new EditBox(this.font, this.width / 2 - 100, 106, 200, 20, IP_LABEL);
this.ipEdit.setMaxLength(128);
this.ipEdit.setValue(this.serverData.ip);
this.ipEdit.setResponder(v -> this.updateAddButtonStatus());
this.addWidget(this.ipEdit);
this.addRenderableWidget(
CycleButton.builder(ServerData.ServerPackStatus::getName, this.serverData.getResourcePackStatus())
.withValues(ServerData.ServerPackStatus.values())
.create(
this.width / 2 - 100,
this.height / 4 + 72,
200,
20,
Component.translatable("manageServer.resourcePack"),
(button, value) -> this.serverData.setResourcePackStatus(value)
)
);
this.addButton = this.addRenderableWidget(
Button.builder(CommonComponents.GUI_DONE, button -> this.onAdd()).bounds(this.width / 2 - 100, this.height / 4 + 96 + 18, 200, 20).build()
);
this.addRenderableWidget(
Button.builder(CommonComponents.GUI_CANCEL, button -> this.callback.accept(false))
.bounds(this.width / 2 - 100, this.height / 4 + 120 + 18, 200, 20)
.build()
);
this.updateAddButtonStatus();
}
@Override
protected void setInitialFocus() {
this.setInitialFocus(this.nameEdit);
}
@Override
public void resize(int width, int height) {
String oldIpEdit = this.ipEdit.getValue();
String oldNameEdit = this.nameEdit.getValue();
this.init(width, height);
this.ipEdit.setValue(oldIpEdit);
this.nameEdit.setValue(oldNameEdit);
}
private void onAdd() {
String name = this.nameEdit.getValue();
this.serverData.name = name.isEmpty() ? DEFAULT_SERVER_NAME.getString() : name;
this.serverData.ip = this.ipEdit.getValue();
this.callback.accept(true);
}
@Override
public void onClose() {
this.minecraft.setScreen(this.lastScreen);
}
private void updateAddButtonStatus() {
this.addButton.active = ServerAddress.isValidAddress(this.ipEdit.getValue());
}
@Override
public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float a) {
super.extractRenderState(graphics, mouseX, mouseY, a);
graphics.centeredText(this.font, this.title, this.width / 2, 17, -1);
graphics.text(this.font, NAME_LABEL, this.width / 2 - 100 + 1, 53, -6250336);
graphics.text(this.font, IP_LABEL, this.width / 2 - 100 + 1, 94, -6250336);
this.nameEdit.extractRenderState(graphics, mouseX, mouseY, a);
this.ipEdit.extractRenderState(graphics, mouseX, mouseY, a);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Button.builder()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
CycleButton.builder()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
EditBox()
- 引用位置:
-
- 引用位置:
参数/字段/继承
- 引用位置:
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
ServerData.ServerPackStatus.values()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ServerAddress.isValidAddress()
- 引用位置:
-
- 引用位置:
参数/字段/方法调用 - 关联成员:
Component.translatable()
- 引用位置: