######################################################################
# Json Entity Model
# Reference configuration for OptiFine's feature Custom Entity Models
######################################################################
# For each entity model or tile entity model that you wish to override use this template and create a "<entity_name>.jem" file in the 
# "assets/minecraft/optifine/cem" or "assets/minecraft/optifine/cem/<entity_name>" folder of your resource pack. 
# The entity model contains a list of entity part models.
# The part models can be specified inline or loaded from external ".jpm" files.
#
# Special cases:
# - the mushrooms on the back of the Mooshroom can be customized with the textures 
#   "assets/minecraft/textures/entity/cow/red_mushroom.png"  
#   "assets/minecraft/textures/entity/cow/brown_mushroom.png"  
#
# Entity name              Part name
# ======================== ======================================================
# allay                    body, head, left_arm, right_arm, left_wing, right_wing
# armadillo                body, head, left_ear, right_ear, left_ear_cube, right_ear_cube, back_left_leg, back_right_leg, front_left_leg, front_right_leg, cube, tail
# armor_stand              body, head, headwear, left_arm, right_arm, left_leg, right_leg, right, left, waist, base
# arrow                    back, cross_1, cross_2
# axolotl                  body, head, leg1 ... leg4, tail, top_gills, left_gills, right_gills
# bat                      body, head, right_wing, left_wing, outer_right_wing, outer_left_wing, feet
# bee                      body, torso, right_wing, left_wing, front_legs, middle_legs, back_legs, stinger, left_antenna, right_antenna
# blaze                    head, stick1 ... stick12
# bogged                   body, head, headwear, left_arm, right_arm, left_leg, right_leg, mushrooms
# bogged_outer             body, head, headwear, left_arm, right_arm, left_leg, right_leg
# breeze                   body, rods, head
# breeze_eyes              body, head, eyes
# breeze_wind              body, wind_body, wind_middle, wind_bottom, wind_top
# breeze_wind_charge       <fallback to wind_charge>
# camel                    body, hump, tail, head, left_ear, right_ear, back_left_leg, back_right_leg, front_left_leg, front_right_leg
# camel_saddle             <camel parts>, saddle, reins, bridle
# camel_husk               body, hump, tail, head, left_ear, right_ear, back_left_leg, back_right_leg, front_left_leg, front_right_leg
# camel_husk_saddle        <camel_husk parts>, saddle, reins, bridle
# cat                      body, head, tail, tail2, back_left_leg, back_right_leg, front_left_leg, front_right_leg
# cat_collar               <fallback to cat>
# cave_spider              body, head, neck, leg1 ... leg8
# chicken                  body, head, right_leg, left_leg, right_wing, left_wing, bill, chin
# cod                      body, fin_back, head, nose, fin_right, fin_left, tail
# cold_chicken             <chicken parts>
# cold_cow                 <cow parts>
# cold_pig                 <pig parts>
# copper_golem             body, head, right_arm, left_arm, right_leg, left_leg
# cow                      body, head, leg1 ... leg4
# creaking                 body, upper_body, head, right_arm, left_arm, right_leg, left_leg
# creeper                  body, head, leg1 ... leg4
# creeper_charge           body, head, leg1 ... leg4
# dolphin                  body, back_fin, left_fin, right_fin, tail, tail_fin, head
# donkey                   body, neck, back_right_leg, back_left_leg, front_right_leg, front_left_leg, tail, head, mane, mouth, left_ear, right_ear, left_chest, right_chest
# donkey_saddle            <donkey parts>, saddle, left_saddle_mouth, right_saddle_mouth, left_saddle_line, right_saddle_line, head_saddle, mouth_saddle_wrap
# dragon                   head, jaw, body, neck1 ... neck4, neck5, tail1 ... tail12, left_wing, left_wing_tip, front_left_leg, front_left_shin, front_left_foot, back_left_leg, back_left_shin, back_left_foot, right_wing, right_wing_tip, front_right_leg, front_right_shin, front_right_foot, back_right_leg, back_right_shin, back_right_foot
# drowned                  body, head, headwear, left_arm, right_arm, left_leg, right_leg
# drowned_outer            body, head, headwear, left_arm, right_arm, left_leg, right_leg
# elder_guardian           body, eye, spine1 ... spine12, tail1 ... tail3
# end_crystal              cube, outer_glass, inner_glass, base
# enderman                 body, head, headwear, left_arm, right_arm, left_leg, right_leg
# endermite                body1 ... body4
# evoker                   body, head, hat, arms, right_leg, left_leg, nose, right_arm, left_arm
# evoker_fangs             base, upper_jaw, lower_jaw
# fox                      body, head, leg1 ... leg4, tail
# frog                     body, head, eyes, tongue, left_arm, right_arm, left_leg, right_leg, croaking_body
# ghast                    body, tentacle1 ... tentacle9
# giant                    body, head, headwear, left_arm, right_arm, left_leg, right_leg
# glow_squid               body, tentacle1 ... tentacle8
# goat                     body, head, leg1 ... leg4, left_horn, right_horn, nose
# guardian                 body, eye, spine1 ... spine12, tail1 ... tail3
# happy_ghast              body, tentacle1 ... tentacle9
# happy_ghast_baby         body, inner_body, tentacle1 ... tentacle9
# happy_ghast_harness      body, goggles
# happy_ghast_ropes        body, tentacle1 ... tentacle9
# hoglin                   body, mane, head, right_ear, left_ear, front_right_leg, front_left_leg, back_right_leg, back_left_leg
# horse                    body, neck, back_right_leg, back_left_leg, front_right_leg, front_left_leg, tail, head, mane, mouth, left_ear, right_ear
# horse_armor              body, neck, back_right_leg, back_left_leg, front_right_leg, front_left_leg, tail, head, mane, mouth, left_ear, right_ear
# horse_saddle             <horse parts>, saddle, left_saddle_mouth, right_saddle_mouth, left_saddle_line, right_saddle_line, head_saddle, mouth_saddle_wrap
# husk                     body, head, headwear, left_arm, right_arm, left_leg, right_leg
# illusioner               body, head, hat, arms, right_leg, left_leg, nose, right_arm, left_arm
# iron_golem               body, head, right_arm, left_arm, left_leg, right_leg
# lead_knot                knot
# llama                    body, head, leg1 ... leg4, chest_right, chest_left
# llama_decor              body, head, leg1 ... leg4, chest_right, chest_left
# llama_spit               body
# magma_cube               core, segment1 ... segment8
# mooshroom                body, head, leg1 ... leg4
# mule                     body, neck, back_right_leg, back_left_leg, front_right_leg, front_left_leg, tail, head, mane, mouth, left_ear, right_ear, left_chest, right_chest
# mule_saddle              <mule parts>, saddle, left_saddle_mouth, right_saddle_mouth, left_saddle_line, right_saddle_line, head_saddle, mouth_saddle_wrap
# nautilus                 body, shell, upper_mouth, inner_mouth, lower_mouth
# nautilus_saddle          shell
# ocelot                   body, head, tail, tail2, back_left_leg, back_right_leg, front_left_leg, front_right_leg
# panda                    body, head, leg1 ... leg4
# parched                  body, head, headwear, left_arm, right_arm, left_leg, right_leg
# parrot                   body, tail, left_wing, right_wing, head, left_leg, right_leg
# parrot_shoulder          <fallback to parrot>
# phantom                  body, head, left_wing, left_wing_tip, right_wing, right_wing_tip, tail, tail2
# pig                      body, head, leg1 ... leg4
# pig_saddle               body, head, leg1 ... leg4
# piglin                   body, head, headwear, left_arm, right_arm, left_leg, right_leg, left_sleeve, right_sleeve, left_pants, right_pants, jacket, left_ear, right_ear
# piglin_brute             body, head, headwear, left_arm, right_arm, left_leg, right_leg, left_sleeve, right_sleeve, left_pants, right_pants, jacket, left_ear, right_ear
# pillager                 body, head, hat, arms, right_leg, left_leg, nose, right_arm, left_arm
# polar_bear               body, head, leg1 ... leg4
# puffer_fish_big          body, fin_right, fin_left, spikes_front_top, spikes_middle_top, spikes_back_top, spikes_front_right, spikes_front_left, spikes_front_bottom, spikes_middle_bottom, spikes_back_bottom, spikes_back_right, spikes_back_left
# puffer_fish_medium       body, fin_right, fin_left, spikes_front_top, spikes_back_top, spikes_front_right, spikes_back_right, spikes_back_left, spikes_front_left, spikes_back_bottom, spikes_front_bottom
# puffer_fish_small        body, eye_right, eye_left, fin_right, fin_left, tail
# rabbit                   body, left_foot, right_foot, left_thigh, right_thigh, left_arm, right_arm, head, right_ear, left_ear, tail, nose
# ravager                  body, head, jaw, leg1 ... leg4, neck
# salmon                   body_front, body_back, head, fin_back_1, fin_back_2, tail, fin_right, fin_left
# salmon_large             <fallback to salmon>
# salmon_small             <fallback to salmon>
# sheep                    body, head, leg1 ... leg4
# sheep_wool               body, head, leg1 ... leg4
# sheep_wool_undercoat     body, head, leg1 ... leg4 <fallback to sheep>
# shield                   plate, handle
# shulker                  base, lid, head
# shulker_bullet           bullet
# silverfish               body1 ... body7, wing1 ... wing3
# skeleton                 body, head, headwear, left_arm, right_arm, left_leg, right_leg
# skeleton_horse           body, neck, back_right_leg, back_left_leg, front_right_leg, front_left_leg, tail, head, mane, mouth, left_ear, right_ear
# skeleton_horse_armor     body, neck, back_right_leg, back_left_leg, front_right_leg, front_left_leg, tail, head, mane, mouth, left_ear, right_ear
# skeleton_horse_saddle    <skeleton_horse parts>, saddle, left_saddle_mouth, right_saddle_mouth, left_saddle_line, right_saddle_line, head_saddle, mouth_saddle_wrap
# slime                    body, left_eye, right_eye, mouth
# slime_outer              body
# sniffer                  body, back_left_leg, back_right_leg, middle_left_leg, middle_right_leg, front_left_leg, front_right_leg, head, left_ear, right_ear, nose, lower_beak
# snow_golem               body, body_bottom, head, right_hand, left_hand
# spectral_arrow           <fallback to arrow>
# spider                   body, head, neck, leg1 ... leg4, leg5, leg6, leg7, leg8
# squid                    body, tentacle1 ... tentacle8
# stray                    body, head, headwear, left_arm, right_arm, left_leg, right_leg
# stray_outer              body, head, headwear, left_arm, right_arm, left_leg, right_leg
# strider                  body, right_leg, left_leg, hair_right_bottom, hair_right_middle, hair_right_top, hair_left_top, hair_left_middle, hair_left_bottom
# strider_saddle           body, right_leg, left_leg, hair_right_bottom, hair_right_middle, hair_right_top, hair_left_top, hair_left_middle, hair_left_bottom
# tadpole                  body, tail
# trader_llama             body, head, leg1 ... leg4, chest_right, chest_left
# trader_llama_decor       body, head, leg1 ... leg4, chest_right, chest_left
# trident                  body, base, left_spike, middle_spike, right_spike
# trident_hand             <fallback to trident>
# tropical_fish_a          body, tail, fin_right, fin_left, fin_top
# tropical_fish_b          body, tail, fin_right, fin_left, fin_top, fin_bottom
# tropical_fish_pattern_a  body, tail, fin_right, fin_left, fin_top
# tropical_fish_pattern_b  body, tail, fin_right, fin_left, fin_top, fin_bottom
# turtle                   body, head, leg1 ... leg4, body2
# vex                      body, head, right_arm, left_arm, right_wing, left_wing
# villager                 body, head, headwear, headwear2, bodywear, arms, right_leg, left_leg, nose
# vindicator               body, head, hat, arms, right_leg, left_leg, nose, right_arm, left_arm
# wandering_trader         body, head, headwear, headwear2, bodywear, arms, right_leg, left_leg, nose
# warden                   body, torso, head, right_leg, left_leg, right_arm, left_arm, right_tendril, left_tendril, right_ribcage, left_ribcage
# warm_chicken             <chicken parts>
# warm_cow                 <cow parts>
# warm_pig                 <pig parts>
# wind_charge              wind, charge
# witch                    body, head, headwear, headwear2, bodywear, arms, right_leg, left_leg, nose, mole
# wither                   body1 ... body3, head1 ... head3
# wither_armor             body1, body2, body3, head1, head2, head3
# wither_skeleton          body, head, headwear, left_arm, right_arm, left_leg, right_leg
# wither_skull             head
# wolf                     body, head, leg1 ... leg4, tail, mane
# wolf_armor               body, head, leg1 ... leg4, tail, mane
# wolf_collar              <fallback to wolf>
# zoglin                   body, mane, head, right_ear, left_ear, front_right_leg, front_left_leg, back_right_leg, back_left_leg
# zombie                   body, head, headwear, left_arm, right_arm, left_leg, right_leg
# zombie_horse             body, neck, back_right_leg, back_left_leg, front_right_leg, front_left_leg, tail, head, mane, mouth, left_ear, right_ear
# zombie_horse_armor       body, neck, back_right_leg, back_left_leg, front_right_leg, front_left_leg, tail, head, mane, mouth, left_ear, right_ear
# zombie_horse_saddle      <zombie_horse parts>, saddle, left_saddle_mouth, right_saddle_mouth, left_saddle_line, right_saddle_line, head_saddle, mouth_saddle_wrap
# zombie_nautilus          body, shell, upper_mouth, inner_mouth, lower_mouth
# zombie_nautilus_coral    body, shell, upper_mouth, inner_mouth, lower_mouth, corals
# zombie_villager          body, head, headwear, left_arm, right_arm, left_leg, right_leg
# zombified_piglin         body, head, headwear, left_arm, right_arm, left_leg, right_leg, left_sleeve, right_sleeve, left_pants, right_pants, jacket, left_ear, right_ear
#
# Baby name                Part name
# ======================== ======================================================
# armadillo_baby           <fallback to armadillo>
# armor_stand_small        <fallback to armor_stand>
# axolotl_baby             <fallback to axolotl>
# bee_baby                 <fallback to bee>
# camel_baby               <fallback to camel>
# camel_baby_saddle        <fallback to camel_saddle>
# camel_husk_baby          <fallback to camel_husk>
# camel_husk_baby_saddle   <fallback to camel_husk_saddle>
# cat_baby                 <fallback to cat>
# cat_baby_collar          <fallback to cat_collar>
# chicken_baby             <fallback to chicken>
# cold_chicken_baby        <fallback to cold_chicken>
# cold_cow_baby            <fallback to cold_cow>
# cold_pig_baby            <fallback to cold_pig>
# cow_baby                 <fallback to cow>
# dolphin_baby             <fallback to dolphin>
# donkey_baby              <no fallback>
# donkey_baby_saddle       <no fallback>
# drowned_baby             <fallback to drowned>
# drowned_baby_outer       <fallback to drowned_outer>
# fox_baby                 <fallback to fox>
# glow_squid_baby          <fallback to glow_squid>
# goat_baby                <fallback to goat>
# hoglin_baby              <fallback to hoglin>
# horse_baby               <no fallback>
# horse_baby_armor         <no fallback>
# horse_baby_saddle        <no fallback>
# husk_baby                <fallback to husk>
# llama_baby               <fallback to llama>
# llama_baby_decor         <fallback to llama_decor>
# mooshroom_baby           <fallback to mooshroom>
# mule_baby                <no fallback>
# mule_baby_saddle         <no fallback>
# nautilus_baby            <no fallback>
# ocelot_baby              <fallback to ocelot>
# panda_baby               <fallback to panda>
# pig_baby                 <fallback to pig>
# pig_baby_saddle          <fallback to pig_saddle>
# piglin_baby              <fallback to piglin>
# polar_bear_baby          <fallback to polar_bear>
# rabbit_baby              <fallback to rabbit>
# sheep_baby               <fallback to sheep>
# sheep_baby_wool          <fallback to sheep_wool>
# sheep_baby_wool_undercoat  <fallback to sheep_wool_undercoat>
# skeleton_horse_baby        <no fallback>
# skeleton_horse_baby_armor  <no fallback>
# skeleton_horse_baby_saddle <no fallback>
# sniffer_baby             <fallback to sniffer>
# squid_baby               <fallback to squid>
# strider_baby             <fallback to strider>
# strider_baby_saddle      <fallback to strider_saddle>
# trader_llama_baby        <fallback to trader_llama>
# trader_llama_baby_decor  <fallback to trader_llama_decor>
# turtle_baby              <fallback to turtle>
# villager_baby            <fallback to villager>
# warm_chicken_baby        <fallback to warm_chicken>
# warm_cow_baby            <fallback to warm_cow>
# warm_pig_baby            <fallback to warm_pig>
# wolf_baby                <fallback to wolf>
# wolf_baby_armor          <fallback to wolf_armor>
# wolf_baby_collar         <fallback to wolf_collar>
# zoglin_baby              <fallback to zoglin>
# zombie_baby              <fallback to zombie>
# zombie_horse_baby        <no fallback>
# zombie_horse_baby_armor  <no fallback>
# zombie_horse_baby_saddle <no fallback>
# zombie_villager_baby     <fallback to zombie_villager>
# zombified_piglin_baby    <fallback to zombified_piglin>
#
# Boats                    Part name
# ======================== ======================================================
# boat                     bottom, back, front, right, left, paddle_left, paddle_right
# chest_boat               bottom, back, front, right, left, paddle_left, paddle_right, chest_base, chest_lid, chest_knob
# boat_patch               water_patch
# raft                     bottom, paddle_left, paddle_right
# chest_raft               bottom, paddle_left, paddle_right, chest_base, chest_lid, chest_knob
#
# Minecarts                Part name
# ======================== ======================================================
# minecart                 bottom, back, front, right, left
# chest_minecart           <fallback to minecart>
# command_block_minecart   <fallback to minecart>
# furnace_minecart         <fallback to minecart>
# hopper_minecart          <fallback to minecart>
# tnt_minecart             <fallback to minecart>
# spawner_minecart         <fallback to minecart>
#
# Block entity name        Part name
# ======================== ======================================================
# banner_base              stand, top (fallback to banner)
# banner_flag              slate (fallback to banner)
# bed                      head, foot, leg1 ... leg4
# bell                     body, base
# book                     cover_right, cover_left, pages_right, pages_left, flipping_page_right, flipping_page_left, book_spine
# chest                    base, lid, knob
# chest_left               base, lid, knob
# chest_right              base, lid, knob
# conduit                  eye, wind, base, cage
# copper_golem_statue          body, head, right_arm, left_arm, right_leg, left_leg
# copper_golem_statue_sitting  body, head, right_arm, left_arm, right_leg, left_leg
# copper_golem_statue_running  body, head, right_arm, left_arm, right_leg, left_leg
# copper_golem_statue_star     body, head, right_arm, left_arm, right_leg, left_leg
# decorated_pot            neck, front, back, left, right, top, bottom
# enchanting_book          <fallback to book>
# enchanting_screen_book   <fallback to enchanting_book>
# ender_chest              base, lid, knob
# hanging_sign             board, plank, chains, chain_left1, chain_left2, chain_right1, chain_right2, chains_v
# head_creeper             head
# head_dragon              head, jaw
# head_piglin              head, left_ear, right_ear
# head_player              head
# head_skeleton            head
# head_wither_skeleton     head
# head_zombie              head
# lectern_book             <fallback to book>
# shulker_box              base, lid
# sign                     board, stick
# trapped_chest            base, lid, knob
# trapped_chest_left       base, lid, knob
# trapped_chest_right      base, lid, knob
# wall_sign                board <fallback to sign>
#
# Model variants              Variant
# =========================== ======================================================
# <variant>_boat              oak, spruce, birch, jungle, acacia, cherry, dark_oak, pale_oak, mangrove (fallback to boat)
# <variant>_chest_boat        oak, spruce, birch, jungle, acacia, cherry, dark_oak, pale_oak, mangrove (fallback to chest_boat)
# <variant>_boat_patch        oak, spruce, birch, jungle, acacia, cherry, dark_oak, pale_oak, mangrove (fallback to boat_patch)
# <variant>_chest_boat_patch  oak, spruce, birch, jungle, acacia, cherry, dark_oak, pale_oak, mangrove (fallback to boat_patch)
# <variant>_sign              oak, spruce, birch, jungle, acacia, cherry, dark_oak, pale_oak, mangrove, crimson, warped, bamboo (fallback to sign)
# <variant>_wall_sign         oak, spruce, birch, jungle, acacia, cherry, dark_oak, pale_oak, mangrove, crimson, warped, bamboo (fallback to wall_sign)
# <variant>_hanging_sign      oak, spruce, birch, jungle, acacia, cherry, dark_oak, pale_oak, mangrove, crimson, warped, bamboo (fallback to hanging_sign)
#
# All models except "banner", "bed", "conduit" and "decorated_pot" have a "root" part.
# Only the elements "models" and "part" are required. 
#
# Note: This is not a valid JSON format and it should only be used as a reference  
######################################################################
{
  "texture": <texture.png>                                              - Texture used by the entity model
  "textureSize": [<width>, <height>],                                   - Texture size in pixels
  "shadowSize": <shadow_size>,                                          - Model shadow size (0.0 - 1.0)
  models                                                                - List of models
  [
    {
      "baseId": <parent_id>,                                            - Model parent ID, all parent properties are inherited
      "model": <model.jpm>,                                             - Part model file, from which to load the part model definition
      "id": <id>,                                                       - Model ID, can be used to reference the model as parent
      "part": <part>,                                                   - Entity part to which the part model is atached 
      "attach": <true|false>,                                           - True: attach to the entity part, False: replace it
      "scale": <scale>,                                                 - Render scale, default is 1.0
      # Part Model definition, see "cem_part.txt" for details           - Part model definition (inline)
      "animations":
      [
        {
          "variable1": "expression1",                                   - See "cem_animation.txt" for details
          "variable2": "expression2,
          ...
        }
      ]
      ...
    },
    ...
  ]
}
######################################################################
# Randomized models
######################################################################
# The alternative models use the same name as the main model with a number suffix.
# For example:
#   wolf.jem  - main model (index 1)
#   wolf2.jem - alternative model (index 2)
#   wolf3.jem - alternative model (index 3)
#
# The alternative models are selected randomly based on the entity id.
#
# To customize the use of the alternative models add a "<model_name>.properties" file in the folder where the models are located.
# The properties file works identically to the properties file used by Random Entities.
# The models to be used are selected with the setting "models.<n>=<list>" instead of "textures.<n>=<list>".
# The index of the current matching rule is available as animation parameter "rule_index" and can be used to cutomize the model depending on entity properties.
# For more details see "random_entities.properties".
#
# Examples
######################################################################
# Named creeper
# creeper.properties, creeper.jem, creeper2.jem
models.1=2
name.1=James

######################################################################
# Boat variants
# boat.properties, boat.jem, boat2.jem, boat3.jem
models.1=2
nbt.1.Type=spruce

models.2=3
nbt.2.Type=birch

######################################################################
# Bed variants
# bed.properties, bed.jem, bed2.jem, bed3.jem
models.1=2
blocks.1=black_bed

models.2=3
blocks.2=orange_bed

######################################################################
# External resources:
#   Interactive Documentation:          https://wynem.com/cem/
#   Video Tutorial:                     https://youtu.be/arj2eim42KI
#   CEM Template Loader for Blockbench: https://ewanhowell.com/plugins/cem-template-loader
######################################################################
