生成(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格,動物類別的生物、掠奪者和界伏蚌則無視此條件。
- 以方塊位置底面中心為底面中心的實體碰撞箱範圍內不存在其他碰撞箱與之碰撞。比如在一格空氣且上方為一個上半地板門的位置Creeper可以生成,但喪屍卻不可以生成。
- 對於生成在水體內的生物(魚、墨西哥蠑螈、沉屍、深海守衛等),生成位置必須為水且上方方塊不能是紅石導體。
- 對於生成在熔岩內的生物(熾足獸),生成位置必須為熔岩。
- 對於生成在地面上的生物,有下面這些額外條件:
- 位置下方的方塊必須為可生成方塊。
- 位置上的方塊和位置上方的方塊必須為有效空方塊。
- 某一具體生物可能還具有額外的檢查條件,詳見各生物的生成章節。
- 絕大部分動物都要求位置下方方塊必須是帶有
#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 | 不生成 |
Creeper | 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至萬聖節更新之前生物生成的變化。
語言