Sueta

IP Ban Plugin

1.0.1

Velocity plugin that manages banned IP addresses

·Plugin
  1. 1.0.1latestIP Ban Plugin 1.0.1Jan 1, 2026
    Added
    - JSON Storage: Replaced SQLite with a lightweight JSON-based storage system. - Async I/O: All file operations (save/load) are now performed asynchronously to prevent server lag. - Cyrillic Support: Enforced UTF-8 encoding for messages.properties and banned_ips.json to correctly handle Cyrillic characters in ban reasons and messages.
    Changed
    - Plugin ID: Renamed plugin ID to ipbanplugin and main class to IPBanPlugin. - Dependency Removal: Removed sqlite-jdbc dependency to drastically reduce file size. - File Size: Optimized plugin size from ~13MB to ~350KB. - Velocity API: Updated to target Velocity 3.4.0-SNAPSHOT.
    Fixed
    - Encoding Issues: Fixed issues where Cyrillic characters might appear as question marks or garbage text. - Java 9+ Compatibility: Removed complex classloader hacks required for SQLite, ensuring better compatibility with modern Java versions (Java 17+).
    207 downloads
  2. 1.0.0IP Ban Plugin 1.0.0Jul 6, 2025

    Velocity IP Ban Plugin

    ![Version](https://img.shields.io/badge/version-1.0.0-blue) ![Java](https://img.shields.io/badge/java-21-orange) ![Velocity](https://img.shields.io/badge/velocity-3.3.0-green) ![License](https://img.shields.io/badge/license-MIT-lightgrey)
    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

    1. Download the latest velocity-ip-ban-1.0.0.jar from releases 2. Place the JAR file in your Velocity server's plugins folder 3. Restart your Velocity server 4. 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

    1. Connection Blocking: When a player tries to connect, the plugin checks their IP against the database during the PreLoginEvent 2. Multiple IP Management: Commands support space-separated IP addresses for bulk operations 3. Online Player Kicking: When an IP is banned, all online players with that IP are immediately disconnected 4. Validation: All IP addresses are validated before processing, with detailed error messages for invalid formats 5. 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
    100 downloads

Similar projects

Plugin →