MC Toolkit

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

ユーザー名で指定するプレイヤーの頭: profileコンポーネントの仕組みと、頭が真っ白になる理由

頭が保存するのはスキンのスナップショットであり、生きたリンクではありません。ここではprofileコンポーネント、古い頭が間違ったスキンを表示する理由、そしてUUID検索がどう関わるかを解説します。旧SkullOwner NBTの後継です。

プレイヤーの頭を渡すのは、引数ひとつで済むように思えます。実際そのとおりなのですが、保存されるものは多くの人の予想とは違い、それが頭に関する奇妙な現象のほとんどを説明してくれます。

コマンド

/give @p player_head[profile="Notch"]

profileコンポーネントは旧来のSkullOwner NBTを置き換えたものです。{SkullOwner:"Notch"}を使っているスニペットは1.20.5より前のもので、現在は何も起きません。

実際に保存されるもの

profile="Notch"として与えられた頭が保存するのは名前だけです。これは動的なprofileであり、アイテムのツールチップにもそう表示されます。各プレイヤーのクライアントが名前を検索し、頭を描画するときにスキンを取得します。頭が固定されたスナップショットを持つのは、profileにテクスチャ自体が含まれている場合だけです:

"profile": {
  "name": "Notch",
  "id": [I; …],
  "properties": [{ "name": "textures", "value": "<base64>" }]
}

そこから二つの帰結が生まれます:

  • 名前ベースの頭はプレイヤーの現在のスキンに追従します。 描画のたびに再検索され、クライアントは検索済みのスキンを5分間使われない状態になるまで保持します。texturesプロパティを持つ頭だけが、ひとつのスキンに固定されます。
  • 解決が行われるのは閲覧者のマシンです。 texturesプロパティを焼き込んだ頭は、検索なしでそのまま描画されます。名前ベースの頭は、サーバーのオンラインモードではなく、各閲覧者のクライアントがMojangに到達できるかどうかに依存します。

頭が真っ白になったりSteveが表示されたりする理由

可能性の高い順に:

  1. このクライアントで名前が解決できなかった。 MojangのAPIに到達できなかったか、検索がまだ保留中です。解決するまでの間、頭はデフォルトスキンを表示します。
  2. その名前が存在しない。 削除済み、あるいは一度も登録されていないアカウントに対して、Mojangは何も返しません。
  3. まだ解決中。 検索はバックグラウンドで実行されるため、視界に入ってすぐの一瞬はデフォルトが表示されることがあります。

名前ベースの頭は、キャッシュのエントリが期限切れになれば自動的に再試行します。代わりにスキンを固定したい場合は、texturesプロパティ付きで頭を与えてください — /fetchprofile name <name>はプレイヤーを解決し、コピー用の完全なコンポーネントか、すぐに渡せる完成済みの頭を提供します。

カスタムの頭は名前ではなくテクスチャを使う

装飾用の頭 — 家具、食べ物、カタログにあるモブの頭 — には持ち主がいません。それらが持つのはpropertiesテクスチャ値だけで、テクスチャURLを指すbase64のブロブが含まれています。だからこそ、長いgiveコマンドひとつで共有でき、プレイヤーが名前を変更しても壊れないのです。

base64をデコードすると、textures.minecraft.net上のtextures.SKIN.urlを含む小さなJSONになります。レンダリングに関係するのはそれだけです。

UUIDの形式

二つの形式が存在し、あらゆる場面で互換というわけではありません:

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

コマンドやNBTは一般にハイフン付き形式か整数配列を求めます。Web APIは通常ハイフンなしを返します。変換は機械的です — 8、12、16、20文字目の後にハイフンを挿入するだけです。

ユーザー名から頭を与えたり、装飾用の頭のカタログを見たり、UUID形式を相互変換したりするには、Player Head & Username Toolsをご利用ください。

プレイヤーヘッド & ユーザー名ツール →

その他のガイド

すべて見る →