Compatibility
Minecraft: Java Edition
Platforms
Tags
Creators
Details
RxNoBots
Advanced bot protection for Velocity servers using chat and movement verification, with a clean purple gradient interface.
Languages
ru, en, de, fr, ja, pt, zh
English version
About the plugin
RxNoBots is an anti-bot plugin for the Velocity proxy. It filters out unwanted players before they ever reach your main servers.
The plugin relies on LimboAPI to put the player into an isolated environment where they go through a two-step verification process.
How verification works
- Chat step – the player types a unique code shown on screen.
- Movement step – the player looks in a specified direction (up, down, left, right) and holds that gaze for a few seconds.
- Success – after passing both steps, the player is allowed to join the server.
On-screen instructions and a simple purple gradient interface make it clear what the player is supposed to do, which cuts down on confusion and failed attempts.
Key features
| Category | Description |
|---|---|
| Chat verification | Generates a unique alphanumeric code. |
| Movement | Gaze tracking (up, down, left, right) with configurable hold duration. |
| Randomization | Each session generates a unique movement sequence. |
| Session persistence | Sessions resume after a disconnect (e.g. server restart). |
| Cooldown | Verified players are not re-verified for a configurable period. |
| Flexibility | Fully customizable logic – chat-only, movement-only, or hybrid modes. |
| Bypass | Whitelist by IP address or permission (rxnobots.bypass). |
| Statistics | Real-time stats via /rnb stats and bStats integration. |
| Admin control | Full management through dedicated commands. |
| Localization | Built-in English and Russian language files (easy to extend). |
| UI/UX | Clear step-by-step instructions for players with a purple gradient theme. |
Example workflow
| Step 1 | Step 2 | Result |
|---|---|---|
| Enter code | Hold gaze direction | Join server |
Commands and permissions
| Command | Permission | Description |
|---|---|---|
/rnb reload |
rxnobots.admin |
Reload configuration and language files. |
/rnb verify <player> |
rxnobots.admin |
Manually verify a player. |
/rnb reset <player> |
rxnobots.admin |
Reset a player's verification status. |
/rnb timeout <player> <seconds> |
rxnobots.admin |
Set a timeout for a player. |
/rnb bypass <player> |
rxnobots.admin |
Toggle bypass permission for a player. |
/rnb stats |
rxnobots.admin |
Show global statistics. |
/rnb session info <player> |
rxnobots.admin |
Display detailed session information. |
/rnb session end <player> |
rxnobots.admin |
Force-end a player's verification session. |
/rnb cache clear <player> |
rxnobots.admin |
Clear cached player data (useful for debugging). |
Additional permission:
rxnobots.bypass – grants automatic bypass for players with this permission.
Config
config.yml
# RxNoBots Plugin - Configuration
version: 1.2
# General Settings
general:
language: "ru" # Available: en, ru, de, fr, ja, pt, zh.
debug: true # Enable for detailed logs (disable in production)
plugin-prefix: "<gradient:#ff5555:#ff00aa>RxNoBots</gradient> <dark_gray>»</dark_gray>"
# Database Settings
database:
type: "h2" # sqlite, mysql, h2
sqlite:
file: "rxnobots.db"
mysql:
host: "localhost"
port: 3306
database: "rxnobots"
username: "root"
password: "password"
connection-pool-size: 5 # HikariCP pool size (connections to MySQL)
thread-pool-size: 4 # Size of async DB thread pool (MySQL only)
# Limbo Server Settings (requires LimboAPI)
limbo:
enabled: true
host: "127.0.0.1"
port: 25566
brand-name: "<gradient:#ff5555:#ff00aa>RxNoBots</gradient> <gray>Verification</gray>"
# Verification System
verification:
enabled: true
type: "HYBRID" # HYBRID, CHAT_ONLY, MOVEMENT_ONLY
# Chat Code Settings
code:
length: 4
characters: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
case-sensitive: false
# Movement Verification Settings
movement:
directions: # Predefined directions (used when random: false)
- "up:2"
- "left:2"
random: true # Generate random sequence of directions
min-duration: 2 # Minimum hold time per direction (seconds)
max-duration: 4 # Maximum hold time per direction (seconds)
available-directions: # Pool of directions for random generation
- "up"
- "down"
- "left"
- "right"
angles: # Angle thresholds for each direction
up:
pitch-min: -90.0
pitch-max: -30.0
down:
pitch-min: 30.0
pitch-max: 90.0
left:
yaw-min: 135.0
yaw-max: 225.0
right:
yaw-min: -45.0
yaw-max: 45.0
tolerance: 15.0 # Allowed deviation from exact angle (currently not used)
response-timeout: 30 # Inactivity timeout per stage (seconds)
kick-on-timeout: true # Disconnect player on timeout
# Attempt Limits
attempts:
max-attempts: 3 # Max failed code attempts per session
max-sessions: 3 # Max total verification sessions before timeout
reset-on-success: true
# Timeout Settings (after failing max attempts or max sessions)
timeout:
duration: 600 # Timeout duration (seconds) = 10 minutes
# Successful Verification Actions
success:
action: "DISCONNECT" # DISCONNECT or SERVER (send to target server)
target-server: "lobby"
remember-duration: 86400 # Cooldown before requiring re-verification (seconds) = 24h
# Cooldown Tracking (prevents repeated verifications)
cooldown:
track-by-user: true
track-by-ip: true
duration: 86400 # Cooldown duration (seconds)
# Bypass Settings
bypass:
permission: "rxnobots.bypass"
ip-whitelist:
- "127.0.0.1"
- "localhost"
# Performance Tuning
performance:
cleanup-interval: 3600 # Cache cleanup interval (seconds) – legacy, replaced by Guava TTL
max-sessions: 500 # Max concurrent verification sessions
session-timeout: 300 # Max session lifetime (seconds)
max-cache-size: 10000 # Maximum number of PlayerData entries in cache
batch-save-interval: 10 # Interval (seconds) for batch saving dirty sessions
# Security Settings
security:
max-verification-time: 120 # Overall verification time limit (seconds)
anti-spam-delay: 1000 # Chat anti-spam delay (ms)
log-attempts: true # Log failed verification attempts
Database support
| Type | Description |
|---|---|
| H2 | Embedded, used as a fallback and for migration. |
| SQLite | Lightweight file-based database. |
| MySQL | Production-ready with connection pooling. |
Data is automatically migrated from H2 to your chosen database on first startup.
Dependencies
- Velocity 3.5.0+
- LimboAPI (required) – provides the virtual world for verification.
Installation
- Place
RxNoBots.jarin your Velocityplugins/folder. - Place
LimboAPI.jarin the same folder. - Start the server – default configuration and language files will be generated.
- Adjust
config.ymland language files (lang/en.yml,lang/ru.yml) as needed. - Reload with
/rnb reloador restart the proxy.
Contributing
Issues and pull requests are welcome.
For discussions, join our Discord or Telegram.
Русская версия
О плагине
RxNoBots — анти-бот плагин для прокси Velocity, который отсеивает нежелательных игроков до того, как они попадут на основные серверы.
Плагин использует LimboAPI, чтобы поместить игрока в изолированное окружение, где он проходит двухэтапную проверку.
Как работает проверка
- Чат-этап — игрок вводит уникальный код, отображаемый на экране.
- Этап движения — игрок смотрит в указанном направлении (вверх, вниз, влево, вправо) и удерживает взгляд несколько секунд.
- Успех — после прохождения обоих этапов игрок допускается на сервер.
Подробные инструкции на экране и простой фиолетовый градиентный интерфейс помогают игроку сразу понять, что от него требуется, — меньше путаницы и неудачных попыток.
Ключевые возможности
| Категория | Описание |
|---|---|
| Чат-проверка | Генерируется уникальный буквенно-цифровой код. |
| Движение | Отслеживание взгляда (вверх, вниз, влево, вправо) с настраиваемой длительностью удержания. |
| Рандомизация | Каждая сессия создаёт уникальную последовательность движений. |
| Сохранение сессий | Сессии восстанавливаются после отключения (например, перезапуска сервера). |
| Кулдаун | Верифицированные игроки не проходят повторную проверку в течение настраиваемого периода. |
| Гибкость | Полностью настраиваемая логика — только чат, только движение или гибридный режим. |
| Байпас | Белый список по IP-адресу или разрешению (rxnobots.bypass). |
| Статистика | Данные в реальном времени через /rnb stats и интеграция с bStats. |
| Админ-контроль | Полное управление через специальные команды. |
| Локализация | Встроенные английский и русский языковые файлы (легко расширяются). |
| UI/UX | Понятные пошаговые инструкции для игроков в фиолетовой градиентной теме. |
Пример работы
| Этап 1 | Этап 2 | Результат |
|---|---|---|
| Ввод кода | Удержание взгляда | Вход на сервер |
Команды и права
| Команда | Право | Описание |
|---|---|---|
/rnb reload |
rxnobots.admin |
Перезагрузить конфигурацию и языковые файлы. |
/rnb verify <игрок> |
rxnobots.admin |
Вручную верифицировать игрока. |
/rnb reset <игрок> |
rxnobots.admin |
Сбросить статус проверки игрока. |
/rnb timeout <игрок> <сек> |
rxnobots.admin |
Установить таймаут для игрока. |
/rnb bypass <игрок> |
rxnobots.admin |
Переключить право обхода проверки. |
/rnb stats |
rxnobots.admin |
Показать глобальную статистику. |
/rnb session info <игрок> |
rxnobots.admin |
Детальная информация о сессии. |
/rnb session end <игрок> |
rxnobots.admin |
Принудительно завершить сессию. |
/rnb cache clear <игрок> |
rxnobots.admin |
Очистить кэш данных игрока (полезно для отладки). |
Дополнительное право:
rxnobots.bypass — даёт автоматический обход проверки.
Config
config.yml
# RxNoBots Plugin - Configuration
version: 1.2
# General Settings
general:
language: "ru" # Available: en, ru, de, fr, ja, pt, zh.
debug: true # Enable for detailed logs (disable in production)
plugin-prefix: "<gradient:#ff5555:#ff00aa>RxNoBots</gradient> <dark_gray>»</dark_gray>"
# Database Settings
database:
type: "h2" # sqlite, mysql, h2
sqlite:
file: "rxnobots.db"
mysql:
host: "localhost"
port: 3306
database: "rxnobots"
username: "root"
password: "password"
connection-pool-size: 5 # HikariCP pool size (connections to MySQL)
thread-pool-size: 4 # Size of async DB thread pool (MySQL only)
# Limbo Server Settings (requires LimboAPI)
limbo:
enabled: true
host: "127.0.0.1"
port: 25566
brand-name: "<gradient:#ff5555:#ff00aa>RxNoBots</gradient> <gray>Verification</gray>"
# Verification System
verification:
enabled: true
type: "HYBRID" # HYBRID, CHAT_ONLY, MOVEMENT_ONLY
# Chat Code Settings
code:
length: 4
characters: "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
case-sensitive: false
# Movement Verification Settings
movement:
directions: # Predefined directions (used when random: false)
- "up:2"
- "left:2"
random: true # Generate random sequence of directions
min-duration: 2 # Minimum hold time per direction (seconds)
max-duration: 4 # Maximum hold time per direction (seconds)
available-directions: # Pool of directions for random generation
- "up"
- "down"
- "left"
- "right"
angles: # Angle thresholds for each direction
up:
pitch-min: -90.0
pitch-max: -30.0
down:
pitch-min: 30.0
pitch-max: 90.0
left:
yaw-min: 135.0
yaw-max: 225.0
right:
yaw-min: -45.0
yaw-max: 45.0
tolerance: 15.0 # Allowed deviation from exact angle (currently not used)
response-timeout: 30 # Inactivity timeout per stage (seconds)
kick-on-timeout: true # Disconnect player on timeout
# Attempt Limits
attempts:
max-attempts: 3 # Max failed code attempts per session
max-sessions: 3 # Max total verification sessions before timeout
reset-on-success: true
# Timeout Settings (after failing max attempts or max sessions)
timeout:
duration: 600 # Timeout duration (seconds) = 10 minutes
# Successful Verification Actions
success:
action: "DISCONNECT" # DISCONNECT or SERVER (send to target server)
target-server: "lobby"
remember-duration: 86400 # Cooldown before requiring re-verification (seconds) = 24h
# Cooldown Tracking (prevents repeated verifications)
cooldown:
track-by-user: true
track-by-ip: true
duration: 86400 # Cooldown duration (seconds)
# Bypass Settings
bypass:
permission: "rxnobots.bypass"
ip-whitelist:
- "127.0.0.1"
- "localhost"
# Performance Tuning
performance:
cleanup-interval: 3600 # Cache cleanup interval (seconds) – legacy, replaced by Guava TTL
max-sessions: 500 # Max concurrent verification sessions
session-timeout: 300 # Max session lifetime (seconds)
max-cache-size: 10000 # Maximum number of PlayerData entries in cache
batch-save-interval: 10 # Interval (seconds) for batch saving dirty sessions
# Security Settings
security:
max-verification-time: 120 # Overall verification time limit (seconds)
anti-spam-delay: 1000 # Chat anti-spam delay (ms)
log-attempts: true # Log failed verification attempts
Поддержка баз данных
| Тип | Описание |
|---|---|
| H2 | Встроенная, используется как резервная и для миграции. |
| SQLite | Лёгкая файловая база данных. |
| MySQL | Готова к продакшену, с пулом соединений. |
Данные автоматически мигрируются из H2 в выбранную БД при первом запуске.
Зависимости
- Velocity 3.5.0+
- LimboAPI (обязательно) — предоставляет виртуальный мир для проверки.
Установка
- Поместите
RxNoBots.jarв папкуplugins/вашего Velocity. - Поместите
LimboAPI.jarв ту же папку. - Запустите сервер — будут созданы конфигурация и языковые файлы по умолчанию.
- Настройте
config.ymlи языковые файлы (lang/en.yml,lang/ru.yml) по необходимости. - Перезагрузите плагин командой
/rnb reloadили перезапустите прокси.
Участие в разработке
Мы приветствуем Issues и Pull Requests.
Для обсуждений присоединяйтесь к нашему Discord или Telegram.


