Difference between revisions of "Zh:Map Format"

From wiki.vg
Jump to navigation Jump to search
(Created page with "本页面包含了自1.2.5至今的世界信息。有关Alpha信息,另见Alpha地图格式。 == 一般信息 == 世界以一连串区域表示,...")
 
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
 
本页面包含了自1.2.5至今的世界信息。有关Alpha信息,另见[[ZH:Alpha Map Format|Alpha地图格式]]。
 
本页面包含了自1.2.5至今的世界信息。有关Alpha信息,另见[[ZH:Alpha Map Format|Alpha地图格式]]。
  
== 一般信息 ==
+
== 常规信息 ==
 
世界以一连串区域表示,其中包含了许多纵列和区块。每个区域是32x1x32的纵列,每个纵列是1x16x1的区块,而每个区块是16x16x16的方块。一个纵列的总高度是256。每个区块存储4(或5)个东西——方块ID(8位)、方块元信息(4位)、方块光照(4位)和天空光照(4位)。可选的第五个值为“add”数据,它是要加到方块ID的四位来支持额外的方块ID(不用于原版Minecraft)。方块光照是由如火把和萤石投射的光照,并使用3D[http://en.wikipedia.org/wiki/Flood_fill Flood Fill]算法计算。天空光照是由天空投射的光照,并使用从上而下计算。当透过半透明方块时会降低亮度值直至遇上不透明方块。不透明方块是天空光照拥有非零值的最后一个方块。亮度从0xF(最亮)开始,一直到0x0(最暗)。纵列存储生物群系信息。每1x256x1长方体的方块拥有相同的生物群系值,每个区块(16x16)拥有共256种可能的生物群系值。生物群系以字节存储。
 
世界以一连串区域表示,其中包含了许多纵列和区块。每个区域是32x1x32的纵列,每个纵列是1x16x1的区块,而每个区块是16x16x16的方块。一个纵列的总高度是256。每个区块存储4(或5)个东西——方块ID(8位)、方块元信息(4位)、方块光照(4位)和天空光照(4位)。可选的第五个值为“add”数据,它是要加到方块ID的四位来支持额外的方块ID(不用于原版Minecraft)。方块光照是由如火把和萤石投射的光照,并使用3D[http://en.wikipedia.org/wiki/Flood_fill Flood Fill]算法计算。天空光照是由天空投射的光照,并使用从上而下计算。当透过半透明方块时会降低亮度值直至遇上不透明方块。不透明方块是天空光照拥有非零值的最后一个方块。亮度从0xF(最亮)开始,一直到0x0(最暗)。纵列存储生物群系信息。每1x256x1长方体的方块拥有相同的生物群系值,每个区块(16x16)拥有共256种可能的生物群系值。生物群系以字节存储。
  
Line 8: Line 8:
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! Name
+
! 名称
! Value
+
!
 
|-
 
|-
| Ocean
+
| 海洋
 
| 0
 
| 0
 
|-
 
|-
| Plains
+
| 平原
 
| 1
 
| 1
 
|-
 
|-
| Desert
+
| 沙漠
 
| 2
 
| 2
 
|-
 
|-
| Extreme Hills
+
| 峭壁
 
| 3
 
| 3
 
|-
 
|-
| Forest
+
| 森林
 
| 4
 
| 4
 
|-
 
|-
| Taiga
+
| 针叶林
 
| 5
 
| 5
 
|-
 
|-
| Swampland
+
| 沼泽
 
| 6
 
| 6
 
|-
 
|-
| River
+
| 河流
 
| 7
 
| 7
 
|-
 
|-
| Hell
+
| 下界
 
| 8
 
| 8
 
|-
 
|-
| Sky
+
| 末地
 
| 9
 
| 9
 
|-
 
|-
| Frozen Ocean
+
| 冻洋
 
| 10
 
| 10
 
|-
 
|-
| Frozen River
+
| 冻河
 
| 11
 
| 11
 
|-
 
|-
| Ice Plains
+
| 积雪的冻原
 
| 12
 
| 12
 
|-
 
|-
| Ice Mountains
+
| 积雪的山地
 
| 13
 
| 13
 
|-
 
|-
| Mushroom Island
+
| 蘑菇岛
 
| 14
 
| 14
 
|-
 
|-
| Mushroom Island Shore
+
| 蘑菇岛岸
 
| 15
 
| 15
 
|-
 
|-
| Beach
+
| 沙滩
 
| 16
 
| 16
 
|-
 
|-
| Desert Hills
+
| 沙漠丘陵
 
| 17
 
| 17
 
|-
 
|-
| Forest Hills
+
| 森林丘陵
 
| 18
 
| 18
 
|-
 
|-
| Taiga Hills
+
| 针叶林丘陵
 
| 19
 
| 19
 
|-
 
|-
| Extreme Hills Edge
+
| 峭壁边缘
 
| 20
 
| 20
 
|-
 
|-
| Jungle
+
| 丛林
 
| 21
 
| 21
 
|-
 
|-
| Jungle Hills
+
| 丛林丘陵
 
| 22
 
| 22
 
|}
 
|}
  
==Storage==
+
== 存储 ==
  
This section documents the Anvil format for servers.
+
这一节记载了服务器Anvil格式的相关文档。
  
Maps are stored as a specific directory structure with several [[NBT]] files within.  For the sake of examples, the world we'll be working with is stored in a folder called "/world".
+
地图被存储为特定的包含一些[[ZH:NBT|NBT]]文件的目录结构。为了举例,我们将存储要用的世界的文件夹叫做“/world”
  
===Directory Structure===
+
=== 目录结构 ===
  
* /world/data: Unused
+
* /world/data: 未使用
* /world/DIM-1: Nether world
+
* /world/DIM-1: 下界世界
* /world/DIM-1/region: Nether world regions
+
* /world/DIM-1/region: 下界世界区域
* /world/DIM1: End world
+
* /world/DIM1: 末地世界
* /world/DIM1/region: End world regions
+
* /world/DIM1/region: 末地世界区域
* /world/players: Player data
+
* /world/players: 玩家数据
* /world/region: Overworld regions
+
* /world/region: 主世界区域
  
===level.dat===
+
=== level.dat ===
  
In the root directory is a level.dat file.  The structure of that file is this:
+
根目录中有一个level.dat文件。这个文件的结构是这样的:
  
 
* NBTCompound(Data)
 
* NBTCompound(Data)
 
** NBTByte(hardcore)
 
** NBTByte(hardcore)
** NBTByte(MapFeatures): Set to 1 if structures are generated, such as villages
+
** NBTByte(MapFeatures): 设置为1表示结构(例如村庄)已生成。
** NBTByte(raining): Set to 1 if currently raining
+
** NBTByte(raining): 设置为1表示当前正在下雨
** NBTByte(thundering): Set to 1 if currently thundering (only if there is potential for thunder, not if a thunderbolt is currently in progress)
+
** NBTByte(thundering): 设置为1表示当前正在打雷(仅是有打雷的可能性,而不是当前正在打雷)
 
** NBTInt(GameType)
 
** NBTInt(GameType)
** NBTInt(generatorVersion): 0 for 1.2.5
+
** NBTInt(generatorVersion): 0表示1.2.5
** NBTInt(rainTime): The ticks remaining until rain stops?
+
** NBTInt(rainTime): 雨停剩余的游戏刻数?
 
** NBTInt(SpawnX)
 
** NBTInt(SpawnX)
 
** NBTInt(SpawnY)
 
** NBTInt(SpawnY)
 
** NBTInt(SpawnZ)
 
** NBTInt(SpawnZ)
 
** NBTInt(thunderTime)
 
** NBTInt(thunderTime)
** NBTInt(version): 19133 for 1.2.5
+
** NBTInt(version): 19133表示1.2.5
 
** NBTLong(LastPlayed)
 
** NBTLong(LastPlayed)
 
** NBTLong(RandomSeed)
 
** NBTLong(RandomSeed)
** NBTLong(SizeOnDisk): Always 0 for 1.2.5
+
** NBTLong(SizeOnDisk): 总为0,表示1.2.5
 
** NBTLong(Time)
 
** NBTLong(Time)
 
** NBTString(generatorName)
 
** NBTString(generatorName)
Line 123: Line 123:
 
===[playeruuid].dat===
 
===[playeruuid].dat===
  
Each player that has ever connected is given a [playeruuid].dat file.
+
每个曾经连接过的玩家都会有一个[playeruuid].dat文件
  
 
* NBTCompound
 
* NBTCompound
Line 131: Line 131:
 
** NBTShort(AttackTime)
 
** NBTShort(AttackTime)
 
** NBTShort(DeathTime)
 
** NBTShort(DeathTime)
** NBTShort(Fire): Ticks until the player is no longer on fire, or zero
+
** NBTShort(Fire): 玩家身上的火熄灭剩余的时间,或为0
 
** NBTShort(Health)
 
** NBTShort(Health)
 
** NBTShort(HurtTime)
 
** NBTShort(HurtTime)
Line 149: Line 149:
 
**** NBTByte(Count)
 
**** NBTByte(Count)
 
**** NBTByte(Slot)
 
**** NBTByte(Slot)
**** NBTShort(Damage): Damage -or- metadata
+
**** NBTShort(Damage): 伤害值或元数据
 
**** NBTShort(id)
 
**** NBTShort(id)
 
** NBTList(Motion)
 
** NBTList(Motion)
Line 165: Line 165:
 
===[region].mca===
 
===[region].mca===
  
Each region file is named "r.x.z.mca", where x and z are the coordinates.  These coordinates are relative to each region.  Given column coordinates, divide them by 32 to get the region coordinates.
+
每个区域文件都被命名为“r.x.z.mca”,其中x和z为坐标。这些坐标是相对于每个区域的。给定列坐标,将它们除以32即可得到区域坐标。
  
 
* NBTCompound
 
* NBTCompound
** NBTCompound(Chunk [x,z]): x and z are region column coordinates, not relative to the overall world.  The compound name is a misnomer, it actually represents column.
+
** NBTCompound(Chunk [x,z]): x和z是区域列坐标,不相对于整个世界。compound的名称是一个误称,它实际上表示一列。
 
*** NBTCompound(Level)
 
*** NBTCompound(Level)
**** NBTByte(TerrainPopulated): 1 if this column has been generated
+
**** NBTByte(TerrainPopulated): 1表示该列已经生成
**** NBTInt(xPos): In global, world-relative chunk coordinates
+
**** NBTInt(xPos): 全局的,世界相关的区块坐标
**** NBTInt(yPos): In global, world-relative chunk coordinates
+
**** NBTInt(yPos): 全局的,世界相关的区块坐标
**** NBTLong(LastUpdate): The last time a block changed in this column
+
**** NBTLong(LastUpdate): 上一次该列中方块被更改的时间
 
**** NBTByteArray(Biomes)
 
**** NBTByteArray(Biomes)
 
**** NBTList(Entities)
 
**** NBTList(Entities)
Line 185: Line 185:
 
****** NBTShort(HurtTime)
 
****** NBTShort(HurtTime)
 
****** NBTFloat(FallDistance)
 
****** NBTFloat(FallDistance)
****** NBTString(id): Example: "Skeleton"
+
****** NBTString(id): 例如:“Skeleton”
 
****** NBTList(Motion)
 
****** NBTList(Motion)
 
******* NBTDouble
 
******* NBTDouble
Line 205: Line 205:
 
****** NBTByteArray(SkyLight)
 
****** NBTByteArray(SkyLight)
 
**** NBTList(TileEntities)
 
**** NBTList(TileEntities)
***** [http://www.minecraftwiki.net/wiki/Alpha_Level_Format/Chunk_File_Format#Tile_Entity_Format See this]
+
***** [https://minecraft-zh.gamepedia.com/区块格式#方块实体值格式 见此]
 
**** NBTIntArray(HeightMap)
 
**** NBTIntArray(HeightMap)
  

Latest revision as of 01:54, 16 November 2019

本页面包含了自1.2.5至今的世界信息。有关Alpha信息,另见Alpha地图格式

常规信息

世界以一连串区域表示,其中包含了许多纵列和区块。每个区域是32x1x32的纵列,每个纵列是1x16x1的区块,而每个区块是16x16x16的方块。一个纵列的总高度是256。每个区块存储4(或5)个东西——方块ID(8位)、方块元信息(4位)、方块光照(4位)和天空光照(4位)。可选的第五个值为“add”数据,它是要加到方块ID的四位来支持额外的方块ID(不用于原版Minecraft)。方块光照是由如火把和萤石投射的光照,并使用3DFlood Fill算法计算。天空光照是由天空投射的光照,并使用从上而下计算。当透过半透明方块时会降低亮度值直至遇上不透明方块。不透明方块是天空光照拥有非零值的最后一个方块。亮度从0xF(最亮)开始,一直到0x0(最暗)。纵列存储生物群系信息。每1x256x1长方体的方块拥有相同的生物群系值,每个区块(16x16)拥有共256种可能的生物群系值。生物群系以字节存储。

生物群系值

名称
海洋 0
平原 1
沙漠 2
峭壁 3
森林 4
针叶林 5
沼泽 6
河流 7
下界 8
末地 9
冻洋 10
冻河 11
积雪的冻原 12
积雪的山地 13
蘑菇岛 14
蘑菇岛岸 15
沙滩 16
沙漠丘陵 17
森林丘陵 18
针叶林丘陵 19
峭壁边缘 20
丛林 21
丛林丘陵 22

存储

这一节记载了服务器Anvil格式的相关文档。

地图被存储为特定的包含一些NBT文件的目录结构。为了举例,我们将存储要用的世界的文件夹叫做“/world”

目录结构

  • /world/data: 未使用
  • /world/DIM-1: 下界世界
  • /world/DIM-1/region: 下界世界区域
  • /world/DIM1: 末地世界
  • /world/DIM1/region: 末地世界区域
  • /world/players: 玩家数据
  • /world/region: 主世界区域

level.dat

根目录中有一个level.dat文件。这个文件的结构是这样的:

  • NBTCompound(Data)
    • NBTByte(hardcore)
    • NBTByte(MapFeatures): 设置为1表示结构(例如村庄)已生成。
    • NBTByte(raining): 设置为1表示当前正在下雨
    • NBTByte(thundering): 设置为1表示当前正在打雷(仅是有打雷的可能性,而不是当前正在打雷)
    • NBTInt(GameType)
    • NBTInt(generatorVersion): 0表示1.2.5
    • NBTInt(rainTime): 雨停剩余的游戏刻数?
    • NBTInt(SpawnX)
    • NBTInt(SpawnY)
    • NBTInt(SpawnZ)
    • NBTInt(thunderTime)
    • NBTInt(version): 19133表示1.2.5
    • NBTLong(LastPlayed)
    • NBTLong(RandomSeed)
    • NBTLong(SizeOnDisk): 总为0,表示1.2.5
    • NBTLong(Time)
    • NBTString(generatorName)
    • NBTString(LevelName)

[playeruuid].dat

每个曾经连接过的玩家都会有一个[playeruuid].dat文件

  • NBTCompound
    • NBTByte(OnGround)
    • NBTByte(Sleeping)
    • NBTShort(Air)
    • NBTShort(AttackTime)
    • NBTShort(DeathTime)
    • NBTShort(Fire): 玩家身上的火熄灭剩余的时间,或为0
    • NBTShort(Health)
    • NBTShort(HurtTime)
    • NBTShort(SleepTimer)
    • NBTInt(Dimension)
    • NBTInt(foodLevel)
    • NBTInt(foodTickTimer)
    • NBTInt(playerGameType)
    • NBTInt(XpLevel)
    • NBTInt(XpTotal)
    • NBTFloat(FallDistance)
    • NBTFloat(foodExhastionLevel)
    • NBTFloat(foodSaturationLevel)
    • NBTFloat(XpP)
    • NBTCompound(Inventory)
      • NBTCompound
        • NBTByte(Count)
        • NBTByte(Slot)
        • NBTShort(Damage): 伤害值或元数据
        • NBTShort(id)
    • NBTList(Motion)
      • NBTDouble
      • NBTDouble
      • NBTDouble
    • NBTList(Pos)
      • NBTDouble
      • NBTDouble
      • NBTDouble
    • NBTList(Rotation)
      • NBTFloat
      • NBTFloat

[region].mca

每个区域文件都被命名为“r.x.z.mca”,其中x和z为坐标。这些坐标是相对于每个区域的。给定列坐标,将它们除以32即可得到区域坐标。

  • NBTCompound
    • NBTCompound(Chunk [x,z]): x和z是区域列坐标,不相对于整个世界。compound的名称是一个误称,它实际上表示一列。
      • NBTCompound(Level)
        • NBTByte(TerrainPopulated): 1表示该列已经生成
        • NBTInt(xPos): 全局的,世界相关的区块坐标
        • NBTInt(yPos): 全局的,世界相关的区块坐标
        • NBTLong(LastUpdate): 上一次该列中方块被更改的时间
        • NBTByteArray(Biomes)
        • NBTList(Entities)
          • NBTCompound
            • NBTByte(OnGround)
            • NBTShort(Air)
            • NBTShort(AttackTime)
            • NBTShort(DeathTime)
            • NBTShort(Fire)
            • NBTShort(Health)
            • NBTShort(HurtTime)
            • NBTFloat(FallDistance)
            • NBTString(id): 例如:“Skeleton”
            • NBTList(Motion)
              • NBTDouble
              • NBTDouble
              • NBTDouble
          • NBTList(Pos)
              • NBTDouble
              • NBTDouble
              • NBTDouble
          • NBTList(Rotation)
            • NBTFloat
            • NBTFloat
        • NBTList(Sections): Chunks
          • NBTCompound
            • NBTByte(Y): 0-16
            • NBTByteArray(BlockLight)
            • NBTByteArray(Blocks)
            • NBTByteArray(Data)
            • NBTByteArray(SkyLight)
        • NBTList(TileEntities)
        • NBTIntArray(HeightMap)

另见