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

80 lines
3.1 KiB
Java

/*
* Decompiled with CFR 0.152.
*
* Could not load the following classes:
* it.unimi.dsi.fastutil.booleans.BooleanConsumer
* org.jspecify.annotations.Nullable
*/
package net.minecraft.client.gui.screens.multiplayer;
import it.unimi.dsi.fastutil.booleans.BooleanConsumer;
import net.minecraft.ChatFormatting;
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.layouts.Layout;
import net.minecraft.client.gui.layouts.LinearLayout;
import net.minecraft.client.gui.screens.ConnectScreen;
import net.minecraft.client.gui.screens.Screen;
import net.minecraft.client.gui.screens.multiplayer.ServerReconfigScreen;
import net.minecraft.client.gui.screens.multiplayer.WarningScreen;
import net.minecraft.client.multiplayer.ServerData;
import net.minecraft.client.multiplayer.ServerList;
import net.minecraft.network.chat.CommonComponents;
import net.minecraft.network.chat.Component;
import org.jspecify.annotations.Nullable;
public class CodeOfConductScreen
extends WarningScreen {
private static final Component TITLE = Component.translatable("multiplayer.codeOfConduct.title").withStyle(ChatFormatting.BOLD);
private static final Component CHECK = Component.translatable("multiplayer.codeOfConduct.check");
private final @Nullable ServerData serverData;
private final String codeOfConductText;
private final BooleanConsumer resultConsumer;
private final Screen parent;
private CodeOfConductScreen(@Nullable ServerData serverData, Screen parent, Component contents, String codeOfConductText, BooleanConsumer resultConsumer) {
super(TITLE, contents, CHECK, TITLE.copy().append("\n").append(contents));
this.serverData = serverData;
this.parent = parent;
this.codeOfConductText = codeOfConductText;
this.resultConsumer = resultConsumer;
}
public CodeOfConductScreen(@Nullable ServerData serverData, Screen parent, String codeOfConductText, BooleanConsumer resultConsumer) {
this(serverData, parent, Component.literal(codeOfConductText), codeOfConductText, resultConsumer);
}
@Override
protected Layout addFooterButtons() {
LinearLayout footer = LinearLayout.horizontal().spacing(8);
footer.addChild(Button.builder(CommonComponents.GUI_ACKNOWLEDGE, button -> this.onResult(true)).build());
footer.addChild(Button.builder(CommonComponents.GUI_DISCONNECT, button -> this.onResult(false)).build());
return footer;
}
private void onResult(boolean accepted) {
this.resultConsumer.accept(accepted);
if (this.serverData != null) {
if (accepted && this.stopShowing.selected()) {
this.serverData.acceptCodeOfConduct(this.codeOfConductText);
} else {
this.serverData.clearCodeOfConduct();
}
ServerList.saveSingleServer(this.serverData);
}
}
@Override
public boolean shouldCloseOnEsc() {
return false;
}
@Override
public void tick() {
super.tick();
if (this.parent instanceof ConnectScreen || this.parent instanceof ServerReconfigScreen) {
this.parent.tick();
}
}
}