Difference between revisions of "Zh:Map Format"

From wiki.vg
Jump to navigation Jump to search
 
(One intermediate revision 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 81: Line 81:
 
|}
 
|}
  
==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)

另见