Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details

MessageChatSupport is a lightweight and highly configurable plugin designed to fully customize your server’s chat experience. Control rank-based chat formats, join/leave/first-join messages, private messages, and visual extras (totem, deaths) in a clean and modular way.
Compatible with
Minecraft 1.20+, Java 21 / 25.
Soft-depend: PlaceholderAPI (optional but recommended).
Main Features
- Join, leave & first-join messages — Fully configurable with multi-line support
- Titles & subtitles — Custom fade-in, stay, and fade-out timings
- Custom sounds — On join and quit
New!Potion Effects & Particles — Configurable join and quit potion effects and geometric particle animations at player feet (Circle, Square, Diamond, Line).- Private messaging system — Clean
/msgwith separate formats for sender and receiver - Totem announcement — Global notification when a player uses a Totem of Undying (with translated damage cause)
- Improved death messages — Colored death messages + ActionBar broadcast
New!Censored Word Filter — Automatic chat filtering with exact-length asterisk replacement (*) and bypass permissions.- Modular permission-based chat — Different formats per rank (LuckPerms compatible)
New!Advanced Color & Hex Support — Full support for classic color codes (&a, &m), Hex codes (&#RRGGBB), and private message filtering.- Dynamic variables —
<player>,<message>,<world>,<time>+ PlaceholderAPI support - Reload command —
/mcs reloadwithout restarting the server
Chat Formats:
Different chat formats depending on the player's rank.

New! It supports color codes and also includes easter eggs (&#sf and &#rb).

New! It also includes a filter for prohibited words (the list of words can be found in config.yml).

Click to see chat-format.yml
# ====================================================
# Configuration - Chat Format Module
# ====================================================
# Permission-based format system (Ideal for LuckPerms).
# If a player has the corresponding permission, that format will be applied.
#
# Available variables:
# <player> -> Player's name
# <message> -> Message content
# <world> -> Player's current world name
# <time> -> Current message time (e.g., 14:30)
formats:
admin:
permission: "messagechatsupport.chat.admin"
chat-format: "&c[Admin] &3<world> &8| &b<player> &8» &e<message>"
vip:
permission: "messagechatsupport.chat.vip"
chat-format: "&6[VIP] &3<world> &8| &3<player> &8» &f<message>"
default:
permission: "messagechatsupport.chat.default"
chat-format: "&3<world> &8(&7<time>&8) &3<player> &8» &f<message>"
Join Messages:
Custom multi-line join messages with titles, sounds, particles with various shapes and effects.

Configuration Attributes
Title Timing Attributes (join-messages.yml)
| Attribute | Aliases | Description | Default |
|---|---|---|---|
fadein |
fi |
Ticks for the title to fade in | 20 |
stay |
s |
Ticks for the title to stay on screen | 40 |
fadeout |
fo |
Ticks for the title to fade out | 20 |
Potion Effect Attributes (join-messages.yml)
| Attribute | Aliases | Description | Default |
|---|---|---|---|
time |
t |
Duration of the potion effect in seconds | 10 |
amplifier |
a |
Amplifier level of the potion effect | 1 |
Particle Attributes & Forms (join-messages.yml)
| Attribute | Aliases | Description | Default |
|---|---|---|---|
amount |
a |
Density / amount of particles spawned | 15 |
form |
f |
Shape (circle, square, diamond, line, patronus) |
circle |
color |
c |
Custom color for dust/support particles (RGB or name) | None |
Click to see join-messages.yml
# ====================================================
# Configuration - Join & Quit Messages Module
# ====================================================
# Structure to customize join, quit, and first-join events.
# Title Format: "Title;Subtitle{fi=20;s=40;fo=20}" (fi = fadeIn, s = stay, fo = fadeOut in ticks).
# If you don't want a title or sound, leave them as "" or "NONE".
first-join:
enable: true
message:
- "&6Welcome, &e%player_name%&6!"
- "&7It's their first time playing on the server. Let's welcome them!"
title: "&6NEW PLAYER!;&e%player_name% joined for the first time!{fi=20;s=40;fo=20}"
sound: "ENTITY_PLAYER_LEVELUP"
effect: "RESISTANCE{t=10;a=1}"
particle: "NONE"
join-message:
enable: true
message:
- "&2● &a%player_name% &fhas connected."
title: "&aWelcome back!;&e%player_name%{fi=20;s=40;fo=20}"
sound: "BLOCK_NOTE_BLOCK_PLING"
effect: "SPEED{t=10;a=1}"
particle: "CLOUD{a=15;f=circle}"
quit-message:
enable: true
message:
- "&8● &7%player_name% has disconnected."
title: ""
sound: "NONE"
effect: "NONE"
particle: "NONE"
Extras:
The plugin also includes configuration for totem announcements and death messages. Check the file to customize them.

Click to see extras.yml
# ====================================================
# Configuration - Extras Module (Totem & Death Messages)
# ====================================================
# Configuration for extra server events (Totem & Death Messages).
totem-event:
enabled: true
# Message broadcasted to the entire server when a player uses a totem
message: "&e%player% used a &6Totem &4(%messagechatsupport_damage_cause%)"
# Configuration for enhanced death messages
death-message:
enabled: true
# Format for global chat (You can use colors or gradients)
chat-format: "&c%death_message%"
# Format for the Actionbar (Leave as "" if you don't want an actionbar)
actionbar-format: "&c%death_message%"
Commands & Permissions
| Command | Description | Permission |
|---|---|---|
/mcs reload |
Reloads all modules and config files | messagechatsupport.admin |
/msg <player> <message> |
Sends a private message | (none by default) |
/tell, /whisper |
Aliases of /msg |
(none by default) |
Chat format permissions:
messagechatsupport.chat.adminmessagechatsupport.chat.vipmessagechatsupport.chat.default
Additional permissions:
messagechatsupport.chat.color— Allows color and hex codesmessagechatsupport.chat.bypassfilter— Bypasses the censored word filter




