<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.figuramc.org/index.php?action=history&amp;feed=atom&amp;title=Tutorials%2FAvatar-Metadata</id>
	<title>Tutorials/Avatar-Metadata - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.figuramc.org/index.php?action=history&amp;feed=atom&amp;title=Tutorials%2FAvatar-Metadata"/>
	<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Tutorials/Avatar-Metadata&amp;action=history"/>
	<updated>2026-04-14T23:45:49Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Tutorials/Avatar-Metadata&amp;diff=115&amp;oldid=prev</id>
		<title>Manuel: Automated upload of converted .txt file.</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Tutorials/Avatar-Metadata&amp;diff=115&amp;oldid=prev"/>
		<updated>2024-09-26T20:45:04Z</updated>

		<summary type="html">&lt;p&gt;Automated upload of converted .txt file.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;import Emoji from ‘@site/src/components/Emoji’; import FileTreeRoot from ‘@site/src/components/FileTree/Root’; import FileTreeNode from ‘@site/src/components/FileTree/Node’;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;avatar-metadata&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Avatar Metadata =&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
avatar.json information&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Emoji icon=&amp;quot;file/json&amp;quot;/&amp;gt; &amp;lt;code&amp;gt;avatar.json&amp;lt;/code&amp;gt; is the file that contains Avatar Metadata. It tells Figura specific information about the avatar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;json-basics&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Json Basics ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The format that metadata is stored in is JSON. More specifically, a JSON object. It behaves very similar to a Lua table, it just uses different syntax. However, JSON has a very strict syntax and any errors will cause the avatar to fail to load.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
JSON objects operate on key value pairs. Keys are separated from their values using colons (&amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt;), and entries are separated with commas (&amp;lt;code&amp;gt;,&amp;lt;/code&amp;gt;). Unlike Lua tables, keys must be strings.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;key&amp;quot;: &amp;quot;value&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;stringKey,numberValue&amp;quot;: 4,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;objectValue&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;key, but of sub object&amp;quot;: &amp;quot;value, but of sub object&amp;quot;&lt;br /&gt;
&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;arrayWooo&amp;quot;: [1, 2, &amp;quot;stringlol&amp;quot;, {}, &amp;quot;42&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;metadata-fields&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Metadata Fields ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Figura looks for specific keys in this JSON object and does things based on the value. Remember that all of these keys are optional. You only need to define the ones you care about.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;name-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;“name”&amp;lt;/code&amp;gt; : String ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The value of this key determines the name of the avatar. This name is showed on the avatar information sidebar on the right of the Wardrobe, but also determines the name used to find the avatar on the left of the Wardrobe.&amp;lt;br/&amp;gt; If this key is not present, the name of the folder containing the &amp;lt;Emoji icon=&amp;quot;file/json&amp;quot;/&amp;gt;&amp;lt;code&amp;gt;avatar.json&amp;lt;/code&amp;gt; file is used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Katt&amp;quot;&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;description-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;“description”&amp;lt;/code&amp;gt; : String ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The value of this key will appear below the avatar’s name in the wardrobe.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Katt&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Example avatar.json&amp;quot;&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;authors-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;“authors”&amp;lt;/code&amp;gt; : String[] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The value of this key is an array of strings. An array can contain many different values within itself, and Figura expects these values to be strings. The values are used in the Authors field in the avatar information sidebar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Katt&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Example avatar.json&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;authors&amp;quot;: [&amp;quot;@KitCat962&amp;quot;, &amp;quot;KitCat#0962&amp;quot;, &amp;quot;Katakana962&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;author-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;“author”&amp;lt;/code&amp;gt; : String ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A place for a single author, should you dislike &amp;lt;code&amp;gt;“authors”&amp;lt;/code&amp;gt;. Does the exact same thing as &amp;lt;code&amp;gt;“authors”&amp;lt;/code&amp;gt; with only 1 element.&amp;lt;br/&amp;gt; If the &amp;lt;code&amp;gt;“authors”&amp;lt;/code&amp;gt; key is present, this key is ignored.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;version-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;“version”&amp;lt;/code&amp;gt; : String ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A place to define a [https://semver.org/ Semantic Versioning] version. You can define the lowest possible Figura version that this avatar will run on. If another client uses a Figura version that is less than the version defined here, a &amp;lt;Emoji icon=&amp;quot;badge/warning&amp;quot;/&amp;gt; warning badge will appear on your nameplate for them. If they hover over it, it will state that their Figura version is lower than what this avatar was designed to run on. If this key does not exist, Figura will use the version that was used to load the avatar.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Katt&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Example avatar.json&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;authors&amp;quot;: [&amp;quot;KitCat962&amp;quot;, &amp;quot;Katakana962&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;color-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;“color”&amp;lt;/code&amp;gt; : String ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This key defines the color of the &amp;lt;Emoji icon=&amp;quot;badge/mark&amp;quot;/&amp;gt; Figura mark on your nameplate. It must be a string in the format of a 3 character hex code or a 6 character hex code. For example, both &amp;lt;code&amp;gt;“3ab”&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;“FF00FF”&amp;lt;/code&amp;gt; are valid inputs. If this key does not exist, the color &amp;lt;code&amp;gt;“5AAAFF”&amp;lt;/code&amp;gt; will be used.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Katt&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Example avatar.json&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;authors&amp;quot;: [&amp;quot;@KitCat962&amp;quot;, &amp;quot;KitCat#0962&amp;quot;, &amp;quot;Katakana962&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;color&amp;quot;: &amp;quot;fc5bd9&amp;quot;&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;autoscripts-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;“autoScripts”&amp;lt;/code&amp;gt; : String[] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
By default, every single &amp;lt;Emoji icon=&amp;quot;file/lua&amp;quot;/&amp;gt; script file in the avatar will execute in an undefined order. The &amp;lt;code&amp;gt;require&amp;lt;/code&amp;gt; function can be used to control when a script is first executed, but some may prefer to define the script order in the metadata. This key is an array of strings that define which scripts run and in which order. Scripts not defined here will not run by default on avatar init, but can still be ran via &amp;lt;code&amp;gt;require&amp;lt;/code&amp;gt;. A script is specified via it’s file name without the &amp;lt;code&amp;gt;.lua&amp;lt;/code&amp;gt; extension. If a script is in a subfolder, that folder must also be defined, with the folder separator being a period (&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;).&amp;lt;br/&amp;gt; Consider the following avatar:&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FileTreeRoot&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;KattExampleAvatar&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;accessories&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;halo.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;ribbon.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;libs&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;armorAidLib.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;RainbowNameplate.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;JsonifyTextLib.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;avatar.json&amp;quot; icon=&amp;quot;file/json&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;player.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;diamond_layer_1&amp;quot; icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;diamond_layer_2&amp;quot; icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;script.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;skin.png&amp;quot; icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;pet.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;/FileTreeRoot&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To make only &amp;lt;code&amp;gt;RainbowNameplate.lua&amp;lt;/code&amp;gt; run on avatar init, the &amp;lt;code&amp;gt;autoScripts&amp;lt;/code&amp;gt; would look like&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;&amp;quot;autoScripts&amp;quot;:[&amp;quot;libs.RainbowNameplate&amp;quot;]&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
For our example metadata file, we will state that only &amp;lt;Emoji icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;code&amp;gt;script.lua&amp;lt;/code&amp;gt; will run by default, and the script itself will call &amp;lt;code&amp;gt;require&amp;lt;/code&amp;gt; on the library scripts which will “import” them into itself. You may be thinking “whats the point of &amp;lt;code&amp;gt;”autoScripts”&amp;lt;/code&amp;gt; if &amp;lt;code&amp;gt;require&amp;lt;/code&amp;gt; is objectively better at controlling script load order?“, To which my response would be”I don’t know”. But if you give an empty array, then no script will run which can be useful for debugging.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Katt&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Example avatar.json&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;authors&amp;quot;: [&amp;quot;@KitCat962&amp;quot;, &amp;quot;KitCat#0962&amp;quot;, &amp;quot;Katakana962&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;color&amp;quot;: &amp;quot;fc5bd9&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;autoScripts&amp;quot;: [&amp;quot;script&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;autoanims-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;“autoAnims”&amp;lt;/code&amp;gt; : String[] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This key defines which animations should start playing when the avatar first loads. The string to reference an animation follows the pattern &amp;lt;code&amp;gt;“modelPath.animName”&amp;lt;/code&amp;gt;. Consider the following avatar:&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FileTreeRoot&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;KattExampleAvatar&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;accessories&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;halo.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;ribbon.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;libs&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;armorAidLib.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;RainbowNameplate.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;JsonifyTextLib.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;avatar.json&amp;quot; icon=&amp;quot;file/json&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;player.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;diamond_layer_1&amp;quot; icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;diamond_layer_2&amp;quot; icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;script.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;skin.png&amp;quot; icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;pet.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;/FileTreeRoot&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If we want the animation &amp;lt;code&amp;gt;“idle”&amp;lt;/code&amp;gt; in the bbmodel &amp;lt;Emoji icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;code&amp;gt;player.bbmodel&amp;lt;/code&amp;gt;, we would include the string &amp;lt;code&amp;gt;“player.idle”&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;“autoAnims”&amp;lt;/code&amp;gt; array.&amp;lt;br/&amp;gt; Folder seperation is done with a period (&amp;lt;code&amp;gt;.&amp;lt;/code&amp;gt;) instead of slash (&amp;lt;code&amp;gt;/&amp;lt;/code&amp;gt;).&amp;lt;br/&amp;gt; If we want the animation &amp;lt;code&amp;gt;“spin”&amp;lt;/code&amp;gt; in the model &amp;lt;Emoji icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;code&amp;gt;halo.bbmodel&amp;lt;/code&amp;gt;, we would include the string &amp;lt;code&amp;gt;“accessories.halo.spin”&amp;lt;/code&amp;gt; in the &amp;lt;code&amp;gt;“autoAnims”&amp;lt;/code&amp;gt; array.&amp;lt;br/&amp;gt; This is not table indexing like how you would index the &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; table to get an Animation. It is just string concatenation.&amp;lt;br/&amp;gt; &amp;lt;code&amp;gt;autoAnims&amp;lt;/code&amp;gt; has a very niche use case as 99% of the time you have animations that you only want playing sometimes or want to play on a trigger. The only real use case is for a constantly playing looping animation that you don’t want to waste ~8 instructions on play at the beginning of a script, or perhaps you have an avatar that does not have any script files and you want to keep it that way.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Katt&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Example avatar.json&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;authors&amp;quot;: [&amp;quot;@KitCat962&amp;quot;, &amp;quot;KitCat#0962&amp;quot;, &amp;quot;Katakana962&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;color&amp;quot;: &amp;quot;fc5bd9&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;autoScripts&amp;quot;: [&amp;quot;script&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;autoAnims&amp;quot;: [&amp;quot;player.idle&amp;quot;, &amp;quot;accessories.halo.spin&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;ignoredtextures-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;“ignoredTextures”&amp;lt;/code&amp;gt; : String[] ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This key defines which textures should be ignored when loading the avatar. This is useful for when you have a cube that gets its texture set via code, but since all cubes must have a blockbench texture for Figura to even load the cube, you will either have to waste space with a dummy texture or use another texture in the model, which probably won’t look good on the cube. This key allows you to have that dummy texture in blockbench without having to waste precious bytes on having that texture loaded with the avatar.&amp;lt;br/&amp;gt; Referencing a texture is exactly the same format as getting a Texture object with the &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt; global.&amp;lt;br/&amp;gt; Consider this avatar:&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FileTreeRoot&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;KattExampleAvatar&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;accessories&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;halo.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;ribbon.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;libs&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;armorAidLib.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;RainbowNameplate.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;JsonifyTextLib.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;avatar.json&amp;quot; icon=&amp;quot;file/json&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;player.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;diamond_layer_1&amp;quot; icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;diamond_layer_2&amp;quot; icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;script.lua&amp;quot; icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;skin.png&amp;quot; icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;pet.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;/FileTreeRoot&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hypothetically, the armor of this avatar is being handled by &amp;lt;Emoji icon=&amp;quot;file/lua&amp;quot;/&amp;gt; &amp;lt;code&amp;gt;armorAidLib.lua&amp;lt;/code&amp;gt;. It changes the texture of cubes to the vanilla armor textures. There is no need to have the &amp;lt;Emoji icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;code&amp;gt;diamond_layer_1&amp;lt;/code&amp;gt; and &amp;lt;Emoji icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;code&amp;gt;diamond_layer_2&amp;lt;/code&amp;gt; textures in the bbmodel, but setting the cubes to use &amp;lt;Emoji icon=&amp;quot;file/texture&amp;quot;/&amp;gt; &amp;lt;code&amp;gt;skin.png&amp;lt;/code&amp;gt; will make editing the model a pain. So we remove both unused textures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Katt&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Example avatar.json&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;authors&amp;quot;: [&amp;quot;@KitCat962&amp;quot;, &amp;quot;KitCat#0962&amp;quot;, &amp;quot;Katakana962&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;color&amp;quot;: &amp;quot;fc5bd9&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;autoScripts&amp;quot;: [&amp;quot;script&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;autoAnims&amp;quot;: [&amp;quot;player.idle&amp;quot;, &amp;quot;accessories.halo.spin&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;ignoredTextures&amp;quot;: [&amp;quot;player.diamond_layer_1&amp;quot;, &amp;quot;player.diamond_layer_2&amp;quot;]&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;customizations-modelpart-customization-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== &amp;lt;code&amp;gt;“customizations”&amp;lt;/code&amp;gt; : {“ModelPart” : {“Customization” : “String”}} ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Does that Type identifier make any sense? Not really, but thats what the &amp;lt;code&amp;gt;“customizations”&amp;lt;/code&amp;gt; property is.&amp;lt;br/&amp;gt; &amp;lt;code&amp;gt;“customizations”&amp;lt;/code&amp;gt; allows for modifications to ModelParts that cant be done in BlockBench. You can still do this stuff via script, but the intent is for an avatar that does not have a script to still have access to some functionality.&amp;lt;br/&amp;gt; &amp;lt;code&amp;gt;“customizations”&amp;lt;/code&amp;gt; itself is a JSON object. The keys of that object are references to ModelParts, with the values being another JSON object. &amp;#039;&amp;#039;That&amp;#039;&amp;#039; object contains key value pairs that operate on the referenced ModelPart.&amp;lt;br/&amp;gt; Consider the following avatar:&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;FileTreeRoot&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;KattExampleAvatar&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;accessories&amp;quot; icon=&amp;quot;file/folder&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;ribbon.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;cube&amp;quot; icon=&amp;quot;blockbench/cube&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;avatar.json&amp;quot; icon=&amp;quot;file/json&amp;quot;/&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;player.bbmodel&amp;quot; icon=&amp;quot;file/bbmodel&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;Head&amp;quot; icon=&amp;quot;blockbench/group&amp;quot;&amp;gt; &amp;lt;FileTreeNode label=&amp;quot;Head&amp;quot; icon=&amp;quot;blockbench/cube&amp;quot;/&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;/FileTreeNode&amp;gt; &amp;lt;/FileTreeRoot&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To target the &amp;lt;Emoji icon=&amp;quot;blockbench/group&amp;quot;/&amp;gt; &amp;lt;code&amp;gt;Head&amp;lt;/code&amp;gt;, the correct key to use would be &amp;lt;code&amp;gt;“player.Head”&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt; To target the &amp;lt;Emoji icon=&amp;quot;file/bbmodel&amp;quot;/&amp;gt; &amp;lt;code&amp;gt;ribbon&amp;lt;/code&amp;gt;, the correct key to use would be &amp;lt;code&amp;gt;“accessories.ribbon”&amp;lt;/code&amp;gt;.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;customizations&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;player.Head&amp;quot;: {},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;accessories.ribbon&amp;quot;: {}&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now for the keys that work inside these sub-objects.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;primaryrendertype-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;“primaryRenderType”&amp;lt;/code&amp;gt; : String ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sets the RenderType to use for the Primary/Default texture. The default primaryRenderType is &amp;lt;code&amp;gt;“TRANSLUCENT”&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;customizations&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;player.Head&amp;quot;: {},&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;accessories.ribbon&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;primaryRenderType&amp;quot;: &amp;quot;END_PORTAL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;secondaryrendertype-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;“secondaryRenderType”&amp;lt;/code&amp;gt; : String ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Sets the RenderType to use for the Secondary/Emissive/&amp;lt;code&amp;gt;_e&amp;lt;/code&amp;gt; texture. The default secondaryRenderType is &amp;lt;code&amp;gt;“EMISSIVE”&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;customizations&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;player.Head&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;secondaryRenderType&amp;quot;: &amp;quot;GLINT&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;accessories.ribbon&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;primaryRenderType&amp;quot;: &amp;quot;END_PORTAL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;parenttype-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;“parentType”&amp;lt;/code&amp;gt; : String ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Keywords in BlockBench set the ParentType of the ModelPart. This key overrides that, or sets one if there is no Keyword. The default ParentType is &amp;lt;code&amp;gt;“None”&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;customizations&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;player.Head&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;secondaryRenderType&amp;quot;: &amp;quot;GLINT&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;parentType&amp;quot;: &amp;quot;Body&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;accessories.ribbon&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;primaryRenderType&amp;quot;: &amp;quot;END_PORTAL&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;moveto-string&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;“moveTo”&amp;lt;/code&amp;gt; : String ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Forces the ModelPart reference given to be a child of this ModelPart. This is useful if you like to organize your avatar into separate bbmodels. You can use this to stitch them together.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;customizations&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;player.Head&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;secondaryRenderType&amp;quot;: &amp;quot;GLINT&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;parentType&amp;quot;: &amp;quot;Body&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;accessories.ribbon&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;primaryRenderType&amp;quot;: &amp;quot;END_PORTAL&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;moveTo&amp;quot;: &amp;quot;player.Head&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;visible-boolean&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;“visible”&amp;lt;/code&amp;gt; : Boolean ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Overrides the visibility defined in BlockBench. Useful to be able to hide ModelParts in BlockBench to edit the model more easily, without it affecting the final result of the Avatar.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;customizations&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;player.Head&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;secondaryRenderType&amp;quot;: &amp;quot;GLINT&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;parentType&amp;quot;: &amp;quot;Body&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;accessories.ribbon&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;primaryRenderType&amp;quot;: &amp;quot;END_PORTAL&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;moveTo&amp;quot;: &amp;quot;player.Head&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;visible&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;remove-boolean&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;“remove”&amp;lt;/code&amp;gt; : Boolean ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This customization will prevent the targeted ModelPart from loading at all.&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;customizations&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;accessories.exampleMesh&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;smooth&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;smooth-boolean&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;“smooth”&amp;lt;/code&amp;gt; : Boolean ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This customization must be applied directly to a mesh object.&amp;lt;br/&amp;gt; This will calculate the vertex normals so that the mesh appears smooth, reducing the visibility of individual triangles.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;customizations&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;accessories.exampleMesh&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;smooth&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span id=&amp;quot;final-example-avatar.json&amp;quot;&amp;gt;&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Final Example &amp;lt;code&amp;gt;avatar.json&amp;lt;/code&amp;gt; ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;json&amp;quot;&amp;gt;{&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;name&amp;quot;: &amp;quot;Katt&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;description&amp;quot;: &amp;quot;Example avatar.json&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;authors&amp;quot;: [&amp;quot;@KitCat962&amp;quot;, &amp;quot;KitCat#0962&amp;quot;, &amp;quot;Katakana962&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;version&amp;quot;: &amp;quot;0.1.0&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;color&amp;quot;: &amp;quot;fc5bd9&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;autoScripts&amp;quot;: [&amp;quot;script&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;autoAnims&amp;quot;: [&amp;quot;player.idle&amp;quot;, &amp;quot;accessories.halo.spin&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;ignoredTextures&amp;quot;: [&amp;quot;player.diamond_layer_1&amp;quot;, &amp;quot;player.diamond_layer_2&amp;quot;],&lt;br /&gt;
&lt;br /&gt;
    &amp;quot;customizations&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;player.Head&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;secondaryRenderType&amp;quot;: &amp;quot;GLINT&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;parentType&amp;quot;: &amp;quot;Body&amp;quot;&lt;br /&gt;
&lt;br /&gt;
        },&lt;br /&gt;
&lt;br /&gt;
        &amp;quot;accessories.ribbon&amp;quot;: {&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;primaryRenderType&amp;quot;: &amp;quot;END_PORTAL&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;moveTo&amp;quot;: &amp;quot;player.Head&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
            &amp;quot;visible&amp;quot;: true&lt;br /&gt;
&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
}&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Manuel</name></author>
	</entry>
</feed>