Minecraft Command Advent Calendar 2025 Series 2 Day 1 (2025/12/1)
記事最終更新日: 2025/12/1
0. はじめに
この記事の前提知識
・リソースパックのテクスチャを自由に変更できる。
・リソースパックのJSONモデルについてある程度理解している。
・*.png.mcmetaでアニメーションテクスチャが実行可能
この記事は1.21.11向けに作成されています。
1. こんにちは
クロスプです。どこかで活動していない人です。
今回は1.21.11において使われているatlasの使い方や実際に使用されている場所などを解説します。
早速なのですが、皆さんはリソースパックのテクスチャをモデルから新たに追加する際、どのような場所のテクスチャを読み込んでいますか?
ほとんどの方はテクスチャファイルをminecraftの名前空間にあるblock/もしくはitem/のどちらかに入れている事でしょう。カスタム名前空間をリソースパックで使用している人なんてほとんど見かけません。
今思えば懐かしいですね。1.19.3に新たにatlasを事前にリソースパックで割り当てる必要が出てきて当時の約半数ほどのリソースパックが壊れたのを思い出します。それも理解に少し複雑で1回で直す事が出来なかった人も多いはずです。
でも大丈夫、3年たっていますが割り当て方や仕様を解説しますので、是非atlasを有効活用しましょう。少し前のアップデートでatlasがフォントに対応したとのことなので、重要だと思われます。
2. atlasは何に使われているの?
2.1 atlasとは
まずatlasとは何なのでしょうか?Googleに聞いてみました。
atlasとは、複数の画像(ブロック、アイテム、UIなど)を1枚の大きな画像ファイルにまとめたものです。これにより、個別のファイルを呼び出すよりも効率的にテクスチャを保存・アクセスできます。
マインクラフトでは、メモリ内の1枚の大きなpngに全てのブロックのテクスチャ、別の1枚の大きなpngに全てのアイテムテクスチャ、そして次はGUIスプライト... の様な感じで、いくつかの大きなpngをロードしています。
そんなことが出来るのなら以下のことが可能になっているのです。
実はマイクラのJSONモデルで使われるtextures、ファイルのパスを直接指しているわけではありません。
間接的に大体同じフォルダー、ファイルを指しているだけということも紹介しますので、是非最後まで見て頂けると嬉しいです。
2.2 割り当てられるタイミング
この大きなpngはいつ割り当て・変更させられるのでしょうか?
言われるまでもなく皆さんがいつも見ている下の画面の時ですね!
この画面の時に、マインクラフトのログでは下記のログが出力されます。
紛らわしいですがこのログは1.21.10、見やすいようにA-Zに並べ替え、バニラ以外のリソースパックが入っています。
Created: 2048x1024x0 minecraft:textures/atlas/armor_trims.png-atlas
Created: 512x512x0 minecraft:textures/atlas/banner_patterns.png-atlas
Created: 512x256x0 minecraft:textures/atlas/beds.png-atlas
Created: 1024x1024x4 minecraft:textures/atlas/blocks.png-atlas
Created: 512x256x0 minecraft:textures/atlas/chest.png-atlas
Created: 128x64x0 minecraft:textures/atlas/decorated_pot.png-atlas
Created: 1024x1024x0 minecraft:textures/atlas/gui.png-atlas
Created: 64x64x0 minecraft:textures/atlas/map_decorations.png-atlas
Created: 512x256x0 minecraft:textures/atlas/paintings.png-atlas
Created: 512x256x0 minecraft:textures/atlas/particles.png-atlas
Created: 512x512x0 minecraft:textures/atlas/shield_patterns.png-atlas
Created: 256x256x0 minecraft:textures/atlas/signs.png-atlas
Created: 512x256x0 minecraft:textures/atlas/shulker_boxes.png-atlas
このタイミングでリソースパックのテクスチャの中身のほとんどがatlasに移動されています。
2.3 何故blocks.png-atlasだけx4になっているのか
今回注目してほしいのは、minecraft:textures/atlas/blocks.png-atlasのみでx4が、それ以外ではx0になっています。このx4と呼ばれるのは何なのでしょうか。
MinecraftではデバッグコマンドでF3+S(1.19.4以降)を使用する事でatlasを含んだ全てのダイナミックテクスチャを保存する事ができます。atlas以外にマップデータ、スキンデータ、フォントデータ、ワールド・読み込んだパックのアイコン、missingnoが出力されます。
この中にあるminecraft_textures_atlas_blocks.png_0の隣に、画像データが1/2になっている.png_1から1/16になっている.png_4がある方と無い方がいるかと思います。
まず、この1~4に圧縮されているものはビデオ設定にある「ミップマップレベル」という設定が有効の場合のみ使用されています。

かつ、テクスチャが圧縮可能な状態の場合にのみ使用されています。
テクスチャが圧縮可能な状態とは、テクスチャの解像度を綺麗に減らせるのが条件です。もしミップマップレベル4を正常に動作させる為には、このatlasに割り当てられている全てのテクスチャの解像度を縦横それぞれ16の倍数である必要があります。もし縦横どちらかが8の倍数の場合はミップマップレベルが3に、2で割り切れない場合はミップマップレベルが0になります。0になった場合はこのミップマップレベルの設定は一切機能しない事になります。
このミップマップレベルは遠いブロックを自動的に圧縮された画像でレンダリングしてくれます。
例えば、ミップマップレベルを4にすると遠くのチャンクでは1/16に圧縮されたテクスチャが利用されるということです。
2.4 *.png.mcmetaについて
リソースパックでは一部の場所でpng.mcmetaを使用してアニメーションを実行出来ます。
この一部の場所というのが、atlasで読み込まれているテクスチャの事を示します。
(pack.pngはatlasで読み込まれていませんが、アニメーション出来る)
GUIなど、特定のatlasでは固有の機能が使えたりします。
GUIについて
1.20.1までではGUIがatlasに対応していなかったため、この方法が使えませんでした。
1.20.2からgui/spritesの中身全てをminecraft:textures/atlas/gui.png-atlasで読み込め、アニメーションする事が可能になったのです。
ただこれはマイクラの内部でatlasを読み込む様に変更したおかげなので、gui/sprites以外で読み込まれているGUIはアニメーション出来ません。
なお、minecraft:textures/atlas/gui.png-atlasではnine_sliceが利用可能です。この機能は他のatlasでは読み込めません。
2.5 フォントatlasとは
最近のアップデートでフォントからatlasを読み込めるようになっています。
{object: "atlas", atlas: "minecraft:blocks", sprite: "minecraft:block/sea_lantern"}
上記のテキストコンポーネントでシーランタンをテキストとして出力できます。
2.6 バニラで利用されているatlasのざっくりとした種類
ここでatlasの種類を調べてみましょう。
ブロック関連はほとんど1つのファイルですが、ブロックエンティティはほぼ全て個別のファイルです。
サンプルは 1.21.11 Pre release 3 で出力したものです。
minecraft:armor_trims
アーマーの装飾とパレットを正常に紐づける。
minecraft:banner_patterns
旗のレンダリング
minecraft:beds
ベッドのレンダリング
minecraft:blocks
エンティティブロック(チェスト、看板等)を除く全てのブロックはこのatlasで管理されている。主にblockstates/やmodels/blockを介して読み込まれる。
1.21.10以前はアイテムも対象でしたが、1.21.11よりアイテムはminecraft:itemsに変更されました。
minecraft:blocksとminecraft:itemsの違い
1.21.11の新オプションのお陰で、ファイルが大きくなりました ![]()
minecraft:celestials
太陽、月、エンドフラッシュ
minecraft:chests
チェストのレンダリング
minecraft:decorated_pot
飾り壺のレンダリング
minecraft:gui
スプライト系GUI(ボタンやスクロールバー、HPアイコン等)とエフェクトアイコン。現在はアイテムを選択した際のバックグラウンドもこのatlasで読み込まれている。
minecraft:items
アイテム関連ですが、ブロック関連のアイテムはありません。
minecraft:blocksとminecraft:itemsの違い
minecraft:map_decorations
マップマーカーのレンダリング
minecraft:paintings
絵画のレンダリング
minecraft:particles
パーティクルのレンダリング
minecraft:shield_patterns
盾のレンダリング
盾用の旗模様もあるので結構大きい。
minecraft:shulker_boxes
シュルカーボックスのレンダリング
(シュルカーは反応しない)
minecraft:signs
看板と釣り看板(編集UIの釣り看板は除く)
ブロックとアイテムの違い
1.21.11では、ブロックとアイテムで別のatlasに変更されています。
これは、ブロックの処理が大きくなってしまったため、アイテムにも適用されるのを防ぐために仕様変更されました。
ブロックではいくつかのビデオ設定でatlasが変更されてしまいます。
1.21.11でこのビデオ設定が更に増えた為、アイテムと分離されました。
この影響により、models/で割り当てられているテクスチャはminecraft:blocksまたはminecraft:itemsのどちらかに合わせる必要が生じました。
その為、バニラのテクスチャでblocks/とitems/を同時に利用する際には、atlasで割り当てる必要が生じました。
3. 実際に変更しよう!
assets/minecraft/atlasesのJSONファイルを利用して、既存のJSONから追加出来ます。上書きではありませんので、複数リソースパックがある場合も対応しやすいです。
例えば、バニラのブロックのatlasは以下の内容が入っています。
{
"sources": [
{
"type": "minecraft:directory",
"prefix": "block/",
"source": "block"
},
{
"type": "minecraft:directory",
"prefix": "entity/conduit/",
"source": "entity/conduit"
},
{
"type": "minecraft:single",
"resource": "minecraft:entity/bell/bell_body"
},
{
"type": "minecraft:single",
"resource": "minecraft:entity/enchanting_table_book"
}
]
}
実際、そこまで難しいコードではありません。
ディレクトリblock/がほぼ全てのブロックが対象です。
それ以外では、ブロックエンティティのブロック状態を持っている(動かない状態がある)ブロックとしてコンジット、ベルのボディ、エンチャントテーブルの本が割り当てられています。
3.1 typeについて
ここで、typeを1つずつ解説します。
1.21.11 Pre release 3 時点のフォーマットです。
minecraft:directory
minecraft:directoryを利用すると、ディレクトリ全てを割り当てる事が出来ます。
基本的には上記のバニラの様に、prefixとsourceを同じように割り当てるのが良いです。
そして、minecraft:directoryは名前空間を割り当てないので基本的に全ての名前空間が対象になります。
上記のコードの場合、alpha:entity/conduit/内にあるファイルも対象となったりと、限定的な使い方では少々クセの強い可能性があります。
-
source*
テクスチャがあるフォルダーを選択してください。なお、割り当てられた子フォルダーも参照されます。 -
prefix*
atlasに読み込まれる際でsourceがないものとして変換されてしまうので、ここで再度親フォルダーを割り当て直します。別のフォルダーとして割り当てる事ができますが、基本的にそのような場面がほとんどありません。
minecraft:filter
ディレクトリに条件があっているファイルが、この操作で打ち消す事が可能です。minecraft:directory内で解像度が16倍ではない状態ですが、そのディレクトリで置きたい場合にファイルを無効化することが出来ます。
割り当て方がpack.mcmetaでの無効化と非常に似ており、blockがpatternに変更され、List型からCompound型に変更されています。
この機能は直前までで読み込まれたatlasを読み込まない様にするだけなので、この後に読み込まれるatlasは無効化されない。
-
pattern* -
-
namespace
名前空間。省略時は全ての名前空間が対象となる。
-
-
-
path
パス。block/.*の様にすると、そのフォルダーの全てのファイルが対象となる。
-
minecraft:single
minecraft:singleでは、直接テクスチャのあるパスを割り当てます。
-
resource*
使いたいパスを割り当てます。
-
sprite
前述のsourceの様にパスを変更する事が出来ます。省略時はresourceと同じになります。
minecraft:unstitch
フォントの様に1つのテクスチャでいくつものアイテムテクスチャとして利用する際に使います。
あまり利用しませんが、大規模なリソースパックではとても有用だと思います。
-
resource*
参照するファイルのパス。元になるテクスチャファイル。
パスはtextures/以降のみ記述し、拡張子.pngは省略する。 -
divisor_x
以下でファイルの範囲指定をする際、X座標最大の数字を割り当てる。省略した場合1となる。 -
divisor_y
以下でファイルの範囲指定をする際、Y座標最大の数字を割り当てる。省略した場合1となる。 -
regions*
範囲指定。List型なので、出力するファイルを1つずつ選択する。
座標系は左上頂点を(0, 0)・右下頂点を(divisor_x, divisor_y)とする。範囲の頂点が元画像の格子点上に来ない場合切り捨て。 -
-
sprite*
切り取った画像のID
-
-
-
x*,y*
左上頂点。
-
-
-
width*
Xの長さ。
-
-
-
height*
Yの長さ。
-
minecraft:paletted_permutations
パレットを利用してカラーを追加できる。アイテムのtintsやフォントのcolorが便利すぎてほぼ使わない。
長くなるので省略します。詳しく知りたい方は公式Wikiで調べてください。
3.2 実際の利用方法
実際の利用方法としては、(ブロック/アイテム)モデルで適用する、アーマーテクスチャを割り当てる、フォントで割り当てる等に利用します。atlasはsounds.jsonの様にテクスチャをIDとして分類する役割を持っている為、とても見栄えの良くなるリソースパックになるでしょう。
4. 終わりに
ここまで読んでくださりありがとうございました。ここまでで結構内容が多かったですが、自分は記事を書いて思った事が1つあります。それは、
マイクラWikiを要約しただけ
の様に感じました。そう、詳しい事は全部マイクラWikiに載っているのです。
ここでわかりづらかった表現も、マイクラWikiだとわかりやすく載っている可能性もあるので、Wikiと併用して使いましょう。
atlasを自由に使い、リソースパックのフォルダー分けを使いやすく細分化しましょう。















