1. Вики
  2. /Сущности
  3. /Правила появления

Правила появления

Как заставить своих мобов появляться в мире Minecraft Bedrock с помощью правил появления: фильтры биомов, уровень освещения, размер групп, вес, ограничения плотности и многое другое.

Без правила появления моб появляется только из яйца призыва или через /summon. Правило появления (spawn rule) говорит игре, где и когда моб может появиться сам: в каких биомах, насколько темно должно быть, сколько мобов сразу и как часто по сравнению с другими мобами.

На этой странице используется Рубиновый голем из гайда Файл сущности. Чтобы сделать моба целиком, начните с гайда Ваш первый моб.

Файлы

Пакет поведения
BP/
  entities/
    ruby_golem.json
  spawn_rules/
    ruby_golem.json

Имя файла не важно. Правило связывается с мобом через identifier внутри файла.

Моб должен уметь появляться

Правила появления работают, только если в description файла поведения моба есть "is_spawnable": true.

Первое правило появления

Рубиновые големы появляются в пустынях и пустошах (бесплодных землях) небольшими группами, на песке или красном песке, при дневном свете:

BP/spawn_rules/ruby_golem.json
{
  "format_version": "1.8.0",
  "minecraft:spawn_rules": {
    "description": {
      "identifier": "wiki:ruby_golem",
      "population_control": "animal"
    },
    "conditions": [
      {
        "minecraft:spawns_on_surface": {},
        "minecraft:spawns_on_block_filter": ["minecraft:sand", "minecraft:red_sand"],
        "minecraft:brightness_filter": {
          "min": 7,
          "max": 15,
          "adjust_for_weather": false
        },
        "minecraft:weight": { "default": 6 },
        "minecraft:herd": { "min_size": 1, "max_size": 2 },
        "minecraft:biome_filter": {
          "any_of": [
            { "test": "has_biome_tag", "value": "desert" },
            { "test": "has_biome_tag", "value": "mesa" }
          ]
        }
      }
    ]
  }
}

Почти все ванильные правила появления до сих пор используют "format_version": "1.8.0", так что и вы можете.

Блок description

ПолеЧто делает
identifierID моба. Должен точно совпадать с файлом сущности.
population_controlВ какой пул засчитывается моб. У каждого пула свой лимит, поэтому ваш моб не сможет заполонить весь мир.

Пулы, которые вам понадобятся чаще всего:

ПулКто его использует
animalСухопутные животные, например коровы, свиньи и овцы
water_animalРыбы, спруты, дельфины и аксолотли
monsterВраждебные мобы, например зомби и скелеты
ambientМаленькие фоновые мобы, например летучие мыши

В ванильной игре есть и несколько особых пулов, например cat и pillager, для отдельных мобов.

Условия

conditions - это список. Каждая запись - полный набор правил. Если игра находит место, которое подходит хотя бы под одну запись, моб может там появиться.

Внутри одной записи должен пройти каждый компонент. Поэтому правило выше означает «на поверхности И на песке И при дневном свете И в биоме пустыни или пустошей».

Хотите, чтобы моб появлялся в двух совсем разных местах, например ночью в пещерах и днём на пляжах? Добавьте в список вторую запись, а не запихивайте всё в одну.

Где: на поверхности, под землёй или в воде

Нужен хотя бы один из этих компонентов, иначе мобу негде появиться. Это пустые объекты: достаточно их указать, и они включаются.

КомпонентГде появляется моб
minecraft:spawns_on_surfaceНа земле под открытым небом
minecraft:spawns_undergroundВ пещерах, с блоками над головой
minecraft:spawns_underwaterВ воде
minecraft:spawns_lavaВ лаве, как лавомерки

Их можно сочетать. Ванильные аксолотли используют сразу spawns_underground и spawns_underwater, чтобы появляться в пещерной воде.

На каких блоках

Внутри условия
"minecraft:spawns_on_block_filter": ["minecraft:sand", "minecraft:red_sand"],
"minecraft:spawns_on_block_prevented_filter": ["minecraft:cactus"]
  • spawns_on_block_filter: блок под мобом должен быть одним из этих. Один блок можно записать просто строкой.
  • spawns_on_block_prevented_filter: на этих блоках моб никогда не появится.

В каких биомах

minecraft:biome_filter - это обычный фильтр, обычно с проверкой has_biome_tag. У каждого биома есть несколько тегов, например desert, forest, ocean, frozen, overworld или nether. Проверять тег лучше, чем перечислять биомы по одному, потому что так вы захватите и варианты биомов, и биомы из других аддонов.

Внутри условия
"minecraft:biome_filter": [
  { "test": "has_biome_tag", "value": "overworld" },
  { "test": "has_biome_tag", "operator": "not", "value": "ocean" }
]

Обычный список работает как all_of: здесь это «в Верхнем мире, но не в океане». Какие теги есть у каждого биома, смотрите в разделе Ванильные биомы, а как биомы получают теги - в разделе теги биомов.

Теги animal и monster

У большинства сухопутных биомов есть теги animal и monster. Ванильные коровы используют has_biome_tag с animal, а зомби - с monster. Это простой способ сказать «везде, где может жить обычный моб».

Уровень освещения

Внутри условия
"minecraft:brightness_filter": {
  "min": 0,
  "max": 7,
  "adjust_for_weather": true
}

Освещение бывает от 0 (полная темнота) до 15 (яркий дневной свет). Животные обычно используют от 7 до 15, монстры от 0 до 7. Если adjust_for_weather равен true, в дождь и грозу считается темнее, поэтому монстры могут появиться и в пасмурный день.

Как часто: вес

Внутри условия
"minecraft:weight": { "default": 6 }

Когда игра выбирает, какого моба создать в каком-то месте, мобы с большим весом выбираются чаще. Для понимания масштаба: у ванильных коров 8, у летучих мышей 10, а у зомби 100. Для редкого моба начните с малого и повышайте вес во время тестов.

Сколько: стая (herd)

Внутри условия
"minecraft:herd": {
  "min_size": 2,
  "max_size": 4,
  "event": "minecraft:entity_born",
  "event_skip_count": 2
}
  • min_size и max_size: сколько мобов появляется вместе.
  • event (необязательно): событие, которое вызывается у мобов группы при появлении.
  • event_skip_count: сколько мобов появится до того, как событие начнёт срабатывать.

Пример выше - ванильный приём для семей: первые 2 появляются обычными взрослыми, а остальные получают minecraft:entity_born. В файлах сущностей этих мобов это событие добавляет группу детёныша, поэтому остальные оказываются детёнышами. Лисы и аксолотли делают именно так.

Насколько тесно: ограничение плотности

Внутри условия
"minecraft:density_limit": {
  "surface": 4,
  "underground": 2
}

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

Сложность

Внутри условия
"minecraft:difficulty_filter": {
  "min": "easy",
  "max": "hard"
}

Уровни сложности: peaceful, easy, normal и hard. Враждебные мобы обычно начинают с easy, поэтому на Мирной сложности они не появляются.

Другие условия

КомпонентЧто проверяет
minecraft:height_filterДиапазон высот (min, max), где может появиться моб
minecraft:distance_filterНа каком расстоянии от игрока он должен быть (min, max)
minecraft:world_age_filterСколько должно быть миру, чтобы моб мог появиться (min)
minecraft:disallow_spawns_in_bubbleЗапрещает появление в пузырьковых столбах
minecraft:permute_typeИногда вместо этого моба создаёт другого, с учётом веса. Зомби так создают немного зомби-жителей.

Ночная версия

Хотите, чтобы злые Рубиновые големы жили и в пещерах? Добавьте второе условие с другими правилами:

BP/spawn_rules/ruby_golem.json (conditions)
"conditions": [
  {
    "minecraft:spawns_on_surface": {},
    "minecraft:spawns_on_block_filter": ["minecraft:sand", "minecraft:red_sand"],
    "minecraft:brightness_filter": { "min": 7, "max": 15, "adjust_for_weather": false },
    "minecraft:weight": { "default": 6 },
    "minecraft:herd": { "min_size": 1, "max_size": 2 },
    "minecraft:biome_filter": { "test": "has_biome_tag", "value": "desert" }
  },
  {
    "minecraft:spawns_underground": {},
    "minecraft:brightness_filter": { "min": 0, "max": 4, "adjust_for_weather": false },
    "minecraft:height_filter": { "min": -64, "max": 0 },
    "minecraft:weight": { "default": 2 },
    "minecraft:herd": { "min_size": 1, "max_size": 1, "event": "wiki:become_angry" },
    "minecraft:density_limit": { "underground": 2 },
    "minecraft:biome_filter": { "test": "has_biome_tag", "value": "overworld" }
  }
]

Вторая запись создаёт одиноких големов глубоко под землёй и сразу вызывает у них wiki:become_angry. Это событие взято со страницы События сущностей.

Как тестировать правила появления

Естественное появление тестировать долго, так что упростите себе задачу:

  1. Создайте новый мир в Творческом режиме и поставьте сложность Лёгкая или выше, если ваш моб враждебный.
  2. На время тестов сильно поднимите weight (например до 100), а потом верните обратно.
  3. Полетайте над нужным биомом. Мобы появляются только на некотором расстоянии от игрока.
  4. Используйте /kill @e[type=wiki:ruby_golem], чтобы убрать их, и смотрите, как появляются новые.

Если что-то пошло не так

Что вы видитеСкорее всего, причина
Моб никогда не появляетсяis_spawnable равен false, identifier не совпадает или в условии нет компонента «где», например spawns_on_surface
Моб никогда не появляется в каком-то биомеУ биома нет этого тега. Проверьте Ванильные биомы.
Мобов слишком многоУменьшите weight или max_size или добавьте density_limit
Враждебный моб не появляется на Мирной сложностиЭто difficulty_filter делает свою работу
Монстры появляются днёмadjust_for_weather включён, и идёт дождь

Больше помощи в разделе Когда что-то сломалось. Дальше: Фильтры.

We use cookies to improve your experience and analyse site traffic. Learn more