UU看書

第二十八章 區塊與區段

天才一秒記住【UU看書】地址:www.uukanshu.co

在上一章中,我們提到了“區塊刻”。區塊刻是個啥我們暫時不用瞭解,但區塊我們還是要很詳細的瞭解一下。

首先讓我們認識一下區塊(Chunk)。

當你在Minecraft世界行走時,你或許會發現你的視野邊緣是由一個個正方形的區域組成的。這些正方形區域就是正在載入的區塊。

Minecraft的世界是由一個個區塊組成的,每個區塊的長寬是16格,高是256格。在還未正式釋出的Minecraft118版本中,區塊的高度甚至達到了384格。

所以說,一個區塊包含著65536塊方塊。而一個世界最多可以生成14062500000000個區塊(約為14億),每種區塊都有746×10(的244,700次方)種可能的區塊種類。怎麼樣,是不是很震撼?照這樣計算,一個世界就有9216000000000000000(9216京1京10000萬億)塊方塊。

但是上面這些只是真區塊。什麼是真區塊呢?聽說過Minecraft的邊境之地吧,當你到達Minecraft的很遠的地方時,那裡的區塊會出現Bug,也就是載入錯誤(32位溢位)。在Java版中,這個BUG早就已經在Beta18版本移除(但沒有完全移除,64位溢位導致的邊境之地仍然存在),並新增了世界邊界攔著你。當你以任何方式越過世界邊界後來到外面,會得到一些負面效果,扣血死亡,就好像絕地求生裡一樣。其實Java版的Minecraft還真的有點像絕地求生,你還可以使用特定的指令修改邊界,來達到絕地求生的效果。是不是很神奇?

在基岩版,並沒有邊界,所以你仍然可以看到那個神奇的區塊。但可惜,基岩版的邊境之地即將於1172版本移除,目前的1172測試版中邊境之地已經木掉了。

所以,真區塊就是正常沒有bug的區塊。而那些bug的區塊,則被叫做“假區塊”。

一個區塊被分成數個長寬高均為16格的區段。實際上,雖然區塊這個詞更常見,但是在Minecraft中,大多數遊戲的運算都是以區段而不是以區塊為單位的。

隨機刻就是一個很好的例子。區塊刻運算過程中,有一個刻叫隨機刻。隨機刻我們在講gamerule指令時已經見過了,但是我們還不知道它的運作方式。

那麼它是怎麼運作的呢?

一個區段有16×16×164096個方塊。每一隨機刻中,將會隨機抽取randomTickSpeed規則設定的數量的方塊,即預設Java是抽取3個方塊,基岩是抽取1個方塊。

大多數方塊被抽到後並不會有什麼影響,但以下方塊會收到影響:

耕地上的農作物——有水可能生長,無水可能掉落

蘑菇——光照低則有可能傳播,光照高則有可能掉落

藤蔓(wàn)——可能傳播

火僅基岩版——可能熄滅或傳播

冰和雪——可能融化

樹葉——在附近沒有樹幹的情況下可能枯萎

耕地——溼潤程度會更新

可以生長的植物和滴水石錐——可能生長

草方塊和菌絲——可能傳播或變為泥土

樹苗——可能長成樹

岩漿——可能讓附近的方塊上著火

紅石礦石——會熄滅

下界傳送門方塊——可能生成一隻豬靈(Minecraft116版本及以上)或殭屍豬人(低於Minecraft116)

海龜蛋——破裂或孵化

營火——會冒出煙霧粒子

銅質方塊——可能生鏽

處於滴水石錐下方的煉藥鍋——如果滴水石錐上方有熔岩或水,煉藥鍋可能會被填充

一個Minecraft存檔包含超級多的區塊,所以遊戲遊玩時肯定不會將這些區塊全部載入,而是選取部分割槽塊進行載入。

在Java版,每個區塊要載入都需要一個載入標籤。每個載入標籤都具有三個屬性:

載入等級、標籤型別和存活時間(可選屬性)

載入等級,即規定了該區塊的載入級別有多高。載入等級越小,能載入的內容就越多。如果載入等級有多個,那麼將會生效的將會是數值最小的那個。

載入等級的範圍是22到44,分為四個型別:

強載入:≤31——所有遊戲內容都會運算

弱載入:32——除區塊刻、實體以外其他遊戲內容都會運算

載入邊界:33——只有少部分內容會正常執行(紅石、命令方塊不會執行)

不可訪問:34——只有世界生成會在這些區塊中執行

載入等級會向相鄰8個區塊傳播,每成功傳播一次載入等級會加一級。

標籤型別,用於確定該載入標籤的來源。目前來說,標籤型別有以下幾種來源:

玩家

載入範圍:正方形,邊長為渲染距離(單人)或viewdistance(多人)×2+1

載入等級:31

比如,當渲染距離為12時,遊戲就會載入以玩家為中心的25×25個強載入區塊,外邊圍著一圈弱載入區塊和載入邊界。

強制

使用forceload指令賦予

等級:31

出生點

等級:22

強載入範圍:19×19

傳送門

使用下界傳送門時,遊戲會給予即將到達的另一個維度區塊賦予等級30的載入標籤。

強載入範圍:3×3

末影龍

等級:24

強載入範圍:15×15

瞬移

實體(注意不是玩家)瞬移後(包括使用tp、spreadplayers和末地傳送門,刷沙機就是利用了這個原理)在瞬移後的區塊建立的為時5遊戲刻的載入標籤。

等級:33(使用tp是32)

臨時

其他遊戲程式碼告訴遊戲該區塊需要載入時臨時建立的標籤,僅持續1遊戲刻。

等級:至少為33,視遊戲程式碼而定。

在基岩版,玩家載入的範圍和Java版不一樣,呈現一個圓形。使用tickingarea,也可以像forceload一樣一直讓區塊保持載入。

現在,你知道了區塊是個什麼東西了吧?

(唉,你看,這個礦洞會生成史萊姆唉!)

如遇章節錯誤,請點選報錯(無需登陸)

新書推薦

網遊:劍神歸來,我有無上混沌之力 光遇一枕槐安 成神後,我成了玩家口中的狗策劃 練習一年,轉校成為籃球體育生 穿到未來:我的馬甲紅透全星際 夢幻西遊:重生後挖寶致富 英雄無敵之召喚萬歲