Youer Bungee Channel Shim¶
Fixes cross-server plugin messages on our Youer (modded) backends, so proxy messages reach plugins like ChatControl. Without it, cross-server chat only works one way on those servers.
What it does¶
Youer has a bug. When the proxy sends a BungeeCord plugin message, Youer hands it to plugins under
the channel name bungeecord:main. Bukkit plugins expect the old name BungeeCord, and most check
for it with if (!channel.equals("BungeeCord")) return;. So they quietly throw the message away.
This plugin listens on the same channel. When a message arrives as bungeecord:main, it passes the
same message to every other listener again, this time named BungeeCord. The first, wrongly named
delivery is still ignored by those plugins, so each one ends up with exactly one correct delivery.
- If Youer is ever fixed and sends
BungeeCorditself, the shim does nothing, so there are no double deliveries. - Paper servers (the vanilla hub,
info) do not have this bug and do not need the shim.
It runs on main, build, events and hub (the modded hub). staging does not have it.
How players use it¶
Players do not interact with this plugin. They just see cross-server chat working both ways.
Staff guide¶
There are no commands or permissions. Nothing to run day to day.
Check that it works. Send chat on one Youer backend and confirm it shows on another backend, and the other way round. If chat only flows one way into a Youer server, check this plugin first.
Debug a problem. Turn on verbose (see Configuration) and restart. Each inbound message then
logs two lines: what arrived, and how many listeners it was passed on to. Turn it off again
afterward; it is very noisy.
Configuration¶
plugins/YouerBungeeChannelShim/config.yml has one key:
| Key | Default | What it is for |
|---|---|---|
verbose |
true |
Log every inbound proxy message and how many listeners got it |
Set verbose: false on live servers. At true, it once made up 25% of main's log. The payload
line also includes player names, their current server, rank prefix and chat channel state.
The shipped default stays true on purpose. It only applies to a fresh install, where seeing each
message is useful proof that the fix works.
A change goes live on restart only. The plugin reads the value once at startup and has no commands, so there is no reload.
Data and storage¶
None.
Troubleshooting¶
| Symptom | Cause | Fix |
|---|---|---|
| Cross-server chat reaches Paper servers but not Youer ones | The shim is not loaded on that backend | Check the boot log for the lines below. Install the jar and restart |
Log fills with inbound: channel=... lines |
verbose is true |
Set it to false and restart |
listener <Plugin> threw on re-delivery: ... |
That plugin crashed while handling the message | Look at that plugin. This warning prints even with verbose: false |
Boot log lines when it is working:
[YouerBungeeChannelShim]: Inbound BungeeCord channel shim active (verbose=false).
[YouerBungeeChannelShim]: Re-delivers proxy messages as 'BungeeCord'; Youer delivers them as 'bungeecord:main'.
A clean boot does not prove verbose is off in practice. With players moving between servers,
grep -c "inbound: channel=" logs/latest.log should be 0.
Maintainer notes¶
- The bug is in Youer's
com.mohistmc.youer.bukkit.messaging.PluginChannel#dispatchMessage, which callsonPluginMessageReceived(type.id().toString(), ...). That passes the rawResourceLocation,bungeecord:main. Youer's ownStandardMessenger#validateAndCorrectChannelmapsbungeecord:maintoBungeeCord(its comment says "this will correct incoming messages"), but it is never called on this path. - The shim registers under
BungeeCord.StandardMessengerturns that intobungeecord:main, which puts the shim in the same Youer channel as every other listener. - It looks up listeners under both names and merges them, because Youer's name fix works in both directions and it is not obvious which key a lookup lands on. It skips itself.
- It loads
POSTWORLD. It has no hard or soft dependencies. - Remove this plugin once Youer fixes the channel name itself.
- Ops context:
documentation/plugins/chatcontrol-deployment.mdin the ops repo.
Building¶
This repo has no Gradle wrapper. Use one from a sibling project, for example from the ops repo root:
"Server Plugins Or Mods/Plugins/HubCompass/gradlew" -p third_party/youer-bungee-channel-shim build
Java 21. Output: build/libs/YouerBungeeChannelShim-1.0.0.jar. Compiles against the Paper API
1.21.1. Install it in plugins/ on each Youer backend and restart.
Full command, permission and config tables: Reference.