本帖最后由 DJXGAME 于 2012-11-19 11:17 编辑

世界格式

Minecraft1.0中,每一个世界都有自己的文件夹。在世界文件夹中通常需要靠level.dat文件和存储地图和区域的子文件夹才能鉴别对应的世界。

在世界文件夹中永远会包含的信息以粗体的形式显示,有时会显示的信息则以斜体的形式显示。

相对路径名称描述
/level.dat见下文存储关于世界的全局信息。
/level.dat_mcr-level.dat文件在转换为MCRegion铁砧文件前的备份文件。
/level.dat_old-level.dat文件在从Alpha 世界格式转换为MC区域铁砧文件前的备份文件。
/session.lock见下文用于获取最后执行的程序修改这一文件以及访问的权限。
/players/<player>.datPlayer.dat 格式存储这一世界内玩家所有的个人信息。
/data/idcounts.dat
/data/map_<#>.dat
地图物品格式存储可合成地图这一物品所包括的地图数据。
/data/villages.datvillages.dat 格式存储世界中村民的信息。
/region/-包含主世界中的区域信息。
/DIM-1/-包含下界中的区域信息。
/DIM1/-包含末路之地中的区域信息。
/region/r.<#>.<#>.mca
/DIM-1/r.<#>.<#>.mca
/DIM1/r.<#>.<#>.mca
铁砧文件格式独立区域信息
/region/r.<#>.<#>.mcr
/DIM-1/r.<#>.<#>.mcr
/DIM1/r.<#>.<#>.mcr
区域文件格式用于存储区域文件在从MCRegion转换为铁砧之前的备份文件。
/<#>/<#>/c.<#>.<#>.datAlpha 世界格式用于存储区块文件在转换从Alpha世界格式转换为MCRegion之前的备份文件。
level.dat 格式

level.dat文件包含了世界的全局信息,如时间,单人游戏玩家,所使用的世界类型以及地图种子等。为NBT文件,其格式如下:


根标签
Data: 此标签包含所有的世界数据。
  ┣version: NBT的版本,为19133。
  ┣initialized: 1 或 0(真/假) -通常情况下,当世界在正常方式创造之后为真。如果初始化模拟被某种情况所中断,此处为假,世界将会在下一次载入时重新初始化。
  ┣LevelName: 世界的名字
  ┣generatorName:世界类型:"默认"、"超平坦"、"超大生物群系"。不区分大小写。
  ┣generatorVersion:世界类型的版本。修改此处的作用未知,但是从观察到的情况下非零。
  ┣generatorOptions:生成器的控制方式,当前只针对超平坦世界。其格式为许多以逗号相隔的方块ID,这些ID的排列顺序为从地底依次排列。这些ID可以在其前面添加'x和其层数。不支持小ID。[1]
  ┣RandomSeed: 随机世界种子用于生成固定的地形。
  ┣MapFeatures: 1 或 0(真/假) - 如果在世界类型中选择允许生成如村落、要塞、矿井这些结构则为真。
  ┣LastPlayed:世界最后被加载时的Unix时间戳
  ┣SizeOnDisk:世界所预估的所占字节的大小。当前在Minecraft中无法进行修改,但是之前是可以的。
  ┣allowCommands: 1 或 0(真/假) - 如果允许作弊则为真。
  ┣hardcore: 1 或 0 (真/假)- 如果玩家在单人游戏中死亡后删除世界则为真。在三个模式中均有效。
  ┣GameType:在单人游戏玩家生成或重生时的默认游戏模式。0为生存模式,1为创造模式,2为冒险模式。提示:单人游戏玩家不要将此处设置成当前所在的游戏模式。
  ┣Time:世界自开始时所经历的刻数。
  ┣DayTime:游戏中的时间。0为日出,6000为正午,12000黄昏,18000为午夜,24000为次日零时。这一数据会超过24000而不重置至0。
  ┣SpawnX: 出生点的X坐标。
  ┣SpawnY: 出生点的Y坐标。
  ┣SpawnZ: 出生点的Z坐标。
  ┣raining: 1 或 0 (真/假)- 如果世界此时正在下雨、下雪或阴云密布则为真。
  ┣rainTime:在“下雨”被触发前所经历的刻数,一旦被触发则会重置为另一随机数。
  ┣thundering: 1 或 0(真/假) - 如果下雨/下雪/阴云密布并且出现闪电,天空太过阴暗以至于生物可以在白天进行刷新时则为真。
  ┣thunderTime:在“闪电”被触发前所经历的刻数,一旦被触发则会重置为另一随机数。
  ┣Player:单人游戏玩家的状态。此处如果玩家与<player>.dat中玩家名字相同的话会覆盖<player>.dat文件。如果在服务器中已经存在这一文件则会被保存,否则不会保存服务器世界。参见Player.dat 格式
  ┗GameRules:游戏规则。每一规则为非"真"即"假"的字符串。
     ┣commandBlockOutput:是否将指令方块的行为显示到聊天窗口中,默认为真。
     ┣doFireTick:是否开启火焰蔓延和消失,默认为真。
     ┣doMobLoot:生物在被杀死后是否掉落物品,默认为真。
     ┣doMobSpawning:生物在自然环境下是否会生成,默认为真。
     ┣doTileDrops:在破坏方块后是否会掉落对应方块物品,默认为真。
     ┣keepInventory:玩家在死后是否会保留物品,默认为假。
     ┗mobGriefing:生物是否会破坏方块(如爬行者的爆炸,僵尸的破坏等),默认为真。


session.lock 格式

此文件包含了该世界最后一次进入时的时间戳。文件为一64字节以大端字节序格式的整值数据,为自1970年(标准时区)开始的以百为单位的毫秒数。

与典型的lock文件不同,这一文件确保了最后访问这一世界的程序有读取和修改的权限。该过程通常如下所示:


  • 程序打开 session.lock
  • 程序在session.lock写入当前时间戳
  • 程序对session.lock的变化进行监控
  • 如果session.lock内容发生变化,则程序中断并锁定世界。

即使在玩家开始这一世界之后Minecraft有时也会冻结这一世界。这通常会带来位置的后果。推荐在您需要获取修改世界的权限之前完全关闭Minecraft程序。


引用

小知识:
  • 什么是UNIX时间戳?
UNIX时间戳就是从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数
  • 本文有什么意义?
对我而言是翻译的兴趣所在~多大家而言呢,可以了解一下存档究竟是长什么样子的~也可以从中发现如何进行修改O(∩_∩)O~
更为重要的是,打开MCEdit之前一定要关闭Minecraft!!


PS:排版很重要哦~

QQ截图20121119104746.png (167.1 KB, 下载次数: 59)