Minecraft Wiki
Advertisement

UUIDs (Universally unique identifiers; Java Class) は 128 bit の数値でMinecraftではインスタンス毎に識別するために使用される。

表現方法[]

  • ハイフン付き16進数表現: 16進数でのUUIDの表現、 特定の長さ毎にハイフンで分割されている。
    ハイフンはUUIDを文字数8-4-4-4-12になるように分割し、分割された部分毎に16進数に変換される。 更に詳細な情報は 技術的側面 を参照。
    例: f81d4fae-7dec-11d0-a765-00a0c91e6bf6
    • 区切られた数字毎に評価されるので、0始まりの部分は無視される。
      例えば 00000001-0002-0003-0004-0000000000051-2-3-4-5 と同じ値として評価される。
  • 16進数表現: ハイフン付き16進数と似ているが、 部分毎に分割されていない。
    例としてこの表現方法ではハイフン付きの場合と違い 00000001000200030004000000000005 の0始まりの部分を削除することができない。
  • Most/Least表現: 上位64bitと下位64bitで分割される。ゲーム内では分割された2つの数値はそれぞれ、Long型で保存される。.
    このフォーマットは 1.16 以前は使われていたが廃止されており、全て整数配列表現に置き換えられている。
    例: UUIDMost:-568210367123287600UUIDLeast:-6384696206158828554 ペア。
  • Int-array表現: 4つの32bit数値に分割されている。それぞれの部分は上位bitから下位bitの順に整数の配列に保存されている。
    例: [I;-132296786,2112623056,-1486552928,-920753162]

実現値[]

次の表はプレーヤーがアクセスできる場所でUUIDが使用される状況を表している:

Location (general) Location (path) Format Use
All entities (NBT) UUID int-array 自身のUUID
Attribute modifiers (NBT) UUID int-array 自身のUUID。 アイテムを着脱した際にエンティティから属性修飾子を追加、削除するために使われる。
Attribute modifiers (Loot table) id ハイフン付き16進数 function内で set_attributes の属性修飾子のUUIDの指定。
/attribute - ハイフン付き16進数 modifier を識別するために使用される。
Tameable mobs (NBT) Owner int-array 飼い主のUUID。
Projectiles (NBT) Owner int-array 発射体を打ち出したエンティティ。
Item entities (NBT) Owner int-array /give コマンドの対象プレイヤー。
Item entities (NBT) Thrower int-array アイテムをドロップしたプレイヤー。
Shulker bullets (NBT) Target int-array 攻撃の対象となっているエンティティ
Conduits (NBT) Target int-array 攻撃の対象となっているエンティティ
Player heads (NBT) SkullOwner.Id int-array スキンの所有者
Player heads (NBT) SkullOwner.Properties.textures[].Value.ProfileId 16進数 スキンの所有者
Mobs (NBT) Leash.UUID int-array Mobが結び付いているエンティティ
Breedable mobs (NBT) LoveCause int-array 繁殖を促したプレイヤー
Zombie Villagers (NBT) ConversionPlayer int-array 村人ゾンビを治療しているプレイヤー
Neutral mobs except piglins (NBT) AngryAt int-array 中立Mobを傷つけたエンティティ
Villagers (NBT) Gossips[].Target int-array 噂話の対象となるプレイヤー
Players (NBT) RootVehicle.Attach int-array プレイヤーが騎乗しているエンティティの識別
Target selectors (Commands) - ハイフン付き16進数 選択されたエンティティ

技術的側面[]

値の範囲[]

UUIDは128bitの値で表現されるので、-(2^127) から (2^127)-1 の全ての整数を使用できる。この評価はゲーム側によって実際に生成される値の範囲ではなく、データ型の容量に焦点を当てたものだということに注意すること。

ハイフン付き16進数表現でのセクション名[]

ハイフン付き16進数表現によるUUIDのフォーマットは xxxxxxxx-xxxx-Axxx-Bxxx-xxxxxxxxxxxx となる。

セクション名 Bit範囲
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

(この名称はバージョン1とバージョン2のUUIDでのみ意味があるが、 全てのUUIDの形式で引き継がれている。)

バージョンとバリアント[]

UUIDには5つのバージョンがあり、バージョン1とバージョン2は現在時刻とMACアドレス、 バージョン3とバージョン5はハッシュ値、バージョン4は完全なランダムから生成されている。バージョン情報はUUIDのフォーマットの"A"の4bit占有する 。

"B"はUUIDのバリアント(フォーマット)を示す。バリアントの指定によって、上位の1から3bitを占有する:

  • 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.

MinecraftにおけるUUID[]

Minecraftはバージョン4、バリアント1(RFC)のUUIDを使用し、エンティティの番号はメタデータ(バージョンとバリアント)で使用されるbitを除きランダムに生成される。JavaのUUID.randomUUID()関数の動作をする。

メタデータの場所と値の表:

Bitwise version

詳細は「UUID/metadata」を参照
[編集]

Collapsed version

詳細は「UUID/metadata1」を参照
[編集]

外部リンク[]

Advertisement