Worlds

PocketMine-MP supports several world formats.

Unlike a vanilla server, it also supports loading several worlds at the same time. This is useful to offer a more varied game experience to your players without transferring them between servers, as well as allowing players to have unlimited space in game modes like SkyBlock.

Supported world formats

PocketMine-MP saves worlds in the same format as vanilla Bedrock by default.

However, it has some support for several other world formats.

Type

Format

Support

Notes

Java <= 1.12.x

McRegion/Anvil

Converted on load

Some blocks may display incorrectly

Bedrock <= 1.18.20

LevelDB

Direct

Some blocks may not be supported

Bedrock >= 1.18.30

LevelDB

Direct

Some blocks may not be supported
Entities may not load

PM3

PMAnvil

Converted on load

Will be converted on load

Error

Java 1.13+ worlds are not currently supported (as of 5.37.2) due to extensive changes to the format compared to Java 1.12.

Tip

While PocketMine-MP cannot load .mcworld files by default, it can load the world files inside if you manually extract them. You can do this by changing the file extension to .zip and extracting it as a zip.

Generating new worlds

PocketMine-MP has a very basic world generator. This is because it hasn’t been a focus of our development team.

Biomes usually appear as large blobs, and seeds from vanilla Minecraft won’t produce the same results in PocketMine-MP.

Worlds configured in server.properties or pocketmine.yml will be generated according to the preferred settings if they aren’t found.

Adding pre-existing worlds

Worlds must be placed in the worlds folder in folder form.

Normally, worlds will have a level.dat file inside their folder. In order for PocketMine-MP to detect the world, the folder structure should look like this:

worlds
|___ my_world
    |___ level.dat
|___ my_world_2
    |___ level.dat

Warning

Just putting the worlds in the folder is not enough to make PocketMine-MP load them.

You also need to configure them in pocketmine.yml (see below).

Loading multiple worlds at once

You can load multiple worlds by configuring them in pocketmine.yml.

Opening the file in a text editor, you’ll find a section like this near the bottom:

worlds:
  #These settings will override the generator set in server.properties and allows loading multiple worlds
  #Example:
  #world: #Folder name of the world inside the worlds folder
  # seed: 404
  # generator: FLAT
  # preset: 2;bedrock,59xstone,3xdirt,grass;1

These settings work similarly to those in server.properties, but you can add multiple entries.

If we wanted to load all of the worlds shown in the example in the previous section, it might look like this:

worlds:
  my_world:
    seed: 123456
    generator: FLAT
  my_world_2:
    seed: arandomstring
    generator: DEFAULT

Tip

All of the options (seed, generator, etc.) are optional. If they aren’t specified, the server will use built-in defaults.

Changing the default world

The default world’s name is controlled by the level-name option in server.properties.

This option corresponds to the name of the folder inside the worlds folder to be used as the default world.

For example, if level-name is set to my-awesome-world, PocketMine-MP will look for worlds/my-awesome-world/level.dat to load the world.

Tip

If no world exists by the given name, a new one will be generated using the options set in level-type, level-seed and generator-settings options.

Teleporting between worlds

As of 5.37.2, there is currently no built-in way to teleport between worlds in PocketMine-MP.

However, plugins can teleport player between worlds easily.

You can find plugins on Poggit for managing and teleporting between worlds.