CloudNet icon indicating copy to clipboard operation
CloudNet copied to clipboard

Protocol Version property for services

Open davidmayr opened this issue 1 year ago • 0 comments

Describe the new feature

A Service property for Paper/Fabric/Minestom services that provides the protocol version of the backend service to be used in various ways. This is way more useful than the current "Version" property that finds almost no use since it isn't required to follow a specific format amongst different service implementations.

Why do you need this feature?

In my case, I implemented a system that makes ViaVersion on the proxy work properly by registering new services in the protocolDetectorService so ViaVersion knows the version of the service without needing to ping the backend service first.

When I was required to implement a property like this myself on the game services, I thought this might be useful for to have this in cloudnet itself.

It can e.g. be implemented for hiding games for users that can't join these services because their client is outdated, for my ViaVersion proxy fix, distributing players with the same version to specific game lobbies (e.g. bedwars queues for 1.8 players and bedwars queues for 1.19 players) and much more. It's essentially the "Version" property - but actually useful.

Alternatives

Implementing this with a custom plugin on every sub-server or trying to parse the "Version" parameter present in the default properties

Other

If that gets implemented in Minestom I highly suggest not just accessing MinecraftServer#PROTOCOL_VERSION directly since this constant will be inlined at compile time and will not represent the currently running protocol version

Issue uniqueness

  • [X] Yes, this issue is unique. There are no similar issues.

davidmayr avatar Apr 22 '23 23:04 davidmayr