Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
BungeeMessages
Your proxy messages. Your rules.
Customizable BungeeCord proxy messages, all configurable in a single
config.yml.
Features
| Feature | Description |
|---|---|
| Customizable Messages | Change every BungeeCord proxy message to your liking. |
| Color Codes & Hex Colors | Use color codes (&a, &b, etc.) and hex colors (&#FF5500) to customize your messages. |
| Placeholders | Use placeholders like {0} and {1} to display dynamic information. |
| Hardcoded Message Interception | Catch and modify hardcoded messages in BungeeCord. |
| Reload Configuration | Reload your configuration without restarting the proxy. |
| Safe Updates | New options are merged into your existing config, your own texts stay as you wrote 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.
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.
Dependencies
- BungeeCord (required): BungeeCord GitHub
Java 11 or newer.
Built-in Placeholders
These work everywhere:
| Placeholder | Description |
|---|---|
{0} |
Dynamic information (e.g., player name, server name) |
{1} |
Additional dynamic information (e.g., server IP, player ID) |
Commands & Permissions
/bmsgs, also /bmessages and /bm.
| Command | Permission | Default | Description |
|---|---|---|---|
/bmsgs reload |
bungeemessages.reload |
OP | Re-read the config and push it into the proxy |
/bmsgs info |
bungeemessages.info |
OP | Version, messages loaded, keys injected |
/bmsgs list [page] |
bungeemessages.list |
OP | Page through every configured message |
/bmsgs get <key> |
bungeemessages.list |
OP | Show one message by key |
/bmsgs help |
bungeemessages.use |
OP | Usage |
bungeemessages.admin covers all of them. Tab completion works for the subcommands
and, after get, for the message keys.
Configuration
Everything is controlled from config.yml:
settings:
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
messages:
# --- messages.properties keys (injected directly into BungeeCord) ---
alert: "&8[&4Alert&8]&r "
already_connected: "&cYou are already connected to this server!"
# ...
# --- Hardcoded messages (caught via event substring matching) ---
hardcoded_unexpected_login_disconnect: "&cConnection error during login. Is IP-Forwarding correctly configured?"
hardcoded_unexpected_login_packet: "&cUnexpected packet during server login."
# ...
# Plugin messages
plugin:
prefix: "&8[&6BungeeMessages&8] &r"
reloaded: "&aConfiguration successfully reloaded!"
reload_failed: "&cFailed to reload configuration. Check console for details."
# ...
A note on braces
{0} and {1} are BungeeCord's own placeholders and only work where the original
message had them. A brace that is not a placeholder, such as {name}, cannot be
injected: that one message keeps BungeeCord's default and the console says which key
it was. The rest are unaffected.
Statistics
BungeeMessages reports anonymous usage data to bStats.
Set metrics: false in config.yml, or turn it off for the whole proxy in
plugins/bStats/config.yml.
Source
codeberg.org/LucasTHCR/BungeeMessages — GPL-3.0
Credits
| LucasTHCR | Maintainer, created and maintains the plugin |
Discord: dc.gg/paperstream


