跳转至

生成规则

生成规则(Spawn Rule)是Minecraft基岩版中控制实体在世界中自然生成的数据驱动系统。生成规则定义了实体的生成条件、生成密度和环境约束,决定了哪些实体在何种条件下可以在世界的哪些位置自然生成(Naturally Spawn)

概述

自然生成是指游戏自动在世界中创建实体的过程,区别于玩家手动使用刷怪蛋、命令或出生点放置的实体。生成规则定义文件以JSON格式编写,存放在行为包的spawn_rules/目录中。

生成规则通过赋命名空间标识符与对应的实体关联。实体的行为定义、客户端表现和生成规则分别位于不同文件中;其中生成规则只描述实体如何参与自然生成,不描述实体生成后的行为。

生成规则还通过population_control指定实体所属的人口控制池。常见池包括animalwater_animalmonstercat。其中cat池按照村庄内的猫数量进行限制,行为不同于其他普通人口控制池。

结构

生成规则的定义文件根键为minecraft:spawn_rules,主要包含以下部分:

描述

描述(description)声明生成规则适用的实体标识符和人口控制池。identifier应与对应实体定义的赋命名空间标识符一致;population_control决定该实体参与哪一类生成数量控制。

生成条件

生成条件(conditions)是一组条件集合,每个条件集合定义一种独立的生成方案。一个实体可以有多个条件集合,每个集合代表一种可能的生成场景。

每个条件集合可以包含以下生成条件组件:

  • 生物群系过滤器(Biome Filter):指定实体可以生成的生物群系类型或生物群系标签。
  • 亮度过滤器(Brightness Filter):指定实体可生成的亮度范围,并可按天气修正。
  • 延迟过滤器(Delay Filter):指定生成条件满足后的延迟生成参数。
  • 密度上限(Density Limit):限制局部区域内实体数量。
  • 困难度过滤器(Difficulty Filter):指定在哪些困难度设置下允许生成。
  • 距离过滤器(Distance Filter):按实体与最近玩家的距离限制生成。
  • 高度过滤器(Height Filter):指定实体可生成的Y坐标范围。
  • 群体(Herd):指定一次生成的最小和最大实体数量,并可关联生成事件。
  • 权重(Weight):指定该生成条件相对于其他条件的选择权重。
  • 变种生成(Permute Type):指定生成时可按权重替换为其他实体类型。
  • 世界年龄过滤器(World Age Filter):按世界已经存在的刻数限制生成。
  • 生物事件过滤器(Mob Event Filter):按世界级生物事件是否激活限制生成。
  • 村庄玩家过滤器(Player In Village Filter):按玩家是否位于村庄范围附近限制生成。
  • 生成事件(Spawn Event):在实体生成时触发指定实体事件。
  • 持久生成标记:通过minecraft:is_persistent使自然生成出的实体不会自然消失。
  • 实验性标记:通过minecraft:is_experimental将生成条件绑定到实验开关。
  • 位置约束:包括minecraft:spawns_on_surfaceminecraft:spawns_undergroundminecraft:spawns_underwaterminecraft:spawns_lavaminecraft:spawns_on_block_filterminecraft:spawns_on_block_prevented_filterminecraft:disallow_spawns_in_bubble等。

旧版组件minecraft:spawns_above_block_filter曾用于按生成点上方的方块限制生成。官方参考说明该组件用于1.17.20及更早版本,并且在至少1.18.0格式版本之后不再工作;新内容不应依赖该组件。

与实体定义的关系

生成规则与实体的行为定义是独立的文件。实体的行为定义描述实体的行为和属性,而生成规则描述实体在世界中的自然生成条件。两者通过相同的赋命名空间标识符建立关联。

移除实体的生成规则文件可以阻止该实体在世界中自然生成,但不会影响通过命令、刷怪蛋或脚本放置的实体。

与生物群系的关系

生成规则通常通过minecraft:biome_filter限定实体出现的生物群系。过滤器可以测试生物群系标签,因此生物群系标签是实体自然生成分布的重要连接点。自定义生物群系若要参与实体自然生成,通常需要具有生成规则所测试的标签,或被生成规则直接引用。

参考

生成规则的字段、默认值、人口控制池和官方生成条件组件详见生成规则参考