mcpField
M
minecraft-resource-pack

minecraft-resource-pack

github.com/jahrome907クリエイティブ・メディア192231 回インストール2 週間前に更新
リポジトリ

minecraft-resource-pack について

Minecraft Java Edition のリソースパックを作る人向けのガイドです。バージョン別のメタデータ、アセット構成、同梱の検証スクリプトを扱います。

主な機能

  1. 01バージョン別 pack.mcmeta の設定
  2. 02ブロックとアイテムモデルの作成
  3. 03テクスチャ、アニメーション、サウンド
  4. 04言語ファイルとフォントの案内
  5. 05JSON とアセット参照のスクリプト検証

活用シーン

  1. 01対象バージョン向けのパック作成・更新
  2. 02モデル、テクスチャ、サウンドの読み込み不具合調査
  3. 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.md
scripts/
jq-shim.mjs
validate-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.1pack_format: 34
1.21.2 / 1.21.3pack_format: 42
1.21.4pack_format: 46
1.21.5pack_format: 55
1.21.6pack_format: 63
1.21.7 / 1.21.8pack_format: 64
1.21.9 / 1.21.10min_format: [69, 0], max_format: [69, 0]
1.21.11min_format: [75, 0], max_format: [75, 0]
26.1min_format: [84, 0], max_format: [84, 0]
26.2min_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 コードが意図したサウンドソースでイベントを呼び出すことも確認できません。こうしたケースは警告となるため、対象クライアントで正確に実行時確認する必要があります。


参考資料

コメント