生成(Spawn)是指生物在世界中被创造的过程和行为。
玩家生成[]
世界出生点[]
每个世界都有一个世界出生点。当玩家刚加入世界或个人出生点不存在或无效时,玩家会生成在这个出生点周围。
当服务器处于冒险模式时,玩家将直接在世界出生点生成,面朝南方。如果世界出生点是一个有碰撞箱的方块,则生成位置自动向上直到找到一个不存在碰撞的位置。
当服务器处于除冒险模式以外的其他模式时,玩家会在世界出生点及其周围的区域生成。这个区域默认为边长21格的正方形,能通过游戏规则spawnRadius
更改。当玩家生成时,系统会随机寻找一个合适的位置作为玩家的生成位置,这个位置必须满足下面的要求:
找到合适的位置后,玩家会生成在这个位置上最高的可阻挡移动且碰撞箱上表面完整的方块上方,面朝南方。如果这个位置是一个有碰撞箱的方块,则生成位置自动向上找到不存在碰撞的位置。如果找不到合适的位置,则类似处于冒险模式时的生成,玩家直接在世界出生点生成,面朝南方,并自动向上找到一个不存在碰撞的位置。
世界出生点由搜索算法决定,以避免让玩家生成在海洋或河流中。每一个位置都有它的“适合度”,越接近非河流的陆地适合度越高,越接近(0,0)适合度也越大。搜索算法先将生成点设置在XZ坐标各为0的位置上,之后在半径512、1024、1536和2048格的圆上选取一些位置并计算它们的适合度。如果能找到一个更合适的位置,就把生成点设置在找到的位置上。然后继续以当前生成点为圆心,以32格为间隔画16个圆,在这些圆上选取一些位置,计算适合度。如果这些位置中含有更合适的位置,则将世界出生点定为这个位置;如果没有找到,那么世界出生点就是当前的出生点位置。
除世界生成时决定世界出生点外,使用/setworldspawn
也可以改变世界出生点。
个人出生点[]
玩家可以通过床、充能的重生锚或使用/spawnpoint
命令来更改个人出生点。如果玩家死亡时个人出生点被阻挡(或被破坏等),他们将被迫重生在世界出生点。
当玩家重生时,系统会避免玩家重生在错误的位置。一个合适的重生位置满足下列要求:
- 这个位置必须位于世界边界内。
- 这个位置上的方块和它上方的方块都不能带有
#invalid_spawn_inside
标签。 - 这个位置上的方块碰撞箱不会和处在方块中心的玩家碰撞箱产生碰撞,这使得玩家不会在阻止移动的方块内生成。
- 这个位置下方的方块必须具有碰撞箱,所有可攀爬的方块在这里都被认为没有碰撞箱,这使得玩家不会在梯子上生成。
当有多个位置满足上方要求时,系统会优先选择满足下列要求的位置:
如果玩家的个人出生点是床,那么可用的重生位置是床的四周和床的上方。如果这张床的下面还有一张床,那么可用的重生位置是下面那张床的四周和上面床的上方。重生时玩家视线水平看向床头。如果所有可用重生位置都不合适,那么这个出生点就被阻挡,玩家将重生在世界出生点。
如果玩家的个人出生点是重生锚,那么可用的重生位置是重生锚的四周及它的上方,重生时玩家视线水平看向重生锚。如果所有可用重生位置都不合适,玩家也会重生在世界出生点。
如果玩家的个人出生点是由/spawnpoint
设置的,那么在重生时只会检查重生位置和它的上方方块的类型,重生后玩家视线看向命令指定的角度。如果这两个方块都不是固体方块或液体,那么玩家会在此生成,否则玩家会在世界出生点重生。
伴随区块生成[]
动物和一些特殊的结构生物在区块创建时生成,这些生成在每个区块内只能发生一次,且不受游戏规则doMobSpawning
影响。由于这些生成与世界生成绑定,所以对于每个种子相同的世界,这些生物都会在固定位置固定角度生成。
初始动物生成[]
在区块创建时,区块生成系统会向地形的表面生成动物。如果区块处于积雪平原和冰刺之地生物群系中,则有7%的概率尝试生成动物;如果区块处于其他生物群系,则有10%的概率尝试生成动物。如果第一次成功判定尝试生成动物,无论生成成功与否,都进行第二次判定是否继续尝试,如果判定失败则停止尝试,否则在这次尝试后继续进行判定,直到判定失败为止。生成方式类似于周期生成,但生成游走范围不会超过本区块,且不检查生物上限。
如果世界噪声设置中的 disable_mob_generation被设置为true,则初始动物不会生成。
结构生物生成[]
一些结构片段中带有实体数据,这些实体会跟随结构片段的放置而生成。下列这些结构都会生成对应的生物:
- 村庄内的村民、铁傀儡、猪、牛、绵羊、骆驼和马。
- 一只单独的女巫和黑猫会在沼泽小屋生成时一起生成。
- 三只远古守卫者会作为海底神殿的一部分生成。
- 潜影贝会作为末地城的一部分生成。
- 卫道士和唤魔者会作为林地府邸的一部分生成。
- 悦灵有概率作为掠夺者前哨站的深色橡木笼子和林地府邸的3种监狱房的一部分生成。
- 一只村民和一只僵尸村民会作为雪屋地下室的一部分生成。
- 溺尸会作为海底废墟的一部分生成。
[仅Java版]
周期生成[]
周期生成是游戏在运行时每游戏刻都会进行的生成操作。如果游戏规则doMobSpawning
为false,游戏就不会进行周期生成。
Java版[]
- 生物类别与生物上限
生物被划分为8种类别,分别为怪物(Monster)、动物(Creature)、环境生物(Ambient)、美西螈(Axolotls)、地下水生生物(Underground Water Creature)、水生生物(Water Creature)、水下环境生物(Water Ambient)和其他(Misc)。僵尸、骷髅等敌对生物属于怪物类别,绵羊、牛、鸡等生物属于动物类别。特例为豹猫,它生成时属于怪物类别,计算上限时属于动物类别。[1]其他类别不用于生成,只用于统计。将生物划分类别是为了防止一类生物过多,也能大致调整生物的比例。
类别 | 上限乘数 | 友好生物 | 自动清除 | 清除半径 |
---|---|---|---|---|
怪物 | 70 | 否 | 是 | 128 |
动物 | 10 | 是 | 否 | 128 |
环境生物 | 15 | 是 | 是 | 128 |
美西螈 | 5 | 是 | 是 | 128 |
地下水生生物 | 5 | 是 | 是 | 128 |
水生生物 | 5 | 是 | 是 | 128 |
水下环境生物 | 20 | 是 | 是 | 64 |
其他 | -1 | 是 | 否 | 128 |
为了阻止生物无限生成,每个生物类别都有它们的生成上限数量。生成上限数量不仅与类别本身有关,也与玩家有关。以每个玩家所在区块为中心的17x17区块都被认为是可生成区块,而每个生物类别的生成上限m是可生成区块数量c、生物类别上限乘数a之积除以289得到的,即。
在单人游戏中,只会有一个玩家,其可生成区块数量恒定为289,这时各生物类别上限数量等于其上限乘数。
在多人游戏中,如果玩家互相远离16个区块以上,则生成上限数量等于玩家数量与上限乘数之积。如果玩家相互靠近,可生成区块的数量就会因为范围重叠而减少,使得生物上限也随之减少。如果所有玩家都在同一个区块,这时玩家的可生成区块范围都互相重叠,总体可生成区块数量为289,各生物类别上限数量等于其上限乘数。
在生成周期开始时,游戏会计算各生物类别的数量。被统计的生物必须满足以下条件:
- 必须处于强加载、弱加载或加载边界区块。
- PersistenceRequired必须为false,具体条件见下文清除。
- 不能正在骑乘其他实体。
- 不能是从桶中放出的鱼和美西螈。
- 不能是手持方块的末影人。
- 不能参与袭击。
在生成周期中,每个生成候选区块在执行生成前都会检查一次当前生物类别是否达到了上限。如果达到了上限,则停止这一类别生物的生成;如果未达到上限,则检查周围的玩家,如果某一个玩家周围128格内所有生成候选区块内的生物数量超出了对应类别的上限乘数,则也不进行对应生物类别的生成。只有当前面两个判定都通过后,才能继续尝试生成,生成的生物将加入计数器,防止一次生成的生物数量过多。
由于生物上限的存在,生物数量很快就会达到饱和。为了使生物刷新的更快,生物就必须死亡或避免统计得够快使总体计数达不到上限。同时,也可以让一个位置存储很多同种类别的生物,用于抑制本类别生物的刷新。
Java版生物上限是每个维度单独计算,互不影响。
渲染距离有可能会影响生物生成。[2]
- 生成周期与生成候选区块
游戏每游戏刻都会进行一次生成判定,但动物类别的生成每400游戏刻(20秒)才会执行一次,以防止生成数量过多又无法自动清除。
为了防止生物生成过远,一些区块不能进行生成。能进行生成的区块都是生成候选区块,它需要满足下列情况:
- 可生成位置
选定生成候选区块后,系统也不能保证所有位置都能进行生成。有些位置可能不适合生物生成,例如含有可以使生物受到伤害的方块或距离玩家过近。一个允许进行生成的位置,即可生成位置,需要满足下面的条件:
- 距离世界出生点和任何玩家24格(欧几里得距离)以外。
- 与最近玩家的距离小于对应生物类别的清除半径,即水下环境生物不能超过64格,其他类型生物不能超过128格,动物类别的生物、掠夺者和潜影贝则无视此条件。
- 以方块位置底面中心为底面中心的实体碰撞箱范围内不存在其他碰撞箱与之碰撞。比如在一格空气且上方为一个上半活板门的位置苦力怕可以生成,但僵尸却不可以生成。
- 对于生成在水体内的生物(鱼、美西螈、溺尸、守卫者等),生成位置必须为水且上方方块不能是红石导体。
- 对于生成在熔岩内的生物(炽足兽),生成位置必须为熔岩。
- 对于生成在地面上的生物,有下面这些额外条件:
- 位置下方的方块必须为可生成方块。
- 位置上的方块和位置上方的方块必须为有效空方块。
- 某一具体生物可能还具有额外的检查条件,详见各生物的生成章节。
- 绝大部分动物都要求位置下方方块必须是带有
#animals_spawnable_on
的方块,且方块光照或天空光照大于8。 - 绝大部分怪物都要求非和平难度。
- 对于主世界怪物,方块光照必须为0,内部光照不大于7,且内部光照越低生成概率越大。
- 对于下界怪物,只要求内部光照不大于7。
- 绝大部分动物都要求位置下方方块必须是带有
- 生成势
在一些生物群系中,为了控制生物密度,生物生成时会额外检查“生成势”。这个系统将生物赋予了势能,并向它的周围扩散这种势能。如果一个位置的总势能大于生物的最高势能,则生物就无法在这里生成。
假设在一个空间内有N个具有生成势的生物,每个生物的生成势为,则对于空间内的点P,它的势能,其中为点P到对应生物位置的欧几里得距离,c为要生成生物的生成势。以诡异森林的末影人举例,它的生成势为1,那么对其他末影人,以它的中心半径为1的球上势能都为1,半径为2势能为0.5,半径为8势能为0.125,而末影人本身的最大生成势为0.12,即如果一个位置的势能超过0.12那么它就无法生成,所以在诡异森林中末影人在生成时至少会间隔9格。
- 成群生成
在每个生成周期内,游戏会尝试在每个生成候选区块每种生物类别尝试进行一次成群生成。生成系统先在区块内随机选择一个水平坐标作为生成起始点的水平坐标,再计算此坐标上的最高方块高度(调试屏幕中SH行的S值,又被称为lc值[3])和维度最低建筑高度,在区间内随机选择出一个整数作为生成起始点的高度。如果生成起始点高度正好为维度最低建筑高度,那么此次生成失败,不进行接下来的生成操作。如果生成起始点是一个红石导体,生成也会直接失败。
每次生成都分为三次更基础的生成。基础生成只会指定一种生物进行生成,即一次生成内最多生成三种生物。每次基础生成开始时,系统先将生成点水平移动,XZ方向各移动-5~5格,移动距离越远概率越小,这种移动被称为生成游走。[4]在游走完毕后,系统检查出生点是否距离玩家或世界出生点24格远,如果在24格内,则继续游走直到找到满足条件的位置。如果游走超过了1-4次还没有找到满足条件的位置,此次基础生成失败,开始下一次基础生成。
如果找到了满足条件的位置,系统会计算这个位置对应生物类别可以生成什么生物,并决定这次要生成什么生物和生成的数量。一个位置可以生成什么生物是由这个位置的生物群系和生成结构决定的,生成结构的生物判定优先于生物群系的生物判定,这些生成数据都可以在对应生物群系和生成结构条目找到。如果这个位置不允许生成对应生物类别的生物,则直接中止这次基础生成。对于一些生物群系和生成结构,生成系统有特殊判定:
- 如果生物类别是水下环境生物,且位于带有
#reduce_water_ambient_spawns
标签的生物群系,则只有2%的概率会生成生物。 - 如果生物类别是怪物,且位于下界要塞范围内,如果位置下方方块是下界砖块或位于结构片段内则使用下界要塞的生物生成表,否则使用对应生物群系的生物生成。
决定生物及其数量后,开始尝试生物放置。如果放置位置是一个可生成位置,则生物成功生成;如果放置位置不是可生成位置,则不进行生物生成。无论生物生成是否成功,只要没有达到指定的放置数量,生成点就会继续游走决定新的放置位置并尝试生成,直到达到放置数量(生成失败也算一次放置)。如果本次生物类别成功生成总数超过了当前生成生物的最大群体数量限制(通常为4,恶魂和掠夺者为1,狼和鱼为8,马类生物为6),则整个生成结束,开始下一个生物类别或下一个区块的生成。
由于生成游走本身不会修改生成点的高度,所以一个位置越平坦,成群生成的效率就越高。同时,因为生成点高度与最高方块高度有关,最高方块越低对应着每一层高度被选中的概率越大,如果整个维度只有一层可生成方块且放在最低建筑高度,那么每游戏刻成功找到一个合适的生成位置的概率为50%;相反,如果一个区块的最高建筑高度上放满了方块,它区块内的每一层被选中的概率就会很小,导致生成生物在高度上变得更加分散。
基岩版[]
在基岩版中的自然生成与在Java版中的有某些相似之处。在基岩版中,有两种主要的生成类型:集群生成与结构生成。结构生成指生物作为结构的一部分生成(如下界要塞、沼泽小屋等)。集群生成负责其他所有自然生成,包括单独生成的生物。在生成条件和生物上限上,两种自然生成遵守(和Java版)相同的规则,然而绝大多数动物可以生成于光照等级高于7的地点,而非高于9的。
在基岩版中,生物生成的范围取决于模拟距离n。如果模拟距离为4,那么生物生成在距玩家欧几里得距离24-44格远处;如果模拟距离n大于4,则是欧几里得距离24-128格远处并且曼哈顿距离小于等于n-1个区块。每一游戏刻每一区块有11⁄2000的概率运行生成算法。
- 生物上限
有两种主要的生物上限影响生成:全局生物上限、用于一般生物的种群控制上限和用于个别生物的密度上限。无论难度如何,自然生成的全局上限总是200。全局上限仅影响自然生成,不影响繁殖、刷怪蛋、/summon
、刷怪笼或其他种类的生成。只有玩家周围和通过/tickingarea
手动设置的常加载区域中的生物纳入全局生物上限的计算之中;未加载的生物不计算。
除全局生物上限之外,还有种群控制上限。种群控制上限限定了每种生物在尝试生成的区块周围9×9区块的区域内的个数。常加载区域之外的生物,只要它们在登录时就已经加载,就会计入种群上限之中。种群上限分为截然不同的两类:平面生物上限和洞穴生物上限。洞穴生物不会计入平面生物上限中,反之亦然。决定生物计入哪个上限之中的是其生成时的位置,而非当前所在的位置。对于集群生成,生成在最高可生成方块的生物计入平面上限,否则计入洞穴上限。结构生成的生物和转化的生物永远计入洞穴上限,而刷怪笼生成的生物计入平面上限。
生物分为以下五种:环境生物、动物、怪物、掠夺者和水生生物。每一个维度下每种生物的在不同地点的种群控制上限如下所示(以星号标记的上限出现在代码中,但是未被使用):
类别 | 地点 | 主世界 | 下界 | 末地 |
---|---|---|---|---|
环境 | 平面 | 0 | 0 | 0 |
洞穴 | 2 | 0 | 2* | |
动物 | 平面 | 4 | 0 | 4* |
洞穴 | 0 | 4 | 0 | |
怪物 | 平面 | 8 | 0 | 10 |
洞穴 | 16 |
16 | 8* | |
掠夺者 | 平面 | 8 | 0 | 8* |
洞穴 | 8 | 0 | 8* | |
水生 | 平面 | 36 | 0 | 36* |
洞穴 | 0 | 0 | 0 |
某些生物亦有其自己的密度上限,这使得其数量略小于种群控制上限。密度上限和种群控制上限的检查方式相同。
生物 | 平面上限 | 洞穴上限 |
---|---|---|
鳕鱼 | 20 | 不生成 |
苦力怕 | 5 | 无限(受种群控制上限的限制) |
海豚 | 5 | 不生成 |
溺尸 | 5(海洋) 2(河流) |
不生成 |
恶魂 | 不生成 | 2 |
河豚 | 3 | 不生成 |
鲑鱼 | 10(海洋) 4(河流) |
不生成 |
鱿鱼 | 4 | 不生成 |
热带鱼 | 20(预设图案) 20(随机图案) |
不生成 |
- 生成条件
以下规则适用于绝大多数生物:
- 该生物仅能玩家附近24至44格(如果模拟距离大于4则上限为128格)的球形中生成。
- 该生物的底部(站立生物的脚部,如果该生物的身高小于等于一格则是全身)仅能在空气方块或是水方块(水生生物)之中生成。该规则无视一些自然生成的不阻碍运动的方块,如草和花。
- 该生物必须生成在一个完整的固体表面之上。(生物不能生成在地毯、下半块台阶、栅栏、向上的楼梯、红石中继器和箱子等之上)
- 该生物不能生成生成在完整透明方块,如玻璃和树叶之上。
- 对于能够生成并漂浮在空气或水中的生物,检查生成条件的方块是该生物生成位置向下第一个固体方块之上紧邻的空气或水方块。(因此,幻翼不能在铺满地毯的平原上空生成,鱼也不能在铺满下半块台阶的海洋之中生成)。
- 绝大多数主世界怪物不能在亮度高于0的地点生成。
- 绝大多数主世界动物不能在亮度低于7的地点生成。
- 集群生成
集群生成分为以下两步:首先尝试生成平面生物,然后尝试生成洞穴生物。在生成之前,会在当前区块周围9×9区块的正方形区域内计算种群控制上限。然后,生成开始并在被计算的区块内随机选择X和Z坐标。Y坐标通过从世界高度向下搜索至第一个上方一格没有阻碍生成方块且顶部为固体的方块来计算得到。生成算法会将该方块当作平面方块,同时尝试生成一群平面生物。然而,如果生成算法在找到平面方块之前就遇到了固体方块(比如树叶下方的树干),那么就不会尝试进行平面生成。此后,生成算法继续向下搜索至下一个合适的,上方一格没有阻碍生成方块的方块。找到满足上述要求的方块后,生成算法会尝试在该方块处生成洞穴生物。洞穴生成会一直持续至Y坐标达到世界底部,并且不会在生成生物后停止。
尝试集群生成平面或洞穴生物时,生成算法会通过以下步骤得到生成何种、多少生物。
- 选择一种随机生物
- 如果当前生成位置为液体,选择随机水生生物
- 如果光照等级大于等于7,当前位置上方没有其他方块且当前位置为草方块,则选择随机动物
- 否则,按照怪物生成所需要的亮度条件生成怪物
- 选择随机数字作为该集群的生物数量。每种生物都有自己的最小和最大数量,且该数量可能受难度和生物群系的影响
- 确保生成位置满足生成条件
- 由全局生物上限限制生成生物的数量。如果生物数量已经达到或者超过生物上限则生成不会发生
- 对于每个生成的生物,检查是否超过种群控制上限或是生物密度上限
- 如果生成当前生物不会超过两个上限,则生成该生物的概率由以下公式计算:
(生物密度上限-当前生物密度)/生物密度上限
- 如果生成当前生物不会超过两个上限,则生成该生物的概率由以下公式计算:
- 最后,尝试生成该生物
- 生成生物可能失败,比如生成在方块或是墙壁当中时。
- 周期结构生成
游戏会尝试于自然生成的结构中的特定相对X、Z坐标(称为“硬编码生成点”)进行结构生成。含有硬编码生成点的结构包括沼泽小屋、海底神殿、掠夺者前哨和下界要塞。每当含有硬编码生成点的区块中进行了一次成功的集群生成,环境生成算法亦会尝试进行结构生成。注意此处的成功指找到可生成的方块,即使由于光照或是密度检查而未能生成生物。结构生成遵循和上述集群生成相同的规则和步骤,只有以下不同:
- 特定X与Z坐标位置的Y坐标搜索的起止点由结构的类型决定,而非从世界高度开始至基岩结束。结构生成仅在该区间内第一个可生成方块(即最高的可生成方块)处尝试一次。
- 选择的生物取决于结构:沼泽小屋生成女巫,海底神殿生成守卫者,掠夺者前哨生成掠夺者(包含巡逻队长),下界要塞生成骷髅、凋灵骷髅、烈焰人和岩浆怪。
- 对于结构生成的尝试,有效的种群控制上限提高一个。
其他生成[]
计划周期生成[]
- 猫生成系统会每1200游戏刻(60秒)检查玩家附近的村庄或沼泽小屋,并决定是否生成一只新的猫。
- 灾厄巡逻队会在游戏时间达到100分钟(5个游戏日)后自然生成。若此条件满足,系统每隔10-11分钟会尝试生成一支巡逻队(成功概率为20%)。
- 幻翼每1200游戏刻(60秒)~2400游戏刻(120秒)尝试生成一次,会自然生成在至少72000游戏刻(60分)未在床睡眠超过5秒的玩家上空。
- 每晚的午夜(昼夜更替中的第18000刻),系统有10%的概率尝试安排一次僵尸围城。如果此时有玩家正在村庄内,则有可能触发这次僵尸围城,在村庄内产生大量的僵尸。
[仅Java版] - 在世界创建的24000游戏刻(20分)后,游戏将开始尝试生成流浪商人和行商羊驼,并在此后每24000刻进行一次尝试。
方块事件生成[]
- 如果玩家建造出正确的结构,即可生成雪傀儡、铁傀儡和凋灵。
- 当玩家位于刷怪笼16格范围内时,刷怪笼会在其周围的8×3×8区域尝试生成生物。
- 当虫蚀方块被破坏或周围有蠹虫遭到攻击时会生成蠹虫。
- 蜜蜂可在蜂巢或蜂箱被未带有精准采集的魔咒的工具破坏时生成。当蜂巢或蜂箱内有蜜蜂时蜜蜂也可以自然生成在周围,同时减少方块内的蜜蜂数量。
- 当下界传送门方块接收到随机刻时有概率生成一只僵尸猪灵。
实体事件生成[]
- 动物和一部分其他生物可以使用它们感兴趣的食物进入“求爱模式”,两只进入求爱模式的同种生物可以繁殖生成新的幼年生物个体或对应的蛋类方块。
- 一个村庄中,村民可以自然生成铁傀儡。
- 恼鬼可被唤魔者召唤而生成。
- 带有不祥之兆的玩家进入村庄可以触发一次袭击,袭击中会自然生成女巫、卫道士、唤魔者、掠夺者和劫掠兽。
- 雷暴中可能生成骷髅马,当玩家接近时生成骷髅骑士。
- 僵尸、尸壳、溺尸和僵尸猪灵受伤时可能生成增援。
[仅Java版] - 杀死大型或中型的史莱姆和岩浆怪会生成更多更小的个体。
- 小僵尸、僵尸猪灵
[仅Java版]、溺尸 [仅Java版]、尸壳和僵尸村民生成时有概率附带一只鸡生成而成为鸡骑士。
物品事件生成[]
生物转化生成[]
- 猪被闪电击中时会被替换为新生成的僵尸猪灵。
- 村民被闪电击中时会被替换为新生成的女巫。
- 如果猪灵和疣猪兽被运送至主世界或末地,其会在15秒后变为僵尸猪灵和僵尸疣猪兽。
- 被僵尸杀死的村民有一定概率(普通难度为50%,困难难度为100%)生成僵尸村民。
- 僵尸村民被治愈为村民。
- 僵尸保持浸泡在水中900游戏刻(45秒)会变为溺尸,尸壳保持浸泡在水中900游戏刻(45秒)会变为僵尸。
- 骷髅在细雪中440游戏刻(22秒)会变为流浪者。
- 蝌蚪成长为青蛙。
外部指令生成[]
清除[]
为防止生物一直存在导致卡顿,同时也为了刷新生物,生物有自然清除的机制。生成每游戏刻都进行一次,而清除也是每游戏刻进行一次,这样可以达到生物数量的动态平衡。
Java版[]
生物是否能被自然清除主要取决于它距离最近玩家有多远与生物本身的特性。根据距离最近玩家的远近,自然清除分为两种:
- 立刻清除:如果一个可被清除的生物距离最近玩家超过其生物类别的清除半径(欧几里得距离),则立刻被清除。通常生物此半径为128格,而水下环境生物为64格。
- 延迟清除:如果一个可被清除的生物距离最近玩家超过32格(欧几里得距离),且无动作计数器超过600,则每游戏刻有1⁄800的概率被清除。
无动作计数器是用于记录生物有多长时间没有进行任何行为的计数器。对于所有生物,无动作计数器每游戏刻增长1;对于怪物,如果内部光照等级超过12,则每游戏刻额外增加2;对于所有灾厄村民,每游戏刻额外增加2。如果生物有下列行为,则无动作计数器清零:
- 生物距离最近玩家小于32格。
- 生物受到伤害,无论什么类型的伤害都会重置计数器。
- 这个生物是凋灵。
- 掠夺者、猪灵拉弩。
- 在袭击中将铁傀儡和玩家作为攻击目标的灾厄村民。
- 在袭击中正在扫荡村庄的灾厄村民。
- 正在破门的卫道士。
由于无动作计数器的存在,在32格外但在清除半径内的生物都有最小存活时间。对于可被清除的普通生物,在距离玩家32格以外持续600游戏刻(30秒)才有可能被清除,平均1400游戏刻(70秒)会被清除;对于可被清除的灾厄村民和在亮处的怪物,在距离玩家32格外至少200游戏刻(10秒)后才可能被清除,平均1000游戏刻(50秒)会被清除。
满足下列条件时,生物可以被自然清除:
为防止生物被错误清除,满足下列条件的生物不会被自然清除:
- PersistenceRequired为true的生物不会被清除,下列生物这个标签为真:
- 骑乘其他实体的生物不会被自然清除。
- 从桶中放出的鱼和美西螈不会被自然清除。
- 手持方块的末影人不会被自然清除。
- 参与袭击的生物不会被自然清除。
- 铁傀儡、雪傀儡、村民、流浪商人、监守者、潜影贝、悦灵、末影龙和绝大部分动物不会被自然清除。
- 未驯服的猫在存在2400游戏刻(120秒)后可能被清除。
- 未信任玩家的豹猫在存在2400游戏刻(120秒)后可能被清除。
- 鸡骑士的鸡遵守它上方骑乘僵尸的清除规律。
- 巡逻状态下的灾厄村民不能被延迟清除。
- 正在转变的僵尸村民不能被自然清除。
- 与玩家交易过的村民转变而成的僵尸村民不会被自然清除。
除自然清除外,一些生物有特殊的清除方式。这种清除只要求生物在强加载区块中,不要求最近玩家的距离。
- 自然生成的流浪商人和行商羊驼会在48000游戏刻(40分)后被清除。
- PersistenceRequired为false的末影螨在生成2400游戏刻(120秒)后被清除。
- 监守者在钻回地下后立刻清除。
基岩版[]
在基岩版中,模拟距离为4个区块时,生物如果移动至距离玩家44格以外,则会立刻被清除。
- 当前几乎所有自然生成的生物在模拟距离为4时都会在距离玩家44格或更远时被清除。模拟距离为6或更高时,生物会在模拟距离边界处(距最近的玩家至多128格)被清除。
- 所有鱼都会在距离玩家至少40格时被清除,无论模拟距离为何。
- 如果生物在距最近的玩家32至44格处,其必须在30秒内没有受伤,然后就会有1⁄800的概率被清除。
具有持久性NBT标签的生物不会被清除。以下方式会使生物拥有持久性:
- 该生物与玩家互动:
- 该生物是伴随结构生成的:
以下实体总是拥有持久性:
历史[]
所需信息:其他版本的内容
Java版Classic | |||||
---|---|---|---|---|---|
2009年8月25日 | 生物现在成群生成。 | ||||
? | 生成区域曾经是17×17个区块而不是15×15。该区域被缩小了,但是旧的大小仍然被用于计算生物容量。 | ||||
并不总是能通过防止生物在其他地方生成来够驱使它们聚集于一个生成空间里。一些更早的关于“生成”的资料或许可以作为参考。 | |||||
大量的空余空间曾经能促进一般地区的生物生成。这一点对于一个小一点的规模仍然有效,且由于成组生成的机制而只对水平分布有效。 | |||||
Java版Alpha | |||||
v1.2.0 | ? | 0,0区块(X为0-16且Z为0-16)不再总是首先进行生物生成判定。如果一个人在此区块建了一个暗室,那所有的生物都会生成在其中,而导致其他地方都没有。 | |||
Java版Beta | |||||
1.8 | pre1 | 玩家的出生点必然位于特定的生物群系中,而非此前的必然在沙子上。玩家可以生成在森林、沼泽和针叶林中。 | |||
Java版 | |||||
1.0.0 | ? | 在此之前,生成只被光照等级所决定而不是当前区块的属性。攻击型生物在光照等级7或更低的地方生成而被动型生物在光照等级9或更高的地方生成。因为这一点,尽管在有光照的地方仍有很小的概率生成攻击型生物,归因于它们在无光照的空中生成。另外如果你带了很多火把下矿,然后返回,你很可能将会看到你的房子里面有一些牛、猪、鸡或绵羊在里面到处跑。 | |||
1.1 | 12w01a | 对玩家的生成位置的有效生物群系进行了调整。玩家现在能生成在森林、平原、针叶林、繁茂的丘陵和针叶林丘陵里。 | |||
1.2.1 | 12w03a | 玩家的出生点现在可能在丛林和丛林丘陵生物群系里。 | |||
1.8 | 14w25a | 成群生成的大多数限制被移除。在此之前必须为空气,现在可以为任意透明方块。 | |||
1.9 | 15w46a | 当生成敌对生物时,要求生成点的方块不能阻止生物的移动(以前只是不透明的),不能是任何类型的铁轨。此外,上面的方块不能再是液体。 | |||
15w51a | 添加spawnRadius 游戏规则以控制玩家能在距离世界出生点多远的位置重生。 | ||||
pre2 | 调整了成群生成的机制。“12次尝试”现在为“至多12次尝试”,且中心的生成权重更大。 | ||||
1.15 | 19w37a | 可繁殖的生物自然生成为一群时,这群生物可能包括幼年个体。(概率为5%或10%,取决于生物种类) | |||
1.18 | exp1 | 现在按照普通机制生成的主世界敌对生物都只会在方块光照等级为0时自然生成,此版本之前它们在光照等级不高于7时即可生成。 | |||
exp2 | 将僵尸、骷髅、蜘蛛和洞穴蜘蛛刷怪笼刷怪区域的方块光照等级上限提高到11。 | ||||
exp3 | 生物的生成速度不再在低处增加或在高处减少。新生成速度类似于1.17中高度为64处的速度。 | ||||
exp5 | 撤回了1.18-exp3的更改。 | ||||
21w37a | 撤回了1.18-exp2的更改。 | ||||
21w40a | 鳕鱼、鲑鱼、河豚、热带鱼、鱿鱼和海豚现在仅生成于高度在50至64之间的水中,在此之前的高度范围是46至62。 | ||||
21w42a | 重新设计了世界出生点算法,现在会根据与控制生物群系放置和世界生成一致的气候参数来选取。玩家不应再会在海洋或其他不方便活动的地方出生。 |
参考[]
外部链接[]
- 来自Marglyph的论坛帖子讨论了Beta 1.2中的生成算法。
- 来自fr0stbyte124的论坛帖子讨论了从Alpha v1.1.2_01至万圣节更新之前生物生成的变化。
语言