Перейти к содержимому
Mineforgian

IP Ban Plugin

Velocity plugin that manages banned IP addresses

Загрузки
208
Подписчики
0
Обновлён
1 января 2026 г.
Лицензия
MIT

Опубликован 6 июля 2025 г.

Исходный код

IPBanPlugin

A lightweight, high-performance IP ban system for Velocity Proxy servers.

🚀 Features

  • Ultra Lightweight: Weighs only ~350KB (no external database drivers required).
  • JSON Storage: Simple, human-readable storage in banned_ips.json. No database setup needed.
  • High Performance:
    • Instant ban checks (0ms latency) using in-memory caching.
    • Asynchronous file I/O to prevent server lag.
  • Full UTF-8 Support: Correctly handles Cyrillic and special characters in ban reasons and messages.
  • Instant Kick: Automatically kicks players who are online when their IP is banned.

📥 Installation

  1. Download the latest ipbanplugin-x.x.x.jar from the releases page.
  2. Place the jar file into your Velocity plugins/ folder.
  3. Restart the proxy.

🛠 Commands & Permissions

Command Usage Description Permission
/ipban /ipban Lists all banned IPs. ipbanplugin.ban
/ipban /ipban <ip> [reason] Bans a specific IP address. ipbanplugin.ban
/unbanip /unbanip <ip> Unbans a specific IP address. ipbanplugin.unban

⚙️ Configuration

The plugin generates a configuration folder at plugins/ipbanplugin/.

config.yml

Basic configuration settings.

messages.properties

Fully customizable messages with support for color codes (&) and placeholders. Note: The file is read as UTF-8, so you can use any language.

banned_ips.json

Stores the ban data.

[
  {
    "ip": "127.0.0.1",
    "bannedBy": "Admin",
    "bannedAt": "2026-01-01 12:00:00"
  }
]

📋 Requirements

  • Velocity 3.3.0 or higher
  • Java 17 or higher

Github

https://github.com/yunexal/ip-ban-plugin

Ченджлог

1.0.1Релиз1.21.9, 1.21.10, 1.21.11 · 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+).
1.0.0Релиз1.21.9, 1.21.10, 1.21.11 · 6 июля 2025 г.

Velocity IP Ban Plugin

Version Java Velocity License

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

Комментарии

Загружаем…