diff --git a/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/packets/ClientboundClearDialogPacketImpl.java b/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/packets/ClientboundClearDialogPacketImpl.java new file mode 100644 index 00000000..c6c58ad4 --- /dev/null +++ b/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/packets/ClientboundClearDialogPacketImpl.java @@ -0,0 +1,22 @@ +package de.oliver.fancysitula.versions.v1_21_6.packets; + +import de.oliver.fancysitula.api.entities.FS_RealPlayer; +import de.oliver.fancysitula.api.packets.FS_ClientboundClearDialogPacket; +import de.oliver.fancysitula.versions.v1_21_6.utils.VanillaPlayerAdapter; +import net.minecraft.network.protocol.common.ClientboundClearDialogPacket; +import net.minecraft.server.level.ServerPlayer; + +public class ClientboundClearDialogPacketImpl extends FS_ClientboundClearDialogPacket { + @Override + public Object createPacket() { + return ClientboundClearDialogPacket.INSTANCE; + } + + @Override + protected void sendPacketTo(FS_RealPlayer player) { + ClientboundClearDialogPacket packet = (ClientboundClearDialogPacket) createPacket(); + + ServerPlayer vanillaPlayer = VanillaPlayerAdapter.asVanilla(player.getBukkitPlayer()); + vanillaPlayer.connection.send(packet); + } +} 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 new file mode 100644 index 00000000..a6b94642 --- /dev/null +++ b/libraries/packets/implementations/1_21_6/src/main/java/de/oliver/fancysitula/versions/v1_21_6/packets/ClientboundShowDialogPacketImpl.java @@ -0,0 +1,35 @@ +package de.oliver.fancysitula.versions.v1_21_6.packets; + +import de.oliver.fancysitula.api.dialogs.FS_Dialog; +import de.oliver.fancysitula.api.entities.FS_RealPlayer; +import de.oliver.fancysitula.api.packets.FS_ClientboundShowDialogPacket; +import de.oliver.fancysitula.versions.v1_21_6.utils.VanillaPlayerAdapter; +import net.minecraft.core.Holder; +import net.minecraft.network.protocol.common.ClientboundShowDialogPacket; +import net.minecraft.server.dialog.Dialog; +import net.minecraft.server.level.ServerPlayer; + +public class ClientboundShowDialogPacketImpl extends FS_ClientboundShowDialogPacket { + + public ClientboundShowDialogPacketImpl(FS_Dialog dialog) { + super(dialog); + } + + @Override + public Object createPacket() { + Holder holder = Holder.direct(toNms(dialog)); + return new ClientboundShowDialogPacket(holder); + } + + @Override + protected void sendPacketTo(FS_RealPlayer player) { + ClientboundShowDialogPacket packet = (ClientboundShowDialogPacket) createPacket(); + + ServerPlayer vanillaPlayer = VanillaPlayerAdapter.asVanilla(player.getBukkitPlayer()); + vanillaPlayer.connection.send(packet); + } + + private Dialog toNms(FS_Dialog dialog) { + return null; + } +} diff --git a/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/dialogs/FS_Dialog.java b/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/dialogs/FS_Dialog.java new file mode 100644 index 00000000..e8aff760 --- /dev/null +++ b/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/dialogs/FS_Dialog.java @@ -0,0 +1,4 @@ +package de.oliver.fancysitula.api.dialogs; + +public interface FS_Dialog { +} diff --git a/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/packets/FS_ClientboundClearDialogPacket.java b/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/packets/FS_ClientboundClearDialogPacket.java new file mode 100644 index 00000000..0e113cf6 --- /dev/null +++ b/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/packets/FS_ClientboundClearDialogPacket.java @@ -0,0 +1,4 @@ +package de.oliver.fancysitula.api.packets; + +public abstract class FS_ClientboundClearDialogPacket extends FS_ClientboundPacket { +} diff --git a/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/packets/FS_ClientboundShowDialogPacket.java b/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/packets/FS_ClientboundShowDialogPacket.java new file mode 100644 index 00000000..a649fcf7 --- /dev/null +++ b/libraries/packets/packets-api/src/main/java/de/oliver/fancysitula/api/packets/FS_ClientboundShowDialogPacket.java @@ -0,0 +1,20 @@ +package de.oliver.fancysitula.api.packets; + +import de.oliver.fancysitula.api.dialogs.FS_Dialog; + +public abstract class FS_ClientboundShowDialogPacket extends FS_ClientboundPacket { + + protected FS_Dialog dialog; + + public FS_ClientboundShowDialogPacket(FS_Dialog dialog) { + this.dialog = dialog; + } + + public FS_Dialog getDialog() { + return dialog; + } + + public void setDialog(FS_Dialog dialog) { + this.dialog = dialog; + } +} diff --git a/libraries/packets/src/main/java/de/oliver/fancysitula/factories/PacketFactory.java b/libraries/packets/src/main/java/de/oliver/fancysitula/factories/PacketFactory.java index 05f09d38..0ae49ad0 100644 --- a/libraries/packets/src/main/java/de/oliver/fancysitula/factories/PacketFactory.java +++ b/libraries/packets/src/main/java/de/oliver/fancysitula/factories/PacketFactory.java @@ -1,5 +1,6 @@ package de.oliver.fancysitula.factories; +import de.oliver.fancysitula.api.dialogs.FS_Dialog; import de.oliver.fancysitula.api.packets.*; import de.oliver.fancysitula.api.utils.FS_EquipmentSlot; import de.oliver.fancysitula.api.utils.ServerVersion; @@ -477,4 +478,37 @@ public class PacketFactory { throw new IllegalArgumentException("Unsupported server version: " + ServerVersion.getCurrentVersion()); } } + + /** + * Creates a new FS_ClientboundShowDialogPacket instance based on the server version + * + * @param dialog The dialog to show + * @return An instance of FS_ClientboundShowDialogPacket for the specified server version + */ + public FS_ClientboundShowDialogPacket createShowDialogPacket( + FS_Dialog dialog + ) { + switch (ServerVersion.getCurrentVersion()) { + case v1_21_6 -> { + return new de.oliver.fancysitula.versions.v1_21_6.packets.ClientboundShowDialogPacketImpl(dialog); + } + default -> + throw new IllegalArgumentException("Unsupported server version: " + ServerVersion.getCurrentVersion()); + } + } + + /** + * Creates a new FS_ClientboundClearDialogPacket instance based on the server version + * + * @return An instance of FS_ClientboundClearDialogPacket for the specified server version + */ + public FS_ClientboundClearDialogPacket createClearDialogPacket() { + switch (ServerVersion.getCurrentVersion()) { + case v1_21_6 -> { + return new de.oliver.fancysitula.versions.v1_21_6.packets.ClientboundClearDialogPacketImpl(); + } + default -> + throw new IllegalArgumentException("Unsupported server version: " + ServerVersion.getCurrentVersion()); + } + } }