Когда на сервере кто-то разрушил важный блок, обычно нужно быстро понять: кто это сделал, когда, в каких координатах, а при необходимости откатить последствия. Самый практичный путь - вести лог изменений и уметь искать их по координатам.

Понять, где искать виновника

Событие обычно относится к одному из типов:
- игрок сломал блок (добыча киркой, удар, взрыв как результат действия)
- блок разрушился “естественно” из-за механики игры (огонь, рост/таяние, поршни, распространение жидкости)
- блок разрушился из-за другого блока или механизма (например, табличка упала вместе с блоком, на котором стояла)

Поэтому важны два решения:
1) включить регистрацию разрушений
2) иметь команду, которая покажет историю конкретных координат

Самый простой вариант для сервера - плагин CoreProtect

CoreProtect регистрирует изменения блоков и позволяет:
- посмотреть, кто и когда поставил или удалил блок
- открыть историю по координатам через режим проверки (inspect)
- сделать откат или восстановление изменений (rollback/restore)

Это подробно описано в документации проекта и на вики по плагину. Источник: Minecraft Fandom (CoreProtect) и официальная страница проекта Bukkit/Dev.
Смотри раздел “Полезные ссылки” в конце.

Установка (коротко)

  1. Скачайте CoreProtect для вашей версии сервера.
  2. Скопируйте файл jar в папку plugins.
  3. Перезапустите сервер.

Как определить, кто сломал блок

  1. Включите режим проверки: /co inspect (или /co i).
  2. Наведите курсор на нужный блок:
  3. ЛКМ по блоку - покажет, кто ставил или ломал блок на этих координатах, и время изменения
  4. ПКМ по сторонам - помогает смотреть “историю по другую сторону” грани, если случай спорный (например, блоки на соседних координатах влияют друг на друга)
  5. Повторите команду, чтобы отключить режим проверки.

Дальше ориентируйтесь по выводу в чат: ник игрока и время. Если блок мог разрушиться через цепочку механик, это будет отражено логом в зависимости от включенных категорий регистрации.

Быстрый откат, если виновник найден

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 это делается не таким образом для администраторского “узнать виновника”. Для практики серверов лучше работает подход с плагином и историей координат.

Типичные ошибки при поиске “кто сломал блок”

  1. Смотрят историю слишком поздно
    Данные могли быть очищены командой purge или жить ограниченное время. Убедитесь, что смотрите актуальный период.

  2. Включены не все типы событий
    Если блок разрушился из-за взрыва, огня или цепочки блоков, а соответствующая категория выключена, лог будет неполным.

  3. Путают координаты
    ПКМ/ЛКМ и “какая сторона блока” иногда дают историю соседних измененных позиций. Лучше повторить проверку по грани и сверить координаты.

  4. Ищут только “сломали”, но проблема в механике
    Например, блок “сломался” из-за воды/лавы, поршней или падения. Тогда нужно включать категории под эти механики.

Полезные ссылки

  • 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/