Mods
Resource Packs
Data Packs
Modpacks
Shaders
Plugins
Mods Resource Packs Data Packs Plugins Shaders Modpacks
Get Modrinth App Upgrade to Modrinth+
Sign in
ModsPluginsData PacksShadersResource PacksModpacks
Sign in
Settings
Geckolib

Geckolib

A 3D animation library for entities, blocks, items, armor, and more!

12.59M
1,638
Game Mechanics
Library
Utility

Compatibility

Minecraft: Java Edition

1.21.x
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

Fabric
Forge
NeoForge
Quilt

Supported environments

Client and server

90% of ad revenue goes to creators

Support creators and Modrinth ad-free with Modrinth+

Links

Report issues View source Visit wiki Join Discord server

Creators

Gecko
Gecko Owner
DerToaster98
DerToaster98 Contributor
KyoSleep
KyoSleep Contributor
mchorse
mchorse Contributor
Tslat
Tslat Maintainer
ZigyTheBird
ZigyTheBird Member

Details

Licensed MIT
Created 2 years ago
Updated 2 weeks ago
DescriptionGalleryChangelogVersions
All versionsFabric 1.21.5

Fabric 1.21.5

Download
Report

Changelog

GeckoLib v5.0-alpha1

NOTE

  • As of alpha1 glowmasks 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 GeoEntityRenderer re-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#process to AnimationController#startTick
  • Fixed the DefaultAnimations#genericFlyController not 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 Keyframes to KeyframeMarkers
  • 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 AnimatableManager and any derivatives to a different package
  • Moved AnimationController, AnimationProcessor, AnimationState to a different package
  • Moved AutoPlayingSoundKeyframeHandler to a different package
  • Removed AnimationPointQueue
  • Moved per-bone render layer rendering to after the rest of rendering is complete
  • Changed the way DyeableGeoArmorRenderer works 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/
  • 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 GeoRenderState by default
    • Removed GeoEntityRenderer#isShaking
  • AnimationState is now an internal class used for carrying the animation state through processing. Users should now use AnimationTest. 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.json in your returned model resources)
  • DataTickets now require creation through a factory method to ensure identity-parity
  • SerializableDataTickets no longer require registration, but must still be created during mod construct
  • All render methods in GeoRenderer has had the PoseStack and RenderState (previously Animatable) swap places in the args
  • Molang variables are now all functions that operate on the current AnimationState for the render pass
  • AnimationControllers no longer need the animatable passed to it
  • Split the texture-retrieval and usage in AutoGlowingGeoLayer so that mods can override the texture as needed
  • All DefaultAnimations helpers 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#getData as nullable to avoid confusion
  • Marked the easingType argument in EasingType as nullable to avoid confusion
  • Cleaned up the javadoc for EasingType
  • GeoReplacedEntityRenderer now explicitly crashes upon trying to insert an entity as the animatable to prevent memory leaks
  • Brought GeoReplacedEntityRenderer much more in line with GeoEntityRenderer to ensure accuracy
  • CustomInstructionKeyframeEvent, SoundKeyframeEvent, and ParticleKeyframeEvent have all been consolidated into KeyFrameEvent
  • CustomInstructionKeyframeHandler, SoundKeyframeHandler, and ParticleKeyframeHandler have all been consolidated into KeyframeEventHandler
  • Converted KeyFrameEvent to a record
  • Converted Calculation to a record
  • MolangQueries is once again side-agnostic
  • Various parts of the GeoRenderers are additionally provided an associated object for handling (ItemStack, replaced entity, etc.)
  • Moved prepLivingEntityRenderState into GeoEntityRenderer so it can be overridden if needed
  • Removed EntityModelData
  • Removed DeferredGeoRenderProvider
  • Removed InternalUtil
  • Removed FileLoader
  • Removed Color. Has been fully superceded by net.minecraft.util.ARGB
  • Removed the GeoRenderer parameter from the various GeoModel getters as it is no longer needed
  • Renamed the bone variables in GeoArmorRenderer to prevent collisions with HumanoidArmorModel's field names
  • Renamed GeckoLibCache to GeckoLibResources
  • Renamed AnimatableManager#setData to AnimatableManager#setAnimatableData (and its associated getter)
  • Renamed AutoGlowingTexture#getEmissiveResource to #getOrCreateEmissiveTexture for clarity
  • Moved GeoEntityRenderState to GeoRenderState
  • The various Singleton registration helpers in GeckoLibUtil have been moved to the new SyncedSingletonAnimatableCache, with associated methods having their hierarchical scope reduced for clarity and safety
  • Renamed GeoRenderLayer#renderForBone to #createPerBoneRender, which now requires that you return your operation as a runnable to be run later
  • Removed DynamicGeoBlockRenderer, DynamicGeoEntityRenderer, and DynamicGeoItemRenderer. 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 stopTriggeredAnimation to SingletonGeoAnimatable
  • Added triggerArmorAnim for triggering armor animations (#433)
  • Added query.controller_speed Molang query
  • Added query.limb_swing Molang query
  • Added query.limb_swing_amount Molang 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 #setBonesVisible for ease of use
  • Added AnimationController#isTriggeredAnimation to check for the currently triggered animation
  • Added AnimationController#setAnimationState to directly set the state of the controller, if necessary
  • Added CompileRenderState event hooks for each renderer type

Dependencies

dependency-iconFabric APIrequired

Files

geckolib-fabric-1.21.5-5.0-alpha1.jar(632.91 KiB) Primary
Download

Metadata

Release channel

Release

Version number

5.0-alpha1

Loaders

Fabric

Game versions

1.21.5

Downloads

2290

Publication date

April 8, 2025 at 10:53 AM

Publisher

Tslat

Tslat

Maintainer

Version ID

Modrinth is open source.

main@4b75cb8

© Rinth, Inc.

Company

TermsPrivacyRulesCareers

Resources

SupportBlogDocsStatus

Interact

Discord X (Twitter) Mastodon Crowdin
Get Modrinth App Settings
NOT AN OFFICIAL MINECRAFT SERVICE. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT.