minecraft-src/net/minecraft/client/gui/screens/dialog/DialogListDialogScreen.java
2025-09-18 12:27:44 +00:00

33 lines
1.4 KiB
Java

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<DialogListDialog> {
public DialogListDialogScreen(@Nullable Screen previousScreen, DialogListDialog dialog, DialogConnectionAccess connectionAccess) {
super(previousScreen, dialog, connectionAccess);
}
protected Stream<ActionButton> createListActions(DialogListDialog dialog, DialogConnectionAccess connectionAccess) {
return dialog.dialogs().stream().map(holder -> createDialogClickAction(dialog, holder));
}
private static ActionButton createDialogClickAction(DialogListDialog dialog, Holder<Dialog> dialogToOpen) {
return new ActionButton(
new CommonButtonData(dialogToOpen.value().common().computeExternalTitle(), dialog.buttonWidth()),
Optional.of(new StaticAction(new ClickEvent.ShowDialog(dialogToOpen)))
);
}
}