Compatibility
Minecraft: Java Edition
26.3
26.2
Platforms
Links
Tags
Creators
Details
Licensed ARR
Published 2 days ago
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.


