Skip to the content.

VTRegister — все настройки и значения по умолчанию

Русский · English

Справочник собран автоматически из файлов настроек внутри jar, поэтому значения по умолчанию всегда совпадают с релизом. Файлы создаются в plugins/VTRegister/ при первом запуске; при обновлении недостающие параметры дописываются вместе с описаниями, твои значения сохраняются.

Назад к полному руководству

config.yml — основные настройки

Параметр По умолчанию Что делает
language auto Язык сообщений: auto (по языку клиента), ru, en

session

Сессия (автовход без пароля)

Параметр По умолчанию Что делает
session.duration_seconds 7200 Сколько секунд действует доверенная сессия после входа (7200 = 2 часа)
session.auto_login_by_ip false Автовход, если IP игрока совпадает с доверенным. ⚠️ За прокси без IP-forwarding включать опасно — см. proxy.known_proxy_ips
session.ip_prefix_octets 0 Совпадение IP для автологина по префиксу: 0 = точное совпадение, 3 = /24 (динамические IP), 4 = точное. Значения 1-2 не поддерживаются и поднимаются до 3. IPv6 при префиксе — совпадение /64. Префикс сравнивается только с последним IP аккаунта. ⚠️ Ослабляет привязку: любой клиент той же подсети получит сессию!
session.invalidate_on_restart true Рестарт сервера убивает IP-сессии: после перезагрузки все игроки обязаны войти заново (антиспам-реконнект ботами после рестарта). false — сессии переживают рестарт в пределах duration_seconds

auth

Авторизация

Параметр По умолчанию Что делает
auth.timeout_seconds 60 Сколько секунд даётся игроку на вход/регистрацию ПОСЛЕ проверки на бота
auth.kick_on_timeout true Кикать, если игрок не успел авторизоваться
auth.reminder — Напоминания «введи /login» в чат, пока игрок не вошёл
auth.reminder.enabled true напоминания (ActionBar) пока игрок не вошёл
auth.reminder.interval_seconds 2 как часто
auth.reminder.send_chat true дублировать в чат
auth.reminder.chat_interval_seconds 10 как часто дублировать в чат (сек); 0 = как interval_seconds

screen_hints

Подсказки по центру экрана Крупная надпись: что игроку делать прямо сейчас — зарегистрироваться, войти, ввести пароль, пройти этап проверки. Для тех, кто не читает чат. Тексты — lang/ru.yml и lang/en.yml (ключи hint_*).

Параметр По умолчанию Что делает
screen_hints.enabled true общий выключатель всех надписей
screen_hints.auth true регистрация / вход / «введи пароль»
screen_hints.antibot true этапы проверки на бота: «Проверка 1/2 — что делать»
screen_hints.prepare true отсчёт «Готовься!» перед проверкой
screen_hints.done true «Готово!» после входа
screen_hints.stay_seconds 3 сколько секунд надпись на экране (1–30)
screen_hints.refresh_seconds 3 как часто показывать снова, пока шаг не выполнен (0 — один раз)
screen_hints.max_repeats 0 сколько раз показать одну подсказку (0 — пока шаг не выполнен)
screen_hints.fade_in_ticks 8 плавное появление в тиках (20 = 1 сек); повторы — без мигания
screen_hints.fade_out_ticks 10 плавное исчезновение в тиках

password

Пароли

Параметр По умолчанию Что делает
password.min_length 8 минимальная длина
password.max_length 64 максимальная длина
password.enforce_strength true проверять сложность (разные символы)
password.allow_easy_passwords false Разрешить пароли из easy-passwords.yml (даже простые/короткие)
password.require_confirm false Требовать повтор пароля при регистрации/смене (в защищённом режиме)

ip_limit

Лимит аккаунтов с одного IP Защита от мультиаккаунтов и ботов: с одного IP можно завести не больше max_accounts аккаунтов (считаются аккаунты, созданные с этого IP или последний раз входившие с него). Новый ник сверх лимита получает отказ при входе и при /register; в уже созданные аккаунты входить можно всегда. За прокси без проброса реальных IP лимит не работает (у всех один адрес). Мобильный интернет часто даёт один IP многим людям — если новички жалуются на отказ, подними max_accounts.

Параметр По умолчанию Что делает
ip_limit.enabled true включить лимит
ip_limit.max_accounts 3 сколько аккаунтов можно на один IP
ip_limit.exempt_ips [] IP без лимита: компьютерный клуб, общежитие, общий NAT провайдера

security

Безопасность

Параметр По умолчанию Что делает
security.login_log — Журнал входов: plugins/VTRegister/logs/logins/ГГГГ-ММ-ДД.log (успешные входы и неудачные попытки: ник, UUID, IP).
security.login_log.enabled true вкл/выкл
security.login_log.keep_days 30 сколько дней хранить журналы
security.admin_alerts — Оповещение, когда админ входит с НОВОГО IP (Discord и/или Telegram).
security.admin_alerts.enabled false вкл/выкл
security.admin_alerts.permission "registerplugin.admin" кто админ (и все OP)
security.admin_alerts.server_name "myserver" имя сервера в тексте оповещения
security.admin_alerts.on_first_login false оповещать и о самом первом входе
security.admin_alerts.discord_webhook "" URL вебхука Discord (Настройки канала → Интеграции)
security.admin_alerts.telegram_bot_token "" токен бота от @BotFather
security.admin_alerts.telegram_chat_id "" ID чата/канала, куда слать
security.secure_password_input true ★ ЗАЩИЩЁННЫЙ режим ввода пароля: true — пароль вводится СЛЕДУЮЩИМ СООБЩЕНИЕМ В ЧАТ (не попадает в логи) false — классический /reg пароль (пароль попадёт в консоль и логи!) Режим ВСЕГДА сообщается игроку при входе — скрыть его нельзя.
security.command_logging "fix" Что делать с логированием команд ядром (spigot.yml → commands.log). Ядро пишет «ник issued server command: /reg пароль» ДО того, как плагин получит событие, поэтому выключить это можно только так: fix — плагин сам поставит commands.log: false (нужен перезапуск сервера) warn — только предупредить в консоли off — ничего не делать
security.log4j_filter true Дополнительный log4j-фильтр: вырезает из логов строки с нашими командами
security.confirm_password_in_command true Подтверждение опасного ввода: первая команда с паролем блокируется и игроку предлагается повторить её, если он согласен с риском
security.confirm_timeout_seconds 30 сколько секунд ждать повтор пароля при регистрации
security.password_input_timeout_seconds 25 Сколько секунд ждать ввод пароля/кода в чат (5–120)
security.max_login_attempts 5 Максимум неверных попыток входа до блокировки
security.lock_seconds 300 На сколько секунд блокировать после исчерпания попыток
security.max_trusted_ips 3 Сколько доверенных IP хранить на аккаунт
security.pbkdf2_iterations 200000 Итерации PBKDF2 (50000–2000000). Больше = надёжнее, но чуть медленнее вход
security.hash_algorithm "argon2id" Алгоритм хеширования паролей: argon2id (рекомендуется) | pbkdf2
security.argon2_memory_kib 19456 Параметры Argon2id: память в KiB, итерации, потоки. По умолчанию — рекомендация OWASP (19456 KiB = 19 МБ, 2 прохода): ~45 мс процессора на вход и мало мусора для сборщика памяти — сервер не подвисает, когда заходит много игроков сразу. Строже: 65536 и 3 (в ~5 раз тяжелее). Старые хеши с другими параметрами продолжают работать.
security.argon2_iterations 2 проходов Argon2id (больше = надёжнее и медленнее)
security.argon2_parallelism 1 потоков Argon2id на один хеш
security.password_pepper "" Секретная добавка (pepper). ⚠️ Смена/удаление сломает старые пароли!
security.admin_setpw_timeout_seconds 30 Таймаут ожидания нового пароля для /authadmin setpw (сек)
security.hide_during_auth true Скрывать неавторизованных: они не видят других и их не видят
security.auth_darkness auth_only Темнота/blindness до входа: always = всегда (как раньше), auth_only = только во время reg/login (в лобби-очереди светло — рекомендуется), never = эффект не применяется вообще
security.auth_platform true Платформа авторизации в мире проверки (только при включённом антиботе и без prelogin-точки): неавторизованные телепортируются на отдельную платформу (взаимно скрыты, заморожены). После входа игрок возвращается на точку входа. Мир недоступен — игрок остаётся на месте.
security.spawn_on_platform true Появляться сразу на платформе входа (без телепорта после захода): сервер не грузит игроку основной мир, из которого его тут же увозят. Меньше нагрузки на каждом входе. false — старый способ (телепорт после входа).
security.protect_inventory_on_death true Защита инвентаря: при смерти до входа вещи и опыт сохраняются
security.single_session true Одна сессия на ник (offline-mode): если игрок с таким ником уже в игре и вошёл в аккаунт — новое подключение отклоняется, играющего НЕ выбивает
security.proxy_bridge — Мост с прокси-модулем VTRegister (тот же jar на Velocity/BungeeCord), см. PROXY_SETUP.txt раздел 6
security.proxy_bridge.enabled true AUTH/LOGOUT на прокси (работает только когда сервер за прокси)
security.proxy_bridge.secret "" общий секрет = secret в config.yml прокси-модуля; пусто — вход не переносится между серверами
security.proxy_bridge.trust_network_login true вход без пароля по подписанному TRUST с прокси (игрок уже вошёл на другом сервере сети)
security.integrity — Проверка целостности сборки jar (битые архивы, перепаковка). strict: true — повреждённая сборка не запускается. Не отключать.
security.integrity.strict true true — повреждённая или изменённая сборка не запускается (защита от подделанных jar); false — только предупреждение в консоли
security.integrity.interval_seconds 300 как часто перепроверять целостность сборки (сек)

antibot

Проверка на бота (многоэтапная) Игрок попадает в отдельный ПУСТОЙ мир (нулевая нагрузка) и проходит этапы. Во время проверки напоминания и таймаут авторизации не работают.

Параметр По умолчанию Что делает
antibot.enabled true вкл/выкл
antibot.fast_mode true ПРОСТАЯ НАСТРОЙКА — обычно хватает этих строк Быстрый режим антибота: true (по умолчанию) — проверка СРАЗУ при входе: без очередей, без afk_first, лобби не строится; этапы — fast_stages. Минимум ожидания для игрока и минимум нагрузки на сервер. false — обычный режим: проверка по очереди (queue_mode), шаг «сдвинься с места» (afk_first), этапы из stages ниже.
antibot.fast_stages [fall, puzzle] Этапы быстрого режима по порядку. На выбор: fall (физика падения), camera (поворот камеры), slots (слоты + рывки камеры), captcha (код), click (клик по сообщению), puzzle (убери лишние картинки), math (пример), secret (тест на чит-команды), block (путь + сундук + сломать блок), air_captcha (код из блоков в воздухе). По умолчанию физика + пазл ≈ 30–40 сек для человека. Пусто [] — берутся stages ниже.
antibot.fast_max_concurrent 50 Сколько игроков проверяются одновременно (у каждого своя арена в пустом мире). Остальные ждут на месте с таймером в боссбаре — без лобби.
antibot.recheck_hours 24 Повторная проверка постоянных игроков: уже зарегистрированный снова проходит проверку при входе, если с прошлой прошло столько часов (разумно 24–48). Защита от «спящих» бот-аккаунтов. Кто в игре дольше срока — не выкидывается, проверка будет при следующем входе. 0 — постоянных игроков не перепроверять.
antibot.bypass — ДАЛЬШЕ — РАСШИРЕННЫЕ НАСТРОЙКИ (для продвинутых) Белый список: эти ники и IP не проходят проверку на бота и не попадают под лимиты подключений (админы, тестеры, свои сервисы). Пример: names: [“Admin”] ips: [“203.0.113.7”]
antibot.bypass.names []  
antibot.bypass.ips []  
antibot.only_new_players true Проверять только новых игроков (у кого нет аккаунта) — постоянные перепроверяются по сроку recheck_hours. false — всех при каждом входе
antibot.world_name "auth_verify" Мир проверки (создаётся автоматически; на Folia проверка с этапами не работает)
antibot.empty_inventory true На проверке И в лобби-очереди настоящие вещи прячутся в стэш (с копией в plugins//stash/ на случай краша) и возвращаются на любом выходе. false — в лобби игрок держит свои вещи, PvP-смерть ничего не роняет
antibot.restore_player_state true Вернуть игроку его режим игры/полёт после проверки
antibot.max_concurrent_checks 8 Лимит одновременных проверок — остальные ждут в очереди
antibot.arena_spacing 32 Расстояние между аренами (у каждого игрока своя площадка)
antibot.queue_mode "bossbar" Очередь на проверку Режим очереди, когда проверок больше max_concurrent_checks: none — игрок стоит на месте, только сообщение с позицией bossbar — как none + боссбар сверху с позицией и прогрессом lobby — общая платформа-ожидание: игроки гуляют, есть паркур (лёгкий/средний/сложный), боссбар с позицией + голограмма. В лобби нельзя: команды, драться и умирать (кроме PvP-зоны), упасть в пустоту
antibot.lobby_first_seconds 8 Все заходящие сначала N секунд ждут в лобби (паркур, PvP-арена), потом идут на проверку — даже когда слоты свободны. 0 = как раньше, максимум 60.
antibot.queue_max_size 0 Лимит людей в очереди (0 = без лимита). Переполнение — вежливый кик
antibot.queue_chat_allowed false Разрешить чат в очереди (видят только другие ждущие). false — чат закрыт
antibot.queue_chat_filter — Фильтр чата лобби-очереди: анти-реклама, КД, лимит слов
antibot.queue_chat_filter.enabled true вкл/выкл фильтр целиком
antibot.queue_chat_filter.cooldown_ms 1500 мин. пауза между сообщениями игрока
antibot.queue_chat_filter.max_words 12 максимум слов в сообщении
antibot.queue_chat_filter.block_links true блокировать ссылки/домены/IP (анти-реклама)
antibot.queue_chat_filter.block_repeat true блокировать повтор того же сообщения
antibot.queue_spam_seconds 5 Раз в сколько секунд напоминать ждущим «отслеживай очередь на боссбаре»
antibot.queue_hologram true Голограмма над платформой со счётчиком очереди
antibot.queue_parkour true Строить в лобби паркур (лёгкий/средний/сложный) — безопасный, без смертей
antibot.queue_hide_players false Скрывать игроков очереди друг от друга (не видят и не толкают)
antibot.queue_hide_above 60 Большое лобби: когда ждущих больше N, они перестают видеть друг друга (кроме PvP-зоны) — иначе трафик растёт как N² (128 ждущих ≈ 325 тыс. пакетов в секунду). Снова видны, когда их меньше N-10. 0 = не скрывать
antibot.afk_first true AFK-первым: когда лобби-очередь ВЫКЛЮЧЕНА (queue_mode: none/bossbar), новый игрок сразу получает AFK-проверку (шаг с места), затем цепочку антибота. Бот без движения отлетает по afk.initial_timeout до арен.
antibot.queue_flight false Разрешить полёт в очереди-лобби (ждущие могут летать и ждать)
antibot.queue_kick_flyers true Кикать ждущих, которые летают БЕЗ разрешения сервера — чит (3 тика подряд)
antibot.queue_build_lobby true Строить стандартную платформу лобби. false — вставь свою схематику в мире проверки по центру платформы (инструкция в INSTRUCTION_RU.txt)
antibot.queue_pvp — PvP-зона в очереди-лобби: сундук с лутом пополняется по таймеру, дерутся только внутри зоны (задаётся координатами углов)
antibot.queue_pvp.enabled true арена 43x43 вплотную к южной стороне лобби (ворота в стене)
antibot.queue_pvp.corner1_x 21 первый угол зоны (координаты в мире проверки)
antibot.queue_pvp.corner1_z -484 Z первого угла PvP-зоны
antibot.queue_pvp.corner2_x -21 противоположный угол
antibot.queue_pvp.corner2_z -442 Z второго угла PvP-зоны
antibot.queue_pvp.chest_x 0 где стоит сундук с лутом
antibot.queue_pvp.chest_z -463 Z сундука с лутом PvP-зоны
antibot.queue_pvp.chest_seconds 15 как часто сундук пополняется
antibot.queue_pvp.kit_enabled true Двойной сундук-набор: виртуальный инвентарь на игрока, раз в N сек. Содержимое правит админ в игре: /authadmin pvpkit
antibot.queue_pvp.kit_cooldown_seconds 30 пауза между выдачами набора (сек)
antibot.queue_pvp.admin_modify true админ может менять PvP-набор (/authadmin pvpkit)
antibot.queue_pvp.admin_lobby_tp true админ может телепортироваться в лобби
antibot.queue_pvp.protect_functional true защита кнопок и сундуков лобби от ломания
antibot.queue_pvp.items ["NETHERITE_CHESTPLATE:PROTECTION:4", "DIAMOND_SWORD:SHARPNESS:1", "GOLDEN_APPLE:25"] Лут сундука PvP-зоны: “МАТЕРИАЛ[:ЗАЧАРОВАНИЕ:УРОВЕНЬ][:КОЛ-ВО]”
antibot.queue_pvp.queue_steal true Убийство в PvP-зоне двигает очередь: убийца идёт ВПЕРЁД на gain_positions, погибший откатывается НАЗАД на lose_positions. false = просто драка
antibot.queue_pvp.gain_positions 1 на сколько мест вверх в очереди за убийство
antibot.queue_pvp.lose_positions 1 на сколько мест вниз в очереди за смерть
antibot.queue_pvp.hologram true Парящая надпись у линии PvP с предупреждением о ставках
antibot.queue_pvp.hologram_text "&c⚠ PvP-зона: смерть = -{lose} в очереди, убийство = +{gain}" текст голограммы над PvP-зоной
antibot.queue_pvp.speed_button — Кнопка в 4 блоках от сундука: нажал — получил эффект скорости
antibot.queue_pvp.speed_button.enabled true вкл/выкл
antibot.queue_pvp.speed_button.seconds 30 длительность эффекта
antibot.queue_pvp.speed_button.level 2 уровень эффекта (2 = Speed II)
antibot.influx — Наплыв игроков (экстренная защита) Впускаем максимум burst мест суммарно (проверки + очередь). Остальных кикаем с вежливым сообщением — бот-волна не парализует вход реальным.
antibot.influx.enabled true вкл/выкл
antibot.influx.burst 64 максимум мест суммарно (проверки + очередь)
antibot.batch_size 5 Батчи и подготовка Из очереди в проверку выпускаем ВОЛНАМИ по batch_size с паузой — арены строятся порциями, а не всем скопом (плавная нагрузка)
antibot.batch_delay_seconds 4 пауза между волнами выпуска (сек)
antibot.prepare_seconds 5 Отсчёт на экране перед первым этапом: тайтл + чат «готовься» (0 = сразу)
antibot.entry_queue — Очередь ВХОДА на сервер (после прохождения проверки) Если сервер полон — игроки, ПРОШЕДШИЕ проверку, ждут на лобби-платформе и выпускаются волнами по мере освобождения слотов.
antibot.entry_queue.enabled false вкл/выкл
antibot.entry_queue.max_online 0 Сколько игроков пускать «на сервер» максимум. 0 = лимит сервера (max-players из server.properties минус reserve_slots)
antibot.entry_queue.reserve_slots 0 Сколько слотов держать в запасе (для админов/донатеров)
antibot.entry_queue.release_batch 3 Скольких выпускать за волну и пауза между волнами (секунды)
antibot.entry_queue.release_seconds 3 как часто выпускать следующего из очереди входа (сек)
antibot.entry_queue.spam_seconds 8 Напоминание в чат о позиции (секунды)
antibot.entry_queue.bossbar true Боссбар «Вход на сервер: N/M»
antibot.entry_queue.target_server "" ПРОКСИ: имя сервера-лобби, куда отправлять после выпуска через Velocity/BungeeCord Connect. Пусто = игрок остаётся на этом сервере
antibot.puzzle_map true Пазл: картинки на стене. PNG из plugins/VTRegister/puzzles/ показываются на стене арены в рамках с картами (128×128). Папка пустая — картинки генерируются сами
antibot.fallback_main_world true Если мир проверки НЕ удалось создать — проверять на запасной арене высоко в небе основного мира (а не пропускать ботов). true = безопаснее
antibot.emergency — Аварийный режим Плагин всегда пытается продолжить работу (запасная арена, запасные проверки), а о проблемах спамит в консоль:
antibot.emergency.alert_times 10 сколько раз повторять каждое предупреждение
antibot.emergency.alert_interval_seconds 300 интервал повторов (сек)
antibot.stages — Этапы (вкл/выкл каждый)
antibot.stages.fall true физика: несколько падений на платформу
antibot.stages.camera false вращение камерой (накопить N оборотов) — по умолчанию выкл
antibot.stages.slots false переключение слотов + рывки камеры (проверка клиента)
antibot.stages.captcha false код в чат
antibot.stages.click false клик по сообщению
antibot.stages.puzzle true пазл «убери лишних» + слово-старт в чат
antibot.stages.math false пример на экране/в чате (по умолчанию выкл)
antibot.stages.secret false тест на чит-команды (.bind/#help/…) — по умолчанию выкл
antibot.stages.air_captcha false капча в воздухе: поверти камерой → появится код из блоков → введи в чат
antibot.stages.block false путь + сундук + сломать блок и подобрать его — по умолчанию выкл
antibot.lobby_item_clean_seconds 60 Чистка дропнутых предметов в лобби-очереди раз в N секунд (0 = выкл)
antibot.timeouts — Таймауты этапов (секунды)
antibot.timeouts.fall 45 на весь этап падений (при 5 повторах — не меньше 45)
antibot.timeouts.camera 30 поворот камеры
antibot.timeouts.slots 35 слоты + рывки камеры
antibot.timeouts.captcha 60 ← время на ввод капчи
antibot.timeouts.click 25 клик по сообщению
antibot.timeouts.puzzle 60 пазл
antibot.timeouts.math 40 пример
antibot.timeouts.secret 40 тест на чит-команды
antibot.timeouts.block 60 путь + сундук + блок
antibot.timeouts.air_captcha 60 капча в воздухе
antibot.bossbar true Параметры этапов боссбар сверху с прогрессом и обратным отсчётом
antibot.bossbar_color "auto" Цвет боссбара: auto — по этапу, или фиксированный: BLUE/GREEN/PINK/PURPLE/RED/WHITE/YELLOW
antibot.bossbar_title "" Свой заголовок боссбара (пусто = из lang). Плейсхолдеры: {stage_num} {stage_total} {seconds}
antibot.bossbar2_enabled false Второй (рекламный) боссбар поверх основного — текст и цвет свои
antibot.bossbar2_title "&dДобро пожаловать на сервер!" текст второго (рекламного) боссбара
antibot.bossbar2_color "PURPLE" цвет второго боссбара (PINK/BLUE/RED/GREEN/YELLOW/PURPLE/WHITE)
antibot.physics_repetitions 5 сколько повторов физики (1–8), по умолчанию 5
antibot.packet_watch — Фоновая пакетная проверка с самого входа До входа в аккаунт следит за пакетами игрока: флуд пакетами и невозможные координаты = бот (кик + ступень бана). Если перехват пакетов на ядре не встаёт — просто молча не работает, ничего не ломает.
antibot.packet_watch.enabled true вкл/выкл
antibot.packet_watch.max_packets_per_second 300 больше этого (ваниль шлёт 20–80) …
antibot.packet_watch.flood_seconds 3 … столько секунд подряд = флуд
antibot.answer_timing — Тайминг ответов (капча, пример, секрет, кнопка, слово пазла) Бот отвечает мгновенно и с одинаковой задержкой; человек печатает дольше и каждый раз по-разному. Нарушение = проверка провалена.
antibot.answer_timing.enabled true вкл/выкл
antibot.answer_timing.min_ms_per_char 120 быстрее N мс на символ ответа = бот (0 = не проверять)
antibot.answer_timing.min_samples 3 сколько ответов нужно, чтобы оценить «ровность»
antibot.answer_timing.max_stddev_ms 40 разброс задержек меньше этого = робот (0 = не проверять)
antibot.air_captcha — Капча в воздухе (этап air_captcha, включается в stages) Игрок висит в воздухе, крутит камерой — впереди появляется код, выложенный разноцветными блоками (буквы прыгают/наклонены, вокруг шум).
antibot.air_captcha.turn_degrees 150 на сколько градусов покрутить камерой, чтобы появился код
antibot.air_captcha.code_length 4 длина кода (3–6)
antibot.air_captcha.noise_blocks 6 «мусорные» блоки вокруг букв (0 = без шума)
antibot.air_captcha.tilt true прыжки букв и разные промежутки («кривая» капча); false — ровная
antibot.air_captcha.scale 2 размер букв: 1 — мелкие, 2 — крупные на весь экран, 3 — огромные (если не влезает между аренами — сам уменьшит)
antibot.air_captcha.diagonal true строка кода по случайной диагонали (вверх/вниз); false — всегда горизонтально
antibot.arena_restore_per_tick 2 Сколько арен восстанавливать за тик после проверок (размазывает нагрузку при наплыве). 0 = восстанавливать сразу.
antibot.surge — Режим наплыва (волна входов) Когда на проверку заходит много игроков сразу, проверки стартуют дозированно: не больше max_starts_per_second в секунду, остальные ждут на месте с боссбаром. Нагрузка размазывается по времени, сервер не лагает.
antibot.surge.enabled true включить режим наплыва
antibot.surge.trigger_joins 15 столько входов на проверку за 10 секунд = наплыв
antibot.surge.max_starts_per_second 3 сколько проверок запускать в секунду во время наплыва
antibot.surge.calm_seconds 30 через сколько секунд без волны режим выключается
antibot.world_view_distance 3 Дальность прорисовки в мире проверки (Paper). Мир пустой — дальше видеть нечего, а при телепорте сервер шлёт в 9 раз меньше чанков. 0 = как у сервера.
antibot.tick_ticks 10 Тонкая настройка (для продвинутых) как часто антибот проверяет игроков (в тиках, 5–40); меньше = точнее, но дороже
antibot.jolt_interval_ticks 8 пауза между рывками камеры на этапе slots (тики, 2–40)
antibot.packet_window_ticks 3 окно пакетной проверки падения (тики, 1–10)
antibot.fall_smart_plan true true = умный план повторов: 1-й — обычное падение, остальные в случайном порядке — высокое падение (разгон), паутина (медленное погружение), подброс вверх (клиент обязан взлететь и приземлиться), обычные падения. Бот, заточенный под один сценарий, ломается на другом. Bedrock — мягче.
antibot.fall_launch true включить повтор «подброс вверх»
antibot.fall_min_height 5 мин. высота подброса (блоков)
antibot.fall_max_height 9 макс. высота подброса (блоков) — каждый раз случайная
antibot.min_fall_millis 250 минимальное время падения (мс) — телепорт-чит отсекается
antibot.physics_blocks true Платформы с ОСОБОЙ физикой: SLIME — клиент обязан реально отскочить вверх, COBWEB — медленное погружение, HONEY — мягкое приземление. Пакетные боты такую физику не воспроизводят. false — только обычные блоки
antibot.camera_turns 2.0 Камера: сколько ПОЛНЫХ оборотов накопить (суммарно yaw+pitch, с паузами — быстро или медленно, без требования непрерывности). 2.0 = два оборота
antibot.camera_linearity true Анти-бот по «линейности» камеры: робот крутит с идеально одинаковой дельтой каждый пакет — человек никогда. На CAMERA ровная серия просто не засчитывается в обороты; на BLOCK длинная серия = кик. Bedrock не проверяется
antibot.linearity_streak 60 Линейность прицела на этапе BLOCK: сколько одинаковых нетривиальных (>=1°) дельт поворота подряд (и >=360° суммарно) считать спин-ботом. 30..500. Серия сбрасывается пакетом без поворота
antibot.camera_seconds 3 (устарело, оставлено для совместимости — см. camera_turns)
antibot.slots_required 2 сколько раз переключить слот
antibot.slots_anti_cheat true проверка на чит NoSlotChange (сервер сам меняет слот)
antibot.slot_grace_millis 300 Grace-период после принудительной смены слота (мс): пакеты раньше него — «старые» (клиент ещё не видел смену) и НЕ караются. Убери ложные кики!
antibot.slot_max_attempts 3 Сколько раз повторять принудительную смену слота перед фейлом (1–6)
antibot.slot_camera_test true Рывки камеры на этапе SLOTS: сервер резко вращает камеру N раз, живой клиент отвечает Look-пакетами. Бот без ответов → кик.
antibot.slot_camera_jolts 5 сколько рывков (2–10)
antibot.slot_camera_min_acks 2 минимум ответов клиента, иначе фейл
antibot.packet_check true Фоновая проверка пакетов: боты шлют аномально много move-пакетов
antibot.packet_max_per_tick 60 лимит move-событий за тик (~0.5 сек)
antibot.kick_flyers true Игрок летает БЕЗ разрешения сервера (allowFlight) 3 тика подряд → кик. Полёт, выданный другими плагинами или правами, не карается
antibot.block_distance 5 BLOCK: случайный путь, падения, сундук с инструментом (устарело — см. block_path_length)
antibot.block_path_length 14 длина СЛУЧАЙНОГО пути зигзагом (6–40)
antibot.block_max_falls 5 падений с пути до кика (1–20)
antibot.block_max_mistakes 1 Ошибок на этапе блока до кика: сломал не тот блок или ударил не тем инструментом. 1 = первая же ошибка — кик; 0 = не считать ошибки
antibot.click_buttons — Кнопки этапа click («Я НЕ БОТ» + кнопки-обманки). При каждой отправке они встают в НОВОМ случайном порядке
antibot.click_buttons.color_mode lang lang — цвета как в lang-файле (у каждой кнопки свой) custom — button_color для «Я НЕ БОТ», decoy_color для остальных single — все кнопки одним цветом single_color (сложнее угадать глазом) off — без цвета (белые)
antibot.click_buttons.button_color "&a" цвет «Я НЕ БОТ» (&-код или HEX: “&#55FF55”)
antibot.click_buttons.decoy_color "&c" цвет кнопок-обманок
antibot.click_buttons.single_color "&f" цвет всех кнопок в режиме single
antibot.click_buttons.bold true жирный шрифт кнопок (для custom/single/off)
antibot.block_tool_chest true Сундук со спец-инструментом у старта пути — открывается только на этапе. Без инструмента целевой блок не сломать
antibot.block_chest_required true true = целевой блок можно сломать только после того, как игрок ОТКРОЕТ и ЗАКРОЕТ сундук с инструментами у старта пути (лишний шаг для бота).
antibot.block_tool_material "GOLDEN_PICKAXE" предмет-инструмент по умолчанию (Material)
antibot.block_tool_name "&eКлюч арены" название инструмента этапа BLOCK
antibot.puzzle_auto_pass true PUZZLE: «убери лишних» Авто-проход: как только все лишние убраны — этап засчитан. false — нужно ещё написать слово-старт в чат (старая схема)
antibot.puzzle_unclosable true GUI пазла нельзя закрыть, пока этап не пройден (E/Esc переоткрывают)
antibot.puzzle_confirm_word "vse" Слово, которое игрок пишет в чат для запуска проверки пазла (только при auto_pass: false)
antibot.puzzle_remove ["OCELOT_SPAWN_EGG", "CAT_SPAWN_EGG"] Каких животных надо убрать (любые материалы/яйца призыва)
antibot.puzzle_keep ["WOLF_SPAWN_EGG", "LLAMA_SPAWN_EGG", "RABBIT_SPAWN_EGG", "PARROT_SPAWN_EGG", "FOX_SPAWN_EGG"] Кого трогать НЕЛЬЗЯ — остаются на поле
antibot.puzzle_max_wrong 1 Ошибок в пазле до кика (удар по «правильной» картинке, неверный клик в GUI). 1 = первая же ошибка — кик (засчитывается как доказанный провал)
antibot.puzzle_mode "both" Режим пазла: blocks — стена 3×3 из рамок с картами, лишние картинки нужно УДАРИТЬ; gui — меню инвентаря (забрать отмеченные яйца); both — сначала рамки, при сбое — меню
antibot.puzzle_remove_count 3 Сколько лишних картинок на стене (1–8)
antibot.puzzle_tiles [cat, dog, pig, cow, chicken, sheep, rabbit, fox, panda, man_black] Все картинки стены: plugins/VTRegister/puzzles/tiles/<имя>.png — можно положить свои PNG 128×128; отсутствующая картинка рисуется и сохраняется автоматически
antibot.puzzle_random_targets true true (рекомендуется) = «лишние» картинки выбираются СЛУЧАЙНО из всех puzzle_tiles с равным шансом, у каждого игрока свои — ботам не запомнить. false = берутся из puzzle_remove_names с весами. Формат: “имя” или “имя:вес”
antibot.puzzle_style keep Как звучит задание пазла: keep — «оставь только свинок — всё остальное убери» (понятнее, по умолчанию): случайное животное занимает все «правильные» клетки, лишние — другие картинки remove — «убери лишних: кот ×1, лиса ×2» (старый вариант)
antibot.puzzle_task_keep "" Свой текст задания для keep (пусто = из lang: antibot_stage_puzzle_keep). Плейсхолдеры: {keep} {count} {word} {stage_num} {stage_total} пример: “&aОставь на стене только &6{keep}&a, остальные {count} картинки ударь!”
antibot.puzzle_remove_names ["man_black", "cat", "fox"] Какие картинки «лишние» (используется при puzzle_random_targets: false)
antibot.puzzle_same_target false true = все «лишние» одного типа (один бросок по весам); false = микс разных на стене
antibot.puzzle_task "" Свой текст задания (пусто = авто «Убери лишних: <имена>x<кол-во>»). Плейсхолдеры: {targets} {count} {word} {stage_num} {stage_total}
antibot.min_answer_ms 400 Ответ быстрее этого (мс) после показа вопроса = бот. Для captcha/math/secret/click/puzzle. 0 = выкл
antibot.min_click_ms 100 Клик по кликабельному сообщению быстрее N мс после показа = бот (0 = выкл)
antibot.slots_response_ms 8000 Молчание после принудительной смены слота дольше N мс = чит игнорирует серверный forced-слот (NoSlotChange). Повтор, затем кик.
antibot.slot_relock_max 4 Возвратов на слот, стоявший до форса (re-lock чит), до кика
antibot.camera_snap_degrees 60 Камера: ПОДРЯД резкие повороты > N градусов за пакет = спин-бот
antibot.camera_snap_max 8 Сколько ПОДРЯД одинаковых (±1°) рывков >= camera_snap_degrees считать ботом (они просто не засчитываются в обороты, кика нет). Минимум в коде 8: быстрый свайп мышью даёт 4–6 рывков
antibot.slot_lock — Запрет перекладывать вещи во время проверки
antibot.slot_lock.enabled true включить запрет
antibot.slot_lock.kick_after 5 нарушений до кика
antibot.recheck_on_restart false true — после ПЕРЕЗАГРУЗКИ сервера все игроки (даже старые аккаунты) заново проходят проверку на бота: защита от «спящих» бот-аккаунтов. false (по умолчанию) — постоянные игроки перепроверяются только по сроку recheck_hours (выше), а не после каждого рестарта
antibot.slime_extra_seconds 8 SLIME: сколько дополнительных секунд этапу даётся на отскок (взлететь + упасть + остановиться). Запас на пинг и лаги клиента.
antibot.puzzle_sign_lines ["&6&lПАЗЛ", "прямо перед тобой", "убери &cлишние&r предметы", "&aостальное не трогай"] Текст таблички перед игроком на этапе пазла (4 строки, &-цвета)
antibot.fall_void_max 3 Пустота на этапе FALL: сообщение и повтор. Сколько падений в пустоту до кика
antibot.fall_packets true Пакетная проверка падения (Netty, limbo-стиль): телепорт в воздух + AcceptTeleportation, затем замер dy по формуле ванили v=(v-0.08)*0.98. false — старые платформы. Перехват не встаёт / пакетов не видно — повтор на событиях Bukkit (не кик).
antibot.fall_confirm_timeout_ms 2500 без AcceptTeleportation -> повтор падения на событиях Bukkit (НЕ кик)
antibot.fall_move_timeout_ms 3000 тишина по move-пакетам -> повтор на событиях Bukkit (НЕ кик)
antibot.fall_max_duration_ms 10000 общий потолок одной пакетной проверки падения, потом legacy (НЕ кик)
antibot.fall_ticks 4 нижняя граница сэмплов падения; реальный минимум считается из fall_height по физике ванили
antibot.fall_tolerance 0.01 допуск отклонения dy
antibot.fall_tolerance_bedrock 0.05 допуск для Bedrock/Geyser
antibot.fall_packets_bedrock false пакетная проверка для Bedrock (Geyser); допуск не подтверждён замером — по умолчанию Bedrock идёт на legacy
antibot.fall_height 12 высота телепорта над ареной
antibot.fall_max_violations 3 подряд нарушений формулы до кика
antibot.puzzle_front true Пазл перед игроком (прямо перед прицелом). false — стена за спиной: игроку нужно обернуться на 180
antibot.math_max 20 MATH: пример на экране/в чате (по умолчанию выкл) числа 1..N в примере
antibot.math_operations [add] Какие примеры давать: add — сложение (по умолчанию); mul — умножение самых простых чисел 2–5 (таблица умножения). Можно оба: [add, mul]
antibot.math_where "chat" chat | bossbar | both — где показывать пример
antibot.secret_mode "default" SECRET: тест на чит-команды Чит-клиенты перехватывают команды .help/#bind и не шлют их в чат — живой клиент отправит строку как сообщение. default — пул [.bind .help .bro #bro #bind #help] custom — свой список ниже random — случайные строки вида .fjdw / #jkkg
antibot.secret_custom — Свои чит-команды для этапа secret (при secret_mode: custom)
antibot.secret_count 2 сколько тестов подряд
antibot.code_length 4 длина кода капчи (3–8)
antibot.captcha_prefixes ".#!$" капча: префикс + токен (напр. #7bK9)
antibot.captcha_strike false Капча на карте «зачёркнутая»: тонкие линии через середину и крест-накрест. Человек читает (буквы толще линий), программе-распознавалке мешает.
antibot.max_attempts 5 попыток ввода капчи/математики
antibot.captcha_attempts 3 попыток ввода капчи (и капчи в воздухе) до кика
antibot.map_captcha false Рисовать код капчи на карте в руке (крупно, с искажением). Включено → код НЕ пишется в чат и титл, только на карте (Bedrock/Floodgate видит его и текстом). Рекомендуется true против ботов, читающих чат
antibot.click_decoys 2 CLICK: кнопок-приманок рядом с настоящей «Я НЕ БОТ» (0-3). Бот, жмущий любую ссылку из чата, попадает в приманку: 1-й промах прощается, 2-й = провал. 0 — старый режим (одно кликабельное сообщение)
antibot.bedrock_skip_slots true Bedrock (Geyser): пропускать этап SLOTS — серверная смена слота на бедроке ненадёжна и кикала бы честных игроков. Остальные этапы остаются
antibot.datacenter_block — Защита ДО входа (отсекает бот-волны ещё при подключении) Блокировка IP хостингов / дата-центров / VPN Бот-фермы почти всегда сидят на VPS и прокси. Список подсетей скачивается по url раз в refresh_hours (кэш — data/datacenter-ipv4.txt). По умолчанию ВЫКЛ: честные игроки с VPN тоже не зайдут (им придётся отключить VPN).
antibot.datacenter_block.enabled false вкл/выкл
antibot.datacenter_block.mode new_players new_players — только незарегистрированным; all — всем
antibot.datacenter_block.url "https://raw.githubusercontent.com/X4BNet/lists_vpn/main/output/datacenter/ipv4.txt" адрес списка подсетей хостингов/VPN
antibot.datacenter_block.refresh_hours 24 как часто обновлять список
antibot.ping_check — Проверка пинга перед входом Настоящий клиент сначала видит сервер в списке серверов (пинг), бот обычно подключается сразу. Зарегистрированные и Bedrock-игроки не проверяются. За прокси работает на прокси (там свой ping_check), здесь отключается сама.
antibot.ping_check.mode attack off — выкл; attack — только во время атаки; always — всегда
antibot.ping_check.window_seconds 600 сколько секунд пинг «действует»
antibot.connection_limit — Лимит подключений (защита от наплыва ботов)
antibot.connection_limit.enabled true включить лимит
antibot.connection_limit.per_second 10 всего подключений к серверу в секунду (0 = без лимита)
antibot.connection_limit.per_minute 150 всего подключений в минуту (0 = без лимита)
antibot.connection_limit.per_ip_per_second 2 с одного IP в секунду (0 = без лимита)
antibot.connection_limit.per_ip_per_minute 10 с одного IP в минуту (0 = без лимита)
antibot.connection_limit.registered_bypass true уже зарегистрированных игроков лимит не трогает
antibot.bans — Баны за провал проверки на бота Бан только за ДОКАЗАННЫЙ провал (неверная физика, флуд, робот-ответы, обманка, ошибка в пазле/на блоке). Таймаут, лаг и AFK не банят никогда. mode: auto — первые free_fails провалов (по умолчанию 2) только кикают; дальше каждый провал с того же IP даёт следующую ступень: tiers_minutes[0] (1 мин), затем [1] (5 мин), [2] (15 мин); после последней — навсегда, если permanent: true, иначе снова последняя ступень. mode: off — не банить. Баны сохраняются в data/ip-bans.txt (переживают рестарт). Снять все баны: /authadmin unban
antibot.bans.mode auto auto / off
antibot.bans.tiers_minutes [1, 5, 15] длительность ступеней в минутах (можно больше ступеней)
antibot.bans.permanent false 4-я ступень — бан НАВСЕГДА (по умолчанию выкл)
antibot.bans.free_fails 2 Сколько первых ДОКАЗАННЫХ провалов только кикают (человек мог ошибиться). Бан по IP — с (free_fails+1)-го: при 2 — третий провал = 1 мин, дальше 5, 15… Доказанный провал: неверная физика, флуд пакетами, робот-ответы, кнопка обманка, ошибка в пазле/на блоке. Таймаут (лаг) и AFK бан НЕ дают никогда.
antibot.bans.forget_after_hours 24 без новых провалов столько часов — ступень сбрасывается
antibot.guard — Защита до входа: лимиты заходов с IP и общие, режим атаки, фильтр ников, лимиты аккаунтов и онлайна с одного IP
antibot.guard.enabled true защита входа: лимиты подключений с IP и на весь сервер, режим атаки, фильтр ников
antibot.guard.window_seconds 60 окно подсчёта подключений
antibot.guard.max_joins_per_ip 5 максимум подключений с одного IP за окно
antibot.guard.max_joins_global 60 максимум подключений на весь сервер за окно
antibot.guard.attack_mode_threshold 30 при стольких входах включается attack-mode
antibot.guard.reconnect_seconds 0 >0 — в attack-mode просить переподключиться
antibot.guard.fail_ban_minutes 0 (только при bans.mode: off) бан IP после провала, мин
antibot.guard.max_online_per_ip 4 Одновременно онлайн с одного IP — только для НОВЫХ аккаунтов (0 = без лимита). IP прокси не ограничиваются
antibot.guard.repeat_fail_ban_minutes 5 (только при bans.mode: off) 3 провала проверки с IP за час → бан IP на N минут, только для незарегистрированных (0 = выкл). Выход посреди этапа после ошибок = провал
antibot.guard.name_regex "^[A-Za-z0-9_]{3,16}$" Разрешённые ники (регулярка). Боты вида «Player12345678» отсекаются. Bedrock-ники Floodgate (“.Steve”) пропускаются: префикс срезается автоматически
antibot.guard.attack_admit_per_second 2 Щит от непрерывного потока ботов Во время атаки (attack-mode) новичков — незарегистрированных или с незнакомого для аккаунта IP — пускаем дозированно: столько в секунду. Остальным сразу и дёшево отвечаем «зайди через минуту», до загрузки мира и арен проверки. Свои игроки с привычного IP и прошедшие проверку входят без очереди. 0 — во время атаки новичков не пускать вовсе.
antibot.guard.max_mspt 45 Сервер не успевает за тиком (средний MSPT за ~5 с больше этого, мс) — новичков не пускаем, пока не полегчает; свои входят как обычно. 0 — выкл. Работает на Paper и форках (на Spigot нет нужного счётчика).
antibot.guard.verified_ip_hours 72 Сколько часов IP, прошедший проверку на бота, считается «своим»

afk

AFK-защита и детект ботов (2 уровня + анти-макро)

Параметр По умолчанию Что делает
afk.enabled true вкл/выкл
afk.initial_grace_seconds 5 Уровень 1: новый игрок не двигался первые N сек → отсчёт в чат/ActionBar, по истечении initial_timeout — кик
afk.initial_timeout_seconds 15 сек до кика, если игрок вообще ничего не сделал после входа
afk.queue_idle_seconds 300 Уровень 2: игрок в очереди без активности N секунд → кик
afk.bossbar true Боссбар с отсчётом до кика (AFK-предупреждение)
afk.move_block_delta 0.2 Анти-макро: прыжок на месте НЕ сбрасывает таймер — мин. смещение (блоки)
afk.camera_window 20 Линейный аим: окно тиков и порог стандартного отклонения дельт yaw/pitch
afk.camera_stddev_max 0.01 разброс поворотов камеры ниже этого = «робот»
afk.camera_min_mean_delta 1.0 минимальный средний поворот, чтобы вообще оценивать
afk.camera_strikes 2 сколько «роботизированных» окон до кика
afk.bedrock_multiplier 3.0 Bedrock (Floodgate): смягчение порогов камеры (сенсорный ввод)
afk.ip_ban_minutes 15 Бан IP ботов/AFK на N минут (0 = выкл)
afk.ip_ban_on_kick false бан IP за AFK-кик неавторизованного (выкл: простой — не доказательство бота)
afk.ip_ban_strikes 2 Бан по IP: подтверждённый бот — сразу; AFK — со 2-го нарушения
afk.spectator_grace — AFK в очереди (любой режим): вместо мгновенного кика — spectator-режим с боссбаром; активность (камера/полёт) возвращает в очередь
afk.spectator_grace.enabled true вкл/выкл
afk.spectator_grace.timeout_seconds 60 сколько секунд можно летать наблюдателем
afk.kick_after_login false Кикать ли за AFK игроков, которые УЖЕ вошли в аккаунт (после authed_idle_seconds без активности). По умолчанию ВЫКЛ: после входа плагин игрока за AFK не трогает. Активность при включении: движение, транспорт, поворот камеры, чат, команды, клики, блоки. (Старый ключ track_authed больше не действует.)
afk.authed_idle_seconds 900 Секунд без активности до AFK-кика авторизованного (мин. 60). Право vtregister.afk.bypass — исключение
afk.siege — Осадной режим: много AFK-киков подряд → лимит входа неавторизованных
afk.siege.enabled true вкл/выкл
afk.siege.kicks_threshold 8 столько afk-киков за окно → осадa
afk.siege.window_seconds 60 окно подсчёта AFK-киков для режима осады (сек)
afk.siege.duration_seconds 180 длительность лимита
afk.siege.max_pending 8 макс. неавторизованных онлайн при осаде

info_bar

Инфо-боссбар №3 (реклама/донат/ротация сообщений)

Параметр По умолчанию Что делает
info_bar.enabled true вкл/выкл
info_bar.interval_seconds 8 ротация сообщений
info_bar.color "PURPLE" цвет инфо-боссбара
info_bar.messages ["&dДобро пожаловать! Пройди проверку и войди.", "&bРегистрация: &f/reg&b, вход: &f/login", "&6Пароль вводится в чат и не попадает в логи сервера", "&eНикому не сообщай свой пароль — даже администрации"] Сообщения инфо-боссбара по очереди

twofactor

Двухфакторная аутентификация (TOTP)

Параметр По умолчанию Что делает
twofactor.enabled true игроки включают сами: /2fa on
twofactor.timeout_seconds 60 сколько даётся на ввод кода при входе
twofactor.max_attempts 4 неверных кодов 2FA до кика
twofactor.trust_minutes 0 0 = спрашивать код каждый вход
twofactor.issuer "Minecraft" название в приложении-аутентификаторе
twofactor.force_admins false Обязательная 2FA для админов (по умолчанию ВЫКЛ). Если включить: админ без 2FA после входа может только включить её (/2fa on) — остальные команды и чат заблокированы до включения.
twofactor.admin_permission "registerplugin.admin" кто считается админом (и все OP)
twofactor.admin_setup_seconds 300 через сколько секунд кик, если 2FA так и не включил (0 = не кикать)

email

Почта (SMTP) — для /email и /recover

Параметр По умолчанию Что делает
email.enabled false вкл/выкл
email.provider "custom" Готовые настройки почты: gmail, yandex, mailru — host/port/ssl ниже подставятся сами, заполни только smtp.user (свой адрес) и smtp.password. custom — свой SMTP-сервер, всё вручную. ВАЖНО: password — это «пароль приложения», НЕ обычный пароль от почты: Gmail — включи двухэтапную проверку → myaccount.google.com/apppasswords Яндекс — id.yandex.ru → Безопасность → Пароли приложений → «Почта»; в настройках Яндекс Почты разреши доступ почтовым программам Mail.ru — Настройки → Безопасность → Пароли для внешних приложений Проверка: /authadmin testmail <твоя почта="">
email.code_minutes 10 сколько минут действует код из письма
email.smtp — Почтовый сервер для писем восстановления
email.smtp.host "smtp.example.com" адрес SMTP-сервера
email.smtp.port 465 порт (465 = SSL, 587 = STARTTLS)
email.smtp.user "noreply@example.com" логин
email.smtp.password "" пароль (храни файл в секрете)
email.smtp.from "noreply@example.com" адрес отправителя
email.smtp.ssl true порт 465 — да; для 587 поставь ssl: false, starttls: true
email.smtp.starttls false true для порта 587

premium

Премиум-автологин (только для online-mode серверов) Если сервер лицензионный (за прокси — только при защищённом forwarding: Velocity modern, BungeeGuard или proxy.firewall; иначе автоматически отключается), лицензионные игроки входят без пароля. С включённой 2FA код всё равно спрашивается. На пиратке НЕ включать — UUID не совпадёт.

Параметр По умолчанию Что делает
premium.enabled false вкл/выкл
premium.only_first_join false проверять премиум только при первом входе
premium.cache_minutes 60 сколько минут помнить ответ Mojang
premium.min_interval_ms 250 пауза между запросами к Mojang (мс)

spawns

Спавны Точки задаются командой /authadmin setspawn <prelogin|postlogin|firstjoin>

after_auth

Куда отправить игрока после авторизации target - для уже зарегистрированных, new_target - для новых после /reg. auto - точка setspawn, если задана; иначе: старые остаются на месте входа, новички идут на спавн мира (нулевые координаты) spawn - точка /authadmin setspawn postlogin (новички: firstjoin) zero - спавн основного мира (нулевые координаты) coords - точные координаты из world/x/y/z ниже command - выполнить команду от консоли: {player} = ник, {uuid} = UUID. Примеры: “spawn {player}”, “warp lobby {player}” работает с EssentialsSpawn, SetSpawn, warp-плагинами plugin - то же, но команда берётся из plugin_command last - оставить на месте входа | none - ничего не делать

Параметр По умолчанию Что делает
after_auth.target "auto" Куда отправить игрока после входа: auto, spawn, zero, last, none, coords, command, plugin (подробности — в комментарии выше)
after_auth.new_target "auto" то же для только что зарегистрировавшихся
after_auth.command "spawn {player}" команда для target: command
after_auth.command_new "" для новичков; пусто = та же command
after_auth.plugin_command "spawn {player}" команда для target: plugin
after_auth.world "world" coords:
after_auth.x 0.5 координата X (target: coords)
after_auth.y 100.0 координата Y
after_auth.z 0.5 координата Z
after_auth.yaw 0 поворот головы по горизонтали
after_auth.pitch 0 наклон головы

bedrock

Bedrock (Geyser/Floodgate)

Параметр По умолчанию Что делает
bedrock.enabled false вкл/выкл
bedrock.trust_floodgate_players false Bedrock-игроки входят без пароля
bedrock.log_api_errors true писать в лог ошибки Floodgate API

global_blacklist

Единый чёрный список между серверами Серверы-партнёры обмениваются списками банов: бот или читер, забаненный на одном сервере, не может зайти на другие. По умолчанию ВЫКЛ. Как соединить: 1. Оба сервера: enabled: true, свой server_name. 2. Чтобы ОТДАВАТЬ свой список: publish.enabled: true, открыть порт publish.port. Токен (пароль доступа) сгенерируется в data/blacklist-token.txt — передай его партнёру (или впиши свой в publish.token). 3. Чтобы ЗАБИРАТЬ список партнёра: добавь его в peers (url + его токен). Передаются только IP/ники с банами и срок бана — никаких паролей и данных игроков.

Параметр По умолчанию Что делает
global_blacklist.enabled false главный выключатель
global_blacklist.server_name "myserver" имя этого сервера — видно игроку в причине блокировки
global_blacklist.share_from_tier 3 отдавать баны антибота от этой ступени (3 = 15 мин и выше)
global_blacklist.share_server_bans true отдавать и баны сервера (/ban, /ban-ip) — например за читы
global_blacklist.block_names true блокировать и по нику (а не только по IP)
global_blacklist.ignore_private_ips true никогда не блокировать локальные адреса (127.x, 10.x, 192.168.x)
global_blacklist.max_entries_per_peer 50000 защита от «раздутого» списка партнёра
global_blacklist.pull_interval_seconds 60 как часто забирать списки партнёров
global_blacklist.publish — Отдавать свои баны серверам-партнёрам (открывает HTTP-порт, защищённый токеном)
global_blacklist.publish.enabled false отдавать свой список партнёрам
global_blacklist.publish.bind "0.0.0.0" на каком адресе слушать
global_blacklist.publish.port 8765 порт (открой его в файрволе хостинга)
global_blacklist.publish.token "" пароль доступа; пусто = сгенерировать в data/blacklist-token.txt
global_blacklist.peers [] Партнёры, чьи списки забираем: peers: url: “http://1.2.3.4:8765/vtregister/blacklist” token: “токен партнёра”

proxy

Прокси (BungeeCord / Velocity)

Параметр По умолчанию Что делает
proxy.warn_misconfigured true Раз в минуту писать в консоль, если сервер за прокси, но прокси/переадресация не настроены (или похоже на то). false — не напоминать.
proxy.type "auto" auto | bungeecord | velocity | none (none — прокси нет, перенос выключен)
proxy.known_proxy_ips ["127.0.0.1", "::1", "0:0:0:0:0:0:0:1"] IP прокси/защиты (можно CIDR, напр. 10.0.0.0/8): с них не работают лимиты, баны и автологин по IP
proxy.firewall — Пускать на сервер ТОЛЬКО с адресов прокси (защита от входа мимо прокси)
proxy.firewall.enabled false Пускать только подключения с IP прокси (защита от прямого входа). ОБЯЗАТЕЛЬНО при spigot.yml bungeecord: true без BungeeGuard — иначе UUID/IP подделываются; allowed_ips — IP прокси как его видит сервер, можно CIDR
proxy.firewall.allowed_ips ["127.0.0.1"] IP прокси так, как их видит этот сервер

proxy_server

Отправка игрока в лобби за прокси Работает для BungeeCord/Waterfall и Velocity (в velocity.toml включи bungee-plugin-message-channel = true). Как определяется куда отправлять: 1. если задан lobby_address (host:port) и auto_detect_name: true — плагин спрашивает у прокси список серверов и находит имя, у которого тот же IP:порт (BungeeCord: GetServers + ServerIP); 2. иначе используется server_name — имя сервера как в конфиге прокси. Безопасность: пока идёт перенос, игрок неуязвим и стоит на безопасной точке (prelogin-спавн / спавн мира / lobby-локация). Если прокси не ответил за transfer_timeout_seconds — игрок остаётся на этом сервере в lobby-локации (не падает и не умирает).

Параметр По умолчанию Что делает
proxy_server.enabled false вкл/выкл
proxy_server.server_name "lobby" Имя сервера в конфиге прокси (для BungeeCord: servers., для Velocity: [servers].)
proxy_server.lobby_address "" IP:порт лобби, например “10.0.0.5:25566” или “play.example.com:25565”. Нужен только для автоопределения имени; можно оставить пустым.
proxy_server.auto_detect_name true Спрашивать у прокси имя сервера, соответствующее lobby_address
proxy_server.transfer_timeout_seconds 8 Через сколько секунд считать перенос неудачным и оставить игрока здесь
proxy_server.retry_seconds 3 Через сколько секунд повторить Connect, если игрок ещё здесь
proxy_server.safe_transfer true Пока идёт перенос: неуязвимость + запрет падения (игрок не умрёт)
proxy_server.fallback_to_lobby_location true Если перенос не удался — телепортировать в lobby-локацию ниже (а не оставлять на месте)
proxy_server.wait_for_server — Если целевой сервер выключен: ждать его включения в лобби-очереди. TCP-проверка host:port раз в check_interval_seconds; по истечении timeout_minutes — кик с сообщением. Боссбар показывает обратный отсчёт.
proxy_server.wait_for_server.enabled false вкл/выкл
proxy_server.wait_for_server.host "" IP/хост целевого сервера для проверки (пусто = выкл)
proxy_server.wait_for_server.port 25565 порт целевого сервера
proxy_server.wait_for_server.timeout_minutes 15 сколько минут ждать включения
proxy_server.wait_for_server.check_interval_seconds 10 как часто проверять (сек)
proxy_server.wait_for_server.bossbar true показывать ожидание в боссбаре

lobby

Телепорт внутри сервера после авторизации

Параметр По умолчанию Что делает
lobby.enabled false вкл/выкл
lobby.world "world" мир точки лобби
lobby.x 0 X
lobby.y 100 Y
lobby.z 0 Z
lobby.yaw 0 поворот головы
lobby.pitch 0 наклон головы

selfdefense

Watchdog состояния Следит за подменой команд/листенеров и штатным отключением. По умолчанию только предупреждение и восстановление — остановка сервера может уронить доступность, включай осознанно.

Параметр По умолчанию Что делает
selfdefense.enabled false вкл/выкл
selfdefense.action "stop" stop | restart
selfdefense.integrity_check true самопроверка файлов плагина
selfdefense.check_interval_seconds 10 как часто (сек)
selfdefense.max_tamper_strikes 3 сколько срабатываний до отключения
allowed_commands_unauthorized ["login", "l", "register", "reg"] Команды, разрешённые ДО авторизации

console_reminder

Консольное напоминание об обновлениях Пишется ТОЛЬКО в консоль (игроки не видят). Можно выключить.

Параметр По умолчанию Что делает
console_reminder.enabled true вкл/выкл
console_reminder.delay_seconds 10 через сколько секунд после старта
console_reminder.times 2 сколько раз повторить
console_reminder.message "VTRegister — новые версии выходят на GitHub: github.com/Vitaliy222121/VTRegister/releases" текст в консоль
console_reminder.messages ["Нравится VTRegister? Поставь звезду на GitHub — это помогает проекту."] Доп. строки после основного сообщения (тоже только в консоль)

messages

Сообщения Все тексты — в lang/ru.yml и lang/en.yml. Здесь можно точечно переопределить любой ключ: messages.<ключ> имеет приоритет над lang-файлом.

Параметр По умолчанию Что делает
messages.use_hex true HEX-цвета (&#RRGGBB) в сообщениях
messages.prefix "&#FF66CC[Auth] &#FFFFFF" префикс сообщений
messages.custom_instructions — Свои инструкции при входе (любое количество строк; пусто = не отправлять)
messages.custom_instructions_register — доп. инструкции для тех, кому нужно зарегистрироваться
messages.custom_instructions_login — доп. инструкции для тех, кому нужно войти

advanced.yml — база данных, лимиты, автоперезапуск

storage

Параметр По умолчанию Что делает
storage.type yaml Тип хранилища: yaml — файл data/accounts.yml (по умолчанию, человекочитаемый) sqlite — файл data/accounts.db (компактнее и быстрее на больших базах) mysql — база MySQL (общая для сети серверов) mariadb — база MariaDB (используется драйвер MySQL) postgresql — база PostgreSQL (драйвер скачается автоматически)
storage.host "localhost" Параметры для SQL (для yaml/sqlite не нужны): адрес сервера базы
storage.port 3306 для PostgreSQL по умолчанию 5432
storage.database "minecraft" имя базы
storage.user "root" пользователь БД
storage.password "" пароль БД
storage.ssl false шифровать соединение с БД
storage.table_prefix "rp_" Префикс таблицы (несколько серверов могут жить в одной базе)
storage.pool_size 4 Размер пула соединений (1–16). Больше 8 обычно не нужно
storage.sqlite_file "accounts.db" Имя файла SQLite
storage.sqlite_busy_timeout_ms 5000 SQLite: сколько миллисекунд ждать, если база занята записью, вместо ошибки «database is locked» (журнал WAL и synchronous=NORMAL включены всегда)
storage.match_by_name true Искать аккаунт по нику, если UUID не совпал (смена online-mode, миграция с другого ядра, смена ника у лицензионного игрока)

maintenance

Обслуживание: как часто сбрасывать изменения аккаунтов на диск

Параметр По умолчанию Что делает
maintenance.flush_interval_ticks 40 Как часто сбрасывать изменённые аккаунты на диск/в базу (в тиках, 20 = 1 сек)
maintenance.warn_sync_reads false Писать в лог, если аккаунт читается из базы синхронно (может лагать)

purge

Автоочистка неактивных аккаунтов (по умолчанию ВЫКЛ — удаление необратимо). Удаляются аккаунты, которые не входили inactive_days дней: база не копит «мёртвые» регистрации. Игроки онлайн не трогаются. Применяется после перезапуска.

Параметр По умолчанию Что делает
purge.enabled false вкл/выкл
purge.inactive_days 180 сколько дней без входа (минимум 30)
purge.keep_with_email true не удалять аккаунты с привязанной почтой
purge.keep_with_2fa true не удалять аккаунты с включённой 2FA
purge.check_hours 24 как часто проверять (часы)

limits

Лимиты нагрузки: хеширование паролей и письма

Параметр По умолчанию Что делает
limits.max_parallel_hash_checks 12 Максимум одновременных проверок пароля (защита CPU от флуда)
limits.max_parallel_per_ip 2 Максимум проверок пароля с одного IP одновременно
limits.max_emails_per_minute 5 Максимум писем в минуту (защита SMTP от флуда)

database_backup

Резервные копии базы аккаунтов

Параметр По умолчанию Что делает
database_backup.enabled false Автоматическая резервная копия при запуске (только для yaml/sqlite)
database_backup.keep_last 5 Сколько последних копий хранить в data/backups/

antibot

Антибот: экспертные ручки (для продвинутых) Обычному серверу трогать не нужно — значения по умолчанию подобраны.

Параметр По умолчанию Что делает
antibot.tick_ticks 10 Период общего тикера антибота в тиках (20 = 1 сек). Меньше = точнее таймауты и отсчёты, больше = дешевле на слабых серверах
antibot.jolt_interval_ticks 8 Пауза между рывками камеры на этапе SLOTS (тики). Короче = агрессивнее
antibot.packet_window_ticks 3 Окно подсчёта move-пакетов (тики тикера): пакеты суммируются за окно, превышение packet_max_per_tick = бот. 1 = строго, 5 = толерантно к лагам

auto_restart

Автоматический перезапуск сервера Долгая работа без перезапуска копит «мусор» у ядра и плагинов. По умолчанию: каждые 48 часов в 00:00 по Москве. Игроков заранее предупреждают в чате.

Параметр По умолчанию Что делает
auto_restart.enabled true вкл/выкл
auto_restart.mode time time — в заданное время суток (time + timezone), раз в every_days дней uptime — ровно через uptime_hours часов работы сервера
auto_restart.time "00:00" во сколько перезапускать (ЧЧ:ММ) — для mode: time
auto_restart.timezone "Europe/Moscow" Часовой пояс: Europe/Moscow (МСК), Europe/Kyiv, Europe/Minsk, Europe/Berlin, Asia/Almaty, Asia/Yekaterinburg, Asia/Novosibirsk, Asia/Vladivostok, UTC или server — часовой пояс машины, где запущен сервер
auto_restart.every_days 2 раз в N дней (2 = каждые 48 часов) — для mode: time
auto_restart.uptime_hours 48 через сколько часов работы — для mode: uptime
auto_restart.warn_seconds [900, 600, 300, 120, 60, 30, 10, 5, 4, 3, 2, 1] За сколько секунд до перезапуска предупреждать в чате
auto_restart.warn_message "&c⚠ Перезапуск сервера через &f{time}&c." текст предупреждения в чате ({time} — сколько осталось)
auto_restart.kick_message "&eСервер перезапускается. Зайди через минуту!" сообщение игрокам при перезапуске
auto_restart.command "restart" restart — команда рестарта (spigot.yml → restart-script; без скрипта сервер просто выключится, и хостинг обычно поднимает его сам); stop — выключить

bstats

Анонимная статистика bStats Раз в 30 минут на bstats.org: версии сервера, Java и плагина, ОС, число игроков онлайн, страна сервера, режим антибота, хранилище, язык и способ ввода пароля. Ников, IP и паролей там нет. Статистика: https://bstats.org/plugin/bukkit/VTRegister/34444

Параметр По умолчанию Что делает
bstats.enabled true вкл/выкл

proxy-config.yml — настройки на прокси (Velocity/BungeeCord)

Параметр По умолчанию Что делает
auth_servers [auth] Серверы (имена из velocity.toml / config.yml прокси), где стоит VTRegister и где игрок вводит пароль. Первый подключившийся игрок, пока не вошёл, всегда попадает на первый доступный сервер из списка. Пустой список [] = вход на любом сервере, но смена сервера до входа запрещена. Имени нет среди серверов прокси? Игрока НЕ кикаем (идёт куда шлёт прокси), а в консоль раз в минуту пишется предупреждение, пока не исправишь.
after_login_server [] Куда отправить после входа. Список — берётся первый, куда удалось подключиться. [] = остаться на сервере входа. ВАЖНО: если используешь это — выключи proxy_server.enabled на Paper-сервере, иначе игрока отправят дважды.
allowed_proxy_commands [] Прокси-команды, разрешённые ДО входа (без ‘/’). Остальные прокси-команды блокируются. Команды сервера (/login, /register) это не затрагивает.
secret '' Общий секрет с Paper-серверами (security.proxy_bridge.secret в их config.yml). Задай одинаковую длинную случайную строку на прокси и на всех серверах — тогда вход на одном сервере с VTRegister засчитывается на остальных. Пусто = каждый сервер с VTRegister спрашивает пароль сам.
warn_misconfigured true Лимиты по IP. Если перед прокси стоит HAProxy/TCPShield БЕЗ PROXY protocol (haproxy-protocol / proxy_protocol), у всех игроков один IP — поставь per_ip_per_minute: 0 и max_online_per_ip: 0. Раз в минуту писать в консоль, если auth_servers/after_login_server указывают на несуществующие серверы. false — не напоминать.

connection_limit

Параметр По умолчанию Что делает
connection_limit.per_ip_per_minute 8 Подключений с одного IP в минуту (0 = без лимита). Проверенные IP не считаются.
connection_limit.max_online_per_ip 4 Одновременно в сети с одного IP (0 = без лимита)
connection_limit.global_per_second 25 Больше подключений в секунду на весь прокси = атака ботов (0 = выкл)
connection_limit.attack_seconds 120 Сколько секунд длится режим атаки: пускаем только проверенные IP
connection_limit.verified_ip_hours 72 Сколько часов IP считается проверенным после успешного входа
connection_limit.attack_admit_per_second 2 Во время атаки незнакомых IP пускаем столько в секунду (проверенные — без очереди). 0 — во время атаки пускать только проверенные IP

ping_check

Проверка пинга: настоящий клиент сначала видит сервер в списке серверов (пинг), бот обычно подключается сразу. off — выкл; attack — только во время атаки (рекомендуется); always — всегда (новые игроки без пинга получат просьбу обновить список серверов и зайти снова).

Параметр По умолчанию Что делает
ping_check.mode attack off / attack / always
ping_check.window_seconds 600 сколько секунд пинг «действует»

messages

Тексты для игроков: & — цвета; перевод строки — два символа: обратный слеш и n

Параметр По умолчанию Что делает
messages.ping_first '&eДобавь сервер в список серверов, обнови список и зайди снова.' сообщение игроку, который зашёл без пинга в списке серверов
messages.switch_denied '&cСначала войди в аккаунт: &f/login <пароль>' сообщение при попытке сменить сервер до входа
messages.command_denied '&cЭта команда доступна после входа: &f/login <пароль>' сообщение при запрещённой команде прокси до входа
messages.no_auth_server '&cСервер авторизации недоступен. Попробуй зайти через минуту.' сообщение, когда нет доступного сервера входа
messages.attack '&cСервер отражает атаку ботов.\n&fЗайди через пару минут — вернувшихся игроков пускаем сразу.' сообщение во время режима атаки
messages.too_fast '&cСлишком частые подключения с твоего IP. Подожди минуту.' сообщение при слишком частых переподключениях
messages.too_many_online '&cС твоего IP уже играет слишком много аккаунтов.' сообщение, когда с одного IP слишком много игроков