APVE

APVE

Ultra-fast async Minecraft chat filter, anti-spam, profanity censor, swear & link blocker for Paper/Spigot. Advanced packet chat moderation.

96 downloads 0 followers

Autonomous Potential Violation Eradicator (APVE)

License API Folia Supported

Author / Автор: blackgeyer | Version / Версия: 1.4.5 | License / Лицензия: GPLv3
📹 Plugin Showcase / Видео с демонстрацией: Watch on YouTube

Documentation: https://blackgeyer.github.io/APVE/

Discord: https://discord.gg/TvgqnJNKXW


🇬🇧 English

Forget about ads, sharing adult content, insults, and other nonsense in the chat if you're using APVE!

APVE: High-performance, fully asynchronous Minecraft chat moderation plugin. Designed to keep your server chat clean with zero main-thread overhead. Powered by PacketEvents, Aho-Corasick, RE2J for high-optimized patterns and Fuzzy Matching system.

Plugin work showcase:

APVE Demo

🚀 Key Features & Architecture

  • Three-Stage Pattern Matching ($O(N)$ + Fuzzy Fallback + Custom RE2J): Words are not strictly checked by 100% exact equality alone. The plugin first uses lightning-fast Aho-Corasick string matching. If an exact match is not found in the dictionary, it automatically triggers Fuzzy Matching to compare the word's similarity against dictionary patterns, catching bypasses, intentional typos, and modified letters. Custom RE2J Pattern Matching: If the first two stages fail to detect a violation, you can always write your own custom regular expressions using re2j to enhance filtration. Thanks to $O(N)$ linear time complexity and built-in protection against ReDoS attacks, they allow you to precisely catch complex bypass schemes without risking server performance.
  • 100% Asynchronous Netty Interception: Intercepts and drops chat packets at the network layer before they reach the server's main thread.
  • Multi-Engine Text Normalization: Automatically strips homoglyphs, Unicode variations, diacritics, and leetspeak bypasses. The normalization engine features three distinct operating modes:
    • Rude Mode: Aggressively strips all digits and special characters (such as |, ?, etc.) to isolate pure text for core dictionary checks.
    • Smart Mode: Intelligent leetspeak and symbol decoding that substitutes characters like | or ! with their intended alphabetic equivalents.
    • Despondent Mode: Preserves digits and special characters without transformation, designed specifically to detect patterns like domain names or server addresses (e.g., someserver2024 xyz).
  • Offline Punishment Pipeline: Issues warnings and executes configurable punishment commands automatically.
  • Commands interception: APVE also intercepts and checks the commands like /whisper or /msg.

🛠 Installation

  1. Install PacketEvents (Spigot/Paper version, NOT Bungee/Velocity proxy version) into /plugins/.
  2. Install your primary punishment engine (e.g., EssentialsX, AdvancedBan, etc.) into /plugins/.
  3. Place A.P.V.E.jar into /plugins/.
  4. Restart the server.

⚙️ Technical Compatibility

  • Cores: Paper, Purpur, Spigot, etc. (any standard Bukkit-based core) or Folia.
  • Minecraft Versions: 1.20.5 – 26.x+
  • Java: 21

⚠️ Important Usage Notes

  • Configure config.yml before deploying to production to set up punishment command templates and avoid false positives.
  • Due to the internal normalization pipeline, all banned word patterns in config.yml must be entered using Latin characters only (e.g., use shlyuha instead of шлюха). Refer to documentation.txt for details.

💻 Commands & Permissions

Command Description Permission Default
/apve Base command for plugin management. apve.use OP
/apve reload Reloads plugin configuration. apve.reload OP
/apve warns show {player} Displays current warning count for a player. apve.warns.show OP
/apve warns remove {player} {amount} Removes a specified number of warnings from a player. apve.warns.remove OP
/apve warns clear {player} Resets all warnings for a player. apve.warns.clear OP
/apve notify toggle Toggles staff alerts for detected violations. apve.notify.toggle OP
/apve check {string} Normalizes and tests a string against filter rules. apve.check OP
/apve help Displays available commands and usage info. apve.help OP

🔑 Additional Permissions & Immunity Nodes

Permission Description Default
apve.violation.notify Allows receiving real-time chat notifications about player violations. False
apve.insult.immune Grants immunity against general insult detections. False
apve.fam.insult.immune Grants immunity against family insult detections. False
apve.caps.immune Grants immunity against upper-case (caps) filter. False
apve.spam.immune Grants immunity against spam filter. False
apve.adult.content.immune Grants immunity against adult content filter. False
apve.social.immune Grants immunity against social media links filter. False
apve.advertisement.immune Grants immunity against advertisement and external resource sharing. False
apve.staff.insult.immune Grants immunity against staff insult detections. False

🇷🇺 Русский

Забудьте о рекламе, взрослом контенте, оскорблениях и прочей ереси в чате, если вы используете APVE!

APVE: Высокопроизводительный асинхронный плагин модерации чата. Поддерживает чистоту сервера в автоматическом режиме с нулевой нагрузкой на главный поток сервера. Работает на базе PacketEvents, алгоритма Aho-Corasick, библиотеки RE2J для высокооптимизированных паттернов и интеллектуальной системы Fuzzy Matching.

🚀 Архитектурные преимущества

  • Трёхэтапная проверка ($O(N)$ + Fuzzy Fallback + Кастомный RE2J): Проверка слов не ограничивается строго 100% точным совпадением. Плагин сначала выполняет ультрабыстрый поиск через алгоритм Ахо-Корасик. Если точное совпадение в словаре не найдено, автоматически включается Fuzzy Matching (нечёткое сравнение), которое сопоставляет степень схожести слова с паттернами из словаря, отлавливая обходы, опечатки и подмену букв. Кастомные RE2J паттерны: Если первые два этапа не смогли обнаружить нарушение, вы всегда можете написать свои кастомные регулярные выражения на базе re2j. Благодаря линейной сложности $O(N)$ и встроенной защите от ReDoS-атак, они позволяют точечно отлавливать сложные схемы обхода фильтра без риска для производительности сервера.

  • Асинхронный перехват Netty: Фильтрация и сброс запрещённых пакетов происходят на сетевом уровне до их обработки главным потоком сервера.

  • Многорежимный нормализатор текста: Автоматически нейтрализует обходы через символы-омоглифы, вариации Unicode, диакритику и Leetspeak. Движок нормализации имеет три различных режима работы:

  • Rude Mode: Агрессивно вырезает все цифры и спецсимволы (такие как |, ? и т.д.), изолируя чистый текст для базовых проверок по словарям.

  • Smart Mode: Интеллектуальное декодирование Leetspeak и символов, заменяющее знаки вроде | или ! на аналогичные по смыслу буквы.

  • Despondent Mode: Сохраняет цифры и спецсимволы без изменений. Режим специально предназначен для детекта доменных имён и адресов серверов (например, someserver2024 xyz).

  • Автоматические оффлайн-наказания: Автоматический учёт предупреждений и исполнение настраиваемых команд наказаний.

  • Перехват команд: APVE также перехватывает и проверяет личные сообщения и команды коммуникации (например, /whisper, /msg и другие).

🛠 Установка

  1. Поместите плагин PacketEvents (Spigot/Paper версию, НЕ Proxy/Bungee/Velocity) в папку /plugins/.
  2. Поместите плагин наказаний (например, EssentialsX, AdvancedBan и т.д.) в папку /plugins/.
  3. Загрузите файл A.P.V.E.jar в папку /plugins/.
  4. Перезапустите сервер.

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

  • Ядра: Paper, Purpur, Spigot или любое другое ядро, основанное на Bukkit или Folia.
  • Версии Minecraft: от 1.20.5 до 26.x+
  • Java: 21

⚠️ Важные предупреждения

  • Перед запуском настройте config.yml и шаблоны команд наказаний, чтобы исключить ложные срабатывания.
  • Из-за работы нормализатора все паттерны запрещённых слов в config.yml вносятся строго латиницей (пример: шлюха -> shlyuha). Подробный разбор — в documentation.txt.

💻 Команды и права

Команда Описание Право По умолчанию
/apve Базовая команда управления плагином. apve.use OP
/apve reload Перезагружает конфигурацию плагина. apve.reload OP
/apve warns show {player} Показывает количество предупреждений игрока. apve.warns.show OP
/apve warns remove {player} {число} Снимает указанное количество предупреждений. apve.warns.remove OP
/apve warns clear {player} Полностью очищает предупреждения игрока. apve.warns.clear OP
/apve notify toggle Переключает получение уведомлений о нарушениях. apve.notify.toggle OP
/apve check {строка} Проверяет и нормализует строку на предмет нарушений. apve.check OP
/apve help Выводит список команд и их описание. apve.help OP

🔑 Дополнительные права и узлы иммунитета

Право Описание По умолчанию
apve.violation.notify Позволяет получать уведомления о нарушениях игроков в чате в реальном времени. OP
apve.insult.immune Иммунитет к наказаниям за обычные оскорбления. False
apve.fam.insult.immune Иммунитет к наказаниям за оскорбление родных. False
apve.caps.immune Иммунитет к фильтру сообщений верхним регистром (капс). False
apve.spam.immune Иммунитет к фильтру спама. False
apve.adult.content.immune Иммунитет к фильтру контента для взрослых (18+). False
apve.social.immune Иммунитет к фильтру распространения соцсетей. False
apve.advertisement.immune Иммунитет к фильтру рекламы и сторонних ресурсов. False
apve.staff.insult.immune Иммунитет к наказаниям за оскорбление администрации (Staff). False
Version Minecraft Loader Download

APVE 1.4.5

1.4.5

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
bukkit, folia, paper, purpur, spigot
Download

APVE 1.4.0

1.4.0

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2, 26.3
bukkit, folia, paper, purpur, spigot
Download

APVE 1.3.5

1.3.5

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download

A.P.V.E 1.3.1

1.3.1

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download

A.P.V.E 1.3.0

1.3.0

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download

A.P.V.E 1.2.6

1.2.6

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download

A.P.V.E 1.2.51

1.2.51

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download

FIRST RELEASE A.P.V.E v1.2.5

1.2.5

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download

A.P.V.E 1.2.2

1.2.2

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download

A.P.V.E 1.2.0

1.2.0

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download

A.P.V.E 1.1.0

1.1.0

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download

A.P.V.E 1.0.0

1.0.0

1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.10, 1.21.11, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 26.1, 26.1.1, 26.1.2, 26.2
bukkit, paper, purpur, spigot
Download