Compatibility
Minecraft: Java Edition
1.21.10
1.21.3–1.21.8
1.21–1.21.1
1.20.x
1.19.1–1.19.4
1.18.2
1.17.1
1.16.5
1.15.2
1.12.2
Platforms
Supported environments
Creators
Details
Licensed MIT
Created 3 years ago
Updated 2 days ago
Changelog
GeckoLib v5.0-alpha1
NOTE
- As of
alpha1glowmasks and animated textures are not functional. This will be resolved soon :) - Additionally, I'm looking into alternate solutions for per-bone render handling since Mojang has made the previous Dynamic renderers not practical.
- If you use any of these functionalities, wait until the 5.0 full release, thanks.
General Changes
- Updated to Minecraft 1.21.5
- Converted the changelog to Markdown format
Internal Changes
- Rewrote the resource loading system to properly account for parallelised resource handling without hammering I/O
- Made GeoArmorRenderer inherit bone visibility from HumanoidArmorLayer#setPartVisibility to better work with third-party mods
- Default boneResetTime to 5-ticks, and auto-complete the reset the tick time is 0. This prevents unavoidable partial-tick bone resets
- Fixed middle-clicking on synced animatable items causing them to conflict when using triggered animations or synced data (#681)
- Bones that now use animations to do a full rotation should now no longer counter-rotate when resetting, allowing for cleaner rotation animations
- Synced animatable items no longer prevent stacking with each other
- Added memory compression to animation data. Larger modpacks should receive a reduction in memory usage
- Added a safety check for invalid use of Actor Variables in molang
- GeckoLib Entity rendering is now automatically compatible with NeoForge EntityRenderState modifiers
- Overrode vanilla's default hard-cap on entity nameplate rendering of 64 blocks. You can now go up to 256 blocks
- Fixed world-space positioning on GeoBones not accounting for partial-tick lerping
- Fixed non-living entities not having their Y-rotation accounted for in rendering
- Fixed death rotation doubling up on partialTick
- Fixed the BufferSource not being properly non-nulled in
GeoObjectRenderer - Fixed
GeoEntityRendererre-applying other PoseStack manipulations when reRendering - Moved a lot of the render value creation back to vanilla to allow for better compatibility with vanilla and other mods
- Removed a number of superfluous method parameters throughout
AnimationProcessor - Renamed
AnimationController#processtoAnimationController#startTick - Fixed the
DefaultAnimations#genericFlyControllernot stopping if not moving - Moved the AnimationState to prior to rendering to allow for optimised Molang Query population
- Fixed
AnimationController's animation speed potentially being re-computed multiple times per render pass, resulting in inconsistent animation handling - Renamed
KeyframestoKeyframeMarkers - GeckoLib now pre-determines which Molang Queries will be used for any given render frame, and pre-compute all relevant values and cache them. This allows for complex animation
- Moved
AnimatableManagerand any derivatives to a different package - Moved
AnimationController,AnimationProcessor,AnimationStateto a different package - Moved
AutoPlayingSoundKeyframeHandlerto a different package - Removed
AnimationPointQueue - Moved per-bone render layer rendering to after the rest of rendering is complete
- Changed the way
DyeableGeoArmorRendererworks to be a bit more accurate - Fixed some javadoc mistakes in the various GeoRenderEvent classes
API Changes
- All GeckoLib assets now go in /assets/geckolib/
- Animations go in
/assets/<modid>/geckolib/animations/ - Models go in
/assets/<modid>/geckolib/models/
- Animations go in
- All GeoRenderers now run on GeoRenderStates, rather than passing the animatable around. Mojang has made it clear this is the way we have to go :(
- Removed
GeoRenderer#getAnimatable - Removed various parameters from GeoRenderer's methods, moved them to
GeoRenderStateby default - Removed
GeoEntityRenderer#isShaking
- Removed
AnimationStateis now an internal class used for carrying the animation state through processing. Users should now useAnimationTest. It works functionally the same- GeoRenderers extensions now take a second generic type; that of the RenderState type (and GeoRenderState)
- GeoModel model/animation references no longer expect the file path prefix or suffix (I.E. You do not need to include
geo/or.geo.jsonin your returned model resources) DataTickets now require creation through a factory method to ensure identity-paritySerializableDataTickets no longer require registration, but must still be created during mod construct- All render methods in
GeoRendererhas had the PoseStack and RenderState (previously Animatable) swap places in the args - Molang variables are now all functions that operate on the current
AnimationStatefor the render pass AnimationControllers no longer need the animatable passed to it- Split the texture-retrieval and usage in
AutoGlowingGeoLayerso that mods can override the texture as needed - All
DefaultAnimationshelpers now default to 0-tick transition time for consistency and clarity - Converted the FormatVersion to a string and converted it to a more flexible system
- Introduced an identity-based lookup for synced singleton animatables, to hopefully eliminate class-duplication collisions
- Marked
AnimationState#getDataas nullable to avoid confusion - Marked the easingType argument in
EasingTypeas nullable to avoid confusion - Cleaned up the javadoc for EasingType
GeoReplacedEntityRenderernow explicitly crashes upon trying to insert an entity as the animatable to prevent memory leaks- Brought
GeoReplacedEntityRenderermuch more in line withGeoEntityRendererto ensure accuracy CustomInstructionKeyframeEvent,SoundKeyframeEvent, andParticleKeyframeEventhave all been consolidated intoKeyFrameEventCustomInstructionKeyframeHandler,SoundKeyframeHandler, andParticleKeyframeHandlerhave all been consolidated intoKeyframeEventHandler- Converted
KeyFrameEventto a record - Converted
Calculationto a record MolangQueriesis once again side-agnostic- Various parts of the GeoRenderers are additionally provided an associated object for handling (ItemStack, replaced entity, etc.)
- Moved
prepLivingEntityRenderStateintoGeoEntityRendererso it can be overridden if needed - Removed
EntityModelData - Removed
DeferredGeoRenderProvider - Removed
InternalUtil - Removed
FileLoader - Removed
Color. Has been fully superceded bynet.minecraft.util.ARGB - Removed the
GeoRendererparameter from the variousGeoModelgetters as it is no longer needed - Renamed the bone variables in
GeoArmorRendererto prevent collisions withHumanoidArmorModel's field names - Renamed
GeckoLibCachetoGeckoLibResources - Renamed
AnimatableManager#setDatatoAnimatableManager#setAnimatableData(and its associated getter) - Renamed
AutoGlowingTexture#getEmissiveResourceto#getOrCreateEmissiveTexturefor clarity - Moved
GeoEntityRenderStatetoGeoRenderState - The various Singleton registration helpers in
GeckoLibUtilhave been moved to the newSyncedSingletonAnimatableCache, with associated methods having their hierarchical scope reduced for clarity and safety - Renamed
GeoRenderLayer#renderForBoneto#createPerBoneRender, which now requires that you return your operation as a runnable to be run later - Removed
DynamicGeoBlockRenderer,DynamicGeoEntityRenderer, andDynamicGeoItemRenderer. Use render layers instead for bone-specific handling. I will be looking at creating a helper class or alternate option for this - Improved the generic typing for the various
GeoRenderEvents to be more useful
New Stuff
- Added
stopTriggeredAnimationtoSingletonGeoAnimatable - Added
triggerArmorAnimfor triggering armor animations (#433) - Added
query.controller_speedMolang query - Added
query.limb_swingMolang query - Added
query.limb_swing_amountMolang query - Added native support for catmull-rom (smooth) easings for bedrock-style animation jsons (Thanks for the initial work Zigy)
- Animated textures now support glowmasks (#456)
- Added helper methods in
GeoRenderer#setBonesVisiblefor ease of use - Added
AnimationController#isTriggeredAnimationto check for the currently triggered animation - Added
AnimationController#setAnimationStateto directly set the state of the controller, if necessary - Added
CompileRenderStateevent hooks for each renderer type
Dependencies
Files
Metadata
Release channel
ReleaseVersion number
5.0-alpha1Loaders
Game versions
1.21.5Downloads
2442Publication date
April 8, 2025 at 10:53 AMPublisher
Tslat
Maintainer



