Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
BungeeMessages
Replace every message your BungeeCord proxy sends with your own text.
Author: LucasTHCR - https://dc.gg/paperstream
What it does
BungeeCord speaks to players in a fixed set of English strings: "Server is full!",
"You are already connected to this server!", the kick reason when a backend goes
down. This plugin puts all 50 of them in one config.yml, with colour codes and
hex colours, and no proxy restart needed to change them.
How it works
Proxy messages come in two kinds, and they need different handling.
Translated messages are looked up by key in BungeeCord's own language file. The plugin swaps that lookup table for one built from your config, so 44 keys are replaced at the source. Every message that goes through the proxy's translation path comes out in your wording.
Hardcoded messages are written out literally in BungeeCord's sources and have no key to replace. There are six of them, mostly around connection failures. The plugin watches the kick and login events and rewrites those reasons on their way to the player.
Anything you leave out of the config keeps BungeeCord's own default, so you can change one message and ignore the other 49.
Velocity
The same jar runs on Velocity. There it reads velocity-config.yml, which lists Velocity's own
messages under their Velocity keys. Texts are MiniMessage, and & codes, &#RRGGBB and
BungeeCord's {0}/{1} are converted, so a BungeeCord config can be carried over. A key you do
not change keeps Velocity's translations for every client language; a changed key shows your
text to everyone.
Commands
/bmsgs, also /bmessages and /bm.
| Command | What it does |
|---|---|
/bmsgs reload |
Re-read the config and push it into the proxy |
/bmsgs info |
Version, messages loaded, keys injected |
/bmsgs list [page] |
Page through every configured message |
/bmsgs get <key> |
Show one message by key |
/bmsgs help |
Usage |
Tab completion covers the subcommands and, for get, the message keys.
Permissions
| Node | Grants |
|---|---|
bungeemessages.admin |
Everything below |
bungeemessages.use |
Running /bmsgs at all |
bungeemessages.reload |
/bmsgs reload |
bungeemessages.info |
/bmsgs info |
bungeemessages.list |
/bmsgs list and /bmsgs get |
BungeeCord reads permissions from its own config.yml, not from the plugin.
Configuration
plugins/BungeeMessages/config.yml holds three sections.
settings- what the plugin is allowed to domessages- the 50 texts, 44 translated plus 6 hardcodedplugin- what/bmsgsitself says
| Setting | Default | Meaning |
|---|---|---|
inject-translations |
true |
Replace the proxy's translation table |
intercept-hardcoded |
true |
Rewrite the six literal messages |
restore-on-disable |
true |
Hand the originals back when unloading |
metrics |
true |
Anonymous bStats statistics |
debug |
false |
Log every match and replacement |
list-page-size |
10 |
Entries per page of /bmsgs list |
Colours use &a codes and &#FF5500 for hex. {0} and {1} are BungeeCord's
own placeholders and only work where the original message had them.
Upgrading never overwrites your file: options added in a new version are merged in, and anything you changed stays as you wrote it.
Requirements
BungeeCord or a fork of it on Java 11 or newer, or Velocity 3.3 or newer on Java 17.
The translation swap reaches into a private field of the proxy. If a fork renames it, the plugin says so in the console and the hardcoded interception keeps working on its own.
Building
mvn clean package
The JAR lands in target/.
License
GPL-3.0. See LICENSE.


