Versions
- mineflayer: 4.17.0
- server: XCord (Bungeecord fork) (unknown version)
- node: 21.4.0
Detailed description of a problem
XCord advertises an Advanced Fake Lobby Check which prevents mineflayer clients from joining the server:
Tests whether the client responds to collision, protocol checks, gravity, etc, in a virtual lobby before allowing them into the lobby server. Only takes around ~3 seconds to complete!
Pakkit capture
Left = mineflayer (1.20.1)
Right = Vanilla MC 1.20.1
The first difference is that Vanilla always sends settings before custom_payload, while mineflayer does the opposite. The contents of these packets are the same. I don't think the server cares about this though.

Next is a simple gravity check, looks like they both pass this test (it looks like the server sets Y and expects client to reach a target Y)

The next test is where it starts to differ:

After receiving an abilities packet with flags 6 (0x11, which are the Flying and Allow Flying bits enabled), the mineflayer player starts dropping while the Vanilla client floats in the air.
The server repeats this test a few times before deciding to kick the mineflayer bot.

Versions
Detailed description of a problem
XCord advertises an Advanced Fake Lobby Check which prevents mineflayer clients from joining the server:
Pakkit capture
Left = mineflayer (1.20.1)
Right = Vanilla MC 1.20.1
The first difference is that Vanilla always sends
settingsbeforecustom_payload, while mineflayer does the opposite. The contents of these packets are the same. I don't think the server cares about this though.Next is a simple gravity check, looks like they both pass this test (it looks like the server sets Y and expects client to reach a target Y)
The next test is where it starts to differ:

After receiving an

abilitiespacket with flags6(0x11, which are the Flying and Allow Flying bits enabled), the mineflayer player starts dropping while the Vanilla client floats in the air.The server repeats this test a few times before deciding to kick the mineflayer bot.