Repository navigation
Minecraft Bedrock Proxy EN
This project proxies RakNet UDP. It does not convert a NetherNet connection into RakNet. Confirm the transport actually used by both endpoints before deploying.
The library transports application bytes; it does not implement Xbox login or decode the Minecraft game protocol. The backend must explicitly use transport=raknet.
| Component | Tested value |
|---|---|
| rust-raknet source | 1.0.0 |
| Windows Bedrock client | 1.26.52 |
| Bedrock Dedicated Server | 1.26.52.3 |
| Minecraft game protocol | 2193 |
| RakNet handshake version | 11 |
| Checks | Join through the proxy, walk, place/break blocks, retrieve MOTD |
Game protocol 2193 and RakNet version 11 belong to different layers. This record covers these builds, not every future release.
On October 3, 2026, the transport implementation in 8c06cf4, now included in 1.1.0, also passed manual gameplay checks through both the default proxy (19148) and a proxy with SendOptions::default() applied on both legs (19150), using backend 19146. The user confirmed joining, movement, block placement and block destruction on both paths. This follow-up did not independently repeat the earlier MOTD check.
Edit server.properties in the isolated BDS data directory, for example:
transport=raknet
server-port=19142
server-portv6=19143
enable-lan-visibility=falseRestart that test server. Check for port conflicts and matching game versions. This changes the server instance; no host network configuration changes are needed.
The current proxy example does not automatically copy the backend MOTD. The listener's default older game-version announcement can prevent a newer client from joining. In the task copy of examples/proxy/src/main.rs, add this before listener.listen().await:
listener.set_motd(
"Rust RakNet Bedrock proxy",
10,
"2193",
"1.26.52",
"Survival",
local_address.port(),
).await?;Use the actual backend protocol, game version, game mode and advertised capacity. Capacity is an announcement field; it does not enforce an active connection limit or automatically track player counts.
Run in the same isolated network as the backend:
cargo run --release --manifest-path examples/proxy/Cargo.toml -- \
-l 127.0.0.1:19144 -r 127.0.0.1:19142First connect directly to 19142, then use the proxy frontend 19144. From another machine, use a reachable proxy address; that client's 127.0.0.1 does not identify the remote server.
Linux supports optional --socket-shards 4; the default is one receive socket. Several frontend shards can be slower when they feed a single upstream socket. --batch-messages enables forwarding already-ready messages through the explicit batch API, defaults to off and never waits to fill a batch. Evaluate throughput and latency before choosing either.
The proxy establishes separate RakNet sessions on each side and uses the frontend client's negotiated RakNet version upstream, with a 10 s upstream handshake timeout. It forwards application messages using ReliableOrdered. It does not preserve original frame reliability/channel metadata, parse the game protocol or rewrite game operations.
- Join the backend directly and interact with blocks.
- Join through the frontend and repeat those operations.
- Check upstream connection and forwarding logs in both directions; confirm the client used the frontend port.
- Inspect the announcement with
examples/bedrock_ping:
cargo run --manifest-path examples/bedrock_ping/Cargo.toml -- 127.0.0.1:19144A valid MOTD does not prove login and gameplay work. Handshakes or transport echoes alone do not replace a real game test.
cargo run --manifest-path examples/bedrock_ping/Cargo.toml -- play.example.com:19132This sends an unconnected RakNet ping and prints the server name, game version, player counts and MOTD. Use the proxy frontend address to inspect its advertisement. Discovery confirms an offline reply; login and gameplay still require the checks above.
The 26.50 changelog records the dedicated server's default transport changing to NetherNet. The 26.52 hotfix changelog corresponds to the tested game version.
The 26.60.22/23 preview notes mark RakNet deprecated and raise the non-default transport warning to an error. The tested 26.52.3 server also printed a NetherNet-only error, but the RakNet configuration passed the game checks above. Those notes do not specify a final removal date. Review the target build's changes and retest before upgrading.
English · 简体中文 · GitHub · crates.io 1.4.0 · Reviewed / 核对:2026-10-12 / b909c93
- Overview
- Quick start
- Blocking calls and shared runtimes
- Public API index
- Five reliability modes
- RakNet wire format and recovery
- Message lifecycle and limits
- Bytes and explicit batching
- Send policy
- Recovery policy and tail probes
- Every configuration parameter
- Concurrency and socket tuning
- Errors, deadlines and cancellation
- Congestion and deployment boundaries
- Benchmark results
- Benchmark methodology
- Benchmark reproduction
- Minecraft Bedrock proxy
- Troubleshooting and development
- Release history and upgrading