Когда на сервере кто-то разрушил важный блок, обычно нужно быстро понять: кто это сделал, когда, в каких координатах, а при необходимости откатить последствия. Самый практичный путь - вести лог изменений и уметь искать их по координатам.
Понять, где искать виновника
Событие обычно относится к одному из типов:
- игрок сломал блок (добыча киркой, удар, взрыв как результат действия)
- блок разрушился “естественно” из-за механики игры (огонь, рост/таяние, поршни, распространение жидкости)
- блок разрушился из-за другого блока или механизма (например, табличка упала вместе с блоком, на котором стояла)
Поэтому важны два решения:
1) включить регистрацию разрушений
2) иметь команду, которая покажет историю конкретных координат
Самый простой вариант для сервера - плагин CoreProtect
CoreProtect регистрирует изменения блоков и позволяет:
- посмотреть, кто и когда поставил или удалил блок
- открыть историю по координатам через режим проверки (inspect)
- сделать откат или восстановление изменений (rollback/restore)
Это подробно описано в документации проекта и на вики по плагину. Источник: Minecraft Fandom (CoreProtect) и официальная страница проекта Bukkit/Dev.
Смотри раздел “Полезные ссылки” в конце.
Установка (коротко)
- Скачайте CoreProtect для вашей версии сервера.
- Скопируйте файл jar в папку
plugins. - Перезапустите сервер.
Как определить, кто сломал блок
- Включите режим проверки:
/co inspect(или/co i). - Наведите курсор на нужный блок:
- ЛКМ по блоку - покажет, кто ставил или ломал блок на этих координатах, и время изменения
- ПКМ по сторонам - помогает смотреть “историю по другую сторону” грани, если случай спорный (например, блоки на соседних координатах влияют друг на друга)
- Повторите команду, чтобы отключить режим проверки.
Дальше ориентируйтесь по выводу в чат: ник игрока и время. Если блок мог разрушиться через цепочку механик, это будет отражено логом в зависимости от включенных категорий регистрации.
Быстрый откат, если виновник найден
CoreProtect умеет откатывать изменения через команды rollback (откат) и restore (возврат). Формат rollback настраивается параметрами: игрок (или без него), время, фильтры по блокам, радиус.
Пример для rollback:
/co rollback u:Notch t:1h
Откатит изменения, связанные с Notch, за последний час.
Если нужно откатить только разрушенные конкретные блоки, добавляют фильтр по блокам:
/co rollback u:Notch t:1h b:stone
Полный синтаксис и примеры есть в вики CoreProtect. Источник: Minecraft Fandom.
Что настроить, чтобы лог “точно ловил” разрушения
CoreProtect имеет настройки, какие именно события он пишет. В частности, для задачи “кто сломал блок” обычно важны:
- block-break - разрушение блока игроком
- natural-break - разрушение в результате взаимодействия с другими блоками (например, когда блок ломают косвенно)
- explosions - разрушение из-за взрывов
- block-movement и поршни - если блок смещается механикой и из-за этого “кажется”, что его сломали
- дополнительные категории про огонь, жидкости, рост деревьев и т.д., если ваш сервер часто сталкивается с таким
Смысл простой: если нужный тип событий выключен, в истории конкретного блока вы можете не увидеть нужного “кто”. Перечень параметров и назначение категорий есть в документации CoreProtect на вики.
Если плагин не используется: что можно сделать без логов
Без логирования “кто сломал блок” узнать почти невозможно, кроме редких случаев:
- если разрушение произошло во время прямого наблюдения администратором
- если есть сторонние логи (антигриферы, прокси, запись событий плагинами, которые уже пишут причины и участников)
- если сервер уже ведет историю откатов/изменений через другие инструменты
Классический код уровня модификаций (например, обработчик onBlockHarvested) показывает, как в принципе можно получать игрока при разрушении блока, но на обычном Bukkit/Spigot это делается не таким образом для администраторского “узнать виновника”. Для практики серверов лучше работает подход с плагином и историей координат.
Типичные ошибки при поиске “кто сломал блок”
-
Смотрят историю слишком поздно
Данные могли быть очищены командой purge или жить ограниченное время. Убедитесь, что смотрите актуальный период. -
Включены не все типы событий
Если блок разрушился из-за взрыва, огня или цепочки блоков, а соответствующая категория выключена, лог будет неполным. -
Путают координаты
ПКМ/ЛКМ и “какая сторона блока” иногда дают историю соседних измененных позиций. Лучше повторить проверку по грани и сверить координаты. -
Ищут только “сломали”, но проблема в механике
Например, блок “сломался” из-за воды/лавы, поршней или падения. Тогда нужно включать категории под эти механики.
Полезные ссылки
- CoreProtect (вики Minecraft Fandom): https://minecraft.fandom.com/ru/wiki/CoreProtect
- CoreProtect на Bukkit/Dev (официальная страница проекта): https://dev.bukkit.org/projects/coreprotect
- Пример обсуждения “как узнать, кто сломал блок” и инструменты для этого: https://forum.mcmodding.ru/threads/uznat-kto-slomal-blok.6574/