server_level.dat是Minecraft Classic伺服器用於載入和儲存遊戲內地圖的檔案的名稱。可以備份該檔案以儲存內容,這有助於保護構造免受攻擊者或使用該檔案進行地圖編輯。
一般資訊[]
使用gzip壓縮檔案以節省空間(因為檔案最終會因為一切而變得相當大,甚至空氣會被視為方塊)。
(注意:在此示例中,使用了預設的server_level.dat,大小為256×256×64。維度較大的地圖檔案的字節數可能不同。)
server_level.dat檔案是Minecraft伺服器轉儲地圖資訊以進行永久儲存的位置。由於此檔案主要是原始地圖資料,因此可能非常大:常規256×256×64大小的世界大小為4MB。但是,使用gzip壓縮檔案。大多數方塊值為0(空白空間),可以透過壓縮大大減小了大小,通常減少到幾百KB。
在解壓縮資料檔案之後(你可以使用可以解壓縮gzip壓縮檔案的工具簡單地解壓縮檔案本身),順序上資料檔案由數字656127880組成為32位元整數(HEX中為0x27 0x1B 0xB7 0x88),後跟數字2作為一個字節(HEX中的0x02),然後是序列化的Level Java類檔案實例。地圖的方塊值(材料類型,如石頭)儲存在此類內部的字節陣列中。
陣列的前65536個連續字節構成該級別的最頂部256×256「薄片」,最左邊的字節行從左到右,位於0 ... 255的位置,下面的行從左到右,位於256 ... 511的位置,依此類推。預設地圖深64「薄片」。
檔案格式[]
解壓縮後,檔案格式如下:
位置 | 大小(字節) | 名稱 | 說明 |
---|---|---|---|
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個整數)將允許你變更生成位置。
版本 | |||||||
---|---|---|---|---|---|---|---|
開發週期 |
| ||||||
技術 |
| ||||||
多人遊戲 | |||||||
遊戲訂製 |
語言