Tags
Creators
Details
1.0.0
Compatibility
Changes
Velocity IP Ban Plugin
Created by Yunexal Labs - A simple and efficient IP banning plugin for Velocity proxy servers
📋 Overview
Velocity IP Ban Plugin is a lightweight yet powerful solution for managing IP bans on Velocity proxy servers. The plugin provides instant IP blocking, automatic online player kicking, and support for multiple IP management - all without unnecessary complexity.
✨ Features
- 🚫 Instant IP Blocking - Blocks banned IP addresses before players can connect to any backend server
- 👥 Multiple IP Support - Ban or unban multiple IP addresses with a single command
- ⚡ Online Player Kicking - Automatically kicks players when their IP gets banned while they're online
- 📊 Statistics Integration - Built-in bStats integration for usage analytics
- 🎨 Colored Messages - Beautiful colored console output and player messages
- 💾 SQLite Database - Lightweight, serverless database storage
- 🔧 Simple Configuration - Minimal setup required
- 🌐 No Dependencies - Works out of the box with just Velocity
🚀 Installation
- Download the latest
velocity-ip-ban-1.0.0.jarfrom releases - Place the JAR file in your Velocity server's
pluginsfolder - Restart your Velocity server
- The plugin will automatically create configuration files on first run
📖 Commands
/ipban - Ban IP Addresses
Permission: velocityipban.ban
Aliases: /banip
Usage Examples:
# Show list of all banned IPs
/ipban
# Ban a single IP address
/ipban 192.168.1.100
# Ban multiple IP addresses at once
/ipban 192.168.1.100 10.0.0.50 172.16.0.10
# Mix valid and invalid IPs (invalid ones will be skipped with warnings)
/ipban 192.168.1.100 invalid.ip 10.0.0.50
/unbanip - Unban IP Addresses
Permission: velocityipban.unban
Aliases: /unban-ip
Usage Examples:
# Unban a single IP address
/unbanip 192.168.1.100
# Unban multiple IP addresses at once
/unbanip 192.168.1.100 10.0.0.50 172.16.0.10
⚙️ Configuration
config.yml
# Velocity IP Ban Plugin Configuration
# Created by Yunexal Labs
#
# A simple and efficient IP banning system for Velocity proxy servers
# Database settings
database:
type: "sqlite"
sqlite:
file: "banned_ips.db"
# Debug mode
debug: false
messages.properties
All plugin messages are customizable through the messages.properties file:
# Ban messages
ban.message=&cYour IP has been parked by Yunexal Autonomous Security. Appeal is not possible. Skill issue?
ban.kick_online=&cYour IP has been banned while you were online. Reconnection is not possible.
ban.success=&aSuccessfully banned IP: &f{ip}
ban.success_multiple=&aSuccessfully banned &f{count} &aIPs: &f{ips}
ban.already=&cIP {ip} is already banned
ban.some_already=&eWarning: Some IPs were already banned: &f{already_banned}
# Unban messages
unban.success=&aSuccessfully unbanned IP: &f{ip}
unban.success_multiple=&aSuccessfully unbanned &f{count} &aIPs: &f{ips}
unban.not_banned=&cIP {ip} is not banned
unban.some_not_banned=&eWarning: Some IPs were not banned: &f{not_banned}
# List messages
list.header=&6=== Banned IPs ===
list.entry=&7{ip} &8- &fbanned by &f{banned_by}
list.empty=&7No IPs are currently banned
# Error messages
error.invalid_ip=&cInvalid IP address format: &f{ip}
error.no_permission=&cYou don't have permission to use this command
error.database=&cDatabase error occurred. Check console for details.
# Usage messages
usage.ipban=&cUsage: &f/ipban &7[show list] &f| &f/ipban <ip1> [ip2] [ip3] ...
usage.unbanip=&cUsage: &f/unbanip <ip1> [ip2] [ip3] ...
🔒 Permissions
| Permission | Description | Default |
|---|---|---|
velocityipban.ban |
Allows using /ipban command |
op |
velocityipban.unban |
Allows using /unbanip command |
op |
🗃️ Database Schema
The plugin uses a simple SQLite database with the following structure:
CREATE TABLE banned_ips (
id INTEGER PRIMARY KEY AUTOINCREMENT,
ip_address TEXT NOT NULL UNIQUE,
banned_by TEXT NOT NULL,
banned_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
📊 How It Works
- Connection Blocking: When a player tries to connect, the plugin checks their IP against the database during the
PreLoginEvent - Multiple IP Management: Commands support space-separated IP addresses for bulk operations
- Online Player Kicking: When an IP is banned, all online players with that IP are immediately disconnected
- Validation: All IP addresses are validated before processing, with detailed error messages for invalid formats
- Async Operations: All database operations are performed asynchronously to prevent server lag
🎯 Performance
- Lightweight: ~14MB JAR file with all dependencies included
- Fast: Async database operations prevent server blocking
- Efficient: Uses connection pooling with HikariCP
- Scalable: SQLite database handles thousands of banned IPs efficiently
Made with ❤️ by Yunexal Labs
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:K9wTOnq4:NhHCUM4D"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:K9wTOnq4:NhHCUM4D"
}

