<本站文本内容除另有声明外,转载时均必须注明出处。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。>

區塊格式

出自Minecraft Wiki
前往: 導覽搜尋

區塊(Chunks)以16*256*16立方塊為單位存儲地形和實體資訊。區塊也會同時儲存預先計算好的光照、等高線數據及其他元數據資訊,以加快遊戲處理。

NBT結構[編輯 | 編輯原始碼]

參見:Anvil 檔案格式頁面

區塊是儲存在Anvil檔案中的各種標籤,這些Anvil檔案以r.x.z.mca的形式命名。區塊使用NBT格式儲存,遵循以下結構組成(詳見下面方塊格式了解每組陣列中的方塊排序)

  • 根標籤。
    •  DataVersion:該區塊NBT結構的版本。
    •  Level:區塊數據。
      •  xPos:該區塊的X坐標。
      •  zPos:該區塊的Z坐標。
      •  LastUpdate:自該區塊上次保存以來經過的刻。
      •  InhabitedTime:玩家已在該區塊的總刻數。注意該值在多個玩家處於同一區塊時會增長得更快。用於區域難易度:增加帶有一些裝備的生物的生成機率,生物自帶的盔甲附有附魔效果的機率,生成帶有藥水效果蜘蛛的機率,生成擁有撿起物品能力的生物的機率以及決定殭屍被攻擊時生成其他殭屍的機率。該值大於等於3600000時,區域難易度會最大程度影響該區塊。在0及以下時,難易度等級被限制到最低(雖然該值設定為負數時會被設定為0,但是把該值回歸到正數還是要花時間的)。詳見區域難易度獲取更多資訊。
      •  Biomes:可能不存在。包含了1024個元素的生態域資訊。該數組中的每一個數字表示一片4×4×4的區域的生態域。這些數字以Z軸、X軸、Y軸的順序排列。即,該數組中的前4×4個元素表示的是Y坐標為0-3之間的大小為16×16的區塊的生態域,接下來的4×4個元素表示的是Y坐標為4-7之間的生態域,以此類推。生態域ID可在Java版數據值頁面查看。如果這個數組不存在,遊戲在加載和保存區塊時會自動根據世界的種子添加並賦值;若數組內有不對應任何生態域的數字,遊戲也會根據正確資訊改正。
      •  HeightMaps:幾個不同的高度圖。每個高度圖都儲存了被儲存為9位(即取值範圍為[0,256])的256個數值,來表示相應的高度。
        •  MOTION_BLOCKING:最高的能阻擋移動或含有液體的方塊。
        •  MOTION_BLOCKING_NO_LEAVES:最高的阻擋移動、含有液體或在minecraft:leaves標籤裡的方塊。
        •  OCEAN_FLOOR:最高的非空氣固體方塊。
        •  OCEAN_FLOOR_WG:最高的既不是空氣也不包含液體的方塊。此值用於世界生成。
        •  WORLD_SURFACE:最高的非空氣方塊。
        •  WORLD_SURFACE_WG:最高的非空氣方塊。此值用於世界生成。
      •  CarvingMasks
        •  AIR
        •  LIQUID
      •  Sections:一組複合標籤,每個標籤都包含一組子區塊的描述。
        • 一個獨立的子區塊。
          •  Y:這個子區塊的Y索引(不是坐標)。範圍為0到15(從低到高),不會重複,但對應子區塊為空時可能會沒有。
          •  Palette:幾組在區塊中用到的方塊狀態。
            • :一個方塊狀態。
              •  Name方塊的命名空間ID
              •  Properties:方塊狀態屬性列表,名称代表的是方塊狀態屬性的名稱。
                •  名稱:方塊狀態的名稱及其對應的值。
          •  BlockLight:2048位元組記錄了每個方塊發出的亮度。使加載時間相較於重新計算變得更快。每方塊占用4位元組。
          •  BlockStates:一個64位長的變量,能夠存儲4096個索引的數組。索引的順序對應Sections中Palette元素的順序。在Section中的所有索引大小相同,其大小需要表示最大的索引(最小為4位)。若此索引不能被64整除,其位數會繼續增加。
          •  SkyLight:2048位元組記錄了陽光和月光打在每個方塊上的亮度。每方塊占用4位元組。
      •  Entities:該列表的每個複合標籤都定義了該區塊裡的實體。詳見下面的實體格式。如果該列表為空,則該標籤則為一個字節列表標籤。
      •  TileEntities:在該列表的每個複合標籤都定義了該區塊裡的實體。詳見下面的實體格式。如果該列表為空,該列表將會是個結束標籤的列表(1.10版本以前為字節標籤)。
      •  TileTicks:可能不存在。每個在該列表的複合標籤都是該區塊中的一個等待更新的「活躍」方塊。它們用於保存紅石機械的狀態、掉落的沙或水以及其他活動。詳見下面的附加刻格式。這個標籤可能不存在。
      •  LiquidTicks:每個在該列表的複合標籤都是該區塊中的一個等待更新的「活躍」流體。
      •  Lights:一個擁有16個列表標籤的列表標籤。在世界生成時以短整型格式儲存了該區塊中所有的光源的位置。
      •  LiquidsToBeTicked:一個擁有16個列表標籤的列表標籤。以短整型格式儲存了該區塊中所有的等待更新的「活躍」流體的位置。
      •  ToBeTicked:一個擁有16個列表標籤的列表標籤。以短整型格式儲存了該區塊中所有的等待更新的「活躍」方塊的位置。
      •  PostProcessing:一個擁有16個列表標籤的列表標籤。以短整型格式儲存了該區塊中所有的需要在該區塊從原型區塊轉換為完整區塊時更新的方塊的位置。
      •  Status:定義了該區塊當前在世界生成中的狀態。是這些值的其中之一:emptybasecarvedliquid_carveddecoratedlightedmobs_spawnedfinalizedfullchunkpostprocessed
      •  Structures:該區塊中的結構數據。
        •  References:包含Starts的區塊的坐標。
          •  結構名稱:該數組中的每一個長整型數字代表了一個區塊坐標(即方塊坐標/16),其中X坐標儲存在低32位,Z坐標儲存在高32位。
        •  Starts:按類型儲存的還沒有被生成的結構。這些結構的某一部分可能已經被生成了。完全生成好的結構會被移除,即將id設定為INVALID,並移除其他所有標籤。
          •  結構名稱:只存儲能在當前維度生成的結構,如終界城只會保存在終界區塊裡。
            •  ChunkX:結構的起始X坐標。如果idINVALID則無此欄位。
            •  ChunkZ:結構的起始Z坐標。如果idINVALID則無此欄位。
            •  id:如果在此區塊裡沒有此類型的結構,此值為INVALID,否則為結構的名稱。
            •  biome:結構所在的生態域ID。如果idINVALID則無此欄位。
            •  BB:整個結構的邊界。該值有6個整數:最小X、Y、Z坐標以及最大X、Y、Z坐標。如果idINVALID則無此欄位。
            •  Valid:1或0(true/false)-(僅限村莊)村莊是否至少生成了3條不是路的結構。如果idINVALID則無此欄位。
            •  Processed:(僅限遺蹟)已創建部分結構的區塊列表。如果idINVALID則無此欄位。
              • :一個區塊。
                •  X:該區塊的X坐標(區塊坐標,不是方塊坐標)。
                •  Z:該區塊的Z坐標。
            •  Children:組成此結構的、還未被生成的結構片段。如果idINVALID則無此欄位。
              • :結構片段數據。
                •  id:結構片段ID。通常是有大量縮寫的字符串,並不易懂。
                •  Rot:海底廢墟與沉船的方向。有效值為:COUNTERCLOCKWISE_90、NONE、CLOCKWISE_90和CLOCKWISE_180。
                •  BiomeType:此遺蹟所處的海洋的溫度。有效值是WARM和COLD。
                •  Template:海底廢墟或沉船用到的模板。
                •  integrity:該結構的完整度(僅用于海底廢墟)。
                •  TPX:該海底廢墟或沉船的X坐標起始點。
                •  TPY:該海底廢墟或沉船的Y坐標起始點。
                •  TPZ:該海底廢墟或沉船的Z坐標起始點。
                •  PosX:該村莊片段的X坐標起始點。
                •  PosY:該村莊片段的Y坐標起始點。
                •  PosZ:該村莊片段的Z坐標起始點。
                •  isLarge:1或0(true/false)—— 此海底廢墟是否是大型。
                •  GD:似乎是一種測量該結構片段與起始點距離的方式。
                •  O:可能是該結構片段的朝向。
                •  BB:結構片段的邊界。(不包括懸在道路上方的村莊屋頂)值為6個整數:最小X、Y、Z坐標以及最大X、Y、Z坐標。
                •  Width:(神殿和小屋)結構的寬度(X/Z)。
                •  Height:(神殿和小屋)結構的高度(Y)。
                •  Depth:(神殿和小屋)結構的深度(X/Z)。
                •  HPos:(神殿和小屋)為將結構放置在地面上而移動到的Y高度。若該結構未被移動則為-1。
                •  placedTrap1:1或0(true/false)-(叢林神廟)是否放置了走廊發射器發射箭的陷阱。
                •  placedTrap2:1或0(true/false)-(叢林神廟)是否放置了儲物箱發射器發射箭的陷阱。
                •  placedMainChest:1或0(true/false)-(叢林神廟)是否放置了主儲物箱。
                •  placedHiddenChest:1或0(true/false)-(叢林神廟)是否放置了隱藏儲物箱。
                •  hasPlacedChest0:1或0(true/false)-(沙漠神殿)是否放置了儲物箱。
                •  hasPlacedChest1:1或0(true/false)-(沙漠神殿)是否放置了儲物箱。
                •  hasPlacedChest2:1或0(true/false)-(沙漠神殿)是否放置了儲物箱。
                •  hasPlacedChest3:1或0(true/false)-(沙漠神殿)是否放置了儲物箱。
                •  Witch:1或0(true/false)-(沼澤小屋)是否已經在這小屋裡生成女巫。
                •  sc:1或0(true/false)-(廢棄礦坑「MSCorridor」)走廊是否有蜘蛛網。
                •  hr:1或0(true/false)-(廢棄礦坑「MSCorridor」)走廊是否有鐵軌。
                •  hps:1或0(true/false)-(廢棄礦坑「MSCorridor」)走廊是否有一個洞穴蜘蛛生怪磚。
                •  Num:(廢棄礦坑「MSCorridor」)走廊長度。
                •  tf:1或0(true/false)-(「MSCrossing」)路口是否為兩層高。
                •  D: (廢棄礦坑「MSCrossing」)指示路口「即將到來」的方向。
                •  Entrances:(廢棄礦坑「MSRoom」)房間出口列表。
                  • :出口的邊界。
                •  Chest:1或0(true/false)-(地獄要塞「NeSCLT」和「NeSCRT」)該要塞子結構是否應該有一個儲物箱但其尚未生成。(要塞「SHCC」)該要塞子結構是否放置了儲物箱。(村莊「ViS」)在鐵匠鋪裡是否已經生成了儲物箱。
                •  Mob:1或0(true/false)-(地獄要塞"NeMT")該要塞子結構是否應該有一個烈焰使者生怪磚但其尚未生成。(要塞「SHPR」)蠹魚生怪磚是否生成在該子結構裡。
                •  Seed:(地獄要塞「NeBEF」)斷橋結構的隨機數種子。
                •  EntryDoor:(要塞)進入該子結構的門的類型。
                •  Steps:(要塞「SHFC」)走廊長度。
                •  leftLow:1或0(true/false)-(要塞「SH5C」)在五通道路口中是否在下面向上的階梯中有一個出口。
                •  rightLow:1或0(true/false)-(要塞「SH5C」)在五通道路口中是否在上面向上的階梯中有一個出口。
                •  leftHigh:1或0(true/false)-(要塞「SH5C」)在五通道路口中是否在下面向下的階梯中有一個出口。
                •  rightHigh:1或0(true/false)-(要塞「SH5C」)在五通道路口中是否在上面向下的階梯中有一個出口。
                •  Tall:1或0(true/false)-(要塞「SHLi」)圖書館是否有通往上方的階梯。
                •  Type:(要塞「SHRC」)指示房間裡是否有一根插上了火把的柱子、一個噴泉、有一個儲物箱的向上的階梯或只是一個空房間。
                •  Source:1或0(true/false)-(要塞「SHSD」) 螺旋階梯是否是要塞原本的或是隨機生成的。
                •  Left:1或0(true/false)-(要塞「SHS」)是否在走廊左側有一個開口。
                •  Right:1或0(true/false)-(要塞「SHS」)是否在走廊右側有一個開口。
                •  Type:(村莊)村莊類型:0=平原、1=沙漠、2=莽原、3=針葉林。
                •  Zombie:1或0(true/false)-(村莊)是否把該村莊生成為殭屍村莊。
                •  VCount:(村莊)在這個村莊生成的村民數量。
                •  HPos:(村莊)為把村莊放在地面上而移動至的Y坐標。若其未被移動則此值為-1。
                •  CA:(村莊「ViF」和「ViDF」)在耕地格子裡的作物。
                  •  Name命名空間方塊ID
                  •  Properties:方塊狀態屬性列表,名稱是方塊狀態屬性的名稱。
                    •  名稱:方塊狀態名稱對應的值。
                •  CB:(村莊「ViF」和「ViDF」)在耕地格子裡的作物。
                  •  Name方塊的命名空間ID
                  •  Properties:方塊狀態屬性列表,名稱是方塊狀態屬性的名稱。
                    •  名稱:方塊狀態名稱對應的值。
                •  CC:(村莊「ViDF」)在耕地格子裡的作物。
                  •  Name方塊的命名空間ID
                  •  Properties:方塊狀態屬性列表,名稱是方塊狀態屬性的名稱。
                    •  名稱:方塊狀態名稱對應的值。
                •  CD:(村莊「ViDF」)在耕地格子裡的作物。
                  •  Name方塊的命名空間ID
                  •  Properties:方塊狀態屬性列表,名稱是方塊狀態屬性的名稱。
                    •  名稱:方塊狀態名稱對應的值。
                •  Terrace:1或0(true/false)-(村莊「ViSH」)屋子是否有通向屋頂和柵欄的梯子。
                •  T:(村莊「ViSmH」)桌子:0為無桌子,1和2會把桌子放在屋子的兩邊。
                •  C:(村莊「ViSmH」)屋頂類型。
                •  Length:(村莊「ViSR」)道路長度。
                •  junctions:(村莊) 連接點列表。‌[需要更多資訊]
                    •  source_x:方塊坐標。
                    •  source_ground_y:方塊坐標。
                    •  source_z:方塊坐標。
                    •  delta_y
                    •  dest_proj:值為terrain_matchingrigid

方塊格式[編輯 | 編輯原始碼]

在Anvil檔案格式中, 方塊的位置被按照YZX來排序以此達到壓縮的目的。

坐標系如下:

  • X 向東增加,向西減少;
  • Y 向上增加,向下減少;
  • Z 向南增加,向北減少。

這也發生在產生最自然的掃描方向上,因為所有在最少有效維度裡(例如在這種情況下是X軸)的索引都出現為每個在下一個最有效維度裡的索引。因此讀取一個排序為YZX的數組像讀一本頭朝北放置的書,所有的字母(或X索引)同一時間都在一條線上(或Z索引),並且所有的線同一時間都在一頁紙(或Y索引)上。對於二維數組(如「HeightMap」),不適用的Y維度被簡單地忽略了,好像書本只有一頁厚那樣。

在區塊裡的每個子區塊是一個16x16x16格的區域,一個區塊至多有16個子區塊。子區塊0是區塊最底下的子區塊,子區塊15是區塊最高的子區塊。為了節省空間,完全為空的子區塊不會被保存。在每個子區塊裡由一個「Y」字節標籤用於索引子區塊,0到15和用於方塊的字節數組組成。「Blocks」字節數組擁有4096個局部方塊ID,每個方塊占用8個字節。另一個字節數組「Add」是用來存儲方塊ID高於255的方塊,長度為2048位元組,用來儲存4096個方塊ID的其他部分,每個方塊占用4個字節。當「Blocks」和「Add」字節數組同時存在時,在「Add」數組的局部ID被左移位8個字節並添加到「Blocks」數組的局部ID中以組成真實的方塊ID。「Data」字節數組長度也是2048位元組,但可儲存4096個方塊數據值,每個方塊占用4個字節。「BlockLight」和「SkyLight」字節數組與「Data」字節數組相同,但這兩個字節數組是用來分別儲存方塊亮度等級和天空亮度等級的。「SkyLight」的值代表了日光或月光有多少能到達方塊,這取決於當前天空的亮度等級。

長度為2048位元組數組的字節順序(如「Add」、「Data」、「BlockLight」和「SkyLight」)為每個方塊僅給予4個字節,它似乎是一個異常的例外,否則它們一致為大數據存儲格式的標準格式。它也運行計數器以轉化為大概自然的可讀印刷方向。如果方塊在0開始,它們在奇數之前被偶數分組(如0和1共享一個字節、2和3共享下一個字節如此類推)。根據這些指示,Minecraft在至少有效的半字節裡儲存偶數方塊,在最高有效字節裡儲存奇數方塊。因此,block[0]是在0x0F的byte[0],block[1]是在0xF0的byte[0],block[2]是在0x0F的byte[1],block[3]是在0xF0的byte[1],如此類推。

下面的偽代碼顯示了如何從一個子區塊中獲取單個方塊的資訊。滑鼠移到文本上面以查看附加資訊或注釋。

byte Nibble4(byte[] arr, int index){ return index%2 == 0 ? arr[index/2]&0x0F : (arr[index/2]>>4)&0x0F; }
int BlockPos = y*16*16 + z*16 + x;
byte BlockID_a = Blocks[BlockPos];
byte BlockID_b = Nibble4(Add, BlockPos);
short BlockID = BlockID_a + (BlockID_b << 8);
byte BlockData = Nibble4(Data, BlockPos);
byte Blocklight = Nibble4(BlockLight, BlockPos);
byte Skylight = Nibble4(SkyLight, BlockPos);

實體格式[編輯 | 編輯原始碼]

每個實體是一個包含在區塊檔案實體列表中的一個沒有鍵名的 TAG_Compound複合標籤。唯一例外的是玩家實體,它的數據儲存在level.dat,或者在伺服器檔案的<player>.dat當中。

  • 實體數據
    •  id:實體ID。玩家雖然也是實體,但其沒有此標籤。
    •  Pos:記錄當前實體X、Y、Z坐標的3個TAG_Doubles
    •  Motion:記錄當前實體dX、dY、dZ速度向量的3個TAG_Doubles,單位是米/每
    •  Rotation:記錄旋轉角度的兩個TAG_Floats
      • :當前實體以Y軸為中心順時針的角度(即偏轉角)。正南方為0。不會超過360度。
      • :當前實體與水平面之間的傾斜角(即俯仰角)。水平面為0。正值表示面朝下方。不超過正負90度。
    •  FallDistance:當前實體已經墜落的距離。值越大,實體落地時對其造成傷害更多。
    •  Fire:距離火熄滅剩餘的時間刻數。負值表示當前實體能夠在火中站立而不著火的時間。未著火時預設為-20。
    •  Air:當前實體所剩的空氣值。在空氣中充滿至300,折算為生物淹沒在水中15秒後生物才開始窒息,如該實體生命值為20點,那麼實體在35秒後才會死亡。如果此項為0時實體在水中,那麼其每秒會受到1點傷害。
    •  OnGround:1或0(true/false),實體接觸地面時為true
    •  NoGravity:1或0(true/false),如果為true,實體在空中不會墜落,在盔甲座上的效果卻是使 Motion標籤將失去效果(標籤數據依舊存在,且持續被系統運算)。
    •  Invulnerable:1或0(true/false),如果為true,那麼當前實體不會受到任何傷害。此項對於生物與非生物實體的作用是類似的:生物不會受到任何來源(包括藥水)的傷害,無法被釣竿、攻擊、爆炸或者拋射物推動;除支持物被移除外,諸如載具的物件都不會被摧毀。注意,這些實體仍然會被處於創造模式的玩家傷害到。
    •  PortalCooldown:距離當前實體可以再次穿過地獄傳送門向回傳送的時間刻數。在初次傳送後,起始值為300刻(15秒)並逐漸倒計時至0。
    •  UUID:實體的UUID,用4個32位整數表示,按從高位到低位的順序存儲。
    •  CustomName:當前實體的自訂名稱JSON文本組件。會出現在玩家的死亡資訊與村民的交易介面,以及玩家的光標指向的實體的上方。可能不存在,或者存在但為空值。
    •  CustomNameVisible:1或0(true/false),如果為true,而且實體擁有自訂名稱,那麼名稱會總是顯示在它們上方,而不受光標指向的影響。若實體並沒有自訂名稱,顯示的則是預設的名稱。可能不存在。
    •  Silent:1或0(true/false),如果為true,那麼當前實體不會發出任何聲音。可能不存在。
    •  Passengers:正在騎乘當前實體的實體的數據。注意,兩個實體都能控制移動,被生怪磚召喚時生成條件由最上方的實體決定。
      • 子項,請見本格式(遞歸)。
    •  Glowing:1或0(true/false),如果為true,那麼實體會有發光的輪廓線。
    •  Tags:自訂的記分板標籤數據。

生物[編輯 | 編輯原始碼]

生物實體
實體ID 名稱
bat 蝙蝠
blaze 烈焰使者
cat
cave_spider 洞穴蜘蛛
chicken
cod 鱈魚
cow
creeper 苦力怕
dolphin 海豚
donkey 驢子
drowned 沉屍
elder_guardian 遠古深海守衛
ender_dragon 終界龍
enderman 終界使者
endermite 終界蟎
evoker 喚魔者
fox 狐狸
ghast 地獄幽靈
giant 巨人
guardian 深海守衛
horse
husk 屍殼
illusioner 幻術師
iron_golem 鐵魔像
llama 駱馬
magma_cube 岩漿立方怪
mooshroom 哞菇
mule 騾子
ocelot 山貓
panda 貓熊
parrot 鸚鵡
phantom 夜魅
pig
pillager 掠奪者
polar_bear 北極熊
pufferfish 河豚
rabbit 兔子
ravager 劫毀獸
salmon 鮭魚
sheep
shulker 界伏蚌
silverfish 蠹魚
skeleton 骷髏
skeleton_horse 骷髏馬
slime 史萊姆
snow_golem 雪人
spider 蜘蛛
squid 魷魚
stray 流髑
trader_llama 行商駱馬
tropical_fish 熱帶魚
turtle 海龜
vex 惱鬼
villager 村民
villager_v2 村民‌‌[僅基岩版]
vindicator 衛道士
wandering_trader 流浪商人
witch 女巫
wither 凋零怪
wither_skeleton 凋零骷髏
wolf
zombie 殭屍
zombie_horse 殭屍馬
zombie_pigman 殭屍豬人
zombie_villager 殭屍村民
zombie_villager_v2 殭屍村民‌‌[僅基岩版]

每個生物都有額外的標籤來儲存它們的血量、狀態、效果。玩家是生物的一個子類。

彈射物[編輯 | 編輯原始碼]

彈射物實體
實體ID 名稱
arrow 射出的箭
dragon_fireball 龍炎彈
ender_pearl 丟出的終界珍珠
egg 丟出的蛋
fireball 地獄幽靈火球
llama_spit 駱馬的口水
potion 丟出的飛濺藥水
small_fireball 烈焰使者火球/火焰彈
shulker_bullet 界伏蚌飛彈
snowball 丟出的雪球
spectral_arrow 追跡之箭
trident 三叉戟
wither_skull 凋零怪之首
xp_bottle 丟出的經驗瓶

彈射物是實體的一個子類,並有很不清楚的數據標籤,例如儘管存在Pos標籤但仍加入X、Y、Z方位標籤,儘管存在inGround但仍加入inTile,以及儘管多數彈射物不是箭但仍加入shake標籤。儘管所有的彈射物都共有著一部分標籤,這些標籤仍然是由ThrowableArrowBase這兩個類獨立實現的。

物品和經驗球[編輯 | 編輯原始碼]

物品實體
實體名 名稱
item 掉落的物品
xp_orb 經驗球

物品和經驗球是實體的子類。

交通工具[編輯 | 編輯原始碼]

交通工具實體
實體 ID 實體名稱
Boat
minecart 礦車
chest_minecart 儲物箱礦車
command_block_minecart 指令方塊礦車
furnace_minecart 熔爐礦車
hopper_minecart 漏斗礦車
spawner_minecart 生怪磚礦車
tnt_minecart TNT礦車

交通工具是實體的一個子類。

動態方塊[編輯 | 編輯原始碼]

Dynamic Tile Entities
實體ID 實體名稱
tnt 點燃的TNT
falling_block 掉落中的方塊

動態方塊是實體的一個子類,用來表示原本為方塊,但因其他原因而成為實體的實體。在本質上,其為一個實體。

其他[編輯 | 編輯原始碼]

其他實體
實體ID 名稱
area_effect_cloud 區域效果雲
armor_stand 盔甲座
end_crystal 終界水晶
evocation_fangs 尖牙
eye_of_ender 終界之眼
firework_rocket 煙火
fishing_bobber 釣竿浮標
item_frame 物品展示框
leash_knot 拴繩
painting
shulker_bullet 界伏蚌飛彈

其他實體類型是實體的一個子類,無法分入任何上述分類。

方塊實體格式[編輯 | 編輯原始碼]

方塊實體
方塊實體ID 對應方塊
banner 旗幟
barrel 木桶
beacon 烽火台
bed
beehive 蜂窩/蜂箱
bell
blast_furnace 高爐
brewing_stand 釀造台
campfire 營火
cauldron 鍋釜‌‌[僅BE]
chest 儲物箱
陷阱儲物箱
comparator 紅石比較器
command_block 指令方塊
conduit 海靈核心
daylight_detector 陽光探測器
dispenser 發射器
dropper 投擲器
enchanting_table 附魔台
ender_chest 終界箱
end_gateway 終界折躍門方塊
end_portal 終界傳送門方塊
furnace 熔爐
hopper 漏斗
jigsaw 拼圖方塊
jukebox 唱片機
lectern 講台
mob_spawner 生怪磚
piston 移動中的活塞
shulker_box 界伏盒
sign 告示牌
skull 頭顱
smoker 煙燻爐
structure_block 結構方塊

方塊實體(與實體無關),被遊戲用來存儲不能儲存在方塊狀態中的資訊。1.8之前的版本稱為tile entity,如今遊戲中的部分指令還存在這種叫法。

附加刻格式[編輯 | 編輯原始碼]

附加刻代表方塊更新,它的作用是用於解釋在區塊保存前的事情。事實上它是用於在重新加載世界時再次更新它們(包括紅石機械的更新,水、熔岩的流動,礫石檢查墜落等等)。但是附加刻不會用於像檢查樹葉腐爛,農作物生長等需要隨機刻來更新的方塊,因為它們的更新不需要隨著區塊的載入而更新。對於地圖製作者來說,附加刻可以用於在加載區塊的同時更新方塊。

  • 一個附加刻
    •  i:方塊的ID;用於啟動正確的方塊更新步驟。
    •  t:距離處理過程將要發生的刻數。處理過程已經發生後可能是負值。
    •  p:如果多個方塊刻被安排入同一刻中,那麼p值較小的方塊刻會被優先處理。若還有p值相同的方塊刻,處理順序未知。
    •  x:X坐標。
    •  y:Y坐標。
    •  z:Z坐標。

歷史[編輯 | 編輯原始碼]

區塊在Infdev中首次引入。在Beta 1.3中加入區域檔案格式之前,區塊都是獨立存儲在以Base36編碼的區塊位置為檔案名的.dat檔案裡,這種格式是Alpha檔案格式。區域檔案格式更改了這種儲存方式,它把一組32×32區塊存儲在以Base10編碼的坐標命名的.mcr檔案裡,以減少Minecraft一次處理檔案的數量的方式來減少硬碟占用。區域檔案格式的繼承者便是現在的格式——Anvil檔案格式,它只修改區塊格式。區域檔案技術仍然在使用,但其檔案擴展名被改成了.mca。

區域檔案格式到Anvil格式的主要修改是把區塊拆成區域。每個區塊至多有16個16×16×16方塊組成的區域以便使完全空的區域不會被保存。後者也已做好了支持0-4095的方塊ID的準備,而前者支持的ID為0-255。然而,Minecraft沒有為以物品形式存在的方塊做好完全的準備,在256-4095中的許多ID都已被物品占用。

Block、Data、BlockLight和Skylight數組現在存儲在每個區塊區域裡。Data、BlockLight和Skylight是4位元組的數組,方塊亮度和天空亮度不再存儲部分方塊ID。Block數組每個方塊8位元組,4096格的支持以存儲附加方塊ID資訊的每方塊4位元組的附加字節數組的形式存在。在Anvil格式中,NBT格式從Notch原本的設計變成了類似於包含字節數組標籤那樣包含一個整數數組標籤。其目前只在區塊的HeightMap中使用。

Java版
?MobSpawner中移除了MaxExperienceRemainingExperienceExperienceRegenTickExperienceRegenRateExperienceRegenAmount
1.4.212w34a加入實體WitherBoss
1.513w02a加入實體MinecartTNT
Minecart被棄用。
13w03a加入實體MinecartHopper
13w06a加入實體MinecartSpawner
1.6.113w16a加入實體EntityHorse
13w21aEntityHorse中移除了ArmorType
EntityHorse中移除了Saddle
1.6.1-preEntityHorse重新加入了Saddle
1.7.213w39a加入實體MinecartCommandBlock
1.814w02a為儲物箱加入了Lock
現在指定了NBT數據時不再使用物品ID。
FallingSand加入了Block,其使用了字母ID格式。
14w06a為所有實體加入了ShowParticles
為所有物品實體加入了PickupDelay
Age設定為-32768會使物品永不過期。
為所有生物移除了AttackTime
14w10aVillager加入了rewardExp
為所有可以飼養的生物加入了OwnerUUID
Skull加入了Owner
對物品展示框和畫進行了更改:加入了FacingTileXTileYTileZ現在表示物品裡面的方塊的坐標而不是其放置的物品,同時棄用了DirectionDir
14w11a加入實體Endermite
Enderman加入了EndermiteCount
14w21a現在所有實體都有了CustomNameCustomNameVisible
14w25a加入實體Guardian
為告示牌加入了Text1Text2Text3Text4。告示牌現在不再有字符數量限制(16個),現在其限制取決於字符的寬度。
14w27a加入實體Rabbit。 為指令方塊告示牌加入了CommandStats
14w28aEnderman移除了EndermiteCount
14w30a為所有實體加入了Silent
14w32a為所有生物加入了NoAI
加入實體ArmorStand
14w32cArmorStand加入了NoBasePlate
1.915w31aLiving加入了標籤HandItemsArmorItemsHandDropChancesArmorDropChances。它們取代了DropChancesEquipment標籤。
ArmorStand加入了HandItemsArmorItems
Entity加入了Glowing
LivingBase加入了Team
EnderDragon加入了DragonPhase
加入實體Shulker,是SnowMan的子標籤。
加入實體ShulkerBullet,是Entity的子標籤。
加入實體DragonFireball,其擴展了FireballBase,但沒有獨有標籤。
加入實體TippedArrowSpectralArrow,是Arrow的子標籤。
加入方塊EndGatewayTileEntity
加入方塊Structure,是TileEntity的子標籤。
加入物品標籤Potion,是tag的子標籤。
15w32aTagsDataVersion標籤現在可應用於實體上。
Fuse中PrimedTnt實體的標籤類型從「Byte」改為「Short」。
15w32c引入了實體擁有標籤的數量限制(1024個標籤)。在試圖超越此限制時會顯示錯誤:「不能向實體加入超過1024個標籤」。
15w33a加入實體AreaEffectCloud,其是Entity的子標籤。
EndGateway加入ExactTeleport並且重命名LifeAge
ThrownPotion加入了Linger
Entity移除了DataVersion。該標籤現在只適用於Player以及LivingBase的子標籤。
Entity移除了UUID
LivingBase中的HealF現已棄用。
LivingBase中的LivingBase類型從「Short」變為「Float」。
ArmorStandLiving實體中移除了,該標籤的功能被早些時候加入的HandItemsArmorItems替代。
15w33cEnderCrystal加入了BeamTarget
15w34a指令方塊Control方塊實體加入了poweredconditional字節標籤。
FireballBase加入了lifepower
MobSpawner中的SpawnData加入了id
音階盒加入poweredMusic方塊實體。
15w35aZombie加入了VillagerProfession
15w37aMinecartHopper加入了Enabled
15w38aEntityHorse加入了SkeletonTrapSkeletonTrapTime
15w41a所有實體中的RidingPassengers替代。
向所有騎乘者加入了RootVehicle
Boat加入了Type
15w42aCauldron(釀造台)加入了Fuel
15w43aChestMinecartMinecartHopper加入了LootTableLootTableSeed
向所有生物加入了DeathLootTableDeathLootTableSeed
向所有火球(FireballBase)加入了lifepower
15w44aEnderCrystal加入了ShowBottom
15w44bArrow加入了PotionCustomPotionEffects
AreaEffectCloud加入了Potion
15w45aThrownPotion處移除了Linger。現在儲存的物品的ID包含minecraft:lingering_potion,藥水會滯留。
ThrownPotion現在會渲染其物品形式,即使那個物品不是藥水。
15w46aRabbitMoreCarrotTicks現在會在兔子吃一個胡蘿蔔時設定為40,但該標籤目前未被使用。
15w47aBeacon加入了PaymentItem
15w49aBeacon中移除了PaymentItem
為了使告示牌接受文字,所有4個標籤(「Text 1」、「Text 2」、「Text 3」和「Text 4」)都必須存在。
15w51bArmorStandDisabledSlots的原始值會自然更改。
1.1016w20a加入實體 PolarBear
Zombie加入了ZombieType,並且重命名VillagerProfessionIsVillager。值若為6則表示其是屍殼殭屍。
一個值為2的SkeletonType 指向單獨的骷髏。
NoGravity擴展到所有的實體。
Structure加入poweredshowboundingboxshowair
16w21a加入FallFlying到怪物和武器選項
Structure加入integrityseed
1.10-pre1AreaEffectCloud加入ParticleParam1ParticleParam2
1.1116w32a馬按它們各自的類型被分成如下實體ID:horsedonkeymuleskeleton_horse以及zombie_horse 。從horse中移除了TypeHasReproducedChestedHorseItems 標籤已經僅僅適用於muledonkey、並且SkeletonTrapSkeletonTrapTime 也只適用於skeleton_horse
骷髏被分成了如下實體ID: skeletonstray以及wither_skeleton。從骷髏中刪除了所有的SkeletonType標籤。
殭屍被分成了如下實體IDzombiezombie_villager以及husk。從殭屍類型中移除了所有的ZombieType標籤、ConversionTime標籤和Profession標籤現只適用於zombie_villager
保衛者被分為了如下的實體IDguardianelder_guardian。從guardian中移除了Elder
沒有被使用的遊戲保存IDMobMonster被移除。
Pumpkin字節標籤被加入到snowman
16w35abanner加入了CustomName
16w39a加入例如llamallama_spitvindication_illagervexevocation_fangsevocation_illager
shulker加入了Color
為物品加入了LocNameCustomPotionColor以及ColorMap
16w40avindication_illager加入了Johnny
從火球基類(地獄幽靈火球、烈焰使者火球(火焰彈)、龍炎彈和凋零怪之首)中刪除了xTileyTilezTileinTileinGround
16w41a標籤llama_spit已經在遊戲保存實體中可用,
16w42a加入 critarrow
16w43a加入 OwnerUUIDLeastOwnerUUIDMostevocation_fangs
16w44a從魚鉤實體中刪除了標籤:xTileyTilezTileinTileinGround
1.11-pre1改變ench標籤使它至少具有一個TAG_compound 。
1.1217w13a加入了實體ParrotShoulderEntityLeft/ShoulderEntityRightseenCreditsrecipeBookRecipes
17w14a為成為了複合標籤的recipeBook加入了isFilteringCraftableisGuiOpenrecipes
為實體Zombie加入了ConversionPlayerLeastConversionPlayerMost
17w16a改進了指令中的NBT解析。
17w17arecipeBookUpdateLastExecutionLastExecution加入了toBeDisplayed
17w17b為可繁殖的實體加入了LoveCauseLeastLoveCauseMost
1.1317w47a物品中的damage標籤被移除,工具和盔甲現在使用Damage標籤,地圖使用map標籤,二者類型都是tag
終界使者的carriedcarriedData標籤被併入到carriedBlockState標籤中。
箭的inTileinData標籤被併入到inBlockState標籤中。
礦車的DisplayTileDisplayData標籤被併入到DisplayState標籤中。
掉落的方塊的BlockData標籤被併入到BlockState標籤中。
移動中的活塞的BlockIdBlockData標籤被併入到blockState標籤中。
移除了音階盒和花盆方塊實體。
陷阱儲物箱現在有了它們自己的方塊實體trapped_chest
從旗幟中移除了Base
從生物頭顱中移除了Rot
17w47a從唱片機中移除了Record
17w47b陷阱儲物箱不再擁有它們自己的方塊實體,轉而再次使用chest
18w01aThrowerOwner的類型從strings已被修改為有2個long類型的LM標籤的複合標籤。
18w02a由釣竿創建的浮標現在有了其實體IDfishing_bobber
畫的ID已被小寫化、命名空間化。
18w07a加入了turtletridentphantom實體。
turtle加入了HomePosXHomePosYHomePosZTravelPosXTravelPosYTravelPosZHasEgg
phantom加入了AXAYAZSize
18w15a加入了dolphin實體。
18w19apuffer_fish重命名為pufferfish
18w20acod_mob重命名為cod
salmon_mob重命名為salmon
18w21adolphin加入了TreasurePosXTreasurePosYTreasurePosZGotFishCanFindTreasure
ench現已被重命名為Enchantments
Enchantments不再接受數字ID,它現在接受字母ID。
pre5xp_orb重命名為experience_orb
xp_bottle重命名為experience_bottle
eye_of_ender_signal重命名為eye_of_ender
ender_crystal重命名為end_crystal
fireworks_rocket重命名為firework_rocket
commandblock_minecart重命名為command_block_minecart
villager_golem重命名為iron_golem
evocation_fangs重命名為evoker_fangs
evocation_illager重命名為evoker
vindication_illager重命名為vindicator
pre5illusion_illager重命名為illusioner
1.1418w43a加入了illager_beastpandapillager實體。
18w45aLIGHT_BLOCKING高度圖現已被移除。
1.1519w36a每個區塊中 Level標籤中的 Biomes數組現在包含1024個整數而不是256個,允許不同高度上的生態域有不同的值。

參考[編輯 | 編輯原始碼]

  1. FVbico和Steven W.d.V.在MC-51003上的評論。