-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Fix the player information version_string return value #8616
Conversation
The version string can be anything. Really anything. What matters is the protocol and formspec compatibility. Former can already be read, latter not. |
I know that the client can lie but the use case is not to block users. It's more to understand why a user has a bug and to check for updates or incompatibles. |
Hackers are minority of playerbase. Majority are peaceful peasants. |
The problem is that the version string can be any arbitrary string. This has nothing to do with hacking and modified clients. As mentioned by SmallJoker and even That's why we have a protocol version. Forks can also modify the protocol version to their own liking, but then those forks won't be compatible with Minetest anyway. Server-client compat. is solely (AFAIK) determined by the min. max. protocol versions, so checking the protocol versions is a much safer bet than the arbitrary version string. |
|
This is exactly why getting "any arbitrary string" is useful. Especially if there are another clients with compatible protocols. Why do you think, there is User-Agent in HTTP protocol? It is HTTP request header and can be arbitrary set in each request. It is very useful for gathering information about users and improving their experience. |
Yes in this function which gets called by another function called by another function... Line 329 in 297beea
|
May I know why unofficial clients need to be differentiated? This is would probably make sense for websites, but I don't understand why this is required for Minetest. |
answer is in the first post.
If you don't need this functionality now, it doesn't mean that noone needs it. There might be important differencies in functionality and bugfixes even between MT with different minor version. This is the main reason for adding this property. |
|
@ClobberXD |
Oh sorry, I got confused. What I pointed to was server-side. My bad. |
The bugfix part of this is valuable.
|
I'll be a volunteer to pass gibberish version strings to the server if this gets merged. The data is already sent to the server, so my only concern is that server admins begin to rely on these values rather than checking in-game whether it's a "quality player". Sure go on, lock those mobile users (and spin-offs) out if you're happy with that (if there's a second approval).
That's exactly why there's the protocol version checking. No spin-off would change these limits without providing full network compatibility. Things would break, stop working or simply annoy players. |
I support the bugfix part of this, but am neutral about the rest. |
I'll be a volunteer to stand against such change. What is the point for making thrash from useful data? |
Are we here really only talking about the Version string? Just one thing about Forks: |
👍 bugfix, allowing
From just the protocol version you can already determine the Minetest version the user is running. |
Why passing less to mods if it already exist in the server? Secondary you just need a filter out very uncommon versions. You can make yourself a Minetest player or a fork. It doesn’t matter it’s then your fault if you get infos to please play Minetest. |
They will, once servers and mods start making use of this to filter out the non-conforming clients. |
Seems like paramat supports this PR too: #8616 (comment) |
Just to be clear, I'm neutral on this PR. On one side, I'm against giving servers an extra reason to discriminate players by. While it's not necessary for server owners to be hostile towards forks, that's quite possible, given that almost all forks (apart from a handful of legit ones) are unofficial/illegal. On the other hand, MT is a game engine. And as such, it ought to be unrestrictive, and give games/mods as much info as possible, and let the mods do what they want. |
I have the same view as you, so am also neutral |
My opinion is:
This bugfix part of this has support. |
With or without ser_vers in non debug mode? |
Just before you say we don’t want to inform Forks about Minetest or don’t want to make a difference possible to inform them. Some statistics of my old(0.4.17) server: [join count/percentage] protocol_version, ser_vers, major, minor, patch, version_string
If you know more about some of this clients on the list please just edit my post or ask me to edit. We should really inform these Forks about Minetest they are more then 65% If someone wants to try out just use my fork branch version_string4 for 0.4.17 or version_string5 for 5.0.1. |
To be clear, i support what sfan5 suggests:
SmallJoker does to (see emoticons) so that will probably be merged. |
👍 for the bugfix |
doc/lua_api.txt
Outdated
major = 0, -- major version number | ||
minor = 4, -- minor version number | ||
patch = 10, -- patch version number | ||
version_string = "0.4.9-git", -- full version string |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This needs updating - most of these fields are now unavailable in Release builds again.
Obviously no Core-dev for the other information. |
* Give more player information * Correct lua_api.txt * Correct keys in lua_api.txt * Improve Code * Only Bugfix+ser_vers * Correct doc * Fix double
What for?
This PR allows to access more player information just like the version string which was before only available on the debug-build.
The version_string never worked not even in debug-build thats now fixed too.
It should help server owners to check which version a client has so that they for example can ask them to update.
How to test
EDIT by SmallJoker:
PS: How to format this code correctly?