minecraft-resource-pack について
Minecraft Java Edition のリソースパックを作る人向けのガイドです。バージョン別のメタデータ、アセット構成、同梱の検証スクリプトを扱います。
主な機能
- 01バージョン別 pack.mcmeta の設定
- 02ブロックとアイテムモデルの作成
- 03テクスチャ、アニメーション、サウンド
- 04言語ファイルとフォントの案内
- 05JSON とアセット参照のスクリプト検証
活用シーン
- 01対象バージョン向けのパック作成・更新
- 02モデル、テクスチャ、サウンドの読み込み不具合調査
- 03公開前の構成と参照先の検査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jahrome907/ minecraft-agent-skills --skill minecraft-resource-packインストール後、Claude Code で/minecraft-resource-packを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/conditional-assets.mdscripts/jq-shim.mjsvalidate-resource-pack.sh詳細
Minecraft リソースパックのスキル
リソースパックとは?
リソースパックは、Minecraft のビジュアルおよびオーディオアセット(テクスチャ、モデル、サウンド、言語ファイル、フォント)を上書きまたは追加するフォルダー(または .zip)です。これらのバニラアセットには、Java や MOD ローダーは必要ありません。
適用範囲
Use when: 成果物がリソースパック形式のビジュアル/オーディオアセット(テクスチャ、モデル、サウンド、フォント)の場合に使用します。Do not use when: タスクでゲームプレイのロジックや実行時の動作変更が必要な場合は使用しないでください(minecraft-datapack、minecraft-plugin-dev、またはminecraft-moddingを使用してください)。Do not use when: タスクがサーバーインフラストラクチャや実行時の管理に関する場合は使用しないでください(minecraft-server-adminを使用してください)。
パックのメタデータ
| Minecraft のバージョン | 推奨される pack メタデータ |
|---|---|
| 1.21 / 1.21.1 | pack_format: 34 |
| 1.21.2 / 1.21.3 | pack_format: 42 |
| 1.21.4 | pack_format: 46 |
| 1.21.5 | pack_format: 55 |
| 1.21.6 | pack_format: 63 |
| 1.21.7 / 1.21.8 | pack_format: 64 |
| 1.21.9 / 1.21.10 | min_format: [69, 0], max_format: [69, 0] |
| 1.21.11 | min_format: [75, 0], max_format: [75, 0] |
| 26.1 | min_format: [84, 0], max_format: [84, 0] |
| 26.2 | min_format: [88, 0], max_format: [88, 0] |
レガシーの pack_format は、65 未満のリソース形式(1.21.8 まで)にのみ使用してください。
リソース形式 65 以降では、min_format と max_format の両方が必要です。パッチバージョンを正確に指定する場合は、[84, 0] のように .0 を含めた [major, minor] を使用してください。
整数または [major] 形式の min_format は [major, 0] を意味します。整数または [major] 形式の max_format は、そのメジャーバージョン系列のすべてのマイナーバージョンを許可します。小数の JSON 数値は使用しないでください。レガシー形式のみのパックでは、整数の pack_format だけを使用できます。min_format にレガシー形式を含む範囲では、整数の pack_format と supported_formats が必要です。現行形式のみの範囲には supported_formats を含めないでください。
ディレクトリ構成
my-pack/
├── pack.mcmeta
├── pack.png ← 64×64 icon (optional)
└── assets/
└── minecraft/ ← override vanilla (or <namespace>/ for new packs)
├── models/
│ ├── block/
│ │ └── stone.json
│ └── item/
│ └── diamond_sword.json
├── items/ ← 1.21.4+ item model definitions
│ └── diamond_sword.json
├── blockstates/
│ └── stone.json
├── textures/
│ ├── block/
│ │ └── stone.png
│ ├── item/
│ │ └── diamond_sword.png
│ ├── gui/
│ │ └── sprites/
│ │ └── my_sprite.png
│ └── entity/
│ └── zombie/
│ └── zombie.png
├── sounds/
│ └── custom/
│ └── my_sound.ogg
├── sounds.json
├── font/
│ └── default.json
└── lang/
└── en_us.json
OptiFine CIT や Iris シェーダーパックなど、クライアント MOD 固有のファイルには、それぞれ独自の形式があります。追加する前に、条件付きアセットをお読みください。
pack.mcmeta
1.21.8 以前
{
"pack": {
"pack_format": 64,
"description": "My Custom Resource Pack v1.0"
}
}
1.21.9 / 1.21.10
{
"pack": {
"min_format": [69, 0],
"max_format": [69, 0],
"description": "My Custom Resource Pack v1.0"
}
}
1.21.11
{
"pack": {
"min_format": [75, 0],
"max_format": [75, 0],
"description": "My Custom Resource Pack v1.0"
}
}
26.2
{
"pack": {
"min_format": [88, 0],
"max_format": [88, 0],
"description": "My Custom Resource Pack v1.0"
}
}
ブロックモデル
assets/minecraft/models/block/my_cube.json
立方体全体 — 6 面すべてに同じテクスチャを使用します。
{
"parent": "minecraft:block/cube_all",
"textures": {
"all": "minecraft:block/stone"
}
}
柱状ブロック(原木など):
{
"parent": "minecraft:block/cube_column",
"textures": {
"end": "mypack:block/my_pillar_top",
"side": "mypack:block/my_pillar_side"
}
}
側面ごとに異なるテクスチャ:
{
"parent": "minecraft:block/cube",
"textures": {
"up": "mypack:block/my_block_top",
"down": "mypack:block/my_block_bottom",
"north": "mypack:block/my_block_side",
"south": "mypack:block/my_block_side",
"east": "mypack:block/my_block_side",
"west": "mypack:block/my_block_side",
"particle": "mypack:block/my_block_side"
}
}
クロスモデル(花、植物):
{
"parent": "minecraft:block/cross",
"textures": {
"cross": "mypack:block/my_flower"
}
}
カスタムジオメトリ(elements)
{
"credit": "Custom model",
"ambientocclusion": true,
"textures": {
"0": "mypack:block/panel",
"particle": "mypack:block/panel"
},
"elements": [
{
"from": [0, 0, 7],
"to": [16, 16, 9],
"faces": {
"north": { "texture": "#0", "uv": [0, 0, 16, 16] },
"south": { "texture": "#0", "uv": [0, 0, 16, 16] }
}
}
],
"display": {
"thirdperson_righthand": {
"rotation": [75, 45, 0],
"translation": [0, 2.5, 0],
"scale": [0.375, 0.375, 0.375]
}
}
}
fromとtoの単位はブロックの 1/16(0~16)です。uvは 0~16 単位の[x1, y1, x2, y2]です。
アイテムモデル
1.21.4 以降では、assets/<namespace>/items/ のアイテム定義を使用してください。1.21.3 以前では、レガシーモデルの overrides 配列を使用してください。文字列ベースの現行 custom_model_data セレクターと、レガシーの数値述語については、条件付きアセットをお読みください。それぞれの値は相互に置き換えられません。
ブロックステート定義
単純なブロック(バリアントなし)
{
"variants": {
"": { "model": "mypack:block/my_block" }
}
}
向きを持つブロック(4 方向の回転)
{
"variants": {
"facing=north": { "model": "mypack:block/my_block" },
"facing=south": { "model": "mypack:block/my_block", "y": 180 },
"facing=east": { "model": "mypack:block/my_block", "y": 90 },
"facing=west": { "model": "mypack:block/my_block", "y": 270 }
}
}
ランダムテクスチャ(multipart)
{
"variants": {
"": [
{ "model": "minecraft:block/grass_block", "weight": 3 },
{ "model": "minecraft:block/grass_block_2" }
]
}
}
Multipart(ハーフブロック、フェンス、壁)
{
"multipart": [
{ "apply": { "model": "mypack:block/my_slab_bottom" }, "when": { "type": "bottom" } },
{ "apply": { "model": "mypack:block/my_slab_top" }, "when": { "type": "top" } },
{ "apply": { "model": "mypack:block/my_block" }, "when": { "type": "double" } }
]
}
テクスチャ
- 形式:PNG、RGBA(32 ビット)
- ブロック/アイテムの標準サイズ:16×16 px
- テクスチャはより大きなサイズ(32×32、64×64)にもできます。Minecraft が拡大縮小しますが、2 の累乗のサイズを使用してください。
- アニメーションでは、高さを幅の N 倍にする必要があります(例:4 フレームなら 16×64)。
- ブロックのテクスチャは
assets/<namespace>/textures/block/に配置します。 - アイテムのテクスチャは
assets/<namespace>/textures/item/に配置します。 - JSON からテクスチャを参照する際、
.png拡張子は指定しません。
アニメーションテクスチャの MCMETA
assets/minecraft/textures/block/fire_0.png.mcmeta:
{
"animation": {
"frametime": 2,
"frames": [0, 1, 2, 3, 4, 5, 6, 7]
}
}
frames を省略すると、すべてのフレームが順番に再生されます。frametime の単位はゲームティックです(デフォルトは 1)。
GUI スプライト(1.20.2+)
スプライトは assets/minecraft/textures/gui/sprites/<category>/<name>.png に配置します。
コード/JSON では <category>/<name> を指定します。
26.1 のブロックモデルのテクスチャエントリ
26.1 では、ブロックモデルの textures エントリにスプライト文字列を指定することも、オブジェクトを使用することもできます。オブジェクトには文字列の sprite が必要です。force_translucent を設定する場合は、ブール値である必要があります。
{
"textures": {
"all": {
"sprite": "mypack:block/frosted_panel",
"force_translucent": true
}
}
}
どちらの形式でも、.png を付けずにスプライトを指定します。スプライトのピクセルにかかわらず、ジオメトリを半透明パスで描画する必要がある場合にのみ、force_translucent を使用します。
サウンド
イベントの名前空間は sounds.json がある名前空間から取得されます。サウンドエントリの name は、サウンドファイルの名前空間を指定します。サウンドファイルは assets/<namespace>/sounds/ に置く Vorbis .ogg ファイルです。正しいイベントの例、エイリアス、サウンドソースの選択、置換動作については、条件付きアセットを参照してください。
言語ファイル
assets/minecraft/lang/en_us.json:
{
"block.mypack.my_block": "My Custom Block",
"item.mypack.my_item": "Magic Wand",
"entity.mypack.my_mob": "Forest Guardian",
"death.attack.mypack.laser": "%1$s was zapped by %2$s"
}
- MOD/データパックの名前空間に対応する正確な翻訳キー形式を使用します
- ファイル名にはロケールコードを使用します(例:
fr_fr.json、de_de.json) - 常に
en_us.jsonを主要なフォールバックとして用意します
フォント
ビットマッププロバイダーのレイアウトと私用領域のアイコンに関するガイダンスについては、条件付きアセットを参照してください。
OptiFine とシェーダー
OptiFine CIT と Iris シェーダーパックには、クライアント MOD 固有の形式があります。いずれかを追加する前に条件付きアセットを参照してください。これらはバニラのリソースパックで利用できるポータブルな機能ではありません。
インストール
# Singleplayer: place in
~/.minecraft/resourcepacks/my-pack/
# or
~/.minecraft/resourcepacks/my-pack.zip
# Server-side (forces on clients):
# Set in server.properties:
resource-pack=https://example.com/my-pack.zip
resource-pack-sha1=<sha1 hash>
resource-pack-prompt={"text":"Required pack","color":"gold"}
よくある問題
| 問題 | 原因 | 解決方法 |
|---|---|---|
| モデルが表示されない | JSON のパスが間違っているか、構文エラーがある | assets/<namespace>/models/ のパスを確認し、JSON を検証します |
| 黒/ピンクのチェッカーボード模様が表示される | テクスチャのパスが間違っているか、ファイルがない | textures/ のパスを確認します。JSON にはファイル拡張子を含めません |
| ブロックステートが適用されない | ステートプロパティ名が間違っている | F3 でブロックステートを確認します。ブロックエンティティの NBT には /data get block <x> <y> <z> を使用します |
| アニメーションが動作しない | MCMETA の場所が間違っている | テクスチャと同じフォルダーに、texture.png.mcmeta という名前で配置する必要があります |
| カスタムサウンドが再生されない | sounds.json に登録されていない | sounds.json にサウンドイベントを登録し、名前空間を一致させます |
| パックが読み込まれない | pack_format または min_format/max_format の値が間違っている | 正確な 1.21.x のパッチに合わせて pack.mcmeta を更新します |
バリデータースクリプト
リソースパックの更新を公開する前に、同梱のバリデータースクリプトを使用してください。
別の名前空間にあるモデル、テクスチャ、サウンド、フォントへの未同梱の参照は警告になります。依存先が存在する状態で、実行時に検証する必要があります。現在の名前空間内にファイルがない場合は失敗します。厳密モードでは、解決されていない警告も失敗になります。
# Run from the installed skill directory (for example `.claude/skills/minecraft-resource-pack`):
./scripts/validate-resource-pack.sh --root /path/to/resource-pack
# Strict mode treats warnings as failures:
./scripts/validate-resource-pack.sh --root /path/to/resource-pack --strict
確認項目:
pack.mcmetaとassets/**/*.jsonの JSON の妥当性- 整数、
[major]、[major, minor]の各バージョンを含む、旧形式と新形式のpack.mcmetaフィールド構造 - モデル/ブロックステート/フォント/サウンドの参照先に実際のファイルがあること
- 現行の
custom_model_dataのセレクトケースで文字列を使用していること。26.1 のテクスチャオブジェクトでは、文字列のspriteと任意のブール値force_translucentを使用していること - 同じ名前空間内の
type: "event"サウンドエイリアスが、そのsounds.jsonにあるイベントを指定していること - すべての
*.png.mcmetaに対応する*.pngがあること
バリデーターでは、別の名前空間が所有するサウンドイベントを解決できません。また、コマンドや MOD コードが意図したサウンドソースでイベントを呼び出すことも確認できません。こうしたケースは警告となるため、対象クライアントで正確に実行時確認する必要があります。