Заморозка

Чтобы игроки не могли совершать определённые действия, не пройдя регистрацию\авторизацию, BaronessAuth предлагает широко настраиваемую и производительную систему заморозки.

Как работает блокировка движения?

Блокировка передвижения включает в себя целый комплекс механик, которые позволяют полностью надёжно заморозить игрока, не нагружая сервер (а это постоянная проблема плагинов аутентификации). В неё входят:

  1. Фантомные блоки. Игрок видит (в случае с барьером, не видит) перед и над собой блоки, которые не дают ему пройти. Они полностью клиентские, то есть на сервере не находятся и другие игроки могут проходить сквозь них. Блоки могут принимать вид окружения, если оно плотное (блок камня - да, блок травы - нет). То есть игрок не заметит никакой разницы, но при этом будет сдерживаться. Фантомные блоки требуют обновления по таймеру.

  2. Ограничение скорости. Сервер позволяет установить игроку скорость 0, что запретит ему двигаться, но не прыгать. Поэтому фантомные блоки блокируют прыжок. "Родная" скорость вернётся, едва игрок авторизуется или выйдет из игры.

  3. Фиксация по Y. Если под игроком стоит фантомный блок, но на самом деле пустота, сервер расценивает это за полёт и кикает его. Поэтому, если высота игрока изменилась, плагин будет по таймеру телепортировать его на прежную точку. У фантомных блоков и фиксации общий таймер.

Таймер автоматически отключается во время простоя, поэтому нагрузки на сервер вы никак не ощутите.

Посмотреть на работу блокировки можно тут.

security/freeze.yml
move:
preventMove: Включает блокировку передвижения игрока.
legacyMode: Включает "старый" режим блокировки движения, который использовался
в ранних версиях. Он блокирует движение без фантомных блоков, скорости и
фиксации. Может потреблять много ресурсов, если на сервере много активно
двигающихся неавторизованных игроков.
block: Текстовый ID блока, который будет использован в качестве фантомного.
period: Частота таймера обновления фиксации и фантомных блоков в тиках.
Увеличивайте значения, только если у вас падает TPS, так как стандартный 1 не
даёт шансов вырваться.
defaultSpeeds:
walk: Стандартная скорость ходьбы.
fly: Стандартная скорость полёта.
alwaysSetDefaultSpeeds: Определяет, нужно ли ВСЕГДА устанавливать стандартные
скорости.
smartOptimizingEnabled: Включает режим умной оптимизации. Если он включён, когда
все игроки авторизованы, хандлер заморозки полностью выключается, значительно
снижая нагрузку на сервер. Крайне полезно, если у вас включена система сессий.
preventMove: Блокирует все перемещения игрока.
preventInteract: Определяет, включён ли блок interactHandlers.
interactHandlers:
blockLeftClickBlock: Блокирует ЛКМ по блокам.
blockRightClickBlock: Блокирует ПКМ по блокам.
blockLeftClickAir: Блокирует ЛКМ по воздуху.
blockRightClickAir: Блокирует ПКМ по воздуху.
blockPhysicalInteract: Блокирует физическое взаимодействие (например, толкание).
blockEntityInteract: Блокирует взаимодействие с сущностями (например, ПКМ).
blockDamage: Блокирует получение урона.
blockTabComplete: Блокирует TAB, оставляя только /login или /register.
Из-за изменений работы TabComplete в Bukkit 1.13+, блокировка невозможна.
blockCommands: Блокирует все команды, кроме /login или /register.
blockDrop: Блокирует дроп предметов.
blockPickup: Блокирует поднятие предметов.
blockProjectile: Блокирует отправку Projectile - стрелы, пёрлы, снежки и т.п.
blockChat: Блокирует отправку сообщений в чат.
blockTeleport: Блокирует телепортацию. Срабатывает только если чанк изменился.
blockHeal: Блокирует восстановление здоровья.