Overview
HypeSpam is a comprehensive chat moderation plugin for Minecraft servers. It detects spam, profanity, flood, and unauthorized link sharing with intelligent algorithms and applies automatic punishments.
Features
Smart Spam Protection
Multi-layered protection: cooldown, duplicate message, flood, and caps-lock detection.
Advanced Profanity Filter
Leetspeak normalization (@→a, $→s), repeated character detection, and regex bypass prevention.
Link Protection
Blocks unauthorized URL sharing. Allow trusted domains via whitelist.
Paginated GUI
Browse muted players with player-head icons. Pagination kicks in at 45+ entries.
Auto Punishment
First offense: warning. Repeat offense: automatic timed mute. Expired mutes are purged automatically.
Admin Notifications
Real-time in-game alerts to authorized staff on any filter violation.
Installation
1. Download
Download HypeSpam-1.0.jar from the Modrinth page or GitHub Releases.
2. Place the JAR
server/
└── plugins/
└── HypeSpam-1.0.jar
3. Start Server
Drop the JAR into your plugins/ folder and restart. The plugin will auto-generate config.yml and data.yml.
[HypeSpam] v1.0 enabled! in your console.
Commands
All commands use /antispam (aliases: /hs, /spamguard).
| Command | Permission | Description |
|---|---|---|
/antispam list | hypespam.admin | List muted players in GUI |
/antispam mute <player> [min] [reason] | hypespam.mute | Manual mute (default: 10 min) |
/antispam unmute <player> | hypespam.unmute | Remove mute |
/antispam clear | hypespam.admin | Purge expired mutes |
/antispam addword <word> | hypespam.admin | Add a blocked word |
/antispam removeword <word> | hypespam.admin | Remove a blocked word |
/antispam words | hypespam.admin | View the blocked-word list |
/antispam stats | hypespam.admin | View statistics |
/antispam reload | hypespam.admin | Reload config |
Permissions
| Node | Default | Description |
|---|---|---|
hypespam.admin | OP | Access to all admin commands |
hypespam.mute | OP | Assign manual mutes |
hypespam.unmute | OP | Remove mutes manually |
hypespam.bypass | OP | Bypass all filters |
hypespam.link | OP | Permission to share links |
hypespam.notify | OP | Receive violation alerts |
Config.yml
All settings are managed from config.yml. Changes require /antispam reload or a server restart.
General Settings
chat-cooldown-enabled: true chat-cooldown: 3 # seconds between messages max-message-length: 256 check-duplicate: true notify-admins: true
Filter Settings
check-leetspeak: true check-repeated-chars: true check-caps: true caps-percentage: 70.0 # % uppercase to trigger min-caps-length: 5 check-flood: true flood-max-repeated-chars: 4 check-links: true
Blocked Words
blocked-words: - "amk" - "siktir" - "oc" - "kaşar" blocked-patterns: - "(?i)(a\\W*m\\W*k)" - "(?i)(o\\W*c)"
Link Whitelist
link-whitelist: - "youtube.com" - "discord.gg" - "github.com"
Mute Settings
auto-mute-time: 10 # minutes auto-mute-reason: "Küfür/Hakaret (Otomatik)" mute-command: "mute %player% %time%m %reason%" unmute-command: "unmute %player%"
Filter System
Cooldown
Minimum delay between consecutive messages from the same player. Default: 3 seconds.
chat-cooldown: 3Duplicate Detection
Prevents the same message from being sent back-to-back. Case-insensitive comparison.
check-duplicate: trueCaps Lock
Blocks messages where over 70% of characters are uppercase and the message is at least 5 characters long.
caps-percentage: 70.0 min-caps-length: 5Flood / Char Repeat
Blocks messages with the same character repeated more than 4 times. E.g. heeeey, ?????
Link Blocking
Detects URLs with regex. Whitelisted domains are allowed. Players with hypespam.link bypass this filter.
Profanity Filter (3-layer)
Three-tier matching system that catches bypass attempts:
Direct: amk → caught Leetspeak: @mk, 4mk → normalized & caught Char repeat: amkk, aamk → regex caughtblocked-words. Innocent words like book will never be caught.
GUI System
The /antispam list command opens an interactive inventory GUI:
- Player Heads — Each muted player shown as their own head icon
- Details on hover — UUID, reason, remaining time, issuer shown in lore
- Confirmation menu — Click head → Lime Wool (Confirm) / Red Wool (Cancel)
- Pagination — Arrow buttons appear when there are 45+ muted players
- Barrier icon — Closes the menu
unmute-command is executed automatically and the entry is deleted from data.yml.
Developer API
Access HypeSpam from other plugins using the following API:
// Get HypeSpam instance HypeSpam plugin = (HypeSpam) Bukkit.getPluginManager() .getPlugin("HypeSpam"); // Check if a player is muted boolean muted = plugin.getDataManager().isMuted(playerUUID); // Add a mute programmatically plugin.getDataManager().addMute(uuid, expiry, "Reason", "Admin"); // Open the muted-players GUI plugin.getGuiManager().openMutedList(adminPlayer);
Maven Dependency
<dependency> <groupId>org.example.xXantares_peek</groupId> <artifactId>hypespam</artifactId> <version>1.0</version> <scope>provided</scope> </dependency>
FAQ
api-version: '1.21' and Java 21. A separate legacy build would be needed for 1.20 support.data.yml). Database integration is planned for larger server support.blocked-words list. If book isn't in the list, bookk won't be caught either.data.yml. However, actual unmuting in-game is handled by your external plugin (EssentialsX, LiteBans, etc.) via the configured unmute-command.