GeckoLib is an animation and rendering engine for Minecraft Mods, with support for complex 3D keyframe-based animations, 30+ easings, concurrent animation support, sound and particle keyframes, event keyframes, and more. Available for Forge, Fabric, and NeoForge
You can view installation instructions for modders here.
For non-modders, just download the mod and put it in your mods folder like normal.
GeckoLib provides detailed documentation in the form of a wiki. We spent many hours writing the wiki, so please read it!
If you have questions or need help getting up and running with questions, join our discord!
Pull requests are welcome. For significant changes, please open an issue first to discuss what you would like to change.
Sponsored by BisectHosting
Need a server to play with friends? Don't know how to setup one? Just rent an already configured server from BisectHosting!
Click on the picture above, select plan(at least 4GB), and use my code gecko to get 25% off your first month and enjoy playing with your friends!
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 | ||||
| 21h ago | 1 |
### Changes
- Added
1.21.20to the known geometry format versions - Fixed the
relative_tosection in animations json throwing an error on parsing - Fixed
AnimationController's easing override not being changeable mid-animation - Fixed reverse-animations skipping keyframes
- Some animation performance improvements
### Changes
- Added
1.21.20to the known geometry format versions - Fixed the
relative_tosection in animations json throwing an error on parsing - Fixed
AnimationController's easing override not being changeable mid-animation - Fixed reverse-animations skipping keyframes
- Some animation performance improvements
### Changes
- Added
1.21.20to the known geometry format versions - Fixed the
relative_tosection in animations json throwing an error on parsing - Fixed
AnimationController's easing override not being changeable mid-animation - Fixed reverse-animations skipping keyframes
- Some animation performance improvements
- Fixed an issue where the start/end of a catmull-rom (smooth) easing would be ignored (#895)
- Fixed incorrectly parsed MathFunctions sometimes causing crashes on load
- Fixed
ORandANDmolang operators eagerly resolving the right-hand side of the operation even if the left-hand side precludes it - Added
&and|molang operator aliases for&&and||respectively - Fixed lower-level molang operators not having the correct precedence
- Fixed empty molang sub-statements resulting in an error
- Improved error messages for molang parsing
- Fixed negative variable references in molang sometimes failing to parse
- Fixed negative functions in molang sometimes failing to parse
- Fixed some numeric values not being parsed as values in Molang
- Fixed DieRollIntegerFunction calling itself
die_roll - Fixed nested Ternary expressions in Molang cannibalising themselves
- Fixed LoopType.DEFAULT not being serializable
- Fix Serverbound packets (of which we have none currently) crashing on forge dedicated servers
- Fixed Molang query names being case-sensitive
- Add support for single-entry vector arrays in models
- Fixed potentially dodgy
RawAnimationequality comparisons - Fixed
easeinquintonly using a quadruple modifier - Fixed some loose optional networking on Forge
- Prevent some rare crashes from
ItemArmorGeoLayer - Prevent some rare crashes when multiple mods load at the same time and add synced singleton animatables
- Fixed potentially inversely scaled arguments causing problems for randomizing MathFunctions (DieRollInteger, RandomInteger)
- Fix asin/acos/atan functions wrongfully reducing inputs to radians, and not accounting for out-of-range edge cases
- Added support for more direction BlockState properties for GeoBlock rendering
- Fixed
KeyframeDataand its child classes not handlingequalsproperly - Fixed assignments with ternaries or calculations not evaluating properly
- Added the
math.min_anglemolang function
- Fixed an issue where the start/end of a catmull-rom (smooth) easing would be ignored (#895)
- Fixed incorrectly parsed MathFunctions sometimes causing crashes on load
- Fixed
ORandANDmolang operators eagerly resolving the right-hand side of the operation even if the left-hand side precludes it - Added
&and|molang operator aliases for&&and||respectively - Fixed lower-level molang operators not having the correct precedence
- Fixed empty molang sub-statements resulting in an error
- Improved error messages for molang parsing
- Fixed negative variable references in molang sometimes failing to parse
- Fixed negative functions in molang sometimes failing to parse
- Fixed some numeric values not being parsed as values in Molang
- Fixed DieRollIntegerFunction calling itself
die_roll - Fixed nested Ternary expressions in Molang cannibalising themselves
- Fixed LoopType.DEFAULT not being serializable
- Fix Serverbound packets (of which we have none currently) crashing on forge dedicated servers
- Fixed Molang query names being case-sensitive
- Add support for single-entry vector arrays in models
- Fixed potentially dodgy
RawAnimationequality comparisons - Fixed
easeinquintonly using a quadruple modifier - Fixed some loose optional networking on Forge
- Prevent some rare crashes from
ItemArmorGeoLayer - Prevent some rare crashes when multiple mods load at the same time and add synced singleton animatables
- Fixed potentially inversely scaled arguments causing problems for randomizing MathFunctions (DieRollInteger, RandomInteger)
- Fix asin/acos/atan functions wrongfully reducing inputs to radians, and not accounting for out-of-range edge cases
- Added support for more direction BlockState properties for GeoBlock rendering
- Fixed
KeyframeDataand its child classes not handlingequalsproperly - Fixed assignments with ternaries or calculations not evaluating properly
- Added the
math.min_anglemolang function
- Fixed an issue where the start/end of a catmull-rom (smooth) easing would be ignored (#895)
- Fixed incorrectly parsed MathFunctions sometimes causing crashes on load
- Fixed
ORandANDmolang operators eagerly resolving the right-hand side of the operation even if the left-hand side precludes it - Added
&and|molang operator aliases for&&and||respectively - Fixed lower-level molang operators not having the correct precedence
- Fixed empty molang sub-statements resulting in an error
- Improved error messages for molang parsing
- Fixed negative variable references in molang sometimes failing to parse
- Fixed negative functions in molang sometimes failing to parse
- Fixed some numeric values not being parsed as values in Molang
- Fixed DieRollIntegerFunction calling itself
die_roll - Fixed nested Ternary expressions in Molang cannibalising themselves
- Fixed LoopType.DEFAULT not being serializable
- Fix Serverbound packets (of which we have none currently) crashing on forge dedicated servers
- Fixed Molang query names being case-sensitive
- Add support for single-entry vector arrays in models
- Fixed potentially dodgy
RawAnimationequality comparisons - Fixed
easeinquintonly using a quadruple modifier - Fixed some loose optional networking on Forge
- Prevent some rare crashes from
ItemArmorGeoLayer - Prevent some rare crashes when multiple mods load at the same time and add synced singleton animatables
- Fixed potentially inversely scaled arguments causing problems for randomizing MathFunctions (DieRollInteger, RandomInteger)
- Fix asin/acos/atan functions wrongfully reducing inputs to radians, and not accounting for out-of-range edge cases
- Added support for more direction BlockState properties for GeoBlock rendering
- Fixed
KeyframeDataand its child classes not handlingequalsproperly - Fixed assignments with ternaries or calculations not evaluating properly
- Added the
math.min_anglemolang function
### Changes
- Port to 26.3
### Changes
- Port to 26.3
### Bug Fixes
- Fixed another buggy case with using && or || in Molang expressions
- Fixed some issues where some MathFunctions might cause a failure to load an animation
- Fixed an issue where easing types would be ignored on pre/post keyframes (#895)
- Fixed an issue where the start/end of a catmull-rom (smooth) easing would be ignored (#895)
### Bug Fixes
- Fixed another buggy case with using && or || in Molang expressions
- Fixed some issues where some MathFunctions might cause a failure to load an animation
- Fixed an issue where easing types would be ignored on pre/post keyframes (#895)
- Fixed an issue where the start/end of a catmull-rom (smooth) easing would be ignored (#895)
### Functionality
- Added the
math.min_angleMolang function - Add support for Molang's truthy half-ternaries (
cond ? 5) - Fixed invalid value handling in
math.mod,math.sqrt,math.ln,%, and/
### Bug Fixes
- Fixed ternary expressions not evaluating properly at runtime if using entity queries
- Fixed compound expressions not evaluating properly at runtime if using entity queries
- Fixed calculations eagerly resolving the right-hand side, even if the left hand side is true
- Fixed
GeoRenderStatebeing required on all renderstate classes - will now only throw if set up incorrectly (#894)
### Functionality
- Added the
math.min_angleMolang function - Add support for Molang's truthy half-ternaries (
cond ? 5) - Fixed invalid value handling in
math.mod,math.sqrt,math.ln,%, and/
### Bug Fixes
- Fixed ternary expressions not evaluating properly at runtime if using entity queries
- Fixed compound expressions not evaluating properly at runtime if using entity queries
- Fixed calculations eagerly resolving the right-hand side, even if the left hand side is true
- Fixed
GeoRenderStatebeing required on all renderstate classes - will now only throw if set up incorrectly (#894)
### Functionality
- Added the
math.min_angleMolang function - Add support for Molang's truthy half-ternaries (
cond ? 5) - Fixed invalid value handling in
math.mod,math.sqrt,math.ln,%, and/
### Bug Fixes
- Fixed ternary expressions not evaluating properly at runtime if using entity queries
- Fixed compound expressions not evaluating properly at runtime if using entity queries
- Fixed calculations eagerly resolving the right-hand side, even if the left hand side is true
- Fixed
GeoRenderStatebeing required on all renderstate classes - will now only throw if set up incorrectly (#894)
### Bug Fixes
- Fixed
query.life_timebeing negatively inverted - Prevented GeckoLib crashing if attempting to animate with an empty animation
- Fixed GeckoLib crashing on newer NeoForge versions
- Fixed GeckoLib crashing when attempting to send a default
RawAnimationover network - Fixed GeckoLib not evaluating nested ternary expressions properly
- Fixed DieRollIntegerFunction giving the wrong name when asked
- Fixed a crash caused by serverbound GeckoLib packets (we don't have any at the moment anyway, but still)
- Fixed NeoForge's entity
RenderStateextensions being ignored by GeckoLib - Prevent GeckoLib crashing if attempting to retrieve an incorrectly typed
DataTicket - Fixed left-handed GeckoLib entities using first-person render context for third person offhand items
- Fixed uppercase Molang queries not being recognised by animations
- Fixed various whitespace issues with Molang expression parsing
- Fixed single-element vector arrays in Molang expressions erroring out
- Fixed custom GeckoLib resource loaders disabling themselves
- Fixed GeckoLib resource loading crashing out if a mod has both a suffixed GeckoLib resource file and a non-suffixed one with the same name
- Fixed synced singleton animatables (mostly items) colliding with another in very rare occasions
- Fixed
RawAnimationnot necessarily comparing as equal in very rare occasions - Fixed
RawAnimation.Stagenot necessarily comparing as equal in very rare occasions - Fixed
KeyFrameDatanot necessarily comparing as equal in very rare occasions - Fixed the
RawAnimation#thenWaitwaiting 20x too long - Fixed
easeinquintnot beingquint - Fixed
AnimationController#hasAnimationFinishednot working properly - Fixed a potential collision or crash caused by multithreaded handling of animation parsing or modloading
- Fixed a potential crash from reloading resources with GeckoLib animated textures present
- Added some safety checks for
ItemArmorGeoLayerto prevent crashes/errors from invalid setups - Fixed
DyeableGeoArmorRendererrendering bones at the wrong location - Fixed GeckoLib crashing the entire game if a mod attempts to animate something in an invalid way
- Fixed animations with out-of-order animation keyframes not being sorted when loading in
- Fixed a potential multi-threading crash or corruption from
SyncedSingletonAnimatableCache - Fixed a potential crash caused by unexpected values in
DieRollIntegerFunctionandRandomIntegerFunction - Fixed
SyncedSingletonAnimatableCacheacting as a slow-burning memory leak by retaining every id indefinitely - Fixed Molang expressions with empty groups '()' erroring out with little information when parsing
- Fixed top-level bones with locators throwing an error for each one on load
- Fixed GeckoLib's resource loading incorrectly telling Minecraft to move it on-thread before it's done
- Fixed multi-stage animations with a transition time not transitioning properly
- Fixed
math.atan,math.acos, andmath.asincalculating tiny values and being wrong - Some rendering performance improvements
- Fixed GeckoLib clients requiring NeoForge servers to also have GeckoLib installed
- Fixed variable assignments in Molang not parsing properly if accompanied by a tenary or sub-expression
- Added operator symbol aliases for && and || - although the bedrock spec doesn't support this technically
- Fixed negative math function results not parsing properly in molang
- Fixed some higher-level molang operators having completely incorrect precedence indexes
- Fixed some other molang parsing issues
- Misc cleanup
### Bug Fixes
- Fixed
query.life_timebeing negatively inverted - Prevented GeckoLib crashing if attempting to animate with an empty animation
- Fixed GeckoLib crashing on newer NeoForge versions
- Fixed GeckoLib crashing when attempting to send a default
RawAnimationover network - Fixed GeckoLib not evaluating nested ternary expressions properly
- Fixed DieRollIntegerFunction giving the wrong name when asked
- Fixed a crash caused by serverbound GeckoLib packets (we don't have any at the moment anyway, but still)
- Fixed NeoForge's entity
RenderStateextensions being ignored by GeckoLib - Prevent GeckoLib crashing if attempting to retrieve an incorrectly typed
DataTicket - Fixed left-handed GeckoLib entities using first-person render context for third person offhand items
- Fixed uppercase Molang queries not being recognised by animations
- Fixed various whitespace issues with Molang expression parsing
- Fixed single-element vector arrays in Molang expressions erroring out
- Fixed custom GeckoLib resource loaders disabling themselves
- Fixed GeckoLib resource loading crashing out if a mod has both a suffixed GeckoLib resource file and a non-suffixed one with the same name
- Fixed synced singleton animatables (mostly items) colliding with another in very rare occasions
- Fixed
RawAnimationnot necessarily comparing as equal in very rare occasions - Fixed
RawAnimation.Stagenot necessarily comparing as equal in very rare occasions - Fixed
KeyFrameDatanot necessarily comparing as equal in very rare occasions - Fixed the
RawAnimation#thenWaitwaiting 20x too long - Fixed
easeinquintnot beingquint - Fixed
AnimationController#hasAnimationFinishednot working properly - Fixed a potential collision or crash caused by multithreaded handling of animation parsing or modloading
- Fixed a potential crash from reloading resources with GeckoLib animated textures present
- Added some safety checks for
ItemArmorGeoLayerto prevent crashes/errors from invalid setups - Fixed
DyeableGeoArmorRendererrendering bones at the wrong location - Fixed GeckoLib crashing the entire game if a mod attempts to animate something in an invalid way
- Fixed animations with out-of-order animation keyframes not being sorted when loading in
- Fixed a potential multi-threading crash or corruption from
SyncedSingletonAnimatableCache - Fixed a potential crash caused by unexpected values in
DieRollIntegerFunctionandRandomIntegerFunction - Fixed
SyncedSingletonAnimatableCacheacting as a slow-burning memory leak by retaining every id indefinitely - Fixed Molang expressions with empty groups '()' erroring out with little information when parsing
- Fixed top-level bones with locators throwing an error for each one on load
- Fixed GeckoLib's resource loading incorrectly telling Minecraft to move it on-thread before it's done
- Fixed multi-stage animations with a transition time not transitioning properly
- Fixed
math.atan,math.acos, andmath.asincalculating tiny values and being wrong - Some rendering performance improvements
- Fixed GeckoLib clients requiring NeoForge servers to also have GeckoLib installed
- Fixed variable assignments in Molang not parsing properly if accompanied by a tenary or sub-expression
- Added operator symbol aliases for && and || - although the bedrock spec doesn't support this technically
- Fixed negative math function results not parsing properly in molang
- Fixed some higher-level molang operators having completely incorrect precedence indexes
- Fixed some other molang parsing issues
- Misc cleanup
### Bug Fixes
- Fixed
query.life_timebeing negatively inverted - Prevented GeckoLib crashing if attempting to animate with an empty animation
- Fixed GeckoLib crashing on newer NeoForge versions
- Fixed GeckoLib crashing when attempting to send a default
RawAnimationover network - Fixed GeckoLib not evaluating nested ternary expressions properly
- Fixed DieRollIntegerFunction giving the wrong name when asked
- Fixed a crash caused by serverbound GeckoLib packets (we don't have any at the moment anyway, but still)
- Fixed NeoForge's entity
RenderStateextensions being ignored by GeckoLib - Prevent GeckoLib crashing if attempting to retrieve an incorrectly typed
DataTicket - Fixed left-handed GeckoLib entities using first-person render context for third person offhand items
- Fixed uppercase Molang queries not being recognised by animations
- Fixed various whitespace issues with Molang expression parsing
- Fixed single-element vector arrays in Molang expressions erroring out
- Fixed custom GeckoLib resource loaders disabling themselves
- Fixed GeckoLib resource loading crashing out if a mod has both a suffixed GeckoLib resource file and a non-suffixed one with the same name
- Fixed synced singleton animatables (mostly items) colliding with another in very rare occasions
- Fixed
RawAnimationnot necessarily comparing as equal in very rare occasions - Fixed
RawAnimation.Stagenot necessarily comparing as equal in very rare occasions - Fixed
KeyFrameDatanot necessarily comparing as equal in very rare occasions - Fixed the
RawAnimation#thenWaitwaiting 20x too long - Fixed
easeinquintnot beingquint - Fixed
AnimationController#hasAnimationFinishednot working properly - Fixed a potential collision or crash caused by multithreaded handling of animation parsing or modloading
- Fixed a potential crash from reloading resources with GeckoLib animated textures present
- Added some safety checks for
ItemArmorGeoLayerto prevent crashes/errors from invalid setups - Fixed
DyeableGeoArmorRendererrendering bones at the wrong location - Fixed GeckoLib crashing the entire game if a mod attempts to animate something in an invalid way
- Fixed animations with out-of-order animation keyframes not being sorted when loading in
- Fixed a potential multi-threading crash or corruption from
SyncedSingletonAnimatableCache - Fixed a potential crash caused by unexpected values in
DieRollIntegerFunctionandRandomIntegerFunction - Fixed
SyncedSingletonAnimatableCacheacting as a slow-burning memory leak by retaining every id indefinitely - Fixed Molang expressions with empty groups '()' erroring out with little information when parsing
- Fixed top-level bones with locators throwing an error for each one on load
- Fixed GeckoLib's resource loading incorrectly telling Minecraft to move it on-thread before it's done
- Fixed multi-stage animations with a transition time not transitioning properly
- Fixed
math.atan,math.acos, andmath.asincalculating tiny values and being wrong - Some rendering performance improvements
- Fixed GeckoLib clients requiring NeoForge servers to also have GeckoLib installed
- Fixed variable assignments in Molang not parsing properly if accompanied by a tenary or sub-expression
- Added operator symbol aliases for && and || - although the bedrock spec doesn't support this technically
- Fixed negative math function results not parsing properly in molang
- Fixed some higher-level molang operators having completely incorrect precedence indexes
- Fixed some other molang parsing issues
- Misc cleanup
- Fixed GeckoLib passing the wrong partialTick to GeoRenderLayer#preRender (#877)
- Fixed GeckoLib passing the wrong partialTick to GeoRenderLayer#preRender (#877)
- Fixed GeckoLib passing the wrong partialTick to GeoRenderLayer#preRender (#877)
### Bug Fixes
- Did another fix for the vanilla armour rotations on GeckoLib entities via
ItemArmorGeoLayer. This one should be the last one
### Bug Fixes
- Did another fix for the vanilla armour rotations on GeckoLib entities via
ItemArmorGeoLayer. This one should be the last one
### Bug Fixes
- Did another fix for the vanilla armour rotations on GeckoLib entities via
ItemArmorGeoLayer. This one should be the last one
### Bug Fixes
- Made improvements to the AnimationController to handle stopping and starting animations better (#868)
- Fixed non-GeckoLib armour rotating incorrectly when placed on a GeckolibEntity using
ItemArmorGeoLayer(#843) - Fix animations going weird speeds when things render existing objects with a partialTick of 1.0 for some reason (#848)
- Patch out GeckoLib's custom emissivity if not on windows, since linux and mac both fail gl functionality (#864)
- Fix EasingTypes being case-sensitive and then just kinda failing entirely (#861)
- Optimize out unused faces, remove auto-face expansion (#855)
- Fix inconsistency with tick retrieval for non-entity renderers (#846)
- Fix wrong frozen-state handling for animated items
- Fixed triggerable animations not stopping when told to stop if the loop type does not allow stopping (#863)
- Fix keyframes not being sorted, causing missed frames (#842)
### Bug Fixes
- Made improvements to the AnimationController to handle stopping and starting animations better (#868)
- Fixed non-GeckoLib armour rotating incorrectly when placed on a GeckolibEntity using
ItemArmorGeoLayer(#843) - Fix animations going weird speeds when things render existing objects with a partialTick of 1.0 for some reason (#848)
- Patch out GeckoLib's custom emissivity if not on windows, since linux and mac both fail gl functionality (#864)
- Fix EasingTypes being case-sensitive and then just kinda failing entirely (#861)
- Optimize out unused faces, remove auto-face expansion (#855)
- Fix inconsistency with tick retrieval for non-entity renderers (#846)
- Fix wrong frozen-state handling for animated items
- Fixed triggerable animations not stopping when told to stop if the loop type does not allow stopping (#863)
- Fix keyframes not being sorted, causing missed frames (#842)
### Bug Fixes
- Made improvements to the AnimationController to handle stopping and starting animations better (#868)
- Fixed non-GeckoLib armour rotating incorrectly when placed on a GeckolibEntity using
ItemArmorGeoLayer(#843) - Fix animations going weird speeds when things render existing objects with a partialTick of 1.0 for some reason (#848)
- Patch out GeckoLib's custom emissivity if not on windows, since linux and mac both fail gl functionality (#864)
- Fix EasingTypes being case-sensitive and then just kinda failing entirely (#861)
- Optimize out unused faces, remove auto-face expansion (#855)
- Fix inconsistency with tick retrieval for non-entity renderers (#846)
- Fix wrong frozen-state handling for animated items
- Fixed triggerable animations not stopping when told to stop if the loop type does not allow stopping (#863)
- Fix keyframes not being sorted, causing missed frames (#842)
- Fixed GeckoLib blocks being completely broken (#869)
- Fixed GeckoLib blocks being completely broken (#869)
- Fixed GeckoLib blocks being completely broken (#869)
- Added
AttachedAnimatableRenderLayerand a handful of subclasses to make rendering GeckoLib objects on vanilla models (such as players) a lot easier - Fixed GeoBlockEntities not having correct bone positions (#841)
- Prevent invalid animation mcmetas being loaded by GeckoLib
- Added
AttachedAnimatableRenderLayerand a handful of subclasses to make rendering GeckoLib objects on vanilla models (such as players) a lot easier - Fixed GeoBlockEntities not having correct bone positions (#841)
- Prevent invalid animation mcmetas being loaded by GeckoLib
