MC Toolkit

ガイド / コマンドとデータ

Minecraftのユーザー名は「ちょうど3種類の文字」で1~16文字、UUIDには2通りの書き方がある

英字、数字、アンダースコア。ハイフンもドットもスペースもなし。そしてUUIDはダッシュあり・なしのどちらでも受け付けられる——だから同じものを調べても片方は失敗し、片方は成功する。UUIDは32桁の16進数で、ハイフン込みで36文字です。

スキンを検索するというのは、誰かが入力した文字列をMojangが認識できるものに変換する作業だ。そしてそれは2種類しかない。どちらにも厳密なルールがあり、UUIDのほうには「見つかりません」という報告を大量に生む落とし穴がある。

ユーザー名のルール

^[A-Za-z0-9_]{1,16}$

文字種は3つだけで、それ以外はない。英字、数字、アンダースコア。長さは1~16。

除外されるもののほうが役に立つ:

  • ハイフンは使えない — 最もよく試される文字
  • ドットもスペースも@も使えない
  • 16文字を超えるものは不可、空文字も不可

つまり、サーバーの表示名やDiscordのハンドル、メールアドレスは、名前のように見えても解決できない。検索が失敗し、そのテキストにハイフンが含まれているなら、ほぼ間違いなくそれが原因だ。そしてハイフンこそが、人をもう一方の形式へと向かわせる文字なのである。

UUIDのルール、そしてなぜ2通りの書き方があるのか

^[0-9a-fA-F]{8}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{4}-?[0-9a-fA-F]{12}$

すべての-?に注目してほしい。それぞれのダッシュは省略可能なのだ。次の2つは同じアカウントであり、どちらも受け付けられる:

069a79f4-44e9-4726-a5be-fca90e38aaf5      dashed
069a79f444e94726a5befca90e38aaf5          undashed

32桁の16進数で、8-4-4-4-12の区切りでグループ化される。大文字・小文字も関係なく、A-Fとa-fはどちらも一致する。

これが重要なのは、2つの形式が別々の場所から来るからだ。usercache.json、プラグインの設定、Mojang自身のAPIは、どちらを出力するかで一致していない。そしてプレイヤー上の/data getはどちらも出力せず、4つの整数の配列([I; …])を出力する。だから両方に出会うことになり、片方しか受け付けないツールは半分の確率で壊れているように見える。

-?は「全部かゼロか」ではなく区切りごとの判定なので、ダッシュが一部だけ残った文字列も通る。これは厳密に正しいというより寛容すぎる挙動だが、意図的なものだ。誰かがダッシュを1つ落としただけで貼り付けを拒否しても、誰の得にもならない。

なぜ名前とUUIDは互換できないのか

ユーザー名は変更でき、再利用もできる。UUIDはできない。したがってユーザー名の検索は「今この瞬間この名前を持っているのは誰か」に答え、UUIDの検索は「この特定のアカウント、今日何と呼ばれていようと」に答える。

保存しておくもの——ホワイトリスト、スコアボード、データパック、頭——には、UUIDのほうが正しさを保つ。ユーザー名のほうが入力は楽だ。

4つのアニメーション、それは時間に沿ったポーズ

ビューアーはidle、walk、run、flyを用意している。これらは静的なポーズではなくアニメーションであり、それがスキンを判断する上で重要になる。静止した状態でよく見えるテクスチャも、腕が振られるとおかしく見えることがある。腕の側面——平面プレビューでは決して見えない面——が視界に入ってくるからだ。

だからこそ、表と裏をレンダリングするだけでなく、動いている状態でスキンをプレビューすることに意味があるのだ。

スキンビューアー →

その他のガイド

すべて見る →