Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for LucasTHCR

Fully customizable BungeeCord messages - replace every proxy message with your own text.

Report BungeeMessages?

Discord Release Downloads Servers License

Available for BungeeCord Available for Velocity

Chat with us on Discord Available on Codeberg

[![bStats](https://bstats.org/signatures/bungeecord/BungeeMessages.svg)](https://bstats.org/plugin/bungeecord/BungeeMessages/33630)

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 do
  • messages - the 50 texts, 44 translated plus 6 hardcoded
  • plugin - what /bmsgs itself 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.

Information

Category
Miscellaneous
Published
August 25, 2026
License
1Downloads
0Stars

Pinned Versions

Members

1