Досье CoreProtect

Руководство для персонала Minecraft-сервера

В каждом откате указаны ктоu:, когдаt: и гдеr:.

Вы заходите на сервер, когда всё уже случилось. Игрока убили, лут спрятан в тайном сундуке, а часть вещей дюпнута. Здесь пошагово разобрано, как всё исправить через CoreProtect и не задеть чужие вещи. Ниже собраны все команды и параметры /co.

/co lookup
Только чтение. Ищет по всему серверу, если не указан r:.
/co rollback
Меняет мир. Без r: работает в радиусе 10 блоков вокруг вас.
/co undo
Отменяет откат или восстановление обратным действием.
повтор · пример вывода
/co l → /co rb

Сначала посмотрите

Поиск ничего не меняет. Запустите свои параметры как поиск, а потом замените l на rb.

u: t: r:

Укажите кто, когда и где

Без u: откат захватит всех игроков в радиусе, включая тех, кто ничего не нарушал.

сначала вор, потом жертва

Сначала забрать, потом вернуть

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

/co undo

Страховка всегда под рукой

Если откат забрал лишнее, /co undo выполнит обратное действие и всё вернёт.

Дело 0417

Засада на дороге от спавна

Вы заходите в 21:40. Lumen сообщает об убийстве на дороге от спавна: все вещи пропали. Свидетелей нет. Зато CoreProtect записал всё.

Детали дела

Все команды ниже обновляются по мере ввода.

Берите окно с запасом, чтобы оно точно захватило происшествие. Ники в Minecraft состоят из латинских букв, цифр и подчёркиваний.

Что покажут логи

  1. Pip кладёт свой лут в сундук в 6 блоках от тайника.

A · только чтение

Восстановите картину

Только поиск. На этом этапе ничего в мире не меняется, поэтому каждую команду можно запускать сколько угодно раз.

B · меняет мир

Очистите тайник и дюп

Дальше команды меняют блоки и предметы. Каждая ограничена подозреваемым, временем происшествия и местом, где вы стоите.

C · возврат и проверка

Верните вещи и проверьте результат

Только после того, как украденное и дюпнутое убрано из тайника.

Быстрый режим

Всё дело на скорости

То же расследование в виде чек-листа с вашими никами. Отмечайте шаги по ходу. Привычки справа и делают работу в игре быстрой.

Чек-лист

    Вызывайте поиск снова, а не печатайте заново

    Откройте чат клавишей T, нажмите ↑, чтобы вернуть последнюю команду, замените l на rb и нажмите Enter. Параметры останутся такими же, как у только что проверенного поиска.

    Пользуйтесь короткими формами

    /co lookup/co l
    /co rollback/co rb
    /co restore/co rs
    /co inspect/co i
    поиск в радиусе 5/co near

    Складывайте единицы времени

    t:2h30m, t:5d2h, дроби вроде t:1.5h или окно t:1h-2h, то есть от одного до двух часов назад.

    Сначала посчитайте, потом читайте

    Добавьте #count, чтобы узнать число найденных строк. Листайте страницы через /co l 2, а 20 строк на страницу даст /co l 1:20.

    Кликайте вместо полётов

    В новых версиях координаты в результатах поиска кликабельны и телепортируют на место. Для этого нужно право coreprotect.teleport.

    Выделяйте точную область

    С WorldEdit r:#we ограничивает команду вашим выделением. Большой откат? #silent сократит вывод в чат.

    Лаборатория радиуса

    До чего дотягивается откат

    Вы стоите у тайника. Меняйте части команды и смотрите, что откатит CoreProtect. Радиус отсчитывается по x и z от вашей позиции, поэтому область квадратная.

    Вид сверху, одна клетка равна одному блоку. Обводка показывает, что откатит текущая команда.

    Радиус (r:)
    Действие (a:)

      Конструктор команд

      Соберите, прочитайте, скопируйте

      Заполните части команды. Конструктор соберёт её, простыми словами объяснит, что она сделает, и предупредит, если она захватывает больше, чем вы, скорее всего, хотели.

      Команда
      Хэштеги

      Что делает команда

        Справочник

        Все команды /co

        Все команды из официальной документации, их короткие формы и право, которое нужно для каждой.

        Справочник

        Параметры

        У lookup, rollback и restore одинаковые параметры. Большинство из них необязательны. Нажмите на пример, чтобы скопировать его.

        u:игрок

        Кто это сделал

        Один игрок или несколько через запятую. Неигровые причины пишутся с #.

        Один игрок
        Два игрока
        Неигровые причины, как в документации
        t:время

        Как далеко назад

        Недели w, дни d, часы h, минуты m и секунды s. Единицы можно сочетать, дроби работают, а дефис задаёт окно.

        Единицы через запятую
        Единицы без запятых
        Два с половиной часа
        От одного до двух часов назад
        r:радиус

        Где

        Число означает столько блоков вокруг вас. Особые значения выбирают мир, весь сервер или выделение WorldEdit.

        • Откат и восстановление без радиуса используют r:10.
        • У поиска радиуса по умолчанию нет, он ищет везде.
        В 10 блоках от вас
        Один мир
        Весь сервер
        Выделение WorldEdit (также r:#worldedit)
        a:действие

        Какой тип действия

        Ограничивает команду одним типом записанных действий. + и - делят большинство из них на два направления, например на установку и разрушение. Полный список из 22 действий в таблице действий.

        Только установленные блоки
        Только предметы, взятые из контейнеров
        Входы и выходы
        i:включить

        Только это

        Блоки, предметы или сущности через запятую. Названия берутся из списков на coreprotect.net/wiki-blocks и wiki-entities.

        Только камень
        Несколько сразу
        e:исключить

        Всё, кроме

        Исключает блоки, предметы, сущности или игроков.

        Без TNT
        Без камня и земли
        f:фильтр

        Фильтр текста по началу

        Работает с a:chat, a:command и a:sign.

        • Префиксы разделяются запятыми. Совпасть может любой из включённых.
        • Ведущий - исключает префикс, и исключения работают сами по себе.
        • Каждый префикс не короче 3 символов, не считая -.
        • Пробелы разрешены. * % _ ~ сравниваются буквально.
        Команды, начинающиеся с любого из двух
        /ban, но не /banlist
        Чат, который не начинается с «hello»
        Начало текста табличек
        #хэштег

        Дополнительное поведение

        Ставится в конце команды.

        Превью отката или восстановления (изменения блоков)
        Число строк, найденных поиском
        Число строк и итоги по материалам для каждого игрока
        Больше подробностей при откате или восстановлении
        Минимум вывода при откате или восстановлении
        Только для purge. См. раздел Очистка

        Справочник

        Все 22 действия

        Каждое значение a:, право поиска, которым его можно закрыть, и какие из них использовались в деле.

        ДействиеЧто охватываетМожно закрыть правомВ деле

        Справочник

        Очистка и база данных

        Очистка (purge) удаляет старые логи навсегда. После неё поиск и откат за это время уже не работают, поэтому храните историю достаточно долго для настоящих расследований.

        /co purge t:<time> r:<world/radius> i:<include> e:<exclude> a:kill
        30 днейМинимальный возраст данных для очистки в игре
        24 часаМинимальный возраст данных для очистки из консоли

        Частые варианты очистки

        Правила очистки по радиусу

        • Затрагиваются только данные блоков и убийств сущностей, поэтому сочетайте радиус с i: или a:kill.
        • Только в игре и всегда в том мире, где вы стоите. Нельзя сочетать с миром вроде r:#world_nether.
        • Ограничено параметром max-radius в конфиге. r:50x10 ещё и ограничивает высоту: 10 блоков вверх и вниз от вас.

        Правила очистки убийств

        • Логи убийств можно очищать отдельно на SQLite, MySQL и DuckDB. Вместе с убийством удаляются и сохранённые данные сущности, по которым откат вернул бы моба.
        • e: принимает только типы сущностей. Его нельзя сочетать с сущностями в i: или только с блоками в i:.
        • a:kill нельзя сочетать с типами блоков в i:.

        Что делает #optimize на каждой базе

        БазаЭффект #optimize
        SQLiteНе нужен. Ручная очистка и так пересобирает файл и освобождает место.
        MySQLТакже удаляет сохранённые данные сущностей в очищенном диапазоне, на которые больше не ссылается ни одно убийство (нужна привилегия CREATE TEMPORARY TABLES), а затем оптимизирует таблицы и освобождает место.
        DuckDBНичего не добавляет. Очистка идёт одной транзакцией, после неё делается чекпоинт.
        ClickHouseТакже запускает OPTIMIZE TABLE ... FINAL. Обычная очистка по времени и так удаляет целые месячные партиции.

        #optimize появился в v2.15. Он может сильно замедлить очистку на MySQL и ClickHouse и обычно не нужен.

        Переезд на другую базу

        /co migrate-db <sqlite|mysql|duckdb|clickhouse> [--full-validation]
        • Только из консоли.
        • По умолчанию проверяет статистику всех таблиц, примерно 1% каждой большой таблицы истории и полностью сравнивает маленькие таблицы. --full-validation сравнивает каждую скопированную строку.
        • В целевой базе не должно быть данных CoreProtect, для DuckDB нужен новый файл, а database-lock должен оставаться включённым.
        • После успешного переноса database-type в config.yml обновится автоматически.
        • Перенос между SQLite и MySQL требует сборки 23.0+ с Patreon. Всё, что связано с DuckDB или ClickHouse, требует 25.0+.

        Полная инструкция: docs.coreprotect.net/database-migration

        Справочник

        Права

        Все права по умолчанию есть у операторов, кроме отмеченных. Разумное разделение: откаты у опытного персонала, очистка у владельца.

        Рабочая схема для персонала

        Это предложение, а не часть документации. Подстройте её под свою команду.

        Хелпер

        • coreprotect.inspect
        • coreprotect.lookup
        • coreprotect.lookup.chat = false
        • coreprotect.lookup.command = false

        Модератор

        • всё, что есть у хелпера
        • coreprotect.rollback
        • coreprotect.restore
        • coreprotect.teleport

        Админ

        • coreprotect.*
        • включая purge, reload, consumer

        Основные права

        ПравоПо умолчаниюДаёт доступ к

        Дочерние права поиска

        Используйте их как запрещающие: поставьте false, чтобы скрыть этот вид поиска. В CoreProtect для Hytale они не поддерживаются.

        ПравоЗакрывает

        Имена команд

        ПравоПо умолчаниюКоманда
        coreprotect.cotrue/co
        coreprotect.corefalse/core
        coreprotect.coreprotectfalse/coreprotect

        Неточности в официальной документации

        • a:login или a:session. В примерах документации стоит a:login, но в списке действий есть только a:session, a:+session и a:-session. Это руководство придерживается списка.
        • Названия миров. Миры записаны по-разному: r:#world_the_end, r:#world_nether, r:#nether и r:#world. Перед откатом проверьте название поиском на своём сервере.
        • /co near и /co undo указаны как алиасы без описания синтаксиса.
        • #optimize описан в разделе об очистке, а не в списке хэштегов.
        • f: и хэштеги не указаны в строках синтаксиса lookup, rollback и restore, но входят в общий список параметров.
        • Пример вывода на этой странице условный. Точные формулировки и цвета зависят от версии CoreProtect.