本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详情…本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。

Classic世界格式

来自Minecraft Wiki
跳转至: 导航搜索
Information icon.svg
此特性为Java版独有。
Grass Block Revision 2.png
该页面的内容关于过时或已移除的功能。
这些特性只存在于旧版本的Minecraft

Classic世界格式用于各种MinecraftClassic。它使用gzip压缩,并包含一个后跟序列化的Java对象的短标题。单人游戏地图的扩展名为“.mine”。Classic Creative服务器使用的地图名为“server_level.dat”。可以备份该文件以保存内容,这有助于保护构造免受恶意破坏者或使用该文件进行地图编辑

因为这个世界格式取决于Java序列化对象的方式,所以使用它的最简单方法是通过Classic服务器本身,minecraft-server.jar。提供了示例代码以说明如何在minecraft-server.jar之上构建编辑器。

文件格式[编辑 | 编辑源代码]

解压缩后,文件格式如下:

位置 大小(字节) 名称 说明
0 4 Magic ID 魔数ID是用于标识Minecraft文件格式的常数。当前值为0x271bb788
4 1 Version Number 版本号表示用于保存地图的当前格式。当前值为2
5 可变的 序列化的Javacom.mojang.minecraft.level.Level 有关Java使用的序列化格式的更多信息,请参见手册],但是编辑文件的最简单方法是使用此处提供的和官方的minecraft-server.jar文件

访问字节数组[编辑 | 编辑源代码]

地图中最有趣的部分是方块数组。该数组中的每个字节定义了世界上相应位置的方块类型。通常有两个用于访问方块字节数组的选项:

您可以将压缩的.dat文件直接反序列化回Java内部的Level对象的实例,从而可以完全像Minecraft服务器那样访问Level对象的实例。这将允许您通过调用实例化的Level对象上的方法直接设置方块、维度、生成点和其他地图的方面。加载前不需要手动解压缩,因为Java可以动态压缩和解压缩gzip压缩文件。要将数据文件加载回Level类的实例,您需要Level类的类定义。这包含在minecraft-server.jar文件中。可以在创建和保存类中看到此示例。

其他人只需访问数据文件文件中的原始字节数组就可以读取和修改地图的数据。为此您将解压缩它,更改存储字节数组的字节,然后再次压缩它。由于您正在编辑它,因此必须保持第一个344(HEE中的14E)字节不变。接下来的256x256x64字节是存储字节数组的位置。此外,如果您知道要查找的位置,也可以通过这种方式更改生成位置坐标:从字节284开始有3个整数值,因此覆盖接下来的12个字节(3个整数)将允许您更改生成位置。

(免责声明:这可能会随着Java的变化发生变化)