<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.cobblemon.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Frank+The+Farmer</id>
	<title>Cobblemon Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.cobblemon.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Frank+The+Farmer"/>
	<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php/Special:Contributions/Frank_The_Farmer"/>
	<updated>2026-05-30T12:38:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.10</generator>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5740</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5740"/>
		<updated>2025-03-06T12:43:50Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Added primary quirks to the poser page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Rootbone ===&lt;br /&gt;
The &amp;lt;code&amp;gt;rootBone&amp;lt;/code&amp;gt; property specifies what bone in the model will act as the root bone for generic animations not assigned in the poser such as the evolution animation. If the model was made following the standard bone format, then it should simply be the name of the Pokémon in lower case. Punctuation and capitalization matter! So make sure it matches the root bone of your model exactly. &lt;br /&gt;
&lt;br /&gt;
You are &#039;&#039;&#039;required&#039;&#039;&#039; to assign this root bone properly or else it will break the model in certain generic animations! These animations animate the root bone and do not reset it to its original position when it finishes. This can cause model displacement after evolutions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of the simple rootBone property:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This property attempts to call the specified bone from the model to assign it as the root bone for generic animations.&amp;quot;&amp;gt;rootBone&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this scenario, the charizard bone is being called. This charizard bone should contain all other bones so generic animations can move the entire model for whatever they animate.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. &lt;br /&gt;
&lt;br /&gt;
For the sake of clarity, you should always refer to animations like faints, cries, or physicals as &#039;&#039;&#039;Named Animations&#039;&#039;&#039;. This is to help everyone distinguish them from the animations that are applied to poses. This distinction is important because you can assign both &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;namedAnimations&amp;lt;/code&amp;gt; to a pose. This is to allow you to assign different cries, faints, or attack animations to different poses like your floating or flying poses. This allows for water attack animations if you make the animation to support it. This process will be detailed later. Below is a list of currently available Named Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Animations &amp;amp; Named Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;battle_move&amp;gt;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;battle_move_name&amp;gt;&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a specific move in battle. This animation property would assign a pokemon&#039;s animation to an &#039;&#039;&#039;existing&#039;&#039;&#039; action effect. Something like a custom flamethrower animation for Charizard or a Pokémon&#039;s signature move for example.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Basic Animation Calling Functions ====&lt;br /&gt;
Below are the 3 methods to call a &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;namedAnimation&amp;lt;/code&amp;gt; animation. Each of them serve a purpose in layering animations on the Pokémon. &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; animations must always use &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; to serve as the base animation that can be overwritten by other animations when called. &amp;lt;code&amp;gt;NamedAnimations&amp;lt;/code&amp;gt; can either use &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; to layer over the base animation or use &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; to overwrite the base animation while it is playing. The default function used in each named animation type can be changed if your animation supports it. If you want the cry to overwrite rather than layer, then just be sure to animate it properly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock =====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation calling format from the [[Old_Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_stateful =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_primary =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;q.bedrock_primary&amp;lt;/code&amp;gt; comes with a couple of extra properties and they should be written in the following order:&lt;br /&gt;
# group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - The animation JSON that the game will search for the following animation. This should always be the name of a Pokémon. &lt;br /&gt;
# animation: &amp;lt;code&amp;gt;&#039;status&#039;&amp;lt;/code&amp;gt; - The animation the game will call from the previously mentioned animation JSON. Primary animations are usually your attack animations or faints, but you can assign it to other named animations if desired. &lt;br /&gt;
# (optional) excluded labels: &amp;lt;code&amp;gt;&#039;look&#039;&amp;lt;/code&amp;gt; - Exclusive labeled animations that wont get overwritten by this primary animation. The only reasonable use of excluded labels is to exclude the look animation from being overwritten. This is so they can keep looking at a target when using an animation. &lt;br /&gt;
# curve: &amp;lt;code&amp;gt;&#039;q.curve(&#039;symmetrical_wide&#039;)&#039;&amp;lt;/code&amp;gt; - The interpolation curve that this primary animation will use to transition to and from the pose it is written under. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special interpolation curve types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the 4 common primary animations in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, &#039;look&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
====== q.curve ======&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.array, q.random, and math.random =====&lt;br /&gt;
Whenever one of the previously mentioned functions calls the parameter for the animation type, such as &amp;lt;code&amp;gt;&#039;faint&#039;&amp;lt;/code&amp;gt;, in the function, you can substitute the value with another function that can call one of multiple animations instead. These 3 functions can help create the illusion of randomized animations if you have enough animations to support the pose, named animation, or quirk. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.array()&#039;&#039;&#039; - This function selects one of the listed animation types when the function is called. Commonly used to create a pool of quirk animations where each option has equal weights. &lt;br /&gt;
** The following example allows Porygon-z to use one of 6 different twitch animations every 1-10 seconds as a quirk.&lt;br /&gt;
 &amp;quot;q.bedrock_quirk(&#039;porygon-z&#039;, &#039;&#039;&#039;q.array(&#039;twitch1&#039;, &#039;twitch2&#039;, &#039;twitch3&#039;, &#039;twitch4&#039;, &#039;twitch5&#039;, &#039;twitch6&#039;)&#039;&#039;&#039;, 1, 10, 1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.random()&#039;&#039;&#039; - This function selects one of the listed animation types when resources are loaded. This means the animation would be selected on game start or on an asset refresh when using F3+T as observed through testing. This seems to be a bug according to devs. &lt;br /&gt;
** The following example limits Porygon-z to using one of two different twitch animations every 1-10 seconds as a quirk until assets are refreshed.&lt;br /&gt;
 &amp;quot;q.bedrock_quirk(&#039;porygon-z&#039;, &#039;&#039;&#039;q.random(&#039;twitch1&#039;, &#039;twitch2&#039;)&#039;&#039;&#039;, 1, 10, 1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;math.random(0, 1) &amp;lt;  ?  : &#039;&#039;&#039; - You can combine the math.random function with a trinary conditional operator(the ? and : bits) to have the game roll a number and determine what animation or set of animations to play. This option is great for when you want an animation to have a weighted chance to play. You can also add another math.random function or a q.random function as one of the options to keep stacking the odds and options if you wanted a set of common, uncommon, and rare animations in one scenario. You need a minimum of 2 animations to use this function properly, and you can theoretically have it call as many animations as you want. You probably shouldn&#039;t. An example is provided below with the underlined sections detailing what each value is doing. &lt;br /&gt;
 &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;porygon-z&#039;, &#039;&#039;&#039;&amp;lt;abbr title=&amp;quot;The molang function being called&amp;quot;&amp;gt;math.random&amp;lt;/abbr&amp;gt;(&amp;lt;abbr title=&amp;quot;Part of the math.random function. Here you are setting a range of numbers for the game to roll between. You are telling the game to pick a number between 0 and 1, including all the decimals in between&amp;quot;&amp;gt;0, 1&amp;lt;/abbr&amp;gt;) &amp;lt;abbr title=&amp;quot;This section here is basically saying if the rolled number is less than 0.1, then play the faint2 animation. This is effectively a 10% chance!&amp;quot;&amp;gt;&amp;lt; 0.1 ? &#039;faint2&#039;&amp;lt;/abbr&amp;gt; &amp;lt;abbr title=&amp;quot;This section is saying if the rolled value is greater than 0.1, then play the faint animation. This is effectively a 90% chance!&amp;quot;&amp;gt;: &#039;faint&#039;&amp;lt;/abbr&amp;gt;&#039;&#039;&#039;, q.curve(&#039;one&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
There are two methods for conditions that you can use. There is the old true or false conditions where each condition has a property named after it and then there is the new Molang conditions. Molang conditions can use one or more molang functions to have the game check certain properties of the pokemon like what stats it has or even what it is standing on. A list of Cobblemon&#039;s custom molang functions can be found [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/api/molang/MoLangFunctions.kt here with some usable functions highlighted in red.] Due to the complexity of molang and it being so new to cobblemon, it&#039;s difficult to explain its potentially unlimited possibilities. There will be many examples to borrow from in the future. You can even use Molang&#039;s operators to extend your string if needed. &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
How to write a Molang condition:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;: &amp;quot;&amp;lt;insert molang function(s)&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
** One of the few examples:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The function being called which checks for the blocks the Pokémon is standing on.&amp;quot;&amp;gt;q.is_standing_on_blocks&amp;lt;/abbr&amp;gt;(&amp;lt;abbr title=&amp;quot;The depth required in order to be met. Meaning it must be standing above 2 blocks of sand or red sand.&amp;quot;&amp;gt;2&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;One of the blocks this function is checking for. The animation will play if it is standing above 2 blocks of sand&amp;quot;&amp;gt;&#039;minecraft:sand&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;One of the blocks this function is checking for. The animation will play if it is standing above 2 blocks of red sand&amp;quot;&amp;gt;&#039;minecraft:red_sand&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is an example inside of Lunatone&#039;s poser where it uses molang conditions to assign its 2 different sleeping animations: one where it checks for sand so it can lodge itself in the sand, and the other where it floats while it sleeps. By using the &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; operator in front of the second pose&#039;s molang condition, the game makes sure that the conditions are false in order to play the animation.&lt;br /&gt;
    &amp;quot;sand-sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;condition&amp;quot;: &amp;quot;q.is_standing_on_blocks(2, &#039;minecraft:sand&#039;, &#039;minecraft:red_sand&#039;)&amp;quot;,&lt;br /&gt;
      &amp;quot;namedAnimations&amp;quot;: {&lt;br /&gt;
        &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;dummy&#039;, &#039;cry&#039;)&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;lunatone&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;condition&amp;quot;: &amp;quot;!q.is_standing_on_blocks(2, &#039;minecraft:sand&#039;, &#039;minecraft:red_sand&#039;)&amp;quot;,&lt;br /&gt;
      &amp;quot;namedAnimations&amp;quot;: {&lt;br /&gt;
        &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;dummy&#039;, &#039;cry&#039;)&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;lunatone&#039;, &#039;sleep_alt&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
List of Currently Implemented True or False Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isInWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or in rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isUnderWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are typically stateful animations that you can have play over the main animation for a pose. The new poser format introduced primary quirk animations and a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Stateful Quirks ====&lt;br /&gt;
Stateful quirks are animations that will be layered on top of the idle animation currently playing.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.array =====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Primary Quirks ====&lt;br /&gt;
Primary quirks are animations that will play over the idle animation for its entire animation length. Primary quirk animations can control the entire model during its duration so you can have the Pokémon do full flips or something and then interpolate back into the idle pose using a q.curve function. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_primary_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;porygon2&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;idle_quirk&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;40&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
# (optional) excluded labels: &amp;lt;code&amp;gt;&#039;look&#039;&amp;lt;/code&amp;gt; - Exclusive labeled animations that wont get overwritten by this primary animation. The only reasonable use of excluded labels is to exclude the look animation from being overwritten. This is so they can keep looking at a target when using an animation. &lt;br /&gt;
# Curve: &amp;lt;code&amp;gt;q.curve(&#039;symmetrical&#039;)&amp;lt;/code&amp;gt; - The type of curved sin wave used to transition back into the idle animation of the pose. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_primary_quirk(&#039;porygon2&#039;, q.array(&#039;idle_quirk&#039;, &#039;idle_quirk2&#039;), 20, 40, 1, q.curve(&#039;symmetrical&#039;))&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
This example allows porygon2 to use one of 2 quirks as a primary animation. It will either flip or spin before transitioning back into its idle animation. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is a list of current placeholder animations, their default values, and an example you can copy into your animations list directly: &lt;br /&gt;
* &#039;&#039;&#039;q.quadruped_walk&#039;&#039;&#039; - A basic walk animation for Pokémon with 4 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.quadruped_walk(0.66, 1.4, &#039;leg_front_left&#039;, &#039;leg_front_right&#039;, &#039;leg_back_left&#039;, &#039;leg_back_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.biped_walk&#039;&#039;&#039; - A basic walking animation for Pokémon who stand on 2 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.biped_walk(0.66, 1.4, &#039;leg_left&#039;, &#039;leg_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.bimanual_swing&#039;&#039;&#039; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.bimanual_swing(0.66, 1.4, &#039;arm_left&#039;, &#039;arm_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.sine_wing_flap&#039;&#039;&#039; - A basic wing flap animation for a pair of wings on a Pokémon. This animation allows you to control a few more aspects of the specified bones. It&#039;s important to note what axis these &amp;quot;wings&amp;quot; should be rotating in to give the illusion of flapping. So be sure to reference your model. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.sine_wing_flap(&amp;lt;abbr title=&amp;quot;Multiplier for the amplitude value. How far the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Multiplier for the period value. How fast the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Vertical shift value. Radian value that the wing pair will be offset by.&amp;quot;&amp;gt;25&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The x, y, or z axis of the bone that shall be rotated by this animation.&amp;quot;&amp;gt;&#039;z&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The left wing to be animated&amp;quot;&amp;gt;&#039;wing_left&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The right wing to be animated&amp;quot;&amp;gt;&#039;wing_right&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
With the exception of the wing flap placeholder, the first value mentioned in these functions controls how fast the limbs will swing, also called the period value. The second value is the amplitude, or how far a limb will swing. These are both multiplier values to a cosine wave that the author of this post can&#039;t seem to find at this moment. Be sure to tune these values if the limbs don&#039;t work with the defaults. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5739</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5739"/>
		<updated>2025-03-06T12:16:08Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Slight formatting again&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Rootbone ===&lt;br /&gt;
The &amp;lt;code&amp;gt;rootBone&amp;lt;/code&amp;gt; property specifies what bone in the model will act as the root bone for generic animations not assigned in the poser such as the evolution animation. If the model was made following the standard bone format, then it should simply be the name of the Pokémon in lower case. Punctuation and capitalization matter! So make sure it matches the root bone of your model exactly. &lt;br /&gt;
&lt;br /&gt;
You are &#039;&#039;&#039;required&#039;&#039;&#039; to assign this root bone properly or else it will break the model in certain generic animations! These animations animate the root bone and do not reset it to its original position when it finishes. This can cause model displacement after evolutions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of the simple rootBone property:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This property attempts to call the specified bone from the model to assign it as the root bone for generic animations.&amp;quot;&amp;gt;rootBone&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this scenario, the charizard bone is being called. This charizard bone should contain all other bones so generic animations can move the entire model for whatever they animate.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. &lt;br /&gt;
&lt;br /&gt;
For the sake of clarity, you should always refer to animations like faints, cries, or physicals as &#039;&#039;&#039;Named Animations&#039;&#039;&#039;. This is to help everyone distinguish them from the animations that are applied to poses. This distinction is important because you can assign both &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;namedAnimations&amp;lt;/code&amp;gt; to a pose. This is to allow you to assign different cries, faints, or attack animations to different poses like your floating or flying poses. This allows for water attack animations if you make the animation to support it. This process will be detailed later. Below is a list of currently available Named Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Animations &amp;amp; Named Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;battle_move&amp;gt;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;battle_move_name&amp;gt;&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a specific move in battle. This animation property would assign a pokemon&#039;s animation to an &#039;&#039;&#039;existing&#039;&#039;&#039; action effect. Something like a custom flamethrower animation for Charizard or a Pokémon&#039;s signature move for example.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Basic Animation Calling Functions ====&lt;br /&gt;
Below are the 3 methods to call a &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;namedAnimation&amp;lt;/code&amp;gt; animation. Each of them serve a purpose in layering animations on the Pokémon. &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; animations must always use &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; to serve as the base animation that can be overwritten by other animations when called. &amp;lt;code&amp;gt;NamedAnimations&amp;lt;/code&amp;gt; can either use &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; to layer over the base animation or use &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; to overwrite the base animation while it is playing. The default function used in each named animation type can be changed if your animation supports it. If you want the cry to overwrite rather than layer, then just be sure to animate it properly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock =====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation calling format from the [[Old_Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_stateful =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_primary =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;q.bedrock_primary&amp;lt;/code&amp;gt; comes with a couple of extra properties and they should be written in the following order:&lt;br /&gt;
# group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - The animation JSON that the game will search for the following animation. This should always be the name of a Pokémon. &lt;br /&gt;
# animation: &amp;lt;code&amp;gt;&#039;status&#039;&amp;lt;/code&amp;gt; - The animation the game will call from the previously mentioned animation JSON. Primary animations are usually your attack animations or faints, but you can assign it to other named animations if desired. &lt;br /&gt;
# (optional) excluded labels: &amp;lt;code&amp;gt;&#039;look&#039;&amp;lt;/code&amp;gt; - Exclusive labeled animations that wont get overwritten by this primary animation. The only reasonable use of excluded labels is to exclude the look animation from being overwritten. This is so they can keep looking at a target when using an animation. &lt;br /&gt;
# curve: &amp;lt;code&amp;gt;&#039;q.curve(&#039;symmetrical_wide&#039;)&#039;&amp;lt;/code&amp;gt; - The interpolation curve that this primary animation will use to transition to and from the pose it is written under. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special interpolation curve types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the 4 common primary animations in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, &#039;look&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
====== q.curve ======&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.array, q.random, and math.random =====&lt;br /&gt;
Whenever one of the previously mentioned functions calls the parameter for the animation type, such as &amp;lt;code&amp;gt;&#039;faint&#039;&amp;lt;/code&amp;gt;, in the function, you can substitute the value with another function that can call one of multiple animations instead. These 3 functions can help create the illusion of randomized animations if you have enough animations to support the pose, named animation, or quirk. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.array()&#039;&#039;&#039; - This function selects one of the listed animation types when the function is called. Commonly used to create a pool of quirk animations where each option has equal weights. &lt;br /&gt;
** The following example allows Porygon-z to use one of 6 different twitch animations every 1-10 seconds as a quirk.&lt;br /&gt;
 &amp;quot;q.bedrock_quirk(&#039;porygon-z&#039;, &#039;&#039;&#039;q.array(&#039;twitch1&#039;, &#039;twitch2&#039;, &#039;twitch3&#039;, &#039;twitch4&#039;, &#039;twitch5&#039;, &#039;twitch6&#039;)&#039;&#039;&#039;, 1, 10, 1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.random()&#039;&#039;&#039; - This function selects one of the listed animation types when resources are loaded. This means the animation would be selected on game start or on an asset refresh when using F3+T as observed through testing. This seems to be a bug according to devs. &lt;br /&gt;
** The following example limits Porygon-z to using one of two different twitch animations every 1-10 seconds as a quirk until assets are refreshed.&lt;br /&gt;
 &amp;quot;q.bedrock_quirk(&#039;porygon-z&#039;, &#039;&#039;&#039;q.random(&#039;twitch1&#039;, &#039;twitch2&#039;)&#039;&#039;&#039;, 1, 10, 1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;math.random(0, 1) &amp;lt;  ?  : &#039;&#039;&#039; - You can combine the math.random function with a trinary conditional operator(the ? and : bits) to have the game roll a number and determine what animation or set of animations to play. This option is great for when you want an animation to have a weighted chance to play. You can also add another math.random function or a q.random function as one of the options to keep stacking the odds and options if you wanted a set of common, uncommon, and rare animations in one scenario. You need a minimum of 2 animations to use this function properly, and you can theoretically have it call as many animations as you want. You probably shouldn&#039;t. An example is provided below with the underlined sections detailing what each value is doing. &lt;br /&gt;
 &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;porygon-z&#039;, &#039;&#039;&#039;&amp;lt;abbr title=&amp;quot;The molang function being called&amp;quot;&amp;gt;math.random&amp;lt;/abbr&amp;gt;(&amp;lt;abbr title=&amp;quot;Part of the math.random function. Here you are setting a range of numbers for the game to roll between. You are telling the game to pick a number between 0 and 1, including all the decimals in between&amp;quot;&amp;gt;0, 1&amp;lt;/abbr&amp;gt;) &amp;lt;abbr title=&amp;quot;This section here is basically saying if the rolled number is less than 0.1, then play the faint2 animation. This is effectively a 10% chance!&amp;quot;&amp;gt;&amp;lt; 0.1 ? &#039;faint2&#039;&amp;lt;/abbr&amp;gt; &amp;lt;abbr title=&amp;quot;This section is saying if the rolled value is greater than 0.1, then play the faint animation. This is effectively a 90% chance!&amp;quot;&amp;gt;: &#039;faint&#039;&amp;lt;/abbr&amp;gt;&#039;&#039;&#039;, q.curve(&#039;one&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
There are two methods for conditions that you can use. There is the old true or false conditions where each condition has a property named after it and then there is the new Molang conditions. Molang conditions can use one or more molang functions to have the game check certain properties of the pokemon like what stats it has or even what it is standing on. A list of Cobblemon&#039;s custom molang functions can be found [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/api/molang/MoLangFunctions.kt here with some usable functions highlighted in red.] Due to the complexity of molang and it being so new to cobblemon, it&#039;s difficult to explain its potentially unlimited possibilities. There will be many examples to borrow from in the future. You can even use Molang&#039;s operators to extend your string if needed. &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
How to write a Molang condition:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;: &amp;quot;&amp;lt;insert molang function(s)&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
** One of the few examples:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The function being called which checks for the blocks the Pokémon is standing on.&amp;quot;&amp;gt;q.is_standing_on_blocks&amp;lt;/abbr&amp;gt;(&amp;lt;abbr title=&amp;quot;The depth required in order to be met. Meaning it must be standing above 2 blocks of sand or red sand.&amp;quot;&amp;gt;2&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;One of the blocks this function is checking for. The animation will play if it is standing above 2 blocks of sand&amp;quot;&amp;gt;&#039;minecraft:sand&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;One of the blocks this function is checking for. The animation will play if it is standing above 2 blocks of red sand&amp;quot;&amp;gt;&#039;minecraft:red_sand&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is an example inside of Lunatone&#039;s poser where it uses molang conditions to assign its 2 different sleeping animations: one where it checks for sand so it can lodge itself in the sand, and the other where it floats while it sleeps. By using the &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; operator in front of the second pose&#039;s molang condition, the game makes sure that the conditions are false in order to play the animation.&lt;br /&gt;
    &amp;quot;sand-sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;condition&amp;quot;: &amp;quot;q.is_standing_on_blocks(2, &#039;minecraft:sand&#039;, &#039;minecraft:red_sand&#039;)&amp;quot;,&lt;br /&gt;
      &amp;quot;namedAnimations&amp;quot;: {&lt;br /&gt;
        &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;dummy&#039;, &#039;cry&#039;)&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;lunatone&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;condition&amp;quot;: &amp;quot;!q.is_standing_on_blocks(2, &#039;minecraft:sand&#039;, &#039;minecraft:red_sand&#039;)&amp;quot;,&lt;br /&gt;
      &amp;quot;namedAnimations&amp;quot;: {&lt;br /&gt;
        &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;dummy&#039;, &#039;cry&#039;)&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;lunatone&#039;, &#039;sleep_alt&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
List of Currently Implemented True or False Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isInWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or in rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isUnderWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is a list of current placeholder animations, their default values, and an example you can copy into your animations list directly: &lt;br /&gt;
* &#039;&#039;&#039;q.quadruped_walk&#039;&#039;&#039; - A basic walk animation for Pokémon with 4 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.quadruped_walk(0.66, 1.4, &#039;leg_front_left&#039;, &#039;leg_front_right&#039;, &#039;leg_back_left&#039;, &#039;leg_back_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.biped_walk&#039;&#039;&#039; - A basic walking animation for Pokémon who stand on 2 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.biped_walk(0.66, 1.4, &#039;leg_left&#039;, &#039;leg_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.bimanual_swing&#039;&#039;&#039; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.bimanual_swing(0.66, 1.4, &#039;arm_left&#039;, &#039;arm_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.sine_wing_flap&#039;&#039;&#039; - A basic wing flap animation for a pair of wings on a Pokémon. This animation allows you to control a few more aspects of the specified bones. It&#039;s important to note what axis these &amp;quot;wings&amp;quot; should be rotating in to give the illusion of flapping. So be sure to reference your model. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.sine_wing_flap(&amp;lt;abbr title=&amp;quot;Multiplier for the amplitude value. How far the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Multiplier for the period value. How fast the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Vertical shift value. Radian value that the wing pair will be offset by.&amp;quot;&amp;gt;25&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The x, y, or z axis of the bone that shall be rotated by this animation.&amp;quot;&amp;gt;&#039;z&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The left wing to be animated&amp;quot;&amp;gt;&#039;wing_left&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The right wing to be animated&amp;quot;&amp;gt;&#039;wing_right&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
With the exception of the wing flap placeholder, the first value mentioned in these functions controls how fast the limbs will swing, also called the period value. The second value is the amplitude, or how far a limb will swing. These are both multiplier values to a cosine wave that the author of this post can&#039;t seem to find at this moment. Be sure to tune these values if the limbs don&#039;t work with the defaults. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5738</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5738"/>
		<updated>2025-03-06T12:14:35Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Included some new functions for calling animations&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Rootbone ===&lt;br /&gt;
The &amp;lt;code&amp;gt;rootBone&amp;lt;/code&amp;gt; property specifies what bone in the model will act as the root bone for generic animations not assigned in the poser such as the evolution animation. If the model was made following the standard bone format, then it should simply be the name of the Pokémon in lower case. Punctuation and capitalization matter! So make sure it matches the root bone of your model exactly. &lt;br /&gt;
&lt;br /&gt;
You are &#039;&#039;&#039;required&#039;&#039;&#039; to assign this root bone properly or else it will break the model in certain generic animations! These animations animate the root bone and do not reset it to its original position when it finishes. This can cause model displacement after evolutions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of the simple rootBone property:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This property attempts to call the specified bone from the model to assign it as the root bone for generic animations.&amp;quot;&amp;gt;rootBone&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this scenario, the charizard bone is being called. This charizard bone should contain all other bones so generic animations can move the entire model for whatever they animate.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. &lt;br /&gt;
&lt;br /&gt;
For the sake of clarity, you should always refer to animations like faints, cries, or physicals as &#039;&#039;&#039;Named Animations&#039;&#039;&#039;. This is to help everyone distinguish them from the animations that are applied to poses. This distinction is important because you can assign both &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;namedAnimations&amp;lt;/code&amp;gt; to a pose. This is to allow you to assign different cries, faints, or attack animations to different poses like your floating or flying poses. This allows for water attack animations if you make the animation to support it. This process will be detailed later. Below is a list of currently available Named Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Animations &amp;amp; Named Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;battle_move&amp;gt;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;battle_move_name&amp;gt;&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a specific move in battle. This animation property would assign a pokemon&#039;s animation to an &#039;&#039;&#039;existing&#039;&#039;&#039; action effect. Something like a custom flamethrower animation for Charizard or a Pokémon&#039;s signature move for example.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Basic Animation Calling Functions ====&lt;br /&gt;
Below are the 3 methods to call a &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;namedAnimation&amp;lt;/code&amp;gt; animation. Each of them serve a purpose in layering animations on the Pokémon. &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; animations must always use &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; to serve as the base animation that can be overwritten by other animations when called. &amp;lt;code&amp;gt;NamedAnimations&amp;lt;/code&amp;gt; can either use &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; to layer over the base animation or use &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; to overwrite the base animation while it is playing. The default function used in each named animation type can be changed if your animation supports it. If you want the cry to overwrite rather than layer, then just be sure to animate it properly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock =====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation calling format from the [[Old_Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_stateful =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_primary =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;q.bedrock_primary&amp;lt;/code&amp;gt; comes with a couple of extra properties and they should be written in the following order:&lt;br /&gt;
# group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - The animation JSON that the game will search for the following animation. This should always be the name of a Pokémon. &lt;br /&gt;
# animation: &amp;lt;code&amp;gt;&#039;status&#039;&amp;lt;/code&amp;gt; - The animation the game will call from the previously mentioned animation JSON. Primary animations are usually your attack animations or faints, but you can assign it to other named animations if desired. &lt;br /&gt;
# (optional) excluded labels: &amp;lt;code&amp;gt;&#039;look&#039;&amp;lt;/code&amp;gt; - Exclusive labeled animations that wont get overwritten by this primary animation. The only reasonable use of excluded labels is to exclude the look animation from being overwritten. This is so they can keep looking at a target when using an animation. &lt;br /&gt;
# curve: &amp;lt;code&amp;gt;&#039;q.curve(&#039;symmetrical_wide&#039;)&#039;&amp;lt;/code&amp;gt; - The interpolation curve that this primary animation will use to transition to and from the pose it is written under. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special interpolation curve types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the 4 common primary animations in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, &#039;look&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
====== q.curve ======&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
====== q.array, q.random, and math.random ======&lt;br /&gt;
Whenever one of the previously mentioned functions calls the parameter for the animation type, such as &amp;lt;code&amp;gt;&#039;faint&#039;&amp;lt;/code&amp;gt;, in the function, you can substitute the value with another function that can call one of multiple animations instead. These 3 functions can help create the illusion of randomized animations if you have enough animations to support the pose, named animation, or quirk. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.array()&#039;&#039;&#039; - This function selects one of the listed animation types when the function is called. Commonly used to create a pool of quirk animations where each option has equal weights. &lt;br /&gt;
** The following example allows Porygon-z to use one of 6 different twitch animations every 1-10 seconds as a quirk.&lt;br /&gt;
 &amp;quot;q.bedrock_quirk(&#039;porygon-z&#039;, &#039;&#039;&#039;q.array(&#039;twitch1&#039;, &#039;twitch2&#039;, &#039;twitch3&#039;, &#039;twitch4&#039;, &#039;twitch5&#039;, &#039;twitch6&#039;)&#039;&#039;&#039;, 1, 10, 1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.random()&#039;&#039;&#039; - This function selects one of the listed animation types when resources are loaded. This means the animation would be selected on game start or on an asset refresh when using F3+T as observed through testing. This seems to be a bug according to devs. &lt;br /&gt;
** The following example limits Porygon-z to using one of two different twitch animations every 1-10 seconds as a quirk until assets are refreshed.&lt;br /&gt;
 &amp;quot;q.bedrock_quirk(&#039;porygon-z&#039;, &#039;&#039;&#039;q.random(&#039;twitch1&#039;, &#039;twitch2&#039;)&#039;&#039;&#039;, 1, 10, 1)&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;math.random(0, 1) &amp;lt;  ?  : &#039;&#039;&#039; - You can combine the math.random function with a trinary conditional operator(the ? and : bits) to have the game roll a number and determine what animation or set of animations to play. This option is great for when you want an animation to have a weighted chance to play. You can also add another math.random function or a q.random function as one of the options to keep stacking the odds and options if you wanted a set of common, uncommon, and rare animations in one scenario. You need a minimum of 2 animations to use this function properly, and you can theoretically have it call as many animations as you want. You probably shouldn&#039;t. An example is provided below with the underlined sections detailing what each value is doing. &lt;br /&gt;
 &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;porygon-z&#039;, &#039;&#039;&#039;&amp;lt;abbr title=&amp;quot;The molang function being called&amp;quot;&amp;gt;math.random&amp;lt;/abbr&amp;gt;(&amp;lt;abbr title=&amp;quot;Part of the math.random function. Here you are setting a range of numbers for the game to roll between. You are telling the game to pick a number between 0 and 1, including all the decimals in between&amp;quot;&amp;gt;0, 1&amp;lt;/abbr&amp;gt;) &amp;lt;abbr title=&amp;quot;This section here is basically saying if the rolled number is less than 0.1, then play the faint2 animation. This is effectively a 10% chance!&amp;quot;&amp;gt;&amp;lt; 0.1 ? &#039;faint2&#039;&amp;lt;/abbr&amp;gt; &amp;lt;abbr title=&amp;quot;This section is saying if the rolled value is greater than 0.1, then play the faint animation. This is effectively a 90% chance!&amp;quot;&amp;gt;: &#039;faint&#039;&amp;lt;/abbr&amp;gt;&#039;&#039;&#039;, q.curve(&#039;one&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
There are two methods for conditions that you can use. There is the old true or false conditions where each condition has a property named after it and then there is the new Molang conditions. Molang conditions can use one or more molang functions to have the game check certain properties of the pokemon like what stats it has or even what it is standing on. A list of Cobblemon&#039;s custom molang functions can be found [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/api/molang/MoLangFunctions.kt here with some usable functions highlighted in red.] Due to the complexity of molang and it being so new to cobblemon, it&#039;s difficult to explain its potentially unlimited possibilities. There will be many examples to borrow from in the future. You can even use Molang&#039;s operators to extend your string if needed. &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
How to write a Molang condition:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;: &amp;quot;&amp;lt;insert molang function(s)&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
** One of the few examples:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The function being called which checks for the blocks the Pokémon is standing on.&amp;quot;&amp;gt;q.is_standing_on_blocks&amp;lt;/abbr&amp;gt;(&amp;lt;abbr title=&amp;quot;The depth required in order to be met. Meaning it must be standing above 2 blocks of sand or red sand.&amp;quot;&amp;gt;2&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;One of the blocks this function is checking for. The animation will play if it is standing above 2 blocks of sand&amp;quot;&amp;gt;&#039;minecraft:sand&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;One of the blocks this function is checking for. The animation will play if it is standing above 2 blocks of red sand&amp;quot;&amp;gt;&#039;minecraft:red_sand&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is an example inside of Lunatone&#039;s poser where it uses molang conditions to assign its 2 different sleeping animations: one where it checks for sand so it can lodge itself in the sand, and the other where it floats while it sleeps. By using the &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; operator in front of the second pose&#039;s molang condition, the game makes sure that the conditions are false in order to play the animation.&lt;br /&gt;
    &amp;quot;sand-sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;condition&amp;quot;: &amp;quot;q.is_standing_on_blocks(2, &#039;minecraft:sand&#039;, &#039;minecraft:red_sand&#039;)&amp;quot;,&lt;br /&gt;
      &amp;quot;namedAnimations&amp;quot;: {&lt;br /&gt;
        &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;dummy&#039;, &#039;cry&#039;)&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;lunatone&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;condition&amp;quot;: &amp;quot;!q.is_standing_on_blocks(2, &#039;minecraft:sand&#039;, &#039;minecraft:red_sand&#039;)&amp;quot;,&lt;br /&gt;
      &amp;quot;namedAnimations&amp;quot;: {&lt;br /&gt;
        &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;dummy&#039;, &#039;cry&#039;)&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;lunatone&#039;, &#039;sleep_alt&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
List of Currently Implemented True or False Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isInWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or in rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isUnderWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is a list of current placeholder animations, their default values, and an example you can copy into your animations list directly: &lt;br /&gt;
* &#039;&#039;&#039;q.quadruped_walk&#039;&#039;&#039; - A basic walk animation for Pokémon with 4 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.quadruped_walk(0.66, 1.4, &#039;leg_front_left&#039;, &#039;leg_front_right&#039;, &#039;leg_back_left&#039;, &#039;leg_back_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.biped_walk&#039;&#039;&#039; - A basic walking animation for Pokémon who stand on 2 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.biped_walk(0.66, 1.4, &#039;leg_left&#039;, &#039;leg_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.bimanual_swing&#039;&#039;&#039; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.bimanual_swing(0.66, 1.4, &#039;arm_left&#039;, &#039;arm_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.sine_wing_flap&#039;&#039;&#039; - A basic wing flap animation for a pair of wings on a Pokémon. This animation allows you to control a few more aspects of the specified bones. It&#039;s important to note what axis these &amp;quot;wings&amp;quot; should be rotating in to give the illusion of flapping. So be sure to reference your model. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.sine_wing_flap(&amp;lt;abbr title=&amp;quot;Multiplier for the amplitude value. How far the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Multiplier for the period value. How fast the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Vertical shift value. Radian value that the wing pair will be offset by.&amp;quot;&amp;gt;25&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The x, y, or z axis of the bone that shall be rotated by this animation.&amp;quot;&amp;gt;&#039;z&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The left wing to be animated&amp;quot;&amp;gt;&#039;wing_left&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The right wing to be animated&amp;quot;&amp;gt;&#039;wing_right&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
With the exception of the wing flap placeholder, the first value mentioned in these functions controls how fast the limbs will swing, also called the period value. The second value is the amplitude, or how far a limb will swing. These are both multiplier values to a cosine wave that the author of this post can&#039;t seem to find at this moment. Be sure to tune these values if the limbs don&#039;t work with the defaults. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5737</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5737"/>
		<updated>2025-03-06T11:16:47Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Slight formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Rootbone ===&lt;br /&gt;
The &amp;lt;code&amp;gt;rootBone&amp;lt;/code&amp;gt; property specifies what bone in the model will act as the root bone for generic animations not assigned in the poser such as the evolution animation. If the model was made following the standard bone format, then it should simply be the name of the Pokémon in lower case. Punctuation and capitalization matter! So make sure it matches the root bone of your model exactly. &lt;br /&gt;
&lt;br /&gt;
You are &#039;&#039;&#039;required&#039;&#039;&#039; to assign this root bone properly or else it will break the model in certain generic animations! These animations animate the root bone and do not reset it to its original position when it finishes. This can cause model displacement after evolutions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of the simple rootBone property:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This property attempts to call the specified bone from the model to assign it as the root bone for generic animations.&amp;quot;&amp;gt;rootBone&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this scenario, the charizard bone is being called. This charizard bone should contain all other bones so generic animations can move the entire model for whatever they animate.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. &lt;br /&gt;
&lt;br /&gt;
For the sake of clarity, you should always refer to animations like faints, cries, or physicals as &#039;&#039;&#039;Named Animations&#039;&#039;&#039;. This is to help everyone distinguish them from the animations that are applied to poses. This distinction is important because you can assign both &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;namedAnimations&amp;lt;/code&amp;gt; to a pose. This is to allow you to assign different cries, faints, or attack animations to different poses like your floating or flying poses. This allows for water attack animations if you make the animation to support it. This process will be detailed later. Below is a list of currently available Named Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Animations &amp;amp; Named Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;battle_move&amp;gt;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;battle_move_name&amp;gt;&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a specific move in battle. This animation property would assign a pokemon&#039;s animation to an &#039;&#039;&#039;existing&#039;&#039;&#039; action effect. Something like a custom flamethrower animation for Charizard or a Pokémon&#039;s signature move for example.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Basic Animation Calling Functions ====&lt;br /&gt;
Below are the 3 methods to call a &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;namedAnimation&amp;lt;/code&amp;gt; animation. Each of them serve a purpose in layering animations on the Pokémon. &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; animations must always use &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; to serve as the base animation that can be overwritten by other animations when called. &amp;lt;code&amp;gt;NamedAnimations&amp;lt;/code&amp;gt; can either use &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; to layer over the base animation or use &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; to overwrite the base animation while it is playing. The default function used in each named animation type can be changed if your animation supports it. If you want the cry to overwrite rather than layer, then just be sure to animate it properly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock =====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation calling format from the [[Old_Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_stateful =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_primary =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;q.bedrock_primary&amp;lt;/code&amp;gt; comes with a couple of extra properties and they should be written in the following order:&lt;br /&gt;
# group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - The animation JSON that the game will search for the following animation. This should always be the name of a Pokémon. &lt;br /&gt;
# animation: &amp;lt;code&amp;gt;&#039;status&#039;&amp;lt;/code&amp;gt; - The animation the game will call from the previously mentioned animation JSON. Primary animations are usually your attack animations or faints, but you can assign it to other named animations if desired. &lt;br /&gt;
# (optional) excluded labels: &amp;lt;code&amp;gt;&#039;look&#039;&amp;lt;/code&amp;gt; - Exclusive labeled animations that wont get overwritten by this primary animation. The only reasonable use of excluded labels is to exclude the look animation from being overwritten. This is so they can keep looking at a target when using an animation. &lt;br /&gt;
# curve: &amp;lt;code&amp;gt;&#039;q.curve(&#039;symmetrical_wide&#039;)&#039;&amp;lt;/code&amp;gt; - The interpolation curve that this primary animation will use to transition to and from the pose it is written under. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special interpolation curve types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the 4 common primary animations in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, &#039;look&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
====== q.curve ======&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
There are two methods for conditions that you can use. There is the old true or false conditions where each condition has a property named after it and then there is the new Molang conditions. Molang conditions can use one or more molang functions to have the game check certain properties of the pokemon like what stats it has or even what it is standing on. A list of Cobblemon&#039;s custom molang functions can be found [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/api/molang/MoLangFunctions.kt here with some usable functions highlighted in red.] Due to the complexity of molang and it being so new to cobblemon, it&#039;s difficult to explain its potentially unlimited possibilities. There will be many examples to borrow from in the future. You can even use Molang&#039;s operators to extend your string if needed. &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
How to write a Molang condition:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;: &amp;quot;&amp;lt;insert molang function(s)&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
** One of the few examples:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The function being called which checks for the blocks the Pokémon is standing on.&amp;quot;&amp;gt;q.is_standing_on_blocks&amp;lt;/abbr&amp;gt;(&amp;lt;abbr title=&amp;quot;The depth required in order to be met. Meaning it must be standing above 2 blocks of sand or red sand.&amp;quot;&amp;gt;2&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;One of the blocks this function is checking for. The animation will play if it is standing above 2 blocks of sand&amp;quot;&amp;gt;&#039;minecraft:sand&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;One of the blocks this function is checking for. The animation will play if it is standing above 2 blocks of red sand&amp;quot;&amp;gt;&#039;minecraft:red_sand&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is an example inside of Lunatone&#039;s poser where it uses molang conditions to assign its 2 different sleeping animations: one where it checks for sand so it can lodge itself in the sand, and the other where it floats while it sleeps. By using the &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; operator in front of the second pose&#039;s molang condition, the game makes sure that the conditions are false in order to play the animation.&lt;br /&gt;
    &amp;quot;sand-sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;condition&amp;quot;: &amp;quot;q.is_standing_on_blocks(2, &#039;minecraft:sand&#039;, &#039;minecraft:red_sand&#039;)&amp;quot;,&lt;br /&gt;
      &amp;quot;namedAnimations&amp;quot;: {&lt;br /&gt;
        &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;dummy&#039;, &#039;cry&#039;)&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;lunatone&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;condition&amp;quot;: &amp;quot;!q.is_standing_on_blocks(2, &#039;minecraft:sand&#039;, &#039;minecraft:red_sand&#039;)&amp;quot;,&lt;br /&gt;
      &amp;quot;namedAnimations&amp;quot;: {&lt;br /&gt;
        &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;dummy&#039;, &#039;cry&#039;)&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;lunatone&#039;, &#039;sleep_alt&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
List of Currently Implemented True or False Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isInWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or in rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isUnderWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is a list of current placeholder animations, their default values, and an example you can copy into your animations list directly: &lt;br /&gt;
* &#039;&#039;&#039;q.quadruped_walk&#039;&#039;&#039; - A basic walk animation for Pokémon with 4 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.quadruped_walk(0.66, 1.4, &#039;leg_front_left&#039;, &#039;leg_front_right&#039;, &#039;leg_back_left&#039;, &#039;leg_back_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.biped_walk&#039;&#039;&#039; - A basic walking animation for Pokémon who stand on 2 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.biped_walk(0.66, 1.4, &#039;leg_left&#039;, &#039;leg_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.bimanual_swing&#039;&#039;&#039; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.bimanual_swing(0.66, 1.4, &#039;arm_left&#039;, &#039;arm_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.sine_wing_flap&#039;&#039;&#039; - A basic wing flap animation for a pair of wings on a Pokémon. This animation allows you to control a few more aspects of the specified bones. It&#039;s important to note what axis these &amp;quot;wings&amp;quot; should be rotating in to give the illusion of flapping. So be sure to reference your model. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.sine_wing_flap(&amp;lt;abbr title=&amp;quot;Multiplier for the amplitude value. How far the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Multiplier for the period value. How fast the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Vertical shift value. Radian value that the wing pair will be offset by.&amp;quot;&amp;gt;25&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The x, y, or z axis of the bone that shall be rotated by this animation.&amp;quot;&amp;gt;&#039;z&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The left wing to be animated&amp;quot;&amp;gt;&#039;wing_left&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The right wing to be animated&amp;quot;&amp;gt;&#039;wing_right&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
With the exception of the wing flap placeholder, the first value mentioned in these functions controls how fast the limbs will swing, also called the period value. The second value is the amplitude, or how far a limb will swing. These are both multiplier values to a cosine wave that the author of this post can&#039;t seem to find at this moment. Be sure to tune these values if the limbs don&#039;t work with the defaults. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5736</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5736"/>
		<updated>2025-03-06T11:15:11Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Slight introduction to molang conditions in the conditions section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Rootbone ===&lt;br /&gt;
The &amp;lt;code&amp;gt;rootBone&amp;lt;/code&amp;gt; property specifies what bone in the model will act as the root bone for generic animations not assigned in the poser such as the evolution animation. If the model was made following the standard bone format, then it should simply be the name of the Pokémon in lower case. Punctuation and capitalization matter! So make sure it matches the root bone of your model exactly. &lt;br /&gt;
&lt;br /&gt;
You are &#039;&#039;&#039;required&#039;&#039;&#039; to assign this root bone properly or else it will break the model in certain generic animations! These animations animate the root bone and do not reset it to its original position when it finishes. This can cause model displacement after evolutions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of the simple rootBone property:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This property attempts to call the specified bone from the model to assign it as the root bone for generic animations.&amp;quot;&amp;gt;rootBone&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this scenario, the charizard bone is being called. This charizard bone should contain all other bones so generic animations can move the entire model for whatever they animate.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. &lt;br /&gt;
&lt;br /&gt;
For the sake of clarity, you should always refer to animations like faints, cries, or physicals as &#039;&#039;&#039;Named Animations&#039;&#039;&#039;. This is to help everyone distinguish them from the animations that are applied to poses. This distinction is important because you can assign both &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;namedAnimations&amp;lt;/code&amp;gt; to a pose. This is to allow you to assign different cries, faints, or attack animations to different poses like your floating or flying poses. This allows for water attack animations if you make the animation to support it. This process will be detailed later. Below is a list of currently available Named Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Animations &amp;amp; Named Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;battle_move&amp;gt;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;battle_move_name&amp;gt;&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a specific move in battle. This animation property would assign a pokemon&#039;s animation to an &#039;&#039;&#039;existing&#039;&#039;&#039; action effect. Something like a custom flamethrower animation for Charizard or a Pokémon&#039;s signature move for example.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Basic Animation Calling Functions ====&lt;br /&gt;
Below are the 3 methods to call a &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;namedAnimation&amp;lt;/code&amp;gt; animation. Each of them serve a purpose in layering animations on the Pokémon. &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; animations must always use &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; to serve as the base animation that can be overwritten by other animations when called. &amp;lt;code&amp;gt;NamedAnimations&amp;lt;/code&amp;gt; can either use &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; to layer over the base animation or use &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; to overwrite the base animation while it is playing. The default function used in each named animation type can be changed if your animation supports it. If you want the cry to overwrite rather than layer, then just be sure to animate it properly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock =====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation calling format from the [[Old_Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_stateful =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_primary =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;q.bedrock_primary&amp;lt;/code&amp;gt; comes with a couple of extra properties and they should be written in the following order:&lt;br /&gt;
# group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - The animation JSON that the game will search for the following animation. This should always be the name of a Pokémon. &lt;br /&gt;
# animation: &amp;lt;code&amp;gt;&#039;status&#039;&amp;lt;/code&amp;gt; - The animation the game will call from the previously mentioned animation JSON. Primary animations are usually your attack animations or faints, but you can assign it to other named animations if desired. &lt;br /&gt;
# (optional) excluded labels: &amp;lt;code&amp;gt;&#039;look&#039;&amp;lt;/code&amp;gt; - Exclusive labeled animations that wont get overwritten by this primary animation. The only reasonable use of excluded labels is to exclude the look animation from being overwritten. This is so they can keep looking at a target when using an animation. &lt;br /&gt;
# curve: &amp;lt;code&amp;gt;&#039;q.curve(&#039;symmetrical_wide&#039;)&#039;&amp;lt;/code&amp;gt; - The interpolation curve that this primary animation will use to transition to and from the pose it is written under. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special interpolation curve types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the 4 common primary animations in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, &#039;look&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
====== q.curve ======&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
There are two methods for conditions that you can use. There is the old true or false conditions where each condition has a property named after it and then there is the new Molang conditions. Molang conditions can use one or more molang functions to have the game check certain properties of the pokemon like what stats it has or even what it is standing on. A list of Cobblemon&#039;s custom molang functions can be found [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/api/molang/MoLangFunctions.kt here with some usable functions highlighted in red.] Due to the complexity of molang and it being so new to cobblemon, it&#039;s difficult to explain its potentially unlimited possibilities. There will be many examples to borrow from in the future. You can even use Molang&#039;s operators to extend your string if needed. &lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
How to write a Molang condition:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;: &amp;quot;&amp;lt;insert molang function(s)&amp;gt;&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
** One of the few examples:&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The function being called which checks for the blocks the Pokémon is standing on.&amp;quot;&amp;gt;q.is_standing_on_blocks&amp;lt;/abbr&amp;gt;(&amp;lt;abbr title=&amp;quot;The depth required in order to be met. Meaning it must be standing above 2 blocks of sand or red sand.&amp;quot;&amp;gt;2&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;One of the blocks this function is checking for. The animation will play if it is standing above 2 blocks of sand&amp;quot;&amp;gt;&#039;minecraft:sand&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;One of the blocks this function is checking for. The animation will play if it is standing above 2 blocks of red sand&amp;quot;&amp;gt;&#039;minecraft:red_sand&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is an example inside of Lunatone&#039;s poser where it uses molang conditions to assign its 2 different sleeping animations: one where it checks for sand so it can lodge itself in the sand, and the other where it floats while it sleeps. By using the &amp;lt;code&amp;gt;!&amp;lt;/code&amp;gt; operator in front of the second pose&#039;s molang condition, the game makes sure that the conditions are false in order to play the animation.&lt;br /&gt;
    &amp;quot;sand-sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;condition&amp;quot;: &amp;quot;q.is_standing_on_blocks(2, &#039;minecraft:sand&#039;, &#039;minecraft:red_sand&#039;)&amp;quot;,&lt;br /&gt;
      &amp;quot;namedAnimations&amp;quot;: {&lt;br /&gt;
        &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;dummy&#039;, &#039;cry&#039;)&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;lunatone&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;condition&amp;quot;: &amp;quot;!q.is_standing_on_blocks(2, &#039;minecraft:sand&#039;, &#039;minecraft:red_sand&#039;)&amp;quot;,&lt;br /&gt;
      &amp;quot;namedAnimations&amp;quot;: {&lt;br /&gt;
        &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;dummy&#039;, &#039;cry&#039;)&amp;quot;&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;lunatone&#039;, &#039;sleep_alt&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
List of Currently Implemented True or False Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isInWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or in rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isUnderWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is a list of current placeholder animations, their default values, and an example you can copy into your animations list directly: &lt;br /&gt;
* &#039;&#039;&#039;q.quadruped_walk&#039;&#039;&#039; - A basic walk animation for Pokémon with 4 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.quadruped_walk(0.66, 1.4, &#039;leg_front_left&#039;, &#039;leg_front_right&#039;, &#039;leg_back_left&#039;, &#039;leg_back_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.biped_walk&#039;&#039;&#039; - A basic walking animation for Pokémon who stand on 2 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.biped_walk(0.66, 1.4, &#039;leg_left&#039;, &#039;leg_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.bimanual_swing&#039;&#039;&#039; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.bimanual_swing(0.66, 1.4, &#039;arm_left&#039;, &#039;arm_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.sine_wing_flap&#039;&#039;&#039; - A basic wing flap animation for a pair of wings on a Pokémon. This animation allows you to control a few more aspects of the specified bones. It&#039;s important to note what axis these &amp;quot;wings&amp;quot; should be rotating in to give the illusion of flapping. So be sure to reference your model. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.sine_wing_flap(&amp;lt;abbr title=&amp;quot;Multiplier for the amplitude value. How far the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Multiplier for the period value. How fast the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Vertical shift value. Radian value that the wing pair will be offset by.&amp;quot;&amp;gt;25&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The x, y, or z axis of the bone that shall be rotated by this animation.&amp;quot;&amp;gt;&#039;z&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The left wing to be animated&amp;quot;&amp;gt;&#039;wing_left&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The right wing to be animated&amp;quot;&amp;gt;&#039;wing_right&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
With the exception of the wing flap placeholder, the first value mentioned in these functions controls how fast the limbs will swing, also called the period value. The second value is the amplitude, or how far a limb will swing. These are both multiplier values to a cosine wave that the author of this post can&#039;t seem to find at this moment. Be sure to tune these values if the limbs don&#039;t work with the defaults. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5735</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5735"/>
		<updated>2025-03-06T10:25:16Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Updated placeholder animation section and included examples. Curse you Paul!&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Rootbone ===&lt;br /&gt;
The &amp;lt;code&amp;gt;rootBone&amp;lt;/code&amp;gt; property specifies what bone in the model will act as the root bone for generic animations not assigned in the poser such as the evolution animation. If the model was made following the standard bone format, then it should simply be the name of the Pokémon in lower case. Punctuation and capitalization matter! So make sure it matches the root bone of your model exactly. &lt;br /&gt;
&lt;br /&gt;
You are &#039;&#039;&#039;required&#039;&#039;&#039; to assign this root bone properly or else it will break the model in certain generic animations! These animations animate the root bone and do not reset it to its original position when it finishes. This can cause model displacement after evolutions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of the simple rootBone property:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This property attempts to call the specified bone from the model to assign it as the root bone for generic animations.&amp;quot;&amp;gt;rootBone&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this scenario, the charizard bone is being called. This charizard bone should contain all other bones so generic animations can move the entire model for whatever they animate.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. &lt;br /&gt;
&lt;br /&gt;
For the sake of clarity, you should always refer to animations like faints, cries, or physicals as &#039;&#039;&#039;Named Animations&#039;&#039;&#039;. This is to help everyone distinguish them from the animations that are applied to poses. This distinction is important because you can assign both &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;namedAnimations&amp;lt;/code&amp;gt; to a pose. This is to allow you to assign different cries, faints, or attack animations to different poses like your floating or flying poses. This allows for water attack animations if you make the animation to support it. This process will be detailed later. Below is a list of currently available Named Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Animations &amp;amp; Named Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;battle_move&amp;gt;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;battle_move_name&amp;gt;&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a specific move in battle. This animation property would assign a pokemon&#039;s animation to an &#039;&#039;&#039;existing&#039;&#039;&#039; action effect. Something like a custom flamethrower animation for Charizard or a Pokémon&#039;s signature move for example.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Basic Animation Calling Functions ====&lt;br /&gt;
Below are the 3 methods to call a &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;namedAnimation&amp;lt;/code&amp;gt; animation. Each of them serve a purpose in layering animations on the Pokémon. &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; animations must always use &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; to serve as the base animation that can be overwritten by other animations when called. &amp;lt;code&amp;gt;NamedAnimations&amp;lt;/code&amp;gt; can either use &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; to layer over the base animation or use &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; to overwrite the base animation while it is playing. The default function used in each named animation type can be changed if your animation supports it. If you want the cry to overwrite rather than layer, then just be sure to animate it properly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock =====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation calling format from the [[Old_Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_stateful =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_primary =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;q.bedrock_primary&amp;lt;/code&amp;gt; comes with a couple of extra properties and they should be written in the following order:&lt;br /&gt;
# group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - The animation JSON that the game will search for the following animation. This should always be the name of a Pokémon. &lt;br /&gt;
# animation: &amp;lt;code&amp;gt;&#039;status&#039;&amp;lt;/code&amp;gt; - The animation the game will call from the previously mentioned animation JSON. Primary animations are usually your attack animations or faints, but you can assign it to other named animations if desired. &lt;br /&gt;
# (optional) excluded labels: &amp;lt;code&amp;gt;&#039;look&#039;&amp;lt;/code&amp;gt; - Exclusive labeled animations that wont get overwritten by this primary animation. The only reasonable use of excluded labels is to exclude the look animation from being overwritten. This is so they can keep looking at a target when using an animation. &lt;br /&gt;
# curve: &amp;lt;code&amp;gt;&#039;q.curve(&#039;symmetrical_wide&#039;)&#039;&amp;lt;/code&amp;gt; - The interpolation curve that this primary animation will use to transition to and from the pose it is written under. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special interpolation curve types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the 4 common primary animations in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, &#039;look&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
====== q.curve ======&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isInWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or in rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isUnderWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is a list of current placeholder animations, their default values, and an example you can copy into your animations list directly: &lt;br /&gt;
* &#039;&#039;&#039;q.quadruped_walk&#039;&#039;&#039; - A basic walk animation for Pokémon with 4 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.quadruped_walk(0.66, 1.4, &#039;leg_front_left&#039;, &#039;leg_front_right&#039;, &#039;leg_back_left&#039;, &#039;leg_back_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.biped_walk&#039;&#039;&#039; - A basic walking animation for Pokémon who stand on 2 legs.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.biped_walk(0.66, 1.4, &#039;leg_left&#039;, &#039;leg_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.bimanual_swing&#039;&#039;&#039; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.bimanual_swing(0.66, 1.4, &#039;arm_left&#039;, &#039;arm_right&#039;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;q.sine_wing_flap&#039;&#039;&#039; - A basic wing flap animation for a pair of wings on a Pokémon. This animation allows you to control a few more aspects of the specified bones. It&#039;s important to note what axis these &amp;quot;wings&amp;quot; should be rotating in to give the illusion of flapping. So be sure to reference your model. &lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;q.sine_wing_flap(&amp;lt;abbr title=&amp;quot;Multiplier for the amplitude value. How far the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Multiplier for the period value. How fast the wings will flap&amp;quot;&amp;gt;0.9&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Vertical shift value. Radian value that the wing pair will be offset by.&amp;quot;&amp;gt;25&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The x, y, or z axis of the bone that shall be rotated by this animation.&amp;quot;&amp;gt;&#039;z&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The left wing to be animated&amp;quot;&amp;gt;&#039;wing_left&#039;&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;The right wing to be animated&amp;quot;&amp;gt;&#039;wing_right&#039;&amp;lt;/abbr&amp;gt;)&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
With the exception of the wing flap placeholder, the first value mentioned in these functions controls how fast the limbs will swing, also called the period value. The second value is the amplitude, or how far a limb will swing. These are both multiplier values to a cosine wave that the author of this post can&#039;t seem to find at this moment. Be sure to tune these values if the limbs don&#039;t work with the defaults. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5734</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5734"/>
		<updated>2025-03-06T06:17:41Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Data update for example poser&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Rootbone ===&lt;br /&gt;
The &amp;lt;code&amp;gt;rootBone&amp;lt;/code&amp;gt; property specifies what bone in the model will act as the root bone for generic animations not assigned in the poser such as the evolution animation. If the model was made following the standard bone format, then it should simply be the name of the Pokémon in lower case. Punctuation and capitalization matter! So make sure it matches the root bone of your model exactly. &lt;br /&gt;
&lt;br /&gt;
You are &#039;&#039;&#039;required&#039;&#039;&#039; to assign this root bone properly or else it will break the model in certain generic animations! These animations animate the root bone and do not reset it to its original position when it finishes. This can cause model displacement after evolutions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of the simple rootBone property:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This property attempts to call the specified bone from the model to assign it as the root bone for generic animations.&amp;quot;&amp;gt;rootBone&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this scenario, the charizard bone is being called. This charizard bone should contain all other bones so generic animations can move the entire model for whatever they animate.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. &lt;br /&gt;
&lt;br /&gt;
For the sake of clarity, you should always refer to animations like faints, cries, or physicals as &#039;&#039;&#039;Named Animations&#039;&#039;&#039;. This is to help everyone distinguish them from the animations that are applied to poses. This distinction is important because you can assign both &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;namedAnimations&amp;lt;/code&amp;gt; to a pose. This is to allow you to assign different cries, faints, or attack animations to different poses like your floating or flying poses. This allows for water attack animations if you make the animation to support it. This process will be detailed later. Below is a list of currently available Named Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Animations &amp;amp; Named Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;battle_move&amp;gt;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;battle_move_name&amp;gt;&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a specific move in battle. This animation property would assign a pokemon&#039;s animation to an &#039;&#039;&#039;existing&#039;&#039;&#039; action effect. Something like a custom flamethrower animation for Charizard or a Pokémon&#039;s signature move for example.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Basic Animation Calling Functions ====&lt;br /&gt;
Below are the 3 methods to call a &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;namedAnimation&amp;lt;/code&amp;gt; animation. Each of them serve a purpose in layering animations on the Pokémon. &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; animations must always use &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; to serve as the base animation that can be overwritten by other animations when called. &amp;lt;code&amp;gt;NamedAnimations&amp;lt;/code&amp;gt; can either use &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; to layer over the base animation or use &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; to overwrite the base animation while it is playing. The default function used in each named animation type can be changed if your animation supports it. If you want the cry to overwrite rather than layer, then just be sure to animate it properly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock =====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation calling format from the [[Old_Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_stateful =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_primary =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;q.bedrock_primary&amp;lt;/code&amp;gt; comes with a couple of extra properties and they should be written in the following order:&lt;br /&gt;
# group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - The animation JSON that the game will search for the following animation. This should always be the name of a Pokémon. &lt;br /&gt;
# animation: &amp;lt;code&amp;gt;&#039;status&#039;&amp;lt;/code&amp;gt; - The animation the game will call from the previously mentioned animation JSON. Primary animations are usually your attack animations or faints, but you can assign it to other named animations if desired. &lt;br /&gt;
# (optional) excluded labels: &amp;lt;code&amp;gt;&#039;look&#039;&amp;lt;/code&amp;gt; - Exclusive labeled animations that wont get overwritten by this primary animation. The only reasonable use of excluded labels is to exclude the look animation from being overwritten. This is so they can keep looking at a target when using an animation. &lt;br /&gt;
# curve: &amp;lt;code&amp;gt;&#039;q.curve(&#039;symmetrical_wide&#039;)&#039;&amp;lt;/code&amp;gt; - The interpolation curve that this primary animation will use to transition to and from the pose it is written under. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special interpolation curve types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the 4 common primary animations in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, &#039;look&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
====== q.curve ======&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isInWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or in rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isUnderWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth. For now, you&#039;ll have to figure out how to configure these yourself lol&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a list of all the Placeholder animations:&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L172 &amp;quot;q.quadruped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walk animation for Pokémon with 4 legs&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L192 &amp;quot;q.biped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walking animation for Pokémon who stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L208 &amp;quot;q.bimanual_swing()&amp;quot;]&amp;lt;/code&amp;gt; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L224 &amp;quot;q.sine_wing_flap()&amp;quot;]&amp;lt;/code&amp;gt; - A basic wing flap animation for a pair of wings on a Pokémon. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Species_Additions&amp;diff=5733</id>
		<title>Species Additions</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Species_Additions&amp;diff=5733"/>
		<updated>2025-03-06T05:32:44Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Info update for species addiitons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
You can create a &amp;lt;code&amp;gt;species_addition&amp;lt;/code&amp;gt; JSON to replace or add some new data to an existing &amp;lt;code&amp;gt;[[Species|species]]&amp;lt;/code&amp;gt; file. Species additions can be a helpful way to add your own [[Tutorials/Regional_Forms|regional variants]] to existing Pokémon. They can also be helpful if you want to rewrite a Pokémon&#039;s stats for an addon. This system was created to improve the compatibility between multiple datapacks by allowing datapack developers to target specific species and append or replace depending on the field type without overwriting the base species file.&lt;br /&gt;
&lt;br /&gt;
=== Species Addition Breakdown ===&lt;br /&gt;
Creating a &amp;lt;code&amp;gt;species addition&amp;lt;/code&amp;gt; JSON is very simple. You simply list your target Pokémon, and then list &#039;&#039;&#039;&#039;&#039;any data&#039;&#039;&#039;&#039;&#039; that you wish to rewrite or add to the &amp;lt;code&amp;gt;species&amp;lt;/code&amp;gt; file of that Pokémon. &amp;lt;code&amp;gt;Forms&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;evolution&amp;lt;/code&amp;gt; data are exceptions to the rewriting. They will always be added instead. &lt;br /&gt;
&lt;br /&gt;
Here is a breakdown of an example &amp;lt;code&amp;gt;species addition&amp;lt;/code&amp;gt;. Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will specify which Pokémon will receive the data in this file.&amp;quot;&amp;gt;target&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, Bulbasaur will get all of this data written into its species file.&amp;quot;&amp;gt;cobblemon:bulbasaur&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This will let you change the primary type of the target&amp;quot;&amp;gt;primaryType&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;fire&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This will let you change the secondary type of the target&amp;quot;&amp;gt;secondaryType&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;water&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not the target can be placed on the player shoulder&amp;quot;&amp;gt;shoulderMountable&amp;lt;/abbr&amp;gt;&amp;quot;: true,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The following block of data would allow the target Pokémon to grant the slow falling effect to the player when on the shoulder.&amp;quot;&amp;gt;shoulderEffects&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;potion_effect&amp;quot;,&lt;br /&gt;
      &amp;quot;effect&amp;quot;: &amp;quot;minecraft:slow_falling&amp;quot;,&lt;br /&gt;
      &amp;quot;amplifier&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;ambient&amp;quot;: true,&lt;br /&gt;
      &amp;quot;showParticles&amp;quot;: false,&lt;br /&gt;
      &amp;quot;showIcon&amp;quot;: false&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The following block of data will allow the target Pokémon to have a 2.5% chance at dropping razor fangs.&amp;quot;&amp;gt;drops&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;amount&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;entries&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;cobblemon:razor_fang&amp;quot;,&lt;br /&gt;
        &amp;quot;percentage&amp;quot;: 2.5&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The following block of data will rewrite the target&#039;s AI behavior. This new behavior will allow it to fly.&amp;quot;&amp;gt;behaviour&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;moving&amp;quot;: {&lt;br /&gt;
      &amp;quot;walk&amp;quot;: {&lt;br /&gt;
        &amp;quot;canWalk&amp;quot;: true&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;fly&amp;quot;: {&lt;br /&gt;
        &amp;quot;canFly&amp;quot;: true&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;resting&amp;quot;: {&lt;br /&gt;
      &amp;quot;canSleep&amp;quot;: true,&lt;br /&gt;
      &amp;quot;willSleepOnBed&amp;quot;: true,&lt;br /&gt;
      &amp;quot;depth&amp;quot;: &amp;quot;normal&amp;quot;,&lt;br /&gt;
      &amp;quot;light&amp;quot;: &amp;quot;0-4&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This will change the model size of the target&amp;quot;&amp;gt;baseScale&amp;lt;/abbr&amp;gt;&amp;quot;: 2,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This will change the size of the hitbox on the target&amp;quot;&amp;gt;hitbox&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This will make the hitbox 2 blocks wide&amp;quot;&amp;gt;width&amp;lt;/abbr&amp;gt;&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This will make the hitbox 2 blocks tall&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;fixed&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This block of data will let the target emit a light source if the player has compatible dynamic light mods installed.&amp;quot;&amp;gt;lightingData&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This is the light level the target will give off&amp;quot;&amp;gt;lightLevel&amp;lt;/abbr&amp;gt;&amp;quot;: 10,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This lets the target only emit light when on land. Never in the water.&amp;quot;&amp;gt;liquidGlowMode&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;LAND&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Loading this file would have the following effects on Bulbasaur:&lt;br /&gt;
* It will become a fire and water type instead of grass and poison&lt;br /&gt;
* Can be mounted on the player shoulder&lt;br /&gt;
* When shoulder mounted, will grant the slow falling effect&lt;br /&gt;
* Can start dropping razor fangs at a 2.5% chance&lt;br /&gt;
* Can now fly&lt;br /&gt;
* Increased model scale to 2&lt;br /&gt;
* Increased hitbox size to a 2x2 cube&lt;br /&gt;
* Can emit a light level of 10 when on land only if dynamic light mods are installed&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Here is a list of tips about species additions:&lt;br /&gt;
* Species additions will rewrite any data if it is already written in the target species file. &lt;br /&gt;
** Example: If you wanted to add a new move to the &amp;lt;code&amp;gt;moves&amp;lt;/code&amp;gt; list, you&#039;d have to rewrite the entire move list. If you only write the one new move, it will be the only move that Pokémon can learn.&lt;br /&gt;
* Species additions will also add your written data if it doesn&#039;t exist in the target species file yet. &lt;br /&gt;
** You can create a file to add &amp;lt;code&amp;gt;drops&amp;lt;/code&amp;gt; for Pokémon that don&#039;t drop anything yet. &lt;br /&gt;
* This system was created to help addon creators keep their datapacks compatible with others! Always use them if you wish to edit something about existing Pokémon you didn&#039;t create. &lt;br /&gt;
** It will prevent 2 datapacks fighting over who will get to replace the main species file. &lt;br /&gt;
** It can prevent your addon from causing irreparable damage to player save data in certain scenarios! &lt;br /&gt;
* If 2 additions want to rewrite the same thing, like item drops, then only the first file in the load order will have its changes implemented. &lt;br /&gt;
* Using species additions to add special Pokémon forms is the most addon friendly process!&lt;br /&gt;
** If two creators both wanted to add a regional form to Mudkip, and they both used species additions to add the form data, then people can use both addons together without issues!&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Datapack Folder Location ====&lt;br /&gt;
These files belong in a folder you might have never seen before. You can place the JSONs in the species additions folder itself, or even create sub folders for your JSONs. &#039;&#039;&#039;Remember that datapack rules will apply if you use the cobblemon namespace and use the Pokémon&#039;s name to name the JSON. Consider using your own namespace and using unique file names to avoid conflicts with other addons that want to make changes to the same Pokémon.&#039;&#039;&#039; Here is how you should arrange your &amp;lt;code&amp;gt;species addition&amp;lt;/code&amp;gt; files and folder:&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
**data&lt;br /&gt;
***&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
****species_additions&lt;br /&gt;
*****&#039;&#039;&#039;&amp;lt;target_pokemon&amp;gt;.json&#039;&#039;&#039;&lt;br /&gt;
*****&#039;&#039;(optional target pokemon/generation folders)&#039;&#039;&lt;br /&gt;
******&#039;&#039;&#039;&amp;lt;optional target_pokemon&amp;gt;.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You can also merge the species additions folder into an existing addon pack.&lt;br /&gt;
&lt;br /&gt;
=== Species Addition Examples ===&lt;br /&gt;
One of the most common uses of species additions by the community is adding extra &amp;lt;code&amp;gt;evolution&amp;lt;/code&amp;gt; data to official Pokémon. It is also used often to change the &amp;lt;code&amp;gt;baseScale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;hitbox&amp;lt;/code&amp;gt; sizes of a Pokémon for use with unofficial models.&lt;br /&gt;
&lt;br /&gt;
* In this example, Combee will have its basescale and hitbox sizes changed. A species addition like this is helpful if you want to add your own model to a Pokémon without an official model yet.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;cobblemon:combee&amp;quot;,&lt;br /&gt;
  &amp;quot;baseScale&amp;quot;: 1,&lt;br /&gt;
  &amp;quot;hitbox&amp;quot;: {&lt;br /&gt;
    &amp;quot;width&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;height&amp;quot;: 1.2,&lt;br /&gt;
    &amp;quot;fixed&amp;quot;: false&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* In this example, Eevee will now evolve into Charizard at level 36 and it will maintain all its other eeveelutions!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;cobblemon:eevee&amp;quot;,&lt;br /&gt;
  &amp;quot;evolutions&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;eevee_charizard&amp;quot;,&lt;br /&gt;
      &amp;quot;variant&amp;quot;: &amp;quot;level_up&amp;quot;,&lt;br /&gt;
      &amp;quot;result&amp;quot;: &amp;quot;charizard&amp;quot;,&lt;br /&gt;
      &amp;quot;consumeHeldItem&amp;quot;: false,&lt;br /&gt;
      &amp;quot;learnableMoves&amp;quot;: [],&lt;br /&gt;
      &amp;quot;requirements&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;variant&amp;quot;: &amp;quot;level&amp;quot;,&lt;br /&gt;
          &amp;quot;minLevel&amp;quot;: 36&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following is an example of two addons that want to change &amp;lt;code&amp;gt;evolution&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;form&amp;lt;/code&amp;gt; data for an existing Pokémon. In this case, they both want to create a new eeveelution and a new regional form of Eevee that has its own evolution as well. Thanks to &amp;lt;code&amp;gt;species_additions&amp;lt;/code&amp;gt; and its special rules, anybody can use both of these hypothetical addons and get the effects of both without issues! &lt;br /&gt;
* A regular Eevee could then evolve into Charizard or Blastoise at level 36. &lt;br /&gt;
* An Alolan Eevee would become an Ice type and evolve into Squirtle with a [[Water Stone]].&lt;br /&gt;
* A Hisuian Eevee would become a Fire type and evolve into Bulbasaur with a [[Leaf Stone]]. &lt;br /&gt;
&lt;br /&gt;
Addon #1&#039;s species addition:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;cobblemon:eevee&amp;quot;,&lt;br /&gt;
  &amp;quot;features&amp;quot;: [&amp;quot;alolan&amp;quot;],&lt;br /&gt;
  &amp;quot;forms&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Alola&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryType&amp;quot;: &amp;quot;ice&amp;quot;,&lt;br /&gt;
      &amp;quot;abilities&amp;quot;: [&lt;br /&gt;
        &amp;quot;snowcloak&amp;quot;,&lt;br /&gt;
        &amp;quot;h:snowwarning&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;aspects&amp;quot;: [&amp;quot;alolan&amp;quot;],&lt;br /&gt;
      &amp;quot;evolutions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;id&amp;quot;: &amp;quot;eevee_squirtle&amp;quot;,&lt;br /&gt;
          &amp;quot;variant&amp;quot;: &amp;quot;item_interact&amp;quot;,&lt;br /&gt;
          &amp;quot;result&amp;quot;: &amp;quot;squirtle&amp;quot;,&lt;br /&gt;
          &amp;quot;consumeHeldItem&amp;quot;: false,&lt;br /&gt;
          &amp;quot;learnableMoves&amp;quot;: [],&lt;br /&gt;
          &amp;quot;requirements&amp;quot;: [],&lt;br /&gt;
          &amp;quot;requiredContext&amp;quot;: &amp;quot;cobblemon:water_stone&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;evolutions&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;eevee_blastoise&amp;quot;,&lt;br /&gt;
      &amp;quot;variant&amp;quot;: &amp;quot;level_up&amp;quot;,&lt;br /&gt;
      &amp;quot;result&amp;quot;: &amp;quot;blastoise&amp;quot;,&lt;br /&gt;
      &amp;quot;consumeHeldItem&amp;quot;: false,&lt;br /&gt;
      &amp;quot;learnableMoves&amp;quot;: [],&lt;br /&gt;
      &amp;quot;requirements&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;variant&amp;quot;: &amp;quot;level&amp;quot;,&lt;br /&gt;
          &amp;quot;minLevel&amp;quot;: 36&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Addon #2&#039;s species addition:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;cobblemon:eevee&amp;quot;,&lt;br /&gt;
  &amp;quot;features&amp;quot;: [&amp;quot;hisuian&amp;quot;],&lt;br /&gt;
  &amp;quot;forms&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;name&amp;quot;: &amp;quot;Hisui&amp;quot;,&lt;br /&gt;
      &amp;quot;primaryType&amp;quot;: &amp;quot;fire&amp;quot;,&lt;br /&gt;
      &amp;quot;abilities&amp;quot;: [&lt;br /&gt;
        &amp;quot;flamebody&amp;quot;,&lt;br /&gt;
        &amp;quot;h:drought&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;aspects&amp;quot;: [&amp;quot;hisuian&amp;quot;],&lt;br /&gt;
      &amp;quot;evolutions&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;id&amp;quot;: &amp;quot;eevee_bulbasaur&amp;quot;,&lt;br /&gt;
          &amp;quot;variant&amp;quot;: &amp;quot;item_interact&amp;quot;,&lt;br /&gt;
          &amp;quot;result&amp;quot;: &amp;quot;bulbasaur&amp;quot;,&lt;br /&gt;
          &amp;quot;consumeHeldItem&amp;quot;: false,&lt;br /&gt;
          &amp;quot;learnableMoves&amp;quot;: [],&lt;br /&gt;
          &amp;quot;requirements&amp;quot;: [],&lt;br /&gt;
          &amp;quot;requiredContext&amp;quot;: &amp;quot;cobblemon:leaf_stone&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;evolutions&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;id&amp;quot;: &amp;quot;eevee_charizard&amp;quot;,&lt;br /&gt;
      &amp;quot;variant&amp;quot;: &amp;quot;level_up&amp;quot;,&lt;br /&gt;
      &amp;quot;result&amp;quot;: &amp;quot;charizard&amp;quot;,&lt;br /&gt;
      &amp;quot;consumeHeldItem&amp;quot;: false,&lt;br /&gt;
      &amp;quot;learnableMoves&amp;quot;: [],&lt;br /&gt;
      &amp;quot;requirements&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;variant&amp;quot;: &amp;quot;level&amp;quot;,&lt;br /&gt;
          &amp;quot;minLevel&amp;quot;: 36&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
[[File:New_Eeveelutions.png|thumb|center|900px|caption|The resulting eeveelutions with both addons enabled.]]&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Spawn_Pool_World&amp;diff=5732</id>
		<title>Spawn Pool World</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Spawn_Pool_World&amp;diff=5732"/>
		<updated>2025-03-06T05:05:13Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Updated some spawn file examples&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; folder contains the JSON files that control how a Pokémon spawns naturally. For simplicity, most people call them &amp;lt;code&amp;gt;spawn files&amp;lt;/code&amp;gt;. These files dictate which Pokémon will spawn, its rarity , its level, and the [[Spawn_Condition|conditions]] it will spawn in. Every implemented Pokémon has at least one set of spawn data. Without this spawn data, a Pokémon can only be spawned through commands. &lt;br /&gt;
&lt;br /&gt;
=== Spawn File Breakdown ===&lt;br /&gt;
The data in spawn files can be rather self-explanatory. These files can be as simple as spawning in the forest, or as complicated as only spawning at 2:30-3:00AM on top of clay during the new moon in an ocean biome that is south of spawn. &lt;br /&gt;
&lt;br /&gt;
Here is a breakdown of &amp;lt;code&amp;gt;Bulbasaur&#039;s&amp;lt;/code&amp;gt; spawn file. Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This determines whether this spawn data is enabled&amp;quot;&amp;gt;enabled&amp;quot;: true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These are lists that say whether the spawn data requires specific mods to be present. Namely, this is mostly for pokémon that spawn in biomes introduced by other mods.&amp;quot;&amp;gt;neededInstalledMods&amp;quot;: []&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These are lists that say whether the spawn data requires specific mods to be present. Namely, this is mostly for pokémon that spawn in biomes introduced by other mods.&amp;quot;&amp;gt;neededUninstalledMods&amp;quot;: []&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are declaring where it will spawn.&amp;quot;&amp;gt;spawns&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Spawn locations require unique ID&#039;s. Calling them something like yourpokemon-1, yourpokemon-2 and so on is acceptable.&amp;quot;&amp;gt;id&amp;quot;: &amp;quot;bulbasaur-1&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Which pokémon are we trying to spawn here?&amp;quot;&amp;gt;pokemon&amp;quot;: &amp;quot;bulbasaur&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Presets are a collection of potential block candidates to spawn on, this way you don&#039;t need to clarify a ton of blocks every time you make a spawn file.&amp;quot;&amp;gt;presets&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
                &amp;quot;&amp;lt;abbr title=&amp;quot;natural is the most common preset. You can pick others like underground, freshwater, redstone or more.&amp;quot;&amp;gt;natural&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;We are spawning a pokémon here, so no need to change this.&amp;quot;&amp;gt;type&amp;quot;: &amp;quot;pokemon&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;What sort of surface is this spawning on? There are some other contexts listed below the example.&amp;quot;&amp;gt;context&amp;quot;: &amp;quot;grounded&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;How rare is this pokémon?&amp;quot;&amp;gt;bucket&amp;quot;: &amp;quot;ultra-rare&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This is the minimum and maximum level this pokémon can spawn at.&amp;quot;&amp;gt;level&amp;quot;: &amp;quot;5-32&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This number determines how likely it is to spawn considering its rarity.&amp;quot;&amp;gt;weight&amp;quot;: 9.0&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Additional spawn conditions are listed in this section.&amp;quot;&amp;gt;condition&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
                &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not this pokémon should be able to see the sky when it spawns.&amp;quot;&amp;gt;canSeeSky&amp;lt;/abbr&amp;gt;&amp;quot;: true,&lt;br /&gt;
                &amp;quot;&amp;lt;abbr title=&amp;quot;Here we list the biomes we want the pokémon to spawn in.&amp;quot;&amp;gt;biomes&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
                    &amp;quot;&amp;lt;abbr title=&amp;quot;The Cobblemon tag for jungle biomes. Allows Bulbasaur to spawn in any biome tagged as a jungle.&amp;quot;&amp;gt;#cobblemon:is_jungle&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
 }&lt;br /&gt;
Bulbasaur is an ultra-rare spawn which occurs 0.2% of the time. It can only spawn on natural blocks, like grass, that are in a jungle biome while the sky is visible. It cannot spawn under trees. &lt;br /&gt;
&lt;br /&gt;
Here is a list of options that some of the spawn properties can use: &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;presets&amp;quot;&#039;&#039;&#039;: You can use any of these presets listed on the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/spawn_detail_presets Gitlab] or you can make your own [[Spawn_Detail_Presets|presets]].&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;context&amp;quot;&#039;&#039;&#039;: You can choose between &amp;lt;code&amp;gt;&amp;quot;grounded&amp;quot;&amp;lt;/code&amp;gt; for land spawns, &amp;lt;code&amp;gt;&amp;quot;submerged&amp;quot;&amp;lt;/code&amp;gt; for underwater spawns, and &amp;lt;code&amp;gt;&amp;quot;surface&amp;quot;&amp;lt;/code&amp;gt; for spawns on the surface of water or lava.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;bucket&amp;quot;&#039;&#039;&#039;: The rarity pool of the Pokémon. You can choose &amp;lt;code&amp;gt;&amp;quot;common&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;uncommon&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;rare&amp;quot;&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;&amp;quot;ultra-rare&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;weight&amp;quot;&#039;&#039;&#039;: This determines how common the Pokémon will be inside of the assigned rarity pool. Generally, you can treat it like a scale of 0.1 to 10 on how rare it will be in that pool. You can use numbers higher than 10 if you really want that Pokémon to spawn more often. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;condition&amp;quot;&#039;&#039;&#039;: You can use any of the conditions listed [[Spawn_Condition|here]] to make Pokémon spawn&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;anticondition&amp;quot;&#039;&#039;&#039;: You can use any of the conditions listed [[Spawn_Condition|here]] to &#039;&#039;&#039;PREVENT&#039;&#039;&#039; a Pokémon from spawning&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;biomes&amp;quot;&#039;&#039;&#039;: A subcategory of conditions and anticonditions. You can use biome id&#039;s or any [https://docs.google.com/document/d/1iB0EJSc2r6mRJXIo1n3XpHbZ5udwJVnrh2pXdhTyH8c/edit biome tags]. Should work with modded biome id&#039;s too!&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;weightMultiplier&amp;quot;&#039;&#039;&#039;: This allows you to multiply the weight of the specific spawn ID provided a second set of conditions are also met. An array that requires a &amp;lt;code&amp;gt;multiplier&amp;lt;/code&amp;gt; float value, and an array of conditions and/or anticonditions.&lt;br /&gt;
** A snippet example of a weight multiplier from elekid:&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The normal weight of the spawn. In this case, the weight is 1.8 if in the hills or plains while there is no thunderstorm.&amp;quot;&amp;gt;weight&amp;lt;/abbr&amp;gt;&amp;quot;: 1.8,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will specify when to multiply the weights and by how much.&amp;quot;&amp;gt;weightMultiplier&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
                &amp;quot;&amp;lt;abbr title=&amp;quot;The value that will be multiplied with the normal weight. 5 x 1.8 would result in a weight of 9 only if it there is a thunderstorm while in the hills or plains.&amp;quot;&amp;gt;multiplier&amp;lt;/abbr&amp;gt;&amp;quot;: 5.0,&lt;br /&gt;
                &amp;quot;&amp;lt;abbr title=&amp;quot;The list of conditions that must be met in order for the weight to be multiplied.&amp;quot;&amp;gt;condition&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
                    &amp;quot;&amp;lt;abbr title=&amp;quot;Weather or not a thunderstorm must be present&amp;quot;&amp;gt;isThundering&amp;lt;/abbr&amp;gt;&amp;quot;: true&lt;br /&gt;
                }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The list of conditions that must be met in order for Elekid to spawn.&amp;quot;&amp;gt;condition&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
                &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not the spawning context must have a direct route to the sky above it&amp;quot;&amp;gt;canSeeSky&amp;lt;/abbr&amp;gt;&amp;quot;: true,&lt;br /&gt;
                &amp;quot;&amp;lt;abbr title=&amp;quot;A list of required biomes in order for Elekid to spawn.&amp;quot;&amp;gt;biomes&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_hills&amp;quot;,&lt;br /&gt;
                    &amp;quot;#cobblemon:is_plains&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Spawn File Examples ===&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;spawn files&amp;lt;/code&amp;gt; from scratch each time, you can use familiar Pokémon as a template. You can simply swap their names for the &amp;lt;code&amp;gt;id&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;pokemon&amp;lt;/code&amp;gt; properties. Here are some simple examples of different spawn files. &lt;br /&gt;
&lt;br /&gt;
* Buneary&#039;s spawn file - A great template for common land pokemon&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;neededInstalledMods&amp;quot;: [],&lt;br /&gt;
    &amp;quot;neededUninstalledMods&amp;quot;: [],&lt;br /&gt;
    &amp;quot;spawns&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;buneary-1&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;buneary&amp;quot;,&lt;br /&gt;
            &amp;quot;presets&amp;quot;: [&lt;br /&gt;
                &amp;quot;natural&amp;quot;,&lt;br /&gt;
                &amp;quot;wild&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;pokemon&amp;quot;,&lt;br /&gt;
            &amp;quot;context&amp;quot;: &amp;quot;grounded&amp;quot;,&lt;br /&gt;
            &amp;quot;bucket&amp;quot;: &amp;quot;common&amp;quot;,&lt;br /&gt;
            &amp;quot;level&amp;quot;: &amp;quot;10-35&amp;quot;,&lt;br /&gt;
            &amp;quot;weight&amp;quot;: 5.4,&lt;br /&gt;
            &amp;quot;condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;minSkyLight&amp;quot;: 8,&lt;br /&gt;
                &amp;quot;maxSkyLight&amp;quot;: 15,&lt;br /&gt;
                &amp;quot;biomes&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_forest&amp;quot;,&lt;br /&gt;
                    &amp;quot;#cobblemon:is_hills&amp;quot;,&lt;br /&gt;
                    &amp;quot;#cobblemon:is_snowy_forest&amp;quot;,&lt;br /&gt;
                    &amp;quot;#cobblemon:is_snowy_taiga&amp;quot;,&lt;br /&gt;
                    &amp;quot;#cobblemon:is_taiga&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Wishiwashi&#039;s spawn file - A great template for a fish-like pokemon that you can find in water or fish for!&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;neededInstalledMods&amp;quot;: [],&lt;br /&gt;
    &amp;quot;neededUninstalledMods&amp;quot;: [],&lt;br /&gt;
    &amp;quot;spawns&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;wishiwashi-1&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;wishiwashi&amp;quot;,&lt;br /&gt;
            &amp;quot;presets&amp;quot;: [&lt;br /&gt;
                &amp;quot;water&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;pokemon&amp;quot;,&lt;br /&gt;
            &amp;quot;context&amp;quot;: &amp;quot;submerged&amp;quot;,&lt;br /&gt;
            &amp;quot;bucket&amp;quot;: &amp;quot;common&amp;quot;,&lt;br /&gt;
            &amp;quot;level&amp;quot;: &amp;quot;1-18&amp;quot;,&lt;br /&gt;
            &amp;quot;weight&amp;quot;: 10.0,&lt;br /&gt;
            &amp;quot;condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;canSeeSky&amp;quot;: true,&lt;br /&gt;
                &amp;quot;biomes&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_ocean&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;wishiwashi-2&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;wishiwashi&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;pokemon&amp;quot;,&lt;br /&gt;
            &amp;quot;context&amp;quot;: &amp;quot;fishing&amp;quot;,&lt;br /&gt;
            &amp;quot;bucket&amp;quot;: &amp;quot;common&amp;quot;,&lt;br /&gt;
            &amp;quot;level&amp;quot;: &amp;quot;1-18&amp;quot;,&lt;br /&gt;
            &amp;quot;weight&amp;quot;: 10.0,&lt;br /&gt;
            &amp;quot;condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;canSeeSky&amp;quot;: true,&lt;br /&gt;
                &amp;quot;biomes&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_coast&amp;quot;,&lt;br /&gt;
                    &amp;quot;#cobblemon:is_ocean&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;wishiwashi-3&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;wishiwashi&amp;quot;,&lt;br /&gt;
            &amp;quot;presets&amp;quot;: [&lt;br /&gt;
                &amp;quot;water&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;pokemon&amp;quot;,&lt;br /&gt;
            &amp;quot;context&amp;quot;: &amp;quot;submerged&amp;quot;,&lt;br /&gt;
            &amp;quot;bucket&amp;quot;: &amp;quot;common&amp;quot;,&lt;br /&gt;
            &amp;quot;level&amp;quot;: &amp;quot;1-18&amp;quot;,&lt;br /&gt;
            &amp;quot;weight&amp;quot;: 10.0,&lt;br /&gt;
            &amp;quot;condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;canSeeSky&amp;quot;: false,&lt;br /&gt;
                &amp;quot;minSkyLight&amp;quot;: 8,&lt;br /&gt;
                &amp;quot;maxSkyLight&amp;quot;: 15,&lt;br /&gt;
                &amp;quot;biomes&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_ocean&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;wishiwashi-4&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;wishiwashi&amp;quot;,&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;pokemon&amp;quot;,&lt;br /&gt;
            &amp;quot;context&amp;quot;: &amp;quot;fishing&amp;quot;,&lt;br /&gt;
            &amp;quot;bucket&amp;quot;: &amp;quot;common&amp;quot;,&lt;br /&gt;
            &amp;quot;level&amp;quot;: &amp;quot;1-18&amp;quot;,&lt;br /&gt;
            &amp;quot;weight&amp;quot;: 10.0,&lt;br /&gt;
            &amp;quot;condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;canSeeSky&amp;quot;: false,&lt;br /&gt;
                &amp;quot;minSkyLight&amp;quot;: 8,&lt;br /&gt;
                &amp;quot;maxSkyLight&amp;quot;: 15,&lt;br /&gt;
                &amp;quot;biomes&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_coast&amp;quot;,&lt;br /&gt;
                    &amp;quot;#cobblemon:is_ocean&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Klink&#039;s spawn file - A great template for nearby block requirements, and mod compatibility!&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;neededInstalledMods&amp;quot;: [],&lt;br /&gt;
    &amp;quot;neededUninstalledMods&amp;quot;: [],&lt;br /&gt;
    &amp;quot;spawns&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;klink-1&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;klink&amp;quot;,&lt;br /&gt;
            &amp;quot;presets&amp;quot;: [&lt;br /&gt;
                &amp;quot;natural&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;pokemon&amp;quot;,&lt;br /&gt;
            &amp;quot;context&amp;quot;: &amp;quot;grounded&amp;quot;,&lt;br /&gt;
            &amp;quot;bucket&amp;quot;: &amp;quot;common&amp;quot;,&lt;br /&gt;
            &amp;quot;level&amp;quot;: &amp;quot;5-30&amp;quot;,&lt;br /&gt;
            &amp;quot;weight&amp;quot;: 9.0,&lt;br /&gt;
            &amp;quot;condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;minSkyLight&amp;quot;: 0,&lt;br /&gt;
                &amp;quot;maxSkyLight&amp;quot;: 7,&lt;br /&gt;
                &amp;quot;biomes&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_overworld&amp;quot;&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;neededNearbyBlocks&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#minecraft:redstone_ores&amp;quot;,&lt;br /&gt;
                    &amp;quot;#c:redstone_ores&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;anticondition&amp;quot;: {&lt;br /&gt;
                &amp;quot;biomes&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_deep_dark&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;klink-2&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;klink&amp;quot;,&lt;br /&gt;
            &amp;quot;presets&amp;quot;: [&lt;br /&gt;
                &amp;quot;natural&amp;quot;,&lt;br /&gt;
                &amp;quot;redstone&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;pokemon&amp;quot;,&lt;br /&gt;
            &amp;quot;context&amp;quot;: &amp;quot;grounded&amp;quot;,&lt;br /&gt;
            &amp;quot;bucket&amp;quot;: &amp;quot;common&amp;quot;,&lt;br /&gt;
            &amp;quot;level&amp;quot;: &amp;quot;5-30&amp;quot;,&lt;br /&gt;
            &amp;quot;weight&amp;quot;: 1.8,&lt;br /&gt;
            &amp;quot;condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;biomes&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_overworld&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        },&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;klink-3&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;klink&amp;quot;,&lt;br /&gt;
            &amp;quot;presets&amp;quot;: [&lt;br /&gt;
                &amp;quot;natural&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;pokemon&amp;quot;,&lt;br /&gt;
            &amp;quot;context&amp;quot;: &amp;quot;grounded&amp;quot;,&lt;br /&gt;
            &amp;quot;bucket&amp;quot;: &amp;quot;common&amp;quot;,&lt;br /&gt;
            &amp;quot;level&amp;quot;: &amp;quot;5-30&amp;quot;,&lt;br /&gt;
            &amp;quot;weight&amp;quot;: 1.8,&lt;br /&gt;
            &amp;quot;condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;biomes&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_overworld&amp;quot;&lt;br /&gt;
                ],&lt;br /&gt;
                &amp;quot;neededNearbyBlocks&amp;quot;: [&lt;br /&gt;
                    &amp;quot;create:cogwheel&amp;quot;,&lt;br /&gt;
                    &amp;quot;create:large_cogwheel&amp;quot;,&lt;br /&gt;
                    &amp;quot;create:gearbox&amp;quot;,&lt;br /&gt;
                    &amp;quot;create:vertical_gearbox&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* Elekid&#039;s spawn file - a great example of weight multipliers&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;enabled&amp;quot;: true,&lt;br /&gt;
    &amp;quot;neededInstalledMods&amp;quot;: [],&lt;br /&gt;
    &amp;quot;neededUninstalledMods&amp;quot;: [],&lt;br /&gt;
    &amp;quot;spawns&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;elekid-1&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;elekid&amp;quot;,&lt;br /&gt;
            &amp;quot;presets&amp;quot;: [&lt;br /&gt;
                &amp;quot;natural&amp;quot;&lt;br /&gt;
            ],&lt;br /&gt;
            &amp;quot;type&amp;quot;: &amp;quot;pokemon&amp;quot;,&lt;br /&gt;
            &amp;quot;context&amp;quot;: &amp;quot;grounded&amp;quot;,&lt;br /&gt;
            &amp;quot;bucket&amp;quot;: &amp;quot;uncommon&amp;quot;,&lt;br /&gt;
            &amp;quot;level&amp;quot;: &amp;quot;11-36&amp;quot;,&lt;br /&gt;
            &amp;quot;weight&amp;quot;: 1.68,&lt;br /&gt;
            &amp;quot;weightMultiplier&amp;quot;: {&lt;br /&gt;
                &amp;quot;multiplier&amp;quot;: 5.0,&lt;br /&gt;
                &amp;quot;condition&amp;quot;: {&lt;br /&gt;
                    &amp;quot;isThundering&amp;quot;: true&lt;br /&gt;
                }&lt;br /&gt;
            },&lt;br /&gt;
            &amp;quot;condition&amp;quot;: {&lt;br /&gt;
                &amp;quot;minSkyLight&amp;quot;: 8,&lt;br /&gt;
                &amp;quot;maxSkyLight&amp;quot;: 15,&lt;br /&gt;
                &amp;quot;biomes&amp;quot;: [&lt;br /&gt;
                    &amp;quot;#cobblemon:is_hills&amp;quot;,&lt;br /&gt;
                    &amp;quot;#cobblemon:is_plains&amp;quot;&lt;br /&gt;
                ]&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Spawn_Detail_Presets&amp;diff=5731</id>
		<title>Spawn Detail Presets</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Spawn_Detail_Presets&amp;diff=5731"/>
		<updated>2025-03-06T00:13:20Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Updated json example for redstone&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The JSONs in the &amp;lt;code&amp;gt;spawn_detail_presets&amp;lt;/code&amp;gt; folder create the &amp;lt;code&amp;gt;presets&amp;lt;/code&amp;gt; that are used in Pokémon [[Spawn_Pool_World|spawn files]]. Presets are simply a collection of &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;anticonditions&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;contexts&amp;lt;/code&amp;gt; that are bundled up into a new &amp;lt;code&amp;gt;preset&amp;lt;/code&amp;gt; named after the JSON file name! They are a great way to make familiar scenes into a simple tag you can use when making spawns. &lt;br /&gt;
&lt;br /&gt;
=== Preset Breakdown ===&lt;br /&gt;
You can make a &amp;lt;code&amp;gt;preset&amp;lt;/code&amp;gt; as simple or complex as you like. The complexity of it depends on your understanding of [[Spawn_Condition|spawn conditions]], [https://docs.google.com/document/d/1iB0EJSc2r6mRJXIo1n3XpHbZ5udwJVnrh2pXdhTyH8c/edit biomes], and your creativity. Almost all presets include one major condition. This condition is a list of blocks that the Pokémon can spawn on.&lt;br /&gt;
&lt;br /&gt;
Here is a breakdown of the &amp;lt;code&amp;gt;stronghold&amp;lt;/code&amp;gt; preset. Its conditions require you to be in a naturally generated stronghold with some block requirements. Hover over the underlined text to see more information.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list spawn conditions that will allow a Pokémon to spawn&amp;quot;&amp;gt;condition&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;A list of structures that a Pokémon can spawn in the area of. You will need to list the structure id which can be identified in game using the locate structure command.&amp;quot;&amp;gt;structures&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The ID for minecraft&#039;s stronghold structure. This will allow Pokémon with this preset to spawn in strongholds provided the other conditions are also met.&amp;quot;&amp;gt;minecraft:stronghold&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are specifying the max Y level the Pokémon can spawn at.&amp;quot;&amp;gt;maxY&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;In this case, pokemon using this preset wont spawn above Y:62&amp;quot;&amp;gt;62&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;A list of blocks that a Pokémon can spawn on top of. Can list block id&#039;s or block tags.&amp;quot;&amp;gt;neededBaseBlocks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The block tag for the different kinds of stone bricks.&amp;quot;&amp;gt;#minecraft:stone_bricks&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;A list of blocks required to be nearby in order for a Pokémon to spawn. Only one block from the list is required to be nearby.&amp;quot;&amp;gt;neededNearbyBlocks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The block ID for cracked stone bricks&amp;quot;&amp;gt;minecraft:cracked_stone_bricks&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The block ID for mossy stone bricks&amp;quot;&amp;gt;minecraft:mossy_stone_bricks&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Preset Examples ===&lt;br /&gt;
Here are some simple examples of presets.&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;lava_surface&#039;&#039;&#039; - Allows Pokémon with this preset to spawn on top of lava&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;context&amp;quot;: &amp;quot;surface&amp;quot;,&lt;br /&gt;
  &amp;quot;condition&amp;quot;: {&lt;br /&gt;
    &amp;quot;fluid&amp;quot;: &amp;quot;#minecraft:lava&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;river&#039;&#039;&#039; - Allows Pokémon to spawn in river biomes that aren&#039;t covered in snow or ice.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;condition&amp;quot;: {&lt;br /&gt;
    &amp;quot;biomes&amp;quot;: [ &amp;quot;#cobblemon:is_river&amp;quot; ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;anticondition&amp;quot;: {&lt;br /&gt;
    &amp;quot;biomes&amp;quot;: [ &amp;quot;#cobblemon:is_freezing&amp;quot; ]&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;redstone&#039;&#039;&#039; - Allows Pokémon to spawn near some redstone related blocks, but prevents them from spawning on top of certain blocks too. &lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;condition&amp;quot;: {&lt;br /&gt;
    &amp;quot;neededNearbyBlocks&amp;quot;: [&lt;br /&gt;
      &amp;quot;minecraft:activator_rail&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:daylight_detector&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:detector_rail&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:dispenser&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:dropper&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:hopper&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:observer&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:piston&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:powered_comparator&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:powered_rail&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:powered_repeater&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:redstone_block&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:redstone_lamp&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:redstone_torch&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:redstone_wire&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:sticky_piston&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:unlit_redstone_torch&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:unpowered_comparator&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:unpowered_repeater&amp;quot;,&lt;br /&gt;
      &amp;quot;#minecraft:redstone_ores&amp;quot;,&lt;br /&gt;
      &amp;quot;#c:redstone_blocks&amp;quot;,&lt;br /&gt;
      &amp;quot;#c:redstone_ores&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;anticondition&amp;quot;: {&lt;br /&gt;
    &amp;quot;neededBaseBlocks&amp;quot;: [&lt;br /&gt;
      &amp;quot;minecraft:activator_rail&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:daylight_detector&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:detector_rail&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:dispenser&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:dropper&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:hopper&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:observer&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:piston&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:powered_comparator&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:powered_rail&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:powered_repeater&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:redstone_block&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:redstone_lamp&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:redstone_torch&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:redstone_wire&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:sticky_piston&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:unlit_redstone_torch&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:unpowered_comparator&amp;quot;,&lt;br /&gt;
      &amp;quot;minecraft:unpowered_repeater&amp;quot;,&lt;br /&gt;
      &amp;quot;#c:redstone_blocks&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Tutorials/Regional_Forms&amp;diff=5584</id>
		<title>Tutorials/Regional Forms</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Tutorials/Regional_Forms&amp;diff=5584"/>
		<updated>2025-01-26T12:52:05Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: /* Step 4: Create a &amp;quot;species addition&amp;quot; file with &amp;quot;form&amp;quot; data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
This tutorial will teach you how to create a regional form for &#039;&#039;&#039;&#039;&#039;an existing Pokémon.&#039;&#039;&#039;&#039;&#039; Regional forms are a species variant that can have different looks, types, abilities, moves, and spawn locations! &#039;&#039;&#039;Knowledge of [[Tutorials/Creating_A_Custom_Pokemon|creating custom Pokémon]] is &#039;&#039;required.&#039;&#039;&#039;&#039;&#039; Creating a unique model and textures for your form is highly recommended, but not always necessary. &lt;br /&gt;
&lt;br /&gt;
Due to regional forms usually requiring files for both data and assets, this type of pack will just be called an &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; for simplicity. Addons that use data and asset folders will end up needing to have a copy in both the &amp;lt;code&amp;gt;datapacks&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;resourcepacks&amp;lt;/code&amp;gt; game folders. The data and assets can be separated if desired, but are usually bundled together to make sharing easier!&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Arrange the folders for this addon ===&lt;br /&gt;
Due to some files sharing the same names later in this guide, you will be creating the folder structure and &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; now. This is to prevent confusion going forward. &lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Ensure that it doesn&#039;t end in other file extensions like .txt&lt;br /&gt;
# Open the file and insert the following data:&lt;br /&gt;
#* Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Minecraft know that it is a datapack&amp;quot;&amp;gt;pack&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list the pack format number for a specific version of Minecraft&amp;quot;&amp;gt;pack_format&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;As of 1.20.1, the current resourcepack format number is 15. But it will still load if this number isn&#039;t correct!&amp;quot;&amp;gt;15&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will write a short description of your datapack&amp;quot;&amp;gt;description&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Your short datapack description&amp;quot;&amp;gt;Example description&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
# &amp;lt;li value=3&amp;gt; Save the file and put it aside for now. &lt;br /&gt;
# Create a series of folders arranged like the following example:&lt;br /&gt;
==== Folder Structure ====&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
**assets&lt;br /&gt;
***cobblemon&lt;br /&gt;
****bedrock&lt;br /&gt;
*****pokemon&lt;br /&gt;
******animations&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
******models&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
******posers&lt;br /&gt;
******resolvers&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
****textures&lt;br /&gt;
*****pokemon&lt;br /&gt;
******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
**data&lt;br /&gt;
***cobblemon&lt;br /&gt;
****spawn_pool_world&lt;br /&gt;
****species_additions&lt;br /&gt;
****species_features&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt;Place the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; file into the first folder of your addon next to &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt;&lt;br /&gt;
After this folder tree for your addon is made, you can simply drop the files into the associated folders as you create them. &lt;br /&gt;
Remember that the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; is a file, not a folder to add. It must be one folder deep in order for Minecraft to recognize this pack as a resource pack or data pack when in the appropriate game folders. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Create the assets for your regional variant ===&lt;br /&gt;
How you want your regional variant to look depends entirely on you. You can make it use a new texture over the original model. Most of the time, a new model, texture, and animations are created for this regional form. If for some reason you don&#039;t want it to have a visual difference at all, then you can skip anything regarding &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;. Make sure your assets have a unique name so they don&#039;t overwrite any original form assets.&lt;br /&gt;
&lt;br /&gt;
Assets for existing Pokémon can be obtained from the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/assets/cobblemon/bedrock/pokemon/models Gitlab] or the mod&#039;s JAR file. This can be helpful if you wanted to make a texture variant, or use the model as a base for the regional form. Just remember that animation files are made for specific models so they may need updating depending on what you make. These assets can be made in Blockbench or any relevant art apps. &lt;br /&gt;
&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;texture&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Export these files and place them into the appropriate folders in your addon pack&lt;br /&gt;
# Create a &amp;lt;code&amp;gt;[[poser]]&amp;lt;/code&amp;gt; file for this regional form if new animations were created for the new model. (optional)&lt;br /&gt;
&lt;br /&gt;
As knowledge of creating custom Pokémon is a requirement for this guide, you are expected to know how to make these files. Help can be found on the Cobblemon discord.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Create a &amp;quot;species feature&amp;quot; ===&lt;br /&gt;
On the data side of things, the creation of a regional form starts with the [[Species_Features|species feature]]. A species feature is what allows a Pokémon to have a different set of stats and visuals applied to their regional forms. You will be creating a short JSON file that will be named after your custom region or idea. &#039;&#039;&#039;The feature can be named whatever you want it to be called.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it after your region or idea. Include the extension of&amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: The alolan species feature is named &amp;lt;code&amp;gt;alolan.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Remember to use lowercase and make sure that the file does not end in any other extension like &amp;quot;.txt&amp;quot;&lt;br /&gt;
# Insert the following data into this new species feature JSON:&lt;br /&gt;
#* &#039;&#039;&#039;Remember to change &amp;lt;code&amp;gt;&amp;quot;custom_feature&amp;quot;&amp;lt;/code&amp;gt; to match your file name! It must stay in quotes.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;keys&amp;quot;: [&amp;quot;custom_feature&amp;quot;],&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;flag&amp;quot;,&lt;br /&gt;
  &amp;quot;isAspect&amp;quot;: true,&lt;br /&gt;
  &amp;quot;default&amp;quot;: false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; Save the file&lt;br /&gt;
# Place this new species feature file into the &amp;lt;code&amp;gt;species_feature&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;isAspect&amp;quot;: true&amp;lt;/code&amp;gt; means that this new feature is both a &amp;lt;code&amp;gt;feature&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;aspect&amp;lt;/code&amp;gt;!&lt;br /&gt;
Now that the species feature is made, you can apply it to a Pokémon&#039;s &amp;lt;code&amp;gt;form&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Create a &amp;quot;species addition&amp;quot; file with &amp;quot;form&amp;quot; data ===&lt;br /&gt;
A &amp;lt;code&amp;gt;[[Species_Additions|species_addition]]&amp;lt;/code&amp;gt; file is an efficient way of &#039;&#039;adding&#039;&#039; data to existing species files without having to rewrite the main species file. This allows your additions to be more compatible with other addons affecting the same Pokémon. You will be adding your regional &amp;lt;code&amp;gt;form&amp;lt;/code&amp;gt; data to a species through this method. &lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it after your Pokémon. Include the extension of &amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;bulbasaur.json&amp;lt;/code&amp;gt;&lt;br /&gt;
# Insert the following data into this new species_addition JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;cobblemon:example&amp;quot;,&lt;br /&gt;
  &amp;quot;features&amp;quot;: [&amp;quot;custom_feature&amp;quot;],&lt;br /&gt;
  &amp;quot;forms&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      example form data&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; Change &amp;lt;code&amp;gt;&amp;quot;cobblemon:example&amp;quot;&amp;lt;/code&amp;gt; to reference the Pokémon you want to add a form to. It must remain in quotes. &lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;&amp;quot;cobblemon:bulbasaur&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Change &amp;lt;code&amp;gt;&amp;quot;custom_feature&amp;quot;&amp;lt;/code&amp;gt; to the feature you made earlier. It must remain in quotes. &lt;br /&gt;
# Write all the data for your form inside of the curly brackets&lt;br /&gt;
#* The average form data set is too long to list as an example for this guide. It&#039;s like writing data for an entirely different Pokémon, which is kind of what a regional variant is like. &lt;br /&gt;
#* If you need an example, you can look at the &amp;lt;code&amp;gt;&amp;quot;forms&amp;quot;&amp;lt;/code&amp;gt; data for [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/resources/data/cobblemon/species/generation1/vulpix.json Vulpix on the Gitlab.] It starts on line 196 and ends on line 350.&lt;br /&gt;
#* Remember to include evolution data if this regional variant can evolve.&lt;br /&gt;
# Write your species feature name into the &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;&amp;lt;/code&amp;gt; section of your &amp;lt;code&amp;gt;&amp;quot;forms&amp;quot;&amp;lt;/code&amp;gt; data. &lt;br /&gt;
#* Include the line for aspects if it doesn&#039;t exist yet. It should look like this:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
  &amp;quot;aspects&amp;quot;: [&amp;quot;custom_feature&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Save the file.&lt;br /&gt;
# Place this new species addition file into the &amp;lt;code&amp;gt;species_additions&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
&lt;br /&gt;
Now your target Pokémon&#039;s new form should have the data that allows it to function differently in battles. Next you will create the data that allows it to spawn differently.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Create the spawns for your regional form ===&lt;br /&gt;
The &amp;lt;code&amp;gt;[[Spawn_Pool_World|spawn_pool_world]]&amp;lt;/code&amp;gt; folder holds all the spawning files for each Pokémon. You will be creating a new file for your regional variant. It can be as simple or complicated as you make it. It is recommended that you use the normal form&#039;s spawn file as a base for your regional form. Those spawn files can be found on the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/spawn_pool_world Gitlab.]&lt;br /&gt;
&lt;br /&gt;
To keep things simple, this part of the guide will show you how to recycle a spawn file by changing the Pokémon name and biome conditions. &lt;br /&gt;
# Obtain your target Pokémon&#039;s &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; JSON.&lt;br /&gt;
# Rename the file to anything you want. The name must be different than the original.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;regional_bulbasaur&amp;lt;/code&amp;gt;&lt;br /&gt;
# Open the file and locate all the strings for &amp;lt;code&amp;gt;&amp;quot;id&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;pokemon&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Edit the Pokémon&#039;s name &#039;&#039;&#039;and include&#039;&#039;&#039; the name of your species feature after like this example:&lt;br /&gt;
#* You must use a space after the Pokémon name for the &amp;lt;code&amp;gt;&amp;quot;pokemon&amp;quot;&amp;lt;/code&amp;gt; string.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;bulbasaur-alolan-1&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;bulbasaur alolan&amp;quot;,&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt;Locate all the strings for &amp;lt;code&amp;gt;&amp;quot;biomes&amp;quot;&amp;lt;/code&amp;gt; if they exist&lt;br /&gt;
# Change the listed biome(s) to something different! &lt;br /&gt;
#* This will allow the regional variant to spawn in biomes the normal variant does not.&lt;br /&gt;
#* The list of biome tags can be found [https://docs.google.com/document/d/1iB0EJSc2r6mRJXIo1n3XpHbZ5udwJVnrh2pXdhTyH8c/edit here.]&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new spawn file in the &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
This should be the last of the data folder files. By now, your regional variant can stand on its own data-wise. It should have different stats, and spawns. Now it just needs a different look. &lt;br /&gt;
&lt;br /&gt;
=== Step 6: Create the resolver file for your regional form ===&lt;br /&gt;
Back in step 2, you should have already made the files for &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;posers&amp;lt;/code&amp;gt;. The last thing you need to do is assign them to your regional variant by creating a new &amp;lt;code&amp;gt;[[resolver]]&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
# Obtain your target Pokémon&#039;s &amp;lt;code&amp;gt;resolver&amp;lt;/code&amp;gt; JSON.&lt;br /&gt;
# Change the name of this resolver to &amp;lt;code&amp;gt;1_&amp;lt;pokemon&amp;gt;_base&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You change the number from 0 to 1 so it can load after the normal variant&#039;s data&lt;br /&gt;
#* Sometimes a number greater than 1 is needed, especially if your target Pokémon has gender variants. &lt;br /&gt;
# Open the resolver file and locate the string for &amp;lt;code&amp;gt;&amp;quot;order&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Change the value of &amp;quot;order&amp;quot; from 0 to 1.&lt;br /&gt;
#* Again, sometimes this value needs to be greater than 1.&lt;br /&gt;
# Add the name of your species feature to the &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;&amp;lt;/code&amp;gt; string&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;: [&amp;quot;alolan&amp;quot;]&amp;lt;/code&amp;gt;&lt;br /&gt;
#* This allows any Pokémon that spawned with this feature/aspect to use any following model, textures, or poser.&lt;br /&gt;
# Assign any &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt; that you made in Step 2.&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new resolver in the &amp;lt;code&amp;gt;resolvers&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Test your addon in game ===&lt;br /&gt;
Load your addon in game to see if your regional form looks different from the normal one. You can have Blockbench open to edit any relevant asset file &#039;&#039;&#039;in the resourcepacks folder&#039;&#039;&#039; if needed. &lt;br /&gt;
# Copy your addon folder and place it in the &amp;quot;resourcepacks&amp;quot; and &amp;quot;datapacks&amp;quot; folder in the Minecraft root directory.&lt;br /&gt;
# Start up Minecraft and click on &#039;&#039;Options&#039;&#039;, then &#039;&#039;Resource Packs&#039;&#039;. Select your pack to load it.&lt;br /&gt;
# Load/create a &#039;&#039;&#039;Creative&#039;&#039;&#039; world save that contains your addon in the &amp;quot;datapack&amp;quot; folder.&lt;br /&gt;
# Once in the world, you can run the command &amp;lt;code&amp;gt;/pokespawn &amp;lt;target pokemon&amp;gt; &amp;lt;species feature&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Ensure your new regional form is working properly.&lt;br /&gt;
# Check if your regional form spawns where you assigned it to. You can use &amp;lt;code&amp;gt;/checkspawn &amp;lt;rarity&amp;gt;&amp;lt;/code&amp;gt; when in the assigned biome. &lt;br /&gt;
#* You can run the command &amp;lt;code&amp;gt;/locate biome &amp;lt;assigned biome&amp;gt;&amp;lt;/code&amp;gt; to get coordinates to the assigned biome. You can then click on the coordinates it gave you and be teleported instantly. &lt;br /&gt;
# Make any desired edits to the asset files and save. Refresh resource packs with F3+T to see the changes you make.&lt;br /&gt;
# Make any desired edits to the data files and save. &#039;&#039;&#039;You need to quit to main menu, and load the world again if you want to see those changes.&#039;&#039;&#039;&lt;br /&gt;
#* The command for &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt; does not work with Cobblemon addons unfortunately. &lt;br /&gt;
&lt;br /&gt;
You should now have a functional regional variant!&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Species&amp;diff=5087</id>
		<title>Species</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Species&amp;diff=5087"/>
		<updated>2024-12-21T08:35:08Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Updated links to fakemon generator&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;species&amp;lt;/code&amp;gt; JSON contains all the data of each Pokémon and its various forms. The species file is &#039;&#039;&#039;everything&#039;&#039;&#039; a Pokémon is without the visual aspects. Moves, abilities, forms, size, evolutions, and so much more are contained in this single file for every Pokémon. Cobblemon already includes most of this data for all 1,017 Pokémon. &lt;br /&gt;
&lt;br /&gt;
Creating a custom Pokémon is as simple as creating a new species file! You can borrow an existing Pokémon&#039;s species file and swap the name for a new one or you can create a new file from scratch. It is highly recommended that you use the [https://tools.cobblemon.com/fakemon/ Cobblemon Fakemon Generator] to create new species files. &lt;br /&gt;
&lt;br /&gt;
=== The Species File ===&lt;br /&gt;
The species file contains large amounts of data about Pokémon that connect to all the other systems that make Pokémon function in game. Some properties in the file are self explanatory, while others are not so clear. This section will provide lots of helpful information and links to help you understand all the different systems that connect to the species file. &lt;br /&gt;
&lt;br /&gt;
==== Helpful Information ====&lt;br /&gt;
Some very helpful links and resources will be listed below. They can help you with understanding the mechanics of both the mod and Pokémon in general.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Where to get species files&#039;&#039;&#039; =====&lt;br /&gt;
* [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/species The Cobblemon Gitlab] - This is where Cobblemon&#039;s source code is hosted. You can find the species files of all Pokémon in that link. They should be in folders sorted by generation.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Where to find official Pokémon data&#039;&#039;&#039; =====&lt;br /&gt;
* [[bulbapedia:List of Pokémon by National Pokédex number|Bulbagarden]] - This website has information about Pokémon both from the games and the anime. You can find many references about each Pokémon here.&amp;lt;/br&amp;gt;&lt;br /&gt;
* [https://pokemondb.net/pokedex/all Pokémon Database] - This website has all kinds of information about Pokémon, but is more focused on stats. A lot of that data is the same or similar to what&#039;s written in the species files.&lt;br /&gt;
* [https://www.serebii.net/pokemon/nationalpokedex.shtml Serebii] - This website probably has the most information about Pokémon. Serebii provides accurate data and media references with images of these media appearances.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;Behaviors and AI information&#039;&#039;&#039; =====&lt;br /&gt;
* [[Pokémon/Behaviour| Behavior Wiki Page]] - This wiki page will list and explain all the different behavior properties you can write for a Pokémon. This assigns the Pokémon its AI behavior. You can also copy a similar Pokémon&#039;s behavior code block if you are unsure how to create one.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Forms, Features, and Aspects&#039;&#039;&#039; =====&lt;br /&gt;
* [[Tutorials/Regional_Forms|Regional Forms]] - This links to a tutorial about setting up regional forms. Regional forms usually have different stats and this tutorial can show you how to set them up.&amp;lt;/br&amp;gt;&lt;br /&gt;
* [[Tutorials/Multiple_Visual_Variants|Multiple Visual Forms]] - This links to a tutorial about creating multiple visual forms like the different Torterra trees. These kinds of forms usually keep the same stats as the normal form and this tutorial can show you how to set them up.&amp;lt;/br&amp;gt;&lt;br /&gt;
* [[Species_Features|Species Features]] - This is the wiki page about species features. Features are what create &amp;quot;Aspects.&amp;quot; Aspects are what allows for all the different visual forms for Pokémon. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Evolutions&#039;&#039;&#039; =====&lt;br /&gt;
* [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/species The Cobblemon Gitlab] - It is recommended that you use an existing Pokémon&#039;s evolution data as a template for evolutions. All existing evolution methods should be written into their respective pokemon&#039;s species file.&amp;lt;/br&amp;gt;&lt;br /&gt;
* [https://tools.cobblemon.com/fakemon/ Cobblemon Fakemon Generator] - You can also generate evolution methods using the Fakemon generator. It will give you all the evolution methods when creating new species files.&amp;lt;/br&amp;gt;&lt;br /&gt;
* [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/kotlin/com/cobblemon/mod/common/pokemon/evolution/requirements Evolution Requirements From the Cobblemon Gitlab] - This links to a folder on the gitlab that has the code files to all the possible evolution requirements for you to reference. All of these methods are used by at least one official Pokémon. It is recommended that you look up this Pokémon&#039;s species file to replicate its evolution method. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;Shoulder Effects&#039;&#039;&#039; =====&lt;br /&gt;
Shoulder effects grant special buffs to the player if certain Pokémon are on their shoulders. Version 1.4 removed the shoulder effects so they could be rebalanced at a later date, but you can still apply effect data through datapacks. As of version 1.4, no shoulder mountable Pokémon has shoulder effect data in their species file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;If you wish to apply shoulder effect data to a Pokémon, you can include the following code block and switch the effect as you please:&lt;br /&gt;
* You can find a list of effects on the [https://minecraft.wiki/w/Effect#Effect_list Minecraft Wiki]. Mileage may vary.&lt;br /&gt;
  &amp;quot;shoulderEffects&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;potion_effect&amp;quot;,&lt;br /&gt;
      &amp;quot;effect&amp;quot;: &amp;quot;minecraft:slow_falling&amp;quot;,&lt;br /&gt;
      &amp;quot;amplifier&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;ambient&amp;quot;: true,&lt;br /&gt;
      &amp;quot;showParticles&amp;quot;: false,&lt;br /&gt;
      &amp;quot;showIcon&amp;quot;: false&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Version 1.3 shoulder effects:&lt;br /&gt;
* &amp;lt;code&amp;gt;haste&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;water_breathing&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;speed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;slow_falling&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;Moves and Learning Methods&#039;&#039;&#039; =====&lt;br /&gt;
This section of the species file determines the moves a Pokémon can learn. There are 4 methods of learning moves. Only 1 of them is currently implemented and that&#039;s &amp;lt;code&amp;gt;level&amp;lt;/code&amp;gt; learning.&lt;br /&gt;
&lt;br /&gt;
Every move from the official games should be in Cobblemon. In order for moves to be read properly, they must be written in the correct format for the move list. The method type goes on the left side of a colon and the move name goes on the right side of the colon. &#039;&#039;&#039;Moves that contain 2 or more words must be bunched together into one &amp;quot;word&amp;quot; and can&#039;t contain any spaces, underscores, commas, or hyphens.&#039;&#039;&#039; Everything must remain in lowercase as well. &lt;br /&gt;
&lt;br /&gt;
Example of each method and name format:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;5:quickattack&amp;quot;&amp;lt;/code&amp;gt; : &#039;&#039;&#039;Level&#039;&#039;&#039; - This would let a Pokémon learn &amp;lt;code&amp;gt;quick attack&amp;lt;/code&amp;gt; at level 5. The number determines what level the move will be learned at. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;egg:thunder&amp;quot;&amp;lt;/code&amp;gt; : &#039;&#039;&#039;Egg Move&#039;&#039;&#039; - This would let a Pokémon inherit &amp;lt;code&amp;gt;thunder&amp;lt;/code&amp;gt; from one of its parents. It will hatch from its egg knowing this move when breeding gets implemented. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;tm:thunderbolt&amp;quot;&amp;lt;/code&amp;gt; : &#039;&#039;&#039;TMs&#039;&#039;&#039; - This would allow a Pokémon to use a &amp;lt;code&amp;gt;thunderbolt&amp;lt;/code&amp;gt; TM when TMs get implemented.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;tutor:10000000voltthunderbolt&amp;quot;&amp;lt;/code&amp;gt; : &#039;&#039;&#039;Tutor&#039;&#039;&#039; - This would allow a Pokémon to learn &amp;lt;code&amp;gt;10,000,000 Volt Thunderbolt&amp;lt;/code&amp;gt; from a tutor when tutors get implemented. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Item Drops&#039;&#039;&#039; =====&lt;br /&gt;
Cobblemon drops work differently than vanilla drops. You need to set a target amount of drops, then it tries to achieve this drop amount by rolling for drops in the entries listed. If an entry passes a percentage check, then it will count as 1 towards the targeted amount. Once this target amount is achieved, it will stop trying to roll for drops even if it did not finish reading all the entries. If it runs out of entries and did not achieve this target, then it will also stop rolling for drops. Once it stops rolling, all of the drops that passed the percentage check will drop where the Pokémon was defeated.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Example code block for drops:&lt;br /&gt;
* Since amount is set to 1 and there is only 1 entry, then it will only roll for drops from this 1 entry.&lt;br /&gt;
* The sweet berries entry does not list a percentage value, so by default its 100%.&lt;br /&gt;
* This would make Vulpix drop 2-3 berries 100% of the time&lt;br /&gt;
 &amp;quot;drops&amp;quot;: {&lt;br /&gt;
   &amp;quot;amount&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
   &amp;quot;entries&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
       &amp;quot;item&amp;quot;: &amp;quot;minecraft:sweet_berries&amp;quot;,&lt;br /&gt;
       &amp;quot;quantityRange&amp;quot;: &amp;quot;2-3&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
   ]&lt;br /&gt;
 },&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;Hitbox and Base Scale&#039;&#039;&#039; =====&lt;br /&gt;
The size of the Pokémon model and its hitbox are controlled by the species file. If you want to change any of these values and see the results, &#039;&#039;&#039;you must load the singleplayer world from the main menu.&#039;&#039;&#039; The &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt; command does not work with Cobblemon datapacks. Loading the world again is the proper way to refresh Cobblemon datapacks.&amp;lt;/br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;baseScale&amp;lt;/code&amp;gt; will size the Pokémon up or down. A value of 1 will let the model be at a one to one scale with its size in blockbench.&amp;lt;/br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;hitbox&amp;lt;/code&amp;gt; has 3 values you can change, but you will only want to change the &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; of the hitbox. In game, you can press &amp;lt;code&amp;gt;F3+B&amp;lt;/code&amp;gt; to show the hitboxes on entities. &lt;br /&gt;
** Height is how many blocks high the Pokémon is.&lt;br /&gt;
** A hitbox width of 1 will let the hitbox be as wide as 1 Minecraft block with the Pokémon at the center of the hitbox. Width is akin to diameter, but it&#039;s Minecraft so everything is a cube. Try not to think about it too much.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;Height and Weight&#039;&#039;&#039; =====&lt;br /&gt;
The height and weight that will be used for the Pokédex when it gets implemented. The unit for height is in decimeters. The unit for weight is in hectograms. Dividing these values by 10 will give you the metric units for meters and kilograms.&lt;br /&gt;
* &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; doesn&#039;t do anything significant and is misleading a lot of the time in the Pokédex. Sometimes it measures distance from the ground, and sometimes it measures how long a Pokémon is.&lt;br /&gt;
* &amp;lt;code&amp;gt;weight&amp;lt;/code&amp;gt; will determine the damage value of weight based moves like heavy slam. Make sure you set these weights to hectograms or these moves may do unintentional amounts of damage.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=====&#039;&#039;&#039;Gender&#039;&#039;&#039;=====&lt;br /&gt;
Gender is managed via the &amp;lt;code&amp;gt;maleRatio&amp;lt;/code&amp;gt; property. &lt;br /&gt;
* This property should have a decimal value between 0 and 1, and is the percent chance for a Pokémon to spawn as a male. &lt;br /&gt;
** A value of &amp;lt;code&amp;gt;0.1&amp;lt;/code&amp;gt; for example would lead to a 10% chance to spawn as a male. &lt;br /&gt;
* The special value of &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; is reserved for genderless Pokémon.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Lighting Data&#039;&#039;&#039; =====&lt;br /&gt;
Lighting data allows for compatibility with some of the more popular dynamic lighting mods. A Pokémon can be assigned a light level and can be set to only emit light when on land, underwater, or both!&lt;br /&gt;
* &amp;lt;code&amp;gt;lightLevel&amp;lt;/code&amp;gt; - The light level emitted by the Pokémon. A range of 0 to 15.&lt;br /&gt;
* &amp;lt;code&amp;gt;liquidGlowMode&amp;lt;/code&amp;gt; - If the effect runs while in a liquid or on land. Your options are &amp;lt;code&amp;gt;LAND&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UNDERWATER&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;BOTH&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Example code block for lightingData:&lt;br /&gt;
* Any pokemon assigned this data will emit a light level of 14 when on land&lt;br /&gt;
  &amp;quot;lightingData&amp;quot;: {&lt;br /&gt;
   &amp;quot;lightLevel&amp;quot;: 14,&lt;br /&gt;
   &amp;quot;liquidGlowMode&amp;quot;: &amp;quot;LAND&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Species File Breakdown ====&lt;br /&gt;
As far as the writer of this article is concerned, Vulpix has one of the most fleshed out species files. This makes Vulpix a great example to explain the different sections of the species file. You can reference some of the resources listed above and compare them with the written data below. Hover over the underlined text to see more information.&amp;lt;/br&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not this pokémon is fully implemented. This determines whether it will show up in /spawnallpokemon or similar commands.&amp;quot;&amp;gt;implemented&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Because it&#039;s set to true, vulpix will appear when using the /spawnallpokemon command.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will create the name of a new Pokémon species&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this species.&amp;quot;&amp;gt;Vulpix&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The pokédex number for this pokémon -- currently not significant, but just in case, try and pick a unique digit above 2000.&amp;quot;&amp;gt;nationalPokedexNumber&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;This is Vulpix&#039;s national dex number!&amp;quot;&amp;gt;37&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Elemental typings of your Pokémon, these are completely up to you. (But of course it must be an official typing.) You do not need to have a secondary typing if you don&#039;t want one.&amp;quot;&amp;gt;primaryType&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Vulpix is a fire type, so we assign it fire here.&amp;quot;&amp;gt;fire&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here we define the list of abilities. You can have up to two abilities listed, and one hidden ability.&amp;quot;&amp;gt;abilities&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This is Vulpix&#039;s first and only ability&amp;quot;&amp;gt;flashfire&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This is Vulpix&#039;s hidden ability&amp;quot;&amp;gt;h:drought&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The base stats of your Pokémon. Again, these are up to you. You can reference some official Pokémon stats and borrow them if you can&#039;t come up with your own.&amp;quot;&amp;gt;baseStats&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the amount of health a Pokémon will have.&amp;quot;&amp;gt;hp&amp;lt;/abbr&amp;gt;&amp;quot;: 38,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage dealt from physical attacks.&amp;quot;&amp;gt;attack&amp;lt;/abbr&amp;gt;&amp;quot;: 41,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage reduction from physical attacks&amp;quot;&amp;gt;defence&amp;lt;/abbr&amp;gt;&amp;quot;: 40,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage dealt from special attacks.&amp;quot;&amp;gt;special_attack&amp;lt;/abbr&amp;gt;&amp;quot;: 50,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage reduction from special attacks.&amp;quot;&amp;gt;special_defence&amp;lt;/abbr&amp;gt;&amp;quot;: 65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines if the Pokémon will move first in battle.&amp;quot;&amp;gt;speed&amp;lt;/abbr&amp;gt;&amp;quot;: 65&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;We define how the pokémon behaves here. You can reference the Behavior wiki page to see more information about this section.&amp;quot;&amp;gt;behaviour&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;A set of properties relating to how and when the Pokémon sleeps, if it sleeps at all.&amp;quot;&amp;gt;resting&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;A true/false value. If it&#039;s true, then it can fall asleep and use its sleep animations. You probably want this set to true always!&amp;quot;&amp;gt;canSleep&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to true will allow Vulpix to fall asleep under the following conditions.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;A true/false value. If true, the Pokémon will try to sleep on top of the player&#039;s bed when they hop into it, much like cats.&amp;quot;&amp;gt;willSleepOnBed&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;If given the option, Vulpix will try to sleep on a player bed.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Is this Pokémon a light sleeper or a heavy sleeper?&amp;quot;&amp;gt;depth&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The depth of the sleep. Normal means vulpix will wake up if the player is within 16 blocks and not sneaking.&amp;quot;&amp;gt;normal&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;A light level or level range, between 0 and 15, which represents the light levels in which the Pokémon is able to sleep.&amp;quot;&amp;gt;light&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Vulpix will attempt to sleep only if it&#039;s standing in a light level of 0-4.&amp;quot;&amp;gt;0-4&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How easy it is to catch your pokémon. Larger numbers mean it&#039;s easier to catch.&amp;quot;&amp;gt;catchRate&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Values over 100 are considered &#039;easier&#039; captures. Since Vulpix is a pre evolution Pokémon, its capture rate is quite high.&amp;quot;&amp;gt;190&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;What percentage of this pokémon are male.&amp;quot;&amp;gt;maleRatio&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Wild Vulpix have a 25% chance of being male. This means 75% of Vulpix spawns will be females.&amp;quot;&amp;gt;0.25&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Determines whether or not this Pokémon can go on the players shoulder. You can set this to true for any Pokémon, but it most likely wont look good! It will use its ground idle animation on the player shoulder if there is no dedicated shoulder animation.&amp;quot;&amp;gt;shoulderMountable&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Vulpix is unfortunately not a shoulder mountable Pokémon.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;A list of available forms for Vulpix. These forms will have their own set of stats. It&#039;s almost like writing a whole new Pokémon into this section.&amp;quot;&amp;gt;forms&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this form.&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;We simply call it Alola. All the other Alolan Pokémon forms will share this same form name.&amp;quot;&amp;gt;Alola&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix&#039;s type. Form types are usually different than the base form.&amp;quot;&amp;gt;primaryType&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix will be an ice type.&amp;quot;&amp;gt;ice&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here we will list Alolan Vulpix&#039;s abilities.&amp;quot;&amp;gt;abilities&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix&#039;s first and only ability.&amp;quot;&amp;gt;snowcloak&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix&#039;s hidden ability&amp;quot;&amp;gt;h:snowwarning&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The base stats for Alolan Vulpix. These are usually different than the base form.&amp;quot;&amp;gt;baseStats&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the amount of health a Pokémon will have.&amp;quot;&amp;gt;hp&amp;lt;/abbr&amp;gt;&amp;quot;: 38,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage dealt from physical attacks.&amp;quot;&amp;gt;attack&amp;lt;/abbr&amp;gt;&amp;quot;: 41,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage reduction from physical attacks&amp;quot;&amp;gt;defence&amp;lt;/abbr&amp;gt;&amp;quot;: 40,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage dealt from special attacks.&amp;quot;&amp;gt;special_attack&amp;lt;/abbr&amp;gt;&amp;quot;: 50,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage reduction from special attacks.&amp;quot;&amp;gt;special_defence&amp;lt;/abbr&amp;gt;&amp;quot;: 65,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines if the Pokémon will move first in battle.&amp;quot;&amp;gt;speed&amp;lt;/abbr&amp;gt;&amp;quot;: 65&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How easy it is to catch your pokémon. Larger numbers mean it&#039;s easier to catch.&amp;quot;&amp;gt;catchRate&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Values over 100 are considered &#039;easier&#039; captures. Since Alolan Vulpix is a pre evolution Pokémon, its capture rate is quite high.&amp;quot;&amp;gt;190&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;What percentage of this pokémon are male.&amp;quot;&amp;gt;maleRatio&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Wild Alolan Vulpix have a 25% chance of being male. This means 75% of Alolan Vulpix spawns will be females.&amp;quot;&amp;gt;0.25&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How many experience granted by this pokémon upon being defeated.&amp;quot;&amp;gt;baseExperienceYield&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Weaker Pokémon usually have this value around 50.&amp;quot;&amp;gt;60&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;What this pokémon&#039;s friendship stat starts at when caught.&amp;quot;&amp;gt;baseFriendship&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Most Pokémon have this value set to 50&amp;quot;&amp;gt;50&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How many effort values this pokémon gives upon being defeated.&amp;quot;&amp;gt;evYield&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;hp&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;attack&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;defence&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;special_attack&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;special_defence&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;speed&amp;lt;/abbr&amp;gt;&amp;quot;: 1&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How quickly this Pokémon will level up. You can look this information up online.&amp;quot;&amp;gt;experienceGroup&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix will level up at a &#039;medium fast&#039; rate.&amp;quot;&amp;gt;medium_fast&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How long it takes for this pokémon&#039;s egg to hatch.&amp;quot;&amp;gt;eggCycles&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A value of 20 is about how long it takes to hatch a starter Pokémon egg.&amp;quot;&amp;gt;20&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;What egg groups this Pokémon will be able to breed with. You can look this information up online.&amp;quot;&amp;gt;eggGroups&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;The egg group of this pokemon.&amp;quot;&amp;gt;field&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list what moves the pokemon can learn and how they will learn those moves. You can check this page&#039;s section for moves to see how to write them.&amp;quot;&amp;gt;moves&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Alolan Vulpix learn powder snow at level 1&amp;quot;&amp;gt;1:powdersnow&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Alolan Vulpix learn tail whip at level 1&amp;quot;&amp;gt;1:tailwhip&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;4:disable&amp;quot;,&lt;br /&gt;
        &amp;quot;7:roar&amp;quot;,&lt;br /&gt;
        &amp;quot;8:iceshard&amp;quot;,&lt;br /&gt;
        &amp;quot;9:babydolleyes&amp;quot;,&lt;br /&gt;
        &amp;quot;12:spite&amp;quot;,&lt;br /&gt;
        &amp;quot;16:icywind&amp;quot;,&lt;br /&gt;
        &amp;quot;18:payback&amp;quot;,&lt;br /&gt;
        &amp;quot;20:confuseray&amp;quot;,&lt;br /&gt;
        &amp;quot;23:feintattack&amp;quot;,&lt;br /&gt;
        &amp;quot;24:aurorabeam&amp;quot;,&lt;br /&gt;
        &amp;quot;26:hex&amp;quot;,&lt;br /&gt;
        &amp;quot;28:extrasensory&amp;quot;,&lt;br /&gt;
        &amp;quot;32:icebeam&amp;quot;,&lt;br /&gt;
        &amp;quot;34:safeguard&amp;quot;,&lt;br /&gt;
        &amp;quot;36:imprison&amp;quot;,&lt;br /&gt;
        &amp;quot;40:mist&amp;quot;,&lt;br /&gt;
        &amp;quot;44:auroraveil&amp;quot;,&lt;br /&gt;
        &amp;quot;47:captivate&amp;quot;,&lt;br /&gt;
        &amp;quot;48:sheercold&amp;quot;,&lt;br /&gt;
        &amp;quot;52:grudge&amp;quot;,&lt;br /&gt;
        &amp;quot;56:blizzard&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:agility&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:babydolleyes&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:charm&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:disable&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:encore&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:extrasensory&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:flail&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:freezedry&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:howl&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:hypnosis&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:moonblast&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:powerswap&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:roar&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:secretpower&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:spite&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:tailslap&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:agility&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:attract&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:auroraveil&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:blizzard&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:bodyslam&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:charm&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:confide&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:darkpulse&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:dig&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:doubleteam&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:drainingkiss&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:encore&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:endure&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:facade&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:foulplay&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:frostbreath&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:frustration&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:hail&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:hex&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:hiddenpower&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:icebeam&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:icywind&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:imprison&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:irontail&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:payback&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:powerswap&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:protect&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:psychup&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:raindance&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:rest&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:return&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:roar&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:round&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:safeguard&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:sleeptalk&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:snore&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:substitute&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:swagger&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:swift&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:tailslap&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:toxic&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:weatherball&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:zenheadbutt&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:aquatail&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:aurorabeam&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:babydolleyes&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:blizzard&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:celebrate&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:confuseray&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:covet&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:darkpulse&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:dazzlinggleam&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:dig&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:facade&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:foulplay&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:headbutt&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:healbell&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:icebeam&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:iceshard&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:icywind&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:irontail&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:mist&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:painsplit&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:powdersnow&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:protect&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:reflect&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:rest&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:roar&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:roleplay&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:snore&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:spite&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:substitute&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:tackle&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:tailwhip&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:toxic&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:zenheadbutt&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Labels for this pokémon. There&#039;s no real use for labels yet.&amp;quot;&amp;gt;labels&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Label for a Pokémon introduced in generation 7&amp;quot;&amp;gt;gen7&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Label for a Regional form from the alola region&amp;quot;&amp;gt;alola_regional&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Aspects are what allows a Pokémon to change its visual aspects for things like regional forms. You can read about it in this page&#039;s section on forms.&amp;quot;&amp;gt;aspects&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix will receive the aspect for alolan. This will allow it to use the alolan aspect in the resolver file to assign the alolan model instead of the kantonian one.&amp;quot;&amp;gt;alolan&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon&#039;s height measured in decimeters&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: 6,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon&#039;s weight measured in hectograms&amp;quot;&amp;gt;weight&amp;lt;/abbr&amp;gt;&amp;quot;: 99,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list any evolution methods the form will have. They are separate from the base forms evolutions.&amp;quot;&amp;gt;evolutions&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this evolution entry.&amp;quot;&amp;gt;id&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this evolution entry.&amp;quot;&amp;gt;vulpix_ninetales&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;The evolution variant it will use to evolve.&amp;quot;&amp;gt;variant&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, you need to interact with an item. This is the same method as using an evolution stone to evolve. But it can be configured to be any item or modded item.&amp;quot;&amp;gt;item_interact&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon that this species will evolve into.&amp;quot;&amp;gt;result&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are specifying that alolan vulpix will evolve into alolan ninetales. Remember to use this format when making evolution data for regional forms.&amp;quot;&amp;gt;ninetales form=alola&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not its held item gets consumed when evolving.&amp;quot;&amp;gt;consumeHeldItem&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A held item is not required for this evolution, so we will leave this false for now&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;A list of moves this Pokémon will learn when it evolves.&amp;quot;&amp;gt;learnableMoves&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;When evolving into Alolan Ninetales, it will learn dazzling gleam.&amp;quot;&amp;gt;dazzlinggleam&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list some sub requirements for evolution. You can learn more about evolution requirements on this page&#039;s section of evolution&amp;quot;&amp;gt;requirements&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;There are no sub requirements for this evolution, so we leave these brackets blank.&amp;quot;&amp;gt;[]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list what item you need to interact with to make this Pokémon evolve.&amp;quot;&amp;gt;requiredContext&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, we are using an ice stone from the Cobblemon mod. This can be changed to any vanilla or modded item as long as you use the proper item id.&amp;quot;&amp;gt;cobblemon:ice_stone&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;cannotDynamax&amp;lt;/abbr&amp;gt;&amp;quot;: false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;battleOnly&amp;lt;/abbr&amp;gt;&amp;quot;: false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list any features this pokemon has. Features come from the species feature folder of the mod. You can learn more about features from this page&#039;s section on forms and features.&amp;quot;&amp;gt;features&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Even though the alolan form&#039;s data is written above, Vulpix can&#039;t access that form data unless you list alolan as a feature like this. So remember to apply alolan as a feature and an aspect!&amp;quot;&amp;gt;alolan&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How many experience granted by this pokémon upon being defeated.&amp;quot;&amp;gt;baseExperienceYield&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Weaker Pokémon usually have this value around 50.&amp;quot;&amp;gt;60&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How quickly this Pokémon will level up. You can look this information up online.&amp;quot;&amp;gt;experienceGroup&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Vulpix will level up at a &#039;medium fast&#039; rate.&amp;quot;&amp;gt;medium_fast&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How long it takes for this pokémon&#039;s egg to hatch.&amp;quot;&amp;gt;eggCycles&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A value of 20 is about how long it takes to hatch a starter Pokémon egg.&amp;quot;&amp;gt;20&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;What egg groups this Pokémon will be able to breed with. You can look this information up online.&amp;quot;&amp;gt;eggGroups&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The egg group of this pokemon.&amp;quot;&amp;gt;field&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;drops&amp;quot;: {&lt;br /&gt;
    &amp;quot;amount&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;entries&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;minecraft:sweet_berries&amp;quot;,&lt;br /&gt;
        &amp;quot;quantityRange&amp;quot;: &amp;quot;2-3&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list what moves the pokemon can learn and how they will learn those moves. You can check this page&#039;s section for moves to see how to write them.&amp;quot;&amp;gt;moves&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This allows Kantonian Vulpix to learn ember at level 1&amp;quot;&amp;gt;1:ember&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This allows Kantonian Vulpix to learn tail whip at level 1&amp;quot;&amp;gt;1:tailwhip&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;4:disable&amp;quot;,&lt;br /&gt;
    &amp;quot;7:roar&amp;quot;,&lt;br /&gt;
    &amp;quot;8:quickattack&amp;quot;,&lt;br /&gt;
    &amp;quot;9:babydolleyes&amp;quot;,&lt;br /&gt;
    &amp;quot;12:spite&amp;quot;,&lt;br /&gt;
    &amp;quot;16:incinerate&amp;quot;,&lt;br /&gt;
    &amp;quot;18:payback&amp;quot;,&lt;br /&gt;
    &amp;quot;20:confuseray&amp;quot;,&lt;br /&gt;
    &amp;quot;23:feintattack&amp;quot;,&lt;br /&gt;
    &amp;quot;24:willowisp&amp;quot;,&lt;br /&gt;
    &amp;quot;26:hex&amp;quot;,&lt;br /&gt;
    &amp;quot;28:extrasensory&amp;quot;,&lt;br /&gt;
    &amp;quot;28:flameburst&amp;quot;,&lt;br /&gt;
    &amp;quot;32:flamethrower&amp;quot;,&lt;br /&gt;
    &amp;quot;36:imprison&amp;quot;,&lt;br /&gt;
    &amp;quot;40:firespin&amp;quot;,&lt;br /&gt;
    &amp;quot;44:safeguard&amp;quot;,&lt;br /&gt;
    &amp;quot;47:captivate&amp;quot;,&lt;br /&gt;
    &amp;quot;48:inferno&amp;quot;,&lt;br /&gt;
    &amp;quot;52:grudge&amp;quot;,&lt;br /&gt;
    &amp;quot;56:fireblast&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:babydolleyes&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:captivate&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:disable&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:energyball&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:extrasensory&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:feintattack&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:flail&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:flamecharge&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:flareblitz&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:heatwave&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:hex&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:howl&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:hypnosis&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:memento&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:powerswap&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:psychup&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:roar&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:secretpower&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:spite&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:tailslap&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:agility&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:attract&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:bodyslam&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:captivate&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:confide&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:darkpulse&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:dig&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:doubleteam&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:encore&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:endure&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:energyball&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:facade&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:fireblast&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:firespin&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:flamecharge&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:flamethrower&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:flareblitz&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:foulplay&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:frustration&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:heatwave&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:hex&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:hiddenpower&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:imprison&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:incinerate&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:irontail&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:mysticalfire&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:naturalgift&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:overheat&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:payback&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:powerswap&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:protect&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:psychup&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:rest&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:return&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:roar&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:round&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:safeguard&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:secretpower&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:sleeptalk&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:snore&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:substitute&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:sunnyday&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:swagger&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:swift&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:tailslap&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:toxic&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:weatherball&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:willowisp&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:zenheadbutt&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:attract&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:bide&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:bodyslam&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:burningjealousy&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:charm&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:confuseray&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:covet&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:curse&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:darkpulse&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:dig&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:disable&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:doubleedge&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:doubleteam&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:ember&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:endure&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:facade&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:feintattack&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:fireblast&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:firespin&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:flail&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:flamethrower&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:foulplay&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:frustration&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:headbutt&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:heatwave&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:hiddenpower&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:hypnosis&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:irontail&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:mimic&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:ominouswind&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:painsplit&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:protect&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:quickattack&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:rage&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:reflect&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:rest&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:return&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:roar&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:roleplay&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:safeguard&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:skullbash&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:sleeptalk&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:snore&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:spite&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:substitute&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:sunnyday&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:swagger&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:swift&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:tackle&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:tailwhip&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:takedown&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:toxic&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:willowisp&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:zenheadbutt&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Labels for this pokémon. There&#039;s no real use for labels yet.&amp;quot;&amp;gt;labels&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Label for a Pokémon introduced in generation 1&amp;quot;&amp;gt;gen1&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Label for a Pokémon from the kanto region.&amp;quot;&amp;gt;kanto_regional&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you can create a string for your pokedex entry. The entry itself is written in the lang file. You are simply creating something to define in the lang file here.&amp;quot;&amp;gt;pokedex&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This line can be translated to any language in the language files and include the actual pokedex entry.&amp;quot;&amp;gt;cobblemon.species.vulpix.desc&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list any evolution methods&amp;quot;&amp;gt;evolutions&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this evolution entry.&amp;quot;&amp;gt;id&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this evolution entry.&amp;quot;&amp;gt;vulpix_ninetales&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The evolution variant it will use to evolve.&amp;quot;&amp;gt;variant&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, you need to interact with an item. This is the same method as using an evolution stone to evolve. But it can be configured to be any item or modded item.&amp;quot;&amp;gt;item_interact&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon that this species will evolve into.&amp;quot;&amp;gt;result&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are specifying that vulpix will evolve into ninetales.&amp;quot;&amp;gt;ninetales&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not its held item gets consumed when evolving.&amp;quot;&amp;gt;consumeHeldItem&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A held item is not required for this evolution, so we will leave this false for now&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;A list of moves this Pokémon will learn when it evolves.&amp;quot;&amp;gt;learnableMoves&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Vulpix wont learn any special moves when it evolves into ninetales, so this will be left empty.&amp;quot;&amp;gt;[]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list some sub requirements for evolution. You can learn more about evolution requirements on this page&#039;s section of evolution&amp;quot;&amp;gt;requirements&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;There are no sub requirements for this evolution, so we leave these brackets blank.&amp;quot;&amp;gt;[]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list what item you need to interact with to make this Pokémon evolve.&amp;quot;&amp;gt;requiredContext&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, we are using a fire stone from the Cobblemon mod. This can be changed to any vanilla or modded item as long as you use the proper item id.&amp;quot;&amp;gt;cobblemon:fire_stone&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the size of the model. Based on the size of the model in blockbench. A value of 1 will put it at a one to one scale with what you made in blockbench. Remember that you can&#039;t use the /reload command to see the changes you make here.&amp;quot;&amp;gt;baseScale&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A value of 0.7 means the model will only be at 70% the size of what you made in blockbench. This can be useful for scaling models down so you can get more detail on smaller Pokémon like joltik.&amp;quot;&amp;gt;0.7&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will determine the size of this Pokémon&#039;s hitbox. You can learn more about it in this page&#039;s hitbox section.&amp;quot;&amp;gt;hitbox&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;A width value of 1 should let the hitbox be the size of a normal block in minecraft. Play around with this value until it looks right to you.&amp;quot;&amp;gt;width&amp;lt;/abbr&amp;gt;&amp;quot;: 0.9,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;A height value of 1 should let the hitbox be the size of a normal block in minecraft. Play around with this value until it looks right to you.&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: 1.1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines whether the hitbox is fixed in place. This should most likely be set to false.&amp;quot;&amp;gt;fixed&amp;lt;/abbr&amp;gt;&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;What this pokémon&#039;s friendship stat starts at when caught.&amp;quot;&amp;gt;baseFriendship&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Most Pokémon have this value set to 50&amp;quot;&amp;gt;50&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How many effort values this pokémon gives upon being defeated.&amp;quot;&amp;gt;evYield&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;hp&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;attack&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;defence&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;special_attack&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;special_defence&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;speed&amp;lt;/abbr&amp;gt;&amp;quot;: 1&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon&#039;s height measured in decimeters&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: 6,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon&#039;s weight measured in hectograms&amp;quot;&amp;gt;weight&amp;lt;/abbr&amp;gt;&amp;quot;: 99,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Aspects are what allows a Pokémon to change its visual aspects for things like regional forms. Since this is for Vulpix&#039;s normal form, you&#039;ll want to leave this blank. You can read about it in this page&#039;s section on forms.&amp;quot;&amp;gt;aspects&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;The normal form for Vulpix will receive no aspects so this is left blank. This can be considered a &#039;default&#039; vulpix and it will use &#039;default&#039; assets for its models and textures.&amp;quot;&amp;gt;[]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;cannotDynamax&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5051</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5051"/>
		<updated>2024-12-12T10:48:50Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Expanded on bedrock_primary function information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Rootbone ===&lt;br /&gt;
The &amp;lt;code&amp;gt;rootBone&amp;lt;/code&amp;gt; property specifies what bone in the model will act as the root bone for generic animations not assigned in the poser such as the evolution animation. If the model was made following the standard bone format, then it should simply be the name of the Pokémon in lower case. Punctuation and capitalization matter! So make sure it matches the root bone of your model exactly. &lt;br /&gt;
&lt;br /&gt;
You are &#039;&#039;&#039;required&#039;&#039;&#039; to assign this root bone properly or else it will break the model in certain generic animations! These animations animate the root bone and do not reset it to its original position when it finishes. This can cause model displacement after evolutions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of the simple rootBone property:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This property attempts to call the specified bone from the model to assign it as the root bone for generic animations.&amp;quot;&amp;gt;rootBone&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this scenario, the charizard bone is being called. This charizard bone should contain all other bones so generic animations can move the entire model for whatever they animate.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. &lt;br /&gt;
&lt;br /&gt;
For the sake of clarity, you should always refer to animations like faints, cries, or physicals as &#039;&#039;&#039;Named Animations&#039;&#039;&#039;. This is to help everyone distinguish them from the animations that are applied to poses. This distinction is important because you can assign both &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;namedAnimations&amp;lt;/code&amp;gt; to a pose. This is to allow you to assign different cries, faints, or attack animations to different poses like your floating or flying poses. This allows for water attack animations if you make the animation to support it. This process will be detailed later. Below is a list of currently available Named Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Animations &amp;amp; Named Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;battle_move&amp;gt;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;battle_move_name&amp;gt;&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a specific move in battle. This animation property would assign a pokemon&#039;s animation to an &#039;&#039;&#039;existing&#039;&#039;&#039; action effect. Something like a custom flamethrower animation for Charizard or a Pokémon&#039;s signature move for example.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Basic Animation Calling Functions ====&lt;br /&gt;
Below are the 3 methods to call a &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;namedAnimation&amp;lt;/code&amp;gt; animation. Each of them serve a purpose in layering animations on the Pokémon. &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; animations must always use &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; to serve as the base animation that can be overwritten by other animations when called. &amp;lt;code&amp;gt;NamedAnimations&amp;lt;/code&amp;gt; can either use &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; to layer over the base animation or use &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; to overwrite the base animation while it is playing. The default function used in each named animation type can be changed if your animation supports it. If you want the cry to overwrite rather than layer, then just be sure to animate it properly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock =====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation calling format from the [[Old_Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_stateful =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_primary =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;q.bedrock_primary&amp;lt;/code&amp;gt; comes with a couple of extra properties and they should be written in the following order:&lt;br /&gt;
# group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - The animation JSON that the game will search for the following animation. This should always be the name of a Pokémon. &lt;br /&gt;
# animation: &amp;lt;code&amp;gt;&#039;status&#039;&amp;lt;/code&amp;gt; - The animation the game will call from the previously mentioned animation JSON. Primary animations are usually your attack animations or faints, but you can assign it to other named animations if desired. &lt;br /&gt;
# (optional) excluded labels: &amp;lt;code&amp;gt;&#039;look&#039;&amp;lt;/code&amp;gt; - Exclusive labeled animations that wont get overwritten by this primary animation. The only reasonable use of excluded labels is to exclude the look animation from being overwritten. This is so they can keep looking at a target when using an animation. &lt;br /&gt;
# curve: &amp;lt;code&amp;gt;&#039;q.curve(&#039;symmetrical_wide&#039;)&#039;&amp;lt;/code&amp;gt; - The interpolation curve that this primary animation will use to transition to and from the pose it is written under. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special interpolation curve types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the 4 common primary animations in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, &#039;look&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
====== q.curve ======&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isInWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or in rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isUnderWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth. For now, you&#039;ll have to figure out how to configure these yourself lol&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a list of all the Placeholder animations:&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L172 &amp;quot;q.quadruped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walk animation for Pokémon with 4 legs&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L192 &amp;quot;q.biped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walking animation for Pokémon who stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L208 &amp;quot;q.bimanual_swing()&amp;quot;]&amp;lt;/code&amp;gt; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L224 &amp;quot;q.sine_wing_flap()&amp;quot;]&amp;lt;/code&amp;gt; - A basic wing flap animation for a pair of wings on a Pokémon. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 2.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.1, 0.58, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.75,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0.68, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5050</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5050"/>
		<updated>2024-12-12T07:00:28Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Expanded information on some existing properties. Updated conditions&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Rootbone ===&lt;br /&gt;
The &amp;lt;code&amp;gt;rootBone&amp;lt;/code&amp;gt; property specifies what bone in the model will act as the root bone for generic animations not assigned in the poser such as the evolution animation. If the model was made following the standard bone format, then it should simply be the name of the Pokémon in lower case. Punctuation and capitalization matter! So make sure it matches the root bone of your model exactly. &lt;br /&gt;
&lt;br /&gt;
You are &#039;&#039;&#039;required&#039;&#039;&#039; to assign this root bone properly or else it will break the model in certain generic animations! These animations animate the root bone and do not reset it to its original position when it finishes. This can cause model displacement after evolutions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of the simple rootBone property:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This property attempts to call the specified bone from the model to assign it as the root bone for generic animations.&amp;quot;&amp;gt;rootBone&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this scenario, the charizard bone is being called. This charizard bone should contain all other bones so generic animations can move the entire model for whatever they animate.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. &lt;br /&gt;
&lt;br /&gt;
For the sake of clarity, you should always refer to animations like faints, cries, or physicals as &#039;&#039;&#039;Named Animations&#039;&#039;&#039;. This is to help everyone distinguish them from the animations that are applied to poses. This distinction is important because you can assign both &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;namedAnimations&amp;lt;/code&amp;gt; to a pose. This is to allow you to assign different cries, faints, or attack animations to different poses like your floating or flying poses. This allows for water attack animations if you make the animation to support it. This process will be detailed later. Below is a list of currently available Named Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Animations &amp;amp; Named Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;battle_move&amp;gt;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;battle_move_name&amp;gt;&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a specific move in battle. This animation property would assign a pokemon&#039;s animation to an &#039;&#039;&#039;existing&#039;&#039;&#039; action effect. Something like a custom flamethrower animation for Charizard or a Pokémon&#039;s signature move for example.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Basic Animation Calling Functions ====&lt;br /&gt;
Below are the 3 methods to call a &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;namedAnimation&amp;lt;/code&amp;gt; animation. Each of them serve a purpose in layering animations on the Pokémon. &amp;lt;code&amp;gt;Pose&amp;lt;/code&amp;gt; animations must always use &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; to serve as the base animation that can be overwritten by other animations when called. &amp;lt;code&amp;gt;NamedAnimations&amp;lt;/code&amp;gt; can either use &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; to layer over the base animation or use &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; to overwrite the base animation while it is playing. The default function used in each named animation type can be changed if your animation supports it. If you want the cry to overwrite rather than layer, then just be sure to animate it properly. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock =====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation calling format from the [[Old_Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_stateful =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== q.bedrock_primary =====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special transition animation types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 4 primary animation in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
====== q.curve ======&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isInWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or in rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isUnderWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth. For now, you&#039;ll have to figure out how to configure these yourself lol&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a list of all the Placeholder animations:&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L172 &amp;quot;q.quadruped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walk animation for Pokémon with 4 legs&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L192 &amp;quot;q.biped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walking animation for Pokémon who stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L208 &amp;quot;q.bimanual_swing()&amp;quot;]&amp;lt;/code&amp;gt; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L224 &amp;quot;q.sine_wing_flap()&amp;quot;]&amp;lt;/code&amp;gt; - A basic wing flap animation for a pair of wings on a Pokémon. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 2.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.1, 0.58, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.75,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0.68, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Old_Poser&amp;diff=5049</id>
		<title>Old Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Old_Poser&amp;diff=5049"/>
		<updated>2024-12-12T05:24:19Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Old Poser update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
This page is for the now outdated poser json format. There is still backwards support for it in the mod, but there is no reason you should still be using it today. Please use the current [[Poser]] wiki page.&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon. It contains information on when the Pokémon will perform certain animations. You can set your Pokémon to only ever perform one animation if you’d like, or you can give it different animations for just about every action it performs! It can even be used to adjust certain properties of an animation so you don&#039;t have to edit the animation itself. &lt;br /&gt;
&lt;br /&gt;
Due to the way the official models are implemented, there are no official posers for them. Poser data for custom Pokémon is often shared amongst different addon creators. Help and techniques for poser files can be found in the Cobblemon Discord server.  &lt;br /&gt;
&lt;br /&gt;
=== Poser File Breakdown ===&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; file requires an &amp;lt;code&amp;gt;animation&amp;lt;/code&amp;gt; JSON to assign animations to a &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;. You&#039;re always going to want to be familiar with all the animations that were made for a model. If you assign an animation type that doesn&#039;t exist in the animation JSON then the game will crash! Also, if a bone you listed in the poser doesn&#039;t exist on the model then the game will crash! Once you figure out what animations were made for your target Pokémon model, you can simply apply the existing animations to appropriate &amp;lt;code&amp;gt;poses&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Sometimes there may be animations that don&#039;t seem to have a matching pose, such as &amp;lt;code&amp;gt;blink&amp;lt;/code&amp;gt; animations. These can be applied using the &amp;lt;code&amp;gt;quirk&amp;lt;/code&amp;gt; animation system. This system allows you to layer certain animations over an animation that is already playing in game. Making use of the quirk system can really help your Pokémon feel more alive!&lt;br /&gt;
&lt;br /&gt;
Here is a breakdown of an example poser file which includes all the different properties that can be assigned. Hover over the underlined text to see more information. &#039;&#039;&#039;Every kind of possible poser function is included in this example at least once! So make sure that you review the whole file to see why some things are written the way they are.&#039;&#039;&#039; This example is not meant to be used as a template.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Tells the game which bone on the model is the head. In this case, the head bone is simply named head.&amp;quot;&amp;gt;head&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone from your model that will act as the head for the look animation that plays when a Pokémon wants to look in certain directions. Can be any other appropriate bone and not all Pokémon need to do this!&amp;quot;&amp;gt;head&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the faint animation for this Pokémon. If you have no faint animation, you can delete this line. Hover over each of the following words to see what each one means.&amp;quot;&amp;gt;faint&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Bedrock means that its checking for animations in the bedrock folder. This is where all animations should be stored.&amp;quot;&amp;gt;bedrock&amp;lt;/abbr&amp;gt;(&amp;lt;abbr title=&amp;quot;Charizard is the prefix of the animation name that it&#039;s looking for. The animation it should be reading is named &#039;charizard.animation.faint&#039; and its looking for all animations that start with &#039;charizard&#039;.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Faint is the suffix of the animation that it&#039;s looking for. This is usually named after animation types. The animation it should be reading is named &#039;charizard.animation.faint&#039; and its looking for all animations that start with &#039;charizard&#039; and end in &#039;faint&#039;&amp;quot;&amp;gt;faint&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;This true or false value determines whether or not the selected animation will overwrite all other animations. This is important if you want to prioritize this animation over all others. In this case, the faint animation will always play over any other animation when the Pokémon faints! This can prevent the faint animation from not working sometimes.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;)&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the cry animation for this Pokémon. Cries play whenever the Pokémon is called out of the pokeball. This occurs in and out of battle.&amp;quot;&amp;gt;cry&amp;lt;/abbr&amp;gt;&amp;quot;:  &amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s cry animation&amp;quot;&amp;gt;bedrock(charizard, cry)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining a list of our poses.&amp;quot;&amp;gt;poses&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called &#039;battle-idle&#039;. Here, we will list animations that will play when the Pokémon is in battle.&amp;quot;&amp;gt;battle-idle&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this pose is &#039;battle-idle&#039;&amp;quot;&amp;gt;battle-idle&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This is transition time between animations measured in minecraft ticks. You probably won&#039;t need to mess with this.&amp;gt;transformTicks&amp;lt;/abbr&amp;gt;&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. &#039;STAND - when stationary on the ground.&#039; In the next line, we will define that the following animation will only work in battle&amp;quot;&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play during battle or not.&amp;quot;&amp;gt;isBattle&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to true will make the following animation play only while the Pokémon is idle while it&#039;s also in battle!&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play while the Pokémon is in water or not.&amp;quot;&amp;gt;isTouchingWater&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to false will prevent the following animation from playing whenever the Pokémon touches water, but only while it&#039;s also in battle! So if this Pokémon starts battle in water, it is not allowed to use this pose and its assigned animation.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for this battle-idle pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for this battle-idle pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;The animation you are telling it to use when your Pokémon is standing, while in battle, but not touching water.&amp;quot;&amp;gt;bedrock(charizard, battle_idle)&amp;lt;/abbr&amp;gt;&amp;quot;],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property allows you to play other animations over the main list of animations for this pose. The most common type of quirk animations are blinks, but you can apply any animation you wish as a quirk.&amp;quot;&amp;gt;quirks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of this quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;blink&#039;.&amp;quot;&amp;gt;blink&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The number of times the animation should play for the quirk. By default, this value is 1.&amp;quot;&amp;gt;loopTimes&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;For this example, we will let the blink animation play 5 times. After the blink plays 5 times, it will then start a timer before it can play again.&amp;quot;&amp;gt;5&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time. Default value is 8.&amp;quot;&amp;gt;minSecondsBetweenOccurrences&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;After 8 seconds, there is a chance that this quirk animation will play.&amp;quot;&amp;gt;8&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The decimal-friendly number of seconds that is the maximum between the quirk playing once and it playing a second time. Default value is 30.&amp;quot;&amp;gt;maxSecondsBetweenOccurrences&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;It will take 20 seconds at most for the quirk animation to play again.&amp;quot;&amp;gt;20&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Given the data of the previous lines, this animation will play 5 times every 8-20 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s blink animation&amp;quot;&amp;gt;bedrock(charizard, blink)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of a second quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;wing_Flap&#039;.&amp;quot;&amp;gt;wing_flap&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Since there is no data for loops or timers, then it will play at the default values. This would be once every 8-30 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s wing flapping animation. This animation doesn&#039;t actually exist. Its only for the example.&amp;quot;&amp;gt;bedrock(charizard, wing_flap)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;standing&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are again defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called standing. The pose will control the idle animation for when the Pokémon is out of battle.&amp;quot;&amp;gt;standing&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This is transition time between animations measured in minecraft ticks. You probably won&#039;t need to mess with this.&amp;gt;transformTicks&amp;lt;/abbr&amp;gt;&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. STAND - when stationary on the ground&amp;quot;&amp;gt;STAND&amp;lt;/abbr&amp;gt;&amp;quot;, &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. NONE - when not doing anything at all&amp;quot;&amp;gt;NONE&amp;lt;/abbr&amp;gt;&amp;quot;, &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. PORTRAIT - when in a portrait like on your party UI&amp;quot;&amp;gt;PORTRAIT&amp;lt;/abbr&amp;gt;&amp;quot;, &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. PROFILE - when in summary screens&amp;quot;&amp;gt;PROFILE&amp;lt;/abbr&amp;gt;&amp;quot; ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play during battle or not.&amp;quot;&amp;gt;isBattle&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to false will prevent this animation from playing whenever the Pokémon is in battle. Setting it to false can prevent conflicts with the battle-idle pose. This one line helps separate the battle-idle from the normal idle.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are selecting charizard&#039;s right wing&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We changed charizard&#039;s bone locations for the battle-idle. Here we are resetting them to their original location for the standing pose.&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here we are setting charizard&#039;s right wing to be visible for this pose.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are selecting charizard&#039;s left wing&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We changed charizard&#039;s bone locations for the battle-idle. Here we are resetting them to their original location for the standing pose.&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here we are setting charizard&#039;s left wing to be visible for this pose.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Allows the Pokémon to move its head around to observe its surroundings. You can delete this if your Pokémon doesn&#039;t have a head bone, or you just don&#039;t want them looking around.&amp;quot;&amp;gt;look&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;The animation you are telling it to use when your Pokémon is standing while not in battle, doing nothing, or in the mod&#039;s UI. In this case, you are telling it to use its ground idle animation.&amp;quot;&amp;gt;bedrock(charizard, ground_idle)&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property allows you to play other animations over the main list of animations for this pose.&amp;quot;&amp;gt;quirks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of this quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;blink&#039;.&amp;quot;&amp;gt;blink&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Since there is no data for loops or timers, then it will play at the default values. This would be once every 8-30 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s blink animation.&amp;quot;&amp;gt;bedrock(charizard, blink)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;walking&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called walking&amp;quot;&amp;gt;walking&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. WALK - when traveling on the ground&amp;quot;&amp;gt;WALK&amp;lt;/abbr&amp;gt;&amp;quot;],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are selecting charizard&#039;s right wing&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We changed charizard&#039;s bone locations for the battle-idle. Here we are resetting them to their original location for the standing pose.&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here we are setting charizard&#039;s right wing to be visible for this pose.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are selecting charizard&#039;s left wing&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We changed charizard&#039;s bone locations for the battle-idle. Here we are resetting them to their original location for the standing pose.&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here we are setting charizard&#039;s left wing to be visible for this pose.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during this pose. In this case, we are listing 3 different animations that will layer over each other when they get played in game.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Allows the Pokémon to move its head around to observe its surroundings. This animation has priority over head bone. This means the other 2 animations cant animated the head bone if charizard is looking at the player.&amp;quot;&amp;gt;look&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s ground walk animation. Due to the way charizard&#039;s animations were made, this specified animation only animates the bottom half of charizard. If you do not include the matching ground idle after this, the arms of charizard will t-pose while it walks.&amp;quot;&amp;gt;bedrock(charizard, ground_walk)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s ground idle animation. Due to the way charizard&#039;s animations were made, this specified animation only animates the top half of charizard. Adding this animation will allow charizard&#039;s arms and wings to be animated while it walks.&amp;quot;&amp;gt;bedrock(charizard, ground_idle)&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property allows you to play other animations over the main list of animations for this pose.&amp;quot;&amp;gt;quirks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of this quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;blink&#039;.&amp;quot;&amp;gt;blink&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Since there is no data for loops or timers, then it will play at the default values. This would be once every 8-30 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s blink animation.&amp;quot;&amp;gt;bedrock(charizard, blink)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced Poser Functions And When to Use Them ===&lt;br /&gt;
Posers can do a lot more than just assign one animation to a pose. Certain things can be tweaked in the poser to make your Pokémon livelier in game. If you enjoy making many different animations for Pokémon, then this section will help you implement them in game. Using these advanced feature can help you make custom Pokémon that are on the same level of quality as the official Pokémon!&lt;br /&gt;
&lt;br /&gt;
Remember that you can have an unzipped copy of your addon as a resourcepack in the game for easier editing. Since the poser file is a part of the resources of an addon, it can be refreshed in game by pressing &amp;lt;code&amp;gt;F3 + T&amp;lt;/code&amp;gt;. This reloads all your resourcepacks and allows you to see the changes you&#039;ve made to the poser only if the poser you are editing is in the resourcepack folder. &#039;&#039;&#039;It is highly recommended to use unzipped folders to test addon stuff when implementing them into the game!&#039;&#039;&#039; You can simply make your file edits, save the file, and then refresh your resourcepack in game to see the changes immediately! &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Layered Animations ====&lt;br /&gt;
Layered animations are two or more animations that are listed together in your &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; list. The most common example would be adding the &amp;lt;code&amp;gt;look&amp;lt;/code&amp;gt; animation on top of your &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; animation for your standing pose. You&#039;re able to list more than two animations and your main limit would be running out of bones to animate. &lt;br /&gt;
&lt;br /&gt;
The first animation listed should have priority control over the bones of the model. This is how Pokémon are able to look at you while walking around. The look animation has priority over the head bone, or whatever bone is listed as the head. This head bone will always attempt to look at a player if the player approaches. &lt;br /&gt;
&lt;br /&gt;
Another example of layering animations would be having 2 kinds of animations that are meant to be played together and separate. A great example of this is charizard&#039;s walk animation. The walking animation itself only moves the legs for when it&#039;s walking. It combines the ground idle and the ground walk animations for its walking pose. The walk animation only controls the bottom half of the body, while the ground idle only controls the top half of the body. If you only listed its walk animation and it started walking, then the top half of charizard would t-pose whenever it walks.&amp;lt;/br&amp;gt;&lt;br /&gt;
Charizard&#039;s walking animation list for its walking pose:&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
         &amp;quot;&amp;lt;abbr title=&amp;quot;Allows the Pokémon to move its head around to observe its surroundings. You can delete this if your Pokémon doesn&#039;t have a head bone, or you just don&#039;t want them looking around.&amp;quot;&amp;gt;look&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
         &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s ground walk animation. Due to the way charizard&#039;s animations were made, this specified animation only animates the bottom half of charizard. If you do not include the matching ground idle after this, the arms of charizard will t-pose while it walks.&amp;quot;&amp;gt;bedrock(charizard, ground_walk)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
         &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s ground idle animation. Due to the way charizard&#039;s animations were made, this specified animation only animates the top half of charizard. Adding this animation will allow charizard&#039;s arms and wings to be animated while it walks.&amp;quot;&amp;gt;bedrock(charizard, ground_idle)&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animation Overwrites ====&lt;br /&gt;
This function is mostly used for cases where you want an animation to be played exclusively for certain situations. You simply write &amp;lt;code&amp;gt;, true&amp;lt;/code&amp;gt; after your animation type in your animations list. The most common use for this function would be writing it into your faint so the faint animation should always be playing when a Pokémon faints. Sometimes animations don&#039;t change properly and this can fix it most of the time. &lt;br /&gt;
&lt;br /&gt;
Below is an example of the faint using this overwrite function. What&#039;s going to happen in game is that when charizard faints, it will always play the faint animation over other animations it was already doing. This is fine because the faint animation animates the whole model. The cry animation does not contain this function because we want the cry to play over the idle animation, but not completely overwrite everything! If it did, then charizard would t-pose whenever it tried to do it&#039;s cry animation because it only animates the head bone.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the faint animation for this Pokémon. If you have no faint animation, you can delete this line.&amp;quot;&amp;gt;faint&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s faint animation&amp;quot;&amp;gt;bedrock(charizard, faint&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Adding &#039;true&#039; like this will force this faint animation to play over all other animations whenever charizard faints.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;)&amp;quot;,&lt;br /&gt;
   &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the cry animation for this Pokémon. Cries play whenever the Pokémon is called out of the pokeball. This occurs in and out of battle.&amp;quot;&amp;gt;cry&amp;lt;/abbr&amp;gt;&amp;quot;:  &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s cry animation. Since it does not contain &#039;true&#039; written after it, then this cry animation will not completely overwrite other animations when it plays. It should simply animate the bones it&#039;s supposed to while the rest of the bones can be controlled by another animation.&amp;quot;&amp;gt;bedrock(charizard, cry)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Quirks ====&lt;br /&gt;
Quirk animations are extra animations that you can have play over the main animation list. What makes them different from the previous animation overwrite function is that these quirks can have extra properties applied to them. You can make them loop a certain number of times and include timers for these quirks. The most common example of a quirk animation would be the blink animations. By default, a quirk animation should play once every 8-20 seconds!&lt;br /&gt;
&lt;br /&gt;
Making a quirk in your poser file would largely depend on an animator making these quirky little animations to play in game. You can do more than just blinking animations. You can make a Pokémon roar, sneeze, or dance and have it play as a quirk for its standing pose or any other pose. A timer can then be applied to these quirk animations so you could end up with something like charizard doing a roar every 30-60 seconds when its idle. It&#039;s a very flexible sub system for animations that is only limited by your creativity. &lt;br /&gt;
&lt;br /&gt;
Here is a list of properties that can affect quirks:&lt;br /&gt;
 &amp;quot;loopTimes&amp;quot;: Int = 1 // The number of times the animation should play for the quirk&lt;br /&gt;
 &amp;quot;minSecondsBetweenOccurrences&amp;quot;: Float = 8 // The decimal-friendly number of seconds that is the &lt;br /&gt;
 minimum between the quirk playing once and it playing a second time&lt;br /&gt;
 &amp;quot;maxSecondsBetweenOccurrences&amp;quot;: Float = 30 // What do you think&lt;br /&gt;
 &amp;quot;animations&amp;quot;: List&amp;lt;Animation&amp;gt; = [] // The list of animations to play (together) when this quirk runs&lt;br /&gt;
 &amp;quot;name&amp;quot;: String // The name of the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of a modified quirk animation. What this will do is eventually make charizard play the blink animation 5 times in a row. Then after the animation plays, an 8-20 second timer begins to play this quirk again. The quirk timer starts after the quirk animations end.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property allows you to play other animations over the main list of animations for this pose. The most common type of quirk animations are blinks, but you can apply any animation you wish as a quirk.&amp;quot;&amp;gt;quirks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of this quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;blink&#039;.&amp;quot;&amp;gt;blink&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;The number of times the animation should play for the quirk. By default, this value is 1.&amp;quot;&amp;gt;loopTimes&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;For this example, we will let the blink animation play 5 times. After the blink plays 5 times, it will then start a timer before it can play again.&amp;quot;&amp;gt;5&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time. Default value is 8.&amp;quot;&amp;gt;minSecondsBetweenOccurrences&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;After 8 seconds, there is a chance that this quirk animation will play.&amp;quot;&amp;gt;8&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;The decimal-friendly number of seconds that is the maximum between the quirk playing once and it playing a second time. Default value is 30.&amp;quot;&amp;gt;maxSecondsBetweenOccurrences&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;It will take 20 seconds at most for the quirk animation to play again.&amp;quot;&amp;gt;20&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Given the data of the previous lines, this animation will play 5 times every 8-20 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s blink animation&amp;quot;&amp;gt;bedrock(charizard, blink)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Transformed Parts ====&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animation Conditions ====&lt;br /&gt;
This function allows you to have more control over when an animation is allowed to play. The current conditions we can use are for battle and for touching water. This can be used to make animations specific to being in battle or in water. You can also mix and match the battle and water conditions if you really want more specific animations. This can result in having a ground idle, ground battle idle, water idle, and water battle idle!&lt;br /&gt;
&lt;br /&gt;
This function is mostly for helping you organize your animations for each pose. Setting a condition to true will only allow the animation to play when this condition is met. Setting it to false will prevent the animation from being played when this condition is met. This allows you to set 2 or more animations per &amp;lt;code&amp;gt;poseType&amp;lt;/code&amp;gt;. This basic fundamental is what allows us to have battle animations that can only play in battle! &lt;br /&gt;
&lt;br /&gt;
Transformed parts work really well with this function! Combining these 2 functions is what allows Rillaboom to use its drum only when in battle. You can allow certain model parts to appear visible only when these conditions are met. Keep these functions in mind the next time you make a custom Pokémon model. You can create livelier animations using this system!&lt;br /&gt;
&lt;br /&gt;
Below is an example of these animation conditions being used. In this example, the battle idle will only play when charizard is in battle, but never while charizard is in water. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining a list of our poses.&amp;quot;&amp;gt;poses&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called &#039;battle-idle&#039;. Here, we will list animations that will play when the Pokémon is in battle.&amp;quot;&amp;gt;battle-idle&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this pose is &#039;battle-idle&#039;&amp;quot;&amp;gt;battle-idle&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This is transition time between animations measured in minecraft ticks. You probably won&#039;t need to mess with this.&amp;gt;transformTicks&amp;lt;/abbr&amp;gt;&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. &#039;STAND - when stationary on the ground.&#039; In the next line, we will define that the following animation will only work in battle&amp;quot;&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play during battle or not.&amp;quot;&amp;gt;isBattle&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to true will make the following animation play only while the Pokémon is idle while it&#039;s also in battle!&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play while the Pokémon is in water or not.&amp;quot;&amp;gt;isTouchingWater&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to false will prevent the following animation from playing whenever the Pokémon touches water, but only while it&#039;s also in battle! So if this Pokémon starts battle in water, it is not allowed to use this pose and its assigned animation.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;The animation you are telling it to use when your Pokémon is standing, while in battle, but not touching water.&amp;quot;&amp;gt;bedrock(charizard, battle_idle)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
       },&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Poser File Example ===&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that some Pokémon don&#039;t use a &amp;lt;code&amp;gt;head bone&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;starly&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;head&amp;quot;: &amp;quot;head&amp;quot;,&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 2.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [ -0.1, -0.9, 0 ],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 1.1,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [ -0.05, 0.15, 0 ],&lt;br /&gt;
  &amp;quot;faint&amp;quot;: &amp;quot;bedrock(starly, faint, true)&amp;quot;,&lt;br /&gt;
  &amp;quot;cry&amp;quot;: &amp;quot;bedrock(starly, cry)&amp;quot;,&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-idle&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;battle-idle&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;bedrock(starly, battle_idle)&amp;quot;],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&amp;quot;bedrock(starly, blink)&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;standing&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;STAND&amp;quot;,&lt;br /&gt;
        &amp;quot;NONE&amp;quot;,&lt;br /&gt;
        &amp;quot;PORTRAIT&amp;quot;,&lt;br /&gt;
        &amp;quot;PROFILE&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, ground_idle)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;walking&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;WALK&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, ground_walk)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hovering&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;hovering&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;HOVER&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, air_idle)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;flying&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;flying&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;FLY&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, air_fly)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleeping&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;sleeping&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;SLEEP&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, sleep)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;leftshoulder&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;leftshoulder&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;SHOULDER_LEFT&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, left_shoulder)&amp;quot;,&lt;br /&gt;
        &amp;quot;look&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;rightshoulder&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;rightshoulder&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;SHOULDER_RIGHT&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, right_shoulder)&amp;quot;,&lt;br /&gt;
        &amp;quot;look&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swimming&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;swimming&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;SWIM&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, water_swim)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;floating&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;floating&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;FLOAT&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, water_idle)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5048</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5048"/>
		<updated>2024-12-12T05:23:15Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Quicksave. Poser page under construction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Under construction. Dont look or else!&lt;br /&gt;
&lt;br /&gt;
{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The new &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the new Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Rootbone ===&lt;br /&gt;
The &amp;lt;code&amp;gt;rootBone&amp;lt;/code&amp;gt; property specifies what bone in the model will act as the root bone for generic animations not assigned in the poser such as the evolution animation. If the model was made following the standard bone format, then it should simply be the name of the Pokémon in lower case. Punctuation and capitalization matter! So make sure it matches the root bone of your model exactly. &lt;br /&gt;
&lt;br /&gt;
You are &#039;&#039;&#039;required&#039;&#039;&#039; to assign this root bone properly or else it will break the model in certain generic animations! These animations animate the root bone and do not reset it to its original position when it finishes. This can cause model displacement after evolutions.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of the simple rootBone property:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This property attempts to call the specified bone from the model to assign it as the root bone for generic animations.&amp;quot;&amp;gt;rootBone&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this scenario, the charizard bone is being called. This charizard bone should contain all other bones so generic animations can move the entire model for whatever they animate.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. Animation types would include your faints, cries, and attack animations. Below is a list of currently available Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
* &#039;&#039;&#039;&amp;lt;battle_move&amp;gt;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;battle_move_name&amp;gt;&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a specific move in battle. This animation property would assign a pokemon&#039;s animation to an &#039;&#039;&#039;existing&#039;&#039;&#039; action effect. Something like a custom flamethrower animation for Charizard or a Pokémon&#039;s signature move for example.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock ====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation calling format from the [[Old_Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_stateful ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_primary ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special transition animation types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 4 primary animation in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.curve ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isSubmergedInWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth. For now, you&#039;ll have to figure out how to configure these yourself lol&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a list of all the Placeholder animations:&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L172 &amp;quot;q.quadruped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walk animation for Pokémon with 4 legs&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L192 &amp;quot;q.biped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walking animation for Pokémon who stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L208 &amp;quot;q.bimanual_swing()&amp;quot;]&amp;lt;/code&amp;gt; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L224 &amp;quot;q.sine_wing_flap()&amp;quot;]&amp;lt;/code&amp;gt; - A basic wing flap animation for a pair of wings on a Pokémon. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 2.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.1, 0.58, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.75,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0.68, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Old_Poser&amp;diff=5046</id>
		<title>Old Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Old_Poser&amp;diff=5046"/>
		<updated>2024-12-12T05:20:12Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Frank The Farmer moved page Poser to Old Poser: Outdated json. The new poser page will become the standard going forward and should no longer be called &amp;quot;New_Poser&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon. It contains information on when the Pokémon will perform certain animations. You can set your Pokémon to only ever perform one animation if you’d like, or you can give it different animations for just about every action it performs! It can even be used to adjust certain properties of an animation so you don&#039;t have to edit the animation itself. &lt;br /&gt;
&lt;br /&gt;
Due to the way the official models are implemented, there are no official posers for them. Poser data for custom Pokémon is often shared amongst different addon creators. Help and techniques for poser files can be found in the Cobblemon Discord server.  &lt;br /&gt;
&lt;br /&gt;
=== Poser File Breakdown ===&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; file requires an &amp;lt;code&amp;gt;animation&amp;lt;/code&amp;gt; JSON to assign animations to a &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;. You&#039;re always going to want to be familiar with all the animations that were made for a model. If you assign an animation type that doesn&#039;t exist in the animation JSON then the game will crash! Also, if a bone you listed in the poser doesn&#039;t exist on the model then the game will crash! Once you figure out what animations were made for your target Pokémon model, you can simply apply the existing animations to appropriate &amp;lt;code&amp;gt;poses&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Sometimes there may be animations that don&#039;t seem to have a matching pose, such as &amp;lt;code&amp;gt;blink&amp;lt;/code&amp;gt; animations. These can be applied using the &amp;lt;code&amp;gt;quirk&amp;lt;/code&amp;gt; animation system. This system allows you to layer certain animations over an animation that is already playing in game. Making use of the quirk system can really help your Pokémon feel more alive!&lt;br /&gt;
&lt;br /&gt;
Here is a breakdown of an example poser file which includes all the different properties that can be assigned. Hover over the underlined text to see more information. &#039;&#039;&#039;Every kind of possible poser function is included in this example at least once! So make sure that you review the whole file to see why some things are written the way they are.&#039;&#039;&#039; This example is not meant to be used as a template.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Tells the game which bone on the model is the head. In this case, the head bone is simply named head.&amp;quot;&amp;gt;head&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone from your model that will act as the head for the look animation that plays when a Pokémon wants to look in certain directions. Can be any other appropriate bone and not all Pokémon need to do this!&amp;quot;&amp;gt;head&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the faint animation for this Pokémon. If you have no faint animation, you can delete this line. Hover over each of the following words to see what each one means.&amp;quot;&amp;gt;faint&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Bedrock means that its checking for animations in the bedrock folder. This is where all animations should be stored.&amp;quot;&amp;gt;bedrock&amp;lt;/abbr&amp;gt;(&amp;lt;abbr title=&amp;quot;Charizard is the prefix of the animation name that it&#039;s looking for. The animation it should be reading is named &#039;charizard.animation.faint&#039; and its looking for all animations that start with &#039;charizard&#039;.&amp;quot;&amp;gt;charizard&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Faint is the suffix of the animation that it&#039;s looking for. This is usually named after animation types. The animation it should be reading is named &#039;charizard.animation.faint&#039; and its looking for all animations that start with &#039;charizard&#039; and end in &#039;faint&#039;&amp;quot;&amp;gt;faint&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;This true or false value determines whether or not the selected animation will overwrite all other animations. This is important if you want to prioritize this animation over all others. In this case, the faint animation will always play over any other animation when the Pokémon faints! This can prevent the faint animation from not working sometimes.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;)&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the cry animation for this Pokémon. Cries play whenever the Pokémon is called out of the pokeball. This occurs in and out of battle.&amp;quot;&amp;gt;cry&amp;lt;/abbr&amp;gt;&amp;quot;:  &amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s cry animation&amp;quot;&amp;gt;bedrock(charizard, cry)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining a list of our poses.&amp;quot;&amp;gt;poses&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called &#039;battle-idle&#039;. Here, we will list animations that will play when the Pokémon is in battle.&amp;quot;&amp;gt;battle-idle&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this pose is &#039;battle-idle&#039;&amp;quot;&amp;gt;battle-idle&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This is transition time between animations measured in minecraft ticks. You probably won&#039;t need to mess with this.&amp;gt;transformTicks&amp;lt;/abbr&amp;gt;&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. &#039;STAND - when stationary on the ground.&#039; In the next line, we will define that the following animation will only work in battle&amp;quot;&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play during battle or not.&amp;quot;&amp;gt;isBattle&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to true will make the following animation play only while the Pokémon is idle while it&#039;s also in battle!&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play while the Pokémon is in water or not.&amp;quot;&amp;gt;isTouchingWater&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to false will prevent the following animation from playing whenever the Pokémon touches water, but only while it&#039;s also in battle! So if this Pokémon starts battle in water, it is not allowed to use this pose and its assigned animation.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for this battle-idle pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for this battle-idle pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;The animation you are telling it to use when your Pokémon is standing, while in battle, but not touching water.&amp;quot;&amp;gt;bedrock(charizard, battle_idle)&amp;lt;/abbr&amp;gt;&amp;quot;],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property allows you to play other animations over the main list of animations for this pose. The most common type of quirk animations are blinks, but you can apply any animation you wish as a quirk.&amp;quot;&amp;gt;quirks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of this quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;blink&#039;.&amp;quot;&amp;gt;blink&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The number of times the animation should play for the quirk. By default, this value is 1.&amp;quot;&amp;gt;loopTimes&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;For this example, we will let the blink animation play 5 times. After the blink plays 5 times, it will then start a timer before it can play again.&amp;quot;&amp;gt;5&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time. Default value is 8.&amp;quot;&amp;gt;minSecondsBetweenOccurrences&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;After 8 seconds, there is a chance that this quirk animation will play.&amp;quot;&amp;gt;8&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;The decimal-friendly number of seconds that is the maximum between the quirk playing once and it playing a second time. Default value is 30.&amp;quot;&amp;gt;maxSecondsBetweenOccurrences&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;It will take 20 seconds at most for the quirk animation to play again.&amp;quot;&amp;gt;20&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Given the data of the previous lines, this animation will play 5 times every 8-20 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s blink animation&amp;quot;&amp;gt;bedrock(charizard, blink)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of a second quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;wing_Flap&#039;.&amp;quot;&amp;gt;wing_flap&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Since there is no data for loops or timers, then it will play at the default values. This would be once every 8-30 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s wing flapping animation. This animation doesn&#039;t actually exist. Its only for the example.&amp;quot;&amp;gt;bedrock(charizard, wing_flap)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;standing&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are again defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called standing. The pose will control the idle animation for when the Pokémon is out of battle.&amp;quot;&amp;gt;standing&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This is transition time between animations measured in minecraft ticks. You probably won&#039;t need to mess with this.&amp;gt;transformTicks&amp;lt;/abbr&amp;gt;&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. STAND - when stationary on the ground&amp;quot;&amp;gt;STAND&amp;lt;/abbr&amp;gt;&amp;quot;, &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. NONE - when not doing anything at all&amp;quot;&amp;gt;NONE&amp;lt;/abbr&amp;gt;&amp;quot;, &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. PORTRAIT - when in a portrait like on your party UI&amp;quot;&amp;gt;PORTRAIT&amp;lt;/abbr&amp;gt;&amp;quot;, &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. PROFILE - when in summary screens&amp;quot;&amp;gt;PROFILE&amp;lt;/abbr&amp;gt;&amp;quot; ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play during battle or not.&amp;quot;&amp;gt;isBattle&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to false will prevent this animation from playing whenever the Pokémon is in battle. Setting it to false can prevent conflicts with the battle-idle pose. This one line helps separate the battle-idle from the normal idle.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are selecting charizard&#039;s right wing&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We changed charizard&#039;s bone locations for the battle-idle. Here we are resetting them to their original location for the standing pose.&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here we are setting charizard&#039;s right wing to be visible for this pose.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are selecting charizard&#039;s left wing&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We changed charizard&#039;s bone locations for the battle-idle. Here we are resetting them to their original location for the standing pose.&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here we are setting charizard&#039;s left wing to be visible for this pose.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Allows the Pokémon to move its head around to observe its surroundings. You can delete this if your Pokémon doesn&#039;t have a head bone, or you just don&#039;t want them looking around.&amp;quot;&amp;gt;look&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;The animation you are telling it to use when your Pokémon is standing while not in battle, doing nothing, or in the mod&#039;s UI. In this case, you are telling it to use its ground idle animation.&amp;quot;&amp;gt;bedrock(charizard, ground_idle)&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property allows you to play other animations over the main list of animations for this pose.&amp;quot;&amp;gt;quirks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of this quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;blink&#039;.&amp;quot;&amp;gt;blink&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Since there is no data for loops or timers, then it will play at the default values. This would be once every 8-30 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s blink animation.&amp;quot;&amp;gt;bedrock(charizard, blink)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;walking&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called walking&amp;quot;&amp;gt;walking&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. WALK - when traveling on the ground&amp;quot;&amp;gt;WALK&amp;lt;/abbr&amp;gt;&amp;quot;],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are selecting charizard&#039;s right wing&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We changed charizard&#039;s bone locations for the battle-idle. Here we are resetting them to their original location for the standing pose.&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here we are setting charizard&#039;s right wing to be visible for this pose.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are selecting charizard&#039;s left wing&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We changed charizard&#039;s bone locations for the battle-idle. Here we are resetting them to their original location for the standing pose.&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here we are setting charizard&#039;s left wing to be visible for this pose.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during this pose. In this case, we are listing 3 different animations that will layer over each other when they get played in game.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Allows the Pokémon to move its head around to observe its surroundings. This animation has priority over head bone. This means the other 2 animations cant animated the head bone if charizard is looking at the player.&amp;quot;&amp;gt;look&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s ground walk animation. Due to the way charizard&#039;s animations were made, this specified animation only animates the bottom half of charizard. If you do not include the matching ground idle after this, the arms of charizard will t-pose while it walks.&amp;quot;&amp;gt;bedrock(charizard, ground_walk)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s ground idle animation. Due to the way charizard&#039;s animations were made, this specified animation only animates the top half of charizard. Adding this animation will allow charizard&#039;s arms and wings to be animated while it walks.&amp;quot;&amp;gt;bedrock(charizard, ground_idle)&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property allows you to play other animations over the main list of animations for this pose.&amp;quot;&amp;gt;quirks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of this quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;blink&#039;.&amp;quot;&amp;gt;blink&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Since there is no data for loops or timers, then it will play at the default values. This would be once every 8-30 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s blink animation.&amp;quot;&amp;gt;bedrock(charizard, blink)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          }&lt;br /&gt;
        ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced Poser Functions And When to Use Them ===&lt;br /&gt;
Posers can do a lot more than just assign one animation to a pose. Certain things can be tweaked in the poser to make your Pokémon livelier in game. If you enjoy making many different animations for Pokémon, then this section will help you implement them in game. Using these advanced feature can help you make custom Pokémon that are on the same level of quality as the official Pokémon!&lt;br /&gt;
&lt;br /&gt;
Remember that you can have an unzipped copy of your addon as a resourcepack in the game for easier editing. Since the poser file is a part of the resources of an addon, it can be refreshed in game by pressing &amp;lt;code&amp;gt;F3 + T&amp;lt;/code&amp;gt;. This reloads all your resourcepacks and allows you to see the changes you&#039;ve made to the poser only if the poser you are editing is in the resourcepack folder. &#039;&#039;&#039;It is highly recommended to use unzipped folders to test addon stuff when implementing them into the game!&#039;&#039;&#039; You can simply make your file edits, save the file, and then refresh your resourcepack in game to see the changes immediately! &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Layered Animations ====&lt;br /&gt;
Layered animations are two or more animations that are listed together in your &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; list. The most common example would be adding the &amp;lt;code&amp;gt;look&amp;lt;/code&amp;gt; animation on top of your &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; animation for your standing pose. You&#039;re able to list more than two animations and your main limit would be running out of bones to animate. &lt;br /&gt;
&lt;br /&gt;
The first animation listed should have priority control over the bones of the model. This is how Pokémon are able to look at you while walking around. The look animation has priority over the head bone, or whatever bone is listed as the head. This head bone will always attempt to look at a player if the player approaches. &lt;br /&gt;
&lt;br /&gt;
Another example of layering animations would be having 2 kinds of animations that are meant to be played together and separate. A great example of this is charizard&#039;s walk animation. The walking animation itself only moves the legs for when it&#039;s walking. It combines the ground idle and the ground walk animations for its walking pose. The walk animation only controls the bottom half of the body, while the ground idle only controls the top half of the body. If you only listed its walk animation and it started walking, then the top half of charizard would t-pose whenever it walks.&amp;lt;/br&amp;gt;&lt;br /&gt;
Charizard&#039;s walking animation list for its walking pose:&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
         &amp;quot;&amp;lt;abbr title=&amp;quot;Allows the Pokémon to move its head around to observe its surroundings. You can delete this if your Pokémon doesn&#039;t have a head bone, or you just don&#039;t want them looking around.&amp;quot;&amp;gt;look&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
         &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s ground walk animation. Due to the way charizard&#039;s animations were made, this specified animation only animates the bottom half of charizard. If you do not include the matching ground idle after this, the arms of charizard will t-pose while it walks.&amp;quot;&amp;gt;bedrock(charizard, ground_walk)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
         &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s ground idle animation. Due to the way charizard&#039;s animations were made, this specified animation only animates the top half of charizard. Adding this animation will allow charizard&#039;s arms and wings to be animated while it walks.&amp;quot;&amp;gt;bedrock(charizard, ground_idle)&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animation Overwrites ====&lt;br /&gt;
This function is mostly used for cases where you want an animation to be played exclusively for certain situations. You simply write &amp;lt;code&amp;gt;, true&amp;lt;/code&amp;gt; after your animation type in your animations list. The most common use for this function would be writing it into your faint so the faint animation should always be playing when a Pokémon faints. Sometimes animations don&#039;t change properly and this can fix it most of the time. &lt;br /&gt;
&lt;br /&gt;
Below is an example of the faint using this overwrite function. What&#039;s going to happen in game is that when charizard faints, it will always play the faint animation over other animations it was already doing. This is fine because the faint animation animates the whole model. The cry animation does not contain this function because we want the cry to play over the idle animation, but not completely overwrite everything! If it did, then charizard would t-pose whenever it tried to do it&#039;s cry animation because it only animates the head bone.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the faint animation for this Pokémon. If you have no faint animation, you can delete this line.&amp;quot;&amp;gt;faint&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s faint animation&amp;quot;&amp;gt;bedrock(charizard, faint&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Adding &#039;true&#039; like this will force this faint animation to play over all other animations whenever charizard faints.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;)&amp;quot;,&lt;br /&gt;
   &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the cry animation for this Pokémon. Cries play whenever the Pokémon is called out of the pokeball. This occurs in and out of battle.&amp;quot;&amp;gt;cry&amp;lt;/abbr&amp;gt;&amp;quot;:  &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s cry animation. Since it does not contain &#039;true&#039; written after it, then this cry animation will not completely overwrite other animations when it plays. It should simply animate the bones it&#039;s supposed to while the rest of the bones can be controlled by another animation.&amp;quot;&amp;gt;bedrock(charizard, cry)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Quirks ====&lt;br /&gt;
Quirk animations are extra animations that you can have play over the main animation list. What makes them different from the previous animation overwrite function is that these quirks can have extra properties applied to them. You can make them loop a certain number of times and include timers for these quirks. The most common example of a quirk animation would be the blink animations. By default, a quirk animation should play once every 8-20 seconds!&lt;br /&gt;
&lt;br /&gt;
Making a quirk in your poser file would largely depend on an animator making these quirky little animations to play in game. You can do more than just blinking animations. You can make a Pokémon roar, sneeze, or dance and have it play as a quirk for its standing pose or any other pose. A timer can then be applied to these quirk animations so you could end up with something like charizard doing a roar every 30-60 seconds when its idle. It&#039;s a very flexible sub system for animations that is only limited by your creativity. &lt;br /&gt;
&lt;br /&gt;
Here is a list of properties that can affect quirks:&lt;br /&gt;
 &amp;quot;loopTimes&amp;quot;: Int = 1 // The number of times the animation should play for the quirk&lt;br /&gt;
 &amp;quot;minSecondsBetweenOccurrences&amp;quot;: Float = 8 // The decimal-friendly number of seconds that is the &lt;br /&gt;
 minimum between the quirk playing once and it playing a second time&lt;br /&gt;
 &amp;quot;maxSecondsBetweenOccurrences&amp;quot;: Float = 30 // What do you think&lt;br /&gt;
 &amp;quot;animations&amp;quot;: List&amp;lt;Animation&amp;gt; = [] // The list of animations to play (together) when this quirk runs&lt;br /&gt;
 &amp;quot;name&amp;quot;: String // The name of the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of a modified quirk animation. What this will do is eventually make charizard play the blink animation 5 times in a row. Then after the animation plays, an 8-20 second timer begins to play this quirk again. The quirk timer starts after the quirk animations end.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property allows you to play other animations over the main list of animations for this pose. The most common type of quirk animations are blinks, but you can apply any animation you wish as a quirk.&amp;quot;&amp;gt;quirks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of this quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;blink&#039;.&amp;quot;&amp;gt;blink&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;The number of times the animation should play for the quirk. By default, this value is 1.&amp;quot;&amp;gt;loopTimes&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;For this example, we will let the blink animation play 5 times. After the blink plays 5 times, it will then start a timer before it can play again.&amp;quot;&amp;gt;5&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time. Default value is 8.&amp;quot;&amp;gt;minSecondsBetweenOccurrences&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;After 8 seconds, there is a chance that this quirk animation will play.&amp;quot;&amp;gt;8&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;The decimal-friendly number of seconds that is the maximum between the quirk playing once and it playing a second time. Default value is 30.&amp;quot;&amp;gt;maxSecondsBetweenOccurrences&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;It will take 20 seconds at most for the quirk animation to play again.&amp;quot;&amp;gt;20&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Given the data of the previous lines, this animation will play 5 times every 8-20 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s blink animation&amp;quot;&amp;gt;bedrock(charizard, blink)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Transformed Parts ====&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animation Conditions ====&lt;br /&gt;
This function allows you to have more control over when an animation is allowed to play. The current conditions we can use are for battle and for touching water. This can be used to make animations specific to being in battle or in water. You can also mix and match the battle and water conditions if you really want more specific animations. This can result in having a ground idle, ground battle idle, water idle, and water battle idle!&lt;br /&gt;
&lt;br /&gt;
This function is mostly for helping you organize your animations for each pose. Setting a condition to true will only allow the animation to play when this condition is met. Setting it to false will prevent the animation from being played when this condition is met. This allows you to set 2 or more animations per &amp;lt;code&amp;gt;poseType&amp;lt;/code&amp;gt;. This basic fundamental is what allows us to have battle animations that can only play in battle! &lt;br /&gt;
&lt;br /&gt;
Transformed parts work really well with this function! Combining these 2 functions is what allows Rillaboom to use its drum only when in battle. You can allow certain model parts to appear visible only when these conditions are met. Keep these functions in mind the next time you make a custom Pokémon model. You can create livelier animations using this system!&lt;br /&gt;
&lt;br /&gt;
Below is an example of these animation conditions being used. In this example, the battle idle will only play when charizard is in battle, but never while charizard is in water. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining a list of our poses.&amp;quot;&amp;gt;poses&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called &#039;battle-idle&#039;. Here, we will list animations that will play when the Pokémon is in battle.&amp;quot;&amp;gt;battle-idle&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this pose is &#039;battle-idle&#039;&amp;quot;&amp;gt;battle-idle&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This is transition time between animations measured in minecraft ticks. You probably won&#039;t need to mess with this.&amp;gt;transformTicks&amp;lt;/abbr&amp;gt;&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. &#039;STAND - when stationary on the ground.&#039; In the next line, we will define that the following animation will only work in battle&amp;quot;&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play during battle or not.&amp;quot;&amp;gt;isBattle&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to true will make the following animation play only while the Pokémon is idle while it&#039;s also in battle!&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play while the Pokémon is in water or not.&amp;quot;&amp;gt;isTouchingWater&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to false will prevent the following animation from playing whenever the Pokémon touches water, but only while it&#039;s also in battle! So if this Pokémon starts battle in water, it is not allowed to use this pose and its assigned animation.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;The animation you are telling it to use when your Pokémon is standing, while in battle, but not touching water.&amp;quot;&amp;gt;bedrock(charizard, battle_idle)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
       },&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Poser File Example ===&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that some Pokémon don&#039;t use a &amp;lt;code&amp;gt;head bone&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;starly&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;head&amp;quot;: &amp;quot;head&amp;quot;,&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 2.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [ -0.1, -0.9, 0 ],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 1.1,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [ -0.05, 0.15, 0 ],&lt;br /&gt;
  &amp;quot;faint&amp;quot;: &amp;quot;bedrock(starly, faint, true)&amp;quot;,&lt;br /&gt;
  &amp;quot;cry&amp;quot;: &amp;quot;bedrock(starly, cry)&amp;quot;,&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-idle&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;battle-idle&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;bedrock(starly, battle_idle)&amp;quot;],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&amp;quot;bedrock(starly, blink)&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;standing&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;STAND&amp;quot;,&lt;br /&gt;
        &amp;quot;NONE&amp;quot;,&lt;br /&gt;
        &amp;quot;PORTRAIT&amp;quot;,&lt;br /&gt;
        &amp;quot;PROFILE&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, ground_idle)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;walking&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;WALK&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, ground_walk)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hovering&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;hovering&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;HOVER&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, air_idle)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;flying&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;flying&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;FLY&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, air_fly)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleeping&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;sleeping&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;SLEEP&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, sleep)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;leftshoulder&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;leftshoulder&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;SHOULDER_LEFT&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, left_shoulder)&amp;quot;,&lt;br /&gt;
        &amp;quot;look&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;rightshoulder&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;rightshoulder&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;SHOULDER_RIGHT&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, right_shoulder)&amp;quot;,&lt;br /&gt;
        &amp;quot;look&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swimming&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;swimming&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;SWIM&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, water_swim)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;floating&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseName&amp;quot;: &amp;quot;floating&amp;quot;,&lt;br /&gt;
      &amp;quot;transformTicks&amp;quot;: 10,&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&lt;br /&gt;
        &amp;quot;FLOAT&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;bedrock(starly, water_idle)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;name&amp;quot;: &amp;quot;blink&amp;quot;,&lt;br /&gt;
          &amp;quot;animations&amp;quot;: [&lt;br /&gt;
            &amp;quot;bedrock(starly, blink)&amp;quot;&lt;br /&gt;
          ]&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5045</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=5045"/>
		<updated>2024-12-12T03:56:45Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Tweak to Translation information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Under construction. Dont look or else!&lt;br /&gt;
&lt;br /&gt;
{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The new &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the new Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. Animation types would include your faints, cries, and attack animations. Below is a list of currently available Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_stateful ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_primary ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special transition animation types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 4 primary animation in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.curve ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock ====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation format from the [[Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a negative Z value that is some multiple of 5.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isSubmergedInWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth. For now, you&#039;ll have to figure out how to configure these yourself lol&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a list of all the Placeholder animations:&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L172 &amp;quot;q.quadruped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walk animation for Pokémon with 4 legs&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L192 &amp;quot;q.biped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walking animation for Pokémon who stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L208 &amp;quot;q.bimanual_swing()&amp;quot;]&amp;lt;/code&amp;gt; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L224 &amp;quot;q.sine_wing_flap()&amp;quot;]&amp;lt;/code&amp;gt; - A basic wing flap animation for a pair of wings on a Pokémon. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 2.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.1, 0.58, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.75,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0.68, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Species&amp;diff=4929</id>
		<title>Species</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Species&amp;diff=4929"/>
		<updated>2024-08-20T23:14:43Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Fakemon Generator Link updated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;species&amp;lt;/code&amp;gt; JSON contains all the data of each Pokémon and its various forms. The species file is &#039;&#039;&#039;everything&#039;&#039;&#039; a Pokémon is without the visual aspects. Moves, abilities, forms, size, evolutions, and so much more are contained in this single file for every Pokémon. Cobblemon already includes most of this data for all 1,017 Pokémon. &lt;br /&gt;
&lt;br /&gt;
Creating a custom Pokémon is as simple as creating a new species file! You can borrow an existing Pokémon&#039;s species file and swap the name for a new one or you can create a new file from scratch. It is highly recommended that you use the [https://cobblemon-fakemon-generator.timinc.us/ Cobblemon Fakemon Generator] to create new species files. &lt;br /&gt;
&lt;br /&gt;
=== The Species File ===&lt;br /&gt;
The species file contains large amounts of data about Pokémon that connect to all the other systems that make Pokémon function in game. Some properties in the file are self explanatory, while others are not so clear. This section will provide lots of helpful information and links to help you understand all the different systems that connect to the species file. &lt;br /&gt;
&lt;br /&gt;
==== Helpful Information ====&lt;br /&gt;
Some very helpful links and resources will be listed below. They can help you with understanding the mechanics of both the mod and Pokémon in general.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Where to get species files&#039;&#039;&#039; =====&lt;br /&gt;
* [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/species The Cobblemon Gitlab] - This is where Cobblemon&#039;s source code is hosted. You can find the species files of all Pokémon in that link. They should be in folders sorted by generation.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Where to find official Pokémon data&#039;&#039;&#039; =====&lt;br /&gt;
* [[bulbapedia:List of Pokémon by National Pokédex number|Bulbagarden]] - This website has information about Pokémon both from the games and the anime. You can find many references about each Pokémon here.&amp;lt;/br&amp;gt;&lt;br /&gt;
* [https://pokemondb.net/pokedex/all Pokémon Database] - This website has all kinds of information about Pokémon, but is more focused on stats. A lot of that data is the same or similar to what&#039;s written in the species files.&lt;br /&gt;
* [https://www.serebii.net/pokemon/nationalpokedex.shtml Serebii] - This website probably has the most information about Pokémon. Serebii provides accurate data and media references with images of these media appearances.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;Behaviors and AI information&#039;&#039;&#039; =====&lt;br /&gt;
* [[Pokémon/Behaviour| Behavior Wiki Page]] - This wiki page will list and explain all the different behavior properties you can write for a Pokémon. This assigns the Pokémon its AI behavior. You can also copy a similar Pokémon&#039;s behavior code block if you are unsure how to create one.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Forms, Features, and Aspects&#039;&#039;&#039; =====&lt;br /&gt;
* [[Tutorials/Regional_Forms|Regional Forms]] - This links to a tutorial about setting up regional forms. Regional forms usually have different stats and this tutorial can show you how to set them up.&amp;lt;/br&amp;gt;&lt;br /&gt;
* [[Tutorials/Multiple_Visual_Variants|Multiple Visual Forms]] - This links to a tutorial about creating multiple visual forms like the different Torterra trees. These kinds of forms usually keep the same stats as the normal form and this tutorial can show you how to set them up.&amp;lt;/br&amp;gt;&lt;br /&gt;
* [[Species_Features|Species Features]] - This is the wiki page about species features. Features are what create &amp;quot;Aspects.&amp;quot; Aspects are what allows for all the different visual forms for Pokémon. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Evolutions&#039;&#039;&#039; =====&lt;br /&gt;
* [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/species The Cobblemon Gitlab] - It is recommended that you use an existing Pokémon&#039;s evolution data as a template for evolutions. All existing evolution methods should be written into their respective pokemon&#039;s species file.&amp;lt;/br&amp;gt;&lt;br /&gt;
* [https://tmetcalfe89.github.io/cobblemon-fakemon-generator/ Cobblemon Fakemon Generator] - You can also generate evolution methods using the Fakemon generator. It will give you all the evolution methods when creating new species files.&amp;lt;/br&amp;gt;&lt;br /&gt;
* [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/kotlin/com/cobblemon/mod/common/pokemon/evolution/requirements Evolution Requirements From the Cobblemon Gitlab] - This links to a folder on the gitlab that has the code files to all the possible evolution requirements for you to reference. All of these methods are used by at least one official Pokémon. It is recommended that you look up this Pokémon&#039;s species file to replicate its evolution method. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;Shoulder Effects&#039;&#039;&#039; =====&lt;br /&gt;
Shoulder effects grant special buffs to the player if certain Pokémon are on their shoulders. Version 1.4 removed the shoulder effects so they could be rebalanced at a later date, but you can still apply effect data through datapacks. As of version 1.4, no shoulder mountable Pokémon has shoulder effect data in their species file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;If you wish to apply shoulder effect data to a Pokémon, you can include the following code block and switch the effect as you please:&lt;br /&gt;
* You can find a list of effects on the [https://minecraft.wiki/w/Effect#Effect_list Minecraft Wiki]. Mileage may vary.&lt;br /&gt;
  &amp;quot;shoulderEffects&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;type&amp;quot;: &amp;quot;potion_effect&amp;quot;,&lt;br /&gt;
      &amp;quot;effect&amp;quot;: &amp;quot;minecraft:slow_falling&amp;quot;,&lt;br /&gt;
      &amp;quot;amplifier&amp;quot;: 0,&lt;br /&gt;
      &amp;quot;ambient&amp;quot;: true,&lt;br /&gt;
      &amp;quot;showParticles&amp;quot;: false,&lt;br /&gt;
      &amp;quot;showIcon&amp;quot;: false&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Version 1.3 shoulder effects:&lt;br /&gt;
* &amp;lt;code&amp;gt;haste&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;water_breathing&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;speed&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;slow_falling&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;Moves and Learning Methods&#039;&#039;&#039; =====&lt;br /&gt;
This section of the species file determines the moves a Pokémon can learn. There are 4 methods of learning moves. Only 1 of them is currently implemented and that&#039;s &amp;lt;code&amp;gt;level&amp;lt;/code&amp;gt; learning.&lt;br /&gt;
&lt;br /&gt;
Every move from the official games should be in Cobblemon. In order for moves to be read properly, they must be written in the correct format for the move list. The method type goes on the left side of a colon and the move name goes on the right side of the colon. &#039;&#039;&#039;Moves that contain 2 or more words must be bunched together into one &amp;quot;word&amp;quot; and can&#039;t contain any spaces, underscores, commas, or hyphens.&#039;&#039;&#039; Everything must remain in lowercase as well. &lt;br /&gt;
&lt;br /&gt;
Example of each method and name format:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;5:quickattack&amp;quot;&amp;lt;/code&amp;gt; : &#039;&#039;&#039;Level&#039;&#039;&#039; - This would let a Pokémon learn &amp;lt;code&amp;gt;quick attack&amp;lt;/code&amp;gt; at level 5. The number determines what level the move will be learned at. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;egg:thunder&amp;quot;&amp;lt;/code&amp;gt; : &#039;&#039;&#039;Egg Move&#039;&#039;&#039; - This would let a Pokémon inherit &amp;lt;code&amp;gt;thunder&amp;lt;/code&amp;gt; from one of its parents. It will hatch from its egg knowing this move when breeding gets implemented. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;tm:thunderbolt&amp;quot;&amp;lt;/code&amp;gt; : &#039;&#039;&#039;TMs&#039;&#039;&#039; - This would allow a Pokémon to use a &amp;lt;code&amp;gt;thunderbolt&amp;lt;/code&amp;gt; TM when TMs get implemented.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;tutor:10000000voltthunderbolt&amp;quot;&amp;lt;/code&amp;gt; : &#039;&#039;&#039;Tutor&#039;&#039;&#039; - This would allow a Pokémon to learn &amp;lt;code&amp;gt;10,000,000 Volt Thunderbolt&amp;lt;/code&amp;gt; from a tutor when tutors get implemented. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Item Drops&#039;&#039;&#039; =====&lt;br /&gt;
Cobblemon drops work differently than vanilla drops. You need to set a target amount of drops, then it tries to achieve this drop amount by rolling for drops in the entries listed. If an entry passes a percentage check, then it will count as 1 towards the targeted amount. Once this target amount is achieved, it will stop trying to roll for drops even if it did not finish reading all the entries. If it runs out of entries and did not achieve this target, then it will also stop rolling for drops. Once it stops rolling, all of the drops that passed the percentage check will drop where the Pokémon was defeated.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Example code block for drops:&lt;br /&gt;
* Since amount is set to 1 and there is only 1 entry, then it will only roll for drops from this 1 entry.&lt;br /&gt;
* The sweet berries entry does not list a percentage value, so by default its 100%.&lt;br /&gt;
* This would make Vulpix drop 2-3 berries 100% of the time&lt;br /&gt;
 &amp;quot;drops&amp;quot;: {&lt;br /&gt;
   &amp;quot;amount&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
   &amp;quot;entries&amp;quot;: [&lt;br /&gt;
     {&lt;br /&gt;
       &amp;quot;item&amp;quot;: &amp;quot;minecraft:sweet_berries&amp;quot;,&lt;br /&gt;
       &amp;quot;quantityRange&amp;quot;: &amp;quot;2-3&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
   ]&lt;br /&gt;
 },&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;Hitbox and Base Scale&#039;&#039;&#039; =====&lt;br /&gt;
The size of the Pokémon model and its hitbox are controlled by the species file. If you want to change any of these values and see the results, &#039;&#039;&#039;you must load the singleplayer world from the main menu.&#039;&#039;&#039; The &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt; command does not work with Cobblemon datapacks. Loading the world again is the proper way to refresh Cobblemon datapacks.&amp;lt;/br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;baseScale&amp;lt;/code&amp;gt; will size the Pokémon up or down. A value of 1 will let the model be at a one to one scale with its size in blockbench.&amp;lt;/br&amp;gt;&lt;br /&gt;
* &amp;lt;code&amp;gt;hitbox&amp;lt;/code&amp;gt; has 3 values you can change, but you will only want to change the &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; of the hitbox. In game, you can press &amp;lt;code&amp;gt;F3+B&amp;lt;/code&amp;gt; to show the hitboxes on entities. &lt;br /&gt;
** Height is how many blocks high the Pokémon is.&lt;br /&gt;
** A hitbox width of 1 will let the hitbox be as wide as 1 Minecraft block with the Pokémon at the center of the hitbox. Width is akin to diameter, but it&#039;s Minecraft so everything is a cube. Try not to think about it too much.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== &#039;&#039;&#039;Height and Weight&#039;&#039;&#039; =====&lt;br /&gt;
The height and weight that will be used for the Pokédex when it gets implemented. The unit for height is in decimeters. The unit for weight is in hectograms. Dividing these values by 10 will give you the metric units for meters and kilograms.&lt;br /&gt;
* &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt; doesn&#039;t do anything significant and is misleading a lot of the time in the Pokédex. Sometimes it measures distance from the ground, and sometimes it measures how long a Pokémon is.&lt;br /&gt;
* &amp;lt;code&amp;gt;weight&amp;lt;/code&amp;gt; will determine the damage value of weight based moves like heavy slam. Make sure you set these weights to hectograms or these moves may do unintentional amounts of damage.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=====&#039;&#039;&#039;Gender&#039;&#039;&#039;=====&lt;br /&gt;
Gender is managed via the &amp;lt;code&amp;gt;maleRatio&amp;lt;/code&amp;gt; property. &lt;br /&gt;
* This property should have a decimal value between 0 and 1, and is the percent chance for a Pokémon to spawn as a male. &lt;br /&gt;
** A value of &amp;lt;code&amp;gt;0.1&amp;lt;/code&amp;gt; for example would lead to a 10% chance to spawn as a male. &lt;br /&gt;
* The special value of &amp;lt;code&amp;gt;-1&amp;lt;/code&amp;gt; is reserved for genderless Pokémon.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
===== &#039;&#039;&#039;Lighting Data&#039;&#039;&#039; =====&lt;br /&gt;
Lighting data allows for compatibility with some of the more popular dynamic lighting mods. A Pokémon can be assigned a light level and can be set to only emit light when on land, underwater, or both!&lt;br /&gt;
* &amp;lt;code&amp;gt;lightLevel&amp;lt;/code&amp;gt; - The light level emitted by the Pokémon. A range of 0 to 15.&lt;br /&gt;
* &amp;lt;code&amp;gt;liquidGlowMode&amp;lt;/code&amp;gt; - If the effect runs while in a liquid or on land. Your options are &amp;lt;code&amp;gt;LAND&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;UNDERWATER&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;BOTH&amp;lt;/code&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Example code block for lightingData:&lt;br /&gt;
* Any pokemon assigned this data will emit a light level of 14 when on land&lt;br /&gt;
  &amp;quot;lightingData&amp;quot;: {&lt;br /&gt;
   &amp;quot;lightLevel&amp;quot;: 14,&lt;br /&gt;
   &amp;quot;liquidGlowMode&amp;quot;: &amp;quot;LAND&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Species File Breakdown ====&lt;br /&gt;
As far as the writer of this article is concerned, Vulpix has one of the most fleshed out species files. This makes Vulpix a great example to explain the different sections of the species file. You can reference some of the resources listed above and compare them with the written data below. Hover over the underlined text to see more information.&amp;lt;/br&amp;gt;&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not this pokémon is fully implemented. This determines whether it will show up in /spawnallpokemon or similar commands.&amp;quot;&amp;gt;implemented&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Because it&#039;s set to true, vulpix will appear when using the /spawnallpokemon command.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will create the name of a new Pokémon species&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this species.&amp;quot;&amp;gt;Vulpix&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The pokédex number for this pokémon -- currently not significant, but just in case, try and pick a unique digit above 2000.&amp;quot;&amp;gt;nationalPokedexNumber&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;This is Vulpix&#039;s national dex number!&amp;quot;&amp;gt;37&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Elemental typings of your Pokémon, these are completely up to you. (But of course it must be an official typing.) You do not need to have a secondary typing if you don&#039;t want one.&amp;quot;&amp;gt;primaryType&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Vulpix is a fire type, so we assign it fire here.&amp;quot;&amp;gt;fire&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here we define the list of abilities. You can have up to two abilities listed, and one hidden ability.&amp;quot;&amp;gt;abilities&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This is Vulpix&#039;s first and only ability&amp;quot;&amp;gt;flashfire&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This is Vulpix&#039;s hidden ability&amp;quot;&amp;gt;h:drought&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The base stats of your Pokémon. Again, these are up to you. You can reference some official Pokémon stats and borrow them if you can&#039;t come up with your own.&amp;quot;&amp;gt;baseStats&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the amount of health a Pokémon will have.&amp;quot;&amp;gt;hp&amp;lt;/abbr&amp;gt;&amp;quot;: 38,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage dealt from physical attacks.&amp;quot;&amp;gt;attack&amp;lt;/abbr&amp;gt;&amp;quot;: 41,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage reduction from physical attacks&amp;quot;&amp;gt;defence&amp;lt;/abbr&amp;gt;&amp;quot;: 40,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage dealt from special attacks.&amp;quot;&amp;gt;special_attack&amp;lt;/abbr&amp;gt;&amp;quot;: 50,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage reduction from special attacks.&amp;quot;&amp;gt;special_defence&amp;lt;/abbr&amp;gt;&amp;quot;: 65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines if the Pokémon will move first in battle.&amp;quot;&amp;gt;speed&amp;lt;/abbr&amp;gt;&amp;quot;: 65&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;We define how the pokémon behaves here. You can reference the Behavior wiki page to see more information about this section.&amp;quot;&amp;gt;behaviour&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;A set of properties relating to how and when the Pokémon sleeps, if it sleeps at all.&amp;quot;&amp;gt;resting&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;A true/false value. If it&#039;s true, then it can fall asleep and use its sleep animations. You probably want this set to true always!&amp;quot;&amp;gt;canSleep&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to true will allow Vulpix to fall asleep under the following conditions.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;A true/false value. If true, the Pokémon will try to sleep on top of the player&#039;s bed when they hop into it, much like cats.&amp;quot;&amp;gt;willSleepOnBed&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;If given the option, Vulpix will try to sleep on a player bed.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Is this Pokémon a light sleeper or a heavy sleeper?&amp;quot;&amp;gt;depth&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The depth of the sleep. Normal means vulpix will wake up if the player is within 16 blocks and not sneaking.&amp;quot;&amp;gt;normal&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;A light level or level range, between 0 and 15, which represents the light levels in which the Pokémon is able to sleep.&amp;quot;&amp;gt;light&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Vulpix will attempt to sleep only if it&#039;s standing in a light level of 0-4.&amp;quot;&amp;gt;0-4&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How easy it is to catch your pokémon. Larger numbers mean it&#039;s easier to catch.&amp;quot;&amp;gt;catchRate&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Values over 100 are considered &#039;easier&#039; captures. Since Vulpix is a pre evolution Pokémon, its capture rate is quite high.&amp;quot;&amp;gt;190&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;What percentage of this pokémon are male.&amp;quot;&amp;gt;maleRatio&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Wild Vulpix have a 25% chance of being male. This means 75% of Vulpix spawns will be females.&amp;quot;&amp;gt;0.25&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Determines whether or not this Pokémon can go on the players shoulder. You can set this to true for any Pokémon, but it most likely wont look good! It will use its ground idle animation on the player shoulder if there is no dedicated shoulder animation.&amp;quot;&amp;gt;shoulderMountable&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Vulpix is unfortunately not a shoulder mountable Pokémon.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;A list of available forms for Vulpix. These forms will have their own set of stats. It&#039;s almost like writing a whole new Pokémon into this section.&amp;quot;&amp;gt;forms&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this form.&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;We simply call it Alola. All the other Alolan Pokémon forms will share this same form name.&amp;quot;&amp;gt;Alola&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix&#039;s type. Form types are usually different than the base form.&amp;quot;&amp;gt;primaryType&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix will be an ice type.&amp;quot;&amp;gt;ice&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here we will list Alolan Vulpix&#039;s abilities.&amp;quot;&amp;gt;abilities&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix&#039;s first and only ability.&amp;quot;&amp;gt;snowcloak&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix&#039;s hidden ability&amp;quot;&amp;gt;h:snowwarning&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The base stats for Alolan Vulpix. These are usually different than the base form.&amp;quot;&amp;gt;baseStats&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the amount of health a Pokémon will have.&amp;quot;&amp;gt;hp&amp;lt;/abbr&amp;gt;&amp;quot;: 38,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage dealt from physical attacks.&amp;quot;&amp;gt;attack&amp;lt;/abbr&amp;gt;&amp;quot;: 41,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage reduction from physical attacks&amp;quot;&amp;gt;defence&amp;lt;/abbr&amp;gt;&amp;quot;: 40,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage dealt from special attacks.&amp;quot;&amp;gt;special_attack&amp;lt;/abbr&amp;gt;&amp;quot;: 50,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the damage reduction from special attacks.&amp;quot;&amp;gt;special_defence&amp;lt;/abbr&amp;gt;&amp;quot;: 65,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Determines if the Pokémon will move first in battle.&amp;quot;&amp;gt;speed&amp;lt;/abbr&amp;gt;&amp;quot;: 65&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How easy it is to catch your pokémon. Larger numbers mean it&#039;s easier to catch.&amp;quot;&amp;gt;catchRate&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Values over 100 are considered &#039;easier&#039; captures. Since Alolan Vulpix is a pre evolution Pokémon, its capture rate is quite high.&amp;quot;&amp;gt;190&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;What percentage of this pokémon are male.&amp;quot;&amp;gt;maleRatio&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Wild Alolan Vulpix have a 25% chance of being male. This means 75% of Alolan Vulpix spawns will be females.&amp;quot;&amp;gt;0.25&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How many experience granted by this pokémon upon being defeated.&amp;quot;&amp;gt;baseExperienceYield&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Weaker Pokémon usually have this value around 50.&amp;quot;&amp;gt;60&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;What this pokémon&#039;s friendship stat starts at when caught.&amp;quot;&amp;gt;baseFriendship&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Most Pokémon have this value set to 50&amp;quot;&amp;gt;50&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How many effort values this pokémon gives upon being defeated.&amp;quot;&amp;gt;evYield&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;hp&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;attack&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;defence&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;special_attack&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;special_defence&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;speed&amp;lt;/abbr&amp;gt;&amp;quot;: 1&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How quickly this Pokémon will level up. You can look this information up online.&amp;quot;&amp;gt;experienceGroup&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix will level up at a &#039;medium fast&#039; rate.&amp;quot;&amp;gt;medium_fast&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How long it takes for this pokémon&#039;s egg to hatch.&amp;quot;&amp;gt;eggCycles&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A value of 20 is about how long it takes to hatch a starter Pokémon egg.&amp;quot;&amp;gt;20&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;What egg groups this Pokémon will be able to breed with. You can look this information up online.&amp;quot;&amp;gt;eggGroups&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;The egg group of this pokemon.&amp;quot;&amp;gt;field&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list what moves the pokemon can learn and how they will learn those moves. You can check this page&#039;s section for moves to see how to write them.&amp;quot;&amp;gt;moves&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Alolan Vulpix learn powder snow at level 1&amp;quot;&amp;gt;1:powdersnow&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Alolan Vulpix learn tail whip at level 1&amp;quot;&amp;gt;1:tailwhip&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;4:disable&amp;quot;,&lt;br /&gt;
        &amp;quot;7:roar&amp;quot;,&lt;br /&gt;
        &amp;quot;8:iceshard&amp;quot;,&lt;br /&gt;
        &amp;quot;9:babydolleyes&amp;quot;,&lt;br /&gt;
        &amp;quot;12:spite&amp;quot;,&lt;br /&gt;
        &amp;quot;16:icywind&amp;quot;,&lt;br /&gt;
        &amp;quot;18:payback&amp;quot;,&lt;br /&gt;
        &amp;quot;20:confuseray&amp;quot;,&lt;br /&gt;
        &amp;quot;23:feintattack&amp;quot;,&lt;br /&gt;
        &amp;quot;24:aurorabeam&amp;quot;,&lt;br /&gt;
        &amp;quot;26:hex&amp;quot;,&lt;br /&gt;
        &amp;quot;28:extrasensory&amp;quot;,&lt;br /&gt;
        &amp;quot;32:icebeam&amp;quot;,&lt;br /&gt;
        &amp;quot;34:safeguard&amp;quot;,&lt;br /&gt;
        &amp;quot;36:imprison&amp;quot;,&lt;br /&gt;
        &amp;quot;40:mist&amp;quot;,&lt;br /&gt;
        &amp;quot;44:auroraveil&amp;quot;,&lt;br /&gt;
        &amp;quot;47:captivate&amp;quot;,&lt;br /&gt;
        &amp;quot;48:sheercold&amp;quot;,&lt;br /&gt;
        &amp;quot;52:grudge&amp;quot;,&lt;br /&gt;
        &amp;quot;56:blizzard&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:agility&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:babydolleyes&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:charm&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:disable&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:encore&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:extrasensory&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:flail&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:freezedry&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:howl&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:hypnosis&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:moonblast&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:powerswap&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:roar&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:secretpower&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:spite&amp;quot;,&lt;br /&gt;
        &amp;quot;egg:tailslap&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:agility&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:attract&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:auroraveil&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:blizzard&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:bodyslam&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:charm&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:confide&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:darkpulse&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:dig&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:doubleteam&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:drainingkiss&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:encore&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:endure&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:facade&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:foulplay&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:frostbreath&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:frustration&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:hail&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:hex&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:hiddenpower&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:icebeam&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:icywind&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:imprison&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:irontail&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:payback&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:powerswap&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:protect&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:psychup&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:raindance&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:rest&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:return&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:roar&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:round&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:safeguard&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:sleeptalk&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:snore&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:substitute&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:swagger&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:swift&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:tailslap&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:toxic&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:weatherball&amp;quot;,&lt;br /&gt;
        &amp;quot;tm:zenheadbutt&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:aquatail&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:aurorabeam&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:babydolleyes&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:blizzard&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:celebrate&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:confuseray&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:covet&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:darkpulse&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:dazzlinggleam&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:dig&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:facade&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:foulplay&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:headbutt&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:healbell&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:icebeam&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:iceshard&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:icywind&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:irontail&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:mist&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:painsplit&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:powdersnow&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:protect&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:reflect&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:rest&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:roar&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:roleplay&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:snore&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:spite&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:substitute&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:tackle&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:tailwhip&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:toxic&amp;quot;,&lt;br /&gt;
        &amp;quot;tutor:zenheadbutt&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Labels for this pokémon. There&#039;s no real use for labels yet.&amp;quot;&amp;gt;labels&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Label for a Pokémon introduced in generation 7&amp;quot;&amp;gt;gen7&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Label for a Regional form from the alola region&amp;quot;&amp;gt;alola_regional&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Aspects are what allows a Pokémon to change its visual aspects for things like regional forms. You can read about it in this page&#039;s section on forms.&amp;quot;&amp;gt;aspects&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Alolan Vulpix will receive the aspect for alolan. This will allow it to use the alolan aspect in the resolver file to assign the alolan model instead of the kantonian one.&amp;quot;&amp;gt;alolan&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon&#039;s height measured in decimeters&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: 6,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon&#039;s weight measured in hectograms&amp;quot;&amp;gt;weight&amp;lt;/abbr&amp;gt;&amp;quot;: 99,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list any evolution methods the form will have. They are separate from the base forms evolutions.&amp;quot;&amp;gt;evolutions&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this evolution entry.&amp;quot;&amp;gt;id&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this evolution entry.&amp;quot;&amp;gt;vulpix_ninetales&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;The evolution variant it will use to evolve.&amp;quot;&amp;gt;variant&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, you need to interact with an item. This is the same method as using an evolution stone to evolve. But it can be configured to be any item or modded item.&amp;quot;&amp;gt;item_interact&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon that this species will evolve into.&amp;quot;&amp;gt;result&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are specifying that alolan vulpix will evolve into alolan ninetales. Remember to use this format when making evolution data for regional forms.&amp;quot;&amp;gt;ninetales form=alola&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not its held item gets consumed when evolving.&amp;quot;&amp;gt;consumeHeldItem&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A held item is not required for this evolution, so we will leave this false for now&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;A list of moves this Pokémon will learn when it evolves.&amp;quot;&amp;gt;learnableMoves&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;When evolving into Alolan Ninetales, it will learn dazzling gleam.&amp;quot;&amp;gt;dazzlinggleam&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
          ],&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list some sub requirements for evolution. You can learn more about evolution requirements on this page&#039;s section of evolution&amp;quot;&amp;gt;requirements&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;There are no sub requirements for this evolution, so we leave these brackets blank.&amp;quot;&amp;gt;[]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list what item you need to interact with to make this Pokémon evolve.&amp;quot;&amp;gt;requiredContext&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, we are using an ice stone from the Cobblemon mod. This can be changed to any vanilla or modded item as long as you use the proper item id.&amp;quot;&amp;gt;cobblemon:ice_stone&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;cannotDynamax&amp;lt;/abbr&amp;gt;&amp;quot;: false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;battleOnly&amp;lt;/abbr&amp;gt;&amp;quot;: false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list any features this pokemon has. Features come from the species feature folder of the mod. You can learn more about features from this page&#039;s section on forms and features.&amp;quot;&amp;gt;features&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Even though the alolan form&#039;s data is written above, Vulpix can&#039;t access that form data unless you list alolan as a feature like this. So remember to apply alolan as a feature and an aspect!&amp;quot;&amp;gt;alolan&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How many experience granted by this pokémon upon being defeated.&amp;quot;&amp;gt;baseExperienceYield&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Weaker Pokémon usually have this value around 50.&amp;quot;&amp;gt;60&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How quickly this Pokémon will level up. You can look this information up online.&amp;quot;&amp;gt;experienceGroup&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Vulpix will level up at a &#039;medium fast&#039; rate.&amp;quot;&amp;gt;medium_fast&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How long it takes for this pokémon&#039;s egg to hatch.&amp;quot;&amp;gt;eggCycles&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A value of 20 is about how long it takes to hatch a starter Pokémon egg.&amp;quot;&amp;gt;20&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;What egg groups this Pokémon will be able to breed with. You can look this information up online.&amp;quot;&amp;gt;eggGroups&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The egg group of this pokemon.&amp;quot;&amp;gt;field&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;drops&amp;quot;: {&lt;br /&gt;
    &amp;quot;amount&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;entries&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;item&amp;quot;: &amp;quot;minecraft:sweet_berries&amp;quot;,&lt;br /&gt;
        &amp;quot;quantityRange&amp;quot;: &amp;quot;2-3&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list what moves the pokemon can learn and how they will learn those moves. You can check this page&#039;s section for moves to see how to write them.&amp;quot;&amp;gt;moves&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This allows Kantonian Vulpix to learn ember at level 1&amp;quot;&amp;gt;1:ember&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This allows Kantonian Vulpix to learn tail whip at level 1&amp;quot;&amp;gt;1:tailwhip&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;4:disable&amp;quot;,&lt;br /&gt;
    &amp;quot;7:roar&amp;quot;,&lt;br /&gt;
    &amp;quot;8:quickattack&amp;quot;,&lt;br /&gt;
    &amp;quot;9:babydolleyes&amp;quot;,&lt;br /&gt;
    &amp;quot;12:spite&amp;quot;,&lt;br /&gt;
    &amp;quot;16:incinerate&amp;quot;,&lt;br /&gt;
    &amp;quot;18:payback&amp;quot;,&lt;br /&gt;
    &amp;quot;20:confuseray&amp;quot;,&lt;br /&gt;
    &amp;quot;23:feintattack&amp;quot;,&lt;br /&gt;
    &amp;quot;24:willowisp&amp;quot;,&lt;br /&gt;
    &amp;quot;26:hex&amp;quot;,&lt;br /&gt;
    &amp;quot;28:extrasensory&amp;quot;,&lt;br /&gt;
    &amp;quot;28:flameburst&amp;quot;,&lt;br /&gt;
    &amp;quot;32:flamethrower&amp;quot;,&lt;br /&gt;
    &amp;quot;36:imprison&amp;quot;,&lt;br /&gt;
    &amp;quot;40:firespin&amp;quot;,&lt;br /&gt;
    &amp;quot;44:safeguard&amp;quot;,&lt;br /&gt;
    &amp;quot;47:captivate&amp;quot;,&lt;br /&gt;
    &amp;quot;48:inferno&amp;quot;,&lt;br /&gt;
    &amp;quot;52:grudge&amp;quot;,&lt;br /&gt;
    &amp;quot;56:fireblast&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:babydolleyes&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:captivate&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:disable&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:energyball&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:extrasensory&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:feintattack&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:flail&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:flamecharge&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:flareblitz&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:heatwave&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:hex&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:howl&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:hypnosis&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:memento&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:powerswap&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:psychup&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:roar&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:secretpower&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:spite&amp;quot;,&lt;br /&gt;
    &amp;quot;egg:tailslap&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:agility&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:attract&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:bodyslam&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:captivate&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:confide&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:darkpulse&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:dig&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:doubleteam&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:encore&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:endure&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:energyball&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:facade&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:fireblast&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:firespin&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:flamecharge&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:flamethrower&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:flareblitz&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:foulplay&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:frustration&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:heatwave&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:hex&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:hiddenpower&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:imprison&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:incinerate&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:irontail&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:mysticalfire&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:naturalgift&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:overheat&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:payback&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:powerswap&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:protect&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:psychup&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:rest&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:return&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:roar&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:round&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:safeguard&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:secretpower&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:sleeptalk&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:snore&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:substitute&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:sunnyday&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:swagger&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:swift&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:tailslap&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:toxic&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:weatherball&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:willowisp&amp;quot;,&lt;br /&gt;
    &amp;quot;tm:zenheadbutt&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:attract&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:bide&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:bodyslam&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:burningjealousy&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:charm&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:confuseray&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:covet&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:curse&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:darkpulse&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:dig&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:disable&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:doubleedge&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:doubleteam&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:ember&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:endure&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:facade&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:feintattack&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:fireblast&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:firespin&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:flail&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:flamethrower&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:foulplay&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:frustration&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:headbutt&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:heatwave&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:hiddenpower&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:hypnosis&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:irontail&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:mimic&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:ominouswind&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:painsplit&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:protect&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:quickattack&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:rage&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:reflect&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:rest&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:return&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:roar&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:roleplay&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:safeguard&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:skullbash&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:sleeptalk&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:snore&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:spite&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:substitute&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:sunnyday&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:swagger&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:swift&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:tackle&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:tailwhip&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:takedown&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:toxic&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:willowisp&amp;quot;,&lt;br /&gt;
    &amp;quot;tutor:zenheadbutt&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Labels for this pokémon. There&#039;s no real use for labels yet.&amp;quot;&amp;gt;labels&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Label for a Pokémon introduced in generation 1&amp;quot;&amp;gt;gen1&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Label for a Pokémon from the kanto region.&amp;quot;&amp;gt;kanto_regional&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you can create a string for your pokedex entry. The entry itself is written in the lang file. You are simply creating something to define in the lang file here.&amp;quot;&amp;gt;pokedex&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This line can be translated to any language in the language files and include the actual pokedex entry.&amp;quot;&amp;gt;cobblemon.species.vulpix.desc&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list any evolution methods&amp;quot;&amp;gt;evolutions&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this evolution entry.&amp;quot;&amp;gt;id&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this evolution entry.&amp;quot;&amp;gt;vulpix_ninetales&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The evolution variant it will use to evolve.&amp;quot;&amp;gt;variant&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, you need to interact with an item. This is the same method as using an evolution stone to evolve. But it can be configured to be any item or modded item.&amp;quot;&amp;gt;item_interact&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon that this species will evolve into.&amp;quot;&amp;gt;result&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are specifying that vulpix will evolve into ninetales.&amp;quot;&amp;gt;ninetales&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not its held item gets consumed when evolving.&amp;quot;&amp;gt;consumeHeldItem&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A held item is not required for this evolution, so we will leave this false for now&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;A list of moves this Pokémon will learn when it evolves.&amp;quot;&amp;gt;learnableMoves&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Vulpix wont learn any special moves when it evolves into ninetales, so this will be left empty.&amp;quot;&amp;gt;[]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list some sub requirements for evolution. You can learn more about evolution requirements on this page&#039;s section of evolution&amp;quot;&amp;gt;requirements&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;There are no sub requirements for this evolution, so we leave these brackets blank.&amp;quot;&amp;gt;[]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list what item you need to interact with to make this Pokémon evolve.&amp;quot;&amp;gt;requiredContext&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, we are using a fire stone from the Cobblemon mod. This can be changed to any vanilla or modded item as long as you use the proper item id.&amp;quot;&amp;gt;cobblemon:fire_stone&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Determines the size of the model. Based on the size of the model in blockbench. A value of 1 will put it at a one to one scale with what you made in blockbench. Remember that you can&#039;t use the /reload command to see the changes you make here.&amp;quot;&amp;gt;baseScale&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A value of 0.7 means the model will only be at 70% the size of what you made in blockbench. This can be useful for scaling models down so you can get more detail on smaller Pokémon like joltik.&amp;quot;&amp;gt;0.7&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will determine the size of this Pokémon&#039;s hitbox. You can learn more about it in this page&#039;s hitbox section.&amp;quot;&amp;gt;hitbox&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;A width value of 1 should let the hitbox be the size of a normal block in minecraft. Play around with this value until it looks right to you.&amp;quot;&amp;gt;width&amp;lt;/abbr&amp;gt;&amp;quot;: 0.9,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;A height value of 1 should let the hitbox be the size of a normal block in minecraft. Play around with this value until it looks right to you.&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: 1.1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Determines whether the hitbox is fixed in place. This should most likely be set to false.&amp;quot;&amp;gt;fixed&amp;lt;/abbr&amp;gt;&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;What this pokémon&#039;s friendship stat starts at when caught.&amp;quot;&amp;gt;baseFriendship&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Most Pokémon have this value set to 50&amp;quot;&amp;gt;50&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How many effort values this pokémon gives upon being defeated.&amp;quot;&amp;gt;evYield&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;hp&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;attack&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;defence&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;special_attack&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;special_defence&amp;lt;/abbr&amp;gt;&amp;quot;: 0,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Defeating this Pokémon will grant the following amount of effort values in this stat.&amp;quot;&amp;gt;speed&amp;lt;/abbr&amp;gt;&amp;quot;: 1&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon&#039;s height measured in decimeters&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: 6,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The Pokémon&#039;s weight measured in hectograms&amp;quot;&amp;gt;weight&amp;lt;/abbr&amp;gt;&amp;quot;: 99,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Aspects are what allows a Pokémon to change its visual aspects for things like regional forms. Since this is for Vulpix&#039;s normal form, you&#039;ll want to leave this blank. You can read about it in this page&#039;s section on forms.&amp;quot;&amp;gt;aspects&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;The normal form for Vulpix will receive no aspects so this is left blank. This can be considered a &#039;default&#039; vulpix and it will use &#039;default&#039; assets for its models and textures.&amp;quot;&amp;gt;[]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;cannotDynamax&amp;quot;: false&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Tutorials/Creating_A_Model&amp;diff=4893</id>
		<title>Tutorials/Creating A Model</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Tutorials/Creating_A_Model&amp;diff=4893"/>
		<updated>2024-07-19T08:48:37Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: I oopsie daisied once more&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
&#039;&#039;&#039;This is not a guide to Blockbench.&#039;&#039;&#039; This &#039;&#039;&#039;extensive&#039;&#039;&#039; tutorial will guide you in the creation of a compatible Cobblemon model. Cobblemon models have certain requirements in order to work in Minecraft. There are several mistakes you might make when creating a model which may result in you having to start all over. This tutorial was created in collaboration with Cobblemon community members who have made these fatal mistakes. Some experience with Blockbench is recommended, but &#039;&#039;&#039;never required.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Like 80% of the work for making a Pokémon is done through Blockbench. The rest are some files to assign the stuff you make into the game.&amp;quot; -FrankTheFarmer&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Get access to Blockbench ===&lt;br /&gt;
Blockbench is a free 3D Modeling program capable of doing everything you need to make a Cobblemon model. You can create a model, paint it, and animate it all at the same time using Blockbench. Watching some Blockbench tutorials before getting started is recommended.&lt;br /&gt;
&lt;br /&gt;
# Open your browser and go to https://www.blockbench.net&lt;br /&gt;
# &amp;lt;code&amp;gt;DOWNLOAD&amp;lt;/code&amp;gt; the app &#039;&#039;&#039;or&#039;&#039;&#039; click on &amp;lt;code&amp;gt;OPEN WEB APP&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Blockbench can also be used on mobile devices!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disclaimer&#039;&#039;&#039;: This guide is tailored towards the Blockbench app on PC.&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Create the model file ===&lt;br /&gt;
You will be creating the project file in Blockbench. Although this step seems simple, if you choose the wrong model type or UV mode then it will not work with Cobblemon&#039;s custom Pokémon system. &lt;br /&gt;
&lt;br /&gt;
# Open up Blockbench &lt;br /&gt;
# Click on File &amp;gt; New &amp;gt; Bedrock Entity&lt;br /&gt;
# &#039;&#039;&#039;In lowercase only&#039;&#039;&#039;, type the name of your custom Pokémon in both &amp;lt;code&amp;gt;File Name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Model Identifier&amp;lt;/code&amp;gt;&lt;br /&gt;
# Make sure Default UV Mode is set to &amp;lt;code&amp;gt;Box UV&amp;lt;/code&amp;gt;&lt;br /&gt;
# Leave &amp;lt;code&amp;gt;Texture Size&amp;lt;/code&amp;gt; alone&lt;br /&gt;
# Click &amp;lt;code&amp;gt;Confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have created the foundation of your model file!&lt;br /&gt;
&lt;br /&gt;
Despite being for the Java version of Minecraft, Cobblemon uses Bedrock entities to allow for flexible animations. &lt;br /&gt;
&lt;br /&gt;
=== Step 3: Creating cubes the right way ===&lt;br /&gt;
There are many ways to create a Pokémon model. There is no “right way” to make a cube to build your design; however, &#039;&#039;&#039;there are several things that can break your model involving these cubes.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Before you get started, you should know that there are several things you should &#039;&#039;&#039;never&#039;&#039;&#039; do when creating cubes. As you create your model, keep the following tips in mind:&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; use capital letters when naming your cubes or groups. Minecraft might crash trying to read them. &#039;&#039;&#039;Always stick with lowercase letters when naming things!&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; use decimals in &amp;lt;code&amp;gt;Size&amp;lt;/code&amp;gt; values! Minecraft can&#039;t handle &amp;quot;2.5&amp;quot; pixels properly. &amp;lt;code&amp;gt;Position&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Inflate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Pivot Point&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Rotation&amp;lt;/code&amp;gt; values can use decimals without issues.&lt;br /&gt;
** These decimal values will get rounded up or down in game and break the geometry.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; change the UV Mode of the cube. They should all be “Box UV” by default, but if just one cube is changed to Per-face UV, the whole resource pack will refuse to load. &lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; forget to save! It can take hours or days to make your model. Save often!&lt;br /&gt;
* Make sure your model is facing &amp;lt;code&amp;gt;North&amp;lt;/code&amp;gt;! &#039;&#039;&#039;It should be facing towards the N on the floor.&#039;&#039;&#039; It may walk backwards or sideways in game if not facing North. &lt;br /&gt;
* Your model does not always need to be on a 1 to 1 scale. It can be sized down in game to affect texture details.&lt;br /&gt;
&lt;br /&gt;
With that in mind, you can start creating cubes in Blockbench!&lt;br /&gt;
# Create a cube by clicking the &amp;lt;code&amp;gt;Add Cube&amp;lt;/code&amp;gt; button under &amp;quot;Outliner&amp;quot; or press Ctrl + N&lt;br /&gt;
# Change the elements of this cube as needed&lt;br /&gt;
# Repeat these steps when more cubes are needed to build your model&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can change one of the size values to 0 to create a 2D plane. These are usually called &amp;lt;code&amp;gt;panes&amp;lt;/code&amp;gt; and can be used to create flat textures for certain situations. Remember to paint the back side of these panes!&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Arrange your cubes into &amp;quot;bones&amp;quot; ===&lt;br /&gt;
As you create the cubes for your model, you will want group them into folders. These groups of cubes are called &amp;lt;code&amp;gt;bones&amp;lt;/code&amp;gt;. Only bones can be selected in the &amp;lt;code&amp;gt;Animate&amp;lt;/code&amp;gt; tab. Bones can even go inside of other bones. You are essentially building a skeleton. Sort these bones out to make animating the model easier later on. &lt;br /&gt;
[[File:Example_of_Arm.png|thumb|350px|caption|Sceptile&#039;s arm bone structure.]]&lt;br /&gt;
# Decide which cubes should be grouped together as a &amp;lt;code&amp;gt;bone&amp;lt;/code&amp;gt;.&amp;lt;/br&amp;gt;example: grouping several cubes together to make a &amp;quot;foot&amp;quot; bone. Then grouping other cubes to make a &amp;quot;leg&amp;quot; bone.&lt;br /&gt;
# Create a group by clicking the &amp;lt;code&amp;gt;Add Group&amp;lt;/code&amp;gt; button under &amp;quot;Outliner&amp;quot; or press Ctrl + G&lt;br /&gt;
# Name this new bone. It is recommended to use names of body parts like arm, arm 2, hand, etc.&lt;br /&gt;
# Click and drag associated cubes into this new bone folder.&lt;br /&gt;
# Assign an appropriate pivot point to this new bone. This controls the location it will rotate from. &lt;br /&gt;
# Repeat these steps when more bones are needed for animation&lt;br /&gt;
&lt;br /&gt;
Bones can use the same properties under the &amp;quot;Element&amp;quot; section. How you use these properties with bones is up to you. You can reference official models that have a similar body type to your custom Pokémon.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Arranging your bones the right way ===&lt;br /&gt;
There are many ways to create a Pokémon model. Unfortunately, there is a &amp;quot;right way&amp;quot; to arrange your bones so it won&#039;t break something in game; however, &#039;&#039;&#039;this will never restrict your creative freedom!&#039;&#039;&#039; There are only 2 &amp;quot;bones&amp;quot; required to make your model functional with Cobblemon and it shouldn&#039;t interfere with your design. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You may want to come back to these steps after creating all of the cubes necessary to make your model complete&#039;&#039;&#039;&lt;br /&gt;
[[File:CharmanderAndItsBones.png|thumb|350px|caption|Charmander with its &amp;quot;root folder&amp;quot; and &amp;quot;head&amp;quot; bone.]]&lt;br /&gt;
# Create a new bone group and name this folder after your custom Pokémon&lt;br /&gt;
# Drag all bones and cubes into this new folder until it holds everything.&lt;br /&gt;
#*This folder that holds everything is known as the &amp;lt;code&amp;gt;root folder&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ensure the XYZ Pivot Point values of the root folder are all at 0.&lt;br /&gt;
#* This stops the model from sinking into the ground in game. &lt;br /&gt;
# Create or pick the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; bone for your Pokémon. &lt;br /&gt;
#*This will be the bone that rotates when it uses the &amp;quot;look&amp;quot; animation.&lt;br /&gt;
#* Sometimes a Pokémon wont have a traditional head like Spheal for example. You&#039;ll have to get creative with which bone shall be the head bone. &lt;br /&gt;
# Ensure this head bone is named &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
#* You mostly name it &amp;quot;head&amp;quot; for simplicity with the &amp;lt;code&amp;gt;poser file&amp;lt;/code&amp;gt;.&lt;br /&gt;
#* If your Pokémon is shaped differently, then just remember to use the name of the bone that works best in its poser file.&lt;br /&gt;
&lt;br /&gt;
The root folder is crucial for making the in-game model&#039;s position look exactly the way it does in Blockbench. If the Pivot values are not 0, then it will shift in some direction. &lt;br /&gt;
&lt;br /&gt;
Having a head bone allows the Pokémon to use the look animation without issues. In the past, many creators have unknowingly assigned the head bone as &amp;quot;head&amp;quot; in their poser files despite not having an actual bone with that name in their model. &#039;&#039;&#039;If the model did not have this matching &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; bone, the game would crash!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
=== Step 6: Create your textures ===&lt;br /&gt;
This step will only help you with the creation of the files. Any artistic help will have to be sourced from somewhere else. It is recommended to watch some tutorials or ask for help in the Cobblemon discord. &lt;br /&gt;
[[File:PaintingACharmander.png|thumb|450px|caption|Charmander getting painted in Blockbench.]]&lt;br /&gt;
# Click on &amp;quot;Create Texture&amp;quot; or press Ctrl+Shift+T.&lt;br /&gt;
# Name the texture after your Pokémon.&lt;br /&gt;
# Ensure Pixel Density is set to &amp;lt;code&amp;gt;16x&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Other densities may break textures. &lt;br /&gt;
#* The model can later be sized up or down to affect details.&lt;br /&gt;
# Click confirm. The default settings are usually fine. &lt;br /&gt;
# Navigate to the &amp;lt;code&amp;gt;Paint&amp;lt;/code&amp;gt; tab in the top-right corner of Blockbench&lt;br /&gt;
# Paint the model until satisfied.&lt;br /&gt;
# Click the Save icon on your texture, or press Ctrl+S&lt;br /&gt;
# Make sure the PNG is called &amp;lt;code&amp;gt;&amp;lt;pokemon&amp;gt;.png&amp;lt;/code&amp;gt;&lt;br /&gt;
# Repeat these steps for the shiny texture. (optional)&lt;br /&gt;
&lt;br /&gt;
It is recommended that you save these PNGs in a folder you can easily access later. &lt;br /&gt;
&lt;br /&gt;
=== Step 7: Animate your Pokémon ===&lt;br /&gt;
Again, this step will only help you with the creation of the files. Animations are not required to make your Pokémon work in game. This step may be skipped.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remember that animations can only select bones. And if you change the bone names during or after this process, then you need to update your animations!&#039;&#039;&#039;&lt;br /&gt;
# Navigate to the &amp;lt;code&amp;gt;Animate&amp;lt;/code&amp;gt; tab in the top-right corner of Blockbench&lt;br /&gt;
# Under the &amp;quot;ANIMATIONS&amp;quot; section, click the &amp;lt;code&amp;gt;Add Animation&amp;lt;/code&amp;gt; button.&lt;br /&gt;
# Name your animation &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;animation type&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#* There is a list of animation type examples below&lt;br /&gt;
# Select a desired loop mode. This can be changed later.&lt;br /&gt;
# Click &amp;lt;code&amp;gt;Confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
# Animate your Pokémon until satisfied. &lt;br /&gt;
# Repeat the previous steps to create new animations.&lt;br /&gt;
# Save your animations as a group. Click on the top-most save icon.&lt;br /&gt;
# Name this animation JSON &amp;lt;code&amp;gt;&amp;lt;pokemon&amp;gt;.animation.json&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cobblemon has a limited selection of Pose types that animations can use in game. The Quirk animation system(Future link) can expand this. You should at least create some core animations like idles, walks, and faints. You can name your animations using the following naming scheme. &lt;br /&gt;
&lt;br /&gt;
Current list of Poses and animations you should make for them:&lt;br /&gt;
* &amp;quot;STAND&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
** This pose type is also used for battle-idles - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;WALK&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;HOVER&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;FLY&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;FLOAT&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;SWIM&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;SLEEP&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;SHOULDER_LEFT&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;SHOULDER_RIGHT&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;faint&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;cry&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 8: Export Bedrock Geometry ===&lt;br /&gt;
By now, you should already have your textures and animations saved somewhere. All that&#039;s left is to export your model file. Afterwards, everything you have made should be ready to use in resource packs!&lt;br /&gt;
&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Export Bedrock Geometry&lt;br /&gt;
# Name this file &amp;lt;code&amp;gt;&amp;lt;pokemon&amp;gt;.geo.json&amp;lt;/code&amp;gt;&lt;br /&gt;
# Save it somewhere easily accessible&lt;br /&gt;
&lt;br /&gt;
This step is done last in case any edits needed to be made to the model. &lt;br /&gt;
&lt;br /&gt;
Congratulations! You should now have a model, textures, and animations, which is most of the work for creating a custom Pokémon. Provided you followed this guide, your model should not be causing any issues when put in game.&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Fossils_File&amp;diff=4887</id>
		<title>Fossils File</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Fossils_File&amp;diff=4887"/>
		<updated>2024-07-16T05:23:36Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: OOpsie daisy formatted this json wrong. I was in the neighborhood&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The JSONs in the &amp;lt;code&amp;gt;fossils&amp;lt;/code&amp;gt; folder control the resulting Pokémon from the &amp;lt;code&amp;gt;fossil machine&amp;lt;/code&amp;gt;. These files specify what items are considered a fossil and what Pokémon should be created if these fossils are placed into the machine. They are short files where you simply select any Pokémon and any item in the game.&lt;br /&gt;
&lt;br /&gt;
== File And Folder Format ==&lt;br /&gt;
Below is an example of how you would arrange a &amp;lt;code&amp;gt;fossil.json&amp;lt;/code&amp;gt; into a datapack:&lt;br /&gt;
&lt;br /&gt;
==== Folder Structure ====&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
**data&lt;br /&gt;
***cobblemon&lt;br /&gt;
****fossils&lt;br /&gt;
*****&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Fossil Breakdown ==&lt;br /&gt;
The fossil files are able to select any loaded Pokémon [[species]] to come out of the fossil machine. The &amp;lt;code&amp;gt;&amp;quot;result&amp;quot;&amp;lt;/code&amp;gt; line functions like the &amp;lt;code&amp;gt;/pokegive&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/pokespawn&amp;lt;/code&amp;gt; commands, so you can include other data like level or regional forms. You can select up to 3 items you wish to serve as the &amp;quot;fossils.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/br&amp;gt;Here is a breakdown of the &amp;lt;code&amp;gt;arctozolt&amp;lt;/code&amp;gt; fossil file:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will specify what Pokémon will be generated from the machine and any extra data to apply to that Pokémon.&amp;quot;&amp;gt;result&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, Arctozolt will be created if all the following items are placed into the machine. Because there is no other data specified, it will be a normal level 1 Arctozolt.&amp;quot;&amp;gt;arctozolt&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list items to be used as fossils for the machine.&amp;quot;&amp;gt;fossils&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The item ID for the fossilized dino&amp;quot;&amp;gt;cobblemon:fossilized_dino&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The item ID for the fossilized bird&amp;quot;&amp;gt;cobblemon:fossilized_bird&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt; Here is some extra info about fossil files:&lt;br /&gt;
* If your &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; pokemon doesn&#039;t exist or includes a typo, then the species will be chose at random from &#039;&#039;&#039;all loaded species&#039;&#039;&#039;.&lt;br /&gt;
* Since the &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; functions like the commands that generate Pokémon, you can generate them as shiny or with special abilities.&lt;br /&gt;
* The &amp;lt;code&amp;gt;fossils&amp;lt;/code&amp;gt; don&#039;t need to come out of the suspicious sand or gravel blocks. You can use any item from the game.&lt;br /&gt;
* The &amp;lt;code&amp;gt;fossils&amp;lt;/code&amp;gt; list doesn&#039;t support NBT data.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Fossil Examples ==&lt;br /&gt;
Here are some fossil files you can use as a template to generate your own Pokémon.&lt;br /&gt;
&lt;br /&gt;
* Cranidos&#039; fossil file:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;: &amp;quot;cranidos&amp;quot;,&lt;br /&gt;
  &amp;quot;fossils&amp;quot;: [&lt;br /&gt;
    &amp;quot;cobblemon:skull_fossil&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* A custom Porygon file that will generate as a level 10 shiny:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;porygon shiny=yes level=10&amp;quot;,&lt;br /&gt;
    &amp;quot;fossils&amp;quot;: [&lt;br /&gt;
        &amp;quot;cobblemon:upgrade&amp;quot;,&lt;br /&gt;
        &amp;quot;cobblemon:dubious_disc&amp;quot;,&lt;br /&gt;
        &amp;quot;cobblemon:rare_candy&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Tutorials/Creating_A_Custom_Pokemon&amp;diff=4780</id>
		<title>Tutorials/Creating A Custom Pokemon</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Tutorials/Creating_A_Custom_Pokemon&amp;diff=4780"/>
		<updated>2024-06-23T06:50:42Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: SHOW FILE EXTENSIONS OR ELSE&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
This beginner friendly step-by-step guide will walk you through adding custom Pokémon through resource and data packs. Cobblemon addons have certain requirements in order to work in Minecraft. There are several mistakes you can make along the way that can cause the game to crash. This tutorial was created in collaboration with Cobblemon community members who have made these mistakes.&lt;br /&gt;
&lt;br /&gt;
Knowledge of coding and resource packs is not necessary! In this tutorial, you will mostly be replacing data in existing file templates and building a custom Pokémon out of cubes. Experience with Blockbench is recommended, but never required! If at any point your addon is not working, you can look for help in the Cobblemon discord server.&lt;br /&gt;
&lt;br /&gt;
== Overview ==&lt;br /&gt;
This guide will teach you:&lt;br /&gt;
* How to format your models and animations&lt;br /&gt;
* Where to place your files&lt;br /&gt;
* How to configure stats for your Pokémon&lt;br /&gt;
* How to configure evolutions for your Pokémon&lt;br /&gt;
* How to configure spawning for your Pokémon&lt;br /&gt;
&lt;br /&gt;
What you will be creating are two things together; a resource pack and a data pack.&lt;br /&gt;
Resource packs primarily operate within the assets folder, while data packs operate within the data folder.&lt;br /&gt;
&lt;br /&gt;
The reason we need to make two different things is that the data pack handles all the information (stuff a server needs), and the resource pack handles all the assets like models, textures, and more (stuff the client needs).&lt;br /&gt;
&lt;br /&gt;
In this guide we will be creating both as a single pack.&lt;br /&gt;
&lt;br /&gt;
As a brief summary:&lt;br /&gt;
* &amp;lt;code&amp;gt;Data packs&amp;lt;/code&amp;gt; as a stand-alone are useful for servers, as servers have no need for assets&lt;br /&gt;
* &amp;lt;code&amp;gt;Resource packs&amp;lt;/code&amp;gt; are useful for players playing on servers that already have the data&lt;br /&gt;
* A single pack with data pack and resource pack files together are useful to players who are playing single player, and need both the data and the assets. These combined data and resource files are often called &amp;lt;code&amp;gt;Addons&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
== Recommended Tools ==&lt;br /&gt;
While creating an addon can be done with a browser and some default PC tools, it&#039;s highly recommended that you download some of the following software. They can be very helpful if you want to make more than one custom Pokémon. &lt;br /&gt;
* &#039;&#039;&#039;Blockbench Desktop App&#039;&#039;&#039; - It will make accessing assets easier&lt;br /&gt;
* &#039;&#039;&#039;A Text Editor&#039;&#039;&#039; - They can be helpful for editing multiple files at once&lt;br /&gt;
** Recommendations:&lt;br /&gt;
**# Visual Studio Code&lt;br /&gt;
**# Notepad++&lt;br /&gt;
* &#039;&#039;&#039;Zip File Software&#039;&#039;&#039; - They can help you zip up your addon to be shared&lt;br /&gt;
** Recommendations:&lt;br /&gt;
**# 7zip&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cobblemon addons use a lot of &amp;lt;code&amp;gt;json&amp;lt;/code&amp;gt; files. These are human-readable sets of data for Minecraft to read. Here are some JSON terms to help you understand these files.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;JSON terminology&#039;&#039;&#039;&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;key&amp;quot;: &amp;quot;value&amp;quot;&amp;lt;/code&amp;gt; - Property, aka &amp;quot;key-value pair&amp;quot;. &amp;lt;code&amp;gt;key&amp;lt;/code&amp;gt; must have quotes around it in JSON. &amp;lt;code&amp;gt;value&amp;lt;/code&amp;gt; can be any of the following:&lt;br /&gt;
* &amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt; - Object. contains properties, as above.&lt;br /&gt;
* &amp;lt;code&amp;gt;[]&amp;lt;/code&amp;gt; - Array. Is an ordered list of &amp;quot;entries&amp;quot; of any of the other data types.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;abc&amp;quot;&amp;lt;/code&amp;gt; - String. Quotes around any set of characters. Cannot have line returns in the middle of them.&lt;br /&gt;
* &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Number. Doesn&#039;t have quotes. Some values can be decimal friendly. &lt;br /&gt;
* &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; - Boolean. Doesn&#039;t have quotes. One of possibly either `true` or `false`&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;JSON quirks&#039;&#039;&#039;&lt;br /&gt;
* Must have commas between properties.&lt;br /&gt;
* Cannot have commas after properties if there&#039;s not another property.&lt;br /&gt;
** You can&#039;t have any commas before any sort of closing bracket.&lt;br /&gt;
&lt;br /&gt;
== Creating a Custom Pokémon ==&lt;br /&gt;
=== Part 1: Arrange the folders for this addon ===&lt;br /&gt;
Due to some files sharing the same names later in this guide, you will be creating the folder structure and &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; now. This is to prevent confusion going forward. &lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Ensure that it doesn&#039;t end in other file extensions like .txt. You may need to search &amp;quot;how to show file extensions&amp;quot; for whatever operating system you have.&lt;br /&gt;
#* This file tells Minecraft &amp;quot;this is a resourcepack/datapack&amp;quot;&lt;br /&gt;
# Open the file and insert the following data:&lt;br /&gt;
#* Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Minecraft know that it is a datapack&amp;quot;&amp;gt;pack&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list the pack format number for a specific version of Minecraft&amp;quot;&amp;gt;pack_format&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;As of 1.20.1, the current resourcepack format number is 15. But it will still load if this number isn&#039;t correct!&amp;quot;&amp;gt;15&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will write a short description of your datapack&amp;quot;&amp;gt;description&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Your short datapack description&amp;quot;&amp;gt;Example description&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
# &amp;lt;li value=3&amp;gt; Save the file and put it aside for now.&lt;br /&gt;
# Create a series of folders arranged like the following example:&lt;br /&gt;
==== Folder Structure ====&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
**assets&lt;br /&gt;
***cobblemon&lt;br /&gt;
****bedrock&lt;br /&gt;
*****pokemon&lt;br /&gt;
******animations&lt;br /&gt;
*******&amp;lt;folder named after your pokemon&amp;gt;&lt;br /&gt;
******models&lt;br /&gt;
*******&amp;lt;folder named after your pokemon&amp;gt;&lt;br /&gt;
******posers&lt;br /&gt;
******resolvers&lt;br /&gt;
*******&amp;lt;folder named after your pokemon&amp;gt;&lt;br /&gt;
****lang&lt;br /&gt;
****textures&lt;br /&gt;
*****pokemon&lt;br /&gt;
******&amp;lt;folder named after your pokemon&amp;gt;&lt;br /&gt;
**data&lt;br /&gt;
***cobblemon&lt;br /&gt;
****spawn_pool_world&lt;br /&gt;
****species&lt;br /&gt;
*****custom&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
After this folder tree for your addon is made, you can simply drop the files into the associated folders as you create them. &lt;br /&gt;
Remember that the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; is a file, not a folder to add. It must be one folder deep in order for Minecraft to recognize this pack as a resource pack or data pack when in the appropriate game folders.&lt;br /&gt;
&lt;br /&gt;
=== Part 2: Create your Pokémon&#039;s assets in Blockbench ===&lt;br /&gt;
&#039;&#039;&#039;This is not a guide to Blockbench.&#039;&#039;&#039; This &#039;&#039;&#039;extensive&#039;&#039;&#039; part of the tutorial will guide you in the creation of a compatible Cobblemon model. Cobblemon models have certain requirements in order to work in Minecraft. There are several mistakes you might make when creating a model which may result in you having to start all over.&lt;br /&gt;
&lt;br /&gt;
This part of the guide is a slightly watered down version of the [[Tutorials/Creating A Model|model creation tutorial]] to keep things more beginner friendly.&lt;br /&gt;
&lt;br /&gt;
==== Step 1: Get access to Blockbench ====&lt;br /&gt;
Blockbench is a free 3D Modeling program capable of doing everything you need to make a Cobblemon model. You can create a model, paint it, and animate it all at the same time using Blockbench. Watching some Blockbench tutorials before getting started is recommended.&lt;br /&gt;
&lt;br /&gt;
# Open your browser and go to https://www.blockbench.net&lt;br /&gt;
# &amp;lt;code&amp;gt;DOWNLOAD&amp;lt;/code&amp;gt; the app &#039;&#039;&#039;or&#039;&#039;&#039; click on &amp;lt;code&amp;gt;OPEN WEB APP&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Blockbench can also be used on mobile devices!&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Disclaimer&#039;&#039;&#039;: This guide is tailored towards the Blockbench app on PC.&lt;br /&gt;
&lt;br /&gt;
==== Step 2: Create the model file ====&lt;br /&gt;
You will be creating the project file in Blockbench. Although this step seems simple, if you choose the wrong model type or UV mode then it will not work with Cobblemon&#039;s custom Pokémon system. &lt;br /&gt;
&lt;br /&gt;
# Open up Blockbench &lt;br /&gt;
# Click on File &amp;gt; New &amp;gt; Bedrock Entity&lt;br /&gt;
# &#039;&#039;&#039;In lowercase only&#039;&#039;&#039;, type the name of your custom Pokémon in both &amp;lt;code&amp;gt;File Name&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Model Identifier&amp;lt;/code&amp;gt;&lt;br /&gt;
# Make sure Default UV Mode is set to &amp;lt;code&amp;gt;Box UV&amp;lt;/code&amp;gt;&lt;br /&gt;
# Leave &amp;lt;code&amp;gt;Texture Size&amp;lt;/code&amp;gt; alone&lt;br /&gt;
# Click &amp;lt;code&amp;gt;Confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have created the foundation of your model file!&lt;br /&gt;
&lt;br /&gt;
Despite being for the Java version of Minecraft, Cobblemon uses Bedrock entities to allow for flexible animations. &lt;br /&gt;
&lt;br /&gt;
==== Step 3: Creating cubes the right way ====&lt;br /&gt;
There are many ways to create a Pokémon model. There is no “right way” to make a cube to build your design; however, &#039;&#039;&#039;there are several things that can break your model involving these cubes.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Before you get started, you should know that there are several things you should &#039;&#039;&#039;never&#039;&#039;&#039; do when creating cubes. As you create your model, keep the following tips in mind:&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; use capital letters when naming your cubes or groups. Minecraft might crash trying to read them.&lt;br /&gt;
** &#039;&#039;&#039;Always stick with lowercase letters when naming things!&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; use decimals in &amp;lt;code&amp;gt;Size&amp;lt;/code&amp;gt; values! Minecraft can&#039;t handle &amp;quot;2.5&amp;quot; pixels properly. &lt;br /&gt;
** These decimal values will get rounded up or down in game and break the geometry. &lt;br /&gt;
** &amp;lt;code&amp;gt;Position&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Inflate&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;Pivot Point&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;Rotation&amp;lt;/code&amp;gt; values can use decimals without issues.&lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; change the UV Mode of the cube. They should all be “Box UV” by default. &lt;br /&gt;
** If just one cube is changed to Per-face UV, the whole resource pack will refuse to load. &lt;br /&gt;
* &#039;&#039;&#039;Don&#039;t&#039;&#039;&#039; forget to save! It can take hours or days to make your model. Save often!&lt;br /&gt;
* Make sure your model is facing &amp;lt;code&amp;gt;North&amp;lt;/code&amp;gt;! &#039;&#039;&#039;It should be facing towards the N on the floor.&#039;&#039;&#039; &lt;br /&gt;
** It may walk backwards or sideways in game if not facing North. &lt;br /&gt;
* Your model does not always need to be on a 1 to 1 scale. It can be sized down in game to affect texture details.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
With that in mind, you can start creating cubes in Blockbench!&lt;br /&gt;
# Create a cube by clicking the &amp;lt;code&amp;gt;Add Cube&amp;lt;/code&amp;gt; button under &amp;quot;Outliner&amp;quot; or press Ctrl + N&lt;br /&gt;
# Change the elements of this cube as needed&lt;br /&gt;
# Repeat these steps when more cubes are needed to build your model&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Tip&#039;&#039;&#039;: You can change one of the size values to 0 to create a 2D plane. These are usually called &amp;lt;code&amp;gt;panes&amp;lt;/code&amp;gt; and can be used to create flat textures for certain situations. Remember to paint the back side of these panes!&lt;br /&gt;
&lt;br /&gt;
==== Step 4: Arrange your cubes into &amp;quot;bones&amp;quot; ====&lt;br /&gt;
As you create the cubes for your model, you will want group them into folders. These groups of cubes are called &amp;lt;code&amp;gt;bones&amp;lt;/code&amp;gt;. Only bones can be selected in the &amp;lt;code&amp;gt;Animate&amp;lt;/code&amp;gt; tab. Bones can even go inside of other bones. You are essentially building a skeleton. Sort these bones out to make animating the model easier later on. &lt;br /&gt;
[[File:Example_of_Arm.png|thumb|350px|caption|Sceptile&#039;s arm bone structure.]]&lt;br /&gt;
# Decide which cubes should be grouped together as a &amp;lt;code&amp;gt;bone&amp;lt;/code&amp;gt;.&amp;lt;/br&amp;gt;example: grouping several cubes together to make a &amp;quot;foot&amp;quot; bone. Then grouping other cubes to make a &amp;quot;leg&amp;quot; bone.&lt;br /&gt;
# Create a group by clicking the &amp;lt;code&amp;gt;Add Group&amp;lt;/code&amp;gt; button under &amp;quot;Outliner&amp;quot; or press Ctrl + G&lt;br /&gt;
# Name this new bone. It is recommended to use names of body parts like arm, arm 2, hand, etc.&lt;br /&gt;
# Click and drag associated cubes into this new bone folder.&lt;br /&gt;
# Assign an appropriate pivot point to this new bone. This controls the location it will rotate from. &lt;br /&gt;
# Repeat these steps when more bones are needed for animation&lt;br /&gt;
&lt;br /&gt;
Bones can use the same properties under the &amp;quot;Element&amp;quot; section. How you use these properties with bones is up to you. You can reference official models that have a similar body type to your custom Pokémon.&lt;br /&gt;
&lt;br /&gt;
==== Step 5: Arranging your bones the right way ====&lt;br /&gt;
There are many ways to create a Pokémon model. Unfortunately, there is a &amp;quot;right way&amp;quot; to arrange your bones so it won&#039;t break something in game; however, &#039;&#039;&#039;this will never restrict your creative freedom!&#039;&#039;&#039; There are only 2 &amp;quot;bones&amp;quot; required to make your model functional with Cobblemon and it shouldn&#039;t interfere with your design. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;You may want to come back to these steps after creating all of the cubes necessary to make your model complete&#039;&#039;&#039;&lt;br /&gt;
[[File:CharmanderAndItsBones.png|thumb|350px|caption|Charmander with its &amp;quot;root folder&amp;quot; and &amp;quot;head&amp;quot; bone.]]&lt;br /&gt;
# Create a new bone group and name this folder after your custom Pokémon&lt;br /&gt;
# Drag all bones and cubes into this new folder until it holds everything.&lt;br /&gt;
#*This folder that holds everything is known as the &amp;lt;code&amp;gt;root folder&amp;lt;/code&amp;gt;&lt;br /&gt;
# Ensure the XYZ Pivot Point values of the root folder are all at 0.&lt;br /&gt;
#* This stops the model from sinking into the ground in game. &lt;br /&gt;
# Create or pick the &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; bone for your Pokémon. &lt;br /&gt;
#*This will be the bone that rotates when it uses the &amp;quot;look&amp;quot; animation.&lt;br /&gt;
#* Sometimes a Pokémon wont have a traditional head like Spheal for example. You&#039;ll have to get creative with which bone shall be the head bone. &lt;br /&gt;
# Ensure this head bone is named &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
#* You mostly name it &amp;quot;head&amp;quot; for simplicity with the &amp;lt;code&amp;gt;poser file&amp;lt;/code&amp;gt;.&lt;br /&gt;
#* If your Pokémon is shaped differently, then just remember to use the name of the bone that works best in its poser file.&lt;br /&gt;
&lt;br /&gt;
The root folder is crucial for making the in-game model&#039;s position look exactly the way it does in Blockbench. If the Pivot values are not 0, then it will shift in some direction. &lt;br /&gt;
&lt;br /&gt;
Having a head bone allows the Pokémon to use the look animation without issues. In the past, many creators have unknowingly assigned the head bone as &amp;quot;head&amp;quot; in their poser files despite not having an actual bone with that name in their model. &#039;&#039;&#039;If the model did not have this matching &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt; bone, the game would crash!&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
==== Step 6: Create your textures ====&lt;br /&gt;
This step will only help you with the creation of the files. Any artistic help will have to be sourced from somewhere else. It is recommended to watch some tutorials or ask for help in the Cobblemon discord server. &lt;br /&gt;
[[File:PaintingACharmander.png|thumb|450px|caption|Charmander getting painted in Blockbench.]]&lt;br /&gt;
# Click on &amp;quot;Create Texture&amp;quot; or press Ctrl+Shift+T.&lt;br /&gt;
# Name the texture after your Pokémon.&lt;br /&gt;
# Ensure Pixel Density is set to &amp;lt;code&amp;gt;16x&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Other densities may break textures. &lt;br /&gt;
#* The model can later be sized up or down to affect details.&lt;br /&gt;
# Click confirm. The default settings are usually fine. &lt;br /&gt;
# Navigate to the &amp;lt;code&amp;gt;Paint&amp;lt;/code&amp;gt; tab in the top-right corner of Blockbench&lt;br /&gt;
# Paint the model until satisfied.&lt;br /&gt;
# Click the Save icon on your texture, or press Ctrl+S&lt;br /&gt;
# Make sure the PNG is called &amp;lt;code&amp;gt;&amp;lt;pokemon&amp;gt;.png&amp;lt;/code&amp;gt;&lt;br /&gt;
# Place this PNG in your Pokémon&#039;s &amp;lt;code&amp;gt;texture&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
#* The folder path for this PNG should be like so: &amp;lt;/br&amp;gt;&amp;lt;code&amp;gt; &amp;lt;your_addon&amp;gt;/assets/cobblemon/textures/pokemon/&amp;lt;your_pokemon&amp;gt;/&amp;lt;pokemon&amp;gt;.png &amp;lt;/code&amp;gt;&lt;br /&gt;
# Repeat these steps for the shiny texture. (optional)&lt;br /&gt;
&lt;br /&gt;
==== Step 7: Animate your Pokémon ====&lt;br /&gt;
Again, this step will only help you with the creation of the files. Animations are not required to make your Pokémon work in game. This step may be skipped.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Remember that animations can only select bones. And if you change the bone names during or after this process, then you need to update your animations!&#039;&#039;&#039;&lt;br /&gt;
# Navigate to the &amp;lt;code&amp;gt;Animate&amp;lt;/code&amp;gt; tab in the top-right corner of Blockbench&lt;br /&gt;
# Under the &amp;quot;ANIMATIONS&amp;quot; section, click the &amp;lt;code&amp;gt;Add Animation&amp;lt;/code&amp;gt; button.&lt;br /&gt;
# Name your animation &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.&amp;lt;animation type&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
#* There is a list of animation type examples below&lt;br /&gt;
#* A full list of animation types that the developers make can be found [[Tutorials/Creating_A_Model#Step_7:_Animate_your_Pokémon| here.]]&lt;br /&gt;
# Select a desired loop mode. This can be changed later.&lt;br /&gt;
# Click &amp;lt;code&amp;gt;Confirm&amp;lt;/code&amp;gt;&lt;br /&gt;
# Animate your Pokémon until satisfied. &lt;br /&gt;
# Repeat the previous steps to create new animations.&lt;br /&gt;
# Save your animations as a group. Click on the top-most save icon.&lt;br /&gt;
# Name this animation JSON &amp;lt;code&amp;gt;&amp;lt;pokemon&amp;gt;.animation.json&amp;lt;/code&amp;gt;&lt;br /&gt;
# Place this animation JSON in your Pokémon&#039;s &amp;lt;code&amp;gt;animation&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
#* The folder path for this JSON should be like so: &amp;lt;/br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;your_addon&amp;gt;/assets/cobblemon/bedrock/pokemon/animations/&amp;lt;your_pokemon&amp;gt;/&amp;lt;pokemon&amp;gt;.animation.json&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Cobblemon has a limited selection of Pose types that animations can use in game. You should at least create some core animations like idles, walks, and faints. You can name your animations using the following naming scheme. &lt;br /&gt;
&lt;br /&gt;
Beginner list of Poses and animations you should make for your Pokemon:&lt;br /&gt;
* &amp;quot;STAND&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;WALK&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt;&lt;br /&gt;
* &amp;quot;faint&amp;quot; - &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The full list of usable pose types and the animations that work with them can be found on the full version of the [[Tutorials/Creating_A_Model#Step_7:_Animate_your_Pokémon| model guide.]]&lt;br /&gt;
&lt;br /&gt;
==== Step 8: Export Bedrock Geometry ====&lt;br /&gt;
By now, you should already have your textures and animations saved somewhere. All that&#039;s left is to export your model file. Afterwards, everything you have made should be ready to use in resource packs!&lt;br /&gt;
&lt;br /&gt;
# Click on File &amp;gt; Export &amp;gt; Export Bedrock Geometry&lt;br /&gt;
# Name this file &amp;lt;code&amp;gt;&amp;lt;pokemon&amp;gt;.geo.json&amp;lt;/code&amp;gt;&lt;br /&gt;
# Place this model JSON in your Pokémon&#039;s &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
#* The folder path for this JSON should be like so: &amp;lt;/br&amp;gt;&amp;lt;code&amp;gt;&amp;lt;your_addon&amp;gt;/assets/cobblemon/bedrock/pokemon/models/&amp;lt;your_pokemon&amp;gt;/&amp;lt;pokemon&amp;gt;.geo.json &amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This step is done last in case any edits needed to be made to the model. &lt;br /&gt;
&lt;br /&gt;
Congratulations! You should now have a model, textures, and animations, which is most of the work for creating a custom Pokémon. Provided you followed this guide, your model should not be causing any issues when put in game.&lt;br /&gt;
&lt;br /&gt;
=== Part 3: Create your Pokémon&#039;s Poser file ===&lt;br /&gt;
&amp;lt;code&amp;gt;Posers&amp;lt;/code&amp;gt; are JSON files that create a set of animations for a Pokémon to use. The poser file contains information on when the Pokémon will perform certain animations. You can set your Pokémon to only ever perform one animation if you’d like, or you can give it different animations for just about every action it performs! &lt;br /&gt;
&lt;br /&gt;
You will be creating a poser file for the idle, walk, and faint animation you should have created if following this guide. &#039;&#039;&#039;Later in this guide&#039;&#039;&#039;, you will have to come back and edit some of the &amp;lt;code&amp;gt;portrait&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;profile&amp;lt;/code&amp;gt; values in the file so they look nice in the menus!&lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it after your Pokémon. Include the file extension of &amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;bulbasaur.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Make sure this new file name ends in .json and not any other file extension like .txt. You may need to search &amp;quot;how to show file extensions&amp;quot; for whatever operating system you have.&lt;br /&gt;
# Open this new JSON in your preferred text editor&lt;br /&gt;
# Copy and paste this entire poser example into the JSON&lt;br /&gt;
#* Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Tells the game which bone is the head. In this case, the head bone is simply named head.&amp;quot;&amp;gt;head&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone from your model that will act as the head for the look animation that plays when a Pokémon wants to look in certain directions. Can be any other appropriate bone and not all Pokémon need to do this!&amp;quot;&amp;gt;head&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the portraits on the party menu on the left side of the screen. This will require some trial and error. I advise coming back to this after you’ve implemented your Pokémon. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;quot;: 1&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the portraits on the party menu on the left side of the screen. This will require some trial and error. I advise coming back to this after you’ve implemented your Pokémon. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;quot;: [ 0, 0.5, 0 ]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon often seen in GUI, but most notably the summary UI. Like the previous code block, this section will require some trial and error, and you should come back to edit this later. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;quot;: 1&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon often seen in GUI, but most notably the summary UI. Like the previous code block, this section will require some trial and error, and you should come back to edit this later. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileTranslation&amp;quot;: [ 0, 0.4, 0 ]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the faint animation for this Pokémon. If you have no faint animation, you can delete this line.&amp;quot;&amp;gt;faint&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The animation you are telling it to use when your Pokémon faints. If you have correctly named all your files and animations, this should be as simple as changing &#039;pokemon&#039; to be your Pokémon’s name.&amp;quot;&amp;gt;bedrock(pokemon, faint)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining a list of our poses.&amp;quot;&amp;gt;poses&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;standing&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are again defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called standing&amp;quot;&amp;gt;standing&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;This is transition time between animations. You probably won&#039;t need to mess with this.&amp;gt;transformTicks&amp;quot;: 10&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. STAND - when stationary on the ground&amp;quot;&amp;gt;STAND&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. NONE - when not doing anything at all&amp;quot;&amp;gt;NONE&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. PORTRAIT - when in a portrait like on your party UI&amp;quot;&amp;gt;PORTRAIT&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. PROFILE - when in summary screens&amp;quot;&amp;gt;PROFILE&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Allows the Pokémon to move its head around to observe its surroundings. You can delete this if your Pokémon doesn&#039;t have a head bone, or you just don&#039;t want them looking around.&amp;quot;&amp;gt;look&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;The animation you are telling it to use when your Pokémon is standing, doing nothing, or in the mod&#039;s UI. If you have correctly named all your files and animations, this should be as simple as changing &#039;pokemon&#039; to be your Pokémon’s name.&amp;quot;&amp;gt;bedrock(pokemon, ground_idle)&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;walking&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are again defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called walking&amp;quot;&amp;gt;walking&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;This is transition time between animations. You probably won&#039;t need to mess with this.&amp;gt;transformTicks&amp;quot;: 10&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [ &amp;quot;&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. WALK - when traveling on the ground&amp;quot;&amp;gt;WALK&amp;lt;/abbr&amp;gt;&amp;quot; ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [ &amp;quot;&amp;lt;abbr title=&amp;quot;The animation you are telling it to use when your Pokémon is walking on land. If you have correctly named all your files and animations, this should be as simple as changing &#039;pokemon&#039; to be your Pokémon’s name.&amp;quot;&amp;gt;bedrock(pokemon, ground_walk)&amp;lt;/abbr&amp;gt;&amp;quot; ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
# &amp;lt;li value=4&amp;gt; In the section for &amp;lt;code&amp;gt;&amp;quot;faint&amp;quot;&amp;lt;/code&amp;gt;, change &amp;quot;pokemon&amp;quot; in &amp;lt;code&amp;gt;&amp;quot;bedrock(pokemon, faint)&amp;quot;&amp;lt;/code&amp;gt; to be your Pokémon&#039;s name.&lt;br /&gt;
#* Don&#039;t put the name in quotes.&lt;br /&gt;
# In the section for &amp;lt;code&amp;gt;&amp;quot;standing&amp;quot;&amp;lt;/code&amp;gt;, change &amp;quot;pokemon&amp;quot; in &amp;lt;code&amp;gt;&amp;quot;bedrock(pokemon, ground_idle)&amp;quot;&amp;lt;/code&amp;gt; to be your Pokémon&#039;s name.&lt;br /&gt;
#* Don&#039;t put the name in quotes.&lt;br /&gt;
# In the section for &amp;lt;code&amp;gt;&amp;quot;walking&amp;quot;&amp;lt;/code&amp;gt;, change &amp;quot;pokemon&amp;quot; in &amp;lt;code&amp;gt;&amp;quot;bedrock(pokemon, ground_walk)&amp;quot;&amp;lt;/code&amp;gt; to be your Pokémon&#039;s name.&lt;br /&gt;
#* Don&#039;t put the name in quotes.&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new poser JSON into the &amp;lt;code&amp;gt;posers&amp;lt;/code&amp;gt; folder of your addon. &lt;br /&gt;
&lt;br /&gt;
You just created the poser file! When it&#039;s time to test your addon in game, it should use the animations you created earlier. &lt;br /&gt;
&lt;br /&gt;
=== Part 4: Create your Pokémon&#039;s Resolver file ===&lt;br /&gt;
&amp;lt;code&amp;gt;Resolvers&amp;lt;/code&amp;gt; are JSON files that assign a Pokémon its &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt;. The resolver files control all the things that allow a Pokémon to function visually!&lt;br /&gt;
&lt;br /&gt;
You will be creating the resolver file for your Pokémon. At this part of the guide, you should already have files for model, texture, animation, and poser. Now they just need to be linked to your Pokémon using the resolver file.&lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it &amp;lt;code&amp;gt;&amp;quot;0_&amp;lt;pokemon&amp;gt;_base.json&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;0_treecko_base.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Make sure this new file name ends in .json and not any other file extension like .txt. You may need to search &amp;quot;how to show file extensions&amp;quot; for whatever operating system you have.&lt;br /&gt;
# Open this new JSON in your preferred text editor&lt;br /&gt;
# Copy and paste this entire resolver example into the JSON&lt;br /&gt;
#*Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are saying what Pokémon species will get the following assets&amp;quot;&amp;gt;species&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this example, Treecko will get the following assets. You will want to change &#039;treecko&#039; to be your Pokémon&#039;s name&amp;quot;&amp;gt;cobblemon:treecko&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This is the load order of the forms in this file. Since this file contains the default variants for this Pokémon, load order should be 0. Addons may create more forms later, and they will use a higher number. This is what &#039;0_&#039; and &#039;_base&#039; in the file name represent. &#039;0_&#039; represents the load order, and &#039;_base&#039; represents that these are the default forms.&amp;quot;&amp;gt;order&amp;quot;: 0&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list all of your Pokémon&#039;s visual variations. This is how the shiny version uses the same model but with a different texture.&amp;quot;&amp;gt;variations&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;&#039;Aspects&#039; are traits a Pokémon has. In this section, we are determining what the Pokémon will look like if it has no aspects. This can be considered the &#039;default&#039; assets.&amp;quot;&amp;gt;aspects&amp;quot;: []&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are telling the Pokémon what poser file to use.&amp;quot;&amp;gt;poser&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this example, it will use the treecko poser. You will want to change &#039;treecko&#039; to be your Pokémon&#039;s name&amp;quot;&amp;gt;cobblemon:treecko&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are telling the Pokémon what model file to use.&amp;quot;&amp;gt;model&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this example, it will use the treecko model. You will want to change &#039;treecko&#039; to be your Pokémon&#039;s name&amp;quot;&amp;gt;cobblemon:treecko.geo&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are telling the Pokémon what texture PNG to use.&amp;quot;&amp;gt;texture&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this example, it will use &#039;treecko.png&#039; from the &#039;treecko&#039; folder. You will want to change both instances of &#039;treecko&#039; to be your Pokémon&#039;s name&amp;quot;&amp;gt;cobblemon:textures/pokemon/treecko/treecko.png&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;This can be used to add additional textures on top of the main texture like with emissive textures or Arbok&#039;s chest patterns. This is unfortunately not covered in this guide.&amp;quot;&amp;gt;layers&amp;quot;: []&amp;lt;/abbr&amp;gt;&lt;br /&gt;
    },&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;In this section, we are determining what the Pokémon will look like if it is &#039;shiny&#039;.&amp;quot;&amp;gt;aspects&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are specifying that any shiny Treecko will use the following texture. If you don&#039;t list a model or poser like this example, then it will use the &#039;default&#039; ones that you created above.&amp;quot;&amp;gt;shiny&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are telling the shiny Pokémon what texture PNG to use. The texture will be applied to the default model in this example.&amp;quot;&amp;gt;texture&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this example, it will use &#039;treecko_shiny.png&#039; from the &#039;treecko&#039; folder. You will want to change both instances of &#039;treecko&#039; to be your Pokémon&#039;s name&amp;quot;&amp;gt;cobblemon:textures/pokemon/treecko/treecko_shiny.png&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
# &amp;lt;li value=4&amp;gt; In the section for &amp;lt;code&amp;gt;&amp;quot;species&amp;quot;&amp;lt;/code&amp;gt;, change &amp;quot;treecko&amp;quot; in &amp;lt;code&amp;gt;&amp;quot;cobblemon:treecko&amp;quot;&amp;lt;/code&amp;gt; to be your Pokémon&#039;s name.&lt;br /&gt;
# In the section for &amp;lt;code&amp;gt;&amp;quot;poser&amp;quot;&amp;lt;/code&amp;gt;, change &amp;quot;treecko&amp;quot; in &amp;lt;code&amp;gt;&amp;quot;cobblemon:treecko&amp;quot;&amp;lt;/code&amp;gt; to be your Pokémon&#039;s name.&lt;br /&gt;
# In the section for &amp;lt;code&amp;gt;&amp;quot;model&amp;quot;&amp;lt;/code&amp;gt;, change &amp;quot;treecko&amp;quot; in &amp;lt;code&amp;gt;&amp;quot;cobblemon:treecko.geo&amp;quot;&amp;lt;/code&amp;gt; to be your Pokémon&#039;s name.&lt;br /&gt;
# In the section for &amp;lt;code&amp;gt;&amp;quot;textures&amp;quot;&amp;lt;/code&amp;gt;, change &#039;&#039;&#039;both instances&#039;&#039;&#039; of &amp;quot;treecko&amp;quot; in &amp;lt;code&amp;gt;&amp;quot;cobblemon:textures/pokemon/treecko/treecko.png&amp;quot;&amp;lt;/code&amp;gt; to be your Pokémon&#039;s name.&lt;br /&gt;
# Under the &amp;lt;code&amp;gt;&amp;quot;shiny&amp;quot;&amp;lt;/code&amp;gt; aspect section for &amp;lt;code&amp;gt;&amp;quot;textures&amp;quot;&amp;lt;/code&amp;gt;, change &#039;&#039;&#039;both instances&#039;&#039;&#039; of &amp;quot;treecko&amp;quot; in &amp;lt;code&amp;gt;&amp;quot;cobblemon:textures/pokemon/treecko/treecko_shiny.png&amp;quot;&amp;lt;/code&amp;gt; to be your Pokémon&#039;s name.&lt;br /&gt;
#* Don&#039;t delete the &amp;quot;_shiny&amp;quot; part of the name.&lt;br /&gt;
#* You can remove the shiny variation if you didn&#039;t make any shiny textures. &lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new resolver JSON into your Pokémon&#039;s &amp;lt;code&amp;gt;resolvers&amp;lt;/code&amp;gt; folder of your addon. &lt;br /&gt;
&lt;br /&gt;
You just created your Pokémon&#039;s resolver file. When it&#039;s time to load your addon in game, it should be using the model, textures, and animations you created for it!&lt;br /&gt;
&lt;br /&gt;
=== Part 5: Create your Pokémon&#039;s Species file ===&lt;br /&gt;
Now that we’ve got all the assets in place, we can now create the &amp;lt;code&amp;gt;species&amp;lt;/code&amp;gt; file! The species file contains all the entity data your Pokémon needs to exist. This is done from the data folder within your pack. This section will be extensive, but it will explain some of the basic properties of the &amp;lt;code&amp;gt;species file&amp;lt;/code&amp;gt;. For a more detailed description of the properties in the species file, you can refer to [https://wiki.cobblemon.com/index.php/Species its wiki page]&lt;br /&gt;
&lt;br /&gt;
This part of the guide can be skipped if you are able to create your Pokémon&#039;s &amp;lt;code&amp;gt;species&amp;lt;/code&amp;gt; file through this [https://tmetcalfe89.github.io/cobblemon-fakemon-generator/ Fakemon Generator] made for Cobblemon! It will automatically create a zipped species JSON after you fill out some information for your Pokémon. The Fakemon Generator is very beginner friendly and can prevent you from making typos in the process of making a species file by hand.&lt;br /&gt;
&lt;br /&gt;
==== Creating the Species JSON ====&lt;br /&gt;
This JSON will contain all the necessary data any Pokémon needs. This includes its name, type, abilities, stats, moves, etc.&lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it after your Pokémon. Include the file extension of &amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;bulbasaur.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Make sure this new file name ends in .json and not any other file extension like .txt. You may need to search &amp;quot;how to show file extensions&amp;quot; for whatever operating system you have.&lt;br /&gt;
# Open this new JSON in your preferred text editor&lt;br /&gt;
# Let&#039;s start by adding an opening and a closing curly bracket to the file like so: &lt;br /&gt;
#* In the following sections you will be adding information &#039;&#039;&#039;in between&#039;&#039;&#039; these brackets.&lt;br /&gt;
 {&lt;br /&gt;
 &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Basic Information ====&lt;br /&gt;
Let&#039;s add some basic information about your Pokémon.&lt;br /&gt;
&lt;br /&gt;
# Copy and paste the following data &#039;&#039;&#039;inside the previously created curly brackets.&#039;&#039;&#039;&lt;br /&gt;
#*Hover over the underlined text to see more information.&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not this Pokémon is fully implemented. This determines whether it will show up in /spawnallpokemon or similar commands&amp;quot;&amp;gt;implemented&amp;lt;/abbr&amp;gt;&amp;quot;: true,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The name of the Pokémon species&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this example, the Pokémon will be called Tentaquil!&amp;quot;&amp;gt;tentaquil&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Labels for this Pokémon. These labels can be used for spawning&amp;quot;&amp;gt;labels&amp;lt;/abbr&amp;gt;&amp;quot;: [ &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are labeling your Pokémon as a &#039;custom&#039; Pokémon.&amp;quot;&amp;gt;custom&amp;lt;/abbr&amp;gt;&amp;quot; ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here we point to the Pokédex descriptions for this Pokémon.&amp;quot;&amp;gt;pokedex&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These are lang keys! We will need to define these later in a lang file, which is really easy. We&#039;ll cover this, but just replace &#039;tentaquil&#039; with your own Pokémon&#039;s name for now.&amp;quot;&amp;gt;cobblemon.species.tentaquil.desc1&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These are lang keys! We will need to define these later in a lang file, which is really easy. We&#039;ll cover this, but just replace &#039;tentaquil&#039; with your own Pokémon&#039;s name for now.&amp;quot;&amp;gt;cobblemon.species.tentaquil.desc2&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Height for the Pokédex. The value here is written in decimeters. To convert to meters, divide this value by 10.&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Tentaquil has a height of 11 decimeters, or 1.1 meters!&amp;quot;&amp;gt;11&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Weight for the Pokédex and the amount of damage for moves based on weight. The value here is written in hectograms. To convert to kilograms, divide this value by 10.&amp;quot;&amp;gt;weight&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Tentaquil has a weight of 300 hectograms, or 30 kilograms!&amp;quot;&amp;gt;300&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not this pokemon can ride on the players shoulder.&amp;quot;&amp;gt;shoulderMountable&amp;lt;/abbr&amp;gt;&amp;quot;: false,&lt;br /&gt;
# &amp;lt;li value=2&amp;gt;Change the 3 instances of &amp;quot;tentaquil&amp;quot; to your Pokémon&#039;s name&lt;br /&gt;
# Change the values of &amp;lt;code&amp;gt;&amp;quot;height&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;weight&amp;quot;&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;&amp;quot;shoulderMountable&amp;quot;&amp;lt;/code&amp;gt; if desired. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Stats ====&lt;br /&gt;
Now let&#039;s include the stats. You can refer to the stats of official Pokémon as guidelines if you plan on making the stats more practical and faithful to the official games. You can find the mod&#039;s official &amp;lt;code&amp;gt;species&amp;lt;/code&amp;gt; files on the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/species Gitlab] which are organized by generation.&lt;br /&gt;
&lt;br /&gt;
# Copy and paste the following data &#039;&#039;&#039;in a new line after the previous data.&#039;&#039;&#039;&lt;br /&gt;
#*Hover over the underlined text to see more information.&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The type assigned to your Pokémon.&amp;quot;&amp;gt;primaryType&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this example, the Pokémon will be a poison type. You can change this if you like, but it must be an official type.&amp;quot;&amp;gt;poison&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The second type assigned to your Pokémon. This line is optional.&amp;quot;&amp;gt;secondaryType&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this example, the Pokémon will also be a water type. You can change this if you like, but it must be an official type.&amp;quot;&amp;gt;water&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The base stats of your pokémon. Again, these are up to you.&amp;quot;&amp;gt;baseStats&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The base hp stat of your pokémon.&amp;quot;&amp;gt;hp&amp;lt;/abbr&amp;gt;&amp;quot;: 125,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The base attack stat of your pokémon.&amp;quot;&amp;gt;attack&amp;lt;/abbr&amp;gt;&amp;quot;: 105,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The base defense stat of your pokémon.&amp;quot;&amp;gt;defence&amp;lt;/abbr&amp;gt;&amp;quot;: 95,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The base special attack stat of your pokémon.&amp;quot;&amp;gt;special_attack&amp;lt;/abbr&amp;gt;&amp;quot;: 120,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The base special defense stat of your pokémon.&amp;quot;&amp;gt;special_defence&amp;lt;/abbr&amp;gt;&amp;quot;: 85,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The base speed stat of your pokémon.&amp;quot;&amp;gt;speed&amp;lt;/abbr&amp;gt;&amp;quot;: 70&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The catch rate of your Pokémon. The higher the value, the easier it is to catch your Pokémon.&amp;quot;&amp;gt;catchRate&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Catch rate values can start as low as 3 for legendary Pokémon and go as high as 255 for early game Pokémon like caterpie.&amp;quot;&amp;gt;100&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;What percentage of this pokémon are male.&amp;quot;&amp;gt;maleRatio&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;This would make the Pokémon have a 50% male ratio. You can set this value to 0 to make a female only species like Miltank. You can also set it to -1 to make genderless Pokémon like Ditto.&amp;quot;&amp;gt;0.5&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How much experience is granted by this pokémon upon being defeated.&amp;quot;&amp;gt;baseExperienceYield&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;270 would let this Pokémon drop the same amount of exp as a legendary pokemon! Weak Pokémon have a value as low as 50. Blissey has the highest value at 635.&amp;quot;&amp;gt;270&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How quickly this Pokémon will level up.&amp;quot;&amp;gt;experienceGroup&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;It is recommended that you leave this alone for now. If you spell something wrong when trying to change it, your Pokémon will not level up at all.&amp;quot;&amp;gt;fluctuating&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How long it will take this Pokémon&#039;s eggs to hatch.&amp;quot;&amp;gt;eggCycles&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;This value can be as low as 15 for quick hatching eggs or as high as 120 for slow hatching eggs like legendaries.&amp;quot;&amp;gt;25&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;The egg groups that this Pokémon can breed with.&amp;quot;&amp;gt;eggGroups&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;It is recommended that you leave these alone unless you know what you&#039;re doing. If these values aren&#039;t valid, the game will crash.&amp;quot;&amp;gt;water_1&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;It is recommended that you leave these alone unless you know what you&#039;re doing. If these values aren&#039;t valid, the game will crash.&amp;quot;&amp;gt;monster&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;What this pokémon&#039;s friendship stat starts at when caught.&amp;quot;&amp;gt;baseFriendship&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;For most non-legendary Pokémon, this value is usually 50.&amp;quot;&amp;gt;50&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;How many EV&#039;s this pokémon gives upon being defeated.&amp;quot;&amp;gt;evYield&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The amount of hp EV&#039;s this Pokémon will drop.&amp;quot;&amp;gt;hp&amp;lt;/abbr&amp;gt;&amp;quot;: 2,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The amount of special attack EV&#039;s this Pokémon will drop.&amp;quot;&amp;gt;special_attack&amp;lt;/abbr&amp;gt;&amp;quot;: 1&lt;br /&gt;
  },&lt;br /&gt;
# &amp;lt;li value=2&amp;gt; Change any of these values if desired&lt;br /&gt;
#* It is recommended that you leave most of these values alone if you are unsure about your Pokémon&#039;s stats. They can always be changed later. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Moves and Abilities ====&lt;br /&gt;
Here you will include the abilities and move pool for your Pokémon.&lt;br /&gt;
&lt;br /&gt;
# Copy and paste the following data &#039;&#039;&#039;in a new line after the previous data.&#039;&#039;&#039;&lt;br /&gt;
#*Hover over the underlined text to see more information.&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here we&#039;re defining our list of moves. You can list as many as you like! If you&#039;d like to include more moves, you cannot use spaces or underscores for moves that are named with multiple words like &#039;double slap.&#039; You need to smoosh the words together! It would be written in this JSON as &#039;doubleslap&#039;&amp;quot;&amp;gt;moves&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This would let disable be one of the &#039;egg moves&#039; for this Pokémon&amp;quot;&amp;gt;egg:disable&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This would let the Pokémon learn crushclaw at level 20&amp;quot;&amp;gt;20:crushclaw&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This would allow the Pokémon to use a &#039;rest tm&#039; when tm&#039;s get implemented&amp;quot;&amp;gt;tm:rest&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This would allow the Pokémon to learn hone claws from a tutor when that gets implemented&amp;quot;&amp;gt;tutor:honeclaws&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here we define the list of abilities. You can have up to two abilities listed, and one hidden ability. The names of abilities must be one word just like with the moves.&amp;quot;&amp;gt;abilities&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This would make tough claws be the only default ability for this Pokémon.&amp;quot;&amp;gt;toughclaws&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This would let serene grace be the hidden ability for this Pokémon. Hidden abilities are not implemented at this time.&amp;quot;&amp;gt;h:serenegrace&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ],&lt;br /&gt;
# &amp;lt;li value=2&amp;gt; Change any of these values if desired&lt;br /&gt;
#* You probably should edit the moves and abilities for your Pokémon, but it can always be done later!&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Entity Properties ====&lt;br /&gt;
Here you will list some properties of your Pokémon like its behavior, drops, and size.&lt;br /&gt;
&lt;br /&gt;
# Copy and paste the following data &#039;&#039;&#039;in a new line after the previous data.&#039;&#039;&#039;&lt;br /&gt;
#*Hover over the underlined text to see more information.&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This refers to the scale of the Pokémon model.&amp;quot;&amp;gt;baseScale&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot; A scale of 1 means that the Pokémon will be the same size it was modeled at in Blockbench.&amp;quot;&amp;gt;1&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These are the parameters that handle hit collision. There are only values for height and width since hitboxes are square prisms.&amp;quot;&amp;gt;hitbox&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The width of the hitbox. We will change this value later in the guide.&amp;quot;&amp;gt;width&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The height of the hitbox. We will change this value later in the guide.&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This determines whether the hitbox is fixed in place or not. You usually always want this on false.&amp;quot;&amp;gt;fixed&amp;lt;/abbr&amp;gt;&amp;quot;: false&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will define what a Pokémon will drop when defeated.&amp;quot;&amp;gt;drops&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This indicates how many drop attempts there will be.&amp;quot;&amp;gt;amount&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this instance, there will be 2 attempts to drop items from the entries listed below.&amp;quot;&amp;gt;2&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This lists the potential items to drop.&amp;quot;&amp;gt;entries&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list the item id.&amp;quot;&amp;gt;item&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this example, the Pokémon will attempt to drop slime balls! You can also include drops from other mods.&amp;quot;&amp;gt;minecraft:slimeball&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;The amount of items that will drop.&amp;quot;&amp;gt;quantityRange&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this instance, it will drop 1-2 slime balls. Since there are 2 drop attempts, as specified from &#039;amount,&#039; then there&#039;s a chance at getting 4 slime balls when defeating this pokemon!&amp;quot;&amp;gt;1-2&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;The chance for the item to drop.&amp;quot;&amp;gt;percentage&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;This means it will have a 66% chance to drop 1-2 slimeballs.&amp;quot;&amp;gt;66&amp;lt;/abbr&amp;gt;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here we will define the behavior of the Pokémon.&amp;quot;&amp;gt;behaviour&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are listing behaviors regarding movement.&amp;quot;&amp;gt;moving&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This determines whether or not a Pokémon can look around. This really depends on your model.&amp;quot;&amp;gt;canLook&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;If your Pokémon doesn&#039;t have a proper head and neck, you might want to set this to false.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list behaviors about flying.&amp;quot;&amp;gt;fly&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not a Pokémon can fly. If true, it will be assigned AI to fly.&amp;quot;&amp;gt;canFly&amp;lt;/abbr&amp;gt;&amp;quot;: false&lt;br /&gt;
      },          &lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list behaviors about swimming. This would include swimming in water and lava!&amp;quot;&amp;gt;swim&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will determine how fast your Pokémon moves when swimming.&amp;quot;&amp;gt;swimSpeed&amp;lt;/abbr&amp;gt;&amp;quot;: 0.2,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will determine if your Pokémon knows how to swim. If false, then the Pokémon will float to the surface instead of swimming around in water.&amp;quot;&amp;gt;canSwimInWater&amp;lt;/abbr&amp;gt;&amp;quot;: true,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not a Pokémon can breathe underwater. You want this set to true for most aquatic Pokémon.&amp;quot;&amp;gt;canBreatheUnderwater&amp;lt;/abbr&amp;gt;&amp;quot;: true&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
# &amp;lt;li value=2&amp;gt; Change any of these values if desired&lt;br /&gt;
#* It is recommended to leave these alone for now.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Save the file! ====&lt;br /&gt;
That should be enough data for your custom Pokémon to be functional in game. Now you can save the file.&lt;br /&gt;
&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new species JSON into the &amp;lt;code&amp;gt;custom&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Part 6: Creating the lang file ===&lt;br /&gt;
In this section we will walk you through on how to display the Pokémon&#039;s name in game. Let&#039;s begin by making a language file!&lt;br /&gt;
&lt;br /&gt;
Minecraft will take whatever text is declared in this language file to show in game if a matching key is defined. The purpose of this is so that text such as names can be translated for different languages.&lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it &amp;lt;code&amp;gt;en_us.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* If US English is not your language, you can refer to the [https://minecraft.wiki/w/Language Minecraft Wiki page for language files] to get file name for your language.&lt;br /&gt;
#* Make sure this new file name ends in .json and not any other file extension like .txt. You may need to search &amp;quot;how to show file extensions&amp;quot; for whatever operating system you have.&lt;br /&gt;
# Open this new JSON in your preferred text editor&lt;br /&gt;
# Copy and paste this example data into the JSON:&lt;br /&gt;
#* Hover over the underlined text to see more information.&lt;br /&gt;
#* Remember that you want to change the string on the right side of the colon to whatever language you play with. The string on the left side of the colon must remain in English to be read properly by the mod.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will specify how your Pokémon&#039;s name will appear in English.&amp;quot;&amp;gt;cobblemon.species.tentaquil.name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;This will be the name that appears above the Pokémon&#039;s head in game. You are allowed to use capital letters, periods, and hyphens here.&amp;quot;&amp;gt;Tentaquil&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will give a short description of your Pokémon for the pokédex.&amp;quot;&amp;gt;cobblemon.species.tentaquil.desc1&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;This will appear in the English pokédex when it gets implemented.&amp;quot;&amp;gt;If its bold colors do not sufficiently ward off predators, it secretes toxins that smell strongly of copper.&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will give a short description of your Pokémon for the pokédex.&amp;quot;&amp;gt;cobblemon.species.tentaquil.desc2&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;This will appear in the English pokédex when it gets implemented.&amp;quot;&amp;gt;There has only been one recorded sighting of this pokémon. Until recently, this was considered to be a joke.&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
 }&lt;br /&gt;
# Swap out &amp;quot;tentaquil&amp;quot; for the name of your Pokémon&lt;br /&gt;
#* The value after &amp;lt;code&amp;gt;cobblemon.species.tentaquil.name&amp;lt;/code&amp;gt; is what your Pokémon&#039;s name will look like over its head. So you can use capital letters, periods, and hyphens. &lt;br /&gt;
# Change the descriptions of the Pokémon if desired.&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this file in the &amp;lt;code&amp;gt;lang&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
&lt;br /&gt;
The keys ending with &amp;lt;code&amp;gt;desc1&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;desc2&amp;lt;/code&amp;gt; are the Pokémon&#039;s Pokédex entries. Although the Pokédex has not been implemented yet, try to keep the entries short and brief as there may eventually be a character limit.&lt;br /&gt;
&lt;br /&gt;
You can add as many Pokémon names (along with their Pokédex entries) as you want to the same language file if you are planning to add more custom Pokémon to your pack.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Part 7: Testing your Pokemon in Game ===&lt;br /&gt;
You Pokemon should now have enough data to be functional in game! Let&#039;s try loading your addon in a new creative world. &lt;br /&gt;
# Launch Minecraft with the Cobblemon mod enabled. &lt;br /&gt;
# Click on &amp;quot;Singleplayer&amp;quot;&lt;br /&gt;
# Click on &amp;quot;Create New World&amp;quot;&lt;br /&gt;
# Name this new world whatever you like&lt;br /&gt;
# Set it to Creative and allow cheats!&lt;br /&gt;
# Click on &amp;quot;Data Packs&amp;quot;&lt;br /&gt;
# Click on &amp;quot;Open Pack Folder&amp;quot;&lt;br /&gt;
# Copy your addon folder and paste it into this datapack folder.&lt;br /&gt;
#* Your addon should appear in the list of available datapacks&lt;br /&gt;
#* If it appears as red, you can still select it and load it without issues if you have been following this guide. &lt;br /&gt;
# Select your addon from the list of available datapacks and click done&lt;br /&gt;
#* It should warn you that the datapack is outdated, but you can ignore this warning!&lt;br /&gt;
# Click on &amp;quot;Create New World&amp;quot;&lt;br /&gt;
# After the world has loaded, spawn your Pokémon with this command: &amp;lt;code&amp;gt;/pokespawn &amp;lt;your_pokemon&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Your Pokémon should have a strange looking name and should have spawned as the substitute doll, which is a green dinosaur-like doll. &lt;br /&gt;
#* This is because the resource pack hasn&#039;t been activated yet. We will do that next. &lt;br /&gt;
#* If a Pokémon can at least spawn as the substitute doll, that means all of it&#039;s data is valid.&lt;br /&gt;
# Open your options menu.&lt;br /&gt;
# Click on &amp;quot;Resource Packs&amp;quot;&lt;br /&gt;
# Click on &amp;quot;Open Pack Folder&amp;quot;&lt;br /&gt;
# Copy your addon folder and paste it into this resource pack folder.&lt;br /&gt;
#* Your addon should appear in the list of available resource packs&lt;br /&gt;
# Select your addon from the list of available resource packs and click done.&lt;br /&gt;
#* If you get a warning that the resource pack is outdated, you can ignore this warning!&lt;br /&gt;
# After the game refreshes the resourcepacks, you should be able to see the model you created!&lt;br /&gt;
# Ensure that your Pokémon&#039;s model, animations, and name are working properly.&lt;br /&gt;
# Do not close Minecraft yet. In the following sections of this guide, we will be editing the addon files while the game is loaded. &lt;br /&gt;
&lt;br /&gt;
You may notice that your Pokémon does not appear properly in the Party menus and HUD. Its appearance in the GUI is controlled by the &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; file. We will fix it in the next couple of sections. &lt;br /&gt;
&lt;br /&gt;
Your Pokémon may also appear bigger or smaller than you intended. This can be corrected in its &amp;lt;code&amp;gt;species&amp;lt;/code&amp;gt; file. We will fix it in the next section. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Part 8: Adjusting the Scale of your Pokémon in game ===&lt;br /&gt;
We will be adjusting the size of your Pokémon in game. This will be done by editing the &amp;lt;code&amp;gt;species&amp;lt;/code&amp;gt; file you created earlier. &lt;br /&gt;
&lt;br /&gt;
Remember that datapack folder that you copy and pasted your addon folder into? It was a temporary folder used for world creation. This means that your addon is now in a different folder. We want to edit the in game files so we can see the changes without having to restart the game! This section of the guide will show you how to access that folder from in game. &lt;br /&gt;
&lt;br /&gt;
# Have Minecraft open in the main menu&lt;br /&gt;
#* You&#039;ll always want Minecraft open in this section of the guide. &lt;br /&gt;
# Open your options menu.&lt;br /&gt;
# Click on &amp;quot;Resource Packs&amp;quot;&lt;br /&gt;
#* Although we are looking for your addon in the datapacks folder, this is a simple way to navigate to the datapack folder.&lt;br /&gt;
# Click on &amp;quot;Open Pack Folder&amp;quot;&lt;br /&gt;
# From this new folder window, go back one folder or press &amp;lt;code&amp;gt;ALT+[UP ARROW]&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Click on the &amp;lt;code&amp;gt;saves&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
# Click on the folder named after the Creative World you made earlier in this guide.&lt;br /&gt;
# Click on the &amp;lt;code&amp;gt;datapacks&amp;lt;/code&amp;gt; folder.&lt;br /&gt;
# You should see your addon folder now! &lt;br /&gt;
# Open your addon folder and navigate to the &amp;lt;code&amp;gt;species&amp;lt;/code&amp;gt; JSON of your Pokémon.&lt;br /&gt;
# Open the JSON in your preferred text editor.&lt;br /&gt;
# Look for the following data in this file:&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This refers to the scale of the Pokémon model.&amp;quot;&amp;gt;baseScale&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot; A scale of 1 means that the Pokémon will be the same size it was modeled at in Blockbench.&amp;quot;&amp;gt;1&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
   &amp;quot;&amp;lt;abbr title=&amp;quot;These are the parameters that handle hit collision. There are only values for height and width since hitboxes are square prisms.&amp;quot;&amp;gt;hitbox&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The width of the hitbox. We will change this value now.&amp;quot;&amp;gt;width&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The height of the hitbox. We will change this value now.&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This determines whether the hitbox is fixed in place or not. You usually always want this on false.&amp;quot;&amp;gt;fixed&amp;lt;/abbr&amp;gt;&amp;quot;: false&lt;br /&gt;
 },&lt;br /&gt;
# &amp;lt;li value=13&amp;gt; Let&#039;s start by changing the &amp;lt;code&amp;gt;baseScale&amp;lt;/code&amp;gt; value first! This controls the size of the Pokémon model. &lt;br /&gt;
#* By default, this value should be 1. &lt;br /&gt;
#* You can use decimals to get a precise size for your Pokémon. &lt;br /&gt;
# Change the value for &amp;lt;code&amp;gt;baseScale&amp;lt;/code&amp;gt;&lt;br /&gt;
#* If you want your Pokémon to be bigger, make the value higher than 1&lt;br /&gt;
#* If you want your Pokémon to be smaller, make the value lower than 1, but higher than 0. &lt;br /&gt;
# Save the file.&lt;br /&gt;
# Load your Creative Single Player world from the main menu.&lt;br /&gt;
#* You always have to load the world from the main menu to see changes to &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; files.&lt;br /&gt;
#* The command &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt; does not work with Cobblemon datapacks. &lt;br /&gt;
# Examine your Pokémon and decide if it still needs to be adjusted.&lt;br /&gt;
# Repeat steps 10-17 until your Pokémon&#039;s in game size is just right!&lt;br /&gt;
# Now that your Pokémon&#039;s size is correct, we can adjust its &amp;lt;code&amp;gt;hitbox&amp;lt;/code&amp;gt; values! This controls the Pokémon&#039;s hitbox and the size of its shadow. &lt;br /&gt;
#* By default, this value should be 1. &lt;br /&gt;
#* You can use decimals to get a precise size for your Pokémon.&lt;br /&gt;
# Open your addon folder and navigate to the &amp;lt;code&amp;gt;species&amp;lt;/code&amp;gt; JSON of your Pokémon.&lt;br /&gt;
# Open the JSON in your preferred text editor.&lt;br /&gt;
# Look for the following data in this file:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These are the parameters that handle hit collision. There are only values for height and width since hitboxes are square prisms.&amp;quot;&amp;gt;hitbox&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The width of the hitbox. We will change this value now.&amp;quot;&amp;gt;width&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The height of the hitbox. We will change this value now.&amp;quot;&amp;gt;height&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This determines whether the hitbox is fixed in place or not. You usually always want this on false.&amp;quot;&amp;gt;fixed&amp;lt;/abbr&amp;gt;&amp;quot;: false&lt;br /&gt;
 },&lt;br /&gt;
# &amp;lt;li value=23&amp;gt; Change the values for &amp;lt;code&amp;gt;width&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;height&amp;lt;/code&amp;gt;&lt;br /&gt;
#* If you want your Pokémon&#039;s hitbox to be bigger, make the values higher than 1&lt;br /&gt;
#* If you want your Pokémon&#039;s hitbox to be smaller, make the values lower than 1, but higher than 0. &lt;br /&gt;
# Save the file.&lt;br /&gt;
# Load your Creative Single Player world from the main menu.&lt;br /&gt;
#* You always have to load the world from the main menu to see changes to &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; files.&lt;br /&gt;
# Press &amp;lt;code&amp;gt;F3+B&amp;lt;/code&amp;gt; to show hitboxes.&lt;br /&gt;
# Examine your Pokémon and decide if it still needs to be adjusted.&lt;br /&gt;
#* Most of the time, you want the red line around the same height as the eye(s) of your Pokémon. &lt;br /&gt;
#* That red line on the hitbox indicates when the entity will start suffocating. If the hitbox somehow has a block above this red line, then the entity will start suffocating.&lt;br /&gt;
# Repeat steps 20-27 until your Pokémon&#039;s in game hitbox is just right!&lt;br /&gt;
# Once your Pokémon&#039;s size and hitbox are just right, go back to the main menu of Minecraft and proceed to the next part of the guide.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Part 9: Adjusting your Pokémon&#039;s poser file in game ===&lt;br /&gt;
In this part of the guide, we will be editing the &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; file so your Pokémon can look nice in the GUIs! This time we will be editing files in the resource pack folder! This means you can press &amp;lt;code&amp;gt;F3+T&amp;lt;/code&amp;gt; to reload the resource pack in game rather than loading from the main menu like we did for the species file. &lt;br /&gt;
&lt;br /&gt;
# Have Minecraft open in the main menu&lt;br /&gt;
#* You&#039;ll always want Minecraft open in this section of the guide. &lt;br /&gt;
# Open your options menu.&lt;br /&gt;
# Click on &amp;quot;Resource Packs&amp;quot;&lt;br /&gt;
# Click on &amp;quot;Open Pack Folder&amp;quot;&lt;br /&gt;
# From this new folder window, you should see your addon folder.&lt;br /&gt;
# Open your addon folder and navigate to the &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON of your Pokémon.&lt;br /&gt;
# Open the JSON in your preferred text editor.&lt;br /&gt;
# Look for the following data in this file:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the portraits on the party menu on the left side of the screen. This will require some trial and error. I advise coming back to this after you’ve implemented your Pokémon. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;quot;: 1&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the portraits on the party menu on the left side of the screen. This will require some trial and error. I advise coming back to this after you’ve implemented your Pokémon. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;quot;: [ 0, 0.5, 0 ]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon often seen in GUI, but most notably the summary UI. Like the previous code block, this section will require some trial and error, and you should come back to edit this later. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;quot;: 1&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon often seen in GUI, but most notably the summary UI. Like the previous code block, this section will require some trial and error, and you should come back to edit this later. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileTranslation&amp;quot;: [ 0, 0.4, 0 ]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
# &amp;lt;li value=9&amp;gt; Let&#039;s start by editing &amp;lt;code&amp;gt;portraitScale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;portraitTranslation&amp;lt;/code&amp;gt;. These values control how your Pokémon looks on the right side of your screen.&lt;br /&gt;
#* &amp;lt;code&amp;gt;portraitScale&amp;lt;/code&amp;gt; makes your Pokémon bigger or smaller in the GUI. It can be treated like a &amp;quot;zoom&amp;quot; value for the camera that renders your Pokémon in this GUI. The higher the value, the more it will zoom into your Pokémon.&lt;br /&gt;
#* &amp;lt;code&amp;gt;portraitTranslation&amp;lt;/code&amp;gt; has a set of 3 values in brackets. These 3 values can be treated like the xyz coordinates for the camera that renders your Pokémon in the GUI. These values can use decimals and negative numbers!&lt;br /&gt;
#* This part requires a lot of trial and error. Sometimes if you change a value too drastically, it will stop appearing on the GUI. It is recommended to change the values in increments of 0.3 to get your bearings on how these values work. &lt;br /&gt;
# Change the values for &amp;lt;code&amp;gt;portraitScale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;portraitTranslation&amp;lt;/code&amp;gt;&lt;br /&gt;
# Save the file&lt;br /&gt;
# Go back to Minecraft and press &amp;lt;code&amp;gt;F3+T&amp;lt;/code&amp;gt; to refresh all resource packs&lt;br /&gt;
# After loading, examine your Pokémon in the party GUI on the left side of your screen.&lt;br /&gt;
#* Generally, you want this GUI to show your Pokémon&#039;s entire face&lt;br /&gt;
# Repeat steps 6-13 until your Pokémon looks just right!&lt;br /&gt;
# Next we will edit the values for &amp;lt;code&amp;gt;profileScale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;profileTranslation&amp;lt;/code&amp;gt;. These values control how your Pokémon looks in the Party GUI when you press M. &lt;br /&gt;
#* &amp;lt;code&amp;gt;profileScale&amp;lt;/code&amp;gt; makes your Pokémon bigger or smaller in the GUI.&lt;br /&gt;
#* &amp;lt;code&amp;gt;portraitTranslation&amp;lt;/code&amp;gt; controls the position of the camera rendering your Pokémon in this menu. These values can use decimals and negative numbers!&lt;br /&gt;
#* This part also requires a lot of trial and error. It is recommended to change the values in increments of 0.3 again.&lt;br /&gt;
# Open your addon folder and navigate to the &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON of your Pokémon.&lt;br /&gt;
# Open the JSON in your preferred text editor.&lt;br /&gt;
# Look for the following data in this file:&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the portraits on the party menu on the left side of the screen. This will require some trial and error. I advise coming back to this after you’ve implemented your Pokémon. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;quot;: 1&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the portraits on the party menu on the left side of the screen. This will require some trial and error. I advise coming back to this after you’ve implemented your Pokémon. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;quot;: [ 0, 0.5, 0 ]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon often seen in GUI, but most notably the summary UI. Like the previous code block, this section will require some trial and error, and you should come back to edit this later. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;quot;: 1&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon often seen in GUI, but most notably the summary UI. Like the previous code block, this section will require some trial and error, and you should come back to edit this later. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileTranslation&amp;quot;: [ 0, 0.4, 0 ]&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
# &amp;lt;li value=19&amp;gt; Change the values for &amp;lt;code&amp;gt;profileScale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;profileTranslation&amp;lt;/code&amp;gt;&lt;br /&gt;
# Save the file&lt;br /&gt;
# Go back to Minecraft and press &amp;lt;code&amp;gt;F3+T&amp;lt;/code&amp;gt; to refresh all resource packs&lt;br /&gt;
# After loading, press M and examine your Pokémon in the party GUI.&lt;br /&gt;
#* Generally, you want this GUI to show your Pokémon&#039;s entire body. &lt;br /&gt;
#* You mainly want your Pokémon&#039;s body to stay within the camera borders on the left side of the menu. This will mostly prevent your Pokémon from overlapping on the right side of the menu.&lt;br /&gt;
# Repeat steps 16-22 until your Pokémon looks just right!&lt;br /&gt;
# Once your Pokémon looks just right in the party menus, go back to the main menu of Minecraft and proceed to the next part of the guide.&lt;br /&gt;
&lt;br /&gt;
At this point in the guide, your Pokémon should be fully functional in game. The last thing it needs is a way for it to spawn naturally in the game!&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Part 10: Create your Pokémon&#039;s Spawn File ===&lt;br /&gt;
Once you create the spawn file for your Pokémon, it is considered complete! We will be using an example spawn file as a template to spawn your Pokémon. You can edit it to your liking with different [https://gitlab.com/cable-mc/cobblemon/-/wikis/Spawner/Spawn-Condition spawn conditions.] A list of biome tags you can use can be found [https://docs.google.com/document/d/1iB0EJSc2r6mRJXIo1n3XpHbZ5udwJVnrh2pXdhTyH8c/edit here].&lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it &amp;lt;code&amp;gt;&amp;lt;pokemon&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;bulbasaur.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Make sure this new file name ends in .json and not any other file extension like .txt. You may need to search &amp;quot;how to show file extensions&amp;quot; for whatever operating system you have.&lt;br /&gt;
# Open this new JSON in your preferred text editor&lt;br /&gt;
# Copy and paste this example data into the JSON:&lt;br /&gt;
#* Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This determines whether this spawn data is enabled&amp;quot;&amp;gt;enabled&amp;quot;: true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These are lists that say whether the spawn data requires specific mods to be present. Namely, this is mostly for pokémon that spawn in biomes introduced by other mods.&amp;quot;&amp;gt;neededInstalledMods&amp;quot;: []&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;These are lists that say whether the spawn data requires specific mods to be present. Namely, this is mostly for pokémon that spawn in biomes introduced by other mods.&amp;quot;&amp;gt;neededUninstalledMods&amp;quot;: []&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are declaring where it will spawn.&amp;quot;&amp;gt;spawns&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Spawn locations require unique ID&#039;s. Calling them something like yourpokemon-1, yourpokemon-2 and so on is acceptable.&amp;quot;&amp;gt;id&amp;quot;: &amp;quot;tentaquil-1&amp;quot;&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Which pokémon are we trying to spawn here?&amp;quot;&amp;gt;pokemon&amp;quot;: &amp;quot;tentaquil&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Presets are a collection of potential block candidates to spawn on, this way you don&#039;t need to clarify a ton of blocks every time you make a spawn file.&amp;quot;&amp;gt;presets&amp;lt;/abbr&amp;gt;&amp;quot;: [ &amp;quot;&amp;lt;abbr title=&amp;quot;natural is the most common preset. You can pick others like underground, freshwater, redstone or more.&amp;quot;&amp;gt;natural&amp;lt;/abbr&amp;gt;&amp;quot; ],&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;We are spawning a pokémon here, so no need to change this.&amp;quot;&amp;gt;type&amp;quot;: &amp;quot;pokemon&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;What sort of surface is this spawning on? We will keep it on &#039;grounded&#039; for this example.&amp;quot;&amp;gt;context&amp;quot;: &amp;quot;grounded&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;How rare is this pokémon?&amp;quot;&amp;gt;bucket&amp;quot;: &amp;quot;uncommon&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;This is the minimum and maximum level this pokémon can spawn at.&amp;quot;&amp;gt;level&amp;quot;: &amp;quot;18-60&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;This number determines how likely it is to spawn considering its rarity.&amp;quot;&amp;gt;weight&amp;quot;: 10.0&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Additional spawn conditions are listed in this section.&amp;quot;&amp;gt;condition&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Whether or not this pokémon should be able to see the sky when it spawns.&amp;quot;&amp;gt;canSeeSky&amp;lt;/abbr&amp;gt;&amp;quot;: true,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here we list the biomes we want the pokémon to spawn in.&amp;quot;&amp;gt;biomes&amp;lt;/abbr&amp;gt;&amp;quot;: [ &amp;quot;&amp;lt;abbr title=&amp;quot;The Cobblemon tag for forest biomes. Allows Tentaquil to spawn in any biome tagged as a forest.&amp;quot;&amp;gt;#cobblemon:is_forest&amp;lt;/abbr&amp;gt;&amp;quot; ]&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
# &amp;lt;li value=4&amp;gt; Replace the 2 instances of &amp;quot;tentaquil&amp;quot; with the name of your Pokémon&lt;br /&gt;
# Edit any of the other values if desired.&lt;br /&gt;
#* With the current template, your Pokémon will be an uncommon spawn in the forest.&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new file in the &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
#* Ensure that you place it in the addon folder that is in the datapack folder!&lt;br /&gt;
# Load your Creative Single Player world from the main menu.&lt;br /&gt;
#* You always have to load the world from the main menu to see changes to &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; files.&lt;br /&gt;
# Check if your Pokémon spawns where you assigned it to. You can use &amp;lt;code&amp;gt;/checkspawn &amp;lt;rarity&amp;gt;&amp;lt;/code&amp;gt; when in the assigned biome. &lt;br /&gt;
#* You can run the command &amp;lt;code&amp;gt;/locate biome &amp;lt;assigned biome&amp;gt;&amp;lt;/code&amp;gt; to get coordinates to the assigned biome. You can then click on the coordinates it gave you and be teleported instantly. &lt;br /&gt;
# Ensure that your Pokémon at least appears in the &amp;lt;code&amp;gt;checkspawn&amp;lt;/code&amp;gt; list after meeting its conditions.&lt;br /&gt;
#* If you made your Pokémon rare or ultra-rare, then it may take hours before you even see it spawn naturally.&lt;br /&gt;
# If your Pokémon appears in the checkspawn list, or if you see it spawn naturally, then you can consider this guide completed!&lt;br /&gt;
&lt;br /&gt;
Congratulations! You are now a Cobblemon modder. Hopefully your Pokémon will have no issues if you&#039;ve been following along. If you have any issues with your addon, help can be found in the Cobblemon Discord server.&lt;br /&gt;
&lt;br /&gt;
== Sharing your Pokémon Addon ==&lt;br /&gt;
Before you share your addon with others or upload it to a server, it is best to package your addon into a &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt;. This will allow you to share the single &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt; file instead of all the files individually. &lt;br /&gt;
&lt;br /&gt;
If you have been following this guide, you may have realized that some files that got updated while testing in game are now separated. We need to combine the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt; folders again.&lt;br /&gt;
&lt;br /&gt;
# Create a new folder&lt;br /&gt;
# Name this new folder. This will be the final product name for your addon.&lt;br /&gt;
# Navigate to your addon folder inside the &amp;lt;code&amp;gt;datapacks&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Open your addon folder&lt;br /&gt;
# Copy the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; folder and the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; file&lt;br /&gt;
#* If you have a &amp;lt;code&amp;gt;pack.png&amp;lt;/code&amp;gt;, copy that file too&lt;br /&gt;
# Paste them inside of your new addon folder&lt;br /&gt;
# Navigate to your addon folder inside the &amp;lt;code&amp;gt;resourcepacks&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Open your addon folder&lt;br /&gt;
# Copy the &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt; folder&lt;br /&gt;
# Paste inside of your new addon folder&lt;br /&gt;
# Your up to date files should now be reunited in the new addon folder. Its structure and contents should look like the following folder tree:&lt;br /&gt;
==== Folder Structure ====&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(new addon folder name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.png&#039;&#039;&#039;&lt;br /&gt;
**assets&lt;br /&gt;
***cobblemon&lt;br /&gt;
****bedrock&lt;br /&gt;
*****pokemon&lt;br /&gt;
******animations&lt;br /&gt;
*******&amp;lt;pokemon name&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.animation.json&#039;&#039;&#039;&lt;br /&gt;
******models&lt;br /&gt;
*******&amp;lt;pokemon name&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.geo.json&#039;&#039;&#039;&lt;br /&gt;
******posers&lt;br /&gt;
*******&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.json&#039;&#039;&#039;&lt;br /&gt;
******resolvers&lt;br /&gt;
*******&amp;lt;pokemon&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;0_&amp;lt;pokemon&amp;gt;_base.json&#039;&#039;&#039;&lt;br /&gt;
****lang&lt;br /&gt;
*****&#039;&#039;&#039;en_us.json&#039;&#039;&#039;&lt;br /&gt;
****textures&lt;br /&gt;
*****pokemon&lt;br /&gt;
******&amp;lt;pokemon&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.png&#039;&#039;&#039;&lt;br /&gt;
*******&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;_shiny.png&#039;&#039;&#039;&lt;br /&gt;
**data&lt;br /&gt;
***cobblemon&lt;br /&gt;
****spawn_pool_world&lt;br /&gt;
*****&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.json&#039;&#039;&#039;&lt;br /&gt;
****species&lt;br /&gt;
*****custom&lt;br /&gt;
******&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
# &amp;lt;li value=12&amp;gt; Ensure you followed steps 1-11 correctly.&lt;br /&gt;
#* If you followed along correctly, then you copied the correct and updated files so it should work properly when shared.&lt;br /&gt;
# Open your new addon folder&lt;br /&gt;
# Select all of the following items together: &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;pack.png&amp;lt;/code&amp;gt;(optional)&lt;br /&gt;
# Compress the files with your preferred zip file software.&lt;br /&gt;
#* If you are on Windows, you can compress them with the following method: Right click the selected items &amp;gt; send to &amp;gt; Compressed (zipped) folder&lt;br /&gt;
# Ensure that they are in a &amp;lt;code&amp;gt;.zip&amp;lt;/code&amp;gt; file&lt;br /&gt;
#* Minecraft wont read &amp;lt;code&amp;gt;.rar&amp;lt;/code&amp;gt; files&lt;br /&gt;
# Ensure that the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; file is one of the first things you see when you open your zipped addon. &lt;br /&gt;
#* Minecraft will only read 1 folder deep for the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Your addon should now be ready to share! Remember that this new &amp;lt;code&amp;gt;zip&amp;lt;/code&amp;gt; file will still need to have a copy placed in both the &amp;lt;code&amp;gt;datapacks&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;resourcepacks&amp;lt;/code&amp;gt; folders of those who will receive it. If you want to share the files on a server, then the server needs a copy in its datapack folder of the world. And every player will need a copy in their resourcepack folder!&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Tutorials/Regional_Forms&amp;diff=4770</id>
		<title>Tutorials/Regional Forms</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Tutorials/Regional_Forms&amp;diff=4770"/>
		<updated>2024-06-06T22:40:37Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: /* Step 4: Create a &amp;quot;species addition&amp;quot; file with &amp;quot;form&amp;quot; data */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
This tutorial will teach you how to create a regional form for &#039;&#039;&#039;&#039;&#039;an existing Pokémon.&#039;&#039;&#039;&#039;&#039; Regional forms are a species variant that can have different looks, types, abilities, moves, and spawn locations! &#039;&#039;&#039;Knowledge of [[Tutorials/Creating_A_Custom_Pokemon|creating custom Pokémon]] is &#039;&#039;required.&#039;&#039;&#039;&#039;&#039; Creating a unique model and textures for your form is highly recommended, but not always necessary. &lt;br /&gt;
&lt;br /&gt;
Due to regional forms usually requiring files for both data and assets, this type of pack will just be called an &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; for simplicity. Addons that use data and asset folders will end up needing to have a copy in both the &amp;lt;code&amp;gt;datapacks&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;resourcepacks&amp;lt;/code&amp;gt; game folders. The data and assets can be separated if desired, but are usually bundled together to make sharing easier!&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Arrange the folders for this addon ===&lt;br /&gt;
Due to some files sharing the same names later in this guide, you will be creating the folder structure and &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; now. This is to prevent confusion going forward. &lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Ensure that it doesn&#039;t end in other file extensions like .txt&lt;br /&gt;
# Open the file and insert the following data:&lt;br /&gt;
#* Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Minecraft know that it is a datapack&amp;quot;&amp;gt;pack&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list the pack format number for a specific version of Minecraft&amp;quot;&amp;gt;pack_format&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;As of 1.20.1, the current resourcepack format number is 15. But it will still load if this number isn&#039;t correct!&amp;quot;&amp;gt;15&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will write a short description of your datapack&amp;quot;&amp;gt;description&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Your short datapack description&amp;quot;&amp;gt;Example description&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
# &amp;lt;li value=3&amp;gt; Save the file and put it aside for now. &lt;br /&gt;
# Create a series of folders arranged like the following example:&lt;br /&gt;
==== Folder Structure ====&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
**assets&lt;br /&gt;
***cobblemon&lt;br /&gt;
****bedrock&lt;br /&gt;
*****pokemon&lt;br /&gt;
******animations&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
******models&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
******posers&lt;br /&gt;
******resolvers&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
****textures&lt;br /&gt;
*****pokemon&lt;br /&gt;
******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
**data&lt;br /&gt;
***cobblemon&lt;br /&gt;
****spawn_pool_world&lt;br /&gt;
****species_additions&lt;br /&gt;
****species_features&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt;Place the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; file into the first folder of your addon next to &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt;&lt;br /&gt;
After this folder tree for your addon is made, you can simply drop the files into the associated folders as you create them. &lt;br /&gt;
Remember that the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; is a file, not a folder to add. It must be one folder deep in order for Minecraft to recognize this pack as a resource pack or data pack when in the appropriate game folders. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Create the assets for your regional variant ===&lt;br /&gt;
How you want your regional variant to look depends entirely on you. You can make it use a new texture over the original model. Most of the time, a new model, texture, and animations are created for this regional form. If for some reason you don&#039;t want it to have a visual difference at all, then you can skip anything regarding &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;. Make sure your assets have a unique name so they don&#039;t overwrite any original form assets.&lt;br /&gt;
&lt;br /&gt;
Assets for existing Pokémon can be obtained from the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/assets/cobblemon/bedrock/pokemon/models Gitlab] or the mod&#039;s JAR file. This can be helpful if you wanted to make a texture variant, or use the model as a base for the regional form. Just remember that animation files are made for specific models so they may need updating depending on what you make. These assets can be made in Blockbench or any relevant art apps. &lt;br /&gt;
&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;texture&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Export these files and place them into the appropriate folders in your addon pack&lt;br /&gt;
# Create a &amp;lt;code&amp;gt;[[poser]]&amp;lt;/code&amp;gt; file for this regional form if new animations were created for the new model. (optional)&lt;br /&gt;
&lt;br /&gt;
As knowledge of creating custom Pokémon is a requirement for this guide, you are expected to know how to make these files. Help can be found on the Cobblemon discord.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Create a &amp;quot;species feature&amp;quot; ===&lt;br /&gt;
On the data side of things, the creation of a regional form starts with the [[Species_Features|species feature]]. A species feature is what allows a Pokémon to have a different set of stats and visuals applied to their regional forms. You will be creating a short JSON file that will be named after your custom region or idea. &#039;&#039;&#039;The feature can be named whatever you want it to be called.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it after your region or idea. Include the extension of&amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: The alolan species feature is named &amp;lt;code&amp;gt;alolan.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Remember to use lowercase and make sure that the file does not end in any other extension like &amp;quot;.txt&amp;quot;&lt;br /&gt;
# Insert the following data into this new species feature JSON:&lt;br /&gt;
#* &#039;&#039;&#039;Remember to change &amp;lt;code&amp;gt;&amp;quot;custom_feature&amp;quot;&amp;lt;/code&amp;gt; to match your file name! It must stay in quotes.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;keys&amp;quot;: [&amp;quot;custom_feature&amp;quot;],&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;flag&amp;quot;,&lt;br /&gt;
  &amp;quot;isAspect&amp;quot;: true,&lt;br /&gt;
  &amp;quot;default&amp;quot;: false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; Save the file&lt;br /&gt;
# Place this new species feature file into the &amp;lt;code&amp;gt;species_feature&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;isAspect&amp;quot;: true&amp;lt;/code&amp;gt; means that this new feature is both a &amp;lt;code&amp;gt;feature&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;aspect&amp;lt;/code&amp;gt;!&lt;br /&gt;
Now that the species feature is made, you can apply it to a Pokémon&#039;s &amp;lt;code&amp;gt;form&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Create a &amp;quot;species addition&amp;quot; file with &amp;quot;form&amp;quot; data ===&lt;br /&gt;
A &amp;lt;code&amp;gt;[[Species_Additions|species_addition]]&amp;lt;/code&amp;gt; file is an efficient way of &#039;&#039;adding&#039;&#039; data to existing species files without having to rewrite the main species file. This allows your additions to be more compatible with other addons affecting the same Pokémon. You will be adding your regional &amp;lt;code&amp;gt;form&amp;lt;/code&amp;gt; data to a species through this method. &lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it after your Pokémon. Include the extension of &amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;bulbasaur.json&amp;lt;/code&amp;gt;&lt;br /&gt;
# Insert the following data into this new species_addition JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;cobblemon:example&amp;quot;,&lt;br /&gt;
  &amp;quot;features&amp;quot;: [&amp;quot;custom_feature&amp;quot;],&lt;br /&gt;
  &amp;quot;forms&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      example form data&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; Change &amp;lt;code&amp;gt;&amp;quot;cobblemon:example&amp;quot;&amp;lt;/code&amp;gt; to reference the Pokémon you want to add a form to. It must remain in quotes. &lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;&amp;quot;cobblemon:bulbasaur&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Change &amp;lt;code&amp;gt;&amp;quot;custom_feature&amp;quot;&amp;lt;/code&amp;gt; to the feature you made earlier. It must remain in quotes. &lt;br /&gt;
# Write all the data for your form inside of the curly brackets&lt;br /&gt;
#* The average form data set is too long to list as an example for this guide. It&#039;s like writing data for an entirely different Pokémon, which is kind of what a regional variant is like. &lt;br /&gt;
#* If you need an example, you can look at the &amp;lt;code&amp;gt;&amp;quot;forms&amp;quot;&amp;lt;/code&amp;gt; data for [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/resources/data/cobblemon/species/generation1/vulpix.json Vulpix on the Gitlab.] It starts on line 29 and ends on line 240.&lt;br /&gt;
#* Remember to include evolution data if this regional variant can evolve.&lt;br /&gt;
# Write your species feature name into the &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;&amp;lt;/code&amp;gt; section of your &amp;lt;code&amp;gt;&amp;quot;forms&amp;quot;&amp;lt;/code&amp;gt; data. &lt;br /&gt;
#* Include the line for aspects if it doesn&#039;t exist yet. It should look like this:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
  &amp;quot;aspects&amp;quot;: [&amp;quot;custom_feature&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Save the file.&lt;br /&gt;
# Place this new species addition file into the &amp;lt;code&amp;gt;species_additions&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
&lt;br /&gt;
Now your target Pokémon&#039;s new form should have the data that allows it to function differently in battles. Next you will create the data that allows it to spawn differently.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Create the spawns for your regional form ===&lt;br /&gt;
The &amp;lt;code&amp;gt;[[Spawn_Pool_World|spawn_pool_world]]&amp;lt;/code&amp;gt; folder holds all the spawning files for each Pokémon. You will be creating a new file for your regional variant. It can be as simple or complicated as you make it. It is recommended that you use the normal form&#039;s spawn file as a base for your regional form. Those spawn files can be found on the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/spawn_pool_world Gitlab.]&lt;br /&gt;
&lt;br /&gt;
To keep things simple, this part of the guide will show you how to recycle a spawn file by changing the Pokémon name and biome conditions. &lt;br /&gt;
# Obtain your target Pokémon&#039;s &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; JSON.&lt;br /&gt;
# Rename the file to anything you want. The name must be different than the original.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;regional_bulbasaur&amp;lt;/code&amp;gt;&lt;br /&gt;
# Open the file and locate all the strings for &amp;lt;code&amp;gt;&amp;quot;id&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;pokemon&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Edit the Pokémon&#039;s name &#039;&#039;&#039;and include&#039;&#039;&#039; the name of your species feature after like this example:&lt;br /&gt;
#* You must use a space after the Pokémon name for the &amp;lt;code&amp;gt;&amp;quot;pokemon&amp;quot;&amp;lt;/code&amp;gt; string.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;bulbasaur-alolan-1&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;bulbasaur alolan&amp;quot;,&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt;Locate all the strings for &amp;lt;code&amp;gt;&amp;quot;biomes&amp;quot;&amp;lt;/code&amp;gt; if they exist&lt;br /&gt;
# Change the listed biome(s) to something different! &lt;br /&gt;
#* This will allow the regional variant to spawn in biomes the normal variant does not.&lt;br /&gt;
#* The list of biome tags can be found [https://docs.google.com/document/d/1iB0EJSc2r6mRJXIo1n3XpHbZ5udwJVnrh2pXdhTyH8c/edit here.]&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new spawn file in the &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
This should be the last of the data folder files. By now, your regional variant can stand on its own data-wise. It should have different stats, and spawns. Now it just needs a different look. &lt;br /&gt;
&lt;br /&gt;
=== Step 6: Create the resolver file for your regional form ===&lt;br /&gt;
Back in step 2, you should have already made the files for &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;posers&amp;lt;/code&amp;gt;. The last thing you need to do is assign them to your regional variant by creating a new &amp;lt;code&amp;gt;[[resolver]]&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
# Obtain your target Pokémon&#039;s &amp;lt;code&amp;gt;resolver&amp;lt;/code&amp;gt; JSON.&lt;br /&gt;
# Change the name of this resolver to &amp;lt;code&amp;gt;1_&amp;lt;pokemon&amp;gt;_base&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You change the number from 0 to 1 so it can load after the normal variant&#039;s data&lt;br /&gt;
#* Sometimes a number greater than 1 is needed, especially if your target Pokémon has gender variants. &lt;br /&gt;
# Open the resolver file and locate the string for &amp;lt;code&amp;gt;&amp;quot;order&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Change the value of &amp;quot;order&amp;quot; from 0 to 1.&lt;br /&gt;
#* Again, sometimes this value needs to be greater than 1.&lt;br /&gt;
# Add the name of your species feature to the &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;&amp;lt;/code&amp;gt; string&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;: [&amp;quot;alolan&amp;quot;]&amp;lt;/code&amp;gt;&lt;br /&gt;
#* This allows any Pokémon that spawned with this feature/aspect to use any following model, textures, or poser.&lt;br /&gt;
# Assign any &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt; that you made in Step 2.&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new resolver in the &amp;lt;code&amp;gt;resolvers&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Test your addon in game ===&lt;br /&gt;
Load your addon in game to see if your regional form looks different from the normal one. You can have Blockbench open to edit any relevant asset file &#039;&#039;&#039;in the resourcepacks folder&#039;&#039;&#039; if needed. &lt;br /&gt;
# Copy your addon folder and place it in the &amp;quot;resourcepacks&amp;quot; and &amp;quot;datapacks&amp;quot; folder in the Minecraft root directory.&lt;br /&gt;
# Start up Minecraft and click on &#039;&#039;Options&#039;&#039;, then &#039;&#039;Resource Packs&#039;&#039;. Select your pack to load it.&lt;br /&gt;
# Load/create a &#039;&#039;&#039;Creative&#039;&#039;&#039; world save that contains your addon in the &amp;quot;datapack&amp;quot; folder.&lt;br /&gt;
# Once in the world, you can run the command &amp;lt;code&amp;gt;/pokespawn &amp;lt;target pokemon&amp;gt; &amp;lt;species feature&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Ensure your new regional form is working properly.&lt;br /&gt;
# Check if your regional form spawns where you assigned it to. You can use &amp;lt;code&amp;gt;/checkspawn &amp;lt;rarity&amp;gt;&amp;lt;/code&amp;gt; when in the assigned biome. &lt;br /&gt;
#* You can run the command &amp;lt;code&amp;gt;/locate biome &amp;lt;assigned biome&amp;gt;&amp;lt;/code&amp;gt; to get coordinates to the assigned biome. You can then click on the coordinates it gave you and be teleported instantly. &lt;br /&gt;
# Make any desired edits to the asset files and save. Refresh resource packs with F3+T to see the changes you make.&lt;br /&gt;
# Make any desired edits to the data files and save. &#039;&#039;&#039;You need to quit to main menu, and load the world again if you want to see those changes.&#039;&#039;&#039;&lt;br /&gt;
#* The command for &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt; does not work with Cobblemon addons unfortunately. &lt;br /&gt;
&lt;br /&gt;
You should now have a functional regional variant!&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Tutorials/Regional_Forms&amp;diff=4716</id>
		<title>Tutorials/Regional Forms</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Tutorials/Regional_Forms&amp;diff=4716"/>
		<updated>2024-06-02T22:34:11Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: /* Step 7: Test your addon in game */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
This tutorial will teach you how to create a regional form for &#039;&#039;&#039;&#039;&#039;an existing Pokémon.&#039;&#039;&#039;&#039;&#039; Regional forms are a species variant that can have different looks, types, abilities, moves, and spawn locations! &#039;&#039;&#039;Knowledge of [[Tutorials/Creating_A_Custom_Pokemon|creating custom Pokémon]] is &#039;&#039;required.&#039;&#039;&#039;&#039;&#039; Creating a unique model and textures for your form is highly recommended, but not always necessary. &lt;br /&gt;
&lt;br /&gt;
Due to regional forms usually requiring files for both data and assets, this type of pack will just be called an &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; for simplicity. Addons that use data and asset folders will end up needing to have a copy in both the &amp;lt;code&amp;gt;datapacks&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;resourcepacks&amp;lt;/code&amp;gt; game folders. The data and assets can be separated if desired, but are usually bundled together to make sharing easier!&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Arrange the folders for this addon ===&lt;br /&gt;
Due to some files sharing the same names later in this guide, you will be creating the folder structure and &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; now. This is to prevent confusion going forward. &lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Ensure that it doesn&#039;t end in other file extensions like .txt&lt;br /&gt;
# Open the file and insert the following data:&lt;br /&gt;
#* Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Minecraft know that it is a datapack&amp;quot;&amp;gt;pack&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list the pack format number for a specific version of Minecraft&amp;quot;&amp;gt;pack_format&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;As of 1.20.1, the current resourcepack format number is 15. But it will still load if this number isn&#039;t correct!&amp;quot;&amp;gt;15&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will write a short description of your datapack&amp;quot;&amp;gt;description&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Your short datapack description&amp;quot;&amp;gt;Example description&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
# &amp;lt;li value=3&amp;gt; Save the file and put it aside for now. &lt;br /&gt;
# Create a series of folders arranged like the following example:&lt;br /&gt;
==== Folder Structure ====&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
**assets&lt;br /&gt;
***cobblemon&lt;br /&gt;
****bedrock&lt;br /&gt;
*****pokemon&lt;br /&gt;
******animations&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
******models&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
******posers&lt;br /&gt;
******resolvers&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
****textures&lt;br /&gt;
*****pokemon&lt;br /&gt;
******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
**data&lt;br /&gt;
***cobblemon&lt;br /&gt;
****spawn_pool_world&lt;br /&gt;
****species_additions&lt;br /&gt;
****species_features&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt;Place the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; file into the first folder of your addon next to &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt;&lt;br /&gt;
After this folder tree for your addon is made, you can simply drop the files into the associated folders as you create them. &lt;br /&gt;
Remember that the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; is a file, not a folder to add. It must be one folder deep in order for Minecraft to recognize this pack as a resource pack or data pack when in the appropriate game folders. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Create the assets for your regional variant ===&lt;br /&gt;
How you want your regional variant to look depends entirely on you. You can make it use a new texture over the original model. Most of the time, a new model, texture, and animations are created for this regional form. If for some reason you don&#039;t want it to have a visual difference at all, then you can skip anything regarding &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;. Make sure your assets have a unique name so they don&#039;t overwrite any original form assets.&lt;br /&gt;
&lt;br /&gt;
Assets for existing Pokémon can be obtained from the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/assets/cobblemon/bedrock/pokemon/models Gitlab] or the mod&#039;s JAR file. This can be helpful if you wanted to make a texture variant, or use the model as a base for the regional form. Just remember that animation files are made for specific models so they may need updating depending on what you make. These assets can be made in Blockbench or any relevant art apps. &lt;br /&gt;
&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;texture&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Export these files and place them into the appropriate folders in your addon pack&lt;br /&gt;
# Create a &amp;lt;code&amp;gt;[[poser]]&amp;lt;/code&amp;gt; file for this regional form if new animations were created for the new model. (optional)&lt;br /&gt;
&lt;br /&gt;
As knowledge of creating custom Pokémon is a requirement for this guide, you are expected to know how to make these files. Help can be found on the Cobblemon discord.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Create a &amp;quot;species feature&amp;quot; ===&lt;br /&gt;
On the data side of things, the creation of a regional form starts with the [[Species_Features|species feature]]. A species feature is what allows a Pokémon to have a different set of stats and visuals applied to their regional forms. You will be creating a short JSON file that will be named after your custom region or idea. &#039;&#039;&#039;The feature can be named whatever you want it to be called.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it after your region or idea. Include the extension of&amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: The alolan species feature is named &amp;lt;code&amp;gt;alolan.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Remember to use lowercase and make sure that the file does not end in any other extension like &amp;quot;.txt&amp;quot;&lt;br /&gt;
# Insert the following data into this new species feature JSON:&lt;br /&gt;
#* &#039;&#039;&#039;Remember to change &amp;lt;code&amp;gt;&amp;quot;custom_feature&amp;quot;&amp;lt;/code&amp;gt; to match your file name! It must stay in quotes.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;keys&amp;quot;: [&amp;quot;custom_feature&amp;quot;],&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;flag&amp;quot;,&lt;br /&gt;
  &amp;quot;isAspect&amp;quot;: true,&lt;br /&gt;
  &amp;quot;default&amp;quot;: false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; Save the file&lt;br /&gt;
# Place this new species feature file into the &amp;lt;code&amp;gt;species_feature&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;isAspect&amp;quot;: true&amp;lt;/code&amp;gt; means that this new feature is both a &amp;lt;code&amp;gt;feature&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;aspect&amp;lt;/code&amp;gt;!&lt;br /&gt;
Now that the species feature is made, you can apply it to a Pokémon&#039;s &amp;lt;code&amp;gt;form&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Create a &amp;quot;species addition&amp;quot; file with &amp;quot;form&amp;quot; data ===&lt;br /&gt;
A &amp;lt;code&amp;gt;[[Species_Additions|species_addition]]&amp;lt;/code&amp;gt; file is an efficient way of &#039;&#039;adding&#039;&#039; data to existing species files without having to rewrite the main species file. This allows your additions to be more compatible with other addons affecting the same Pokémon. You will be adding your regional &amp;lt;code&amp;gt;form&amp;lt;/code&amp;gt; data to a species through this method. &lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it after your Pokémon. Include the extension of &amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;bulbasaur.json&amp;lt;/code&amp;gt;&lt;br /&gt;
# Insert the following data into this new species_addition JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;cobblemon:example&amp;quot;,&lt;br /&gt;
  &amp;quot;features&amp;quot;: [&amp;quot;custom_feature&amp;quot;],&lt;br /&gt;
  &amp;quot;forms&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      example form data&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; Change &amp;lt;code&amp;gt;&amp;quot;cobblemon:example&amp;quot;&amp;lt;/code&amp;gt; to reference the Pokémon you want to add a form to. It must remain in quotes. &lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;&amp;quot;cobblemon:bulbasaur&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Change &amp;lt;code&amp;gt;&amp;quot;custom_feature&amp;quot;&amp;lt;/code&amp;gt; to the feature you made earlier. It must remain in quotes. &lt;br /&gt;
# Write all the data for your form inside of the curly brackets&lt;br /&gt;
#* The average form data set is too long to list as an example for this guide. It&#039;s like writing data for an entirely different Pokémon, which is kind of what a regional variant is like. &lt;br /&gt;
#* If you need an example, you can look at the &amp;lt;code&amp;gt;&amp;quot;forms&amp;quot;&amp;lt;/code&amp;gt; data for [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/resources/data/cobblemon/species/generation1/vulpix.json Vulpix on the Gitlab.] It starts on line 29 and ends on line 204.&lt;br /&gt;
#* Remember to include evolution data if this regional variant can evolve.&lt;br /&gt;
# Write your species feature name into the &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;&amp;lt;/code&amp;gt; section of your &amp;lt;code&amp;gt;&amp;quot;forms&amp;quot;&amp;lt;/code&amp;gt; data. &lt;br /&gt;
#* Include the line for aspects if it doesn&#039;t exist yet. It should look like this:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
  &amp;quot;aspects&amp;quot;: [&amp;quot;custom_feature&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Save the file.&lt;br /&gt;
# Place this new species addition file into the &amp;lt;code&amp;gt;species_additions&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
&lt;br /&gt;
Now your target Pokémon&#039;s new form should have the data that allows it to function differently in battles. Next you will create the data that allows it to spawn differently.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Create the spawns for your regional form ===&lt;br /&gt;
The &amp;lt;code&amp;gt;[[Spawn_Pool_World|spawn_pool_world]]&amp;lt;/code&amp;gt; folder holds all the spawning files for each Pokémon. You will be creating a new file for your regional variant. It can be as simple or complicated as you make it. It is recommended that you use the normal form&#039;s spawn file as a base for your regional form. Those spawn files can be found on the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/spawn_pool_world Gitlab.]&lt;br /&gt;
&lt;br /&gt;
To keep things simple, this part of the guide will show you how to recycle a spawn file by changing the Pokémon name and biome conditions. &lt;br /&gt;
# Obtain your target Pokémon&#039;s &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; JSON.&lt;br /&gt;
# Rename the file to anything you want. The name must be different than the original.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;regional_bulbasaur&amp;lt;/code&amp;gt;&lt;br /&gt;
# Open the file and locate all the strings for &amp;lt;code&amp;gt;&amp;quot;id&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;pokemon&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Edit the Pokémon&#039;s name &#039;&#039;&#039;and include&#039;&#039;&#039; the name of your species feature after like this example:&lt;br /&gt;
#* You must use a space after the Pokémon name for the &amp;lt;code&amp;gt;&amp;quot;pokemon&amp;quot;&amp;lt;/code&amp;gt; string.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;bulbasaur-alolan-1&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;bulbasaur alolan&amp;quot;,&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt;Locate all the strings for &amp;lt;code&amp;gt;&amp;quot;biomes&amp;quot;&amp;lt;/code&amp;gt; if they exist&lt;br /&gt;
# Change the listed biome(s) to something different! &lt;br /&gt;
#* This will allow the regional variant to spawn in biomes the normal variant does not.&lt;br /&gt;
#* The list of biome tags can be found [https://docs.google.com/document/d/1iB0EJSc2r6mRJXIo1n3XpHbZ5udwJVnrh2pXdhTyH8c/edit here.]&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new spawn file in the &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
This should be the last of the data folder files. By now, your regional variant can stand on its own data-wise. It should have different stats, and spawns. Now it just needs a different look. &lt;br /&gt;
&lt;br /&gt;
=== Step 6: Create the resolver file for your regional form ===&lt;br /&gt;
Back in step 2, you should have already made the files for &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;posers&amp;lt;/code&amp;gt;. The last thing you need to do is assign them to your regional variant by creating a new &amp;lt;code&amp;gt;[[resolver]]&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
# Obtain your target Pokémon&#039;s &amp;lt;code&amp;gt;resolver&amp;lt;/code&amp;gt; JSON.&lt;br /&gt;
# Change the name of this resolver to &amp;lt;code&amp;gt;1_&amp;lt;pokemon&amp;gt;_base&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You change the number from 0 to 1 so it can load after the normal variant&#039;s data&lt;br /&gt;
#* Sometimes a number greater than 1 is needed, especially if your target Pokémon has gender variants. &lt;br /&gt;
# Open the resolver file and locate the string for &amp;lt;code&amp;gt;&amp;quot;order&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Change the value of &amp;quot;order&amp;quot; from 0 to 1.&lt;br /&gt;
#* Again, sometimes this value needs to be greater than 1.&lt;br /&gt;
# Add the name of your species feature to the &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;&amp;lt;/code&amp;gt; string&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;: [&amp;quot;alolan&amp;quot;]&amp;lt;/code&amp;gt;&lt;br /&gt;
#* This allows any Pokémon that spawned with this feature/aspect to use any following model, textures, or poser.&lt;br /&gt;
# Assign any &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt; that you made in Step 2.&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new resolver in the &amp;lt;code&amp;gt;resolvers&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Test your addon in game ===&lt;br /&gt;
Load your addon in game to see if your regional form looks different from the normal one. You can have Blockbench open to edit any relevant asset file &#039;&#039;&#039;in the resourcepacks folder&#039;&#039;&#039; if needed. &lt;br /&gt;
# Copy your addon folder and place it in the &amp;quot;resourcepacks&amp;quot; and &amp;quot;datapacks&amp;quot; folder in the Minecraft root directory.&lt;br /&gt;
# Start up Minecraft and click on &#039;&#039;Options&#039;&#039;, then &#039;&#039;Resource Packs&#039;&#039;. Select your pack to load it.&lt;br /&gt;
# Load/create a &#039;&#039;&#039;Creative&#039;&#039;&#039; world save that contains your addon in the &amp;quot;datapack&amp;quot; folder.&lt;br /&gt;
# Once in the world, you can run the command &amp;lt;code&amp;gt;/pokespawn &amp;lt;target pokemon&amp;gt; &amp;lt;species feature&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Ensure your new regional form is working properly.&lt;br /&gt;
# Check if your regional form spawns where you assigned it to. You can use &amp;lt;code&amp;gt;/checkspawn &amp;lt;rarity&amp;gt;&amp;lt;/code&amp;gt; when in the assigned biome. &lt;br /&gt;
#* You can run the command &amp;lt;code&amp;gt;/locate biome &amp;lt;assigned biome&amp;gt;&amp;lt;/code&amp;gt; to get coordinates to the assigned biome. You can then click on the coordinates it gave you and be teleported instantly. &lt;br /&gt;
# Make any desired edits to the asset files and save. Refresh resource packs with F3+T to see the changes you make.&lt;br /&gt;
# Make any desired edits to the data files and save. &#039;&#039;&#039;You need to quit to main menu, and load the world again if you want to see those changes.&#039;&#039;&#039;&lt;br /&gt;
#* The command for &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt; does not work with Cobblemon addons unfortunately. &lt;br /&gt;
&lt;br /&gt;
You should now have a functional regional variant!&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4576</id>
		<title>Template:Addon Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4576"/>
		<updated>2024-05-19T13:54:11Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Updated Addon Creation Template to show new and old poser pages&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavigationBox&lt;br /&gt;
|title=Addon Creation&lt;br /&gt;
|rows=&lt;br /&gt;
  {{NavigationRow|category=Tutorials|content=&lt;br /&gt;
    [[Tutorials/Creating A Custom Pokemon|Creating A Custom Pokemon]] [[Tutorials/Creating A Model|Creating A Model]] [[Tutorials/Creating Custom Spawns|Creating Custom Spawns]] [[Tutorials/Emissive Textures|Emissive Textures]] [[Tutorials/Animated Textures|Animated Textures]] [[Tutorials/Texture replacement|Texture Replacement]] [[Tutorials/Animation Replacement|Animation Replacement]] [[Tutorials/Regional_Forms| Regional Forms]][[Tutorials/Multiple Visual Variants|Multiple Visual Variants]] [[Tutorials/Adding_Sounds_To_Animations|Adding Sounds To Animations]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Asset Files|content=&lt;br /&gt;
    [[Resolver]] [[Poser| Old Poser]] [[New_Poser| New Poser]] [[Sounds]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Data Files|content=&lt;br /&gt;
    [[Species]] [[Species Features]] [[Species Feature Assignments]] [[Species Additions]] [[Spawn Detail Presets]] [[Spawn Pool World]] [[Fossils_File|Fossils]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Properties|content=&lt;br /&gt;
    [[Pokémon/Behaviour|Behaviour]] [[Spawn Condition]] [[Advancements]]&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Addon Creation]]&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Tutorials/Creating_Custom_Spawns&amp;diff=4575</id>
		<title>Tutorials/Creating Custom Spawns</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Tutorials/Creating_Custom_Spawns&amp;diff=4575"/>
		<updated>2024-05-19T13:52:35Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Updated conditions links to use wiki page instead&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
This tutorial will show you how to create your own custom Pokémon spawns. The JSONs in the [[Spawn Pool World|spawn pool world]] folder control how a Pokémon will spawn naturally. You can create or edit files for each Pokémon to give them new spawn conditions. Writing some extra data in the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; of a datapack can also nullify the spawns from the base mod. You can use this to have total control over Pokémon spawns. &lt;br /&gt;
&lt;br /&gt;
Some third party tools exist to help with the mass production of spawn files. Help with mass spawn file production can be found on the Cobblemon Discord server. &lt;br /&gt;
&lt;br /&gt;
=== Step 1: Arrange the folders for this addon ===&lt;br /&gt;
Depending on the kind of addon you want to make, you may want to make some slight adjustments to your folder structure of your spawn files. Generally, you can arrange your custom spawn files the same way other addons do. Your spawn files can have their own &amp;lt;code&amp;gt;namespace&amp;lt;/code&amp;gt; if you don&#039;t want them to be affected by other mods. &lt;br /&gt;
&lt;br /&gt;
==== Create a pack.mcmeta to suit your needs ====&lt;br /&gt;
Your &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; can affect how your addon will work with other addons loaded before yours. A normal pack.mcmeta will have no affect on other addons, but adding some extra lines of data to it can completely nullify files in a specified folder. &lt;br /&gt;
&lt;br /&gt;
Use one of the following &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; examples below. Unless you have plans to negate all other spawns, like making your own custom region for something, then just make an addon friendly &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; file!&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The addon friendly pack.mcmeta&#039;&#039;&#039; - This one wont affect other addon files&lt;br /&gt;
*# Create a new text file and name it &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* Ensure that it doesn&#039;t end in other file extensions like .txt&lt;br /&gt;
*# Open the file and insert the following data:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Minecraft know that it is a datapack&amp;quot;&amp;gt;pack&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list the pack format number for a specific version of minecraft&amp;quot;&amp;gt;pack_format&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;As of 1.20.1, the current datapack format number is 15. But it will still load if this number isn&#039;t correct!&amp;quot;&amp;gt;15&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will write a short description of your datapack&amp;quot;&amp;gt;description&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Your short datapack description&amp;quot;&amp;gt;Example datapack description&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
::# &amp;lt;li value=3&amp;gt; Save the file and prepare to place it in your addon folders.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* &#039;&#039;&#039;The pack.mcmeta that negates all other spawns&#039;&#039;&#039; - Will prevent spawns in the base mod or addons loaded before it from working. &lt;br /&gt;
*# Create a new text file and name it &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt;&lt;br /&gt;
*#* Ensure that it doesn&#039;t end in other file extensions like .txt&lt;br /&gt;
*# Open the file and insert the following data:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Minecraft know that it is a datapack&amp;quot;&amp;gt;pack&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list the pack format number for a specific version of Minecraft&amp;quot;&amp;gt;pack_format&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;As of 1.20.1, the current datapack format number is 15. But it will still load if this number isn&#039;t correct!&amp;quot;&amp;gt;15&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will write a short description of your datapack&amp;quot;&amp;gt;description&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Your short datapack description&amp;quot;&amp;gt;Example datapack description&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This tells Minecraft that you want to filter some previously loaded data&amp;quot;&amp;gt;filter&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;This tells Minecraft that you want to block the listed folders and its files&amp;quot;&amp;gt;block&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
        {&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will specify what namespaces you want to filter from. A namespace is the folder inside of the data folder for datapacks&amp;quot;&amp;gt;namespace&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are specifying that you want to block some folders that are inside the cobblemon namespace&amp;quot;&amp;gt;cobblemon&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
          &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list the exact folder path that you want blocked&amp;quot;&amp;gt;path&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;You are specifying that you want to block any files in the spawn pool world folder of the cobblemon namespace. This would often be any other addon&#039;s spawn files.&amp;quot;&amp;gt;spawn_pool_world&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      ]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
::# &amp;lt;li value=3&amp;gt; Save the file and prepare to place it in your addon folders.&lt;br /&gt;
&lt;br /&gt;
Now, you can create the folders to place your files into.&lt;br /&gt;
&lt;br /&gt;
==== Folder Structure ====&lt;br /&gt;
Now you can create the folder structure for your addon. Create a series of folders arranged like the following example. Don&#039;t forget to place your &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; that you just made. You can create your own namespace instead of using the cobblemon namespace if you don&#039;t want your spawn files to be affected from folder blocking. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Folder Structure&#039;&#039;&#039;&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
**data&lt;br /&gt;
***&amp;lt;abbr title=&amp;quot;This is a namespace. You can create your own if you need to&amp;quot;&amp;gt;cobblemon&amp;lt;/abbr&amp;gt;&lt;br /&gt;
****spawn_pool_world&lt;br /&gt;
*****&#039;&#039;&amp;lt;sub_folders&amp;gt;&#039;&#039; (optional)&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
All of the &amp;lt;code&amp;gt;spawn files&amp;lt;/code&amp;gt; will be placed somewhere in the spawn pool world folder!&lt;br /&gt;
&lt;br /&gt;
=== Step 2: Create your spawn files ===&lt;br /&gt;
There&#039;s a lot of data that can go into a &amp;lt;code&amp;gt;[[Spawn Pool World|spawn file]]&amp;lt;/code&amp;gt;. The data in spawn files can be rather self-explanatory. These files can be as simple as &amp;quot;spawn in the forest&amp;quot;, or as complicated as &amp;quot;spawn at 2:30AM-3:00AM on top of clay during the new moon in an ocean biome that is south of spawn.&amp;quot; The possibilities are limited by your creativity and understanding of [[Spawn_Condition| spawn conditions]]&lt;br /&gt;
&lt;br /&gt;
Keep in mind that the sort of &amp;quot;economy&amp;quot; of local spawns will affect the rarity of the Pokémon you are making spawn files for. For example, if you made spawn conditions for a Kyogre to spawn on the ocean surface in the ultra-rare pool with a really low weight, it will actually spawn more frequently than you intended despite the low weight. This is because there aren&#039;t many ultra-rare water surface spawns to begin with. If this example Kyogre is the only ultra-rare spawn in this local ultra-rare pool, then whenever the game decides to spawn an ultra-rare Pokémon, it will be Kyogre 100% of the time. Kyogre would have no other ultra-rare spawn to compete with so it will always be the chosen spawn. &lt;br /&gt;
&lt;br /&gt;
Here is a list of options that some of the spawn properties can use: &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;presets&amp;quot;&#039;&#039;&#039;: You can use any of these presets listed on the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/spawn_detail_presets Gitlab] or you can make your own [[Spawn Detail Presets|presets]].&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;context&amp;quot;&#039;&#039;&#039;: You can choose between &amp;lt;code&amp;gt;&amp;quot;grounded&amp;quot;&amp;lt;/code&amp;gt; for land spawns, &amp;lt;code&amp;gt;&amp;quot;submerged&amp;quot;&amp;lt;/code&amp;gt; for underwater spawns, and &amp;lt;code&amp;gt;&amp;quot;surface&amp;quot;&amp;lt;/code&amp;gt; for spawns on the surface of water or lava.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;bucket&amp;quot;&#039;&#039;&#039;: The rarity pool of the Pokémon. You can choose &amp;lt;code&amp;gt;&amp;quot;common&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;uncommon&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;rare&amp;quot;&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;&amp;quot;ultra-rare&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;weight&amp;quot;&#039;&#039;&#039;: This determines how common the Pokémon will be inside of the assigned rarity pool. Generally, you can treat it like a scale of 0.1 to 10 on how rare it will be in that pool. You can use numbers higher than 10 if you really want that Pokémon to spawn more often. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;condition&amp;quot;&#039;&#039;&#039;: You can use any of the conditions listed [[Spawn_Condition| here]] to make Pokémon spawn&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;anticondition&amp;quot;&#039;&#039;&#039;: You can use any of the conditions listed [[Spawn_Condition| here]] to &#039;&#039;&#039;PREVENT&#039;&#039;&#039; a Pokémon from spawning&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;biomes&amp;quot;&#039;&#039;&#039;: A subcategory of conditions and anticonditions. You can use biome ids or any [https://docs.google.com/document/d/1iB0EJSc2r6mRJXIo1n3XpHbZ5udwJVnrh2pXdhTyH8c/edit biome tags]. Should work with modded biome id&#039;s too!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To keep things simple, this part of the guide will show you how to create a spawn file from a template.&lt;br /&gt;
# Obtain a JSON to use as a template from the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/spawn_pool_world Gitlab].&lt;br /&gt;
#* Buneary is a great example template. The file is short, but Buneary is very common due to having 3 biome groups it can spawn in.&lt;br /&gt;
# Rename the file to anything you want. The name must be different than the original.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;bunearyspawn2&amp;lt;/code&amp;gt;&lt;br /&gt;
#* If the file name and folder path are exactly the same as the base mod, then it will replace the base mod&#039;s spawn file instead. This is only recommended if you want to tune existing spawn files to your liking.&lt;br /&gt;
# Open the file and locate all the strings for &amp;lt;code&amp;gt;&amp;quot;id&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;pokemon&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Edit the Pokémon&#039;s name &#039;&#039;&#039;and replace&#039;&#039;&#039; it with the Pokémon you want to make custom spawns for.&lt;br /&gt;
#* If you stop after this step, then the replacement Pokémon will now spawn in the exact same conditions as the previous Pokémon.&lt;br /&gt;
# Replace the list of &amp;lt;code&amp;gt;&amp;quot;[[Spawn Detail Presets|presets]]&amp;quot;&amp;lt;/code&amp;gt; if desired&lt;br /&gt;
#* A list of available presets can be found on the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/spawn_detail_presets Gitlab]&lt;br /&gt;
# Replace the value for &amp;lt;code&amp;gt;&amp;quot;context&amp;quot;&amp;lt;/code&amp;gt; if desired.&lt;br /&gt;
# Replace the value for &amp;lt;code&amp;gt;&amp;quot;bucket&amp;quot;&amp;lt;/code&amp;gt; if desired.&lt;br /&gt;
# Change the values for &amp;lt;code&amp;gt;&amp;quot;level&amp;quot;&amp;lt;/code&amp;gt;. This is the minimum and maximum level it will spawn at.&lt;br /&gt;
# Replace the value for &amp;lt;code&amp;gt;&amp;quot;weight&amp;quot;&amp;lt;/code&amp;gt; if desired.&lt;br /&gt;
#* Treat the number like a scale of 0.1 to 10 for its rarity bucket. This will keep your spawns balanced with other spawn files. &lt;br /&gt;
# Change the&amp;lt;code&amp;gt;&amp;quot;condition&amp;quot;&amp;lt;/code&amp;gt; values if desired.&lt;br /&gt;
#* Most of the time, you&#039;ll want to change the list of &amp;lt;code&amp;gt;&amp;quot;biomes&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Change the&amp;lt;code&amp;gt;&amp;quot;anticondition&amp;quot;&amp;lt;/code&amp;gt; values if desired.&lt;br /&gt;
#* Sometimes you might even want to delete this section if it exists in the template.&lt;br /&gt;
# Save the file.&lt;br /&gt;
# Place this new spawn file in the &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
# Repeat the whole process for any other spawn files you want to make!&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Test your addon in game ===&lt;br /&gt;
Load your addon in game to see if your custom spawn files are working. You can have your preferred file editor open to edit any relevant JSON files &#039;&#039;&#039;in the datapacks folder&#039;&#039;&#039; if needed. &lt;br /&gt;
# Copy your addon folder and place it in the &amp;quot;datapacks&amp;quot; folder of your world in the Minecraft root directory.&lt;br /&gt;
# Start up Minecraft.&lt;br /&gt;
# Load/create a &#039;&#039;&#039;Creative&#039;&#039;&#039; world save that contains your addon in the &amp;quot;datapack&amp;quot; folder.&lt;br /&gt;
# Check if your target Pokémon spawns where you assigned it to. You can use &amp;lt;code&amp;gt;/checkspawn &amp;lt;rarity&amp;gt;&amp;lt;/code&amp;gt; when in the assigned biome. &lt;br /&gt;
#* You can run the command &amp;lt;code&amp;gt;/locate biome &amp;lt;assigned biome&amp;gt;&amp;lt;/code&amp;gt; to get coordinates to the assigned biome. You can then click on the coordinates it gave you and be teleported instantly. &lt;br /&gt;
#* You can also use the command &amp;lt;code&amp;gt;/locate structure &amp;lt;assigned structure&amp;gt;&amp;lt;/code&amp;gt; if you used a structure condition.&lt;br /&gt;
# Ensure that your target Pokémon at least appears in the &amp;lt;code&amp;gt;checkspawn&amp;lt;/code&amp;gt; list after meeting its conditions.&lt;br /&gt;
#* If your Pokémon appears in this checkspawn list, then it will spawn in the area eventually! It&#039;s always a matter of time and RNG. &lt;br /&gt;
# Make any desired edits to the data files and save. &#039;&#039;&#039;You need to quit to main menu, and load the world again if you want to see those changes.&#039;&#039;&#039;&lt;br /&gt;
#* The command for &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt; does not work with Cobblemon addons unfortunately. &lt;br /&gt;
&lt;br /&gt;
You should now have new natural Pokémon spawns!&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4571</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4571"/>
		<updated>2024-05-19T12:27:12Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: /* Placeholder Animations */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Under construction. Dont look or else!&lt;br /&gt;
&lt;br /&gt;
{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The new &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the new Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. Animation types would include your faints, cries, and attack animations. Below is a list of currently available Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_stateful ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_primary ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special transition animation types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 4 primary animation in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.curve ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock ====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation format from the [[Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a larger Z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isSubmergedInWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each placeholder features a very simple animation that swings a limb back and forth. For now, you&#039;ll have to figure out how to configure these yourself lol&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a list of all the Placeholder animations:&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L172 &amp;quot;q.quadruped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walk animation for Pokémon with 4 legs&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L192 &amp;quot;q.biped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walking animation for Pokémon who stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L208 &amp;quot;q.bimanual_swing()&amp;quot;]&amp;lt;/code&amp;gt; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L224 &amp;quot;q.sine_wing_flap()&amp;quot;]&amp;lt;/code&amp;gt; - A basic wing flap animation for a pair of wings on a Pokémon. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 2.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.1, 0.58, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.75,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0.68, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4570</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4570"/>
		<updated>2024-05-19T12:24:56Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: AAAAAAAAAAAHHHHH&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Under construction. Dont look or else!&lt;br /&gt;
&lt;br /&gt;
{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The new &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the new Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. Animation types would include your faints, cries, and attack animations. Below is a list of currently available Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_stateful ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_primary ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special transition animation types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 4 primary animation in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.curve ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock ====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation format from the [[Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a larger Z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isSubmergedInWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each animation features a very simple animation that swings a limb back and forth. For now, you&#039;ll have to figure out how to configure these yourself lol&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a list of all the Placeholder animations:&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L172 &amp;quot;q.quadruped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walk animation for Pokémon with 4 legs&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L192 &amp;quot;q.biped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walking animation for Pokémon who stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L208 &amp;quot;q.bimanual_swing()&amp;quot;]&amp;lt;/code&amp;gt; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L224 &amp;quot;q.sine_wing_flap()&amp;quot;]&amp;lt;/code&amp;gt; - A basic wing flap animation for a pair of wings on a Pokémon. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
Soon™&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that not all Pokémon have a bone called &amp;lt;code&amp;gt;head&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;riolu&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Riolu obviously can&#039;t fly. This is just an example as no Pokémon can do everything currently.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 2.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.1, 0.58, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.75,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [0, 0.68, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;riolu&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;riolu&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hover&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;HOVER&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;fly&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLY&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;air_fly&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;riolu&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_left&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_LEFT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_left&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;shoulder_right&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SHOULDER_RIGHT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;shoulder_right&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;riolu&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4569</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4569"/>
		<updated>2024-05-19T11:56:30Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Messy Construction&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Under construction. Dont look or else!&lt;br /&gt;
&lt;br /&gt;
{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The new &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the new Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. You will notice that the poser now includes something in the format of &amp;lt;code&amp;gt;q.&amp;lt;function&amp;gt;&amp;lt;/code&amp;gt;. These are molang functions which allow you to do many new things. The q stands for query and its just part of the standard format for these new functions. Some functions can even go inside of other functions. It&#039;s not terribly complicated once you read what each one does. They allow addon creators to do many things they couldn&#039;t before!&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. Animation types would include your faints, cries, and attack animations. Below is a list of currently available Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_stateful ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_primary ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special transition animation types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 4 primary animation in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.curve ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock ====&lt;br /&gt;
The &amp;lt;code&amp;gt;q.bedrock()&amp;lt;/code&amp;gt; function is the familiar animation format from the [[Poser | old poser]] which got converted into a molang function. It&#039;s the same thing as before, just in a new look. You are still just listing your Pokémon and then the animation in the parenthesis. This function is mainly used to assign poses their animations. These animations are meant to be overwritten by Primary or Stateful animations whenever convenient.&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of the &amp;lt;code&amp;gt;q.bedrock&amp;lt;/code&amp;gt; function assigning a walk animation to the &amp;lt;code&amp;gt;&amp;quot;WALK&amp;quot;&amp;lt;/code&amp;gt; pose type:&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a larger Z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isSubmergedInWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Look Animation(s) ===&lt;br /&gt;
The new Poser allows you to manipulate the look animation in a number of ways. Creators can now list multiple look animations where each one can define its own head bone and edit some of the properties of the look animation. Changing the properties allows you to manipulate the sight cone of the Pokémon if desired. This can help prevent some odd clipping or extend/shorten how far it can look up and down or left and right. Having multiple look animations allows for Pokémon with multiple heads to turn each head individually. You could even assign the torso and head bones to look at the same time while limiting the range for each. This can be helpful for Pokémon with little to no neck and they have to look with their body more than their head. &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The &amp;lt;code&amp;gt;q.look()&amp;lt;/code&amp;gt; function is the format of this new look animation. When using this function, all the properties must be listed in a specific order and the name of the bone must be in single quotes. (the apostrophe key) &amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* Please refer to the image below to visualize pitch, yaw, and the origin.&lt;br /&gt;
* Pressing F3+B in game can show the hitboxes. That blue line shows where the pokemon is looking at and if its looking at nothing, it is centered at 0 pitch and yaw. You can call this the origin.&amp;lt;/br&amp;gt;&lt;br /&gt;
[[File:Sight_Cones.png|800px|caption|The default sight cone visualized.]]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.look&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
* With the exception of the bone name, these are also the default values for each property&lt;br /&gt;
# Bone name: &amp;lt;code&amp;gt;&#039;head_ai&#039;&amp;lt;/code&amp;gt; - The name of the bone on the model which will perform the look animation&lt;br /&gt;
# Pitch Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of pitch gained by this amount. Can use -1 to invert the pitch!&lt;br /&gt;
# Yaw Multiplier - &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - Multiplies the amount of yaw gained by this amount. Can use -1 to invert the yaw!&lt;br /&gt;
# Max Pitch - &amp;lt;code&amp;gt;70&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look down from origin.&lt;br /&gt;
# Min Pitch - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look up from origin.&lt;br /&gt;
# Max Yaw - &amp;lt;code&amp;gt;45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look right from origin.&lt;br /&gt;
# Min Yaw - &amp;lt;code&amp;gt;-45&amp;lt;/code&amp;gt; - How many degrees the Pokémon can look left from origin. &lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
A look animation using the previously listed values would look something like this inside of the standing pose:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;, 1, 1, 70, -45, 45, -45)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to use the default values and keep it short, you can also write it like this:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
If you want to list multiple head bones, you can write the q.look function multiple times:&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.look(&#039;torso&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;riolu&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
The new poser allows creators to use the placeholder animations which the JSON poser could not access before. These placeholder animations are based on the body type or limb features of the Pokémon. Each animation features a very simple animation that swings a limb back and forth. For now, you&#039;ll have to figure out how to configure these yourself lol&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is a list of all the Placeholder animations:&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L172 &amp;quot;q.quadruped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walk animation for Pokémon with 4 legs&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L192 &amp;quot;q.biped_walk()&amp;quot;]&amp;lt;/code&amp;gt; - A basic walking animation for Pokémon who stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L208 &amp;quot;q.bimanual_swing()&amp;quot;]&amp;lt;/code&amp;gt; - A basic arm swinging animation for Pokémon with 2 arms that usually stand on 2 legs.&lt;br /&gt;
* &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/PoseableEntityModel.kt#L224 &amp;quot;q.sine_wing_flap()&amp;quot;]&amp;lt;/code&amp;gt; - A basic wing flap animation for a pair of wings on a Pokémon. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; file requires an &amp;lt;code&amp;gt;animation&amp;lt;/code&amp;gt; JSON to assign animations to a &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;. You&#039;re always going to want to be familiar with all the animations that were made for a model. If you assign an animation type that doesn&#039;t exist in the animation JSON then the game will crash! Also, if a bone you listed in the poser doesn&#039;t exist on the model then the game will crash! Once you figure out what animations were made for your target Pokémon model, you can simply apply the existing animations to appropriate &amp;lt;code&amp;gt;poses&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Here is a breakdown of an example poser file which includes all the different properties that can be assigned. Hover over the underlined text to see more information. &#039;&#039;&#039;Every kind of possible poser function is included in this example at least once! So make sure that you review the whole file to see why some things are written the way they are.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* This example is not meant to be used as a template.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.7, 2.1, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.45,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [-0.1, 1.0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that some Pokémon don&#039;t use a &amp;lt;code&amp;gt;head bone&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;starly&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.7, 2.1, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.45,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [-0.1, 1.0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=File:Sight_Cones.png&amp;diff=4568</id>
		<title>File:Sight Cones.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=File:Sight_Cones.png&amp;diff=4568"/>
		<updated>2024-05-19T11:35:38Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Very Good Diagram&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Very Good Diagram&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4566</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4566"/>
		<updated>2024-05-19T09:49:41Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: /* Quirks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Under construction. Dont look or else!&lt;br /&gt;
&lt;br /&gt;
{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The new &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the new Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. &lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. Animation types would include your faints, cries, and attack animations. Below is a list of currently available Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_stateful ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_primary ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special transition animation types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 4 primary animation in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.curve ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a larger Z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isSubmergedInWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are stateful animations (for now) that you can have play over the main animation for a pose. The new poser format introduced a shorthand method to writing in your quirk animations in the &amp;lt;code&amp;gt;q.bedrock_quirk()&amp;lt;/code&amp;gt; format. The [[Poser#Quirks | old Poser method for quirks]] can be condensed into one line using this function. When using this function, all the properties must be listed in specific order, placed inside of single quotes (the apostrophe key) unless its a number, and separated by commas.&lt;br /&gt;
&lt;br /&gt;
If your poser and animations are made just right, then you can have a single Pokémon running so many quirk animations at once. Remember that you can combine any of the following quirk examples if you have lots of animations like Blastoise.&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The properties of &amp;lt;code&amp;gt;q.bedrock_quirk&amp;lt;/code&amp;gt; must be in the following order:&lt;br /&gt;
# Animation Group: &amp;lt;code&amp;gt;&#039;blastoise&#039;&amp;lt;/code&amp;gt; - the name of the Pokémon&lt;br /&gt;
# Animation Name(s): &amp;lt;code&amp;gt;&#039;quirk_ground_idle&#039;&amp;lt;/code&amp;gt; - the name of the animation. Supports a pool of animations using the &amp;lt;code&amp;gt;q.array&amp;lt;/code&amp;gt; function&lt;br /&gt;
# Minimum seconds between occurences: &amp;lt;code&amp;gt;20&amp;lt;/code&amp;gt; - The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time.&lt;br /&gt;
# Maximum seconds between occurences: &amp;lt;code&amp;gt;60&amp;lt;/code&amp;gt; - What do you think?&lt;br /&gt;
# Loop times: &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt; - The number of times the animation should play for the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
The previously listed properties would get written as a quirk like so:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
You don&#039;t need to include all the properties if you just want to use the default values of 8-30 seconds between quirks. You can write it like so to use the default values and keep it short:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.array ====&lt;br /&gt;
You can replace your animation name with the &amp;lt;code&amp;gt;q.array()&amp;lt;/code&amp;gt; function to have the quirk pick from a list of animations to play. This can be helpful if you have a lot of quirks that you want to play under one pose. You simply need to put the list of animations inside of the parenthesis, include each animation name inside of single quotes, and separate them with a comma. &lt;br /&gt;
* Example: &amp;lt;code&amp;gt;q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;)&amp;lt;/code&amp;gt;&lt;br /&gt;
** These quirks are for Blastoise adjusting each of its cannons. Writing it this way lets Blastoise adjust only one cannon at a time, but it&#039;s a random cannon each time.&lt;br /&gt;
&lt;br /&gt;
So if you were to make that into a quirk, it would look like this:&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
the placeholder animations cobblemon uses if a pokemon is not animated based on the body type of the pokemon. AAAAAAAAAAAAAAAAAAAAAA&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; file requires an &amp;lt;code&amp;gt;animation&amp;lt;/code&amp;gt; JSON to assign animations to a &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;. You&#039;re always going to want to be familiar with all the animations that were made for a model. If you assign an animation type that doesn&#039;t exist in the animation JSON then the game will crash! Also, if a bone you listed in the poser doesn&#039;t exist on the model then the game will crash! Once you figure out what animations were made for your target Pokémon model, you can simply apply the existing animations to appropriate &amp;lt;code&amp;gt;poses&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Here is a breakdown of an example poser file which includes all the different properties that can be assigned. Hover over the underlined text to see more information. &#039;&#039;&#039;Every kind of possible poser function is included in this example at least once! So make sure that you review the whole file to see why some things are written the way they are.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* This example is not meant to be used as a template.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.7, 2.1, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.45,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [-0.1, 1.0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that some Pokémon don&#039;t use a &amp;lt;code&amp;gt;head bone&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;starly&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.7, 2.1, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.45,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [-0.1, 1.0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4565</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4565"/>
		<updated>2024-05-19T07:29:51Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Lots of Construction has been done&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Under construction. Dont look or else!&lt;br /&gt;
&lt;br /&gt;
{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The new &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon just as the old [[Poser]] did. It contains the same information for when the Pokémon will perform certain animations, but has received many requested upgrades. Some of these upgrades include multi-bone look animations, support for move animations, and even selecting from a pool of animations for quirks. Functionality of the new Poser will always be maintained and should let addon creators have the same options as the [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/kotlin/com/cobblemon/mod/common/client/render/models/blockbench/pokemon/gen1/SquirtleModel.kt hard-coded Kotlin Posers.]&lt;br /&gt;
&lt;br /&gt;
== Poser Properties ==&lt;br /&gt;
Before breaking down each section of the new Poser file, let&#039;s take a look at all its different properties and how to use them. This section includes all of the different functions of the poser, any configurable options for said function, and how to write each function. &lt;br /&gt;
=== Poses &amp;amp; Animations ===&lt;br /&gt;
There&#039;s a handful of Pose types and Animation types that you can make animations for. &amp;lt;code&amp;gt;Poses&amp;lt;/code&amp;gt; are the states a Pokémon is in, like idle or moving. Poses are for assigning animations like your ground idles, ground walks, water idles, etc. The &amp;lt;code&amp;gt;animation types&amp;lt;/code&amp;gt; are the different events in battles that you can assign animations to for each Pokémon. Animation types would include your faints, cries, and attack animations. Below is a list of currently available Animation types and Poses to choose from. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animations ====&lt;br /&gt;
* &#039;&#039;&#039;faint&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.faint&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon faints.&lt;br /&gt;
* &#039;&#039;&#039;cry&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is called out or when it starts battle. &lt;br /&gt;
* &#039;&#039;&#039;recoil&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.recoil&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon takes damage in battle. &lt;br /&gt;
* &#039;&#039;&#039;physical&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.physical&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a physical move in battle. &lt;br /&gt;
* &#039;&#039;&#039;special&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.special&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon uses a special move in battle.&lt;br /&gt;
* &#039;&#039;&#039;status&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.status&amp;lt;/code&amp;gt; - The animation that plays when a pokemon uses a status move in battle. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Poses ====&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;STAND&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle on land.&lt;br /&gt;
** This pose type is also used for battle-idles: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.battle_idle&amp;lt;/code&amp;gt;&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PORTRAIT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.portrait&amp;lt;/code&amp;gt; - The animation that plays in the Party Overlay, or left hand party GUI&lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;PROFILE&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.profile&amp;lt;/code&amp;gt; - The animation that plays in the Party Menu, or when you press M. &lt;br /&gt;
** This pose often uses the &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; instead of a dedicated animation. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;WALK&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.ground_walk&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving on land&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;HOVER&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLY&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.air_fly&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in the air. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;FLOAT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_idle&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is idle in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SWIM&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.water_swim&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is moving in or on water.&lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SLEEP&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.sleep&amp;lt;/code&amp;gt; - The animation that plays when a Pokémon is asleep. Usually on land. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_LEFT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_left&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s left shoulder. &lt;br /&gt;
* &#039;&#039;&#039;&amp;quot;SHOULDER_RIGHT&amp;quot;&#039;&#039;&#039;: &amp;lt;code&amp;gt;animation.&amp;lt;pokemon&amp;gt;.shoulder_right&amp;lt;/code&amp;gt; - The animation that plays when the Pokémon is on the player&#039;s right shoulder. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_stateful ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_stateful()&amp;lt;/code&amp;gt; allows you to assign a stateful animation to an animation type. &amp;lt;code&amp;gt;Stateful animations&amp;lt;/code&amp;gt; are meant to animate just a few bones of the Pokémon and get overlaid on the current pose. An example would be cries only animating the mouth or head of the Pokémon. A stateful animation won&#039;t take control of the whole model to play its animation. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is an example of the 2 stateful animations, cry and recoil, in the poser:&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.bedrock_primary ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; allows you to assign a primary animation to an animation type. &amp;lt;code&amp;gt;Primary animations&amp;lt;/code&amp;gt; are meant to take control of the entire model to play its animation and will clear any previous animations it was doing. An example would be a Pokémon&#039;s physical attack animation. When a Pokémon uses a physical move, it should clear the battle idle animation and play its physical animation instead. These animations often move the whole body and many of its limbs. When the physical animation is done, it returns control of the model to the battle idle after the physical animation has finished and should play a short transition animation in between. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Since Primary animations behave in a similar way to swapping poses, they can use special transition animation types via the &amp;lt;code&amp;gt;q.curve&amp;lt;/code&amp;gt; property written within its sub properties. These provide different types of smoothness to the interpolation and will be explained in the next section. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 4 primary animation in the poser:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== q.curve ====&lt;br /&gt;
The function &amp;lt;code&amp;gt;q.curve()&amp;lt;/code&amp;gt; is a sub function for &amp;lt;code&amp;gt;q.bedrock_primary()&amp;lt;/code&amp;gt; which allows the animation to interpolate back into the main pose. This allows the transition between animations to behave similarly to linear keyframes and smooth keyframes when animating.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The q.curve function comes with 3 options for now which are:&lt;br /&gt;
* &amp;lt;code&amp;gt;one&amp;lt;/code&amp;gt;: Does not interpolate at all. Just jumps from one animation to the next. Preferred for faint animations.&lt;br /&gt;
* &amp;lt;code&amp;gt;symmetric&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench. Not preferable, but is an option. &lt;br /&gt;
* &amp;lt;code&amp;gt;symmetrical_wide&amp;lt;/code&amp;gt;: Interpolates in a similar fashion to 2 smooth keyframes in blockbench, but with a wider margin. The preferred choice when transitioning from moves.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Below is an example of the 2 main q.curve types:&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Portraits and Profiles &amp;amp; Scale and Translation ===&lt;br /&gt;
Portrait and Profile are the poses that are used when rendering any Pokémon in a GUI or Menu. Portrait is used for the left hand party screen, or Party Overlay, and Profile is used for the Party Menu. The poser file assigns some &amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values to these poses which control the camera location for rendering the Pokémon. There is a dev tool that you can enable in the [[Config]] which allows you to use some customizable keys to move the camera around the Pokémon in these menus. This tool will print the Scale and Translation values when the associated hotkey is pressed. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Translation&amp;lt;/code&amp;gt; values control the location of the camera for the Portrait or Profile. Translation is a set of 3 values which represent xyz coordinates. You will mainly be changing the first 2 values, or the x and y axis values. X for left and right, and Y for up and down. The Z value is rarely used, but is important for really big models that are not being fully rendered in the menus. It often needs a larger Z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;Scale&amp;lt;/code&amp;gt; values control the amount of zoom for the Portrait or Profile. A value less than one should make it zoom out and a value greater than one will zoom in. Sometimes with larger models, the camera cannot render the whole Pokémon no matter how far you zoom out. The back side of the Pokémon may not be rendered. This means you need to increase the Translation z value.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is a short breakdown of the previously mentioned properties:&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the size of the Pokémon in the party menu on the left side of the screen. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1.65,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon in the party menu on the left side of the screen. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;portraitTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, -0.6, 0],&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;These refer to the full body view of the Pokémon seen in GUI, but most notably the summary UI. (Tip: you can refresh your resource pack with F3 + T for quick edits.)&amp;quot;&amp;gt;profileScale&amp;lt;/abbr&amp;gt;&amp;quot;: 1,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls the location of the Pokémon seen in GUI, but most notably the summary UI. The first value moves it left or right, which is your x axis. The second value moves it up or down, which is your y axis. The third value seems to do nothing and can generally be ignored. (Tip: you can refresh your resource pack with F3 + T for quick &lt;br /&gt;
 edits.)&amp;quot;&amp;gt;profileTranslation&amp;lt;/abbr&amp;gt;&amp;quot;: [0, 0.15, 0],&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Conditions ===&lt;br /&gt;
You can expand the amount of animations a Pokémon can have and when they should be played by using &amp;lt;code&amp;gt;conditions&amp;lt;/code&amp;gt;. Conditions are what allow for battle animations despite the &amp;lt;code&amp;gt;standing&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;battle-idle&amp;lt;/code&amp;gt; poses both using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type. Typically, if you want different animations using the same pose types, then you must set one pose&#039;s condition to true, and the other pose&#039;s matching condition to false. You can mix and match these conditions to make something like an animation that only plays in battle, if it is raining while the sun is setting. &amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
List of Currently Implemented Conditions:&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isBattle&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be in a battle.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water. Not necessarily underwater.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isTouchingWaterOrRain&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be touching water or rain. Again, not necessarily underwater. &lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isSubmergedInWater&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be underwater. The red line on the hitbox must be below the surface.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on sand&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isStandingOnSandOrRedSand&amp;quot;&amp;lt;/code&amp;gt;: The Pokémon must be standing on either sand or red sand.&lt;br /&gt;
* &amp;lt;code&amp;gt;&amp;quot;isDusk&amp;quot;&amp;lt;/code&amp;gt;: It must be &amp;quot;Dusk&amp;quot; time in the world, or roughly at sunset. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of 2 poses using the &amp;lt;code&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/code&amp;gt; pose type and &amp;lt;code&amp;gt;Conditions&amp;lt;/code&amp;gt; to separate the battle-idle animation from the ground idle animation:&lt;br /&gt;
* In these scenarios, you want one pose to have the condition set to true, and any other pose that shares the same pose type to have the condition set to false. &lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Transformed Parts ===&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Quirks ===&lt;br /&gt;
Quirk animations are extra animations that you can have play over the main animation list. What makes them different from the previous animation overwrite function is that these quirks can have extra properties applied to them. You can make them loop a certain number of times and include timers for these quirks. The most common example of a quirk animation would be the blink animations. By default, a quirk animation should play once every 8-20 seconds!&lt;br /&gt;
&lt;br /&gt;
Making a quirk in your poser file would largely depend on an animator making these quirky little animations to play in game. You can do more than just blinking animations. You can make a Pokémon roar, sneeze, or dance and have it play as a quirk for its standing pose or any other pose. A timer can then be applied to these quirk animations so you could end up with something like charizard doing a roar every 30-60 seconds when its idle. It&#039;s a very flexible sub system for animations that is only limited by your creativity. &lt;br /&gt;
&lt;br /&gt;
Here is a list of properties that can affect quirks:&lt;br /&gt;
 &amp;quot;loopTimes&amp;quot;: Int = 1 // The number of times the animation should play for the quirk&lt;br /&gt;
 &amp;quot;minSecondsBetweenOccurrences&amp;quot;: Float = 8 // The decimal-friendly number of seconds that is the &lt;br /&gt;
 minimum between the quirk playing once and it playing a second time&lt;br /&gt;
 &amp;quot;maxSecondsBetweenOccurrences&amp;quot;: Float = 30 // What do you think&lt;br /&gt;
 &amp;quot;animations&amp;quot;: List&amp;lt;Animation&amp;gt; = [] // The list of animations to play (together) when this quirk runs&lt;br /&gt;
 &amp;quot;name&amp;quot;: String // The name of the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Placeholder Animations ===&lt;br /&gt;
the placeholder animations cobblemon uses if a pokemon is not animated based on the body type of the pokemon. AAAAAAAAAAAAAAAAAAAAAA&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Breakdown ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; file requires an &amp;lt;code&amp;gt;animation&amp;lt;/code&amp;gt; JSON to assign animations to a &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;. You&#039;re always going to want to be familiar with all the animations that were made for a model. If you assign an animation type that doesn&#039;t exist in the animation JSON then the game will crash! Also, if a bone you listed in the poser doesn&#039;t exist on the model then the game will crash! Once you figure out what animations were made for your target Pokémon model, you can simply apply the existing animations to appropriate &amp;lt;code&amp;gt;poses&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Here is a breakdown of an example poser file which includes all the different properties that can be assigned. Hover over the underlined text to see more information. &#039;&#039;&#039;Every kind of possible poser function is included in this example at least once! So make sure that you review the whole file to see why some things are written the way they are.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
* This example is not meant to be used as a template.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.7, 2.1, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.45,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [-0.1, 1.0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Poser File Example ==&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that some Pokémon don&#039;t use a &amp;lt;code&amp;gt;head bone&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;starly&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.7, 2.1, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.45,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [-0.1, 1.0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Fossils_File&amp;diff=4311</id>
		<title>Fossils File</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Fossils_File&amp;diff=4311"/>
		<updated>2024-05-10T10:22:51Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Added folder location and some formatting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The JSONs in the &amp;lt;code&amp;gt;fossils&amp;lt;/code&amp;gt; folder control the resulting Pokémon from the &amp;lt;code&amp;gt;fossil machine&amp;lt;/code&amp;gt;. These files specify what items are considered a fossil and what Pokémon should be created if these fossils are placed into the machine. They are short files where you simply select any Pokémon and any item in the game.&lt;br /&gt;
&lt;br /&gt;
== File And Folder Format ==&lt;br /&gt;
Below is an example of how you would arrange a &amp;lt;code&amp;gt;fossil.json&amp;lt;/code&amp;gt; into a datapack:&lt;br /&gt;
&lt;br /&gt;
==== Folder Structure ====&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
**data&lt;br /&gt;
***cobblemon&lt;br /&gt;
****fossils&lt;br /&gt;
*****&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
== Fossil Breakdown ==&lt;br /&gt;
The fossil files are able to select any loaded Pokémon [[species]] to come out of the fossil machine. The &amp;lt;code&amp;gt;&amp;quot;result&amp;quot;&amp;lt;/code&amp;gt; line functions like the &amp;lt;code&amp;gt;/pokegive&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/pokespawn&amp;lt;/code&amp;gt; commands, so you can include other data like level or regional forms. You can select up to 3 items you wish to serve as the &amp;quot;fossils.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/br&amp;gt;Here is a breakdown of the &amp;lt;code&amp;gt;arctozolt&amp;lt;/code&amp;gt; fossil file:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will specify what Pokémon will be generated from the machine and any extra data to apply to that Pokémon.&amp;quot;&amp;gt;result&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, Arctozolt will be created if all the following items are placed into the machine. Because there is no other data specified, it will be a normal level 1 Arctozolt.&amp;quot;&amp;gt;arctozolt&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list items to be used as fossils for the machine.&amp;quot;&amp;gt;fossils&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The item ID for the fossilized dino&amp;quot;&amp;gt;cobblemon:fossilized_dino&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The item ID for the fossilized bird&amp;quot;&amp;gt;cobblemon:fossilized_bird&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt; Here is some extra info about fossil files:&lt;br /&gt;
* If your &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; pokemon doesn&#039;t exist or includes a typo, then the species will be chose at random from &#039;&#039;&#039;all loaded species&#039;&#039;&#039;.&lt;br /&gt;
* Since the &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; functions like the commands that generate Pokémon, you can generate them as shiny or with special abilities.&lt;br /&gt;
* The &amp;lt;code&amp;gt;fossils&amp;lt;/code&amp;gt; don&#039;t need to come out of the suspicious sand or gravel blocks. You can use any item from the game.&lt;br /&gt;
* The &amp;lt;code&amp;gt;fossils&amp;lt;/code&amp;gt; list doesn&#039;t support NBT data.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Fossil Examples ==&lt;br /&gt;
Here are some fossil files you can use as a template to generate your own Pokémon.&lt;br /&gt;
&lt;br /&gt;
* Cranidos&#039; fossil file:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;: &amp;quot;cranidos&amp;quot;,&lt;br /&gt;
  &amp;quot;fossils&amp;quot;: [&lt;br /&gt;
    &amp;quot;cobblemon:skull_fossil&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* A custom Porygon file that will generate as a level 10 shiny:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;porygon shiny=yes level=10&amp;quot;,&lt;br /&gt;
    &amp;quot;fossils&amp;quot;: [&lt;br /&gt;
        &amp;quot;cobblemon:upgrade&amp;quot;,&lt;br /&gt;
        &amp;quot;cobblemon:dubious_disc&amp;quot;,&lt;br /&gt;
        &amp;quot;cobblemon:rare_candy&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4155</id>
		<title>Poser</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Poser&amp;diff=4155"/>
		<updated>2024-05-03T04:06:55Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: 👷‍♂️🛑 New poser Construction has started 🚜🚧&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Under construction. Dont look or else!&lt;br /&gt;
&lt;br /&gt;
{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; JSON controls all the animations of a Pokémon. It contains information on when the Pokémon will perform certain animations. You can set your Pokémon to only ever perform one animation if you’d like, or you can give it different animations for just about every action it performs! It can even be used to adjust certain properties of an animation so you don&#039;t have to edit the animation itself. How smoothly one animation transitions to another can also be set through the poser. &lt;br /&gt;
&lt;br /&gt;
=== Poser File Breakdown ===&lt;br /&gt;
The &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; file requires an &amp;lt;code&amp;gt;animation&amp;lt;/code&amp;gt; JSON to assign animations to a &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;. You&#039;re always going to want to be familiar with all the animations that were made for a model. If you assign an animation type that doesn&#039;t exist in the animation JSON then the game will crash! Also, if a bone you listed in the poser doesn&#039;t exist on the model then the game will crash! Once you figure out what animations were made for your target Pokémon model, you can simply apply the existing animations to appropriate &amp;lt;code&amp;gt;poses&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
Sometimes there may be animations that don&#039;t seem to have a matching pose, such as &amp;lt;code&amp;gt;blink&amp;lt;/code&amp;gt; animations. These can be applied using the &amp;lt;code&amp;gt;quirk&amp;lt;/code&amp;gt; animation system. This system allows you to layer certain animations over an animation that is already playing in game. Making use of the quirk system can really help your Pokémon feel more alive!&lt;br /&gt;
&lt;br /&gt;
Here is a breakdown of an example poser file which includes all the different properties that can be assigned. Hover over the underlined text to see more information. &#039;&#039;&#039;Every kind of possible poser function is included in this example at least once! So make sure that you review the whole file to see why some things are written the way they are.&#039;&#039;&#039; This example is not meant to be used as a template.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.7, 2.1, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.45,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [-0.1, 1.0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Advanced Poser Functions And When to Use Them ===&lt;br /&gt;
Posers can do a lot more than just assign one animation to a pose. Certain things can be tweaked in the poser to make your Pokémon livelier in game. If you enjoy making many different animations for Pokémon, then this section will help you implement them in game. Using these advanced feature can help you make custom Pokémon that are on the same level of quality as the official Pokémon!&lt;br /&gt;
&lt;br /&gt;
Remember that you can have an unzipped copy of your addon as a resourcepack in the game for easier editing. Since the poser file is a part of the resources of an addon, it can be refreshed in game by pressing &amp;lt;code&amp;gt;F3 + T&amp;lt;/code&amp;gt;. This reloads all your resourcepacks and allows you to see the changes you&#039;ve made to the poser only if the poser you are editing is in the resourcepack folder. &#039;&#039;&#039;It is highly recommended to use unzipped folders to test addon stuff when implementing them into the game!&#039;&#039;&#039; You can simply make your file edits, save the file, and then refresh your resourcepack in game to see the changes immediately! &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
==== Layered Animations ====&lt;br /&gt;
Layered animations are two or more animations that are listed together in your &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt; list. The most common example would be adding the &amp;lt;code&amp;gt;look&amp;lt;/code&amp;gt; animation on top of your &amp;lt;code&amp;gt;ground_idle&amp;lt;/code&amp;gt; animation for your standing pose. You&#039;re able to list more than two animations and your main limit would be running out of bones to animate. &lt;br /&gt;
&lt;br /&gt;
The first animation listed should have priority control over the bones of the model. This is how Pokémon are able to look at you while walking around. The look animation has priority over the head bone, or whatever bone is listed as the head. This head bone will always attempt to look at a player if the player approaches. &lt;br /&gt;
&lt;br /&gt;
Another example of layering animations would be having 2 kinds of animations that are meant to be played together and separate. A great example of this is charizard&#039;s walk animation. The walking animation itself only moves the legs for when it&#039;s walking. It combines the ground idle and the ground walk animations for its walking pose. The walk animation only controls the bottom half of the body, while the ground idle only controls the top half of the body. If you only listed its walk animation and it started walking, then the top half of charizard would t-pose whenever it walks.&amp;lt;/br&amp;gt;&lt;br /&gt;
Charizard&#039;s walking animation list for its walking pose:&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
         &amp;quot;&amp;lt;abbr title=&amp;quot;Allows the Pokémon to move its head around to observe its surroundings. You can delete this if your Pokémon doesn&#039;t have a head bone, or you just don&#039;t want them looking around.&amp;quot;&amp;gt;look&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
         &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s ground walk animation. Due to the way charizard&#039;s animations were made, this specified animation only animates the bottom half of charizard. If you do not include the matching ground idle after this, the arms of charizard will t-pose while it walks.&amp;quot;&amp;gt;bedrock(charizard, ground_walk)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
         &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s ground idle animation. Due to the way charizard&#039;s animations were made, this specified animation only animates the top half of charizard. Adding this animation will allow charizard&#039;s arms and wings to be animated while it walks.&amp;quot;&amp;gt;bedrock(charizard, ground_idle)&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
        ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animation Overwrites ====&lt;br /&gt;
This function is mostly used for cases where you want an animation to be played exclusively for certain situations. You simply write &amp;lt;code&amp;gt;, true&amp;lt;/code&amp;gt; after your animation type in your animations list. The most common use for this function would be writing it into your faint so the faint animation should always be playing when a Pokémon faints. Sometimes animations don&#039;t change properly and this can fix it most of the time. &lt;br /&gt;
&lt;br /&gt;
Below is an example of the faint using this overwrite function. What&#039;s going to happen in game is that when charizard faints, it will always play the faint animation over other animations it was already doing. This is fine because the faint animation animates the whole model. The cry animation does not contain this function because we want the cry to play over the idle animation, but not completely overwrite everything! If it did, then charizard would t-pose whenever it tried to do it&#039;s cry animation because it only animates the head bone.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the faint animation for this Pokémon. If you have no faint animation, you can delete this line.&amp;quot;&amp;gt;faint&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s faint animation&amp;quot;&amp;gt;bedrock(charizard, faint&amp;lt;/abbr&amp;gt;, &amp;lt;abbr title=&amp;quot;Adding &#039;true&#039; like this will force this faint animation to play over all other animations whenever charizard faints.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;)&amp;quot;,&lt;br /&gt;
   &amp;quot;&amp;lt;abbr title=&amp;quot;This points to the cry animation for this Pokémon. Cries play whenever the Pokémon is called out of the pokeball. This occurs in and out of battle.&amp;quot;&amp;gt;cry&amp;lt;/abbr&amp;gt;&amp;quot;:  &amp;quot;&amp;lt;abbr title=&amp;quot;This points to charizard&#039;s cry animation. Since it does not contain &#039;true&#039; written after it, then this cry animation will not completely overwrite other animations when it plays. It should simply animate the bones it&#039;s supposed to while the rest of the bones can be controlled by another animation.&amp;quot;&amp;gt;bedrock(charizard, cry)&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Quirks ====&lt;br /&gt;
Quirk animations are extra animations that you can have play over the main animation list. What makes them different from the previous animation overwrite function is that these quirks can have extra properties applied to them. You can make them loop a certain number of times and include timers for these quirks. The most common example of a quirk animation would be the blink animations. By default, a quirk animation should play once every 8-20 seconds!&lt;br /&gt;
&lt;br /&gt;
Making a quirk in your poser file would largely depend on an animator making these quirky little animations to play in game. You can do more than just blinking animations. You can make a Pokémon roar, sneeze, or dance and have it play as a quirk for its standing pose or any other pose. A timer can then be applied to these quirk animations so you could end up with something like charizard doing a roar every 30-60 seconds when its idle. It&#039;s a very flexible sub system for animations that is only limited by your creativity. &lt;br /&gt;
&lt;br /&gt;
Here is a list of properties that can affect quirks:&lt;br /&gt;
 &amp;quot;loopTimes&amp;quot;: Int = 1 // The number of times the animation should play for the quirk&lt;br /&gt;
 &amp;quot;minSecondsBetweenOccurrences&amp;quot;: Float = 8 // The decimal-friendly number of seconds that is the &lt;br /&gt;
 minimum between the quirk playing once and it playing a second time&lt;br /&gt;
 &amp;quot;maxSecondsBetweenOccurrences&amp;quot;: Float = 30 // What do you think&lt;br /&gt;
 &amp;quot;animations&amp;quot;: List&amp;lt;Animation&amp;gt; = [] // The list of animations to play (together) when this quirk runs&lt;br /&gt;
 &amp;quot;name&amp;quot;: String // The name of the quirk&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
Below is an example of a modified quirk animation. What this will do is eventually make charizard play the blink animation 5 times in a row. Then after the animation plays, an 8-20 second timer begins to play this quirk again. The quirk timer starts after the quirk animations end.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property allows you to play other animations over the main list of animations for this pose. The most common type of quirk animations are blinks, but you can apply any animation you wish as a quirk.&amp;quot;&amp;gt;quirks&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
         {&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of this quirk&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this quirk will simply be called &#039;blink&#039;.&amp;quot;&amp;gt;blink&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;The number of times the animation should play for the quirk. By default, this value is 1.&amp;quot;&amp;gt;loopTimes&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;For this example, we will let the blink animation play 5 times. After the blink plays 5 times, it will then start a timer before it can play again.&amp;quot;&amp;gt;5&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;The decimal-friendly number of seconds that is the minimum between the quirk playing once and it playing a second time. Default value is 8.&amp;quot;&amp;gt;minSecondsBetweenOccurrences&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;After 8 seconds, there is a chance that this quirk animation will play.&amp;quot;&amp;gt;8&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;The decimal-friendly number of seconds that is the maximum between the quirk playing once and it playing a second time. Default value is 30.&amp;quot;&amp;gt;maxSecondsBetweenOccurrences&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;It will take 20 seconds at most for the quirk animation to play again.&amp;quot;&amp;gt;20&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
           &amp;quot;&amp;lt;abbr title=&amp;quot;Here, you are going to list the animation that you want to play as a quirk. Given the data of the previous lines, this animation will play 5 times every 8-20 seconds.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;This points towards charizard&#039;s blink animation&amp;quot;&amp;gt;bedrock(charizard, blink)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
          }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Transformed Parts ====&lt;br /&gt;
This function allows you to transform parts of the model when the Pokémon is in a certain pose. You can change the location, rotation, and visibility of bones for each pose. This allows you to make some slight adjustments to an in-game animation without having to edit the animation itself. While there aren&#039;t many examples of this function, it&#039;s most common use is to hide model parts when a Pokémon is not in its battle idle. This is the case with Rillaboom and its drum.&lt;br /&gt;
&lt;br /&gt;
A great use for location and rotation transformation is to adjust shoulder animations. You don&#039;t have to account for the model location on the player shoulder when making the animation. If it doesn&#039;t line up in the game, you can move the whole model using this function.&lt;br /&gt;
&lt;br /&gt;
The visibility transformation allows you to hide a specific bone in the model when the Pokémon is currently in a pose. This can be used to hide certain bones if needed. This allows you to do things like making Rillaboom use its drum for its battle-idle. It also allows Typhlosion to have its flames ignited only during battle. Something to keep in mind is that if you want a bone to be visible only during battle, then you must set this bone as invisible for all other poses. This is why &amp;lt;code&amp;gt;transformedParts&amp;lt;/code&amp;gt; is written under every pose in the poser file breakdown.&lt;br /&gt;
&lt;br /&gt;
Below is an example of all the transformed part properties being used. This is mostly a demonstration of your options when using this function. If this example was applied in game, Charizard&#039;s wings would be detached from its body, but only the left wing would be invisible. Realistically, you would never want to do something like that.&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 &amp;quot;&amp;lt;abbr title=&amp;quot;This property will allow you to manipulate the model parts without having to edit things in blockbench! You can select a bone from the model, and edit this bone specifically for this pose.&amp;quot;&amp;gt;transformedParts&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a bone from the model. In this case, it&#039;s charizard&#039;s right wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_right&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move 10 units on the x axis. This would be 10 units to the right if you were looking at charizard.&amp;quot;&amp;gt;10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s right wing to be visible.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          },&lt;br /&gt;
          {&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are selecting a second bone from the model. In this case, it&#039;s charizard&#039;s left wing.&amp;quot;&amp;gt;part&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The bone that will be manipulated. The next 3 lines can change this bone specifically for charizard&#039;s pose.&amp;quot;&amp;gt;wing_left&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s position. The following set of numbers can change its location on the x, y, and z axis.&amp;quot;&amp;gt;position&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;The xyz axis values that will be applied to the bone. In this case, the bone will move -10 units on the x axis. This would be 10 units to the left if you were looking at charizard.&amp;quot;&amp;gt;-10, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property will change the bone&#039;s rotation. The following set of numbers can change its rotation in degrees on the x, y, and z axis. You will likely never have to rotate a bone for a pose, so these values will be left blank. This part of the example is merely to show you your options.&amp;quot;&amp;gt;rotation&amp;lt;/abbr&amp;gt;rotation&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;We don&#039;t actually want to rotate charizard&#039;s wings, so these values will be left at zero. If you don&#039;t want to use this rotation property at all, you can simply remove this one line!&amp;quot;&amp;gt;0, 0, 0&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
            &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether or not the selected bone will be visible for this pose. Note that if you want a bone to be visible just for 1 pose, then it must be set as invisible for all other poses.&amp;quot;&amp;gt;isVisible&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Here, we are setting charizard&#039;s left wing to be invisible.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;&lt;br /&gt;
          }&lt;br /&gt;
         ]&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Animation Conditions ====&lt;br /&gt;
This function allows you to have more control over when an animation is allowed to play. The current conditions we can use are for battle and for touching water. This can be used to make animations specific to being in battle or in water. You can also mix and match the battle and water conditions if you really want more specific animations. This can result in having a ground idle, ground battle idle, water idle, and water battle idle!&lt;br /&gt;
&lt;br /&gt;
This function is mostly for helping you organize your animations for each pose. Setting a condition to true will only allow the animation to play when this condition is met. Setting it to false will prevent the animation from being played when this condition is met. This allows you to set 2 or more animations per &amp;lt;code&amp;gt;poseType&amp;lt;/code&amp;gt;. This basic fundamental is what allows us to have battle animations that can only play in battle! &lt;br /&gt;
&lt;br /&gt;
Transformed parts work really well with this function! Combining these 2 functions is what allows Rillaboom to use its drum only when in battle. You can allow certain model parts to appear visible only when these conditions are met. Keep these functions in mind the next time you make a custom Pokémon model. You can create livelier animations using this system!&lt;br /&gt;
&lt;br /&gt;
Below is an example of these animation conditions being used. In this example, the battle idle will only play when charizard is in battle, but never while charizard is in water. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
     &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining a list of our poses.&amp;quot;&amp;gt;poses&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The name of your pose. In this case, its called &#039;battle-idle&#039;. Here, we will list animations that will play when the Pokémon is in battle.&amp;quot;&amp;gt;battle-idle&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here we are defining the name of the pose.&amp;quot;&amp;gt;poseName&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The name of this pose is &#039;battle-idle&#039;&amp;quot;&amp;gt;battle-idle&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This is transition time between animations measured in minecraft ticks. You probably won&#039;t need to mess with this.&amp;gt;transformTicks&amp;lt;/abbr&amp;gt;&amp;quot;: 10,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here, we are telling the game when this animation will take place.&amp;quot;&amp;gt;poseTypes&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;lt;abbr title=&amp;quot;One of the pose types that will use the following animation. &#039;STAND - when stationary on the ground.&#039; In the next line, we will define that the following animation will only work in battle&amp;quot;&amp;gt;&amp;quot;STAND&amp;quot;&amp;lt;/abbr&amp;gt;],&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play during battle or not.&amp;quot;&amp;gt;isBattle&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to true will make the following animation play only while the Pokémon is idle while it&#039;s also in battle!&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;This property controls whether the animation will play while the Pokémon is in water or not.&amp;quot;&amp;gt;isTouchingWater&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;Setting it to false will prevent the following animation from playing whenever the Pokémon touches water, but only while it&#039;s also in battle! So if this Pokémon starts battle in water, it is not allowed to use this pose and its assigned animation.&amp;quot;&amp;gt;false&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list which animations will play during these poses.&amp;quot;&amp;gt;animations&amp;lt;/abbr&amp;gt;&amp;quot;: [&amp;quot;&amp;lt;abbr title=&amp;quot;The animation you are telling it to use when your Pokémon is standing, while in battle, but not touching water.&amp;quot;&amp;gt;bedrock(charizard, battle_idle)&amp;lt;/abbr&amp;gt;&amp;quot;]&lt;br /&gt;
       },&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Poser File Example ===&lt;br /&gt;
Instead of making &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt; files from scratch each time, you can use other custom Pokémon posers as a template. Just be aware of the animations each Pokémon has. Also be aware that some Pokémon don&#039;t use a &amp;lt;code&amp;gt;head bone&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Here is an example of a poser file for a custom &amp;lt;code&amp;gt;starly&amp;lt;/code&amp;gt; that includes all currently implemented poses and their appropriate animations.&lt;br /&gt;
* Blink animations are not applied to the sleep pose. This is because you don&#039;t blink when you sleep!&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;portraitScale&amp;quot;: 1.3,&lt;br /&gt;
  &amp;quot;portraitTranslation&amp;quot;: [-0.7, 2.1, 0],&lt;br /&gt;
  &amp;quot;profileScale&amp;quot;: 0.45,&lt;br /&gt;
  &amp;quot;profileTranslation&amp;quot;: [-0.1, 1.0, 0],&lt;br /&gt;
  &amp;quot;animations&amp;quot;: {&lt;br /&gt;
    &amp;quot;faint&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;faint&#039;, q.curve(&#039;one&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;cry&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;cry&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;recoil&amp;quot;: &amp;quot;q.bedrock_stateful(&#039;blastoise&#039;, &#039;recoil&#039;)&amp;quot;,&lt;br /&gt;
    &amp;quot;physical&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;physical&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;special&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;special&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;,&lt;br /&gt;
    &amp;quot;status&amp;quot;: &amp;quot;q.bedrock_primary(&#039;blastoise&#039;, &#039;status&#039;, q.curve(&#039;symmetrical_wide&#039;))&amp;quot;&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;poses&amp;quot;: {&lt;br /&gt;
    &amp;quot;battle-standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: true,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;battle_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, q.array(&#039;quirk_battle_idle&#039;, &#039;quirk_battle_idle2&#039;), 30, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;standing&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;STAND&amp;quot;, &amp;quot;NONE&amp;quot;, &amp;quot;PORTRAIT&amp;quot;, &amp;quot;PROFILE&amp;quot;],&lt;br /&gt;
      &amp;quot;isBattle&amp;quot;: false,&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;quirk_ground_idle&#039;, 20, 60, 1)&amp;quot;&lt;br /&gt;
      ]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;walking&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;WALK&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;ground_walk&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;float&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;FLOAT&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_idle&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;swim&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SWIM&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&lt;br /&gt;
        &amp;quot;q.look(&#039;head_ai&#039;)&amp;quot;,&lt;br /&gt;
        &amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;water_swim&#039;)&amp;quot;&lt;br /&gt;
      ],&lt;br /&gt;
      &amp;quot;quirks&amp;quot;: [&amp;quot;q.bedrock_quirk(&#039;blastoise&#039;, &#039;blink&#039;)&amp;quot;]&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;sleep&amp;quot;: {&lt;br /&gt;
      &amp;quot;poseTypes&amp;quot;: [&amp;quot;SLEEP&amp;quot;],&lt;br /&gt;
      &amp;quot;animations&amp;quot;: [&amp;quot;q.bedrock(&#039;blastoise&#039;, &#039;sleep&#039;)&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4154</id>
		<title>Template:Addon Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4154"/>
		<updated>2024-04-28T01:15:46Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavigationBox&lt;br /&gt;
|title=Addon Creation&lt;br /&gt;
|rows=&lt;br /&gt;
  {{NavigationRow|category=Tutorials|content=&lt;br /&gt;
    [[Tutorials/Creating A Custom Pokemon|Creating A Custom Pokemon]] [[Tutorials/Creating A Model|Creating A Model]] [[Tutorials/Creating Custom Spawns|Creating Custom Spawns]] [[Tutorials/Emissive Textures|Emissive Textures]] [[Tutorials/Animated Textures|Animated Textures]] [[Tutorials/Texture replacement|Texture Replacement]] [[Tutorials/Animation Replacement|Animation Replacement]] [[Tutorials/Regional_Forms| Regional Forms]][[Tutorials/Multiple Visual Variants|Multiple Visual Variants]] [[Tutorials/Adding_Sounds_To_Animations|Adding Sounds To Animations]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Asset Files|content=&lt;br /&gt;
    [[Resolver]] [[Poser]] [[Sounds]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Data Files|content=&lt;br /&gt;
    [[Species]] [[Species Features]] [[Species Feature Assignments]] [[Species Additions]] [[Spawn Detail Presets]] [[Spawn Pool World]] [[Fossils_File|Fossils]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Properties|content=&lt;br /&gt;
    [[Pokémon/Behaviour|Behaviour]] [[Spawn Condition]] [[Advancements]]&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Addon Creation]]&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Tutorials/Regional_Forms&amp;diff=4149</id>
		<title>Tutorials/Regional Forms</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Tutorials/Regional_Forms&amp;diff=4149"/>
		<updated>2024-04-22T22:50:19Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Didnt specify something so specifying that now lol&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
This tutorial will teach you how to create a regional form for &#039;&#039;&#039;&#039;&#039;an existing Pokémon.&#039;&#039;&#039;&#039;&#039; Regional forms are a species variant that can have different looks, types, abilities, moves, and spawn locations! &#039;&#039;&#039;Knowledge of [[Tutorials/Creating_A_Custom_Pokemon|creating custom Pokémon]] is &#039;&#039;required.&#039;&#039;&#039;&#039;&#039; Creating a unique model and textures for your form is highly recommended, but not always necessary. &lt;br /&gt;
&lt;br /&gt;
Due to regional forms usually requiring files for both data and assets, this type of pack will just be called an &amp;lt;code&amp;gt;addon&amp;lt;/code&amp;gt; for simplicity. Addons that use data and asset folders will end up needing to have a copy in both the &amp;lt;code&amp;gt;datapacks&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;resourcepacks&amp;lt;/code&amp;gt; game folders. The data and assets can be separated if desired, but are usually bundled together to make sharing easier!&lt;br /&gt;
&lt;br /&gt;
=== Step 1: Arrange the folders for this addon ===&lt;br /&gt;
Due to some files sharing the same names later in this guide, you will be creating the folder structure and &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; now. This is to prevent confusion going forward. &lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Ensure that it doesn&#039;t end in other file extensions like .txt&lt;br /&gt;
# Open the file and insert the following data:&lt;br /&gt;
#* Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This lets Minecraft know that it is a datapack&amp;quot;&amp;gt;pack&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list the pack format number for a specific version of Minecraft&amp;quot;&amp;gt;pack_format&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;As of 1.20.1, the current resourcepack format number is 15. But it will still load if this number isn&#039;t correct!&amp;quot;&amp;gt;15&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will write a short description of your datapack&amp;quot;&amp;gt;description&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;Your short datapack description&amp;quot;&amp;gt;Example description&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
# &amp;lt;li value=3&amp;gt; Save the file and put it aside for now. &lt;br /&gt;
# Create a series of folders arranged like the following example:&lt;br /&gt;
==== Folder Structure ====&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
**assets&lt;br /&gt;
***cobblemon&lt;br /&gt;
****bedrock&lt;br /&gt;
*****pokemon&lt;br /&gt;
******animations&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
******models&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
******posers&lt;br /&gt;
******resolvers&lt;br /&gt;
*******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
****textures&lt;br /&gt;
*****pokemon&lt;br /&gt;
******&amp;lt;target pokemon folder&amp;gt;&lt;br /&gt;
**data&lt;br /&gt;
***cobblemon&lt;br /&gt;
****spawn_pool_world&lt;br /&gt;
****species_additions&lt;br /&gt;
****species_features&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt;Place the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; file into the first folder of your addon next to &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt;&lt;br /&gt;
After this folder tree for your addon is made, you can simply drop the files into the associated folders as you create them. &lt;br /&gt;
Remember that the &amp;lt;code&amp;gt;pack.mcmeta&amp;lt;/code&amp;gt; is a file, not a folder to add. It must be one folder deep in order for Minecraft to recognize this pack as a resource pack or data pack when in the appropriate game folders. &lt;br /&gt;
&lt;br /&gt;
=== Step 2: Create the assets for your regional variant ===&lt;br /&gt;
How you want your regional variant to look depends entirely on you. You can make it use a new texture over the original model. Most of the time, a new model, texture, and animations are created for this regional form. If for some reason you don&#039;t want it to have a visual difference at all, then you can skip anything regarding &amp;lt;code&amp;gt;assets&amp;lt;/code&amp;gt;. Make sure your assets have a unique name so they don&#039;t overwrite any original form assets.&lt;br /&gt;
&lt;br /&gt;
Assets for existing Pokémon can be obtained from the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/assets/cobblemon/bedrock/pokemon/models Gitlab] or the mod&#039;s JAR file. This can be helpful if you wanted to make a texture variant, or use the model as a base for the regional form. Just remember that animation files are made for specific models so they may need updating depending on what you make. These assets can be made in Blockbench or any relevant art apps. &lt;br /&gt;
&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;texture&amp;lt;/code&amp;gt;&lt;br /&gt;
# Create the regional form&#039;s &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt;&lt;br /&gt;
# Export these files and place them into the appropriate folders in your addon pack&lt;br /&gt;
# Create a &amp;lt;code&amp;gt;[[poser]]&amp;lt;/code&amp;gt; file for this regional form if new animations were created for the new model. (optional)&lt;br /&gt;
&lt;br /&gt;
As knowledge of creating custom Pokémon is a requirement for this guide, you are expected to know how to make these files. Help can be found on the Cobblemon discord.&lt;br /&gt;
&lt;br /&gt;
=== Step 3: Create a &amp;quot;species feature&amp;quot; ===&lt;br /&gt;
On the data side of things, the creation of a regional form starts with the [[Species_Features|species feature]]. A species feature is what allows a Pokémon to have a different set of stats and visuals applied to their regional forms. You will be creating a short JSON file that will be named after your custom region or idea. &#039;&#039;&#039;The feature can be named whatever you want it to be called.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it after your region or idea. Include the extension of&amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: The alolan species feature is named &amp;lt;code&amp;gt;alolan.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Remember to use lowercase and make sure that the file does not end in any other extension like &amp;quot;.txt&amp;quot;&lt;br /&gt;
# Insert the following data into this new species feature JSON:&lt;br /&gt;
#* &#039;&#039;&#039;Remember to change &amp;lt;code&amp;gt;&amp;quot;custom_feature&amp;quot;&amp;lt;/code&amp;gt; to match your file name! It must stay in quotes.&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;keys&amp;quot;: [&amp;quot;custom_feature&amp;quot;],&lt;br /&gt;
  &amp;quot;type&amp;quot;: &amp;quot;flag&amp;quot;,&lt;br /&gt;
  &amp;quot;isAspect&amp;quot;: true,&lt;br /&gt;
  &amp;quot;default&amp;quot;: false&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; Save the file&lt;br /&gt;
# Place this new species feature file into the &amp;lt;code&amp;gt;species_feature&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;quot;isAspect&amp;quot;: true&amp;lt;/code&amp;gt; means that this new feature is both a &amp;lt;code&amp;gt;feature&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;aspect&amp;lt;/code&amp;gt;!&lt;br /&gt;
Now that the species feature is made, you can apply it to a Pokémon&#039;s &amp;lt;code&amp;gt;form&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Step 4: Create a &amp;quot;species addition&amp;quot; file with &amp;quot;form&amp;quot; data ===&lt;br /&gt;
A &amp;lt;code&amp;gt;[[Species_Additions|species_addition]]&amp;lt;/code&amp;gt; file is an efficient way of &#039;&#039;adding&#039;&#039; data to existing species files without having to rewrite the main species file. This allows your additions to be more compatible with other addons affecting the same Pokémon. You will be adding your regional &amp;lt;code&amp;gt;form&amp;lt;/code&amp;gt; data to a species through this method. &lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it after your Pokémon. Include the extension of &amp;lt;code&amp;gt;.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;bulbasaur.json&amp;lt;/code&amp;gt;&lt;br /&gt;
# Insert the following data into this new species_addition JSON:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
  &amp;quot;target&amp;quot;: &amp;quot;cobblemon:example&amp;quot;,&lt;br /&gt;
  &amp;quot;features&amp;quot;: [&amp;quot;custom_feature&amp;quot;],&lt;br /&gt;
  &amp;quot;forms&amp;quot;: [&lt;br /&gt;
    {&lt;br /&gt;
      example form data&lt;br /&gt;
    }&lt;br /&gt;
  ]&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;3&amp;quot;&amp;gt; Change &amp;lt;code&amp;gt;&amp;quot;cobblemon:example&amp;quot;&amp;lt;/code&amp;gt; to reference the Pokémon you want to add a form to. It must remain in quotes. &lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;&amp;quot;cobblemon:bulbasaur&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Change &amp;lt;code&amp;gt;&amp;quot;custom_feature&amp;quot;&amp;lt;/code&amp;gt; to the feature you made earlier. It must remain in quotes. &lt;br /&gt;
# Write all the data for your form inside of the curly brackets&lt;br /&gt;
#* The average form data set is too long to list as an example for this guide. It&#039;s like writing data for an entirely different Pokémon, which is kind of what a regional variant is like. &lt;br /&gt;
#* If you need an example, you can look at the &amp;lt;code&amp;gt;&amp;quot;forms&amp;quot;&amp;lt;/code&amp;gt; data for [https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/resources/data/cobblemon/species/generation1/vulpix.json Vulpix on the Gitlab.] It starts on line 29 and ends on line 204.&lt;br /&gt;
#* Remember to include evolution data if this regional variant can evolve.&lt;br /&gt;
# Write your species feature name into the &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;&amp;lt;/code&amp;gt; section of your &amp;lt;code&amp;gt;&amp;quot;forms&amp;quot;&amp;lt;/code&amp;gt; data. &lt;br /&gt;
#* Include the line for aspects if it doesn&#039;t exist yet. It should look like this:&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
  &amp;quot;aspects&amp;quot;: [&amp;quot;custom_feature&amp;quot;]&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Save the file.&lt;br /&gt;
# Place this new species addition file into the &amp;lt;code&amp;gt;species_additions&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
&lt;br /&gt;
Now your target Pokémon&#039;s new form should have the data that allows it to function differently in battles. Next you will create the data that allows it to spawn differently.&lt;br /&gt;
&lt;br /&gt;
=== Step 5: Create the spawns for your regional form ===&lt;br /&gt;
The &amp;lt;code&amp;gt;[[Spawn_Pool_World|spawn_pool_world]]&amp;lt;/code&amp;gt; folder holds all the spawning files for each Pokémon. You will be creating a new file for your regional variant. It can be as simple or complicated as you make it. It is recommended that you use the normal form&#039;s spawn file as a base for your regional form. Those spawn files can be found on the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/data/cobblemon/spawn_pool_world Gitlab.]&lt;br /&gt;
&lt;br /&gt;
To keep things simple, this part of the guide will show you how to recycle a spawn file by changing the Pokémon name and biome conditions. &lt;br /&gt;
# Obtain your target Pokémon&#039;s &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; JSON.&lt;br /&gt;
# Rename the file to anything you want. The name must be different than the original.&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;regional_bulbasaur&amp;lt;/code&amp;gt;&lt;br /&gt;
# Open the file and locate all the strings for &amp;lt;code&amp;gt;&amp;quot;id&amp;quot;&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;&amp;quot;pokemon&amp;quot;&amp;lt;/code&amp;gt;&lt;br /&gt;
# Edit the Pokémon&#039;s name &#039;&#039;&#039;and include&#039;&#039;&#039; the name of your species feature after like this example:&lt;br /&gt;
#* You must use a space after the Pokémon name for the &amp;lt;code&amp;gt;&amp;quot;pokemon&amp;quot;&amp;lt;/code&amp;gt; string.&lt;br /&gt;
&amp;lt;syntaxhighlight&amp;gt;&lt;br /&gt;
            &amp;quot;id&amp;quot;: &amp;quot;bulbasaur-alolan-1&amp;quot;,&lt;br /&gt;
            &amp;quot;pokemon&amp;quot;: &amp;quot;bulbasaur alolan&amp;quot;,&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
# &amp;lt;li value=&amp;quot;5&amp;quot;&amp;gt;Locate all the strings for &amp;lt;code&amp;gt;&amp;quot;biomes&amp;quot;&amp;lt;/code&amp;gt; if they exist&lt;br /&gt;
# Change the listed biome(s) to something different! &lt;br /&gt;
#* This will allow the regional variant to spawn in biomes the normal variant does not.&lt;br /&gt;
#* The list of biome tags can be found [https://docs.google.com/document/d/1iB0EJSc2r6mRJXIo1n3XpHbZ5udwJVnrh2pXdhTyH8c/edit here.]&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new spawn file in the &amp;lt;code&amp;gt;spawn_pool_world&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
This should be the last of the data folder files. By now, your regional variant can stand on its own data-wise. It should have different stats, and spawns. Now it just needs a different look. &lt;br /&gt;
&lt;br /&gt;
=== Step 6: Create the resolver file for your regional form ===&lt;br /&gt;
Back in step 2, you should have already made the files for &amp;lt;code&amp;gt;models&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;animations&amp;lt;/code&amp;gt;, and &amp;lt;code&amp;gt;posers&amp;lt;/code&amp;gt;. The last thing you need to do is assign them to your regional variant by creating a new &amp;lt;code&amp;gt;[[resolver]]&amp;lt;/code&amp;gt; file.&lt;br /&gt;
&lt;br /&gt;
# Obtain your target Pokémon&#039;s &amp;lt;code&amp;gt;resolver&amp;lt;/code&amp;gt; JSON.&lt;br /&gt;
# Change the name of this resolver to &amp;lt;code&amp;gt;1_&amp;lt;pokemon&amp;gt;_base&amp;lt;/code&amp;gt;&lt;br /&gt;
#* You change the number from 0 to 1 so it can load after the normal variant&#039;s data&lt;br /&gt;
#* Sometimes a number greater than 1 is needed, especially if your target Pokémon has gender variants. &lt;br /&gt;
# Open the resolver file and locate the string for &amp;lt;code&amp;gt;&amp;quot;order&amp;quot;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Change the value of &amp;quot;order&amp;quot; from 0 to 1.&lt;br /&gt;
#* Again, sometimes this value needs to be greater than 1.&lt;br /&gt;
# Add the name of your species feature to the &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;&amp;lt;/code&amp;gt; string&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;&amp;quot;aspects&amp;quot;: [&amp;quot;alolan&amp;quot;]&amp;lt;/code&amp;gt;&lt;br /&gt;
#* This allows any Pokémon that spawned with this feature/aspect to use any following model, textures, or poser.&lt;br /&gt;
# Assign any &amp;lt;code&amp;gt;poser&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;model&amp;lt;/code&amp;gt;, or &amp;lt;code&amp;gt;textures&amp;lt;/code&amp;gt; that you made in Step 2.&lt;br /&gt;
# Save the file&lt;br /&gt;
# Place this new resolver in the &amp;lt;code&amp;gt;resolvers&amp;lt;/code&amp;gt; folder of your addon&lt;br /&gt;
&lt;br /&gt;
=== Step 7: Test your addon in game ===&lt;br /&gt;
Load your addon in game to see if your regional form looks different from the normal one. You can have Blockbench open to edit any relevant asset file &#039;&#039;&#039;in the resourcepacks folder&#039;&#039;&#039; if needed. &lt;br /&gt;
# Copy your addon folder and place it in the &amp;quot;resourcepacks&amp;quot; and &amp;quot;datapacks&amp;quot; folder in the Minecraft root directory.&lt;br /&gt;
# Start up Minecraft and click on &#039;&#039;Options&#039;&#039;, then &#039;&#039;Resource Packs&#039;&#039;. Select your pack to load it.&lt;br /&gt;
# Load/create a &#039;&#039;&#039;Creative&#039;&#039;&#039; world save that contains your addon in the &amp;quot;datapack&amp;quot; folder.&lt;br /&gt;
# Once in the world, you can run the command &amp;lt;code&amp;gt;/pokespawn &amp;lt;target pokemon&amp;gt; &amp;lt;species feature&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
# Ensure your new regional form is working properly.&lt;br /&gt;
# Check if your regional form spawns where you assigned it to. You can use &amp;lt;code&amp;gt;/checkspawn &amp;lt;rarity&amp;gt;&amp;lt;/code&amp;gt; when in the assigned biome. &lt;br /&gt;
#* You can run the command &amp;lt;code&amp;gt;/locate biome &amp;lt;assigned biome&amp;gt;&amp;lt;/code&amp;gt; to get coordinates to the assigned biome. You can then click on the coordinates it gave you and be teleported instantly. &lt;br /&gt;
# Make any desired edits to the asset files and save. Refresh resource packs with F3+T to see the changes you make.&lt;br /&gt;
# Make any desired edits to the data files and save. &#039;&#039;&#039;You need to quit to main menu, and load the world again if you want to see those changes.&#039;&#039;&#039;&lt;br /&gt;
#* The command for &amp;lt;code&amp;gt;/reload&amp;lt;/code&amp;gt; does not work with Cobblemon addons unfortunately. &lt;br /&gt;
&lt;br /&gt;
You should now have a functional regional variant!&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4140</id>
		<title>Template:Addon Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4140"/>
		<updated>2024-04-12T02:50:17Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Regonals&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavigationBox&lt;br /&gt;
|title=Addon Creation&lt;br /&gt;
|rows=&lt;br /&gt;
  {{NavigationRow|category=Tutorials|content=&lt;br /&gt;
    [[Tutorials/Creating A Custom Pokemon|Creating A Custom Pokemon]] [[Tutorials/Creating A Model|Creating A Model]] [[Tutorials/Creating Custom Spawns|Creating Custom Spawns]] [[Tutorials/Emissive Textures|Emissive Textures]] [[Tutorials/Animated Textures|Animated Textures]] [[Tutorials/Texture replacement|Texture Replacement]] [[Tutorials/Animation Replacement|Animation Replacement]] [[Tutorials/Regional_Forms| Regional Forms]][[Tutorials/Multiple Visual Variants|Multiple Visual Variants]] [[Tutorials/Adding_Sounds_To_Animations|Adding Sounds To Animations]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Asset Files|content=&lt;br /&gt;
    [[Resolver]] [[Poser]] [[Sounds]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Data Files|content=&lt;br /&gt;
    [[Species]] [[Species Features]] [[Species Feature Assignments]] [[Species Additions]] [[Spawn Detail Presets]] [[Spawn Pool World]] [[Fossils_File|Fossils]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Properties|content=&lt;br /&gt;
    [[Pokémon/Behaviour|Behaviour]] [[Spawn Condition]]&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Addon Creation]]&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Pok%C3%A9mon/Behaviour&amp;diff=4101</id>
		<title>Pokémon/Behaviour</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Pok%C3%A9mon/Behaviour&amp;diff=4101"/>
		<updated>2024-03-21T00:46:07Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Nobody noticed 😏&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Pokémon&#039;s AI behaviour is configurable from their species JSON. This is used control whether it can walk, swim, or fly as well as the speed it moves while doing each of those, whether or not it can fall asleep, and various other things.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you don&#039;t include any of the following behavior properties in your species JSON, the Pokémon will use default AI behavior. The default is a land-moving AI that moves at a brisk pace, cannot breathe underwater, and does not sleep.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===PokemonBehaviour===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | moving &lt;br /&gt;
| A set of properties relating to the movement of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | walk&lt;br /&gt;
| A set of properties that control the land walking of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| canWalk&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon cannot move over land.&lt;br /&gt;
|-&lt;br /&gt;
| avoidsLand&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon should avoid land.&lt;br /&gt;
|-&lt;br /&gt;
| walkSpeed&lt;br /&gt;
| The base speed of the Pokémon when moving over land, defaulting to &amp;lt;code&amp;gt;0.35&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | swim&lt;br /&gt;
| A set of properties that control the swimming (through water or lava) of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| avoidsWater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon should avoid water.&lt;br /&gt;
|-&lt;br /&gt;
| canSwimInWater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon can swim in water.&lt;br /&gt;
|-&lt;br /&gt;
| canBreatheUnderwater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will drown if it stays submerged in water for too long.&lt;br /&gt;
|-&lt;br /&gt;
| canWalkOnWater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon will move across the top of water as if it&#039;s walking on it.&lt;br /&gt;
|-&lt;br /&gt;
| canSwimInLava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon can swim in lava.&lt;br /&gt;
|-&lt;br /&gt;
| canBreatheUnderlava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will drown if it stays submerged in lava for too long.&lt;br /&gt;
|-&lt;br /&gt;
| canWalkOnLava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon will move across the top of lava as if it&#039;s walking on it.&lt;br /&gt;
|-&lt;br /&gt;
| hurtByLava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will not take damage in lava.&lt;br /&gt;
|-&lt;br /&gt;
| swimSpeed&lt;br /&gt;
| The base speed of the Pokémon when moving through fluids, defaulting to &amp;lt;code&amp;gt;0.3&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | fly&lt;br /&gt;
| A set of properties that control the flight through the air of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| canFly&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon is capable of flying through the air.&lt;br /&gt;
|-&lt;br /&gt;
| flySpeedHorizontal&lt;br /&gt;
| The horizontal speed of the Pokémon when flying, defaulting to &amp;lt;code&amp;gt;0.3&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| canLook&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will not even turn to look at nearby entities.&lt;br /&gt;
|-&lt;br /&gt;
| looksAtEntities&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will not even turn to look at nearby entities despite &amp;lt;code&amp;gt;canLook&amp;lt;/code&amp;gt; being set to true. The default value is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| stepHeight&lt;br /&gt;
| The height, measured in blocks, a Pokémon can step over before they consider jumping instead. The default value is &amp;lt;code&amp;gt;0.6&amp;lt;/code&amp;gt;. This default height allows them to step over beds. Due to unfinished pathfinding ai, Pokémon cant properly use this property.&lt;br /&gt;
|-&lt;br /&gt;
| wanderChance&lt;br /&gt;
| The number of ticks it takes before the Pokémon has a chance at wandering. The default value is &amp;lt;code&amp;gt;120&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| wanderSpeed&lt;br /&gt;
| Multiplies the Pokémon&#039;s speed by this value when the Pokémon is using the wander behavior. The default value is &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;. This property also seems to change the pathfinding behavior if the Pokémon is moving very fast.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | resting&lt;br /&gt;
| A set of properties relating to how and when the Pokémon sleeps, if it sleeps at all.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| canSleep&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If it&#039;s &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, then it can fall asleep if it is a wild Pokémon. Many other options exist as filters for when a Pokémon can fall asleep in nature and all require this option to be set to true.&lt;br /&gt;
|-&lt;br /&gt;
| times&lt;br /&gt;
| A time range for when it can sleep, which can be abbreviations or tick ranges and can be combined with commas. Examples: &amp;lt;code&amp;gt;&amp;quot;day&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;night&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;dawn,dusk&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;1200-2400,morning&amp;quot;&amp;lt;/code&amp;gt;. This is the same format as the time range controls in Spawner Conditions. The default value is set to &amp;lt;code&amp;gt;&amp;quot;night&amp;quot;&amp;lt;/code&amp;gt; if no other value is specified.&lt;br /&gt;
|-&lt;br /&gt;
| sleepChance&lt;br /&gt;
| The chance (per tick) of a Pokémon falling asleep. By default it is &amp;lt;code&amp;gt;0.0017&amp;lt;/code&amp;gt; which roughly equates to it taking an average of 30 seconds to fall asleep.&lt;br /&gt;
|-&lt;br /&gt;
| blocks&lt;br /&gt;
| A list of block conditions, one of which must be met for the Pokémon to be able to sleep on the block. Block conditions can be either the name of the block or a tag that the block must be in.&lt;br /&gt;
|-&lt;br /&gt;
| biomes&lt;br /&gt;
| A list of biome conditions, one of which must be met for the Pokémon to be able to sleep in the biome. Biome conditions can be either the name of the biome or a tag that the biome must be in.&lt;br /&gt;
|-&lt;br /&gt;
| light&lt;br /&gt;
| A light level or level range, between &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt;, which represents the light levels in which the Pokémon is able to sleep. If you set this option to &amp;lt;code&amp;gt;&amp;quot;15&amp;quot;&amp;lt;/code&amp;gt;, then the Pokémon can only fall asleep in maximum light. If you set this option to &amp;lt;code&amp;gt;&amp;quot;0-7&amp;quot;&amp;lt;/code&amp;gt;, then it can only fall asleep when it&#039;s fairly dark. [[minecraftwiki:Light#Light_level|These light levels can be found on the Minecraft Wiki]].&lt;br /&gt;
|-&lt;br /&gt;
| depth&lt;br /&gt;
| The depth of the sleep. This is a classification on what things can interrupt the sleep and make the Pokémon wake up. If you set it to &amp;lt;code&amp;gt;&amp;quot;normal&amp;quot;&amp;lt;/code&amp;gt; then it will wake up when a non-sneaking player is within 16 blocks of the Pokémon. Another option is &amp;lt;code&amp;gt;&amp;quot;comatose&amp;quot;&amp;lt;/code&amp;gt;, and this causes the Pokémon to sleep through pretty much anything. You can add new sleep depths using the SleepDepth API.&lt;br /&gt;
|-&lt;br /&gt;
| willSleepOnBed&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon will try to sleep on top of the player&#039;s bed when they hop into it, much like cats.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Examples from existing species JSONs:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Charmander&#039;&#039;&#039; - A classic land walker using many default behavior values which don&#039;t need to be specified in code.&lt;br /&gt;
    &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
        &amp;quot;resting&amp;quot;: {&lt;br /&gt;
            &amp;quot;canSleep&amp;quot;: true,&lt;br /&gt;
            &amp;quot;willSleepOnBed&amp;quot;: true,&lt;br /&gt;
            &amp;quot;depth&amp;quot;: &amp;quot;normal&amp;quot;,&lt;br /&gt;
            &amp;quot;light&amp;quot;: &amp;quot;0-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Charizard&#039;&#039;&#039; - A land walker that can also fly&lt;br /&gt;
  &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
    &amp;quot;resting&amp;quot;: {&lt;br /&gt;
      &amp;quot;canSleep&amp;quot;: true,&lt;br /&gt;
      &amp;quot;depth&amp;quot;: &amp;quot;normal&amp;quot;,&lt;br /&gt;
      &amp;quot;light&amp;quot;: &amp;quot;0-4&amp;quot;&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;moving&amp;quot;: {&lt;br /&gt;
      &amp;quot;fly&amp;quot;: {&lt;br /&gt;
        &amp;quot;canFly&amp;quot;: true,&lt;br /&gt;
        &amp;quot;flySpeedHorizontal&amp;quot;: 0.6&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Bidoof&#039;&#039;&#039; - A semi-aquatic egg laying land dweller. Chooses to &#039;walk&#039; on water in combination with animations to appear like it prefers to float on the surface of water and walk on land. &lt;br /&gt;
  &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
    &amp;quot;moving&amp;quot;: {&lt;br /&gt;
      &amp;quot;walk&amp;quot;: {&lt;br /&gt;
        &amp;quot;walkSpeed&amp;quot;: 0.28&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;swim&amp;quot;: {&lt;br /&gt;
        &amp;quot;swimSpeed&amp;quot;: 0.17,&lt;br /&gt;
        &amp;quot;canSwimInWater&amp;quot;: true,&lt;br /&gt;
        &amp;quot;canBreatheUnderwater&amp;quot;: true,&lt;br /&gt;
        &amp;quot;canWalkOnWater&amp;quot;: true&lt;br /&gt;
      }&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;resting&amp;quot;: {&lt;br /&gt;
      &amp;quot;canSleep&amp;quot;: true,&lt;br /&gt;
      &amp;quot;willSleepOnBed&amp;quot;: true,&lt;br /&gt;
      &amp;quot;depth&amp;quot;: &amp;quot;normal&amp;quot;,&lt;br /&gt;
      &amp;quot;light&amp;quot;: &amp;quot;0-4&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Magikarp&#039;&#039;&#039; - A basic fish-like aquatic pokemon&lt;br /&gt;
  &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
    &amp;quot;moving&amp;quot;: {&lt;br /&gt;
      &amp;quot;canLook&amp;quot;: false,&lt;br /&gt;
      &amp;quot;walk&amp;quot;: {&lt;br /&gt;
        &amp;quot;avoidsLand&amp;quot;: true&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;swim&amp;quot;: {&lt;br /&gt;
        &amp;quot;swimSpeed&amp;quot;: 0.1,&lt;br /&gt;
        &amp;quot;canSwimInWater&amp;quot;: true,&lt;br /&gt;
        &amp;quot;canBreatheUnderwater&amp;quot;: true&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Shellder&#039;&#039;&#039;- An aquatic Pokémon prefers to walk on surfaces. Can walk on both land or underwater&lt;br /&gt;
  &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
    &amp;quot;moving&amp;quot;: {&lt;br /&gt;
      &amp;quot;swim&amp;quot;: {&lt;br /&gt;
        &amp;quot;swimSpeed&amp;quot;: 0.1,&lt;br /&gt;
        &amp;quot;canSwimInWater&amp;quot;: false,&lt;br /&gt;
        &amp;quot;canBreatheUnderwater&amp;quot;: true&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Pok%C3%A9mon/Behaviour&amp;diff=4082</id>
		<title>Pokémon/Behaviour</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Pok%C3%A9mon/Behaviour&amp;diff=4082"/>
		<updated>2024-03-19T09:53:20Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Added some missing behavior properties&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Pokémon&#039;s AI behaviour is configurable from their species JSON. This is used control whether it can walk, swim, or fly as well as the speed it moves while doing each of those, whether or not it can fall asleep, and various other things.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;If you don&#039;t include any of the following behavior properties in your species JSON, the Pokémon will use default AI behavior. The default is a land-moving AI that moves at a brisk pace, cannot breathe underwater, and does not sleep.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===PokemonBehaviour===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | moving &lt;br /&gt;
| A set of properties relating to the movement of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | walk&lt;br /&gt;
| A set of properties that control the land walking of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| canWalk&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon cannot move over land.&lt;br /&gt;
|-&lt;br /&gt;
| avoidsLand&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon should avoid land.&lt;br /&gt;
|-&lt;br /&gt;
| walkSpeed&lt;br /&gt;
| The base speed of the Pokémon when moving over land, defaulting to &amp;lt;code&amp;gt;0.35&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | swim&lt;br /&gt;
| A set of properties that control the swimming (through water or lava) of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| avoidsWater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon should avoid water.&lt;br /&gt;
|-&lt;br /&gt;
| canSwimInWater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon can swim in water.&lt;br /&gt;
|-&lt;br /&gt;
| canBreatheUnderwater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will drown if it stays submerged in water for too long.&lt;br /&gt;
|-&lt;br /&gt;
| canWalkOnWater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon will move across the top of water as if it&#039;s walking on it.&lt;br /&gt;
|-&lt;br /&gt;
| canSwimInLava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon can swim in lava.&lt;br /&gt;
|-&lt;br /&gt;
| canBreatheUnderlava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will drown if it stays submerged in lava for too long.&lt;br /&gt;
|-&lt;br /&gt;
| canWalkOnLava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon will move across the top of lava as if it&#039;s walking on it.&lt;br /&gt;
|-&lt;br /&gt;
| hurtByLava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will not take damage in lava.&lt;br /&gt;
|-&lt;br /&gt;
| swimSpeed&lt;br /&gt;
| The base speed of the Pokémon when moving through fluids, defaulting to &amp;lt;code&amp;gt;0.3&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | fly&lt;br /&gt;
| A set of properties that control the flight through the air of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| canFly&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon is capable of flying through the air.&lt;br /&gt;
|-&lt;br /&gt;
| flySpeedHorizontal&lt;br /&gt;
| The horizontal speed of the Pokémon when flying, defaulting to &amp;lt;code&amp;gt;0.3&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| canLook&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will not even turn to look at nearby entities.&lt;br /&gt;
|-&lt;br /&gt;
| looksAtEntities&lt;br /&gt;
| I sure hope nobody reads this while I figure it out. The default value is &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| stepHeight&lt;br /&gt;
| I sure hope nobody reads this while I figure it out. The default value is &amp;lt;code&amp;gt;0.6&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| wanderChance&lt;br /&gt;
| The number of ticks it takes before the Pokémon has a chance at wandering. The default value is &amp;lt;code&amp;gt;120&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| wanderSpeed&lt;br /&gt;
| I sure hope nobody reads this while I figure it out. The default value is &amp;lt;code&amp;gt;1&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | resting&lt;br /&gt;
| A set of properties relating to how and when the Pokémon sleeps, if it sleeps at all.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| canSleep&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If it&#039;s &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, then it can fall asleep if it is a wild Pokémon. Many other options exist as filters for when a Pokémon can fall asleep in nature and all require this option to be set to true.&lt;br /&gt;
|-&lt;br /&gt;
| times&lt;br /&gt;
| A time range for when it can sleep, which can be abbreviations or tick ranges and can be combined with commas. Examples: &amp;lt;code&amp;gt;&amp;quot;day&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;night&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;dawn,dusk&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;1200-2400,morning&amp;quot;&amp;lt;/code&amp;gt;. This is the same format as the time range controls in Spawner Conditions. The default value is set to &amp;lt;code&amp;gt;&amp;quot;night&amp;quot;&amp;lt;/code&amp;gt; if no other value is specified.&lt;br /&gt;
|-&lt;br /&gt;
| sleepChance&lt;br /&gt;
| The chance (per tick) of a Pokémon falling asleep. By default it is &amp;lt;code&amp;gt;0.0017&amp;lt;/code&amp;gt; which roughly equates to it taking an average of 30 seconds to fall asleep.&lt;br /&gt;
|-&lt;br /&gt;
| blocks&lt;br /&gt;
| A list of block conditions, one of which must be met for the Pokémon to be able to sleep on the block. Block conditions can be either the name of the block or a tag that the block must be in.&lt;br /&gt;
|-&lt;br /&gt;
| biomes&lt;br /&gt;
| A list of biome conditions, one of which must be met for the Pokémon to be able to sleep in the biome. Biome conditions can be either the name of the biome or a tag that the biome must be in.&lt;br /&gt;
|-&lt;br /&gt;
| light&lt;br /&gt;
| A light level or level range, between &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt;, which represents the light levels in which the Pokémon is able to sleep. If you set this option to &amp;lt;code&amp;gt;&amp;quot;15&amp;quot;&amp;lt;/code&amp;gt;, then the Pokémon can only fall asleep in maximum light. If you set this option to &amp;lt;code&amp;gt;&amp;quot;0-7&amp;quot;&amp;lt;/code&amp;gt;, then it can only fall asleep when it&#039;s fairly dark. [[minecraftwiki:Light#Light_level|These light levels can be found on the Minecraft Wiki]].&lt;br /&gt;
|-&lt;br /&gt;
| depth&lt;br /&gt;
| The depth of the sleep. This is a classification on what things can interrupt the sleep and make the Pokémon wake up. If you set it to &amp;lt;code&amp;gt;&amp;quot;normal&amp;quot;&amp;lt;/code&amp;gt; then it will wake up when a non-sneaking player is within 16 blocks of the Pokémon. Another option is &amp;lt;code&amp;gt;&amp;quot;comatose&amp;quot;&amp;lt;/code&amp;gt;, and this causes the Pokémon to sleep through pretty much anything. You can add new sleep depths using the SleepDepth API.&lt;br /&gt;
|-&lt;br /&gt;
| willSleepOnBed&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon will try to sleep on top of the player&#039;s bed when they hop into it, much like cats.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Examples from existing species JSONs:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Charmander&#039;&#039;&#039;&lt;br /&gt;
    &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
        &amp;quot;resting&amp;quot;: {&lt;br /&gt;
            &amp;quot;canSleep&amp;quot;: true,&lt;br /&gt;
            &amp;quot;willSleepOnBed&amp;quot;: true,&lt;br /&gt;
            &amp;quot;depth&amp;quot;: &amp;quot;normal&amp;quot;,&lt;br /&gt;
            &amp;quot;light&amp;quot;: &amp;quot;0-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Charizard&#039;&#039;&#039;&lt;br /&gt;
    &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
        &amp;quot;moving&amp;quot;: {&lt;br /&gt;
            &amp;quot;fly&amp;quot;: {&lt;br /&gt;
                &amp;quot;canFly&amp;quot;: true,&lt;br /&gt;
                &amp;quot;flySpeedHorizontal&amp;quot;: 0.6&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lapras&#039;&#039;&#039;&lt;br /&gt;
    &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
        &amp;quot;moving&amp;quot;: {&lt;br /&gt;
            &amp;quot;swim&amp;quot;: {&lt;br /&gt;
                &amp;quot;canWalkOnWater&amp;quot;: true,&lt;br /&gt;
                &amp;quot;canSwim&amp;quot;: true,&lt;br /&gt;
                &amp;quot;canBreatheUnderwater&amp;quot;: true&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Main_Page&amp;diff=4036</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Main_Page&amp;diff=4036"/>
		<updated>2024-03-16T05:07:06Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Adding on a button i just creationed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div style=&amp;quot;text-align:center&amp;quot;&amp;gt;&lt;br /&gt;
[[file:cobblemon_wiki.png|800px]]&lt;br /&gt;
&lt;br /&gt;
=The Official Cobblemon Wiki=&lt;br /&gt;
{{Tile|[[Pokémon]]}}&lt;br /&gt;
{{Tile|[[Commands]]}}&lt;br /&gt;
{{Tile|[[:Category:Item|Items]]}}&lt;br /&gt;
{{Tile|[[:Category:Block|Blocks]]}}&lt;br /&gt;
{{Tile|[[:Category:Addon_Creation|Addon Creation]]}}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Category:Addon_Creation&amp;diff=4034</id>
		<title>Category:Addon Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Category:Addon_Creation&amp;diff=4034"/>
		<updated>2024-03-16T01:36:42Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: we ball&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4033</id>
		<title>Template:Addon Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4033"/>
		<updated>2024-03-08T07:04:25Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Sounds like there&amp;#039;s a new tutorial added to the table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavigationBox&lt;br /&gt;
|title=Addon Creation&lt;br /&gt;
|rows=&lt;br /&gt;
  {{NavigationRow|category=Tutorials|content=&lt;br /&gt;
    [[Tutorials/Creating A Custom Pokemon|Creating A Custom Pokemon]] [[Tutorials/Creating A Model|Creating A Model]] [[Tutorials/Creating Custom Spawns|Creating Custom Spawns]] [[Tutorials/Emissive Textures|Emissive Textures]] [[Tutorials/Animated Textures|Animated Textures]] [[Tutorials/Texture replacement|Texture Replacement]] [[Tutorials/Animation Replacement|Animation Replacement]] [[Tutorials/Multiple Visual Variants|Multiple Visual Variants]] [[Tutorials/Adding_Sounds_To_Animations|Adding Sounds To Animations]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Asset Files|content=&lt;br /&gt;
    [[Resolver]] [[Poser]] [[Sounds]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Data Files|content=&lt;br /&gt;
    [[Species]] [[Species Features]] [[Species Feature Assignments]] [[Species Additions]] [[Spawn Detail Presets]] [[Spawn Pool World]] [[Fossils_File|Fossils]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Properties|content=&lt;br /&gt;
    [[Pokémon/Behaviour|Behaviour]] [[Spawn Condition]]&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Addon Creation]]&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Tutorials/Adding_Sounds_To_Animations&amp;diff=4032</id>
		<title>Tutorials/Adding Sounds To Animations</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Tutorials/Adding_Sounds_To_Animations&amp;diff=4032"/>
		<updated>2024-03-08T07:00:44Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Sounds like there&amp;#039;s a new animation tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
This is an advanced tutorial that will show you how to add sounds to your custom Pokémon&#039;s animations. It is required that you are familiar with the process of [[Tutorials/Creating_A_Custom_Pokemon|creating a custom Pokémon]]. You will need a finished model, an animation to apply the sounds to, and a sound file to apply to the animation. While the steps in this guide can be used to add any sound to any animation, it will primarily focus on adding a cry to your Pokémon. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Acquiring a valid &amp;lt;code&amp;gt;ogg&amp;lt;/code&amp;gt; sound file to use is entirely on you. You will either have to make or find one.&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
== Recommended Tools ==&lt;br /&gt;
This section will list some free tools and resources that can help you format your files and folders.&lt;br /&gt;
* &#039;&#039;&#039;A Text Editor&#039;&#039;&#039; - If you are not using one already, they can be helpful for editing multiple files at once&lt;br /&gt;
** Recommendations:&lt;br /&gt;
*** Visual Studio Code - You can open your entire addon folder and access all content within. Can also play sound files. Helps you visualize the folder structure of your addon. &lt;br /&gt;
* &#039;&#039;&#039;Audio Editing Software&#039;&#039;&#039; - Minecraft only plays &amp;lt;code&amp;gt;ogg&amp;lt;/code&amp;gt; sound files. You&#039;ll need something to convert audio files into this format.&lt;br /&gt;
** Recommendations:&lt;br /&gt;
*** Audacity - Free software with many video tutorials on YouTube. Allows you to edit the sound file and export it to &amp;lt;code&amp;gt;ogg&amp;lt;/code&amp;gt; format. &lt;br /&gt;
* &#039;&#039;&#039;Blockbench&#039;&#039;&#039; - You will need it to load, edit, and export your animations. &lt;br /&gt;
* &#039;&#039;&#039;[https://minecraft.wiki/w/Sounds.json The sounds.json Wiki Page]&#039;&#039;&#039; - Lists some helpful properties you can use when creating the sounds JSON.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Step 1: Arrange The Folders Of Your Addon ==&lt;br /&gt;
Adding sounds would require you to add a &amp;lt;code&amp;gt;[[Sounds|sounds.json]]&amp;lt;/code&amp;gt; and one new branch of sound folders to your existing addon. For the sake of clarity, a complete addon with sounds would be arranged like so:&lt;br /&gt;
=== Folder Structure ===&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
**assets&lt;br /&gt;
***cobblemon&lt;br /&gt;
****bedrock&lt;br /&gt;
*****pokemon&lt;br /&gt;
******animations&lt;br /&gt;
*******&amp;lt;folder named after your pokemon&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.animation.json&#039;&#039;&#039;&lt;br /&gt;
******models&lt;br /&gt;
*******&amp;lt;folder named after your pokemon&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.geo.json&#039;&#039;&#039;&lt;br /&gt;
******posers&lt;br /&gt;
*******&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.json&#039;&#039;&#039;&lt;br /&gt;
******resolvers&lt;br /&gt;
*******&amp;lt;folder named after your pokemon&amp;gt;&lt;br /&gt;
********&#039;&#039;&#039;0_&amp;lt;pokemon&amp;gt;_base.json&#039;&#039;&#039;&lt;br /&gt;
****lang&lt;br /&gt;
*****&#039;&#039;&#039;en_us.json&#039;&#039;&#039;&lt;br /&gt;
****&#039;&#039;&#039;sounds.json&#039;&#039;&#039;&lt;br /&gt;
****sounds&lt;br /&gt;
*****pokemon&lt;br /&gt;
******&amp;lt;folder named after your pokemon&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;&amp;lt;sound&amp;gt;.ogg&#039;&#039;&#039;&lt;br /&gt;
****textures&lt;br /&gt;
*****pokemon&lt;br /&gt;
******&amp;lt;folder named after your pokemon&amp;gt;&lt;br /&gt;
*******&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.png&#039;&#039;&#039;&lt;br /&gt;
*******&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;_shiny.png&#039;&#039;&#039;&lt;br /&gt;
**data&lt;br /&gt;
***cobblemon&lt;br /&gt;
****spawn_pool_world&lt;br /&gt;
*****&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.json&#039;&#039;&#039;&lt;br /&gt;
****species&lt;br /&gt;
*****custom&lt;br /&gt;
******&#039;&#039;&#039;&amp;lt;pokemon&amp;gt;.json&#039;&#039;&#039;&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Arrange your asset folder similarly to the tree above so you can simply insert any new files with ease.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Step 2: Adding The Sound Keyframe ==&lt;br /&gt;
To get started, you will need one or more valid &amp;lt;code&amp;gt;ogg&amp;lt;/code&amp;gt; sound files to use for your animations. Create one if you haven&#039;t already. You will be loading and editing your asset files in Blockbench for this step. &lt;br /&gt;
&lt;br /&gt;
# Prepare your sound file(s)&lt;br /&gt;
# Open up Blockbench and load your model, texture, and animation files.&lt;br /&gt;
# Navigate to the animate tab and select the animation you want to add sounds to&lt;br /&gt;
#* If you don&#039;t have one, you can make one now. Making a simple cry animation where the Pokémon opens its mouth or some similar motion is recommended.&lt;br /&gt;
# Once your animation is selected, navigate to the &amp;lt;code&amp;gt;TIMELINE&amp;lt;/code&amp;gt; window and click on the &amp;lt;code&amp;gt;Animate Effects&amp;lt;/code&amp;gt; button.&lt;br /&gt;
# Click on the &amp;lt;code&amp;gt;+&amp;lt;/code&amp;gt; button for &amp;lt;code&amp;gt;sound&amp;lt;/code&amp;gt; to generate a new sound keyframe&lt;br /&gt;
#* The &amp;lt;code&amp;gt;KEYFRAME&amp;lt;/code&amp;gt; window should have opened up once the keyframe was made&lt;br /&gt;
# Navigate to the &amp;lt;code&amp;gt;KEYFRAME&amp;lt;/code&amp;gt; window and create an effect name for this keyframe&lt;br /&gt;
#* This would create a &amp;lt;code&amp;gt;sound event&amp;lt;/code&amp;gt; which Minecraft can use to play a sound when this animation is played.&lt;br /&gt;
#* In the case of making cries, this effect should be named &amp;lt;code&amp;gt;pokemon.&amp;lt;pokemon&amp;gt;.cry&amp;lt;/code&amp;gt;&lt;br /&gt;
#** Example: &amp;lt;code&amp;gt;pokemon.charizard.cry&amp;lt;/code&amp;gt;&lt;br /&gt;
[[File:BlockbenchStuff.png|thumb|center|1037px|caption|You should end up with something similar to Charizard&#039;s cry animation.]]&lt;br /&gt;
# &amp;lt;li value=&amp;quot;7&amp;quot;&amp;gt; Click on the &amp;lt;code&amp;gt;Select Keyframe File&amp;lt;/code&amp;gt; located to the right of your &amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt; name.&lt;br /&gt;
# Select and upload one of your prepared sound files&lt;br /&gt;
#* This will let the sound play in Blockbench whenever the sound keyframe is played in the animation.&lt;br /&gt;
# Adjust and edit the animation to your liking. &lt;br /&gt;
#* Now you can hear and see your animation. Should be easier to make adjustments.&lt;br /&gt;
# Once satisfied with your animation, save and export your animations to your addon.&lt;br /&gt;
#* Be sure to replace the old animation json in the folder. This new export has the data required to play the sound.&lt;br /&gt;
#* If you made any changes to the model or texture, be sure to export those again too.&lt;br /&gt;
#* If you just made a cry animation now, remember to add that animation to your Pokémon&#039;s &amp;lt;code&amp;gt;[[poser]]&amp;lt;/code&amp;gt; file.&lt;br /&gt;
#* At most, you should have exported your animations, model, and texture. Don&#039;t worry about the sound file yet. Those will be arranged next. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Step 3: Arrange Your Sounds ==&lt;br /&gt;
Your sound files should be kept in the same format as Cobblemon&#039;s sound files. This should make it easier to mimic the &amp;lt;code&amp;gt;sounds.json&amp;lt;/code&amp;gt; in the next step. &lt;br /&gt;
&lt;br /&gt;
# Insert your &amp;lt;code&amp;gt;ogg&amp;lt;/code&amp;gt; sound file into the folder named after your pokemon located deeper in the sounds folder.&lt;br /&gt;
# Rename this file to match the cry sound format of &amp;lt;code&amp;gt;&amp;lt;pokemon&amp;gt;_cry.ogg&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Example: &amp;lt;code&amp;gt;charizard_cry.ogg&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Can actually be named whatever you want. Just make sure you reference it correctly in Step 4.&lt;br /&gt;
&lt;br /&gt;
If done correctly, your sound file should have a file address similar to this:&amp;lt;/br&amp;gt;&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;your addon name&amp;gt; &amp;gt; assets &amp;gt; cobblemon &amp;gt; sounds &amp;gt; pokemon &amp;gt; &amp;lt;your pokemon&amp;gt;&amp;lt;/code&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You should end up with one or more &amp;lt;code&amp;gt;&amp;lt;pokemon&amp;gt;_cry.ogg&amp;lt;/code&amp;gt; files in your Pokémon&#039;s sound folder. Depends on what you&#039;re making. &lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Step 4: Create The sounds.json ==&lt;br /&gt;
The next step is to create a sounds JSON to play your sounds in Minecraft. The &amp;lt;code&amp;gt;[[Sounds|sounds.json]]&amp;lt;/code&amp;gt; is responsible for assigning sound files to any sound events. This file is not exclusive to Cobblemon. You can learn more about it from the [https://minecraft.wiki/w/Sounds.json Minecraft Wiki].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The name of your &amp;lt;code&amp;gt;sound event&amp;lt;/code&amp;gt; just needs to match the name of the &amp;lt;code&amp;gt;effect&amp;lt;/code&amp;gt; you made in the previous section. It does not need to be a cry.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
# Create a new text file and name it &amp;lt;code&amp;gt;sounds.json&amp;lt;/code&amp;gt;&lt;br /&gt;
#* Make sure this new file name ends in .json and not any other file extension like .txt.&lt;br /&gt;
# Open this new JSON in your preferred text editor&lt;br /&gt;
# Copy and paste this entire code block example into the JSON&lt;br /&gt;
#* If you have more than one cry file, you can list more file addresses. They would have equal chances to be played by default.&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;pokemon.charizard.cry&amp;quot;: {&lt;br /&gt;
        &amp;quot;sounds&amp;quot;: [&amp;quot;cobblemon:pokemon/charizard/charizard_cry&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
# &amp;lt;li value=4&amp;gt; Change all instances of &amp;quot;charizard&amp;quot; to be your Pokémon&#039;s name instead.&lt;br /&gt;
# If desired, add any special properties you want like subtitles.&lt;br /&gt;
# Save the file&lt;br /&gt;
# Insert this finished &amp;lt;code&amp;gt;sounds.json&amp;lt;/code&amp;gt; into the &amp;lt;code&amp;gt;cobblemon&amp;lt;/code&amp;gt; folder of your addon.&lt;br /&gt;
#* It must be in this folder and nowhere else. Otherwise, it wont be read.&lt;br /&gt;
#* Should be seated next to your sounds folder.&lt;br /&gt;
== Step 5: Test Your Addon In Game ==&lt;br /&gt;
The final step is to make sure the sounds work. &lt;br /&gt;
&lt;br /&gt;
# Copy your addon folder and place it in the &amp;quot;resourcepacks&amp;quot; and appropriate &amp;quot;datapacks&amp;quot; folder in the Minecraft root directory.&lt;br /&gt;
# Start up Minecraft and click on &#039;&#039;Options&#039;&#039;, then &#039;&#039;Resource Packs&#039;&#039;. Select your pack to load it.&lt;br /&gt;
#* Make sure you are using a version of your addon that includes all the new files and re-exports you just made.&lt;br /&gt;
# Load/create a &#039;&#039;&#039;Creative&#039;&#039;&#039; world save that contains your addon in the &amp;quot;datapacks&amp;quot; folder.&lt;br /&gt;
# Once in the world, you can run the command &amp;lt;code&amp;gt;/pokegive &amp;lt;target pokemon&amp;gt;&amp;lt;/code&amp;gt;.&lt;br /&gt;
#* Since cries are only played when a Pokémon is brought out of the pokeball or sent into battle, you need to have the Pokémon in your party.&lt;br /&gt;
# Send out your Pokémon.&lt;br /&gt;
# If you assigned the sound properly to a cry animation, it should play the sound now.&lt;br /&gt;
#* If you assigned it to another animation, have your Pokémon perform that animation instead and listen for the sound.&lt;br /&gt;
&lt;br /&gt;
If the sound is not being played, then something is not assigned properly. Make sure you followed the steps of this guide correctly and that your folder and file names are valid. Any capital letters or spaces in a file or folder name makes it unreadable. Additional help can be found in the Cobblemon Discord server.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=File:BlockbenchStuff.png&amp;diff=4031</id>
		<title>File:BlockbenchStuff.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=File:BlockbenchStuff.png&amp;diff=4031"/>
		<updated>2024-03-08T05:17:26Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: screenshot for clarity&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
screenshot for clarity&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4030</id>
		<title>Template:Addon Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4030"/>
		<updated>2024-03-07T12:04:22Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Sounds like there&amp;#039;s a new asset file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavigationBox&lt;br /&gt;
|title=Addon Creation&lt;br /&gt;
|rows=&lt;br /&gt;
  {{NavigationRow|category=Tutorials|content=&lt;br /&gt;
    [[Tutorials/Creating A Custom Pokemon|Creating A Custom Pokemon]] [[Tutorials/Creating A Model|Creating A Model]] [[Tutorials/Creating Custom Spawns|Creating Custom Spawns]] [[Tutorials/Emissive Textures|Emissive Textures]] [[Tutorials/Animated Textures|Animated Textures]] [[Tutorials/Texture replacement|Texture Replacement]] [[Tutorials/Animation Replacement|Animation Replacement]] [[Tutorials/Multiple Visual Variants|Multiple Visual Variants]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Asset Files|content=&lt;br /&gt;
    [[Resolver]] [[Poser]] [[Sounds]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Data Files|content=&lt;br /&gt;
    [[Species]] [[Species Features]] [[Species Feature Assignments]] [[Species Additions]] [[Spawn Detail Presets]] [[Spawn Pool World]] [[Fossils_File|Fossils]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Properties|content=&lt;br /&gt;
    [[Pokémon/Behaviour|Behaviour]] [[Spawn Condition]]&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Addon Creation]]&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Sounds&amp;diff=4029</id>
		<title>Sounds</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Sounds&amp;diff=4029"/>
		<updated>2024-03-07T12:03:23Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Sounds like there&amp;#039;s a new wiki page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The &amp;lt;code&amp;gt;sounds&amp;lt;/code&amp;gt; JSON is responsible for assigning sound files to any sound events. This file is not exclusive to Cobblemon. You can learn more about it from the [https://minecraft.wiki/w/Sounds.json Minecraft Wiki]. This purpose of this page is to show you how to use it with Cobblemon.&lt;br /&gt;
&amp;lt;/br&amp;gt; &lt;br /&gt;
== File And Folder Format ==&lt;br /&gt;
The sounds JSON simply adds more sound events and files for Minecraft to play. It does not overwrite other sounds JSONs in other resourcepacks. Replacements for sound event data would need to be specified inside of the file. You can reference Cobblemon&#039;s &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/resources/assets/cobblemon/sounds.json?ref_type=heads sounds.json]&amp;lt;/code&amp;gt; to see what sound events and sounds you can manipulate.&lt;br /&gt;
&lt;br /&gt;
There may be times where writing a sounds JSON would be irrelevant. One example would be if you want to replace a sound, but not add any to the sound event. You can simply have your resourcepack formatted to replace the &amp;lt;code&amp;gt;ogg&amp;lt;/code&amp;gt; file like you would with [[Tutorials/Texture_replacement| texture replacements]]. You can find the file address for specific sound files by searching in the &amp;lt;code&amp;gt;.jar&amp;lt;/code&amp;gt; or by referencing the [https://gitlab.com/cable-mc/cobblemon/-/tree/main/common/src/main/resources/assets/cobblemon/sounds?ref_type=heads Gitlab folder for sounds.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is an example of how you would arrange a &amp;lt;code&amp;gt;sounds.json&amp;lt;/code&amp;gt; and any custom sound files into a resourcepack:&lt;br /&gt;
* Minecraft only supports &amp;lt;code&amp;gt;ogg&amp;lt;/code&amp;gt; sound files.&lt;br /&gt;
* Organization is recommended, but the correct file address is mandatory. &lt;br /&gt;
==== Folder Structure ====&lt;br /&gt;
 &amp;lt;div class=&amp;quot;treeview&amp;quot;&amp;gt;&lt;br /&gt;
*&#039;&#039;(addon name)&#039;&#039;&lt;br /&gt;
** &#039;&#039;&#039;pack.mcmeta&#039;&#039;&#039;&lt;br /&gt;
**assets&lt;br /&gt;
***cobblemon&lt;br /&gt;
****&#039;&#039;&#039;sounds.json&#039;&#039;&#039;&lt;br /&gt;
****sounds&lt;br /&gt;
*****&amp;lt;primary folder&amp;gt;&lt;br /&gt;
******&#039;&#039;&#039;&amp;lt;sound&amp;gt;.ogg&#039;&#039;&#039;&lt;br /&gt;
******&amp;lt;secondary folder&amp;gt; (optional for organization)&lt;br /&gt;
*******&#039;&#039;&#039;&amp;lt;sound&amp;gt;.ogg&#039;&#039;&#039; (optional)&lt;br /&gt;
&amp;lt;/div&amp;gt;&amp;lt;/br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Sounds JSON Breakdown ==&lt;br /&gt;
Remember that you can learn more about the &amp;lt;code&amp;gt;sounds.json&amp;lt;/code&amp;gt; and its properties from the [https://minecraft.wiki/w/Sounds.json Minecraft Wiki]. Since you can only have one sounds JSON per resourcepack, you either have to group all your sound data together, or make separate resourcepacks if necessary.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is a breakdown of a &amp;lt;code&amp;gt;sounds.json&amp;lt;/code&amp;gt; performing some relevant functions. Hover over the underlined text to see more information.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This is a specified sound event. In this case, this is the sound event for wild Pokémon escaping the pokéball. &amp;quot;&amp;gt;poke_ball.open&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will specify if the following data will replace all previously loaded data for this specific sound event. False by default if this line is not written.&amp;quot;&amp;gt;replace&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;In this case, the following data will replace previous sound event data.&amp;quot;&amp;gt;true&amp;lt;/abbr&amp;gt;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you can write the subtitle for this sound event&amp;quot;&amp;gt;subtitle&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;This text will be displayed in the subtitles whenever a Pokémon escapes. How cruel.&amp;quot;&amp;gt;Hahaha&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list the sound files that this sound event can play.&amp;quot;&amp;gt;sounds&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The file address for the &#039;open.ogg&#039; sound file&amp;quot;&amp;gt;cobblemon:pokeball/open&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      &amp;quot;&amp;lt;abbr title=&amp;quot;The file address for the &#039;open2.ogg&#039; sound file&amp;quot;&amp;gt;cobblemon:pokeball/open2&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
      {&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;Because we want to apply the volume property to this sound specifically, it is formatted differently from the previous two. This is where we specify what file will use the following volume property.&amp;quot;&amp;gt;name&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;The file address for the &#039;open3.ogg&#039; sound file.&amp;quot;&amp;gt;cobblemon:pokeball/open3&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
        &amp;quot;&amp;lt;abbr title=&amp;quot;One of the few sound json properties. Here we are setting the volume value for the previously specified &#039;open3.ogg&#039; sound file. Uses a range of 0.0 to 1.&amp;quot;&amp;gt;volume&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;lt;abbr title=&amp;quot;A value of 0.5 should let the &#039;open3.ogg&#039; file play at half of its original volume.&amp;quot;&amp;gt;0.5&amp;lt;/abbr&amp;gt;&lt;br /&gt;
      }&lt;br /&gt;
    ]&lt;br /&gt;
  },&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;This is another specified sound event. In this case, this is the sound that gets played during Charizard&#039;s cry animation. It&#039;s played whenever Charizard is summoned or at the start of a battle.&amp;quot;&amp;gt;pokemon.charizard.cry&amp;lt;/abbr&amp;gt;&amp;quot;: {&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;Here you are listing sound files this event can use. Since the mod already has a sound for this event, the listed sounds will be added to Charizard&#039;s cry sounds.&amp;quot;&amp;gt;sounds&amp;lt;/abbr&amp;gt;&amp;quot;: [ &amp;quot;&amp;lt;abbr title=&amp;quot;The file address for the &#039;funny.ogg&#039; sound file.&amp;quot;&amp;gt;cobblemon:pokemon/charizard/funny&amp;lt;/abbr&amp;gt;&amp;quot; ]&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
If this file were loaded, it would do the following:&lt;br /&gt;
* Replace the data for the &amp;lt;code&amp;gt;poke_ball.open&amp;lt;/code&amp;gt; sound event with the data it has here&lt;br /&gt;
** Add a subtitle whenever this event plays&lt;br /&gt;
*** If subtitles are on, &amp;quot;Hahaha&amp;quot; is what would appear during this sound event.&lt;br /&gt;
** Play one of the three listed sound files whenever a Pokémon escapes the pokéball.&lt;br /&gt;
*** All three have an equal chance to be played since a &amp;lt;code&amp;gt;weight&amp;lt;/code&amp;gt; property was not applied.&lt;br /&gt;
*** Only &amp;lt;code&amp;gt;open3.ogg&amp;lt;/code&amp;gt; would play at half volume.&lt;br /&gt;
* Add a new sound file to play for Charizard&#039;s cry animation&lt;br /&gt;
** It does not replace the original sound because the &amp;lt;code&amp;gt;replace&amp;lt;/code&amp;gt; property is not written for this sound event.&lt;br /&gt;
** There would be a 50% chance of playing this &amp;lt;code&amp;gt;funny&amp;lt;/code&amp;gt; sound whenever sending out a Charizard.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
== Sounds JSON Examples ==&lt;br /&gt;
This section contains a couple examples of a &amp;lt;code&amp;gt;sounds.json&amp;lt;/code&amp;gt; for Cobblemon addons.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is an example of a sounds JSON that would add a sound for a custom Pokémon cry. This sound event would need to be tied to a cry animation through a sound keyframe in this specific animation. The sounds JSON creates the sound event and the animation plays the sound event. This example is not exclusive to cries. The same process would work for any sound in any animation. &lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;pokemon.tentaquil.cry&amp;quot;: {&lt;br /&gt;
        &amp;quot;sounds&amp;quot;: [&amp;quot;cobblemon:pokemon/tentaquil/tentaquil_cry&amp;quot;]&lt;br /&gt;
    }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt;Below is an example of a sounds JSON that would replace some sound event data. Remember that you would only want to do this if you plan to add more sounds to this sound event. Otherwise, just replace the &amp;lt;code&amp;gt;ogg&amp;lt;/code&amp;gt;. You can reference Cobblemon&#039;s &amp;lt;code&amp;gt;[https://gitlab.com/cable-mc/cobblemon/-/blob/main/common/src/main/resources/assets/cobblemon/sounds.json?ref_type=heads sounds.json]&amp;lt;/code&amp;gt; to see what sound events and sounds you can manipulate.&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;poke_ball.open&amp;quot;: {&lt;br /&gt;
    &amp;quot;replace&amp;quot;: true,&lt;br /&gt;
    &amp;quot;sounds&amp;quot;: [&lt;br /&gt;
      &amp;quot;cobblemon:pokeball/open&amp;quot;,&lt;br /&gt;
      &amp;quot;cobblemon:pokeball/open2&amp;quot;,&lt;br /&gt;
      &amp;quot;cobblemon:pokeball/open3&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon_Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4028</id>
		<title>Template:Addon Creation</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Template:Addon_Creation&amp;diff=4028"/>
		<updated>2024-03-06T05:32:53Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Fossilized new page to the table&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{NavigationBox&lt;br /&gt;
|title=Addon Creation&lt;br /&gt;
|rows=&lt;br /&gt;
  {{NavigationRow|category=Tutorials|content=&lt;br /&gt;
    [[Tutorials/Creating A Custom Pokemon|Creating A Custom Pokemon]] [[Tutorials/Creating A Model|Creating A Model]] [[Tutorials/Creating Custom Spawns|Creating Custom Spawns]] [[Tutorials/Emissive Textures|Emissive Textures]] [[Tutorials/Animated Textures|Animated Textures]] [[Tutorials/Texture replacement|Texture Replacement]] [[Tutorials/Animation Replacement|Animation Replacement]] [[Tutorials/Multiple Visual Variants|Multiple Visual Variants]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Asset Files|content=&lt;br /&gt;
    [[Resolver]] [[Poser]] &lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Data Files|content=&lt;br /&gt;
    [[Species]] [[Species Features]] [[Species Feature Assignments]] [[Species Additions]] [[Spawn Detail Presets]] [[Spawn Pool World]] [[Fossils_File|Fossils]]&lt;br /&gt;
  }}&lt;br /&gt;
  {{NavigationRow|category=Properties|content=&lt;br /&gt;
    [[Pokémon/Behaviour|Behaviour]] [[Spawn Condition]]&lt;br /&gt;
  }}&lt;br /&gt;
}}&lt;br /&gt;
[[Category:Addon Creation]]&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Fossils_File&amp;diff=4027</id>
		<title>Fossils File</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Fossils_File&amp;diff=4027"/>
		<updated>2024-03-06T05:30:28Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Your scientists were so preoccupied with whether or not they could, that they didn&amp;#039;t stop to think if they should.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{TOC|right}}&lt;br /&gt;
== Preface ==&lt;br /&gt;
The JSONs in the &amp;lt;code&amp;gt;fossils&amp;lt;/code&amp;gt; folder control the resulting Pokémon from the &amp;lt;code&amp;gt;fossil machine&amp;lt;/code&amp;gt;. These files specify what items are considered a fossil and what Pokémon should be created if these fossils are placed into the machine. They are short files where you simply select any Pokémon and any item in the game.&lt;br /&gt;
 &lt;br /&gt;
=== Fossil Breakdown ===&lt;br /&gt;
The fossil files are able to select any loaded Pokémon [[species]] to come out of the fossil machine. The &amp;lt;code&amp;gt;&amp;quot;result&amp;quot;&amp;lt;/code&amp;gt; line functions like the &amp;lt;code&amp;gt;/pokegive&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;/pokespawn&amp;lt;/code&amp;gt; commands, so you can include other data like level or regional forms. You can select up to 3 items you wish to serve as the &amp;quot;fossils.&amp;quot;&lt;br /&gt;
 &lt;br /&gt;
&amp;lt;/br&amp;gt;Here is a breakdown of the &amp;lt;code&amp;gt;arctozolt&amp;lt;/code&amp;gt; fossil file:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will specify what Pokémon will be generated from the machine and any extra data to apply to that Pokémon.&amp;quot;&amp;gt;result&amp;lt;/abbr&amp;gt;&amp;quot;: &amp;quot;&amp;lt;abbr title=&amp;quot;In this case, Arctozolt will be created if all the following items are placed into the machine. Because there is no other data specified, it will be a normal level 1 Arctozolt.&amp;quot;&amp;gt;arctozolt&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
  &amp;quot;&amp;lt;abbr title=&amp;quot;Here you will list items to be used as fossils for the machine.&amp;quot;&amp;gt;fossils&amp;lt;/abbr&amp;gt;&amp;quot;: [&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The item ID for the fossilized dino&amp;quot;&amp;gt;cobblemon:fossilized_dino&amp;lt;/abbr&amp;gt;&amp;quot;,&lt;br /&gt;
    &amp;quot;&amp;lt;abbr title=&amp;quot;The item ID for the fossilized bird&amp;quot;&amp;gt;cobblemon:fossilized_bird&amp;lt;/abbr&amp;gt;&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/br&amp;gt; Here is some extra info about fossil files:&lt;br /&gt;
* If your &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; pokemon doesn&#039;t exist or includes a typo, then the species will be chose at random from &#039;&#039;&#039;all loaded species&#039;&#039;&#039;.&lt;br /&gt;
* Since the &amp;lt;code&amp;gt;result&amp;lt;/code&amp;gt; functions like the commands that generate Pokémon, you can generate them as shiny or with special abilities.&lt;br /&gt;
* The &amp;lt;code&amp;gt;fossils&amp;lt;/code&amp;gt; don&#039;t need to come out of the suspicious sand or gravel blocks. You can use any item from the game.&lt;br /&gt;
* The &amp;lt;code&amp;gt;fossils&amp;lt;/code&amp;gt; list doesn&#039;t support NBT data.&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
=== Fossil Examples ===&lt;br /&gt;
Here are some fossil files you can use as a template to generate your own Pokémon.&lt;br /&gt;
&lt;br /&gt;
* Cranidos&#039; fossil file:&lt;br /&gt;
 {&lt;br /&gt;
  &amp;quot;result&amp;quot;: &amp;quot;cranidos&amp;quot;,&lt;br /&gt;
  &amp;quot;fossils&amp;quot;: [&lt;br /&gt;
    &amp;quot;cobblemon:skull_fossil&amp;quot;&lt;br /&gt;
  ]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/br&amp;gt;&lt;br /&gt;
* A custom Porygon file that will generate as a level 10 shiny:&lt;br /&gt;
 {&lt;br /&gt;
    &amp;quot;result&amp;quot;: &amp;quot;porygon shiny=yes level=10&amp;quot;,&lt;br /&gt;
    &amp;quot;fossils&amp;quot;: [&lt;br /&gt;
        &amp;quot;cobblemon:upgrade&amp;quot;,&lt;br /&gt;
        &amp;quot;cobblemon:dubious_disc&amp;quot;,&lt;br /&gt;
        &amp;quot;cobblemon:rare_candy&amp;quot;&lt;br /&gt;
    ]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Pok%C3%A9mon/Behaviour&amp;diff=4026</id>
		<title>Pokémon/Behaviour</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Pok%C3%A9mon/Behaviour&amp;diff=4026"/>
		<updated>2024-03-05T07:01:40Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Addon Creation creation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A Pokémon&#039;s AI behaviour is configurable from their species JSON. This is used control whether it can walk, swim, or fly as well as the speed it moves while doing each of those, whether or not it can fall asleep, and various other things.&lt;br /&gt;
&lt;br /&gt;
The default is a land-moving AI that moves at a brisk pace, cannot breathe underwater, and does not sleep.&lt;br /&gt;
&lt;br /&gt;
===PokemonBehaviour===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | moving &lt;br /&gt;
| A set of properties relating to the movement of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | walk&lt;br /&gt;
| A set of properties that control the land walking of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| canWalk&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon cannot move over land.&lt;br /&gt;
|-&lt;br /&gt;
| walkSpeed&lt;br /&gt;
| The base speed of the Pokémon when moving over land, defaulting to &amp;lt;code&amp;gt;0.35&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | swim&lt;br /&gt;
| A set of properties that control the swimming (through water or lava) of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| canSwimInWater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon can swim in water.&lt;br /&gt;
|-&lt;br /&gt;
| canBreatheUnderwater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will drown if it stays submerged in water for too long.&lt;br /&gt;
|-&lt;br /&gt;
| canWalkOnWater&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon will move across the top of water as if it&#039;s walking on it.&lt;br /&gt;
|-&lt;br /&gt;
| canSwimInLava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon can swim in lava.&lt;br /&gt;
|-&lt;br /&gt;
| canBreatheUnderlava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will drown if it stays submerged in lava for too long.&lt;br /&gt;
|-&lt;br /&gt;
| canWalkOnLava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon will move across the top of lava as if it&#039;s walking on it.&lt;br /&gt;
|-&lt;br /&gt;
| hurtByLava&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will not take damage in lava.&lt;br /&gt;
|-&lt;br /&gt;
| swimSpeed&lt;br /&gt;
| The base speed of the Pokémon when moving through fluids, defaulting to &amp;lt;code&amp;gt;0.3&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | fly&lt;br /&gt;
| A set of properties that control the flight through the air of a Pokémon.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| canFly&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon is capable of flying through the air.&lt;br /&gt;
|-&lt;br /&gt;
| flySpeedHorizontal&lt;br /&gt;
| The horizontal speed of the Pokémon when flying, defaulting to &amp;lt;code&amp;gt;0.3&amp;lt;/code&amp;gt;.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| canLook&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;false&amp;lt;/code&amp;gt;, the Pokémon will not even turn to look at nearby entities.&lt;br /&gt;
|}&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | resting&lt;br /&gt;
| A set of properties relating to how and when the Pokémon sleeps, if it sleeps at all.&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin:auto&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Option&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Details&lt;br /&gt;
|-&lt;br /&gt;
| canSleep&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If it&#039;s &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, then it can fall asleep if it is a wild Pokémon. Many other options exist as filters for when a Pokémon can fall asleep in nature and all require this option to be set to true.&lt;br /&gt;
|-&lt;br /&gt;
| times&lt;br /&gt;
| A time range for when it can sleep, which can be abbreviations or tick ranges and can be combined with commas. Examples: &amp;lt;code&amp;gt;&amp;quot;day&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;night&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;dawn,dusk&amp;quot;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;quot;1200-2400,morning&amp;quot;&amp;lt;/code&amp;gt;. This is the same format as the time range controls in Spawner Conditions. The default value is set to &amp;lt;code&amp;gt;&amp;quot;night&amp;quot;&amp;lt;/code&amp;gt; if no other value is specified.&lt;br /&gt;
|-&lt;br /&gt;
| sleepChance&lt;br /&gt;
| The chance (per tick) of a Pokémon falling asleep. By default it is &amp;lt;code&amp;gt;0.0017&amp;lt;/code&amp;gt; which roughly equates to it taking an average of 30 seconds to fall asleep.&lt;br /&gt;
|-&lt;br /&gt;
| blocks&lt;br /&gt;
| A list of block conditions, one of which must be met for the Pokémon to be able to sleep on the block. Block conditions can be either the name of the block or a tag that the block must be in.&lt;br /&gt;
|-&lt;br /&gt;
| biomes&lt;br /&gt;
| A list of biome conditions, one of which must be met for the Pokémon to be able to sleep in the biome. Biome conditions can be either the name of the biome or a tag that the biome must be in.&lt;br /&gt;
|-&lt;br /&gt;
| light&lt;br /&gt;
| A light level or level range, between &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt;, which represents the light levels in which the Pokémon is able to sleep. If you set this option to &amp;lt;code&amp;gt;&amp;quot;15&amp;quot;&amp;lt;/code&amp;gt;, then the Pokémon can only fall asleep in maximum light. If you set this option to &amp;lt;code&amp;gt;&amp;quot;0-7&amp;quot;&amp;lt;/code&amp;gt;, then it can only fall asleep when it&#039;s fairly dark. [[minecraftwiki:Light#Light_level|These light levels can be found on the Minecraft Wiki]].&lt;br /&gt;
|-&lt;br /&gt;
| depth&lt;br /&gt;
| The depth of the sleep. This is a classification on what things can interrupt the sleep and make the Pokémon wake up. If you set it to &amp;lt;code&amp;gt;&amp;quot;normal&amp;quot;&amp;lt;/code&amp;gt; then it will wake up when a non-sneaking player is within 16 blocks of the Pokémon. Another option is &amp;lt;code&amp;gt;&amp;quot;comatose&amp;quot;&amp;lt;/code&amp;gt;, and this causes the Pokémon to sleep through pretty much anything. You can add new sleep depths using the SleepDepth API.&lt;br /&gt;
|-&lt;br /&gt;
| willSleepOnBed&lt;br /&gt;
| A &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt; value. If &amp;lt;code&amp;gt;true&amp;lt;/code&amp;gt;, the Pokémon will try to sleep on top of the player&#039;s bed when they hop into it, much like cats.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
Examples from existing species JSONs:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Charmander&#039;&#039;&#039;&lt;br /&gt;
    &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
        &amp;quot;resting&amp;quot;: {&lt;br /&gt;
            &amp;quot;canSleep&amp;quot;: true,&lt;br /&gt;
            &amp;quot;willSleepOnBed&amp;quot;: true,&lt;br /&gt;
            &amp;quot;depth&amp;quot;: &amp;quot;normal&amp;quot;,&lt;br /&gt;
            &amp;quot;light&amp;quot;: &amp;quot;0-2&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Charizard&#039;&#039;&#039;&lt;br /&gt;
    &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
        &amp;quot;moving&amp;quot;: {&lt;br /&gt;
            &amp;quot;fly&amp;quot;: {&lt;br /&gt;
                &amp;quot;canFly&amp;quot;: true,&lt;br /&gt;
                &amp;quot;flySpeedHorizontal&amp;quot;: 0.6&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lapras&#039;&#039;&#039;&lt;br /&gt;
    &amp;quot;behaviour&amp;quot;: {&lt;br /&gt;
        &amp;quot;moving&amp;quot;: {&lt;br /&gt;
            &amp;quot;swim&amp;quot;: {&lt;br /&gt;
                &amp;quot;canWalkOnWater&amp;quot;: true,&lt;br /&gt;
                &amp;quot;canSwim&amp;quot;: true,&lt;br /&gt;
                &amp;quot;canBreatheUnderwater&amp;quot;: true&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    },&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
	<entry>
		<id>https://wiki.cobblemon.com/index.php?title=Spawn_Condition&amp;diff=4025</id>
		<title>Spawn Condition</title>
		<link rel="alternate" type="text/html" href="https://wiki.cobblemon.com/index.php?title=Spawn_Condition&amp;diff=4025"/>
		<updated>2024-03-05T07:00:38Z</updated>

		<summary type="html">&lt;p&gt;Frank The Farmer: Added on Addon Creation Template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;A &#039;&#039;&#039;spawn condition&#039;&#039;&#039; is used during spawn selection to decide whether a specific SpawnDetail is compatible with the given SpawningContext.&lt;br /&gt;
&lt;br /&gt;
A [[Spawn_Pool_World|spawn condition JSON]] has many common properties that apply to all contexts, and then there are sub-types that apply to specific contexts. For example, a submerged context has information about depth, and so a SubmergedSpawningCondition is required to make a condition that checks that depth value for a spawn. For all values that are left blank or empty, that value is not checked by the condition. For example, an empty biome list means the biome won&#039;t affect the spawning and an unset moonPhase means the moon won&#039;t affect the spawning.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Property Name&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | dimensions&lt;br /&gt;
| A list of dimension IDs, such as &amp;lt;code&amp;gt;minecraft:overworld&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;minecraft:the_nether&amp;lt;/code&amp;gt;. This is technically called a dimension effect.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | biomes&lt;br /&gt;
| A list of biome based conditions. These conditions are all written as text. If the condition starts with a &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt; such as &amp;lt;code&amp;gt;#pokemoncobbled:is_arid&amp;lt;/code&amp;gt;, it is understood as a biome tag condition, otherwise checked as a biome ID such as &amp;lt;code&amp;gt;minecraft:forest&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | structures&lt;br /&gt;
| A list of structure IDs, such as &amp;lt;code&amp;gt;minecraft:stronghold&amp;lt;/code&amp;gt; or &amp;lt;code&amp;gt;minecraft:desert_pyramid&amp;lt;/code&amp;gt;. Allows Pokémon to spawn in the chunks of the listed structures.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | moonPhase&lt;br /&gt;
| The phase of the moon required for the spawn. This is an integer between 0 and 7 according to the [https://minecraft.fandom.com/wiki/Moon Minecraft Wiki].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | canSeeSky&lt;br /&gt;
| Whether or not the spawning context must have a direct route to the sky above it, as a &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt;. Fluids do not count as a sky obstruction.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | minX&lt;br /&gt;
| The minimum X coordinate that the spawning context may have.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | minY&lt;br /&gt;
| The minimum Y coordinate that the spawning context may have.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | minZ&lt;br /&gt;
| The minimum Z coordinate that the spawning context may have.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | maxX&lt;br /&gt;
| The maximum X coordinate that the spawning context may have.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | maxY&lt;br /&gt;
| The maximum Y coordinate that the spawning context may have.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | maxZ&lt;br /&gt;
| The maximum Z coordinate that the spawning context may have.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | minLight&lt;br /&gt;
| The lowest acceptable light level at the spawning context&#039;s location. This is an integer between &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt; inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | maxLight&lt;br /&gt;
| The highest acceptable light level at the spawning context&#039;s location. This is an integer between &amp;lt;code&amp;gt;0&amp;lt;/code&amp;gt; and &amp;lt;code&amp;gt;15&amp;lt;/code&amp;gt; inclusive.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | timeRange&lt;br /&gt;
| The time range that is acceptable. This can either be text for registered time ranges like &amp;lt;code&amp;gt;&#039;day&#039;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&#039;night&#039;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&#039;morning&#039;&amp;lt;/code&amp;gt;, or it can be a comma separated list of tick ranges such as &amp;lt;code&amp;gt;&#039;0-1200,2000-3000&#039;&amp;lt;/code&amp;gt;. It can also be a combination of both.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | isRaining&lt;br /&gt;
| Whether it must be raining or not raining, as a &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt;.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | isThundering&lt;br /&gt;
| Whether it must be thundering or not thundering, as a &amp;lt;code&amp;gt;true/false&amp;lt;/code&amp;gt;. Note that if it&#039;s raining regularly, it will not count as thundering. If it is thundering, it will count as both thundering and raining.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | labels&lt;br /&gt;
| The required labels on the spawn for it to be acceptable. This can be either a condition that requires all of the specified labels to be met, or just one of them. This is dictated by the &#039;&#039;&#039;labelMode&#039;&#039;&#039; value.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | labelMode&lt;br /&gt;
| What kind of check will be applied for the labels. This is either &amp;lt;code&amp;gt;ANY&amp;lt;/code&amp;gt;, meaning that any matching label from the condition&#039;s label list will suffice, or &amp;lt;code&amp;gt;ALL&amp;lt;/code&amp;gt;, which requires every label mentioned in the condition to exist in the spawn.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Area spawning conditions are a sub-type of spawning condition and adds more properties that will apply to all area based spawning contexts (which is all world spawning).&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Property Name&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | minWidth&lt;br /&gt;
| The smallest acceptable horizontal space around an area spawning context. Should be used to protect spawns from occurring where they will immediately suffocate and die.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | maxWidth&lt;br /&gt;
| The largest acceptable horizontal space around an area spawning context.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | minHeight&lt;br /&gt;
| The smallest acceptable amount of vertical space above an area spawning context. Should be used to protect spawns from occurring where they will immediately suffocate and die.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | maxHeight&lt;br /&gt;
| The largest acceptable amount of vertical space above an area spawning context.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | neededNearbyBlocks&lt;br /&gt;
| A list of block identifiers such as &amp;lt;code&amp;gt;minecraft:cobblestone&amp;lt;/code&amp;gt;, at least one of which must be nearby. What counts as nearby is dependent on the config option that dictates how far out it should look.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Grounded spawning conditions are a sub-type of area spawning condition and adds more properties that will apply to the grounded context.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Property Name&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | neededBaseBlocks&lt;br /&gt;
| A list of block identifiers such as &amp;lt;code&amp;gt;minecraft:cobblestone&amp;lt;/code&amp;gt;, at least one of which must be the base block that the spawn is occurring on.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Submerged spawning conditions are a sub-type of area spawning condition and adds more properties that will apply to the submerged contexts, those being underlava and underwater.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Property Name&lt;br /&gt;
! style=&amp;quot;text-align:left;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | minDepth&lt;br /&gt;
| The minimum number of blocks that may be beneath the submerged spawning context.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | maxDepth&lt;br /&gt;
| The maximum number of blocks that may be beneath the submerged spawning context.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | fluidIsSource&lt;br /&gt;
| Whether or not the fluid block the spawn is occurring in must be a source for the fluid.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;vertical-align:top;&amp;quot; | fluidBlock&lt;br /&gt;
| The type of fluid it must be spawning in. This is as a translated name, such as water.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Addon Creation}}&lt;/div&gt;</summary>
		<author><name>Frank The Farmer</name></author>
	</entry>
</feed>