モデル

提供: Minecraft Wiki
Modelから転送)
移動先: 案内検索
Information icon.svg
この項目はJava Edition限定の要素です。

ブロックモデル (Block models) はゲーム内のすべてのブロックを描画するために使用される。アイテムモデル (Item models) はプレイヤーが持っているときや頭(ヘルメットや帽子のように)につけているとき、地面に落ちているときやインベントリにあるとき、そして額縁防具立てに持たせたときなどに使用される。幾つかのブロックはブロック情報 (Block states) に合わせて複数のモデルを持つ。モデルファイルとブロック情報ファイルはともに .json 形式のファイルで、それぞれ model フォルダと blockstates フォルダに保存されている。インベントリ内におけるアイコンもこれらのファイルでできている。

ブロック状態[編集 | ソースを編集]

ドアが開閉するように、ブロックの中には幾つかのバリエーションや状態(variant)を持つものがある。そのため、各ブロックには独自のブロック状態ファイルがあり、assets/minecraft/blockstates に保存されている。このファイルはあらかじめブロック状態の組み合わせをリストして対応するモデルにリンクする"variants"と各ブロック状態ごとに使用するモデルを決める"multipart"がある。"multipart"の場合、複数のモデルを重ね合わせることができる。これらのファイルは元々の名前から変更することはできない。

  • Nbtsheet.png ルートタグ。
    • Nbtsheet.png variants: ブロックのすべての variant。
      • Nbtsheet.png A variant: variant の名前。ここに関連するブロック状態を入力する。複数入力することができ、その場合カンマで区切られる。元々1つだけのブロックは "" ( 1.12.2 までは "normal" )となる。それぞれの variant は1つもしくは複数のモデルを持つことができ、それらのプロパティを含む。複数のモデルを設定する場合は[]で囲む。この場合、それらの中からランダムに選ばれ、各オプションは別々の Nbtsheet.png タグで指定される。
        • Nbtsheet.png A model: 1つのモデルのプロパティ。同じ variant に複数のモデルを使用している場合に用いる。
          • Nbtsheet.png model: ブロックのモデルファイルのパス。assets/minecraft/models から選び、block/モデルファイル のように書く[1]
          • Nbtsheet.png x: x軸のローテーション。90度単位で設定する必要がある。
          • Nbtsheet.png y: y軸のローテーション。90度単位で設定する必要がある。
          • Nbtsheet.png uvlock: true もしくは false(デフォルト)に設定できる。true にすると、上記の Nbtsheet.png xNbtsheet.png y タグでテクスチャがローテーションしない。
          • Nbtsheet.png weight: モデルが適用される確率。デフォルトでは1 (=100%) である。同じ variant に複数のモデルを設定している場合は、個々のモデルの weight を全てのモデルの weight の合計で割ることによって確率が計算される(例えば、3つのモデルを設定していて、それぞれの weight が 1,1,2 だった場合、それらの合計は 4(1 + ! + 2) である。各モデルが適用される確率は 4:1/4、1/4、2/4、もしくは 25%、25%、50% である)
        • Nbtsheet.png model: ブロックのモデルファイルのパス。assets/minecraft/models から選び、block/モデルファイル のように書く[1]
        • Nbtsheet.png x: x軸のローテーション。90度単位で設定する必要がある。
        • Nbtsheet.png y: y軸のローテーション。90度単位で設定する必要がある。
        • Nbtsheet.png uvlock: true もしくは false(デフォルト)に設定できる。true にすると、上記の Nbtsheet.png xNbtsheet.png y タグでテクスチャがローテーションしない。
    • Nbtsheet.png multipart: variant の代わりに用いる。ブロック状態に基づいて複数のモデルを組み合わせることができる。
      • Nbtsheet.png A case ブロック状態。その場合でモデルを適用するかを決定する。
        • Nbtsheet.png when: モデルを適用するために必要なブロック状態のリスト。設定していなければ常時適用される。
          • Nbtsheet.png OR: これに含まれている case のどれかに一致する場合、モデルが適用される。他の case と併用することはできない。
            • Nbtsheet.png A condition case のリスト。全て一致する必要がある。
              • Nbtsheet.png A case ブロック情報の一つに一致する単一の case。|で区切ることで複数の case を設定できる。
          • Nbtsheet.png A case ブロック情報の一つに一致する単一の case。|で区切ることで複数の case を設定できる。Nbtsheet.png OR: タグとは併用できない。
        • Nbtsheet.png apply: 適用するモデル。1つもしくは、[]で囲うことで複数のモデルを持つことができ、それらのプロパティを含む。複数のモデルを設定するとそれらの中からランダムに選ばれ、各オプションは別々の Nbtsheet.png タグで指定される。
          • Nbtsheet.png A model: モデルのプロパティ。同じ variant に複数のモデルを設定する場合に用いる。
            • Nbtsheet.png model: ブロックのモデルファイルのパス。assets/minecraft/models から選び、block/モデルファイル のように書く[1]
            • Nbtsheet.png x: x 軸のローテーション。90度単位で設定しなければならない。
            • Nbtsheet.png y: y 軸のローテーション。90度単位で設定しなければならない。
            • Nbtsheet.png uvlock: true もしくは false(デフォルト)に設定できる。true にすると、上記の Nbtsheet.png xNbtsheet.png y タグでテクスチャがローテーションしない。
            • Nbtsheet.png weight: モデルが適用される確率。デフォルトでは1 (= 100%) である。同じ variant に複数のモデルを設定している場合は、個々のモデルの weight を全てのモデルの weight の合計で割ることによって確率が計算される(例えば、3つのモデルを設定していて、それぞれの weight が 1,1,2 だった場合、それらの合計は 4(1 + ! + 2) である。各モデルが適用される確率は 4:1/4、1/4、2/4、もしくは 25%、25%、50% である)
          • Nbtsheet.png model: ブロックのモデルファイルのパス。assets/minecraft/models から選び、block/モデルファイル のように書く[1]
          • Nbtsheet.png x: x 軸のローテーション。90度単位で設定しなければならない。
          • Nbtsheet.png y: y 軸のローテーション。90度単位で設定しなければならない。
          • Nbtsheet.png uvlock: true もしくは false(デフォルト)に設定できる。true にすると、上記の Nbtsheet.png xNbtsheet.png y タグでテクスチャがローテーションしない。
  1. a b c d 1.12.2 まではassets/minecraft/models/blockフォルダから選び、モデルファイル という書き方をする。block フォルダに追加のフォルダがあれば、追加のフォルダ/モデルファイル という書き方になる。
"uvlock": true "uvlock": false
Uvlock true.png Uvlock false.png

例:壁に立てた松明[編集 | ソースを編集]

松明は複数のvariantを持ち、地面もしくは壁に4方向に設置することができる。この例はassets/minecraft/blockstatesにあるwall_torch.jsonファイルから取得したものである。

{
    "variants": {
        "facing=east": { "model": "block/wall_torch" },
        "facing=south": { "model": "block/wall_torch", "y": 90 },
        "facing=west": { "model": "block/wall_torch", "y": 180 },
        "facing=north": { "model": "block/wall_torch", "y": 270 }
    }
}

松明は地面に立てる他に、ブロックの側面すべてに設置できる。これにより、各側面に1つ、計4つのvariantが必要である。それらは"facing=east""facing=west""facing=south"、そして"facing=north"である。いずれも"wall_torch"のモデルを使用していて、"y"軸を中心に90度ずつローテーションさせて異なる面に設置される。

例: 草ブロック[編集 | ソースを編集]

草ブロックは2つのvariantを持ち、最初のモデルは4つの異なるモデルを持つ。この例は、assets/minecraft/blockstatesにあるgrass_block.jsonファイルから取得したものである。

{
    "variants": {
        "snowy=false": [
            { "model": "block/grass_normal" },
            { "model": "block/grass_normal", "y": 90 },
            { "model": "block/grass_normal", "y": 180 },
            { "model": "block/grass_normal", "y": 270 }
        ],
        "snowy=true":  { "model": "block/grass_snowed" }
    }
}

雪の被っていない草ブロック ("snowy=false")は、4つのモデルを持つ。それらはすべて同じモデルであるが、90度の倍数でローテーションさせている。いずれにもweightタグは使用されていないので、それぞれ25%の確率で適用される。

例: オークのフェンス[編集 | ソースを編集]

オークのフェンスはmultipart形式が使用されている。この例はassets/minecraft/blockstatesにあるoak_fence.jsonから取得したものである。

{
    "multipart": [
        {   "apply": { "model": "block/oak_fence_post" }},
        {   "when": { "north": "true" },
            "apply": { "model": "block/oak_fence_side", "uvlock": true }
        },
        {   "when": { "east": "true" },
            "apply": { "model": "block/oak_fence_side", "y": 90, "uvlock": true }
        },
        {   "when": { "south": "true" },
            "apply": { "model": "block/oak_fence_side", "y": 180, "uvlock": true }
        },
        {   "when": { "west": "true" },
            "apply": { "model": "block/oak_fence_side", "y": 270, "uvlock": true }
        }
    ]
}

最初の、postのモデルは常時適用されるが、他のものは特定の条件が満たされたときのみ使用される。sideは隣に異なるブロックがある場合にのみ適用される。1つのpostモデルと全ての側面にsideモデルがあるので、それらをローテーションさせることにより、必要なモデル数を2つに減らすことができる。1.8で5つのモデルと16のvariantが使用されていたことと比べるとこれは大きな改善である。

例: レッドストーンワイヤー[編集 | ソースを編集]

レッドストーンワイヤーのモデルはmultipart形式を使用している。この例はassets/minecraft/blockstatesにあるredstone_wire.jsonから取得したものである。

{
    "multipart": [
        {   "when": { "OR": [
                {"north": "none", "east": "none", "south": "none", "west": "none"},
                {"north": "side|up", "east": "side|up" },
                {"east": "side|up", "south": "side|up" },
                {"south": "side|up", "west": "side|up"},
                {"west": "side|up", "north": "side|up"}
            ]},
            "apply": { "model": "block/redstone_dust_dot" }
        },
        {   "when": { "OR": [
                { "north": "side|up" },
                { "north": "none", "east": "none", "south": "side|up", "west": "none" }
            ]},
            "apply": { "model": "block/redstone_dust_side0" }
        },
        {   "when": { "OR": [
                { "south": "side|up" },
                { "north": "side|up", "east": "none", "south": "none", "west": "none" }
            ]},
            "apply": { "model": "block/redstone_dust_side_alt0" }
        },
        {   "when": { "OR": [
                { "east": "side|up" },
                { "north": "none", "east": "none", "south": "none", "west": "side|up" }
            ]},
            "apply": { "model": "block/redstone_dust_side_alt1", "y": 270 }
        },
        {   "when": { "OR": [
                { "west": "side|up" },
                { "north": "none", "east": "side|up", "south": "none", "west": "none" }
            ]},
            "apply": { "model": "block/redstone_dust_side1", "y": 270 }
        },
        {   "when": { "north": "up" },
            "apply": { "model": "block/redstone_dust_up" }
        },
        {   "when": { "east": "up" },
            "apply": { "model": "block/redstone_dust_up", "y": 90 }
        },
        {   "when": { "south": "up" },
            "apply": { "model": "block/redstone_dust_up", "y": 180 }
        },
        {   "when": { "west": "up" },
            "apply": { "model": "block/redstone_dust_up", "y": 270 }
        }
    ]
}

このモデルはそのときのブロック状態に応じて変化する。最初の条件では、redstone_dotモデルを追加する必要がある。これは4つのsideが全て"none"になっているか、角を形成する2つのsideの両方がupまたはsideに設定されている必要がある。

最後のcaseは"west""up"かどうかを尋ねる1つの条件のみをテストし、そうであればredstone_upを適用する。

ブロックのモデル[編集 | ソースを編集]

assets/minecraft/models/blockフォルダは指定されたすべてのvariantを保持する。ファイルの名前は自由に変更することができるが、blockstatesフォルダで使用しているものと一致させる必要がある。

  • Nbtsheet.png The root tag
    • Nbtsheet.png parent: assets/minecraft/models内の別のモデルを適用する。block/モデルファイルのように書く。"parent""elements"が併用されている場合、後者のelementが上書きする形で適用される。
      • "builtin/generated"を設定すれば設置したときのモデルとは別にアイコンを設定できる。最初のレイヤーのみが適用され、ローテーションはblockstatesでのみ行われることに注意。
    • Nbtsheet.png ambientocclusion: ambient occlusionを使うかどうか(下図参照。デフォルトではtrue)
    • Nbtsheet.png display: アイテムとして表示する場所など
      • Nbtsheet.png thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, or fixed: モデルの表示する場所。回転(rotation)、平行移動(translation)、表示倍率(scale)を保持する。fixedは額縁内での表示、残りは名前の状態を示す。translationはrotationの前に適用される。
        • Nbtsheet.png rotation: [x, y, z]の軸を中心にモデルを回転させる。
        • Nbtsheet.png translation: [x, y, z]の分だけモデルを平行移動させる。値が80を超えた場合、描画されるのは80の分のみである。値が-80未満の場合、描画されるのは-80の分だけである。
        • Nbtsheet.png scale: モデルの表示倍率(scale)。[x, y, z]の倍率で設定される。値が4を超えた場合、描画されるのは4の分だけである。
    • Nbtsheet.png textures: モデルに適用されるテクスチャ。assets/minecraft/textures内から選ぶか他の変数を使用できる。前者の場合はblock/テクスチャファイルのように書く(1.12.2 までは blocks フォルダ)。
      • Nbtsheet.png particle: パーティクルに使用するテクスチャ。ブロックを破壊したときに使用される。
        注意:modelフォルダにないブロックのパーティクルは変更できない。
      • Nbtsheet.png A texture variable: テクスチャの変数(#で始まるラベル)を指定する
    • Nbtsheet.png elements: モデルのすべてのキューブ(element)。立方体、直方体、四角形の平面のみ使用できる。
      • Nbtsheet.png An element
        • Nbtsheet.png from: キューブの座標で、[x, y, z]で表される。-16から32の範囲内である必要がある。tofrom の差がキューブのサイズとなる。
        • Nbtsheet.png to: from にサイズを足したもの。from と同様に[x, y, z]の形で表され、値は-16から32である必要がある。
        • Nbtsheet.png rotation: elementの回転
          • Nbtsheet.png origin: [x, y, z]の座標に従って、回転の中心を設定する。デフォルトでは[8, 8, 8]である。
          • Nbtsheet.png axis: 回転の軸。"x", "y" 、もしくは"z"のどれかで指定する。
          • Nbtsheet.png angle: 回転の角度。45度から-45度が設定できる。22.5度間隔でなければならない。デフォルトでは0である。
          • Nbtsheet.png rescale: ブロック全体で面をスケールするかどうか。trueかfalseに設定できる。デフォルトではfalseである。
        • Nbtsheet.png shade: 影を描画するかどうか(デフォルトではtrue)
        • Nbtsheet.png faces: キューブの面。記述されていなければ描画されない。
          • Nbtsheet.png down, up, north, south, west or east: 面のプロパティ
            • Nbtsheet.png uv: テクスチャを適用する範囲。[x1, y1, x2, y2]はその座標である。設定されていなければデフォルトの値が適用される。 x1x2の値を入れ換えると (例えば、0, 0, 16, 16から16, 0, 0, 16にすると)テクスチャが反転する。UVは任意であり、設定されていなければelementのサイズに基づいて自動的に生成される。
            • Nbtsheet.png texture: テクスチャ。#の付いた変数で指定する。
            • Nbtsheet.png cullface: ここで指定された位置にブロックが他のブロックと接触した場合、その面の描画をしない。 down, up, north, south, west,もしくはeastに設定できる。また、どの面が光量を使用して照らされるかを指定でき、設定されていなければデフォルトのものになる。
            • Nbtsheet.png rotation: 適用したテクスチャを回転させる。0、90、180、270度で設定できる。デフォルトでは0である。rotationはテクスチャのどの部分が使用されるかには影響しない。代わりに選択されたテクスチャの頂点の順列になる(暗黙的に、もしくは明確にuvで選択されている)。
            • Nbtsheet.png tintindex: tintindexを使用して色をつけるかどうか。バイオームカラーなどがこれにあたる。これはプログラムに直接書き込まれているため変更できない。デフォルトでは染色が使用されないため、どの番号でも使用できる。特定のブロックにしか使われず、それ以外のブロックでこれを設定しても反映されない。

注意:1.13 から、エンティティモデルを使用したブロックにもモデルファイルが追加されたが、現時点ではNbtsheet.png particleのみ有効である。

"ambientocclusion": false "ambientocclusion": true
Ambientoccluison true.png Ambientocclusion false.png
"ambientocclusion"の比較。比較として隣にtrueにしたシルバーフィッシュ入りの石を並べた。falseにした石が少し明るく見える。

例:立てた松明[編集 | ソースを編集]

分かりやすくするためにここでは、地面に立てた松明のみ説明する。これはtorch.jsonnormal_torch.jsonによってできており、assets/minecraft/models/blockのフォルダに存在する。

template_torch.json
{
    "ambientocclusion": false,
    "textures": {
        "particle": "#torch"
    },
    "elements": [
        {   "from": [ 7, 0, 7 ],
            "to": [ 9, 10, 9 ],
            "shade": false,
            "faces": {
                "down": { "uv": [ 7, 13, 9, 15 ], "texture": "#torch" },
                "up":   { "uv": [ 7,  6, 9,  8 ], "texture": "#torch" }
            }
        },
        {   "from": [ 7, 0, 0 ],
            "to": [ 9, 16, 16 ],
            "shade": false,
            "faces": {
                "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" },
                "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" }
            }
        },
        {   "from": [ 0, 0, 7 ],
            "to": [ 16, 16, 9 ],
            "shade": false,
            "faces": {
                "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" },
                "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#torch" }
            }
        }
    ]
}

このモデルは通常の松明やレッドストーントーチに使用される。"elements"タグでは3つのelementが使用される。それぞれのキューブは2面のみ指定されているため、その面だけが描画される。"uv"でテクスチャが適用される範囲を指定する。テクスチャの変数は"#torch"で、パーティクルとキューブに使用されている。

torch.json
{
    "parent": "block/template_torch",
    "textures": {
        "torch": "block/torch"
    }
}

このファイルは地面に立てられた松明のモデルを表す。これは既に定義された立てられた松明のモデルを読み込み、torch.jsonのすべてのプロパティを継承する。このファイルは松明のテクスチャを指定するのみである。テクスチャ"torch_on"は変数"torch"(#除く)に割り当てられ、パーティクルやキューブに用いられる。

例: ほとんどのブロック[編集 | ソースを編集]

この例では、Minecraftのほとんどの通常ブロックの基本モデルについて記述する。これらのブロックはすべて同じ基本モデルを使用し、松明のようにテクスチャを適用する。 このモデルはcube.jsonと定義され、assets/minecraft/models/blockフォルダ内に保存されている。

{
    "elements": [
        {   "from": [ 0, 0, 0 ],
            "to": [ 16, 16, 16 ],
            "faces": {
                "down":  { "texture": "#down", "cullface": "down" },
                "up":    { "texture": "#up", "cullface": "up" },
                "north": { "texture": "#north", "cullface": "north" },
                "south": { "texture": "#south", "cullface": "south" },
                "west":  { "texture": "#west", "cullface": "west" },
                "east":  { "texture": "#east", "cullface": "east" }
            }
        }
    ]
}

"cullface": "down"を使用すると、ブロックの下に別のブロックが存在する場合、その間は底面が描画されない。同じことが他の面にも適用される。

例:苗木系ブロック[編集 | ソースを編集]

この例では、全ての苗木や枯れ木などの植物系ブロックの基本モデルについて記述する。モデルはcross.jsonで、テクスチャはそれぞれの苗木のモデル(例えばoak_sapling.json)で指定される。いずれもassets/minecraft/models/blockフォルダに保存されている。

{
    "ambientocclusion": false,
    "textures": {
        "particle": "#cross"
    },
    "elements": [
        {   "from": [ 0.8, 0, 8 ],
            "to": [ 15.2, 16, 8 ],
            "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
            "shade": false,
            "faces": {
                "north": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" },
                "south": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }
            }
        },
        {   "from": [ 8, 0, 0.8 ],
            "to": [ 8, 16, 15.2 ],
            "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
            "shade": false,
            "faces": {
                "west": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" },
                "east": { "uv": [ 0, 0, 16, 16 ], "texture": "#cross" }
            }
        }
    ]
}

苗木のモデルは2つの平面で構成され、それぞれ45度ローテーションさせている。したがって、originとaxisは特定の値にセットされている。angleは45度、"rescale"trueにセットされている。後者の場合、ローテーション前の軸上でモデルがスケールされ、ローテーション前と同じ空間を占める(比較画像参照)。

"rescale": true "rescale": false
Block model rescale true.png Block model rescale false.png

アイテムのモデル[編集 | ソースを編集]

アイテムのモデルはブロックと違い、1つのアイテムに複数のモデルを適用することはできない。モデルのファイルはassets/minecraft/models/itemのフォルダに存在する。モデルの名前は直接コードに組み込まれており、変更することはできない。

  • ルートタグ
    • Nbtsheet.png parent: ここで指定された別のモデルを読み込み、使用する。モデルはassets/minecraft/models内から選び、item/モデルのファイルのように書く。 "parent""elements"の両方が存在する場合、後者の"elements"が前者の"elements"を上書きする形で用いられる。
    • Nbtsheet.png textures: モデルに使うテクスチャ。assets/minecraft/texturesから指定するか、別のテクスチャ変数を用いる。
      • Nbtsheet.png layer#: アイテムのパスで指定する。Nbtsheet.png parent"item/generated" としたときのみ有効で、インベントリに表示するアイコンを指定する。通常は1つだけだがスポーンエッグのように複数のlayerを持つものもある。この数はアイテムごとに決まっている。
      • Nbtsheet.png particle: パーティクルに用いるテクスチャ。食べ物を食べるときやバリアブロックのパーティクルに用いられる(バリアブロックを破壊する場合、常にitems/barrier.pngが使用される)。それ以外の場合は"layer0"が使用される。
      • Nbtsheet.png A texture variable: テクスチャの変数を決める。#任意の名前のように書く。
    • Nbtsheet.png elements: 3Dモデルにする場合、キューブ(element)の情報をここにまとめる。立方体、直方体、もしくは四角形の平面のみ使用できる。
      • Nbtsheet.png An element
        • Nbtsheet.png from: キューブの座標で、[x, y, z]の形で指定する。値は-16から32でなければならない。toとfromの差がキューブのサイズとなる。
        • Nbtsheet.png to: from にサイズを足したもの。from と同様に[x, y, z]の形で指定する。値は-16から32でなければならない。
        • Nbtsheet.png rotation: キューブの回転(rotation)
          • Nbtsheet.png origin: 回転の中心点。[x, y, z]の形で指定する。デフォルトでは[8, 8, 8]である。
          • Nbtsheet.png axis: 回転の軸。"x", "y""z"のいずれかである。
          • Nbtsheet.png angle: 回転させる角度。-45度から45度で、22.5度刻み。デフォルトでは0である。
        • Nbtsheet.png faces: キューブの面。指定しなかった場合、描画されない。<
          • Nbtsheet.png down, up, north, south, west or east: それぞれで指定された面のプロパティ。<
            • Nbtsheet.png uv: テクスチャを使用する範囲。[x1, y1, x2, y2]はその座標である。指定しなかった場合、キューブの位置に応じて設定される。0以下もしくは16以上になるとテクスチャがおかしくなる。xまたはyの値を入れ換えるとテクスチャも反転する
            • Nbtsheet.png texture: 面に割り当てるテクスチャ。ファイル名ではなく、#で始まる変数を用いる。
            • Nbtsheet.png cullface: 指定した面に他のブロックが隣接した場合、その面を描画しなくする。downupnorthsouthwesteastがある。
            • Nbtsheet.png rotation: テクスチャを回転させる。回転は90度ずつである。
            • Nbtsheet.png tintindex: tintindexを使用するかどうか。ポーションやスポーンエッグなどの色がこれにあたる。これはプログラムに直接組み込まれている。デフォルトでは使われていないため、任意の値で用いることができる(ただし、スポーンエッグの場合、0は最初の色、1は2番目の色を使用している)。これはポーションなど、一部のアイテムにしか使えない。
    • Nbtsheet.png display: インベントリや手に持ったとき、地面に落ちているときなどの表示
      • Nbtsheet.png thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, or fixed: アイテムモデルの表示位置。回転(rotation)や平行移動(translation)、表示倍率(scale)は特定の状況に用いられる。fixedは額縁内における表示である。
        • Nbtsheet.png rotation: モデルを回転させる。[x, y, z]はその軸である。
        • Nbtsheet.png translation: アイテムモデルの相対的な表示位置。[x, y, z]はその座標である。-80から80まで有効である。
        • Nbtsheet.png scale: アイテムモデルの表示倍率。[x, y, z]はその軸である。4まで有効である。
    • Nbtsheet.png overrides: アイテムタグを持っている場合、それに応じて別のモデルを指定することができる
      • Nbtsheet.png a case 単一のケース
        • Nbtsheet.png predicate: ケースを保持する。
          • Nbtsheet.png a case 単一のタグ。item tagsについては下記を参照。
        • Nbtsheet.png model: 使用するモデルのパス。assets/minecraft/models/を出発地点とし、item/モデルファイルのように書く。ファイルの位置はitemでなくても構わない。

アイテムタグ[編集 | ソースを編集]

一部のアイテムは状況に応じてタグ付けができ、1つのアイテムに複数のモデルを使用することができる。下記はそのリストである。

  • "angle": コンパスに用いられる。現在の角度を示す。値は0~1の間である。
  • "blocking": 盾に用いられる。盾を構えているかどうかに用いられる。構えている状態なら、1である。
  • "broken": エリトラに用いられる。1のとき、エリトラが壊れている状態である。
  • "cast": 釣竿に用いられる。竿を振ったとき、1である。
  • "cooldown": コーラスフルーツとエンダーパールに用いられる。コーラスフルーツを食べた後やエンダーパールを投げた後の残りクールダウンを表す。値は0~1の間である。
  • "damage": 耐久値のあるアイテムに用いられる。ただし、防具には使用できない。0から1の間の値をとる。
  • "damaged": 耐久値のあるアイテムに用いられる。ただし、防具には使用できない。こちらは耐久値を消費しているかどうかの判定に用いられる。耐久タグがついてる場合、0ではない、"damage"タグがついているかもしれない。
  • "lefthanded": 左利き用。ただし、オフハンド用ではない。
  • "pull": 弓の引き具合。0から1の値をとる。
  • "pulling": 弓を引いているかどうか。引いていれば1になる。
  • "time": 時計に用いられる。現在の時間を表す。値は0~1の間である。
  • "throwing":トライデントに用いられる。投げる際(腕を掲げているとき)に 1 になる。
  • "custom_model_data":すべてのアイテムに適用することができる。NBT Nbtsheet.png CustomModelDataに対応して別のモデルを適用することができる。ここで指定した数字以降に適用される。1~99999999が指定可能。

例: 松明[編集 | ソースを編集]

この例ではアイテムとしての松明を記述する。モデルのファイルはtorch.jsonで、assets/minecraft/models/itemに存在する。

File: torch.json

{
    "parent": "item/generated",
    "textures": {
        "layer0": "block/torch"
    },
    "display": {
        "thirdperson": {
            "rotation": [ -90, 0, 0 ],
            "translation": [ 0, 1, -3 ],
            "scale": [ 0.55, 0.55, 0.55 ]
        },
        "firstperson": {
            "rotation": [ 0, -135, 25 ],
            "translation": [ 0, 4, 2 ],
            "scale": [ 1.7, 1.7, 1.7 ]
        }
    }
}

"parent"タグでは"item/generated"を使用している。そのため、アイテムとしてのモデルには2Dグラフィックが使用される。アイコンは"layer0"で指定され、ブロックモデルで使用しているテクスチャもアイテムのアイコンに利用できる。松明のレイヤーは1つのみである。松明を一人称視点や三人称視点で視る場合、それぞれでモデルを回転させたり移動させたりスケーリングさせる必要がある。

例: 釣竿[編集 | ソースを編集]

この例では、1.9からの釣竿について記述する。モデルのファイルはfishing_rod.jsonであり、assets/minecraft/models/item内に存在する。

{
    "parent": "item/handheld_rod",
    "textures": {
        "layer0": "item/fishing_rod_uncast"
    },
    "overrides": [
        {
            "predicate": {
                "cast": 1
            },
            "model": "item/fishing_rod_cast"
        }
    ]
}

このモデルでは、釣竿を振った場合、通常の釣竿の代わりに"item/fishing_rod_cast"モデルが表示される。

歴史[編集 | ソースを編集]

Java Edition
1.7.213w36a花が草のようにランダムに中心からずれるようになった。
1.814w06aブロックのモデルが変更できるようになった。
14w07aモデルフォーマットが書き換えられた。「planes」だけでなく「cube」も追加された。また、物体の回転も1つにつき1方向22.5度刻みに制限された。
14w11a固体ブロックの内部が真っ黒にならなくなった。
14w11b一般的なブロックが事前定義された形状ではなくモデルを読み込むようになった。
2014年4月2日TheMogMinerで、今後のモデルフォーマットの変更について投稿された。
14w17a残りのほとんどの静的ブロックをモデル形式に変換。
回転によるUVの詳細を保持する"rotateVariantTextures"を追加。
14w25aUV定義からdirectional属性が削除され、明治的なテクスチャ参照に置き換えられた。"textureFacing"は、ハッシュ記号(#)の前に"texture"パラメーターが付いた形に置き換えられた。
"useAmbientOcclusion"の名前が"ambientocclusion"に変更された。
"rotateVariantTextures"の名前が"UV lock"に変更された。
"cull"の名前が"cullface"に変更された。
回転が助長になり、1つの軸上でのみ発生することがより明確になった。例として、"cross"モデルの2つの面のうち1つの面の回転は次のようになる:"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
code>models/blocks/meshesフォルダが削除され、モデルファイルはmodels/blockに保存されるようになった。
blockstatesフォルダが追加された。これは以前models/blockフォルダであった。
アイテムのモデルが変更できるようになった。
14w27aブロックの状態名が、内部データをよりよく反映するデータに置き換えられた。一部のブロックについては、まだすべてのデータは反映されていない。将来のバージョンでは、数値データの値が完全にブロック状態のデータに置き換えられた際に、実際に保存されているデータを使用するように切り替える予定である。
14w27bブロック状態ファイルがランダムモデルが可能なモデルの配列に対応するようになった。
14w30aアイテムモデルに"builtin/entity"が追加された。
1.8.2pre5"translation"タグの値が-24から24でなければならなくなった。
"scale"タグの値が4以下でなければならなくなった。
1.915w31aUVが任意になり、指定されていない場合elementの位置に基づいて自動的に生成されるようになった。
ダメージ量、アイテムの状態、利き手で異なるアイテムのモデルとテクスチャを使用できるようになった。これはコンパスや時計、そして耐久値を持つすべてのアイテムに働く。また、弓と釣竿も追加のタグを持つようになった。
フェンスのようにブロック状態に基づいてモデルを重ねることができるようになった。これにより、300近くのモデルが削減された。
ブロックモデルのJSONの記述が厳しくなり、引用符(")で挟まれていない項目は無視されるようになった。
"display"タグのデフォルトが変更され、"thirdperson""firstperson"はそれぞれ"thirdperson_righthand""thirdperson_lefthand""firstperson_righthand""firstperson_lefthand"に置き換えられた。
"parent"タグと"element"タグが共存可能になった。しかし、この場合上位のelementタグがすべてのelementを上書きしていた。
設定から代替ブロックが削除された。