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