![]()

Entity Model Features (EMF) is a Fabric, Forge, & NeoForge mod that adds support for OptiFine's Custom Entity Models (CEM).
designed for anyone who wants to use CEM resource pack features but also use OptiFine alternative mods such as Sodium, Continuity or ETF.
Please also install the below mods if you can, the obvious ones such as Sodium are not mentioned.
It should also go without saying EMF is NOT compatible with dorianpb's CEM and OptiFine / OptiFabric.
Yes.
it works :)

Up-to-date feature details page : Features & Optifine differences
You can find the changelog here.
You can reach out on my Discord (preferred) or open an issue on GitHub.
Required
Unsupported
Terms for using, modifying and redistributing this product.
24.06.2026 · Modrinth
Screenshots and images from the original Modrinth page.








![[EMF] Entity Model Features](https://i.imgur.com/vU8pcbf.png)
![[EMF] Entity Model Features](https://i.imgur.com/rpoyjVG.png)
![[EMF] Entity Model Features](https://i.imgur.com/VgKekoJ.png)
![[EMF] Entity Model Features](https://i.imgur.com/7fioiRx.png)
![[EMF] Entity Model Features](https://i.imgur.com/tiNmDIH.png)
![[EMF] Entity Model Features](https://i.imgur.com/EYNx6oL.png)
![[EMF] Entity Model Features](https://i.imgur.com/yar5K6v.png)
![[EMF] Entity Model Features](https://i.imgur.com/xdhWKwC.png)
![[EMF] Entity Model Features](https://cdn.modrinth.com/data/BVzZfTc1/images/bfb592538f8206a6a2d72d19c90714bea91b0e07.png)
![[EMF] Entity Model Features](https://cdn.modrinth.com/data/4I1XuqiY/images/49f5b98dfef5b073a3971750673d343e1f92efe5.png)
![[EMF] Entity Model Features](https://cdn.modrinth.com/data/4I1XuqiY/images/2f32dbeadc25e46ef6c56f0e47e5eb5d305c8ea2.png)
Published versions and original Modrinth files.
24.06.2026 · 984 446 downloads
23.06.2026 · 11 856 downloads
17.06.2026 · 346 787 downloads
26.2
17.06.2026 · 12 423 downloads
26.2
09.05.2026 · 46 491 downloads
09.05.2026 · 1 671 710 downloads
09.05.2026 · 4 548 downloads
09.05.2026 · 3 654 downloads
09.05.2026 · 96 406 downloads
09.05.2026 · 4 402 downloads
09.05.2026 · 2 275 downloads
09.05.2026 · 71 547 downloads
09.05.2026 · 1 350 downloads
09.05.2026 · 1 199 downloads
09.05.2026 · 42 932 downloads
09.05.2026 · 2 052 downloads
09.05.2026 · 3 724 downloads
09.05.2026 · 78 261 downloads
09.05.2026 · 647 downloads
09.05.2026 · 427 downloads
09.05.2026 · 5 563 downloads
09.05.2026 · 25 708 downloads
09.05.2026 · 15 967 downloads
09.05.2026 · 764 804 downloads
09.05.2026 · 16 341 downloads
09.05.2026 · 604 686 downloads
09.05.2026 · 611 641 downloads
09.05.2026 · 249 676 downloads
09.05.2026 · 1 100 857 downloads
09.05.2026 · 1 428 downloads
== or != operators09.05.2026 · 8 281 downloads
== or != operators09.05.2026 · 76 downloads
== or != operators09.05.2026 · 57 downloads
== or != operators09.05.2026 · 1 352 downloads
== or != operators09.05.2026 · 80 downloads
== or != operators09.05.2026 · 50 downloads
== or != operators09.05.2026 · 661 downloads
== or != operators09.05.2026 · 28 downloads
== or != operators09.05.2026 · 25 downloads
== or != operators09.05.2026 · 243 downloads
== or != operators09.05.2026 · 63 downloads
== or != operators09.05.2026 · 48 downloads
== or != operators09.05.2026 · 703 downloads
== or != operators09.05.2026 · 21 downloads
== or != operators09.05.2026 · 23 downloads
== or != operators09.05.2026 · 51 downloads
== or != operators09.05.2026 · 484 downloads
== or != operators09.05.2026 · 213 downloads
== or != operators09.05.2026 · 11 671 downloads
== or != operators09.05.2026 · 158 downloads
== or != operators09.05.2026 · 3 197 downloads
== or != operators09.05.2026 · 4 425 downloads
== or != operators09.05.2026 · 98 406 downloads
== or != operators09.05.2026 · 1 958 downloads
== or != operators27.04.2026 · 430 757 downloads
27.04.2026 · 8 774 downloads
27.04.2026 · 170 590 downloads
27.04.2026 · 3 558 downloads
27.04.2026 · 2 342 downloads
27.04.2026 · 18 171 downloads
27.04.2026 · 536 downloads
27.04.2026 · 427 downloads
27.04.2026 · 20 818 downloads
27.04.2026 · 562 downloads
27.04.2026 · 321 downloads
27.04.2026 · 4 351 downloads
27.04.2026 · 165 downloads
27.04.2026 · 188 downloads
27.04.2026 · 9 410 downloads
27.04.2026 · 392 downloads
27.04.2026 · 280 downloads
27.04.2026 · 803 downloads
27.04.2026 · 74 downloads
27.04.2026 · 66 downloads
27.04.2026 · 53 147 downloads
27.04.2026 · 148 861 downloads
27.04.2026 · 2 030 downloads
27.04.2026 · 29 822 downloads
27.04.2026 · 314 493 downloads
27.04.2026 · 335 downloads
27.04.2026 · 568 downloads
27.04.2026 · 3 174 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 96 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 10 738 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 80 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 56 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 519 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 15 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 18 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 283 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 31 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 21 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 98 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 17 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 12 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 181 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 13 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 13 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 34 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 15 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 15 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 1 189 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 2 801 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 48 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 561 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF27.04.2026 · 1 081 downloads
EMFAnimationAPI, mods that use this API may need to update, like ESF17.04.2026 · 454 983 downloads
17.04.2026 · 3 848 downloads
17.04.2026 · 286 220 downloads
17.04.2026 · 2 942 downloads
17.04.2026 · 2 123 downloads
17.04.2026 · 23 594 downloads
17.04.2026 · 502 downloads
17.04.2026 · 577 downloads
17.04.2026 · 10 788 downloads
17.04.2026 · 494 downloads
17.04.2026 · 309 downloads
17.04.2026 · 3 553 downloads
17.04.2026 · 176 downloads
17.04.2026 · 193 downloads
17.04.2026 · 8 123 downloads
17.04.2026 · 385 downloads
17.04.2026 · 332 downloads
17.04.2026 · 716 downloads
17.04.2026 · 95 downloads
17.04.2026 · 105 downloads
17.04.2026 · 58 751 downloads
17.04.2026 · 245 783 downloads
17.04.2026 · 2 138 downloads
17.04.2026 · 24 807 downloads
17.04.2026 · 74 030 downloads
15.04.2026 · 30 432 downloads
15.04.2026 · 797 downloads
15.04.2026 · 47 963 downloads
15.04.2026 · 660 downloads
15.04.2026 · 717 downloads
15.04.2026 · 4 632 downloads
15.04.2026 · 89 downloads
15.04.2026 · 73 downloads
15.04.2026 · 2 731 downloads
15.04.2026 · 81 downloads
15.04.2026 · 58 downloads
15.04.2026 · 819 downloads
15.04.2026 · 34 downloads
15.04.2026 · 31 downloads
15.04.2026 · 1 829 downloads
15.04.2026 · 59 downloads
15.04.2026 · 89 downloads
15.04.2026 · 136 downloads
15.04.2026 · 18 downloads
15.04.2026 · 21 downloads
15.04.2026 · 8 614 downloads
15.04.2026 · 6 873 downloads
15.04.2026 · 349 downloads
15.04.2026 · 5 588 downloads
15.04.2026 · 13 593 downloads
15.04.2026 · 300 downloads
15.04.2026 · 417 downloads
28.03.2026 · 556 040 downloads
28.03.2026 · 12 523 downloads
28.03.2026 · 643 549 downloads
28.03.2026 · 6 696 downloads
28.03.2026 · 5 476 downloads
28.03.2026 · 46 736 downloads
28.03.2026 · 1 128 downloads
28.03.2026 · 1 216 downloads
28.03.2026 · 27 525 downloads
28.03.2026 · 1 187 downloads
28.03.2026 · 826 downloads
28.03.2026 · 8 276 downloads
28.03.2026 · 380 downloads
28.03.2026 · 418 downloads
28.03.2026 · 18 227 downloads
28.03.2026 · 1 019 downloads
28.03.2026 · 689 downloads
28.03.2026 · 1 580 downloads
28.03.2026 · 160 downloads
28.03.2026 · 146 downloads
28.03.2026 · 931 994 downloads
28.03.2026 · 91 264 downloads
28.03.2026 · 3 573 downloads
28.03.2026 · 24 539 downloads
28.03.2026 · 495 downloads
28.03.2026 · 1 229 downloads
28.03.2026 · 22 508 downloads
28.03.2026 · 977 downloads
28.03.2026 · 1 883 downloads
28.03.2026 · 4 745 downloads
28.03.2026 · 164 downloads
28.03.2026 · 994 downloads
28.03.2026 · 68 235 downloads
28.03.2026 · 436 344 downloads
28.03.2026 · 7 355 downloads
28.03.2026 · 82 downloads
28.03.2026 · 12 885 downloads
28.03.2026 · 269 downloads
28.03.2026 · 174 downloads
28.03.2026 · 1 556 downloads
28.03.2026 · 44 downloads
28.03.2026 · 40 downloads
28.03.2026 · 961 downloads
28.03.2026 · 52 downloads
28.03.2026 · 25 downloads
28.03.2026 · 237 downloads
28.03.2026 · 16 downloads
28.03.2026 · 17 downloads
28.03.2026 · 685 downloads
28.03.2026 · 37 downloads
28.03.2026 · 36 downloads
28.03.2026 · 47 downloads
28.03.2026 · 9 downloads
28.03.2026 · 12 downloads
28.03.2026 · 2 034 downloads
28.03.2026 · 1 435 downloads
28.03.2026 · 101 downloads
28.03.2026 · 34 downloads
28.03.2026 · 11 downloads
28.03.2026 · 20 downloads
28.03.2026 · 112 downloads
28.03.2026 · 12 downloads
28.03.2026 · 22 downloads
28.03.2026 · 38 downloads
28.03.2026 · 9 downloads
28.03.2026 · 15 downloads
28.03.2026 · 1 488 downloads
28.03.2026 · 3 336 downloads
26.03.2026 · 28 033 downloads
26.03.2026 · 231 downloads
26.03.2026 · 40 539 downloads
26.03.2026 · 790 downloads
26.03.2026 · 564 downloads
26.03.2026 · 8 615 downloads
26.03.2026 · 113 downloads
26.03.2026 · 103 downloads
26.03.2026 · 2 574 downloads
26.03.2026 · 188 downloads
26.03.2026 · 51 downloads
26.03.2026 · 916 downloads
26.03.2026 · 43 downloads
26.03.2026 · 43 downloads
26.03.2026 · 2 128 downloads
26.03.2026 · 79 downloads
26.03.2026 · 63 downloads
26.03.2026 · 168 downloads
26.03.2026 · 16 downloads
26.03.2026 · 20 downloads
26.03.2026 · 10 038 downloads
26.03.2026 · 7 992 downloads
26.03.2026 · 264 downloads
26.03.2026 · 92 downloads
26.03.2026 · 17 downloads
26.03.2026 · 24 downloads
26.03.2026 · 428 downloads
26.03.2026 · 25 downloads
26.03.2026 · 36 downloads
26.03.2026 · 76 downloads
26.03.2026 · 17 downloads
26.03.2026 · 25 downloads
26.03.2026 · 6 128 downloads
26.03.2026 · 18 284 downloads
25.03.2026 · 452 downloads
25.03.2026 · 69 478 downloads
25.03.2026 · 3 038 downloads
[3.0.13]
- 26.1 support for fabric and forge (note baby models changed significantly)
- fixed an issue with the animation variable api
- bumped the animation api version
- fixed shoulder parrots not animating in 1.21.9+
- fixed boat water patch models not animating in 1.21.9+
- fixed horse saddle OptiFine part names on 1.21.5+
- fixed the ifb() function causing a stack overflow
25.03.2026 · 22 027 downloads
[3.0.13]
- 26.1 support for fabric and forge (note baby models changed significantly)
- fixed an issue with the animation variable api
- bumped the animation api version
- fixed shoulder parrots not animating in 1.21.9+
- fixed boat water patch models not animating in 1.21.9+
- fixed horse saddle OptiFine part names on 1.21.5+
- fixed the ifb() function causing a stack overflow
19.02.2026 · 1 326 338 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 38 687 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 20 268 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 154 758 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 2 998 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 2 963 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 65 906 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 3 303 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 1 742 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 46 608 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 799 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 932 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 50 221 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 1 548 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 1 351 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 4 495 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 352 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 393 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 765 031 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 145 349 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 6 975 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 3 168 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 204 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 443 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 10 820 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 423 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 732 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 2 182 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 75 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 324 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 532 250 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)19.02.2026 · 479 708 downloads
is_on_shoulder in 1.21.9+body not working correctly (fresh animations also needs to update for this fix)31.01.2026 · 840 215 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 17 539 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 13 077 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 103 351 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 2 068 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 2 570 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 49 915 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 1 386 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 1 521 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 18 983 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 533 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 670 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 32 842 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 1 834 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 1 109 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 2 363 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 240 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 340 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 426 929 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 105 751 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 4 615 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 1 399 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 175 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 351 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 7 100 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 169 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 561 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 1 001 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 56 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 202 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 72 789 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.01.2026 · 212 880 downloads
OptiFine 1.21.11_HD_U_J9_pre2parrot_shoulder modeldragon_fireball with only a single part fireball (EMF ONLY)31.12.2025 · 1 962 759 downloads
31.12.2025 · 28 469 downloads
31.12.2025 · 19 975 downloads
31.12.2025 · 326 698 downloads
31.12.2025 · 4 461 downloads
31.12.2025 · 5 826 downloads
31.12.2025 · 95 194 downloads
31.12.2025 · 2 841 downloads
31.12.2025 · 2 995 downloads
31.12.2025 · 60 027 downloads
31.12.2025 · 940 downloads
31.12.2025 · 1 236 downloads
31.12.2025 · 69 088 downloads
31.12.2025 · 1 928 downloads
31.12.2025 · 1 921 downloads
31.12.2025 · 4 520 downloads
31.12.2025 · 389 downloads
31.12.2025 · 518 downloads
31.12.2025 · 1 958 838 downloads
31.12.2025 · 242 600 downloads
31.12.2025 · 8 035 downloads
31.12.2025 · 2 777 downloads
31.12.2025 · 329 downloads
31.12.2025 · 544 downloads
31.12.2025 · 14 712 downloads
31.12.2025 · 301 downloads
31.12.2025 · 897 downloads
31.12.2025 · 1 940 downloads
31.12.2025 · 68 downloads
31.12.2025 · 358 downloads
31.12.2025 · 231 459 downloads
31.12.2025 · 671 897 downloads
30.12.2025 · 35 141 downloads
30.12.2025 · 1 008 downloads
30.12.2025 · 675 downloads
30.12.2025 · 13 011 downloads
30.12.2025 · 239 downloads
30.12.2025 · 272 downloads
30.12.2025 · 6 566 downloads
30.12.2025 · 141 downloads
30.12.2025 · 139 downloads
30.12.2025 · 2 206 downloads
30.12.2025 · 61 downloads
30.12.2025 · 60 downloads
30.12.2025 · 2 816 downloads
30.12.2025 · 90 downloads
30.12.2025 · 99 downloads
30.12.2025 · 207 downloads
30.12.2025 · 42 downloads
30.12.2025 · 26 downloads
30.12.2025 · 8 289 downloads
30.12.2025 · 4 344 downloads
30.12.2025 · 280 downloads
30.12.2025 · 154 downloads
30.12.2025 · 31 downloads
30.12.2025 · 47 downloads
30.12.2025 · 412 downloads
30.12.2025 · 26 downloads
30.12.2025 · 59 downloads
30.12.2025 · 80 downloads
30.12.2025 · 20 downloads
30.12.2025 · 30 downloads
30.12.2025 · 4 330 downloads
30.12.2025 · 42 349 downloads
16.12.2025 · 629 834 downloads
16.12.2025 · 7 897 downloads
25.11.2025 · 862 002 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 13 560 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 13 211 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 182 323 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 3 255 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 3 549 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 51 599 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 1 170 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 1 345 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 60 951 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 2 003 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 2 048 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 4 813 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 228 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 313 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 2 142 390 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 205 185 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 7 427 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 2 760 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 199 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 466 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 10 723 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 272 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 817 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 3 138 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 78 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 368 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 200 268 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+25.11.2025 · 2 869 810 downloads
registerPauseCondition(Function<EMFEntity, Boolean> shouldPause) to the EMFAnimationApi to better allow other mods to add their own pause conditions for entities rather than mixing in like EmoteCraft didprevent first person hand animations player setting not working correctly in 1.21.9+21.11.2025 · 74 628 downloads
random()s behaviour exactly to optifine21.11.2025 · 2 053 downloads
random()s behaviour exactly to optifine21.11.2025 · 2 020 downloads
random()s behaviour exactly to optifine21.11.2025 · 29 828 downloads
random()s behaviour exactly to optifine21.11.2025 · 602 downloads
random()s behaviour exactly to optifine21.11.2025 · 621 downloads
random()s behaviour exactly to optifine21.11.2025 · 26 544 downloads
random()s behaviour exactly to optifine21.11.2025 · 177 downloads
random()s behaviour exactly to optifine21.11.2025 · 228 downloads
random()s behaviour exactly to optifine21.11.2025 · 10 499 downloads
random()s behaviour exactly to optifine21.11.2025 · 446 downloads
random()s behaviour exactly to optifine21.11.2025 · 309 downloads
random()s behaviour exactly to optifine21.11.2025 · 1 786 downloads
random()s behaviour exactly to optifine21.11.2025 · 61 downloads
random()s behaviour exactly to optifine21.11.2025 · 75 downloads
random()s behaviour exactly to optifine21.11.2025 · 179 829 downloads
random()s behaviour exactly to optifine21.11.2025 · 31 273 downloads
random()s behaviour exactly to optifine21.11.2025 · 1 006 downloads
random()s behaviour exactly to optifine21.11.2025 · 373 downloads
random()s behaviour exactly to optifine21.11.2025 · 46 downloads
random()s behaviour exactly to optifine21.11.2025 · 68 downloads
random()s behaviour exactly to optifine21.11.2025 · 1 659 downloads
random()s behaviour exactly to optifine21.11.2025 · 45 downloads
random()s behaviour exactly to optifine21.11.2025 · 124 downloads
random()s behaviour exactly to optifine21.11.2025 · 293 downloads
random()s behaviour exactly to optifine21.11.2025 · 30 downloads
random()s behaviour exactly to optifine21.11.2025 · 67 downloads
random()s behaviour exactly to optifine21.11.2025 · 17 799 downloads
random()s behaviour exactly to optifine21.11.2025 · 38 434 downloads
random()s behaviour exactly to optifine04.11.2025 · 602 510 downloads
print() & printb() functions that only accept 1 argument and print every frame with the id being the argument itself04.11.2025 · 7 095 downloads
print() & printb() functions that only accept 1 argument and print every frame with the id being the argument itself04.11.2025 · 6 489 downloads
print() & printb() functions that only accept 1 argument and print every frame with the id being the argument itself24.10.2025 · 20 116 downloads
24.10.2025 · 5 080 downloads
22.10.2025 · 459 452 downloads
22.10.2025 · 5 501 downloads
22.10.2025 · 3 292 downloads
07.10.2025 · 406 180 downloads
07.10.2025 · 3 539 downloads
07.10.2025 · 3 580 downloads
24.08.2025 · 1 535 458 downloads
24.08.2025 · 27 204 downloads
24.08.2025 · 22 674 downloads
24.08.2025 · 245 866 downloads
24.08.2025 · 2 459 downloads
24.08.2025 · 3 769 downloads
24.08.2025 · 177 537 downloads
24.08.2025 · 6 000 downloads
24.08.2025 · 5 213 downloads
24.08.2025 · 10 874 downloads
24.08.2025 · 541 downloads
24.08.2025 · 777 downloads
24.08.2025 · 1 095 577 downloads
24.08.2025 · 245 282 downloads
24.08.2025 · 14 672 downloads
24.08.2025 · 5 856 downloads
24.08.2025 · 487 downloads
24.08.2025 · 892 downloads
24.08.2025 · 22 789 downloads
24.08.2025 · 582 downloads
24.08.2025 · 1 624 downloads
24.08.2025 · 4 286 downloads
24.08.2025 · 128 downloads
24.08.2025 · 722 downloads
24.08.2025 · 1 717 349 downloads
24.08.2025 · 1 216 077 downloads
24.08.2025 · 3 661 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 200 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 394 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 834 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 134 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 54 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 964 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 69 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 102 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 102 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 38 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 57 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 1 823 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 822 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 141 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 57 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 34 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 43 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 130 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 42 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 52 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 48 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 39 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 49 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 1 208 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine24.08.2025 · 3 338 downloads
sheep_wool_undercoat, sheep_baby_wool_undercoat, (all the horse types)_saddlemouth.ty resolved to classic_mouth.ty)baby_wolf_collar.jemcold_ and warm_ variants they will not fall back to the base model any moretemperate_cow.jem as an optional override to cow.jem on 1.21.5+ to allow pack makers an easier time managing the different versions models, also applies to pigs and chickensmirrorTexture field like optifine18.06.2025 · 1 769 320 downloads
wolf_baby_collar.jem18.06.2025 · 30 840 downloads
wolf_baby_collar.jem18.06.2025 · 556 014 downloads
wolf_baby_collar.jem18.06.2025 · 6 898 downloads
wolf_baby_collar.jem18.06.2025 · 8 340 downloads
wolf_baby_collar.jem28.03.2025 · 1 654 664 downloads
warm_ and cold_ model variants for the new pigs, chickens, and cows, they will attempt to fallback to the old model if the new one is not presentcold_cow.jem also has right_horn and left_horn parts, all other model differences for the 3 mobs are done via cubes only, not new partsResourceLocationException log spam when attempting to find modded chest models28.03.2025 · 25 779 downloads
warm_ and cold_ model variants for the new pigs, chickens, and cows, they will attempt to fallback to the old model if the new one is not presentcold_cow.jem also has right_horn and left_horn parts, all other model differences for the 3 mobs are done via cubes only, not new partsResourceLocationException log spam when attempting to find modded chest models28.03.2025 · 21 904 downloads
warm_ and cold_ model variants for the new pigs, chickens, and cows, they will attempt to fallback to the old model if the new one is not presentcold_cow.jem also has right_horn and left_horn parts, all other model differences for the 3 mobs are done via cubes only, not new partsResourceLocationException log spam when attempting to find modded chest models22.03.2025 · 99 551 downloads
1.21.5-pre
18.12.2024 · 2 381 742 downloads
18.12.2024 · 36 278 downloads
18.12.2024 · 48 290 downloads
18.12.2024 · 117 893 downloads
18.12.2024 · 1 873 downloads
18.12.2024 · 3 813 downloads
18.12.2024 · 4 522 793 downloads
18.12.2024 · 784 689 downloads
18.12.2024 · 32 433 downloads
18.12.2024 · 29 421 downloads
18.12.2024 · 706 downloads
18.12.2024 · 2 212 downloads
18.12.2024 · 119 066 downloads
18.12.2024 · 2 029 downloads
18.12.2024 · 5 372 downloads
18.12.2024 · 14 837 downloads
18.12.2024 · 340 downloads
18.12.2024 · 3 075 downloads
18.12.2024 · 2 596 878 downloads
18.12.2024 · 6 613 910 downloads
17.12.2024 · 5 249 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 290 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 431 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 1 419 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 56 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 132 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 7 903 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 872 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 315 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 176 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 40 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 63 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 490 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 44 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 82 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 144 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 51 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 68 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 203 785 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer17.12.2024 · 28 571 downloads
helmet, chestplate, leggings, and boots partial armor model support. e.g. helmet.jem, each piece can be varied separately e.g. helmet.properties (1.21.2+ ONLY!, for now)drowned_outer.jem will vary with drowned.properties if drowned_outer.properties doesn't exist. (The latter is only possible via EMF as OptiFine will only use drowned.properties)\ to escape the ,, (, ), & \ characters, such as when needing a , in one of the inputs for nbt(). e.g. nbt(Test,text='this\, that')minecart model in 1.21.2+, they now correctly use it as a fallback onlymove_forward & move_strafing breaking for other entities in multiplayer12.12.2024 · 34 804 downloads
spectral_arrow model breaking in 1.21.3time, frame_counter, id, and a few other variables to 2772012.12.2024 · 1 116 downloads
spectral_arrow model breaking in 1.21.3time, frame_counter, id, and a few other variables to 2772012.12.2024 · 1 006 downloads
spectral_arrow model breaking in 1.21.3time, frame_counter, id, and a few other variables to 2772020.11.2024 · 86 570 downloads
14.11.2024 · 166 958 downloads
[2.3.0]
- the remaining 1.21.3 changes should be fairly "stable" now and are unlikely to have significant changes going forwards, likely only semantic ones as OptiFine develops
- improved how EMF exports default models, they will now look much prettier in blockbench due to various semantic only changes
- fixed baby and other model scaling issues in previous 1.21.3 builds, baby models with certain custom animations, using the old offsets, are still broken and need pack makers to update their packs
- updated model & part names, see the emf > models > all models settings in game for the most detailed and accurate list of all model & part names
- dragon - "neck1 - neck5" and "tail1 - tail12", replacing "spine"
- bogged - same as skeleton + "mushrooms" part
- bogged_outer - same as stray_outer
- armadillo - see in-game model settings screen for parts list
- end_crystal - "inner_glass" and "outer_glass" replacing "glass"
- arrow - "back, cross_1, cross_2"
- spectral_arrow - "back, cross_1, cross_2"
- bee_stinger - "cross_1, cross_2"
- player_cape - "cape"
- player_ears - "left_ear" and "right_ear"
- player_slim - will now fallback to player.jem if not present
- salmon_large - falls back to "salmon"
- salmon_small - falls back to "salmon"
- breeze_wind_charge - same as "wind_charge"
- boat models now use the naming convention _ e.g. "oak_boat" and "oak_chest_boat" and fallback to the old model names e.g. "boat" and "chest_boat"
- raft and boat models no longer contain the "water_patch" part themselves, this is now a separate model
- water_patch - "water_patch" also supports boat type variants e.g. "oak_water_patch"
- minecraft models now all fallback to the default minecart model
- chest_large - has been split into "chest_left" and "chest_right" models, same for trapped_chests. EMF will retain legacy support for the old model name for the time being
- wall_sign - falls back to the "sign" model and doesn't have the "stick" part
- sign, wall_sign, and hanging_sign - all support wood types in the model name e.g. "oak_sign" and "oak_wall_sign" that will fall back to the generic model
- there may be several more minor changes, see the in-game emf > models > all models settings screen for the most accurate and complete list
- added legacy model fallbacks book, evocation_illager, evocation_fangs, and vindication_illager
- many other minor tweaks and fixes
14.11.2024 · 3 415 downloads
[2.3.0]
- the remaining 1.21.3 changes should be fairly "stable" now and are unlikely to have significant changes going forwards, likely only semantic ones as OptiFine develops
- improved how EMF exports default models, they will now look much prettier in blockbench due to various semantic only changes
- fixed baby and other model scaling issues in previous 1.21.3 builds, baby models with certain custom animations, using the old offsets, are still broken and need pack makers to update their packs
- updated model & part names, see the emf > models > all models settings in game for the most detailed and accurate list of all model & part names
- dragon - "neck1 - neck5" and "tail1 - tail12", replacing "spine"
- bogged - same as skeleton + "mushrooms" part
- bogged_outer - same as stray_outer
- armadillo - see in-game model settings screen for parts list
- end_crystal - "inner_glass" and "outer_glass" replacing "glass"
- arrow - "back, cross_1, cross_2"
- spectral_arrow - "back, cross_1, cross_2"
- bee_stinger - "cross_1, cross_2"
- player_cape - "cape"
- player_ears - "left_ear" and "right_ear"
- player_slim - will now fallback to player.jem if not present
- salmon_large - falls back to "salmon"
- salmon_small - falls back to "salmon"
- breeze_wind_charge - same as "wind_charge"
- boat models now use the naming convention _ e.g. "oak_boat" and "oak_chest_boat" and fallback to the old model names e.g. "boat" and "chest_boat"
- raft and boat models no longer contain the "water_patch" part themselves, this is now a separate model
- water_patch - "water_patch" also supports boat type variants e.g. "oak_water_patch"
- minecraft models now all fallback to the default minecart model
- chest_large - has been split into "chest_left" and "chest_right" models, same for trapped_chests. EMF will retain legacy support for the old model name for the time being
- wall_sign - falls back to the "sign" model and doesn't have the "stick" part
- sign, wall_sign, and hanging_sign - all support wood types in the model name e.g. "oak_sign" and "oak_wall_sign" that will fall back to the generic model
- there may be several more minor changes, see the in-game emf > models > all models settings screen for the most accurate and complete list
- added legacy model fallbacks book, evocation_illager, evocation_fangs, and vindication_illager
- many other minor tweaks and fixes
14.11.2024 · 2 156 downloads
[2.3.0]
- the remaining 1.21.3 changes should be fairly "stable" now and are unlikely to have significant changes going forwards, likely only semantic ones as OptiFine develops
- improved how EMF exports default models, they will now look much prettier in blockbench due to various semantic only changes
- fixed baby and other model scaling issues in previous 1.21.3 builds, baby models with certain custom animations, using the old offsets, are still broken and need pack makers to update their packs
- updated model & part names, see the emf > models > all models settings in game for the most detailed and accurate list of all model & part names
- dragon - "neck1 - neck5" and "tail1 - tail12", replacing "spine"
- bogged - same as skeleton + "mushrooms" part
- bogged_outer - same as stray_outer
- armadillo - see in-game model settings screen for parts list
- end_crystal - "inner_glass" and "outer_glass" replacing "glass"
- arrow - "back, cross_1, cross_2"
- spectral_arrow - "back, cross_1, cross_2"
- bee_stinger - "cross_1, cross_2"
- player_cape - "cape"
- player_ears - "left_ear" and "right_ear"
- player_slim - will now fallback to player.jem if not present
- salmon_large - falls back to "salmon"
- salmon_small - falls back to "salmon"
- breeze_wind_charge - same as "wind_charge"
- boat models now use the naming convention _ e.g. "oak_boat" and "oak_chest_boat" and fallback to the old model names e.g. "boat" and "chest_boat"
- raft and boat models no longer contain the "water_patch" part themselves, this is now a separate model
- water_patch - "water_patch" also supports boat type variants e.g. "oak_water_patch"
- minecraft models now all fallback to the default minecart model
- chest_large - has been split into "chest_left" and "chest_right" models, same for trapped_chests. EMF will retain legacy support for the old model name for the time being
- wall_sign - falls back to the "sign" model and doesn't have the "stick" part
- sign, wall_sign, and hanging_sign - all support wood types in the model name e.g. "oak_sign" and "oak_wall_sign" that will fall back to the generic model
- there may be several more minor changes, see the in-game emf > models > all models settings screen for the most accurate and complete list
- added legacy model fallbacks book, evocation_illager, evocation_fangs, and vindication_illager
- many other minor tweaks and fixes
26.10.2024 · 125 765 downloads
[2.2.7]
- updated to 1.21.2+
1.21.2+ has a large amount of internal entity rendering changes many of these changes will affect models, see my discord for a write-up I have done on the changes to expect and their impacts
or this link
https://github.com/Traben-0/Entity_Model_Features/blob/master/.github/1.21.2%2B%20%20changes.md
creaking_transient entity variant will try and use creaking_transient.jem first and will use creaking.jem otherwiseoak_boat.jem, oak_chest_boat.jem, and the rafts bamboo_raft.jem, bamboo_chest_raft.jemboat/oak.jembaby_inner_armor.jem and baby_outer_armor.jem have been added as fallbacks for the baby armor modelsplayer_cape.jem and arrow.jem have completely different implementations now, due to inclusion in vanilla renderingwind_charge part names updated to reflect changes in OptiFine26.10.2024 · 8 334 downloads
[2.2.7]
- updated to 1.21.2+
1.21.2+ has a large amount of internal entity rendering changes many of these changes will affect models, see my discord for a write-up I have done on the changes to expect and their impacts
or this link
https://github.com/Traben-0/Entity_Model_Features/blob/master/.github/1.21.2%2B%20%20changes.md
creaking_transient entity variant will try and use creaking_transient.jem first and will use creaking.jem otherwiseoak_boat.jem, oak_chest_boat.jem, and the rafts bamboo_raft.jem, bamboo_chest_raft.jemboat/oak.jembaby_inner_armor.jem and baby_outer_armor.jem have been added as fallbacks for the baby armor modelsplayer_cape.jem and arrow.jem have completely different implementations now, due to inclusion in vanilla renderingwind_charge part names updated to reflect changes in OptiFine14.09.2024 · 1 476 716 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 33 680 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 14 210 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 49 647 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 293 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 824 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 60 547 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 621 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 2 018 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 5 371 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 155 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 798 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 1 846 122 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".14.09.2024 · 1 189 374 downloads
./ & ~/ breaking from a recent changeint getCurrentEMFVariantOfModel(EntityModel<?>) returns the current variant of the model or -1 if the model is not a custom EMF model.boolean isModelAnimatedByEMF(EntityModel<?>) returns true if the model has custom EMF animations.boolean isModelCustomizedByEMF(EntityModel<?>) returns true if the model is a custom EMF model.boolean isModelPartCustomToEMF(ModelPart) returns true if this model part is an extraneous part added by EMF, and does not represent any actual normal vanilla parts.boolean isModelPartAnimatedByEMF(ModelPart) returns true if this model part itself is animated by EMF, e.g "modePart.rx":"sin(age)".12.09.2024 · 32 843 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 1 374 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 507 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 495 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 76 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 83 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 1 805 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 75 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 144 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 317 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 47 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 68 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 24 058 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.12.09.2024 · 6 637 downloads
floor UVs OptiFine parity setting in 1.21 and newer versions, as OptiFine now matches EMF's default behaviour.floor UVs setting in earlier versions.06.09.2024 · 126 247 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 1 321 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 1 461 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 2 414 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 88 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 134 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 3 848 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 119 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 247 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 506 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 72 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 117 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 52 310 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones06.09.2024 · 67 719 downloads
rot_y giving an incorrect value for specifically the client player modelpart keyword in animations not working correctly for OptiFine part names that differ from the vanilla ones03.09.2024 · 70 594 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 835 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 650 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 645 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 118 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 114 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 5 641 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 70 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 149 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 296 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 49 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 89 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 11 926 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem03.09.2024 · 37 214 downloads
part directly in animations such as this already doesframe_counter variable from the latest OptiFinewolf_collar to the model listframe_time match OptiFine's pausing and tick freeze behaviouroptifine/cem/mod:model.jem instead of mod:optifine/cem/model.jem29.08.2024 · 170 396 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 3 556 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 1 135 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 1 361 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 98 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 131 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 3 457 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 112 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 257 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 485 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 74 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 90 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 28 823 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive29.08.2024 · 47 986 downloads
wavey capes mod can now correctly overwrite it & essentials works with it nowoptifine/cem/skeleton/skeleton.jem now loads before optifine/cem/skeleton.jem matching optifine behaviouroptifine/cem/skeleton/skeleton.jem will not load without a optifine/cem/skeleton/skeleton2.jem or a valid .properties file.attach=true or vanilla partsthis being correctly resolved in animation mathis_aggressive20.08.2024 · 570 859 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 10 364 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 10 364 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 3 824 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 41 291 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 2 817 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 573 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 894 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 146 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 62 575 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 3 163 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 391 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 121 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
20.08.2024 · 325 downloads
[2.2]
- fixed forge 1.21 & 1.20.6 compat
- fixed issues when used with the Sodium 0.6 betas
- Added a setting to make EMF reset all the vanilla part transforms of player models well before every render.
- Only applies if custom models are present for the player.
- This is not the typical behaviour however with how many mods alter player animations
- this setting vastly reduces the difficulty of player animation compatibility between mods and animation packs.
- E.G. player emote mods.
- This compatibility still requires work on the pack makers end.
- added the nbt(key,test) boolean animation function it works exactly like the nbt random property such that models.1.SaddleItem=exits:false will be nbt(SaddleItem,exists:false)
- added boolean animation variable is_paused true when the game is paused
- added boolean animation variable is_hovered true when the client is looking at the entity or block entity position
- added an option in model debug settings to only render models in debug mode when the mob is hovered over
- added a setting to control whether EMF requires a 'base' model for model variation like OptiFine (e.g. pig2.jem requires a pig.jem to work). This setting is now enabled by default to promote backwards compatibility and prevent confusion.
- tweaked the keyframe() & keyframeloop() animation functions to use catmulrom spline interpolation for smooth transitions between keyframes, factoring in the previous and upcoming frames
- fixed villager clothing and profession textures failing to render when a texture override is set in the model
- fixed an issue with chest_large.jem due to how it has to be split into 2 half models in game, this removes the log spam about the missing left/right half and also somewhat fixes animations referring to the opposite side of the chest, you are still highly recommended to keep the left and right half animations separate. A config option has been enabled to toggle this fix in case of modded chest model conflicts.
- fixed slime_outer models removing translucency when using texture overrides
- fixed is_swinging_right_arm and is_swinging_left_arm
- added is_using_item true when any item is being used, usually you can detect which arm via is_swinging_right_arm and is_swinging_left_arm but this is not reliable for all item usages
- added is_holding_item_right and is_holding_item_left to detect if the entity is holding an item in the right or left hand, may not work for all entities that hold items, only tested with players
- added vex charging to is_aggressive variable and also made it potentially more consistent with modded mobs
- fixed variation for special secondary or backup models, like outer_armor.jem. or old directory modded models.
- fixed the print animation methods accidentally printing during pre-validation
- signs and boats now have optional override models, based on how vanilla separates every sign and boat variant into its own models, these are only identifiable by enabling model creation logging and seeing what they are called there, and if absent will fallback to the optifine defaults.
- improved the file name and location displays in the config list of all models
- added the emf 16x logo to the config gui to replace the full logo
- improvements to texture overrides, emf now strips redundant texture declarations to improve runtime efficiency (e.g. ignores pig.png declared in pig.jem as its redundant)
- fixed an issue with some entity animation values getting reset during entity feature layer rendering and not being restored correctly
04.07.2024 · 1 439 315 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 37 260 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 62 877 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 8 447 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 1 201 723 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 2 521 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 645 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 218 092 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 9 063 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 742 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 757 downloads
fixed a crash when holding certain entity renderers with custom models.
04.07.2024 · 1 615 downloads
fixed a crash when holding certain entity renderers with custom models.
03.07.2024 · 12 050 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 567 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 935 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 166 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 8 285 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 145 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 76 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 2 296 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 149 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 66 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 79 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 92 downloads
[2.1.2]
- fixed the player shadows not animating in first person with iris with custom player models
- fixed a crash when holding tridents, chests, and other custom entity models with texture overrides.
03.07.2024 · 3 036 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 364 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 633 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 143 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 2 235 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 101 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 57 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 1 028 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 105 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 55 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 55 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
03.07.2024 · 66 downloads
[2.1.1]
- now requires ETF 6.1.3 or newer
- added new EMFAnimationAPI methods to allow other mods to:
- pause/resume entire custom model animations for an entity
- pause/resume individual custom model parts from animations for an entity
- lock/unlock an entity to only use their vanilla models
- utility methods to cast Entity and BlockEntity into the EMFEntity interface
these will allow other mods to inhibit EMF animations and models for specific entities when required e.g. for emotes
- fixed EMF applying values to the last part with the given id as opposed to the first (OptiFine parity)
- fixed the scale model part default setting not correctly applying on mobs with new format animations like wardens & frogs
- fixed a crash when exporting models in 1.21
- fixed a not building crash in 1.21
- fixed the root part not appearing in model exports
- fixed a bug where item attachments could carry over to other mob renders
- fixed the ender dragon spine part not rendering when having a texture override
- the setting that allows EMF to disable EBE settings, when custom block entity models are loaded, now has a much more verbose and informative display in the EMF config warning screen
- fixed the modded model export log using the old modded directory format, the export log now also gives a full path for the jem starting from the assets folder
- model exports are now placed inside the emf/export/assets/ folder in the .minecraft directory with a fully correct and namespaced path starting from the assets folder
- fixed the vanilla banner model waving adding on top of EMF animations due to vanilla banners being rendered in multiple stages
- changed pi from 3.1415926 to 3.1415927 to match vanilla pi usage and seems to match OptiFine despite the docs
- changed various math methods such as sin() & cos() to no longer use java.lang.Math and instead use Minecraft internal math class
- the above 2 changes fixed vindicators in fa 1.9.1
- added support for inner_armor.jem & outer_armor.jem as fallbacks if an entity specific armor model is not found, e.g. zombie_inner_armor.jem & zombie_outer_armor.jem
- fixed some missing mobs support for the is_aggressive variable
- changed the height_above_ground variable to detect blocks with standable top surfaces not just solid blocks
- fixed a bug causing some block entity model texture overrides to appear in first person view in their iris shader shadow pass position
- added an optimization option that will skip recalculating entity model animations during the iris shadow pass, on by default, and should always stay on, it is only an option in case of future breaking iris api changes or weird behaviour with iris ports.
- fixed the trident model part declaring additional parts in the OptiFine mapping by accident, which could cause vanilla trident parts to re-appear in many custom trident models
14.06.2024 · 3 121 downloads
14.06.2024 · 9 418 downloads
12.06.2024 · 473 909 downloads
30.04.2024 · 370 372 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 371 255 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 41 559 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 2 114 961 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 64 967 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 93 459 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 44 160 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 2 847 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 800 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 428 478 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 27 985 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 2 130 406 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 377 651 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 1 592 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
30.04.2024 · 3 003 downloads
2.0.2
- fixed the first person hand settings not getting reset correctly in 2.0.1
- added the is_swinging_right_arm & is_swinging_left_arm boolean variables,
used to distinguish right and left arm swinging in biped models, if no arm is swinging both should be false, if swing_progress > 0 then one of these should be true.
- added support for an optional player_cape.jem model file to be used for better animating the player cape
player_cape.jem only contains a cloak part, positioned exactly as it is in the regular player.jem,
if this model is present it will render in a special way that will not apply the vanilla animations to the cape.
Allowing much easier custom animations
(note this jem file can not be exported by the EMF config, but the player.jem exported model will work perfectly for it, as of v2.0.2)
The only transforms EMF applies to player_cape.jem before rendering & custom animating is:
- rotating the cape 180 degrees around the y axis. (matching vanilla)
- translating the cape 2 pixels backwards. (matching vanilla)
- translating the cape a further 1 pixel backwards & upwards if the player has a chest-plate on. (matching vanilla)
No other rotations or translations are applied to the cape, allowing for fully custom animations.
The cloak part inside the regular player.jem will render if player_cape.jem is not present, but will not benefit from having its vanilla animation cancelled by EMF
29.04.2024 · 1 753 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 4 052 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 384 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 8 108 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 288 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 617 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 281 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 129 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 89 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 1 683 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 145 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 4 956 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 404 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 83 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose29.04.2024 · 103 downloads
is_first_person_hand variable to detect then the model part being rendered is the first person player handplayer settings category in the model settings guiis_sneaking variable not working correctly, should now line up with all models that have a sneaking pose19.04.2024 · 32 816 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 77 556 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 1 890 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 187 442 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 1 063 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 1 329 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 1 293 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 431 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 177 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 89 729 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 215 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 32 472 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 1 755 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 690 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities19.04.2024 · 416 downloads
missing texture texture if the texture wasn't found instead of not applyingifb() randomb() catch() animation functionsifb() is a boolean returning version of if() randomb() is a boolean returning version of random()catch(x, c, id) is a new debug function that will always return x unless it had an error in which case it will return c. id is optional and will make the function print the reason c was returned to the log with this id to identify the printoutis_jumping is_swimming is_gliding is_right_handed animation variablesmodelRule modelSuffix var varb global_var global_varb random propertiesadded a model display to the model list in the gui to see the model before exporting its .jem file
added attachment points
OptiFine 1.20.4_HD_U_I8_pre3distance is_blocking is_crawling height_above_ground fluid_depth fluid_depth_down fluid_depth_upcannot inherit from final class forge crash returning in v1.3.jem failed to load java.lang.NullPointerException: Cannot read the array length because "textureSize" is nullsizeAdd to the emf model exportingsizeAddX sizeAddY sizeAddZ, as opposed to just sizeAdd with OptiFine, for per axis model inflation. sizeAdd will still work as before, though will be overridden if the others are present.breeze, breeze_eyes, breeze_wind, wind_chargeassets/minecraft/optifine/cem/modded/<namespace>/<modelname>.jem to assets/<namespace>/optifine/cem/<modelname>.jememf/cem/ directory is also valid in these namespaces as well as the ability to put the <modelname>.jem file within a folder of the same name, such as cem/<modelname>/<modelname>.jem!between(....)0 when applied to a model part or variable (OptiFine parity)Animation math details which lists and explains all functions and variables registered to the animation math systemAll models which allows applying certain settings per .jem file as well as selectively disable the loading of certain modelsperformance settingsper entity settings category to allows applying certain settings to only those entities04.03.2024 · 304 018 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 44 458 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 491 383 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 6 246 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 9 597 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 5 279 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 1 627 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 458 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 139 767 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 5 479 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 126 500 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 11 831 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 2 810 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)04.03.2024 · 967 downloads
EMFAnimationApi which allows other mods to register their own custom animation variables and functions to EMFEMFAnimationApi FloatSupplier for simple number variables BooleanSupplier for simple boolean variablesEMFAnimationApiFunction<Float, Float> for simple functions witn 1 argumentBiFunction<Float, Float, Float> for simple functions with 2 argumentsTriFunction<Float, Float, Float, Float> for simple functions with 3 argumentsFunction<List<Float>, Float> for functions with a variable amount of arguments provided via a Listunknown model printing option to Model exporting and added options to export all models info to a .jem file or the log, not just the unknown / modded onesBlockbench ready with correct pivots, boxes, and uvs..minecraft/emf/export/is_on_head, is_in_hand & is_in_item_frame, which did nothing before"newstate" is null crashAnimation LOD distance setting which allows you to set the distance at which EMF will start skipping animation frames to save performanceRetain LOD at low fps setting which will proportionally reduce the impact of the above LOD setting while the game is running at below 60 fps, as skipped frames can become more noticeable at lower fpswolf_armor to the OptiFine name mappings[EMF]Wireframe over texture which renders both the wireframe and texture of a model together at the same timeWireframe flashing over texture which renders both the wireframe and texture of a model together at the same time but the wireframe fades in and out./, ~/ etcenhanced block entity (EBE) mod's config to disable it for block entities that have custom EMF models loadedleft_ear & right_ear to head_piglin.jem which seems to be correct but missing in OptiFine's documentation :/wrapdeg() wraprad() degdiff() raddiff()wrap functions will wrap a rotation value down to it's smallest identical value, e.g. wrapdeg(370) will return 10 & wrapdeg(350) will return -10diff functions will return the resulting difference between two rotation values factoring in the rotation, e.g. degdiff(10, 350) will return -20 & degdiff(10, 370) will return 0 catmullrom() quadbezier() cubicbezier() hermite() easeinoutexpo() easeinexpo() easeoutexpo() easeinoutcirc() easeincirc() easeoutcirc() easeinoutelastic() easeinelastic() easeoutelastic() easeinoutback() easeinback() easeoutback() easeinoutbounce() easeinbounce() easeoutbounce() easeinquad() easeoutquad() easeinoutquad() easeincubic() easeoutcubic() easeinoutcubic() easeinquart() easeoutquart() easeinoutquart() easeinquint() easeoutquint() easeinoutquint() easeinsine() easeoutsine() easeinoutsine()lerp() with the delta value being the first argument.e variable addedlootr mod's chest now tries to read modded/lootr/special_loot_chest.jem instead of conflicting with chest.jem)17.01.2024 · 175 812 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 35 106 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 389 799 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 3 828 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 50 571 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 1 037 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 1 067 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 375 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 96 381 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 2 156 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 244 078 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 2 975 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 1 201 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)17.01.2024 · 604 downloads
1.2.3
easein,easeout,easeinout,cubiceasein,cubiceaseout,cubiceaseinout. They function identically to lerp however offer different interpolation behavioursshadow_size in model.jem files should now applylayer is nullcannot inherit from final class crash caused by completely unrelated forge mods missing their dependencies.feet part of the new bat model to the optifine name mappings (might revert if optifine doesn't do this too)mob2.jem from loading correctly without a mob.jem (fixes reimagined's boats textures)31.12.2023 · 21 285 downloads
now works with and requires ETF 5.1+ including the same stability fixes
the in() animation method now allows 2 or more parameters, instead of the previous 3 or more (OptiFine parity)
31.12.2023 · 116 648 downloads
now works with and requires ETF 5.1+ including the same stability fixes
the in() animation method now allows 2 or more parameters, instead of the previous 3 or more (OptiFine parity)
31.12.2023 · 16 739 downloads
now works with and requires ETF 5.1+ including the same stability fixes
the in() animation method now allows 2 or more parameters, instead of the previous 3 or more (OptiFine parity)
31.12.2023 · 204 downloads
now works with and requires ETF 5.1+ including the same stability fixes
the in() animation method now allows 2 or more parameters, instead of the previous 3 or more (OptiFine parity)
31.12.2023 · 114 downloads
now works with and requires ETF 5.1+ including the same stability fixes
the in() animation method now allows 2 or more parameters, instead of the previous 3 or more (OptiFine parity)
29.12.2023 · 39 408 downloads
in() animation method now allows 2 or more parameters, instead of the previous 3 or more (OptiFine parity)29.12.2023 · 365 downloads
in() animation method now allows 2 or more parameters, instead of the previous 3 or more (OptiFine parity)29.12.2023 · 848 downloads
in() animation method now allows 2 or more parameters, instead of the previous 3 or more (OptiFine parity)12.12.2023 · 69 851 downloads
1.2 backport
07.12.2023 · 52 548 downloads
added an EMF only random property to make model variation easier in cases that do not typically need properties in ETF.
e.g. you don't need a property to check a cat variant in ETF because you are already working with the black cat texture directly.
the property name is variant or variants.
The property allows regex, pattern, or a simple list of variant names.
If the property starts with "print:" it will print the variant found for the entity to the game log, and use the rest of the property text as normal.
This property will work with any modded entity that implements the VariantHolder class and will use the string representation of the type, e.g. "black" for a cat, "oak" for a boat.
This property also works uniquely with these block entities:
signs (wood), bed (color), shulkerbox (color), Decorated pot (all 4 sherd face types).
For all other regular & block entities it returns the EntityType or BlockEntityType registry id. This allows for the
separation of different entity types that might use the same model name, such as various modded entities do.
added NeoForge 1.20.2 support, all prior versions will not have separate jars for forge and neoforge.
07.12.2023 · 30 243 downloads
added an EMF only random property to make model variation easier in cases that do not typically need properties in ETF.
e.g. you don't need a property to check a cat variant in ETF because you are already working with the black cat texture directly.
the property name is variant or variants.
The property allows regex, pattern, or a simple list of variant names.
If the property starts with "print:" it will print the variant found for the entity to the game log, and use the rest of the property text as normal.
This property will work with any modded entity that implements the VariantHolder class and will use the string representation of the type, e.g. "black" for a cat, "oak" for a boat.
This property also works uniquely with these block entities:
signs (wood), bed (color), shulkerbox (color), Decorated pot (all 4 sherd face types).
For all other regular & block entities it returns the EntityType or BlockEntityType registry id. This allows for the
separation of different entity types that might use the same model name, such as various modded entities do.
added NeoForge 1.20.2 support, all prior versions will not have separate jars for forge and neoforge.
07.12.2023 · 96 downloads
added an EMF only random property to make model variation easier in cases that do not typically need properties in ETF.
e.g. you don't need a property to check a cat variant in ETF because you are already working with the black cat texture directly.
the property name is variant or variants.
The property allows regex, pattern, or a simple list of variant names.
If the property starts with "print:" it will print the variant found for the entity to the game log, and use the rest of the property text as normal.
This property will work with any modded entity that implements the VariantHolder class and will use the string representation of the type, e.g. "black" for a cat, "oak" for a boat.
This property also works uniquely with these block entities:
signs (wood), bed (color), shulkerbox (color), Decorated pot (all 4 sherd face types).
For all other regular & block entities it returns the EntityType or BlockEntityType registry id. This allows for the
separation of different entity types that might use the same model name, such as various modded entities do.
added NeoForge 1.20.2 support, all prior versions will not have separate jars for forge and neoforge.
07.12.2023 · 572 downloads
added an EMF only random property to make model variation easier in cases that do not typically need properties in ETF.
e.g. you don't need a property to check a cat variant in ETF because you are already working with the black cat texture directly.
the property name is variant or variants.
The property allows regex, pattern, or a simple list of variant names.
If the property starts with "print:" it will print the variant found for the entity to the game log, and use the rest of the property text as normal.
This property will work with any modded entity that implements the VariantHolder class and will use the string representation of the type, e.g. "black" for a cat, "oak" for a boat.
This property also works uniquely with these block entities:
signs (wood), bed (color), shulkerbox (color), Decorated pot (all 4 sherd face types).
For all other regular & block entities it returns the EntityType or BlockEntityType registry id. This allows for the
separation of different entity types that might use the same model name, such as various modded entities do.
added NeoForge 1.20.2 support, all prior versions will not have separate jars for forge and neoforge.
06.12.2023 · 665 downloads
1.20.3 EMF builds for use with an ongoing ETF rewrite.
usually kept as dev builds downloadable only in my discord, this has been uploaded to the download pages so mod packs may access 1.20.3
full changelogs available in my discord and will accompany the full non beta release
04.11.2023 · 102 166 downloads
1.1.0
rule_index variable using the wrong valuerandom() method breaking when used with no argsNon [a-z0-9/._-] character in path crash with modded entities having model id's that do not create valid Identifiers/ResourceLocations! boolean inverting not applying to varb variable booleanskeyframe() & keyframeloop() animation methods to simplify keyframe format animations, the format is keyframe(k, a, b, c,...) with k being the linear progress of the keyframes (typically a timer), and all further values being the individual keyframes value.a,b, and k=1.5 will give a linear output halfway between b & c. In effect k is the timera being 0. keyframeloop() will wrap arounda and so on as k increases past the last frame. whereas keyframe() will only display the last frame for higher k values. k will be treated as a positive number even if negative.print() & printb() methods only printing once if the x value had logically resolved to a constantETF 4.6.1 or highernan variable that resolves to Float.NaN in runtime mostly for debugging purposes, it being used should make any math function/equation give its failure outcome.04.11.2023 · 391 803 downloads
1.1.0
rule_index variable using the wrong valuerandom() method breaking when used with no argsNon [a-z0-9/._-] character in path crash with modded entities having model id's that do not create valid Identifiers/ResourceLocations! boolean inverting not applying to varb variable booleanskeyframe() & keyframeloop() animation methods to simplify keyframe format animations, the format is keyframe(k, a, b, c,...) with k being the linear progress of the keyframes (typically a timer), and all further values being the individual keyframes value.a,b, and k=1.5 will give a linear output halfway between b & c. In effect k is the timera being 0. keyframeloop() will wrap arounda and so on as k increases past the last frame. whereas keyframe() will only display the last frame for higher k values. k will be treated as a positive number even if negative.print() & printb() methods only printing once if the x value had logically resolved to a constantETF 4.6.1 or highernan variable that resolves to Float.NaN in runtime mostly for debugging purposes, it being used should make any math function/equation give its failure outcome.04.11.2023 · 5 509 downloads
1.1.0
rule_index variable using the wrong valuerandom() method breaking when used with no argsNon [a-z0-9/._-] character in path crash with modded entities having model id's that do not create valid Identifiers/ResourceLocations! boolean inverting not applying to varb variable booleanskeyframe() & keyframeloop() animation methods to simplify keyframe format animations, the format is keyframe(k, a, b, c,...) with k being the linear progress of the keyframes (typically a timer), and all further values being the individual keyframes value.a,b, and k=1.5 will give a linear output halfway between b & c. In effect k is the timera being 0. keyframeloop() will wrap arounda and so on as k increases past the last frame. whereas keyframe() will only display the last frame for higher k values. k will be treated as a positive number even if negative.print() & printb() methods only printing once if the x value had logically resolved to a constantETF 4.6.1 or highernan variable that resolves to Float.NaN in runtime mostly for debugging purposes, it being used should make any math function/equation give its failure outcome.04.11.2023 · 23 295 downloads
1.1.0
rule_index variable using the wrong valuerandom() method breaking when used with no argsNon [a-z0-9/._-] character in path crash with modded entities having model id's that do not create valid Identifiers/ResourceLocations! boolean inverting not applying to varb variable booleanskeyframe() & keyframeloop() animation methods to simplify keyframe format animations, the format is keyframe(k, a, b, c,...) with k being the linear progress of the keyframes (typically a timer), and all further values being the individual keyframes value.a,b, and k=1.5 will give a linear output halfway between b & c. In effect k is the timera being 0. keyframeloop() will wrap arounda and so on as k increases past the last frame. whereas keyframe() will only display the last frame for higher k values. k will be treated as a positive number even if negative.print() & printb() methods only printing once if the x value had logically resolved to a constantETF 4.6.1 or highernan variable that resolves to Float.NaN in runtime mostly for debugging purposes, it being used should make any math function/equation give its failure outcome.04.11.2023 · 1 617 downloads
1.1.0
rule_index variable using the wrong valuerandom() method breaking when used with no argsNon [a-z0-9/._-] character in path crash with modded entities having model id's that do not create valid Identifiers/ResourceLocations! boolean inverting not applying to varb variable booleanskeyframe() & keyframeloop() animation methods to simplify keyframe format animations, the format is keyframe(k, a, b, c,...) with k being the linear progress of the keyframes (typically a timer), and all further values being the individual keyframes value.a,b, and k=1.5 will give a linear output halfway between b & c. In effect k is the timera being 0. keyframeloop() will wrap arounda and so on as k increases past the last frame. whereas keyframe() will only display the last frame for higher k values. k will be treated as a positive number even if negative.print() & printb() methods only printing once if the x value had logically resolved to a constantETF 4.6.1 or highernan variable that resolves to Float.NaN in runtime mostly for debugging purposes, it being used should make any math function/equation give its failure outcome.04.11.2023 · 1 414 downloads
1.1.0
rule_index variable using the wrong valuerandom() method breaking when used with no argsNon [a-z0-9/._-] character in path crash with modded entities having model id's that do not create valid Identifiers/ResourceLocations! boolean inverting not applying to varb variable booleanskeyframe() & keyframeloop() animation methods to simplify keyframe format animations, the format is keyframe(k, a, b, c,...) with k being the linear progress of the keyframes (typically a timer), and all further values being the individual keyframes value.a,b, and k=1.5 will give a linear output halfway between b & c. In effect k is the timera being 0. keyframeloop() will wrap arounda and so on as k increases past the last frame. whereas keyframe() will only display the last frame for higher k values. k will be treated as a positive number even if negative.print() & printb() methods only printing once if the x value had logically resolved to a constantETF 4.6.1 or highernan variable that resolves to Float.NaN in runtime mostly for debugging purposes, it being used should make any math function/equation give its failure outcome.04.11.2023 · 98 993 downloads
1.1.0
rule_index variable using the wrong valuerandom() method breaking when used with no argsNon [a-z0-9/._-] character in path crash with modded entities having model id's that do not create valid Identifiers/ResourceLocations! boolean inverting not applying to varb variable booleanskeyframe() & keyframeloop() animation methods to simplify keyframe format animations, the format is keyframe(k, a, b, c,...) with k being the linear progress of the keyframes (typically a timer), and all further values being the individual keyframes value.a,b, and k=1.5 will give a linear output halfway between b & c. In effect k is the timera being 0. keyframeloop() will wrap arounda and so on as k increases past the last frame. whereas keyframe() will only display the last frame for higher k values. k will be treated as a positive number even if negative.print() & printb() methods only printing once if the x value had logically resolved to a constantETF 4.6.1 or highernan variable that resolves to Float.NaN in runtime mostly for debugging purposes, it being used should make any math function/equation give its failure outcome.04.11.2023 · 2 318 downloads
1.1.0
rule_index variable using the wrong valuerandom() method breaking when used with no argsNon [a-z0-9/._-] character in path crash with modded entities having model id's that do not create valid Identifiers/ResourceLocations! boolean inverting not applying to varb variable booleanskeyframe() & keyframeloop() animation methods to simplify keyframe format animations, the format is keyframe(k, a, b, c,...) with k being the linear progress of the keyframes (typically a timer), and all further values being the individual keyframes value.a,b, and k=1.5 will give a linear output halfway between b & c. In effect k is the timera being 0. keyframeloop() will wrap arounda and so on as k increases past the last frame. whereas keyframe() will only display the last frame for higher k values. k will be treated as a positive number even if negative.print() & printb() methods only printing once if the x value had logically resolved to a constantETF 4.6.1 or highernan variable that resolves to Float.NaN in runtime mostly for debugging purposes, it being used should make any math function/equation give its failure outcome.04.11.2023 · 89 326 downloads
1.1.0
rule_index variable using the wrong valuerandom() method breaking when used with no argsNon [a-z0-9/._-] character in path crash with modded entities having model id's that do not create valid Identifiers/ResourceLocations! boolean inverting not applying to varb variable booleanskeyframe() & keyframeloop() animation methods to simplify keyframe format animations, the format is keyframe(k, a, b, c,...) with k being the linear progress of the keyframes (typically a timer), and all further values being the individual keyframes value.a,b, and k=1.5 will give a linear output halfway between b & c. In effect k is the timera being 0. keyframeloop() will wrap arounda and so on as k increases past the last frame. whereas keyframe() will only display the last frame for higher k values. k will be treated as a positive number even if negative.print() & printb() methods only printing once if the x value had logically resolved to a constantETF 4.6.1 or highernan variable that resolves to Float.NaN in runtime mostly for debugging purposes, it being used should make any math function/equation give its failure outcome.04.11.2023 · 5 055 downloads
1.1.0
rule_index variable using the wrong valuerandom() method breaking when used with no argsNon [a-z0-9/._-] character in path crash with modded entities having model id's that do not create valid Identifiers/ResourceLocations! boolean inverting not applying to varb variable booleanskeyframe() & keyframeloop() animation methods to simplify keyframe format animations, the format is keyframe(k, a, b, c,...) with k being the linear progress of the keyframes (typically a timer), and all further values being the individual keyframes value.a,b, and k=1.5 will give a linear output halfway between b & c. In effect k is the timera being 0. keyframeloop() will wrap arounda and so on as k increases past the last frame. whereas keyframe() will only display the last frame for higher k values. k will be treated as a positive number even if negative.print() & printb() methods only printing once if the x value had logically resolved to a constantETF 4.6.1 or highernan variable that resolves to Float.NaN in runtime mostly for debugging purposes, it being used should make any math function/equation give its failure outcome.03.10.2023 · 1 802 downloads
1.18.2 backport
03.10.2023 · 53 261 downloads
1.18.2 backport
23.09.2023 · 5 986 downloads
fixed situational lag in v1.0 related to block entity rendering
fixed 1.19 forge issue preventing block entity model syncing (i.e chest and trapped_chest both using chest.jem)
23.09.2023 · 10 561 downloads
fixed situational lag in v1.0 related to block entity rendering
fixed 1.19 forge issue preventing block entity model syncing (i.e chest and trapped_chest both using chest.jem)
this might be the last 1.19.3 version
23.09.2023 · 14 350 downloads
fixed situational lag in v1.0 related to block entity rendering
fixed 1.19 forge issue preventing block entity model syncing (i.e chest and trapped_chest both using chest.jem)
23.09.2023 · 641 downloads
fixed situational lag in v1.0 related to block entity rendering
fixed 1.19 forge issue preventing block entity model syncing (i.e chest and trapped_chest both using chest.jem)
23.09.2023 · 3 745 downloads
fixed situational lag in v1.0 related to block entity rendering
fixed 1.19 forge issue preventing block entity model syncing (i.e chest and trapped_chest both using chest.jem)
this might be the last 1.19.3 version
23.09.2023 · 16 421 downloads
fixed situational lag in v1.0 related to block entity rendering
fixed 1.19 forge issue preventing block entity model syncing (i.e chest and trapped_chest both using chest.jem)
22.09.2023 · 121 249 downloads
1.20.2 update
22.09.2023 · 654 downloads
1.20.2 update
20.09.2023 · 1 022 040 downloads
20.09.2023 · 21 717 downloads
16.09.2023 · 335 downloads
fixed an issue with resource reloads breaking custom models on 1.19.2 & 1.19.3
16.09.2023 · 189 786 downloads
fixed an issue with resource reloads breaking custom models on 1.19.2 & 1.19.3
16.09.2023 · 104 downloads
fixed an issue with resource reloads breaking custom models on 1.19.2 & 1.19.3
16.09.2023 · 416 downloads
fixed an issue with resource reloads breaking custom models on 1.19.2 & 1.19.3
16.09.2023 · 15 318 downloads
It's time, EMF has come a long way, in 9.5 months, and now seems to be very closely on parity with OptiFine CEM, seeing as it is not
actually OptiFine there will always be some minor issues or discrepancies, please continue to report these as you find them.
However on the whole EMF seems to be ready.
Some things to note: EMF 1.0 is practically a different mod to the last beta 0.2.13 and the old private alpha,
Almost the entire model creation code is different and almost all issues reported using old beta versions will be irrelevant going forwards. (especially if it is about broken models)
With that being said, many GitHub issues have been left mostly ignored by me if the issue is something that I expected would
be resolved passively during development, I'll be going through these in the coming months to weed out any now irrelevant issues.
(changes from last beta)
- Model creation has been completely rewritten & OptiFine CEM appears to be at parity in EMF and seems to be fully working for almost every single model
- large rework, reimplementation, and internalisation of animation code and model variant checking.
preventing all occurrences of animation de-sync and fixing animations for all modded/replaced entities/models and
block entities.
- various stability fixes to model variants including texture support.
- block entities fully supported
- physics mod compat can now choose to try render the vanilla model parts or the custom EMF model parts
- should no longer cause part not found crashes or model failures
- reduced the log message length of model loading errors
- fixed emf/ & mobName/mobName directory issues
- animations now support model part name hierarchy as in OptiFine. i.e left_arm:hand:finger1 works to separate part finger1 in the left_arm model group from the right_arm one
- warnings added to the "prevent model overrides" setting prompting users to disable setting if it causes crashes or to warn users of models being modified by other mods
- added OptiFine name format support for all previously missing entities including sniffer and camel and block entities
- added support for render variables in animations e.g. render.shadow_size
- expanded animation model variable support to block entities, seemingly matching OptiFines output for these.
- block entity animations support variables "var.???"
- added various render modes for custom parts, NORMAL, GREEN FLASHING, WIREFRAME, OFF, will not affect vanilla parts.
- so much more I've probably forgotten some.
- removed now unnecessary config settings
- leaving the config screen now only triggers a resource reload if a setting has been changed
- added a random entity display to the config screen
- various minor optimizations and code cleanups
- countless fixes caused by the previous beta not having OptiFine parity
16.09.2023 · 581 downloads
It's time, EMF has come a long way, in 9.5 months, and now seems to be very closely on parity with OptiFine CEM, seeing as it is not
actually OptiFine there will always be some minor issues or discrepancies, please continue to report these as you find them.
However on the whole EMF seems to be ready.
Some things to note: EMF 1.0 is practically a different mod to the last beta 0.2.13 and the old private alpha,
Almost the entire model creation code is different and almost all issues reported using old beta versions will be irrelevant going forwards. (especially if it is about broken models)
With that being said, many GitHub issues have been left mostly ignored by me if the issue is something that I expected would
be resolved passively during development, I'll be going through these in the coming months to weed out any now irrelevant issues.
(changes from last beta)
- Model creation has been completely rewritten & OptiFine CEM appears to be at parity in EMF and seems to be fully working for almost every single model
- large rework, reimplementation, and internalisation of animation code and model variant checking.
preventing all occurrences of animation de-sync and fixing animations for all modded/replaced entities/models and
block entities.
- various stability fixes to model variants including texture support.
- block entities fully supported
- physics mod compat can now choose to try render the vanilla model parts or the custom EMF model parts
- should no longer cause part not found crashes or model failures
- reduced the log message length of model loading errors
- fixed emf/ & mobName/mobName directory issues
- animations now support model part name hierarchy as in OptiFine. i.e left_arm:hand:finger1 works to separate part finger1 in the left_arm model group from the right_arm one
- warnings added to the "prevent model overrides" setting prompting users to disable setting if it causes crashes or to warn users of models being modified by other mods
- added OptiFine name format support for all previously missing entities including sniffer and camel and block entities
- added support for render variables in animations e.g. render.shadow_size
- expanded animation model variable support to block entities, seemingly matching OptiFines output for these.
- block entity animations support variables "var.???"
- added various render modes for custom parts, NORMAL, GREEN FLASHING, WIREFRAME, OFF, will not affect vanilla parts.
- so much more I've probably forgotten some.
- removed now unnecessary config settings
- leaving the config screen now only triggers a resource reload if a setting has been changed
- added a random entity display to the config screen
- various minor optimizations and code cleanups
- countless fixes caused by the previous beta not having OptiFine parity
16.09.2023 · 89 downloads
It's time, EMF has come a long way, in 9.5 months, and now seems to be very closely on parity with OptiFine CEM, seeing as it is not
actually OptiFine there will always be some minor issues or discrepancies, please continue to report these as you find them.
However on the whole EMF seems to be ready.
Some things to note: EMF 1.0 is practically a different mod to the last beta 0.2.13 and the old private alpha,
Almost the entire model creation code is different and almost all issues reported using old beta versions will be irrelevant going forwards. (especially if it is about broken models)
With that being said, many GitHub issues have been left mostly ignored by me if the issue is something that I expected would
be resolved passively during development, I'll be going through these in the coming months to weed out any now irrelevant issues.
(changes from last beta)
- Model creation has been completely rewritten & OptiFine CEM appears to be at parity in EMF and seems to be fully working for almost every single model
- large rework, reimplementation, and internalisation of animation code and model variant checking.
preventing all occurrences of animation de-sync and fixing animations for all modded/replaced entities/models and
block entities.
- various stability fixes to model variants including texture support.
- block entities fully supported
- physics mod compat can now choose to try render the vanilla model parts or the custom EMF model parts
- should no longer cause part not found crashes or model failures
- reduced the log message length of model loading errors
- fixed emf/ & mobName/mobName directory issues
- animations now support model part name hierarchy as in OptiFine. i.e left_arm:hand:finger1 works to separate part finger1 in the left_arm model group from the right_arm one
- warnings added to the "prevent model overrides" setting prompting users to disable setting if it causes crashes or to warn users of models being modified by other mods
- added OptiFine name format support for all previously missing entities including sniffer and camel and block entities
- added support for render variables in animations e.g. render.shadow_size
- expanded animation model variable support to block entities, seemingly matching OptiFines output for these.
- block entity animations support variables "var.???"
- added various render modes for custom parts, NORMAL, GREEN FLASHING, WIREFRAME, OFF, will not affect vanilla parts.
- so much more I've probably forgotten some.
- removed now unnecessary config settings
- leaving the config screen now only triggers a resource reload if a setting has been changed
- added a random entity display to the config screen
- various minor optimizations and code cleanups
- countless fixes caused by the previous beta not having OptiFine parity
16.09.2023 · 376 downloads
It's time, EMF has come a long way, in 9.5 months, and now seems to be very closely on parity with OptiFine CEM, seeing as it is not
actually OptiFine there will always be some minor issues or discrepancies, please continue to report these as you find them.
However on the whole EMF seems to be ready.
Some things to note: EMF 1.0 is practically a different mod to the last beta 0.2.13 and the old private alpha,
Almost the entire model creation code is different and almost all issues reported using old beta versions will be irrelevant going forwards. (especially if it is about broken models)
With that being said, many GitHub issues have been left mostly ignored by me if the issue is something that I expected would
be resolved passively during development, I'll be going through these in the coming months to weed out any now irrelevant issues.
(changes from last beta)
- Model creation has been completely rewritten & OptiFine CEM appears to be at parity in EMF and seems to be fully working for almost every single model
- large rework, reimplementation, and internalisation of animation code and model variant checking.
preventing all occurrences of animation de-sync and fixing animations for all modded/replaced entities/models and
block entities.
- various stability fixes to model variants including texture support.
- block entities fully supported
- physics mod compat can now choose to try render the vanilla model parts or the custom EMF model parts
- should no longer cause part not found crashes or model failures
- reduced the log message length of model loading errors
- fixed emf/ & mobName/mobName directory issues
- animations now support model part name hierarchy as in OptiFine. i.e left_arm:hand:finger1 works to separate part finger1 in the left_arm model group from the right_arm one
- warnings added to the "prevent model overrides" setting prompting users to disable setting if it causes crashes or to warn users of models being modified by other mods
- added OptiFine name format support for all previously missing entities including sniffer and camel and block entities
- added support for render variables in animations e.g. render.shadow_size
- expanded animation model variable support to block entities, seemingly matching OptiFines output for these.
- block entity animations support variables "var.???"
- added various render modes for custom parts, NORMAL, GREEN FLASHING, WIREFRAME, OFF, will not affect vanilla parts.
- so much more I've probably forgotten some.
- removed now unnecessary config settings
- leaving the config screen now only triggers a resource reload if a setting has been changed
- added a random entity display to the config screen
- various minor optimizations and code cleanups
- countless fixes caused by the previous beta not having OptiFine parity
16.09.2023 · 1 448 downloads
It's time, EMF has come a long way, in 9.5 months, and now seems to be very closely on parity with OptiFine CEM, seeing as it is not
actually OptiFine there will always be some minor issues or discrepancies, please continue to report these as you find them.
However on the whole EMF seems to be ready.
Some things to note: EMF 1.0 is practically a different mod to the last beta 0.2.13 and the old private alpha,
Almost the entire model creation code is different and almost all issues reported using old beta versions will be irrelevant going forwards. (especially if it is about broken models)
With that being said, many GitHub issues have been left mostly ignored by me if the issue is something that I expected would
be resolved passively during development, I'll be going through these in the coming months to weed out any now irrelevant issues.
(changes from last beta)
- Model creation has been completely rewritten & OptiFine CEM appears to be at parity in EMF and seems to be fully working for almost every single model
- large rework, reimplementation, and internalisation of animation code and model variant checking.
preventing all occurrences of animation de-sync and fixing animations for all modded/replaced entities/models and
block entities.
- various stability fixes to model variants including texture support.
- block entities fully supported
- physics mod compat can now choose to try render the vanilla model parts or the custom EMF model parts
- should no longer cause part not found crashes or model failures
- reduced the log message length of model loading errors
- fixed emf/ & mobName/mobName directory issues
- animations now support model part name hierarchy as in OptiFine. i.e left_arm:hand:finger1 works to separate part finger1 in the left_arm model group from the right_arm one
- warnings added to the "prevent model overrides" setting prompting users to disable setting if it causes crashes or to warn users of models being modified by other mods
- added OptiFine name format support for all previously missing entities including sniffer and camel and block entities
- added support for render variables in animations e.g. render.shadow_size
- expanded animation model variable support to block entities, seemingly matching OptiFines output for these.
- block entity animations support variables "var.???"
- added various render modes for custom parts, NORMAL, GREEN FLASHING, WIREFRAME, OFF, will not affect vanilla parts.
- so much more I've probably forgotten some.
- removed now unnecessary config settings
- leaving the config screen now only triggers a resource reload if a setting has been changed
- added a random entity display to the config screen
- various minor optimizations and code cleanups
- countless fixes caused by the previous beta not having OptiFine parity
16.09.2023 · 140 downloads
It's time, EMF has come a long way, in 9.5 months, and now seems to be very closely on parity with OptiFine CEM, seeing as it is not
actually OptiFine there will always be some minor issues or discrepancies, please continue to report these as you find them.
However on the whole EMF seems to be ready.
Some things to note: EMF 1.0 is practically a different mod to the last beta 0.2.13 and the old private alpha,
Almost the entire model creation code is different and almost all issues reported using old beta versions will be irrelevant going forwards. (especially if it is about broken models)
With that being said, many GitHub issues have been left mostly ignored by me if the issue is something that I expected would
be resolved passively during development, I'll be going through these in the coming months to weed out any now irrelevant issues.
(changes from last beta)
- Model creation has been completely rewritten & OptiFine CEM appears to be at parity in EMF and seems to be fully working for almost every single model
- large rework, reimplementation, and internalisation of animation code and model variant checking.
preventing all occurrences of animation de-sync and fixing animations for all modded/replaced entities/models and
block entities.
- various stability fixes to model variants including texture support.
- block entities fully supported
- physics mod compat can now choose to try render the vanilla model parts or the custom EMF model parts
- should no longer cause part not found crashes or model failures
- reduced the log message length of model loading errors
- fixed emf/ & mobName/mobName directory issues
- animations now support model part name hierarchy as in OptiFine. i.e left_arm:hand:finger1 works to separate part finger1 in the left_arm model group from the right_arm one
- warnings added to the "prevent model overrides" setting prompting users to disable setting if it causes crashes or to warn users of models being modified by other mods
- added OptiFine name format support for all previously missing entities including sniffer and camel and block entities
- added support for render variables in animations e.g. render.shadow_size
- expanded animation model variable support to block entities, seemingly matching OptiFines output for these.
- block entity animations support variables "var.???"
- added various render modes for custom parts, NORMAL, GREEN FLASHING, WIREFRAME, OFF, will not affect vanilla parts.
- so much more I've probably forgotten some.
- removed now unnecessary config settings
- leaving the config screen now only triggers a resource reload if a setting has been changed
- added a random entity display to the config screen
- various minor optimizations and code cleanups
- countless fixes caused by the previous beta not having OptiFine parity
16.09.2023 · 85 downloads
It's time, EMF has come a long way, in 9.5 months, and now seems to be very closely on parity with OptiFine CEM, seeing as it is not
actually OptiFine there will always be some minor issues or discrepancies, please continue to report these as you find them.
However on the whole EMF seems to be ready.
Some things to note: EMF 1.0 is practically a different mod to the last beta 0.2.13 and the old private alpha,
Almost the entire model creation code is different and almost all issues reported using old beta versions will be irrelevant going forwards. (especially if it is about broken models)
With that being said, many GitHub issues have been left mostly ignored by me if the issue is something that I expected would
be resolved passively during development, I'll be going through these in the coming months to weed out any now irrelevant issues.
(changes from last beta)
- Model creation has been completely rewritten & OptiFine CEM appears to be at parity in EMF and seems to be fully working for almost every single model
- large rework, reimplementation, and internalisation of animation code and model variant checking.
preventing all occurrences of animation de-sync and fixing animations for all modded/replaced entities/models and
block entities.
- various stability fixes to model variants including texture support.
- block entities fully supported
- physics mod compat can now choose to try render the vanilla model parts or the custom EMF model parts
- should no longer cause part not found crashes or model failures
- reduced the log message length of model loading errors
- fixed emf/ & mobName/mobName directory issues
- animations now support model part name hierarchy as in OptiFine. i.e left_arm:hand:finger1 works to separate part finger1 in the left_arm model group from the right_arm one
- warnings added to the "prevent model overrides" setting prompting users to disable setting if it causes crashes or to warn users of models being modified by other mods
- added OptiFine name format support for all previously missing entities including sniffer and camel and block entities
- added support for render variables in animations e.g. render.shadow_size
- expanded animation model variable support to block entities, seemingly matching OptiFines output for these.
- block entity animations support variables "var.???"
- added various render modes for custom parts, NORMAL, GREEN FLASHING, WIREFRAME, OFF, will not affect vanilla parts.
- so much more I've probably forgotten some.
- removed now unnecessary config settings
- leaving the config screen now only triggers a resource reload if a setting has been changed
- added a random entity display to the config screen
- various minor optimizations and code cleanups
- countless fixes caused by the previous beta not having OptiFine parity
16.09.2023 · 318 downloads
It's time, EMF has come a long way, in 9.5 months, and now seems to be very closely on parity with OptiFine CEM, seeing as it is not
actually OptiFine there will always be some minor issues or discrepancies, please continue to report these as you find them.
However on the whole EMF seems to be ready.
Some things to note: EMF 1.0 is practically a different mod to the last beta 0.2.13 and the old private alpha,
Almost the entire model creation code is different and almost all issues reported using old beta versions will be irrelevant going forwards. (especially if it is about broken models)
With that being said, many GitHub issues have been left mostly ignored by me if the issue is something that I expected would
be resolved passively during development, I'll be going through these in the coming months to weed out any now irrelevant issues.
(changes from last beta)
- Model creation has been completely rewritten & OptiFine CEM appears to be at parity in EMF and seems to be fully working for almost every single model
- large rework, reimplementation, and internalisation of animation code and model variant checking.
preventing all occurrences of animation de-sync and fixing animations for all modded/replaced entities/models and
block entities.
- various stability fixes to model variants including texture support.
- block entities fully supported
- physics mod compat can now choose to try render the vanilla model parts or the custom EMF model parts
- should no longer cause part not found crashes or model failures
- reduced the log message length of model loading errors
- fixed emf/ & mobName/mobName directory issues
- animations now support model part name hierarchy as in OptiFine. i.e left_arm:hand:finger1 works to separate part finger1 in the left_arm model group from the right_arm one
- warnings added to the "prevent model overrides" setting prompting users to disable setting if it causes crashes or to warn users of models being modified by other mods
- added OptiFine name format support for all previously missing entities including sniffer and camel and block entities
- added support for render variables in animations e.g. render.shadow_size
- expanded animation model variable support to block entities, seemingly matching OptiFines output for these.
- block entity animations support variables "var.???"
- added various render modes for custom parts, NORMAL, GREEN FLASHING, WIREFRAME, OFF, will not affect vanilla parts.
- so much more I've probably forgotten some.
- removed now unnecessary config settings
- leaving the config screen now only triggers a resource reload if a setting has been changed
- added a random entity display to the config screen
- various minor optimizations and code cleanups
- countless fixes caused by the previous beta not having OptiFine parity
12.09.2023 · 6 367 downloads
RC-4
- axolotl tail part OptiFine part name mapping fixed
- removed now unnecessary config settings
- fixed emissive textures on CEM models acting weird in RC-3
- some minor optimizations and code cleanups
- moved animation execution code into the relevant parent bone to match OptiFine execution order (solved flickering models in inventory, and improved efficiency slightly)
- leaving the config screen now only triggers a resource reload if a setting has been changed
12.09.2023 · 864 downloads
RC-4
- axolotl tail part OptiFine part name mapping fixed
- removed now unnecessary config settings
- fixed emissive textures on CEM models acting weird in RC-3
- some minor optimizations and code cleanups
- moved animation execution code into the relevant parent bone to match OptiFine execution order (solved flickering models in inventory, and improved efficiency slightly)
- leaving the config screen now only triggers a resource reload if a setting has been changed
11.09.2023 · 4 590 downloads
RC-3
- re-enabled an option for testing in RC-3 that allows using minecraft's internal MathHelper class for some math methods as opposed to regular Java's Math methods (doesn't really seem to be a performance benefit in ym testing, just trialling this before I decide whether to delete this old code)
- fixed top level jem texture overrides
- fixed book.jem's flipping page pivots
- changed some default config settings for performance boosts
- fixed a forge crash
- fixed armor stand armor models not remapping the headwear part
- fixed guardian and elder_guardian OptiFine part name mappings ("eye" did not work)
11.09.2023 · 331 downloads
RC-3
- re-enabled an option for testing in RC-3 that allows using minecraft's internal MathHelper class for some math methods as opposed to regular Java's Math methods (doesn't really seem to be a performance benefit in ym testing, just trialling this before I decide whether to delete this old code)
- fixed top level jem texture overrides
- fixed book.jem's flipping page pivots
- changed some default config settings for performance boosts
- fixed a forge crash
- fixed armor stand armor models not remapping the headwear part
- fixed guardian and elder_guardian OptiFine part name mappings ("eye" did not work)
10.09.2023 · 12 909 downloads
RC-2
- added a random entity display to the config screen
- fixed null pointer exception with model overrides
- fixed ravager jaw having the wrong OptiFine part name
- fixed is_on_shoulder animation variable
- fixed wolf_collar.jem loading
- fixed an accidental limitation where a vanilla part unknown to the OptiFine part name map would be targeted by animations intended for custom parts (in FA this was parrot heads and witch hats)
- fixed a crash with unknown models building illegal paths
- fixed an issue with parts with empty ids using "this" animation key
- fixed book models
- fixed chest & shulker model mixups
- fixed animations not being read from models with parts with duplicate ids (fixed several of Creepermax123's packs)
10.09.2023 · 266 downloads
RC-2
- added a random entity display to the config screen
- fixed null pointer exception with model overrides
- fixed ravager jaw having the wrong OptiFine part name
- fixed is_on_shoulder animation variable
- fixed wolf_collar.jem loading
- fixed an accidental limitation where a vanilla part unknown to the OptiFine part name map would be targeted by animations intended for custom parts (in FA this was parrot heads and witch hats)
- fixed a crash with unknown models building illegal paths
- fixed an issue with parts with empty ids using "this" animation key
- fixed book models
- fixed chest & shulker model mixups
- fixed animations not being read from models with parts with duplicate ids (fixed several of Creepermax123's packs)
09.09.2023 · 1 626 downloads
RC-1
- OptiFine CEM appears to be officially solved in EMF and seems to be fully working for almost every single use case :)
- large rework, reimplementation, and internalisation of animation code and model variant checking.
preventing all occurrences of animation de-sync and fixing animations for all modded/replaced entities/models and
block entities.
- various stability fixes to model variants including texture support.
- block entities fully supported (expect a few missalignments due to possible OptiFine part name differences, report these if you can , e.g. lectern and enchating table books might be swapped)
- physics mod compat can now choose to try render the vanilla model parts or the custom EMF model parts
- should no longer cause part not found crashes or model failures
- reduced the log message length of model loading errors
- fixed emf/ & mobName/mobName directory issues
- animations now support model part name hierarchy as in OptiFine. i.e left_arm:hand:finger1 works to separate part finger1 in the left_arm model group from the right_arm one
- warning structure added to detected model overrides prompting to disable setting if it crashes or to warn users of models modified by other mods
- added OptiFine name format support for all previously missing entities including sniffer and camel and block entities
- added support for render variables in animations e.g. render.shadow_size
- expanded animation model variable support to block entities, seemingly matching OptiFines output for these.
- block entity animations support variables "var.???"
- added various render modes for custom parts, NORMAL, GREEN FLASHING, WIREFRAME, OFF, will not affect vanilla parts.
- so much more i've probably forgotten some.
09.09.2023 · 232 downloads
RC-1
- OptiFine CEM appears to be officially solved in EMF and seems to be fully working for almost every single use case :)
- large rework, reimplementation, and internalisation of animation code and model variant checking.
preventing all occurrences of animation de-sync and fixing animations for all modded/replaced entities/models and
block entities.
- various stability fixes to model variants including texture support.
- block entities fully supported (expect a few missalignments due to possible OptiFine part name differences, report these if you can , e.g. lectern and enchating table books might be swapped)
- physics mod compat can now choose to try render the vanilla model parts or the custom EMF model parts
- should no longer cause part not found crashes or model failures
- reduced the log message length of model loading errors
- fixed emf/ & mobName/mobName directory issues
- animations now support model part name hierarchy as in OptiFine. i.e left_arm:hand:finger1 works to separate part finger1 in the left_arm model group from the right_arm one
- warning structure added to detected model overrides prompting to disable setting if it crashes or to warn users of models modified by other mods
- added OptiFine name format support for all previously missing entities including sniffer and camel and block entities
- added support for render variables in animations e.g. render.shadow_size
- expanded animation model variable support to block entities, seemingly matching OptiFines output for these.
- block entity animations support variables "var.???"
- added various render modes for custom parts, NORMAL, GREEN FLASHING, WIREFRAME, OFF, will not affect vanilla parts.
- so much more i've probably forgotten some.
13.07.2023 · 258 488 downloads
IndexOutOfBoundsException & already building crashes related to texture overrides in sub-models13.07.2023 · 15 520 downloads
IndexOutOfBoundsException & already building crashes related to texture overrides in sub-models13.07.2023 · 424 downloads
IndexOutOfBoundsException & already building crashes related to texture overrides in sub-models13.07.2023 · 73 751 downloads
IndexOutOfBoundsException & already building crashes related to texture overrides in sub-models13.07.2023 · 3 584 downloads
IndexOutOfBoundsException & already building crashes related to texture overrides in sub-models13.07.2023 · 571 downloads
IndexOutOfBoundsException & already building crashes related to texture overrides in sub-models13.07.2023 · 260 downloads
IndexOutOfBoundsException & already building crashes related to texture overrides in sub-models13.07.2023 · 3 425 downloads
IndexOutOfBoundsException & already building crashes related to texture overrides in sub-models11.07.2023 · 12 556 downloads
0.2.12
11.07.2023 · 37 103 downloads
0.2.12
11.07.2023 · 91 downloads
0.2.12
11.07.2023 · 1 088 downloads
0.2.12
11.07.2023 · 273 downloads
0.2.12
11.07.2023 · 91 downloads
0.2.12
11.07.2023 · 71 downloads
0.2.12
11.07.2023 · 475 downloads
0.2.12
22.06.2023 · 179 176 downloads
0.2.11
Did someone say mod compatibility?
This update adds a few features regarding EMF and other mods the most notable of which being an initial trial of modded entity support.
The following rules for modded entities are subject to change at any time during the beta.
As a rule of thumb all modded entities jem files will need to be placed at optifine/cem/modded/{NAMESPACE}/{MOBNAME}.jem
To see if a modded entity can be altered by EMF enable the option to print modded entity model details to the game log,
if it shows up in the log it will give you the .jem file path and all the root part names and their default values to work with.
If the mod creator for some reason gave the entity a different type name from its model name they will not currently animate, I have some plans for this eventually.
Secondly this change opens up the entirety of the minecraft entity model loading system to be customized via jem files safely without restriction,
for example I have yet to add any code specifically to model or animate signs but the modded printout option will reveal that
optifine/cem/sign/oak.jem is a detected valid model file for signs now, this will be true for many unexpected vanilla models
such as elytra and block entities. HOWEVER if they appear in this printout it means they are effectively "unknown" models,
they DO NOT yet use the OptiFine part names and are very unlikely to animate.
The OptiFine part names are something I need to add manually because they differ from the internal code names.
And all of these modded or unknown models that are not the main model of a LivingEntity need to have animation support manually added in the code.
There is also a new option, enabled by default, to try and force the game to use the CEM models for vanilla entities even
if another mod has tried to replace them, I'm not too sure how well this will work with all mods, but it seems to work nicely with the few I've tested with
EMF models to not be overridden by other mods (probably won't work with all mods)22.06.2023 · 1 479 downloads
0.2.11
Did someone say mod compatibility?
This update adds a few features regarding EMF and other mods the most notable of which being an initial trial of modded entity support.
The following rules for modded entities are subject to change at any time during the beta.
As a rule of thumb all modded entities jem files will need to be placed at optifine/cem/modded/{NAMESPACE}/{MOBNAME}.jem
To see if a modded entity can be altered by EMF enable the option to print modded entity model details to the game log,
if it shows up in the log it will give you the .jem file path and all the root part names and their default values to work with.
If the mod creator for some reason gave the entity a different type name from its model name they will not currently animate, I have some plans for this eventually.
Secondly this change opens up the entirety of the minecraft entity model loading system to be customized via jem files safely without restriction,
for example I have yet to add any code specifically to model or animate signs but the modded printout option will reveal that
optifine/cem/sign/oak.jem is a detected valid model file for signs now, this will be true for many unexpected vanilla models
such as elytra and block entities. HOWEVER if they appear in this printout it means they are effectively "unknown" models,
they DO NOT yet use the OptiFine part names and are very unlikely to animate.
The OptiFine part names are something I need to add manually because they differ from the internal code names.
And all of these modded or unknown models that are not the main model of a LivingEntity need to have animation support manually added in the code.
There is also a new option, enabled by default, to try and force the game to use the CEM models for vanilla entities even
if another mod has tried to replace them, I'm not too sure how well this will work with all mods, but it seems to work nicely with the few I've tested with
EMF models to not be overridden by other mods (probably won't work with all mods)09.06.2023 · 68 776 downloads
0.2.10
- 1.20 update
- fixed an issues with the max() animation method
- added a temporary config option to experiment with how EMF handles resetting its data (intended to be used to troubleshoot with users when a known bug occurs that I haven't yet been able to replicate myself)
09.06.2023 · 553 downloads
0.2.10
- 1.20 update
- fixed an issues with the max() animation method
- added a temporary config option to experiment with how EMF handles resetting its data (intended to be used to troubleshoot with users when a known bug occurs that I haven't yet been able to replicate myself)
11.05.2023 · 611 downloads
10.05.2023 · 87 997 downloads
10.05.2023 · 2 411 downloads
10.05.2023 · 52 523 downloads
10.05.2023 · 3 339 downloads
10.05.2023 · 296 downloads
10.05.2023 · 5 402 downloads
25.04.2023 · 15 547 downloads
0.2.8
- made ETF a required dependency (Consider EMF now as an ETF addon, allowing you to still use other model mods without losing ETF)
- EMF now has a basic config screen on both Fabric and Forge
- added model texture override support
- re-added option to render the vanilla model underneath the custom one, or offset from it (they will not animate and are meant to help pack makers position their models)
- random model variations now update according to ETF's texture update rate setting
- fixed frame_time value it was about 2 times too large resulting in some animation transitions or counters playing faster
- added animation variables day_time, day_count, and tweaked time
- added anger_time_start and included tickDelta smoothing in anger_time
- fixed logical error in animation math expressions where "!(boolean)" was different to "!boolean"
- green render mode now pulses to allow accurate viewing of texture colours
- added an implementation of move_forward & move_strafing which are broken in OptiFine, in EMF these values relate
how much the entities total movement is in a particular direction. Using a players [wasd] movement as reference a
player holding W has a move_forward of 1, and a player holding S has a move_forward of -1, and a player
holding D has a move_strafing of 1, and a player holding A has a move_strafing of -1, and a player holding WD
has a move_forward & move_strafing of roughly 0.7 in both . this value is independent of speed and is intended as a measurement
of the directionality of an entities' movement.
25.04.2023 · 922 downloads
0.2.8
- made ETF a required dependency (Consider EMF now as an ETF addon, allowing you to still use other model mods without losing ETF)
- EMF now has a basic config screen on both Fabric and Forge
- added model texture override support
- re-added option to render the vanilla model underneath the custom one, or offset from it (they will not animate and are meant to help pack makers position their models)
- random model variations now update according to ETF's texture update rate setting
- fixed frame_time value it was about 2 times too large resulting in some animation transitions or counters playing faster
- added animation variables day_time, day_count, and tweaked time
- added anger_time_start and included tickDelta smoothing in anger_time
- fixed logical error in animation math expressions where "!(boolean)" was different to "!boolean"
- green render mode now pulses to allow accurate viewing of texture colours
- added an implementation of move_forward & move_strafing which are broken in OptiFine, in EMF these values relate
how much the entities total movement is in a particular direction. Using a players [wasd] movement as reference a
player holding W has a move_forward of 1, and a player holding S has a move_forward of -1, and a player
holding D has a move_strafing of 1, and a player holding A has a move_strafing of -1, and a player holding WD
has a move_forward & move_strafing of roughly 0.7 in both . this value is independent of speed and is intended as a measurement
of the directionality of an entities' movement.
25.04.2023 · 2 694 downloads
0.2.8
- made ETF a required dependency (Consider EMF now as an ETF addon, allowing you to still use other model mods without losing ETF)
- EMF now has a basic config screen on both Fabric and Forge
- added model texture override support
- re-added option to render the vanilla model underneath the custom one, or offset from it (they will not animate and are meant to help pack makers position their models)
- random model variations now update according to ETF's texture update rate setting
- fixed frame_time value it was about 2 times too large resulting in some animation transitions or counters playing faster
- added animation variables day_time, day_count, and tweaked time
- added anger_time_start and included tickDelta smoothing in anger_time
- fixed logical error in animation math expressions where "!(boolean)" was different to "!boolean"
- green render mode now pulses to allow accurate viewing of texture colours
- added an implementation of move_forward & move_strafing which are broken in OptiFine, in EMF these values relate
how much the entities total movement is in a particular direction. Using a players [wasd] movement as reference a
player holding W has a move_forward of 1, and a player holding S has a move_forward of -1, and a player
holding D has a move_strafing of 1, and a player holding A has a move_strafing of -1, and a player holding WD
has a move_forward & move_strafing of roughly 0.7 in both . this value is independent of speed and is intended as a measurement
of the directionality of an entities' movement.
25.04.2023 · 414 downloads
0.2.8
- made ETF a required dependency (Consider EMF now as an ETF addon, allowing you to still use other model mods without losing ETF)
- EMF now has a basic config screen on both Fabric and Forge
- added model texture override support
- re-added option to render the vanilla model underneath the custom one, or offset from it (they will not animate and are meant to help pack makers position their models)
- random model variations now update according to ETF's texture update rate setting
- fixed frame_time value it was about 2 times too large resulting in some animation transitions or counters playing faster
- added animation variables day_time, day_count, and tweaked time
- added anger_time_start and included tickDelta smoothing in anger_time
- fixed logical error in animation math expressions where "!(boolean)" was different to "!boolean"
- green render mode now pulses to allow accurate viewing of texture colours
- added an implementation of move_forward & move_strafing which are broken in OptiFine, in EMF these values relate
how much the entities total movement is in a particular direction. Using a players [wasd] movement as reference a
player holding W has a move_forward of 1, and a player holding S has a move_forward of -1, and a player
holding D has a move_strafing of 1, and a player holding A has a move_strafing of -1, and a player holding WD
has a move_forward & move_strafing of roughly 0.7 in both . this value is independent of speed and is intended as a measurement
of the directionality of an entities' movement.
25.04.2023 · 148 downloads
0.2.8
- made ETF a required dependency (Consider EMF now as an ETF addon, allowing you to still use other model mods without losing ETF)
- EMF now has a basic config screen on both Fabric and Forge
- added model texture override support
- re-added option to render the vanilla model underneath the custom one, or offset from it (they will not animate and are meant to help pack makers position their models)
- random model variations now update according to ETF's texture update rate setting
- fixed frame_time value it was about 2 times too large resulting in some animation transitions or counters playing faster
- added animation variables day_time, day_count, and tweaked time
- added anger_time_start and included tickDelta smoothing in anger_time
- fixed logical error in animation math expressions where "!(boolean)" was different to "!boolean"
- green render mode now pulses to allow accurate viewing of texture colours
- added an implementation of move_forward & move_strafing which are broken in OptiFine, in EMF these values relate
how much the entities total movement is in a particular direction. Using a players [wasd] movement as reference a
player holding W has a move_forward of 1, and a player holding S has a move_forward of -1, and a player
holding D has a move_strafing of 1, and a player holding A has a move_strafing of -1, and a player holding WD
has a move_forward & move_strafing of roughly 0.7 in both . this value is independent of speed and is intended as a measurement
of the directionality of an entities' movement.
25.04.2023 · 1 047 downloads
0.2.8
- made ETF a required dependency (Consider EMF now as an ETF addon, allowing you to still use other model mods without losing ETF)
- EMF now has a basic config screen on both Fabric and Forge
- added model texture override support
- re-added option to render the vanilla model underneath the custom one, or offset from it (they will not animate and are meant to help pack makers position their models)
- random model variations now update according to ETF's texture update rate setting
- fixed frame_time value it was about 2 times too large resulting in some animation transitions or counters playing faster
- added animation variables day_time, day_count, and tweaked time
- added anger_time_start and included tickDelta smoothing in anger_time
- fixed logical error in animation math expressions where "!(boolean)" was different to "!boolean"
- green render mode now pulses to allow accurate viewing of texture colours
- added an implementation of move_forward & move_strafing which are broken in OptiFine, in EMF these values relate
how much the entities total movement is in a particular direction. Using a players [wasd] movement as reference a
player holding W has a move_forward of 1, and a player holding S has a move_forward of -1, and a player
holding D has a move_strafing of 1, and a player holding A has a move_strafing of -1, and a player holding WD
has a move_forward & move_strafing of roughly 0.7 in both . this value is independent of speed and is intended as a measurement
of the directionality of an entities' movement.
22.04.2023 · 2 459 downloads
22.04.2023 · 174 downloads
22.04.2023 · 391 downloads
22.04.2023 · 84 downloads
22.04.2023 · 88 downloads
22.04.2023 · 157 downloads
21.04.2023 · 1 680 downloads
21.04.2023 · 103 downloads
21.04.2023 · 642 downloads
21.04.2023 · 87 downloads
21.04.2023 · 68 downloads
21.04.2023 · 127 downloads
10.04.2023 · 5 743 downloads
0.2.5
10.04.2023 · 426 downloads
0.2.5
10.04.2023 · 9 384 downloads
0.2.5
10.04.2023 · 104 downloads
0.2.5
10.04.2023 · 92 downloads
0.2.5
10.04.2023 · 163 downloads
0.2.5
01.04.2023 · 296 downloads
01.04.2023 · 111 downloads
01.04.2023 · 221 downloads
01.04.2023 · 669 downloads
first public beta
01.04.2023 · 300 downloads
first public beta
01.04.2023 · 5 362 downloads
first public beta