Compatibility
Minecraft: Java Edition
Platforms
Links
Tags
Creators
Details
PunishSystem
A professional, network-wide punishment management plugin for Velocity proxy servers.
by mcaffe13
PunishSystem gives your moderation team everything they need to keep the network clean: permanent bans, temporary bans, IP bans, network bans, kicks, warnings, predefined punishment presets, automatic multi-account detection, VPN/proxy blocking, and Discord webhook notifications โ all without touching a single line of code.
โจ Features
Core Punishment Commands
/banโ Permanently ban a player with UUID tracking/tempbanโ Temporarily ban with flexible duration syntax (30m,7d,1y,2w3d, โฆ)/kickโ Disconnect an online player with a configurable message/unpunish//unbanโ Lift any active ban
Extended Moderation Tools
/punish <player> <preset>โ Apply a predefined punishment in one command โ configure presets inconfig.jsonwith reason, type, and duration, no recompile needed- IP Bans โ Block an IP address from connecting to the network
- Network Bans โ Permanent server-wide ban with a dedicated appeal screen
Warn System
/warn <player> <reason>โ Issue a formal warning; the player receives an in-game warning screen/warnings <player>โ List all active warnings for a player/clearwarnings <player>โ Remove all active warnings for a player
Smart Detection
- Multi-account detection โ When a player is banned, all accounts that have ever shared the same IP are automatically banned too
- VPN / Proxy blocking โ Detects VPNs and proxies via ip-api.com with a configurable per-ISP whitelist and bypass permission
Staff Tools
/history <player>โ Full punishment history (up to 50 entries)/check <player>โ Active punishments at a glance/lookup <player>โ Complete player profile: UUID, known IPs, linked accounts, ban history, online status- Staff notifications โ Every punishment is broadcast to online staff with the
punishsystem.notifypermission
Integrations
- Discord webhooks โ Automatic embeds for ban, tempban, unban, kick, IP ban, warn, and VPN events
- LabyMod โ Native LabyMod Protocol support
- bStats โ Anonymous usage statistics
- Mojang API fallback โ Resolves UUIDs for offline players automatically
- MySQL / MariaDB โ Reliable storage with HikariCP connection pooling
- File storage fallback โ Works out of the box without a database
Admin Friendly
/punishreloadโ Hot-reload configuration without a server restart- Fully configurable messages โ Every player-facing text, the prefix, and all permission nodes are defined in
config.json - Table prefix support โ Share a database with other plugins without conflicts
๐ Requirements
| Velocity | 3.x |
| Java | 21 or newer |
| Database | MySQL 5.7+ or MariaDB 10.4+ (optional) |
โก Quick Start
- Drop
punishsystem-x.x.x.jarinto yourplugins/folder - Start Velocity once โ a default
config.jsonis generated inplugins/punishsystem/ - (Optional) Configure the
databasesection with your MySQL credentials - Restart or run
/punishreload - Assign permissions to your staff groups
๐ง Commands & Permissions
| Command | Description | Permission |
|---|---|---|
/ban <player> <reason> |
Permanently ban a player | punishsystem.ban |
/tempban <player> <duration> <reason> |
Temporarily ban a player | punishsystem.tempban |
/unban <player> |
Remove an active ban | punishsystem.unban |
/kick <player> <reason> |
Kick an online player | punishsystem.kick |
/punish <player> <preset> |
Apply a preset punishment | punishsystem.punish |
/unpunish <player> |
Remove active punishment | punishsystem.unpunish |
/warn <player> <reason> |
Warn a player | punishsystem.warn |
/warnings <player> |
Show active warnings | punishsystem.check |
/clearwarnings <player> |
Clear all warnings | punishsystem.clearwarnings |
/history <player> |
Show punishment history | punishsystem.history |
/check <player> |
Show active punishments | punishsystem.check |
/lookup <player> |
Full player profile | punishsystem.lookup |
/punishreload |
Reload config | punishsystem.reload |
Special permissions:
| Permission | Effect |
|---|---|
punishsystem.ipban |
Issue IP bans |
punishsystem.notify |
Receive staff notifications for every punishment |
punishsystem.bypass |
Bypass active bans (useful for admins) |
punishsystem.vpn.bypass |
Exempt from VPN / proxy detection |
โฑ๏ธ Duration Syntax
30s ยท 15m ยท 6h ยท 7d ยท 2w ยท 1y โ combinations like 1d12h are supported.
๐ Configuration Overview
Everything is configured in plugins/punishsystem/config.json:
{
"database": { "enabled", "host", "port", "database", "username", "password" },
"network": { "name", "prefix", "unbanUrl", "discordUrl" },
"permissions": { all permission nodes โ fully overridable },
"vpn": { "enabled", "kickOnDetect", "whitelistedISPs" },
"webhooks": { "enabled", "ban", "tempban", "unban", "kick", "warn", "vpn" },
"messages": { every player-facing string, with {placeholder} support },
"punishments": { named presets: type, duration, reason }
}
๐ License
PunishSystem is open source under the Mozilla Public License 2.0. You are free to use it on private and public servers. Forks published publicly must use a different name โ see TRADEMARKS.md for details.
๐ Issues & Contributions
Found a bug or have a feature request? Open an issue on GitHub. Pull requests are welcome!


