UUID (Identificadores únicos universales; Java Class) son números de 128 bits de largo que utiliza Minecraft para distinguir entre instancias separadas.
- 1 Representación
- 2 incidencias
- 3 Aspectos técnicos
- 3.1 Rango de valores
- 3.2 Nombres de sección en formato hexadecimal con guiones
- 3.3 Versiones y variantes
- 3.4 en Minecraft
- 3.4.1 Versión bit a bit
- 3.4.2 Versión contraída
- Enlaces 4 externos
Representación
- Hexadecimal con guion: Una representación hexadecimal del UUID, con guiones que separan las diferentes secciones en números individuales.
Los guiones están configurados para dividir el UUID en números con el formato 8-4-4-4-12 y cada número marca el número de dígitos hexadecimales que encajan en la sección correspondiente. A continuación se ofrecen más detalles en la sección Aspectos técnicos.
Un ejemplo de esta representación sería f81d4fae-7dec-11d0-a765-00a0c91e6bf6.- Dado que cada parte se evalúa como un número individual, se pueden ignorar los dígitos vacíos al comienzo de una sección.
Por ejemplo, 00000001-0002-0003-0004-000000000005 se puede evaluar como lo mismo que 1-2-3-4-5.
- Dado que cada parte se evalúa como un número individual, se pueden ignorar los dígitos vacíos al comienzo de una sección.
- Hexadecimal: Igual que la representación hexadecimal con guión, pero sin la separación de las diferentes secciones.
Un ejemplo de esta representación sería 00000001000200030004000000000005, donde es imposible eliminar la mayoría de los dígitos vacíos a diferencia de la representación hexadecimal con guiones. - Más menos: Una separación de los 64 bits más significativos de los 64 bits menos significativos. Cada uno de los dos números se almacena por separado y utiliza el tipo de datos Long en el juego.
Este formato está en desuso ya que se usó antes de 1.16 y fue reemplazado por completo por el formato Int-array.
Un ejemplo de esta representación sería UUIDMost: -568210367123287600 emparejado con UUIDLeast: -6384696206158828554. - Int-matriz: Una separación en cuatro números de 32 bits. Cada parte se almacena en una matriz de números enteros ordenados de más significativa a menos significativa.
Un ejemplo de esta representación sería [I; -132296786,2112623056, -1486552928, -920753162]
Sucesos
La siguiente tabla representa las situaciones en las que los UUID se utilizan en lugares accesibles por un jugador:
Ubicación (general) | Ubicación (ruta) | Formato | Utilizan |
---|---|---|---|
Todas las entidades (NBT) | UUID | int-array | UUID propio |
Modificadores de atributos (NBT) | UUID | int-array | UUID propio. Se usa al equipar y desequipar el artículo para identificar qué modificador agregar o quitar de la entidad. |
Modificadores de atributos (tabla de botín) | id | Hexadecimal con guion | Establecer UUID del modificador en la función set_attributes |
/atributo | - | Hexadecimal con guion | Se usa para identificar el modificador |
Mobs domesticables (NBT) | Propietario | int-array | Propietario |
Proyectiles (NBT) | Propietario | int-array | Entidad que disparó el proyectil |
Entidades de artículo (NBT) | Propietario | int-array | Jugador objetivo para / dar mando |
Entidades de artículo (NBT) | Lanzador | int-array | Jugador que dejó caer el objeto |
Balas Shulker (NBT) | Target | int-array | Entidad objetivo del ataque |
Conductos (NBT) | Target | int-array | Entidad objetivo del ataque |
Cabezas de jugador (NBT) | SkullOwner.Id | int-array | Dueño de la piel |
Cabezas de jugador (NBT) | SkullOwner.Properties.textures.Value.ProfileId | hexadecimal | Dueño de la piel |
Mobs (NBT) | Leash.UUID | int-array | Entidad que amarró a la mafia |
Mobs criables (NBT) | LoveCause | int-array | Jugador que alimentó a la mafia |
Aldeanos zombis (NBT) | ConversionPlayer | int-array | Jugador que está convirtiendo al Zombie Villager |
Mobs neutrales excepto piglins (NBT) | Enfadado con | int-array | Entidad que hirió a la mafia neutral |
Aldeanos (NBT) | Gossips.Objetivo | int-array | Jugador que causó el chisme |
Jugadores (NBT) | RootVehicle.Attach | int-array | Identificador de la entidad en la que viaja el jugador |
Selectores de destino (comandos) | - | Hexadecimal con guion | Entidad seleccionada |
Aspectos técnicos
Rango de valores
Un UUID se puede expresar como un número de 128 bits, lo que significa que admite todos los valores enteros desde - (2 ^ 127) a (2 ^ 127) -1. Es importante señalar que esta evaluación no se refiere al rango de valores que genera el juego, sino que se centra en la capacidad del formato.
Nombres de sección en formato hexadecimal con guiones
Los UUID de formato hexadecimal con guiones siguen el patrón xxxxxxxx-xxxx-Axxx-Bxxx-xxxxxxxxxxxx.
Nombre de la sección | Rango de bits | |||
---|---|---|---|---|
Desde | A | Tamaño | Personajes. | |
poco tiempo | 96 | 127 | 32 | 8 |
tiempo medio | 80 | 95 | 16 | 4 |
tiempo-alto-y-versión | 54 | 79 | 16 | 4 |
secuencia de reloj y reservada | 36 | 53 | 8 | 2 |
clock-seq-low | 48 | 45 | 8 | 2 |
nodo | 0 | 47 | 48 | 12 |
(Los nombres tienen sentido solo para los UUID de la versión 1 y 2, pero se han pasado a todas las formas de UUID utilizados).
Versiones y variantes
Ha habido cinco versiones de UUID. Las versiones 1 y 2 se basan en la hora actual y la dirección MAC; las versiones 3 y 5 se basan en el hash de una cadena; la versión 4 se basa en una generación completamente aleatoria. El valor de la "versión" ocupa cuatro bits y se encuentra en el formato de cadena UUID en la posición indicada por una "A".
La posición "B" es la variante (formato) del UUID. Dependiendo de la variante específica, puede ocupar los 1 a 3 bits altos:
- 0xx es la "variante 0" de Apollo NCS 1.5, un tipo antiguo de UUID.
- 10x es la "variante 1" de IETF RFC 4122 (Leach-Salz). Java se refiere a ella como "variante 2".
- 110 es la "variante 2" de los productos antiguos de Microsoft. Java se refiere a ella como "variante 6".
- 111 es la "variante reservada". Java se refiere a ella como "variante 7".
En Minecraft
Minecraft usa UUID de la versión 4, variante 1 (RFC), lo que significa que el número completo con la excepción de los bits utilizados para los metadatos (versión y variante) se genera aleatoriamente. La función UUID.randomUUID () de Java realiza exactamente esta tarea.
Una tabla con las ubicaciones y los valores de los metadatos:
Versión bit a bit
Artículo principal: UUID / metadatos [editar]Versión contraída
Artículo principal: UUID / metadata1 [editar]Enlaces externos
- Genere UUID en formato hexadecimal con guiones
- Genere UUID en formato hexadecimal con guiones
- Convierta y genere todos los formatos diferentes, con la excepción de que el formato hexadecimal sin guiones solo se acepta como entrada