Плагин Редстоун Защита Другое LagMachinesServer - защита от лаг машин [1.0.0]

LagMachinesServer - защита от лаг машин
Краткое описание:
Плагин обрабатывает чанки и проверяет TPS сервера если он падает плагин устраняет причину
6
99
Для версий
  1. 1.21.✘
  2. 26.✘
Java
  1. Java 21
  2. Java 22
  3. Java 23
  4. Java 25
Исходный код
https://github.com/AbuzzWorldMine/LagMachinesServer

Основная суть

серверный защитный плагин для Minecraft, который отслеживает производительность сервера, анализирует причины падения TPS и автоматически обнаруживает конструкции и активности, способные создать сильную нагрузку на сервер.

Главная задача плагина — не допустить серьёзного падения производительности из-за лаг-машин, а при обнаружении подозрительной активности временно ограничить её и, при необходимости, удалить избыточные сущности.

Плагин ориентирован именно на автоматическую защиту: администратору не требуется постоянно следить за TPS вручную.

Что отслеживает плагин?

собирает статистику по отдельным чанкам и анализирует различные виды нагрузки:
- активность редстоуна;​
- работу поршней;​
- передачу предметов через воронки;​
- работу раздатчиков и выбрасывателей;​
- вагонетки;​
- лодки;​
- большое количество мобов;​
- большое количество предметов на земле;​
- частые взаимодействия с рычагами и кнопками;​
- активность некоторых механизмов и block entities;​
- события, связанные со sculk/наблюдателями и другими механизмами.​
Также плагин способен анализировать непосредственно структуру вокруг подозрительного места — например, наличие большого количества редстоуна, поршней, воронок, наблюдателей, повторителей и других компонентов.

Мониторинг TPS и MSPT

Плагин постоянно отслеживает производительность сервера.
Доступны показатели:

- TPS за 1 минуту
- TPS за 5 минут
- TPS за 15 минут
- MSPT


По умолчанию используются следующие пороги
Показатель​
Значение​
Предупреждение о падении TPS​
< 19​
Начало защитного анализа​
< 18​
Критическое состояние​
< 18​
Экстренный режим​
< 12​
Таким образом, при нормальной работе сервера защита практически не вмешивается.

Как обнаруживается лаг-машина

Плагин не ориентируется только на один показатель.
Для каждого подозрительного чанка формируется activity score — оценка активности.
Разным типам активности назначается свой вес:
- предмет на земле — 1.0;​
- моб — 2.5;​
- передача через воронку — 1.5;​
- обновление редстоуна — 0.4;​
- block entity — 1.0;​
- общее количество block entities — 0.2.​
Кроме общей оценки существуют отдельные пороги для конкретных механизмов.
Например, подозрительной может стать ситуация с большим количеством:
- обновлений редстоуна;​
- срабатываний поршней;​
- операций воронок;​
- срабатываний раздатчиков;​
- событий вагонеток;​
- событий лодок;​
- нажатий на рычаги.​
После обнаружения плагин может дополнительно просканировать область вокруг источника и определить, действительно ли там находится крупная механическая конструкция.

Система карантина

Когда источник нагрузки признаётся опасным, плагин помещает соответствующий чанк во временный карантин.
Обычный карантин по умолчанию длится 10 секунд, а жёсткий — 20 секунд.
Во время карантина определённые действия могут временно блокироваться:
- работа редстоуна;​
- поршни;​
- воронки;​
- раздатчики;​
- вагонетки;​
- лодки;​
- некоторые взаимодействия;​
- появление новых мобов;​
- появление новых предметов.​
Это позволяет временно остановить лаг-машину, не выключая весь сервер.

Автоматическая очистка

Если в защищённом чанке слишком много сущностей, плагин может автоматически удалить избыточные объекты.
В обычном режиме используются лимиты примерно:
- 48 предметов;​
- 35 мобов;​
- 8 вагонеток;​
- 8 лодок.​
В жёстком режиме лимиты уменьшаются:
- 18 предметов;​
- 20 мобов;​
- 3 вагонетки;​
- 3 лодки.​
При удалении мобов предусмотрена защита важных сущностей:
- именные мобы не удаляются;​
- прирученные мобы не удаляются.​
Игроки также не являются объектом автоматической очистки.

Экстренный режим

Если TPS опускается ниже 12, запускается экстренная защита.
В этом режиме плагин проходит по уже защищённым чанкам и выполняет более жёсткую очистку избыточных сущностей.
Это сделано для ситуации, когда сервер уже находится в тяжёлом состоянии и требуется быстро снизить нагрузку.

Уведомления администрации

Администраторы и персонал с permission: awtps.notify
могут получать уведомления о проблемах.
Плагин может сообщать:
о падении TPS;​
о критическом падении TPS;​
о найденном источнике нагрузки;​
о причине нагрузки;​
о координатах проблемного места;​
о количестве применённых защитных мер.​
При этом в текущей конфигурации имя игрока в уведомлениях не выводится.
Плагин также может дублировать информацию в консоль.

Визуальное обнаружение

При обнаружении подозрительного источника около него могут отображаться частицы.
По умолчанию используется: FLAME
Частицы появляются вокруг обнаруженного места, что позволяет администрации визуально найти источник проблемы в игре.
При этом частицы показываются только при наличии игрока неподалёку от источника.

Отслеживание механизмов

В плагине присутствует внутренняя система отслеживания размещённых механизмов.
Она используется для анализа того, какие механизмы могут быть связаны с обнаруженной активностью.
В конфигурации дополнительно учитываются такие потенциально опасные блоки, как:
TNT;​
спавнеры;​
trial spawner;​
sculk sensor;​
рельсы;​
наблюдатели;​
редстоун-лампы;​
crafter;​
trapped chest;​
copper bulb;​
daylight detector и другие.​
Эта информация используется преимущественно для внутреннего анализа источника нагрузки.

Команды

/Tps - Показывает состояние производительности сервера.
Отображает:​
TPS за 1 минуту;​
TPS за 5 минут;​
TPS за 15 минут;​
MSPT;​
состояние защиты;​
количество активных карантинов;​
количество активных ограничений;​
количество отслеживаемых чанков.​

/Tps reports Показывает последний отчёт о найденных проблемах.
В отчёте указывается:
мир;​
координаты;​
предполагаемая причина нагрузки.​
Например:
Механизмы (редстоун/поршни/раздатчики)

или

Перегрузка транспортировки предметов (воронки)

Административные команды

Все административные функции требуют:
awtps.admin:
/awtps help Показывает список доступных административных команд.
/awtps reload Перезагружает конфигурацию плагина без необходимости перезапуска сервера.
/awtps report Показывает последний отчёт о найденных источниках лагов.
/awtps status Показывает текущее состояние системы защиты:
TPS;​
включена ли защита;​
количество карантинов;​
количество активных ограничений;​
количество отслеживаемых чанков.​
/awtps scan Принудительно запускает проверку источников нагрузки.
Это удобно, когда администратор хочет проверить ситуацию вручную, не дожидаясь автоматического запуска анализа.
/awtps protect on Включает автоматическую защиту.
/awtps protect off Выключает автоматическую защиту.
При отключении защиты также снимаются временные ограничения и очищается список защищаемых источников.
/awtps unthrottle Принудительно снимает все временные ограничения и карантины.

Permissions

awtps.tps​

Доступ к команде /tps.
По умолчанию доступна всем игрокам.

awtps.notify​

Получение уведомлений о проблемах с производительностью.
По умолчанию — только OP.

awtps.admin​

Доступ к административному управлению плагином.
По умолчанию — только OP.

Принцип работы

Упрощённо система работает следующим образом:

Мониторинг TPS → сбор активности → поиск подозрительного чанка → расчёт нагрузки → анализ структуры → обнаружение лаг-машины → карантин → ограничение нагрузки → очистка лишних сущностей → уведомление администрации.

При нормальном TPS защита практически не вмешивается.
Если производительность начинает ухудшаться, система начинает искать конкретный источник нагрузки, а не просто реагировать на само падение TPS.

Главное преимущество

Главная особенность — локальная защита от источника нагрузки.
То есть плагин старается определить, где именно находится проблема и какой тип активности её вызывает.

Например:
Сервер начинает терять TPS → плагин обнаруживает чрезмерную активность редстоуна в конкретном чанке → чанк переводится в карантин → редстоун/поршни временно ограничиваются → избыточные сущности очищаются → администрация получает уведомление с координатами.
Это значительно удобнее, чем просто постоянно очищать весь мир или отключать механизмы на всём сервере.

Автор

AbuzzWorld
ВерхНиз