Chat Control | Staff Tools & GUI v1.0.0

AdvancedChat Plugin
  • achat.png
  • achat.png
  • achat.png
  • achat.png
AdvancedChat
Premium Chat Management Plugin for Paper / Spigot 1.20+

Support

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AdvancedChat is a premium all-in-one chat management plugin for Minecraft servers. It combines a full channel system, GUI-based staff moderation, anti-spam, word filtering, player reports, chat colors, Discord webhook integration and a clean developer API — all in a single plugin with no bloat.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Channel System

Four dedicated channels — Global, Local, Staff and Owner. Switch instantly with a command or send a one-time message without leaving your current channel. Prefix any message with ! to send global from anywhere.

channel.gif


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Staff Menu — GUI Moderation

Right-click any player in chat to instantly open their full Staff Menu. Mute, Ban, Kick, Freeze, Warn, view Message History, view Punishment History, add Notes and inspect Inventory — everything from a single GUI, no commands needed.

staffmenu.gif


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Message History

View the last 20 messages sent by any player this session directly from the Staff Menu. Each entry shows the channel, the message content and the exact timestamp.

history.gif


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AutoMod — Anti-Spam & Slow Mode

Anti-spam detects repeated messages using Levenshtein similarity at an 80% match threshold. Players cannot bypass it by swapping letters or adding spaces — all messages are fully normalized before comparison. Slow Mode enforces a per-player cooldown between messages.

spam.gif


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Chat Filter

Rule-based word filter with four action types: BLOCK, REPLACE, WARN and WARN_MUTE. The built-in TextNormalizer catches leet speak, spaced-out words, repeated characters and Unicode lookalikes before checking any rule — making filter bypass nearly impossible. Supports plain words, wildcards and full regex patterns.

filter.gif


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Chat Color System

Players open a GUI with /acolor and choose their personal chat color. Hover any gem to see a live in-game preview before activating. Supports MiniMessage gradient formats. Built-in presets include Fire, Ocean, Galaxy, Forest, Gold, Pink, Ice, Sunset, Wine and Night. Each color is permission-gated for rank-based access.

color.gif


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Mention System

Tag any online player with Name — partial name matching is supported. Tag the entire server with Everyone (permission-gated). The mentioned player receives a sound notification and a chat message. Players can toggle mentions on or off with /mention off.



━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Report System

Players report rule-breakers with /report <player> <reason>. Reports are saved persistently and survive server restarts. Staff receives an instant in-game notification. All reports are browsable from a GUI panel — one click opens the reported player's Staff Menu directly.

report.gif


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Discord Webhook

Global and Local chat messages are forwarded to a Discord channel automatically. Fully configurable format with player name and message content.

discord.gif


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

AdvancedChat vs Competitors

FeatureAdvancedChatChatControl RedAP/Chat
Channel system✔ Global / Local / Staff / Owner
GUI Staff Menu (right-click)✔ Full GUI✘ Command only✘ Command only
Message History (last 20)✔ GUI viewer
Player Notes (hidden staff notes)
Freeze
Warn system
Report system (GUI)✔ GUI + persistent⚠ Command only
Anti-spam (Levenshtein)✔ 80% similarity
Word filter✔ BLOCK/REPLACE/WARN/WARN_MUTE✔ Regex-based✔ 4000+ cloud words
TextNormalizer (leet speak etc.)⚠ Partial⚠ Partial
Chat color GUI (live preview)✔ HEX support⚠ Limited
@Mention system✔ Sound + toggle
ChatSpy
Discord Webhook✔ Advanced
PlaceholderAPI
Vault integration
MySQL support
BungeeCord / Velocity✔ Full
AI moderation✔ OpenAI
Developer API✔ Full manager access⚠ Limited
Active development✔ 2026

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Commands

CommandDescriptionPermission
/global [msg]Switch to / send in Global chatadvancedchat.global
/local [msg]Switch to / send in Local chatadvancedchat.local
/sc [msg]Switch to / send in Staff chatadvancedchat.staff
/oc [msg]Switch to / send in Owner chatadvancedchat.owner
/acolorOpen chat color selection GUIadvancedchat.chatcolor
/mention [on|off|toggle]Toggle mention notifications
/msg <player> <message>Send a private messageadvancedchat.msg
/r <message>Reply to the last private message
/report <player> <reason>Report a rule-breaking playeradvancedchat.report
/reportlistBrowse all reports in a GUIadvancedchat.reportlist
/reportclear [player]Clear all or one player's reportsadvancedchat.reportclear
/chatspyMonitor all channels simultaneouslyadvancedchat.spy
/stafflistList all online staff members
/clearchatClear the chat for all playersadvancedchat.clearchat
/unmute <player>Remove a player's muteadvancedchat.mute
/unban <player>Remove a player's banadvancedchat.ban
/ac reloadReload config without restartadvancedchat.admin

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Permissions

PermissionDescriptionDefault
advancedchat.adminFull access — reload, manage all featuresOP
advancedchat.staffStaff chat + [X] button in chatOP
advancedchat.ownerOwner chat accessOP
advancedchat.globalGlobal chat usagetrue
advancedchat.localLocal chat usagetrue
advancedchat.muteMute / unmute playersOP
advancedchat.banBan / unban playersOP
advancedchat.kickKick playersOP
advancedchat.freezeFreeze / unfreeze playersOP
advancedchat.warnWarn playersOP
advancedchat.notesAdd and view staff notesOP
advancedchat.msghistoryView player message historyOP
advancedchat.historyView punishment historyOP
advancedchat.viewinventoryView player inventoryOP
advancedchat.spyMonitor all channels with /chatspyOP
advancedchat.reportUse /report commandtrue
advancedchat.reportlistView all reportsOP
advancedchat.reportclearClear reportsOP
advancedchat.clearchatClear chat for all playersOP
advancedchat.chatcolorOpen /acolor GUItrue
advancedchat.color.fireFire gradient presettrue
advancedchat.color.oceanOcean gradient presettrue
advancedchat.color.galaxyGalaxy gradient presettrue
advancedchat.color.forestForest gradient presettrue
advancedchat.color.goldGold gradient presettrue
advancedchat.color.pinkPink gradient presettrue
advancedchat.color.iceIce gradient presettrue
advancedchat.color.sunsetSunset gradient presettrue
advancedchat.color.wineWine gradient presettrue
advancedchat.color.nightNight gradient presettrue
advancedchat.mention.everyoneUse Everyone mentionOP
advancedchat.bypass.spamBypass anti-spam checksOP
advancedchat.bypass.slowmodeBypass slow mode cooldownOP
advancedchat.bypass.clearchatChat not cleared on /clearchatOP
advancedchat.bypass.capsBypass caps filterOP
advancedchat.bypass.mentionNever receive mention notificationsfalse
advancedchat.msgUse /msg commandtrue

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Default config.yml

# AdvancedChat - Main Configuration
# MiniMessage: https://docs.advntr.dev/minimessage/format.html
# Legacy colors (&c, &l) are also supported.

language: en
update-checker: true
spigot-resource-id: 0

chat:
local-radius: 100
slow-mode:
enabled: true
delay-seconds: 3
anti-spam:
enabled: true
duplicate-threshold: 3
duplicate-window-seconds: 10

# Placeholders: {player} {message} {prefix} {suffix} {group} {world}
# PlaceholderAPI placeholders are also supported.
format:
global: "[G] {prefix}{player}: {message}"
local: "[L] {prefix}{player}: {message}"
staff: "[SC] {prefix}{player}: {message}"
owner: "[OC] {prefix}{player}: {message}"
# MiniMessage and legacy color codes supported. Example:
# global: "<dark_gray>[<green>G</green>]</dark_gray> {prefix}{player}: {message}"

mention:
enabled: true
sound: ENTITY_EXPERIENCE_ORB_PICKUP
volume: 1.0
pitch: 1.0
highlight: "@{name}" # MiniMessage supported
everyone-highlight: "@{name}" # MiniMessage supported

log:
enabled: true
file: logs/chat.log
log-staff-chat: true
log-owner-chat: true

# type: json | mysql
storage:
type: json
mysql:
host: localhost
port: 3306
database: advancedchat
username: root
password: ""
ssl: false

discord:
enabled: false
webhook-url: "WEBHOOK_URL_HERE"
format: "{prefix} {player}: {message}"

filter.yml

# ACTIONS:
# BLOCK - Cancel the message entirely
# REPLACE - Replace with the replacement string
# WARN - Warn the player, still deliver the message
# WARN_MUTE - Warn + auto-mute for mute-duration
#
# PATTERNS:
# Plain word -> "word" matches anywhere in message
# Wildcard -> "word" matches with anything around it
# Regex -> "regex:pattern" full Java regex support
#
# NORMALIZATION (automatic, cannot be bypassed):
# Leet speak: f4ck -> fuck
# Spaced out: f u c k -> fuck
# Repeated: fuuuck -> fuck
# Unicode: fuck -> fuck

enabled: true
log-violations: true

whitelist:
- "scunthorpe"
- "assassin"
- "classic"
- "analiz"

words:
fuck:
pattern: "fuck"
action: BLOCK
shit:
pattern: "shit"
action: BLOCK
ass:
pattern: "ass"
action: REPLACE
replacement: "***"
retard:
pattern: "retard"
action: WARN_MUTE
mute-duration: "5m"
hitler:
pattern: "hitler"
action: WARN_MUTE
mute-duration: "10m"
nazi:
pattern: "nazi"
action: WARN
ip_advertise:
pattern: "regex:\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}"
action: BLOCK
discord_invite:
pattern: "regex:discord\\.gg/[a-zA-Z0-9]+"
action: BLOCK

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Developer API

Access all managers directly through the plugin instance:

AdvancedChat plugin = AdvancedChat.getInstance();

ChatManager — Channels & Messages

ChatManager cm = plugin.getChatManager();

// Get / set active channel
Channel ch = cm.getChannel(player); // LOCAL, GLOBAL, STAFF, OWNER
cm.setChannel(player, Channel.GLOBAL);

// Send through a channel (applies format, PAPI, colors)
cm.sendGlobal(player, "message");
cm.sendLocal(player, "message");
cm.sendStaffChat(player, "message");
cm.sendOwnerChat(player, "message");

// Build a formatted Component manually
Component comp = cm.buildChatComponent(player, "message", format, addStaffButton);

PunishmentManager — Mute, Ban, Kick

PunishmentManager pm = plugin.getPunishmentManager();

// Duration format: 5m, 1h, 1d, permanent
pm.mute(target, staffPlayer, "10m", "Spam");
pm.ban(target, staffPlayer, "1d", "Rule violation");
pm.kick(target, staffPlayer, "Reason");

// Auto-mute without a staff player (e.g. from your own filter)
pm.muteAuto(target, "5m", "AutoFilter");

AntiSpamManager

AntiSpamManager asm = plugin.getAntiSpamManager();

boolean isSpam = asm.isSpam(player.getUniqueId(), "message"); // true = block
asm.clearPlayer(uuid);
asm.clearAll();

ChatColorManager

ChatColorManager ccm = plugin.getChatColorManager();

// {msg} is replaced with the player's message
ccm.setColor(uuid, "<gradient:#ff0000:#ffff00>{msg}</gradient>");
ccm.resetColor(uuid);
String format = ccm.getColor(uuid); // null if not set
boolean hasColor = ccm.hasColor(uuid);
String result = ccm.applyColor(uuid, "hello");

MentionManager

MentionManager mm = plugin.getMentionManager();

// Process @mentions — sends notifications, returns highlighted string
String processed = mm.processMentions(sender, rawMessage);
boolean nowEnabled = mm.toggleMention(player);
mm.setMentionEnabled(player, false);
boolean isToggled = mm.isMentionToggled(player);

FreezeManager

FreezeManager fm = plugin.getFreezeManager();

fm.freeze(uuid);
fm.unfreeze(uuid);
boolean frozen = fm.isFrozen(uuid);
boolean nowFrozen = fm.toggle(uuid);

MessageCache — Last 20 Messages

MessageCache mc = plugin.getMessageCache();

mc.add(uuid, "GLOBAL", "message");

// Returns newest first, max 20 entries
List<CachedMessage> msgs = mc.getMessages(uuid);
for (CachedMessage msg : msgs) {
String channel = msg.channel;
String content = msg.message;
String timestamp = msg.getFormattedTime(); // HH:mm:ss
}

ReportManager

ReportManager rm = plugin.getReportManager();

rm.addReport("Alex", "Steve", "Spam");
List<Report> all = rm.getAll();
List<Report> byUser = rm.getByTarget("Steve");
int cleared = rm.clearAll();
int cleared = rm.clearByTarget("Steve");
// fields: .reporterName .targetName .reason .timestamp .getFormattedTime()

WarnManager

WarnManager wm = plugin.getWarnManager();

wm.addWarn(targetUUID, "Steve", staffUUID, "Admin", "Swearing");
List<Warn> warns = wm.getWarns(uuid);
int count = wm.getWarnCount(uuid);
wm.clearWarns(uuid);
// fields: .targetName .staffName .reason .timestamp .getFormattedDate()

NoteManager

NoteManager nm = plugin.getNoteManager();

nm.addNote(uuid, "AdminName", "Suspicious behavior.");
List<Note> notes = nm.getNotes(uuid);
nm.removeNote(uuid, 0); // Remove by index
// fields: .staffName .text .timestamp .getFormattedDate()

ChatFilter

FilterResult result = plugin.getChatFilter().check("raw message");

switch (result.getStatus()) {
case CLEAN -> { /* allow */ }
case BLOCKED -> { /* cancel event */ }
case REPLACED -> event.setMessage(result.getModifiedMessage());
case WARNED -> player.sendMessage("Warning!");
case WARN_MUTED -> plugin.getPunishmentManager().muteAuto(player, "5m", "Filter");
}

SpyManager

SpyManager sm = plugin.getSpyManager();

boolean isSpy = sm.isSpy(player);
sm.toggle(player);

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Soft Dependencies

  • Vault — enables {prefix}, {suffix} and {group} placeholders in chat formats
  • PlaceholderAPI — enables all PAPI placeholders in chat formats

Neither is required. Both are detected and activated automatically if present.
Buy a license now
$14.99
EULA
Standard EULA
Use on any projects you own with attribution
Support
Standard
Includes:
Download the resource
Access new updates
Support from the creator
Support duration
1 year
Share and earn
Refer this resource and earn a 10% commission.
380 Views
1 Purchases
2 Downloads
Mar 9, 2026 Published
N/A Updated
Not yet rated
196.6 KB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. Yes
Type
  1. Chat
  1. Staff
  1. GUI
Game mode
  1. Survival
  1. Factions
  1. Skyblock
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
Supported languages
  1. English
  1. Spanish
  1. Turkish
Creator
Struggling to cover the costs of your server? Set up your own webstore with Tebex in under 30 seconds.
Lag-free, customizable servers ready in minutes.
Host your adventure today!
Recommended for you
Premium performance optimization plugin for Paper servers with live web dashboard.
5.00 star(s) 2 ratings
2 purchases
map, maps, mckasabasi, skyblock map, skyblock map 1.12, byMamisya, mamisya
Not yet rated
8 purchases
Not yet rated
3 purchases
A beta lobby installation package, a very modern package.
Not yet rated
2 purchases
Share and earn
Refer this resource and earn a 10% commission.
380 Views
1 Purchases
2 Downloads
Mar 9, 2026 Published
N/A Updated
Not yet rated
196.6 KB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. Yes
Type
  1. Chat
  1. Staff
  1. GUI
Game mode
  1. Survival
  1. Factions
  1. Skyblock
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
Supported versions
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
Supported languages
  1. English
  1. Spanish
  1. Turkish
Creator
Struggling to cover the costs of your server? Set up your own webstore with Tebex in under 30 seconds.
Lag-free, customizable servers ready in minutes.
Host your adventure today!
Recommended for you
Premium performance optimization plugin for Paper servers with live web dashboard.
5.00 star(s) 2 ratings
2 purchases
map, maps, mckasabasi, skyblock map, skyblock map 1.12, byMamisya, mamisya
Not yet rated
8 purchases
Not yet rated
3 purchases
A beta lobby installation package, a very modern package.
Not yet rated
2 purchases
Top