TelemetryInfoScreen.java
net.minecraft.client.gui.screens.telemetry.TelemetryInfoScreen
信息
- 全限定名:net.minecraft.client.gui.screens.telemetry.TelemetryInfoScreen
- 类型:public class
- 包:net.minecraft.client.gui.screens.telemetry
- 源码路径:src/main/java/net/minecraft/client/gui/screens/telemetry/TelemetryInfoScreen.java
- 起始行号:L23
- 继承:Screen
- 职责:
TODO
字段/常量
-
TITLE- 类型:
Component - 修饰符:
private static final - 源码定位:
L24 - 说明:
TODO
- 类型:
-
DESCRIPTION- 类型:
Component - 修饰符:
private static final - 源码定位:
L25 - 说明:
TODO
- 类型:
-
BUTTON_PRIVACY_STATEMENT- 类型:
Component - 修饰符:
private static final - 源码定位:
L26 - 说明:
TODO
- 类型:
-
BUTTON_GIVE_FEEDBACK- 类型:
Component - 修饰符:
private static final - 源码定位:
L27 - 说明:
TODO
- 类型:
-
BUTTON_VIEW_DATA- 类型:
Component - 修饰符:
private static final - 源码定位:
L28 - 说明:
TODO
- 类型:
-
CHECKBOX_OPT_IN- 类型:
Component - 修饰符:
private static final - 源码定位:
L29 - 说明:
TODO
- 类型:
-
SPACING- 类型:
int - 修饰符:
private static final - 源码定位:
L30 - 说明:
TODO
- 类型:
-
EXTRA_TELEMETRY_AVAILABLE- 类型:
boolean - 修饰符:
private static final - 源码定位:
L31 - 说明:
TODO
- 类型:
-
lastScreen- 类型:
Screen - 修饰符:
private final - 源码定位:
L32 - 说明:
TODO
- 类型:
-
options- 类型:
Options - 修饰符:
private final - 源码定位:
L33 - 说明:
TODO
- 类型:
-
layout- 类型:
HeaderAndFooterLayout - 修饰符:
private final - 源码定位:
L34 - 说明:
TODO
- 类型:
-
telemetryEventWidget- 类型:
TelemetryEventWidget - 修饰符:
private - 源码定位:
L37 - 说明:
TODO
- 类型:
-
description- 类型:
MultiLineTextWidget - 修饰符:
private - 源码定位:
L38 - 说明:
TODO
- 类型:
-
checkbox- 类型:
Checkbox - 修饰符:
private - 源码定位:
L39 - 说明:
TODO
- 类型:
-
savedScroll- 类型:
double - 修饰符:
private - 源码定位:
L40 - 说明:
TODO
- 类型:
内部类/嵌套类型
- 无
构造器
public TelemetryInfoScreen(Screen lastScreen, Options options) @ L42
- 构造器名:TelemetryInfoScreen
- 源码定位:L42
- 修饰符:public
参数:
- lastScreen: Screen
- options: Options
说明:
TODO
方法
下面的方法块按源码顺序生成。
public Component getNarrationMessage() @ L48
- 方法名:getNarrationMessage
- 源码定位:L48
- 返回类型:Component
- 修饰符:public
参数:
- 无
说明:
TODO
protected void init() @ L53
- 方法名:init
- 源码定位:L53
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
protected void repositionElements() @ L84
- 方法名:repositionElements
- 源码定位:L84
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
protected void setInitialFocus() @ L104
- 方法名:setInitialFocus
- 源码定位:L104
- 返回类型:void
- 修饰符:protected
参数:
- 无
说明:
TODO
private void onOptInChanged(AbstractWidget widget, boolean value) @ L111
- 方法名:onOptInChanged
- 源码定位:L111
- 返回类型:void
- 修饰符:private
参数:
- widget: AbstractWidget
- value: boolean
说明:
TODO
private void openPrivacyStatementLink(Button button) @ L117
- 方法名:openPrivacyStatementLink
- 源码定位:L117
- 返回类型:void
- 修饰符:private
参数:
- button: Button
说明:
TODO
private void openFeedbackLink(Button button) @ L121
- 方法名:openFeedbackLink
- 源码定位:L121
- 返回类型:void
- 修饰符:private
参数:
- button: Button
说明:
TODO
private void openDataFolder(Button button) @ L125
- 方法名:openDataFolder
- 源码定位:L125
- 返回类型:void
- 修饰符:private
参数:
- button: Button
说明:
TODO
public void onClose() @ L129
- 方法名:onClose
- 源码定位:L129
- 返回类型:void
- 修饰符:public
参数:
- 无
说明:
TODO
代码
@OnlyIn(Dist.CLIENT)
public class TelemetryInfoScreen extends Screen {
private static final Component TITLE = Component.translatable("telemetry_info.screen.title");
private static final Component DESCRIPTION = Component.translatable("telemetry_info.screen.description").withColor(-4539718);
private static final Component BUTTON_PRIVACY_STATEMENT = Component.translatable("telemetry_info.button.privacy_statement");
private static final Component BUTTON_GIVE_FEEDBACK = Component.translatable("telemetry_info.button.give_feedback");
private static final Component BUTTON_VIEW_DATA = Component.translatable("telemetry_info.button.show_data");
private static final Component CHECKBOX_OPT_IN = Component.translatable("telemetry_info.opt_in.description").withColor(-2039584);
private static final int SPACING = 8;
private static final boolean EXTRA_TELEMETRY_AVAILABLE = Minecraft.getInstance().extraTelemetryAvailable();
private final Screen lastScreen;
private final Options options;
private final HeaderAndFooterLayout layout = new HeaderAndFooterLayout(
this, 16 + 9 * 5 + 20, EXTRA_TELEMETRY_AVAILABLE ? 33 + Checkbox.getBoxSize(Minecraft.getInstance().font) : 33
);
private @Nullable TelemetryEventWidget telemetryEventWidget;
private @Nullable MultiLineTextWidget description;
private @Nullable Checkbox checkbox;
private double savedScroll;
public TelemetryInfoScreen(Screen lastScreen, Options options) {
super(TITLE);
this.lastScreen = lastScreen;
this.options = options;
}
@Override
public Component getNarrationMessage() {
return CommonComponents.joinForNarration(super.getNarrationMessage(), DESCRIPTION);
}
@Override
protected void init() {
LinearLayout header = this.layout.addToHeader(LinearLayout.vertical().spacing(4));
header.defaultCellSetting().alignHorizontallyCenter();
header.addChild(new StringWidget(TITLE, this.font));
this.description = header.addChild(new MultiLineTextWidget(DESCRIPTION, this.font).setCentered(true));
LinearLayout upperContentButtons = header.addChild(LinearLayout.horizontal().spacing(8));
upperContentButtons.addChild(Button.builder(BUTTON_PRIVACY_STATEMENT, this::openPrivacyStatementLink).build());
upperContentButtons.addChild(Button.builder(BUTTON_GIVE_FEEDBACK, this::openFeedbackLink).build());
LinearLayout footer = this.layout.addToFooter(LinearLayout.vertical().spacing(4));
footer.defaultCellSetting().alignHorizontallyCenter();
if (EXTRA_TELEMETRY_AVAILABLE) {
this.checkbox = footer.addChild(
Checkbox.builder(CHECKBOX_OPT_IN, this.font)
.maxWidth(this.width - 40)
.selected(this.options.telemetryOptInExtra())
.onValueChange(this::onOptInChanged)
.build()
);
}
LinearLayout footerButtons = footer.addChild(LinearLayout.horizontal().spacing(8));
footerButtons.addChild(Button.builder(BUTTON_VIEW_DATA, this::openDataFolder).build());
footerButtons.addChild(Button.builder(CommonComponents.GUI_DONE, button -> this.onClose()).build());
LinearLayout content = this.layout.addToContents(LinearLayout.vertical().spacing(8));
this.telemetryEventWidget = content.addChild(new TelemetryEventWidget(0, 0, this.width - 40, this.layout.getContentHeight(), this.font));
this.telemetryEventWidget.setOnScrolledListener(scroll -> this.savedScroll = scroll);
this.layout.visitWidgets(x$0 -> this.addRenderableWidget(x$0));
this.repositionElements();
}
@Override
protected void repositionElements() {
if (this.telemetryEventWidget != null) {
this.telemetryEventWidget.setScrollAmount(this.savedScroll);
this.telemetryEventWidget.setWidth(this.width - 40);
this.telemetryEventWidget.setHeight(this.layout.getContentHeight());
this.telemetryEventWidget.updateLayout();
}
if (this.description != null) {
this.description.setMaxWidth(this.width - 16);
}
if (this.checkbox != null) {
this.checkbox.adjustWidth(this.width - 40, this.font);
}
this.layout.arrangeElements();
}
@Override
protected void setInitialFocus() {
if (this.telemetryEventWidget != null) {
this.setInitialFocus(this.telemetryEventWidget);
}
}
private void onOptInChanged(AbstractWidget widget, boolean value) {
if (this.telemetryEventWidget != null) {
this.telemetryEventWidget.onOptInChanged(value);
}
}
private void openPrivacyStatementLink(Button button) {
ConfirmLinkScreen.confirmLinkNow(this, CommonLinks.PRIVACY_STATEMENT);
}
private void openFeedbackLink(Button button) {
ConfirmLinkScreen.confirmLinkNow(this, CommonLinks.RELEASE_FEEDBACK);
}
private void openDataFolder(Button button) {
Util.getPlatform().openPath(this.minecraft.getTelemetryManager().getLogDirectory());
}
@Override
public void onClose() {
this.minecraft.setScreen(this.lastScreen);
}
}引用的其他类
-
- 引用位置:
方法调用 - 关联成员:
Minecraft.getInstance()
- 引用位置:
-
- 引用位置:
参数/字段
- 引用位置:
-
- 引用位置:
参数
- 引用位置:
-
- 引用位置:
参数/方法调用 - 关联成员:
Button.builder()
- 引用位置:
-
- 引用位置:
字段/方法调用 - 关联成员:
Checkbox.builder(), Checkbox.getBoxSize()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
MultiLineTextWidget()
- 引用位置:
-
- 引用位置:
构造调用 - 关联成员:
StringWidget()
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
HeaderAndFooterLayout()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
LinearLayout.horizontal(), LinearLayout.vertical()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
ConfirmLinkScreen.confirmLinkNow()
- 引用位置:
-
- 引用位置:
参数/字段/继承
- 引用位置:
-
- 引用位置:
字段/构造调用 - 关联成员:
TelemetryEventWidget()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
CommonComponents.joinForNarration()
- 引用位置:
-
- 引用位置:
字段/方法调用/返回值 - 关联成员:
Component.translatable()
- 引用位置:
-
- 引用位置:
方法调用 - 关联成员:
Util.getPlatform()
- 引用位置: