Зомби в Minecraft загораются на солнце, когда по ним проходят прямые лучи. Если вы хотите, чтобы они не горели днем, это можно сделать разными способами - от модов до команд и датапаков. Ниже разберем самые рабочие варианты и типичные ошибки, из-за которых “всё вроде правильно, но горят”.

Что именно менять: огонь или “физику солнца”

Есть два разных эффекта, которые часто путают:

  1. Сама механика поджигания при солнечном свете.
  2. Текущее состояние огня (когда моб уже горит, у него стоит значение Fire).

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

Вариант 1: правильный способ через датапак - запретить поджигание, а не только гасить Fire

Идея простая: на каждом тике вы сбрасываете Fire, но делаете это через одиночную проверку и не допускаете, чтобы моб мгновенно снова получал эффект “от солнца”.

Подход для датапака (команды)

Используйте функцию, которая гасит огонь у подходящих мобов:

data/<ваш_датапак>/functions/prevent_fire.mcfunction

execute as @e[type=zombie,limit=1000] run data modify entity @s Fire set value 0
execute as @e[type=drowned,limit=1000] run data modify entity @s Fire set value 0
execute as @e[type=zombie_villager,limit=1000] run data modify entity @s Fire set value 0

Дальше важно, чтобы эта функция вызывалась каждый тик из тега tick:

data/minecraft/tags/functions/tick.json (или свой тег, если у вас своя логика)

[
  "ваш_датапак:prevent_fire"
]

Почему ваш пример мог “не сработать”

Судя по коду из вопроса, вы меняете Fire у зомби. Такое действительно гасит текущее горение, но зомби может:
- снова получить поджигание на следующем тике;
- быть в группе, которую вы не покрыли (например, другие вариации);
- не попадать под type в вашей версии (редко, но бывает с модами и сборками).

Еще один момент: в некоторых конфигурациях/версах надежнее запускать функцию через тик-тег, а не вручную. Команда /reload обновляет датапак, но не гарантирует, что дальше он “каждый тик” продолжит работать именно так, как вы ожидаете.

Вариант 2: мод “Mob Sunscreen” - отключить горение у зомби и скелетов

Если вы играете с Forge/Fabric и хотите простое решение без командной логики, подойдет мод, который делает зомби и скелетов невосприимчивыми к солнечному свету.

Обычно это означает, что моб не поджигается, а не только “гасится огонь”. Поэтому с ним меньше шансов получить повторное загорание сразу после выполнения команд.

Пример такого мода: Mob Sunscreen (разные сборки под Forge/Fabric). Он заявляет, что зомби и скелеты не горят на солнце и могут ходить днем.

Вариант 3: плагин для серверов (если вы на Bukkit/Spigot)

На серверных платформах можно сделать это через плагин, который управляет событиями поджигания или состоянием огня у мобов. В найденных источниках чаще встречаются темы “отключить горение на солнце/вечная ночь” и настройка поведения через плагины, но конкретный “универсальный рецепт” зависит от версии сервера и выбранной платформы.

Если вы используете серверные плагины, обычно проще искать настройку “sun burn / mob burning / disable sunlight burn” или писать обработчик события, который отменяет поджигание сущности.

Таблица: что выбрать

Способ Где работает Убирает причину поджигания Устраняет повторное горение Сложность
Датапак с data modify entity ... Fire set value 0 Singleplayer и сервер (ванильный) Нет, вы гасите эффект Да, если запускается каждый тик Низкая
Датапак/скрипт, который отменяет поджигание Singleplayer и сервер Да Да Выше (нужна правильная логика под вашей версией)
Мод “Mob Sunscreen” Forge/Fabric Да (обычно) Да Низкая после установки
Плагин Bukkit/Spigot Сервер Да/частично (зависит от реализации) Да Средняя

Частые ошибки

  1. Проверяете работу функции не каждый тик.
    Если поджигание происходит из-за солнца, то одно “погасить” недостаточно - нужен постоянный контроль.

  2. Ограниченный список type.
    Вы указали зомби, утопленника и зомби-священника. В модпаковом мире могут быть другие разновидности или кастомные сущности.

  3. Путаете Fire и “горит от солнца”.
    Fire это состояние сущности. Даже при Fire=0 солнце может поджечь снова.

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

Итог

Если хотите самый быстрый способ в ванильном мире через датапак, используйте функцию, которая каждый тик ставит Fire равным 0 для нужных типов зомби. Если хотите “чтобы не горели вообще” без риска повторного поджигания - надежнее мод вроде Mob Sunscreen, потому что он меняет отношение мобов к солнечному свету.

Полезные ссылки

  • Minecraft Wiki: Zombie поведение и поджигание на солнце - https://minecraft.fandom.com/ru/wiki/Зомби
  • Форум: попытка убрать горение зомби через prevent_fire.mcfunction (пример кода и обсуждение) - https://forum.mcmodding.ru/threads/kak-sdelat-zombi-ne-gorjaschimi-na-solnce.34194/
  • Мод Mob Sunscreen (заявленная невосприимчивость к солнечному свету) - https://liroro.ru/minecraft/modi/mob-sunscreen/