PMF Draft - randomblink/PocketMine-MP GitHub Wiki

PocketMine Format v1 (.pmf)

  • 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

Header

  • PMF header
  • byte version: The parser version to use, currently 0x01
  • byte type: Data type
  • 0x00 => World
  • 0x01 => Plugin

World Data 0x00

  • 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

Location Table
  • 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

World Payload

Plugin Data 0x01

  • 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
⚠️ **GitHub.com Fallback** ⚠️