Universally unique identifier

UUIDs (Universally unique identifiers; Java Class) are 128-bit long numbers that are used by Minecraft to distinguish between separate instances.
==Representation==
* Hyphenated hexadecimal: A hexadecimal representation of the UUID, with hyphens separating the different sections into individual numbers. The hyphens are set to split the UUID into numbers of the format 8-4-4-4-12 with each number marking the number of hexadecimal digits fitting into the corresponding section. Further detail follows in the Technical aspects section. An example of this representation would be f81d4fae-7dec-11d0-a765-00a0c91e6bf6.
** Because every part is evaluated as an individual number, empty digits at the start of a section can be ignored. For example, 00000001-0002-0003-0004-000000000005 can be evaluated as the same as 1-2-3-4-5.
* Hexadecimal: The same as the hyphenated hexadecimal representation, but without the separation of the different sections. An example for this representation would be 00000001000200030004000000000005, where it is impossible for the majority of empty digits to be removed, as opposed to the hyphenated hexadecimal representation.
* Most/Least: A separation of the 64 most significant bits from the 64 least significant bits. Each of the two numbers is stored separately and uses the Long data type in the game.This format is deprecated as it was used before 1.16 and was entirely replaced by the Int-array format.An example of this representation would be UUIDMost:-568210367123287600 paired with UUIDLeast:-6384696206158828554.
* Int-array: A separation into four 32 bit numbers. Each part is stored in an integer array ordered from most significant to least significant. An example of this representation would be [I;-132296786,2112623056,-1486552928,-920753162]
==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
 	- 	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 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	Bit range	Bit range	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:
* 0xx is the "variant 0" of Apollo NCS 1.5, an old type of UUID.
* 10x is the "variant 1" of IETF RFC 4122 (Leach-Salz). It's referred to as "variant 2" by Java.
* 110 is the "variant 2" of old Microsoft products. It's referred to as "variant 6" by Java.
* 111 is the "reserved variant". It's referred to as "variant 7" by Java.
=== 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 function performs this exact task.
A table with the locations and values of the metadata:
==External links==
* Generate UUIDs in hyphenated hexadecimal format
* Generate UUIDs in hyphenated hexadecimal format
* Convert between and generate all different formats, with the exception that the non-hyphenated hexadecimal format is only accepted as input
Category:Game terms
de:UUID
ja:UUID
pt:UUID
zh:UUID