Перейти к основному содержимому

Отключение урона от взрывов

Сравнение методов​

Выбирайте защиту по пути нанесения урона. Обычные взрывы сущностей/снарядов используют EntityExplodeEvent; флаг WorldGuard EliteMobs очищает список блоков события для отслеживаемых элит/снарядов. Симулируемые взрывы и скрипты могут менять блоки напрямую. Регенерация восстанавливает зарегистрированный ущерб, а не обеспечивает общую защиту.

Отключение урона по блокам​

С помощью gamerule​

/gamerule mobGriefing false управляет ванильным разрушением мира мобами. Прямые изменения блоков плагином или скриптом оно не перехватывает.

С помощью WorldGuard​

Установите EliteMobs и WorldGuard и задайте в регионе elitemobs-explosion-block-damage: deny. Это защищает описанный выше путь отслеживаемых обычных взрывов. Произвольные изменения блоков Lua/EliteScript не перехватываются; защита также не распространяется на все вызовы симулируемых взрывов. Проверьте конкретную способность в защищённой области.

Запрет огненным шарам EliteMobs повреждать блоки​

Встроенные способности — Lua-скрипты в plugins/EliteMobs/powers/. Их записи в реестре повторно применяются после обнаружения пользовательских способностей, поэтому YAML-файл метаданных с isEnabled: false не отключает встроенную способность. Удалите нежелательные способности из определений боссов и списков естественного появления в EliteMobPowers.yml. Для пользовательской Lua-способности метаданные YAML с тем же базовым именем могут отключить загрузку; см. отдельные Lua-способности. Чтобы оставить взрывную способность активной и защитить местность, выбирайте защиту по её механизму: обычный взрыв отслеживаемого снаряда или прямое изменение блоков.

Настройка восстановления после взрывов EliteMobs​

Измените plugins/EliteMobs/config.yml. При включённой по умолчанию регенерации зарегистрированные блоки начинают восстанавливаться примерно через минуту; исключения и региональные флаги сохраняют силу.

Когда обработчик берёт на себя взрыв элитника, отслеживаемого снаряда или фальшивый взрыв, EliteMobs сам удаляет блоки и очищает список блоков исходного взрыва, поэтому разрушаются только записанные им блоки. Плагин, отменяющий EliteExplosionEvent, отменяет разрушение блоков всем взрывом.

Восстановление идёт по одному блоку за тик, начиная с самых нижних. Сущность, стоящая внутри восстанавливаемого блока, поднимается на его верх; если этот путь перекрыт, восстановление ждёт и пробует снова на следующем тике. При выгрузке мира EliteMobs сначала сразу восстанавливает все ожидающие блоки; если часть из них всё равно нельзя поставить, выгрузка отменяется. Инстансовые миры подземелий, которые удаляются, пропускают этот шаг.

  • doExplosionRegen: Укажите false, чтобы отключить этот обработчик регенерации. Обычные взрывы всё ещё могут разрушать блоки без восстановления. Симулируемые или скриптовые взрывы через этот обработчик завершаются до прямого удаления блоков.
  • doRegenerateContainers: Укажите false, чтобы исключать контейнеры из взрывов, которые берёт на себя обработчик: тогда они не разрушаются и не восстанавливаются. Если обработчик не задействован, например при doExplosionRegen: false или флаге elitemobs-explosion-regen со значением deny, обычные взрывы всё ещё могут разрушать контейнеры.

Прочие способности взрывов/огня​

EliteMobs поставляется с несколькими другими способностями, вызывающими взрывы или огонь. Это Lua-скрипты в папке plugins/EliteMobs/powers/:

Способности Дракона Края:

  • ender_dragon_aimed_fireball.lua
  • ender_dragon_disco_fireballs.lua
  • ender_dragon_fireball_bombardment.lua
  • ender_dragon_ender_fireball_bombardment.lua

Прочие способности взрывов:

  • gold_explosion.lua
  • arrow_fireworks.lua
  • fireworks_barrage.lua

Способности на основе огня:

  • firestorm.lua
  • flame_pyre.lua
  • flamethrower.lua
  • attack_fire.lua

Изучите скрипт каждой способности перед выбором правила защиты. Регенерация не предотвращает первоначальное разрушение блоков, а изменение одной способности не меняет другие скрипты с похожими эффектами.

Региональное управление взрывами (требуется WorldGuard)​

Установите оба плагина и создайте регион WorldGuard, покрывающий область. Для отслеживаемых обычных взрывов выполните:

/region flag <region-name> elitemobs-explosion-block-damage deny

Устранение неполадок​

Проверьте, использует ли способность обычное событие или меняет блоки напрямую. Для обычного события проверьте границы региона, запрет флага и загрузку обоих плагинов. При отсутствии восстановления проверьте doExplosionRegen, флаги регенерации и исключения контейнеров. Успешное восстановление не доказывает предотвращение разрушения.