Как восстановить разрушенные постройки через CoreProtect

1. Подготовка и доступ к серверу через proxify.cloud

  1. Авторизуйтесь в панели proxify.cloud.
  2. В списке услуг выберите выделенный сервер с Ubuntu, на котором развёрнут Minecraft-сервер.
  3. Откройте вкладку Console (VNC-консоль) или подключитесь по SSH с вашей рабочей станции:
    ssh root@<IP-адрес_сервера>
    
    IP-адрес указан в деталях услуги на proxify.cloud.
  4. Перейдите в пользователя, от имени которого запущен сервер (обычно minecraft или server):
    su - minecraft
    cd /home/minecraft/server  # стандартный путь, проверьте на proxify.cloud в разделе "Файлы"
    

2. Проверка установки CoreProtect и версии API

  1. Убедитесь, что плагин загружен. В консоли сервера (или через RCON) выполните:
    /coreprotect version
    
    Ожидаемый ответ: CoreProtect v21.x.x - [Enabled].
  2. Проверьте совместимость с версией ядра (Paper/Spigot/Purpur). CoreProtect требует Paper или форки. На Vanilla/Forge/Fabric плагин не заработает без мод-загрузчика (Fabric/Forge версии CoreProtect отдельны).
  3. Посмотрите, где хранится база данных. По умолчанию — SQLite в папке плагина:
    ls -la plugins/CoreProtect/
    # coreprotect.db — файл базы данных
    # config.yml — конфигурация
    

3. Настройка базы данных (рекомендация для выделенного сервера)

На выделенном сервере proxify.cloud с Ubuntu настоятельно рекомендуется переключиться на MariaDB/MySQL. SQLite блокирует файл при больших нагрузках, вызывая лаги.

  1. Установите СУБД (если нет):
    sudo apt update && sudo apt install mariadb-server -y
    sudo mysql_secure_installation
    
  2. Создайте БД и пользователя:
    sudo mysql -u root -p
    CREATE DATABASE coreprotect CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
    CREATE USER 'cpuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
    GRANT ALL PRIVILEGES ON coreprotect.* TO 'cpuser'@'localhost';
    FLUSH PRIVILEGES;
    EXIT;
    
  3. Отредактируйте plugins/CoreProtect/config.yml:
    use-mysql: true
    mysql:
      host: "localhost"
      port: 3306
      database: "coreprotect"
      username: "cpuser"
      password: "StrongPassword123!"
      table-prefix: "co_"
      ssl: false
    
  4. Перезагрузите плагин без перезапуска сервера (чтобы не терять онлайн):
    /coreprotect reload
    
    Проверьте логи: [CoreProtect] MySQL connection successful.

4. Поиск нарушителя и истории изменений (Команда /co inspect)

  1. Зайдите на сервер с правами OP.
  2. Включите режим инспектора:
    /co inspect
    
    В чате появится: CoreProtect Inspector enabled. Left-click to lookup block data, right-click for chest/container data.
  3. Левый клик (ЛКМ) по разрушенному блоку (или месту, где он был) — покажет историю: кто, когда, какой блок ставил/ломал. Пример вывода в чате:
    [CoreProtect] #1 - Player: Griefers_123 | Action: Block Break | Time: 2m ago | Block: Diamond Ore
    [CoreProtect] #2 - Player: Admin_Builder | Action: Block Place | Time: 1d ago | Block: Stone
    
  4. Правый клик (ПКМ) по сундуку/шалкеру — покажет историю инвентаря (кто что брал/клал).
  5. Запомните ник нарушителя (например, Griefers_123) и радиус/время разрушений.
  6. Выключите инспектор:
    /co inspect
    

5. Глобальный поиск по логам (Команда /co lookup)

Если постройка большая или координаты неизвестны, используйте поиск по игроку за период.

Синтаксис: /co lookup <параметры>

Ключевые параметры:

  • u:<ник> — пользователь (нарушитель).
  • a:<action> — действие: block (блоки), container (сундуки), entity (мобы/айтемы), session (войс/выход).
  • r:<радиус> — радиус от вас (по умолчанию 10).
  • t:<время> — время назад: 5m, 2h, 3d, 1w.
  • b:<блоки> — фильтр по блокам (через запятую): chest,diamond_ore,tnt.
  • e:<исключить> — исключить блоки.

Примеры для восстановления:

  1. Найти все действия Griefers_123 за последний час в радиусе 50 блоков:
    /co lookup u:Griefers_123 t:1h r:50
    
  2. Найти только разрушение ценных блоков (алмазы, изумруды, сундуки) за 24 часа:
    /co lookup u:Griefers_123 a:block t:1d b:diamond_ore,emerald_ore,chest,ender_chest,shulker_box
    
  3. Найти установку TNT или лавы (частые гриф-инструменты) за неделю:
    /co lookup u:Griefers_123 a:block t:1w b:tnt,lava,fire
    

Работа с результатами: После команды откроется постраничный интерфейс в чате.

  • Нажимайте номера страниц [1] [2] [3]...
  • Нажимайте на строки лога — телепортирует к координатам события.
  • Используйте /co tp <id> для телепорта к конкретной записи (ID виден в списке).

6. Восстановление построек (Команда /co rollback)

⚠️ ВНИМАНИЕ: rollback — необратимая операция. Сначала всегда делайте preview.

6.1. Предварительный просмотр (Preview / Dry-run)

Параметр p:true (или preview:true) показывает, сколько и каких блоков изменится, не меняя мир.

  1. Откат действий конкретного игрока за 30 минут в радиусе 30 блоков от вас (предпросмотр):
    /co rollback u:Griefers_123 t:30m r:30 p:true
    
    Ответ: [CoreProtect] Preview: 1,245 blocks would be rolled back.
  2. Откат только разрушений (break), игнорируя установки (place): Добавьте action:block+break (или a:block+break).
    /co rollback u:Griefers_123 t:1h r:50 a:block+break p:true
    
  3. Откат конкретных типов блоков (например, убрать поставленную лаву и обсидиан):
    /co rollback u:Griefers_123 t:2h r:100 b:lava,obsidian,bedrock p:true
    

6.2. Прямое выполнение отката (Rollback)

Уберите p:true после проверки превью.

  1. Полный откат игрока (все действия: блоки, сундуки, энтити) за 1 час, радиус 50:
    /co rollback u:Griefers_123 t:1h r:50
    
  2. Точечный откат: только разрушение блоков (break) за 2 часа, радиус 100:
    /co rollback u:Griefers_123 t:2h r:100 a:block+break
    
  3. Откат действий у конкретных координат (если знаете центр постройки): Используйте x:, y:, z: вместо r: (радиуса от игрока).
    /co rollback u:Griefers_123 t:1d x:100 y:64 z:-200 r:20
    
  4. Откат по ID сессии (если игрок заходил под разными никами, но это один человек): Узнайте session-id через /co lookup u:Griefers_123 (колонка Session).
    /co rollback session:12345 t:1h
    

6.3. Восстановление сундуков (Container Rollback)

Если грабитель выкинул вещи или забирает лут:

/co rollback u:Griefers_123 t:1h r:50 a:container

Восстановит содержимое сундуков/шалкеров на момент до действий игрока.

7. Восстановление "чистого" мира (Restore) — если постройку снес мир/плагин/взрыв

Команда /co restore работает обратно к rollback: она возвращает изменения, которые были отменены, или восстанавливает блоки, удаленные естественными причинами (взрывы, потоки лавы, эндермены), если они логировались.

Сценарий: Крипер взорвал дом. Нужно вернуть блоки.

/co restore t:30m r:20 a:block+break p:true
  • a:block+break — восстановить сломанные блоки.
  • p:true — предпросмотр.
  • Уберите u:<ник>, так как взрыв — это #environment или natural.

Важно: CoreProtect по умолчанию не логирует природные события (поток воды, рост травы, взрывы криперов), если не включено в config.yml:

# plugins/CoreProtect/config.yml
log-natural-block-changes: true  # включить логирование природы

Если это было false на момент взрыва — восстановить через CoreProtect нельзя, нужен бэкап мира.

8. Работа с большими объемами: Очередь задач (Purge/Queue)

На выделенном сервере proxify.cloud с хорошим CPU (Ryzen/EPYC) откат 100к+ блоков может вызвать лаг-спайк.

  1. CoreProtect 21+ использует асинхронную очередь автоматически.
  2. Следите за консолью сервера: