diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/AbstractPacketHandler.java b/protocol/src/main/java/net/md_5/bungee/protocol/AbstractPacketHandler.java index 654f7da5..86088656 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/AbstractPacketHandler.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/AbstractPacketHandler.java @@ -45,6 +45,7 @@ import net.md_5.bungee.protocol.packet.ServerData; import net.md_5.bungee.protocol.packet.ServerLinks; import net.md_5.bungee.protocol.packet.SetCompression; import net.md_5.bungee.protocol.packet.ShowDialog; +import net.md_5.bungee.protocol.packet.ShowDialogDirect; import net.md_5.bungee.protocol.packet.StartConfiguration; import net.md_5.bungee.protocol.packet.StatusRequest; import net.md_5.bungee.protocol.packet.StatusResponse; @@ -287,6 +288,10 @@ public abstract class AbstractPacketHandler { } + public void handle(ShowDialogDirect showDialogDirect) throws Exception + { + } + public void handle(ClearDialog clearDialog) throws Exception { } diff --git a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java index 7b6d16a1..6c4e6735 100644 --- a/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java +++ b/protocol/src/main/java/net/md_5/bungee/protocol/Protocol.java @@ -51,6 +51,7 @@ import net.md_5.bungee.protocol.packet.ServerData; import net.md_5.bungee.protocol.packet.ServerLinks; import net.md_5.bungee.protocol.packet.SetCompression; import net.md_5.bungee.protocol.packet.ShowDialog; +import net.md_5.bungee.protocol.packet.ShowDialogDirect; import net.md_5.bungee.protocol.packet.StartConfiguration; import net.md_5.bungee.protocol.packet.StatusRequest; import net.md_5.bungee.protocol.packet.StatusResponse; @@ -857,6 +858,16 @@ public enum Protocol ServerLinks::new, map( ProtocolConstants.MINECRAFT_1_21, 0x10 ) ); + TO_CLIENT.registerPacket( + ClearDialog.class, + ClearDialog::new, + map( ProtocolConstants.MINECRAFT_1_21_6, 0x11 ) + ); + TO_CLIENT.registerPacket( + ShowDialogDirect.class, + ShowDialogDirect::new, + map( ProtocolConstants.MINECRAFT_1_21_6, 0x12 ) + ); TO_SERVER.registerPacket( ClientSettings.class, diff --git a/proxy/src/main/java/net/md_5/bungee/UserConnection.java b/proxy/src/main/java/net/md_5/bungee/UserConnection.java index 50c16388..9d2e05f8 100644 --- a/proxy/src/main/java/net/md_5/bungee/UserConnection.java +++ b/proxy/src/main/java/net/md_5/bungee/UserConnection.java @@ -62,6 +62,7 @@ import net.md_5.bungee.protocol.packet.PlayerListHeaderFooter; import net.md_5.bungee.protocol.packet.PluginMessage; import net.md_5.bungee.protocol.packet.SetCompression; import net.md_5.bungee.protocol.packet.ShowDialog; +import net.md_5.bungee.protocol.packet.ShowDialogDirect; import net.md_5.bungee.protocol.packet.StoreCookie; import net.md_5.bungee.protocol.packet.SystemChat; import net.md_5.bungee.protocol.packet.Transfer; @@ -851,6 +852,12 @@ public final class UserConnection implements ProxiedPlayer { Preconditions.checkState( getPendingConnection().getVersion() >= ProtocolConstants.MINECRAFT_1_21_6, "Dialogs are only supported in 1.21.6 and above" ); + if ( ch.getEncodeProtocol() == Protocol.CONFIGURATION ) + { + unsafe.sendPacket( new ShowDialogDirect( dialog ) ); + return; + } + unsafe.sendPacket( new ShowDialog( Either.right( dialog ) ) ); } }