Skip to content

Minecraft Bedrock: fall back to NetherNet /v1/join when RakNet does not answer - #800

Open
HerrSammyDE wants to merge 8 commits into
gamedig:masterfrom
HerrSammyDE:feat/bedrock-nethernet-status
Open

HerrSammyDE wants to merge 8 commits into
gamedig:masterfrom
HerrSammyDE:feat/bedrock-nethernet-status

Conversation

@HerrSammyDE

Copy link
Copy Markdown
Contributor

Bedrock Dedicated Server 26.50+ defaults to transport=nethernet and no longer answers the RakNet unconnected ping, so mbe queries time out (UDP - Timed out).

Such servers serve GET /v1/join on the server port (documented in Mojang's NetherNet onboarding guide), returning JSON like:

{"name":"Dedicated Server","protocol":2193,"version":"1.26.52","level":"Bedrock level","players":1,"maxPlayers":10,"gameType":0}

Changes

  • RakNet stays the first attempt. If it fails, the protocol requests /v1/join (https, then http) and maps name, map, version, numplayers and maxplayers; the raw payload is kept in raw.nethernet, the used transport in raw.transport.
  • Empty body, non-JSON and unexpected payloads fail with a clear error.
  • tools/test-minecraftbedrock.js: local checks with mock servers (RakNet answer, NetherNet fallback, empty body, invalid JSON, 404, RakNet preferred).

Tested against a live BDS 1.26.52 with transport=nethernet (player count follows joins) and with transport=raknet (unchanged behaviour).

It would be great if a new release could be published after merging, since BDS 26.50+ servers on the default transport currently cannot be queried with the latest release. Thank you!

HerrSammyDE and others added 8 commits April 11, 2026 19:22
Mirrors the Euro Truck Simulator 2 configuration (valve protocol,
port 27015 with query port offset +1).
- The Cenozoic Era and VEIN use the Valve A2S protocol with a query
  port offset of +1 (verified live against running servers).
- Mindustry is queried via a new protocol module implementing the
  arc-net discovery ping: a two-byte UDP request (0xFE 0x01) returns
  the serialized Host struct (name, map, players, wave, version,
  vertype, gamemode, player limit, description, modeName).
Satisfies the MoreThanTwoWordsMakeAcronym naming rule enforced by
the id-tests CI check: game names with more than two words require
an acronym-style id.
…when RakNet does not answer

Bedrock Dedicated Server 26.50+ defaults to transport=nethernet and no longer
answers the RakNet unconnected ping, so mbe queries time out. Such servers
serve GET /v1/join on the server port with name, version, level, players,
maxPlayers and gameType as JSON. RakNet stays the first attempt; the fallback
tries https, then http, and maps the payload onto the usual result fields.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants