Running a server
Bedrock players
On this page
rustmc can let players on Minecraft: Bedrock Edition (phones, tablets, consoles and Windows) join the same world as Java players, with no separate proxy. The server listens for Bedrock clients on a UDP port of its own and translates each Bedrock player onto the Java side, so the game, the plugins and the other players treat them as any other player.
Only Bedrock 1.26.50 can join. A Bedrock client on another version is turned away with the game's "outdated client" or "outdated server" screen.
Turning it on
It is off by default:
# rustmc.yml
bedrock:
enabled: true
Open UDP port 19132 in your firewall, and forward it on your router if the server is behind one. Bedrock players add the server by its address and that port. At startup the console shows the address it is listening on. If the port cannot be bound, the console says so and the server runs on without Bedrock.
Settings
| Key | Default | Meaning |
|---|---|---|
bedrock.enabled | false | Starts the Bedrock listener |
bedrock.host | 0.0.0.0 | The address it binds. The default takes clients from anywhere, as the Java port does |
bedrock.port | 19132 | The UDP port. 19132 is the port a Bedrock client tries first. 0 binds whatever port is free and prints it at startup |
bedrock.allow-unauthenticated | false | Lets in clients that are not signed in to Xbox Live, under any name they claim. For testing only: see below |
How it behaves
Signing in and names
- Every Bedrock player must be signed in to Xbox Live. The server checks each login against
the keys Microsoft's Minecraft authorisation service publishes, which it fetches from
authorization.franchise.minecraft-services.netand refreshes every six hours. A client that is not signed in is told "You must be signed in to Xbox Live to join this server." The server must be able to reach that address: if it cannot fetch the keys, Bedrock logins fail and the console says why. - This does not depend on
online-mode. Bedrock players are checked by Xbox Live, never by the Mojang session check, whateverserver.propertiessays. - A Bedrock player's name is their gamertag with a
.in front, such as.Steve. Spaces become_, and the whole name is cut to 16 characters. The dot keeps a gamertag from ever being taken for the Java account of the same name. Use the dotted name for bans, the whitelist and operators. - Their uuid comes from their Xbox user id (XUID), the same way Floodgate makes it, so a player keeps the same uuid on servers that follow that convention.
Getting in
A Bedrock player is let in or refused exactly as a Java client is: the ban list (by name and by
IP address), the whitelist, maintenance mode and max-players all apply, and
the refusal is shown on the Bedrock disconnect screen. The server list on Bedrock shows the MOTD and
the same player count as the Java server list.
What is translated
Bedrock players can:
- see the world, its terrain and water, the time and the weather;
- walk, fly where allowed, break and place blocks, and hit;
- see other players and every entity that Bedrock has a counterpart for, and what they hold and wear;
- chat and run commands, with completion in the chat box. What runs is the Java command;
- use their inventory, chests and other containers, crafting, and the creative inventory;
- read and write signs, and see block entities such as beds, banners, heads and spawners;
- see their health, hunger, experience and game mode, the death screen, and changes of dimension;
- see titles, the action bar, boss bars, the sidebar, the player list, scores and team nametags, whether a command or a plugin draws them;
- use the recipe book.
Plugins can tell a Bedrock player from a Java one with the is_bedrock host call
(players). Kick messages and other disconnect reasons
reach Bedrock players.
Limits
- Anything without a translation is dropped. This currently includes sounds, particles and explosion effects, the world border, the pictures on maps, dialogs, written books opened by a command, the tab list's header and footer, and players or mobs riding something.
- Bedrock players cannot be transferred. The transfer packet is not translated, so
/transferand sending a player across a network do nothing for a Bedrock player. - No resource packs. A Java resource pack means nothing to a Bedrock client. If the server offers or requires one, the Bedrock player is reported as having loaded it, so they are let in without it.
- No code of conduct screen. If the server shows joining players a code of conduct, Bedrock players are not shown it: they are let in as though they had accepted it.
- Skins. Bedrock players see each other in their own skins. Java players see Bedrock players in the default skin, and Bedrock players see Java players in the default skin.
- The sidebar is drawn Bedrock's way. Its numbers always show, hearts show as numbers, the team-coloured sidebars are not shown, and a hex colour becomes the nearest of the sixteen chat colours.
- Bedrock's server list always shows the game mode as Survival.
Security and privacy
- The connection is encrypted. As on a Bedrock server, each session agrees its own key after the login is checked.
- Bedrock chat is unsigned. A Bedrock client has no key to sign chat with, so its chat is let through even where the server requires signed chat from Java players. The player's identity was proved to the server by Xbox Live instead.
allow-unauthenticatedlets anyone in as anyone. With it on, a client that is not signed in to Xbox Live is admitted under whatever gamertag and Xbox user id it claims. That means it can take the name and uuid of a real Bedrock player, including one who is an operator, and with them their bans, their rank and everything a plugin keeps for them. Use it only on a test server that nobody else can reach, and never on a public one.- On an offline-mode server, the dot protects nothing. With
online-mode=false, Java names are not checked by anyone, so a Java client can join as.Steveand be taken for that Bedrock player by anything that goes by name. - What is logged. Each Bedrock login is written to the console with the player's dotted name, their Xbox user id and their IP address, and a refused login with its IP address.
- What other players receive. A Bedrock player's skin, as their client sends it, is passed to the other Bedrock players on the server so they can draw it.
From docs/bedrock.md in the RustMC repository at bbd81209ad.