content: package com.github.alexthe666.iceandfire.client.model;
  
  import com.github.alexthe666.citadel.animation.IAnimatedEntity;
  import com.github.alexthe666.citadel.client.model.AdvancedModelBox;
  import com.github.alexthe666.citadel.client.model.ModelAnimator;
  import com.github.alexthe666.citadel.client.model.basic.BasicModelPart;
  import com.github.alexthe666.iceandfire.entity.EntityGorgon;
  import com.google.common.collect.ImmutableList;
  import com.mojang.blaze3d.vertex.PoseStack;
  import com.mojang.blaze3d.vertex.VertexConsumer;
  import net.minecraft.client.renderer.texture.OverlayTexture;
  import net.minecraft.util.Mth;
  import net.minecraft.world.entity.Entity;
  
  public class ModelGorgon extends ModelDragonBase<EntityGorgon> {
      private final ModelAnimator animator;
      public AdvancedModelBox Tail_1;
      public AdvancedModelBox Tail_2;
      public AdvancedModelBox Body;
      public AdvancedModelBox Tail_3;
      public AdvancedModelBox Tail_4;
      public AdvancedModelBox Tail_5;
      public AdvancedModelBox Tail_6;
      public AdvancedModelBox Tail_7;
      public AdvancedModelBox Tail_8;
      public AdvancedModelBox Tail_9;
      public AdvancedModelBox Left_Arm;
      public AdvancedModelBox Head;
      public AdvancedModelBox Right_Arm;
      public AdvancedModelBox Neck;
      public AdvancedModelBox Head_Details;
      public AdvancedModelBox SnakeBaseR2;
      public AdvancedModelBox SnakeBaseR7;
      public AdvancedModelBox SnakeBaseR6;
      public AdvancedModelBox SnakeBaseR5;
      public AdvancedModelBox SnakeBaseR4;
      public AdvancedModelBox SnakeBaseR3;
      public AdvancedModelBox SnakeBaseR1;
      public AdvancedModelBox SnakeBaseL1;
      public AdvancedModelBox SnakeBaseL2;
      public AdvancedModelBox SnakeBaseL4;
      public AdvancedModelBox SnakeBaseL3;
      public AdvancedModelBox SnakeBaseL7;
      public AdvancedModelBox SnakeBaseL6;
      public AdvancedModelBox SnakeBaseL5;
      public AdvancedModelBox SnakeBodyR2;
      public AdvancedModelBox SnakeHeadR2;
      public AdvancedModelBox SnakeJawR2;
      public AdvancedModelBox SnakeFang1R2;
      public AdvancedModelBox SnakeFang2R2;
      public AdvancedModelBox SnakeBodyR7;
      public AdvancedModelBox SnakeHeadR7;
      public AdvancedModelBox SnakeJawR7;
      public AdvancedModelBox SnakeFang1R7;
      public AdvancedModelBox SnakeFang2R7;
      public AdvancedModelBox SnakeBodyR6;
      public AdvancedModelBox SnakeHeadR6;
      public AdvancedModelBox SnakeJawR6;
      public AdvancedModelBox SnakeFang1R6;
      public AdvancedModelBox SnakeFang2R6;
      public AdvancedModelBox SnakeBodyR5;
      public AdvancedModelBox SnakeHeadR5;
      public AdvancedModelBox SnakeJawR5;
      public AdvancedModelBox SnakeFang1R5;
      public AdvancedModelBox SnakeFang2R5;
      public AdvancedModelBox SnakeBodyR4;
      public AdvancedModelBox SnakeHeadR4;
      public AdvancedModelBox SnakeJawR4;
      public AdvancedModelBox SnakeFang1R4;
      public AdvancedModelBox SnakeFang2R4;
      public AdvancedModelBox SnakeBodyR3;
      public AdvancedModelBox SnakeHeadR3;
      public AdvancedModelBox SnakeJawR3;
      public AdvancedModelBox SnakeFang1R3;
      public AdvancedModelBox SnakeFang2R3;
      public AdvancedModelBox SnakeBodyR1;
      public AdvancedModelBox SnakeHeadR1;
      public AdvancedModelBox SnakeJawR1;
      public AdvancedModelBox SnakeFang1R1;
      public AdvancedModelBox SnakeFang2R1;
      public AdvancedModelBox SnakeBodyL1;
      public AdvancedModelBox SnakeHeadL1;
      public AdvancedModelBox SnakeJawL1;
      public AdvancedModelBox SnakeFang1L1;
      public AdvancedModelBox SnakeFang2L1;
      public AdvancedModelBox SnakeBodyL2;
      public AdvancedModelBox SnakeHeadL2;
      public AdvancedModelBox SnakeJawL2;
      public AdvancedModelBox SnakeFang1L2;
      public AdvancedModelBox SnakeFang2L2;
      public AdvancedModelBox SnakeBodyL4;
      public AdvancedModelBox SnakeHeadR4_1;
      public AdvancedModelBox SnakeJawR4_1;
      public AdvancedModelBox SnakeFang1R4_1;
      public AdvancedModelBox SnakeFang2R4_1;
      public AdvancedModelBox SnakeBodyL3;
      public AdvancedModelBox SnakeHeadL3;
      public AdvancedModelBox SnakeJawL3;
      public AdvancedModelBox SnakeFang1L3;
      public AdvancedModelBox SnakeFang2L3;
      public AdvancedModelBox SnakeBodyL7;
      public AdvancedModelBox SnakeHeadL7;
      public AdvancedModelBox SnakeJawL7;
      public AdvancedModelBox SnakeFang1L7;
      public AdvancedModelBox SnakeFang2L7;
      public AdvancedModelBox snakeBodyL6;
      public AdvancedModelBox SnakeHeadL6;
      public AdvancedModelBox SnakeJawL6;
      public AdvancedModelBox SnakeFang1L6;
      public AdvancedModelBox SnakeFang2L6;
      public AdvancedModelBox SnakeBodyL5;
      public AdvancedModelBox SnakeHeadL5;
      public AdvancedModelBox SnakeJawL5;
      public AdvancedModelBox SnakeFang1L5;
      public AdvancedModelBox SnakeFang2L5;
  
      public ModelGorgon() {
          this.texWidth = 128;
          this.texHeight = 128;
          this.SnakeBodyR4 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyR4.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyR4.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyR4, 1.5159929882822747F, 0.0F, 0.0F);
          this.SnakeFang2R7 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2R7.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2R7.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeJawL5 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawL5.setPos(0.0F, 0.31F, -0.3F);
          this.SnakeJawL5.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.SnakeBaseR6 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseR6.setPos(-3.0F, -6.5F, 2.3F);
          this.SnakeBaseR6.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseR6, -1.7976891295541593F, 0.0F, -1.9896753472735356F);
          this.Head = new AdvancedModelBox(this, 0, 0);
          this.Head.setPos(0.0F, -12.0F, 0.0F);
          this.Head.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, 0.0F);
          this.setRotateAngle(Head, 0.06771877497737998F, 0.0F, 0.0F);
          this.Tail_8 = new AdvancedModelBox(this, 93, 27);
          this.Tail_8.setPos(0.0F, 8.2F, 0.4F);
          this.Tail_8.addBox(-2.0F, 0.1F, -1.9F, 4, 10, 4, 0.0F);
          this.setRotateAngle(Tail_8, 0.045553093477052F, 0.0F, 0.0F);
          this.SnakeHeadR2 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadR2.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadR2.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadR2, 0.7749261878854823F, -0.0F, -0.17453292519943295F);
          this.SnakeHeadR4 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadR4.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadR4.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadR4, 0.5197590512439113F, 0.0F, 0.2792526803190927F);
          this.SnakeFang2R4_1 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2R4_1.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2R4_1.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeBaseR1 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseR1.setPos(-3.0F, -5.5F, -2.7F);
          this.SnakeBaseR1.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseR1, -1.6046557142835864F, 0.0F, -0.22689280275926282F);
          this.SnakeJawR3 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawR3.setPos(0.0F, 0.11F, -0.3F);
          this.SnakeJawR3.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.SnakeBodyL1 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyL1.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyL1.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyL1, 1.6498597419102397F, 0.0F, 0.0F);
          this.SnakeBodyL3 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyL3.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyL3.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyL3, 1.0622073827637488F, 0.7457791893771769F, 0.0F);
          this.SnakeJawR4 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawR4.setPos(0.0F, 0.11F, -0.3F);
          this.SnakeJawR4.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.Tail_6 = new AdvancedModelBox(this, 80, 94);
          this.Tail_6.setPos(0.0F, 13.18F, -0.09F);
          this.Tail_6.addBox(-3.0F, -1.0F, -2.4F, 6, 13, 6, 0.0F);
          this.SnakeJawL1 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawL1.setPos(0.0F, 0.31F, -0.3F);
          this.SnakeJawL1.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.SnakeFang1R2 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1R2.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1R2.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeFang2R4 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2R4.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2R4.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.Tail_1 = new AdvancedModelBox(this, 2, 72);
          this.Tail_1.setPos(0.0F, 6.2F, -5.0F);
          this.Tail_1.addBox(-4.0F, 0.0F, -2.4F, 8, 6, 5, 0.1F);
          this.setRotateAngle(Tail_1, -0.022514747350726852F, 0.0F, 0.0F);
          this.SnakeBaseL6 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseL6.setPos(3.0F, -6.5F, 2.3F);
          this.SnakeBaseL6.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseL6, -1.7976891295541593F, 0.0F, 1.9896753472735356F);
          this.SnakeHeadL6 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadL6.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadL6.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadL6, 0.767944870877505F, 0.6108652381980153F, -0.8726646259971648F);
          this.SnakeBodyL5 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyL5.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyL5.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyL5, 0.6981317007977318F, 1.0471975511965976F, 0.2792526803190927F);
          this.SnakeJawR1 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawR1.setPos(0.0F, 0.11F, -0.3F);
          this.SnakeJawR1.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.Tail_5 = new AdvancedModelBox(this, 79, 68);
          this.Tail_5.setPos(0.0F, 7.7F, -0.1F);
          this.Tail_5.addBox(-3.52F, 0.0F, -2.7F, 7, 14, 7, 0.0F);
          this.setRotateAngle(Tail_5, 0.27314402793711257F, 0.0F, 0.0F);
          this.Tail_4 = new AdvancedModelBox(this, 38, 94);
          this.Tail_4.setPos(0.0F, 5.6F, 0.1F);
          this.Tail_4.addBox(-3.52F, 0.0F, -2.7F, 7, 9, 7, 0.0F);
          this.setRotateAngle(Tail_4, 0.4553564018453205F, 0.0F, 0.0F);
          this.SnakeBodyR7 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyR7.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyR7.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyR7, 0.8726646259971648F, -1.4690436314036273F, 0.0F);
          this.SnakeHeadR6 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadR6.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadR6.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadR6, 0.767944870877505F, -0.6108652381980153F, 0.8726646259971648F);
          this.Tail_2 = new AdvancedModelBox(this, 38, 78);
          this.Tail_2.setPos(0.0F, 5.3F, -0.5F);
          this.Tail_2.addBox(-4.0F, 0.0F, -2.4F, 8, 6, 7, 0.0F);
          this.setRotateAngle(Tail_2, 0.11292280260403312F, 0.0F, 0.0F);
          this.Head_Details = new AdvancedModelBox(this, 32, 0);
          this.Head_Details.setPos(0.0F, 0.0F, 0.0F);
          this.Head_Details.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, 0.0F);
          this.SnakeFang2R1 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2R1.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2R1.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeFang2L6 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2L6.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2L6.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.Right_Arm = new AdvancedModelBox(this, 40, 16);
          this.Right_Arm.setPos(-5.0F, -10.0F, 0.0F);
          this.Right_Arm.addBox(-2.0F, -2.0F, -2.0F, 3, 12, 4, 0.0F);
          this.SnakeHeadR1 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadR1.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadR1.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadR1, -0.11292280260403312F, -0.06771877497737998F, 0.2033308578573394F);
          this.Body = new AdvancedModelBox(this, 16, 16);
          this.Body.setPos(0.0F, 0.9F, 0.1F);
          this.Body.addBox(-4.0F, -12.0F, -2.0F, 8, 12, 4, 0.0F);
          this.setRotateAngle(Body, 0.022514747350726852F, 0.0F, 0.0F);
          this.SnakeBodyR5 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyR5.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyR5.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyR5, 0.6981317007977318F, -1.0471975511965976F, -0.2792526803190927F);
          this.SnakeHeadL1 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadL1.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadL1.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadL1, -0.11292280260403312F, 0.06771877497737998F, -0.2033308578573394F);
          this.SnakeJawL6 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawL6.setPos(0.0F, 0.31F, -0.3F);
          this.SnakeJawL6.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.SnakeBodyL4 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyL4.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyL4.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyL4, 1.5159929882822747F, 0.0F, 0.0F);
          this.Tail_9 = new AdvancedModelBox(this, 76, 33);
          this.Tail_9.setPos(0.0F, 8.8F, -0.1F);
          this.Tail_9.addBox(-1.5F, 0.1F, -1.3F, 3, 10, 3, 0.0F);
          this.setRotateAngle(Tail_9, 0.045553093477052F, 0.0F, 0.0F);
          this.SnakeHeadR7 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadR7.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadR7.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadR7, 0.8813912722571364F, -0.4293509959906051F, 0.8361872446304832F);
          this.SnakeBaseL1 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseL1.setPos(3.0F, -5.5F, -2.7F);
          this.SnakeBaseL1.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseL1, -1.6046557142835864F, 0.0F, 0.22689280275926282F);
          this.SnakeFang2R2 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2R2.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2R2.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeFang1L1 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1L1.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1L1.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeFang1L3 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1L3.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1L3.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeBaseR4 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseR4.setPos(-1.0F, -6.5F, 3.3F);
          this.SnakeBaseR4.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseR4, -2.1282544898818854F, 0.0F, -0.2617993877991494F);
          this.SnakeFang2R5 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2R5.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2R5.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeBodyR3 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyR3.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyR3.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyR3, 1.0622073827637488F, -0.7457791893771769F, 0.0F);
          this.SnakeJawR2 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawR2.setPos(0.0F, 0.11F, -0.3F);
          this.SnakeJawR2.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.SnakeHeadL2 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadL2.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadL2.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadL2, 0.7749261878854823F, -0.0F, 0.17453292519943295F);
          this.SnakeBaseL2 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseL2.setPos(2.0F, -7.5F, -0.7F);
          this.SnakeBaseL2.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseL2, -1.5707963267948966F, 0.0F, 2.2689280275926285F);
          this.SnakeJawR7 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawR7.setPos(0.0F, 0.11F, -0.3F);
          this.SnakeJawR7.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.Tail_3 = new AdvancedModelBox(this, 0, 91);
          this.Tail_3.setPos(0.0F, 4.1F, -0.9F);
          this.Tail_3.addBox(-3.5F, 0.0F, -2.4F, 7, 7, 7, 0.0F);
          this.setRotateAngle(Tail_3, 0.7398450699203963F, 0.0F, 0.0F);
          this.SnakeBaseL5 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseL5.setPos(1.0F, -4.5F, 3.3F);
          this.SnakeBaseL5.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseL5, -2.199463923363254F, 0.15812683023068624F, 2.255838058202671F);
          this.SnakeJawL2 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawL2.setPos(0.0F, 0.31F, -0.3F);
          this.SnakeJawL2.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.SnakeBaseR7 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseR7.setPos(-4.0F, -3.5F, 1.3F);
          this.SnakeBaseR7.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseR7, -1.5707963267948966F, 0.0F, -2.2734658836478134F);
          this.SnakeFang2L3 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2L3.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2L3.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeHeadR3 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadR3.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadR3.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadR3, 0.6942919764433443F, -0.06981317007977318F, 0.15707963267948966F);
          this.SnakeFang2L7 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2L7.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2L7.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeFang1R5 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1R5.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1R5.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeBodyL7 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyL7.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyL7.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyL7, 0.8726646259971648F, 1.4690436314036273F, 0.0F);
          this.SnakeFang1L7 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1L7.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1L7.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeFang2L5 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2L5.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2L5.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeJawR5 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawR5.setPos(0.0F, 0.11F, -0.3F);
          this.SnakeJawR5.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.SnakeBaseL7 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseL7.setPos(4.0F, -3.5F, 1.3F);
          this.SnakeBaseL7.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseL7, -1.5707963267948966F, 0.0F, 2.2734658836478134F);
          this.SnakeFang1R1 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1R1.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1R1.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeJawL7 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawL7.setPos(0.0F, 0.31F, -0.3F);
          this.SnakeJawL7.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.Left_Arm = new AdvancedModelBox(this, 40, 16);
          this.Left_Arm.mirror = true;
          this.Left_Arm.setPos(5.0F, -10.0F, 0.0F);
          this.Left_Arm.addBox(-1.0F, -2.0F, -2.0F, 3, 12, 4, 0.0F);
          this.SnakeHeadR4_1 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadR4_1.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadR4_1.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadR4_1, 0.5197590512439113F, 0.0F, -0.2792526803190927F);
          this.SnakeFang2R6 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2R6.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2R6.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeBodyR1 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyR1.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyR1.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyR1, 1.6498597419102397F, 0.0F, 0.0F);
          this.SnakeHeadL7 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadL7.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadL7.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadL7, 0.8813912722571364F, 0.4293509959906051F, -0.8361872446304832F);
          this.SnakeFang1R4_1 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1R4_1.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1R4_1.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeFang1R4 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1R4.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1R4.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeBodyR2 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyR2.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyR2.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyR2, 0.8651597102135892F, -2.4586453172844123F, 0.0F);
          this.SnakeBaseR5 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseR5.setPos(-1.0F, -4.5F, 3.3F);
          this.SnakeBaseR5.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseR5, -2.199463923363254F, -0.15812683023068624F, -2.255838058202671F);
          this.SnakeJawL3 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawL3.setPos(0.0F, 0.31F, -0.3F);
          this.SnakeJawL3.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.SnakeBaseL4 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseL4.setPos(1.0F, -6.5F, 3.3F);
          this.SnakeBaseL4.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseL4, -2.1282544898818854F, 0.0F, 0.2617993877991494F);
          this.SnakeFang2R3 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2R3.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2R3.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeHeadL3 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadL3.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadL3.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadL3, 0.6942919764433443F, 0.06981317007977318F, 0.15707963267948966F);
          this.SnakeBodyR6 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyR6.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyR6.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyR6, 1.3786355761503208F, -1.0170033551370958F, -0.6553711341238707F);
          this.SnakeFang1R3 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1R3.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1R3.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeBaseR2 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseR2.setPos(-2.0F, -7.5F, -0.7F);
          this.SnakeBaseR2.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseR2, -1.5707963267948966F, 0.0F, -2.2689280275926285F);
          this.SnakeBaseR3 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseR3.setPos(-3.0F, -6.5F, 1.3F);
          this.SnakeBaseR3.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseR3, -1.7966419320029627F, -0.022514747350726852F, -0.92031211457661F);
          this.SnakeFang1R6 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1R6.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1R6.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeFang1L6 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1L6.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1L6.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeFang2L2 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2L2.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2L2.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.Neck = new AdvancedModelBox(this, 40, 25);
          this.Neck.setPos(0.0F, -12.0F, 0.0F);
          this.Neck.addBox(-3.0F, -3.7F, -1.0F, 6, 4, 1, 0.0F);
          this.SnakeFang2L1 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang2L1.setPos(1.75F, -0.09F, -0.2F);
          this.SnakeFang2L1.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeFang1L2 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1L2.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1L2.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeHeadR5 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadR5.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadR5.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadR5, 0.767944870877505F, -1.0170033551370958F, 0.8726646259971648F);
          this.SnakeJawR4_1 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawR4_1.setPos(0.0F, 0.31F, -0.3F);
          this.SnakeJawR4_1.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.SnakeFang1R7 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1R7.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1R7.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.Tail_7 = new AdvancedModelBox(this, 88, 48);
          this.Tail_7.setPos(0.0F, 11.2F, -0.1F);
          this.Tail_7.addBox(-2.5F, -0.9F, -1.9F, 5, 11, 5, 0.0F);
          this.SnakeHeadL5 = new AdvancedModelBox(this, 6, 36);
          this.SnakeHeadL5.setPos(0.0F, 0.1F, -4.3F);
          this.SnakeHeadL5.addBox(-1.0F, -1.3F, -2.5F, 2, 1, 3, 0.0F);
          this.setRotateAngle(SnakeHeadL5, 0.767944870877505F, 1.0170033551370958F, -0.8726646259971648F);
          this.SnakeFang1L5 = new AdvancedModelBox(this, 31, 37);
          this.SnakeFang1L5.setPos(0.25F, -0.09F, -0.2F);
          this.SnakeFang1L5.addBox(-1.0F, -0.3F, -2.2F, 0, 1, 1, 0.0F);
          this.SnakeJawR6 = new AdvancedModelBox(this, 15, 37);
          this.SnakeJawR6.setPos(0.0F, 0.11F, -0.3F);
          this.SnakeJawR6.addBox(-1.0F, -0.3F, -2.2F, 2, 1, 3, 0.0F);
          this.SnakeBodyL2 = new AdvancedModelBox(this, 43, 52);
          this.SnakeBodyL2.setPos(0.0F, 0.4F, -5.6F);
          this.SnakeBodyL2.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBodyL2, 0.8651597102135892F, 2.4586453172844123F, 0.0F);
          this.snakeBodyL6 = new AdvancedModelBox(this, 43, 52);
          this.snakeBodyL6.setPos(0.0F, 0.4F, -5.6F);
          this.snakeBodyL6.addBox(-0.5F, -1.0F, -5.0F, 1, 1, 6, 0.0F);
          this.setRotateAngle(snakeBodyL6, 1.3786355761503208F, 1.0170033551370958F, 0.6553711341238707F);
          this.SnakeBaseL3 = new AdvancedModelBox(this, 25, 50);
          this.SnakeBaseL3.setPos(3.0F, -6.5F, 1.3F);
          this.SnakeBaseL3.addBox(-0.5F, -1.0F, -5.8F, 1, 1, 6, 0.0F);
          this.setRotateAngle(SnakeBaseL3, -1.7966419320029627F, 0.022514747350726852F, 0.92031211457661F);
          this.SnakeBaseR4.addChild(this.SnakeBodyR4);
          this.SnakeHeadR7.addChild(this.SnakeFang2R7);
          this.SnakeHeadL5.addChild(this.SnakeJawL5);
          this.Head_Details.addChild(this.SnakeBaseR6);
          this.Body.addChild(this.Head);
          this.Tail_7.addChild(this.Tail_8);
          this.SnakeBodyR2.addChild(this.SnakeHeadR2);
          this.SnakeBodyR4.addChild(this.SnakeHeadR4);
          this.SnakeHeadR4_1.addChild(this.SnakeFang2R4_1);
          this.Head_Details.addChild(this.SnakeBaseR1);
          this.SnakeHeadR3.addChild(this.SnakeJawR3);
          this.SnakeBaseL1.addChild(this.SnakeBodyL1);
          this.SnakeBaseL3.addChild(this.SnakeBodyL3);
          this.SnakeHeadR4.addChild(this.SnakeJawR4);
          this.Tail_5.addChild(this.Tail_6);
          this.SnakeHeadL1.addChild(this.SnakeJawL1);
          this.SnakeHeadR2.addChild(this.SnakeFang1R2);
          this.SnakeHeadR4.addChild(this.SnakeFang2R4);
          this.Head_Details.addChild(this.SnakeBaseL6);
          this.snakeBodyL6.addChild(this.SnakeHeadL6);
          this.SnakeBaseL5.addChild(this.SnakeBodyL5);
          this.SnakeHeadR1.addChild(this.SnakeJawR1);
          this.Tail_4.addChild(this.Tail_5);
          this.Tail_3.addChild(this.Tail_4);
          this.SnakeBaseR7.addChild(this.SnakeBodyR7);
          this.SnakeBodyR6.addChild(this.SnakeHeadR6);
          this.Tail_1.addChild(this.Tail_2);
          this.Head.addChild(this.Head_Details);
          this.SnakeHeadR1.addChild(this.SnakeFang2R1);
          this.SnakeHeadL6.addChild(this.SnakeFang2L6);
          this.Body.addChild(this.Right_Arm);
          this.SnakeBodyR1.addChild(this.SnakeHeadR1);
          this.Tail_1.addChild(this.Body);
          this.SnakeBaseR5.addChild(this.SnakeBodyR5);
          this.SnakeBodyL1.addChild(this.SnakeHeadL1);
          this.SnakeHeadL6.addChild(this.SnakeJawL6);
          this.SnakeBaseL4.addChild(this.SnakeBodyL4);
          this.Tail_8.addChild(this.Tail_9);
          this.SnakeBodyR7.addChild(this.SnakeHeadR7);
          this.Head_Details.addChild(this.SnakeBaseL1);
          this.SnakeHeadR2.addChild(this.SnakeFang2R2);
          this.SnakeHeadL1.addChild(this.SnakeFang1L1);
          this.SnakeHeadL3.addChild(this.SnakeFang1L3);
          this.Head_Details.addChild(this.SnakeBaseR4);
          this.SnakeHeadR5.addChild(this.SnakeFang2R5);
          this.SnakeBaseR3.addChild(this.SnakeBodyR3);
          this.SnakeHeadR2.addChild(this.SnakeJawR2);
          this.SnakeBodyL2.addChild(this.SnakeHeadL2);
          this.Head_Details.addChild(this.SnakeBaseL2);
          this.SnakeHeadR7.addChild(this.SnakeJawR7);
          this.Tail_2.addChild(this.Tail_3);
          this.Head_Details.addChild(this.SnakeBaseL5);
          this.SnakeHeadL2.addChild(this.SnakeJawL2);
          this.Head_Details.addChild(this.SnakeBaseR7);
          this.SnakeHeadL3.addChild(this.SnakeFang2L3);
          this.SnakeBodyR3.addChild(this.SnakeHeadR3);
          this.SnakeHeadL7.addChild(this.SnakeFang2L7);
          this.SnakeHeadR5.addChild(this.SnakeFang1R5);
          this.SnakeBaseL7.addChild(this.SnakeBodyL7);
          this.SnakeHeadL7.addChild(this.SnakeFang1L7);
          this.SnakeHeadL5.addChild(this.SnakeFang2L5);
          this.SnakeHeadR5.addChild(this.SnakeJawR5);
          this.Head_Details.addChild(this.SnakeBaseL7);
          this.SnakeHeadR1.addChild(this.SnakeFang1R1);
          this.SnakeHeadL7.addChild(this.SnakeJawL7);
          this.Body.addChild(this.Left_Arm);
          this.SnakeBodyL4.addChild(this.SnakeHeadR4_1);
          this.SnakeHeadR6.addChild(this.SnakeFang2R6);
          this.SnakeBaseR1.addChild(this.SnakeBodyR1);
          this.SnakeBodyL7.addChild(this.SnakeHeadL7);
          this.SnakeHeadR4_1.addChild(this.SnakeFang1R4_1);
          this.SnakeHeadR4.addChild(this.SnakeFang1R4);
          this.SnakeBaseR2.addChild(this.SnakeBodyR2);
          this.Head_Details.addChild(this.SnakeBaseR5);
          this.SnakeHeadL3.addChild(this.SnakeJawL3);
          this.Head_Details.addChild(this.SnakeBaseL4);
          this.SnakeHeadR3.addChild(this.SnakeFang2R3);
          this.SnakeBodyL3.addChild(this.SnakeHeadL3);
          this.SnakeBaseR6.addChild(this.SnakeBodyR6);
          this.SnakeHeadR3.addChild(this.SnakeFang1R3);
          this.Head_Details.addChild(this.SnakeBaseR2);
          this.Head_Details.addChild(this.SnakeBaseR3);
          this.SnakeHeadR6.addChild(this.SnakeFang1R6);
          this.SnakeHeadL6.addChild(this.SnakeFang1L6);
          this.SnakeHeadL2.addChild(this.SnakeFang2L2);
          this.Body.addChild(this.Neck);
          this.SnakeHeadL1.addChild(this.SnakeFang2L1);
          this.SnakeHeadL2.addChild(this.SnakeFang1L2);
          this.SnakeBodyR5.addChild(this.SnakeHeadR5);
          this.SnakeHeadR4_1.addChild(this.SnakeJawR4_1);
          this.SnakeHeadR7.addChild(this.SnakeFang1R7);
          this.Tail_6.addChild(this.Tail_7);
          this.SnakeBodyL5.addChild(this.SnakeHeadL5);
          this.SnakeHeadL5.addChild(this.SnakeFang1L5);
          this.SnakeHeadR6.addChild(this.SnakeJawR6);
          this.SnakeBaseL2.addChild(this.SnakeBodyL2);
          this.SnakeBaseL6.addChild(this.snakeBodyL6);
          this.Head_Details.addChild(this.SnakeBaseL3);
          animator = ModelAnimator.create();
          this.updateDefaultPose();
      }
  
      public void animate(IAnimatedEntity entity, float f, float f1, float f2, float f3, float f4, float f5) {
          this.resetToDefaultPose();
          animator.update(entity);
          if (animator.setAnimation(EntityGorgon.ANIMATION_SCARE)) {
              animator.startKeyframe(5);
              this.rotate(animator, Head, 0, 20, 0);
              this.rotate(animator, Left_Arm, 0, -12.5F, -70F);
              this.rotate(animator, Right_Arm, 0, 12.5F, 70F);
              animator.endKeyframe();
              animator.startKeyframe(5);
              this.rotate(animator, Head, 0, -20, 0);
              this.rotate(animator, Left_Arm, 0, -25, -140);
              this.rotate(animator, Right_Arm, 0, 25, 140);
              animator.endKeyframe();
              animator.startKeyframe(5);
              this.rotate(animator, Head, 0, 20, 0);
              this.rotate(animator, Left_Arm, 0, -25, -140);
              this.rotate(animator, Right_Arm, 0, 25, 140);
              animator.endKeyframe();
              animator.startKeyframe(5);
              this.rotate(animator, Head, 0, -20, 0);
              this.rotate(animator, Left_Arm, 0, -25, -140);
              this.rotate(animator, Right_Arm, 0, 25, 140);
              animator.endKeyframe();
              animator.resetKeyframe(10);
          }
          if (animator.setAnimation(EntityGorgon.ANIMATION_HIT)) {
              animator.startKeyframe(5);
              this.rotate(animator, Body, 10F, 0F, 0F);
  
              this.rotate(animator, Left_Arm, -120F, 0F, 0F);
              this.rotate(animator, Right_Arm, -120F, 0F, 0F);
              animator.endKeyframe();
              animator.resetKeyframe(5);
          }
      }
  
      @Override
      public void setupAnim(EntityGorgon entity, float f, float f1, float f2, float f3, float f4) {
          animate(entity, f, f1, f2, f3, f4, 1);
          float speed_walk = 0.6F;
          float speed_idle = 0.05F;
          float degree_walk = 1F;
          float degree_idle = 0.5F;
          AdvancedModelBox[] TAIL = new AdvancedModelBox[]{Tail_4, Tail_5, Tail_6, Tail_7, Tail_8, Tail_9};
          AdvancedModelBox[] SNAKEL1 = new AdvancedModelBox[]{SnakeBaseL1, SnakeBodyL1, SnakeHeadL1};
          AdvancedModelBox[] SNAKEL2 = new AdvancedModelBox[]{SnakeBaseL2, SnakeBodyL2, SnakeHeadL2};
          AdvancedModelBox[] SNAKEL3 = new AdvancedModelBox[]{SnakeBaseL3, SnakeBodyL3, SnakeHeadL3};
          AdvancedModelBox[] SNAKEL4 = new AdvancedModelBox[]{SnakeBaseL4, SnakeBaseL4, SnakeBaseL4};
          AdvancedModelBox[] SNAKEL5 = new AdvancedModelBox[]{SnakeBaseL5, SnakeBaseL5, SnakeBaseL5};
          AdvancedModelBox[] SNAKEL6 = new AdvancedModelBox[]{SnakeBaseL6, SnakeBaseL6, SnakeBaseL6};
          AdvancedModelBox[] SNAKEL7 = new AdvancedModelBox[]{SnakeBaseL7, SnakeBaseL7, SnakeBaseL7};
  
          AdvancedModelBox[] SNAKER1 = new AdvancedModelBox[]{SnakeBaseR1, SnakeBodyR1, SnakeHeadR1};
          AdvancedModelBox[] SNAKER2 = new AdvancedModelBox[]{SnakeBaseR2, SnakeBodyR2, SnakeHeadR2};
          AdvancedModelBox[] SNAKER3 = new AdvancedModelBox[]{SnakeBaseR3, SnakeBodyR3, SnakeHeadR3};
          AdvancedModelBox[] SNAKER4 = new AdvancedModelBox[]{SnakeBaseR4, SnakeBodyR4, SnakeHeadR4};
          AdvancedModelBox[] SNAKER5 = new AdvancedModelBox[]{SnakeBaseR5, SnakeBaseR5, SnakeBaseR5};
          AdvancedModelBox[] SNAKER6 = new AdvancedModelBox[]{SnakeBaseR6, SnakeBaseR6, SnakeBaseR6};
          AdvancedModelBox[] SNAKER7 = new AdvancedModelBox[]{SnakeBaseR7, SnakeBaseR7, SnakeBaseR7};
  
          this.chainFlap(TAIL, speed_walk, degree_walk * 0.75F, -3, f, f1);
          this.walk(Right_Arm, speed_idle * 1.5F, degree_idle * 0.4F, false, 2, -0.3F, f2, 1);
          this.walk(Left_Arm, speed_idle * 1.5F, degree_idle * 0.4F, true, 2, 0.3F, f2, 1);
          this.flap(Right_Arm, speed_idle * 1.5F, degree_idle * 0.2F, false, 2, 0.2F, f2, 1);
          this.flap(Left_Arm, speed_idle * 1.5F, degree_idle * 0.2F, true, 2, 0.2F, f2, 1);
          this.Right_Arm.rotateAngleX = Mth.cos(f * 0.6662F + (float) Math.PI) * 2.0F * f1 * 0.5F;
          this.Left_Arm.rotateAngleX = Mth.cos(f * 0.6662F) * 2.0F * f1 * 0.5F;
  
          float f12 = (float) Math.toRadians(-1.29f) + f1;
          if (f12 < 0.0F) {
              f12 = 0.0F;
          }
          if (f12 > Math.toRadians(20)) {
              f12 = (float) Math.toRadians(20);
          }
          this.Tail_1.rotateAngleX = f12;
          this.Tail_3.rotateAngleX = this.Tail_3.rotateAngleX - f12;
          this.Head.rotateAngleX = this.Head.rotateAngleX - f12;
          f12 = 0.0F;
  
          this.chainFlap(SNAKEL1, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKEL1, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKEL2, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKEL2, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKEL3, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKEL3, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKEL4, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKEL4, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKER1, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKER1, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKER2, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKER2, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKER3, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKER3, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKER4, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKER4, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKER5, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKER5, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKER6, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKER6, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKER7, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKER7, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKEL5, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKEL5, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKEL6, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKEL6, speed_idle, degree_idle * 0.75F, -3, f2, 1);
  
          this.chainFlap(SNAKEL7, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.chainSwing(SNAKEL7, speed_idle, degree_idle * 0.75F, -3, f2, 1);
          this.faceTarget(f3, f4, 1, this.Head);
  
          float deathProg = Math.min(40, (float) entity.deathTime) / 2;
  
          this.progressRotation(Tail_1, deathProg, (float) Math.toRadians(5), (float) Math.toRadians(57), 0);
          this.progressPosition(Tail_1, deathProg, -5, 22, -4);
          this.progressRotation(Tail_2, deathProg, (float) Math.toRadians(18), (float) Math.toRadians(-54), 0);
          this.progressRotation(Body, deathProg, (float) Math.toRadians(-9), (float) Math.toRadians(36), 0);
          this.progressRotation(Right_Arm, deathProg, 0, 0, (float) Math.toRadians(20));
          this.progressRotation(Left_Arm, deathProg, 0, 0, (float) Math.toRadians(-20));
          this.Neck.showModel = deathProg <= 0;
      }
  
      @Override
      public Iterable<BasicModelPart> parts() {
          return ImmutableList.of(Tail_1);
      }
  
      @Override
      public Iterable<AdvancedModelBox> getAllParts() {
          return ImmutableList.of(Tail_1, Tail_2, Body, Tail_3, Tail_4, Tail_5, Tail_6, Tail_7, Tail_8, Tail_9, Left_Arm,
              Head, Right_Arm, Neck, Head_Details, SnakeBaseR2, SnakeBaseR7, SnakeBaseR6, SnakeBaseR5, SnakeBaseR4,
              SnakeBaseR3, SnakeBaseR1, SnakeBaseL1, SnakeBaseL2, SnakeBaseL4, SnakeBaseL3, SnakeBaseL7, SnakeBaseL6,
              SnakeBaseL5, SnakeBodyR2, SnakeHeadR2, SnakeJawR2, SnakeFang1R2, SnakeFang2R2, SnakeBodyR7, SnakeHeadR7,
              SnakeJawR7, SnakeFang1R7, SnakeFang2R7, SnakeBodyR6, SnakeHeadR6, SnakeJawR6, SnakeFang1R6, SnakeFang2R6,
              SnakeBodyR5, SnakeHeadR5, SnakeJawR5, SnakeFang1R5, SnakeFang2R5, SnakeBodyR4, SnakeHeadR4, SnakeJawR4,
              SnakeFang1R4, SnakeFang2R4, SnakeBodyR3, SnakeHeadR3, SnakeJawR3, SnakeFang1R3, SnakeFang2R3, SnakeBodyR1,
              SnakeHeadR1, SnakeJawR1, SnakeFang1R1, SnakeFang2R1, SnakeBodyL1, SnakeHeadL1, SnakeJawL1, SnakeFang1L1,
              SnakeFang2L1, SnakeBodyL2, SnakeHeadL2, SnakeJawL2, SnakeFang1L2, SnakeFang2L2, SnakeBodyL4, SnakeHeadR4_1,
              SnakeJawR4_1, SnakeFang1R4_1, SnakeFang2R4_1, SnakeBodyL3, SnakeHeadL3, SnakeJawL3, SnakeFang1L3,
              SnakeFang2L3, SnakeBodyL7, SnakeHeadL7, SnakeJawL7, SnakeFang1L7, SnakeFang2L7, snakeBodyL6, SnakeHeadL6,
              SnakeJawL6, SnakeFang1L6, SnakeFang2L6, SnakeBodyL5, SnakeHeadL5, SnakeJawL5, SnakeFang1L5, SnakeFang2L5);
      }
  
  
      @Override
      public void renderStatue(PoseStack matrixStackIn, VertexConsumer bufferIn, int packedLightIn, Entity living) {
          this.renderToBuffer(matrixStackIn, bufferIn, packedLightIn, OverlayTexture.NO_OVERLAY, 1.0F, 1.0F, 1.0F, 1.0F);
      }
  }
  