条目中某些信息已经不符合当前版本情况。
生成(Spawn)是指玩家和生物在世界中被创造的过程和行为。
玩家的生成
世界生成
当服务器处于除冒险模式以外的其他模式下时,新玩家最初将在世界出生点周围的小片区域内生成。区域默认为21×21格,但能通过修改spawnRadius
游戏规则在单人或多人游戏中更改。一旦死亡,玩家将在该区域内重生,除非他们的个人重生点已经被更改。
当玩家生成时,出生在出生点的X轴与Z轴的相应位置的最高处,即使这样的生成算法会把玩家放到最大建筑高度的上面。这个区域将不考虑实体生成在什么可怕的地方,因此,若在X轴和Z轴的位置没有方块,就可能会导致玩家生成在虚空上方。
世界出生点也决定了永久加载的出生点区块的中心。
世界出生点可通过/setworldspawn
更改。
基岩版世界生成搜索
在基岩版中,当玩家创建一个新的世界时,世界出生点会被限制到特定的生物群系中。该算法从坐标(0,0)开始一直搜索,直到找到可以成为世界出生点的生物群系为止。通过使用附加包,还可以指定一个稀有的生物群系,来让玩家生成在较远的地方。不过如果这个生物群系不存在或无法生成,那么游戏将会崩溃。
算法将搜索这些生物群系:
玩家会生成在以已选生物群系的选中点为中心、半径为5的范围内,有时会导致玩家生成在出生生物群系之外,比如在沙滩、河流或沼泽。
冒险模式
当服务器的默认游戏模式被设置为冒险模式(通过使用server.properties)时,就会忽略正常的生成机制,并直接在世界出生点上生成玩家。这包括了XYZ轴坐标,即使没有阻挡及上方有方块存在。
如果Y轴不是一个有效的生成区域直到服务器找到有效为止,大多数玩家可以生成在Y=256。如果生成区域中间是空气,玩家会生成在空气中,甚至在出现空隙(如果有)的情况下时会掉进虚空里。
个人生成
玩家可以通过在床上睡觉或使用/spawnpoint
命令来更改出生点。如果玩家死亡时个人重生点被阻挡(或被破坏等),他们将被迫重生在世界出生点。
在床上睡觉允许对外界干扰,但如果原来的出生点被阻挡,玩家将尝试在床附近的其他方块上重生。
自然生成
许多生物在区块创建时生成,这个事件只能在每个区块内只能发生一次,且不受/gamerule doMobSpawning
命令的影响。
动物的生成
大约十分之一的新生成区块中将包含生物,通常是一群最多到4只的同种动物。它们总在该区块柱状区域中最高的有效方块生成,换言之就是可以看到天空的地方。此方块必须是不透明的方块而且其上两个方块必须是透明方块。方块上面并不需要有草也不需要被照亮(生物生成也是同理)。
动物并不会在沙漠和海洋生物群系中生成(兔子和鱿鱼除外)。兔子只能生成在沙漠、积雪的平原、针叶林、巨型针叶林、和积雪的针叶林生物群系中。哞菇只会生成在蘑菇岛生物群系中。
动物生成的随机性来源于世界种子,这意味着具有相同种子的世界中区块内将在相同的地方生成相同动物。
其他生物
下列生物在/gamerule doMobSpawning
被设置为false
仍会生成。
- 村民作为村庄生成时的一部分生成。
- 僵尸村民作为僵尸村庄生成时的一部分生成,它们永远不会消失。
- 单个女巫小屋在生成时携带1个女巫。
- 3个远古守卫者作为海底遗迹生成时的一部分生成。
- 末影龙作为末地生成时的一部分生成。末影龙可通过在出口传送门上放置末地水晶重生。
- 潜影贝作为末地城的一部分生成。
- 卫道士和唤魔者作为林地府邸的一部分生成。
- 1个村民和1个僵尸村民作为雪屋地下室的一部分生成。
- 一些溺尸作为海底废墟或沉船的一部分生成。
- 铁傀儡作为掠夺者前哨站和村庄的一部分生成
生成周期
Java版
生物大致划分为四种:攻击型,被动型,水生型(也就是鱿鱼和鱼)和环境型(也就是蝙蝠)。攻击型生物有一个每游戏刻(1/20秒)一次的生成周期。被动型和水生型生物只有每400刻(20秒)一次的生成周期。因为这一点,攻击型生物可以在任何时候生成,而动物生成则非常少。大多数生物在区块生成时一同生成。
生物生成通常情况下在玩家周围15*15区块(240*240方块)内。当在多人游戏中,攻击型生物会在任意一名玩家的上述距离之内生成。然而,远于所有玩家128方块距离之外的怪物会立即被清除(参见清除一节),所以攻击型生物生成区域被有效地限制在以每一玩家为中心的半径128方块内的球形范围里。生物容量为所有玩家共享,无视玩家位置。
生物容量
生物容量与适合生成的区块总数直接成比例。要计算容量的话,生成区域在每一方向上均扩展一个区块,所以有17*17区块的大小,然后总的区块数被代入到下式中:
容量=常量*区块数/289
每一种生物均具有自己的容量计算和公式中不同的常量值:
攻击型 = 70 被动型 = 10 环境型(蝙蝠) = 15 水生型(鱿鱼) = 5
在单人游戏模式下,区块计数总为17*17=289,那么各种生物的容量也就是上面列出的数值。在多人游戏中,在多个玩家范围内的区块只被计算一次,所以玩家越分散,更多地区块会被覆盖且会有更高的容量。
在每次生成周期的开始都会检查一次容量。如果存活的生物数量超过它的容量,整个生成周期就会被跳过。检查生物和计算生物容量的区域时相同的,生成区域被每个方向上的1个区块拓展。
成群生成
在每一生成周期中,会在每一个合适的区块中进行一次生成一组生物的尝试。该区块内选择一个随机地点作为这组生物的中心点。为生成这组生物,中心方块对水生生物而言必须是水方块,对所有其他生物来说则必须是空气方块。注意在后面的情形中,它一定得是空气方块。任何其他方块,哪怕是一个透明方块都会阻止整组生物的生成。
如果该组位置合适,会在以中心方块为原点41*1*41的范围(就是41*41格大小的方型,有1格高的区域)内进行12次尝试以生成多至4个的生物(狼是8个,恶魂是1个)。生物将会在这一区域生成其身体的最下部分。在每次生成尝试中,会在这一区域中随机选择一个方块的地点。尽管生成区域能扩展到中心21格之外,但是随机选出的地点强烈地向该组的中心集中。大约有85%的生成将会在该组中心的5格以内,99%会落在10格以内。
组内所有的生物都是相同的种类。在该组第一次生成尝试时从该地区所适合生成的种类中随机挑选一种以决定整组的种类:
- 在主世界,这取决于生物群系:
- 森林、针叶林、巨型针叶林及其变种也能生成狼。
- 平原和热带草原能生成马,但热带草原的生成几率只有平原的1⁄5。
- 丛林也能生成豹猫和鹦鹉,且会增加生成鸡的几率。
- 积雪的生物群系(积雪的针叶林除外)只会生成兔子和北极熊。
- 沙漠只能生成兔子。
- 沙滩、石滩河流、海洋和恶地不能生成动物,只能生成攻击型生物和鱿鱼。
- 蘑菇岛只能生成哞菇。
- 在沼泽生物群系中的沼泽小屋中只能生成女巫。
- 海底遗迹只能生成守卫者。
- 其余的结构能生成羊、猪、鸡、牛、兔子、蝙蝠、蜘蛛、僵尸、骷髅、苦力怕、末影人、女巫、史莱姆、女巫、鱿鱼、幻翼和海豚。
- 史莱姆只有当它们位于第40层以下的任何符合条件的区块中时才会生成,或者在沼泽中的暗处生成。
- 在下界,生成位置变化很小:
- 在末地,只有末影龙生成。
生成条件
每次独立的生成尝试只有在以下的所有的条件都符合时才能成功:
- 生成方块在周围24格内(球体)不能有玩家或者玩家出生点。
- 单种生物的数量少于该生物的容量。
- 如果生成的是蝙蝠,则...
- 生成的方块的高度必须为62或更低。
- 如果真实世界内的日期为10月20日至11月3日,亮度等级为7或以下,其余时间为4或以下。
- 如果生成的是动物(豹猫和哞菇除外),则...
- 生成的方块的下面必须是草。
- 生成的方块的周围亮度必须是9或者更高。
- 如果生成的是一个攻击性生物(下面提到的除外)生成在主世界,则...
- 如果生成的是史莱姆,则...
- 如果生成的是恶魂,则...
- 用于攻击型生物的亮度检查机制不适用于此。
- 有95%的几率生成失败,因此生成几率只有正常情况下的1⁄20。
- 如果生成的是烈焰人,则...
- 用于攻击型生物的亮度检查机制不适用于此。
- 生成亮度必须为11或更低。
如果上述所有条件均满足的话生物就生成了。当4个生物生成(或者是8只狼、1只恶魂和3只兔子)或完成12次尝试(此条件优先)后该组即告生成完成。末影龙和凋灵不适用上述规则。
注解
- 由于普遍性的方块检查,除了鱿鱼之外几乎所有生物必须生成于一个上方至少带两格无障碍空间的不透明方块的顶端,甚至恶魂等也是如此。然而如果上面一格的方块是透明的话(譬如一个玻璃方块或活塞),矮个子的生物可以在一格高的空间里生成。
- 单个的生物可以在告示牌、压力板和其他的透明非固体方块中生成,但一组生物不可以。它们需要一个完全空白的方块作为中心。因为一组生物都是在同一高度生成,这就需要在一个平坦的表面上有一些空气方块以允许生物生成,且空气方块越多就允许生成更多。
- 通常情况下,室外有空气的建筑比地下室能在室内生成更多的生物,因为在室外生成的群组可以在室内生成生物。
- 生物容量在很短的时间内就趋于饱和。因为这一点,通过让生物聚集于一个生成空间里(比如刷怪塔)可以防止生物在室外生成。
- 容量的存在也意味着生物死得越快,生成得就越快。
- 因为只在生成周期的开头检测(生物)容量,所以当一次周期生成大量生物时,容量可被戏剧性地超出。这在鱿鱼身上经常发生,它们容量正常情况下很少(单人游戏中是5),但是在一个有很多水的地方可以一次周期内生成很多。
- 如果玩家的视野距离或多人游戏中的服务器视野距离为9或更低,则怪物生成数量会严重减少(或者它们消失太快),并且可能导致玩家根本没有遇到怪物。请将视图距离设置为10或更高,以确保怪物正确生成。
基岩版
基岩版的自然生成机制只和Java版共享一小部分。在基岩版中,主要有两大类自然生成机制:成群生成和结构生成。结构生成是指生物作为结构的一部分生成,例如下界要塞和女巫小屋等等。成群生成占据其他种类的自然生成,包括单独生成(即不包括2个或更多)。两种机制都遵循相同的生成条件和生物容量规则。
生物生成在以玩家为中心的6个区块的圆柱形范围内,在每个区块内评估。如果模拟距离小于6个区块,则模拟距离内的区块才能生成生物。生物生成的算法有1⁄200的几率尝试在每个区块每刻中运行。
生物容量
主要有两种影响生成的生物容量:全局生物容量和生物密度容量。全局容量被设定为200,无视难度。全局容量仅影响自然生成,不影响通过繁殖、刷怪蛋、/summon
命令、怪物蛋和其他类型的生成。生物在常加载区域(玩家周围或使用命令/tickingarea
)内才会算进全局容量。生物也能拥有独自的容量:
生物 | 地表容量 | 洞穴容量 |
---|---|---|
恶魂 | 0 | 2 |
苦力怕 | 5 | 无限制 |
其他 | 无限制 | 无限制 |
生物密度容量。密度容量限制每种或每分类的生物在9×9方形区域内每区块是否有资格生成生物。常加载区域外的生物会被算进生物密度容量。密度容量能被分为2种不同的分类:地表生物和洞穴生物彼此相互独立。
生物有4种分类:环境、动物、敌对生物和水生生物。每个维度内每个分类的密度容量以及生物位置如下:
分类 | 位置 | 主世界 | 下界 | 末地 |
---|---|---|---|---|
环境 | 地表 | 0 | 0 | 0 |
洞穴 | 2 | 0 | 0 | |
动物 | 地表 | 4 | 0 | 0 |
洞穴 | 0 | 0 | 0 | |
敌对生物 | 地表 | 8 | 0 | 10 |
洞穴 | 8 | 16 | 8 | |
水生生物 | 地表 | 4 | 0 | 0 |
洞穴 | 0 | 0 | 0 |
生成条件
以下规则适用于所有生物:
一些附加规则适用于指定分类的生物。
水生生物:
- 不能离开流体生成。
敌对生物:
- 亮度大于7时不能生成。
非水生生物:
成群生成
成群生成的发生有两个阶段:首先尝试生成地表的生物,然后尝试生成洞穴里的生物。在生成前,生物的密度容量基于当前区块周围的9x9方格区域计算。生成开始于当前区块评估后选择随机的X和Z坐标。Y轴坐标的选择为由世界高度开始,向下寻找固体方块以及其上面的一个非固体方块。找到的第一个这样的方块被认为是地表,算法将尝试生成一群地表生物。然后算法继续向下搜索下一个固体方块,以及其上方的一个非固体方块。当找到满足标准的方块时,算法将尝试生成一群洞穴生物。洞穴生成会一直进行,直到Y轴到达世界的底部,而且一群洞穴生物生成后也不会停止。
地表生物和洞穴生物会尝试通过以下步骤去决定生物的生成和生成时的数量:
- 将一种同类的随机生物集合起来。
- 如果生成位置是流体,则会将一种同类的随机水生生物集合起来。
- 如果亮度大于7,且生成位置上面没有其他方块,生成区域为草方块,则会生成随机的被动型生物。
- 否则会生成敌对型生物。
- 选择生物的随机数量,每种生物有自己的最大值或最小值数量,生成的数量由难度决定。
- 确保生成位置有合适的生成条件。
- 根据全局生物容量去限制生物生成数量如果生物数量达到或超过容量,则不会生成生物。
- 对于每个生物的生成,会检查生成是否超过生物密度容量上限。
- 如果生成的生物没有超过上限,然后可以使用公式计算生物生成的概率:
(生物密度容量 - 当前生物密度) / 生物密度容量
- 如果生成的生物没有超过上限,然后可以使用公式计算生物生成的概率:
- 最后,生物会生成于地图里。
- 有时生物的生成会失败,例如生成位置被墙或方块阻挡。
其他类型的生成
- 牛、鸡、猪、羊、哞菇、兔子、村民、豹猫、羊驼、熊猫、猫和狼可以进行繁殖。除村民之外,这些繁殖方式需要玩家饲喂它们。
- 一枚扔出去的鸡蛋有1/8的几率生成一只小鸡,其中又有额外1/32的几率从一枚鸡蛋中生成4只幼年鸡,所以共计有1/256的几率扔一只鸡蛋获得4只幼年鸡。
- 雪傀儡、铁傀儡和凋灵可由玩家使用正确的生成结构而生成。铁傀儡也可以在有许多村民的村庄里生成。
- 鳕鱼、鲑鱼、河豚和热带鱼可通过倒空对应的鱼桶生成。
- 怪物蛋在被破坏或附近的蠹虫被攻击时会生成一条蠹虫。
- 僵尸可以在午夜无视大多数生成限制而生成,导致僵尸围城事件发生,事件甚至可以在蘑菇岛生物群系和
/gamerule doMobSpawning
为false
时发生。游戏将尝试在17x7x17区域内进行10次尝试,该区域以村庄半径内的一个区块为中心,Y轴与村庄中心的值相同。 - 僵尸猪人可以在主世界的下界传送门生成,无视玩家和亮度等级。
- 末影螨在玩家投掷末影珍珠后随机生成。
- 中型和大型的史莱或岩浆怪被杀死时会生成更多同类,不过要小上一个尺寸。
- 当猪被闪电击中后,它会转变为僵尸猪人。
- 当村民被闪电击中后,它会转变为女巫。
- 当苦力怕被闪电击中后,它会转变为闪电苦力怕。
- 刷怪箱会在周围生成其里面的生物。自然生成的刷怪箱会生成以下生物:僵尸、骷髅、蜘蛛、洞穴蜘蛛、蠹虫和烈焰人。但可以对刷怪箱会使用命令或刷怪蛋来生成其他怪物。它们和生成周期有相同的生成条件,但敌对生物可能会在它们下面没有方块的情况下生成。
- 在创造模式下,玩家可以用刷怪蛋来生成大多数生物。当用此法生成生物时,会忽略所有的常规生成需求,如光照等级和方块类型等。
- 使用
/summon
命令可以生成任意实体。
清除
Java版
敌对生物(治愈中的僵尸村民除外)、蝙蝠、鱿鱼、海豚、豹猫(存在了2400刻后)、鸡骑士的鸡和其他的敌对生物包括未驯服的狼
- 生物其半径32格内没有玩家的情况下超过30秒,每刻(0.05秒)就有1⁄800的几率被清除,即每秒2.47%的几率。因此,这些生物的半衰期为27.73秒(最初的30秒过后)。
- 生物在其半径128格内没有玩家的情况下立刻被清除。
- 请注意,这是一个欧几里德球体,而不是从上到下的圆柱体和taxicab球体(类似于八面体)。例子:一个生物在0/y/0,如果玩家移动到65/y/65(真实距离91.9格)之后,该生物会在30秒(如上)内仍然存在。但玩家移动到91/y/91后(真实距离128.7格)生物会立刻被清除。
- 生物所在的区块必须保持活跃,直到生物被清除为止。否则生物会被冻结,直到玩家接近这个区块并使其活跃为止,并可能再次找到同样的生物。因为单个区块呈方体状,而清除所需的距离是欧几里德球体,与X/Z轴相比,在对角线方向上移动,并且可能需要一些垂直距离以帮助保持区块活跃,使怪物被清除。此外,改进渲染距离也有作用,因为这会使游戏加载更多的区块。
- 所有敌对生物(包括手持物品的)会在难度设置为和平时被清除,无视玩家与其的距离。
- 在多人游戏中,没有玩家在线时不会发生生物清除现象。
- 被命名牌命名的敌对生物不会被清除,但通过被命名的刷怪蛋生成的生物仍会照常被清除。
- 如果敌对生物手持或穿戴任何被玩家给予或从地上掉落的物品,则它们不会被清除。
- 鸡骑士的鸡会遵循僵尸的清除条件而和僵尸一同被清除。
基岩版
基岩版的实体清除根据每区块每刻评估而发生。实体在每刻有1⁄50的几率在每个区块内被清除。清除发生时,区块内会随机选择实体作为目标,并通过以下条件被清除:
- 实体在距离玩家54格以外。
- 亮度等级低于8.
- 对于敌对生物,亮度必须大于8,且对于地表的敌对生物来说必须为白天。
- 实体存在时间过长。
- 该实体没有持久性。
持久性
在基岩版中,带有持久性的实体不会被清除,实体的持久性通过下列情况产生:
- 与玩家互动。
- 被玩家骑乘。
- 被命名牌命名。
- 被食物诱惑。
- 被繁殖,以及因繁殖而生成。
- 被驯服。
- 尝试攻击玩家。
- 被玩家攻击。
- 被玩家接触。
- 通过刷怪箱生成。
- 通过刷怪蛋生成。
- 通过
/summon
命令生成。 - 治愈中的僵尸村民。
- 骷髅和骷髅马作为骷髅陷阱的一部分生成。
- 潜影贝作为末地城的一部分生成。
- 女巫作为女巫小屋的一部分生成。
- 村民或僵尸村民作为雪屋的一部分生成。
- 僵尸村民作为僵尸村庄的一部分生成。
- 卫道士作为林地府邸的一部分生成。
下列实体总是拥有持久性:
历史
Java版Classic | |||||
---|---|---|---|---|---|
0.24 SURVIVAL TEST | 生物现在成群生成。 | ||||
? | 生成区域曾经是17*17个区块而不是15*15。该区域被缩小了,但是旧的大小仍然被用于计算生物容量。 | ||||
并不总是能通过防止生物在其他地方生成来够驱使它们聚集于一个生成空间里。一些更早的关于“生成”的资料或许可以作为参考。 | |||||
大量的空余空间曾经能促进一般地区的生物生成。这一点对于一个小一点的规模仍然有效,且由于成组生成的机制而只对水平分布有效。 | |||||
Java版Alpha | |||||
v1.2.0 | ? | 0,0区块(X为0-16且Z为0-16)总是首先进行生物生成判定。如果一个人在此区块建了一个暗室,那所有的生物都会生成在其中,而导致其他地方都没有。 | |||
Java版Beta | |||||
1.8 | ? | 世界建立时的生成位点即使不是在沙滩也总是在沙子上。 | |||
Java版 | |||||
1.0.0 | ? | 在此之前,生成只被光照等级所决定而不是当前区块的属性。攻击型生物在光照等级7或更低的地方生成而被动型生物在光照等级9或更高的地方生成。因为这一点,尽管在有光照的地方仍有很小的几率生成攻击型生物,归因于它们在无光照的空中生成。另外如果你带了很多火把下矿,然后返回,你很可能将会看到你的房子里面有一些牛、猪、鸡或羊在里面到处跑。 | |||
1.1 | 12w01a | 对玩家的生成位置的有效生物群系进行了调整。玩家现在能生成在森林、平原、针叶林、繁茂的丘陵和针叶林丘陵里。 | |||
1.2 | 12w03a | 玩家的出生点现在能被定位在丛林和丛林丘陵生物群系里。 | |||
1.8 | 14w25a | 成群生成的大多数限制被移除。在此之前必须为空气或者任意透明方块。 | |||
1.9 | 15w46a | 当生成敌对生物时,要求生成点的方块不能阻止生物的移动(以前只是不透明的),不能是任何类型的铁轨。 此外,上面的方块不能再是液体。 | |||
15w51a | 添加spawnRadius 游戏规则以控制玩家能在距离世界出生点多远的位置重生。 | ||||
1.9-pre2 | 生成机制调整,“12次尝试”现在是“4次尝试”,所谓的“四次”是1-4的随机次数,这意味着总的生成尝试会更少,生成地点远离生物群体座标中心的机会也会更小。 |
你知道吗
- 在旧版本中,出生点在熔岩湖里是可能的,从而导致玩家几乎无法在这样的世界中进行游戏,除非附近有水。这种情况在1.9中被修复,现在在世界出生点区域内不再生成熔岩湖。
- 世界生成点(玩家在没有有效的床的情况下出生点)通常是X和Z轴上-500和+500之间的随机点(由种子决定)。如果选择的点在水中(因为没有可用,但海洋生物群系为在-500到+500范围内),就将在-1500到+1500之间进行第二次尝试。如果由于海洋而失败,则游戏放弃此方法并将世界生成点设置在海洋中间(仍在海平面)。然而,通常情况下,如果玩家在水中生成,它将在岸边,因为世界生成本身在干燥的地方上选择了一个地方。
- 玩家在世界空间内的10个半径范围内生成(所以可能的区域为21x21)时检查此21x21区域内的有效生成位置并将液体视为空气(在1.13液体机制更改之前)。因此,如果你生成在熔岩里,就可以继续试试你的运气,因为21x21范围内的空间通常不会在熔岩湖中。
外部链接
- http://www.minecraftforum.net/topic/136723-mob-spawning-algorithm-in-12-01-analyzed/ - Marglyph创作的Beta 1.2中的生成算法
- http://www.minecraftforum.net/topic/37979-mob-spawning-science/ - fr0stbyte124创作的万圣节更新之前的生成算法