▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Моды/Chat Moderator
Chat Moderator

Chat Moderator

The ultimate chat moderation solution for Minecraft servers.

15
0

👑 PCM (Premium Chat Moderation Plugin)

Minecraft Version Platform License


✨ Overview

The ultimate chat moderation solution for Minecraft servers. This premium plugin combines ultra-fast profanity detection with a robust punishment system, offering dual-API support, database storage, and automated moderation actions.


🚧 Development & Support

PCM is currently in active development! Many more features, flexible layouts, and extended customization options are planned for future updates.

If you need support, want to report an issue, or have a great idea for a new feature you'd like to see added, please join our Discord Server! We would love to hear your feedback and suggestions.


🚀 Speed & Performance

  • 🚫 No AI Implementation: We prioritize raw speed. This plugin does not rely on slow AI models.
  • Instant Processing: Messages are checked and filtered in milliseconds.
  • 🌍 Dual API Support: Powered by ProfanityAPI v2 (Main) and v1 (Fallback) for 99.9% uptime and extreme accuracy.

🌟 Features

  • 🛡️ Dual Moderation Modes:
    • BLOCK: Completely prevents the message from being sent if it contains profanity.
    • CENSOR: (Requires v2) Replaces profane words with **** while keeping the rest of the message intact.
  • Native V1/V2 Support: Built to use ProfanityAPI V2 for lightning-fast parsing, seamlessly falling back to V1 if V2 goes offline.
  • 🏎️ Ultra-Fast Caching System: Temporarily caches API responses to prevent server lag and reduce network load on recurring spam.
  • �📊 Intelligent Scoring System:
    • Assigns a "profanity score" (0.0 - 1.0) to players based on their behavior.
    • Scores accumulate over time, triggering stricter punishments for repeat offenders at custom thresholds (e.g., 10=Mute 1h, 50=Ban 7d).
  • 📉 Decay System: Slowly reduces player scores over time to allow for redemption.
  • ⚖️ Auto-Punishments:
    • 🔇 Mute: Temporarily silence toxicity with custom durations.
    • 🚫 Ban: Automatically ban players who exceed safety thresholds.
  • 🔔 Admin Alerts: Real-time notifications for staff via Chat or Actionbar when a player's message flags the API.
  • 💾 Database Support: SQLite storage ensures player data (scores, punishments, infractions) is saved permanently.
  • 🕵️ Social Spy: Monitor private messages between players (/msg, /r, /w, etc.) in real-time, with self-spy support to test formats.
  • 📣 Broadcast & Announcements: Create rotating text announcements or execute console commands automatically on an interval (Random or Sequential).
  • 💬 Discord Webhooks: Log flagged chat messages, specific command usages (/op, /stop), and receive admin mentions straight in Discord!
  • 🛡️ Notification Filters (PCMNF Addon): Allows players to individually toggle off annoying plugin broadcasts or titles via regex patterns! Download Here: PCMNF and install ProtocolLib for it to work.
  • ⚠️ Command & Chat Warnings: Automatically detect certain words or commands and alert your staff team (both in-game and on Discord).
  • 🛠️ Full Command Suite: Manually punish users, check status, toggle alerts, or manage your personal notifications.

Commands

All commands require pcm.admin permission unless otherwise noted.

CommandDescription
/pcm reload🔄 Reloads all configuration files and database connections.
/pcm mute <player> <duration> [reason]🔇 Mutes a player. Duration ex: 10m, 1h, perm.
/pcm unmute <player>🔊 Unmutes a player.
/pcm ban <player> <duration> [reason]🚫 Bans a player. Duration ex: 7d, perm.
/pcm unban <player>🤝 Unbans a player.
/pcm tempban <player> <duration> [reason]⏳ Alias for ban.
/pcm status📡 Displays plugin version, API health, and system status across all modules.
/pcm listen👂 Toggles admin alerts for the executor (Requires pcm.listen).
/pcm spy🕵️ Toggles social spy for private messages (Requires pcm.socialspy).
/pcm warnings⚠️ Toggles in-game command warnings for the executor (Requires pcm.warnings).
/notification <channel> [true/false]🔕 Toggle visibility of specific broadcast channels (Requires PCMNF Addon)
/notification📋 List all available notification channels and their current status

🔐 Permissions

PermissionDescriptionDefault
pcm.admin🔑 Access to all administration commands including reload, ban, mute, etc.OP
pcm.bypass🛑 Bypasses all chat moderation filters and score accumulationFalse
pcm.listen📢 Allows receiving profanity score alertsOP
pcm.socialspy🕵️ Allows using social spy and receiving spy messagesOP
pcm.warnings⚠️ Allows receiving in-game command warningsOP

⚙️ Configuration

Full control over every aspect of the plugin via config.yml.

# PCM Configuration

# Moderation Mode
# Options:
#   BLOCK  - Cancel the message entirely.
#   CENSOR - Replace the message with the cleaned version (only works with v2 API).
#            If v1 fallback is used in CENSOR mode, it will block or use a placeholder depending on availability.
moderation-mode: CENSOR

# Profanity API Settings
profanity-api:
  # Enable/Disable the Profanity Filter entirely
  enabled: true
  v2-url: "https://profanity-api.xeven.workers.dev"
  v1-url: "https://vector.profanity.dev"
  timeout-seconds: 5
  
  # Cache settings to reduce API calls
  cache:
    enabled: true
    duration-minutes: 10

# Social Spy Settings
social-spy:
  enabled: true
  format: "&8[&cSpy&8] &7%player% &8-> &7%target%: &f%message%"
  commands:
    - msg
    - tell
    - r
    - reply
    - w
    - whisper
  
  # Logging
  logging:
    enabled: true
    
  # Allow Self-Spy (See your own spy messages?)
  allow-self-spy: true

# Discord Webhooks
discord-webhooks:
  enabled: true
  url: "ReplaceWithWebhookUrl"
  username: "PCM"
  avatar-url: "https://cdn-icons-png.flaticon.com/512/4712/4712109.png"

# Warnings & Discord Logging
warnings:
  # Chat Warnings / Logging
  chat:
    enabled: true
    log-to-discord: true
    # Format sent to Discord
    # Placeholders: %player%, %message%, %discord-ping%
    discord-format: "%discord-ping% **%player%**: %message%"
    # Key = Word/Regex, Value = Discord Role/User ID to ping (e.g. <@&123456789>) or "" for no ping
    alerts:
      "help": "<@&123456789>"
      "admin": "<@123456789>"
      "badword": "" 

  # Command Warnings
  command:
    enabled: true
    log-to-discord: true
    # key: command, value: Role ID to ping (e.g. <@&123456789>) or "" for no ping
    watched:
      "/op": "<@&123456789>"
      "/deop": ""
      "/stop": "<@&987654321>"
      "/reload": ""
    # Format sent to admins in-game
    format: "&8[&cAlert&8] &e%player% &7executed: &f%command%"
    # Format sent to Discord
    # Placeholders: %player%, %command%, %discord-ping%
    discord-format: "%discord-ping% :warning: **COMMAND WARNING** :warning:\n**Player:** %player%\n**Command:** `%command%`"

# Announcements
# Announcements
announcements:
  settings:
    enabled: true
    interval: 300 # seconds
    order: SEQUENTIAL # SEQUENTIAL or RANDOM
  list:
    # You can specify 'lines' (text message) AND/OR 'commands' (executed by console).
    - lines:
        - "&8[&bAnnounce&8] &eCheck out our website!"
        - "&7www.link.com"
      commands:
        - "say This is a console command"
        - "save-all"

    #- commands:
    #    - "weather clear"

# Notification Filters
# Filter specific system messages/titles/bossbars using Regex.
# Players can toggle these filters via /notification <channel> [true/false]
# Note: For this feature to work, the optional 'PCMNF' (ProtocolLib) addon must be installed.
#
# REGEX GUIDE:
# Regex (Regular Expression) is a pattern used to match text.
# - (?i) : Makes the match Case-Insensitive (ignores upper/lowercase).
# - .    : Matches ANY single character.
# - *    : Matches the previous character 0 or more times.
# - .*   : Matches ANY sequence of characters (e.g. everything).
#
# EXAMPLES:
# 1. Match any message containing "Crate":
#    pattern: "(?i).*crate.*"
#
# 2. Match a specific phrase "Server Restarting":
#    pattern: "(?i).*Server Restarting.*"
#
# 3. Match messages starting with "Alert:":
#    pattern: "^Alert:.*"
#
# 4. Match messages ending with "Won!":
#    pattern: ".*Won!$"
#
notification-filter:
  enabled: false
  # Define channels and their regex patterns
  channels:
    crate_announcements:
      pattern: "(?i).*crate.*"
      default-enabled: true # Do players see this by default?
    server_broadcasts:
      pattern: "(?i).*broadcast.*"
      default-enabled: true

# Score System
# Scores are accumulated 0.0 - 1.0 (probability of profanity).
# When a player reaches a score threshold, punishments are applied.
# Scores are stored in scores.yml.
score-system:
  enabled: true
  min-score-to-flag: 0.9
  
  # Admin Alert Format
  # %score% displays the TOTAL ACCUMULATED SCORE of the player.
  admin-listen:
    type: CHAT # CHAT or ACTIONBAR
    format: "&c%player% &7score: &e%score% &8(&f%message%&8)"

  # Punishment Thresholds (Accumulated Score -> Action)
  # Format: "SCORE: COMMAND"
  # Use underscore notation (10_0 = 10.0) to avoid YAML path parsing issues.
  thresholds:
    "10_0": "pcm mute %player% 1h Auto-Mute: Too much profanity"
    "20_0": "pcm mute %player% 24h Auto-Mute: Persistent profanity"
    "50_0": "pcm ban %player% 7d Auto-Ban: Excessive profanity"
    "100_0": "pcm ban %player% perm Auto-Ban: Permanent"

  # Score Decay
  # Automatically reduce player scores over time to allow redemption.
  decay:
    enabled: true
    # How much score to remove per interval?
    amount: 1.0
    # How often to apply decay? (in hours)
    # Checks are made when player joins.
    interval-hours: 24

# Messages
messages:
  prefix: "&8[&bPCM&8] "
  blocked: "&cYour message contains profanity and was blocked."
  censored-notification: "&cYour message was censored."
  
  # Broadcasts (Visible to players with pcm.admin or pcm.listen)
  mute-broadcast: "&8[&cPCM&8] &e%player% &7was muted by &e%punisher% &7for &e%duration%&7. Reason: &f%reason%"
  ban-broadcast: "&8[&cPCM&8] &e%player% &7was banned by &e%punisher% &7for &e%duration%&7. Reason: &f%reason%"
  
  # Admin alert format is in score-system.admin-listen.format
  
  # Punishments
  mute-reason: "&cYou are muted for %duration%. Reason: %reason%"
  muted-error: "&cYou are muted! Expires in: %time%"
  ban-message: "&cYou have been banned!\n&7Reason: &f%reason%\n&7Expires: &f%time%"
  
  # Commands
  no-permission: "&cNo permission."
  command-usage: "&cUsage: /pcm <subcommand>"
  reload-success: "&aConfiguration reloaded."
  player-not-found: "&cPlayer not found."
  invalid-duration: "&cInvalid duration. Use 'perm' or time like 10m, 1h, 1d etc."
  cannot-mute-op: "&cYou cannot mute an Operator."
  cannot-mute-bypass: "&cYou cannot mute a player with bypass permissions."
  cannot-ban-op: "&cYou cannot ban an Operator."
  cannot-ban-bypass: "&cYou cannot ban a player with bypass permissions."
  mute-success: "&aMuted %player% for %duration%."
  unmute-success: "&aUnmuted %player%."
  ban-success: "&aBanned %player% for %duration%."
  unban-success: "&aUnbanned %player%."
  
  # Listen Toggle
  listen-enabled: "&aYou are now listening to chat moderation alerts."
  listen-disabled: "&cYou are no longer listening to chat moderation alerts."
  listen-only-players: "&cThis command is only for players."

  # Social Spy
  socialspy-enabled: "&aSocial Spy enabled."
  socialspy-disabled: "&cSocial Spy disabled."
  socialspy-only-players: "&cThis command is only for players."
  
  # Notification Filter
  notification-usage: "&cUsage: /notification <channel> [true/false]"
  notification-unknown-channel: "&cUnknown notification channel: &e%channel%"
  notification-enabled: "&7Notification channel &e%channel% &7is now &aenabled&7."
  notification-disabled: "&7Notification channel &e%channel% &7is now &cdisabled&7."
  notification-list-header: "&8&m---&r &bNotification Filters &8&m---"
  notification-list-item: "&e%channel%&8: %status%"
  notification-list-footer: "&7Toggle with: /notification <channel>"
  notification-no-filters: "&cNo filters configured."
  notification-on: "&aON"
  notification-off: "&cOFF"

# Database (SQLite)
database:
  filename: "database.db"

# Update Checker
update-checker: true


📥 Installation

  1. Download the PCM-X.X.jar file.
  2. Upload it to your server's plugins folder.
  3. Restart your server to generate the configuration files.
  4. Edit plugins/PremiumPCM/config.yml to configure it how you would like it.
  5. Type /pcm reload or restart your server to apply changes.

💎 Credits

Совместимость

Minecraft: Java Edition

1.21.x

Платформы

Поддерживаемые окружения

Сервер

Создатели

Детали

Лицензия:MIT
Опубликован:1 месяц назад
Обновлён:3 недели назад
Главная