Minecraft Pi Protocol

This page documents the Minecraft Pi API Protocol. The multiplayer protocol for Minecraft Pi is based on Minecraft PE's protocol.

Parts of this documentation is based on the official Mojang documentation, which were released for free use. Other parts are based on the Desktop Protocol specification.

The Minecraft Pi client listens to TCP port 4711 by default.

A command in the Pi protocol consists of an ASCII line terminated with an LF character. The general format of a command is of the form

package.command(param1,param2,param3)

Commands are sent by the client to the server. No authentication is required before sending commands.

Some commands may have return values: they are also in ASCII, and terminate with an LF character.

Locations in the Minecraft Pi protocol are relative to the spawn point of the world.

The official Mojang documentation specifies conventions for specifying parameters:


 * x,y,z -- vector of three integers.


 * xf,yf,zf -- vector of three floats.


 * blockTypeId -- integer 0-108. 0 is air.


 * blockData -- integer 0-15. Block data beyond the type, for example wool color.

world package
Contains methods that modify the world and terrain.

world.getBlock(x,y,z)
Gets the ID of a block in the world.

x, y, z: coordinates of the block relative to spawn

Returns: an integer of type blockTypeId, corresponding to a block type in Minecraft Pi.

world.getBlockWithData(x,y,z)
Gets the ID and Optional Parameter for a block in the world.

x, y, z: coordinates of the block relative to spawn

Returns: a block object corresponding toa block type in Minecraft Pi.

world.setBlock(x,y,z,blockTypeId,[blockData])
Sets the ID of a block in the world. The data parameter is optional.

x, y, z: coordinates of the block relative to spawn

blockTypeId: ID of the block

blockData: metadata of the block

world.setBlocks(x1,y1,z1,x2,y2,z2,blockTypeId,[blockData])
Sets all blocks in a cuboid defined by two points to a speficied type. The blockData parameter is optional.

x1, y1, z1: coordinates of the first selection point relative to spawn

x2, y2, z2: coordinates of the second selection point relative to spawn

blockTypeId: ID of the block

blockData: metadata of the block

world.getHeight(x,z)
Returns the Y coordinate of the last block that isn't solid from top-down.

x, z: coordinates of a column

Returns: an integer containing the Y coordinate

world.getPlayerIds
Gets the Entity IDs of all connected players.

Returns: A list of Entity IDs, seperated by the character |

world.setting(key,value)
Sets a world parameter (similar to GameRules on the Desktop Edition)

key: the name of the setting:
 * world_immutable
 * nametags_visible

value: a Boolean value: either 0 or 1

world.checkpoint.save
Save a checkpoint that can be used for restoring the world.

world.checkpoint.restore
Restores the world to the last checkpoint.

chat package
Contains methods to post messages to the chat display.

chat.post(message)
message: the message to be sent.

player package
Contains methods that modify the host player.

player.getTile
Gets the position of the host player, to the nearest block.

Returns: The x, y, and z coordinates of the player, separated by commas.

player.setTile(x,y,z)
Sets the position of the host player to the specified block coordinates.

x, y, z: the coordinates that the player is to be moved to.

player.getPos
Returns the precise position of the host player.

Returns: the x, y, and z coordinates of the player as floats, separated by commas.

player.setPos(xf,yf,zf)
Sets the position of the host player to the specified coordinates.

xf, yf, zf: the coordinates that the player is to be moved to. Decimals are allowed.

player.setting(key,value)
Sets a property on the host player.

key: the property to be set.
 * autojump: enable or disable autojump.

value: a Boolean value: either 1 for on or 0 for off.