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的變化發生變化)