ZH:Map Format

本页面包含了自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种可能的生物群系值. 生物群系以字节存储.

存储
这一节记载了服务器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)