ブロックモデル (英:Block models) はゲーム内のすべてのブロックを描画するために使用される。アイテムモデル (Item models) はプレイヤーが持っているときや頭(ヘルメットや帽子のように)につけているとき、地面に落ちているときやインベントリにあるとき、そして額縁や防具立てに持たせたときなどに使用される。幾つかのブロックはブロック情報 (Block states) に合わせて複数のモデルを持つ。モデルファイルとブロック情報ファイルはともに .json
形式のファイルで、それぞれ model
フォルダと blockstates
フォルダに保存されている。インベントリ内におけるアイコンもこれらのファイルでできている。
ブロック状態
ドアが開閉するように、ブロックの中には幾つかのバリエーションや状態(variant)を持つものがある。そのため、各ブロックには独自のブロック状態ファイルがあり、assets/minecraft/blockstates
に保存されている。このファイルはあらかじめブロック状態の組み合わせをリストして対応するモデルにリンクする"variants"と各ブロック状態ごとに使用するモデルを決める"multipart"がある。"multipart"の場合、複数のモデルを重ね合わせることができる。これらのファイルは元々の名前から変更することはできない。
- ルートタグ。
- variants: ブロックのすべての variant。
- A variant: variant の名前。ここに関連するブロック状態を入力する。複数入力することができ、その場合カンマで区切られる。元々1つだけのブロックは
""
( 1.12.2 までは"normal"
)となる。それぞれの variant は1つもしくは複数のモデルを持つことができ、それらのプロパティを含む。複数のモデルを設定する場合は[]
で囲む。この場合、それらの中からランダムに選ばれ、各オプションは別々の タグで指定される。- A model: 1つのモデルのプロパティ。同じ variant に複数のモデルを使用している場合に用いる。
- model: ブロックのモデルファイルのパス。
assets/minecraft/models
から選び、block/モデルファイル
のように書く[1]。 - x: x軸のローテーション。90度単位で設定する必要がある。
- y: y軸のローテーション。90度単位で設定する必要がある。
- uvlock:
true
もしくはfalse
(デフォルト)に設定できる。true
にすると、上記の x と y タグでテクスチャがローテーションしない。 - weight: モデルが適用される確率。デフォルトでは1 (=100%) である。同じ variant に複数のモデルを設定している場合は、個々のモデルの weight を全てのモデルの weight の合計で割ることによって確率が計算される(例えば、3つのモデルを設定していて、それぞれの weight が 1,1,2 だった場合、それらの合計は 4(1 + ! + 2) である。各モデルが適用される確率は 4:1/4、1/4、2/4、もしくは 25%、25%、50% である)
- model: ブロックのモデルファイルのパス。
- model: ブロックのモデルファイルのパス。
assets/minecraft/models
から選び、block/モデルファイル
のように書く[1]。 - x: x軸のローテーション。90度単位で設定する必要がある。
- y: y軸のローテーション。90度単位で設定する必要がある。
- uvlock:
true
もしくはfalse
(デフォルト)に設定できる。true
にすると、上記の x と y タグでテクスチャがローテーションしない。
- A model: 1つのモデルのプロパティ。同じ variant に複数のモデルを使用している場合に用いる。
- A variant: variant の名前。ここに関連するブロック状態を入力する。複数入力することができ、その場合カンマで区切られる。元々1つだけのブロックは
- multipart:
variant
の代わりに用いる。ブロック状態に基づいて複数のモデルを組み合わせることができる。- A case ブロック状態。その場合でモデルを適用するかを決定する。
- when: モデルを適用するために必要なブロック状態のリスト。設定していなければ常時適用される。
- OR: これに含まれている case のどれかに一致する場合、モデルが適用される。他の case と併用することはできない。
- A condition case のリスト。全て一致する必要がある。
- A case ブロック情報の一つに一致する単一の case。|で区切ることで複数の case を設定できる。
- A condition case のリスト。全て一致する必要がある。
- A case ブロック情報の一つに一致する単一の case。|で区切ることで複数の case を設定できる。 OR: タグとは併用できない。
- OR: これに含まれている case のどれかに一致する場合、モデルが適用される。他の case と併用することはできない。
- apply: 適用するモデル。1つもしくは、
[]
で囲うことで複数のモデルを持つことができ、それらのプロパティを含む。複数のモデルを設定するとそれらの中からランダムに選ばれ、各オプションは別々の タグで指定される。- A model: モデルのプロパティ。同じ variant に複数のモデルを設定する場合に用いる。
- model: ブロックのモデルファイルのパス。
assets/minecraft/models
から選び、block/モデルファイル
のように書く[1]。 - x: x 軸のローテーション。90度単位で設定しなければならない。
- y: y 軸のローテーション。90度単位で設定しなければならない。
- uvlock:
true
もしくはfalse
(デフォルト)に設定できる。true
にすると、上記の x と y タグでテクスチャがローテーションしない。 - weight: モデルが適用される確率。デフォルトでは1 (= 100%) である。同じ variant に複数のモデルを設定している場合は、個々のモデルの weight を全てのモデルの weight の合計で割ることによって確率が計算される(例えば、3つのモデルを設定していて、それぞれの weight が 1,1,2 だった場合、それらの合計は 4(1 + ! + 2) である。各モデルが適用される確率は 4:1/4、1/4、2/4、もしくは 25%、25%、50% である)
- model: ブロックのモデルファイルのパス。
- model: ブロックのモデルファイルのパス。
assets/minecraft/models
から選び、block/モデルファイル
のように書く[1]。 - x: x 軸のローテーション。90度単位で設定しなければならない。
- y: y 軸のローテーション。90度単位で設定しなければならない。
- uvlock:
true
もしくはfalse
(デフォルト)に設定できる。true
にすると、上記の x と y タグでテクスチャがローテーションしない。
- A model: モデルのプロパティ。同じ variant に複数のモデルを設定する場合に用いる。
- when: モデルを適用するために必要なブロック状態のリスト。設定していなければ常時適用される。
- A case ブロック状態。その場合でモデルを適用するかを決定する。
- variants: ブロックのすべての variant。
"uvlock": true
|
"uvlock": false
|
例:壁に立てた松明
松明は複数の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フォルダで使用しているものと一致させる必要がある。
- The root tag
- parent:
assets/minecraft/models
内の別のモデルを適用する。block/モデルファイル
のように書く。"parent"
と"elements"
が併用されている場合、後者のelementが上書きする形で適用される。"builtin/generated"
を設定すれば設置したときのモデルとは別にアイコンを設定できる。最初のレイヤーのみが適用され、ローテーションはblockstatesでのみ行われることに注意。
- ambientocclusion: ambient occlusionを使うかどうか(下図参照。デフォルトでは
true
) - display: アイテムとして表示する場所など
- thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, or fixed: モデルの表示する場所。回転(rotation)、平行移動(translation)、表示倍率(scale)を保持する。fixedは額縁内での表示、残りは名前の状態を示す。translationはrotationの前に適用される。
- rotation:
[x, y, z]
の軸を中心にモデルを回転させる。 - translation:
[x, y, z]
の分だけモデルを平行移動させる。値が80を超えた場合、描画されるのは80の分のみである。値が-80未満の場合、描画されるのは-80の分だけである。 - scale: モデルの表示倍率(scale)。
[x, y, z]
の倍率で設定される。値が4を超えた場合、描画されるのは4の分だけである。
- rotation:
- thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, or fixed: モデルの表示する場所。回転(rotation)、平行移動(translation)、表示倍率(scale)を保持する。fixedは額縁内での表示、残りは名前の状態を示す。translationはrotationの前に適用される。
- textures: モデルに適用されるテクスチャ。
assets/minecraft/textures
内から選ぶか他の変数を使用できる。前者の場合はblock/テクスチャファイル
のように書く(1.12.2 まではblocks
フォルダ)。- particle: パーティクルに使用するテクスチャ。ブロックを破壊したときに使用される。
注意:modelフォルダにないブロックのパーティクルは変更できない。 - A texture variable: テクスチャの変数(#で始まるラベル)を指定する
- particle: パーティクルに使用するテクスチャ。ブロックを破壊したときに使用される。
- elements: モデルのすべてのキューブ(element)。立方体、直方体、四角形の平面のみ使用できる。
- An element
- from: キューブの座標で、
[x, y, z]
で表される。-16から32の範囲内である必要がある。to と from の差がキューブのサイズとなる。 - to: from にサイズを足したもの。from と同様に
[x, y, z]
の形で表され、値は-16から32である必要がある。 - rotation: elementの回転
- origin:
[x, y, z]
の座標に従って、回転の中心を設定する。デフォルトでは[8, 8, 8]
である。 - axis: 回転の軸。
"x"
,"y"
、もしくは"z"
のどれかで指定する。 - angle: 回転の角度。45度から-45度が設定できる。22.5度間隔でなければならない。デフォルトでは0である。
- rescale: ブロック全体で面をスケールするかどうか。trueかfalseに設定できる。デフォルトではfalseである。
- origin:
- shade: 影を描画するかどうか(デフォルトでは
true
) - faces: キューブの面。記述されていなければ描画されない。
- down, up, north, south, west or east: 面のプロパティ
- uv: テクスチャを適用する範囲。
[x1, y1, x2, y2]
はその座標である。設定されていなければデフォルトの値が適用される。x1
とx2
の値を入れ換えると (例えば、0, 0, 16, 16
から16, 0, 0, 16
にすると)テクスチャが反転する。UVは任意であり、設定されていなければelementのサイズに基づいて自動的に生成される。 - texture: テクスチャ。
#
の付いた変数で指定する。 - cullface: ここで指定された位置にブロックが他のブロックと接触した場合、その面の描画をしない。
down
,up
,north
,south
,west
,もしくはeast
に設定できる。また、どの面が光量を使用して照らされるかを指定でき、設定されていなければデフォルトのものになる。 - rotation: 適用したテクスチャを回転させる。0、90、180、270度で設定できる。デフォルトでは0である。rotationはテクスチャのどの部分が使用されるかには影響しない。代わりに選択されたテクスチャの頂点の順列になる(暗黙的に、もしくは明確に
uv
で選択されている)。 - tintindex: tintindexを使用して色をつけるかどうか。バイオームカラーなどがこれにあたる。これはプログラムに直接書き込まれているため変更できない。デフォルトでは染色が使用されないため、どの番号でも使用できる。特定のブロックにしか使われず、それ以外のブロックでこれを設定しても反映されない。
- uv: テクスチャを適用する範囲。
- down, up, north, south, west or east: 面のプロパティ
- from: キューブの座標で、
- An element
- parent:
注意:1.13 から、エンティティモデルを使用したブロックにもモデルファイルが追加されたが、現時点では particleのみ有効である。
"ambientocclusion": false
|
"ambientocclusion": true
| |
"ambientocclusion"の比較。比較として隣にtrueにしたシルバーフィッシュ入りの石を並べた。falseにした石が少し明るく見える。 |
例:立てた松明
分かりやすくするためにここでは、地面に立てた松明のみ説明する。これはtorch.json
とnormal_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
|
アイテムのモデル
アイテムのモデルはブロックと違い、1つのアイテムに複数のモデルを適用することはできない。モデルのファイルはassets/minecraft/models/item
のフォルダに存在する。モデルの名前は直接コードに組み込まれており、変更することはできない。
- : ルートタグ
- parent: ここで指定された別のモデルを読み込み、使用する。モデルは
assets/minecraft/models
内から選び、item/モデルのファイル
のように書く。"parent"
と"elements"
の両方が存在する場合、後者の"elements"
が前者の"elements"
を上書きする形で用いられる。 - textures: モデルに使うテクスチャ。
assets/minecraft/textures
から指定するか、別のテクスチャ変数を用いる。- layer#: アイテムのパスで指定する。 parentで
"item/generated"
としたときのみ有効で、インベントリに表示するアイコンを指定する。通常は1つだけだがスポーンエッグのように複数のlayerを持つものもある。この数はアイテムごとに決まっている。 - particle: パーティクルに用いるテクスチャ。食べ物を食べるときやバリアブロックのパーティクルに用いられる(バリアブロックを破壊する場合、常に
items/barrier.png
が使用される)。それ以外の場合は"layer0"が使用される。 - A texture variable: テクスチャの変数を決める。
#任意の名前
のように書く。
- layer#: アイテムのパスで指定する。 parentで
- gui_light: 光の当たる方向。インベントリ上の明るさに影響する。
- side: ブロックのような場合に明るくなる。
- front: アイテムのような平面状のモデルの場合に明るくなる。
- elements: 3Dモデルにする場合、キューブ(element)の情報をここにまとめる。立方体、直方体、もしくは四角形の平面のみ使用できる。
- An element
- from: キューブの座標で、
[x, y, z]
の形で指定する。値は-16から32でなければならない。toとfromの差がキューブのサイズとなる。 - to: from にサイズを足したもの。from と同様に
[x, y, z]
の形で指定する。値は-16から32でなければならない。 - rotation: キューブの回転(rotation)
- origin: 回転の中心点。
[x, y, z]
の形で指定する。デフォルトでは[8, 8, 8]
である。 - axis: 回転の軸。
"x"
,"y"
、"z"
のいずれかである。 - angle: 回転させる角度。-45度から45度で、22.5度刻み。デフォルトでは0である。
- origin: 回転の中心点。
- faces: キューブの面。指定しなかった場合、描画されない。
- down, up, north, south, west or east: それぞれで指定された面のプロパティ。
- uv: テクスチャを使用する範囲。
[x1, y1, x2, y2]
はその座標である。指定しなかった場合、キューブの位置に応じて設定される。0以下もしくは16以上になるとテクスチャがおかしくなる。xまたはyの値を入れ換えるとテクスチャも反転する - texture: 面に割り当てるテクスチャ。ファイル名ではなく、
#
で始まる変数を用いる。 - cullface: 指定した面に他のブロックが隣接した場合、その面を描画しなくする。
down
、up
、north
、south
、west
、east
がある。 - rotation: テクスチャを回転させる。回転は90度ずつである。
- tintindex: tintindexを使用するかどうか。ポーションやスポーンエッグなどの色がこれにあたる。これはプログラムに直接組み込まれている。デフォルトでは使われていないため、任意の値で用いることができる(ただし、スポーンエッグの場合、0は最初の色、1は2番目の色を使用している)。これはポーションなど、一部のアイテムにしか使えない。
- uv: テクスチャを使用する範囲。
- down, up, north, south, west or east: それぞれで指定された面のプロパティ。
- from: キューブの座標で、
- An element
- display: インベントリや手に持ったとき、地面に落ちているときなどの表示
- thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, or fixed: アイテムモデルの表示位置。回転(rotation)や平行移動(translation)、表示倍率(scale)は特定の状況に用いられる。fixedは額縁内における表示である。
- rotation: モデルを回転させる。
[x, y, z]
はその軸である。 - translation: アイテムモデルの相対的な表示位置。
[x, y, z]
はその座標である。-80から80まで有効である。 - scale: アイテムモデルの表示倍率。
[x, y, z]
はその軸である。4まで有効である。
- rotation: モデルを回転させる。
- thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, or fixed: アイテムモデルの表示位置。回転(rotation)や平行移動(translation)、表示倍率(scale)は特定の状況に用いられる。fixedは額縁内における表示である。
- overrides: アイテムタグを持っている場合、それに応じて別のモデルを指定することができる
- a case 単一のケース
- predicate: ケースを保持する。
- a case 単一のタグ。item tagsについては下記を参照。
- model: 使用するモデルのパス。
assets/minecraft/models/
を出発地点とし、item/モデルファイル
のように書く。ファイルの位置はitemでなくても構わない。
- predicate: ケースを保持する。
- a case 単一のケース
- parent: ここで指定された別のモデルを読み込み、使用する。モデルは
アイテムタグ
一部のアイテムは状況に応じてタグ付けができ、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 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.2 | 13w36a | 花が草のようにランダムに中心からずれるようになった。 | |||
1.8 | 14w06a | ブロックのモデルが変更できるようになった。 | |||
14w07a | モデルフォーマットが書き換えられた。「planes」だけでなく「cube」も追加された。また、物体の回転も1つにつき1方向22.5度刻みに制限された。 | ||||
14w11a | 固体ブロックの内部が真っ黒にならなくなった。 | ||||
14w11b | 一般的なブロックが事前定義された形状ではなくモデルを読み込むようになった。 | ||||
2014年4月2日 | TheMogMinerで、今後のモデルフォーマットの変更について投稿された。 | ||||
14w17a | 残りのほとんどの静的ブロックをモデル形式に変換。 | ||||
回転によるUVの詳細を保持する"rotateVariantTextures" を追加。 | |||||
14w25a | UV定義から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.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を上書きしていた。 | |||||
設定から代替ブロックが削除された。 |
ヘルプ | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
メニュー画面 |
| ||||||||||||||||
開発元 | |||||||||||||||||
ゲームのカスタマイズ | |||||||||||||||||
エディション |
| ||||||||||||||||
ゲーム |
| ||||||||||||||||
映画 |
| ||||||||||||||||
書籍 |
| ||||||||||||||||
その他メディア |
| ||||||||||||||||
イベント |
| ||||||||||||||||
公式商品 |
| ||||||||||||||||
その他 |