【MCJE】如何科學的設計“僵尸增援”銅錠農(nóng)場
配合視頻觀看體驗更佳;
如有錯誤,請指出;
目錄
結構概覽
設計特點
使用說明
農(nóng)場原理
理論計算與實驗
卡頓
參考資料

一、結構概覽



二、設計特點
1. 減小卡頓

2. 溺尸轉換
溺尸轉換的部分如下圖所示,僵尸的行進方向如箭頭所示,僵尸在行進過程中,一共受到三重阻力。
其一是腳手架會初步減速;
其二是底部的粘液塊會再次減速;
其三是頭部的水會進一步減速。
經(jīng)過三重阻力的影響,僵尸的速度降至最低。由于僵尸頭部一值浸泡在水中,當僵尸走到盡頭時,剛好能夠轉化為溺尸。

3. 快速增援
如下圖所示,該銅錠農(nóng)場設置有快速增援模式。開啟該模式后,僵尸經(jīng)過的路上會部分粘液塊更換為巖漿塊,當僵尸走過巖漿塊時,會受到傷害,由于僵尸有仇恨在掛機者身上,僵尸會召喚增援。
經(jīng)過測試,僵尸走過六塊巖漿塊剛好不會被燙死。當僵尸走到盡頭時會轉化為溺尸,轉化后的溺尸的血量和增援能力會被重置,可以繼續(xù)召喚增援,從而實現(xiàn)快速增援。
在開啟快速增援模式后,大概掛機10分鐘左右僵尸和溺尸的總量便可以達到目標值??焖僭鲈J街饕糜趩与A段,在達到我們想要的水平后,需要關閉快速增援開關,否則僵尸數(shù)量會無限制的增長,另外下面講的卡頓檢測器在快速增援模式下是不起作用的。

4. 重復啟動
該銅錠農(nóng)場在啟動一次之后,由于部分溺尸會持有掉落物,當玩家離開,區(qū)塊卸載時,這些溺尸并不會被清除,它們可以用于下一次啟動。
5. 卡頓檢測器
下圖便是卡頓檢測器,在正常模式(非快速增援模式)下,當發(fā)生掉刻時,卡頓檢測器通過控制粘液塊和蜂蜜快來減小刷怪平臺的大小,來減小增援速度,使TPS恢復至正常水平。


6. 循環(huán)計數(shù)器
下圖便是循環(huán)計數(shù)器,和卡頓檢測器一樣,循環(huán)計數(shù)器通過控制粘液塊和蜂蜜來控制初始刷怪平臺的大小。

需要注意的是卡頓檢測器使用到了強模信號[1],比較器在檢測木桶容器部分會輸出強度為30的強模信號,強模信號這里不過多贅述,具體請查看參考資料。

三、使用說明
1. 該銅錠農(nóng)場設計用于末地,不需要做特別的遮光,如果做在主世界,需要進行遮光處理。
2. 掛機時,掛機的玩家可以持任意劍類武器,站在玻璃板上對盔甲架進行橫掃即可,攻擊間隔為13tick。劍類武器請勿附魔橫掃之刃。在掛機時無法進行食物補給,建議使用生命恢復1的信標,生命恢復提供的血量能夠抵消饑餓造成的傷害,從而實現(xiàn)長時間掛機。

3.上圖所示的左右兩個音符盒是控制平臺大小的開關,如果在掛機銅錠農(nóng)場同時需要做一些其他的小工程,可以將平臺大小調值6擋,如下圖所示即可,產(chǎn)量大概在6~7k/h左右。

4. 如果追求高產(chǎn)量,則建議將平臺大小調至2擋,如下圖所示,產(chǎn)量取決于你的電腦性能。

5. 該銅錠農(nóng)場的收集使用了打包機[2],不需要的可以自行更換收集裝置。
6. 在建設過程中,注意需要將玩家和轉化后的溺尸放在同一區(qū)塊內(nèi)。如果溺尸轉化的位置和玩家不再同一區(qū)塊內(nèi),在溺尸轉化時,溺尸會對玩家失去仇恨。


四、農(nóng)場原理
1. 區(qū)域難度
在講解農(nóng)場原理之前,有必要了解一下區(qū)域難度[3],不僅僅是僵尸增援銅錠農(nóng)場,其他一些基于刷怪的農(nóng)場的效率都會受到區(qū)域難度的影響。區(qū)域難度對僵尸增援銅錠農(nóng)場的效率影響也是比較顯著的。

打開F3,如上圖所示,在Local Difficulty所在行有兩個數(shù),雙斜杠左側為區(qū)域難度(Regional difficulty),簡稱RD,右側為副區(qū)域難度(Clamped regional difficulty),簡稱CRD。兩者的關系如下圖所示。

區(qū)域難度主要受到三個時間影響,分別是游戲天數(shù)、月相和居住時間。區(qū)域難度隨著游戲天數(shù)逐漸增加,月相的變化提供難度的波動,在一個區(qū)塊居住的時間越長,其難度也就越高。
當游戲天數(shù)大于63天且玩家在某個區(qū)塊的居住時間大于16.67h時,該區(qū)塊的副區(qū)域難度會保持最大1,且此區(qū)塊的難度不會再受到月相的影響。
在這里我們只需要知道,當區(qū)域難度大于4或者副區(qū)域難度為1時,僵尸增援的效率最高。后續(xù)的設計和測試均會在此區(qū)域難度大于4或者副區(qū)域難度為1的條件下進行。
2.溺尸的轉化
當僵尸的頭部浸潤到水中600tick(即30s),僵尸開始轉化為溺尸。轉化一旦開始,不會停止,在300tick(即15s)后,僵尸會轉化為溺尸,因此一個僵尸轉化為溺尸的時間為45s[4]。轉化為溺尸后,原有僵尸的屬性均會重置,比如血量,是否為僵尸首領,僵尸增援的能力等等,我們可以認為是在原來僵尸的位置重新生成一個溺尸,并將原來的僵尸從世界中刪除。利用這個特性,我們可以通過擊殺僵尸轉化的溺尸,來獲得銅錠。值得注意的是,轉換后的溺尸是會保留原來僵尸身上的裝備。
3. 僵尸增援
僵尸增援中的僵尸,泛指僵尸和繼承僵尸類的生物實體,比如溺尸,僵尸村民,尸殼等,這些生物均能進行僵尸增援。僵尸增援的生物均為僵尸,并不會生成繼承僵尸類的生物。僵尸增援的來源主要來自兩個部分,其一是僵尸首領所增援的僵尸,其二是非僵尸首領的僵尸所增援的僵尸。這里我們統(tǒng)一一下說法,對于非僵尸首領的僵尸,下面會一律稱為普通僵尸。在次,我們需要了解一下僵尸首領[5]。
1) 僵尸首領
僵尸和繼承僵尸類的生物均有僵尸首領,包括小僵尸也有可能成為僵尸首領。
僵尸首領與普通僵尸最大區(qū)別就是最大血量值和僵尸增援的能力。僵尸首領的最大血量是一般是普通僵尸的1-4倍,如果看到最大血量大于20的僵尸,其一定是僵尸首領。盡管僵尸首領最大血量很大,但是其生成時的血量仍和普通僵尸相同,即20血。
僵尸有一個屬性zombie.spawn_reinforcements,是用于控制僵尸增援的能力,下面用概率Psr表示。我們可以認為,增援能力是僅在困難難度下,僵尸在受到傷害時,召喚僵尸的概率,且每只僵尸每次受傷最多召喚一個僵尸。我們可以通過下面這條指令查看離我們最近的僵尸的增援能力。
/attribute @e[type=minecraft:zombie,limit=1,sort=nearest] minecraft:zombie.spawn_reinforcements get
在困難難度下,普通僵尸的初始增援能力Psr是介于0~0.1的任意一個值,即0<Psr<0.1。僵尸首領在生成時,其初始增援能力會在普通僵尸的基礎之上增加,
是介于0.5~0.75之間的任意值,因此僵尸首領的增援能力為
,即0.5<Psr'<0.75。
僵尸首領的生成概率Pzl與副區(qū)域難度CRD有關,Pzl=CRD*0.05。對于因此當CRD最大時(CRD=1),有著最大的僵尸首領生成概率
2) 懲罰機制
當僵尸受到傷害并成功召喚一只增援僵尸時,召喚增援的僵尸和被增援的僵尸的增援能力均會有5%的衰減,以防止游戲難度過高。很顯然,這個懲罰機制增加了溺尸農(nóng)場的設計難度。值得注意的是,當僵尸轉化為溺尸后,溺尸的增援能力會重新初始化。
考慮懲罰機制,每只普通僵尸(0<Psr<0.1)最多會增援兩只僵尸;每只僵尸首領(0.5<Psr'<0.75)最多能夠增援17只僵尸。
3) 增援區(qū)域
接著是僵尸增援的區(qū)域,對于僵尸的位置,我們可以認為是僵尸腳所在的方塊就是僵尸的位置。僵尸增援的區(qū)域共有27個。分別是1個點區(qū)域、6條線區(qū)域、12個面區(qū)域和8個體區(qū)域,如下所示。

假設召喚增援的僵尸坐標為(x0, y0 ,z0),則增援僵尸的位置為(x1, y1 ,z1)可以用下列代碼[6]計算:
int x1 = x0 + Mth.nextInt(this.random, 7, 40) * Mth.nextInt(this.random, -1, 1);
int y1 = y0 + Mth.nextInt(this.random, 7, 40) * Mth.nextInt(this.random, -1, 1);
int z1 = z0 + Mth.nextInt(this.random, 7, 40) * Mth.nextInt(this.random, -1, 1);
Mth.nextInt(this.random, 7, 40)表示在7-40之間隨機取一個整數(shù),包含7和40,Mth.nextInt(this.random, -1, 1)表示在-1、0和1之間任取一個數(shù)。
因此可以用于增援僵尸的位置一共有328509個方塊,請問選中這328509個方塊中任意一塊的概率是否相同,可以思考一下。
……
答案是不同的。剛才提到僵尸增援的生成區(qū)域共有27個,每個區(qū)域被選中的概率是相同的,均為1/27。但是不同區(qū)域所包含的方塊數(shù)量是不同的,很顯現(xiàn)點區(qū)域僅包含1個方塊,那么這個區(qū)域被選中的概率就是1/27,體區(qū)域所包含的方塊最多,其中一個方塊被選中的概率最小,僅有,可以看到相差甚遠。
因此我們可以得到選中每個區(qū)域的方塊的概率:
點區(qū)域:
線區(qū)域:
面區(qū)域:
體區(qū)域:
如果僵尸確定需要生成增援僵尸,則游戲會在上述區(qū)域內(nèi)隨機選擇方塊 并判斷是否符合僵尸生成條件,如果不符合,繼續(xù)選擇其他位置,此過程最多進行50次,超過50次就生成增援失敗,這種生成失敗并不會觸發(fā)懲罰機制。
值得注意的是,盡管點區(qū)域的方塊被選中的概率最高,但是大部分情況下,此方塊通常會與召喚增援的僵尸有碰撞沖突,因此大概率不會滿足僵尸的生成條件,但也并非絕對,因此我們可以忽略點區(qū)域。
而你們常見到的僵尸增援銅錠農(nóng)場通常就是使用的線區(qū)域進行刷怪,其實線區(qū)域已經(jīng)足夠產(chǎn)生鏈式反應了,但是我設計的農(nóng)場采用的是面區(qū)域進行刷怪,主要就是為了減小卡頓。

五、假設與實驗
1. 假設
我們在設計銅錠農(nóng)場時,做出下列假設:
1. 假設可以生成增援的方塊數(shù)量為Aa,由于采用的是面區(qū)域進行刷怪,因此平臺的大小限制生成增援的比率如下,下面將其簡稱平臺使用率 ;
2. 假設每秒攻擊β下,即攻速為β/s,則就是間隔攻擊的tick數(shù)。顯然,攻速β越快,單位時間的產(chǎn)量就越高,單位時間殺死和需要生成的溺尸數(shù)量也就越多,所堆積的僵尸和溺尸的數(shù)量也就越少。對于劍來說,劍的最大攻速為β=1.6次/s,最小攻擊間隔為
,因此我們可以選擇13tick作為攻擊間隔,此時的
。
玩家在不使用搶奪附魔的工具擊殺溺尸時,掉落一個銅錠的概率為11%,每級搶奪魔咒會增加2%的掉落概率,因此使用搶奪三的劍擊殺溺尸掉落銅錠的概率為。
為了保證溺尸有足夠的次數(shù)進行僵尸增援,顯然每次攻擊的傷害越少越好。使用不含橫掃之刃魔咒的劍對護甲值為0的生物進行橫掃時,不管是木劍還是下屆合金劍,其對于沒有護甲的生物的橫掃傷害均為1點傷害,并且橫掃能夠使在橫掃范圍內(nèi)的所有生物都會受到橫掃傷害,這就保證了傷害的持續(xù)和穩(wěn)定。
但是僵尸在不穿帶任何防具時是有2點基礎護甲值,其中有些僵尸會生成防具,并且部分僵尸會撿起其他僵尸掉落的防具,這就降低橫掃產(chǎn)生的傷害,使得橫掃產(chǎn)生的傷害具有了不確定性,并且這種不確定性是無法進行計算的。因此我們需要設計實驗進行測試。
2. 實驗
1)實驗1 - 1 存在僵尸的平均數(shù)量與僵尸的生成速度關系測定
a. 實驗環(huán)境
實驗環(huán)境如下圖所示:

僵尸會生成在盔甲架的下方,假人通過橫掃盔甲架來對僵尸造成傷害,當僵尸的生成速度一定時,僵尸的數(shù)量會維持在一定的水平。
為了保證測試結果的準確性,測試采用的是僵尸而非溺尸,因為在實際擊殺的是有僵尸轉換的溺尸,由僵尸轉化的溺尸會保留原有的護甲,而自然生成的溺尸是不會生成護甲的;
僵尸會生成在腳手架中,生物實體在腳手架、梯子和藤曼等可以攀爬的方塊中時,會取消不同生物之間的碰撞計算的,也就可以認為不同的生物之間不會發(fā)生沖突;
由于小僵尸很難在僵尸增援中起到作用,因此需要排除小僵尸;
實驗中,假人會以13tick為攻擊間隔對盔甲架進行攻擊,即攻速
;
待數(shù)據(jù)穩(wěn)定后,每14tick采集一次數(shù)據(jù),每組數(shù)據(jù)采集100次。
b. 實驗原理
通過命令方塊控制每秒生成僵尸的數(shù)量Sps,當目標位置的僵尸數(shù)量穩(wěn)定后,記錄目標位置的僵尸數(shù)量。在保證其他地方的防刷怪后,可以使用地毯模組的 /log mobcaps 指令,開啟怪物數(shù)量顯示,按下Tab鍵,第一個值就是當前的怪物數(shù)量,我們需要記錄每秒生成僵尸的數(shù)量Sps和當前存在僵尸的數(shù)量
。
c. 實驗內(nèi)容
我需要分別測定并記錄當每秒生成僵尸的數(shù)量Sps=1、2、3 ... 20個/s時,對應的僵尸數(shù)量。顯然這是一個重復的體力活,作為一個懶人,當然不會親自測定,而電腦就能輕松完成這個工作。
Python正好可以用于測定,使用pyautogui模塊進行自動化控制,采用ocr文字識別來識別當前的怪物數(shù)量,代碼也是非常的簡單,就是ocr文字是被有時會將8誤判為“日”字,需要單獨做一下修正,其他的識別錯誤直接忽略。
d. 實驗結果
實驗結果如下所示,由于生成僵尸時會有5%的概率生成小僵尸,因此需要剔除小僵尸的部分

做出曲線如下所示:

可以看到,實驗圖像趨于一條直線,我們使用最小二乘法計算其回歸曲線為:
轉換為與的關系為:
當Sps(或Sps)較大時,可以認為每次攻擊到的僵尸(溺尸)數(shù)量與僵尸的生成速度Sps(或Spa)成正比。
2) 實驗1 - 2 僵尸受到的平均橫掃傷害的測定
a. 實驗原理
在腳手架處的僵尸數(shù)量穩(wěn)定后,每秒生成僵尸的數(shù)量Sps×僵尸基礎血量20 就是每秒橫掃產(chǎn)生的總傷害(即20Sps)。將總傷害分攤到每個僵尸身上就是僵尸平均每秒受到的橫掃傷害,即
平均每次橫掃產(chǎn)生的傷害為
因此我們只需要對實驗1-1進行簡單的處理,即可得到實驗結果。
b. 實驗結果

做出僵尸在不同生成速度下受到的平均橫掃傷害圖像,如下所示。

計算出其方差、均值
、平均偏差
和相對平均偏差
分別為
可以看到測試出的方差較小,相對平均偏差小于5%,屬于可接受范圍內(nèi)。因此我們可以認為僵尸受到的平均橫掃傷害與僵尸的生成速度無關。轉換為每只僵尸(溺尸)每次攻擊的傷害如下:
3) 實驗2 模擬平臺使用率與平均每次橫掃每只僵尸增援數(shù)量的關系
由于游戲存在僵尸增援的懲罰機制,僵尸的增援能力隨著增援的次數(shù)而衰減,這就很難從理論上計算每只僵尸能夠增援僵尸的數(shù)量。因此,我們可以通過計算機模擬結果。
a. 實驗原理
實驗平臺采用java平臺。注意,雖然游戲中使用的偽隨機算法與世界種子相關聯(lián),但是從概率上講,當樣品數(shù)量足夠大時,游戲的隨機結果與使用java自帶的隨機算法獲得的隨機結果可以認為相同。
模擬實驗可分成三層循環(huán)嵌套

最外層循環(huán)用于改變平臺使用率
和計算對應的平均增援數(shù)量
;
中間層循環(huán)用于根據(jù)概率選擇生成普通僵尸和僵尸首領;
最內(nèi)層循環(huán)計算每個僵尸能夠召喚的增援數(shù)量。
根據(jù)實驗1-2的結論公式5-10,可以計算出每只僵尸平均需要橫掃次數(shù)為。A就是內(nèi)層循環(huán)的循環(huán)次數(shù),同時也用于計算平均每次橫掃每只僵尸增援數(shù)量。
b. 實驗結果

c. 不發(fā)散的刷怪平臺大小計算
根據(jù)上述圖像,當我們知道每只僵尸(溺尸)每次增援的數(shù)量時,就能夠選擇出對應的平臺使用率。接下來計算一下每只溺尸每次增援的數(shù)量
:
根據(jù)和每次攻擊到的僵尸數(shù)量
計算出每次攻擊生成僵尸的數(shù)量
,將實驗1-1的回歸方程5-2,代入得到:
整理得到:
當時,可以近似計算
根據(jù)查實驗2的圖像可以得到平臺使用率為
根據(jù)公式4-6,對應面區(qū)域的刷怪面積為
根據(jù)實驗結果計算出我們需要使用到的面區(qū)域刷怪大小為1340格,這個可以認為是僵尸數(shù)量不發(fā)散時的刷怪面積。我們應該明白,實驗結果總會出現(xiàn)誤差,實驗計算結果為我們限定了平臺的大小,為了保證僵尸數(shù)量不發(fā)散,我們需要在
的基礎之上,改變小范圍平臺的大小進行測試,這邊大大減小了測試的工作量。
3. 測試與驗證
經(jīng)過測試,當時,僵尸總數(shù)會發(fā)散,但是發(fā)散的速度相對緩慢,適當降到
時,不再發(fā)散。在
的條件下,通過4h的測試,測試結果如下圖:

圖中橫坐標表示時間,縱坐標表示測試過程中對應時間的僵尸和溺尸總量。
的大小可以直接反應出銅錠的產(chǎn)量,我們可以看到,初始
為500左右,但經(jīng)過4h的掛機后,會穩(wěn)定至1200-1400的范圍內(nèi)。
查實驗2表格得,當時,對應的每只溺尸每次增援的數(shù)量
,則絕對誤差
在誤差允許范圍內(nèi)。
如果你的電腦性能足夠好,僵尸和溺尸數(shù)量穩(wěn)定后電腦的性能并不會被榨干,你可以在使用假人掛機的時候,進行一下其他的小工程。但是對于電腦性能不足或者追求更高的效率的玩家來說,僅僅依靠平臺大小來控制僵尸和溺尸的數(shù)量就有些力不從心了。別急,后面會提供解決方案。

六、卡頓
1. 卡頓的來源
首先要提高溺尸塔的產(chǎn)量,就必須增加僵尸轉化為溺尸的速率,即必須得堆積足夠多的僵尸。因此卡頓的主要來源就是僵尸和溺尸的實體數(shù)量和它們之間的碰撞計算。
2. 卡頓的緩解
1)減少實體數(shù)量
緩解卡頓的第一個辦法是減小實體數(shù)量,溺尸群體每秒受到的總傷害可以直接反應出溺尸的死亡速率,進而決定銅的產(chǎn)量。在銅產(chǎn)量固定的情況下,總秒傷是不變的,因此攻速越高,所需的溺尸數(shù)量就越少。
游戲中,劍在不丟失傷害時的最大攻速為,即間隔13tick進行橫掃攻擊。此時溺尸和僵尸的數(shù)量最小。
2)減少碰撞計算
我們可以看一下下面這組對比實驗,當1000個實體擠在100個的區(qū)域內(nèi),游戲已經(jīng)出現(xiàn)掉刻:

當1000個實體之間沒有碰撞,游戲卡頓明顯減少:

因此第二個緩解卡頓的方法是避免碰撞計算,當生物的腳部處于可以攀爬的方塊,如腳手架、梯子、藤曼等,是不會進行碰撞計算的,也不會因為實體數(shù)量過多導致窒息死亡。雖然使用線區(qū)域進行刷怪的效率很高,但是線區(qū)域很難讓僵尸快速的進入可攀爬的方塊,來減少實體碰撞,而面區(qū)域進行刷怪就很容易進入腳手架。這就是選擇面區(qū)域刷怪的原因之一。另外,在面區(qū)域運動的僵尸可以認為它們之間是沒有碰撞的。
3. 卡頓檢測器
卡頓檢測器[7,8,9]對于提高銅錠農(nóng)場效率,榨干電腦性能是非常有必要的。
1)原理
具有尋路AI的生物,在選定目的地后,會有兩種重新計算路徑的情況,分別是PP更新和路徑超時檢測。
當生物周圍有PP更新時,生物會重新計算路徑。
當生物超時未到達目的地時,生物也會重新計算路徑。在超時檢測中,所使用的時間是以毫秒為單位進行比較的,與游戲刻無關。當超時時間固定時,在沒有發(fā)生掉刻的情況下走過的游戲刻和發(fā)生掉刻的情況下走過的游戲刻是不同的,通過檢測這種變化,便可知道是否發(fā)生了掉刻。
超時時間與生物的移動速度和生物離節(jié)點目的地的距離有關,并非固定值。但我們可以通過控制初始條件相同來保證每次的超時時間相同。
2)卡頓檢測器
通過上面原理便可以設計出下面的卡頓檢測器,通過調低tps來模擬掉刻,當出現(xiàn)掉刻時該卡頓檢測器會輸出信號,使紅石燈亮起。

在設計過程中,如果僅僅使用超時檢測,僵尸的超時時間很容易受到周圍環(huán)境的影響,造成超時時間不穩(wěn)定。經(jīng)過測試,當僵尸在更換路徑后,通過下圖指針指向的活塞,立刻在其周圍進行一次PP更新,會使其超時時間相對穩(wěn)定,測試出的超時時間能夠穩(wěn)定在11.88s。

此外,當發(fā)生掉刻時,僵尸有一定的概率會發(fā)生抽風,在兩個重質壓力板之間反復走動,造成輸出不穩(wěn)定,因此增加了一個檢測抽風的裝置,當僵尸發(fā)生抽風后,左上方的粘性活塞會推出,阻止僵尸移動,使機器恢復正常。
在添加了卡頓檢測器后,通過3個小時的測試,測試出僵尸和溺尸的實體總量隨時間變化的結果如下:

可以看到,在掛機2h后,僵尸和溺尸的總量隨時間呈鋸齒形變化,在這個過程中,游戲會在正常和掉刻之間反復橫跳。本人的電腦CPU為i5-9300H,GPU為GTX1650。測試得到極限僵尸和溺尸的總量在1600左右浮動,銅錠產(chǎn)量在1w+/h。

七、參考資料
[1]: [mc紅模]什么是紅石強模?如何跨線傳輸強模信號? (bilibili.com)
https://www.bilibili.com/video/BV1yN4y1G76K/
[2]: mc 最小完美無t觸靜音六倍速分類打包機 1.13+_嗶哩嗶哩bilibili
https://www.bilibili.com/video/BV1HG4y1h7Lp/
[3]: 難度 - Minecraft Wiki
https://minecraft.fandom.com/zh/wiki/%E9%9A%BE%E5%BA%A6
[4]:溺尸 - Minecraft Wiki
https://minecraft.fandom.com/zh/wiki/%E6%BA%BA%E5%B0%B8
[5]: 僵尸 - Minecraft Wiki
https://minecraft.fandom.com/zh/wiki/%E5%83%B5%E5%B0%B8
[6]: Minecraft1.19源碼獲取來源 GitHub - Hexeption/MCP-Reborn
https://github.com/Hexeption/MCP-Reborn
[7]: 【懶窮簡】實裝優(yōu)化的極限效率銅錠反應堆_我的世界 (bilibili.com)
https://www.bilibili.com/video/BV1BB4y1y7qN
[8]: 【MC】生存可用的卡頓檢測器【2No2Name】_嗶哩嗶哩_bilibili
https://www.bilibili.com/video/BV19z4y1y7UQ
[9]:[mc] 便宜又好用-生存可用的卡頓檢測器_嗶哩嗶哩bilibili_我的世界
https://www.bilibili.com/video/BV1cb4y1p7es