From f2f0be0581e849f4a17e89c14cd2abc04fe7f834 Mon Sep 17 00:00:00 2001 From: EnZaXD Date: Sat, 20 Jul 2024 09:15:15 +0200 Subject: [PATCH] Allow base protocols to set client version (#4029) --- .../api/protocol/version/VersionProvider.java | 11 +++++++++++ .../viaversion/protocols/base/BaseProtocol.java | 12 +++++++++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/api/src/main/java/com/viaversion/viaversion/api/protocol/version/VersionProvider.java b/api/src/main/java/com/viaversion/viaversion/api/protocol/version/VersionProvider.java index 0b9f50ab4..347d0ae0f 100644 --- a/api/src/main/java/com/viaversion/viaversion/api/protocol/version/VersionProvider.java +++ b/api/src/main/java/com/viaversion/viaversion/api/protocol/version/VersionProvider.java @@ -28,6 +28,17 @@ import com.viaversion.viaversion.api.platform.providers.Provider; @FunctionalInterface public interface VersionProvider extends Provider { + /** + * Optionally allows platforms to specify the client version of a user. This is needed when the platform supports + * connecting other version types then {@link VersionType#RELEASE} to the server. + * + * @param connection connection + * @return client protocol version, or null if handshake packet should be used + */ + default ProtocolVersion getClientProtocol(UserConnection connection) { + return null; + } + /** * Returns the closest server protocol version to the user's protocol version. * On non-proxy servers, this returns the actual server version. diff --git a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java index 284ae5f9a..883f1a85a 100644 --- a/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java +++ b/common/src/main/java/com/viaversion/viaversion/protocols/base/BaseProtocol.java @@ -61,15 +61,21 @@ public class BaseProtocol extends AbstractProtocol