Changelog

1.8.02026-11-05

Added

  • BungeeCord support. Each download now has two jars: NexusShout.jar for Velocity and NexusShout-BungeeCord.jar for BungeeCord. All features work on both. On BungeeCord the plugin folder is plugins/NexusShout/, and build 2016 or newer is recommended. See the Installation page.
  • Anonymous usage statistics through bStats. To turn them off, see Usage statistics on the Installation page.

Fixed

  • The LibertyBans hook never detected mutes, so muted players could use /gchat, /nmsg, and /nr unless LibertyBans blocked the chat message itself. LibertyBans mutes are checked now. If LibertyBans takes more than 2 seconds to answer, the message goes through.

Notes

  • For players on Minecraft 1.19.1 and newer, the chat prefix and toggle mode need SignedVelocity on Velocity, or AntiPopup on BungeeCord. Commands such as /gchat <message> do not. On Velocity this is not new. See the new Signed chat page.
  • Comments in the default config.yml and discord.yml now fit both proxies. No settings changed.

1.7.22026-11-05

Fixed

  • PremiumVanish and SayanVanish were never detected, so vanished players were not hidden. Both are detected now. SayanVanish 1.4.0 to 1.7.3 is supported; other versions are not hooked, and a warning is logged.
  • default-locale had no effect. It is now used when a player's client language has no file, and for everyone when detect-player-language is false. If it has no file either, en_US is used and a warning is logged.
  • nshout.vanish.see was checked on the vanished player instead of the player looking. Vanished players are now hidden from /nmsg and its tab completion for players without the permission. /nr still reaches a vanished player while you are the last player they messaged or got a message from.
  • Private messages and global chat shared one cooldown and one anti-spam history. They are now separate, using cooldown and private-messages.cooldown, also with multi-proxy cooldown sync.
  • Joins, leaves, and server switches of vanished players were posted to Discord. They are now skipped. The join is now posted when the player reaches their first server, and a player who disconnects before reaching any server gets no join or leave message.
  • A rejected login with the name of a player who is already online cleared that player's global chat toggle, /nr target, and multi-proxy roster entry, and posted a false leave message to Discord. Fixed.

Notes

  • With multi-proxy, players who were vanished when they last joined or switched servers are hidden from /nmsg, /nr, and tab completion on other proxies, even for players with nshout.vanish.see. Someone who vanishes mid-session is not hidden on other proxies until they switch servers.
  • Two comments in the default files were corrected: the formatter default in config.yml is smart, and use-embed in discord.yml works with webhooks too. No settings changed.

1.7.12026-07-15

Added

  • Anti-caps filter: stops messages with too many capital letters, or turns them into lowercase. Set it up in the new anti-caps section of config.yml. Defaults: on, action: block, min-length: 8, max-uppercase-percent: 70.
  • Only letters count toward the capital letter ratio, so punctuation, digits, and emoji do not change it. Short messages such as "OK" or "HI" pass.
  • private-messages.anti-caps turns the filter on or off for private messages separately.
  • New anti-caps message in all 18 bundled languages.

Fixed

  • Discord: a player name or message placed inside backticks in a discord.yml format showed a stray backslash, for example `{name}`: {message}. Inside backticks, only backticks in the value are now replaced. Outside them, Discord markdown is still escaped, so players cannot add bold text or quotes.
  • The version shown in proxy logs and /velocity plugins was wrong: 1.7.0 showed as 1.6.0.

Notes

  • The Discord fix affects formats that put {name}, {message}, {sender}, or {receiver} inside single, double, or triple backticks. No config change is needed.
  • The new anti-caps settings and the new anti-caps message are added to existing files on the first start after updating.

1.7.02026-07-15

Added

  • Multi-proxy bridge: share global chat, /nmsg, /nr, the online player list, and the global chat toggle across several Velocity proxies through Redis. Off by default. Set it up in the new multi-proxy section of config.yml.
  • Each shared feature can be turned on or off: chat, private messages, online player list, toggle state, and cooldowns. Cooldown sharing is off by default, since it adds one Redis call per chat message.
  • The same discord.yml can run on every proxy. Chat goes to Discord only from the proxy where it was sent, and each Discord message reaches Minecraft once.
  • /nmsg and /nr work across proxies. Tab completion lists players on other proxies, and replies reach the player on whatever proxy they are on.
  • A player's global chat toggle follows them across proxies.
  • The proxy where a message is sent fills in the placeholders (rank, custom name, server display name) before sharing it, so the message looks the same on every proxy, even when permission data only exists on one.

Notes

  • If Redis cannot be reached at startup, a warning is logged and local chat keeps working.
  • If Redis goes down later, cross-proxy messages are lost while it is down, NexusShout reconnects on its own (waiting 1 to 30 seconds between tries), and the shared player list expires.
  • If Redis is down when a Discord message arrives, each proxy shows it to its own players once, without duplicates after Redis is back.
  • A crashed proxy's players drop off the shared player list after three times heartbeat-interval seconds.
  • With the bridge on, the first start creates plugins/nexusshout/proxy-id.txt with a random ID. Set multi-proxy.proxy-id to choose your own.
  • The new multi-proxy section is added to existing config.yml files on update.
  • Bundles Jedis 5.2.0 as the Redis client.
  • Treat Redis as trusted: anyone who can reach it can post into the chat channels. Use a password and a private network.
  • Use the same format on every proxy, since the sending proxy builds the message.
  • nshoutreload reconnects to Redis.

1.6.02026-05-14

Added

  • Discord integration: send global chat, joins, leaves, server switches, and private messages to Discord, with optional Discord to Minecraft chat.
  • Two ways to send, chosen per event: a bot (uses a bot token, needed for Discord to Minecraft, supports embeds) or a webhook (Minecraft to Discord only, with a custom name and avatar).
  • Role filter for Discord to Minecraft: only members with the listed role IDs can talk to Minecraft. An empty list allows everyone in the channel.
  • Per-server channel routing, with a default route for everything else.
  • Player head avatars from Crafatar on webhook messages.
  • Translation between Discord markdown and MiniMessage formatting.
  • Mention cleanup: stops @everyone and @here abuse, and shows user mentions as @name.

Notes

  • All Discord settings are in the new file plugins/nexusshout/discord.yml, so tokens and routing can be managed apart from config.yml and kept out of version control.
  • Bundles JDA 5.2.1 and OkHttp 4.12.0.
  • The bot needs the Message Content and Server Members privileged intents only when Discord to Minecraft is on.
  • Messages from Discord are never sent back to Discord.

1.5.02026-02-17

Added

  • Private messages across servers: /nmsg (alias /nms) and /nr (alias /nreply). Off by default to avoid clashing with other plugins.
  • PremiumVanish and SayanVanish support: vanished players show as "not found" to senders without the nshout.vanish.see permission.
  • Usage messages show the command the player typed, for example Usage: /w <player> <message> after /w.
  • Permission and separate cooldowns for private messages in config.yml.
  • chat-listener-priority setting, to solve conflicts with plugins that change chat packets.
  • Language file updater: missing message keys are added to your language files, keeping your edits and comments.
  • Private message, error, and mute messages (including pm-muted) in all 18 bundled languages.

Changed

  • Private messages respect LiteBans and LibertyBans mutes.
  • Anti-spam and anti-flood also apply to private messages.
  • The config updater was rewritten to handle nested settings, so new options are added without breaking existing files.
  • nshoutreload registers commands again, so alias changes and turning features on or off apply without a proxy restart.

Fixed

  • The first message after joining a server was sent twice on setups with unsigned chat, such as SignedVelocity.
  • Blocked global chat messages (for example on cooldown or without permission) leaked through to the backend server.

1.4.12026-02-15

Fixed

  • The config updater could fail to copy new sections (such as anti-flood and anti-spam) into existing files, or put them inside the wrong section.

1.4.02026-02-15

Added

  • Anti-flood: stops messages with too many repeated characters in a row, such as "loooooool". anti-flood.max-consecutive-chars, default 5.
  • Anti-spam: stops messages that are too similar to the player's previous one, using Levenshtein distance. anti-spam.similarity-threshold, default 0.85.
  • Mute support: players muted in LiteBans or LibertyBans cannot use global chat. You can also add the global chat commands to your punishment plugin's command blacklist for muted players.
  • hooks section to turn the LiteBans and LibertyBans integration on or off.
  • Filter and mute messages in all 18 bundled languages.

Changed

  • The config updater adds the new sections to existing config.yml files.

1.3.12025-12-15

Added

  • commands.start-with-global-chat (default false). When true, players join with global chat mode on.

Changed

  • Improved the config updater.

1.3.02025-12-15

Added

  • Global chat toggle: /gchat with no message turns global chat mode on or off. commands.enable-chat-toggle, default true.
  • Config updater: new settings are added to existing config files.
  • Toggle messages in all 18 bundled languages.

1.2.02025-02-15

Added

  • Messages in 18 languages, shown in each player's client language. New settings default-locale and detect-player-language.
  • Cooldown messages show minutes and seconds, in a format set per language.
  • server-aliases: show a display name for a server in chat. Display names can have colors, and several servers can share one.

Changed

  • permission is empty by default, so everyone can use global chat.
  • Debug logging follows the debug-settings options.
  • Removed the first-login-wait, message-cache-duration, and message-queue-size settings.

Fixed

  • Custom placeholders can contain {message}.

1.0.02025-02-15

First release.