2025-11-24 22:52:51 +03:00

133 lines
6.2 KiB
Java

/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* org.jspecify.annotations.Nullable
*/
package net.minecraft.client.gui.screens.telemetry;
import net.minecraft.client.Minecraft;
import net.minecraft.client.Options;
import net.minecraft.client.gui.components.AbstractWidget;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.Checkbox;
import net.minecraft.client.gui.components.MultiLineTextWidget;
import net.minecraft.client.gui.components.StringWidget;
import net.minecraft.client.gui.layouts.HeaderAndFooterLayout;
import net.minecraft.client.gui.layouts.LinearLayout;
import net.minecraft.client.gui.screens.ConfirmLinkScreen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.telemetry.TelemetryEventWidget;
import net.minecraft.network.chat.CommonComponents;
import net.minecraft.network.chat.Component;
import net.minecraft.util.CommonLinks;
import net.minecraft.util.Util;
import org.jspecify.annotations.Nullable;
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;
private @Nullable TelemetryEventWidget telemetryEventWidget;
private @Nullable MultiLineTextWidget description;
private @Nullable Checkbox checkbox;
private double savedScroll;
public TelemetryInfoScreen(Screen lastScreen, Options options) {
super(TITLE);
this.layout = new HeaderAndFooterLayout(this, 16 + Minecraft.getInstance().font.lineHeight * 5 + 20, EXTRA_TELEMETRY_AVAILABLE ? 33 + Checkbox.getBoxSize(Minecraft.getInstance().font) : 33);
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 -> {
AbstractWidget cfr_ignored_0 = (AbstractWidget)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((Screen)this, CommonLinks.PRIVACY_STATEMENT);
}
private void openFeedbackLink(Button button) {
ConfirmLinkScreen.confirmLinkNow((Screen)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);
}
}