Коротко: держите сервер на Paper и обновляйте его не реже раза в неделю — так советует PaperMC. Оставьте включёнными лимиты из config/paper-global.yml: packet-limiter, spam-limiter и item-validation. Лаг-машины сдерживают max-tnt-per-tick в spigot.yml, max-chained-neighbor-updates в server.properties и лимиты сущностей в настройках мира. Поставьте Velocity с лимитами на подключения и команды, закройте игровые серверы файрволом, а виновника ищите профайлером spark и логами CoreProtect.
Что делают крашеры
| Способ | Что происходит | Чем закрыто |
|---|---|---|
| Поток пакетов | Клиент шлёт пакеты быстрее, чем их отправит честная игра | packet-limiter, spam-limiter в Paper |
| Огромные книги и предметы | Предмет с гигантскими данными раздувает чанк и данные игрока; чанк с переполненными стаками кикает всех, кто в него зашёл | item-validation, book-size, oversized-item-component-sanitizer, fixes.split-overstacked-loot |
| Лаг-машины | Редстоун-часы, TNT, скопления сущностей: тик не укладывается в 50 мс | max-chained-neighbor-updates, max-tnt-per-tick, max-entity-collisions, max-block-ticks |
| Генерация чанков | Быстрый полёт в неисследованные места заставляет сервер генерировать мир | chunk-loading-basic, предгенерация мира |
| Спам чатом, командами, таб-дополнением | Тяжёлые команды и дополнения в цикле | chat-spam-threshold-seconds, command-spam-threshold-seconds, лимиты Velocity |
| Волна подключений | Боты забивают вход | Антибот и лимиты подключений — см. боты и DDoS |
Краш — не всегда падение процесса. Чаще сервер зависает: тик не заканчивается, и через 60 секунд watchdog его останавливает. Как читать такой лог — в статье логи и краши сервера. Дюпы, которые тоже живут на ошибках сервера, разобраны отдельно — в статье дюпы и эксплойты.
Пакеты: лимитер Paper
packet-limiter:
all-packets:
action: KICK
interval: 7.0
max-packet-rate: 500.0
overrides:
minecraft:place_recipe:
action: KICK
interval: 7.0
max-packet-rate: 500.0
spam-limiter:
incoming-packet-threshold: 300
recipe-spam-increment: 1
recipe-spam-limit: 20
tab-spam-increment: 1
tab-spam-limit: 500- `packet-limiter.all-packets` — не больше 500 пакетов за 7 секунд от одного игрока.
KICKвыкидывает нарушителя,DROPпросто отбрасывает лишние пакеты. - `overrides` — свой лимит для отдельного пакета по его идентификатору; список идентификаторов Paper отсылает искать на Minecraft Wiki. По умолчанию там есть
minecraft:place_recipe. - `spam-limiter` —
incoming-packet-thresholdзадаёт порог, после которого сервер считает входящие пакеты спамом и игнорирует их; за флуд таб-дополнением и рецептами игрока кикает. - `rate-limit` в server.properties — ванильный лимит пакетов до кика;
0(по умолчанию) — выключен. На Paper гибчеpacket-limiter.
Книги и тяжёлые предметы
| Настройка | По умолчанию | Что ограничивает |
|---|---|---|
item-validation.book.page | 16384 | Длина страницы книги в символах |
item-validation.book.title и .author | 8192 | Длина названия и автора |
item-validation.book-size.page-max | 2560 | Сколько байт одна страница добавляет к допустимому весу книги; total-multiplier: 0.98 уменьшает вклад каждой следующей |
item-validation.display-name, .lore-line | 8192 | Длина имени предмета и строки описания |
item-validation.resolve-selectors-in-books | false | По документации Paper, с true игроки в творческом режиме получают ещё один способ уронить сервер |
unsupported-settings.oversized-item-component-sanitizer.dont-sanitize | [] | Защита от слишком больших предметов; по документации, изменение снова открывает эксплойты |
fixes.split-overstacked-loot (настройки мира) | true | Делит переполненные стаки, чтобы чанк не стал непригодным: иначе игроков кикает из-за слишком больших пакетов |
Книги — оружие и без эксплойта: бот пишет их сотнями в пределах лимитов, и сундуки тяжёлых книг раздувают сохранения мира. Это отдельный вид злоупотребления — BookBot, и лимиты длины его не останавливают.
Лаг-машины: редстоун, TNT и сущности
| Настройка | Файл | По умолчанию | Что делает |
|---|---|---|---|
max-chained-neighbor-updates | server.properties | 1000000 | Сколько обновлений соседних блоков подряд выполняется, прежде чем остальные пропускаются; отрицательное значение снимает лимит |
world-settings.default.max-tnt-per-tick | spigot.yml | 100 | Сколько TNT обрабатывается за тик |
environment.max-block-ticks, max-fluid-ticks | paper-world-defaults.yml | 65536 | Предел обновлений блоков и жидкостей за тик — по документации, защита от зависания |
collisions.max-entity-collisions | paper-world-defaults.yml | 8 | После скольких столкновений сущности сервер перестаёт их обсчитывать |
chunks.entity-per-chunk-save-limit | paper-world-defaults.yml | без лимитов (-1) | Сколько сущностей нужного типа сохраняется и загружается в чанке; тип добавляется в список |
maps.item-frame-cursor-limit | paper-world-defaults.yml | 128 | Маркеры на карте в рамке; много маркеров, по документации, используют, чтобы лагали клиенты |
misc.redstone-implementation | paper-world-defaults.yml | VANILLA | ALTERNATE_CURRENT и EIGENCRAFT сильно снижают лаг от редстоун-пыли, но меняют её поведение |
Генерация чанков
Новые чанки сервер генерирует там, где игрок оказался впервые, и быстрый полёт в неисследованные места нагружает его сильнее всего. В разделе chunk-loading-basic файла paper-global.yml есть лимиты на одного игрока: player-max-chunk-load-rate: 100 и player-max-chunk-send-rate: 75 чанков в секунду, а player-max-chunk-generate-rate по умолчанию -1 — генерация не ограничена. Надёжнее ограничить сам мир: сгенерируйте его заранее и поставьте границу — см. предгенерация мира и граница мира.
Спам чатом и командами
- Сервер, версия 26.2 и новее.
chat-spam-threshold-secondsиcommand-spam-threshold-secondsвserver.properties(по умолчанию10) включают автоматический кик за слишком частые сообщения и команды;0выключает. - Velocity.
command-rate-limit— минимальный промежуток между командами, по умолчанию 50 мс (20 команд в секунду);kick-after-rate-limited-commands— сколько команд сверх лимита можно прислать до кика,0и меньше выключает кик. То же для таб-дополнения —tab-complete-rate-limitиkick-after-rate-limited-tab-completes. - Тяжёлые команды плагинов. Не выдавайте всем подряд команды, которые генерируют, ищут или перебирают много блоков. Права — группами в LuckPerms.
Velocity перед сервером
login-ratelimit = 3000
command-rate-limit = 50
kick-after-rate-limited-commands = 0
tab-complete-rate-limit = 10
kick-after-rate-limited-tab-completes = 0Это значения из конфига Velocity по умолчанию. login-ratelimit — минимальный промежуток в миллисекундах между подключениями с одного IP, 0 его выключает. Кик за спам командами и дополнениями по умолчанию выключен — включите его положительным числом. Главное же — игровые серверы за прокси не должны быть доступны напрямую: документация Velocity настоятельно рекомендует файрвол и прямо пишет, что modern forwarding его не заменяет. Пошагово — в статье настройка Velocity.
Если сервер всё-таки завис
- Раннее предупреждение. Через 10 секунд зависания Paper печатает дамп потоков и повторяет его каждые 5 секунд (
watchdogвpaper-global.yml). В стеке потокаServer threadвидно, на чём он застрял. - Остановка. Через 60 секунд без тика (
settings.timeout-timeвspigot.yml) watchdog останавливает сервер и приrestart-on-crash: trueзапускаетrestart-script(по умолчанию./start.sh). Если процесс убила система, этот механизм сервер не перезапустит. - Перезапуск. Надёжнее, когда сервер поднимает systemd или Docker — см. сервер на Linux.
Как найти виновника
- 1
Поймайте тяжёлые тики
/spark tickmonitor --threshold-tick 50сообщает о тиках дольше 50 мс, а/spark profiler start --only-ticks-over 100 --timeout 600записывает только их. В отчёте видно, что съедает тик: редстоун, сущности, генерация чанков или плагин. Подробно — в статье профайлер spark. - 2
Найдите место
/paper entity listпоказывает, сколько сущностей каждого типа тикает в мире, а/paper chunkinfo— сколько чанков загружено. Скопление одного типа сущностей или горячий чанк — подозрительное место. - 3
Найдите строителя
CoreProtect покажет, кто поставил редстоун или заспавнил сущности рядом:
a:+block— поставленные блоки,a:spawn— сущности, которые поставил или заспавнил игрок. Команды — в статье CoreProtect. - 4
Уберите и накажите
Откатите постройку с
#preview, чтобы не задеть соседей, и накажите по правилам: «лаг-машины и намеренная нагрузка на сервер запрещены». Как сформулировать — в статье правила сервера.
/co lookup r:30 t:2h a:+block i:redstone_wire,repeater,comparator,observer,piston
/co lookup r:30 t:2h a:spawn
/co rollback u:Steve t:2h r:30 #previewОбновления закрывают новые краши
Новые способы уронить сервер находят постоянно, а закрывают их в новых сборках ядра и плагинов. PaperMC советует обновлять Paper не реже раза в неделю, с бэкапом и не заменяя jar на работающем сервере; плагины удобно обновлять через папку plugins/update — они заменятся при перезапуске. Переход на новую версию игры — отдельная история: обновление сервера.
Где здесь античит
Лимиты Paper и Velocity — первая линия: они не дают одному игроку положить сервер. Античит не заменяет их и не чинит ошибки ядра. Но многие краш-эксплойты строятся на пакетах, которых честный клиент не отправит, — и это улика против конкретного аккаунта. DGuard — лучший античит для современного сервера Minecraft — проверяет такие пакеты: невозможные значения (BadPackets), порядок пакетов внутри тика и книги, которые пишет бот (BookBot). Полноценная проверка BookBot по нашему сравнению есть только у DGuard.
| Чит | DGuard | GrimAC | Vulcan | Polar | Intave | Matrix |
|---|---|---|---|---|---|---|
| BadPacketsневозможные пакеты | ||||||
| Порядок пакетов в тикечит меняет порядок действий | частично: не описан — только общая проверка протокола | частично: проверка протокола боя, порядок внутри тика не описан | ||||
| BookBotпишет книги ботом | частично: только невалидные книги, бот в пределах лимитов проходит |
Проверки DGuard идут в сетевых потоках — на основном потоке это 0,03 % одного ядра, — поэтому сам античит не становится ещё одной нагрузкой на тик. Он работает за Velocity и BungeeCord, а наказание опирается на набранные улики, а не на один странный пакет: игроки заходят с разных версий через ViaVersion, и правило должно знать, что для них допустимо.
Частые вопросы
Как защитить сервер Minecraft от крашеров?
Используйте Paper и обновляйте его не реже раза в неделю, оставьте включёнными packet-limiter, spam-limiter и item-validation, ограничьте лаг-машины (max-tnt-per-tick, max-chained-neighbor-updates), поставьте Velocity с лимитами на подключения и команды и закройте игровые серверы файрволом.
Что такое лаг-машина?
Постройка, которая нагружает сервер намеренно: редстоун-часы, взрывы TNT, скопления сущностей. Тик перестаёт укладываться в 50 мс, а при долгом зависании watchdog останавливает сервер. Найти её помогают spark и /paper entity list, а автора — CoreProtect.
Какой лимит пакетов стоит на Paper?
По умолчанию packet-limiter пропускает до 500 пакетов за 7 секунд от одного игрока и затем кикает его. Для отдельных пакетов можно задать свои лимиты в overrides, а вместо кика — отбрасывать лишнее (DROP).
Защищает ли античит от краша сервера?
Не заменяет лимиты ядра и обновления: ошибку в коде сервера закрывает только исправление. Но античит ловит пакеты, на которых строятся эксплойты: DGuard проверяет BadPackets, порядок пакетов и BookBot.
Источники
- Paper: paper-global.yml (packet-limiter, spam-limiter, item-validation, watchdog)
- Paper: world configuration (лимиты мира)
- Paper: spigot.yml (max-tnt-per-tick, timeout-time)
- Paper: команды (/paper entity, chunkinfo)
- Paper: обновление сервера
- Minecraft Wiki: server.properties
- Minecraft Wiki: идентификаторы пакетов Java Edition
- Velocity: конфигурация
- Velocity: velocity.toml по умолчанию
- Velocity: защита серверов
- spark: команды
- CoreProtect: команды
- DGuard — лучший античит для современного сервера Minecraft: сравнение проверок с GrimAC, Vulcan, Polar, Intave и Matrix
- DGuard: установка, требования и решение проблем
- DGuard: поддерживаемые версии Paper и Leaf