AbstractCommandBlockEditScreen.java
net.minecraft.client.gui.screens.inventory.AbstractCommandBlockEditScreen
信息
- 全限定名:net.minecraft.client.gui.screens.inventory.AbstractCommandBlockEditScreen
- 类型:public abstract class
- 包:net.minecraft.client.gui.screens.inventory
- 源码路径:src/main/java/net/minecraft/client/gui/screens/inventory/AbstractCommandBlockEditScreen.java
- 起始行号:L21
- 继承:Screen
- 职责:
TODO
字段/常量
-
SET_COMMAND_LABEL- 类型:
Component - 修饰符:
private static final - 源码定位:
L22 - 说明:
TODO
- 类型:
-
COMMAND_LABEL- 类型:
Component - 修饰符:
private static final - 源码定位:
L23 - 说明:
TODO
- 类型:
-
PREVIOUS_OUTPUT_LABEL- 类型:
Component - 修饰符:
private static final - 源码定位:
L24 - 说明:
TODO
- 类型:
-
commandEdit- 类型:
EditBox - 修饰符:
protected - 源码定位:
L25 - 说明:
TODO
- 类型:
-
previousEdit- 类型:
EditBox - 修饰符:
protected - 源码定位:
L26 - 说明:
TODO
- 类型:
-
doneButton- 类型:
Button - 修饰符:
protected - 源码定位:
L27 - 说明:
TODO
- 类型:
-
cancelButton- 类型:
Button - 修饰符:
protected - 源码定位:
L28 - 说明:
TODO
- 类型:
-
outputButton- 类型:
CycleButton<Boolean> - 修饰符:
protected - 源码定位:
L29 - 说明:
TODO
- 类型:
-
commandSuggestions- 类型:
CommandSuggestions - 修饰符:
private - 源码定位:
L30 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public AbstractCommandBlockEditScreen() @ L32
- 构造器名:AbstractCommandBlockEditScreen
- 源码定位:L32
- 修饰符:public
参数:
- 无
说明:
TODO
方法
下面的方法块按源码顺序生成。
public void tick() @ L36
- 方法名:tick
- 源码定位:L36
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
abstract BaseCommandBlock getCommandBlock() @ L43
- 方法名:getCommandBlock
- 源码定位:L43
- 返回类型:BaseCommandBlock
- 修饰符:abstract
参数:
- 无
说明:
TODO
abstract int getPreviousY() @ L45
- 方法名:getPreviousY
- 源码定位:L45
- 返回类型:int
- 修饰符:abstract
参数:
- 无
说明:
TODO
protected void init() @ L47
- 方法名:init
- 源码定位:L47
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
protected void addExtraControls() @ L90
- 方法名:addExtraControls
- 源码定位:L90
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
protected void setInitialFocus() @ L93
- 方法名:setInitialFocus
- 源码定位:L93
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
protected Component getUsageNarration() @ L98
- 方法名:getUsageNarration
- 源码定位:L98
- 返回类型:Component
- 修饰符:protected
参数:
- 无
说明:
TODO
public void resize(int width, int height) @ L103
- 方法名:resize
- 源码定位:L103
- 返回类型:void
- 修饰符:public
参数:
- width: int
- height: int
说明:
TODO
protected void updatePreviousOutput(boolean isTracking) @ L111
- 方法名:updatePreviousOutput
- 源码定位:L111
- 返回类型:void
- 修饰符:protected
参数:
- isTracking: boolean
说明:
TODO
protected void onDone() @ L115
- 方法名:onDone
- 源码定位:L115
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
protected abstract void populateAndSendPacket() @ L125
- 方法名:populateAndSendPacket
- 源码定位:L125
- 返回类型:void
- 修饰符:protected abstract
参数:
- 无
说明:
TODO
private void onEdited(String value) @ L127
- 方法名:onEdited
- 源码定位:L127
- 返回类型:void
- 修饰符:private
参数:
- value: String
说明:
TODO
public boolean isInGameUi() @ L131
- 方法名:isInGameUi
- 源码定位:L131
- 返回类型:boolean
- 修饰符:public
参数:
- 无
说明:
TODO
public boolean keyPressed(KeyEvent event) @ L136
- 方法名:keyPressed
- 源码定位:L136
- 返回类型:boolean
- 修饰符:public
参数:
- event: KeyEvent
说明:
TODO
public boolean mouseScrolled(double x, double y, double scrollX, double scrollY) @ L150
- 方法名:mouseScrolled
- 源码定位:L150
- 返回类型:boolean
- 修饰符:public
参数:
- x: double
- y: double
- scrollX: double
- scrollY: double
说明:
TODO
public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) @ L155
- 方法名:mouseClicked
- 源码定位:L155
- 返回类型:boolean
- 修饰符:public
参数:
- event: MouseButtonEvent
- doubleClick: boolean
说明:
TODO
public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float a) @ L160
- 方法名:extractRenderState
- 源码定位:L160
- 返回类型:void
- 修饰符:public
参数:
- graphics: GuiGraphicsExtractor
- mouseX: int
- mouseY: int
- a: float
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public abstract class AbstractCommandBlockEditScreen extends Screen {
private static final Component SET_COMMAND_LABEL = Component.translatable("advMode.setCommand");
private static final Component COMMAND_LABEL = Component.translatable("advMode.command");
private static final Component PREVIOUS_OUTPUT_LABEL = Component.translatable("advMode.previousOutput");
protected EditBox commandEdit;
protected EditBox previousEdit;
protected Button doneButton;
protected Button cancelButton;
protected CycleButton<Boolean> outputButton;
private CommandSuggestions commandSuggestions;
public AbstractCommandBlockEditScreen() {
super(GameNarrator.NO_TITLE);
}
@Override
public void tick() {
if (!this.getCommandBlock().isValid()) {
this.onClose();
}
}
abstract BaseCommandBlock getCommandBlock();
abstract int getPreviousY();
@Override
protected void init() {
boolean trackOutput = this.getCommandBlock().isTrackOutput();
this.commandEdit = new EditBox(this.font, this.width / 2 - 150, 50, 300, 20, Component.translatable("advMode.command")) {
{
Objects.requireNonNull(AbstractCommandBlockEditScreen.this);
}
@Override
protected MutableComponent createNarrationMessage() {
return super.createNarrationMessage().append(AbstractCommandBlockEditScreen.this.commandSuggestions.getNarrationMessage());
}
};
this.commandEdit.setMaxLength(32500);
this.commandEdit.setResponder(this::onEdited);
this.addWidget(this.commandEdit);
this.previousEdit = new EditBox(this.font, this.width / 2 - 150, this.getPreviousY(), 276, 20, Component.translatable("advMode.previousOutput"));
this.previousEdit.setMaxLength(32500);
this.previousEdit.setEditable(false);
this.previousEdit.setValue("-");
this.addWidget(this.previousEdit);
this.outputButton = this.addRenderableWidget(
CycleButton.booleanBuilder(Component.literal("O"), Component.literal("X"), trackOutput)
.displayOnlyValue()
.create(this.width / 2 + 150 - 20, this.getPreviousY(), 20, 20, Component.translatable("advMode.trackOutput"), (button, value) -> {
BaseCommandBlock commandBlock = this.getCommandBlock();
commandBlock.setTrackOutput(value);
this.updatePreviousOutput(value);
})
);
this.addExtraControls();
this.doneButton = this.addRenderableWidget(
Button.builder(CommonComponents.GUI_DONE, button -> this.onDone()).bounds(this.width / 2 - 4 - 150, this.height / 4 + 120 + 12, 150, 20).build()
);
this.cancelButton = this.addRenderableWidget(
Button.builder(CommonComponents.GUI_CANCEL, button -> this.onClose()).bounds(this.width / 2 + 4, this.height / 4 + 120 + 12, 150, 20).build()
);
this.commandSuggestions = new CommandSuggestions(this.minecraft, this, this.commandEdit, this.font, true, true, 0, 7, false, Integer.MIN_VALUE);
this.commandSuggestions.setAllowSuggestions(true);
this.commandSuggestions.updateCommandInfo();
this.updatePreviousOutput(trackOutput);
}
protected void addExtraControls() {
}
@Override
protected void setInitialFocus() {
this.setInitialFocus(this.commandEdit);
}
@Override
protected Component getUsageNarration() {
return this.commandSuggestions.isVisible() ? this.commandSuggestions.getUsageNarration() : super.getUsageNarration();
}
@Override
public void resize(int width, int height) {
String oldText = this.commandEdit.getValue();
this.init(width, height);
this.commandEdit.setValue(oldText);
this.commandSuggestions.updateCommandInfo();
}
protected void updatePreviousOutput(boolean isTracking) {
this.previousEdit.setValue(isTracking ? this.getCommandBlock().getLastOutput().getString() : "-");
}
protected void onDone() {
this.populateAndSendPacket();
BaseCommandBlock commandBlock = this.getCommandBlock();
if (!commandBlock.isTrackOutput()) {
commandBlock.setLastOutput(null);
}
this.minecraft.setScreen(null);
}
protected abstract void populateAndSendPacket();
private void onEdited(String value) {
this.commandSuggestions.updateCommandInfo();
}
@Override
public boolean isInGameUi() {
return true;
}
@Override
public boolean keyPressed(KeyEvent event) {
if (this.commandSuggestions.keyPressed(event)) {
return true;
} else if (super.keyPressed(event)) {
return true;
} else if (event.isConfirmation()) {
this.onDone();
return true;
} else {
return false;
}
}
@Override
public boolean mouseScrolled(double x, double y, double scrollX, double scrollY) {
return this.commandSuggestions.mouseScrolled(scrollY) ? true : super.mouseScrolled(x, y, scrollX, scrollY);
}
@Override
public boolean mouseClicked(MouseButtonEvent event, boolean doubleClick) {
return this.commandSuggestions.mouseClicked(event) ? true : super.mouseClicked(event, doubleClick);
}
@Override
public void extractRenderState(GuiGraphicsExtractor graphics, int mouseX, int mouseY, float a) {
super.extractRenderState(graphics, mouseX, mouseY, a);
graphics.centeredText(this.font, SET_COMMAND_LABEL, this.width / 2, 20, -1);
graphics.text(this.font, COMMAND_LABEL, this.width / 2 - 150 + 1, 40, -6250336);
this.commandEdit.extractRenderState(graphics, mouseX, mouseY, a);
int y = 75;
if (!this.previousEdit.getValue().isEmpty()) {
y += 5 * 9 + 1 + this.getPreviousY() - 135;
graphics.text(this.font, PREVIOUS_OUTPUT_LABEL, this.width / 2 - 150 + 1, y + 4, -6250336);
this.previousEdit.extractRenderState(graphics, mouseX, mouseY, a);
}
this.commandSuggestions.extractRenderState(graphics, mouseX, mouseY);
}
}引用的其他类
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Button.builder()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
CommandSuggestions()
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
CycleButton.booleanBuilder()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
EditBox()
- 引用位置:
-
- 引用位置:
继承
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
Component.literal(), Component.translatable()
- 引用位置:
-
- 引用位置:
返回值
- 引用位置: