本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详情…本站文本内容除另有声明外,均在知识共享 署名-非商业性使用-相同方式共享 3.0 协议下提供。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。

故事模式已不受支持。如果您已购买了故事模式,请在6月25日服务器关闭之前下载,否则您将不能下载故事模式。点击此处查看详情。

模型

從 Minecraft Wiki
跳到: 導覽搜尋

方塊模型 用於顯示遊戲裏的所有方塊,而 物品模型 用於顯示在玩家手上、頭上(頭盔欄)、地上、物品欄裡、物品展示框中和盔甲座上的物品。 因為某些方塊有不同的變種, 方塊狀態 用作連接對應狀態的模型。每個模型和方塊狀態擁有各自的 .json 格式文件。用在物品欄的顯示狀態也在這些文件中定義。

方塊狀態[編輯 | 編輯原始碼]

某些方塊擁有不同的變種(例如可以開關的),因此每個方塊有各自的方塊狀態文件來列出所有存在的變種並連接到對應的模型。方塊也可以同時由不同的模型組合,稱為「multipart」。然後模型會根據當前方塊的狀態而被調用。 這些文件儲存在assets/minecraft/blockstates 中。這些文件會根據名稱來直接使用, 因此不同名字的方塊狀態文件不會影響其他的方塊狀態文件。


  • 根標籤

    •  variants:變種列表,列出此方塊的所有變種。

      •  A variant:變種的名字,由逗號分隔相關的方塊狀態組成。只有一個變種的方塊狀態使用"normal"為變種名。每個變種可以擁有單個模型或者模型數組以及它的屬性。如果被設定為數組,將會通過選項在組內隨機選擇一個模型,每個選項都被指定了不同的
        標籤。

        •  A model: 包含模型的屬性,如果不止一個模型用於同一個變種。替代所有在遊戲中指定的模型。

          •  model:指定模型文件的路徑,起始於assets/minecraft/models/block

          •  x:模型相對於x軸的旋轉,90度增量。

          •  y:模型相對於y軸的旋轉,90度增量。

          •  uvlock:可為truefalse(預設)。設定為true將鎖定方塊貼圖的旋轉。這樣貼圖將不會在使用上面的
             x
             y標籤時跟着方塊旋轉。

          •  weight:設定模型在遊戲中被選用的幾率,預設為1(=100%)。如果多於一個模型被用作同一個變種,每個模型被選中的幾率將會為此模型的weight除以所有模型weight的總和。(例如,三個weight分別為1,1和2的模型。他們weight的總和為4(1+1+2)。這三個模型被調用的幾率則分別為1/4,1/4和2/4,也可以說為25%,25%和50%。)

        •  model:指定模型文件的路徑,起始於assets/minecraft/models/block

        •  x:模型相對於x軸的旋轉,90度增量。

        •  y:模型相對於y軸的旋轉,90度增量。

        •  uvlock:可為truefalse(預設)。設定為true將鎖定方塊貼圖的旋轉。這樣貼圖將不會在使用上面的
           x
           y標籤時跟着方塊旋轉。

    •  multipart:取代了
       variants,基於方塊狀態屬性以來組合模型。

      •  A case確定一種情況,並決定應用在這種情況下的模型。

        •  when:為了使模型被應用而必須滿足的情況的列表。當未設定時,模型總是應用的。

          •  OR:如果該標籤包含了的情況中的任意一個情況返回true時匹配。不能同時設定其他情況。

            •  A condition當方塊必須匹配為返回true時的情況列表。

              •  A case在單一情況下方塊匹需配的方塊狀態。它可以設為一個列表,由|來分隔,以便允許多個值匹配。

          •  A case在單一情況下方塊匹需配的方塊狀態。它可以設為一個列表,由|來分隔,以便允許多個值匹配。不能和
             OR標籤同時設定。

        •  apply:決定了模型的應用及其屬性。可以擁有單一模型或者模型數組以及它的屬性。如果被設定為數組,將通過給出的選項隨機選擇一個模型,每個選項都被指定了不同的
          標籤。

          •  A model:包含模型的屬性,如果不止一個模型用於同一個變種。替代所有在遊戲中指定的模型。

            •  model:指定模型文件的路徑,起始於assets/minecraft/models/block

            •  x:模型相對於x軸的旋轉,90度增量。

            •  y:模型相對於y軸的旋轉,90度增量。

            •  uvlock:可為truefalse(預設)。設定為true將鎖定方塊貼圖的旋轉。這樣貼圖將不會在使用上面的
               x
               y標籤時跟着方塊旋轉。

            •  weight:設定模型在遊戲中被選用的幾率,預設為1(=100%)。如果多於一個模型被用作同一個變種,每個模型被選中的幾率將會為此模型的weight除以所有模型weight的總和。(例如,三個weight分別為1,1和2的模型。他們weight的總和為4(1+1+2)。這三個模型被調用的幾率則分別為1/4,1/4和2/4,也可以說為25%,25%和50%。)

          •  model:指定模型文件的路徑,起始於assets/minecraft/models/block

          •  x:模型相對於x軸的旋轉,90度增量。

          •  y:模型相對於y軸的旋轉,90度增量。

          •  uvlock:可為truefalse(預設)。設定為true將鎖定方塊貼圖的旋轉。這樣貼圖將不會在使用上面的
             x
             y標籤時跟着方塊旋轉。
"uvlock": true "uvlock": false
Uvlock true.png Uvlock false.png

示例:火把[編輯 | 編輯原始碼]

火把有若干個變種: 它能被插在地上或牆上,而在牆上時火把還能朝向四個不同方向。以下這個示例取自文件 wall_torch.json,你能在assets/minecraft/blockstates路徑下找到該文件。

File: wall_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"。而火把又能被插在方塊的四個側面上,所以自然又需要四個不同的變種,每個側面都得有一個變種。這四個變種分別叫作"facing=east""facing=west""facing=south" 以及 "facing=north".。四個變種的模型都用的是 "normal_torch_wall" , 但這個模型因 "y" 設定的數值而在y軸方向上旋轉了幾個90度,這樣被插在不同側面上的火把看起來才都十分協調。

示例:草地[編輯 | 編輯原始碼]

草地有兩個變種,第一個變種有四個不同的模型。以下這個示例取自文件 grass.json,你能在 assets/minecraft/blockstates路徑下找到該文件。

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") 擁有四個模型, 這四個模型都使用的是同一個方塊模型,但模型被旋轉了幾個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 }
        }
    ]
}

第一個模型,柵欄樁(the fence post),是一直使用着的,而其他模型只在某些情況下使用。柵欄邊( the sides of the fence)只有在其他方塊與該柵欄相鄰時才出現 。 可柵欄邊是有朝向的,於是柵欄邊的模型就被旋轉了幾個90度來用,這樣的話所需的模型數量就能減至兩個了,一個是柵欄樁,一個是柵欄邊。與在1.8中用到的5個模型、16個變種相比,這算是個相當大的改進了。

示例:紅石線[編輯 | 編輯原始碼]

紅石線模型也使用了 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 }
        }
    ]
}

紅石粉的模型是動態創建的。第一個條件決定了紅石粉東、南、西、北四個方向都不被連接時,或當兩個不相對的面為upside時,redstone_dot模型才被使用。

最後一種情況只檢查一個條件,它檢查west是否為up,如果是,則應用模型 redstone_up

方塊模型[編輯 | 編輯原始碼]

資料夾assets/minecraft/models/block保存所有變種指定的模型文件。 可以更改文件的名稱,但必須對應於方塊狀態文件中使用的名稱。


  • 根標籤

    •  parent:assets/minecraft/models引用其他模型。如果同時設定了"parent""elements",此模型的"elements" 標籤將覆蓋父類模型""parent下的"elements"標籤。
      • 可以設定為"builtin/generated"以使用從指定圖標創建的模型。請注意,僅支持一層,且只能通過方塊狀態文件來實現旋轉。

    •  ambientocclusion:是否使用環境遮擋,預設為 true

    •  display: 保存物品模型於不同位置下的顯示設定。

      •  thirdperson_righthand, thirdperson_lefthand, firstperson_righthand, firstperson_lefthand, gui, head, ground, or fixed: 物品模型於不同位置下的顯示設定。設定分別為旋轉,位移和縮放。 fixed 指的是當被擺放在物品展示框上時,其他的顯示位置如同其名。值得注意的是位移比旋轉優先應用模型。

        •  rotation: 根據 [x, y, z] 格式,使模型相對於對應軸進行旋轉。

        •  translation: 根據 [x, y, z] 格式,使模型相對於對應軸進行移動。若數值大於80,數值則為80。若數值小於-80,數值則為-80。

        •  scale: 根據 [x, y, z] 格式,使模型相對於對應軸進行縮放。若數值大於4,數值則為4。

    •  textures: 模型材質的路徑,起始於assets/minecraft/textures,也可以是另一個材質變量。

      •  particle: 模型的粒子材質。如果你在地獄傳送門,將會使用此材質。注意:所有非模型的方塊的粒子破壞效果為硬編碼。

      •  A texture variable: 定義一個貼圖的名字和此貼圖的文件路徑。

    •  elements: 包含模型的所有"An element",這些元素只能為立方體形態。如果同時設定了"parent""elements",此模型的"elements" 標籤將覆蓋父類模型""parent下的"elements"標籤。

      •  An element

        •  from: 根據 [x, y, z] 格式,指定一個方塊的起始點。數值必須為-16到32之間。

        •  to: 根據 [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"

        •  shade: 是否渲染陰影。可以為"true""false"。預設為"true"

        •  faces: 包含單個"element"的所有面。若有一個面沒有定義,則不渲染此面。

          •  down, up, north, south, west or east: 包含指定面的所有屬性。

            •  uv: 根據 [x1, y1, x2, y2] 格式,指定所使用的貼圖區域。如果沒指定,則預設根據此element的xyz坐標設定。若此element低於0或高於16,則指定的預設貼圖將會不一致。若x1x2坐標對調,貼圖也將會被翻轉(例:從原本的0, 0, 16, 16變為16, 0, 0, 16)。UV為可設定項,若未指定,則會自動根據element的位置生成。

            •  texture: 指定所使用的貼圖變量,變量前加上#。貼圖變量於"A texture variable"定義。

            •  cullface: 指定當前面在指定的面被方塊接觸時,是否不渲染。指定的面可以為:down, up, north, south, west, 或 east。同時當前面的亮度計算等同於指定的面,若未設定,預設為side。

            •  rotation: 根據特定的角度旋轉貼圖。可以為0,90,180或270。預設為0。旋轉不會影響到uv所指定的貼圖部分,而是此部分的旋轉角度。

            •  tintindex: 是否使用硬編碼着色貼圖。預設不使用着色和任何着色數值。注意只有特定方塊可以着色,其他方塊設定此項無效。

示例:直立的火把[編輯 | 編輯原始碼]

為簡單起見,此示例只介紹直立的火把,代碼由儲存於assets/minecraft/models/block中的文件torch.jsonnormal_torch.json定義。

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"標籤下創建了三個element,或者說立方體。因為只定義了兩個面,所以每個立方體只有兩個面會在遊戲裏被渲染。"uv"指定了材質所使用的區域。材質變量"#torch"用於指定方塊的粒子貼圖和立方體定義的材質,雖然這裏的"#torch"還未定義路徑。

File: normal_torch.json

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

此文件為普通火把的地上擺放模型。會先讀取並繼承其父類文件"parent"(torch.json)下的定義。然後給予父類文件下材質路徑定義,定義為普通火把的材質路徑(定義路徑時不需要#)。自此,這個普通火把的模型就為父類定義的模型,而材質和粒子貼圖則為自己定義的路徑材質。

示例: 標準方塊[編輯 | 編輯原始碼]

此示例為Minecraft裡大部分方塊的基本結構。這部分方塊使用同一個基本模型,以此模型定義他們的材質,如上例子。此cube.json示例取自assets/minecraft/models/block

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資料夾下。

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" }
      }
    }
  ]
}

一個普通的樹苗形狀,為兩個element片旋轉45度。因此要把原點和指定的旋轉軸設定為對應的數值,然后角度設為45,並把"rescale"設定為true"rescale": true的作用是讓旋轉之後的貼圖拉伸為旋轉前的寬度(見下圖)。

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

物品模型[編輯 | 編輯原始碼]

因為物品模型沒有變種,所以沒有設定變種的必要。文件路徑assets/minecraft/models/item下存放着所有的物品模型文件。文件的名字為硬編碼,因此不應修改文件名。


  • 根標籤

    •  parent:從assets/minecraft/models引用其他模型。如果同時設定了"parent""elements",此模型的"elements" 標籤將覆蓋父類模型""parent下的"elements"標籤。
      • 可以設定為"builtin/generated"以使用從指定圖標創建的模型。
      • 可以設定為"builtin/entity"以加載實體模型。你不可以指定使用的實體模型,同時並不適用於所有物品(僅適用於儲物箱終界箱生物頭顱盾牌旗幟)。
      • 設定為"builtin/compass""builtin/clock"用於指南針時鐘

    •  textures:模型材質的路徑,起始於assets/minecraft/textures,也可以是另一個材質變量。

      •  layer#:僅用於指定在物品欄內使用的物品的圖標。允許有超過一層(比如生怪蛋),但是可能的層數對每個物品都是硬編碼的。只有在與"builtin/generated"組合時能用。

      •  particle:從材質加載粒子密度。用於確定食品產生的碎屑粒子,以及確定屏障粒子(但它總是使用items/barrier.png作為破壞方塊粒子),否則將使用"layer0"。

      •  材質參數:定義一個材質參數並分配材質。

    •  elements:包含模型的所有元素。可以只有一種立方體形式。不可以與"parent"設定共存。

      • 一個元素。

        •  from:根據[x, y, z]格式,指定一個方塊的起始點。數值必須為-16到32之間。

        •  to:根據[x, y, z]格式,指定一個方塊的結束點。數值必須為-16到32之間。

        •  rotation:定義元素的旋轉。

          •  origin:根據坐標[x, y, z]設定旋轉中心,預設為[8, 8, 8]

          •  axis:指定旋轉方向,可以是"x""y""z"

          •  angle:指定旋轉角度,可以是在45和-45之間,預設為0。

        •  faces:該立方的所有面。若有一個面沒有定義,則不渲染此面。

          •  方向:該標籤的名稱可以是down、up、north、south、west或 east。包含指定面的參數狀態。

            •  uv:定義需要使用材質的區域,根據坐標[x1, y1, x2, y2]。如果未設定,它的預設值等於元素的xyz位置。如果UV延伸到0以下或16以上,材質的行為將不一致。如果交換了x或y值,材質就會朝這個方向翻轉。UV是可選的,如果沒有提供,它將根據元素的位置自動生成。

            •  texture:以材質變量的形式指定材質,該材質變量的前綴是#

            •  cullface:指定當在指定位置有方塊接觸某個面時,是否不顯示這個面。這個面可以是:downupnorthsouth, west,或east。這個標籤還會決定方塊的哪個面由光照水平照亮表面,如果未設定,預設為側面。

            •  rotation:旋轉材質,90的倍數。

            •  tintindex:確定是否使用硬編碼的着色索引來着色材質。預設情況下不着色,任何數字都會決定着色器使用顏色(除了生怪蛋,設定為0會使它使用第一種顏色,設定為1會使它使用第二種顏色)。請注意,只有特定的物品或物品的特定層(例如藥水)具有着色索引,其他物品不受影響。

    •  display:模型顯示時的不同位置。

      •  位置:該標籤名稱為thirdperson_righthand、thirdperson_lefthand、firstperson_righthand、firstperson_lefthand、gui、head、ground或fixed。設定模型顯示的位置。確保它的旋轉,平移和比例為指定的情況。fixed指的是物品框架,而其餘的是他們的名稱狀態。

        •  rotation:指定模型的旋轉角度,根據坐標[x, y, z]

        •  translation:指定模型的位置,根據坐標[x, y, z]。如果值大於80,會作為80處理,小於-80時則看作-80。

        •  scale:指定模型的尺寸,根據[x, y, z]。當值大於4時,效果等同於4。

    •  overrides:指定基於物品標籤的顯示不同模型的情況。

      • 某一種情況。

        •  predicate指定情況。

          •  一種情況:一個情況標籤。參見物品標籤查閱所有可用的標籤。

        •  model:當符合情況時的模型路徑,以assets/命名空间/models/開始。

物品標籤[編輯 | 編輯原始碼]

有些物品可以使用額外的標籤進行模型覆蓋的判斷。以下為可用的標籤列表。

  • "angle":角度,判斷指南針的角度,以十進制小於1的數值表達。
  • "blocking":格擋,判斷盾牌是否為格擋狀態。格擋時為1
  • "broken":破損,判斷鞘翅是否破損。破損時為1
  • "cast":拋擲,判斷釣竿是否已拋出。已拋出時為1
  • "cooldown":冷卻,判斷終界珍珠/歌萊果的剩餘冷卻時間,以十進制,0到1之間的數值表達。
  • "damage":損傷值,判斷擁有耐久值的物品的已受損程度,以十進制,0到1之間的數值表達。
  • "damaged":受損, 判斷擁有耐久值的物品是否為已受損狀態。已受損時為1。若物品擁有Unbreakable標籤時,此數值為0,且"damage"標籤的數值可以不為0。
  • "lefthanded":指定被左手玩家使用的模型,會影響其在物品欄的顯示樣式,以及玩家被看見拿起或穿在身上時。
  • "pull":拉伸程度,判斷弓被拉伸的程度,以十進制,0到1之間的數值表達。沒被拉伸時為0,被完全拉伸時為1
  • "pulling":拉伸,判斷弓是否被拉伸。被拉伸時為1
  • "time":時間,判斷時鐘的時間,以十進制,0到1之間的數值表達。

示例:火把[編輯 | 編輯原始碼]

此例子為火把為物品時的顯示模型。模型為存放在assets/minecraft/models/item下的torch.json

torch.json
{
  "parent": "builtin/generated",
  "textures": {
    "layer0": "block/torch"
  },
  "display": {
    "thirdperson_righthand": {
      "rotation": [ -90, 0, 0 ],
      "translation": [ 0, 1, -3 ],
      "scale": [ 0.55, 0.55, 0.55 ]
    },
    "firstperson_lefthand": {
      "rotation": [ 0, -135, 25 ],
      "translation": [ 0, 4, 2 ],
      "scale": [ 1.7, 1.7, 1.7 ]
    }
  }
}

因為"parent"標籤下所使用的父類模型為"builtin/generated",所以物品形態的火把模型使用遊戲內置生成的2D圖像模型。而生成所使用的圖像由"layer0"標籤定義,這個物品模型使用的貼圖同時也是方塊模型使用的貼圖。因為硬編碼規定火把只有一個圖層,所以給予火把添加額外的圖層是沒用的。此外,通過設定顯示屬性,可以保證此物品模型在不同情況下的正確顯示。由於火把戴在玩家頭上時使用的並不是物品模型而是方塊模型,所以沒必要定義戴在頭上時的顯示設定。遊戲會根據當前顯示的方式,讀取此顯示狀態下的各項設定,也就是旋轉的角度、移動造成的位置差、和縮放的大小。

示例:釣魚杆[編輯 | 編輯原始碼]

此處以1.9釣竿為例。模型為存放在assets/minecraft/models/item下的fishing_rod.json

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

此釣竿的貼圖在非投擲的情況下為layer0所指向的貼圖路徑文件fishing_rod_uncast.png。當投擲出去後(cast1時),改為使用"item/fishing_rod_cast"路徑下的物品模型和此模型下的定義貼圖路徑"items/fishing_rod_cast"

歷史[編輯 | 編輯原始碼]

Java版
1.7.2 13w36a 花現在被放置時像高草一樣不會位於方塊中間。
1.8 14w06a 加入了自定義方塊模型
14w07a 重寫模型格式。現在不僅有「平面」,還有「平面」和「立方體」。對象的旋轉也被限制為每個對象以22.5度遞增的方向旋轉。
14w11a 固體方塊上的光照不再使方塊內部的部分黑咕隆咚一片。
14w11b 通用方塊現在加載模型,而不是方案的形狀。
April 12, 2014TheMogMiner發佈了關於模型格式即將更改的文章。
14w17a 將剩餘的大部分固體方塊轉換為模型格式。
添加"rotateVariantTextures"通過旋轉保存uv細節。
14w25a 從uv定義中移除方向屬性,並將其替換為顯式材質引用。"textureFacing""texture"參數替換,其前綴為哈希符號(#)。
"useAmbientOcclusion"重命名為"ambientocclusion"
"rotateVariantTextures"重命名為"UV lock"
"cull"重命名為"cullface",指定選擇的相鄰面的反面
旋轉變得更加冗長,現在它變得更清晰因為它只能發生在一個軸上。"cross"模型的兩個面之一的旋轉現在是:"rotation": { "origin": [ 8, 8, 8 ], "axis": "y", "angle": 45, "rescale": true },
刪除了資料夾models/blocks/meshes,模型文件現在存儲在models/block.
添加了方塊狀態資料夾,並在models/block存儲了以前在其中找到的模型選擇文件。
模型格式現在支持自定義物品模型。
14w27a 用能夠更好地顯示內部數據的數據替換方塊狀態名。現在還沒有顯示某些方塊的所有數據。將在將來的版本中切換到使用實際存儲的數據,為此,數值化數據值將完全刪除,方塊狀態替代。
14w27b 方塊狀態文件現在支持隨機模型的模型數據。
14w30a 加入了物品模型"builtin/entity".
1.8.2 pre5標籤"translation"現在被限制在-24到24之間。
標籤"scale"現在被限制在4或更少
1.9 15w31a UV現在是可選的,如果沒有提供,它將根據元素的位置自動生成。
不同的模型/材質對於不同的損害值,物品狀態,以及玩家是否是左撇子。這種方法適用於指南針、時鐘和任何有耐久度的物體。它還包含弓和釣竿的附加標籤。
模型現在可以基於方塊狀態屬性(比如柵欄)組合在一起。因此,普通方塊模型集削減了近300個模型。
現在方塊模型JSON更嚴格了,不允許使用注釋和無引用標識符。
"display"標籤預設設定已經更改,"thirdperson""firstperson"標籤替換為"thirdperson_righthand""thirdperson_lefthand""firstperson_righthand",和"firstperson_lefthand"
"parent"和"elements"標籤現在可以共存,儘管頂級元素標籤覆蓋了以前的所有標籤。
刪除禁用備用方塊模型的選項。