️️️✅Simple Chat Moderation️  [1.18.x+](Reports, Logs, Filter, Chat Slow/Clear, Discord Webhook) icon

️️️✅Simple Chat Moderation️ [1.18.x+](Reports, Logs, Filter, Chat Slow/Clear, Discord Webhook) -----

Advanced Chat Reporting, Chat Logs, Smart Chat Filter, Chat Mutes, Chat Slow/Clear, Discord WebHook



SimpleChatModeration

SimpleChatModeration is a lightweight chat moderation plugin for Minecraft servers. It provides powerful chat reports, chat muting, word filtering, and staff notifications to keep your community chat clean and under control.

Features
  • Advanced Chat reports: Allows you to view chat reports with a sharable link, with context provided!
  • Chat Muting (/mutechat): Mute the chat, except for those with a bypass permission.
  • Chat Logs (/chatlogs <user> [page]): Checks the past chat history of a player.
  • Bypass Permissions: Allow specific players or staff to bypass chat mute or filters.
  • Profanity & Word Filter: Automatically block or censor inappropriate words.
  • Staff Notifications: Notify staff instantly when filtered words are detected and reports are created.
  • Customizable Messages: Fully customize all chat notifications with MiniMessage formatting.
  • Persistent Chat Mute: Optionally keep chat muted across server restarts.
  • Smart Filtering: Detects variations of banned words including spaced or symbol-altered ones.
  • Discord WebHook support: You can setup your own webhook, check the guide below!
  • Ingame viewing/editing: The filter list is accessible and modifyable in-game with commands,
  • Chat Clearing: Can be done using /clearchat or /cc

Discord WebHooks
upload_2025-7-7_16-3-33.png

How to setup webhook support for chat reports and filtered messages!

1) Navigate to the discord channel you want to integrate it in.
2) Click on "Edit Channel".
3) On the left hand side, there should be an option called " Integrations". Click it.
4) Click on "Webhooks" on the right side.
5) Click New Webhook.
6) A new webhook has been created, as you see an entry. Name it, give it a profile picture, and click " Copy Webhook URL".
7) Navigate to your plugin folder, and go to the config.yml and set the
webhook-url value to the URL you just copied from discord.
8) Congratulations! Webhooks should be setup successfully :). In case you have any questions/problems, feel free to join my discord and ask for support.

Supported Databases

  • MySQL
  • SQLite

Commands

  • /chatreport <player> <reason>: Creates a chat report
  • /chatreports, /handlechatreports, /reports [player]: Opens a gui showcasing all chat reports (or against a specific player)
  • /mutechat: (un)mutes the chat.
  • /chatlogs <player> [page]: Shows the chatlogs on a given page for a player, page defaults to 1 if not specified.
  • /slowchat <seconds>: Slows the chat with a cooldown of the specified seconds
  • /resetslowchat: Lifts the chat slow (To lift the chat slow you can also do /slowchat 0
  • /scm, /simplechatmod, /simplechatmoderation, /scm about, /simplechatmod about - Shows information about the plugins and your settings (webhook status, databasetype, version, latest version)
  • /filter list: Shows all filtered words paginated.
  • /filter add <word>: Adds a word to the filter.
  • /filter remove <word>: Removes a word from the filter.
  • /clearchat: Clears the chat
  • /scm reload: Reloads the config file.
Permissions
  • simplechatmod.chatmute - Allows muting/unmuting of the chat.
  • simplechatmod.bypass - Bypass chat mute restrictions.
  • simplechatmod.filter.notify - Receive filtered message notifications.
  • simplechatmod.filter.bypass - Bypass the chat word filter.
  • simplechatmod.chatlogs.view - Permissisons to execute the /chatlogs command
  • simplechatmod.chatreports.handle - Permission to receive chat report notifications and handle them
  • simplechatmod.chat.slow - Permission to slow the chat
  • simplechatmod.chat.slow.bypass - Bypass the slowed chat
  • simplechatmod.plugin.info - Allows you to use the plugin info command
  • simplechatmod.admin - Allows you to use the /filter <add, remove, list> commands and also the /scm reload command.
  • simplechatmod.clearchat - Allows you to use the clearchat command.

Support
If you have questions or want any new features in the plugin, feel free to join my discord. https://discord.gg/AekmSadCHr Or if you like this plugin, feel free to create a review! :)

Screenshots
upload_2025-6-13_13-23-47.png

Chat Reporting
upload_2025-6-13_13-6-12.png
upload_2025-6-13_13-17-14.png
View attachment 901032
upload_2025-7-10_16-36-13.png
Chat Logs
upload_2025-6-12_19-10-50.png

When config is set to blocking messages
upload_2025-6-11_21-30-34.png

When config is set to letting messages through, but censoring them
(Sender's perspective)
upload_2025-6-11_21-37-24.png

(Staff perspective)
upload_2025-6-11_21-38-3.png

Slowed Chat
upload_2025-6-16_15-7-51.png

Config
Code (YAML):

outdated-version
: "<red>There is an update available for Simple Chat Moderation: Current: {currentVersion}, latest is {latestVersion}"
chat-mute-message
: "<red>[Chat] Chat has been muted by {player}"
chat-unmute-message
: "<red>[Chat] Chat has been unmuted by {player}"
chat-muted-message
: "<red>The chat is currently muted!"
no-logs-found
: "<red>No chat logs found for {player}"
chat-log-header
: "<aqua>Chat logs for <blue>{player}</blue> (page {pageNum}/{maxPages}):"
chat-log-entry
: "<aqua>{time}: {message}"
chat-log-footer
: ""
chat-message-filtered-staff-notification
: "<red>[Filter] -> <dark_blue>{sender}: <aqua>{message}"
chat-report-success
: "<green>Successfully submitted your report!"
chat-report-notification
: "<blue>[Report] <aqua>{reporter} has reported {reported} for <blue>{reason}"
max-same-person-report-time-minutes
: 10
already-reported-within-timeframe
: "<red>You already reported this player within the last {time} minutes!"
gui-next-page-text
: "<blue>Next Page ({current}/{max})"
gui-previous-page-text
: "<blue>Previous Page ({current}/{max})"
gui-report-icon-title
: "<blue>Report #{reportCount} {reported}"
gui-report-icon-lore
:
  - "<aqua>Reporter
: {reporter } "
  - "
<aqua>Reason : {reason } "
  - "
<aqua>At : {time } "
  - "
<aqua>Click to handle/generate logs "
  - "
"

plugin-info:
  - "
<red>Version : {currentVersion } "
  - "
<red>Latest Version : {latestVersion } "
  - "
<red>Database Type : {database } "
  - "
<red>Valid Webhook URL : {webhookEnabled } "

filtered-word-highlight-color: "
<yellow> "

word-not-in-filter: "
<red>The word <gray> {word } <red> is not in the current filter! "
word-already-in-filter: "
<red>The word <gray> {word } <red> is already in the current filter! "
no-filtered-words: "
<red>The filter is empty! "
filtered-word-list:
    header: "
<gray>-- <green>Filtered Words Page {page }/ {maxPages } <gray>-- "
    entry: "
- <yellow> {word } "
    footer: "
<gray>Click : {previousButton } - {nextButton } "
    previous-button: "
<green> [Previous ] "
    next-button: "
<green> [Next ] "
    remove-button: "
<red> [REMOVE ] "
    page-size: 10
    next-page-hover-text: "
<gray>Click to go to next page ( {nextPage } ) "
    previous-page-hover-text: "
<gray>Click to go to the previous page ( {previousPage } ) "
    remove-word-hover-text: "
<gray>Click to remove ' {word }' "

cannot-self-report: "
<red>You cannot report yourself! "
player-does-not-exist: "
<red>The player {player } does not exist! "
invalid-chatlog-page: "
<red>This player does not have logs on that page "

report-detail-gui-generate-logs-item: DIAMOND_SWORD
report-detail-gui-generate-logs-item-name: "
<aqua>Generate Chat Logs "

report-detail-gui-close-report-item: RED_WOOL
report-detail-gui-close-report-item-name: "
<red>Close Report "

report-detail-gui-close-all-reports-item: BEDROCK
report-detail-gui-close-all-reports-item-name: "
<dark_red>Close All Reports "

report-detail-gui-back-item: BARRIER
report-detail-gui-back-item-name: "
<red>Back "

chat-slow-announcement: "
<red>The chat has been slowed to one message per {time } second (s )! "
chat-slow-message: "
<red>Hold on, chat is currently slowed! 1 message per {time } second (s )! "
chat-slow-reset: "
<red>The chat slow has been lifted! "

chat-cleared: "
<red>Chat has been cleared by {player }! "

config-reloaded: "
<green>The config has been reloaded! "

no-messages-in-past-time: "
<red>This player has not sent any messages in the past {minutes } minutes! "
# When dealing with a chat report, the logs of the reported person
# Starting from the current time PLUS and MINUS  the value of this will be shown.
# So if this value is 15
# And a player gets reported at 6PM
# The chat report will retrieve their logs from 5:45PM until 6:15PM
chat-report-generation-timespan-minutes: 15

report-overview-gui-border-item: GRAY_STAINED_GLASS_PANE

# If set to true, no message will go through.
# If set to false, replace the filtered words with *'s
block-message-on-filter: true

# Notify a user that their message has been filtered
notify-on-filter: true

# Only sent if "
notify-on-filter " is set to true
chat-filter-filtered: "
<red> [Filter ] Your message has been filtered! "


# Whether the chat will remain its state after the restart of a  server
persist-mute-through-restarts: true

# Whether the chat is currently muted
# Value will be ignored when persist-mute-through-restarts is false
chat-muted: false
chat-slow-seconds: 0

webhook-url: "
"
embed-title-chat-report: "
Chat Report "
embed-body-chat-report: "
{sender } reported {reported } for {reason } "
embed-color-chat-report: "
#ffaa00"
embed-footer-chat-report
: "YourServer.com"

embed-title-chat-filter
: "Filtered Message"
embed-body-chat-filter
: "{sender}: {message}"
embed-color-chat-filter
: "#ffaa00"
embed-footer-chat-filter
: "YourServer.com"
 
filtered-words.yml
Code (YAML):
# Filters by default on basic bypasses such as
# s h i t,  sh it, s.h.i-t,  etc
filtered-words
:
 - fuck
  - shit
 

Resource Information
Author:
----------
Total Downloads: 411
First Release: Jun 11, 2025
Last Update: Jul 30, 2025
Category: ---------------
All-Time Rating:
3 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings