Мирное знамя
Мирное знамя — создаваемый предмет, который подавляет обычное естественное преобразование мобов в элит в настраиваемом радиусе чанков. При suppressEvents: true оно также подавляет события действий и попытки появления мобов событий по таймеру, обрабатываемые EliteMobs. Оно не блокирует произвольное появление пользовательских или региональных боссов, не удаляет существующих элит и не даёт общей защиты от мобов.
Как это работает
- Крафт: Игроки создают Мирное знамя по стандартному рецепту (или по настраиваемому рецепту, сконфигурированному администратором). Стандартный рецепт требует кости, окружающие знамя любого цвета.
- Размещение: При включённой функции размещение Мирного знамени немедленно регистрирует защиту. Стандартный радиус 4 охватывает квадрат 9×9 чанков с центром в чанке знамени на любой высоте; это не круг, отсчитываемый от блока.
- Удаление: Разрушение блока Мирного знамени убирает защитную зону и снова позволяет элитным мобам появляться в этой области.
- Сохранение: Размещённые Мирные знамёна сохраняются на диск и сохраняются между перезапусками сервера. Когда чанки, содержащие Мирное знамя, загружаются, плагин проверяет, что блок знамени всё ещё существует, и удаляет защиту, если он был уничтожен другими способами.
Стандартный рецепт крафта
BBB
BWB
BBB
- B = Кость
- W = Любое знамя (принимаются все 16 цветов знамён)
Рецепт производит синее знамя с особым узором, отображаемым именем и описанием, идентифицирующим его как Мирное знамя.
Конфигурация
Все настройки Мирного знамени находятся в PeaceBanner.yml. Полный справочник см. на странице настройки конфигурации.
| Настройка | По умолчанию | Описание |
|---|---|---|
enabled | true | Включена ли функция Мирного знамени |
craftable | true | Могут ли игроки создавать Мирные знамёна |
chunkRadius | 4 | Радиус (в чанках) вокруг размещённого знамени, где элитные мобы подавляются |
suppressEvents | true | Подавляют ли размещённые знамёна также события EliteMobs (события действий и таймерные события) |
recipeShape | BBB / BWB / BBB | Раскладка сетки крафта |
recipeIngredients | B: BONE, W: ANY_BANNER | Сопоставление символов рецепта с материалами |
itemName | &aPeace Banner | Отображаемое имя предмета Мирного знамени |
itemLore | (см. конфиг) | Строки описания, отображаемые на предмете |
placedMessage | (см. конфиг) | Сообщение, отправляемое при размещении знамени |
removedMessage | (см. конфиг) | Сообщение, отправляемое при разрушении знамени |
chunkRadius берётся при размещении каждого знамени и сохраняется вместе с ним. Изменение настройки не меняет радиус существующих знамён даже после перезапуска; разместите их заново, чтобы применить новый радиус. В стандартном описании предмета указана буквальная 4, которая не меняется вместе с радиусом, тогда как placedMessage заменяет $radius.
enabled: false отключает подавление появления, обработку размещения, разрушения и загрузки, а также рецепт крафта. Это не удаляет сохранённые записи и не запрещает команду выдачи администратора. craftable: false отключает только рецепт.
Команды администратора
| Команда | Разрешение | Описание |
|---|---|---|
/em peacebanner give <player> | elitemobs.peacebanner.admin | Выдаёт Мирное знамя игроку в сети; при полном инвентаре роняет его в позиции игрока |
/em peacebanner list | elitemobs.peacebanner.admin | Показывает список всех размещённых Мирных знамён с их координатами и радиусом чанков |
Перекрывающиеся знамёна
Можно размещать несколько Мирных знамён с перекрывающимися зонами защиты. Система использует подсчёт ссылок, поэтому чанк остаётся защищённым, пока хотя бы одно знамя покрывает его. Удаление одного знамени снимает защиту только с тех чанков, которые не покрываются другим знаменем.
Технические детали
- При новом размещении Мирное знамя распознаётся по тегу контейнера постоянных данных (PDC) предмета, а не по внешнему виду. Обычное знамя в незарегистрированном месте не создаёт защиту.
- Данные знамён хранятся в
plugins/EliteMobs/data/peace-banners.yml. - При загрузке чанка проверяется только наличие любого блока знамени в сохранённой позиции. Тег и узор Мирного знамени повторно не проверяются. Если там больше нет знамени, например после взрыва или редактирования мира, защита снимается при этой проверке, а не сразу после внешнего изменения.
- Сохранённые записи привязаны к UUID мира. Записи мира, не загруженного во время инициализации EliteMobs, остаются неактивными до загрузки этого мира, после чего их защита включается автоматически. Другой мир с тем же названием их не наследует; вместо этого EliteMobs выводит предупреждение в лог.