▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/ChatControl
ChatControl

ChatControl

Take control of your chat. Toggle, filter, slowmode, hide spam, LuckPerms support & more! Formerly vChatUtils.

Оцените первым
1.1K
3
Все версииChatControl 1.2.0

ChatControl 1.2.0

Release06.08.2026

Список изменений

1.2.0 - Tons of changesa and additions!

New Features

  • Filter Punishments: Configure console commands to execute when a message triggers the filter — supports %player% and %message% placeholders. Set ["[none]"] to skip punishment. Runs async-safe.
  • German, French, Spanish Language Files: Added messages-de.yml, messages-fr.yml, messages-es.yml — reviewed by native speakers
  • PlaceholderAPI Expansion: Registered %chatcontrol_*% placeholders (prefix, version, chat_enabled) for use in other plugins
  • Message PlaceholderAPI Resolution: All lang file messages now resolve PlaceholderAPI placeholders (%player_name%, etc.) when sent to players
  • Chat Format PlaceholderAPI: Chat format now supports any PlaceholderAPI placeholder via direct API (was reflection)
  • Private Messaging: Full /msg, /tell, /pm, /r (reply), /togglepm, /socialspy system with per-player toggle and admin spy
  • Anti-Spam: Repeated and similar message detection with configurable thresholds
  • Caps Filter: Blocks messages exceeding configurable uppercase ratio (default 70%)
  • Max Line Length: Blocks messages exceeding configurable character limit (default 256)

Changes

  • Chat filter: Fixed regex pattern matching - patterns are now compiled as regex directly (was using Pattern.quote() which broke regex)
  • Chat filter: Invalid patterns are logged instead of crashing the filter loop
  • Config: Chat filter expanded with categorized sections: Curse Words, Slurs, NSFW, Scams, Advertising, Personal Info, Spam
  • Config: Added enable-anti-spam, enable-caps-filter, enable-max-line-length sections
  • Version Support: Confirmed compatibility with Paper 1.21.x through 26.2

Improvements

  • Cleaned up PAPI reflection in ChatManager - uses direct API call via compileOnly dependency
  • sendAll() now resolves PAPI placeholders per-player instead of sending the same string to everyone

Bug Fixes

  • /chatcontrol help: The about page advertised /chatcontrol help for commands but the subcommand was never handled — it now shows the command list and is public like the about page
  • Chat filter performance: Filter patterns are compiled once per config load instead of on every chat message (the hot path was recompiling every pattern per message, and an invalid pattern re-warned on every message)
  • Filter punishments: Console now shows why a punishment command failed (added the exception message to the warning)
  • Config migration: File copy failures now log through the plugin logger with a timestamp instead of raw System.err
  • LuckPerms status: getBypassGroups() failure now logs the cause to the console instead of silently returning "Error fetching groups"
  • Chat format: Fixed crash when a LuckPerms prefix/suffix mixes legacy codes with MiniMessage tags (e.g. §8[<gradient:#4A4A4A:#D9D9D9>Member</gradient>§8]) — ParsingException: Legacy formatting codes have been detected. Legacy codes are now converted to MiniMessage tags while existing tags are preserved, across chat format, join/leave/advancement messages, and lang messages
  • Slowmode bypass: chatcontrol.bypass permission now skips slowmode cooldown (was only bypassing disabled-chat check)
  • Java version: Java 21 bytecode target — runs on Java 21 (Paper 1.21.x) and Java 25 (Paper 26.x) servers from a single jar
  • Paper API: Built against the 1.21 API (1.21.1-R0.1-SNAPSHOT) with api-version: "1.21", so the jar loads on every server from 1.21.x through 26.2

API (Event-Driven Integration)

  • Public API package: xyz.vprolabs.chatcontrol.api with ChatControlAPI utility class and three cancellable events:
    • ChatControlJoinEvent — fired when a player joins, allows cancelling or modifying the join message format
    • ChatControlLeaveEvent — fired when a player quits, allows cancelling or modifying the leave message format (use case: vanish plugins suppress real quits and call ChatControlAPI.sendFakeLeaveMessage())
    • ChatControlChatEvent — fired after all ChatControl checks pass, allows modifying or cancelling a chat message
  • ChatControlAPI.sendFakeJoinMessage(Player), sendFakeLeaveMessage(Player) — send formatted join/leave with full rank-based formatting from external plugins
  • ChatControlAPI.isChatEnabled() — check global chat toggle from other plugins
  • All events extend Event implements Cancellable for full Bukkit event API compatibility

Permissions

  • Granular bypass permissions: Added chatcontrol.bypass.chatdisabled, .slowmode, .maxlength, .caps, .filter, .allowedchars, .antispam — each grants targeted bypass without the master chatcontrol.bypass. Master bypass still covers all.
  • Chat color perms: Added chatcontrol.color, .color.rgb, .format.gradient, .format.magic — by default players can't use any color/format codes. Strip logic runs on HIGHEST priority before any other check. chatcontrol.admin bypasses all.
  • Custom join/leave/advancement messages: Added enable-custom-join-messages, enable-custom-leave-messages, enable-custom-advancement-messages with fully customizable MiniMessage formats. Supports %player%, %displayname%, %world%, %prefix%, %suffix% placeholders. LuckPerms rank-specific formats via join-formats-by-rank / leave-formats-by-rank — group name as key, MiniMessage as value. Falls back to default format when group is unlisted.
  • Ignore system: Added chatcontrol.ignore permission (default: true) and three commands: /ignore <player> (alias /block), /unignore <player> (alias /unblock), /ignorelist (alias /ignored, /ignores). Persists per session. Blocked senders get pm.ignore.blocked message.

Production Hardening

  • Config versioning: Added config-version: 1 to config.yml. ConfigMigrator now reads version and runs migration paths automatically — future config schema changes apply cleanly without manual edits.
  • Auto-config migration: fillMissingDefaults() ensures new config keys from jar defaults are added to existing config files on every startup. Old vChatUtils configs are migrated, backed up, and removed.
  • Thread safety: ChatManager.lastMessages, ChatManager.repeatCounts, PrivateMessageManager.lastSenders, pmBlocked, socialSpies, and ignoredPlayers all use ConcurrentHashMap/ConcurrentHashMap.newKeySet() instead of HashMap. Fixes data races from async chat event access.
  • Folia scheduler support: New SchedulerAdapter runtime-detects Folia via RegionizedServer class check. Falls back to Bukkit scheduler on Paper/Spigot. All scheduler calls in ChatManager and BugReport use the adapter.
  • Full tab completion: CommandHandler.onTabComplete now suggests info alongside status, --confirm for reload, and online player names for clear. Private messaging tab completion enhanced.
  • Reload command: /chatcontrol reload (alias /cc reload) reloads config, language files, and LuckPerms hook. Already existed; verified functional.

Файлы

ChatControl-1.2.0.jar(62.74 KiB)
Основной
Скачать

Метаданные

Канал релиза

Release

Номер версии

1.2.0

Загрузчики

Bukkit
Folia
Paper
Purpur
Spigot

Версии игры

1.21–26.2

Загрузок

30

Дата публикации

06.08.2026

Загрузил

ID версии

Главная