GeckoLib

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

File Details

geckolib-forge-1.21.10-5.3-alpha-3.jar

  • R
  • Oct 29, 2025
  • 1.28 MB
  • 129.5K
  • 1.21.10
  • Forge

File Name

geckolib-forge-1.21.10-5.3-alpha-3.jar

Supported Versions

  • 1.21.10

Curse Maven Snippet

Forge

implementation "curse.maven:geckolib-388172:7164564"
Curse Maven does not yet support mods that have disabled 3rd party sharing

Learn more about Curse Maven

## 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 `GeoRenderer`s 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.ArmorSegment`s 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`