package net.minecraft.client.gui.screens.dialog; import java.util.Optional; import java.util.stream.Stream; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.gui.screens.Screen; import net.minecraft.core.Holder; import net.minecraft.network.chat.ClickEvent; import net.minecraft.server.dialog.ActionButton; import net.minecraft.server.dialog.CommonButtonData; import net.minecraft.server.dialog.Dialog; import net.minecraft.server.dialog.DialogListDialog; import net.minecraft.server.dialog.action.StaticAction; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class DialogListDialogScreen extends ButtonListDialogScreen { public DialogListDialogScreen(@Nullable Screen previousScreen, DialogListDialog dialog, DialogConnectionAccess connectionAccess) { super(previousScreen, dialog, connectionAccess); } protected Stream createListActions(DialogListDialog dialog, DialogConnectionAccess connectionAccess) { return dialog.dialogs().stream().map(holder -> createDialogClickAction(dialog, holder)); } private static ActionButton createDialogClickAction(DialogListDialog dialog, Holder dialogToOpen) { return new ActionButton( new CommonButtonData(dialogToOpen.value().common().computeExternalTitle(), dialog.buttonWidth()), Optional.of(new StaticAction(new ClickEvent.ShowDialog(dialogToOpen))) ); } }