Compatibility
Minecraft: Java Edition
26.3
26.2
Platforms
Links
Tags
Creators
Details
Licensed ARR
Published yesterday
Updated last week
Geyser Cross Chat
Let Bedrock players chat on your Geyser server without turning off secure chat for Java players.
Bedrock players joining through Geyser + Floodgate have no Mojang chat-signing key. With
enforce-secure-profile=true, vanilla refuses their chat with "Chat disabled due to missing profile
public key". The usual fix is to set enforce-secure-profile=false. That works, but every Java player
then gets a "Chat messages can't be verified" warning, and the server stops requiring signed chat.
Geyser Cross Chat keeps enforcement on and relays Bedrock messages unsigned instead.
- Java chat stays signed and enforced. Nothing changes for Java players.
- Bedrock chat just works. Their messages show up like everyone else's.
- Your chat format still applies. Relayed messages go through the normal Paper chat event, so chat formatters, filters and mute plugins treat them like any other message.
- Bedrock
/msg,/tell,/w,/me,/sayand/teammsgwork too. - No kicks. Bedrock chat packets are never dropped, so the server's message acknowledgements stay in sync with Geyser and nobody gets kicked for "chat validation failure".
How it works
- A Bedrock player chats. The packet goes through untouched, so vanilla still processes its acknowledgements.
- Vanilla refuses it for lacking a profile key. GeyserCrossChat hides that error from the player.
- The text is sent again as a normal chat event, and the result is delivered unsigned.
Requirements
- Paper 26.2+
- Floodgate
- PacketEvents
enforce-secure-profile=trueinserver.properties. With it off, the plugin stays idle, because vanilla already accepts Bedrock chat.
Config
# system: a plain system message, formatted by your chat plugins.
# Always shown, even to players who set chat to "Commands only".
# disguised: the vanilla /say-style packet. Respects each player's chat settings,
# but uses the vanilla "<name> message" look instead of your chat format.
delivery: system
# Vanilla commands whose message argument must be signed.
signed-commands: [msg, tell, w, me, say, teammsg, tm]
Notes
- The console still logs
Failed to update secure chat state for <player>for each Bedrock message. That line comes from vanilla when it refuses the message, before GeyserCrossChat relays it. - Relayed messages are unsigned, so like any system message they can't be reported through Mojang's chat reporting.
Geyser Cross Chat is not affiliated with GeyserMC.


