ChatModifier
ModrinthSpigotMCChatModifier overhauls chat and player communication — it scopes messages to a configurable radius, handles private messages, a staff-only global broadcast, and an admin spy mode.
💬 ChatModifier
Chat plugin for a school Minecraft server (PaperMC 1.20.x / 1.21.x)
ChatModifier overhauls chat and player communication — it scopes messages to a configurable radius, handles private messages, a staff-only global broadcast, and an admin spy mode. It optionally integrates with LuckPerms to display rank prefixes.
✨ Features
📡 Local chat with range
- Messages are only visible to players within a configured radius
- Setting
0= infinite range (entire world) - Configurable cooldown between messages
- Ignores spectator-mode and vanished players
🔊 Shout (/shout, /s, /krzyk)
- Broadcasts a message to every player on the server
- Long cooldown configurable in config.yml
- Available to all players (no permission required)
📢 Global (/global, /g)
- Staff broadcast visible to everyone
- Requires the
chatmodifier.command.globalpermission - Can be disabled in config.yml
💌 Private messages (/msg, /reply)
- Send a private message to a specific player
/reply(or/r) replies to the last conversation partner- Handles vanished / spectator players correctly
- Tab-complete filters hidden players based on permission
🕵️ Chat spy (/spy)
- Separate toggles for chat spy and private-message spy
- Intercepted messages are prefixed with
[SPY] - Requires the
chatmodifier.spypermission
🔤 Message filter
- Blocks disallowed characters (configurable regex)
- Banned word list in config.yml
- LuckPerms integration: rank prefixes shown in chat
📥 Installation
- Download the
.jarfrom GitHub - Place it in your server's
plugins/folder - Start the server — config files are generated automatically
- Edit
plugins/ChatModifier/config.ymlandlang.yml - Reload with
/reload confirmor restart the server
Requirements:
- PaperMC 1.20.x or 1.21.x
- Java 21+
- LuckPerms (optional — for rank prefix display)
🎮 Commands
| Command | Aliases | Description | Permission |
|---------|---------|-------------|------------|
| /shout <message> | /s, /krzyk | Broadcast to the whole server (cooldown applies) | (none — everyone) |
| /global <message> | /g | Staff broadcast | chatmodifier.command.global |
| /msg <player> <message> | /tell, /w, /message | Private message | (none — everyone) |
| /reply <message> | /r | Reply to last private message | (none — everyone) |
| /spy | — | Show spy status | chatmodifier.spy |
| /spy chat | — | Toggle chat spy | chatmodifier.spy |
| /spy msg | — | Toggle private-message spy | chatmodifier.spy |
🔐 Permissions
| Permission | Default | Description |
|------------|---------|-------------|
| chatmodifier.command.global | false | Access to /global |
| chatmodifier.cooldown.bypass | false | Skip chat cooldown |
| chatmodifier.spy | op | Access to /spy |
| chatmodifier.seehidden | false | See hidden/vanished players in /msg tab-complete |
LuckPerms example
/lp group admin permission set chatmodifier.command.global true
/lp group admin permission set chatmodifier.spy true
/lp group vip permission set chatmodifier.cooldown.bypass true
⚙️ Configuration
config.yml
# ------- [ CHAT ] ------- #
chat:
distance: 32 # Message radius in blocks (0 = infinite)
cooldown: 1500 # Time between messages in milliseconds
# ------- [ BANNED WORDS ] ------- #
banned-words: []
# Example: ["badword", "spam"]
# ------- [ GLOBAL ] ------- #
global:
enabled: true
# ------- [ SHOUT ] ------- #
shout:
enabled: true
cooldown: 150000 # Cooldown in milliseconds (default 2.5 minutes)
# ------- [ COMMANDS ] ------- #
# Extra aliases registered at startup (beyond the built-in ones).
# Restart the server after changing these values.
# Built-in: shout=[krzyk, s] global=[g] msg=[tell, w, message] reply=[r]
commands:
shout:
extra-aliases: []
global:
extra-aliases: []
msg:
extra-aliases: []
reply:
extra-aliases: []
spy:
extra-aliases: []
Chat radius reference
| distance value | Effect |
|------------------|--------|
| 0 | Infinite (entire world) |
| 32 | Visible within 32 blocks |
| 64 | Visible within 64 blocks |
Shout cooldown reference
| shout.cooldown value | Duration |
|------------------------|----------|
| 60000 | 1 minute |
| 150000 | 2.5 minutes |
| 300000 | 5 minutes |
| 900000 | 15 minutes |
lang.yml
All player-facing messages live in plugins/ChatModifier/lang.yml. Edit any value to customise the text. Color codes use & (e.g. &c = red, &a = green, &7 = gray). Placeholders are documented inside the file.
chat:
no-recipients: "&c[CM] Nobody heard you - No players within {distance} blocks!"
shout:
cooldown: "&c[CM] You must wait {minutes}min. {seconds}s. before using this command again."
Adding custom command aliases
To add a custom alias (e.g. /bc as an alias for /shout), edit config.yml and restart:
commands:
shout:
extra-aliases: [ bc, broadcast ]
🌐 LuckPerms integration
When LuckPerms is installed, the plugin automatically fetches each player's prefix and prepends it to chat messages:
[Admin] Dominik: Hello!
Without LuckPerms only the player name is shown:
Dominik: Hello!
🔁 Version history
1.0.0
- Initial release
- Local chat with radius and cooldown
- Commands:
/shout,/global,/msg,/reply,/spy - Configurable extra aliases per command in config.yml
- LuckPerms integration
- Support for Minecraft 1.20.x and 1.21.x
🐛 Troubleshooting
Plugin won't load
- Check the server version — Paper 1.20.x or 1.21.x is required (
/version) - Check that you are running Java 21+ (
java -version) - Look for
[ChatModifier]errors in the server console
/global says no permission
Make sure the player / group has chatmodifier.command.global.
Chat does nothing at distance 0
Set chat.distance: 0 — the value 0 means infinite range.
Custom alias doesn't work
Make sure you restarted the server (not just /reload). Extra aliases are registered via CommandMap at startup.
LuckPerms prefix is not shown
Ensure LuckPerms is installed and loaded before ChatModifier.
🔁 Version History
Future Roadmap
- [ ] More customization
- [ ] Getting black list from API
- [ ] Custom nick system
- [ ] Database integration
0.1.0
- Initial release with core functionality.
🔗 Links
- GitHub: https://github.com/Dominos111G/ChatModifier
- Modrinth: https://modrinth.com/plugin/chatmodifier
- Issues: https://github.com/Dominos111G/ChatModifier/issues
📝 License
MIT License — Free to modify and distribute
Versions
FAQ
How do I install ChatModifier?
Download the file for your Minecraft version and loader from this page, then drop the .jar into your mods (or plugins) folder and launch the game.
Is ChatModifier free?
ChatModifier is free to download on Modgrid — we link straight to the official source, no paywall or bundled installer.
Which Minecraft versions does ChatModifier support?
Works with Paper, Purpur, Spigot. Supports versions 1.20–1.21.11. See the download section on this page for the full list of supported versions and loaders.

Comments 0
No comments yet. Be the first to share your thoughts.