-
-
Notifications
You must be signed in to change notification settings - Fork 84
/
Animations.java
2069 lines (1869 loc) · 134 KB
/
Animations.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
package yesman.epicfight.gameasset;
import java.util.List;
import java.util.Random;
import java.util.Set;
import com.google.common.collect.Lists;
import com.mojang.datafixers.util.Pair;
import com.mojang.math.Quaternion;
import com.mojang.math.Vector3f;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.core.particles.ParticleTypes;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.sounds.SoundEvent;
import net.minecraft.sounds.SoundEvents;
import net.minecraft.sounds.SoundSource;
import net.minecraft.util.Mth;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.damagesource.DamageSource;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.EntityDimensions;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.LightningBolt;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.boss.wither.WitherBoss;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.entity.projectile.DragonFireball;
import net.minecraft.world.level.ClipContext;
import net.minecraft.world.level.Explosion;
import net.minecraft.world.level.GameRules;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.levelgen.Heightmap;
import net.minecraft.world.phys.BlockHitResult;
import net.minecraft.world.phys.HitResult;
import net.minecraft.world.phys.Vec2;
import net.minecraft.world.phys.Vec3;
import net.minecraftforge.event.ForgeEventFactory;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventBusSubscriber.Bus;
import yesman.epicfight.api.animation.Joint;
import yesman.epicfight.api.animation.JointTransform;
import yesman.epicfight.api.animation.Keyframe;
import yesman.epicfight.api.animation.LivingMotion;
import yesman.epicfight.api.animation.LivingMotions;
import yesman.epicfight.api.animation.Pose;
import yesman.epicfight.api.animation.TransformSheet;
import yesman.epicfight.api.animation.property.AnimationEvent;
import yesman.epicfight.api.animation.property.AnimationEvent.Side;
import yesman.epicfight.api.animation.property.AnimationEvent.TimePeriodEvent;
import yesman.epicfight.api.animation.property.AnimationEvent.TimeStampedEvent;
import yesman.epicfight.api.animation.property.AnimationProperty;
import yesman.epicfight.api.animation.property.AnimationProperty.ActionAnimationProperty;
import yesman.epicfight.api.animation.property.AnimationProperty.AttackAnimationProperty;
import yesman.epicfight.api.animation.property.AnimationProperty.AttackPhaseProperty;
import yesman.epicfight.api.animation.property.AnimationProperty.StaticAnimationProperty;
import yesman.epicfight.api.animation.property.MoveCoordFunctions;
import yesman.epicfight.api.animation.types.ActionAnimation;
import yesman.epicfight.api.animation.types.AimAnimation;
import yesman.epicfight.api.animation.types.AirSlashAnimation;
import yesman.epicfight.api.animation.types.AttackAnimation;
import yesman.epicfight.api.animation.types.AttackAnimation.Phase;
import yesman.epicfight.api.animation.types.BasicAttackAnimation;
import yesman.epicfight.api.animation.types.DashAttackAnimation;
import yesman.epicfight.api.animation.types.DodgeAnimation;
import yesman.epicfight.api.animation.types.EntityState;
import yesman.epicfight.api.animation.types.GuardAnimation;
import yesman.epicfight.api.animation.types.HitAnimation;
import yesman.epicfight.api.animation.types.InvincibleAnimation;
import yesman.epicfight.api.animation.types.KnockdownAnimation;
import yesman.epicfight.api.animation.types.LinkAnimation;
import yesman.epicfight.api.animation.types.LongHitAnimation;
import yesman.epicfight.api.animation.types.MirrorAnimation;
import yesman.epicfight.api.animation.types.MountAttackAnimation;
import yesman.epicfight.api.animation.types.MovementAnimation;
import yesman.epicfight.api.animation.types.OffAnimation;
import yesman.epicfight.api.animation.types.RangedAttackAnimation;
import yesman.epicfight.api.animation.types.ReboundAnimation;
import yesman.epicfight.api.animation.types.SelectiveAnimation;
import yesman.epicfight.api.animation.types.StaticAnimation;
import yesman.epicfight.api.animation.types.grappling.GrapplingAttackAnimation;
import yesman.epicfight.api.animation.types.grappling.GrapplingTryAnimation;
import yesman.epicfight.api.animation.types.procedural.EnderDragonActionAnimation;
import yesman.epicfight.api.animation.types.procedural.EnderDragonAttackAnimation;
import yesman.epicfight.api.animation.types.procedural.EnderDragonDeathAnimation;
import yesman.epicfight.api.animation.types.procedural.EnderDragonDynamicActionAnimation;
import yesman.epicfight.api.animation.types.procedural.EnderDraonWalkAnimation;
import yesman.epicfight.api.animation.types.procedural.IKInfo;
import yesman.epicfight.api.collider.Collider;
import yesman.epicfight.api.collider.OBBCollider;
import yesman.epicfight.api.forgeevent.AnimationRegistryEvent;
import yesman.epicfight.api.utils.HitEntityList;
import yesman.epicfight.api.utils.HitEntityList.Priority;
import yesman.epicfight.api.utils.LevelUtil;
import yesman.epicfight.api.utils.TimePairList;
import yesman.epicfight.api.utils.math.MathUtils;
import yesman.epicfight.api.utils.math.OpenMatrix4f;
import yesman.epicfight.api.utils.math.ValueModifier;
import yesman.epicfight.api.utils.math.Vec3f;
import yesman.epicfight.main.EpicFightMod;
import yesman.epicfight.model.armature.CreeperArmature;
import yesman.epicfight.model.armature.DragonArmature;
import yesman.epicfight.model.armature.EndermanArmature;
import yesman.epicfight.model.armature.HoglinArmature;
import yesman.epicfight.model.armature.HumanoidArmature;
import yesman.epicfight.model.armature.IronGolemArmature;
import yesman.epicfight.model.armature.PiglinArmature;
import yesman.epicfight.model.armature.RavagerArmature;
import yesman.epicfight.model.armature.SpiderArmature;
import yesman.epicfight.model.armature.VexArmature;
import yesman.epicfight.model.armature.WitherArmature;
import yesman.epicfight.particle.EpicFightParticles;
import yesman.epicfight.skill.SkillContainer;
import yesman.epicfight.skill.SkillSlots;
import yesman.epicfight.skill.identity.MeteorSlamSkill;
import yesman.epicfight.skill.weaponinnate.SteelWhirlwindSkill;
import yesman.epicfight.world.capabilities.EpicFightCapabilities;
import yesman.epicfight.world.capabilities.entitypatch.LivingEntityPatch;
import yesman.epicfight.world.capabilities.entitypatch.boss.WitherPatch;
import yesman.epicfight.world.capabilities.entitypatch.boss.enderdragon.EnderDragonPatch;
import yesman.epicfight.world.capabilities.entitypatch.boss.enderdragon.PatchedPhases;
import yesman.epicfight.world.capabilities.entitypatch.player.PlayerPatch;
import yesman.epicfight.world.capabilities.entitypatch.player.ServerPlayerPatch;
import yesman.epicfight.world.damagesource.EpicFightDamageSource;
import yesman.epicfight.world.damagesource.ExtraDamageInstance;
import yesman.epicfight.world.damagesource.SourceTags;
import yesman.epicfight.world.damagesource.StunType;
import yesman.epicfight.world.entity.ai.attribute.EpicFightAttributes;
@Mod.EventBusSubscriber(modid = EpicFightMod.MODID, bus = Bus.MOD)
public class Animations {
public static StaticAnimation DUMMY_ANIMATION = new StaticAnimation();
public static StaticAnimation BIPED_IDLE;
public static StaticAnimation BIPED_WALK;
public static StaticAnimation BIPED_RUN;
public static StaticAnimation BIPED_SNEAK;
public static StaticAnimation BIPED_SWIM;
public static StaticAnimation BIPED_FLOAT;
public static StaticAnimation BIPED_KNEEL;
public static StaticAnimation BIPED_FALL;
public static StaticAnimation BIPED_FLYING;
public static StaticAnimation BIPED_CREATIVE_IDLE;
public static StaticAnimation BIPED_CREATIVE_FLYING;
public static StaticAnimation BIPED_CREATIVE_FLYING_FORWARD;
public static StaticAnimation BIPED_CREATIVE_FLYING_BACKWARD;
public static StaticAnimation BIPED_MOUNT;
public static StaticAnimation BIPED_SIT;
public static StaticAnimation BIPED_JUMP;
public static StaticAnimation BIPED_DEATH;
public static StaticAnimation BIPED_DIG_MAINHAND;
public static StaticAnimation BIPED_DIG_OFFHAND;
public static StaticAnimation BIPED_DIG;
public static StaticAnimation BIPED_RUN_SPEAR;
public static StaticAnimation BIPED_HOLD_GREATSWORD;
public static StaticAnimation BIPED_HOLD_UCHIGATANA_SHEATHING;
public static StaticAnimation BIPED_HOLD_UCHIGATANA;
public static StaticAnimation BIPED_HOLD_TACHI;
public static StaticAnimation BIPED_HOLD_LONGSWORD;
public static StaticAnimation BIPED_HOLD_LIECHTENAUER;
public static StaticAnimation BIPED_HOLD_SPEAR;
public static StaticAnimation BIPED_HOLD_DUAL_WEAPON;
public static StaticAnimation BIPED_HOLD_CROSSBOW;
public static StaticAnimation BIPED_HOLD_MAP_TWOHAND;
public static StaticAnimation BIPED_HOLD_MAP_OFFHAND;
public static StaticAnimation BIPED_HOLD_MAP_MAINHAND;
public static StaticAnimation BIPED_HOLD_MAP_TWOHAND_MOVE;
public static StaticAnimation BIPED_HOLD_MAP_OFFHAND_MOVE;
public static StaticAnimation BIPED_HOLD_MAP_MAINHAND_MOVE;
public static StaticAnimation BIPED_WALK_GREATSWORD;
public static StaticAnimation BIPED_WALK_SPEAR;
public static StaticAnimation BIPED_WALK_UCHIGATANA_SHEATHING;
public static StaticAnimation BIPED_WALK_UCHIGATANA;
public static StaticAnimation BIPED_WALK_TWOHAND;
public static StaticAnimation BIPED_WALK_LONGSWORD;
public static StaticAnimation BIPED_WALK_LIECHTENAUER;
public static StaticAnimation BIPED_RUN_GREATSWORD;
public static StaticAnimation BIPED_RUN_UCHIGATANA;
public static StaticAnimation BIPED_RUN_UCHIGATANA_SHEATHING;
public static StaticAnimation BIPED_RUN_DUAL;
public static StaticAnimation BIPED_RUN_LONGSWORD;
public static StaticAnimation BIPED_UCHIGATANA_SCRAP;
public static StaticAnimation BIPED_LIECHTENAUER_READY;
public static StaticAnimation BIPED_HIT_SHIELD;
public static StaticAnimation BIPED_CLIMBING;
public static StaticAnimation BIPED_SLEEPING;
public static StaticAnimation BIPED_BOW_AIM;
public static StaticAnimation BIPED_BOW_SHOT;
public static StaticAnimation BIPED_DRINK;
public static StaticAnimation BIPED_EAT;
public static StaticAnimation BIPED_SPYGLASS_USE;
public static StaticAnimation BIPED_CROSSBOW_AIM;
public static StaticAnimation BIPED_CROSSBOW_SHOT;
public static StaticAnimation BIPED_CROSSBOW_RELOAD;
public static StaticAnimation BIPED_JAVELIN_AIM;
public static StaticAnimation BIPED_JAVELIN_THROW;
public static StaticAnimation BIPED_HIT_SHORT;
public static StaticAnimation BIPED_HIT_LONG;
public static StaticAnimation BIPED_HIT_ON_MOUNT;
public static StaticAnimation BIPED_LANDING;
public static StaticAnimation BIPED_KNOCKDOWN;
public static StaticAnimation BIPED_BLOCK;
public static StaticAnimation BIPED_ROLL_FORWARD;
public static StaticAnimation BIPED_ROLL_BACKWARD;
public static StaticAnimation BIPED_STEP_FORWARD;
public static StaticAnimation BIPED_STEP_BACKWARD;
public static StaticAnimation BIPED_STEP_LEFT;
public static StaticAnimation BIPED_STEP_RIGHT;
public static StaticAnimation BIPED_KNOCKDOWN_WAKEUP_LEFT;
public static StaticAnimation BIPED_KNOCKDOWN_WAKEUP_RIGHT;
public static StaticAnimation BIPED_DEMOLITION_LEAP_CHARGING;
public static StaticAnimation BIPED_DEMOLITION_LEAP;
public static StaticAnimation BIPED_PHANTOM_ASCENT_FORWARD;
public static StaticAnimation BIPED_PHANTOM_ASCENT_BACKWARD;
public static StaticAnimation BIPED_MOB_ONEHAND1;
public static StaticAnimation BIPED_MOB_ONEHAND2;
public static StaticAnimation BIPED_MOB_GREATSWORD;
public static StaticAnimation BIPED_MOB_TACHI;
public static StaticAnimation BIPED_MOB_SPEAR_ONEHAND;
public static StaticAnimation BIPED_MOB_SPEAR_TWOHAND1;
public static StaticAnimation BIPED_MOB_SPEAR_TWOHAND2;
public static StaticAnimation BIPED_MOB_SPEAR_TWOHAND3;
public static StaticAnimation BIPED_MOB_SWORD_DUAL1;
public static StaticAnimation BIPED_MOB_SWORD_DUAL2;
public static StaticAnimation BIPED_MOB_SWORD_DUAL3;
public static StaticAnimation BIPED_MOB_LONGSWORD1;
public static StaticAnimation BIPED_MOB_LONGSWORD2;
public static StaticAnimation BIPED_MOB_UCHIGATANA1;
public static StaticAnimation BIPED_MOB_UCHIGATANA2;
public static StaticAnimation BIPED_MOB_UCHIGATANA3;
public static StaticAnimation BIPED_MOB_DAGGER_ONEHAND1;
public static StaticAnimation BIPED_MOB_DAGGER_ONEHAND2;
public static StaticAnimation BIPED_MOB_DAGGER_ONEHAND3;
public static StaticAnimation BIPED_MOB_DAGGER_TWOHAND1;
public static StaticAnimation BIPED_MOB_DAGGER_TWOHAND2;
public static StaticAnimation BIPED_MOB_THROW;
public static StaticAnimation CREEPER_IDLE;
public static StaticAnimation CREEPER_WALK;
public static StaticAnimation CREEPER_HIT_LONG;
public static StaticAnimation CREEPER_HIT_SHORT;
public static StaticAnimation CREEPER_DEATH;
public static StaticAnimation DRAGON_IDLE;
public static StaticAnimation DRAGON_WALK;
public static StaticAnimation DRAGON_WALK_PROCEDURAL;
public static StaticAnimation DRAGON_FLY;
public static StaticAnimation DRAGON_DEATH;
public static StaticAnimation DRAGON_GROUND_TO_FLY;
public static StaticAnimation DRAGON_FLY_TO_GROUND;
public static StaticAnimation DRAGON_ATTACK1;
public static StaticAnimation DRAGON_ATTACK2;
public static StaticAnimation DRAGON_ATTACK3;
public static StaticAnimation DRAGON_ATTACK4;
public static StaticAnimation DRAGON_ATTACK4_RECOVERY;
public static StaticAnimation DRAGON_FIREBALL;
public static StaticAnimation DRAGON_AIRSTRIKE;
public static StaticAnimation DRAGON_BACKJUMP_PREPARE;
public static StaticAnimation DRAGON_BACKJUMP_MOVE;
public static StaticAnimation DRAGON_BACKJUMP_RECOVERY;
public static StaticAnimation DRAGON_CRYSTAL_LINK;
public static StaticAnimation DRAGON_NEUTRALIZED;
public static StaticAnimation DRAGON_NEUTRALIZED_RECOVERY;
public static StaticAnimation ENDERMAN_IDLE;
public static StaticAnimation ENDERMAN_WALK;
public static StaticAnimation ENDERMAN_DEATH;
public static StaticAnimation ENDERMAN_HIT_SHORT;
public static StaticAnimation ENDERMAN_HIT_LONG;
public static StaticAnimation ENDERMAN_NEUTRALIZED;
public static StaticAnimation ENDERMAN_CONVERT_RAGE;
public static StaticAnimation ENDERMAN_RAGE_IDLE;
public static StaticAnimation ENDERMAN_RAGE_WALK;
public static StaticAnimation ENDERMAN_GRASP;
public static StaticAnimation ENDERMAN_TP_KICK1;
public static StaticAnimation ENDERMAN_TP_KICK2;
public static StaticAnimation ENDERMAN_KNEE;
public static StaticAnimation ENDERMAN_KICK1;
public static StaticAnimation ENDERMAN_KICK2;
public static StaticAnimation ENDERMAN_KICK_COMBO;
public static StaticAnimation ENDERMAN_TP_EMERGENCE;
public static StaticAnimation SPIDER_IDLE;
public static StaticAnimation SPIDER_CRAWL;
public static StaticAnimation SPIDER_DEATH;
public static StaticAnimation SPIDER_HIT;
public static StaticAnimation SPIDER_NEUTRALIZED;
public static StaticAnimation SPIDER_ATTACK;
public static StaticAnimation SPIDER_JUMP_ATTACK;
public static StaticAnimation GOLEM_IDLE;
public static StaticAnimation GOLEM_WALK;
public static StaticAnimation GOLEM_DEATH;
public static StaticAnimation GOLEM_ATTACK1;
public static StaticAnimation GOLEM_ATTACK2;
public static StaticAnimation GOLEM_ATTACK3;
public static StaticAnimation GOLEM_ATTACK4;
public static StaticAnimation HOGLIN_IDLE;
public static StaticAnimation HOGLIN_WALK;
public static StaticAnimation HOGLIN_DEATH;
public static StaticAnimation HOGLIN_ATTACK;
public static StaticAnimation ILLAGER_IDLE;
public static StaticAnimation ILLAGER_WALK;
public static StaticAnimation VINDICATOR_IDLE_AGGRESSIVE;
public static StaticAnimation VINDICATOR_CHASE;
public static StaticAnimation VINDICATOR_SWING_AXE1;
public static StaticAnimation VINDICATOR_SWING_AXE2;
public static StaticAnimation VINDICATOR_SWING_AXE3;
public static StaticAnimation EVOKER_CAST_SPELL;
public static StaticAnimation PIGLIN_IDLE;
public static StaticAnimation PIGLIN_WALK;
public static StaticAnimation PIGLIN_ZOMBIFIED_IDLE;
public static StaticAnimation PIGLIN_ZOMBIFIED_WALK;
public static StaticAnimation PIGLIN_ZOMBIFIED_CHASE;
public static StaticAnimation PIGLIN_CELEBRATE1;
public static StaticAnimation PIGLIN_CELEBRATE2;
public static StaticAnimation PIGLIN_CELEBRATE3;
public static StaticAnimation PIGLIN_ADMIRE;
public static StaticAnimation PIGLIN_DEATH;
public static StaticAnimation RAVAGER_IDLE;
public static StaticAnimation RAVAGER_WALK;
public static StaticAnimation RAVAGER_DEATH;
public static StaticAnimation RAVAGER_STUN;
public static StaticAnimation RAVAGER_ATTACK1;
public static StaticAnimation RAVAGER_ATTACK2;
public static StaticAnimation RAVAGER_ATTACK3;
public static StaticAnimation VEX_IDLE;
public static StaticAnimation VEX_FLIPPING;
public static StaticAnimation VEX_DEATH;
public static StaticAnimation VEX_HIT;
public static StaticAnimation VEX_CHARGE;
public static StaticAnimation VEX_NEUTRALIZED;
public static StaticAnimation WITCH_DRINKING;
public static StaticAnimation WITHER_SKELETON_IDLE;
public static StaticAnimation WITHER_SKELETON_SPECIAL_SPAWN;
public static StaticAnimation WITHER_SKELETON_WALK;
public static StaticAnimation WITHER_SKELETON_CHASE;
public static StaticAnimation WITHER_SKELETON_ATTACK1;
public static StaticAnimation WITHER_SKELETON_ATTACK2;
public static StaticAnimation WITHER_SKELETON_ATTACK3;
public static StaticAnimation WITHER_IDLE;
public static StaticAnimation WITHER_CHARGE;
public static StaticAnimation WITHER_DEATH;
public static StaticAnimation WITHER_NEUTRALIZED;
public static StaticAnimation WITHER_SPELL_ARMOR;
public static StaticAnimation WITHER_BLOCKED;
public static StaticAnimation WITHER_GHOST_STANDBY;
public static StaticAnimation WITHER_SWIRL;
public static StaticAnimation WITHER_BEAM;
public static StaticAnimation WITHER_BACKFLIP;
public static StaticAnimation ZOMBIE_IDLE;
public static StaticAnimation ZOMBIE_WALK;
public static StaticAnimation ZOMBIE_CHASE;
public static StaticAnimation ZOMBIE_ATTACK1;
public static StaticAnimation ZOMBIE_ATTACK2;
public static StaticAnimation ZOMBIE_ATTACK3;
public static StaticAnimation AXE_AUTO1;
public static StaticAnimation AXE_AUTO2;
public static StaticAnimation AXE_DASH;
public static StaticAnimation AXE_AIRSLASH;
public static StaticAnimation FIST_AUTO1;
public static StaticAnimation FIST_AUTO2;
public static StaticAnimation FIST_AUTO3;
public static StaticAnimation FIST_DASH;
public static StaticAnimation FIST_AIR_SLASH;
public static StaticAnimation SPEAR_ONEHAND_AUTO;
public static StaticAnimation SPEAR_BLOCK_AUTO;
public static StaticAnimation SPEAR_ONEHAND_AIR_SLASH;
public static StaticAnimation SPEAR_TWOHAND_AUTO1;
public static StaticAnimation SPEAR_TWOHAND_AUTO2;
public static StaticAnimation SPEAR_TWOHAND_AIR_SLASH;
public static StaticAnimation SPEAR_DASH;
public static StaticAnimation SPEAR_MOUNT_ATTACK;
public static StaticAnimation SPEAR_GUARD;
public static StaticAnimation SPEAR_GUARD_HIT;
public static StaticAnimation SWORD_AUTO1;
public static StaticAnimation SWORD_AUTO2;
public static StaticAnimation SWORD_AUTO3;
public static StaticAnimation SWORD_DASH;
public static StaticAnimation SWORD_AIR_SLASH;
public static StaticAnimation SWORD_GUARD;
public static StaticAnimation SWORD_GUARD_HIT;
public static StaticAnimation SWORD_GUARD_ACTIVE_HIT1;
public static StaticAnimation SWORD_GUARD_ACTIVE_HIT2;
public static StaticAnimation SWORD_GUARD_ACTIVE_HIT3;
public static StaticAnimation LONGSWORD_GUARD_ACTIVE_HIT1;
public static StaticAnimation LONGSWORD_GUARD_ACTIVE_HIT2;
public static StaticAnimation SWORD_DUAL_AUTO1;
public static StaticAnimation SWORD_DUAL_AUTO2;
public static StaticAnimation SWORD_DUAL_AUTO3;
public static StaticAnimation SWORD_DUAL_DASH;
public static StaticAnimation SWORD_DUAL_AIR_SLASH;
public static StaticAnimation SWORD_DUAL_GUARD;
public static StaticAnimation SWORD_DUAL_GUARD_HIT;
public static StaticAnimation BIPED_COMMON_NEUTRALIZED;
public static StaticAnimation GREATSWORD_GUARD_BREAK;
public static StaticAnimation METEOR_SLAM;
public static StaticAnimation REVELATION_ONEHAND;
public static StaticAnimation REVELATION_TWOHAND;
public static StaticAnimation LONGSWORD_AUTO1;
public static StaticAnimation LONGSWORD_AUTO2;
public static StaticAnimation LONGSWORD_AUTO3;
public static StaticAnimation LONGSWORD_DASH;
public static StaticAnimation LONGSWORD_LIECHTENAUER_AUTO1;
public static StaticAnimation LONGSWORD_LIECHTENAUER_AUTO2;
public static StaticAnimation LONGSWORD_LIECHTENAUER_AUTO3;
public static StaticAnimation LONGSWORD_AIR_SLASH;
public static StaticAnimation LONGSWORD_GUARD;
public static StaticAnimation LONGSWORD_GUARD_HIT;
public static StaticAnimation TACHI_AUTO1;
public static StaticAnimation TACHI_AUTO2;
public static StaticAnimation TACHI_AUTO3;
public static StaticAnimation TACHI_DASH;
public static StaticAnimation TOOL_AUTO1;
public static StaticAnimation TOOL_AUTO2;
public static StaticAnimation TOOL_DASH;
public static StaticAnimation UCHIGATANA_AUTO1;
public static StaticAnimation UCHIGATANA_AUTO2;
public static StaticAnimation UCHIGATANA_AUTO3;
public static StaticAnimation UCHIGATANA_DASH;
public static StaticAnimation UCHIGATANA_AIR_SLASH;
public static StaticAnimation UCHIGATANA_SHEATHING_AUTO;
public static StaticAnimation UCHIGATANA_SHEATHING_DASH;
public static StaticAnimation UCHIGATANA_SHEATH_AIR_SLASH;
public static StaticAnimation UCHIGATANA_GUARD;
public static StaticAnimation UCHIGATANA_GUARD_HIT;
public static StaticAnimation SWORD_MOUNT_ATTACK;
public static StaticAnimation GREATSWORD_AUTO1;
public static StaticAnimation GREATSWORD_AUTO2;
public static StaticAnimation GREATSWORD_DASH;
public static StaticAnimation GREATSWORD_AIR_SLASH;
public static StaticAnimation GREATSWORD_GUARD;
public static StaticAnimation GREATSWORD_GUARD_HIT;
public static StaticAnimation DAGGER_AUTO1;
public static StaticAnimation DAGGER_AUTO2;
public static StaticAnimation DAGGER_AUTO3;
public static StaticAnimation DAGGER_DASH;
public static StaticAnimation DAGGER_AIR_SLASH;
public static StaticAnimation DAGGER_DUAL_AUTO1;
public static StaticAnimation DAGGER_DUAL_AUTO2;
public static StaticAnimation DAGGER_DUAL_AUTO3;
public static StaticAnimation DAGGER_DUAL_AUTO4;
public static StaticAnimation DAGGER_DUAL_DASH;
public static StaticAnimation DAGGER_DUAL_AIR_SLASH;
public static StaticAnimation TRIDENT_AUTO1;
public static StaticAnimation TRIDENT_AUTO2;
public static StaticAnimation TRIDENT_AUTO3;
public static StaticAnimation THE_GUILLOTINE;
public static StaticAnimation SWEEPING_EDGE;
public static StaticAnimation DANCING_EDGE;
public static StaticAnimation HEARTPIERCER;
public static StaticAnimation GRASPING_SPIRAL_FIRST;
public static StaticAnimation GRASPING_SPIRAL_SECOND;
public static StaticAnimation STEEL_WHIRLWIND_CHARGING;
public static StaticAnimation STEEL_WHIRLWIND;
public static StaticAnimation BATTOJUTSU;
public static StaticAnimation BATTOJUTSU_DASH;
public static StaticAnimation RUSHING_TEMPO1;
public static StaticAnimation RUSHING_TEMPO2;
public static StaticAnimation RUSHING_TEMPO3;
public static StaticAnimation RELENTLESS_COMBO;
public static StaticAnimation EVISCERATE_FIRST;
public static StaticAnimation EVISCERATE_SECOND;
public static StaticAnimation BLADE_RUSH_COMBO1;
public static StaticAnimation BLADE_RUSH_COMBO2;
public static StaticAnimation BLADE_RUSH_COMBO3;
public static StaticAnimation BLADE_RUSH_HIT;
public static StaticAnimation BLADE_RUSH_EXECUTE_BIPED;
public static StaticAnimation BLADE_RUSH_TRY;
public static StaticAnimation BLADE_RUSH_FAILED;
public static StaticAnimation WRATHFUL_LIGHTING;
public static StaticAnimation TSUNAMI;
public static StaticAnimation TSUNAMI_REINFORCED;
public static StaticAnimation EVERLASTING_ALLEGIANCE_CALL;
public static StaticAnimation EVERLASTING_ALLEGIANCE_CATCH;
public static StaticAnimation SHARP_STAB;
public static StaticAnimation OFF_ANIMATION_HIGHEST;
public static StaticAnimation OFF_ANIMATION_MIDDLE;
@SubscribeEvent
public static void registerAnimations(AnimationRegistryEvent event) {
event.getRegistryMap().put(EpicFightMod.MODID, Animations::build);
}
private static void build() {
HumanoidArmature biped = Armatures.BIPED;
CreeperArmature creeper = Armatures.CREEPER;
EndermanArmature enderman = Armatures.ENDERMAN;
SpiderArmature spider = Armatures.SPIDER;
IronGolemArmature ironGolem = Armatures.IRON_GOLEM;
RavagerArmature ravager = Armatures.RAVAGER;
VexArmature vex = Armatures.VEX;
PiglinArmature piglin = Armatures.PIGLIN;
HoglinArmature hoglin = Armatures.HOGLIN;
DragonArmature dragon = Armatures.DRAGON;
WitherArmature wither = Armatures.WITHER;
BIPED_IDLE = new StaticAnimation(true, "biped/living/idle", biped);
BIPED_WALK = new MovementAnimation(true, "biped/living/walk", biped);
BIPED_FLYING = new StaticAnimation(true, "biped/living/fly", biped);
BIPED_CREATIVE_IDLE = new StaticAnimation(true, "biped/living/creative_idle", biped);
BIPED_CREATIVE_FLYING_FORWARD = new MovementAnimation(true, "biped/living/creative_fly", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.FLYING_CORRECTION);
BIPED_CREATIVE_FLYING_BACKWARD = new MovementAnimation(true, "biped/living/creative_fly_backward", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.FLYING_CORRECTION2);
BIPED_CREATIVE_FLYING = new SelectiveAnimation((entitypatch) -> {
Vec3 view = entitypatch.getOriginal().getViewVector(1.0F);
Vec3 move = entitypatch.getOriginal().getDeltaMovement();
double dot = view.dot(move);
return dot < 0.0D ? 1 : 0;
}, BIPED_CREATIVE_FLYING_FORWARD, BIPED_CREATIVE_FLYING_BACKWARD);
BIPED_HOLD_CROSSBOW = new StaticAnimation(true, "biped/living/hold_crossbow", biped);
BIPED_HOLD_MAP_TWOHAND = new StaticAnimation(true, "biped/living/hold_map_twohand", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.MAP_ARMS_CORRECTION);
BIPED_HOLD_MAP_OFFHAND = new StaticAnimation(true, "biped/living/hold_map_offhand", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.MAP_ARMS_CORRECTION);
BIPED_HOLD_MAP_MAINHAND = new StaticAnimation(true, "biped/living/hold_map_mainhand", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.MAP_ARMS_CORRECTION);
BIPED_HOLD_MAP_TWOHAND_MOVE = new StaticAnimation(true, "biped/living/hold_map_twohand_move", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.MAP_ARMS_CORRECTION);
BIPED_HOLD_MAP_OFFHAND_MOVE = new StaticAnimation(true, "biped/living/hold_map_offhand_move", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.MAP_ARMS_CORRECTION);
BIPED_HOLD_MAP_MAINHAND_MOVE = new StaticAnimation(true, "biped/living/hold_map_mainhand_move", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.MAP_ARMS_CORRECTION);
BIPED_RUN = new MovementAnimation(true, "biped/living/run", biped);
BIPED_SNEAK = new MovementAnimation(true, "biped/living/sneak", biped);
BIPED_SWIM = new MovementAnimation(true, "biped/living/swim", biped);
BIPED_FLOAT = new StaticAnimation(true, "biped/living/float", biped);
BIPED_KNEEL = new StaticAnimation(true, "biped/living/kneel", biped);
BIPED_FALL = new StaticAnimation(true, "biped/living/fall", biped);
BIPED_MOUNT = new StaticAnimation(true, "biped/living/mount", biped);
BIPED_SIT = new StaticAnimation(true, "biped/living/sit", biped);
BIPED_DIG_MAINHAND = new StaticAnimation(0.11F, true, "biped/living/dig", biped);
BIPED_DIG_OFFHAND = new StaticAnimation(0.11F, true, "biped/living/dig_offhand", biped);
BIPED_DIG = new SelectiveAnimation((entitypatch) -> entitypatch.getOriginal().swingingArm == InteractionHand.OFF_HAND ? 1 : 0, BIPED_DIG_MAINHAND, BIPED_DIG_OFFHAND);
BIPED_BOW_AIM = new AimAnimation(false, "biped/combat/bow_aim_mid", "biped/combat/bow_aim_up", "biped/combat/bow_aim_down", "biped/combat/bow_aim_lying", biped);
BIPED_BOW_SHOT = new ReboundAnimation(0.04F, false, "biped/combat/bow_shot_mid", "biped/combat/bow_shot_up", "biped/combat/bow_shot_down", "biped/combat/bow_shot_lying", biped);
BIPED_DRINK = new MirrorAnimation(0.35F, true, "biped/living/drink", "biped/living/drink_offhand", biped);
BIPED_EAT = new MirrorAnimation(0.35F, true, "biped/living/eat", "biped/living/eat_offhand", biped);
BIPED_SPYGLASS_USE = new MirrorAnimation(0.15F, true, "biped/living/spyglass", "biped/living/spyglass_offhand", biped)
.addProperty(StaticAnimationProperty.PLAY_SPEED_MODIFIER, (self, entitypatch, speed, elapsedTime) -> {
if (self instanceof LinkAnimation) {
return speed;
}
return 0.0F;
})
.addProperty(StaticAnimationProperty.POSE_MODIFIER, (self, pose, entitypatch, elapsedTime, partialTicks) -> {
if (entitypatch.isFirstPerson()) {
pose.getJointTransformData().clear();
} else if (!(self instanceof LinkAnimation)) {
LivingMotion livingMotion = entitypatch.getCurrentLivingMotion();
Pose rawPose;
if (livingMotion == LivingMotions.SWIM || livingMotion == LivingMotions.FLY || livingMotion == LivingMotions.CREATIVE_FLY) {
rawPose = self.getRawPose(3.3333F);
} else {
float xRot = Mth.clamp((entitypatch.getOriginal().getXRot() + 90.0F) * 0.0166666666666667F, 0.0F, 3.0F);
rawPose = self.getRawPose(xRot);
float f = 90.0F;
float ratio = (f - Math.abs(entitypatch.getOriginal().getXRot())) / f;
float yawOffset = entitypatch.getOriginal().getVehicle() != null ? entitypatch.getOriginal().getYHeadRot() : entitypatch.getOriginal().yBodyRot;
rawPose.getJointTransformData().get("Chest").frontResult(
JointTransform.getRotation(Vector3f.YP.rotationDegrees(Mth.wrapDegrees(entitypatch.getOriginal().getYHeadRot() - yawOffset) * ratio))
, OpenMatrix4f::mulAsOriginFront
);
}
rawPose.getJointTransformData().forEach(pose.getJointTransformData()::put);
}
});
BIPED_CROSSBOW_AIM = new AimAnimation(false, "biped/combat/crossbow_aim_mid", "biped/combat/crossbow_aim_up", "biped/combat/crossbow_aim_down", "biped/combat/crossbow_aim_lying", biped);
BIPED_CROSSBOW_SHOT = new ReboundAnimation(false, "biped/combat/crossbow_shot_mid", "biped/combat/crossbow_shot_up", "biped/combat/crossbow_shot_down", "biped/combat/crossbow_shot_lying", biped);
BIPED_CROSSBOW_RELOAD = new StaticAnimation(false, "biped/combat/crossbow_reload", biped);
BIPED_JUMP = new StaticAnimation(0.083F, false, "biped/living/jump", biped);
BIPED_RUN_SPEAR = new MovementAnimation(true, "biped/living/run_spear", biped);
BIPED_BLOCK = new MirrorAnimation(0.25F, true, "biped/living/shield", "biped/living/shield_mirror", biped);
BIPED_HOLD_GREATSWORD = new StaticAnimation(true, "biped/living/hold_greatsword", biped);
BIPED_HOLD_UCHIGATANA_SHEATHING = new StaticAnimation(true, "biped/living/hold_uchigatana_sheath", biped);
BIPED_HOLD_UCHIGATANA = new StaticAnimation(true, "biped/living/hold_uchigatana", biped);
BIPED_HOLD_TACHI = new StaticAnimation(true, "biped/living/hold_tachi", biped);
BIPED_HOLD_LONGSWORD = new StaticAnimation(true, "biped/living/hold_longsword", biped);
BIPED_HOLD_SPEAR = new StaticAnimation(true, "biped/living/hold_spear", biped);
BIPED_HOLD_DUAL_WEAPON = new StaticAnimation(true, "biped/living/hold_dual", biped);
BIPED_HOLD_LIECHTENAUER = new StaticAnimation(true, "biped/living/hold_liechtenauer", biped);
BIPED_WALK_GREATSWORD = new MovementAnimation(true, "biped/living/walk_greatsword", biped);
BIPED_WALK_SPEAR = new MovementAnimation(true, "biped/living/walk_spear", biped);
BIPED_WALK_UCHIGATANA_SHEATHING = new MovementAnimation(true, "biped/living/walk_uchigatana_sheath", biped);
BIPED_WALK_UCHIGATANA = new MovementAnimation(true, "biped/living/walk_uchigatana", biped);
BIPED_WALK_TWOHAND = new MovementAnimation(true, "biped/living/walk_twohand", biped);
BIPED_WALK_LONGSWORD = new MovementAnimation(true, "biped/living/walk_longsword", biped);
BIPED_WALK_LIECHTENAUER = new MovementAnimation(true, "biped/living/walk_liechtenauer", biped);
BIPED_RUN_GREATSWORD = new MovementAnimation(true, "biped/living/run_greatsword", biped);
BIPED_RUN_UCHIGATANA = new MovementAnimation(true, "biped/living/run_uchigatana", biped);
BIPED_RUN_UCHIGATANA_SHEATHING = new MovementAnimation(true, "biped/living/run_uchigatana_sheath", biped);
BIPED_RUN_DUAL = new MovementAnimation(true, "biped/living/run_dual", biped);
BIPED_RUN_LONGSWORD = new MovementAnimation(true, "biped/living/run_longsword", biped);
BIPED_UCHIGATANA_SCRAP = new StaticAnimation(0.05F, false, "biped/living/uchigatana_scrap", biped)
.addEvents(TimeStampedEvent.create(0.15F, ReusableSources.PLAY_SOUND, AnimationEvent.Side.CLIENT).params(EpicFightSounds.SWORD_IN));
BIPED_LIECHTENAUER_READY = new StaticAnimation(0.1F, false, "biped/living/liechtenauer_ready", biped);
BIPED_HIT_SHIELD = new MirrorAnimation(0.05F, false, "biped/combat/hit_shield", "biped/combat/hit_shield_mirror", biped);
BIPED_CLIMBING = new MovementAnimation(0.16F, true, "biped/living/climb", biped)
.addProperty(StaticAnimationProperty.PLAY_SPEED_MODIFIER, Animations.ReusableSources.CONSTANT_ONE);
BIPED_SLEEPING = new StaticAnimation(0.16F, true, "biped/living/sleep", biped);
BIPED_JAVELIN_AIM = new AimAnimation(false, "biped/combat/javelin_aim_mid", "biped/combat/javelin_aim_up", "biped/combat/javelin_aim_down", "biped/combat/javelin_aim_lying", biped);
BIPED_JAVELIN_THROW = new ReboundAnimation(0.08F, false, "biped/combat/javelin_throw_mid", "biped/combat/javelin_throw_up", "biped/combat/javelin_throw_down", "biped/combat/javelin_throw_lying", biped);
OFF_ANIMATION_HIGHEST = new OffAnimation("off_highest");
OFF_ANIMATION_MIDDLE = new OffAnimation("off_middle");
ZOMBIE_IDLE = new StaticAnimation(true, "zombie/idle", biped);
ZOMBIE_WALK = new MovementAnimation(true, "zombie/walk", biped);
ZOMBIE_CHASE = new MovementAnimation(true, "zombie/chase", biped);
CREEPER_IDLE = new StaticAnimation(true, "creeper/idle", creeper);
CREEPER_WALK = new MovementAnimation(true, "creeper/walk", creeper);
ENDERMAN_IDLE = new StaticAnimation(true, "enderman/idle", enderman);
ENDERMAN_WALK = new MovementAnimation(true, "enderman/walk", enderman);
ENDERMAN_RAGE_IDLE = new StaticAnimation(true, "enderman/rage_idle", enderman);
ENDERMAN_RAGE_WALK = new MovementAnimation(true, "enderman/rage_walk", enderman);
WITHER_SKELETON_WALK = new MovementAnimation(true, "wither_skeleton/walk", biped);
WITHER_SKELETON_CHASE = new MovementAnimation(0.36F, true, "wither_skeleton/chase", biped);
WITHER_SKELETON_IDLE = new StaticAnimation(true, "wither_skeleton/idle", biped);
WITHER_SKELETON_SPECIAL_SPAWN = new InvincibleAnimation(0.0F, "wither_skeleton/special_spawn", biped);
SPIDER_IDLE = new StaticAnimation(true, "spider/idle", spider);
SPIDER_CRAWL = new MovementAnimation(true, "spider/crawl", spider);
GOLEM_IDLE = new StaticAnimation(true, "iron_golem/idle", ironGolem);
GOLEM_WALK = new MovementAnimation(true, "iron_golem/walk", ironGolem);
HOGLIN_IDLE = new StaticAnimation(true, "hoglin/idle", hoglin);
HOGLIN_WALK = new MovementAnimation(true, "hoglin/walk", hoglin);
ILLAGER_IDLE = new StaticAnimation(true, "illager/idle", biped);
ILLAGER_WALK = new MovementAnimation(true, "illager/walk", biped);
VINDICATOR_IDLE_AGGRESSIVE = new StaticAnimation(true, "illager/idle_aggressive", biped);
VINDICATOR_CHASE = new MovementAnimation(true, "illager/chase", biped);
EVOKER_CAST_SPELL = new StaticAnimation(true, "illager/spellcast", biped);
RAVAGER_IDLE = new StaticAnimation(true, "ravager/idle", ravager);
RAVAGER_WALK = new MovementAnimation(true, "ravager/walk", ravager);
VEX_IDLE = new StaticAnimation(true, "vex/idle", vex);
VEX_FLIPPING = new StaticAnimation(0.05F, true, "vex/flip", vex);
PIGLIN_IDLE = new StaticAnimation(true, "piglin/idle", piglin);
PIGLIN_WALK = new MovementAnimation(true, "piglin/walk", piglin);
PIGLIN_ZOMBIFIED_IDLE = new StaticAnimation(true, "piglin/zombified_idle", piglin);
PIGLIN_ZOMBIFIED_WALK = new MovementAnimation(true, "piglin/zombified_walk", piglin);
PIGLIN_ZOMBIFIED_CHASE = new MovementAnimation(true, "piglin/zombified_chase", piglin);
PIGLIN_CELEBRATE1 = new StaticAnimation(true, "piglin/celebrate1", piglin);
PIGLIN_CELEBRATE2 = new StaticAnimation(true, "piglin/celebrate2", piglin);
PIGLIN_CELEBRATE3 = new StaticAnimation(true, "piglin/celebrate3", piglin);
PIGLIN_ADMIRE = new StaticAnimation(true, "piglin/admire", piglin);
WITHER_IDLE = new StaticAnimation(true, "wither/idle", wither);
SPEAR_GUARD = new StaticAnimation(true, "biped/skill/guard_spear", biped);
SWORD_GUARD = new StaticAnimation(true, "biped/skill/guard_sword", biped);
SWORD_DUAL_GUARD = new StaticAnimation(true, "biped/skill/guard_dualsword", biped);
GREATSWORD_GUARD = new StaticAnimation(0.25F, true, "biped/skill/guard_greatsword", biped);
UCHIGATANA_GUARD = new StaticAnimation(0.25F, true, "biped/skill/guard_uchigatana", biped);
LONGSWORD_GUARD = new StaticAnimation(0.25F, true, "biped/skill/guard_longsword", biped);
STEEL_WHIRLWIND_CHARGING = new StaticAnimation(0.15F, false, "biped/skill/steel_whirlwind_charging", biped)
.addProperty(StaticAnimationProperty.PLAY_SPEED_MODIFIER, Animations.ReusableSources.CHARGING);
/**
* Main Frame Animations
**/
BIPED_ROLL_FORWARD = new DodgeAnimation(0.1F, "biped/skill/roll_forward", 0.6F, 0.8F, biped)
.addEvents(TimeStampedEvent.create(0.0F, ReusableSources.PLAY_SOUND, AnimationEvent.Side.SERVER).params(EpicFightSounds.ROLL));
BIPED_ROLL_BACKWARD = new DodgeAnimation(0.1F, "biped/skill/roll_backward", 0.6F, 0.8F, biped)
.addEvents(TimeStampedEvent.create(0.0F, ReusableSources.PLAY_SOUND, AnimationEvent.Side.SERVER).params(EpicFightSounds.ROLL));
BIPED_STEP_FORWARD = new DodgeAnimation(0.1F, 0.35F, "biped/skill/step_forward", 0.6F, 1.65F, biped)
.addState(EntityState.LOCKON_ROTATE, true)
.newTimePair(0.0F, 0.2F)
.addStateRemoveOld(EntityState.CAN_BASIC_ATTACK, false)
.addStateRemoveOld(EntityState.CAN_SKILL_EXECUTION, false);
BIPED_STEP_BACKWARD = new DodgeAnimation(0.1F, 0.35F, "biped/skill/step_backward", 0.6F, 1.65F, biped)
.addState(EntityState.LOCKON_ROTATE, true)
.newTimePair(0.0F, 0.2F)
.addStateRemoveOld(EntityState.CAN_BASIC_ATTACK, false)
.addStateRemoveOld(EntityState.CAN_SKILL_EXECUTION, false);
BIPED_STEP_LEFT = new DodgeAnimation(0.1F, 0.35F, "biped/skill/step_left", 0.6F, 1.65F, biped)
.addState(EntityState.LOCKON_ROTATE, true)
.newTimePair(0.0F, 0.2F)
.addStateRemoveOld(EntityState.CAN_BASIC_ATTACK, false)
.addStateRemoveOld(EntityState.CAN_SKILL_EXECUTION, false);
BIPED_STEP_RIGHT = new DodgeAnimation(0.1F, 0.35F, "biped/skill/step_right", 0.6F, 1.65F, biped)
.addState(EntityState.LOCKON_ROTATE, true)
.newTimePair(0.0F, 0.2F)
.addStateRemoveOld(EntityState.CAN_BASIC_ATTACK, false)
.addStateRemoveOld(EntityState.CAN_SKILL_EXECUTION, false);
BIPED_KNOCKDOWN_WAKEUP_LEFT = new DodgeAnimation(0.1F, "biped/skill/knockdown_wakeup_left", 0.8F, 0.6F, biped);
BIPED_KNOCKDOWN_WAKEUP_RIGHT = new DodgeAnimation(0.1F, "biped/skill/knockdown_wakeup_right", 0.8F, 0.6F, biped);
BIPED_DEMOLITION_LEAP_CHARGING = new ActionAnimation(0.15F, "biped/skill/demolition_leap_charge", biped)
.addProperty(ActionAnimationProperty.STOP_MOVEMENT, true)
.addProperty(StaticAnimationProperty.PLAY_SPEED_MODIFIER, Animations.ReusableSources.CHARGING)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, (self, pose, entitypatch, time, partialTicks) -> {
if (!self.isStaticAnimation()) {
return;
}
float xRot = Mth.clamp(entitypatch.getCameraXRot(), -60.0F, 50.0F);
float yRot = Mth.clamp(Mth.wrapDegrees(entitypatch.getCameraYRot() - entitypatch.getOriginal().getYRot()), -60.0F, 60.0F);
JointTransform chest = pose.getOrDefaultTransform("Chest");
chest.frontResult(JointTransform.getRotation(Vector3f.YP.rotationDegrees(yRot)), OpenMatrix4f::mulAsOriginFront);
JointTransform head = pose.getOrDefaultTransform("Head");
MathUtils.mulQuaternion(Vector3f.XP.rotationDegrees(xRot), head.rotation(), head.rotation());
})
.newTimePair(0.0F, Float.MAX_VALUE)
.addStateRemoveOld(EntityState.CAN_BASIC_ATTACK, true)
.addStateRemoveOld(EntityState.CAN_SKILL_EXECUTION, true);
BIPED_DEMOLITION_LEAP = new ActionAnimation(0.05F, 0.45F, "biped/skill/demolition_leap", biped);
BIPED_PHANTOM_ASCENT_FORWARD = new ActionAnimation(0.05F, 0.7F, "biped/skill/phantom_ascent_forward", biped)
.addStateRemoveOld(EntityState.MOVEMENT_LOCKED, false)
.newTimePair(0.0F, 0.5F)
.addStateRemoveOld(EntityState.INACTION, true)
.addEvents(StaticAnimationProperty.ON_BEGIN_EVENTS, AnimationEvent.create((entitypatch, animation, params) -> {
Vec3 pos = entitypatch.getOriginal().position();
entitypatch.playSound(EpicFightSounds.ROLL, 0, 0);
entitypatch.getOriginal().level.addAlwaysVisibleParticle(EpicFightParticles.AIR_BURST.get(), pos.x, pos.y + entitypatch.getOriginal().getBbHeight() * 0.5D, pos.z, 0, -1, 2);
}, Side.CLIENT))
.addEvents(StaticAnimationProperty.ON_END_EVENTS, AnimationEvent.create((entitypatch, animation, params) -> {
if (entitypatch instanceof PlayerPatch playerpatch) {
playerpatch.changeModelYRot(0);
}
}, Side.CLIENT));
BIPED_PHANTOM_ASCENT_BACKWARD = new ActionAnimation(0.05F, 0.7F, "biped/skill/phantom_ascent_backward", biped)
.addStateRemoveOld(EntityState.MOVEMENT_LOCKED, false)
.newTimePair(0.0F, 0.5F)
.addStateRemoveOld(EntityState.INACTION, true)
.addEvents(StaticAnimationProperty.ON_BEGIN_EVENTS, AnimationEvent.create((entitypatch, animation, params) -> {
Vec3 pos = entitypatch.getOriginal().position();
entitypatch.playSound(EpicFightSounds.ROLL, 0, 0);
entitypatch.getOriginal().level.addAlwaysVisibleParticle(EpicFightParticles.AIR_BURST.get(), pos.x, pos.y + entitypatch.getOriginal().getBbHeight() * 0.5D, pos.z, 0, -1, 2);
}, Side.CLIENT))
.addEvents(StaticAnimationProperty.ON_END_EVENTS, AnimationEvent.create((entitypatch, animation, params) -> {
if (entitypatch instanceof PlayerPatch playerpatch) {
playerpatch.changeModelYRot(0);
}
}, Side.CLIENT));
FIST_AUTO1 = new BasicAttackAnimation(0.08F, 0.0F, 0.11F, 0.16F, InteractionHand.OFF_HAND, null, biped.toolL, "biped/combat/fist_auto1", biped)
.addProperty(AttackPhaseProperty.PARTICLE, EpicFightParticles.HIT_BLUNT);
FIST_AUTO2 = new BasicAttackAnimation(0.08F, 0.0F, 0.11F, 0.16F, null, biped.toolR, "biped/combat/fist_auto2", biped)
.addProperty(AttackPhaseProperty.PARTICLE, EpicFightParticles.HIT_BLUNT);
FIST_AUTO3 = new BasicAttackAnimation(0.08F, 0.05F, 0.16F, 0.5F, InteractionHand.OFF_HAND, null, biped.toolL, "biped/combat/fist_auto3", biped)
.addProperty(AttackPhaseProperty.PARTICLE, EpicFightParticles.HIT_BLUNT);
FIST_DASH = new DashAttackAnimation(0.06F, 0.05F, 0.15F, 0.3F, 0.7F, null, biped.shoulderR, "biped/combat/fist_dash", biped)
.addProperty(AttackPhaseProperty.PARTICLE, EpicFightParticles.HIT_BLUNT)
.addProperty(StaticAnimationProperty.PLAY_SPEED_MODIFIER, Animations.ReusableSources.CONSTANT_ONE);
SWORD_AUTO1 = new BasicAttackAnimation(0.1F, 0.0F, 0.1F, 0.4F, null, biped.toolR, "biped/combat/sword_auto1", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.6F);
SWORD_AUTO2 = new BasicAttackAnimation(0.1F, 0.05F, 0.15F, 0.4F, null, biped.toolR, "biped/combat/sword_auto2", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.6F);
SWORD_AUTO3 = new BasicAttackAnimation(0.1F, 0.05F, 0.15F, 0.6F, null, biped.toolR, "biped/combat/sword_auto3", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.6F);
SWORD_DASH = new DashAttackAnimation(0.1F, 0.1F, 0.1F, 0.2F, 0.65F, null, biped.toolR, "biped/combat/sword_dash", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.6F);
GREATSWORD_AUTO1 = new BasicAttackAnimation(0.25F, 0.15F, 0.25F, 0.65F, null, biped.toolR, "biped/combat/greatsword_auto1", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.0F);
GREATSWORD_AUTO2 = new BasicAttackAnimation(0.1F, 0.5F, 0.65F, 1.5F, null, biped.toolR, "biped/combat/greatsword_auto2", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.0F);
GREATSWORD_DASH = new DashAttackAnimation(0.2F, 0.2F, 0.35F, 0.6F, 1.2F, null, biped.toolR, "biped/combat/greatsword_dash", biped, false)
.addProperty(AttackPhaseProperty.SOURCE_TAG, Set.of(SourceTags.FINISHER))
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.0F)
.addProperty(ActionAnimationProperty.MOVE_VERTICAL, false)
.addEvents(TimeStampedEvent.create(0.4F, Animations.ReusableSources.FRACTURE_GROUND_SIMPLE, Side.CLIENT).params(new Vec3f(0.0F, -0.24F, -2.0F), Armatures.BIPED.toolR, 1.1D, 0.55F));
SPEAR_ONEHAND_AUTO = new BasicAttackAnimation(0.1F, 0.35F, 0.45F, 0.75F, null, biped.toolR, "biped/combat/spear_onehand_auto", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
SPEAR_TWOHAND_AUTO1 = new BasicAttackAnimation(0.1F, 0.2F, 0.3F, 0.45F, null, biped.toolR, "biped/combat/spear_twohand_auto1", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
SPEAR_TWOHAND_AUTO2 = new BasicAttackAnimation(0.1F, 0.2F, 0.3F, 0.7F, null, biped.toolR, "biped/combat/spear_twohand_auto2", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
SPEAR_DASH = new DashAttackAnimation(0.1F, 0.25F, 0.3F, 0.4F, 0.8F, null, biped.toolR, "biped/combat/spear_dash", biped);
TOOL_AUTO1 = new BasicAttackAnimation(0.13F, 0.05F, 0.15F, 0.3F, null, biped.toolR, String.valueOf(SWORD_AUTO1.getId()), biped);
TOOL_AUTO2 = new BasicAttackAnimation(0.13F, 0.05F, 0.15F, 0.4F, null, biped.toolR, "biped/combat/sword_auto4", biped);
TOOL_DASH = new DashAttackAnimation(0.16F, 0.08F, 0.15F, 0.25F, 0.58F, null, biped.toolR, "biped/combat/tool_dash", biped)
.addProperty(AttackPhaseProperty.MAX_STRIKES_MODIFIER, ValueModifier.adder(1));
AXE_DASH = new DashAttackAnimation(0.25F, 0.08F, 0.4F, 0.46F, 0.9F, null, biped.toolR, "biped/combat/axe_dash", biped);
SWORD_DUAL_AUTO1 = new BasicAttackAnimation(0.08F, 0.1F, 0.2F, 0.3F, null, biped.toolR, "biped/combat/sword_dual_auto1", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.6F)
.newTimePair(0.0F, 0.2F)
.addStateRemoveOld(EntityState.CAN_BASIC_ATTACK, false);
SWORD_DUAL_AUTO2 = new BasicAttackAnimation(0.1F, 0.1F, 0.2F, 0.3F, InteractionHand.OFF_HAND, null, biped.toolL, "biped/combat/sword_dual_auto2", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.6F)
.newTimePair(0.0F, 0.2F)
.addStateRemoveOld(EntityState.CAN_BASIC_ATTACK, false);
SWORD_DUAL_AUTO3 = new BasicAttackAnimation(0.1F, "biped/combat/sword_dual_auto3", biped,
new Phase(0.0F, 0.25F, 0.25F, 0.35F, 0.6F, Float.MAX_VALUE, false, InteractionHand.MAIN_HAND, List.of(Pair.of(biped.toolR, null), Pair.of(biped.toolL, null))))
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.6F);
SWORD_DUAL_DASH = new DashAttackAnimation(0.16F, "biped/combat/sword_dual_dash", biped,
new Phase(0.0F, 0.05F, 0.05F, 0.3F, 0.75F, Float.MAX_VALUE, false, InteractionHand.MAIN_HAND, List.of(Pair.of(biped.toolR, null), Pair.of(biped.toolL, null))))
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.6F)
.addProperty(ActionAnimationProperty.COORD_SET_BEGIN, MoveCoordFunctions.RAW_COORD)
.addProperty(ActionAnimationProperty.COORD_SET_TICK, null);
UCHIGATANA_AUTO1 = new BasicAttackAnimation(0.05F, 0.15F, 0.25F, 0.3F, null, biped.toolR, "biped/combat/uchigatana_auto1", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.0F);
UCHIGATANA_AUTO2 = new BasicAttackAnimation(0.05F, 0.2F, 0.3F, 0.3F, null, biped.toolR, "biped/combat/uchigatana_auto2", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.0F);
UCHIGATANA_AUTO3 = new BasicAttackAnimation(0.1F, 0.15F, 0.25F, 0.5F, null, biped.toolR, "biped/combat/uchigatana_auto3", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.0F);
UCHIGATANA_DASH = new DashAttackAnimation(0.1F, 0.05F, 0.05F, 0.15F, 0.6F, null, biped.toolR, "biped/combat/uchigatana_dash", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.0F);
UCHIGATANA_SHEATHING_AUTO = new BasicAttackAnimation(0.05F, 0.0F, 0.06F, 0.65F, ColliderPreset.BATTOJUTSU, biped.rootJoint, "biped/combat/uchigatana_sheath_auto", biped)
.addProperty(AttackPhaseProperty.ARMOR_NEGATION_MODIFIER, ValueModifier.adder(30.0F))
.addProperty(AttackPhaseProperty.DAMAGE_MODIFIER, ValueModifier.multiplier(2.0F))
.addProperty(AttackPhaseProperty.MAX_STRIKES_MODIFIER, ValueModifier.adder(3))
.addProperty(AttackPhaseProperty.SWING_SOUND, EpicFightSounds.WHOOSH_SHARP);
UCHIGATANA_SHEATHING_DASH = new DashAttackAnimation(0.05F, 0.05F, 0.2F, 0.35F, 0.65F, ColliderPreset.BATTOJUTSU_DASH, biped.rootJoint, "biped/combat/uchigatana_sheath_dash", biped)
.addProperty(AttackPhaseProperty.ARMOR_NEGATION_MODIFIER, ValueModifier.adder(30.0F))
.addProperty(AttackPhaseProperty.DAMAGE_MODIFIER, ValueModifier.multiplier(2.0F))
.addProperty(AttackPhaseProperty.MAX_STRIKES_MODIFIER, ValueModifier.adder(3))
.addProperty(AttackPhaseProperty.SWING_SOUND, EpicFightSounds.WHOOSH_SHARP);
AXE_AUTO1 = new BasicAttackAnimation(0.16F, 0.05F, 0.15F, 0.7F, null, biped.toolR, "biped/combat/axe_auto1", biped);
AXE_AUTO2 = new BasicAttackAnimation(0.16F, 0.05F, 0.15F, 0.85F, null, biped.toolR, "biped/combat/axe_auto2", biped);
LONGSWORD_AUTO1 = new BasicAttackAnimation(0.1F, 0.25F, 0.35F, 0.5F, null, biped.toolR, "biped/combat/longsword_auto1", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
LONGSWORD_AUTO2 = new BasicAttackAnimation(0.15F, 0.2F, 0.3F, 0.45F, null, biped.toolR, "biped/combat/longsword_auto2", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
LONGSWORD_AUTO3 = new BasicAttackAnimation(0.05F, 0.2F, 0.3F, 1.0F, null, biped.toolR, "biped/combat/longsword_auto3", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
LONGSWORD_DASH = new DashAttackAnimation(0.1F, 0.1F, 0.25F, 0.4F, 0.75F, null, biped.toolR, "biped/combat/longsword_dash", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
LONGSWORD_LIECHTENAUER_AUTO1 = new BasicAttackAnimation(0.1F, 0.15F, 0.25F, 0.5F, null, biped.toolR, "biped/combat/longsword_liechtenauer_auto1", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
LONGSWORD_LIECHTENAUER_AUTO2 = new BasicAttackAnimation(0.1F, 0.2F, 0.3F, 0.5F, null, biped.toolR, "biped/combat/longsword_liechtenauer_auto2", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
LONGSWORD_LIECHTENAUER_AUTO3 = new BasicAttackAnimation(0.25F, 0.1F, 0.2F, 0.7F, null, biped.toolR, "biped/combat/longsword_liechtenauer_auto3", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
TACHI_AUTO1 = new BasicAttackAnimation(0.1F, 0.35F, 0.4F, 0.5F, null, biped.toolR, "biped/combat/tachi_auto1", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F)
.addProperty(AttackAnimationProperty.EXTRA_COLLIDERS, 3);
TACHI_AUTO2 = new BasicAttackAnimation(0.15F, 0.2F, 0.3F, 0.5F, null, biped.toolR, "biped/combat/tachi_auto2", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
TACHI_AUTO3 = new BasicAttackAnimation(0.15F, 0.2F, 0.3F, 0.85F, null, biped.toolR, "biped/combat/tachi_auto3", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
TACHI_DASH = new DashAttackAnimation(0.05F, 0.3F, 0.3F, 0.4F, 1.0F, null, biped.toolR, "biped/combat/tachi_dash", biped, false)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 1.2F);
DAGGER_AUTO1 = new BasicAttackAnimation(0.05F, 0.05F, 0.15F, 0.25F, null, biped.toolR, "biped/combat/dagger_auto1", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.4F);
DAGGER_AUTO2 = new BasicAttackAnimation(0.05F, 0.0F, 0.1F, 0.25F, null, biped.toolR, "biped/combat/dagger_auto2", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.4F);
DAGGER_AUTO3 = new BasicAttackAnimation(0.05F, 0.2F, 0.25F, 0.4F, null, biped.toolR, "biped/combat/dagger_auto3", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.4F);
DAGGER_DASH = new DashAttackAnimation(0.05F, 0.1F, 0.2F, 0.25F, 0.6F, null, biped.toolR, "biped/combat/dagger_dash", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.4F)
.newTimePair(0.0F, 0.4F)
.addStateRemoveOld(EntityState.CAN_BASIC_ATTACK, false)
.newConditionalTimePair((entitypatch) -> (entitypatch.isLastAttackSuccess() ? 1 : 0), 0.4F, 0.6F)
.addConditionalState(0, EntityState.CAN_BASIC_ATTACK, false)
.addConditionalState(1, EntityState.CAN_BASIC_ATTACK, true);
DAGGER_DUAL_AUTO1 = new BasicAttackAnimation(0.05F, 0.1F, 0.2F, 0.25F, null, biped.toolR, "biped/combat/dagger_dual_auto1", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.4F);
DAGGER_DUAL_AUTO2 = new BasicAttackAnimation(0.05F, 0.0F, 0.11F, 0.16F, InteractionHand.OFF_HAND, null, biped.toolL, "biped/combat/dagger_dual_auto2", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.4F);
DAGGER_DUAL_AUTO3 = new BasicAttackAnimation(0.05F, 0.0F, 0.11F, 0.2F, null, biped.toolR, "biped/combat/dagger_dual_auto3", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.4F);
DAGGER_DUAL_AUTO4 = new BasicAttackAnimation(0.15F, "biped/combat/dagger_dual_auto4", biped,
new Phase(0.0F, 0.1F, 0.1F, 0.2F, 0.2F, 0.2F, InteractionHand.OFF_HAND, biped.toolL, null)
, new Phase(0.2F, 0.2F, 0.3F, 0.6F, 0.6F, biped.toolR, null))
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.4F);
DAGGER_DUAL_DASH = new DashAttackAnimation(0.1F, 0.1F, 0.25F, 0.3F, 0.65F, ColliderPreset.DUAL_DAGGER_DASH, biped.rootJoint, "biped/combat/dagger_dual_dash", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.4F)
.addProperty(ActionAnimationProperty.MOVE_VERTICAL, true);
TRIDENT_AUTO1 = new BasicAttackAnimation(0.3F, 0.05F, 0.16F, 0.45F, null, biped.toolR, "biped/combat/trident_auto1", biped);
TRIDENT_AUTO2 = new BasicAttackAnimation(0.05F, 0.25F, 0.36F, 0.55F, null, biped.toolR, "biped/combat/trident_auto2", biped);
TRIDENT_AUTO3 = new BasicAttackAnimation(0.2F, 0.3F, 0.46F, 0.9F, null, biped.toolR, "biped/combat/trident_auto3", biped);
SWORD_AIR_SLASH = new AirSlashAnimation(0.1F, 0.15F, 0.26F, 0.5F, null, biped.toolR, "biped/combat/sword_airslash", biped);
SWORD_DUAL_AIR_SLASH = new AirSlashAnimation(0.1F, 0.15F, 0.26F, 0.5F, ColliderPreset.DUAL_SWORD_AIR_SLASH, biped.torso, "biped/combat/sword_dual_airslash", biped);
UCHIGATANA_AIR_SLASH = new AirSlashAnimation(0.1F, 0.05F, 0.16F, 0.3F, null, biped.toolR, "biped/combat/uchigatana_airslash", biped);
UCHIGATANA_SHEATH_AIR_SLASH = new AirSlashAnimation(0.1F, 0.1F, 0.16F, 0.3F, null, biped.toolR, "biped/combat/uchigatana_sheath_airslash", biped)
.addProperty(AttackPhaseProperty.ARMOR_NEGATION_MODIFIER, ValueModifier.adder(30.0F))
.addProperty(AttackPhaseProperty.MAX_STRIKES_MODIFIER, ValueModifier.adder(2))
.addProperty(AttackPhaseProperty.SWING_SOUND, EpicFightSounds.WHOOSH_SHARP)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.0F);
SPEAR_ONEHAND_AIR_SLASH = new AirSlashAnimation(0.1F, 0.15F, 0.26F, 0.4F, null, biped.toolR, "biped/combat/spear_onehand_airslash", biped);
SPEAR_TWOHAND_AIR_SLASH = new AirSlashAnimation(0.1F, 0.25F, 0.36F, 0.6F, null, biped.toolR, "biped/combat/spear_twohand_airslash", biped)
.addProperty(AttackPhaseProperty.SOURCE_TAG, Set.of(SourceTags.FINISHER));
LONGSWORD_AIR_SLASH = new AirSlashAnimation(0.1F, 0.3F, 0.41F, 0.5F, null, biped.toolR, "biped/combat/longsword_airslash", biped);
GREATSWORD_AIR_SLASH = new AirSlashAnimation(0.1F, 0.5F, 0.55F, 0.71F, 0.75F, false, null, biped.toolR, "biped/combat/greatsword_airslash", biped)
.addProperty(AttackPhaseProperty.SOURCE_TAG, Set.of(SourceTags.FINISHER));
FIST_AIR_SLASH = new AirSlashAnimation(0.1F, 0.15F, 0.26F, 0.4F, null, biped.toolR, "biped/combat/fist_airslash", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 4.0F);
DAGGER_AIR_SLASH = new AirSlashAnimation(0.1F, 0.15F, 0.26F, 0.45F, null, biped.toolR, "biped/combat/dagger_airslash", biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.4F);
DAGGER_DUAL_AIR_SLASH = new AirSlashAnimation(0.1F, 0.15F, 0.26F, 0.4F, ColliderPreset.DUAL_DAGGER_AIR_SLASH, biped.torso, String.valueOf(SWORD_DUAL_AIR_SLASH.getId()), biped)
.addProperty(AttackAnimationProperty.BASIS_ATTACK_SPEED, 2.0F);
AXE_AIRSLASH = new AirSlashAnimation(0.1F, 0.3F, 0.4F, 0.65F, null, biped.toolR, "biped/combat/axe_airslash", biped);
SWORD_MOUNT_ATTACK = new MountAttackAnimation(0.16F, 0.1F, 0.2F, 0.25F, 0.7F, null, biped.toolR, "biped/combat/sword_mount_attack", biped);
SPEAR_MOUNT_ATTACK = new MountAttackAnimation(0.16F, 0.38F, 0.38F, 0.45F, 0.8F, null, biped.toolR, "biped/combat/spear_mount_attack", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_ONEHAND1 = new AttackAnimation(0.08F, 0.45F, 0.55F, 0.66F, 0.95F, null, biped.toolR, "biped/combat/mob_onehand1", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_ONEHAND2 = new AttackAnimation(0.08F, 0.45F, 0.5F, 0.61F, 0.95F, null, biped.toolR, "biped/combat/mob_onehand2", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_GREATSWORD = new AttackAnimation(0.15F, 0.45F, 0.85F, 0.95F, 2.2F, null, biped.toolR, "biped/combat/mob_greatsword1", biped)
.addProperty(AttackPhaseProperty.STUN_TYPE, StunType.KNOCKDOWN)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_TACHI = new AttackAnimation(0.15F, 0.15F, 0.25F, 0.35F, 1.0F, null, biped.toolR, "biped/combat/mob_tachi_special", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_SPEAR_ONEHAND = new AttackAnimation(0.15F, 0.15F, 0.4F, 0.5F, 1.1F, null, biped.toolR, "biped/combat/mob_spear_onehand", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_SPEAR_TWOHAND1 = new AttackAnimation(0.15F, 0.15F, 0.4F, 0.5F, 1.0F, null, biped.toolR, "biped/combat/mob_spear_twohand1", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_SPEAR_TWOHAND2 = new AttackAnimation(0.15F, 0.15F, 0.4F, 0.5F, 1.0F, null, biped.toolR, "biped/combat/mob_spear_twohand2", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_SPEAR_TWOHAND3 = new AttackAnimation(0.15F, 0.15F, 0.4F, 0.5F, 1.0F, null, biped.toolR, "biped/combat/mob_spear_twohand3", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_SWORD_DUAL1 = new AttackAnimation(0.1F, "biped/combat/mob_sword_dual1", biped,
new Phase(0.0F, 0.35F, 0.4F, 0.5F, 0.55F, 0.55F, InteractionHand.OFF_HAND, biped.toolL, null), new Phase(0.55F, 0.55F, 0.65F, 0.75F, 1.15F, Float.MAX_VALUE, biped.toolR, null))
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_SWORD_DUAL2 = new AttackAnimation(0.1F, "biped/combat/mob_sword_dual2", biped,
new Phase(0.0F, 0.3F, 0.3F, 0.45F, 0.55F, 0.55F, InteractionHand.OFF_HAND, biped.toolL, null), new Phase(0.55F, 0.55F, 0.65F, 0.75F, 1.15F, Float.MAX_VALUE, biped.toolR, null))
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_SWORD_DUAL3 = new AttackAnimation(0.1F, 0.25F, 0.85F, 0.95F, 1.4F, null, biped.toolR, "biped/combat/mob_sword_dual3", biped)
.addProperty(ActionAnimationProperty.MOVE_VERTICAL, true);
BIPED_MOB_LONGSWORD1 = new AttackAnimation(0.15F, "biped/combat/mob_longsword1", biped,
new Phase(0.0F, 0.15F, 0.25F, 0.35F, 0.45F, 0.65F, biped.toolR, null), new Phase(0.65F, 0.85F, 1.0F, 1.1F, 1.55F, Float.MAX_VALUE, biped.toolR, null))
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_LONGSWORD2 = new AttackAnimation(0.25F, 0.3F, 0.45F, 0.55F, 1.0F, null, biped.toolR, "biped/combat/mob_longsword2", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_UCHIGATANA1 = new AttackAnimation(0.05F, 0.3F, 0.2F, 0.3F, 0.7F, null, biped.toolR, "biped/combat/mob_uchigatana1", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_UCHIGATANA2 = new AttackAnimation(0.15F, 0.01F, 0.01F, 0.1F, 0.55F, null, biped.toolR, "biped/combat/mob_uchigatana2", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_UCHIGATANA3 = new AttackAnimation(0.15F, 0.01F, 0.1F, 0.2F, 0.7F, null, biped.toolR, "biped/combat/mob_uchigatana3", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_DAGGER_ONEHAND1 = new AttackAnimation(0.1F, 0.05F, 0.15F, 0.25F, 0.4F, null, biped.toolR, "biped/combat/mob_dagger_onehand1", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_DAGGER_ONEHAND2 = new AttackAnimation(0.1F, 0.05F, 0.01F, 0.1F, 0.45F, null, biped.toolR, "biped/combat/mob_dagger_onehand2", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_DAGGER_ONEHAND3 = new AttackAnimation(0.1F, 0.3F, 0.5F, 0.6F, 0.9F, null, biped.toolR, "biped/combat/mob_dagger_onehand3", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_DAGGER_TWOHAND1 = new AttackAnimation(0.15F, "biped/combat/mob_dagger_twohand1", biped,
new Phase(0.0F, 0.0F, 0.05F, 0.15F, 0.3F, 0.3F, biped.toolR, null), new Phase(0.3F, 0.3F, 0.3F, 0.4F, 0.5F, 0.5F, InteractionHand.OFF_HAND, biped.toolL, null)
,new Phase(0.5F, 0.5F, 0.55F, 0.65F, 1.0F, Float.MAX_VALUE, biped.toolR, null))
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_DAGGER_TWOHAND2 = new AttackAnimation(0.1F, 0.25F, 0.75F, 0.85F, 1.0F, null, biped.toolR, "biped/combat/mob_dagger_twohand2", biped)
.addProperty(StaticAnimationProperty.POSE_MODIFIER, Animations.ReusableSources.COMBO_ATTACK_DIRECTION_MODIFIER);
BIPED_MOB_THROW = new RangedAttackAnimation(0.11F, 0.1F, 0.45F, 0.49F, 0.95F, null, biped.rootJoint, "biped/combat/mob_throw", biped);
SWORD_GUARD_HIT = new GuardAnimation(0.05F, "biped/skill/guard_sword_hit", biped);
SWORD_GUARD_ACTIVE_HIT1 = new GuardAnimation(0.05F, 0.2F, "biped/skill/guard_sword_hit_active1", biped);
SWORD_GUARD_ACTIVE_HIT2 = new GuardAnimation(0.05F, 0.2F, "biped/skill/guard_sword_hit_active2", biped);
SWORD_GUARD_ACTIVE_HIT3 = new GuardAnimation(0.05F, 0.2F, "biped/skill/guard_sword_hit_active3", biped);
LONGSWORD_GUARD_ACTIVE_HIT1 = new GuardAnimation(0.05F, 0.2F, "biped/skill/guard_longsword_hit_active1", biped);
LONGSWORD_GUARD_ACTIVE_HIT2 = new GuardAnimation(0.05F, 0.2F, "biped/skill/guard_longsword_hit_active2", biped);
SWORD_DUAL_GUARD_HIT = new GuardAnimation(0.05F, "biped/skill/guard_dualsword_hit", biped);
BIPED_COMMON_NEUTRALIZED = new LongHitAnimation(0.05F, "biped/skill/guard_break1", biped);
GREATSWORD_GUARD_BREAK = new LongHitAnimation(0.05F, "biped/skill/guard_break2", biped);
LONGSWORD_GUARD_HIT = new GuardAnimation(0.05F, "biped/skill/guard_longsword_hit", biped);
SPEAR_GUARD_HIT = new GuardAnimation(0.05F, "biped/skill/guard_spear_hit", biped);
GREATSWORD_GUARD_HIT = new GuardAnimation(0.05F, "biped/skill/guard_greatsword_hit", biped);
UCHIGATANA_GUARD_HIT = new GuardAnimation(0.05F, "biped/skill/guard_uchigatana_hit", biped);
METEOR_SLAM = new AttackAnimation(0.05F, 0.0F, 0.2F, 0.3F, 1.0F, ColliderPreset.GREATSWORD, biped.toolR, "biped/skill/greatsword_slam", biped)
.addProperty(AttackPhaseProperty.SWING_SOUND, EpicFightSounds.NO_SOUND)
.addProperty(ActionAnimationProperty.MOVE_ON_LINK, false)
.addProperty(ActionAnimationProperty.STOP_MOVEMENT, true)
.addProperty(ActionAnimationProperty.COORD_SET_BEGIN, (self, entitypatch, transformSheet) -> {
HitResult hitResult = entitypatch.getOriginal().pick(50.0D, 1.0F, false);
Vec3 to = hitResult.getLocation();
Vec3 from = entitypatch.getOriginal().position();
Vec3 correction = to.subtract(from).normalize().scale(2.0D);
TransformSheet correctedCoord = self.getCoord().getCorrectedModelCoord(entitypatch, from, to.add(correction), 0, 2);