表示エンティティ(英:Display Entity)はデータパックやマップ製作向けのエンティティであり、様々なものを表示するのに利用できる。ブロック表示エンティティ(block_display)、アイテム表示エンティティ(item_display)、テキスト表示エンティティ(text_display)の3種類が存在する。/summonや/execute summonコマンドでのみ作成できる。
振る舞い[]
マーカーと同様に、表示エンティティはコマンド以外では移動せず、ダメージも受けず、サウンドも発せず、ブロックの設置も邪魔せず、プレイヤーやその他エンティティを外に押し出しもしない。マーカーと異なるのは、クライアント側で描画され、デバッグ画面のEの値(総エンティティ数)に計上されるという点である。
表示エンティティに当たり判定はなく、F3 + Bで当たり判定を表示させても、表示エンティティに対する当たり判定は表示されないが、視線の向きを示す青色の線は表示される。表示エンティティに向かってF3 + Iを押しても、エンティティデータはクリップボードにコピーされない。
使用法[]
表示エンティティはコマンドでのみ召喚できる。省略時の内容は、ブロック表示エンティティ、アイテム表示エンティティ、テキスト表示エンティティでそれぞれ{block_state:{Name:"minecraft:air"}}、{item:{id:"minecraft:air",Count:0b}}、{text:'{"text":""}'}であり、NBTを指定せずにコマンドで作成した場合、不可視のエンティティとして生成される。エンティティデータを変更することで表示内容やその他視覚効果、およびモデルの回転、縮尺、平行移動を容易に編集できる。
custom_model_data付きのアイテム表示エンティティによって任意のカスタムモデルを容易に表示することができる。
アイテム表示エンティティの場合、NBTを直接編集する以外にも、container.0スロットに対して/lootや/itemを使うことでも表示アイテムを編集できる。
補間アニメーション[]
表示エンティティのプロパティのうちいくつかは補間機能を持ち、時間をかけて徐々に変化するようなアニメーションを表示することができる。補間機能に対応しているプロパティは、#エンティティデータ項を参照。
補間機能に対応しているプロパティに変更が加えられると変更前後の値が共にクライアント側に保存され、変更を受け取ったクライアント側のティックからstart_interpolationティック後にアニメーションを開始し、interpolation_durationティックをかけて変更前の値から変更後の値へ滑らかに変化させる。
サーバーは1ティックに高々1回だけクライアントとのエンティティの同期を行うため、1ティック内で複数回プロパティを変更した場合も1回で同様の変更を行った場合と同様に作用する。
補間機能は対応しているプロパティに対して一括で作用するため、プロパティごとに補間機能を別個に作用させることはできない。
位置と回転の補間アニメーション[]
表示エンティティの補間アニメーションを使用する際には表示エンティティ自体の座標や回転は変更せず、表示されるオブジェクトのみを transformation内で平行移動・回転をさせるのが基本である。しかし表示エンティティの Posや Rotation自体も補間アニメーションには対応しており、 teleport_durationティックを掛けて位置と回転の補間アニメーションが表示される。
しかしこの方式の補間アニメーションはエンティティ自体を毎ティック繰り返しテレポートさせるため負荷が大きく、基本的には transformationを用いるのがよい。この方式の補間アニメーションは、/rideなどでエンティティを表示エンティティに乗せた状態で表示エンティティを動かす際などには有効に機能する。
なお補足としてクライアント側では、補間アニメーションの有無に関係なく表示エンティティの位置と回転の変更はコマンドによるを受けてから1ティック後に実行される。ただし、 teleport_durationを0に設定している場合に限り即座に変更が適用される。
技術的情報[]
ID[]
| エンティティ | 名前空間ID | 翻訳キー |
|---|---|---|
| ブロック表示エンティティ | block_display | entity.minecraft.block_display |
| アイテム表示エンティティ | item_display | entity.minecraft.item_display |
| テキスト表示エンティティ | text_display | entity.minecraft.text_display |
エンティティデータ[]
表示エンティティにはエンティティの様々な属性を含むエンティティデータが存在する。
ブロック表示エンティティ[]
- ルートタグ。
- すべてのエンティティに共通するタグ
- すべての表示エンティティに共通するタグ
- block_state:ブロック状態。
- ブロック状態
アイテム表示エンティティ[]
- ルートタグ。
- すべてのエンティティに共通するタグ
- すべての表示エンティティに共通するタグ
- item:表示するアイテム。
- すべてのアイテムに共通するタグ
- item_display:アイテムモデルの表示の仕方。アイテムモデルのJSONの
displayフィールドで定義されるようなモデル変換の種類を指定する。none、thirdperson_lefthand、thirdperson_righthand、firstperson_lefthand、firstperson_righthand、head、gui、ground、fixed(省略時)のいずれかの値を指定する。
テキスト表示エンティティ[]
- ルートタグ。
- すべてのエンティティに共通するタグ
- すべての表示エンティティに共通するタグ
- alignment:テキストの水平方向の配置。
center(省略時)、left、rightのいずれかを指定する。 - background:背景色。ARGB値で指定する。アルファチャンネルが0.1未満のピクセルはバニラのシェーダーの描画対象外であるため、Aの値が
26(0x1A)未満の場合、完全に透明な背景となる。省略時は1073741824(
0x40000000)である。補間対象である。 - default_background:
trueのとき、チャットなどで使用されるデフォルトの背景色が使われる。 backgroundより優先される。省略時はfalseである。 - line_width:1行の最大幅。これを超える幅のテキストは改行される(注:改行文字
\nを挿入することでも改行できる)。省略時は200である。 - see_through:ブロック越しにテキストが表示されるかどうか。省略時は
falseである。 - shadow:テキストの影の有無。省略時は
falseである。 - text:Raw JSONテキストフォーマットで記述した、表示するテキスト。
- text_opacity:テキストのアルファ値。本来0から255の値であるが、符号なし整数型はNBTに存在しないため、127より大きい値は256を減算する必要があり、よって
-128から127の値を指定することとなる。背景色と同様に、26未満のアルファ値は完全な透明として扱われる。省略時は-1であり、これはアルファ値255すなわち完全な不透明に対応する。補間対象である。
歴史[]
| Java Edition | |||||
|---|---|---|---|---|---|
| 1.19.4 | 23w06a | ブロック表示エンティティ、アイテム表示エンティティ、テキスト表示エンティティが追加された。 | |||
| Pre-release 4 | 新規の補間アニメーションが開始する際、現行の補間アニメーションの最終地点ではなく現在の状態から次のアニメーションを開始するようになった。 | ||||
| Release Candidate 1 | 補間機能が、クライアント側のティックの最初に始まるようになった。 | ||||
フィールドinterpolation_startが、異なる機能を持つstart_interpolationに置き換わった。 | |||||
start_interpolationは、補間機能発動の更新を受け取った次のクライアント側のティックから、補間機能開始までのティック数を指定する。例えば、これが0に設定されている場合は更新を受け取った次のクライアント側のティックの初めから補間機能が開始される。 | |||||
start_interpolationはエンティティデータに保存されない。/dataを用いて動作させる際、補間値が更新されたのにstart_interpolationが変更されたタグの中に含まれていない場合、補間機能は前回の更新から継続して、新しい値で行われる。 | |||||
| 1.20 | 23w16a | アイテム表示エンティティの表示方向が、Y軸を中心にして180度回転された。 | |||
| 1.20.2 | 23w31a | 従来の transformationの補間アニメーションに加え、この位置( Pos)と回転( Rotation)の補間アニメーションが利用できるようになった。この補完アニメーションの持続時間は、表示エンティティの新しいフィールドteleport_durationによって決定される。
| |||
| 表示エンティティのクライアント側での位置と回転( transformationではなく Posと Rotationによって決定される汎用の位置と回転)の更新は、コマンドによる更新を受け取った1ティック後から始まるようになった。 | |||||
問題点[]
「表示エンティティ」、「ブロック表示エンティティ」、「アイテム表示エンティティ」、または「テキスト表示エンティティ」に関する問題点は、バグトラッカーにて管理されている。問題点の報告はそちらで行ってほしい。
