Packet Reordering + Dynamic Game Version Override (Dialer)
Feature: Dynamic Game Version Override
I added a system that lets the client use specific Minecraft versions for different servers. The implementation allows for exact matches or regex patterns against server addresses.
dialer := minecraft.Dialer{ BaseGameVersion: map[string]string{ ".*\\.hivebedrock\\.network": "1.17.0", "play\\.example\\.com": "1.19.0", }, }
This helps maintain compatibility with servers that require specific game versions without needing code changes.
Feature: Packet Reordering
The commit reorganizes packet ordering in gophertunnel to more precisely mimic a genuine Minecraft client. This change helps evade anticheat systems that flag non-standard packet sequences.
The modifications ensure:
-
ClientCacheStatus is sent before SetLocalPlayerAsInitialized -
Critical server packets are received before sending RequestChunkRadius -
Packets follow the exact sequence: RequestChunkRadius → Interact → PlayerAuthInput → SetLocalPlayerAsInitialized -
PlayerAuthInput is only sent after receiving StartGame
These changes are essential because modern anticheat systems detect unofficial clients by checking packet timing and order. By replicating the exact behavior of an official client, gophertunnel can connect to protected servers without triggering these security mechanisms.
Please keep all comments in English, thank you.
لا حاجة ، أصلي من أجلك
did I ask for your opinion ? No, I don't think so, thank you