UUID ( Универсальные уникальные идентификаторы ; Java Class) — это 128-битные числа, которые используются Minecraft для различения отдельных экземпляров.
Представление
- Шестнадцатеричный разделитель с дефисом : шестнадцатеричное представление UUID с дефисами, разделяющими различные разделы на отдельные числа.
Дефис предназначен для разделения UUID на числа в формате8-4 -4-4-12
, где каждое число обозначает количество шестнадцатеричных цифр, подходящих для соответствующего раздела. Более подробная информация представлена в разделе «Технические аспекты».
Примером такого представления может бытьf81d4fae-7dec-11d0-a765-00a0c91e6bf6
.- Поскольку каждая часть оценивается как отдельный номер, пустые цифры в начале раздела можно игнорировать.
Например,00000001-0002-0003-0004-000000000005
может быть вычисляется как1-2-3-4-5
.
- Поскольку каждая часть оценивается как отдельный номер, пустые цифры в начале раздела можно игнорировать.
- Шестнадцатеричный : То же, что и шестнадцатеричное представление с дефисом, но без разделения различных разделов.
Примером для этого представления может быть00000001000200030004000000000005
, где это невозможно для большинства должны быть удалены пустые цифры, а не шестнадцатеричное представление с дефисом. - Наибольшее/наименьшее : разделение 64 старших битов от 64 младших битов. Каждое из двух чисел хранится отдельно и использует в игре тип данных
Long
.
Этот формат устарел, так как он использовался до 1.16 и был полностью заменен на Int- формат массива.
Примером такого представления может бытьUUIDMost: -568210367123287600
в паре сUUIDLeast: -6384696206158828554
. - Int-array : разделение на четыре 32-битных числа. Каждая часть хранится в целочисленном массиве, упорядоченном от наиболее значимого до наименее значимого.
Примером такого представления может быть[I; -132296786,2112623056, -1486552928, -920753162]
Случаи
В следующей таблице представлены ситуации, в которых UUID используются в местах, доступных для игрока:
Местоположение (общее) | Местоположение (путь) | Формат | Использовать |
---|---|---|---|
Все сущности (NBT) | UUID |
int-array | Собственный UUID |
Модификаторы атрибутов (NBT) | UUID |
int-array | Собственный UUID. Используется при оснащении и снятии экипировки элемента, чтобы определить, какой модификатор добавить или удалить из объекта.. |
Модификаторы атрибутов (таблица добычи) | id |
Шестнадцатеричный разделитель с переносом | Установить UUID модификатора в функции set_attributes |
/attribute |
— | Шестнадцатеричный разделитель с дефисом | Используется для идентификации модификатора |
Прирученные мобы (NBT) | Владелец |
int-array | Владелец |
Снаряды (NBT) | Владелец |
int-array | Сущность, которая стреляла снарядом |
Сущности предметов (NBT) | Owner |
int-array | Целевой игрок для /give команда |
Сущности элемента (NBT) | Метатель |
int-array | Игрок, уронивший предмет |
Пули Шулкера (NBT) | Цель |
int-array | Объект, нацеленный на атаку |
Трубопроводы (NBT) | Target |
int-array | Объект, нацеленный на атаку |
Головы игрока (NBT) | SkullOwner.Id |
int-array | Владелец скина |
Головы игроков (NBT) | SkullOwner.Properties.textures []. Value.ProfileId |
шестнадцатеричный | Владелец скина |
Мобы (NBT) | Leash.UUID |
int-array | Сущность, которая обуздала моба |
Разводимые мобы (NBT) | LoveCause |
int-array | Игрок, который накормил моба |
Зомби-жители (NBT ) | ConversionPlayer |
int-array | Игрок, конвертирующий зомби-жителя |
Нейтральные мобы, кроме свиней (NBT) | AngryAt |
int-array | Сущность, которая повредила нейтральному мобу |
Жители (NBT) | Сплетни []. Цель |
int-array | Игрок, который спровоцировал сплетни |
Players (NBT) | RootVehicle.Attach |
int-array | Идентификатор объекта, на котором сидит игрок |
Целевые селекторы (команды) | — | Шестнадцатеричный разделенный дефис | Выбранный объект |
Технические аспекты
Диапазон значений
UUID может быть выражен как 128-битное число, что означает, что он поддерживает все целочисленные значения от - (2 ^ 127)
до (2 ^ 127) -1
. Важно отметить, что эта оценка не относится к диапазону значений, генерируемых игрой, а вместо этого фокусируется на емкости формата.
Названия разделов шестнадцатеричного формата с переносом через дефис
UUID в шестнадцатеричном формате с дефисом следуют шаблону xxxxxxxx-xxxx-Axxx-Bxxx-xxxxxxxxxxxx
.
Имя раздела | Диапазон бит | |||
---|---|---|---|---|
От | до | Размер | Символы | |
мало времени | 96 | 127 | 32 | 8 |
время-середина | 80 | 95 | 16 | 4 |
высокая версия и время | 54 | 79 | 16 | 4 |
часы-сек-и-зарезервированы | 36 | 53 | 8 | 2 |
clock-seq-low | 48 | 45 | 8 | 2 |
узел | 0 | 47 | 48 | 12 |
(Имена имеют смысл только для версии 1 и 2 UUID, но он был передан во все формы используемых UUID.)
Версии и варианты
Было пять версий UUID. Версии 1 и 2 основаны на текущем времени и MAC-адресе; версии 3 и 5 основаны на хешировании строки; версия 4 основана на полностью случайной генерации. Значение «версия» занимает четыре бита и находится в строковом формате UUID в позиции, обозначенной буквой «A».
Позиция «B» — это вариант (формат) UUID. . В зависимости от конкретного варианта, он может занимать от 1 до 3 старших бит:
- 0xx — это «вариант 0» Apollo NCS 1.5, старый тип UUID.
- 10x — это «вариант 1» IETF RFC 4122 (Leach-Salz). В Java это называется «вариантом 2».
- 110 — это «вариант 2» старых продуктов Microsoft. В Java он упоминается как «вариант 6».
- 111 — это «зарезервированный вариант». В Java это называется «вариантом 7».
В Minecraft
Minecraft использует UUID версии 4, вариант 1 (RFC), что означает, что все число, за исключением битов, используемых для метаданных (версия и вариант), генерируется случайным образом. Функция Java UUID.randomUUID ()
выполняет именно эту задачу.
Таблица с расположениями и значениями метаданных:
Побитовая версия
Свернуто версия
Распознавание фальшивых знаменитостей
У каждого игрока в minecraft есть свой UUID, и нет никакого хак-клиента, который мог бы это изменить, в отличие от никнейма.
Чтобы распознать настоящего игрока, вам нужно выполнить эти 3 шага
- сделать /w какой-нибудь текст после этого наведите указатель мыши на ник в тексте Вы прошептали , и вы увидите его uuid.
- перейдите в NameMC и напишите имя в здесь он покажет вам несколько учетных записей и uuid под названием
- сравните uuids
Внешние ссылки
- Генерация UUID в шестнадцатеричном формате с дефисом
- Создание UUID в шестнадцатеричном формате с дефисом
- Преобразование и создание всех различных форматов, за исключением шестнадцатеричный формат с дефисом принимается только в качестве входных.
- NameMC