リソースパックでHUD要素を非表示・リサイズする方法
ホットバー、クロスヘア、XPバーはすべて1つのテクスチャアトラスにまとめられています。この記事では、その一部を非表示にする方法、移動できない要素、カスタムHUDテキストのためのフォントトリックについて解説します。
ホットバーを非表示にする設定はありません。しかし、テクスチャを透明にすることで、視覚的に削除しつつ、すべての機能はそのまま維持できます。
すべてが1つのファイルに
assets/minecraft/textures/gui/sprites/hud/
最近のバージョンでは、古いwidgets.pngアトラスが個別のスプライトに分割されています。具体的には、hotbar.png、crosshair.png、experience_bar_background.png、heart/full.pngなどです。これらのいずれかを同じ寸法の完全に透明なPNGに置き換えることで、非表示にできます。
同じ寸法であることが重要です。 182×22のホットバーが期待される場所に1×1の透明なPNGを配置すると、消えるのではなく引き伸ばされ、汚れた帯状になってしまいます。
できることとできないこと
できること:
- スプライトを透明にすることで、任意の要素を非表示にする
- すべてを再スタイルする — 異なるハート、ミニマルなクロスヘア、テーマに沿ったホットバー
- 同じサイズのキャンバス内に小さなコンテンツを描画することで、見かけ上のサイズを変更する
できないこと:
- 要素を移動する。位置はハードコードされており、アートワークのみがデータです。
- ホットバーのスロットをフレームとは独立して非表示にする — これらは1つのスプライトです。
- スロットの機能を変更する。これは見た目のみであり、アイテムは引き続き選択可能です。
最後の点は明確に述べる価値があります。非表示のホットバーは依然としてホットバーです。これはインベントリの制限ではなく、プレイヤーは引き続きスロットを使用できます。
ナインスライス(nine-slice)の落とし穴
いくつかのHUDスプライトはナインスライス(nine-sliced)されています — 角は固定され、端は引き伸ばされます。PNGの隣にある.mcmetaが境界を宣言します。
{ "gui": { "scaling": { "type": "nine_slice", "width": 200, "height": 20,
"border": { "left": 2, "top": 2, "right": 2, "bottom": 2 } } } }
このようなスプライトをmcmetaと一致させずに置き換えると、誤って引き伸ばされます。迷った場合は、バニラの.mcmetaをPNGと一緒にコピーしてください。
フォントによるカスタムHUDテキスト
本当に強力なトリックは、グリフが画像であるフォントプロバイダーを定義し、/titleまたはボスバーでそれらの文字を表示することです。テキストはあなたのアートワークとしてレンダリングされます。
assets/<namespace>/font/default.json
{ "providers": [
{ "type": "bitmap", "file": "my_pack:font/icons.png", "ascent": 8, "height": 9,
"chars": [""] }
] }
プライベート使用コードポイント(以降)を使用することで、実際のテキストと衝突することはありません。そうすると、/title @a actionbar {"text":""}がアクションバーにあなたの画像を描画します。
これは、サーバーがクライアントにmodなしで、リソースパックのみでカスタムヘルスバー、通貨アイコン、プログレスメーターを表示する方法です。
ネガティブスペースフォント
負のadvancesを持つグリフを定義すると、カーソルを後方に移動させ、画像を重ねて表示できます。これは、適切なインターフェースのように見えるサーバーHUDの背後にあるテクニックです。これは扱いにくいですが、何かを配置する唯一の方法です。
HUDカスタマイザー&フォントパックメーカーで、HUD要素を非表示または再スタイルし、割り当てられたコードポイントでフォントプロバイダーを構築しましょう。