🗂️ 理解 Minecraft 存档格式结构
Minecraft Java 版使用 .minecraft/saves/ 目录中的精细化结构存储世界数据。每个存档都是以 level.dat 为标识的独立文件夹,包含 NBT 格式的全局信息,以及用于区域、玩家数据、统计信息与维度内容的专用子目录。这一 Java 版特性支持高级世界编辑与技术分析。
完整目录结构
探索 Minecraft 世界存档中的每个文件夹与文件
NBT 数据解析
理解 Named Binary Tag 格式与世界存储机制
多维度支持
了解主世界、下界与末地的数据组织方式
开发者资源
模组开发与世界编辑的必备知识
📁 交互式世界目录结构
浏览位于 .minecraft/saves/ 的完整存档目录结构
世界根目录(.minecraft/saves/WorldName/)
data/ 文件夹内容
维度文件夹
已弃用文件(旧版本)
⚙️ level.dat 文件结构解析
level.dat 文件使用 NBT(Named Binary Tag)格式保存世界全局信息,这是存档的主配置文件。
📋 NBT 结构概览
{
"": { // 根复合标签
"Data": { // 主数据容器
"LevelName": "My World",
"version": 19133,
"DataVersion": 3465,
"RandomSeed": -1234567890,
"SpawnX": 0,
"SpawnY": 64,
"SpawnZ": 0,
"Time": 1000L,
"DayTime": 1000L,
// ... 还有更多字段
}
}
}
基础世界信息
6 个字段在世界选择界面显示的存档名称
存档 NBT 版本号,Anvil 格式为 19133(1.2.1+)
数据版本号
用于生成地形的随机种子
世界创建后完成初始化则为 true
存档估算大小(旧字段)
玩法与难度设置
6 个字段默认游戏模式:0=生存,1=创造,2=冒险,3=旁观者
当前难度:0=和平,1=简单,2=普通,3=困难(默认 2)
难度是否锁定(默认 false)
为 true 时单人死亡后以旁观者模式重生
1 或 0(true/false)- 是否开启作弊
是否生成结构(村庄、要塞、废弃矿井)
时间与天气系统
8 个字段从世界开始以来的游戏刻数
时间:0=日出,6000=正午,12000=日落,18000=午夜,继续超过 24000
上次加载存档的 Unix 毫秒时间戳
当前是否下雨/下雪与云层覆盖
切换“下雨”前的刻数
是否雷暴(仅在 raining 为 true 时生效)
切换“雷暴”前的刻数
结束“晴天”的剩余刻数
世界边界配置
9 个字段边界中心 X 坐标(默认 0)
边界中心 Z 坐标(默认 0)
边界宽度与长度(默认 60000000)
边界安全距离(默认 5)
边界过渡目标大小(默认 60000000)
边界过渡时间(默认 0)
超出边界每格造成伤害(默认 0.2)
边界警告显示距离(默认 5)
边界警告显示时间(默认 15)
出生点与位置
3 个字段世界出生点 X 坐标
世界出生点 Y 坐标
世界出生点 Z 坐标
高级数据结构
8 个字段数据包选项,包含 Enabled 与 Disabled 数组
世界使用的游戏规则(所有值均为字符串)
自定义 Boss 血条集合
维度相关数据(末影龙战斗等)
各维度生成设置(1.16+)
单人玩家状态(覆盖 UUID.dat)
当前流浪商人 UUID(四个 int 组成)
保存存档的 Minecraft 版本信息
🗺️ 区域文件系统(Anvil 格式)
区域文件(.mca)使用 Anvil 格式存储 32×32 区块。每个区域包含地形、实体与方块数据。
📍 文件命名规则
区域文件遵循 r.x.z.mca 格式:
- r - 表示区域文件
- x - 区域 X 坐标
- z - 区域 Z 坐标
- .mca - Anvil 格式扩展名
r.0.0.mca 覆盖 X、Z 方向 0-31 的区块 🏗️ 区块组织
每个区域文件包含最多 1,024 个区块(32×32):
- 区域内区块坐标:0-31
- 世界区块坐标:region * 32 + local
- 每个区块覆盖 16×16 方块
- 高度范围为 Y=-64 到 Y=319
💾 数据存储
区域文件存储压缩后的区块数据:
- 压缩:Zlib 或 Gzip
- 格式:NBT 复合结构
- 包含:方块、生物群系、实体、方块实体
- 光照:方块光与天光数据
🧮 坐标计算器
计算区域与区块坐标:
🌌 多维度架构
Minecraft 支持多个维度,每个维度都有独立的数据文件夹和特性。
主世界
文件夹: 世界根目录
ID: minecraft:overworld
特性: 完整地形生成、村庄、结构
高度: Y=-64 到 Y=319
下界
文件夹: DIM-1/
ID: minecraft:the_nether
特性: 下界地形、堡垒、堡垒遗迹
高度: Y=0 到 Y=127
末地
文件夹: DIM1/
ID: minecraft:the_end
特性: 末地岛、末地城、末影龙战斗
高度: Y=0 到 Y=255
自定义维度
文件夹: dimensions/namespace/path/
ID: 自定义 namespace:path
特性: 由数据包或模组定义
高度: 可配置
🔐 会话锁格式
session.lock 文件防止多个程序同时访问同一存档。
📄 文件内容
包含一个字符:
U+2603 ☃ 雪人以 UTF-8 编码为 (E2 98 83)
1.16 之前: 包含一个大端 64 位整数时间戳
⚡ 加锁流程
- 程序打开 session.lock
- 写入雪人字符(\u2603)
- 尝试获取文件锁
- 如果锁失败,程序终止
- 程序继续访问世界数据
⚠️ 重要说明
- 防止并发访问导致的存档损坏
- 在外部编辑前完全关闭 Minecraft
- Minecraft 崩溃时可能出现问题
- 存档无法加载时可删除 session.lock
- 旧版本使用时间戳监测
📍 兴趣点(POI)格式
POI 文件使用类似 Anvil 的 .mca 文件存储村民工作站、床等重要位置。
📊 POI 文件结构
{
"": { // 根复合标签
"Data": { // 主数据容器
"Sections": { // 按 Y 坐标的区块分段
"2": { // 分段 Y=2(方块 Y=32-47)
"Valid": 1, // 正确加载时为 true
"Records": [ // POI 记录数组
{
"pos": [100, 64, 200], // X, Y, Z 坐标
"type": "minecraft:bed", // POI 类型
"free_tickets": 1 // 可用票据
}
]
}
},
"DataVersion": 3465 // 数据格式版本
}
}
}
🏠 村民 POI 类型
- minecraft:armorer - 高炉
- minecraft:butcher - 烟熏炉
- minecraft:cartographer - 制图台
- minecraft:cleric - 炼药台
- minecraft:farmer - 堆肥桶
- minecraft:fisherman - 木桶
- minecraft:fletcher - 制箭台
- minecraft:leatherworker - 炼药锅
- minecraft:librarian - 讲台
- minecraft:mason - 切石机
- minecraft:shepherd - 织布机
- minecraft:toolsmith - 锻造台
- minecraft:weaponsmith - 砂轮
🏘️ 特殊 POI 类型
- minecraft:home - 村民床(票据上限:1)
- minecraft:meeting - 村庄铃(票据上限:32)
- minecraft:beehive - 蜂巢/蜂箱(票据上限:0)
- minecraft:nether_portal - 传送门方块(票据上限:0)
- minecraft:lightning_rod - 避雷针(票据上限:0)
- minecraft:lodestone - 磁石(票据上限:0)
🎫 票据系统
free_tickets 表示可用性:
- 0 - 无村民可认领该 POI
- 1 - 1 名村民可使用(多数工作站)
- 32 - 多名村民可使用(仅铃)
非村民 POI 类型(蜂巢、传送门)始终为 free_tickets = 0
📐 坐标系统
POI 坐标存储为:
- pos: [X, Y, Z] - 精确方块坐标
- Sections: 按区块分段 Y 坐标组织
- Y 坐标计算: 分段 Y=2 覆盖方块 Y=32 到 Y=47
- 文件组织: 与区域文件类似(r.x.z.mca)
🛠️ 存档格式工具与资源
处理 Minecraft 存档和世界数据的必备工具与资源。
NBT 编辑器
查看与修改 NBT 数据结构:
- NBTExplorer(Windows/Mac/Linux)
- NBT Studio(跨平台)
- 在线 NBT 查看器
- 编程库(Python、Java、JS)
世界编辑器
高级世界编辑工具:
- WorldEdit(游戏内编辑)
- MCEdit(外部世界编辑器)
- Amulet 地图编辑器
- 自定义脚本与程序
分析工具
理解与分析世界数据:
- 区块边界可视化
- 区域文件分析器
- 性能分析工具
- 备份与迁移工具
开发 API
编程接口与库:
- Minecraft Forge 模组开发
- Fabric 模组开发
- Bukkit/Spigot/Paper 插件
- NBT 解析库
📚 实践应用与使用场景
🖥️ 服务器管理
- 世界备份与恢复策略
- 玩家数据管理与恢复
- 世界边界与出生点配置
- 通过区块分析进行性能优化
- 不同服务器平台之间迁移
🔨 模组开发
- 自定义世界生成算法
- 新维度创建与管理
- 跨版本存档兼容性
- NBT 数据结构操作
- 区块加载与生成钩子
🎨 地图制作
- 冒险地图制作与分发
- 自定义地形与结构放置
- 玩家进度追踪系统
- 针对玩法的世界配置
- 多维度解谜设计
🔬 数据分析
- 玩家行为与活动追踪
- 世界生成模式分析
- 资源分布研究
- 性能瓶颈定位
- 存档损坏诊断
⚠️ 安全与最佳实践
关键安全规则
- 编辑前务必备份存档
- 外部编辑前完全关闭 Minecraft
- 修改后验证文件完整性
- 在副本中测试,不要直接编辑原件
- 使用与你版本兼容的工具
专业建议
- 大型项目使用版本控制
- 详细记录修改内容
- 保留多代备份
- 先在开发世界中测试修改
- 修改后监控存档体积与性能
版本兼容性
- 存档格式会在大版本之间变化
- NBT 结构会随时间演进
- 工具需与当前格式兼容
- 准备版本升级的迁移策略
- 验证备份的可用性