> For the complete documentation index, see [llms.txt](https://lethium.gitbook.io/lethium-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://lethium.gitbook.io/lethium-docs/server-setup/bedrock.md).

# Bedrock players: Geyser and Floodgate

Letting Bedrock (phone, console, Windows) players join: Geyser, Floodgate, and what works differently for them.

The server is a **Java** server. **Geyser** translates Bedrock Edition (phones, consoles, Windows 10/11 Edition) into Java so they can join on the **same world**. **Floodgate** lets them join **without a Java account**.

Files: `plugins/Geyser-Spigot/config.yml`, `plugins/floodgate/config.yml`.

### Ports

|         | Port                                                    | Where   |
| ------- | ------------------------------------------------------- | ------- |
| Java    | `server-port` in `server.properties` (default 25565)    | TCP     |
| Bedrock | `bedrock.port` in Geyser's `config.yml` (default 19132) | **UDP** |

**Open the Bedrock port as UDP in your firewall and hosting panel.** Java is TCP, Bedrock is UDP. This is the most common reason Bedrock players "cannot connect".

Players enter the same address with the Bedrock port. Example: `play.example.net` port `19132`.

### Key settings

```yaml
bedrock:
  address: 0.0.0.0
  port: 19132
java:
  auth-type: online
motd:
  passthrough-motd: true
  passthrough-player-counts: true
gameplay:
  enable-custom-content: true
  force-resource-packs: true
  command-suggestions: true
```

| Setting                          | Meaning                                                                                            |
| -------------------------------- | -------------------------------------------------------------------------------------------------- |
| `java.auth-type: online`         | Players sign in with a Java account. With Floodgate, Bedrock players use their Xbox login instead. |
| `motd.passthrough-motd`          | The server list shows the same MOTD as Java (MiniMOTD).                                            |
| `gameplay.enable-custom-content` | Custom items and blocks for Bedrock, needed for ItemsAdder content.                                |
| `gameplay.force-resource-packs`  | Bedrock players must accept the converted pack.                                                    |
| `gameplay.unusable-space-block`  | The barrier replaces blocks Bedrock cannot show.                                                   |

```yaml
username-prefix: "."
replace-spaces: true
player-link:
  enabled: true
  require-link: false
```

| Setting                | Meaning                                                                                                         |
| ---------------------- | --------------------------------------------------------------------------------------------------------------- |
| `username-prefix: "."` | Bedrock players appear as `.Name` so names never clash with Java names.                                         |
| `replace-spaces`       | Spaces in Xbox names become underscores.                                                                        |
| `player-link`          | Lets a player **link** a Java and a Bedrock account to share one save. `require-link: false` makes it optional. |

The Floodgate `key.pem` **must be the same on every server** of a network and must be kept private.

### What is different for Bedrock players

| Feature                                      | Java                                         | Bedrock                                                                                                       |
| -------------------------------------------- | -------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
| HUD                                          | BetterHud custom HUD                         | **TAB scoreboard** instead (see [TAB](/lethium-docs/server-setup/tab.md)). BetterHud is disabled for Bedrock. |
| Item tooltips                                | Rarity frames drawn with resource-pack fonts | Plain tooltip. The frame glyphs can show as raw characters. Item name and lore still work.                    |
| `tooltip-style`                              | Supported                                    | Ignored                                                                                                       |
| Menus                                        | Chest menus                                  | Chest menus (Geyser converts them)                                                                            |
| Resource pack                                | ItemsAdder pack                              | Converted by Geyser. A converter can auto-deliver it.                                                         |
| Ability gestures (shift-click, double-sneak) | Yes                                          | May be hard on touch and console controls. Teach players `/ability cast <slot>` as the fallback.              |

Tell Bedrock players about `/ability cast active-1`, `active-2` and `ultimate` in case the gestures are awkward on their device.

### Converting the resource pack

A converter plugin can turn the Java pack into a Bedrock pack and hand it to Geyser (`geyser_output.auto_deliver: true`, output in `plugins/BedrockGen/output`). This setup has folders for **BedrockGen** and **BedrockGen-Int** (it handles elytra, backpack, models and delivery), but the converter jars are **not included** in the Clicker package. Without them, Bedrock players will see vanilla items and missing icons.

### Troubleshooting

* **Bedrock cannot connect:** UDP port closed, or wrong port. Test the UDP port from outside.
* **They connect but are kicked after a moment:** the resource pack failed to deliver. Check Geyser's console for the pack error.
* **Names look odd:** the `.` prefix from Floodgate is intentional.
* **A UI is cut off or items look wrong:** expected for some custom tooltips. Use simpler names and lore for critical information.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://lethium.gitbook.io/lethium-docs/server-setup/bedrock.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
