minecraft

UUIDs (Universally unique identifiers; Java Class) are 128-bit long numbers that are used by Minecraft to distinguish between separate instances.

Representation

Occurrences

The following table represents the situations in which UUIDs are used in places accessible by a player:

Location (general) Location (path) Format Use
All entities (NBT) UUID int-array Own UUID
Attribute modifiers (NBT) UUID int-array Own UUID. Used when equipping and unequipping the item to identify which modifier to add or remove from the entity.
Attribute modifiers (Loot table) id Hyphenated hexadecimal Set UUID of modifier in set_attributes function
/attribute - Hyphenated hexadecimal Used to identify modifier
Tameable mobs (NBT) Owner int-array Owner
Projectiles (NBT) Owner int-array Entity that shot the projectile
Item entities (NBT) Owner int-array Target player for /give command
Item entities (NBT) Thrower int-array Player who dropped the item
Shulker bullets (NBT) Target int-array Entity targeted for attack
Conduits (NBT) Target int-array Entity targeted for attack
Player heads (NBT) SkullOwner.Id int-array Owner of the skin
Player heads (NBT) SkullOwner.Properties.textures[].Value.ProfileId hexadecimal Owner of the skin
Mobs (NBT) Leash.UUID int-array Entity that leashed the mob
Breedable mobs (NBT) LoveCause int-array Player who fed the mob
Wardens (NBT) anger.suspects[].uuid int-array Target associated with the anger level
Zombie Villagers (NBT) ConversionPlayer int-array Player who is converting the Zombie Villager
Neutral mobs except piglins (NBT) AngryAt int-array Entity that hurt the neutral mob
Villagers (NBT) Gossips[].Target int-array Player who caused the gossip
Players (NBT) RootVehicle.Attach int-array Identifier of the entity that the player is riding
Target selectors (Commands) - Hyphenated hexadecimal Selected entity

Technical aspects

Value range

A UUID can be expressed as a 128 bit number, which means that it supports all integer values from -(2^127) to (2^127)-1. It is important to note that this evaluation does not refer to the range of values generated by the game, but instead focuses on the capacity of the format.

Hyphenated hexadecimal format section names

Hyphenated hexadecimal format UUIDs follow the pattern xxxxxxxx-xxxx-Axxx-Bxxx-xxxxxxxxxxxx.

Section name Bit range
From To Size Characters
time-low 96 127 32 8
time-mid 80 95 16 4
time-high-and-version 54 79 16 4
clock-seq-and-reserved 36 53 8 2
clock-seq-low 48 45 8 2
node 0 47 48 12

(The names make sense only for version 1 and 2 UUIDs, but it has been passed onto all forms of UUIDs used.)

Versions and variants

There have been five versions of UUIDs. Versions 1 and 2 are based on current time and MAC address; versions 3 and 5 are based on hashing a string; version 4 is based on completely random generation. The "version" value occupies four bits, and is located in the UUID string format at the position indicated by an "A".

The "B" position is the variant (format) of the UUID. Depending on the specific variant, it may occupy the high 1 to 3 bits:

In Minecraft

Minecraft uses version 4, variant 1 (RFC) UUIDs, which means that the entire number with the exception of the bits used for metadata (version and variant) is randomly generated. Java's UUID.randomUUID() function performs this exact task.

A table with the locations and values of the metadata:

Bitwise version

Main article: UUID/metadata
[edit]

Collapsed version

Main article: UUID/metadata1
[edit]

External links