複製鏈接
請複製以下鏈接發送給好友

區塊

(minecraft遊戲功能的單位)

鎖定
區塊(Chunk)是Minecraft(我的世界)地圖裏面的一個片段。每個區塊由16×16×384(1.17及以前版本則為16×16×256),共計98304(1.17及以前版本則為65536)個方塊組成。當玩家第一次出生在世界時會在其周圍生成區塊,而隨着玩家對世界的探索,相鄰的區塊也會繼續生成。
中文名
區塊
外文名
chunk
意    義
minecraft遊戲功能的單位
變    種
史萊姆區塊
目前大小
16×16×384(1.18+和快照21W06a)
大    小
16×16×256

區塊提示

1.本詞條創建於1.18版本更新之前,內容雖已經過更新,但依舊會有部分內容與遊戲相出入,有出入的地方請以
2.本詞條只是籠統的介紹“區塊”,若想研究探查其運行邏輯,請移步至Minecraft WiKi的“區塊”詞條、“區塊格式”詞條、“調試屏幕”詞條和“高度”詞條
3.本詞條主要説明的是主世界區塊,下界末路之地的區塊與主世界區塊又有些許差異,詳請見Minecraft WiKi的“區塊”詞條

區塊區塊詳情

區塊寬16格,長16格,高384格(1.17及以前版本為256格),因此一個區塊共有98304個方塊(1.17及以前版本為65536個方塊)。當玩家第一次出生在世界時會在其周圍生成區塊(出生點區塊),而隨着玩家對世界的探索,相鄰的區塊也會被生成。一個世界可生成14萬億(14,062,500,000,000)個真區塊。每個區塊有7.46×10244700種可能的區塊此項數據已過時),不包括實體 [1] 
在單人遊戲中所生成區塊的確切數字往往與視野距離和玩家的移動有關。而在多人遊戲裏,在每位玩家周圍會生成一個以玩家為中心,半徑為10的二維區塊網格(一共21×21總計441個區塊),儘管這可以被更改為3-15之間的一個值,通常只會在連接不良的家用服務器裏調低此數值。在指定範圍內的區塊會有活動(生物生成、樹木生長、流動、掉落的物品消失等),而不在範圍內的區塊不會有交互,並會存儲在硬盤裏(這個“按需加載”內存管理機制被廣泛用於程序化的地形生成,以便玩家的電腦不需要同時跟蹤並更新成百上千個植物和生物)。區塊每次存儲的時間間隔最小為30秒。
史萊姆可以只生成在特定區塊裏,這些區塊由根據區塊座標執行的計算而決定。有許多工具和Mod允許告知玩家可生成史萊姆的區塊。
Minecraft的渲染器將一個區塊分為24個(1.17及以前版本為16個)16x16x16的渲染區塊(即子區塊),並編譯到OpenGL顯示名單裏用於加快渲染速率。任意一個渲染區塊內的方塊發生變動的話,渲染區塊均需要重建。
區塊是通過地圖種子進行創建的,這也意味着如果每次使用的地圖種子相同的話,所生成的區塊也會相同,前提是Minecraft和世界生成器的版本要一致。 [1] 

區塊區塊加載

由於一個世界極大並且包含極多區塊,因此遊戲僅加載部分區塊以使遊戲可玩,遊戲不會運算已卸載的區塊。

區塊Java版

加載標籤
每個區塊的加載都來源於一個“加載標籤”。
每個加載標籤具有3個屬性:加載等級,標籤類型和存活時間(可選屬性)。
加載等級
加載等級用於決定了這個區塊中哪些遊戲內容能夠被運算。
加載等級的範圍是22-44。只會在22-33的範圍裏有常規的遊戲運算。理論上小於22的加載等級是可能的(不過在原版中不可行)。加載等級44以上是不可能的。
一個區塊如果獲得多個加載等級,只有最小的加載等級是有效的。加載等級越小,遊戲會運算更多內容。
加載等級可以分為以下有四種加載等級類型:
類型
等級
屬性
強加載
31及以下
所有遊戲內容都能夠被運算。
弱加載
32
除了區塊刻以及實體不會運算(例如不會移動),所有的遊戲內容都正常運行,
加載邊界
33
只有少部分遊戲內容會正常運行(紅石元件和命令方塊等都不能運行)。
不可訪問
34及以上
各種遊戲內容都不會運算,但世界生成會在這些區塊中運行。
等級傳播
帶有加載標籤的區塊,會相鄰(8個)的區塊傳播加載等級。對於每張“標籤”使用“flood fills”算法從“標籤”的位置傳播,每向外傳播一次就加載等級增加一,直到達到上限44。
31加載等級的傳播。請注意,為了避免表格過於龐大,35級及以上的區塊被省略,因為它們與34相同。
34
34
34
34
34
34
34
34
33
33
33
33
33
34
34
33
32
32
32
33
34
34
33
32
31
32
33
34
34
33
32
32
32
33
34
34
33
33
33
33
33
34
34
34
34
34
34
34
34
同上圖,用ET表示強加載,TI表示弱加載,BO表示加載邊界,IN表示不可訪問
IN
IN
IN
IN
IN
IN
IN
IN
BO
BO
BO
BO
BO
IN
IN
BO
TI
TI
TI
BO
IN
IN
BO
TI
ET
TI
BO
IN
IN
BO
TI
TI
TI
BO
IN
IN
BO
BO
BO
BO
BO
IN
IN
IN
IN
IN
IN
IN
IN
標籤類型
不同來源的標籤有不同的類型,用於確定不同加載等級。
玩家
由玩家加載的標籤。“玩家”標籤的加載等級為31。玩家的加載範圍內的區塊都會獲得“玩家”標籤。
  • 玩家的加載範圍:
    • 玩家的加載範圍是一個以玩家為中心正方形。
    • 單人遊戲中,正方形的邊長取決於選項中的“渲染距離”:邊長 = 渲染距離 × 2 + 1.
    • 多人遊戲中,正方形的邊長取決於服務端server.properties文件中的“view-distance”:邊長 = view-distance × 2 + 1.
    • 例如,當“渲染距離”為5個區塊時,強加載區塊有11×11,外邊圍一圈弱加載區塊,再圍一圈加載邊界。
強制加載
使用/forceload指令可以讓區塊獲得“強制”類型的加載標籤。加載等級為31。
“強制”類型的加載標籤在遊戲重啓後依然有效。
出生點區塊
“出生點”加載標籤的等級傳播
世界出生點所在的區塊(即出生點區塊)會獲得“出生點”加載標籤。使用/setworldspawn改變世界出生點時,加載標籤會同時改變。加載等級為22,是遊戲中最小的加載等級。
下界傳送門
當實體通過下界傳送門傳送時,在即將到達的下界傳送門所在的區塊會獲得傳送門標籤,加載等級為30。
“傳送門”加載標籤本身沒有“存活時間”,不過如果下界傳送門300遊戲刻(不卡頓則300遊戲刻=15秒)內沒有使用過,傳送門系統會移除這個的加載標籤。【區塊加載器就是根據這一原理製造和工作的: 】
屠龍戰
“龍”加載類型的加載等級為24。在屠龍戰開始時,在末路之地維度的(0,0)區塊創建,並在屠龍戰停止或結束後移除。
瞬移
實體瞬移後在瞬移到的區塊創建的加載標籤,包括使用/tp指令、/spreadplayers指令,通過末地傳送門末地折躍門。對於/tp命令,加載等級為32,而/spreadplayers指令末地傳送門的加載等級為33。
具有“存活時間”屬性,為5遊戲刻,也就是説它在5個遊戲刻後失效。
區塊加載臨時標籤
在任意遊戲代碼調用“getChunk”方法時創建的標籤。如果遊戲認為這個區塊應該被加載,它就會把這個“臨時”標籤賦給那個區塊(可能在創建它之後)。
加載等級與區塊是否已經完成世界生成有關。它的等級至少會是33,但在許多情況下會大於33。
例如:生物遊蕩AI執行時,它將會檢查某個方塊是否有完整上表面。作為檢查的一部分,這個區塊會獲得等級為33的“臨時”類型的加載標籤。
它的“存活時間”為1遊戲刻。
侷限性
  • 閒置超時
    • 每個維度都有自己的閒置超時時長。如果這個維度內存在玩家,或者有被強制加載的區塊(使用/forceload),閒置超時會被禁用。每次有實體進入/離開這個維度,閒置超時會被重置為0。
    • 如果閒置超時時長到達300,就會停止這個維度的一些運算,其中包括實體運算,屠龍戰和全局實體(閃電‌)。
  • 在加載區塊中並不是所有遊戲內容永遠會運算,因為它們可能還有其他條件,其中包括:
    • 被動性生物的生成數量限制由多少被動性生物被載入內存決定。這意味着所有在出生點區塊生成的被動性生物都會被算入該生成數量限制,通常會導致被動性生物無法再次自然生成。僅有的例外是伴隨新生成的區塊而生成的被動性生物。
    • 包括在下界傳送門殭屍豬人和在沼澤小屋的女巫
    • 攻擊型生物距離玩家超過128個方塊時會立即消失。
    • 被動性生物不會自然生成在距離玩家240x240個方塊範圍外的位置,其餘內容請查看“生成”詞條。
    • 在每個遊戲刻中,只有區塊中心距離玩家128個方塊之內的區塊才會執行區塊刻。區塊刻的描述等請移步至“”詞條或本詞條最後“區塊刻”內容
特殊情況
一個區塊中的事件可能會影響外部的區塊。如果外部的區塊處於非活動狀態,則在大多數情況下會立即暫停。特別地,
  • 弱加載區塊邊緣的方塊發生變化,可以將方塊更新傳播到弱加載區塊外部的方塊,並使它們做出適當的響應。更新可以一個方塊接一個方塊地傳播,直到傳播到加載邊界之外,這時它會創建一個“臨時”加載標籤並且繼續傳播。
  • 加載等級為33的區塊中的方塊可以請求一個計劃刻,但是直到該區塊獲得32及以下的等級時才進行處理。
  • 流動的熔岩可以擴散到弱加載區塊之外的第一個相鄰方塊,但流動會暫停,直到外部區塊獲得更高的等級。
  • 火可以傳播到弱加載區塊外的第一個相鄰的可燃方塊。像熔岩那樣,也會暫停;直到外部區塊獲得33及以下的等級。
  • 草方塊菌絲可以傳播到弱加載區塊外的第一個相鄰方塊
  • 在強加載區塊邊緣生長的南瓜西瓜莖可將其果實放置在外面區塊的相鄰方塊上。
  • 嘗試移動到弱加載區塊的實體(例如生物礦車)在離開強加載區塊後會即刻停止所有活動。當這個弱加載區塊獲得更高的加載等級時,實體會繼續移動。
  • 強加載區塊中的點燃的TNT會摧毀弱加載區塊內的方塊 [1] 

區塊基岩版

在已加載區塊裏,所有遊戲內容都能夠被運算。在未加載的區塊裏幾乎各種遊戲內容都不會運算。
種類
  • 玩家加載
    • 近似圓形‌。
    • 在玩家模擬距離內的區塊會被加載。
  • 命令加載
    • 使用/tickingarea指令加載的區塊。
侷限性‌
特殊情況
一個區塊中的事件可能會影響外部的區塊。如果外部的區塊處於非活動狀態,則在大多數情況下會立即暫停。特別地,
  • 已加載區塊邊緣的方塊發生變化,可以將方塊更新傳播到未加載區塊內的方塊,並使它們做出適當的響應。
  • 流動的熔岩可以擴散到外部區塊中的第一個相鄰方塊,但流動會暫停,直到外部區塊被加載。
  • 可以傳播到加載區塊外的第一個相鄰的易燃方塊。像熔岩那樣,也會暫停;雖然是可見的,但動畫不會被播放並且在區塊活躍前不再繼續傳播。
  • 草方塊菌絲可以傳播到外部區域的第一個相鄰方塊,但受影響的方塊在其區塊變為活躍之前不會真正改變其外觀,之後會即刻改變。
  • 在加載區塊邊緣生長的南瓜和莖可將其果實放置在外面區塊的相鄰方塊上。
  • 嘗試移動到外部區塊的實體(例如生物礦車)在離開加載區塊後會即刻停止所有活動。它仍然可見但會一動不動。當外部區塊被加載時,實體會繼續移動。
  • 點燃的TNT會摧毀未加載區塊內的方塊,並且不像其他事件那樣,其效果不限於相鄰的方塊。在外部區塊的第二效果會暫停直到外部區塊變得活躍。例如,如果爆炸破壞了支撐沙子或沙礫的方塊,則沙子或沙礫不會立即掉落。附着在被摧毀的方塊上的物品也會發生同樣的事情,例如物品展示框紅石火把,它們在區塊加載前不會掉落。
  • 點燃的TNT被髮射到未加載的區塊時會暫停在外部空中的第一個方塊。直到外部區塊變為加載狀態,它才將恢復其飛行和倒計時。 [1] 

區塊區塊刻

作為遊戲刻的一部分,每個遊戲刻都會對特定的區塊執行區塊刻。(紅石刻等請移步至“”詞條)
Java版中,在每個遊戲刻中,加載等級在31級或以下、區塊中心與最近的玩家的水平距離小於128的區塊會執行區塊刻。
在基岩版中,在每個遊戲刻中,所有已加載區塊都會執行區塊刻。
區塊刻有許多影響:
  1. 生物自然生成。
  2. 雷暴天氣下,閃電可能在區塊內某處生成(十萬分之一的幾率)。
  3. 每一縱向上的最頂端方塊有十六分之一的幾率檢查天氣更新
    • 在寒冷的生物羣系中,如果條件合適,會結成
    • 如果在下雪,並且條件合適,一片雪可能被放置。
    • 如果在下雨,煉藥鍋可能被填充並最終填滿。
  4. 區塊內某一個方塊會接受到隨機刻更新。 [2] 

區塊史萊姆區塊

史萊姆區塊指的是一些在Y=40以下能夠忽略亮度生成史萊姆的區塊。這些區塊在其他方面與所有其他區塊相同。

區塊Java版生成

史萊姆區塊在世界各地都存在(蘑菇島除外)。有十分之一的區塊都是史萊姆區塊。這些史萊姆區塊是通過將它們的區塊座標與世界的種子相結合,通過偽隨機算法確定的。
使用區塊座標和世界種子來生成介於0和9之間(含0和9)的隨機整數,如果該數字為0,則該區塊是史萊姆區塊。請注意:“xPosition”和“zPosition”是32位整數(INT)。

區塊基岩版生成

基岩版中的史萊姆區塊算法與Java版中的算法不同。該算法不依賴於世界種子,因此,每個世界中的史萊姆區塊位置是相同的。 [1] 
參考資料
  • 1.    區塊  .Minecraft Wiki.2012年6月29日[引用日期2020-03-11]
  • 2.      .我的世界wiki.2012-4-10[引用日期2020-05-31]