PMF Draft - randomblink/PocketMine-MP GitHub Wiki
- The content of the file has 2 sections (each one with multiple fields)
- Header (General information, data type and length)
- Data (Real usable data)
- If a binary type has a LE after it, it means that it's Little Endian
-
PMF
header -
byte version: The parser version to use, currently
0x01
- byte type: Data type
-
0x00
=> World -
0x01
=> Plugin
-
This World Data format is based on the Anvil format, mixed with the Pocket format to allow faster network chunk sending, less disk usage and compression.
-
byte format version:
0x00
-
string name: The name of the world
-
integer seed: Seed used to generate the world
-
integer time: Actual time in the world
-
float spawnX: Spawn point X coord
-
float spawnY: Spawn point Y coord
-
float spawnZ: Spawn point Z coord
-
unsigned byte width: Chunk width
-
unsigned byte height: Chunk height
-
byte array extra: This field follows a custom structure, compressed using zlib Deflate
-
unsigned short length: Length of the data
-
data: Custom fields using the string + byte array (using ushorts for length) format
-
byte array payload: The real world data, with a Location Header. Compressed using zlib Deflate
-
It is composed of sequential Chunk Columns information. The number of sections it's
width ^ 2
-
unsigned integer offset: Chunk data start offset
-
unsigned integer length: Data length
-
16 bit field bitmap: Specifies which sections are not empty in this chunk
-
byte format version: Currently
0x00
- string name
- string version
- string author
- short API version
- string class: Main class to load the plugin
- string identifier: The Plugin Repository identifier (checking updates)
- byte array extra: This field follows a custom structure, compressed using zlib Deflate
- unsigned short length: Length of the data
- data: Custom fields using the string + byte array format
- byte array code: cleaned up code, compressed using zlib Deflate