RapidBan
Enterprise-Grade Minecraft Punishment Management System
A high-performance, distributed punishment management plugin for Paper 1.21+.
Core Features
🚀 High-Performance Architecture
- Asynchronous Database Operations - Uses HikariCP connection pool; all I/O operations are executed asynchronously
- Thread-Safe Design - Dedicated thread pool for handling database requests without impacting server TPS
- Local Cache - Active ban cache to reduce database queries
🌐 Distributed Synchronization
- Multi-Server Support - Multiple servers share the same database
- Real-Time Sync - Ban/unban operations take effect instantly across all servers
- Redis Support - Optional Redis Pub/Sub or database polling
🎯 UUID-Based Ban System
- Based on UUID instead of player name
- Supports permanent bans, temporary bans, and silent bans
- Automatic unban upon expiration
- Complete undo system
🔍 IP Association Detection
- Records players’ historical login IPs
- Automatically detects linked (alt) accounts
- Notifies administrators of suspicious logins
- Optional automatic linked-account banning
🎨 Custom Kick Interface
- Supports MiniMessage format
- Variable placeholders (player name, reason, remaining time, etc.)
- Different templates for different punishment types
📊 Web Management Panel
- REST API interface
- JWT authentication
- View punishment history
- Execute ban/unban operations
- Search players and linked accounts
Database Options
SQLite (Recommended for Single Server)
- ✅ No additional database installation required
- ✅ Simple configuration, ready to use out of the box
- ✅ Suitable for small servers
- ❌ Does not support multi-server synchronization
Configuration example:
database:
type: "SQLITE"
sqlite:
file: "rapidban.db"
MySQL/MariaDB (Recommended for Multi-Server)
- ✅ Supports distributed multi-server synchronization
- ✅ High performance, suitable for large networks
- ✅ Centralized data management
- ❌ Requires a separate database server
Configuration example:
database:
type: "MYSQL"
mysql:
host: "localhost"
port: 3306
database: "rapidban"
username: "root"
password: "password"
Configuration
config.yml
# Server identifier (used for distributed synchronization)
server-id: "server-1"
# Database configuration
database:
# Database type: MYSQL or SQLITE
type: "MYSQL"
# MySQL/MariaDB configuration
mysql:
host: "localhost"
port: 3306
database: "rapidban"
username: "root"
password: "password"
# SQLite configuration (file path relative to plugin data folder)
sqlite:
file: "rapidban.db"
# Synchronization system configuration
sync:
interval-seconds: 5
use-redis: false
redis:
host: "localhost"
port: 6379
password: ""
# IP association detection
ip-check:
enabled: true
auto-ban-alts: false
notify-staff: true
# Web management panel
web:
enabled: true
host: "0.0.0.0"
port: 8080
jwt-secret: "change-this-to-a-random-secret-key"
admin-username: "admin"
admin-password: "admin123"
Commands
Command Description Permission
/ban
/unban
/history
/punishundo
Duration Format
- s - Seconds
- m - Minutes
- h - Hours
- d - Days
- w - Weeks
- M - Months
- y - Years
Examples:
/ban Player123 Cheating -t 7d
/ban Player456 Abusive language -t 3h -s
/ban Hacker999 Using hacks
Permissions
Permission Description
rapidban.* All permissions rapidban.ban Ban players rapidban.unban Unban players rapidban.history View history rapidban.undo Undo punishments rapidban.notify Receive punishment notifications rapidban.notify.alt Receive linked-account notifications
Web API
Authentication
POST /auth/login
Content-Type: application/json
{
"username": "admin",
"password": "admin123"
}
Response:
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"username": "admin",
"role": "ADMIN"
}
Performance Optimization
- ✅ All database operations executed asynchronously
- ✅ HikariCP connection pool optimization
- ✅ Active ban local cache
- ✅ Dedicated thread pool for I/O processing
- ✅ Batch query optimization
- ✅ Automatic cleanup of expired data
Development
# Clone the project
git clone <repository>
# Build
./gradlew shadowJar
# Output location
build/libs/RapidBan-1.0-Beta1.jar
License
This project is licensed under the GNU General Public License v3.0.
Support
If you have any questions or suggestions, please submit an Issue.
