
AntiJoinSpam
Suppresses join/leave broadcasts for players who relog too frequently.
🛡️ AntiJoinSpam
Silence the noise. Keep your chat clean.
Stop join/leave message spam dead in its tracks — with zero player impact.
📖 Overview
AntiJoinSpam is a lightweight, high-performance server plugin designed to eliminate the chaos of repeated join and leave message spam. Whether it's a player with a flaky connection, a bot cycling through reconnects, or just someone rage-quitting and rejoining, AntiJoinSpam automatically detects and suppresses the clutter — keeping your chat readable and your players happy.
No commands to memorize. No permissions to configure. Just install, tune your config, and let it work silently in the background.
✨ Features
- 🔇 Automatic suppression of join/leave messages for players who reconnect too frequently
- ⏱️ Sliding time-window detection — tracks logins over a configurable period, not just raw counts
- 🔌 Plugin compatibility layer — plays nicely with plugins that modify join messages
- ⚡ Async & efficient — no main thread blocking, built for scale
- 🌿 Folia & Paper support — runs seamlessly on both schedulers
- 🧩 Minimal config — sensible defaults, easy to understand
🔌 Plugin Compatibility
AntiJoinSpam is built to coexist peacefully with any plugin that manipulates join or leave messages. It hooks into the event pipeline after other plugins have had their say, meaning your custom join messages stay intact — they're just silenced when spam is detected, not replaced or broken.
Confirmed compatible with:
| Plugin | Notes |
|---|---|
| EssentialsX | Custom join/leave messages are respected and suppressed cleanly |
| CMI | Full compatibility with CMI's join/leave message system |
| LuckPerms | Works alongside prefix/suffix-based join messages |
| AuthMe / NexAuth | No interference with login-gate plugins |
| Multiverse-Core | Per-world join messages handled correctly |
If a plugin fires a custom
PlayerJoinEventorPlayerQuitEventmessage, AntiJoinSpam will suppress that message — not override it. Your formatting, prefixes, and placeholders remain untouched.
🖥️ Compatibility
| Platform | Supported Versions |
|---|---|
| Paper | 1.21.10 — 1.21.11 |
| Folia | 1.21.10 — 1.21.11 |
⚠️ Spigot/Bukkit are not officially supported. Paper or Folia is required.
⚙️ Configuration
The config file is located at:
plugins/AntiJoinSpam/config.yml
Below is the full default configuration:
# ────────────────────────────────────────────── #
# AntiJoinSpam — config.yml #
# ────────────────────────────────────────────── #
# Sliding time window (in seconds).
# Logins are tracked within this window.
# Example: 60 means "logins within the last 60 seconds".
time-window: 60
# Maximum number of logins allowed within the window
# before that player's join/leave messages are silenced.
# Example: 2 means the 3rd login within the window triggers suppression.
max-logins: 2
Config Breakdown
time-window— Defines how far back (in seconds) the plugin looks when counting logins. A value of60means any login within the last minute is counted.max-logins— The threshold. If a player's login count within the window exceeds this value, their join and leave messages are suppressed for that event.
📦 Installation
- Download the latest
.jarfrom the releases section - Drop it into your
/pluginsfolder - Restart your server (not
/reload) - Edit
plugins/AntiJoinSpam/config.ymlto your liking - Use
/antijoinspam reloadto apply changes without a restart
📜 License
AntiJoinSpam is open-source and distributed under the MIT License.
Contributions, issues, and feature requests are welcome on the project repository.
Made with ❤️ for server owners who just want clean chat. By mooshbrixa on Discord!
