Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Wiki: Add a more in-depth explanation of the "Outdated Version" section. #262

Open
Andre601 opened this issue Sep 30, 2019 · 8 comments
Open

Comments

@Andre601
Copy link
Contributor

When I remember correctly was it possible to set a specific Protocol version for at least the spigot server/version to then show the Outdated Version text when a player pings the server with any other version than xxxx.
However, this isn't really explained on the wiki... More specifically does the wiki not say at all where in the config (in what section) you would need to set this "Version" option to use it and what all the available configurations (and limitations) are.

@stephan-gh
Copy link
Member

I don't understand exactly what you would like to do, but let me explain the version option in detail:

First off, the rule of thumb is that if you need to add a new option to the configuration, you add it to the !Status section. The !Plugin section already contains all options that exist. (Although I have to admit that the configuration "sections" were a poor design choice...)

Understanding the version options is easier if you have a rough idea how the protocol is working:

When you open the server list on the client, it sends a "status request" to all servers in the server list. The server replies with a JSON string with MOTD/description, online players, slots, favicon etc.
It also sends its numeric protocol version (e.g. 498 for 1.14.4) together with a version name (e.g. Paper 1.14.4).

SLP allows you to change all parts of the JSON response. So if you change the Outdated Version message:

  Version:
    Name:
    - '&aPlease download &lMinecraft 1.8&a!'

the version name (Paper 1.14.4) is replaced with that message.

The client displays the version name only if its own numeric protocol version does not match the one provided by the server. Therefore, if you change the numeric protocol version to one that does not exist, the client will always display the version name:

  Version:
    Protocol: 9999

Assuming the client displays the version name in place of the player slots, this can be abused for custom player slots. You just set an arbitrarily high protocol version, put a string with colored player slots into the version name, and the client will happily display it in place of the standard player slots. (With the disadvantages explained in the wiki article.)

Since ServerListPlus v3.3, SLP attempts to handle the custom player slots a bit more intelligent. The "status request" sent by the client contains the protocol version supported by the client.
SLP compares the client protocol version with the server protocol version. Only if it matches it will place the custom player slots into the version name. With this, the version name is still correctly displayed to outdated clients.

Does that help? If you could explain what exactly was confusing you, I might be able to extend the wiki a little bit.

@Andre601
Copy link
Contributor Author

Andre601 commented Oct 5, 2019

I mean just adding the section that this option blong to.
It's not very clear in what section it belongs.

I honestly made/updated a bungee plugin to deal with this.

@stephan-gh
Copy link
Member

stephan-gh commented Oct 5, 2019

SLP cannot be used for all features of that plugin. You can use it to

  • force a single protocol version and therefore display an "outdated client" message for all other clients

but it cannot (at the moment):

  • disable some older protocol versions (i.e. disallow all versions older than X)
  • disconnect players using older protocol versions

@Andre601
Copy link
Contributor Author

Andre601 commented Oct 5, 2019

Please read my messages correctly thanks.

@stephan-gh
Copy link
Member

I'm still confused. The Outdated Version documentation is part of the Status Configuration page, so it should be clear that it belongs to the !Status section, like everything else documented on that page.

Or am I seeing this wrong?

@Andre601
Copy link
Contributor Author

Andre601 commented Oct 5, 2019

I mean the fact that it wasn't clear for me, if it is just under !status or like under the Default and/or Personalized section should give you an answer.
Just a small mention that it is a separate section like Default and Personalized are would imo be enough.

@stephan-gh
Copy link
Member

Oh, you are referring to Default and Personalized? It's not separate from that. It goes under one of them like everything else.

@Andre601
Copy link
Contributor Author

Andre601 commented Oct 5, 2019

Oh, you are referring to Default and Personalized? It's not separate from that. It goes under one of them like everything else.

Yes.
And that is my point. The description in the wiki doesn't make it clear if it goes under those sections, or is a separate one.
It also completely ignores the fact that you can use a Protocol option to set what version the server/network is, fixing the issue of not displaying it on Proxies.
That's why I opened this issue. To let you know that this could need some tweaks, since I'm sure many people don't know about the Protocol option that is available.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants