diff --git a/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/packets/ClientboundShowDialogPacketImpl.java b/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/packets/ClientboundShowDialogPacketImpl.java index 57f57c48..c2649609 100644 --- a/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/packets/ClientboundShowDialogPacketImpl.java +++ b/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/packets/ClientboundShowDialogPacketImpl.java @@ -245,7 +245,7 @@ public class ClientboundShowDialogPacketImpl extends FS_ClientboundShowDialogPac Optional additions; if (customAction.getAdditions() != null) { CompoundTag tag = new CompoundTag(); - tag.putString("data", customAction.getAdditions()); + customAction.getAdditions().forEach(tag::putString); additions = Optional.of(tag); } else { additions = Optional.empty(); diff --git a/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/utils/PacketListenerImpl.java b/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/utils/PacketListenerImpl.java index b40b4b3b..1152b8c8 100644 --- a/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/utils/PacketListenerImpl.java +++ b/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/utils/PacketListenerImpl.java @@ -13,8 +13,9 @@ import net.minecraft.server.level.ServerPlayer; import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.entity.Player; +import java.util.HashMap; import java.util.List; -import java.util.Optional; +import java.util.Map; public class PacketListenerImpl extends FS_PacketListener { @@ -75,12 +76,16 @@ public class PacketListenerImpl extends FS_PacketListener { switch (type) { case CUSTOM_CLICK_ACTION -> { ServerboundCustomClickActionPacket customClickActionPacket = (ServerboundCustomClickActionPacket) packet; + + Map payload = new HashMap<>(); + customClickActionPacket.payload().get().asCompound().get().forEach((k, t) -> { + payload.put(k, t.asString().get()); + }); + return new FS_ServerboundCustomClickActionPacket( type, PaperAdventure.asAdventure(customClickActionPacket.id()), - customClickActionPacket.payload().isPresent() ? - customClickActionPacket.payload().get().asCompound().get().getString("data") : - Optional.empty() + payload ); } // Add more cases for other packet types as needed diff --git a/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/dialogs/actions/FS_DialogCustomAction.java b/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/dialogs/actions/FS_DialogCustomAction.java index 5da567e3..816d84a6 100644 --- a/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/dialogs/actions/FS_DialogCustomAction.java +++ b/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/dialogs/actions/FS_DialogCustomAction.java @@ -3,12 +3,14 @@ package de.oliver.fancysitula.api.dialogs.actions; import org.intellij.lang.annotations.Subst; import org.jetbrains.annotations.Nullable; +import java.util.Map; + public class FS_DialogCustomAction implements FS_DialogActionButtonAction { private String id; - private @Nullable String additions; + private Map additions; - public FS_DialogCustomAction(String id, String additions) { + public FS_DialogCustomAction(String id, Map additions) { this.id = id; this.additions = additions; } @@ -22,11 +24,11 @@ public class FS_DialogCustomAction implements FS_DialogActionButtonAction { this.id = id; } - public @Nullable String getAdditions() { + public @Nullable Map getAdditions() { return additions; } - public void setAdditions(@Nullable String additions) { + public void setAdditions(@Nullable Map additions) { this.additions = additions; } } diff --git a/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/packets/FS_ServerboundCustomClickActionPacket.java b/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/packets/FS_ServerboundCustomClickActionPacket.java index 6b4c198d..d0c214f6 100644 --- a/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/packets/FS_ServerboundCustomClickActionPacket.java +++ b/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/packets/FS_ServerboundCustomClickActionPacket.java @@ -2,14 +2,14 @@ package de.oliver.fancysitula.api.packets; import net.kyori.adventure.key.Key; -import java.util.Optional; +import java.util.Map; public class FS_ServerboundCustomClickActionPacket extends FS_ServerboundPacket { private final Key id; - private final Optional payload; + private final Map payload; - public FS_ServerboundCustomClickActionPacket(Type type, Key id, Optional payload) { + public FS_ServerboundCustomClickActionPacket(Type type, Key id, Map payload) { super(type); this.id = id; this.payload = payload; @@ -19,7 +19,7 @@ public class FS_ServerboundCustomClickActionPacket extends FS_ServerboundPacket return id; } - public Optional getPayload() { + public Map getPayload() { return payload; } diff --git a/libraries/packets/test-plugin/src/main/java/de/oliver/fancysitula/commands/FancySitulaCMD.java b/libraries/packets/test-plugin/src/main/java/de/oliver/fancysitula/commands/FancySitulaCMD.java index 7bbde0f2..fed9d033 100644 --- a/libraries/packets/test-plugin/src/main/java/de/oliver/fancysitula/commands/FancySitulaCMD.java +++ b/libraries/packets/test-plugin/src/main/java/de/oliver/fancysitula/commands/FancySitulaCMD.java @@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull; import java.util.EnumSet; import java.util.List; +import java.util.Map; import java.util.UUID; public class FancySitulaCMD extends Command { @@ -105,7 +106,7 @@ public class FancySitulaCMD extends Command { ), new FS_DialogCustomAction( "my-custom-action-1", - "someAdditionalData1" + Map.of("foo", "bar") ) ) ); diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/ConfirmationDialog.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/ConfirmationDialog.java index 50b54210..da61932b 100644 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/ConfirmationDialog.java +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/ConfirmationDialog.java @@ -35,12 +35,14 @@ public class ConfirmationDialog { new DialogButton( this.confirmText, this.confirmText, - "confirm" + "confirm", + "" ), new DialogButton( this.cancelText, this.cancelText, - "cancel" + "cancel", + "" ) ) ); diff --git a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogButton.java b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogButton.java index a43bb92b..b7177730 100644 --- a/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogButton.java +++ b/plugins/fancydialogs/fd-api/src/main/java/com/fancyinnovations/fancydialogs/api/data/DialogButton.java @@ -3,6 +3,7 @@ package com.fancyinnovations.fancydialogs.api.data; public record DialogButton( String label, String tooltip, - String action + String action, + String actionData ) { } diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java index 7276df38..4ad9ccb6 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/dialog/DialogImpl.java @@ -18,6 +18,7 @@ import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.List; +import java.util.Map; public class DialogImpl extends Dialog { @@ -46,7 +47,14 @@ public class DialogImpl extends Dialog { button.tooltip(), 150 // default button width ), - new FS_DialogCustomAction("fancydialogs_dialog_action", button.action()) + new FS_DialogCustomAction( + "fancydialogs_dialog_action", + Map.of( + "dialog_id", id, + "action_id", button.action(), + "action_data", button.actionData() + ) + ) ); actions.add(fsDialogActionButton); } diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/CustomClickActionPacketListener.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/CustomClickActionPacketListener.java index 37772d77..04d90963 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/CustomClickActionPacketListener.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/listener/CustomClickActionPacketListener.java @@ -31,6 +31,12 @@ public class CustomClickActionPacketListener { if (!packet.getId().namespace().equals("fancysitula") && !packet.getId().namespace().equals("fancydialogs_dialog_action")) { return; // Ignore packets not related to FancyDialogs } + + String dialogId = packet.getPayload().get("dialog_id"); + String actionId = packet.getPayload().get("action_id"); + String actionData = packet.getPayload().get("action_data"); + + // TODO process the dialog action } public FS_PacketListener getPacketListener() { diff --git a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/registry/DefaultDialogs.java b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/registry/DefaultDialogs.java index 04279158..a6e488c1 100644 --- a/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/registry/DefaultDialogs.java +++ b/plugins/fancydialogs/src/main/java/com/fancyinnovations/fancydialogs/registry/DefaultDialogs.java @@ -44,12 +44,14 @@ public class DefaultDialogs { new DialogButton( "Close", "Enjoy using FancyDialogs", - "close_dialog" + "close_dialog", + "" ), new DialogButton( "Run command", "Click to give yourself an apple :)", - "run_command:/give {player} apple 1" + "run_command:", + "give {player} apple 1" ) ) ); @@ -72,22 +74,26 @@ public class DefaultDialogs { new DialogButton( "Read the rules", "Click to read our rules!", - "message:Visit our rules!" + "message", + "Visit our rules!" ), new DialogButton( "Start playing", "Click to start playing!", - "close_dialog" + "close_dialog", + "" ), new DialogButton( "Join our Discord", "Click to join our Discord server!", - "message:Join our Discord server!" + "message", + "Join our Discord server!" ), new DialogButton( "Visit our website", "Click to visit our website!", - "message:Visit our website!" + "message", + "Visit our website!" ) ) ); @@ -107,27 +113,32 @@ public class DefaultDialogs { new DialogButton( "Visit our website", "Click to visit our website!", - "message:Visit our website!" + "message", + "Visit our website!" ), new DialogButton( "Read the rules", "Click to read our rules!", - "message:Visit our rules!" + "message", + "Visit our rules!" ), new DialogButton( "Join our Discord", "Click to join our Discord server!", - "message:Join our Discord server!" + "message", + "Join our Discord server!" ), new DialogButton( "Support us", "Click to support us!", - "message:Support us!" + "message", + "Support us!" ), new DialogButton( "Close", "Click to close this dialog!", - "close_dialog" + "close_dialog", + "" ) ) );