[{"data":1,"prerenderedAt":412},["ShallowReactive",2],{"data":3,"\u002Fwiki\u002Fdocs\u002Fbbmodel":118},[4,9,14,19,24,29,34,39,44,49,54,59,64,68,73,78,83,88,93,98,103,108,113],{"title":5,"path":6,"description":7,"id":8},"FAQ","\u002Fblockbench\u002Ffaq","Frequently Asked Questions about Blockbench","content\u002Fblockbench\u002Ffaq.md",{"title":10,"path":11,"description":12,"id":13},"Formats","\u002Fblockbench\u002Fformats","formats","content\u002Fblockbench\u002Fformats.md",{"title":15,"path":16,"description":17,"id":18},"Legacy Versions","\u002Fblockbench\u002Flegacy-versions","Blockbench version history and changelogs prior to switching to Github Releases","content\u002Fblockbench\u002Flegacy-versions.md",{"title":20,"path":21,"description":22,"id":23},"Localization","\u002Fblockbench\u002Flocalization","How to contribute to Blockbench languages","content\u002Fblockbench\u002Flocalization.md",{"title":25,"path":26,"description":27,"id":28},"Logos and Brand Assets","\u002Fblockbench\u002Flogos","Frequently Asked Questions about the Blockbench app","content\u002Fblockbench\u002Flogos.md",{"title":30,"path":31,"description":32,"id":33},"Custom Themes","\u002Fblockbench\u002Fthemes","Themes allow you to change the visual appearance of Blockbench. You can drag and drop .bbtheme files into Blockbench to load them.","content\u002Fblockbench\u002Fthemes.md",{"title":35,"path":36,"description":37,"id":38},"The .bbmodel format","\u002Fdocs\u002Fbbmodel","An overview of the .bbmodel file format","content\u002Fdocs\u002Fbbmodel.md",{"title":40,"path":41,"description":42,"id":43},"Blockbench","\u002Fdocs\u002Fblockbench","The Blockbench object provides useful variables and methods to interact with general functionality of Blockbench.","content\u002Fdocs\u002Fblockbench.md",{"title":45,"path":46,"description":47,"id":48},"Upgrading Plugins to 5.0","\u002Fdocs\u002Fplugin-upgrade-to-5.0","An overview of breaking changes in the plugin API in 5.0","content\u002Fdocs\u002Fplugin-upgrade-to-5.0.md",{"title":50,"path":51,"description":52,"id":53},"Creating a Plugin","\u002Fdocs\u002Fplugin","This article will go over the basic steps needed to create your first plugin.","content\u002Fdocs\u002Fplugin.md",{"title":55,"path":56,"description":57,"id":58},"Properties","\u002Fdocs\u002Fproperty","Properties are used to dynamically assign properties to existing classes that are undo-relevant.\nThe advantages of using properties include:","content\u002Fdocs\u002Fproperty.md",{"title":60,"path":61,"description":62,"id":63},"Interface","\u002Fdocs\u002Fui","","content\u002Fdocs\u002Fui.md",{"title":65,"path":66,"description":62,"id":67},"Undo","\u002Fdocs\u002Fundo","content\u002Fdocs\u002Fundo.md",{"title":69,"path":70,"description":71,"id":72},"Web App URL Parameters","\u002Fdocs\u002Furl-parameters","How to provide integration with the Blockbench web app using URL parameters","content\u002Fdocs\u002Furl-parameters.md",{"title":74,"path":75,"description":76,"id":77},"Utils","\u002Fdocs\u002Futility","Blockbench comes with a bunch of custom utility functions to make the life of developers easier.","content\u002Fdocs\u002Futility.md",{"title":79,"path":80,"description":81,"id":82},"Animation Expressions","\u002Fguides\u002Fanimation-expressions","Expressions in animations can be used to create dynamic animations based on math expressions, or to create systems where variables can be used to modify the transformation or state of the model, such as facial expressions","content\u002Fguides\u002Fanimation-expressions.md",{"title":84,"path":85,"description":86,"id":87},"Bedrock Modeling and Animation","\u002Fguides\u002Fbedrock-modeling","Learn how to create entity models and animations for Minecraft Bedrock Edition","content\u002Fguides\u002Fbedrock-modeling.md",{"title":89,"path":90,"description":91,"id":92},"Blockbench Overview & Tips","\u002Fguides\u002Fblockbench-overview-tips","The fundamentals of Blockbench and how to use it efficiently","content\u002Fguides\u002Fblockbench-overview-tips.md",{"title":94,"path":95,"description":96,"id":97},"Emissive Textures in Renders","\u002Fguides\u002Femissive-textures-renders","How to create elegant emissive textures in renders","content\u002Fguides\u002Femissive-textures-renders.md",{"title":99,"path":100,"description":101,"id":102},"3D Export","\u002Fguides\u002Fexport-formats","An overview of the different export formats and how to transfer your model into other programs","content\u002Fguides\u002Fexport-formats.md",{"title":104,"path":105,"description":106,"id":107},"Particles and Sounds in MC Bedrock","\u002Fguides\u002Fminecraft-particles-sounds","How to add particles and sounds effects to animations for Minecraft Bedrock Edition","content\u002Fguides\u002Fminecraft-particles-sounds.md",{"title":109,"path":110,"description":111,"id":112},"Minecraft Style Guide","\u002Fguides\u002Fminecraft-style-guide","Tips for creating art in the Minecraft style","content\u002Fguides\u002Fminecraft-style-guide.md",{"title":114,"path":115,"description":116,"id":117},"Rendering Models","\u002Fguides\u002Fmodel-rendering","Learn how to create renders of your Blockbench models","content\u002Fguides\u002Fmodel-rendering.md",{"id":38,"title":35,"body":119,"description":37,"extension":404,"meta":405,"navigation":408,"path":36,"seo":409,"stem":410,"__hash__":411},{"type":120,"value":121,"toc":399},"minimark",[122,126,130,135,138,141,145,148,151,381,385,395],[123,124,35],"h1",{"id":125},"the-bbmodel-format",[127,128,129],"p",{},"Blockbench uses the .bbmodel file format to save projects as files. This page intends to describe the format and to give an overview of how to interact with the files on a technical level.",[131,132,134],"h2",{"id":133},"overview","Overview",[127,136,137],{},".bbmodel files are JSON-based. That does not mean that they are compatible with other types of JSON files though. The exact specifications of the format are listed below.",[127,139,140],{},"The format is mainly intended to be used as an internal format to save Blockbench projects. If you are looking to create a model loader or a similar system that works with Blockbench, it is generally recommended to create a separate custom format via a Blockbench plugin, instead of relying on bbmodel files.\nHowever, in some cases, it can make sense to work with .bbmodel files directly.",[131,142,144],{"id":143},"format-changes","Format changes",[127,146,147],{},"The .bbmodel files may be subject to breaking changes in the future. So it is recommended to plan with that. Each bbmodel file contains a format version field that can be used to identify and handle those changes.\nThe following section describes recent breaking changes within the format:",[127,149,150],{},"Note that additions and non-breaking changes are not listed on this page. This includes new features that have been added to the format, but don't impact how the rest of the format works.",[152,153,154,326,344],"ul",{},[155,156,157,162,163],"li",{},[158,159,161],"h3",{"id":160},"_50","5.0","Released with Blockbench 5.0, October 12th 2025",[152,164,165,323],{},[155,166,167,168],{},"Groups and outliner hierarchy are now saved as separate fields. \"groups\" now saves groups, the outliner hierarchy is saved in \"outliner\" without any group data:\n",[169,170,174],"pre",{"className":171,"code":172,"language":173,"meta":62,"style":62},"language-js shiki shiki-themes github-light github-dark","\"groups\": [...],\n\"outliner\": [\n    {\n        \"uuid\": \"0396ecb8-33d8-ca4a-d1d2-d756c50123ae\",\n        \"isOpen\": true,\n        \"children\": [\n            {\n                \"uuid\": \"b147a4cf-3f58-9e94-8f4c-b7b0657c3c56\",\n                \"isOpen\": true,\n                \"children\": [\"36d606d8-1baa-08f0-e4e6-f70f2f2e3657\", \"7594f374-dece-aa7b-e553-4dca3c243b1f\"]\n            }\n        ]\n    }\n]\n","js",[175,176,177,197,206,212,227,241,249,255,268,280,300,306,312,318],"code",{"__ignoreMap":62},[178,179,182,186,190,194],"span",{"class":180,"line":181},"line",1,[178,183,185],{"class":184},"sZZnC","\"groups\"",[178,187,189],{"class":188},"sVt8B",": [",[178,191,193],{"class":192},"szBVR","...",[178,195,196],{"class":188},"],\n",[178,198,200,203],{"class":180,"line":199},2,[178,201,202],{"class":184},"\"outliner\"",[178,204,205],{"class":188},": [\n",[178,207,209],{"class":180,"line":208},3,[178,210,211],{"class":188},"    {\n",[178,213,215,218,221,224],{"class":180,"line":214},4,[178,216,217],{"class":184},"        \"uuid\"",[178,219,220],{"class":188},": ",[178,222,223],{"class":184},"\"0396ecb8-33d8-ca4a-d1d2-d756c50123ae\"",[178,225,226],{"class":188},",\n",[178,228,230,233,235,239],{"class":180,"line":229},5,[178,231,232],{"class":184},"        \"isOpen\"",[178,234,220],{"class":188},[178,236,238],{"class":237},"sj4cs","true",[178,240,226],{"class":188},[178,242,244,247],{"class":180,"line":243},6,[178,245,246],{"class":184},"        \"children\"",[178,248,205],{"class":188},[178,250,252],{"class":180,"line":251},7,[178,253,254],{"class":188},"            {\n",[178,256,258,261,263,266],{"class":180,"line":257},8,[178,259,260],{"class":184},"                \"uuid\"",[178,262,220],{"class":188},[178,264,265],{"class":184},"\"b147a4cf-3f58-9e94-8f4c-b7b0657c3c56\"",[178,267,226],{"class":188},[178,269,271,274,276,278],{"class":180,"line":270},9,[178,272,273],{"class":184},"                \"isOpen\"",[178,275,220],{"class":188},[178,277,238],{"class":237},[178,279,226],{"class":188},[178,281,283,286,288,291,294,297],{"class":180,"line":282},10,[178,284,285],{"class":184},"                \"children\"",[178,287,189],{"class":188},[178,289,290],{"class":184},"\"36d606d8-1baa-08f0-e4e6-f70f2f2e3657\"",[178,292,293],{"class":188},", ",[178,295,296],{"class":184},"\"7594f374-dece-aa7b-e553-4dca3c243b1f\"",[178,298,299],{"class":188},"]\n",[178,301,303],{"class":180,"line":302},11,[178,304,305],{"class":188},"            }\n",[178,307,309],{"class":180,"line":308},12,[178,310,311],{"class":188},"        ]\n",[178,313,315],{"class":180,"line":314},13,[178,316,317],{"class":188},"    }\n",[178,319,321],{"class":180,"line":320},14,[178,322,299],{"class":188},[155,324,325],{},"Keyframe value direction has been fixed. Values were inverted on the X axis for position keyframes and on the X and Y axis for rotation. Starting with this version, that is no longer the case.",[155,327,328,332,333],{},[158,329,331],{"id":330},"_410","4.10","Released with Blockbench 4.10, May 9th 2024",[152,334,335,338,341],{},[155,336,337],{},"Fixed an issue with relative texture paths. Relative paths used to be relative to the .bbmodel file as if is was a directory, now they are correctly saved as relative to the directory that the .bbmodel file is in.",[155,339,340],{},"The \"name\" field is now ignored and overwritten with the .bbmodel file name, if the project was loaded from a file.",[155,342,343],{},"Fixed an issue with textures in formats that have a default texture. Textures are no longer specified per face if they were not explicitly assigned to the face.",[155,345,346,350,351],{},[158,347,349],{"id":348},"_49","4.9","Released with Blockbench 4.9, December 2nd 2023",[152,352,353],{},[155,354,355,356,359,360,364,372,375],{},"In generic models, and other formats that enable it via the feature ",[175,357,358],{},"per_texture_uv_size",", the UV size is now set per texture, instead of globally.\n",[361,362,363],"strong",{},"Old format:",[169,365,370],{"className":366,"code":368,"language":369},[367],"language-text","    \"resolution\": {\n        \"width\": 16,\n        \"height\": 16\n    }\n","text",[175,371,368],{"__ignoreMap":62},[361,373,374],{},"New (per texture):",[169,376,379],{"className":377,"code":378,"language":369},[367],"        \"uv_width\": 16,\n        \"uv_height\": 16,\n",[175,380,378],{"__ignoreMap":62},[131,382,384],{"id":383},"format-documentation","Format documentation",[127,386,387,388],{},"There is no complete specification of the JSON format at this point in time. To understand it, it is recommended to look at example .bbmodel files and to examine the Blockbench source code: ",[389,390,394],"a",{"href":391,"rel":392},"https:\u002F\u002Fgithub.com\u002FJannisX11\u002Fblockbench\u002Fblob\u002Fmaster\u002Fjs\u002Fformats\u002Fbbmodel.js",[393],"nofollow","js\u002Fformats\u002Fbbmodel.js",[396,397,398],"style",{},"html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":62,"searchDepth":199,"depth":208,"links":400},[401,402,403],{"id":133,"depth":199,"text":134},{"id":143,"depth":199,"text":144},{"id":383,"depth":199,"text":384},"md",{"authors":406},[407],"JannisX11",true,{"title":35,"description":37},"docs\u002Fbbmodel","QWb5X3f53HrLg5463fnmghMzMmXqR01md6eZOz-RVg4",1776013264720]