gamedig / node-gamedig

Query game servers and not only! Node.JS/Deno/Bun or Bash (via the CLI).
https://www.npmjs.com/package/gamedig
MIT License
607 stars 146 forks source link

Bungeecord / Waterfall Minecraft Proxies do not respond to standard `minecraft` queries #116

Closed robbiek closed 5 years ago

robbiek commented 5 years ago

When querying a minecraft server i get the number of players online correctly put player data is empty

{"name":"","map":"","password":false,"raw":{"version":{"name":"BungeeCord 1.8.x-1.13.x","protocol":404},"players":{"max":150,"online":1},"description":{"extra":[{"color":"red","text":"| "},{"color":"aqua","text":"exampleserver"},{"color":"red","text":"| "},{"color":"gold","text":"(1.13.2 BETA)"}],"text":""},"modinfo":{"type":"FML","modList":[]},"rcvNumPlayers":1},"maxplayers":150,"players":[{}],"bots":[],"connect":"play.example.net:25565","ping":40}

Any ideas why this would be the case?

mmorrisontx commented 5 years ago

This is by design. Unfortunately, Minecraft does not provide full player details (or even names). In some cases, it provides the names of only a portion of the connected players, but in this case, it has not returned any at all.

The 'raw' object contains everything we have received from the Minecraft server ping, which doesn't include any names in your example.

On Tue, Mar 5, 2019, 1:17 PM Robbie K notifications@github.com wrote:

When querying a minecraft server i get the number of players online correctly put player data is empty

{"name":"","map":"","password":false,"raw":{"version":{"name":"BungeeCord 1.8.x-1.13.x","protocol":404},"players":{"max":150,"online":1},"description":{"extra":[{"color":"red","text":"| "},{"color":"aqua","text":"JRCraft "},{"color":"red","text":"| "},{"color":"gold","text":"(1.13.2 BETA)"}],"text":""},"modinfo":{"type":"FML","modList":[]},"rcvNumPlayers":1},"maxplayers":150,"players":[{}],"bots":[],"connect":" play.example.net:25565","ping":40}

Any ideas why this would be the case?

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/sonicsnes/node-gamedig/issues/116, or mute the thread https://github.com/notifications/unsubscribe-auth/AAflfh9q8p_Ne7QSrFvkkdhd09unH-xmks5vTsLRgaJpZM4bfUDQ .

robbiek commented 5 years ago

Hi Sonicsnes thats for quick reply. I get data back from gameQ lib . i did find a solution. its to use the minecraftpe protocol.

mmorrisontx commented 5 years ago

Interesting, I'm surprised that works... I'll look into it more tonight. Is this actually a Minecraftpe server? (Bedrock edition)

On Tue, Mar 5, 2019, 1:58 PM Robbie K notifications@github.com wrote:

Hi Sonicsnes thats for quick reply. I get data back from gameQ lib . i did find a solution. its to use the minecraftpe protocol.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/sonicsnes/node-gamedig/issues/116#issuecomment-469835276, or mute the thread https://github.com/notifications/unsubscribe-auth/AAflfhsxlHhObcVFcKHnWgP4222M_JANks5vTsxWgaJpZM4bfUDQ .

robbiek commented 5 years ago

nope its 3 normal severs running 1.13 using bungeecord proxy. thanks.

robbiek commented 5 years ago

this is the response when using minecractpe protocol

{"name":"examplename","map":"","password":false,"raw":{"playerTeamInfo":{"":[{"player":"Robbiek12"}]},"hostname":"examplename","gametype":"SMP","game_id":"MINECRAFT","version":"1.8.x-1.13.x","plugins":"","map":"BungeeCord_Proxy","numplayers":"1","maxplayers":"150","hostport":"25565","hostip":"0.0.0.0"},"maxplayers":150,"players":[{"name":"Robbiek12"}],"bots":[],"connect":"play.exampleserver.net:25565","ping":41}

mmorrisontx commented 5 years ago

It appears that Waterfall and Bungeecord have decided to implement the minecraft bedrock edition query protocol (gamespy3) rather than the standard minecraft query protocol.

Their query implementations are here: https://github.com/SpigotMC/BungeeCord/blob/0dd538f9ff77c20da72c4530b3d21633799bc3a5/query/src/main/java/net/md_5/bungee/query/QueryHandler.java#L103 https://github.com/PaperMC/Waterfall/blob/7dd259045b14e6506bf9f48e63c164334faac445/BungeeCord-Patches/0031-Proxy-query-event.patch#L142

This is strange, but whatever. I suppose maybe we should just try both for all minecraft queries?

robbiek commented 5 years ago

ah thank you. that explains it. will use bedrock protocol from now on.

sustained commented 5 years ago

This is by design. Unfortunately, Minecraft does not provide full player details (or even names).

Well, I was just told by a PaperMC contributor and I quote:

Minecraft and spigot will send all players. Paper will do the same.

So I'm a little confused here.

In any case, I can confirm that the PE/BE work around doesn't work for PaperMC servers.

Any insight into this? @sonicsnes

Relevant PaperMC issue

mmorrisontx commented 5 years ago

This should be resolved in the latest version 2.0.15. We now just run a full gamespy3 AND minecraft ping against all minecraft servers, and merge the results.

sustained commented 5 years ago

Amazing. :smile: