Skip to content

Terminology

This page will explain terminology used throughout this entire section of the wiki, mainly to make describing certain concepts as easy and unambiguous as possible.

Directions

Minecraft describes positions and directions using signed X,Y,Z coordinates. For more info on how these directions are determined, check the directions page.

Spaces

Spaces describe where and how coordinates are expressed within the world.

Block space

Limited to signed 32-bit Integers (-2,147,483,648 to 2,147,483,647) along the horizontal axes and a signed 8-bit Integer (limited, 0 to 127) along the vertical axis. This space defines the grid that the blocks of Minecraft adhere to.

Chunk space

Limited to signed 32-bit Integers (-2,147,483,648 to 2,147,483,647) along the horizontal axes. This space defines the grid that chunks are placed within. 1 unit in chunk space covers 16 units in block space.

Player space

Limited to signed 64-bit doubles (1.7E +/- 308). This space defines the positions of players on the client and server. Why the player movement seems to be stuttery is explained on the distance effects page.

Entity space

Limited to signed 28.4 fixed-point* numbers (-134,217,728.0 to 134,217,727.9375) along all axes. This space defines the positions of all entities in the world. The 4 lowest bits are used for in-block precision, meaning that within each block an entity has a decimal precision of 1/16th of a Block (0.0625 Blocks / 1 Pixel).

*Sent as a signed 32-bit Integer

Conversion from a floating-point value to a 28.4 fixed-point value can be done as follows.

c
int32_t fixed_val = int32_t(float_val * 32.0f);

This can be reversed too.

c
float float_val = float(fixed_val) / 32.0f;

Additionally, rotation data is often quantized to only a single 8-bit Byte, following this formula.

c
int8_t quant_val = int8_t(( float_val / 360.0 ) * 255.0)

This can be reversed too.

c
float float_val = (( float(quant_val) / 255.0 ) * 360.0)

Quantized Angles