CoreProtect
**CoreProtect** — это плагин для SMP-сервера под управлением Bukkit, регистрирующий изменения блоков. С его помощью вы можете просмотреть историю изменений блоков, то есть кто и когда поставил/удалил блок, и откатить/вернуть изменения блоков и другое.

## Установка

- Скачайте плагин
- Скопируйте файл "CoreProtect_<версия>.jar" в папку "plugins" Вашего сервера.
- Перезапустите сервер.

## Настройка

Настройка плагина осуществляется с помощью файла `config.yml`

. Бо́льшая часть параметров принимает только два значения: включено (`true`

) и выключено (`false`

).

`verbose`

— Если включено, то при выполнении откатов будет отображаться дополнительная информация, иначе дополнительная информация будет отображена только если в команде присутствует аргумент `#verbose`

.

`use-mysql`

— Если включено, то плагин будет использовать указанные ниже данные для подключения к внешней базе данных MySQL.

`table-prefix`

— Префикс таблиц в базе данных MySQL.

`mysql-host`

— Адрес сервера с базой данных MySQL.

`mysql-port`

— Порт для подключения к серверу с базой данных MySQL.

`mysql-database`

— Название внешней базы данных MySQL.

`mysql-username`

— Имя пользователя для подключения к внешней базе данных MySQL.

`mysql-password`

— Пароль для подключения к внешней базе данных MySQL.

`check-updates`

— Автоматическая проверка обновлений (`true`

- включена, `false`

- выключена).

`api-enabled`

— Использовать CoreProtect API (другие плагины смогут получать доступ к данным CoreProtect)?

`default-radius`

— Радиус отката/восстановления по умолчанию. Будет подставлено значение этого параметра, если аргумент `r:<radius>`

не указан.

`max-radius`

— Максимальный радиус отката/восстановления.

`rollback-items`

— Откатывать предметы, взятые из сундуков и прочих контейнеров?

`rollback-entities`

— Откатывать убитых мобов?

`skip-generic-data`

— Если включено, то информация о действиях, связанных с простыми явлениями (например, горение зомби днём) записываться не будут.

`block-place`

— Записывать установку блоков?

`block-break`

— Записывать разрушение блоков?

`natural-break`

— Записывать информацию о разрушении блоков в результате взаимодействия с другими блоками (например, разрушение факела, стоящего на блоке, сломанном игроком)? Необходимо включить для нормальной работы восстановления кроватей и дверей.

`block-movement`

— Отслеживать естественное перемещение блоков (например, падение гравия)?

`pistons`

— Отслеживать перемещение блоков поршнем?

`block-burn`

— Записывать сгорание блоков?

`block-ignite`

— Записывать натуральное поджигание блоков (например, распространение огня)?

`explosions`

— Записывать разрушения блоков вследствие взрывов?

`entity-change`

— Записывать изменения блоков вследствие взаимодействия с ними существ (например, эндермен взял блок)?

`entity-kills`

— Записывать убийства мобов?

`sign-text`

— Записывать изменения текста на табличках?

`buckets`

— Записывать изменения блоков, связанные с использованием вёдер игроками?

`leaf-decay`

— Записывать натуральное разрушение листвы?

`tree-growth`

— Записывать изменения блоков, связанные с вырастанием дерева? Изменения будут связаны с игроком, посадившим дерево.

`mushroom-growth`

— Записывать изменения блоков, связанные с вырастанием грибов?

`vine-growth`

— Записывать натуральный рост лиан?

`portals`

— Записывать натуральную генерацию порталов?

`water-flow`

— Записывать изменения блоков, связанные с растеканием воды? Позволит правильно откатить блоки, разрушенные вследствие этих изменений.

`lava-flow`

— Записывать изменения блоков, связанные с растеканием лавы? Позволит правильно откатить блоки, разрушенные вследствие этих изменений.

`liquid-tracking`

— Изменения блоков, связанные с растеканием жидкости будут связаны с игроком, поставившим источник данной жидкости.

`item-transactions`

— Записывать изменения содержимого контейнеров?

`player-interactions`

— Записывать взаимодействия игроков с блоками (например, открытие двери)?

`player-messages`

— Записывать сообщения, отправляемые игроками в чат?

`player-commands`

— Записывать команды, выполняемые игроками?

`player-sessions`

— Записывать информацию о входах/выходах игроков?

`username-changes`

— Записывать изменения никнейма игроков?

`worldedit`

— Записывать изменения, связанные с использованием WorldEdit?


## Использование

### Режим проверки

Чтобы включить режим проверки, введите команду `/co i`

. Кликните `ЛКМ` по блоку, чтобы узнать, какие блоки на этом месте были поставлены или сломаны. Показывается также время изменения блоков и никнеймы игроков (или имена сущностей), которые эти блоки изменили. Вся информация выводится в чат. Кликните `ПКМ` по грани блока, чтобы узнать историю изменений блока, который находился по другую сторону от грани. Нажмите `ПКМ` по любому механизму (кнопке, рычагу, двери), чтобы узнать, кто и когда использовал его. Режим проверки отключается повторным вводом команды `/co i`

.

### Откат блоков

Чтобы откатить изменения блоков, введите команду

`/co rollback u:<user> t:<time> b:<blocks> e:<exclude> r:<radius> a:<action> #<hashtag>`


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

Аргументы:

`user`

— ник игрока. Чтобы откатить действия всех игроков, не используйте этот аргумент (писать `u`

тоже не нужно).

`time`

— время. Вы можете использовать недели **w**, дни **d**, часы **h**, минуты **m** и секунды **s**. В записи вы можете использовать смешанные значения и десятичные дроби. Пример: `t:2.50w40h2m`

(две с половиной недели, сорок часов и две минуты). Чтобы откатить действия за всё время, не вводите этот аргумент.

`blocks`

— блоки. Вы можете выбрать ID блоков, которые необходимо удалить. Чтобы убрать все блоки, не используйте этот аргумент.

`exclude`

— исключение. Если вы хотите, например, удалить все блоки, кроме камня, введите ID камня. Чтобы убрать все блоки, не вводите этот аргумент.

`radius`

— радиус, в котором нужно восстановить блоки. Можно указать целое число, название мира (например, `#world`

), все миры (`#global`

), выделение WorldEdit (`#worldedit`

или `#we`

). Если аргумент не указан, будет автоматически подставлено значение параметра `default-radius`

из файла конфигурации.

`action`

— действие, возможные параметры:

`block`

— блок поставлен/сломан`+block`

— блок поставлен`-block`

— блок сломан`click`

— взаимодействие игрока с блоком`container`

— предмет взят или положен в контейнер`+container`

— предмет положен в контейнер`-container`

— предмет взят из контейнера`kill`

— убит моб или другая энтити`chat`

— отправлено сообщение в чат`command`

— команда выполнена`session`

— вход или выход игрока с сервера`+session`

— вход игрока на сервер`-session`

— выход игрока с сервера`username`

— изменён никнейм

`hashtag`

— дополнительные параметры, возможные значения:

`preview`

— откат с предварительным просмотром изменений.`count`

— возвращает количество строк, найденных при просмотре логов через`/co lookup`

.`verbose`

— отображать подробную информацию при откате/восстановлении.`silent`

— отображать только основную информацию при откате/восстановлении.

### Восстановление блоков

Чтобы восстановить изменения блоков, введите команду

`/co restore u:<user> t:<time> b:<blocks> e:<exclude> r:<radius> a:<action> #<hashtag>`


Эта команда также может быть использована для отмены отката блоков.

## Примеры использования

### Откат блоков

- Откатить все действия игрока Notch за последний час.
`/co rollback u:Notch t:1h`

- Откатить только блоки камня, поставленные игроком Notch за последний час.
`/co rollback u:Notch t:1h b:stone`

- Откатить все действия игрока Notch в мире world_nether за последнюю неделю.
`/co rollback u:Notch t:1w r:#world_nether`

- Откатить все действия игрока Notch за последний час, кроме действий с камнем.
`/co rollback u:Notch t:1h r:#global e:stone`

- Откатить только сломанные игроком Notch блоки камня во всех мирах за последний час.
`/co rollback u:Notch t:1h r:#global a:-block b:stone`

- Откатить все действия за последние 15 минут, произведённые в выделении WorldEdit.
`/co rollback t:15m r:#worldedit`


### Просмотр логов

- Посмотреть все блоки алмазной руды, добытые за последний час.
`/co lookup b:diamond_ore t:1h a:-block`

- Посмотреть все сообщения, отправленные игроком Notch за последние 15 минут.
`/co lookup u:Notch a:chat t:15m`

- Посмотреть все входы игрока Notch на сервер.
`/co lookup u:Notch a:login`


## Команды

`/co help`

— вывести в чат все команды плагина

`/co inspect`

— включить режим проверки блоков

`/co lookup u:<user> t:<time> b:<blocks> e:<exclude> r:<radius> a:<action> #<hashtag>`

— просмотр логов по параметрам

`/co rollback u:<user> t:<time> b:<blocks> e:<exclude> r:<radius> a:<action> #<hashtag>`

— откат изменений блоков

`/co restore u:<user> t:<time> b:<blocks> e:<exclude> r:<radius> a:<action> #<hashtag>`

— возврат изменений блоков

`/co undo`

— отмена последнего действия

`/co near`

— просмотр всех действий неподалёку от исполнителя команды

`/co status`

— информация о состоянии плагина

`/co purge <months>`

— очистить информацию о блоках за один или несколько месяцев

`/co reload`

— перезагрузить настройки плагина


## Права на команды

`coreprotect.*`

— Доступ ко всем командам плагина

`coreprotect.inspect`

— Возможность использовать `/co inspect`


`coreprotect.lookup`

— Возможность использовать `/co lookup`


`coreprotect.rollback`

— Возможность использовать `/co rollback`


`coreprotect.restore`

— Возможность использовать `/co restore`


`coreprotect.help`

— Возможность использовать `/co help`


`coreprotect.purge`

— Возможность использовать `/co purge`


`coreprotect.reload`

— Возможность использовать `/co reload`


`coreprotect.status`

— Возможность использовать `/co status`


`coreprotect.co`

— Возможность использовать команду `/co`


`coreprotect.core`

— Возможность использовать команду `/core`


`coreprotect.coreprotect`

— Возможность использовать команду `/coreprotect`