Tags
Creators
Details
Licensed MIT
Created 4 years ago
All versions
5.3-alpha-2
Release
Fabric 1.21.109 months ago 7,656
Compatibility
Minecraft: Java Edition
1.21.10
Platform
Fabric
Supported environments
Client-side
Client and server
Required content
Any compatible version
Changes
GeckoLib v5.3-alpha-2
Alpha 2 Notes:
- Fix Forge crashing on load on newer Forge versions (#773)
- Fix GeoArmorRenderer crashing when not rendering a full set (#771)
BlockAndItemGeoLayer#renderStackForBoneand#renderBlockForBonerenamed to#submitItemStackRenderand#submitBlockRenderrespectively- Moved the
OBJECT_RENDER_POSEandMODEL_RENDER_POSEDataTickets to the baseGeoRenderer, so that subclasses do not need to handle them in overrides - Fixed only handling 1
PerBoneRenderTaskperGeoBone - Added
GeoBone#transformToBone - Split
PerBoneRendertasks out intoGeoRenderer#submitPerBoneRenderTasks - Removed the
skipPerBoneTasksin severalGeoRenderermethod calls as it is no longer needed - Created
PerBoneRenderTasksfor neatly handling per-bone render tasks given their added complexity - Restricted
GeoArmorLayer's generic type to require anAvatarRenderState, 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
lightCoordsnow by default - Added
GeoRenderState#getPackedLight GeoRenderer#defaultRenderhas been renamed to#submitRenderTasksto better represent its function now that we're not actually rendering at the time of that callGeoRenderer#actuallyRenderhas been renamed to#buildRenderTaskto better represent its functionGeoLayer#renderhas been renamed to#buildRenderTaskto better represent its functionGeoRenderer#reRenderhas been removed. Instead, render layers or renderers should submit another render task viaGeoRenderer#buildRenderTask. Consequently, you no longer need to check forisReRenderin renderer methodspreRender,scaleModelForRender, andadjustPositionForRenderhave all been moved to after the preRender event check- Added
GeoRenderer#createRenderState - Removed
GeoEntityRenderer#createBaseRenderState- Use#createRenderStateinstead - 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
- 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
#withRenderLayerto the variousGeoRenderers to allow for a functional instantiation GeoObjectRenderernow uses a generic for itsGeoRenderState, allowing for generic extensibility- Directly pass the partialTick to
GeoRenderer#addRenderData,GeoRenderLayer#addRenderData,GeoModel#prepareForRenderPass, and the variousCompileRenderStateevents/hooks (#762) - Renamed
GeoRenderer#adjustPositionForRenderto#adjustRenderPoseto better reflect its intended usage ItemArmorGeoLayer.RenderDatanow usesGeoArmorRenderer.ArmorSegments instead of manual slots and part getters- Made
GeoRenderEventand 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:
StatelessGeoBlockEntityStatelessGeoEntityStatelessGeoObjectStatelessGeoReplacedEntityStatelessGeoSingletonAnimatableStatelessAnimationController
- Added
attack.punchDefaultAnimation constant - Added
misc.idle.flyingDefaultAnimation constant - Added
move.diveDefaultAnimation constant - Added
DefaultAnimations#triggerOnlyControllerfor 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);
- E.G.
- 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
EntityRenderStateis properly extracted before passing toGeoArmorRendererfor 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#getCurrentTicktoClientUtil - Moved
RenderUtil#arrayToVectoJsonUtil - Removed some superfluous parameters from
GeoRenderProvider#getGeoArmorRenderer - Renamed
ItemArmorGeoLayer#prepHumanoidModelForRenderto#positionModelPartFromBone
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:8BmcQJ2H:cdTrPfjT"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:8BmcQJ2H:cdTrPfjT"
}

