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!

28.62M
2,266
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-side
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 3 years ago
Updated last month
DescriptionGalleryChangelogVersions
All versionsForge 1.21.10

Forge 1.21.10

Download
Report

Changelog

GeckoLib v5.3-alpha-3

Alpha 3 Notes:

  • Fixed a crash on world load (#776)
  • More internal changes around armour rendering and ItemArmorGeoLayer
  • Sorry to say, there's more API changes coming in the next version :(

Alpha 2 Notes:

  • Fix Forge crashing on load on newer Forge versions (#773)
  • Fix GeoArmorRenderer crashing when not rendering a full set (#771)
  • BlockAndItemGeoLayer#renderStackForBone and #renderBlockForBone renamed to #submitItemStackRender and #submitBlockRender respectively
  • Moved the OBJECT_RENDER_POSE and MODEL_RENDER_POSE DataTickets to the base GeoRenderer, so that subclasses do not need to handle them in overrides
  • Fixed only handling 1 PerBoneRenderTask per GeoBone
  • Added GeoBone#transformToBone
  • Split PerBoneRender tasks out into GeoRenderer#submitPerBoneRenderTasks
  • Removed the skipPerBoneTasks in several GeoRenderer method calls as it is no longer needed
  • Created PerBoneRenderTasks for neatly handling per-bone render tasks given their added complexity
  • Restricted GeoArmorLayer's generic type to require an AvatarRenderState, as that is the actual type required by the models used
  • Added RenderStateUtil

Changes

  • Port to 1.21.10
    • NOTE: This is an ALPHA build, and may be subject to breaking changes until the alpha tag is removed.
    • The PACKED_LIGHT DataTicket is no longer filled for most GeoRenderers, as the base RenderState classes contain lightCoords now by default
    • Added GeoRenderState#getPackedLight
    • GeoRenderer#defaultRender has been renamed to #submitRenderTasks to better represent its function now that we're not actually rendering at the time of that call
    • GeoRenderer#actuallyRender has been renamed to #buildRenderTask to better represent its function
    • GeoLayer#render has been renamed to #buildRenderTask to better represent its function
    • GeoRenderer#reRender has been removed. Instead, render layers or renderers should submit another render task via GeoRenderer#buildRenderTask. Consequently, you no longer need to check for isReRender in renderer methods
    • preRender, scaleModelForRender, and adjustPositionForRender have all been moved to after the preRender event check
    • Added GeoRenderer#createRenderState
    • Removed GeoEntityRenderer#createBaseRenderState - Use #createRenderState instead
    • Removed various DataTickets from the default setup, where they're just a blatant clone of existing vanilla properties, to eliminate multiple sources of truth and improve performance
    • The various Matrix4f variables in GeckoLib renderers has been moved to DataTickets
    • Removed GeoRenderer#doPostRenderCleanup
    • Added the associated HumanoidModel to GeoArmorLayer.RenderData
    • Added RenderModelPositioner
  • Rewrote GeoArmorRenderer - it should now be significantly easier to use and understand
  • Change DefaultedEntityGeoModel to take a customisable bone name instead of a flat boolean
  • Added #withRenderLayer to the various GeoRenderers to allow for a functional instantiation
  • GeoObjectRenderer now uses a generic for its GeoRenderState, allowing for generic extensibility
  • Directly pass the partialTick to GeoRenderer#addRenderData, GeoRenderLayer#addRenderData, GeoModel#prepareForRenderPass, and the various CompileRenderState events/hooks (#762)
  • Renamed GeoRenderer#adjustPositionForRender to #adjustRenderPose to better reflect its intended usage
  • ItemArmorGeoLayer.RenderData now uses GeoArmorRenderer.ArmorSegments instead of manual slots and part getters
  • Made GeoRenderEvent and its various sub-events multiloader compatible
  • All platform-specific GeckoLib events are now split into their own individual classes to make it easier to find and manage them. E.G. CompileBlockRenderLayersEvent

Additions

  • Added "Stateless" animatables. These are an alternate way of handling animations for GeckoLib animatables.
    • See: https://github.com/bernie-g/geckolib/wiki/Stateless-Animatable-Handling-(Geckolib5)
    • Added:
      • StatelessGeoBlockEntity
      • StatelessGeoEntity
      • StatelessGeoObject
      • StatelessGeoReplacedEntity
      • StatelessGeoSingletonAnimatable
      • StatelessAnimationController
  • Added attack.punch DefaultAnimation constant
  • Added misc.idle.flying DefaultAnimation constant
  • Added move.dive DefaultAnimation constant
  • Added DefaultAnimations#triggerOnlyController for creating a controller specifically for arbitrary triggered animations
  • Added RawAnimation#getStageCount
  • Added AnimationController#getStateHandler
  • Added DefaultAnimations#genericWalkFlyIdleController
  • Added a constructor overload for various GeckoLib renderers that takes the item directly and creates a defaulted instance using the object's registered ID for quick and easy handling
    • E.G. new GeoEntityRenderer(ModEntities.MY_ENTITY);
  • Added GeoRenderEvent#hasData
  • Added RenderUtil#getReplacedEntityRenderer
  • Added RenderUtil#getGeckoLibItemRenderer
  • Added RenderUtil#getGeckoLibEntityRenderer
  • Added RenderUtil#getGeckoLibBlockRenderer
  • Added RenderUtil#getGeckoLibArmorRenderer

Bug Fixes

  • Add double-depth bedrock keyframe parsing because I have no idea why Blockbench is exporting that
  • Fixed triggered animations not visually working on brand-new stacks in multiplayer for other players
  • Fixed some incorrect javadocs in AnimationController
  • Ensure the EntityRenderState is properly extracted before passing to GeoArmorRenderer for extraction

Internal Changes

  • Reorganised GeckoLib's packets into folders
  • Added a StreamCodec implementation for Animation.Stage
  • Added a StreamCodec implementation for RawAnimation
  • Added javadocs to more internal methods and all of the mixins, for clarity
  • Improved the Javadoc on GeoRenderEvent#getRenderData
  • Removed RenderUtil#getCurrentSystemTick
  • Removed RenderUtil#booleanToFloat
  • Removed RenderUtil#getGeoModelForEntityType
  • Removed RenderUtil#getGeoModelForEntity
  • Removed RenderUtil#getGeoModelForItem
  • Removed RenderUtil#getGeoModelForBlock
  • Removed RenderUtil#getGeoModelForArmor
  • Moved RenderUtil#getCurrentTick to ClientUtil
  • Moved RenderUtil#arrayToVec to JsonUtil
  • Removed some superfluous parameters from GeoRenderProvider#getGeoArmorRenderer
  • Renamed ItemArmorGeoLayer#prepHumanoidModelForRender to #positionModelPartFromBone

Files

geckolib-forge-1.21.10-5.3-alpha-3.jar(1.28 MiB) Primary
Download

Metadata

Release channel

Release

Version number

5.3-alpha-3

Loaders

Forge

Game versions

1.21.10

Downloads

7050

Publication date

October 29, 2025 at 9:32 PM

Publisher

Tslat

Tslat

Maintainer

Version ID

Modrinth is open source.

app-ads@1633f40

© 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.