<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.figuramc.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Joeyy</id>
	<title>FiguraMC - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.figuramc.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Joeyy"/>
	<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php/Special:Contributions/Joeyy"/>
	<updated>2026-04-14T23:42:06Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Community_Resources&amp;diff=529</id>
		<title>Community Resources</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Community_Resources&amp;diff=529"/>
		<updated>2024-10-05T20:27:29Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Undo revision 524 by Joeyy (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice/Warning&lt;br /&gt;
 |content=&#039;&#039;&#039;This page is heavily unfinished.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Please wait before referring other people to this page. If you&#039;re able to, please [[FiguraMC:Contributing|contribute]]!&lt;br /&gt;
}}&lt;br /&gt;
{{Notice&lt;br /&gt;
 |content=&#039;&#039;&#039;Some of the resources listed here are not officially endorsed by FiguraMC.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Resources affiliated with FiguraMC will be marked as such with a ⭐ icon.&lt;br /&gt;
}}&lt;br /&gt;
= Documentation =&lt;br /&gt;
===&#039;&#039;&#039;[https://applejuiceyy.github.io/figs/ Figs]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;Figs&#039;&#039;&#039; is an online documentation browser for Figura, making using Figura&#039;s built-in documentation easier to use.&lt;br /&gt;
===&#039;&#039;&#039;[https://wiki.figuramc.org Figura Wiki]&#039;&#039;&#039; (YOU ARE HERE) ⭐===&lt;br /&gt;
The &#039;&#039;&#039;Figura Wiki&#039;&#039;&#039; is an online wiki that aims to document Figura, its scripting language, modeling, etc.&lt;br /&gt;
== Lua Documenation ==&lt;br /&gt;
===&#039;&#039;&#039;[https://manuel-3.github.io/lua-quickstart Lua Quickstart Guide]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;Manuel&#039;s Lua Quickstart Guide&#039;&#039;&#039; is a quick, online tutorial guiding users through the basics of Lua syntax.&lt;br /&gt;
===&#039;&#039;&#039;[http://lua.org/manual/5.1 Lua 5.1 Manual]&#039;&#039;&#039;===&lt;br /&gt;
The &#039;&#039;&#039;Lua Manual&#039;&#039;&#039; is a long document describing the ins and outs of vanilla Lua. Although some of it will not apply to Figura Lua, it&#039;s still very useful for learning about the standard libraries.&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
===&#039;&#039;&#039;[https://www.youtube.com/playlist?list=PLNz7v2g2SFA8lOQUDS4z4-gIDLi_dWAhl Chloe&#039;s Video Tutorial Series]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;Chloe&#039;s Tutorial Series&#039;&#039;&#039; is a video series on YouTube that acts as a way for new users to get used to the mod. The series covers everything from modeling and modifying &amp;lt;code&amp;gt;avatar.json&amp;lt;/code&amp;gt; files to scripting.&lt;br /&gt;
= Tools =&lt;br /&gt;
===&#039;&#039;&#039;[https://github.com/GrandpaScout/FiguraRewriteVSDocs GS&#039; Figura VSCode Documentation]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;GrandpaScout&#039;s Figura VSCode Documentation&#039;&#039;&#039; is an addon for Visual Studio Code (along with Code OSS and VSCodium) that adds Figura&#039;s documentation and snippets to [https://marketplace.visualstudio.com/items?itemName=sumneko.lua sumneko&#039;s Lua Language Server plugin].&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;&lt;br /&gt;
Additional Resources&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-toggle-placeholder&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [https://github.com/GrandpaScout/FiguraRewriteVSDocs/wiki Install Guide]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
===&#039;&#039;&#039;[https://github.com/KitCat962/figura-format-bbplugin Katt&#039;s Figura Blockbench Extension]&#039;&#039;&#039;===&lt;br /&gt;
The &#039;&#039;&#039;Figura Blockbench Extension&#039;&#039;&#039; adds a new model format to Blockbench, the Figura Model format. It extends the base Generic Model format by adding tools to make the avatar creation process easier, lifting restrictions to the Generic Model format that Figura supports, and removing features Figura doesn&#039;t.&lt;br /&gt;
= Assets (Scripts, Libraries, APIs) =&lt;br /&gt;
{{Notice&lt;br /&gt;
 |content=&#039;&#039;&#039;Some assets only exist within the [https://discord.figuramc.org FiguraMC Discord].&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Assets that link to the FiguraMC Discord will be marked with a 💬 icon.&lt;br /&gt;
}}&lt;br /&gt;
== Animation Helpers ==&lt;br /&gt;
===&#039;&#039;&#039;[https://github.com/GrandpaScout/GSAnimBlend GSAnimBlend]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;GSAnimBlend&#039;&#039;&#039; is a script that automatically adds blends to the start and end of animations.&lt;br /&gt;
===&#039;&#039;&#039;[https://github.com/JimmyHelp/JimmyAnims Jimmy&#039;s Animation Handler]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;JimmyAnim&#039;&#039;&#039; (full name Jimmy&#039;s Animation Helper) is a library that plays specific Blockbench animations based on the player&#039;s current action.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;&lt;br /&gt;
Additional Resources&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-toggle-placeholder&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [https://jimmyhelp.notion.site/JimmyAnims-79adfdca2fe04f9c9ede5e0bfd898b6a Documentation]&lt;br /&gt;
* [https://github.com/JimmyHelp/JimmyAnims/blob/main/JimmyExample.lua Example Usage]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
== World Interactions==&lt;br /&gt;
===&#039;&#039;&#039;[https://discord.com/channels/1129805506354085959/1132467393050968214/1132467393050968214 Origins API]&#039;&#039;&#039; 💬===&lt;br /&gt;
Katt&#039;s &#039;&#039;&#039;Origins API&#039;&#039;&#039; is an API that uses the player&#039;s NBT data to get information about the player&#039;s [https://modrinth.com/mod/origins Origin].&lt;br /&gt;
==Visual Elements==&lt;br /&gt;
===&#039;&#039;&#039;[https://github.com/Manuel-3/figura-scripts/tree/main/src/confetti Confetti]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;Confetti&#039;&#039;&#039; is a library that allows users to add custom particles, either sprite or modelpart, to their avatars&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;&lt;br /&gt;
Additional Resources&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-toggle-placeholder&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [https://github.com/Manuel-3/figura-scripts/blob/main/src/confetti/readme.md Documentation]&lt;br /&gt;
* [https://github.com/Manuel-3/figura-scripts/blob/main/src/confetti/example.zip Example Avatar]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
===&#039;&#039;&#039;[https://discord.com/channels/1129805506354085959/1137506926742216835 KattArmor]&#039;&#039;&#039; 💬===&lt;br /&gt;
&#039;&#039;&#039;KattArmor&#039;&#039;&#039; (sometimes called Katt Armor API/Library) is a library that allows users to edit their avatar&#039;s armor, whether by adding pivots using a script or by using unique models and textures.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;&lt;br /&gt;
Additional Resources&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-toggle-placeholder&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [https://discord.com/channels/1129805506354085959/1137506926742216835/1155212562980425818 How-To Guide]&lt;br /&gt;
* [https://discord.com/channels/1129805506354085959/1137506926742216835/1262160359905562705 Example Avatars]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
= Community =&lt;br /&gt;
===&#039;&#039;&#039;[https://discord.figuramc.org FiguraMC Discord]&#039;&#039;&#039; ⭐===&lt;br /&gt;
The &#039;&#039;&#039;FiguraMC Discord Server&#039;&#039;&#039; is the central place for everything Figura, including help and support for the mod, avatar showcasing, and more. You&#039;ll also need to join this server to request whitelist to the FiguraSMP.&lt;br /&gt;
== Minecraft Servers ==&lt;br /&gt;
{{Notice&lt;br /&gt;
 |content=&#039;&#039;&#039;Some servers listed below are whitelisted.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Servers that have a public whitelist application process will be marked with a 🔒 icon.&lt;br /&gt;
* Servers that are invite-only will be marked with a 🛡️ icon.&lt;br /&gt;
}}&lt;br /&gt;
=== Figura Plaza ⭐ ===&lt;br /&gt;
&#039;&#039;&#039;IP:&amp;amp;nbsp;&amp;lt;span style=&amp;quot;user-select: all&amp;quot;&amp;gt;plaza.figuramc.org&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Figura Plaza&#039;&#039;&#039; is an official lobby-like server where players can join, hang out with other Figura users, make avatars in company, play games, and occasionally attend events. The server does not have any survival gameplay, and disables PvP by default. The server also provides a selection of free temporary items to use when testing avatars.&lt;br /&gt;
&lt;br /&gt;
=== Figura SMP ⭐🔒 ===&lt;br /&gt;
&#039;&#039;&#039;IP:&amp;amp;nbsp;&amp;lt;span style=&amp;quot;user-select: all&amp;quot;&amp;gt;vanilla.figuramc.org&amp;lt;/span&amp;gt;&#039;&#039;&#039; &amp;amp;bull; &#039;&#039;&#039;Version:&amp;amp;nbsp;1.21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Figura SMP&#039;&#039;&#039; (also referred to as Vanilla SMP) is an official survial server that stays close to the base game, plus a few server-side mods for quality-of-life purposes. You are perfectly able to join this server without any mods, and even on a vanilla client. You can read the server rules in [https://discord.com/channels/1129805506354085959/1130186794873405510 #info] and get whitelisted by putting your name in &amp;lt;sub&amp;gt;Subscript text&amp;lt;/sub&amp;gt;[https://discord.com/channels/1129805506354085959/1130187119680311470 #whitelist]. note that both of these channel links require you to be in [https://discord.figuramc.org the official Discord server for Figura].&lt;br /&gt;
&lt;br /&gt;
==== Modded SMP ====&lt;br /&gt;
&#039;&#039;&#039;IP:&amp;amp;nbsp;&amp;lt;span style=&amp;quot;user-select: none&amp;quot;&amp;gt;[TBD]&amp;lt;/span&amp;gt;&#039;&#039;&#039; &amp;amp;bull; &#039;&#039;&#039;Version:&amp;amp;nbsp;1.20.1-fabric&#039;&#039;&#039; &amp;amp;bull; &#039;&#039;&#039;Modpack:&amp;amp;nbsp;&amp;lt;span style=&amp;quot;user-select: none&amp;quot;&amp;gt;[TBD]&amp;lt;/span&amp;gt;&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Modded SMP&#039;&#039;&#039; is a seasonal modpack server adjacent to Figura SMP, each season coming with its own theme. &#039;&#039;&#039;Currently offline.&#039;&#039;&#039; The next season is themed after a nuclear apocalypse and is set for release Soon™. Getting whitelisted for Figura SMP also makes you whitelisted for this server (and vice versa).&lt;br /&gt;
&lt;br /&gt;
=== &#039;&#039;&#039;4p5.nz&#039;&#039;&#039; 🛡️ ===&lt;br /&gt;
&#039;&#039;&#039;IP:&amp;amp;nbsp;&amp;lt;span style=&amp;quot;user-select: all&amp;quot;&amp;gt;4p5.nz&amp;lt;/span&amp;gt;&#039;&#039;&#039; &amp;amp;bull; &#039;&#039;&#039;Version:&amp;amp;nbsp;1.21&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4p5.nz&#039;&#039;&#039; is an invite-only creative/operator server where players have free reign over the world around them.&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Community_Resources&amp;diff=524</id>
		<title>Community Resources</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Community_Resources&amp;diff=524"/>
		<updated>2024-10-05T20:13:38Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: removed origins api; no license&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice/Warning&lt;br /&gt;
 |content=&#039;&#039;&#039;This page is heavily unfinished.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Please wait before referring other people to this page. If you&#039;re able to, please [[FiguraMC:Contributing|contribute]]!&lt;br /&gt;
}}&lt;br /&gt;
{{Notice&lt;br /&gt;
 |content=&#039;&#039;&#039;Some of the resources listed here are not officially endorsed by FiguraMC.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Resources affiliated with FiguraMC will be marked as such with a ⭐ icon.&lt;br /&gt;
}}&lt;br /&gt;
= Documentation =&lt;br /&gt;
===&#039;&#039;&#039;[https://applejuiceyy.github.io/figs/ Figs]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;Figs&#039;&#039;&#039; is an online documentation browser for Figura, making using Figura&#039;s built-in documentation easier to use.&lt;br /&gt;
===&#039;&#039;&#039;[https://wiki.figuramc.org Figura Wiki]&#039;&#039;&#039; (YOU ARE HERE) ⭐===&lt;br /&gt;
The &#039;&#039;&#039;Figura Wiki&#039;&#039;&#039; is an online wiki that aims to document Figura, its scripting language, modeling, etc.&lt;br /&gt;
== Lua Documenation ==&lt;br /&gt;
===&#039;&#039;&#039;[https://manuel-3.github.io/lua-quickstart Lua Quickstart Guide]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;Manuel&#039;s Lua Quickstart Guide&#039;&#039;&#039; is a quick, online tutorial guiding users through the basics of Lua syntax.&lt;br /&gt;
===&#039;&#039;&#039;[http://lua.org/manual/5.1 Lua 5.1 Manual]&#039;&#039;&#039;===&lt;br /&gt;
The &#039;&#039;&#039;Lua Manual&#039;&#039;&#039; is a long document describing the ins and outs of vanilla Lua. Although some of it will not apply to Figura Lua, it&#039;s still very useful for learning about the standard libraries.&lt;br /&gt;
== Tutorials ==&lt;br /&gt;
===&#039;&#039;&#039;[https://www.youtube.com/playlist?list=PLNz7v2g2SFA8lOQUDS4z4-gIDLi_dWAhl Chloe&#039;s Video Tutorial Series]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;Chloe&#039;s Tutorial Series&#039;&#039;&#039; is a video series on YouTube that acts as a way for new users to get used to the mod. The series covers everything from modeling and modifying &amp;lt;code&amp;gt;avatar.json&amp;lt;/code&amp;gt; files to scripting.&lt;br /&gt;
= Tools =&lt;br /&gt;
===&#039;&#039;&#039;[https://github.com/GrandpaScout/FiguraRewriteVSDocs GS&#039; Figura VSCode Documentation]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;GrandpaScout&#039;s Figura VSCode Documentation&#039;&#039;&#039; is an addon for Visual Studio Code (along with Code OSS and VSCodium) that adds Figura&#039;s documentation and snippets to [https://marketplace.visualstudio.com/items?itemName=sumneko.lua sumneko&#039;s Lua Language Server plugin].&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;&lt;br /&gt;
Additional Resources&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-toggle-placeholder&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [https://github.com/GrandpaScout/FiguraRewriteVSDocs/wiki Install Guide]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
===&#039;&#039;&#039;[https://github.com/KitCat962/figura-format-bbplugin Katt&#039;s Figura Blockbench Extension]&#039;&#039;&#039;===&lt;br /&gt;
The &#039;&#039;&#039;Figura Blockbench Extension&#039;&#039;&#039; adds a new model format to Blockbench, the Figura Model format. It extends the base Generic Model format by adding tools to make the avatar creation process easier, lifting restrictions to the Generic Model format that Figura supports, and removing features Figura doesn&#039;t.&lt;br /&gt;
= Assets (Scripts, Libraries, APIs) =&lt;br /&gt;
{{Notice&lt;br /&gt;
 |content=&#039;&#039;&#039;Some assets only exist within the [https://discord.figuramc.org FiguraMC Discord].&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Assets that link to the FiguraMC Discord will be marked with a 💬 icon.&lt;br /&gt;
}}&lt;br /&gt;
== Animation Helpers ==&lt;br /&gt;
===&#039;&#039;&#039;[https://github.com/GrandpaScout/GSAnimBlend GSAnimBlend]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;GSAnimBlend&#039;&#039;&#039; is a script that automatically adds blends to the start and end of animations.&lt;br /&gt;
===&#039;&#039;&#039;[https://github.com/JimmyHelp/JimmyAnims Jimmy&#039;s Animation Handler]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;JimmyAnim&#039;&#039;&#039; (full name Jimmy&#039;s Animation Helper) is a library that plays specific Blockbench animations based on the player&#039;s current action.&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;&lt;br /&gt;
Additional Resources&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-toggle-placeholder&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [https://jimmyhelp.notion.site/JimmyAnims-79adfdca2fe04f9c9ede5e0bfd898b6a Documentation]&lt;br /&gt;
* [https://github.com/JimmyHelp/JimmyAnims/blob/main/JimmyExample.lua Example Usage]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
==Visual Elements==&lt;br /&gt;
===&#039;&#039;&#039;[https://github.com/Manuel-3/figura-scripts/tree/main/src/confetti Confetti]&#039;&#039;&#039;===&lt;br /&gt;
&#039;&#039;&#039;Confetti&#039;&#039;&#039; is a library that allows users to add custom particles, either sprite or modelpart, to their avatars&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;&lt;br /&gt;
Additional Resources&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-toggle-placeholder&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [https://github.com/Manuel-3/figura-scripts/blob/main/src/confetti/readme.md Documentation]&lt;br /&gt;
* [https://github.com/Manuel-3/figura-scripts/blob/main/src/confetti/example.zip Example Avatar]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
===&#039;&#039;&#039;[https://discord.com/channels/1129805506354085959/1137506926742216835 KattArmor]&#039;&#039;&#039; 💬===&lt;br /&gt;
&#039;&#039;&#039;KattArmor&#039;&#039;&#039; (sometimes called Katt Armor API/Library) is a library that allows users to edit their avatar&#039;s armor, whether by adding pivots using a script or by using unique models and textures.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible mw-collapsed&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;h4&amp;gt;&lt;br /&gt;
Additional Resources&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-toggle-placeholder&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/h4&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;mw-collapsible-content&amp;quot;&amp;gt;&lt;br /&gt;
* [https://discord.com/channels/1129805506354085959/1137506926742216835/1155212562980425818 How-To Guide]&lt;br /&gt;
* [https://discord.com/channels/1129805506354085959/1137506926742216835/1262160359905562705 Example Avatars]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
= Community =&lt;br /&gt;
===&#039;&#039;&#039;[https://discord.figuramc.org FiguraMC Discord]&#039;&#039;&#039; ⭐===&lt;br /&gt;
The &#039;&#039;&#039;FiguraMC Discord Server&#039;&#039;&#039; is the central place for everything Figura, including help and support for the mod, avatar showcasing, and more. You&#039;ll also need to join this server to request whitelist to the FiguraSMP.&lt;br /&gt;
== Minecraft Servers ==&lt;br /&gt;
{{Notice&lt;br /&gt;
 |content=&#039;&#039;&#039;Some servers listed below are whitelisted.&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
* Servers that have a public whitelist application process will be marked with a 🔒 icon.&lt;br /&gt;
* Servers that are invite-only will be marked with a 🛡️ icon.&lt;br /&gt;
}}&lt;br /&gt;
===&#039;&#039;&#039;Figura Plaza&#039;&#039;&#039; ⭐===&lt;br /&gt;
&#039;&#039;&#039;Figura Plaza&#039;&#039;&#039; is a lobby-like server where players can join, hang out with other Figura users, make avatars in company, play games, and occasionally attend events.&lt;br /&gt;
 plaza.figuramc.org&lt;br /&gt;
===&#039;&#039;&#039;FiguraSMP&#039;&#039;&#039; ⭐🔒===&lt;br /&gt;
The &#039;&#039;&#039;FiguraSMP&#039;&#039;&#039; is a set of two survival multiplayer servers—Vanilla and Modded—that are ran in affiliation with FiguraMC.&lt;br /&gt;
*Vanilla FiguraSMP is a server that stays close to the base game, only adding quality of life features for public servers.&lt;br /&gt;
*ModdedSMP is a seasonal modpack server, each season coming with its own theme.&lt;br /&gt;
&lt;br /&gt;
Below is the Vanilla FiguraSMP address since the Modded SMP is currently between seasons.&lt;br /&gt;
 vanilla.figuramc.org&lt;br /&gt;
===&#039;&#039;&#039;4p5.nz&#039;&#039;&#039; 🛡️===&lt;br /&gt;
&#039;&#039;&#039;4p5.nz&#039;&#039;&#039; is an invite-only creative/operator server where players have free reign over the world around them.&lt;br /&gt;
 4p5.nz&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Avatar&amp;diff=430</id>
		<title>Avatar</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Avatar&amp;diff=430"/>
		<updated>2024-09-29T01:06:10Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to AvatarAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[AvatarAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Vectors&amp;diff=429</id>
		<title>Vectors</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Vectors&amp;diff=429"/>
		<updated>2024-09-29T01:05:43Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Changed redirect target from Vectors (Global) to VectorsAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[VectorsAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Matrices&amp;diff=428</id>
		<title>Matrices</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Matrices&amp;diff=428"/>
		<updated>2024-09-29T01:05:14Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to MatricesAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[MatricesAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=World&amp;diff=427</id>
		<title>World</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=World&amp;diff=427"/>
		<updated>2024-09-29T01:04:32Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to WorldAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[WorldAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Vanilla_model&amp;diff=426</id>
		<title>Vanilla model</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Vanilla_model&amp;diff=426"/>
		<updated>2024-09-29T01:04:17Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to VanillaModelAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[VanillaModelAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=User&amp;diff=425</id>
		<title>User</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=User&amp;diff=425"/>
		<updated>2024-09-29T01:04:00Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to EntityAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[EntityAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Textures&amp;diff=424</id>
		<title>Textures</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Textures&amp;diff=424"/>
		<updated>2024-09-29T01:03:42Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to TextureAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[TextureAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Sounds&amp;diff=423</id>
		<title>Sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Sounds&amp;diff=423"/>
		<updated>2024-09-29T01:03:29Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to SoundAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[SoundAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Resources&amp;diff=422</id>
		<title>Resources</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Resources&amp;diff=422"/>
		<updated>2024-09-29T01:03:15Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to ResourcesAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ResourcesAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Renderer&amp;diff=421</id>
		<title>Renderer</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Renderer&amp;diff=421"/>
		<updated>2024-09-29T01:02:58Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to RendererAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[RendererAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Raycast&amp;diff=420</id>
		<title>Raycast</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Raycast&amp;diff=420"/>
		<updated>2024-09-29T01:02:16Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to RaycastAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[RaycastAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Player&amp;diff=419</id>
		<title>Player</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Player&amp;diff=419"/>
		<updated>2024-09-29T01:02:03Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to PlayerAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[PlayerAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Particles&amp;diff=418</id>
		<title>Particles</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Particles&amp;diff=418"/>
		<updated>2024-09-29T01:01:49Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to ParticleAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ParticleAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Net&amp;diff=417</id>
		<title>Net</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Net&amp;diff=417"/>
		<updated>2024-09-29T01:01:32Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Redirected page to NetworkingAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[NetworkingAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Keybinds&amp;diff=415</id>
		<title>Keybinds</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Keybinds&amp;diff=415"/>
		<updated>2024-09-29T00:57:26Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: redirect global to the type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[KeybindAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Json&amp;diff=414</id>
		<title>Json</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Json&amp;diff=414"/>
		<updated>2024-09-29T00:57:11Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: redirect global to the type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[JsonAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Host&amp;diff=413</id>
		<title>Host</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Host&amp;diff=413"/>
		<updated>2024-09-29T00:56:52Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: redirect global to the type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[HostAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Data&amp;diff=412</id>
		<title>Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Data&amp;diff=412"/>
		<updated>2024-09-29T00:56:06Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: redirect global to the type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[DataAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Client&amp;diff=411</id>
		<title>Client</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Client&amp;diff=411"/>
		<updated>2024-09-29T00:55:41Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: redirect global to the type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ClientAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Nameplate&amp;diff=410</id>
		<title>Nameplate</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Nameplate&amp;diff=410"/>
		<updated>2024-09-29T00:55:10Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: redirect global to the type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[NameplateAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Animations&amp;diff=400</id>
		<title>Animations</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Animations&amp;diff=400"/>
		<updated>2024-09-29T00:53:22Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: redirect global to the type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[AnimationAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Action_wheel&amp;diff=398</id>
		<title>Action wheel</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Action_wheel&amp;diff=398"/>
		<updated>2024-09-29T00:53:04Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: redirect global to the type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ActionWheelAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Main_Page&amp;diff=396</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Main_Page&amp;diff=396"/>
		<updated>2024-09-29T00:49:50Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Slapping the doc navbox here until someone the main page better&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice&lt;br /&gt;
 |content=&lt;br /&gt;
&amp;lt;div style=&amp;quot;font-size: 1.5em; font-weight: bold; margin: 0.5em 0 0 0;&amp;quot;&amp;gt;This wiki is under heavy construction.&amp;lt;/div&amp;gt;&lt;br /&gt;
{{#if:{{{extra|}}}|{{{extra}}}&lt;br /&gt;
}}To contribute to this wiki, see [[Special:WantedPages|Wanted Pages]], [[Special:WhatLinksHere/Template:Stub|Stubs]], and [[Contributing]].&lt;br /&gt;
 |outline=#f2a03c&lt;br /&gt;
 |background=#ffe8cc&lt;br /&gt;
}}&lt;br /&gt;
{{Notice&lt;br /&gt;
 |content=[https://figura-wiki.pages.dev &amp;lt;span style=&amp;quot;font-size: 1.5em; color: black !important;&amp;quot;&amp;gt;&#039;&#039;&#039;Looking for the old wiki? Click here!&#039;&#039;&#039;&amp;lt;/span&amp;gt;]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
{{Navbox documentation}}&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Template:Navbox_documentation&amp;diff=394</id>
		<title>Template:Navbox documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Template:Navbox_documentation&amp;diff=394"/>
		<updated>2024-09-29T00:47:16Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: VectorsAPI and MatricesAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Flatlist/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;6&amp;quot; | Documentation &lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Globals&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[action_wheel]]&lt;br /&gt;
* [[animations]]&lt;br /&gt;
* [[avatar]]&lt;br /&gt;
* [[client]]&lt;br /&gt;
* [[config]]&lt;br /&gt;
* [[data]]&lt;br /&gt;
* [[events]]&lt;br /&gt;
* [[figuraMetatables]]&lt;br /&gt;
* [[file]]&lt;br /&gt;
* [[host]]&lt;br /&gt;
* [[json]]&lt;br /&gt;
* [[keybinds]]&lt;br /&gt;
* [[listFiles]]&lt;br /&gt;
* [[matrices]]&lt;br /&gt;
* [[models]]&lt;br /&gt;
* [[nameplate]]&lt;br /&gt;
* [[net]]&lt;br /&gt;
* [[parseJson]]&lt;br /&gt;
* [[particles]]&lt;br /&gt;
* [[pings]]&lt;br /&gt;
* [[player]]&lt;br /&gt;
* [[print]]&lt;br /&gt;
* [[printJson]]&lt;br /&gt;
* [[printTable]]&lt;br /&gt;
* [[raycast]]&lt;br /&gt;
* [[renderer]]&lt;br /&gt;
* [[require]]&lt;br /&gt;
* [[resources]]&lt;br /&gt;
* [[sounds]]&lt;br /&gt;
* [[textures]]&lt;br /&gt;
* [[toJson]]&lt;br /&gt;
* [[type]]&lt;br /&gt;
* [[user]]&lt;br /&gt;
* [[vanilla_model]]&lt;br /&gt;
* [[vec]]&lt;br /&gt;
* [[vectors]]&lt;br /&gt;
* [[world]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Types&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[Action]]&lt;br /&gt;
* [[ActionWheelAPI]]&lt;br /&gt;
* [[Animation]]&lt;br /&gt;
* [[AnimationAPI]]&lt;br /&gt;
* [[AvatarAPI]]&lt;br /&gt;
* [[Biome]]&lt;br /&gt;
* [[BlockState]]&lt;br /&gt;
* [[BlockTask]]&lt;br /&gt;
* [[Buffer]]&lt;br /&gt;
* [[ConfigAPI]]&lt;br /&gt;
* [[EntityAPI]]&lt;br /&gt;
* [[EntityNameplateCustomization]]&lt;br /&gt;
* [[EntityTask]]&lt;br /&gt;
* [[Event]]&lt;br /&gt;
* [[EventsAPI]]&lt;br /&gt;
* [[FileAPI]]&lt;br /&gt;
* [[Future]]&lt;br /&gt;
* [[HostAPI]]&lt;br /&gt;
* [[HttpRequestBuilder]]&lt;br /&gt;
* [[InputStream]]&lt;br /&gt;
* [[ItemStack]]&lt;br /&gt;
* [[ItemTask]]&lt;br /&gt;
* [[JsonArray]]&lt;br /&gt;
* [[JsonBuilder]]&lt;br /&gt;
* [[JsonObject]]&lt;br /&gt;
* [[JsonSerializer]]&lt;br /&gt;
* [[Keybind]]&lt;br /&gt;
* [[Matrix2]]&lt;br /&gt;
* [[Matrix3]]&lt;br /&gt;
* [[Matrix4]]&lt;br /&gt;
* [[MatricesAPI]]&lt;br /&gt;
* [[ModelPart]]&lt;br /&gt;
* [[NameplateCustomization]]&lt;br /&gt;
* [[NameplateCustomizationGroup]]&lt;br /&gt;
* [[OutputStream]]&lt;br /&gt;
* [[Page]]&lt;br /&gt;
* [[Particle]]&lt;br /&gt;
* [[ParticleAPI]]&lt;br /&gt;
* [[RendererAPI]]&lt;br /&gt;
* [[RenderTask]]&lt;br /&gt;
* [[Sound]]&lt;br /&gt;
* [[SoundAPI]]&lt;br /&gt;
* [[SpriteTask]]&lt;br /&gt;
* [[TextTask]]&lt;br /&gt;
* [[Texture]]&lt;br /&gt;
* [[TextureAtlas]]&lt;br /&gt;
* [[VanillaPart]]&lt;br /&gt;
* [[Vector2]]&lt;br /&gt;
* [[Vector3]]&lt;br /&gt;
* [[Vector4]]&lt;br /&gt;
* [[VectorsAPI]]&lt;br /&gt;
* [[Vertex]]&lt;br /&gt;
* [[ViewerAPI]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Enums&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[BlockRaycastTypes]]&lt;br /&gt;
* [[Colors]]&lt;br /&gt;
* [[EntityPoses]]&lt;br /&gt;
* [[FluidRaycastTypes]]&lt;br /&gt;
* [[HeightmapTypes]]&lt;br /&gt;
* [[ItemDisplayModes]]&lt;br /&gt;
* [[Keybinds]]&lt;br /&gt;
* [[KeyIDs]]&lt;br /&gt;
* [[LoopModes]]&lt;br /&gt;
* [[ParentTypes]]&lt;br /&gt;
* [[PlayerModelParts]]&lt;br /&gt;
* [[PlayStates]]&lt;br /&gt;
* [[PostEffects]]&lt;br /&gt;
* [[Registries]]&lt;br /&gt;
* [[RenderModes]]&lt;br /&gt;
* [[RenderTypes]]&lt;br /&gt;
* [[StringEncodings]]&lt;br /&gt;
* [[TextureTypes]]&lt;br /&gt;
* [[UseActions]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Navbox for the bottom of all pages containing documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;WikiText&amp;quot;&amp;gt;&lt;br /&gt;
{{Navbox documentation}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Template:Navbox_documentation&amp;diff=374</id>
		<title>Template:Navbox documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Template:Navbox_documentation&amp;diff=374"/>
		<updated>2024-09-28T20:46:36Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Added EventsAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Flatlist/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;6&amp;quot; | Documentation &lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Globals&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[action_wheel]]&lt;br /&gt;
* [[animations]]&lt;br /&gt;
* [[avatar]]&lt;br /&gt;
* [[client]]&lt;br /&gt;
* [[config]]&lt;br /&gt;
* [[data]]&lt;br /&gt;
* [[events]]&lt;br /&gt;
* [[figuraMetatables]]&lt;br /&gt;
* [[file]]&lt;br /&gt;
* [[host]]&lt;br /&gt;
* [[json]]&lt;br /&gt;
* [[keybinds]]&lt;br /&gt;
* [[listFiles]]&lt;br /&gt;
* [[matrices]]&lt;br /&gt;
* [[models]]&lt;br /&gt;
* [[nameplate]]&lt;br /&gt;
* [[net]]&lt;br /&gt;
* [[parseJson]]&lt;br /&gt;
* [[particles]]&lt;br /&gt;
* [[pings]]&lt;br /&gt;
* [[player]]&lt;br /&gt;
* [[print]]&lt;br /&gt;
* [[printJson]]&lt;br /&gt;
* [[printTable]]&lt;br /&gt;
* [[raycast]]&lt;br /&gt;
* [[renderer]]&lt;br /&gt;
* [[require]]&lt;br /&gt;
* [[resources]]&lt;br /&gt;
* [[sounds]]&lt;br /&gt;
* [[textures]]&lt;br /&gt;
* [[toJson]]&lt;br /&gt;
* [[type]]&lt;br /&gt;
* [[user]]&lt;br /&gt;
* [[vanilla_model]]&lt;br /&gt;
* [[vec]]&lt;br /&gt;
* [[vectors]]&lt;br /&gt;
* [[world]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Types&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[Action]]&lt;br /&gt;
* [[ActionWheelAPI]]&lt;br /&gt;
* [[Animation]]&lt;br /&gt;
* [[AnimationAPI]]&lt;br /&gt;
* [[AvatarAPI]]&lt;br /&gt;
* [[Biome]]&lt;br /&gt;
* [[BlockState]]&lt;br /&gt;
* [[BlockTask]]&lt;br /&gt;
* [[Buffer]]&lt;br /&gt;
* [[ConfigAPI]]&lt;br /&gt;
* [[EntityAPI]]&lt;br /&gt;
* [[EntityNameplateCustomization]]&lt;br /&gt;
* [[EntityTask]]&lt;br /&gt;
* [[Event]]&lt;br /&gt;
* [[EventsAPI]]&lt;br /&gt;
* [[FileAPI]]&lt;br /&gt;
* [[Future]]&lt;br /&gt;
* [[HostAPI]]&lt;br /&gt;
* [[HttpRequestBuilder]]&lt;br /&gt;
* [[InputStream]]&lt;br /&gt;
* [[ItemStack]]&lt;br /&gt;
* [[ItemTask]]&lt;br /&gt;
* [[JsonArray]]&lt;br /&gt;
* [[JsonBuilder]]&lt;br /&gt;
* [[JsonObject]]&lt;br /&gt;
* [[JsonSerializer]]&lt;br /&gt;
* [[Keybind]]&lt;br /&gt;
* [[Matrix2]]&lt;br /&gt;
* [[Matrix3]]&lt;br /&gt;
* [[Matrix4]]&lt;br /&gt;
* [[ModelPart]]&lt;br /&gt;
* [[NameplateCustomization]]&lt;br /&gt;
* [[NameplateCustomizationGroup]]&lt;br /&gt;
* [[OutputStream]]&lt;br /&gt;
* [[Page]]&lt;br /&gt;
* [[Particle]]&lt;br /&gt;
* [[ParticleAPI]]&lt;br /&gt;
* [[RendererAPI]]&lt;br /&gt;
* [[RenderTask]]&lt;br /&gt;
* [[Sound]]&lt;br /&gt;
* [[SoundAPI]]&lt;br /&gt;
* [[SpriteTask]]&lt;br /&gt;
* [[TextTask]]&lt;br /&gt;
* [[Texture]]&lt;br /&gt;
* [[TextureAtlas]]&lt;br /&gt;
* [[VanillaPart]]&lt;br /&gt;
* [[Vector2]]&lt;br /&gt;
* [[Vector3]]&lt;br /&gt;
* [[Vector4]]&lt;br /&gt;
* [[Vertex]]&lt;br /&gt;
* [[ViewerAPI]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Enums&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[BlockRaycastTypes]]&lt;br /&gt;
* [[Colors]]&lt;br /&gt;
* [[EntityPoses]]&lt;br /&gt;
* [[FluidRaycastTypes]]&lt;br /&gt;
* [[HeightmapTypes]]&lt;br /&gt;
* [[ItemDisplayModes]]&lt;br /&gt;
* [[Keybinds]]&lt;br /&gt;
* [[KeyIDs]]&lt;br /&gt;
* [[LoopModes]]&lt;br /&gt;
* [[ParentTypes]]&lt;br /&gt;
* [[PlayerModelParts]]&lt;br /&gt;
* [[PlayStates]]&lt;br /&gt;
* [[PostEffects]]&lt;br /&gt;
* [[Registries]]&lt;br /&gt;
* [[RenderModes]]&lt;br /&gt;
* [[RenderTypes]]&lt;br /&gt;
* [[StringEncodings]]&lt;br /&gt;
* [[TextureTypes]]&lt;br /&gt;
* [[UseActions]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Navbox for the bottom of all pages containing documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;WikiText&amp;quot;&amp;gt;&lt;br /&gt;
{{Navbox documentation}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Events&amp;diff=373</id>
		<title>Events</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Events&amp;diff=373"/>
		<updated>2024-09-28T20:45:48Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Joeyy moved page Events to EventsAPI: Matching type name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[EventsAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=EventsAPI&amp;diff=372</id>
		<title>EventsAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=EventsAPI&amp;diff=372"/>
		<updated>2024-09-28T20:45:48Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Joeyy moved page Events to EventsAPI: Matching type name&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{#invoke:Distinguish|hatnote|Event}}&lt;br /&gt;
Events is a global which contains every {{Type|Event}}, which are fired when certain things happen. For example, if you want to count ticks, you can use the tick or world tick event.&lt;br /&gt;
&amp;lt;syntaxHighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local tick = 0&lt;br /&gt;
&lt;br /&gt;
-- Register event&lt;br /&gt;
function events.TICK()&lt;br /&gt;
  tick = tick + 1&lt;br /&gt;
end&lt;br /&gt;
-- or&lt;br /&gt;
events.TICK:register(function()&lt;br /&gt;
  tick = tick + 1&lt;br /&gt;
end)&lt;br /&gt;
&amp;lt;/syntaxHighlight&amp;gt;&lt;br /&gt;
Note that not everyone needs to count ticks&lt;br /&gt;
&lt;br /&gt;
== Methods ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method&lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/getEvents|getEvents]]&lt;br /&gt;
| Returns a table of every event&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Fields ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Event &lt;br /&gt;
! Description&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/ENTITY_INIT|ENTITY_INIT]]&lt;br /&gt;
| Runs when the player is loaded&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/TICK|TICK]]&lt;br /&gt;
| Runs every tick the player is rendered&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/WORLD_TICK|WORLD_TICK]]&lt;br /&gt;
| Runs every tick the world is rendered&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/RENDER|RENDER]]&lt;br /&gt;
| Runs every frame the player is rendered&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/POST_RENDER|POST_RENDER]]&lt;br /&gt;
| Runs every frame AFTER the player is rendered&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/WORLD_RENDER|WORLD_RENDER]]&lt;br /&gt;
| Runs every frame the world is rendered&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/POST_WORLD_RENDER|POST_WORLD_RENDER]]&lt;br /&gt;
| Runs every frame AFTER the world is rendered&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/SKULL_RENDER|SKULL_RENDER]]&lt;br /&gt;
| Runs every frame for every skull when the skull is rendered. &lt;br /&gt;
|-&lt;br /&gt;
| [[Events/ARROW_RENDER|ARROW_RENDER]]&lt;br /&gt;
| Runs every frame for every arrow when rendered. &lt;br /&gt;
|-&lt;br /&gt;
| [[Events/TRIDENT_RENDER|TRIDENT_RENDER]]&lt;br /&gt;
| Runs every frame for every trident when rendered. &lt;br /&gt;
|-&lt;br /&gt;
| [[Events/ITEM_RENDER|ITEM_RENDER]]&lt;br /&gt;
| Runs every frame for every item when rendered. &lt;br /&gt;
|-&lt;br /&gt;
| [[Events/CHAT_SEND_MESSAGE|CHAT_SEND_MESSAGE]]&lt;br /&gt;
| Runs every time the player sends something in chat, including commands. Allows for changing the message &lt;br /&gt;
|-&lt;br /&gt;
| [[Events/CHAT_RECEIVE_MESSAGE|CHAT_RECEIVE_MESSAGE]]&lt;br /&gt;
| Runs every time the player receives something in chat. Allows for changing the message &lt;br /&gt;
|-&lt;br /&gt;
| [[Events/MOUSE_SCROLL|MOUSE_SCROLL]]&lt;br /&gt;
| Runs every time the mouse is scrolled. Allows for cancelling the vanilla function&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/MOUSE_MOVE|MOUSE_MOVE]]&lt;br /&gt;
| Runs every time the mouse is moved. Allows for cancelling the vanilla function&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/MOUSE_PRESS|MOUSE_PRESS]]&lt;br /&gt;
| Runs every time the mouse is clicked. Allows for cancelling the vanilla function&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/KEY_PRESS|KEY_PRESS]]&lt;br /&gt;
| Runs every time a key is pressed. Allows for cancelling the vanilla function&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/CHAR_TYPED|CHAR_TYPED]]&lt;br /&gt;
| Runs every time a character is typed.&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/USE_ITEM|USE_ITEM]]&lt;br /&gt;
| Runs every time an item is used by the player.&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/ON_PLAY_SOUND|ON_PLAY_SOUND]]&lt;br /&gt;
| Runs every time a sound is played&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/RESOURCE_RELOAD|RESOURCE_RELOAD]]&lt;br /&gt;
| Runs every time resources are reloaded&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/TOTEM|TOTEM]]&lt;br /&gt;
| Runs every time a totem of undying is activated&lt;br /&gt;
|-&lt;br /&gt;
| [[Events/DAMAGE|DAMAGE]]&lt;br /&gt;
| Runs whenever the player takes damage&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Globals]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Template:Navbox_documentation&amp;diff=370</id>
		<title>Template:Navbox documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Template:Navbox_documentation&amp;diff=370"/>
		<updated>2024-09-28T20:43:36Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Added FileAPI&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Flatlist/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;6&amp;quot; | Documentation &lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Globals&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[action_wheel]]&lt;br /&gt;
* [[animations]]&lt;br /&gt;
* [[avatar]]&lt;br /&gt;
* [[client]]&lt;br /&gt;
* [[config]]&lt;br /&gt;
* [[data]]&lt;br /&gt;
* [[events]]&lt;br /&gt;
* [[figuraMetatables]]&lt;br /&gt;
* [[file]]&lt;br /&gt;
* [[host]]&lt;br /&gt;
* [[json]]&lt;br /&gt;
* [[keybinds]]&lt;br /&gt;
* [[listFiles]]&lt;br /&gt;
* [[matrices]]&lt;br /&gt;
* [[models]]&lt;br /&gt;
* [[nameplate]]&lt;br /&gt;
* [[net]]&lt;br /&gt;
* [[parseJson]]&lt;br /&gt;
* [[particles]]&lt;br /&gt;
* [[pings]]&lt;br /&gt;
* [[player]]&lt;br /&gt;
* [[print]]&lt;br /&gt;
* [[printJson]]&lt;br /&gt;
* [[printTable]]&lt;br /&gt;
* [[raycast]]&lt;br /&gt;
* [[renderer]]&lt;br /&gt;
* [[require]]&lt;br /&gt;
* [[resources]]&lt;br /&gt;
* [[sounds]]&lt;br /&gt;
* [[textures]]&lt;br /&gt;
* [[toJson]]&lt;br /&gt;
* [[type]]&lt;br /&gt;
* [[user]]&lt;br /&gt;
* [[vanilla_model]]&lt;br /&gt;
* [[vec]]&lt;br /&gt;
* [[vectors]]&lt;br /&gt;
* [[world]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Types&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[Action]]&lt;br /&gt;
* [[ActionWheelAPI]]&lt;br /&gt;
* [[Animation]]&lt;br /&gt;
* [[AnimationAPI]]&lt;br /&gt;
* [[AvatarAPI]]&lt;br /&gt;
* [[Biome]]&lt;br /&gt;
* [[BlockState]]&lt;br /&gt;
* [[BlockTask]]&lt;br /&gt;
* [[Buffer]]&lt;br /&gt;
* [[ConfigAPI]]&lt;br /&gt;
* [[EntityAPI]]&lt;br /&gt;
* [[EntityNameplateCustomization]]&lt;br /&gt;
* [[EntityTask]]&lt;br /&gt;
* [[Event]]&lt;br /&gt;
* [[FileAPI]]&lt;br /&gt;
* [[Future]]&lt;br /&gt;
* [[HostAPI]]&lt;br /&gt;
* [[HttpRequestBuilder]]&lt;br /&gt;
* [[InputStream]]&lt;br /&gt;
* [[ItemStack]]&lt;br /&gt;
* [[ItemTask]]&lt;br /&gt;
* [[JsonArray]]&lt;br /&gt;
* [[JsonBuilder]]&lt;br /&gt;
* [[JsonObject]]&lt;br /&gt;
* [[JsonSerializer]]&lt;br /&gt;
* [[Keybind]]&lt;br /&gt;
* [[Matrix2]]&lt;br /&gt;
* [[Matrix3]]&lt;br /&gt;
* [[Matrix4]]&lt;br /&gt;
* [[ModelPart]]&lt;br /&gt;
* [[NameplateCustomization]]&lt;br /&gt;
* [[NameplateCustomizationGroup]]&lt;br /&gt;
* [[OutputStream]]&lt;br /&gt;
* [[Page]]&lt;br /&gt;
* [[Particle]]&lt;br /&gt;
* [[ParticleAPI]]&lt;br /&gt;
* [[RendererAPI]]&lt;br /&gt;
* [[RenderTask]]&lt;br /&gt;
* [[Sound]]&lt;br /&gt;
* [[SoundAPI]]&lt;br /&gt;
* [[SpriteTask]]&lt;br /&gt;
* [[TextTask]]&lt;br /&gt;
* [[Texture]]&lt;br /&gt;
* [[TextureAtlas]]&lt;br /&gt;
* [[VanillaPart]]&lt;br /&gt;
* [[Vector2]]&lt;br /&gt;
* [[Vector3]]&lt;br /&gt;
* [[Vector4]]&lt;br /&gt;
* [[Vertex]]&lt;br /&gt;
* [[ViewerAPI]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Enums&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[BlockRaycastTypes]]&lt;br /&gt;
* [[Colors]]&lt;br /&gt;
* [[EntityPoses]]&lt;br /&gt;
* [[FluidRaycastTypes]]&lt;br /&gt;
* [[HeightmapTypes]]&lt;br /&gt;
* [[ItemDisplayModes]]&lt;br /&gt;
* [[Keybinds]]&lt;br /&gt;
* [[KeyIDs]]&lt;br /&gt;
* [[LoopModes]]&lt;br /&gt;
* [[ParentTypes]]&lt;br /&gt;
* [[PlayerModelParts]]&lt;br /&gt;
* [[PlayStates]]&lt;br /&gt;
* [[PostEffects]]&lt;br /&gt;
* [[Registries]]&lt;br /&gt;
* [[RenderModes]]&lt;br /&gt;
* [[RenderTypes]]&lt;br /&gt;
* [[StringEncodings]]&lt;br /&gt;
* [[TextureTypes]]&lt;br /&gt;
* [[UseActions]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Navbox for the bottom of all pages containing documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;WikiText&amp;quot;&amp;gt;&lt;br /&gt;
{{Navbox documentation}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=File&amp;diff=369</id>
		<title>File</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=File&amp;diff=369"/>
		<updated>2024-09-28T20:42:30Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: redirect global to the type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[FileAPI]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=FileAPI&amp;diff=368</id>
		<title>FileAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=FileAPI&amp;diff=368"/>
		<updated>2024-09-28T20:41:47Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: added navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Host only|kind=API}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FileAPI&amp;lt;/code&amp;gt; allows your avatar to access files in isolated folder.&lt;br /&gt;
&lt;br /&gt;
FileAPI is available as global &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
FileAPI is fully isolated in your data folder. It is located in your Figura folder, so, default path for it would be &amp;lt;code&amp;gt;figura/data&amp;lt;/code&amp;gt;. FileAPI can&#039;t access any files or directories out of this folder, even when using symbolic links. Attempt to access file or directory outside data folder will result in error.&lt;br /&gt;
Every used path in methods is relative to data folder.&lt;br /&gt;
&lt;br /&gt;
== FileAPI methods ==&lt;br /&gt;
&lt;br /&gt;
=== Security checks ===&lt;br /&gt;
&lt;br /&gt;
Security related methods of FileAPI.&lt;br /&gt;
&lt;br /&gt;
==== allowed ====&lt;br /&gt;
----&lt;br /&gt;
Checks if FileAPI usage is allowed for this avatar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;allowed()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Prints false on non-host avatar.&lt;br /&gt;
print(file:allowed())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== isPathAllowed ====&lt;br /&gt;
----&lt;br /&gt;
Checks if path is allowed for usage.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isPathAllowed(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Relative paths are always relative to data folder.&lt;br /&gt;
print(file:isPathAllowed(&amp;quot;foo&amp;quot;)) -- true&lt;br /&gt;
-- Relative paths that are pointing outside of data folder are not allowed.&lt;br /&gt;
print(file:isPathAllowed(&amp;quot;../foo&amp;quot;)) -- false&lt;br /&gt;
-- Absolute paths pointing to figura data folder are also allowed.&lt;br /&gt;
print(file:isPathAllowed(&amp;quot;C:/path/to/figura/data/foo&amp;quot;)) -- true&lt;br /&gt;
-- Absolute paths outside of data folder are not allowed.&lt;br /&gt;
print(file:isPathAllowed(&amp;quot;C:/foo&amp;quot;)) -- false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
Methods related both to files and directories.&lt;br /&gt;
&lt;br /&gt;
==== exists ====&lt;br /&gt;
----&lt;br /&gt;
Checks if specified path exists.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;exists(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:exists(&amp;quot;foo.bar&amp;quot;)) -- true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== delete ====&lt;br /&gt;
----&lt;br /&gt;
Deletes file or directory by specified path. Returns true if successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;delete(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Directory fooBar is empty&lt;br /&gt;
print(file:delete(&amp;quot;fooBar&amp;quot;)) -- true&lt;br /&gt;
-- Directory barFoo has files inside&lt;br /&gt;
print(file:delete(&amp;quot;barFoo&amp;quot;)) -- false&lt;br /&gt;
-- foo.bar is not open by any program&lt;br /&gt;
print(file:delete(&amp;quot;foo.bar&amp;quot;)) -- true&lt;br /&gt;
-- bar.foo doesn&#039;t exist&lt;br /&gt;
print(file:delete(&amp;quot;bar.foo&amp;quot;)) -- false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Directories ===&lt;br /&gt;
&lt;br /&gt;
Directory related methods of FileAPI.&lt;br /&gt;
&lt;br /&gt;
==== isDirectory ====&lt;br /&gt;
----&lt;br /&gt;
Checks if specified path is directory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isDirectory(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:isDirectory(&amp;quot;fooBar&amp;quot;)) -- true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mkdir ====&lt;br /&gt;
----&lt;br /&gt;
Creates directory by specified path. Returns true if successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mkdir(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:exists(&amp;quot;foo&amp;quot;)) -- false&lt;br /&gt;
print(file:mkdir(&amp;quot;foo&amp;quot;)) -- true&lt;br /&gt;
print(file:exists(&amp;quot;foo&amp;quot;)) -- true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#exists|exists]]&lt;br /&gt;
&lt;br /&gt;
==== mkdirs ====&lt;br /&gt;
----&lt;br /&gt;
Creates directory by specified path, and all parent directories if they doesn&#039;t exist. Returns true if successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mkdir(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:exists(&amp;quot;foo/bar&amp;quot;)) -- false&lt;br /&gt;
print(file:mkdir(&amp;quot;foo/bar&amp;quot;)) -- false&lt;br /&gt;
print(file:mkdirs(&amp;quot;foo/bar&amp;quot;)) -- true&lt;br /&gt;
print(file:exists(&amp;quot;foo/bar&amp;quot;)) -- true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#exists|exists]], [[#mkdir|mkdir]]&lt;br /&gt;
&lt;br /&gt;
==== list ====&lt;br /&gt;
----&lt;br /&gt;
Lists files and directories by specified path. Returns table with paths, or null if path doesn&#039;t exist or not a directory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string|[]?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
printTable(file:list(&amp;quot;&amp;quot;)) --[[{&lt;br /&gt;
&amp;quot;foo.bar&amp;quot;,&lt;br /&gt;
&amp;quot;fooBar&amp;quot;,&lt;br /&gt;
&amp;quot;barFoo&amp;quot;&lt;br /&gt;
}]]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
Methods related to files.&lt;br /&gt;
&lt;br /&gt;
==== isFile ====&lt;br /&gt;
----&lt;br /&gt;
Checks if specified path is a file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isFile(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:isFile(&amp;quot;foo.bar&amp;quot;)) -- true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== openReadStream ====&lt;br /&gt;
----&lt;br /&gt;
Open input stream for file at specified path. Throws an error if file doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;openReadStream(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|InputStream}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Opens an input stream.&lt;br /&gt;
local is = file:openReadStream(&amp;quot;foo.bar&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- Stream must be closed when you finished working with it.&lt;br /&gt;
is:close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[InputStream#close|InputStream:close]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== openWriteStream ====&lt;br /&gt;
----&lt;br /&gt;
Open output stream for file at specified path. Throws an error if unable to create a file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;openWriteStream(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|OutputStream}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Opens an output stream.&lt;br /&gt;
local os = file:openWriteStream(&amp;quot;bar.foo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- Stream must be closed when you finished working with it.&lt;br /&gt;
os:close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[OutputStream#close|OutputStream:close]]&lt;br /&gt;
&lt;br /&gt;
==== readString ====&lt;br /&gt;
----&lt;br /&gt;
Reads file at specified path and returns it&#039;s contents as a string in specified encoding.&lt;br /&gt;
Default encoding is &amp;lt;code&amp;gt;utf8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;readString(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;readString(path {{type|string}}, encoding {{type|BufferEncoding}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:readString(&amp;quot;foo.bar&amp;quot;)) -- Hello, world!&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== writeString ====&lt;br /&gt;
----&lt;br /&gt;
Writes string in specified encoding to file by specified path.&lt;br /&gt;
Default encoding is &amp;lt;code&amp;gt;utf8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;writeString(path {{type|string}}, contents {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;writeString(path {{type|string}}, contents {{type|string}}, encoding {{type|BufferEncoding}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:writeString(&amp;quot;foo.bar&amp;quot;, &amp;quot;Hello, world!&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
{{Navbox documentation}}&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=ConfigAPI&amp;diff=367</id>
		<title>ConfigAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=ConfigAPI&amp;diff=367"/>
		<updated>2024-09-28T20:41:20Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: added navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Host only|kind=API}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;ConfigAPI&amp;lt;/code&amp;gt; allows storing and loading data between reloads of your avatar.&lt;br /&gt;
&lt;br /&gt;
ConfigAPI is available as the global &amp;lt;code&amp;gt;config&amp;lt;/code&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
== Data Types ==&lt;br /&gt;
Only some data types are supported by ConfigAPI. All other data types will be converted to {{type|nil}}. The supported data types are:&lt;br /&gt;
* {{type|nil}}&lt;br /&gt;
* {{type|boolean}}&lt;br /&gt;
* {{type|string}}&lt;br /&gt;
* {{type|number}}&lt;br /&gt;
* {{type|table}}&lt;br /&gt;
* all types of {{type|Vector}}&lt;br /&gt;
* all types of {{type|Matrix}}&lt;br /&gt;
&amp;lt;!-- add a tutorial! --&amp;gt;&lt;br /&gt;
== ConfigAPI Methods ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration Switching ===&lt;br /&gt;
&lt;br /&gt;
==== setName ====&lt;br /&gt;
----&lt;br /&gt;
Also available as &amp;lt;code&amp;gt;ConfigAPI:name&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sets the name of the configuration file to read and write data to. By default, the name of the configuration file is the same as the name of the currently loaded avatar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setName(name {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ConfigAPI}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
config:setName(&amp;quot;my_config_file_name&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getName ====&lt;br /&gt;
----&lt;br /&gt;
Returns the name of the active configuration file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Print the active configuration file&#039;s name.&lt;br /&gt;
print(config:getName())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reading and Writing Data ===&lt;br /&gt;
==== load ====&lt;br /&gt;
----&lt;br /&gt;
Read a saved value from the active configuration file (see [[ConfigAPI#ConfigAPI:setName|setName]]) by key and return it.&lt;br /&gt;
If no key is given, return all of the saved keys and values in a table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;load(key {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|any|?}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;load()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|table}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Print all saved values.&lt;br /&gt;
printTable(config:load())&lt;br /&gt;
-- Print one specific value.&lt;br /&gt;
print(config:load(&amp;quot;my_value&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== save ====&lt;br /&gt;
----&lt;br /&gt;
Associate a key with a value in the active configuration file (see [[ConfigAPI#ConfigAPI:setName|setName]].) Only some types of values are allowed; see [[ConfigAPI#Data Types|Data Types]] for details.&lt;br /&gt;
&lt;br /&gt;
If {{type|nil}} is provided as the value, then the key is removed from the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;save(key {{type|string}}, value {{type|any|?}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ConfigAPI}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Save a value to be used later.&lt;br /&gt;
config:save(&amp;quot;my_value&amp;quot;, &amp;quot;Figura Wiki&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
{{Navbox documentation}}&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=ModelPart&amp;diff=366</id>
		<title>ModelPart</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=ModelPart&amp;diff=366"/>
		<updated>2024-09-28T20:38:31Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: added navbox&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ModelPart represents a Cube, Mesh, or Group from Blockbench.&lt;br /&gt;
&lt;br /&gt;
Via scripting, ModelParts can be modified dynamically to achieve whatever visuals you need (limited to Minecraft&#039;s rendering engine)&lt;br /&gt;
&lt;br /&gt;
== Accessing ModelParts ==&lt;br /&gt;
&amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt; is the global that acts as the Root of your avatar and is where all ModelParts are stored, either as a child of &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;, a child of a child, or further down the tree.&lt;br /&gt;
&lt;br /&gt;
Specifically, &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;&#039;s children are Blockbench models. When an avatar is selected, not only are a bbmodel&#039;s Cubes, Meshes, and Groups converted into ModelParts, but the bbmodel file itself is converted into a ModelPart.&lt;br /&gt;
&lt;br /&gt;
To access a child ModelPart from a parent ModelPart, [https://www.lua.org/pil/2.5.html index] the parent using the child&#039;s name as a string.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local bbmodel = models[&amp;quot;model&amp;quot;] -- access the bbmodel &amp;quot;model.bbmodel&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This logic is the same for every single ModelPart. If you want to access a child, index the parent with the child&#039;s name.&lt;br /&gt;
&lt;br /&gt;
{{note|&amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt; itself is a ModelPart. This allows you to apply transformations to the entire model, using e.g. &amp;lt;code&amp;gt;models:setScale(0.5)&amp;lt;/code&amp;gt;.|tag=Trivia|color=#A155DA}}&lt;br /&gt;
&lt;br /&gt;
The below example accesses the Head Group from the [[WikiExampleAvatar]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models[&amp;quot;model&amp;quot;][&amp;quot;root&amp;quot;][&amp;quot;Head&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If the above seems tedious, Lua provides a shorthand way of indexing with strings. It only works when the string contains no spaces or special characters.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- Below is invalid, as the name contains spaces&lt;br /&gt;
local superMegaAwsomeThing = models.model.root.Super Mega Awsome Thing&lt;br /&gt;
&lt;br /&gt;
-- Super Mega Awsome Thing would need to be indexed with the normal method&lt;br /&gt;
local superMegaAwsomeThing = models.model.root[&amp;quot;Super Mega Awsome Thing&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BBModels within folders ===&lt;br /&gt;
When a bbmodel is within a folder, Figura will actually turn the folder itself into a ModelPart. This can be confusing as ModelParts are the only thing that does this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local folderHead = models.folder.model.root.Head&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ParentTypes ==&lt;br /&gt;
In Figura, a [[ParentType]] is applied to a ModelPart causing the ModelPart to behave in a predefined way. This behavior includes acting as a vanilla part like the Head or LeftLeg, moving the rendering of special parts like held items, armor, or parrots, and binding the ModelPart to the World instead of the Player.&lt;br /&gt;
&lt;br /&gt;
ParentTypes can either be applied in Blockbench itself or via script.&lt;br /&gt;
=== ParentTypes via BlockBench ===&lt;br /&gt;
To define a ParentType in Blockbench, the name of a Group must begin with a case-sensitive ParentType.&lt;br /&gt;
&lt;br /&gt;
For example, the &amp;lt;code&amp;gt;Head&amp;lt;/code&amp;gt; ParentType causes the ModelPart to move and rotate like the vanilla Head. If you name a Group the following, it will have this ParentType:&lt;br /&gt;
&lt;br /&gt;
* Head&lt;br /&gt;
* HEAD&lt;br /&gt;
* Head2&lt;br /&gt;
* HeadPhones&lt;br /&gt;
&lt;br /&gt;
If you name a group the following, &amp;lt;b&amp;gt;it will not&amp;lt;/b&amp;gt; have the &amp;lt;code&amp;gt;Head&amp;lt;/code&amp;gt; ParentType:&lt;br /&gt;
&lt;br /&gt;
* head    =&amp;gt; &#039;head&#039; is not a valid ParentType. Capitalization matters!&lt;br /&gt;
* BigHead =&amp;gt; Does not begin with ParentType&lt;br /&gt;
* HeAd    =&amp;gt; &#039;HeAd&#039; is not a valid ParentType. Capitalization matters!&lt;br /&gt;
&lt;br /&gt;
Do note that some English words naturally start with a ParentType which can cause unintended behavior!&lt;br /&gt;
&lt;br /&gt;
For example, the word &amp;quot;Guitar&amp;quot;. Seems innocent, right? Well, &amp;quot;Guitar&amp;quot; starts with &amp;quot;Gui&amp;quot;, and &amp;quot;Gui&amp;quot; is an alias for the ParentType &amp;lt;code&amp;gt;Hud&amp;lt;/code&amp;gt;, a ParentType that binds the ModelPart to the Heads Up Display where the hotbar and inventory reside. This causes the ModelPart to not be visible, as [[ParentType/Hud|&amp;lt;code&amp;gt;Hud&amp;lt;/code&amp;gt; parts have special rules]]. Be careful!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Note: ParentTypes are sometimes called Keywords by legacy Figura users&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ParentTypes via Script ===&lt;br /&gt;
Calling the &amp;lt;code&amp;gt;setParentType&amp;lt;/code&amp;gt; on &amp;lt;em&amp;gt;any&amp;lt;/em&amp;gt; ModelPart will override it&#039;s ParentType.&lt;br /&gt;
&lt;br /&gt;
Simply [[#Accessing_ModelParts|access]] the ModelPart, then call &amp;lt;code&amp;gt;setParentType&amp;lt;/code&amp;gt; on it, passing in the ParentType as a string.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
head:setParentType(&amp;quot;RightArm&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To remove a ParentType from a ModelPart, call &amp;lt;code&amp;gt;setParentType&amp;lt;/code&amp;gt; with the string &amp;lt;code&amp;gt;&amp;quot;None&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
head:setParentType(&amp;quot;None&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
ModelParts &amp;lt;b&amp;gt;do not&amp;lt;/b&amp;gt; remember their original ParentType! If you need a ModelPart&#039;s original ParentType, store it in a variable for later:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
local headParentType = head:getParentType()&lt;br /&gt;
head:setParentType(&amp;quot;None&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== ModelPart Methods ==&lt;br /&gt;
&lt;br /&gt;
=== ModelPart Properties ===&lt;br /&gt;
Read-only properties of a ModelPart&lt;br /&gt;
&lt;br /&gt;
==== getName ====&lt;br /&gt;
----&lt;br /&gt;
Returns the name of this ModelPart. ModelParts can have duplicate names.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
print(head:getName()) --&amp;gt; &amp;quot;Head&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getType ====&lt;br /&gt;
----&lt;br /&gt;
Returns the original type of this ModelPart. Can be &amp;lt;code&amp;gt;Cube&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Mesh&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;Group&amp;lt;/code&amp;gt;. BBModels and folders are considered Groups. Cubes with no texture data are also considered Groups, as with no texture data their face data is stripped.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getType()&amp;lt;/code&amp;gt;&lt;br /&gt;
|| &amp;lt;code&amp;gt;&amp;quot;Cube&amp;quot; | &amp;quot;Mesh&amp;quot; | &amp;quot;Group&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
print(head:getType()) --&amp;gt; &amp;quot;Group&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Editing ModelPart Hierarchy ===&lt;br /&gt;
Methods relating to getting other ModelParts and manipulating the ModelPart tree&lt;br /&gt;
&lt;br /&gt;
==== getParent ====&lt;br /&gt;
----&lt;br /&gt;
Returns the parent of this ModelPart, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if this is &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt; or a loose ModelPart created via script.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getParent()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|ModelPart|?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
print(head:getParent()) --&amp;gt; ModelPart(root)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getChildren ====&lt;br /&gt;
----&lt;br /&gt;
Returns an array containing all children of this ModelPart&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getChildren()&amp;lt;/code&amp;gt;&lt;br /&gt;
|| {{type|ModelPart|[]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
printTable(root:getChildren()) --[[&lt;br /&gt;
ModelPart(Head), &lt;br /&gt;
ModelPart(Body), &lt;br /&gt;
ModelPart(RightArm), &lt;br /&gt;
ModelPart(LeftArm), &lt;br /&gt;
ModelPart(RightLeg), &lt;br /&gt;
ModelPart(LeftLeg),&lt;br /&gt;
]]--&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== isChildOf ====&lt;br /&gt;
----&lt;br /&gt;
Recursively checks if this child is a decedent of the provided ModelPart.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isChildOf(part {{type|ModelPart}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local model = models.model&lt;br /&gt;
local head = model.root.Head&lt;br /&gt;
print(head:isChildOf(model)) --&amp;gt; true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== copy ====&lt;br /&gt;
----&lt;br /&gt;
Copies the data of this ModelPart, assigning it a new name, then returning it. The new name has nothing to do with ParentTypes. The children of the copy are references to the original ModelPart&#039;s children. Extra work needs to be done to recursively copy it&#039;s children. The [[ModelPart#ModelPart_addChild|addChild]] method can then be used to add the copy to the ModelPart tree.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;copy(newName {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|| {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
local headCopy = head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
print(headCopy) --&amp;gt; ModelPart(NewHead)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- The parentType is copied with the ModelPart&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
local headCopy = head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
print(headCopy:getParentType()) --&amp;gt; &amp;quot;Head&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headCopy:setParentType(&amp;quot;None&amp;quot;)&lt;br /&gt;
print(headCopy:getParentType()) --&amp;gt; &amp;quot;None&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setParentType|setParentType]],, [[#getParentType|getParentType]],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Extra work is needed to deep copy a ModelPart&#039;s children as well&lt;br /&gt;
local function deepCopy(model)&lt;br /&gt;
    local copy = model:copy(model:getName())&lt;br /&gt;
    for _, child in pairs(copy:getChildren()) do&lt;br /&gt;
        copy:removeChild(child):addChild(deepCopy(child))&lt;br /&gt;
    end&lt;br /&gt;
    return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
local headCube = head.Head&lt;br /&gt;
&lt;br /&gt;
-- headCopyA contains references to head&#039;s children because it is a shallow copy&lt;br /&gt;
local headCopyA = head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
print(headCopyA.Head == headCube) --&amp;gt; true&lt;br /&gt;
&lt;br /&gt;
-- headCopyB contains true copies of head&#039;s children as it was passed through a function that recursively copies children&lt;br /&gt;
local headCopyB = deepCopy(head)&lt;br /&gt;
print(headCopyB.Head == headCube) --&amp;gt; false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#getName|getName]],, [[#getChildren|getChildren]],, [[#addChild|addChild]],, [[#removeChild|removeChild]],&lt;br /&gt;
&lt;br /&gt;
==== addChild ====&lt;br /&gt;
----&lt;br /&gt;
Adds the provided ModelPart as one of this ModelPart&#039;s children. Beware of adding a parent of this ModelPart as a child! This method returns this ModelPart for method chaining.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;addChild(part {{type|ModelPart}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
local headCopy = root.Head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
root:addChild(headCopy)&lt;br /&gt;
headCopy:setPos(10,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#copy|copy]],, [[#setPos|setPos]],&lt;br /&gt;
&lt;br /&gt;
==== removeChild ====&lt;br /&gt;
----&lt;br /&gt;
Removes a child from this ModelPart. Takes in the child ModelPart itself. This method returns this ModelPart for method chaining.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;removeChild(partToRemove {{type|ModelPart}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
local head = root.Head&lt;br /&gt;
root:removeChild(head) -- Bye bye Head!&lt;br /&gt;
&lt;br /&gt;
-- Head is still valid and can be re-added later, so long as we keep a variable referencing it.&lt;br /&gt;
print(head) --&amp;gt; ModelPart(Head)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== remove ====&lt;br /&gt;
----&lt;br /&gt;
Removes this ModelPart from the parent&#039;s child list. Returns self&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;remove()&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
head:remove() -- Bye bye Head!&lt;br /&gt;
&lt;br /&gt;
-- Head is still valid and can be re-added, so long as we keep a variable referencing it.&lt;br /&gt;
print(head) --&amp;gt; ModelPart(Head)&lt;br /&gt;
models.model.root.LeftLeg:addChild(head)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#addChild|addChild]],&lt;br /&gt;
&lt;br /&gt;
=== Manipulation ===&lt;br /&gt;
Methods relating to manipulating the ModelPart within physical space&lt;br /&gt;
&lt;br /&gt;
==== setPos ====&lt;br /&gt;
----&lt;br /&gt;
Sets the offset of the the position of the ModelPart. Position translation applies on the local rotation axis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPos(pos {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPos(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- Move 10 units on the local y axis&lt;br /&gt;
head:setPos(0, 10, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getPos ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;.  Always 0,0,0 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getPos()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getPos()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
head:setPos(0, 10, 0)&lt;br /&gt;
print(head:getPos()) --&amp;gt; vec(0,10,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setPos|setPos]],&lt;br /&gt;
&lt;br /&gt;
==== setRot ====&lt;br /&gt;
----&lt;br /&gt;
Sets the rotation of the ModelPart. Rotates the ModelPart around the PivotPoint.&lt;br /&gt;
&lt;br /&gt;
Angles are interpreted as degrees. &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setRot(rot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setRot(pitch {{type|number}}, yaw {{type|number}}, roll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- Rotate 45 degrees on the x axis, causing the avatar to look down&lt;br /&gt;
head:setRot(0, 45, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getRot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;. Will be the Rotation values defined in BlockBench when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getRot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(0,0,0) -- Most ModelParts will not have a rotation set in blockbench&lt;br /&gt;
head:setRot(45, 0, 0)&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(45,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setRot|setRot]],&lt;br /&gt;
&lt;br /&gt;
==== setScale ====&lt;br /&gt;
----&lt;br /&gt;
Sets the scale of the ModelPart. Scales the ModelPart around the PivotPoint.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 1. If a number is provided for x and both y and z are not defined, x will be used for all 3 axis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setScale(scale {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setScale(scaleAll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setScale(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
-- Double the size of the head&lt;br /&gt;
head:setScale(2)&lt;br /&gt;
-- Squishes and stretches the entire model&lt;br /&gt;
models.model:setScale(1.5, 0.75, 1.5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getScale ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;.  Always 1,1,1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getScale()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getScale()) --&amp;gt; vec(1,1,1)&lt;br /&gt;
head:setScale(2)&lt;br /&gt;
print(head:getScale()) --&amp;gt; vec(2,2,2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setScale|setScale]],&lt;br /&gt;
&lt;br /&gt;
==== setPivot ====&lt;br /&gt;
----&lt;br /&gt;
Sets the pivot point of the ModelPart. &#039;&#039;This overrides the pivot point defined in blockbench.&#039;&#039; It is recommended to use [[#setOffsetPivot|setOffsetPivot]], instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPivot(pivot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPivot(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- For a normal size humanoid model, the Head&#039;s pivot point is usually at 0,24,0&lt;br /&gt;
-- If we assume that the Head cube is an 8x8x8 cube,&lt;br /&gt;
-- then the head will rotate around the center of the cube instead of the neck&lt;br /&gt;
head:setPivot(0, 28, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getPivot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the Pivot Point defined in BlockBench, or the value set by &amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt; if it was already overwritten.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getPivot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- The Head group&#039;s pivot point for a humanoid model is usually at 0,24,0&lt;br /&gt;
print(head:getPivot()) --&amp;gt; vec(0,24,0)&lt;br /&gt;
head:setPivot(0,0,0)&lt;br /&gt;
-- We have completely ruined the rendering of this ModelPart&lt;br /&gt;
print(head:getPivot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setPivot|setPivot]],&lt;br /&gt;
&lt;br /&gt;
==== setOffsetRot ====&lt;br /&gt;
----&lt;br /&gt;
Sets a rotation value that will be added to the ModelPart&#039;s rotation.&lt;br /&gt;
&lt;br /&gt;
Angles are interpreted as degrees. &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetRot(rot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetRot(pitch {{type|number}}, yaw {{type|number}}, roll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- ModelParts inherit their rotation from blockbench. The Head usually has a rotation of 0,0,0 for consistency with the vanilla model&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
-- Set the offset to 45 degrees on the x axis, causing the avatar to look down&lt;br /&gt;
head:setOffsetRot(0, 45, 0)&lt;br /&gt;
-- The original rotation is unchanged.&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
&lt;br /&gt;
-- setOffsetRot is not additive.&lt;br /&gt;
head:setOffsetRot(0, 25, 0)&lt;br /&gt;
print(head:getOffsetRot()) --&amp;gt; vec(0,25,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#getRot|getRot]], [[#getOffsetRot|getOffsetRot]],&lt;br /&gt;
&lt;br /&gt;
==== getOffsetRot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;. Will be 0,0,0 when the script begins&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOffsetRot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getOffsetRot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
head:setOffsetRot(45, 0, 0)&lt;br /&gt;
print(head:getOffsetRot()) --&amp;gt; vec(45,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setOffsetRot|setOffsetRot]],&lt;br /&gt;
&lt;br /&gt;
==== setOffsetScale ====&lt;br /&gt;
----&lt;br /&gt;
Sets a scale value that will be multiplied with the ModelPart&#039;s scale.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 1. If a number is provided for x and both y and z are not defined, x will be used for all 3 axis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetScale(scale {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetScale(scaleAll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetScale(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
-- Double the size of the head&lt;br /&gt;
head:setScale(2)&lt;br /&gt;
-- Half the size of the head&lt;br /&gt;
head:setOffsetScale(0.5)&lt;br /&gt;
-- Results in no changes&lt;br /&gt;
-- I have no idea what this is used for&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getOffsetScale ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;.  Always 1,1,1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOffsetScale()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getOffsetScale()) --&amp;gt; vec(1,1,1)&lt;br /&gt;
head:setOffsetScale(2)&lt;br /&gt;
print(head:getOffsetScale()) --&amp;gt; vec(2,2,2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setOffsetScale|setOffsetScale]],&lt;br /&gt;
&lt;br /&gt;
==== setOffsetPivot ====&lt;br /&gt;
----&lt;br /&gt;
Sets a value that will be added to the ModelPart&#039;s pivot point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetPivot(pivot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetPivot(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- If we assume that the Head cube is an 8x8x8 cube and offset the pivot up by 4,&lt;br /&gt;
-- then the head will rotate around the center of the cube instead of the neck&lt;br /&gt;
head:setOffsetPivot(0, 4, 0)&lt;br /&gt;
-- Notice that we did not need to know the original pivot point to do this&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getOffsetPivot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;.  Always 0,0,0 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOffsetPivot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getOffsetPivot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
head:setOffsetPivot(0,4,0)&lt;br /&gt;
print(head:getOffsetPivot()) --&amp;gt; vec(0,4,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setOffsetPivot|setOffsetPivot]],&lt;br /&gt;
&lt;br /&gt;
==== setMatrix ====&lt;br /&gt;
----&lt;br /&gt;
Allows you to manually define the matrix used for positioning this ModelPart. Returns self for method chaining.&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt; will undo &amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt; will return invalid values while &amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt; is in effect. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt; are probably also affected, but nobody tested them yet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setMatrix(matrix {{type|Matrix4}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getTruePos ====&lt;br /&gt;
----&lt;br /&gt;
Returns the position after all calculations are done. This includes &amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt; and the data from all playing Animations.&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTruePos()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getTrueRot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the rotation after all calculations are done. This includes &amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;, and the data from all playing Animations.&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTruePos()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getTrueScale ====&lt;br /&gt;
----&lt;br /&gt;
Returns the scale after all calculations are done. This includes &amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;, and the data from all playing Animations.&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTrueScale()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getTruePivot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the pivot point after all calculations are done. This includes &amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTruePivot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Manipulation ===&lt;br /&gt;
Methods relating to modifying how a ModelPart looks&lt;br /&gt;
&lt;br /&gt;
todo: put anything related to renderType, textures, and other visual modifications in here&lt;br /&gt;
&lt;br /&gt;
==== setVisible ====&lt;br /&gt;
----&lt;br /&gt;
Sets if this ModelPart is visible or not. Children of this ModelPart will also be invisible while this part is invisible.&lt;br /&gt;
&lt;br /&gt;
A value of &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; is interpreted as &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; on 0.1.4 and below, and &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; on 0.1.5 and above. This message will disappear &amp;lt;s&amp;gt;if&amp;lt;/s&amp;gt; when 0.1.6 is released.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setVisible(visible {{type|boolean}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
head:setVisible(false) -- Bye bye Head!&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getVisible ====&lt;br /&gt;
----&lt;br /&gt;
Recursively goes up the ModelPart tree until it finds a ModelPart that is invisible, or the ModelPart is &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In other words, if a parent part is invisible, this function returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. If all parent parts are visible, this function will return &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;. Kinda stupid. This is fixed in 0.1.5 to never return &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getVisible()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|bool|?}} {{until|0.1.5}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getVisible()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|bool}} {{since|0.1.5}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(root.Head:getVisible()) --&amp;gt; nil --&amp;lt; this is stupid&lt;br /&gt;
root:setVisible(false) -- Bye bye root!&lt;br /&gt;
print(root.Head:getVisible()) --&amp;gt; false&lt;br /&gt;
root:setVisible(true) -- Welcome back root!&lt;br /&gt;
print(root.Head:getVisible()) --&amp;gt; true --&amp;lt; aaaaaaaa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== setColor ====&lt;br /&gt;
----&lt;br /&gt;
Sets a value to multiply with all pixels on the ModelPart&#039;s texture. Children of this ModelPart inherit the color, multiplied with their own.&lt;br /&gt;
&lt;br /&gt;
1,1,1 multiplies all color channels by 1, resulting in the texture unchanged. 0,0,0 results in all channels being black.&lt;br /&gt;
&lt;br /&gt;
Expects values between 0 and 1. Numbers larger than 1 results in undocumented behaviour. &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 1. If only &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; is defined as a number and both &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are omitted, &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; is used for all 3 color channels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setColor(color {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setColor(colorAll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setColor(r {{type|number}}, g {{type|number}}, b {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Darken the entire model&lt;br /&gt;
root:setColor(0.5,0.5,0.5)&lt;br /&gt;
-- Tint the Head red by reducing the other color channels.&lt;br /&gt;
-- Color is inherited from parents, so the effective color is (0.5, 0.45, 0.45)&lt;br /&gt;
root.Head:setColor(1,0.7,0.7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- If you want to &#039;reset&#039; a child&#039;s color value, extra work is needed.&lt;br /&gt;
&lt;br /&gt;
-- Color is max red&lt;br /&gt;
local color = vec(1,0,0)&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- root has color&lt;br /&gt;
root:setColor(color)&lt;br /&gt;
-- Through magic and wizardry, this &#039;resets&#039; the color of Head back to white, dispite it&#039;s parent having a non-white color&lt;br /&gt;
root.Head:setColor(-color + 2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getColor ====&lt;br /&gt;
----&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setColor&amp;lt;/code&amp;gt;. Returns 1,1,1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getColor()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
root:setColor(0.5)&lt;br /&gt;
print(root:getColor()) --&amp;gt; (0.5, 0.5, 0.5)&lt;br /&gt;
root.Head:setColor(1,0.7,0.7)&lt;br /&gt;
// getColor is not recursive&lt;br /&gt;
print(root.Head:getColor()) --&amp;gt; (1, 0.7, 0.7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setColor|setColor]],&lt;br /&gt;
&lt;br /&gt;
==== setOpacity ====&lt;br /&gt;
----&lt;br /&gt;
Sets the opacity of the ModelPart. Children of this ModelPart inherit the opacity, multiplied with their own.&lt;br /&gt;
&lt;br /&gt;
Minecraft has a minimum visible opacity of 0.1. Opacity values lower than 0.1 will not render at all. Needs verification.&lt;br /&gt;
&lt;br /&gt;
Only supported on [[RenderType|RenderTypes]] that support translucency. The default primary RenderType is &amp;lt;code&amp;gt;TRANSLUCENT&amp;lt;/code&amp;gt;, so most don&#039;t have to worry about it.&lt;br /&gt;
&lt;br /&gt;
Expects a value between 0 and 1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOpacity(opacity {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Half opacity&lt;br /&gt;
root:setOpacity(0.5)&lt;br /&gt;
-- Half of half opacity&lt;br /&gt;
root.Head:setColor(0.5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getOpacity ====&lt;br /&gt;
----&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setOpacity&amp;lt;/code&amp;gt;. Returns 1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOpacity()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|number}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
root:setOpacity(0.5)&lt;br /&gt;
print(root:getOpacity()) --&amp;gt; 0.5&lt;br /&gt;
root.Head:setOpacity(0.5)&lt;br /&gt;
// getOpacity is not recursive&lt;br /&gt;
print(root.Head:getOpacity()) --&amp;gt; 0.5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setOpacity|setOpacity]],&lt;br /&gt;
&lt;br /&gt;
==== setLight ====&lt;br /&gt;
----&lt;br /&gt;
Overrides the lightlevels used to render the ModelPart. Children of this ModelPart inherit the lightlevel.&lt;br /&gt;
&lt;br /&gt;
Expects 2 values between 0 and 15, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;. Providing &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; will undo the override, allowing Minecraft to control the lightlevel again.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setLight(light {{type|Vector2|?}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setLight(blockLight {{type|integer|?}}, skyLight {{type|integer|?}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Max light&lt;br /&gt;
root:setLight(15, 15)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- set light based on position (This is a fix for broken lighting on World parts)&lt;br /&gt;
function events.tick()&lt;br /&gt;
  local pos = player:getPos()&lt;br /&gt;
  local blockLight = world.getBlockLightLevel(pos)&lt;br /&gt;
  local skyLight = world.getSkyLightLevel(pos)&lt;br /&gt;
  root:setLight(blockLight, skyLight)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[PlayerAPI#PlayerAPI:getPos|player:getPos]] [[WorldAPI#WorldAPI.getBlockLightLevel|world.getBlockLightLevel]] [[WorldAPI#WorldAPI.getSkyLightLevel|world.getSkyLightLevel]]&lt;br /&gt;
&lt;br /&gt;
==== getLight ====&lt;br /&gt;
----&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setLight&amp;lt;/code&amp;gt;. Returns &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getLight()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
&lt;br /&gt;
print(root:getLight()) --&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
root:setLight(12, 8)&lt;br /&gt;
&lt;br /&gt;
let light = root:getLight()&lt;br /&gt;
print(light) --&amp;gt; vec(12, 8)&lt;br /&gt;
print(&amp;quot;BlockLightLevel -&amp;gt; &amp;quot;, light.x) --&amp;gt; &amp;quot;BlockLightLevel -&amp;gt; 12&amp;quot;&lt;br /&gt;
print(&amp;quot;SkyLightLevel -&amp;gt; &amp;quot;, light.y) --&amp;gt; &amp;quot;BlockLightLevel -&amp;gt; 8&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setLight|setLight]],&lt;br /&gt;
&lt;br /&gt;
==== setOverlay ====&lt;br /&gt;
----&lt;br /&gt;
Overrides the values used for rendering the red damage tint and the white creeper fuse effect. Really only useful for preventing the damage overlay from rendering on stuff like armor.&lt;br /&gt;
&lt;br /&gt;
Valid values for whiteOverlay: 0-15&lt;br /&gt;
&lt;br /&gt;
Valid values for hurtOverlay: 0-7&lt;br /&gt;
&lt;br /&gt;
whiteOverlay is a gradually increasing white tint from 0 - 15&lt;br /&gt;
&lt;br /&gt;
hurtOverlay is an unchanging red tint from 0 - 7.&lt;br /&gt;
&lt;br /&gt;
When set, hurtOverlay overrides whiteOverlay. For whiteOverlay to not be overriden, hurtOverlay needs to be 8 or more.&lt;br /&gt;
&lt;br /&gt;
Providing &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; will undo the override, allowing Minecraft to control the overlay again.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOverlay(overlayVector {{type|Vector2|?}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOverlay(whiteOverlay {{type|integer|?}}, hurtOverlay {{type|integer}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Damage overlay&lt;br /&gt;
root:setOverlay(0, 0)&lt;br /&gt;
-- Literally no difference&lt;br /&gt;
root:setOverlay(0, 5)&lt;br /&gt;
root:setOverlay(0, 7)&lt;br /&gt;
&lt;br /&gt;
-- Doesnt work. Damage overlay overrides white&lt;br /&gt;
root:setOverlay(15, 0)&lt;br /&gt;
&lt;br /&gt;
-- This works. Max white overlay&lt;br /&gt;
root:setOverlay(15, 15)&lt;br /&gt;
&lt;br /&gt;
-- This can be used to for preventing the damage overlay on armor&lt;br /&gt;
root:setOverlay(0, 15)&lt;br /&gt;
&lt;br /&gt;
-- Give control back to Minecraft&lt;br /&gt;
root:setOverlay(nil)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getOverlay ====&lt;br /&gt;
----&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setOverlay&amp;lt;/code&amp;gt;. Returns &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOverlay()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
&lt;br /&gt;
print(root:getOverlay()) --&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
root:setOverlay(8, 15)&lt;br /&gt;
&lt;br /&gt;
let overlay = root:getOverlay()&lt;br /&gt;
print(overlay) --&amp;gt; vec(8, 15)&lt;br /&gt;
print(&amp;quot;whiteOverlay -&amp;gt; &amp;quot;, overlay.x) --&amp;gt; &amp;quot;whiteOverlay -&amp;gt; 8&amp;quot;&lt;br /&gt;
print(&amp;quot;hurtOverlay -&amp;gt; &amp;quot;, overlay.y) --&amp;gt; &amp;quot;hurtOverlay -&amp;gt; 15&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setOverlay|setOverlay]],&lt;br /&gt;
&lt;br /&gt;
=== renderTasks ===&lt;br /&gt;
todo: put all rendertask functions in here &lt;br /&gt;
&lt;br /&gt;
=== Render Methods ===&lt;br /&gt;
todo: Put partToWorldMatrix, preRender, midRender, and PostRender in here&lt;br /&gt;
&lt;br /&gt;
=== Animation Methods ===&lt;br /&gt;
todo: put getAnimPos/Rot/Scale and overrideVanillaPos/Rot/Scale in here&lt;br /&gt;
&lt;br /&gt;
== Navigation ==&lt;br /&gt;
{{Navbox documentation}}&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Template:Navbox_documentation&amp;diff=365</id>
		<title>Template:Navbox documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Template:Navbox_documentation&amp;diff=365"/>
		<updated>2024-09-28T20:34:54Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: didn&amp;#039;t realize it&amp;#039;d already show&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Flatlist/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;6&amp;quot; | Documentation &lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Globals&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[action_wheel]]&lt;br /&gt;
* [[animations]]&lt;br /&gt;
* [[avatar]]&lt;br /&gt;
* [[client]]&lt;br /&gt;
* [[config]]&lt;br /&gt;
* [[data]]&lt;br /&gt;
* [[events]]&lt;br /&gt;
* [[figuraMetatables]]&lt;br /&gt;
* [[file]]&lt;br /&gt;
* [[host]]&lt;br /&gt;
* [[json]]&lt;br /&gt;
* [[keybinds]]&lt;br /&gt;
* [[listFiles]]&lt;br /&gt;
* [[matrices]]&lt;br /&gt;
* [[models]]&lt;br /&gt;
* [[nameplate]]&lt;br /&gt;
* [[net]]&lt;br /&gt;
* [[parseJson]]&lt;br /&gt;
* [[particles]]&lt;br /&gt;
* [[pings]]&lt;br /&gt;
* [[player]]&lt;br /&gt;
* [[print]]&lt;br /&gt;
* [[printJson]]&lt;br /&gt;
* [[printTable]]&lt;br /&gt;
* [[raycast]]&lt;br /&gt;
* [[renderer]]&lt;br /&gt;
* [[require]]&lt;br /&gt;
* [[resources]]&lt;br /&gt;
* [[sounds]]&lt;br /&gt;
* [[textures]]&lt;br /&gt;
* [[toJson]]&lt;br /&gt;
* [[type]]&lt;br /&gt;
* [[user]]&lt;br /&gt;
* [[vanilla_model]]&lt;br /&gt;
* [[vec]]&lt;br /&gt;
* [[vectors]]&lt;br /&gt;
* [[world]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Types&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[Action]]&lt;br /&gt;
* [[ActionWheelAPI]]&lt;br /&gt;
* [[Animation]]&lt;br /&gt;
* [[AnimationAPI]]&lt;br /&gt;
* [[AvatarAPI]]&lt;br /&gt;
* [[Biome]]&lt;br /&gt;
* [[BlockState]]&lt;br /&gt;
* [[BlockTask]]&lt;br /&gt;
* [[Buffer]]&lt;br /&gt;
* [[ConfigAPI]]&lt;br /&gt;
* [[EntityAPI]]&lt;br /&gt;
* [[EntityNameplateCustomization]]&lt;br /&gt;
* [[EntityTask]]&lt;br /&gt;
* [[Event]]&lt;br /&gt;
* [[Future]]&lt;br /&gt;
* [[HostAPI]]&lt;br /&gt;
* [[HttpRequestBuilder]]&lt;br /&gt;
* [[InputStream]]&lt;br /&gt;
* [[ItemStack]]&lt;br /&gt;
* [[ItemTask]]&lt;br /&gt;
* [[JsonArray]]&lt;br /&gt;
* [[JsonBuilder]]&lt;br /&gt;
* [[JsonObject]]&lt;br /&gt;
* [[JsonSerializer]]&lt;br /&gt;
* [[Keybind]]&lt;br /&gt;
* [[Matrix2]]&lt;br /&gt;
* [[Matrix3]]&lt;br /&gt;
* [[Matrix4]]&lt;br /&gt;
* [[ModelPart]]&lt;br /&gt;
* [[NameplateCustomization]]&lt;br /&gt;
* [[NameplateCustomizationGroup]]&lt;br /&gt;
* [[OutputStream]]&lt;br /&gt;
* [[Page]]&lt;br /&gt;
* [[Particle]]&lt;br /&gt;
* [[ParticleAPI]]&lt;br /&gt;
* [[RendererAPI]]&lt;br /&gt;
* [[RenderTask]]&lt;br /&gt;
* [[Sound]]&lt;br /&gt;
* [[SoundAPI]]&lt;br /&gt;
* [[SpriteTask]]&lt;br /&gt;
* [[TextTask]]&lt;br /&gt;
* [[Texture]]&lt;br /&gt;
* [[TextureAtlas]]&lt;br /&gt;
* [[VanillaPart]]&lt;br /&gt;
* [[Vector2]]&lt;br /&gt;
* [[Vector3]]&lt;br /&gt;
* [[Vector4]]&lt;br /&gt;
* [[Vertex]]&lt;br /&gt;
* [[ViewerAPI]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Enums&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[BlockRaycastTypes]]&lt;br /&gt;
* [[Colors]]&lt;br /&gt;
* [[EntityPoses]]&lt;br /&gt;
* [[FluidRaycastTypes]]&lt;br /&gt;
* [[HeightmapTypes]]&lt;br /&gt;
* [[ItemDisplayModes]]&lt;br /&gt;
* [[Keybinds]]&lt;br /&gt;
* [[KeyIDs]]&lt;br /&gt;
* [[LoopModes]]&lt;br /&gt;
* [[ParentTypes]]&lt;br /&gt;
* [[PlayerModelParts]]&lt;br /&gt;
* [[PlayStates]]&lt;br /&gt;
* [[PostEffects]]&lt;br /&gt;
* [[Registries]]&lt;br /&gt;
* [[RenderModes]]&lt;br /&gt;
* [[RenderTypes]]&lt;br /&gt;
* [[StringEncodings]]&lt;br /&gt;
* [[TextureTypes]]&lt;br /&gt;
* [[UseActions]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Navbox for the bottom of all pages containing documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;WikiText&amp;quot;&amp;gt;&lt;br /&gt;
{{Navbox documentation}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Template:Navbox_documentation&amp;diff=364</id>
		<title>Template:Navbox documentation</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Template:Navbox_documentation&amp;diff=364"/>
		<updated>2024-09-28T20:34:24Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Navbox!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Flatlist/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;6&amp;quot; | Documentation &lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Globals&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[action_wheel]]&lt;br /&gt;
* [[animations]]&lt;br /&gt;
* [[avatar]]&lt;br /&gt;
* [[client]]&lt;br /&gt;
* [[config]]&lt;br /&gt;
* [[data]]&lt;br /&gt;
* [[events]]&lt;br /&gt;
* [[figuraMetatables]]&lt;br /&gt;
* [[file]]&lt;br /&gt;
* [[host]]&lt;br /&gt;
* [[json]]&lt;br /&gt;
* [[keybinds]]&lt;br /&gt;
* [[listFiles]]&lt;br /&gt;
* [[matrices]]&lt;br /&gt;
* [[models]]&lt;br /&gt;
* [[nameplate]]&lt;br /&gt;
* [[net]]&lt;br /&gt;
* [[parseJson]]&lt;br /&gt;
* [[particles]]&lt;br /&gt;
* [[pings]]&lt;br /&gt;
* [[player]]&lt;br /&gt;
* [[print]]&lt;br /&gt;
* [[printJson]]&lt;br /&gt;
* [[printTable]]&lt;br /&gt;
* [[raycast]]&lt;br /&gt;
* [[renderer]]&lt;br /&gt;
* [[require]]&lt;br /&gt;
* [[resources]]&lt;br /&gt;
* [[sounds]]&lt;br /&gt;
* [[textures]]&lt;br /&gt;
* [[toJson]]&lt;br /&gt;
* [[type]]&lt;br /&gt;
* [[user]]&lt;br /&gt;
* [[vanilla_model]]&lt;br /&gt;
* [[vec]]&lt;br /&gt;
* [[vectors]]&lt;br /&gt;
* [[world]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Types&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[Action]]&lt;br /&gt;
* [[ActionWheelAPI]]&lt;br /&gt;
* [[Animation]]&lt;br /&gt;
* [[AnimationAPI]]&lt;br /&gt;
* [[AvatarAPI]]&lt;br /&gt;
* [[Biome]]&lt;br /&gt;
* [[BlockState]]&lt;br /&gt;
* [[BlockTask]]&lt;br /&gt;
* [[Buffer]]&lt;br /&gt;
* [[ConfigAPI]]&lt;br /&gt;
* [[EntityAPI]]&lt;br /&gt;
* [[EntityNameplateCustomization]]&lt;br /&gt;
* [[EntityTask]]&lt;br /&gt;
* [[Event]]&lt;br /&gt;
* [[Future]]&lt;br /&gt;
* [[HostAPI]]&lt;br /&gt;
* [[HttpRequestBuilder]]&lt;br /&gt;
* [[InputStream]]&lt;br /&gt;
* [[ItemStack]]&lt;br /&gt;
* [[ItemTask]]&lt;br /&gt;
* [[JsonArray]]&lt;br /&gt;
* [[JsonBuilder]]&lt;br /&gt;
* [[JsonObject]]&lt;br /&gt;
* [[JsonSerializer]]&lt;br /&gt;
* [[Keybind]]&lt;br /&gt;
* [[Matrix2]]&lt;br /&gt;
* [[Matrix3]]&lt;br /&gt;
* [[Matrix4]]&lt;br /&gt;
* [[ModelPart]]&lt;br /&gt;
* [[NameplateCustomization]]&lt;br /&gt;
* [[NameplateCustomizationGroup]]&lt;br /&gt;
* [[OutputStream]]&lt;br /&gt;
* [[Page]]&lt;br /&gt;
* [[Particle]]&lt;br /&gt;
* [[ParticleAPI]]&lt;br /&gt;
* [[RendererAPI]]&lt;br /&gt;
* [[RenderTask]]&lt;br /&gt;
* [[Sound]]&lt;br /&gt;
* [[SoundAPI]]&lt;br /&gt;
* [[SpriteTask]]&lt;br /&gt;
* [[TextTask]]&lt;br /&gt;
* [[Texture]]&lt;br /&gt;
* [[TextureAtlas]]&lt;br /&gt;
* [[VanillaPart]]&lt;br /&gt;
* [[Vector2]]&lt;br /&gt;
* [[Vector3]]&lt;br /&gt;
* [[Vector4]]&lt;br /&gt;
* [[Vertex]]&lt;br /&gt;
* [[ViewerAPI]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Enums&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[BlockRaycastTypes]]&lt;br /&gt;
* [[Colors]]&lt;br /&gt;
* [[EntityPoses]]&lt;br /&gt;
* [[FluidRaycastTypes]]&lt;br /&gt;
* [[HeightmapTypes]]&lt;br /&gt;
* [[ItemDisplayModes]]&lt;br /&gt;
* [[Keybinds]]&lt;br /&gt;
* [[KeyIDs]]&lt;br /&gt;
* [[LoopModes]]&lt;br /&gt;
* [[ParentTypes]]&lt;br /&gt;
* [[PlayerModelParts]]&lt;br /&gt;
* [[PlayStates]]&lt;br /&gt;
* [[PostEffects]]&lt;br /&gt;
* [[Registries]]&lt;br /&gt;
* [[RenderModes]]&lt;br /&gt;
* [[RenderTypes]]&lt;br /&gt;
* [[StringEncodings]]&lt;br /&gt;
* [[TextureTypes]]&lt;br /&gt;
* [[UseActions]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&amp;lt;noinclude&amp;gt;&lt;br /&gt;
Navbox for the bottom of all pages containing documentation.&lt;br /&gt;
&lt;br /&gt;
== Usage==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;WikiText&amp;quot;&amp;gt;&lt;br /&gt;
{{Navbox documentation}}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== Example ==&lt;br /&gt;
{{Navbox documentation}}&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=User:Joeyy/sandbox&amp;diff=363</id>
		<title>User:Joeyy/sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=User:Joeyy/sandbox&amp;diff=363"/>
		<updated>2024-09-28T20:27:53Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: were navigating&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Flatlist/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
== Working on Navbox Template ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;6&amp;quot; | Wiki &lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Globals&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[action_wheel]]&lt;br /&gt;
* [[animations]]&lt;br /&gt;
* [[avatar]]&lt;br /&gt;
* [[client]]&lt;br /&gt;
* [[config]]&lt;br /&gt;
* [[data]]&lt;br /&gt;
* [[events]]&lt;br /&gt;
* [[figuraMetatables]]&lt;br /&gt;
* [[file]]&lt;br /&gt;
* [[host]]&lt;br /&gt;
* [[json]]&lt;br /&gt;
* [[keybinds]]&lt;br /&gt;
* [[listFiles]]&lt;br /&gt;
* [[matrices]]&lt;br /&gt;
* [[models]]&lt;br /&gt;
* [[nameplate]]&lt;br /&gt;
* [[net]]&lt;br /&gt;
* [[parseJson]]&lt;br /&gt;
* [[particles]]&lt;br /&gt;
* [[pings]]&lt;br /&gt;
* [[player]]&lt;br /&gt;
* [[print]]&lt;br /&gt;
* [[printJson]]&lt;br /&gt;
* [[printTable]]&lt;br /&gt;
* [[raycast]]&lt;br /&gt;
* [[renderer]]&lt;br /&gt;
* [[require]]&lt;br /&gt;
* [[resources]]&lt;br /&gt;
* [[sounds]]&lt;br /&gt;
* [[textures]]&lt;br /&gt;
* [[toJson]]&lt;br /&gt;
* [[type]]&lt;br /&gt;
* [[user]]&lt;br /&gt;
* [[vanilla_model]]&lt;br /&gt;
* [[vec]]&lt;br /&gt;
* [[vectors]]&lt;br /&gt;
* [[world]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Types&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[Action]]&lt;br /&gt;
* [[ActionWheelAPI]]&lt;br /&gt;
* [[Animation]]&lt;br /&gt;
* [[AnimationAPI]]&lt;br /&gt;
* [[AvatarAPI]]&lt;br /&gt;
* [[Biome]]&lt;br /&gt;
* [[BlockState]]&lt;br /&gt;
* [[BlockTask]]&lt;br /&gt;
* [[Buffer]]&lt;br /&gt;
* [[ConfigAPI]]&lt;br /&gt;
* [[EntityAPI]]&lt;br /&gt;
* [[EntityNameplateCustomization]]&lt;br /&gt;
* [[EntityTask]]&lt;br /&gt;
* [[Event]]&lt;br /&gt;
* [[Future]]&lt;br /&gt;
* [[HostAPI]]&lt;br /&gt;
* [[HttpRequestBuilder]]&lt;br /&gt;
* [[InputStream]]&lt;br /&gt;
* [[ItemStack]]&lt;br /&gt;
* [[ItemTask]]&lt;br /&gt;
* [[JsonArray]]&lt;br /&gt;
* [[JsonBuilder]]&lt;br /&gt;
* [[JsonObject]]&lt;br /&gt;
* [[JsonSerializer]]&lt;br /&gt;
* [[Keybind]]&lt;br /&gt;
* [[Matrix2]]&lt;br /&gt;
* [[Matrix3]]&lt;br /&gt;
* [[Matrix4]]&lt;br /&gt;
* [[ModelPart]]&lt;br /&gt;
* [[NameplateCustomization]]&lt;br /&gt;
* [[NameplateCustomizationGroup]]&lt;br /&gt;
* [[OutputStream]]&lt;br /&gt;
* [[Page]]&lt;br /&gt;
* [[Particle]]&lt;br /&gt;
* [[ParticleAPI]]&lt;br /&gt;
* [[RendererAPI]]&lt;br /&gt;
* [[RenderTask]]&lt;br /&gt;
* [[Sound]]&lt;br /&gt;
* [[SoundAPI]]&lt;br /&gt;
* [[SpriteTask]]&lt;br /&gt;
* [[TextTask]]&lt;br /&gt;
* [[Texture]]&lt;br /&gt;
* [[TextureAtlas]]&lt;br /&gt;
* [[VanillaPart]]&lt;br /&gt;
* [[Vector2]]&lt;br /&gt;
* [[Vector3]]&lt;br /&gt;
* [[Vector4]]&lt;br /&gt;
* [[Vertex]]&lt;br /&gt;
* [[ViewerAPI]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Enums&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[BlockRaycastTypes]]&lt;br /&gt;
* [[Colors]]&lt;br /&gt;
* [[EntityPoses]]&lt;br /&gt;
* [[FluidRaycastTypes]]&lt;br /&gt;
* [[HeightmapTypes]]&lt;br /&gt;
* [[ItemDisplayModes]]&lt;br /&gt;
* [[Keybinds]]&lt;br /&gt;
* [[KeyIDs]]&lt;br /&gt;
* [[LoopModes]]&lt;br /&gt;
* [[ParentTypes]]&lt;br /&gt;
* [[PlayerModelParts]]&lt;br /&gt;
* [[PlayStates]]&lt;br /&gt;
* [[PostEffects]]&lt;br /&gt;
* [[Registries]]&lt;br /&gt;
* [[RenderModes]]&lt;br /&gt;
* [[RenderTypes]]&lt;br /&gt;
* [[StringEncodings]]&lt;br /&gt;
* [[TextureTypes]]&lt;br /&gt;
* [[UseActions]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Option 1 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | ModelPart Methods&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#ModelPart Properties|ModelPart Properties]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getName|&amp;lt;code&amp;gt;getName&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getType|&amp;lt;code&amp;gt;getType&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Editing ModelPart Hierarchy|Editing ModelPart Hierarchy]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getParent|&amp;lt;code&amp;gt;getParent&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getChildren|&amp;lt;code&amp;gt;getChildren&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:isChildOf|&amp;lt;code&amp;gt;isChildOf&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:copy|&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:addChild|&amp;lt;code&amp;gt;addChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:removeChild|&amp;lt;code&amp;gt;removeChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:remove|&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Manipulation|Manipulation]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:setPos|&amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPos|&amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setRot|&amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getRot|&amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setScale|&amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getScale|&amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setPivot|&amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPivot|&amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetRot|&amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetRot|&amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetScale|&amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetScale|&amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetPivot|&amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetPivot|&amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setMatrix|&amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePos|&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueRot|&amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueScale|&amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePivot|&amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
i think i hate this&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#ModelPart Properties|ModelPart Properties]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getName|&amp;lt;code&amp;gt;getName&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getType|&amp;lt;code&amp;gt;getType&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Editing ModelPart Hierarchy|Editing ModelPart Hierarchy]]&lt;br /&gt;
|- &lt;br /&gt;
| [[#ModelPart:getParent|&amp;lt;code&amp;gt;getParent&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getChildren|&amp;lt;code&amp;gt;getChildren&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:isChildOf|&amp;lt;code&amp;gt;isChildOf&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:copy|&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:addChild|&amp;lt;code&amp;gt;addChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:removeChild|&amp;lt;code&amp;gt;removeChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:remove|&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Manipulation|Manipulation]]&lt;br /&gt;
|- &lt;br /&gt;
| [[#ModelPart:setPos|&amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getPos|&amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setRot|&amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getRot|&amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setScale|&amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getScale|&amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setPivot|&amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getPivot|&amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetRot|&amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetRot|&amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetScale|&amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetScale|&amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetPivot|&amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetPivot|&amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setMatrix|&amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTruePos|&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTrueRot|&amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTrueScale|&amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTruePivot|&amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Option 3 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | [[#ModelPart Properties|ModelPart Properties]]&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getName|&amp;lt;code&amp;gt;getName&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getType|&amp;lt;code&amp;gt;getType&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | [[#Editing ModelPart Hierarchy|Editing ModelPart Hierarchy]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getParent|&amp;lt;code&amp;gt;getParent&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getChildren|&amp;lt;code&amp;gt;getChildren&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:isChildOf|&amp;lt;code&amp;gt;isChildOf&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:copy|&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:addChild|&amp;lt;code&amp;gt;addChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:removeChild|&amp;lt;code&amp;gt;removeChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:remove|&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | [[#Manipulation|Manipulation]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:setPos|&amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPos|&amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setRot|&amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getRot|&amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setScale|&amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getScale|&amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setPivot|&amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPivot|&amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetRot|&amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetRot|&amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetScale|&amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetScale|&amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetPivot|&amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetPivot|&amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setMatrix|&amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePos|&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueRot|&amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueScale|&amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePivot|&amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=FileAPI&amp;diff=348</id>
		<title>FileAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=FileAPI&amp;diff=348"/>
		<updated>2024-09-28T19:53:03Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: /* FileAPI methods */  add hr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Host only|kind=API}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;FileAPI&amp;lt;/code&amp;gt; allows your avatar to access files in isolated folder.&lt;br /&gt;
&lt;br /&gt;
FileAPI is available as global &amp;lt;code&amp;gt;file&amp;lt;/code&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
== Security ==&lt;br /&gt;
FileAPI is fully isolated in your data folder. It is located in your Figura folder, so, default path for it would be &amp;lt;code&amp;gt;figura/data&amp;lt;/code&amp;gt;. FileAPI can&#039;t access any files or directories out of this folder, even when using symbolic links. Attempt to access file or directory outside data folder will result in error.&lt;br /&gt;
Every used path in methods is relative to data folder.&lt;br /&gt;
&lt;br /&gt;
== FileAPI methods ==&lt;br /&gt;
&lt;br /&gt;
=== Security checks ===&lt;br /&gt;
&lt;br /&gt;
Security related methods of FileAPI.&lt;br /&gt;
&lt;br /&gt;
==== allowed ====&lt;br /&gt;
----&lt;br /&gt;
Checks if FileAPI usage is allowed for this avatar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;allowed()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Prints false on non-host avatar.&lt;br /&gt;
print(file:allowed())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== isPathAllowed ====&lt;br /&gt;
----&lt;br /&gt;
Checks if path is allowed for usage.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isPathAllowed(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Relative paths are always relative to data folder.&lt;br /&gt;
print(file:isPathAllowed(&amp;quot;foo&amp;quot;)) -- true&lt;br /&gt;
-- Relative paths that are pointing outside of data folder are not allowed.&lt;br /&gt;
print(file:isPathAllowed(&amp;quot;../foo&amp;quot;)) -- false&lt;br /&gt;
-- Absolute paths pointing to figura data folder are also allowed.&lt;br /&gt;
print(file:isPathAllowed(&amp;quot;C:/path/to/figura/data/foo&amp;quot;)) -- true&lt;br /&gt;
-- Absolute paths outside of data folder are not allowed.&lt;br /&gt;
print(file:isPathAllowed(&amp;quot;C:/foo&amp;quot;)) -- false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Common ===&lt;br /&gt;
&lt;br /&gt;
Methods related both to files and directories.&lt;br /&gt;
&lt;br /&gt;
==== exists ====&lt;br /&gt;
----&lt;br /&gt;
Checks if specified path exists.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;exists(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:exists(&amp;quot;foo.bar&amp;quot;)) -- true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== delete ====&lt;br /&gt;
----&lt;br /&gt;
Deletes file or directory by specified path. Returns true if successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;delete(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Directory fooBar is empty&lt;br /&gt;
print(file:delete(&amp;quot;fooBar&amp;quot;)) -- true&lt;br /&gt;
-- Directory barFoo has files inside&lt;br /&gt;
print(file:delete(&amp;quot;barFoo&amp;quot;)) -- false&lt;br /&gt;
-- foo.bar is not open by any program&lt;br /&gt;
print(file:delete(&amp;quot;foo.bar&amp;quot;)) -- true&lt;br /&gt;
-- bar.foo doesn&#039;t exist&lt;br /&gt;
print(file:delete(&amp;quot;bar.foo&amp;quot;)) -- false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Directories ===&lt;br /&gt;
&lt;br /&gt;
Directory related methods of FileAPI.&lt;br /&gt;
&lt;br /&gt;
==== isDirectory ====&lt;br /&gt;
----&lt;br /&gt;
Checks if specified path is directory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isDirectory(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:isDirectory(&amp;quot;fooBar&amp;quot;)) -- true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== mkdir ====&lt;br /&gt;
----&lt;br /&gt;
Creates directory by specified path. Returns true if successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mkdir(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:exists(&amp;quot;foo&amp;quot;)) -- false&lt;br /&gt;
print(file:mkdir(&amp;quot;foo&amp;quot;)) -- true&lt;br /&gt;
print(file:exists(&amp;quot;foo&amp;quot;)) -- true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#exists|exists]]&lt;br /&gt;
&lt;br /&gt;
==== mkdirs ====&lt;br /&gt;
----&lt;br /&gt;
Creates directory by specified path, and all parent directories if they doesn&#039;t exist. Returns true if successful.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;mkdir(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:exists(&amp;quot;foo/bar&amp;quot;)) -- false&lt;br /&gt;
print(file:mkdir(&amp;quot;foo/bar&amp;quot;)) -- false&lt;br /&gt;
print(file:mkdirs(&amp;quot;foo/bar&amp;quot;)) -- true&lt;br /&gt;
print(file:exists(&amp;quot;foo/bar&amp;quot;)) -- true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#exists|exists]], [[#mkdir|mkdir]]&lt;br /&gt;
&lt;br /&gt;
==== list ====&lt;br /&gt;
----&lt;br /&gt;
Lists files and directories by specified path. Returns table with paths, or null if path doesn&#039;t exist or not a directory.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string|[]?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
printTable(file:list(&amp;quot;&amp;quot;)) --[[{&lt;br /&gt;
&amp;quot;foo.bar&amp;quot;,&lt;br /&gt;
&amp;quot;fooBar&amp;quot;,&lt;br /&gt;
&amp;quot;barFoo&amp;quot;&lt;br /&gt;
}]]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Files ===&lt;br /&gt;
Methods related to files.&lt;br /&gt;
&lt;br /&gt;
==== isFile ====&lt;br /&gt;
----&lt;br /&gt;
Checks if specified path is a file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isFile(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:isFile(&amp;quot;foo.bar&amp;quot;)) -- true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== openReadStream ====&lt;br /&gt;
----&lt;br /&gt;
Open input stream for file at specified path. Throws an error if file doesn&#039;t exist.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;openReadStream(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|InputStream}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Opens an input stream.&lt;br /&gt;
local is = file:openReadStream(&amp;quot;foo.bar&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- Stream must be closed when you finished working with it.&lt;br /&gt;
is:close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[InputStream#close|InputStream:close]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== openWriteStream ====&lt;br /&gt;
----&lt;br /&gt;
Open output stream for file at specified path. Throws an error if unable to create a file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;openWriteStream(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|OutputStream}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Opens an output stream.&lt;br /&gt;
local os = file:openWriteStream(&amp;quot;bar.foo&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
-- Stream must be closed when you finished working with it.&lt;br /&gt;
os:close()&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[OutputStream#close|OutputStream:close]]&lt;br /&gt;
&lt;br /&gt;
==== readString ====&lt;br /&gt;
----&lt;br /&gt;
Reads file at specified path and returns it&#039;s contents as a string in specified encoding.&lt;br /&gt;
Default encoding is &amp;lt;code&amp;gt;utf8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;readString(path {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;readString(path {{type|string}}, encoding {{type|BufferEncoding}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:readString(&amp;quot;foo.bar&amp;quot;)) -- Hello, world!&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== writeString ====&lt;br /&gt;
----&lt;br /&gt;
Writes string in specified encoding to file by specified path.&lt;br /&gt;
Default encoding is &amp;lt;code&amp;gt;utf8&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;writeString(path {{type|string}}, contents {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;writeString(path {{type|string}}, contents {{type|string}}, encoding {{type|BufferEncoding}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
print(file:writeString(&amp;quot;foo.bar&amp;quot;, &amp;quot;Hello, world!&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=ConfigAPI&amp;diff=347</id>
		<title>ConfigAPI</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=ConfigAPI&amp;diff=347"/>
		<updated>2024-09-28T19:52:15Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Make consistent with other Type pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Host only|kind=API}}&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;ConfigAPI&amp;lt;/code&amp;gt; allows storing and loading data between reloads of your avatar.&lt;br /&gt;
&lt;br /&gt;
ConfigAPI is available as the global &amp;lt;code&amp;gt;config&amp;lt;/code&amp;gt; variable.&lt;br /&gt;
&lt;br /&gt;
== Data Types ==&lt;br /&gt;
Only some data types are supported by ConfigAPI. All other data types will be converted to {{type|nil}}. The supported data types are:&lt;br /&gt;
* {{type|nil}}&lt;br /&gt;
* {{type|boolean}}&lt;br /&gt;
* {{type|string}}&lt;br /&gt;
* {{type|number}}&lt;br /&gt;
* {{type|table}}&lt;br /&gt;
* all types of {{type|Vector}}&lt;br /&gt;
* all types of {{type|Matrix}}&lt;br /&gt;
&amp;lt;!-- add a tutorial! --&amp;gt;&lt;br /&gt;
== ConfigAPI Methods ==&lt;br /&gt;
&lt;br /&gt;
=== Configuration Switching ===&lt;br /&gt;
&lt;br /&gt;
==== setName ====&lt;br /&gt;
----&lt;br /&gt;
Also available as &amp;lt;code&amp;gt;ConfigAPI:name&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Sets the name of the configuration file to read and write data to. By default, the name of the configuration file is the same as the name of the currently loaded avatar.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setName(name {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ConfigAPI}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
config:setName(&amp;quot;my_config_file_name&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getName ====&lt;br /&gt;
----&lt;br /&gt;
Returns the name of the active configuration file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Print the active configuration file&#039;s name.&lt;br /&gt;
print(config:getName())&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Reading and Writing Data ===&lt;br /&gt;
==== load ====&lt;br /&gt;
----&lt;br /&gt;
Read a saved value from the active configuration file (see [[ConfigAPI#ConfigAPI:setName|setName]]) by key and return it.&lt;br /&gt;
If no key is given, return all of the saved keys and values in a table.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;load(key {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|any|?}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;load()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|table}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Print all saved values.&lt;br /&gt;
printTable(config:load())&lt;br /&gt;
-- Print one specific value.&lt;br /&gt;
print(config:load(&amp;quot;my_value&amp;quot;))&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== save ====&lt;br /&gt;
----&lt;br /&gt;
Associate a key with a value in the active configuration file (see [[ConfigAPI#ConfigAPI:setName|setName]].) Only some types of values are allowed; see [[ConfigAPI#Data Types|Data Types]] for details.&lt;br /&gt;
&lt;br /&gt;
If {{type|nil}} is provided as the value, then the key is removed from the file.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;save(key {{type|string}}, value {{type|any|?}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ConfigAPI}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Save a value to be used later.&lt;br /&gt;
config:save(&amp;quot;my_value&amp;quot;, &amp;quot;Figura Wiki&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=ModelPart&amp;diff=346</id>
		<title>ModelPart</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=ModelPart&amp;diff=346"/>
		<updated>2024-09-28T19:48:56Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: /* ModelPart Methods */  add hr&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ModelPart represents a Cube, Mesh, or Group from Blockbench.&lt;br /&gt;
&lt;br /&gt;
Via scripting, ModelParts can be modified dynamically to achieve whatever visuals you need (limited to Minecraft&#039;s rendering engine)&lt;br /&gt;
&lt;br /&gt;
== Accessing ModelParts ==&lt;br /&gt;
&amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt; is the global that acts as the Root of your avatar and is where all ModelParts are stored, either as a child of &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;, a child of a child, or further down the tree.&lt;br /&gt;
&lt;br /&gt;
Specifically, &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;&#039;s children are Blockbench models. When an avatar is selected, not only are a bbmodel&#039;s Cubes, Meshes, and Groups converted into ModelParts, but the bbmodel file itself is converted into a ModelPart.&lt;br /&gt;
&lt;br /&gt;
To access a child ModelPart from a parent ModelPart, [https://www.lua.org/pil/2.5.html index] the parent using the child&#039;s name as a string.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local bbmodel = models[&amp;quot;model&amp;quot;] -- access the bbmodel &amp;quot;model.bbmodel&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This logic is the same for every single ModelPart. If you want to access a child, index the parent with the child&#039;s name.&lt;br /&gt;
&lt;br /&gt;
{{note|&amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt; itself is a ModelPart. This allows you to apply transformations to the entire model, using e.g. &amp;lt;code&amp;gt;models:setScale(0.5)&amp;lt;/code&amp;gt;.|tag=Trivia|color=#A155DA}}&lt;br /&gt;
&lt;br /&gt;
The below example accesses the Head Group from the [[WikiExampleAvatar]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models[&amp;quot;model&amp;quot;][&amp;quot;root&amp;quot;][&amp;quot;Head&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If the above seems tedious, Lua provides a shorthand way of indexing with strings. It only works when the string contains no spaces or special characters.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- Below is invalid, as the name contains spaces&lt;br /&gt;
local superMegaAwsomeThing = models.model.root.Super Mega Awsome Thing&lt;br /&gt;
&lt;br /&gt;
-- Super Mega Awsome Thing would need to be indexed with the normal method&lt;br /&gt;
local superMegaAwsomeThing = models.model.root[&amp;quot;Super Mega Awsome Thing&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BBModels within folders ===&lt;br /&gt;
When a bbmodel is within a folder, Figura will actually turn the folder itself into a ModelPart. This can be confusing as ModelParts are the only thing that does this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local folderHead = models.folder.model.root.Head&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ParentTypes ==&lt;br /&gt;
In Figura, a [[ParentType]] is applied to a ModelPart causing the ModelPart to behave in a predefined way. This behavior includes acting as a vanilla part like the Head or LeftLeg, moving the rendering of special parts like held items, armor, or parrots, and binding the ModelPart to the World instead of the Player.&lt;br /&gt;
&lt;br /&gt;
ParentTypes can either be applied in Blockbench itself or via script.&lt;br /&gt;
=== ParentTypes via BlockBench ===&lt;br /&gt;
To define a ParentType in Blockbench, the name of a Group must begin with a case-sensitive ParentType.&lt;br /&gt;
&lt;br /&gt;
For example, the &amp;lt;code&amp;gt;Head&amp;lt;/code&amp;gt; ParentType causes the ModelPart to move and rotate like the vanilla Head. If you name a Group the following, it will have this ParentType:&lt;br /&gt;
&lt;br /&gt;
* Head&lt;br /&gt;
* HEAD&lt;br /&gt;
* Head2&lt;br /&gt;
* HeadPhones&lt;br /&gt;
&lt;br /&gt;
If you name a group the following, &amp;lt;b&amp;gt;it will not&amp;lt;/b&amp;gt; have the &amp;lt;code&amp;gt;Head&amp;lt;/code&amp;gt; ParentType:&lt;br /&gt;
&lt;br /&gt;
* head    =&amp;gt; &#039;head&#039; is not a valid ParentType. Capitalization matters!&lt;br /&gt;
* BigHead =&amp;gt; Does not begin with ParentType&lt;br /&gt;
* HeAd    =&amp;gt; &#039;HeAd&#039; is not a valid ParentType. Capitalization matters!&lt;br /&gt;
&lt;br /&gt;
Do note that some English words naturally start with a ParentType which can cause unintended behavior!&lt;br /&gt;
&lt;br /&gt;
For example, the word &amp;quot;Guitar&amp;quot;. Seems innocent, right? Well, &amp;quot;Guitar&amp;quot; starts with &amp;quot;Gui&amp;quot;, and &amp;quot;Gui&amp;quot; is an alias for the ParentType &amp;lt;code&amp;gt;Hud&amp;lt;/code&amp;gt;, a ParentType that binds the ModelPart to the Heads Up Display where the hotbar and inventory reside. This causes the ModelPart to not be visible, as &amp;lt;code&amp;gt;Hud&amp;lt;/code&amp;gt; parts have special rules. Be careful!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Note: ParentTypes are sometimes called Keywords by legacy Figura users&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ParentTypes via Script ===&lt;br /&gt;
Calling the &amp;lt;code&amp;gt;setParentType&amp;lt;/code&amp;gt; on &amp;lt;em&amp;gt;any&amp;lt;/em&amp;gt; ModelPart will override it&#039;s ParentType.&lt;br /&gt;
&lt;br /&gt;
Simply [[#Accessing_ModelParts|access]] the ModelPart, then call &amp;lt;code&amp;gt;setParentType&amp;lt;/code&amp;gt; on it, passing in the ParentType as a string.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
head:setParentType(&amp;quot;RightArm&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To remove a ParentType from a ModelPart, call &amp;lt;code&amp;gt;setParentType&amp;lt;/code&amp;gt; with the string &amp;lt;code&amp;gt;&amp;quot;None&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
head:setParentType(&amp;quot;None&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
ModelParts &amp;lt;b&amp;gt;do not&amp;lt;/b&amp;gt; remember their original ParentType! If you need a ModelPart&#039;s original ParentType, store it in a variable for later:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
local headParentType = head:getParentType()&lt;br /&gt;
head:setParentType(&amp;quot;None&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== ModelPart Methods ==&lt;br /&gt;
&lt;br /&gt;
=== ModelPart Properties ===&lt;br /&gt;
Read-only properties of a ModelPart&lt;br /&gt;
&lt;br /&gt;
==== getName ====&lt;br /&gt;
----&lt;br /&gt;
Returns the name of this ModelPart. ModelParts can have duplicate names.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
print(head:getName()) --&amp;gt; &amp;quot;Head&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getType ====&lt;br /&gt;
----&lt;br /&gt;
Returns the original type of this ModelPart. Can be &amp;lt;code&amp;gt;Cube&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Mesh&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;Group&amp;lt;/code&amp;gt;. BBModels and folders are considered Groups. Cubes with no texture data are also considered Groups, as with no texture data their face data is stripped.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getType()&amp;lt;/code&amp;gt;&lt;br /&gt;
|| &amp;lt;code&amp;gt;&amp;quot;Cube&amp;quot; | &amp;quot;Mesh&amp;quot; | &amp;quot;Group&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
print(head:getType()) --&amp;gt; &amp;quot;Group&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Editing ModelPart Hierarchy ===&lt;br /&gt;
Methods relating to getting other ModelParts and manipulating the ModelPart tree&lt;br /&gt;
&lt;br /&gt;
==== getParent ====&lt;br /&gt;
----&lt;br /&gt;
Returns the parent of this ModelPart, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if this is &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt; or a loose ModelPart created via script.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getParent()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|ModelPart|?}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
print(head:getParent()) --&amp;gt; ModelPart(root)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getChildren ====&lt;br /&gt;
----&lt;br /&gt;
Returns an array containing all children of this ModelPart&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getChildren()&amp;lt;/code&amp;gt;&lt;br /&gt;
|| {{type|ModelPart|[]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
printTable(root:getChildren()) --[[&lt;br /&gt;
ModelPart(Head), &lt;br /&gt;
ModelPart(Body), &lt;br /&gt;
ModelPart(RightArm), &lt;br /&gt;
ModelPart(LeftArm), &lt;br /&gt;
ModelPart(RightLeg), &lt;br /&gt;
ModelPart(LeftLeg),&lt;br /&gt;
]]--&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== isChildOf ====&lt;br /&gt;
----&lt;br /&gt;
Recursively checks if this child is a decedent of the provided ModelPart.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isChildOf(part {{type|ModelPart}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local model = models.model&lt;br /&gt;
local head = model.root.Head&lt;br /&gt;
print(head:isChildOf(model)) --&amp;gt; true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== copy ====&lt;br /&gt;
----&lt;br /&gt;
Copies the data of this ModelPart, assigning it a new name, then returning it. The new name has nothing to do with ParentTypes. The children of the copy are references to the original ModelPart&#039;s children. Extra work needs to be done to recursively copy it&#039;s children. The [[ModelPart#ModelPart_addChild|addChild]] method can then be used to add the copy to the ModelPart tree.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;copy(newName {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|| {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
local headCopy = head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
print(headCopy) --&amp;gt; ModelPart(NewHead)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- The parentType is copied with the ModelPart&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
local headCopy = head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
print(headCopy:getParentType()) --&amp;gt; &amp;quot;Head&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headCopy:setParentType(&amp;quot;None&amp;quot;)&lt;br /&gt;
print(headCopy:getParentType()) --&amp;gt; &amp;quot;None&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setParentType|setParentType]],, [[#getParentType|getParentType]],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Extra work is needed to deep copy a ModelPart&#039;s children as well&lt;br /&gt;
local function deepCopy(model)&lt;br /&gt;
    local copy = model:copy(model:getName())&lt;br /&gt;
    for _, child in pairs(copy:getChildren()) do&lt;br /&gt;
        copy:removeChild(child):addChild(deepCopy(child))&lt;br /&gt;
    end&lt;br /&gt;
    return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
local headCube = head.Head&lt;br /&gt;
&lt;br /&gt;
-- headCopyA contains references to head&#039;s children because it is a shallow copy&lt;br /&gt;
local headCopyA = head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
print(headCopyA.Head == headCube) --&amp;gt; true&lt;br /&gt;
&lt;br /&gt;
-- headCopyB contains true copies of head&#039;s children as it was passed through a function that recursively copies children&lt;br /&gt;
local headCopyB = deepCopy(head)&lt;br /&gt;
print(headCopyB.Head == headCube) --&amp;gt; false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#getName|getName]],, [[#getChildren|getChildren]],, [[#addChild|addChild]],, [[#removeChild|removeChild]],&lt;br /&gt;
&lt;br /&gt;
==== addChild ====&lt;br /&gt;
----&lt;br /&gt;
Adds the provided ModelPart as one of this ModelPart&#039;s children. Beware of adding a parent of this ModelPart as a child! This method returns this ModelPart for method chaining.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;addChild(part {{type|ModelPart}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
local headCopy = root.Head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
root:addChild(headCopy)&lt;br /&gt;
headCopy:setPos(10,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#copy|copy]],, [[#setPos|setPos]],&lt;br /&gt;
&lt;br /&gt;
==== removeChild ====&lt;br /&gt;
----&lt;br /&gt;
Removes a child from this ModelPart. Takes in the child ModelPart itself. This method returns this ModelPart for method chaining.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;removeChild(partToRemove {{type|ModelPart}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
local head = root.Head&lt;br /&gt;
root:removeChild(head) -- Bye bye Head!&lt;br /&gt;
&lt;br /&gt;
-- Head is still valid and can be re-added later, so long as we keep a variable referencing it.&lt;br /&gt;
print(head) --&amp;gt; ModelPart(Head)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== remove ====&lt;br /&gt;
----&lt;br /&gt;
Removes this ModelPart from the parent&#039;s child list. Returns self&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;remove()&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
head:remove() -- Bye bye Head!&lt;br /&gt;
&lt;br /&gt;
-- Head is still valid and can be re-added, so long as we keep a variable referencing it.&lt;br /&gt;
print(head) --&amp;gt; ModelPart(Head)&lt;br /&gt;
models.model.root.LeftLeg:addChild(head)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#addChild|addChild]],&lt;br /&gt;
&lt;br /&gt;
=== Manipulation ===&lt;br /&gt;
Methods relating to manipulating the ModelPart within physical space&lt;br /&gt;
&lt;br /&gt;
==== setPos ====&lt;br /&gt;
----&lt;br /&gt;
Sets the offset of the the position of the ModelPart. Position translation applies on the local rotation axis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPos(pos {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPos(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- Move 10 units on the local y axis&lt;br /&gt;
head:setPos(0, 10, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getPos ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;.  Always 0,0,0 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getPos()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getPos()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
head:setPos(0, 10, 0)&lt;br /&gt;
print(head:getPos()) --&amp;gt; vec(0,10,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setPos|setPos]],&lt;br /&gt;
&lt;br /&gt;
==== setRot ====&lt;br /&gt;
----&lt;br /&gt;
Sets the rotation of the ModelPart. Rotates the ModelPart around the PivotPoint.&lt;br /&gt;
&lt;br /&gt;
Angles are interpreted as degrees. &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setRot(rot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setRot(pitch {{type|number}}, yaw {{type|number}}, roll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- Rotate 45 degrees on the x axis, causing the avatar to look down&lt;br /&gt;
head:setRot(0, 45, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getRot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;. Will be the Rotation values defined in BlockBench when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getRot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(0,0,0) -- Most ModelParts will not have a rotation set in blockbench&lt;br /&gt;
head:setRot(45, 0, 0)&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(45,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setRot|setRot]],&lt;br /&gt;
&lt;br /&gt;
==== setScale ====&lt;br /&gt;
----&lt;br /&gt;
Sets the scale of the ModelPart. Scales the ModelPart around the PivotPoint.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 1. If a number is provided for x and both y and z are not defined, x will be used for all 3 axis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setScale(scale {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setScale(scaleAll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setScale(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
-- Double the size of the head&lt;br /&gt;
head:setScale(2)&lt;br /&gt;
-- Squishes and stretches the entire model&lt;br /&gt;
models.model:setScale(1.5, 0.75, 1.5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getScale ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;.  Always 1,1,1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getScale()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getScale()) --&amp;gt; vec(1,1,1)&lt;br /&gt;
head:setScale(2)&lt;br /&gt;
print(head:getScale()) --&amp;gt; vec(2,2,2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setScale|setScale]],&lt;br /&gt;
&lt;br /&gt;
==== setPivot ====&lt;br /&gt;
----&lt;br /&gt;
Sets the pivot point of the ModelPart. &#039;&#039;This overrides the pivot point defined in blockbench.&#039;&#039; It is recommended to use [[#setOffsetPivot|setOffsetPivot]], instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPivot(pivot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPivot(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- For a normal size humanoid model, the Head&#039;s pivot point is usually at 0,24,0&lt;br /&gt;
-- If we assume that the Head cube is an 8x8x8 cube,&lt;br /&gt;
-- then the head will rotate around the center of the cube instead of the neck&lt;br /&gt;
head:setPivot(0, 28, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getPivot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the Pivot Point defined in BlockBench, or the value set by &amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt; if it was already overwritten.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getPivot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- The Head group&#039;s pivot point for a humanoid model is usually at 0,24,0&lt;br /&gt;
print(head:getPivot()) --&amp;gt; vec(0,24,0)&lt;br /&gt;
head:setPivot(0,0,0)&lt;br /&gt;
-- We have completely ruined the rendering of this ModelPart&lt;br /&gt;
print(head:getPivot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setPivot|setPivot]],&lt;br /&gt;
&lt;br /&gt;
==== setOffsetRot ====&lt;br /&gt;
----&lt;br /&gt;
Sets a rotation value that will be added to the ModelPart&#039;s rotation.&lt;br /&gt;
&lt;br /&gt;
Angles are interpreted as degrees. &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetRot(rot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetRot(pitch {{type|number}}, yaw {{type|number}}, roll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- ModelParts inherit their rotation from blockbench. The Head usually has a rotation of 0,0,0 for consistency with the vanilla model&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
-- Set the offset to 45 degrees on the x axis, causing the avatar to look down&lt;br /&gt;
head:setOffsetRot(0, 45, 0)&lt;br /&gt;
-- The original rotation is unchanged.&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
&lt;br /&gt;
-- setOffsetRot is not additive.&lt;br /&gt;
head:setOffsetRot(0, 25, 0)&lt;br /&gt;
print(head:getOffsetRot()) --&amp;gt; vec(0,25,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#getRot|getRot]], [[#getOffsetRot|getOffsetRot]],&lt;br /&gt;
&lt;br /&gt;
==== getOffsetRot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;. Will be 0,0,0 when the script begins&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOffsetRot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getOffsetRot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
head:setOffsetRot(45, 0, 0)&lt;br /&gt;
print(head:getOffsetRot()) --&amp;gt; vec(45,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setOffsetRot|setOffsetRot]],&lt;br /&gt;
&lt;br /&gt;
==== setOffsetScale ====&lt;br /&gt;
----&lt;br /&gt;
Sets a scale value that will be multiplied with the ModelPart&#039;s scale.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 1. If a number is provided for x and both y and z are not defined, x will be used for all 3 axis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetScale(scale {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetScale(scaleAll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetScale(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
-- Double the size of the head&lt;br /&gt;
head:setScale(2)&lt;br /&gt;
-- Half the size of the head&lt;br /&gt;
head:setOffsetScale(0.5)&lt;br /&gt;
-- Results in no changes&lt;br /&gt;
-- I have no idea what this is used for&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getOffsetScale ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;.  Always 1,1,1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOffsetScale()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getOffsetScale()) --&amp;gt; vec(1,1,1)&lt;br /&gt;
head:setOffsetScale(2)&lt;br /&gt;
print(head:getOffsetScale()) --&amp;gt; vec(2,2,2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setOffsetScale|setOffsetScale]],&lt;br /&gt;
&lt;br /&gt;
==== setOffsetPivot ====&lt;br /&gt;
----&lt;br /&gt;
Sets a value that will be added to the ModelPart&#039;s pivot point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetPivot(pivot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetPivot(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- If we assume that the Head cube is an 8x8x8 cube and offset the pivot up by 4,&lt;br /&gt;
-- then the head will rotate around the center of the cube instead of the neck&lt;br /&gt;
head:setOffsetPivot(0, 4, 0)&lt;br /&gt;
-- Notice that we did not need to know the original pivot point to do this&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getOffsetPivot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;.  Always 0,0,0 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOffsetPivot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getOffsetPivot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
head:setOffsetPivot(0,4,0)&lt;br /&gt;
print(head:getOffsetPivot()) --&amp;gt; vec(0,4,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setOffsetPivot|setOffsetPivot]],&lt;br /&gt;
&lt;br /&gt;
==== setMatrix ====&lt;br /&gt;
----&lt;br /&gt;
Allows you to manually define the matrix used for positioning this ModelPart. Returns self for method chaining.&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt; will undo &amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt; will return invalid values while &amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt; is in effect. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt; are probably also affected, but nobody tested them yet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setMatrix(matrix {{type|Matrix4}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getTruePos ====&lt;br /&gt;
----&lt;br /&gt;
Returns the position after all calculations are done. This includes &amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt; and the data from all playing Animations.&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTruePos()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getTrueRot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the rotation after all calculations are done. This includes &amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;, and the data from all playing Animations.&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTruePos()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getTrueScale ====&lt;br /&gt;
----&lt;br /&gt;
Returns the scale after all calculations are done. This includes &amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;, and the data from all playing Animations.&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTrueScale()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getTruePivot ====&lt;br /&gt;
----&lt;br /&gt;
Returns the pivot point after all calculations are done. This includes &amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTruePivot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Manipulation ===&lt;br /&gt;
Methods relating to modifying how a ModelPart looks&lt;br /&gt;
&lt;br /&gt;
todo: put anything related to renderType, textures, and other visual modifications in here&lt;br /&gt;
&lt;br /&gt;
==== setVisible ====&lt;br /&gt;
----&lt;br /&gt;
Sets if this ModelPart is visible or not. Children of this ModelPart will also be invisible while this part is invisible.&lt;br /&gt;
&lt;br /&gt;
A value of &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; is interpreted as &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; on 0.1.4 and below, and &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; on 0.1.5 and above. This message will disappear &amp;lt;s&amp;gt;if&amp;lt;/s&amp;gt; when 0.1.6 is released.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setVisible(visible {{type|boolean}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
head:setVisible(false) -- Bye bye Head!&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getVisible ====&lt;br /&gt;
----&lt;br /&gt;
Recursively goes up the ModelPart tree until it finds a ModelPart that is invisible, or the ModelPart is &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In other words, if a parent part is invisible, this function returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. If all parent parts are visible, this function will return &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;. Kinda stupid. This is fixed in 0.1.5 to never return &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getVisible()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|bool|?}} {{until|0.1.5}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getVisible()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|bool}} {{since|0.1.5}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(root.Head:getVisible()) --&amp;gt; nil --&amp;lt; this is stupid&lt;br /&gt;
root:setVisible(false) -- Bye bye root!&lt;br /&gt;
print(root.Head:getVisible()) --&amp;gt; false&lt;br /&gt;
root:setVisible(true) -- Welcome back root!&lt;br /&gt;
print(root.Head:getVisible()) --&amp;gt; true --&amp;lt; aaaaaaaa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== setColor ====&lt;br /&gt;
----&lt;br /&gt;
Sets a value to multiply with all pixels on the ModelPart&#039;s texture. Children of this ModelPart inherit the color, multiplied with their own.&lt;br /&gt;
&lt;br /&gt;
1,1,1 multiplies all color channels by 1, resulting in the texture unchanged. 0,0,0 results in all channels being black.&lt;br /&gt;
&lt;br /&gt;
Expects values between 0 and 1. Numbers larger than 1 results in undocumented behaviour. &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 1. If only &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; is defined as a number and both &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are omitted, &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; is used for all 3 color channels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setColor(color {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setColor(colorAll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setColor(r {{type|number}}, g {{type|number}}, b {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Darken the entire model&lt;br /&gt;
root:setColor(0.5,0.5,0.5)&lt;br /&gt;
-- Tint the Head red by reducing the other color channels.&lt;br /&gt;
-- Color is inherited from parents, so the effective color is (0.5, 0.45, 0.45)&lt;br /&gt;
root.Head:setColor(1,0.7,0.7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- If you want to &#039;reset&#039; a child&#039;s color value, extra work is needed.&lt;br /&gt;
&lt;br /&gt;
-- Color is max red&lt;br /&gt;
local color = vec(1,0,0)&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- root has color&lt;br /&gt;
root:setColor(color)&lt;br /&gt;
-- Through magic and wizardry, this &#039;resets&#039; the color of Head back to white, dispite it&#039;s parent having a non-white color&lt;br /&gt;
root.Head:setColor(-color + 2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getColor ====&lt;br /&gt;
----&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setColor&amp;lt;/code&amp;gt;. Returns 1,1,1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getColor()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
root:setColor(0.5)&lt;br /&gt;
print(root:getColor()) --&amp;gt; (0.5, 0.5, 0.5)&lt;br /&gt;
root.Head:setColor(1,0.7,0.7)&lt;br /&gt;
// getColor is not recursive&lt;br /&gt;
print(root.Head:getColor()) --&amp;gt; (1, 0.7, 0.7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setColor|setColor]],&lt;br /&gt;
&lt;br /&gt;
==== setOpacity ====&lt;br /&gt;
----&lt;br /&gt;
Sets the opacity of the ModelPart. Children of this ModelPart inherit the opacity, multiplied with their own.&lt;br /&gt;
&lt;br /&gt;
Minecraft has a minimum visible opacity of 0.1. Opacity values lower than 0.1 will not render at all. Needs verification.&lt;br /&gt;
&lt;br /&gt;
Only supported on [[RenderType|RenderTypes]] that support translucency. The default primary RenderType is &amp;lt;code&amp;gt;TRANSLUCENT&amp;lt;/code&amp;gt;, so most don&#039;t have to worry about it.&lt;br /&gt;
&lt;br /&gt;
Expects a value between 0 and 1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOpacity(opacity {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Half opacity&lt;br /&gt;
root:setOpacity(0.5)&lt;br /&gt;
-- Half of half opacity&lt;br /&gt;
root.Head:setColor(0.5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getOpacity ====&lt;br /&gt;
----&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setOpacity&amp;lt;/code&amp;gt;. Returns 1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOpacity()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|number}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
root:setOpacity(0.5)&lt;br /&gt;
print(root:getOpacity()) --&amp;gt; 0.5&lt;br /&gt;
root.Head:setOpacity(0.5)&lt;br /&gt;
// getOpacity is not recursive&lt;br /&gt;
print(root.Head:getOpacity()) --&amp;gt; 0.5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setOpacity|setOpacity]],&lt;br /&gt;
&lt;br /&gt;
==== setLight ====&lt;br /&gt;
----&lt;br /&gt;
Overrides the lightlevels used to render the ModelPart. Children of this ModelPart inherit the lightlevel.&lt;br /&gt;
&lt;br /&gt;
Expects 2 values between 0 and 15, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;. Providing &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; will undo the override, allowing Minecraft to control the lightlevel again.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setLight(light {{type|Vector2|?}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setLight(blockLight {{type|integer|?}}, skyLight {{type|integer|?}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Max light&lt;br /&gt;
root:setLight(15, 15)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- set light based on position (This is a fix for broken lighting on World parts)&lt;br /&gt;
function events.tick()&lt;br /&gt;
  local pos = player:getPos()&lt;br /&gt;
  local blockLight = world.getBlockLightLevel(pos)&lt;br /&gt;
  local skyLight = world.getSkyLightLevel(pos)&lt;br /&gt;
  root:setLight(blockLight, skyLight)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[PlayerAPI#PlayerAPI:getPos|player:getPos]] [[WorldAPI#WorldAPI.getBlockLightLevel|world.getBlockLightLevel]] [[WorldAPI#WorldAPI.getSkyLightLevel|world.getSkyLightLevel]]&lt;br /&gt;
&lt;br /&gt;
==== getLight ====&lt;br /&gt;
----&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setLight&amp;lt;/code&amp;gt;. Returns &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getLight()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
&lt;br /&gt;
print(root:getLight()) --&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
root:setLight(12, 8)&lt;br /&gt;
&lt;br /&gt;
let light = root:getLight()&lt;br /&gt;
print(light) --&amp;gt; vec(12, 8)&lt;br /&gt;
print(&amp;quot;BlockLightLevel -&amp;gt; &amp;quot;, light.x) --&amp;gt; &amp;quot;BlockLightLevel -&amp;gt; 12&amp;quot;&lt;br /&gt;
print(&amp;quot;SkyLightLevel -&amp;gt; &amp;quot;, light.y) --&amp;gt; &amp;quot;BlockLightLevel -&amp;gt; 8&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setLight|setLight]],&lt;br /&gt;
&lt;br /&gt;
==== setOverlay ====&lt;br /&gt;
----&lt;br /&gt;
Overrides the values used for rendering the red damage tint and the white creeper fuse effect. Really only useful for preventing the damage overlay from rendering on stuff like armor.&lt;br /&gt;
&lt;br /&gt;
Valid values for whiteOverlay: 0-15&lt;br /&gt;
&lt;br /&gt;
Valid values for hurtOverlay: 0-7&lt;br /&gt;
&lt;br /&gt;
whiteOverlay is a gradually increasing white tint from 0 - 15&lt;br /&gt;
&lt;br /&gt;
hurtOverlay is an unchanging red tint from 0 - 7.&lt;br /&gt;
&lt;br /&gt;
When set, hurtOverlay overrides whiteOverlay. For whiteOverlay to not be overriden, hurtOverlay needs to be 8 or more.&lt;br /&gt;
&lt;br /&gt;
Providing &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; will undo the override, allowing Minecraft to control the overlay again.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOverlay(overlayVector {{type|Vector2|?}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOverlay(whiteOverlay {{type|integer|?}}, hurtOverlay {{type|integer}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Damage overlay&lt;br /&gt;
root:setOverlay(0, 0)&lt;br /&gt;
-- Literally no difference&lt;br /&gt;
root:setOverlay(0, 5)&lt;br /&gt;
root:setOverlay(0, 7)&lt;br /&gt;
&lt;br /&gt;
-- Doesnt work. Damage overlay overrides white&lt;br /&gt;
root:setOverlay(15, 0)&lt;br /&gt;
&lt;br /&gt;
-- This works. Max white overlay&lt;br /&gt;
root:setOverlay(15, 15)&lt;br /&gt;
&lt;br /&gt;
-- This can be used to for preventing the damage overlay on armor&lt;br /&gt;
root:setOverlay(0, 15)&lt;br /&gt;
&lt;br /&gt;
-- Give control back to Minecraft&lt;br /&gt;
root:setOverlay(nil)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== getOverlay ====&lt;br /&gt;
----&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setOverlay&amp;lt;/code&amp;gt;. Returns &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOverlay()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
&lt;br /&gt;
print(root:getOverlay()) --&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
root:setOverlay(8, 15)&lt;br /&gt;
&lt;br /&gt;
let overlay = root:getOverlay()&lt;br /&gt;
print(overlay) --&amp;gt; vec(8, 15)&lt;br /&gt;
print(&amp;quot;whiteOverlay -&amp;gt; &amp;quot;, overlay.x) --&amp;gt; &amp;quot;whiteOverlay -&amp;gt; 8&amp;quot;&lt;br /&gt;
print(&amp;quot;hurtOverlay -&amp;gt; &amp;quot;, overlay.y) --&amp;gt; &amp;quot;hurtOverlay -&amp;gt; 15&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[#setOverlay|setOverlay]],&lt;br /&gt;
&lt;br /&gt;
=== renderTasks ===&lt;br /&gt;
todo: put all rendertask functions in here &lt;br /&gt;
&lt;br /&gt;
=== Render Methods ===&lt;br /&gt;
todo: Put partToWorldMatrix, preRender, midRender, and PostRender in here&lt;br /&gt;
&lt;br /&gt;
=== Animation Methods ===&lt;br /&gt;
todo: put getAnimPos/Rot/Scale and overrideVanillaPos/Rot/Scale in here&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Template:Args&amp;diff=326</id>
		<title>Template:Args</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Template:Args&amp;diff=326"/>
		<updated>2024-09-28T16:35:44Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Table rows for Template:Method&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;|-&lt;br /&gt;
| &amp;lt;code&amp;gt;{{{name}}}({{{1}}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{{return|self: {{type|{{ROOTPAGENAME}}}}}}}&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=ModelPart&amp;diff=301</id>
		<title>ModelPart</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=ModelPart&amp;diff=301"/>
		<updated>2024-09-28T05:41:13Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: /* ModelPart:getRot */ small typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A ModelPart represents a Cube, Mesh, or Group from Blockbench.&lt;br /&gt;
&lt;br /&gt;
Via scripting, ModelParts can be modified dynamically to achieve whatever visuals you need (limited to Minecraft&#039;s rendering engine)&lt;br /&gt;
&lt;br /&gt;
== Accessing ModelParts ==&lt;br /&gt;
&amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt; is the global that acts as the Root of your avatar and is where all ModelParts are stored, either as a child of &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;, a child of a child, or further down the tree.&lt;br /&gt;
&lt;br /&gt;
Specifically, &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;&#039;s children are Blockbench models. When an avatar is selected, not only are a bbmodel&#039;s Cubes, Meshes, and Groups converted into ModelParts, but the bbmodel file itself is converted into a ModelPart.&lt;br /&gt;
&lt;br /&gt;
To access a child ModelPart from a parent ModelPart, [https://www.lua.org/pil/2.5.html index] the parent using the child&#039;s name as a string.&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local bbmodel = models[&amp;quot;model&amp;quot;] -- access the bbmodel &amp;quot;model.bbmodel&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This logic is the same for every single ModelPart. If you want to access a child, index the parent with the child&#039;s name.&lt;br /&gt;
&lt;br /&gt;
{{note|&amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt; itself is a ModelPart. This allows you to apply transformations to the entire model, using e.g. &amp;lt;code&amp;gt;models:setScale(0.5)&amp;lt;/code&amp;gt;.|tag=Trivia|color=#A155DA}}&lt;br /&gt;
&lt;br /&gt;
The below example accesses the Head Group from the [[WikiExampleAvatar]]&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models[&amp;quot;model&amp;quot;][&amp;quot;root&amp;quot;][&amp;quot;Head&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
If the above seems tedious, Lua provides a shorthand way of indexing with strings. It only works when the string contains no spaces or special characters.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- Below is invalid, as the name contains spaces&lt;br /&gt;
local superMegaAwsomeThing = models.model.root.Super Mega Awsome Thing&lt;br /&gt;
&lt;br /&gt;
-- Super Mega Awsome Thing would need to be indexed with the normal method&lt;br /&gt;
local superMegaAwsomeThing = models.model.root[&amp;quot;Super Mega Awsome Thing&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== BBModels within folders ===&lt;br /&gt;
When a bbmodel is within a folder, Figura will actually turn the folder itself into a ModelPart. This can be confusing as ModelParts are the only thing that does this.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local folderHead = models.folder.model.root.Head&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== ModelPart ParentTypes ==&lt;br /&gt;
In Figura, a ParentType is applied to a ModelPart causing the ModelPart to behave in a predefined way. This behavior includes acting as a vanilla part like the Head or LeftLeg, moving the rendering of special parts like held items, armor, or parrots, and binding the ModelPart to the World instead of the Player.&lt;br /&gt;
&lt;br /&gt;
ParentTypes can either be applied in Blockbench itself or via script.&lt;br /&gt;
=== ParentTypes via BlockBench ===&lt;br /&gt;
To define a ParentType in Blockbench, the name of a Group must begin with a case-sensitive ParentType.&lt;br /&gt;
&lt;br /&gt;
For example, the &amp;lt;code&amp;gt;Head&amp;lt;/code&amp;gt; ParentType causes the ModelPart to move and rotate like the vanilla Head. If you name a Group the following, it will have this ParentType:&lt;br /&gt;
&lt;br /&gt;
* Head&lt;br /&gt;
* HEAD&lt;br /&gt;
* Head2&lt;br /&gt;
* HeadPhones&lt;br /&gt;
&lt;br /&gt;
If you name a group the following, &amp;lt;b&amp;gt;it will not&amp;lt;/b&amp;gt; have the &amp;lt;code&amp;gt;Head&amp;lt;/code&amp;gt; ParentType:&lt;br /&gt;
&lt;br /&gt;
* head    =&amp;gt; &#039;head&#039; is not a valid ParentType. Capitalization matters!&lt;br /&gt;
* BigHead =&amp;gt; Does not begin with ParentType&lt;br /&gt;
* HeAd    =&amp;gt; &#039;HeAd&#039; is not a valid ParentType. Capitalization matters!&lt;br /&gt;
&lt;br /&gt;
Do note that some English words naturally start with a ParentType which can cause unintended behavior!&lt;br /&gt;
&lt;br /&gt;
For example, the word &amp;quot;Guitar&amp;quot;. Seems innocent, right? Well, &amp;quot;Guitar&amp;quot; starts with &amp;quot;Gui&amp;quot;, and &amp;quot;Gui&amp;quot; is an alias for the ParentType &amp;lt;code&amp;gt;Hud&amp;lt;/code&amp;gt;, a ParentType that binds the ModelPart to the Heads Up Display where the hotbar and inventory reside. This causes the ModelPart to not be visible, as &amp;lt;code&amp;gt;Hud&amp;lt;/code&amp;gt; parts have special rules. Be careful!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;Note: ParentTypes are sometimes called Keywords by legacy Figura users&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== ParentTypes via Script ===&lt;br /&gt;
Calling the &amp;lt;code&amp;gt;setParentType&amp;lt;/code&amp;gt; on &amp;lt;em&amp;gt;any&amp;lt;/em&amp;gt; ModelPart will override it&#039;s ParentType.&lt;br /&gt;
&lt;br /&gt;
Simply [[ModelParts#Accessing_ModelParts|access]] the ModelPart, then call &amp;lt;code&amp;gt;setParentType&amp;lt;/code&amp;gt; on it, passing in the ParentType as a string.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
head:setParentType(&amp;quot;RightArm&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
To remove a ParentType from a ModelPart, call &amp;lt;code&amp;gt;setParentType&amp;lt;/code&amp;gt; with the string &amp;lt;code&amp;gt;&amp;quot;None&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
head:setParentType(&amp;quot;None&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
ModelParts &amp;lt;b&amp;gt;do not&amp;lt;/b&amp;gt; remember their original ParentType! If you need a ModelPart&#039;s original ParentType, store it in a variable for later:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
local headParentType = head:getParentType()&lt;br /&gt;
head:setParentType(&amp;quot;None&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
== ModelPart Methods ==&lt;br /&gt;
&lt;br /&gt;
=== ModelPart Properties ===&lt;br /&gt;
Read-only properties of a ModelPart&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getName&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the name of this ModelPart. ModelParts can have duplicate names.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getName()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|string}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
print(head:getName()) --&amp;gt; &amp;quot;Head&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getType&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the original type of this ModelPart. Can be &amp;lt;code&amp;gt;Cube&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Mesh&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;Group&amp;lt;/code&amp;gt;. BBModels and folders are considered Groups. Cubes with no texture data are also considered Groups, as with no texture data their face data is stripped.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getType()&amp;lt;/code&amp;gt;&lt;br /&gt;
|| &amp;lt;code&amp;gt;&amp;quot;Cube&amp;quot; | &amp;quot;Mesh&amp;quot; | &amp;quot;Group&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
print(head:getType()) --&amp;gt; &amp;quot;Group&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Editing ModelPart Hierarchy ===&lt;br /&gt;
Methods relating to getting other ModelParts and manipulating the ModelPart tree&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getParent&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the parent of this ModelPart, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; if this is &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt; or a loose ModelPart created via script.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getParent()&amp;lt;/code&amp;gt;&lt;br /&gt;
|| {{type|ModelPart}} | {{type|nil}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
print(head:getParent()) --&amp;gt; ModelPart(root)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getChildren&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns an array of all children of this ModelPart&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getChildren()&amp;lt;/code&amp;gt;&lt;br /&gt;
|| {{type|ModelPart|[]}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
print(root:getChildren()) --[[&lt;br /&gt;
ModelPart(Head), &lt;br /&gt;
ModelPart(Body), &lt;br /&gt;
ModelPart(RightArm), &lt;br /&gt;
ModelPart(LeftArm), &lt;br /&gt;
ModelPart(RightLeg), &lt;br /&gt;
ModelPart(LeftLeg),&lt;br /&gt;
]]--&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:isChildOf&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Recursively checks if this child is a decedent of the provided ModelPart.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;isChildOf(part {{type|ModelPart}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|| {{type|boolean}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local model = models.model&lt;br /&gt;
local head = model.root.Head&lt;br /&gt;
print(head:isChildOf(model)) --&amp;gt; true&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:copy&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Copies the data of this ModelPart, assigning it a new name, then returning it. The new name has nothing to do with ParentTypes. The children of the copy are references to the original ModelPart&#039;s children. Extra work needs to be done to recursively copy it&#039;s children. The [[ModelPart#ModelPart_addChild|addChild]] method can then be used to add the copy to the ModelPart tree.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;copy(newName {{type|string}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|| {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
local headCopy = head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
print(headCopy) --&amp;gt; ModelPart(NewHead)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- The parentType is copied with the ModelPart&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
local headCopy = head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
print(headCopy:getParentType()) --&amp;gt; &amp;quot;Head&amp;quot;&lt;br /&gt;
&lt;br /&gt;
headCopy:setParentType(&amp;quot;None&amp;quot;)&lt;br /&gt;
print(headCopy:getParentType()) --&amp;gt; &amp;quot;None&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setParentType|setParentType]], [[ModelParts#ModelPart:getParentType|getParentType]]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- Extra work is needed to deep copy a ModelPart&#039;s children as well&lt;br /&gt;
local function deepCopy(model)&lt;br /&gt;
    local copy = model:copy(model:getName())&lt;br /&gt;
    for _, child in pairs(copy:getChildren()) do&lt;br /&gt;
        copy:removeChild(child):addChild(deepCopy(child))&lt;br /&gt;
    end&lt;br /&gt;
    return copy&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
local headCube = head.Head&lt;br /&gt;
&lt;br /&gt;
-- headCopyA contains references to head&#039;s children because it is a shallow copy&lt;br /&gt;
local headCopyA = head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
print(headCopyA.Head == headCube) --&amp;gt; true&lt;br /&gt;
&lt;br /&gt;
-- headCopyB contains true copies of head&#039;s children as it was passed through a function that recursively copies children&lt;br /&gt;
local headCopyB = deepCopy(head)&lt;br /&gt;
print(headCopyB.Head == headCube) --&amp;gt; false&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:getName|getName]], [[ModelParts#ModelPart:getChildren|getChildren]], [[ModelParts#ModelPart:addChild|addChild]], [[ModelParts#ModelPart:removeChild|removeChild]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:addChild&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Adds the provided ModelPart as one of this ModelPart&#039;s children. Beware of adding a parent of this ModelPart as a child! This method returns this ModelPart for method chaining.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;addChild(part {{type|ModelPart}})&amp;lt;/code&amp;gt;&lt;br /&gt;
|| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
local headCopy = root.Head:copy(&amp;quot;NewHead&amp;quot;)&lt;br /&gt;
root:addChild(headCopy)&lt;br /&gt;
headCopy:setPos(10,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:copy|copy]], [[ModelParts#ModelPart:setPos|setPos]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:removeChild&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Removes a child from this ModelPart. Takes in the child ModelPart itself. This method returns this ModelPart for method chaining.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;removeChild(partToRemove {{type|ModelPart}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
local head = root.Head&lt;br /&gt;
root:removeChild(head) -- Bye bye Head!&lt;br /&gt;
&lt;br /&gt;
-- Head is still valid and can be re-added later, so long as we keep a variable referencing it.&lt;br /&gt;
print(head) --&amp;gt; ModelPart(Head)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:remove&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Removes this ModelPart from the parent&#039;s child list. Returns self&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;remove()&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
head:remove() -- Bye bye Head!&lt;br /&gt;
&lt;br /&gt;
-- Head is still valid and can be re-added, so long as we keep a variable referencing it.&lt;br /&gt;
print(head) --&amp;gt; ModelPart(Head)&lt;br /&gt;
models.model.root.LeftLeg:addChild(head)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:addChild|addChild]]&lt;br /&gt;
&lt;br /&gt;
=== Manipulation ===&lt;br /&gt;
Methods relating to manipulating the ModelPart within physical space&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:setPos&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Sets the offset of the the position of the ModelPart. Position translation applies on the local rotation axis.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPos(pos {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPos(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- Move 10 units on the local y axis&lt;br /&gt;
head:setPos(0, 10, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getPos&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;.  Always 0,0,0 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getPos()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getPos()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
head:setPos(0, 10, 0)&lt;br /&gt;
print(head:getPos()) --&amp;gt; vec(0,10,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setPos|setPos]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:setRot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Sets the rotation of the ModelPart. Rotates the ModelPart around the PivotPoint.&lt;br /&gt;
&lt;br /&gt;
Angles are interpreted as degrees. &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setRot(rot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setRot(pitch {{type|number}}, yaw {{type|number}}, roll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- Rotate 45 degrees on the x axis, causing the avatar to look down&lt;br /&gt;
head:setRot(0, 45, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getRot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;. Will be the Rotation values defined in BlockBench when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getRot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(0,0,0) -- Most ModelParts will not have a rotation set in blockbench&lt;br /&gt;
head:setRot(45, 0, 0)&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(45,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setRot|setRot]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:setScale&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Sets the scale of the ModelPart. Scales the ModelPart around the PivotPoint.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 1. If a number is provided for x and both y and z are not defined, x will be used for all 3 axis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setScale(scale {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setScale(scaleAll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setScale(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
-- Double the size of the head&lt;br /&gt;
head:setScale(2)&lt;br /&gt;
-- Squishes and stretches the entire model&lt;br /&gt;
models.model:setScale(1.5, 0.75, 1.5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getScale&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;.  Always 1,1,1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getScale()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getScale()) --&amp;gt; vec(1,1,1)&lt;br /&gt;
head:setScale(2)&lt;br /&gt;
print(head:getScale()) --&amp;gt; vec(2,2,2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setScale|setScale]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:setPivot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Sets the pivot point of the ModelPart. &#039;&#039;This overrides the pivot point defined in blockbench.&#039;&#039; It is recommended to use [[ModelParts#ModelPart:setOffsetPivot|setOffsetPivot]] instead.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPivot(pivot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setPivot(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- For a normal size humanoid model, the Head&#039;s pivot point is usually at 0,24,0&lt;br /&gt;
-- If we assume that the Head cube is an 8x8x8 cube,&lt;br /&gt;
-- then the head will rotate around the center of the cube instead of the neck&lt;br /&gt;
head:setPivot(0, 28, 0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getPivot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the Pivot Point defined in BlockBench, or the value set by &amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt; if it was already overwritten.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getPivot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- The Head group&#039;s pivot point for a humanoid model is usually at 0,24,0&lt;br /&gt;
print(head:getPivot()) --&amp;gt; vec(0,24,0)&lt;br /&gt;
head:setPivot(0,0,0)&lt;br /&gt;
-- We have completely ruined the rendering of this ModelPart&lt;br /&gt;
print(head:getPivot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setPivot|setPivot]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:setOffsetRot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Sets a rotation value that will be added to the ModelPart&#039;s rotation.&lt;br /&gt;
&lt;br /&gt;
Angles are interpreted as degrees. &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetRot(rot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetRot(pitch {{type|number}}, yaw {{type|number}}, roll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- ModelParts inherit their rotation from blockbench. The Head usually has a rotation of 0,0,0 for consistency with the vanilla model&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
-- Set the offset to 45 degrees on the x axis, causing the avatar to look down&lt;br /&gt;
head:setOffsetRot(0, 45, 0)&lt;br /&gt;
-- The original rotation is unchanged.&lt;br /&gt;
print(head:getRot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
&lt;br /&gt;
-- setOffsetRot is not additive.&lt;br /&gt;
head:setOffsetRot(0, 25, 0)&lt;br /&gt;
print(head:getOffsetRot()) --&amp;gt; vec(0,25,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:getRot|getRot]] [[ModelParts#ModelPart:getOffsetRot|getOffsetRot]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getOffsetRot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;. Will be 0,0,0 when the script begins&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOffsetRot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getOffsetRot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
head:setOffsetRot(45, 0, 0)&lt;br /&gt;
print(head:getOffsetRot()) --&amp;gt; vec(45,0,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setOffsetRot|setOffsetRot]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:setOffsetScale&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Sets a scale value that will be multiplied with the ModelPart&#039;s scale.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 1. If a number is provided for x and both y and z are not defined, x will be used for all 3 axis.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetScale(scale {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetScale(scaleAll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetScale(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
-- Double the size of the head&lt;br /&gt;
head:setScale(2)&lt;br /&gt;
-- Half the size of the head&lt;br /&gt;
head:setOffsetScale(0.5)&lt;br /&gt;
-- Results in no changes&lt;br /&gt;
-- I have no idea what this is used for&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getOffsetScale&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;.  Always 1,1,1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOffsetScale()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getOffsetScale()) --&amp;gt; vec(1,1,1)&lt;br /&gt;
head:setOffsetScale(2)&lt;br /&gt;
print(head:getOffsetScale()) --&amp;gt; vec(2,2,2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setOffsetScale|setOffsetScale]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:setOffsetPivot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Sets a value that will be added to the ModelPart&#039;s pivot point.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 0.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetPivot(pivot {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOffsetPivot(x {{type|number}}, y {{type|number}}, z {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
-- If we assume that the Head cube is an 8x8x8 cube and offset the pivot up by 4,&lt;br /&gt;
-- then the head will rotate around the center of the cube instead of the neck&lt;br /&gt;
head:setOffsetPivot(0, 4, 0)&lt;br /&gt;
-- Notice that we did not need to know the original pivot point to do this&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getOffsetPivot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the value that was used for &amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;.  Always 0,0,0 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOffsetPivot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(head:getOffsetPivot()) --&amp;gt; vec(0,0,0)&lt;br /&gt;
head:setOffsetPivot(0,4,0)&lt;br /&gt;
print(head:getOffsetPivot()) --&amp;gt; vec(0,4,0)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setOffsetPivot|setOffsetPivot]]&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:setMatrix&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Allows you to manually define the matrix used for positioning this ModelPart. Returns self for method chaining.&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt; will undo &amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Using &amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt; will return invalid values while &amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt; is in effect. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt; are probably also affected, but nobody tested them yet.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setMatrix(matrix {{type|Matrix4}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getTruePos&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the position after all calculations are done. This includes &amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt; and the data from all playing Animations.&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTruePos()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getTrueRot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the rotation after all calculations are done. This includes &amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;, and the data from all playing Animations.&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTruePos()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getTrueScale&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the scale after all calculations are done. This includes &amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;, and the data from all playing Animations.&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTrueScale()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== &amp;lt;code&amp;gt;ModelPart:getTruePivot&amp;lt;/code&amp;gt; ====&lt;br /&gt;
Returns the pivot point after all calculations are done. This includes &amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This does not include ParentTypes or transformations applied from a parent part.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getTruePivot()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- no example provided&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Visual Manipulation ===&lt;br /&gt;
Methods relating to modifying how a ModelPart looks&lt;br /&gt;
&lt;br /&gt;
todo: put anything related to renderType, textures, and other visual modifications in here&lt;br /&gt;
&lt;br /&gt;
==== ModelPart:setVisible ====&lt;br /&gt;
Sets if this ModelPart is visible or not. Children of this ModelPart will also be invisible while this part is invisible.&lt;br /&gt;
&lt;br /&gt;
A value of &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; is interpreted as &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; on 0.1.4 and below, and &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt; on 0.1.5 and above. This message will disappear &amp;lt;s&amp;gt;if&amp;lt;/s&amp;gt; when 0.1.6 is released.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setVisible(visible {{type|boolean}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local head = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
head:setVisible(false) -- Bye bye Head!&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ModelPart:getVisible ====&lt;br /&gt;
Recursively goes up the ModelPart tree until it finds a ModelPart that is invisible, or the ModelPart is &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
In other words, if a parent part is invisible, this function returns &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;. If all parent parts are visible, this function will return &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;. Kinda stupid. This is fixed in 0.1.5 to never return &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getVisible()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|bool}} &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; {{type|nil}} {{until|0.1.5}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getVisible()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|bool}} {{since|0.1.5}}&lt;br /&gt;
|}&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root.Head&lt;br /&gt;
&lt;br /&gt;
print(root.Head:getVisible()) --&amp;gt; nil --&amp;lt; this is stupid&lt;br /&gt;
root:setVisible(false) -- Bye bye root!&lt;br /&gt;
print(root.Head:getVisible()) --&amp;gt; false&lt;br /&gt;
root:setVisible(true) -- Welcome back root!&lt;br /&gt;
print(root.Head:getVisible()) --&amp;gt; true --&amp;lt; aaaaaaaa&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ModelPart:setColor ====&lt;br /&gt;
Sets a value to multiply with all pixels on the ModelPart&#039;s texture. Children of this ModelPart inherit the color, multiplied with their own.&lt;br /&gt;
&lt;br /&gt;
1,1,1 multiplies all color channels by 1, resulting in the texture unchanged. 0,0,0 results in all channels being black.&lt;br /&gt;
&lt;br /&gt;
Expects values between 0 and 1. Numbers larger than 1 results in undocumented behaviour. &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; values are interpreted as 1. If only &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; is defined as a number and both &amp;lt;code&amp;gt;g&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;b&amp;lt;/code&amp;gt; are omitted, &amp;lt;code&amp;gt;r&amp;lt;/code&amp;gt; is used for all 3 color channels.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setColor(color {{type|Vector3}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setColor(colorAll {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setColor(r {{type|number}}, g {{type|number}}, b {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Darken the entire model&lt;br /&gt;
root:setColor(0.5,0.5,0.5)&lt;br /&gt;
-- Tint the Head red by reducing the other color channels.&lt;br /&gt;
-- Color is inherited from parents, so the effective color is (0.5, 0.45, 0.45)&lt;br /&gt;
root.Head:setColor(1,0.7,0.7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
-- If you want to &#039;reset&#039; a child&#039;s color value, extra work is needed.&lt;br /&gt;
&lt;br /&gt;
-- Color is max red&lt;br /&gt;
local color = vec(1,0,0)&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- root has color&lt;br /&gt;
root:setColor(color)&lt;br /&gt;
-- Through magic and wizardry, this &#039;resets&#039; the color of Head back to white, dispite it&#039;s parent having a non-white color&lt;br /&gt;
root.Head:setColor(-color + 2)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ModelPart:getColor ====&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setColor&amp;lt;/code&amp;gt;. Returns 1,1,1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getColor()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector3}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
root:setColor(0.5)&lt;br /&gt;
print(root:getColor()) --&amp;gt; (0.5, 0.5, 0.5)&lt;br /&gt;
root.Head:setColor(1,0.7,0.7)&lt;br /&gt;
// getColor is not recursive&lt;br /&gt;
print(root.Head:getColor()) --&amp;gt; (1, 0.7, 0.7)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setColor|setColor]]&lt;br /&gt;
&lt;br /&gt;
==== ModelPart:setOpacity ====&lt;br /&gt;
Sets the opacity of the ModelPart. Children of this ModelPart inherit the opacity, multiplied with their own.&lt;br /&gt;
&lt;br /&gt;
Minecraft has a minimum visible opacity of 0.1. Opacity values lower than 0.1 will not render at all. Needs verification.&lt;br /&gt;
&lt;br /&gt;
Only supported on [[RenderType|RenderTypes]] that support translucency. The default primary RenderType is &amp;lt;code&amp;gt;TRANSLUCENT&amp;lt;/code&amp;gt;, so most don&#039;t have to worry about it.&lt;br /&gt;
&lt;br /&gt;
Expects a value between 0 and 1.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOpacity(opacity {{type|number}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Half opacity&lt;br /&gt;
root:setOpacity(0.5)&lt;br /&gt;
-- Half of half opacity&lt;br /&gt;
root.Head:setColor(0.5)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ModelPart:getOpacity ====&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setOpacity&amp;lt;/code&amp;gt;. Returns 1 when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOpacity()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|number}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
root:setOpacity(0.5)&lt;br /&gt;
print(root:getOpacity()) --&amp;gt; 0.5&lt;br /&gt;
root.Head:setOpacity(0.5)&lt;br /&gt;
// getOpacity is not recursive&lt;br /&gt;
print(root.Head:getOpacity()) --&amp;gt; 0.5&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setOpacity|setOpacity]]&lt;br /&gt;
&lt;br /&gt;
==== ModelPart:setLight ====&lt;br /&gt;
Overrides the lightlevels used to render the ModelPart. Children of this ModelPart inherit the lightlevel.&lt;br /&gt;
&lt;br /&gt;
Expects 2 values between 0 and 15, or &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt;. Providing &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; will undo the override, allowing Minecraft to control the lightlevel again.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setLight(light {{type|Vector2}} &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; {{type|nil}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setLight(blockLight {{type|integer}} &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; {{type|nil}}, skyLight {{type|integer}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Max light&lt;br /&gt;
root:setLight(15, 15)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- set light based on position (This is a fix for broken lighting on World parts)&lt;br /&gt;
function events.tick()&lt;br /&gt;
  local pos = player:getPos()&lt;br /&gt;
  local blockLight = world.getBlockLightLevel(pos)&lt;br /&gt;
  local skyLight = world.getSkyLightLevel(pos)&lt;br /&gt;
  root:setLight(blockLight, skyLight)&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[PlayerAPI#PlayerAPI:getPos|player:getPos]] [[WorldAPI#WorldAPI.getBlockLightLevel|world.getBlockLightLevel]] [[WorldAPI#WorldAPI.getSkyLightLevel|world.getSkyLightLevel]]&lt;br /&gt;
&lt;br /&gt;
==== ModelPart:getLight ====&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setLight&amp;lt;/code&amp;gt;. Returns &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getLight()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
&lt;br /&gt;
print(root:getLight()) --&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
root:setLight(12, 8)&lt;br /&gt;
&lt;br /&gt;
let light = root:getLight()&lt;br /&gt;
print(light) --&amp;gt; vec(12, 8)&lt;br /&gt;
print(&amp;quot;BlockLightLevel -&amp;gt; &amp;quot;, light.x) --&amp;gt; &amp;quot;BlockLightLevel -&amp;gt; 12&amp;quot;&lt;br /&gt;
print(&amp;quot;SkyLightLevel -&amp;gt; &amp;quot;, light.y) --&amp;gt; &amp;quot;BlockLightLevel -&amp;gt; 8&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setLight|setLight]]&lt;br /&gt;
&lt;br /&gt;
==== ModelPart:setOverlay ====&lt;br /&gt;
Overrides the values used for rendering the red damage tint and the white creeper fuse effect. Really only useful for preventing the damage overlay from rendering on stuff like armor.&lt;br /&gt;
&lt;br /&gt;
Valid values for whiteOverlay: 0-15&lt;br /&gt;
&lt;br /&gt;
Valid values for hurtOverlay: 0-7&lt;br /&gt;
&lt;br /&gt;
whiteOverlay is a gradually increasing white tint from 0 - 15&lt;br /&gt;
&lt;br /&gt;
hurtOverlay is an unchanging red tint from 0 - 7.&lt;br /&gt;
&lt;br /&gt;
When set, hurtOverlay overrides whiteOverlay. For whiteOverlay to not be overriden, hurtOverlay needs to be 8 or more.&lt;br /&gt;
&lt;br /&gt;
Providing &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; will undo the override, allowing Minecraft to control the overlay again.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOverlay(overlayVector {{type|Vector2}} &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; {{type|nil}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;setOverlay(whiteOverlay {{type|integer}} &amp;lt;nowiki&amp;gt;|&amp;lt;/nowiki&amp;gt; {{type|nil}}, hurtOverlay {{type|integer}})&amp;lt;/code&amp;gt;&lt;br /&gt;
| self {{type|ModelPart}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
-- Damage overlay&lt;br /&gt;
root:setOverlay(0, 0)&lt;br /&gt;
-- Literally no difference&lt;br /&gt;
root:setOverlay(0, 5)&lt;br /&gt;
root:setOverlay(0, 7)&lt;br /&gt;
&lt;br /&gt;
-- Doesnt work. Damage overlay overrides white&lt;br /&gt;
root:setOverlay(15, 0)&lt;br /&gt;
&lt;br /&gt;
-- This works. Max white overlay&lt;br /&gt;
root:setOverlay(15, 15)&lt;br /&gt;
&lt;br /&gt;
-- This can be used to for preventing the damage overlay on armor&lt;br /&gt;
root:setOverlay(0, 15)&lt;br /&gt;
&lt;br /&gt;
-- Give control back to Minecraft&lt;br /&gt;
root:setOverlay(nil)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== ModelPart:getOverlay ====&lt;br /&gt;
Gets the value set by &amp;lt;code&amp;gt;setOverlay&amp;lt;/code&amp;gt;. Returns &amp;lt;code&amp;gt;nil&amp;lt;/code&amp;gt; when script begins.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Arguments !! Return Type&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;getOverlay()&amp;lt;/code&amp;gt;&lt;br /&gt;
| {{type|Vector2}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local root = models.model.root&lt;br /&gt;
&lt;br /&gt;
print(root:getOverlay()) --&amp;gt; nil&lt;br /&gt;
&lt;br /&gt;
root:setOverlay(8, 15)&lt;br /&gt;
&lt;br /&gt;
let overlay = root:getOverlay()&lt;br /&gt;
print(overlay) --&amp;gt; vec(8, 15)&lt;br /&gt;
print(&amp;quot;whiteOverlay -&amp;gt; &amp;quot;, overlay.x) --&amp;gt; &amp;quot;whiteOverlay -&amp;gt; 8&amp;quot;&lt;br /&gt;
print(&amp;quot;hurtOverlay -&amp;gt; &amp;quot;, overlay.y) --&amp;gt; &amp;quot;hurtOverlay -&amp;gt; 15&amp;quot;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;@see&#039;&#039;&#039; [[ModelParts#ModelPart:setOverlay|setOverlay]]&lt;br /&gt;
&lt;br /&gt;
=== renderTasks ===&lt;br /&gt;
todo: put all rendertask functions in here &lt;br /&gt;
&lt;br /&gt;
=== Render Methods ===&lt;br /&gt;
todo: Put partToWorldMatrix, preRender, midRender, and PostRender in here&lt;br /&gt;
&lt;br /&gt;
=== Animation Methods ===&lt;br /&gt;
todo: put getAnimPos/Rot/Scale and overrideVanillaPos/Rot/Scale in here&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=User:Joeyy/sandbox&amp;diff=300</id>
		<title>User:Joeyy/sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=User:Joeyy/sandbox&amp;diff=300"/>
		<updated>2024-09-28T05:38:25Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: option 1 + option 2 per duck suggestion&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Flatlist/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
== Working on Navbox Template ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;6&amp;quot; | Wiki &lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Types&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
*[[vec]]&lt;br /&gt;
*[[action_wheel]]&lt;br /&gt;
*[[animations]]&lt;br /&gt;
*[[figuraMetatables]]&lt;br /&gt;
*[[nameplate]]&lt;br /&gt;
*[[world]]&lt;br /&gt;
*[[vanilla_model]]&lt;br /&gt;
*[[ModelParts]]&lt;br /&gt;
*[[player]]&lt;br /&gt;
*[[events]]&lt;br /&gt;
*[[keybinds]]&lt;br /&gt;
*[[vectors]]&lt;br /&gt;
*[[matrices]]&lt;br /&gt;
*[[client]]&lt;br /&gt;
*[[host]]&lt;br /&gt;
*[[avatar]]&lt;br /&gt;
*[[particles]]&lt;br /&gt;
*[[sounds]]&lt;br /&gt;
*[[renderer]]&lt;br /&gt;
*[[user]]&lt;br /&gt;
*[[pings]]&lt;br /&gt;
*[[textures]]&lt;br /&gt;
*[[config]]&lt;br /&gt;
*[[data]]&lt;br /&gt;
*[[file]]&lt;br /&gt;
*[[json]]&lt;br /&gt;
*[[resources]]&lt;br /&gt;
*[[net]]&lt;br /&gt;
*[[raycast]]&lt;br /&gt;
*[[type]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Enums&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
*[[Keybinds]]&lt;br /&gt;
*[[ParentTypes]]&lt;br /&gt;
*[[RenderTypes]]&lt;br /&gt;
*[[TextureTypes]]&lt;br /&gt;
*[[KeyIDs]]&lt;br /&gt;
*[[EntityPoses]]&lt;br /&gt;
*[[ItemDisplayModes]]&lt;br /&gt;
*[[PostEffects]]&lt;br /&gt;
*[[PlayStates]]&lt;br /&gt;
*[[LoopModes]]&lt;br /&gt;
*[[Colors]]&lt;br /&gt;
*[[PlayerModelParts]]&lt;br /&gt;
*[[UseActions]]&lt;br /&gt;
*[[RenderModes]]&lt;br /&gt;
*[[StringEncodings]]&lt;br /&gt;
*[[BlockRaycastTypes]]&lt;br /&gt;
*[[FluidRaycastTypes]]&lt;br /&gt;
*[[HeightmapTypes]]&lt;br /&gt;
*[[Registries]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Option 1 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | ModelPart Methods&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#ModelPart Properties|ModelPart Properties]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getName|&amp;lt;code&amp;gt;getName&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getType|&amp;lt;code&amp;gt;getType&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Editing ModelPart Hierarchy|Editing ModelPart Hierarchy]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getParent|&amp;lt;code&amp;gt;getParent&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getChildren|&amp;lt;code&amp;gt;getChildren&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:isChildOf|&amp;lt;code&amp;gt;isChildOf&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:copy|&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:addChild|&amp;lt;code&amp;gt;addChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:removeChild|&amp;lt;code&amp;gt;removeChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:remove|&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Manipulation|Manipulation]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:setPos|&amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPos|&amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setRot|&amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getRot|&amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setScale|&amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getScale|&amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setPivot|&amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPivot|&amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetRot|&amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetRot|&amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetScale|&amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetScale|&amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetPivot|&amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetPivot|&amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setMatrix|&amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePos|&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueRot|&amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueScale|&amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePivot|&amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
i think i hate this&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#ModelPart Properties|ModelPart Properties]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getName|&amp;lt;code&amp;gt;getName&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getType|&amp;lt;code&amp;gt;getType&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Editing ModelPart Hierarchy|Editing ModelPart Hierarchy]]&lt;br /&gt;
|- &lt;br /&gt;
| [[#ModelPart:getParent|&amp;lt;code&amp;gt;getParent&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getChildren|&amp;lt;code&amp;gt;getChildren&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:isChildOf|&amp;lt;code&amp;gt;isChildOf&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:copy|&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:addChild|&amp;lt;code&amp;gt;addChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:removeChild|&amp;lt;code&amp;gt;removeChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:remove|&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Manipulation|Manipulation]]&lt;br /&gt;
|- &lt;br /&gt;
| [[#ModelPart:setPos|&amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getPos|&amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setRot|&amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getRot|&amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setScale|&amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getScale|&amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setPivot|&amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getPivot|&amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetRot|&amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetRot|&amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetScale|&amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetScale|&amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetPivot|&amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetPivot|&amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setMatrix|&amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTruePos|&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTrueRot|&amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTrueScale|&amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTruePivot|&amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Option 3 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | [[#ModelPart Properties|ModelPart Properties]]&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getName|&amp;lt;code&amp;gt;getName&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getType|&amp;lt;code&amp;gt;getType&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | [[#Editing ModelPart Hierarchy|Editing ModelPart Hierarchy]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getParent|&amp;lt;code&amp;gt;getParent&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getChildren|&amp;lt;code&amp;gt;getChildren&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:isChildOf|&amp;lt;code&amp;gt;isChildOf&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:copy|&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:addChild|&amp;lt;code&amp;gt;addChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:removeChild|&amp;lt;code&amp;gt;removeChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:remove|&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; | [[#Manipulation|Manipulation]]&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:setPos|&amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPos|&amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setRot|&amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getRot|&amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setScale|&amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getScale|&amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setPivot|&amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPivot|&amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetRot|&amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetRot|&amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetScale|&amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetScale|&amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetPivot|&amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetPivot|&amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setMatrix|&amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePos|&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueRot|&amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueScale|&amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePivot|&amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=User:Joeyy/sandbox&amp;diff=299</id>
		<title>User:Joeyy/sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=User:Joeyy/sandbox&amp;diff=299"/>
		<updated>2024-09-28T05:29:37Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: /* ModelPart Methods */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Flatlist/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
== Working on Navbox Template ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;6&amp;quot; | Wiki &lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Types&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
*[[vec]]&lt;br /&gt;
*[[action_wheel]]&lt;br /&gt;
*[[animations]]&lt;br /&gt;
*[[figuraMetatables]]&lt;br /&gt;
*[[nameplate]]&lt;br /&gt;
*[[world]]&lt;br /&gt;
*[[vanilla_model]]&lt;br /&gt;
*[[ModelParts]]&lt;br /&gt;
*[[player]]&lt;br /&gt;
*[[events]]&lt;br /&gt;
*[[keybinds]]&lt;br /&gt;
*[[vectors]]&lt;br /&gt;
*[[matrices]]&lt;br /&gt;
*[[client]]&lt;br /&gt;
*[[host]]&lt;br /&gt;
*[[avatar]]&lt;br /&gt;
*[[particles]]&lt;br /&gt;
*[[sounds]]&lt;br /&gt;
*[[renderer]]&lt;br /&gt;
*[[user]]&lt;br /&gt;
*[[pings]]&lt;br /&gt;
*[[textures]]&lt;br /&gt;
*[[config]]&lt;br /&gt;
*[[data]]&lt;br /&gt;
*[[file]]&lt;br /&gt;
*[[json]]&lt;br /&gt;
*[[resources]]&lt;br /&gt;
*[[net]]&lt;br /&gt;
*[[raycast]]&lt;br /&gt;
*[[type]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Enums&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
*[[Keybinds]]&lt;br /&gt;
*[[ParentTypes]]&lt;br /&gt;
*[[RenderTypes]]&lt;br /&gt;
*[[TextureTypes]]&lt;br /&gt;
*[[KeyIDs]]&lt;br /&gt;
*[[EntityPoses]]&lt;br /&gt;
*[[ItemDisplayModes]]&lt;br /&gt;
*[[PostEffects]]&lt;br /&gt;
*[[PlayStates]]&lt;br /&gt;
*[[LoopModes]]&lt;br /&gt;
*[[Colors]]&lt;br /&gt;
*[[PlayerModelParts]]&lt;br /&gt;
*[[UseActions]]&lt;br /&gt;
*[[RenderModes]]&lt;br /&gt;
*[[StringEncodings]]&lt;br /&gt;
*[[BlockRaycastTypes]]&lt;br /&gt;
*[[FluidRaycastTypes]]&lt;br /&gt;
*[[HeightmapTypes]]&lt;br /&gt;
*[[Registries]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Option 1 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | ModelPart Methods&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#ModelPart Properties|ModelPart Properties]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getName|&amp;lt;code&amp;gt;getName&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getType|&amp;lt;code&amp;gt;getType&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Editing ModelPart Hierarchy|Editing ModelPart Hierarchy]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getParent|&amp;lt;code&amp;gt;getParent&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getChildren|&amp;lt;code&amp;gt;getChildren&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:isChildOf|&amp;lt;code&amp;gt;isChildOf&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:copy|&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:addChild|&amp;lt;code&amp;gt;addChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:removeChild|&amp;lt;code&amp;gt;removeChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:remove|&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Manipulation|Manipulation]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:setPos|&amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPos|&amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setRot|&amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getRot|&amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setScale|&amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getScale|&amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setPivot|&amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPivot|&amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetRot|&amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetRot|&amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetScale|&amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetScale|&amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetPivot|&amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetPivot|&amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setMatrix|&amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePos|&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueRot|&amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueScale|&amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePivot|&amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
i think i hate this&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#ModelPart Properties|ModelPart Properties]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getName|&amp;lt;code&amp;gt;getName&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getType|&amp;lt;code&amp;gt;getType&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Editing ModelPart Hierarchy|Editing ModelPart Hierarchy]]&lt;br /&gt;
|- &lt;br /&gt;
| [[#ModelPart:getParent|&amp;lt;code&amp;gt;getParent&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getChildren|&amp;lt;code&amp;gt;getChildren&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:isChildOf|&amp;lt;code&amp;gt;isChildOf&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:copy|&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:addChild|&amp;lt;code&amp;gt;addChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:removeChild|&amp;lt;code&amp;gt;removeChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:remove|&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Manipulation|Manipulation]]&lt;br /&gt;
|- &lt;br /&gt;
| [[#ModelPart:setPos|&amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getPos|&amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setRot|&amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getRot|&amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setScale|&amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getScale|&amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setPivot|&amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getPivot|&amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetRot|&amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetRot|&amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetScale|&amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetScale|&amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetPivot|&amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetPivot|&amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setMatrix|&amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTruePos|&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTrueRot|&amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTrueScale|&amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTruePivot|&amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=User:Joeyy/sandbox&amp;diff=298</id>
		<title>User:Joeyy/sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=User:Joeyy/sandbox&amp;diff=298"/>
		<updated>2024-09-28T05:27:22Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: testing out navigation for Type pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Flatlist/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
== Working on Navbox Template ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;6&amp;quot; | Wiki &lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Types&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
*[[vec]]&lt;br /&gt;
*[[action_wheel]]&lt;br /&gt;
*[[animations]]&lt;br /&gt;
*[[figuraMetatables]]&lt;br /&gt;
*[[nameplate]]&lt;br /&gt;
*[[world]]&lt;br /&gt;
*[[vanilla_model]]&lt;br /&gt;
*[[ModelParts]]&lt;br /&gt;
*[[player]]&lt;br /&gt;
*[[events]]&lt;br /&gt;
*[[keybinds]]&lt;br /&gt;
*[[vectors]]&lt;br /&gt;
*[[matrices]]&lt;br /&gt;
*[[client]]&lt;br /&gt;
*[[host]]&lt;br /&gt;
*[[avatar]]&lt;br /&gt;
*[[particles]]&lt;br /&gt;
*[[sounds]]&lt;br /&gt;
*[[renderer]]&lt;br /&gt;
*[[user]]&lt;br /&gt;
*[[pings]]&lt;br /&gt;
*[[textures]]&lt;br /&gt;
*[[config]]&lt;br /&gt;
*[[data]]&lt;br /&gt;
*[[file]]&lt;br /&gt;
*[[json]]&lt;br /&gt;
*[[resources]]&lt;br /&gt;
*[[net]]&lt;br /&gt;
*[[raycast]]&lt;br /&gt;
*[[type]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Enums&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
*[[Keybinds]]&lt;br /&gt;
*[[ParentTypes]]&lt;br /&gt;
*[[RenderTypes]]&lt;br /&gt;
*[[TextureTypes]]&lt;br /&gt;
*[[KeyIDs]]&lt;br /&gt;
*[[EntityPoses]]&lt;br /&gt;
*[[ItemDisplayModes]]&lt;br /&gt;
*[[PostEffects]]&lt;br /&gt;
*[[PlayStates]]&lt;br /&gt;
*[[LoopModes]]&lt;br /&gt;
*[[Colors]]&lt;br /&gt;
*[[PlayerModelParts]]&lt;br /&gt;
*[[UseActions]]&lt;br /&gt;
*[[RenderModes]]&lt;br /&gt;
*[[StringEncodings]]&lt;br /&gt;
*[[BlockRaycastTypes]]&lt;br /&gt;
*[[FluidRaycastTypes]]&lt;br /&gt;
*[[HeightmapTypes]]&lt;br /&gt;
*[[Registries]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Option 1 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;2&amp;quot; | ModelPart Methods&lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#ModelPart Properties|ModelPart Properties]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getName|&amp;lt;code&amp;gt;getName&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getType|&amp;lt;code&amp;gt;getType&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Editing ModelPart Hierarchy|Editing ModelPart Hierarchy]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:getParent|&amp;lt;code&amp;gt;getParent&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getChildren|&amp;lt;code&amp;gt;getChildren&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:isChildOf|&amp;lt;code&amp;gt;isChildOf&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:copy|&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:addChild|&amp;lt;code&amp;gt;addChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:removeChild|&amp;lt;code&amp;gt;removeChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:remove|&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Manipulation|Manipulation]]&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
* [[#ModelPart:setPos|&amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPos|&amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setRot|&amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getRot|&amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setScale|&amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getScale|&amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setPivot|&amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getPivot|&amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetRot|&amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetRot|&amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetScale|&amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetScale|&amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setOffsetPivot|&amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getOffsetPivot|&amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:setMatrix|&amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePos|&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueRot|&amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTrueScale|&amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
* [[#ModelPart:getTruePivot|&amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Option 2 ==&lt;br /&gt;
&lt;br /&gt;
i think i hate this&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center&amp;quot;&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#ModelPart Properties|ModelPart Properties]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getName|&amp;lt;code&amp;gt;getName&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getType|&amp;lt;code&amp;gt;getType&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Editing ModelPart Hierarchy|Editing ModelPart Hierarchy]]&lt;br /&gt;
|- &lt;br /&gt;
| [[#ModelPart:getParent|&amp;lt;code&amp;gt;getParent&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getChildren|&amp;lt;code&amp;gt;getChildren&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:isChildOf|&amp;lt;code&amp;gt;isChildOf&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:copy|&amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:addChild|&amp;lt;code&amp;gt;addChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:removeChild|&amp;lt;code&amp;gt;removeChild&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:remove|&amp;lt;code&amp;gt;remove&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | [[#Manipulation|Manipulation]]&lt;br /&gt;
|- &lt;br /&gt;
| [[#ModelPart:setPos|&amp;lt;code&amp;gt;setPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getPos|&amp;lt;code&amp;gt;getPos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setRot|&amp;lt;code&amp;gt;setRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getRot|&amp;lt;code&amp;gt;getRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setScale|&amp;lt;code&amp;gt;setScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getScale|&amp;lt;code&amp;gt;getScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setPivot|&amp;lt;code&amp;gt;setPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getPivot|&amp;lt;code&amp;gt;getPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetRot|&amp;lt;code&amp;gt;setOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetRot|&amp;lt;code&amp;gt;getOffsetRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetScale|&amp;lt;code&amp;gt;setOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetScale|&amp;lt;code&amp;gt;getOffsetScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setOffsetPivot|&amp;lt;code&amp;gt;setOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getOffsetPivot|&amp;lt;code&amp;gt;getOffsetPivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:setMatrix|&amp;lt;code&amp;gt;setMatrix&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTruePos|&amp;lt;code&amp;gt;getTruePos&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTrueRot|&amp;lt;code&amp;gt;getTrueRot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTrueScale|&amp;lt;code&amp;gt;getTrueScale&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|-&lt;br /&gt;
| [[#ModelPart:getTruePivot|&amp;lt;code&amp;gt;getTruePivot&amp;lt;/code&amp;gt;]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== ModelPart Methods ==&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Main_Page&amp;diff=297</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Main_Page&amp;diff=297"/>
		<updated>2024-09-28T04:31:57Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: Better than nothing main page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Notice&lt;br /&gt;
 |content=[https://figura-wiki.pages.dev &amp;lt;big&amp;gt;&#039;&#039;&#039;Looking for the old wiki? Click Here&#039;&#039;&#039;&amp;lt;/big&amp;gt;]&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
==Docs==&lt;br /&gt;
* [[ModelPart]]&lt;br /&gt;
* [[Events]]&lt;br /&gt;
* [[Event]]&lt;br /&gt;
* [[ConfigAPI]]&lt;br /&gt;
* [[Colors]]&lt;br /&gt;
&lt;br /&gt;
==Tutorials==&lt;br /&gt;
* [[Pings (Tutorial)]]&lt;br /&gt;
* [[Blockbench]]&lt;br /&gt;
* [[Blinking]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Models&amp;diff=210</id>
		<title>Models</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Models&amp;diff=210"/>
		<updated>2024-09-27T01:58:08Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: jk that didnt work 208 by Joeyy (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ModelParts]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Models&amp;diff=208</id>
		<title>Models</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Models&amp;diff=208"/>
		<updated>2024-09-27T01:56:07Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: fix the capital M to match the global&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{DISPLAYTITLE:title}}&lt;br /&gt;
#REDIRECT [[ModelParts]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=Models&amp;diff=207</id>
		<title>Models</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=Models&amp;diff=207"/>
		<updated>2024-09-27T01:52:43Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: redirect global to the type&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[ModelParts]]&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
	<entry>
		<id>https://wiki.figuramc.org/index.php?title=User:Joeyy/sandbox&amp;diff=195</id>
		<title>User:Joeyy/sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.figuramc.org/index.php?title=User:Joeyy/sandbox&amp;diff=195"/>
		<updated>2024-09-27T01:18:15Z</updated>

		<summary type="html">&lt;p&gt;Joeyy: ModelPart real&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;templatestyles src=&amp;quot;Template:Flatlist/styles.css&amp;quot;/&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot; &lt;br /&gt;
! scope=&amp;quot;col&amp;quot; colspan=&amp;quot;6&amp;quot; | Wiki &lt;br /&gt;
|- &lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Types&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
*[[vec]]&lt;br /&gt;
*[[action_wheel]]&lt;br /&gt;
*[[animations]]&lt;br /&gt;
*[[figuraMetatables]]&lt;br /&gt;
*[[nameplate]]&lt;br /&gt;
*[[world]]&lt;br /&gt;
*[[vanilla_model]]&lt;br /&gt;
*[[ModelParts]]&lt;br /&gt;
*[[player]]&lt;br /&gt;
*[[events]]&lt;br /&gt;
*[[keybinds]]&lt;br /&gt;
*[[vectors]]&lt;br /&gt;
*[[matrices]]&lt;br /&gt;
*[[client]]&lt;br /&gt;
*[[host]]&lt;br /&gt;
*[[avatar]]&lt;br /&gt;
*[[particles]]&lt;br /&gt;
*[[sounds]]&lt;br /&gt;
*[[renderer]]&lt;br /&gt;
*[[user]]&lt;br /&gt;
*[[pings]]&lt;br /&gt;
*[[textures]]&lt;br /&gt;
*[[config]]&lt;br /&gt;
*[[data]]&lt;br /&gt;
*[[file]]&lt;br /&gt;
*[[json]]&lt;br /&gt;
*[[resources]]&lt;br /&gt;
*[[net]]&lt;br /&gt;
*[[raycast]]&lt;br /&gt;
*[[type]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
! scope=&amp;quot;row&amp;quot; | Enums&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;div class=&amp;quot;hlist&amp;quot;&amp;gt;&lt;br /&gt;
*[[Keybinds]]&lt;br /&gt;
*[[ParentTypes]]&lt;br /&gt;
*[[RenderTypes]]&lt;br /&gt;
*[[TextureTypes]]&lt;br /&gt;
*[[KeyIDs]]&lt;br /&gt;
*[[EntityPoses]]&lt;br /&gt;
*[[ItemDisplayModes]]&lt;br /&gt;
*[[PostEffects]]&lt;br /&gt;
*[[PlayStates]]&lt;br /&gt;
*[[LoopModes]]&lt;br /&gt;
*[[Colors]]&lt;br /&gt;
*[[PlayerModelParts]]&lt;br /&gt;
*[[UseActions]]&lt;br /&gt;
*[[RenderModes]]&lt;br /&gt;
*[[StringEncodings]]&lt;br /&gt;
*[[BlockRaycastTypes]]&lt;br /&gt;
*[[FluidRaycastTypes]]&lt;br /&gt;
*[[HeightmapTypes]]&lt;br /&gt;
*[[Registries]]&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Joeyy</name></author>
	</entry>
</feed>