mirror of
https://github.com/FancyInnovations/FancyPlugins.git
synced 2025-12-06 07:43:36 +00:00
packets: Add support for dialog list dialogs
This commit is contained in:
@@ -14,6 +14,7 @@ import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogInput;
|
|||||||
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogNumberRangeInput;
|
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogNumberRangeInput;
|
||||||
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogSingleOptionInput;
|
import de.oliver.fancysitula.api.dialogs.inputs.FS_DialogSingleOptionInput;
|
||||||
import de.oliver.fancysitula.api.dialogs.types.FS_ConfirmationDialog;
|
import de.oliver.fancysitula.api.dialogs.types.FS_ConfirmationDialog;
|
||||||
|
import de.oliver.fancysitula.api.dialogs.types.FS_DialogListDialog;
|
||||||
import de.oliver.fancysitula.api.dialogs.types.FS_NoticeDialog;
|
import de.oliver.fancysitula.api.dialogs.types.FS_NoticeDialog;
|
||||||
import de.oliver.fancysitula.api.entities.FS_RealPlayer;
|
import de.oliver.fancysitula.api.entities.FS_RealPlayer;
|
||||||
import de.oliver.fancysitula.api.packets.FS_ClientboundShowDialogPacket;
|
import de.oliver.fancysitula.api.packets.FS_ClientboundShowDialogPacket;
|
||||||
@@ -21,6 +22,7 @@ import de.oliver.fancysitula.versions.v1_21_6.utils.VanillaPlayerAdapter;
|
|||||||
import io.papermc.paper.adventure.PaperAdventure;
|
import io.papermc.paper.adventure.PaperAdventure;
|
||||||
import net.kyori.adventure.text.minimessage.MiniMessage;
|
import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
import net.minecraft.core.Holder;
|
import net.minecraft.core.Holder;
|
||||||
|
import net.minecraft.core.HolderSet;
|
||||||
import net.minecraft.network.chat.Component;
|
import net.minecraft.network.chat.Component;
|
||||||
import net.minecraft.network.protocol.common.ClientboundShowDialogPacket;
|
import net.minecraft.network.protocol.common.ClientboundShowDialogPacket;
|
||||||
import net.minecraft.server.dialog.*;
|
import net.minecraft.server.dialog.*;
|
||||||
@@ -65,6 +67,8 @@ public class ClientboundShowDialogPacketImpl extends FS_ClientboundShowDialogPac
|
|||||||
return noticeToNms(notice);
|
return noticeToNms(notice);
|
||||||
} else if (dialog instanceof FS_ConfirmationDialog confirmation) {
|
} else if (dialog instanceof FS_ConfirmationDialog confirmation) {
|
||||||
return confirmationToNms(confirmation);
|
return confirmationToNms(confirmation);
|
||||||
|
} else if (dialog instanceof FS_DialogListDialog dialogList) {
|
||||||
|
return dialogListToNms(dialogList);
|
||||||
}
|
}
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
@@ -85,6 +89,23 @@ public class ClientboundShowDialogPacketImpl extends FS_ClientboundShowDialogPac
|
|||||||
return new ConfirmationDialog(common, yes, no);
|
return new ConfirmationDialog(common, yes, no);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private Dialog dialogListToNms(FS_DialogListDialog dialogList) {
|
||||||
|
CommonDialogData common = commonToNms(dialogList.getDialogData());
|
||||||
|
List<Holder<Dialog>> dialogs = new ArrayList<>();
|
||||||
|
|
||||||
|
for (FS_Dialog dialog : dialogList.getDialogs()) {
|
||||||
|
dialogs.add(Holder.direct(toNms(dialog)));
|
||||||
|
}
|
||||||
|
|
||||||
|
HolderSet<Dialog> dialogSet = HolderSet.direct(dialogs);
|
||||||
|
|
||||||
|
Optional<ActionButton> exitButton = dialogList.getExitButton() != null ?
|
||||||
|
Optional.of(actionButtonToNms(dialogList.getExitButton())) :
|
||||||
|
Optional.empty();
|
||||||
|
|
||||||
|
return new DialogListDialog(common, dialogSet, exitButton, dialogList.getColumns(), dialogList.getButtonWidth());
|
||||||
|
}
|
||||||
|
|
||||||
private CommonDialogData commonToNms(FS_CommonDialogData dialogData) {
|
private CommonDialogData commonToNms(FS_CommonDialogData dialogData) {
|
||||||
Component title = PaperAdventure.asVanilla(MiniMessage.miniMessage().deserialize(dialogData.getTitle()));
|
Component title = PaperAdventure.asVanilla(MiniMessage.miniMessage().deserialize(dialogData.getTitle()));
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,65 @@
|
|||||||
|
package de.oliver.fancysitula.api.dialogs.types;
|
||||||
|
|
||||||
|
import de.oliver.fancysitula.api.dialogs.FS_CommonDialogData;
|
||||||
|
import de.oliver.fancysitula.api.dialogs.FS_Dialog;
|
||||||
|
import de.oliver.fancysitula.api.dialogs.actions.FS_DialogActionButton;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class FS_DialogListDialog implements FS_Dialog {
|
||||||
|
|
||||||
|
private FS_CommonDialogData dialogData;
|
||||||
|
private List<FS_Dialog> dialogs;
|
||||||
|
private @Nullable FS_DialogActionButton exitButton;
|
||||||
|
private int columns;
|
||||||
|
private int buttonWidth;
|
||||||
|
|
||||||
|
public FS_DialogListDialog(FS_CommonDialogData dialogData, List<FS_Dialog> dialogs, @Nullable FS_DialogActionButton exitButton, int columns, int buttonWidth) {
|
||||||
|
this.dialogData = dialogData;
|
||||||
|
this.dialogs = dialogs;
|
||||||
|
this.exitButton = exitButton;
|
||||||
|
this.columns = columns;
|
||||||
|
this.buttonWidth = buttonWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public FS_CommonDialogData getDialogData() {
|
||||||
|
return dialogData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDialogData(FS_CommonDialogData dialogData) {
|
||||||
|
this.dialogData = dialogData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<FS_Dialog> getDialogs() {
|
||||||
|
return dialogs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDialogs(List<FS_Dialog> dialogs) {
|
||||||
|
this.dialogs = dialogs;
|
||||||
|
}
|
||||||
|
|
||||||
|
public @Nullable FS_DialogActionButton getExitButton() {
|
||||||
|
return exitButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setExitButton(@Nullable FS_DialogActionButton exitButton) {
|
||||||
|
this.exitButton = exitButton;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getColumns() {
|
||||||
|
return columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColumns(int columns) {
|
||||||
|
this.columns = columns;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getButtonWidth() {
|
||||||
|
return buttonWidth;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setButtonWidth(int buttonWidth) {
|
||||||
|
this.buttonWidth = buttonWidth;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user