モデル

提供: Minecraft Wiki
移動先: 案内検索
この記事の内容は翻訳されていません。
あなたが内容を翻訳してみませんか?

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

ブロック情報[編集 | ソースを編集]

一部のブロックには幾つかのバリエーションがある(開閉するドアなど)。そのため、各ブロックには独自のブロック情報ファイルがあり、既存の variant をすべてリストし、対応するモデルにリンクする。ブロックは同時に複数のモデルの集合体にもなり得る。この場合、"multipart" と呼ばれる。モデルはブロック情報に応じて使用される。ファイルは assets/minecraft/blockstates に保存されている。ファイルはその名前に基づいて直接使用されるため、既存のものとは別の名前を持つものは影響しない。

  • Nbtsheet.png ルートタグ
    • Nbtsheet.png variants: ブロックのすべての variant
      • Nbtsheet.png A variant: variant の名前。カンマで区切られた関連ブロックの状態で構成される。variant が1つのブロックには normal となる。それぞれの variant は"1つのモデル"もしくは"複数のモデル"を持つことができ、それらのプロパティを含む。複数のモデルを設定するとそれらの中からランダムに選ばれ、各オプションは別々の Nbtsheet.png タグで指定される。
        • Nbtsheet.png A model: 1つのモデルのプロパティ。同じ variant に複数のモデルを使用している場合に用いる。
          • Nbtsheet.png model: ブロックのモデルファイルのパス。assets/minecraft/models/block で始まる。
          • 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 で始まる。
        • 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: モデルを適用するために必要な case のリスト。設定していなければ常時適用される。
          • 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で始まる。
            • 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 で始まる。
          • Nbtsheet.png x: x 軸のローテーション。90度単位で設定しなければならない。
          • Nbtsheet.png y: y 軸のローテーション。90度単位で設定しなければならない。
          • Nbtsheet.png uvlock: true もしくは false(デフォルト)に設定できる。true にすると、上記の Nbtsheet.png xNbtsheet.png y タグでテクスチャがローテーションしない。
"uvlock": true "uvlock": false
Uvlock true.png Uvlock false.png

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

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

File: torch.json

{
    "variants": {
        "facing=up": { "model": "normal_torch" },
        "facing=east": { "model": "normal_torch_wall" },
        "facing=south": { "model": "normal_torch_wall", "y": 90 },
        "facing=west": { "model": "normal_torch_wall", "y": 180 },
        "facing=north": { "model": "normal_torch_wall", "y": 270 }
    }
}

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

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

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

File: grass.json

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

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

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

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

{
    "multipart": [
        {   "apply": { "model": "oak_fence_post" }},
        {   "when": { "north": "true" },
            "apply": { "model": "oak_fence_side", "uvlock": true }
        },
        {   "when": { "east": "true" },
            "apply": { "model": "oak_fence_side", "y": 90, "uvlock": true }
        },
        {   "when": { "south": "true" },
            "apply": { "model": "oak_fence_side", "y": 180, "uvlock": true }
        },
        {   "when": { "west": "true" },
            "apply": { "model": "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": "redstone_dot" }
        },
        {   "when": { "OR": [
                { "north": "side|up" },
                { "north": "none", "east": "none", "south": "side|up", "west": "none" }
            ]},
            "apply": { "model": "redstone_side0" }
        },
        {   "when": { "OR": [
                { "south": "side|up" },
                { "north": "side|up", "east": "none", "south": "none", "west": "none" }
            ]},
            "apply": { "model": "redstone_side_alt0" }
        },
        {   "when": { "OR": [
                { "east": "side|up" },
                { "north": "none", "east": "none", "south": "none", "west": "side|up" }
            ]},
            "apply": { "model": "redstone_side_alt1", "y": 270 }
        },
        {   "when": { "OR": [
                { "west": "side|up" },
                { "north": "none", "east": "side|up", "south": "none", "west": "none" }
            ]},
            "apply": { "model": "redstone_side1", "y": 270 }
        },
        {   "when": { "north": "up" },
            "apply": { "model": "redstone_up" }
        },
        {   "when": { "east": "up" },
            "apply": { "model": "redstone_up", "y": 90 }
        },
        {   "when": { "south": "up" },
            "apply": { "model": "redstone_up", "y": 180 }
        },
        {   "when": { "west": "up" },
            "apply": { "model": "redstone_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で始まるか、他の変数を使用できる。
      • Nbtsheet.png particle: パーティクルに使用するテクスチャ。ブロックを破壊したときに使用される。
        注意:modelフォルダにないブロックのパーティクルは変更できない。
      • Nbtsheet.png A texture variable: テクスチャの変数(#で始まるラベル)を指定する
    • Nbtsheet.png elements: モデルのすべての要素(element)。立方体、直方体、四角形の平面のみ使用できる。"parent"とは併用できない。
      • Nbtsheet.png An element
        • Nbtsheet.png from: キューブの始点。座標は[x, y, z]で表され、値は-16から32でなければならない。toとfromの差がキューブのサイズとなる。
        • Nbtsheet.png to: キューブの終点。座標は[x, y, z]で表され、値は-16から32でなければならない。toとfromの差がキューブのサイズとなる。
        • 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を使用して色をつけるかどうか。これはプログラムに直接書き込まれているため変更できない。デフォルトでは染色が使用されないため、どの番号でも使用できる。特定のブロックにしか使われず、それ以外のブロックでこれを設定しても反映されない。
"ambientocclusion": false "ambientocclusion": true
Ambientoccluison true.png Ambientocclusion false.png
"ambientocclusion"の比較。比較として隣にtrueにしたシルバーフィッシュ入りの石を並べた。falseにした石が少し明るく見える。

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

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

File: 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"で、パーティクルとキューブに使用されている。

File: normal_torch.json

{
    "parent": "block/torch",
    "textures": {
        "torch": "blocks/torch_on"
    }
}

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

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

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

File: cube.json

{
    "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フォルダに保存されている。

File: cross.json

{
    "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のフォルダに存在する。モデルの名前は直接コードに組み込まれており、変更することはできない。

  • The root tag
    • Nbtsheet.png parent: ここで指定された別のモデルを読み込み、使用する。パスはassets/minecraft/modelsで始まり、item/モデルのファイルのように書く。 "parent""elements"の両方が存在する場合、後者の"elements"が前者の"elements"を上書きする形で用いられる。
    • Nbtsheet.png textures: モデルに使うテクスチャ。assets/minecraft/texturesから指定するか、別のテクスチャ変数を用いる。
      • Nbtsheet.png layer#: アイテムのパスで指定する。これはインベントリに表示するアイコンを指定するのみである。通常は1つだけだがスポーンエッグのように複数のlayerを持つものがある。しかし、layerの数はアイテムごとに決まっている。"builtin/generated"とセットでのみ有効である。
      • Nbtsheet.png particle: パーティクルに用いるテクスチャ。食べ物を食べるときやバリアブロックのパーティクルに用いられる(バリアブロックを破壊する場合、常にitems/barrier.pngが使用される)。それ以外の場合は"layer0"が使用される。
      • Nbtsheet.png A texture variable: テクスチャの変数を決める。#で始まる。#の後は任意である。
    • Nbtsheet.png elements: モデルの要素(element)。立方体、直方体、もしくは四角形の平面のみ使用でき、"parent"と併用はできない。
      • Nbtsheet.png An element
        • Nbtsheet.png from: キューブの始点。[x, y, z]で座標を指定する。値は-16から32でなければならない、toとfromの差がキューブのサイズとなる。
        • Nbtsheet.png to: キューブの終点。[x, y, z]で座標を指定する。値は-16から32でなければならない、toとfromの差がキューブのサイズとなる。
        • Nbtsheet.png rotation: elementの回転(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]はその座標である。指定しなかった場合、elementの位置に応じて設定される。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でなくても構わない。

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

幾つかのアイテムは追加のタグを利用でき、それに応じて複数のモデルを使用することができる。下記はそのリストである。

  • "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の間である。

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

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

File: torch.json

{
    "parent": "builtin/generated",
    "textures": {
        "layer0": "blocks/torch_on"
    },
    "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"タグでは"builtin/generated"を使用している。そのため、アイテムとしてのモデルには2Dグラフィックが使用される。アイコンは"layer0"で指定され、ブロックモデルで使用しているテクスチャもアイテムのアイコンに利用できる。松明のレイヤーは1つのみであり、それ以上追加することはできない。松明を一人称視点や三人称視点で視る場合、それぞれでモデルを回転させたり移動させたりスケーリングさせる必要がある。

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

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

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

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

History[編集 | ソースを編集]

正式版
1.7.2 13w36a 花が草のようにランダムに中心からずれるようになった。
1.8 14w06a ブロックのモデルが変更できるようになった。
14w07a Rewrote the model format. Instead of having just "planes", it now has "planes" and "cubes". The rotation of objects was also limited to one directional rotation per object in increments of 22.5 degrees.
14w11a Lighting on solid block no longer makes inner sections completely black.
14w11b Generic blocks now load models instead of pre-defined shapes.
April 12, 2014 TheMogMiner posts about upcoming changes to the model format.
14w17a Converted most of the remaining static blocks to the model format.
Added "rotateVariantTextures" to preserve uv details through rotation.
14w25a Removed the directional attribute from the uv definition and replaced it with explicit texture references. "textureFacing" was replaced with "texture" parameter which is prepended with the hash symbol (#).
"useAmbientOcclusion"の名前が"ambientocclusion"に変更された。
"rotateVariantTextures"の名前が"UV lock"に変更された。
"cull"の名前が"cullface"に変更された。
Rotation made more verbose, it is now more clear that it can only occur on a single axis. Example, the rotation for one of the two faces of the "cross" model is now: "rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
models/blocks/meshesフォルダが削除され、モデルファイルはmodels/blockに保存されるようになった。
blockstatesフォルダが追加された。これは以前models/blockフォルダであった。
アイテムのモデルが変更できるようになった。
14w27a Replaced block state names with data which better reflects the internal data. Does not yet reflect all data for some blocks. Will switch to using the actual stored data in a future version when numerical data values are completely dropped in favor of block states.
14w27b The block state files now support an array of models allowing for random models.
14w30a アイテムモデルに"builtin/entity"が追加された。
1.8.2 pre5 "translation"タグの値が-24から24でなければならなくなった。
"scale"タグの値が4以下でなければならなくなった。
1.9 15w31a UVが任意になり、指定されていない場合elementの位置に基づいて自動的に生成されるようになった。
ダメージ量、アイテムの状態、左利きかどうかで異なるアイテムのモデルとテクスチャを使用できるようになった。これはコンパスや時計、そして耐久値を持つすべてのアイテムに働く。また、弓と釣竿も追加のタグを持つようになった。
フェンスのようにブロック状態に基づいてモデルを重ねることができるようになった。これにより、300近くのモデルが削減された。
ブロックモデルのJSONの記述が厳しくなり、引用符(")で挟まれていない項目は無視されるようになった。
"display"タグのデフォルトが変更され、"thirdperson""firstperson"はそれぞれ"thirdperson_righthand""thirdperson_lefthand""firstperson_righthand""firstperson_lefthand"に置き換えられた。
"parent"タグと"element"タグが共存可能になった。しかし、この場合上位のelementタグがすべてのelementを上書きしていた。
設定から代替ブロックが削除された。