All Mods Resource Packs Data Packs Shaders Modpacks Plugins
AzureLib

AzureLib

by AzureDoom • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions
logo


logo AzureLib represents a branch derived from Geckolib 4.x, serving as an animation engine tailored for Minecraft Mods. It boasts various features, including support for intricate 3D keyframe-driven animations, over 30 different easing functions, concurrent animation capabilities, sound and particle keyframes, event-based keyframes, and numerous other functionalities. Currently, I'll focus on maintaining and supporting AzureLib; no help will be given to Geckolib.




Are you a developer and want to use this library in your mod? Add the following to your build.gradle


Follow the steps here.

Need a server to play with friends? Don't know how to setup one? Just rent an already configured server from BisectHosting! logo

Click on the picture above, select plan(at least 4GB), and use my code azuredoom to get 25% off your first month and enjoy playing with your friends!

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.3
Neoforge
17h ago 1
26.3
Fabric
17h ago 1
26.1.2
Fabric
17h ago 1
26.1.2
Neoforge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
26.1.2
Fabric
17h ago 1
26.1.2
Neoforge
17h ago 1
26.3
Fabric
17h ago 1
26.3
Neoforge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
26.3
Neoforge
17h ago 1
26.3
Fabric
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
26.3
Neoforge
17h ago 1
26.3
Fabric
17h ago 1
26.3
Fabric
17h ago 1
26.3
Neoforge
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
26.3
Neoforge
17h ago 1
26.3
Fabric
17h ago 1
26.3
Fabric
17h ago 1
26.3
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
26.3
Fabric
17h ago 1
26.3
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
26.3
Neoforge
17h ago 1
26.3
Fabric
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
26.3
Fabric
17h ago 1
26.3
Neoforge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
26.3
Neoforge
17h ago 1
26.3
Fabric
17h ago 1
26.2
Fabric
17h ago 1
26.2
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Fabric
17h ago 1
1.15.2
Forge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.15.2
Forge
17h ago 1
1.15.2
Fabric
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.15.2
Fabric
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Fabric
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.15.2
Fabric
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Fabric
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.15.2
Fabric
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Fabric
17h ago 1
1.15.2
Forge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.15.2
Fabric
17h ago 1
1.15.2
Forge
17h ago 1
1.15.2
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.15.2
Fabric
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.15.2
Fabric
17h ago 1
1.20.1
Forge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.2
Forge
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.6
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.21.1
Neoforge
17h ago 1
1.21.1
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.4
Forge
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.15.2
Forge
17h ago 1
1.21
Neoforge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.21
Neoforge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.21
Neoforge
17h ago 1
1.21
Fabric Quilt
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.16.5
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.16.5
Forge
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.16.5
Forge
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.6
Neoforge
17h ago 1
1.20.6
Fabric Quilt
17h ago 1
1.20.5
Neoforge
17h ago 1
1.20.5
Fabric Quilt
17h ago 1
1.20.5
Neoforge
17h ago 1
1.20.5
Fabric Quilt
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Fabric Quilt
17h ago 1
1.19.4
Forge
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Fabric
17h ago 1
1.19.2
Fabric
17h ago 1
1.19.4
Forge
17h ago 1
1.19.2
Forge
17h ago 1
1.18.2
Fabric
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.18.2
Forge
17h ago 1
1.17.1
Forge
17h ago 1
1.16.5
Forge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.20.4
Neoforge
17h ago 1
1.20.4
Fabric Quilt
17h ago 1
1.20.3
Fabric Quilt
17h ago 1
1.20.3
Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.4
Forge
17h ago 1
1.19.4
Fabric Quilt
17h ago 1
1.19.2
Forge
17h ago 1
1.19.2
Fabric Quilt
17h ago 1
1.18.2
Fabric Quilt
17h ago 1
1.18.2
Forge
17h ago 1
1.17.1
Forge
17h ago 1
1.17.1
Fabric
17h ago 1
1.16.5
Fabric
17h ago 1
1.16.5
Forge
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.19.2
Forge
17h ago 1
1.20.2
Fabric Quilt
17h ago 1
1.20.2
Neoforge
17h ago 1
1.20.1
Fabric
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric
17h ago 1
1.20.1
Fabric
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
1.20.1
Forge Neoforge
17h ago 1
1.20.1
Neoforge
17h ago 1
1.20.1
Forge
17h ago 1
1.20.1
Fabric Quilt
17h ago 1
v4.0.10

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v4.0.10

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v4.0.10

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v4.0.10

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v3.1.19

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v3.1.19

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v3.1.20

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v3.1.20

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v3.2.19

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v3.2.19

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v3.2.19

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v3.2.19

### Additions
  • Animation LOD now works. Past animLodDistance, entities update their animations once every animLodTickInterval ticks and hold their pose in between, instead of animating every frame.

### Fixes
  • Fixed animation LOD having no effect. The LOD decision was computed but ignored, so distant entities still animated every frame.
  • Fixed models and animations that could briefly go missing during a resource reload (F3+T or changing resource packs in-world). The caches were filled in place on a background thread while the game was still rendering from them; they are now loaded separately and swapped in once the reload finishes.
  • Fixed models and animations from removed resource packs staying loaded until restart.
  • Fixed one geo model that failed to bake stopping every remaining model from loading. The broken model is now logged and skipped.
  • Fixed a crash when an animation file includes a file that is missing or failed to load. The animation is now logged as missing instead.
  • Fixed bone LOD being able to hide bones on the shared model template before an entity had its own copy, which newly spawned entities could then inherit.
  • Fixed per-entity LOD state never being released after entities unloaded.

### Changes
  • Changed LOD to be DISABLED by default when a render doesn't call withLodConfig.

### Developer Notes
  • AzResourceCache#loadResources now returns CompletableFuture<Map<ResourceLocation, T>> and no longer takes a BiConsumer. AzBakedAnimationCache#loadAnimations and AzBakedModelCache#loadModels return the loaded map; publish it with the new apply(Map). Namespaces in EXCLUDED_NAMESPACES are now skipped before loading instead of after.
  • Added AzEntityRenderer#shouldAnimateThisFrame() and the overridable updateLod(...). Custom entity model renderers that override render should check shouldAnimateThisFrame() before calling handleAnimation, or animation LOD won't apply to them.
  • LOD is opt-in: renderers that never call withLodConfig don't use bone or animation LOD. Pass AzLodConfig.DEFAULT for the built-in preset (one animation update every 2 ticks past 48 blocks; bones deeper than depth 3 hidden past 40 blocks) or build your own with AzLodConfig.builder().

v4.0.9

### Additions
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes, which noticeably cuts animation cost for models with many bones.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v4.0.9

### Additions
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes, which noticeably cuts animation cost for models with many bones.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v4.0.9

### Additions
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes, which noticeably cuts animation cost for models with many bones.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v4.0.9

### Additions
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes, which noticeably cuts animation cost for models with many bones.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v3.1.18

### Additions
  • Large groups of animated entities are now cheaper to render:
  • Bones no longer allocate a new pose every frame. Each bone used to create a new PoseStack pose, matrix and normal matrix every frame for every entity on screen; the pose is now saved and restored in place. This roughly halves render-thread allocation and makes garbage collection pauses about half as frequent.
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.
  • Animated textures no longer use reflection, and no longer throw and catch an exception, on every render of every textured model.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzModelRenderer#saveBonePose and restoreBonePose, which replace PoseStack#pushPose / popPose around each bone. The entity and block entity model renderers use them; the item and armor model renderers no longer push their own pose per bone. Custom model renderers that override renderRecursively should do the same, since pushPose allocates on every call in this version.
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • AnimatableTexture#setAndUpdate handles AzureLib's own textures with a plain type check. For other texture classes it still calls setAnimationFrame(int) when they have one, but looks the method up once per class instead of on every call.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v3.1.18

### Additions
  • Large groups of animated entities are now cheaper to render:
  • Bones no longer allocate a new pose every frame. Each bone used to create a new PoseStack pose, matrix and normal matrix every frame for every entity on screen; the pose is now saved and restored in place. This roughly halves render-thread allocation and makes garbage collection pauses about half as frequent.
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.
  • Animated textures no longer use reflection, and no longer throw and catch an exception, on every render of every textured model.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzModelRenderer#saveBonePose and restoreBonePose, which replace PoseStack#pushPose / popPose around each bone. The entity and block entity model renderers use them; the item and armor model renderers no longer push their own pose per bone. Custom model renderers that override renderRecursively should do the same, since pushPose allocates on every call in this version.
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • AnimatableTexture#setAndUpdate handles AzureLib's own textures with a plain type check. For other texture classes it still calls setAnimationFrame(int) when they have one, but looks the method up once per class instead of on every call.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v3.1.19

### Additions
  • Large groups of animated entities are now cheaper to render:
  • Bones no longer allocate a new pose every frame. Each bone used to create a new PoseStack pose, matrix and normal matrix every frame for every entity on screen; the pose is now saved and restored in place. This roughly halves render-thread allocation and makes garbage collection pauses about half as frequent.
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.
  • Animated textures no longer use reflection, and no longer throw and catch an exception, on every render of every textured model.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzModelRenderer#saveBonePose and restoreBonePose, which replace PoseStack#pushPose / popPose around each bone. The entity and block entity model renderers use them; the item and armor model renderers no longer push their own pose per bone. Custom model renderers that override renderRecursively should do the same, since pushPose allocates on every call in this version.
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • AnimatableTexture#setAndUpdate handles AzureLib's own textures with a plain type check. For other texture classes it still calls setAnimationFrame(int) when they have one, but looks the method up once per class instead of on every call.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v3.1.19

### Additions
  • Large groups of animated entities are now cheaper to render:
  • Bones no longer allocate a new pose every frame. Each bone used to create a new PoseStack pose, matrix and normal matrix every frame for every entity on screen; the pose is now saved and restored in place. This roughly halves render-thread allocation and makes garbage collection pauses about half as frequent.
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.
  • Animated textures no longer use reflection, and no longer throw and catch an exception, on every render of every textured model.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzModelRenderer#saveBonePose and restoreBonePose, which replace PoseStack#pushPose / popPose around each bone. The entity and block entity model renderers use them; the item and armor model renderers no longer push their own pose per bone. Custom model renderers that override renderRecursively should do the same, since pushPose allocates on every call in this version.
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • AnimatableTexture#setAndUpdate handles AzureLib's own textures with a plain type check. For other texture classes it still calls setAnimationFrame(int) when they have one, but looks the method up once per class instead of on every call.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v3.2.18

### Additions
  • Large groups of animated entities are now cheaper to render:
  • Bones no longer allocate a new pose every frame. Each bone used to create a new PoseStack pose, matrix and normal matrix every frame for every entity on screen; the pose is now saved and restored in place. This roughly halves render-thread allocation and makes garbage collection pauses about half as frequent.
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.
  • Animated textures no longer use reflection, and no longer throw and catch an exception, on every render of every textured model.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzModelRenderer#saveBonePose and restoreBonePose, which replace PoseStack#pushPose / popPose around each bone. The entity and block entity model renderers use them; the item and armor model renderers no longer push their own pose per bone. Custom model renderers that override renderRecursively should do the same, since pushPose allocates on every call in this version.
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • AnimatableTexture#setAndUpdate handles AzureLib's own textures with a plain type check. For other texture classes it still calls setAnimationFrame(int) when they have one, but looks the method up once per class instead of on every call.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v3.2.18

### Additions
  • Large groups of animated entities are now cheaper to render:
  • Bones no longer allocate a new pose every frame. Each bone used to create a new PoseStack pose, matrix and normal matrix every frame for every entity on screen; the pose is now saved and restored in place. This roughly halves render-thread allocation and makes garbage collection pauses about half as frequent.
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.
  • Animated textures no longer use reflection, and no longer throw and catch an exception, on every render of every textured model.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzModelRenderer#saveBonePose and restoreBonePose, which replace PoseStack#pushPose / popPose around each bone. The entity and block entity model renderers use them; the item and armor model renderers no longer push their own pose per bone. Custom model renderers that override renderRecursively should do the same, since pushPose allocates on every call in this version.
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • AnimatableTexture#setAndUpdate handles AzureLib's own textures with a plain type check. For other texture classes it still calls setAnimationFrame(int) when they have one, but looks the method up once per class instead of on every call.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v3.2.18

### Additions
  • Large groups of animated entities are now cheaper to render:
  • Bones no longer allocate a new pose every frame. Each bone used to create a new PoseStack pose, matrix and normal matrix every frame for every entity on screen; the pose is now saved and restored in place. This roughly halves render-thread allocation and makes garbage collection pauses about half as frequent.
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.
  • Animated textures no longer use reflection, and no longer throw and catch an exception, on every render of every textured model.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzModelRenderer#saveBonePose and restoreBonePose, which replace PoseStack#pushPose / popPose around each bone. The entity and block entity model renderers use them; the item and armor model renderers no longer push their own pose per bone. Custom model renderers that override renderRecursively should do the same, since pushPose allocates on every call in this version.
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • AnimatableTexture#setAndUpdate handles AzureLib's own textures with a plain type check. For other texture classes it still calls setAnimationFrame(int) when they have one, but looks the method up once per class instead of on every call.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v3.2.18

### Additions
  • Large groups of animated entities are now cheaper to render:
  • Bones no longer allocate a new pose every frame. Each bone used to create a new PoseStack pose, matrix and normal matrix every frame for every entity on screen; the pose is now saved and restored in place. This roughly halves render-thread allocation and makes garbage collection pauses about half as frequent.
  • Animations no longer look up every animated bone by name every frame. Each controller resolves its animation's bones once and reuses them until the animation or model changes.
  • Bone LOD no longer walks every bone of every nearby entity each frame when no bones are hidden.
  • Animated textures no longer use reflection, and no longer throw and catch an exception, on every render of every textured model.

### Fixes
  • Fixed animation transitions stopping for every remaining bone when one bone had no snapshot or animation queue, instead of skipping just that bone.

### Developer Notes
  • Added AzModelRenderer#saveBonePose and restoreBonePose, which replace PoseStack#pushPose / popPose around each bone. The entity and block entity model renderers use them; the item and armor model renderers no longer push their own pose per bone. Custom model renderers that override renderRecursively should do the same, since pushPose allocates on every call in this version.
  • Added AzBoneAnimationQueueCache#resolveQueues(AzBakedAnimation), which returns each bone animation's queue by index, cached per animation and model.
  • AnimatableTexture#setAndUpdate handles AzureLib's own textures with a plain type check. For other texture classes it still calls setAnimationFrame(int) when they have one, but looks the method up once per class instead of on every call.
  • Bone LOD now tracks which baked models currently have LOD-hidden bones, so un-hiding only runs when something was actually hidden.

v4.0.8

### Additions
  • Added the math.min_angle(value) Molang function, which wraps an angle in degrees into the range [-180, 180).
  • Added AzProfiler stage hooks (mod.azure.azurelib.profiling) for external profiling tools. No cost when no listener is installed.

### Fixes
  • Fixed math.copy_sign, math.sign, math.inverse_lerp and all 30 math.ease_* Molang functions failing to resolve. They were only registered under their bare names, so the math.-prefixed forms used by Blockbench and Bedrock animations parsed to 0.
  • Fixed the entity and block entity geometry caches never hitting: their keys included each instance's position. Bone visibility is now part of the entity cache key.
  • A missing glowmask no longer draws the whole model a second time with an empty texture.

### Performance
  • Vertex recordings are sized from the previous frame, handed to submit without copying, and pooled per frame instead of allocated per animatable.
  • The auto-glowing layer reuses the main model pass instead of re-rendering the model (when no bone overrides are in use), and only submits quads whose UVs cover glowing pixels in the glowmask, including animated glowmasks.
  • The entity and block entity geometry caches switch themselves off per type when they aren't getting hits, and probe periodically.
  • Zero-area faces (the edges of flat cubes) are no longer baked or rendered.
  • Cube pivot rotations are baked once at load instead of being applied to the pose stack for every cube every frame.
  • Entity and block entity renderers reuse their extraction pose stack instead of allocating one per render.
  • Flat-cube normal fixes are precomputed per cube; bone, cube and layer loops no longer allocate iterators.
  • Glowmask texture paths are cached instead of rebuilt every frame.
  • Removed a per-quad texture size lookup for bones without a texture override.

### Developer Notes
  • The fixed Molang functions are now registered only under their math. names, matching the existing classic functions. Expressions that called them without the prefix (e.g. ease_in_quad(0, 1, t)) must be updated to use math.ease_in_quad(0, 1, t).
  • AzCube has two new record components, transform and normalFlips. The six-argument constructor still works; code that deconstructs the record with a pattern needs updating.
  • AzModelRenderer#renderCube no longer modifies the pose stack, and renderCubesOfBone no longer pushes and pops it per cube. Overrides of renderCube that change the pose stack must push and pop it themselves.
  • AzEntityGeometryCache.CacheKey and AzBlockEntityGeometryCache.CacheKey no longer have position components.
  • AzBufferSource recordings are only valid until the end of the frame; their arrays are reused after that.
  • New: AzBufferSource#mirror (with an optional QuadFilter), AzGlowCoverage, and AzAutoGlowingLayer#canReuseModelPass / #glowFilter for subclasses that draw their glow differently.

v4.0.8

### Additions
  • Added the math.min_angle(value) Molang function, which wraps an angle in degrees into the range [-180, 180).
  • Added AzProfiler stage hooks (mod.azure.azurelib.profiling) for external profiling tools. No cost when no listener is installed.

### Fixes
  • Fixed math.copy_sign, math.sign, math.inverse_lerp and all 30 math.ease_* Molang functions failing to resolve. They were only registered under their bare names, so the math.-prefixed forms used by Blockbench and Bedrock animations parsed to 0.
  • Fixed the entity and block entity geometry caches never hitting: their keys included each instance's position. Bone visibility is now part of the entity cache key.
  • A missing glowmask no longer draws the whole model a second time with an empty texture.

### Performance
  • Vertex recordings are sized from the previous frame, handed to submit without copying, and pooled per frame instead of allocated per animatable.
  • The auto-glowing layer reuses the main model pass instead of re-rendering the model (when no bone overrides are in use), and only submits quads whose UVs cover glowing pixels in the glowmask, including animated glowmasks.
  • The entity and block entity geometry caches switch themselves off per type when they aren't getting hits, and probe periodically.
  • Zero-area faces (the edges of flat cubes) are no longer baked or rendered.
  • Cube pivot rotations are baked once at load instead of being applied to the pose stack for every cube every frame.
  • Entity and block entity renderers reuse their extraction pose stack instead of allocating one per render.
  • Flat-cube normal fixes are precomputed per cube; bone, cube and layer loops no longer allocate iterators.
  • Glowmask texture paths are cached instead of rebuilt every frame.
  • Removed a per-quad texture size lookup for bones without a texture override.

### Developer Notes
  • The fixed Molang functions are now registered only under their math. names, matching the existing classic functions. Expressions that called them without the prefix (e.g. ease_in_quad(0, 1, t)) must be updated to use math.ease_in_quad(0, 1, t).
  • AzCube has two new record components, transform and normalFlips. The six-argument constructor still works; code that deconstructs the record with a pattern needs updating.
  • AzModelRenderer#renderCube no longer modifies the pose stack, and renderCubesOfBone no longer pushes and pops it per cube. Overrides of renderCube that change the pose stack must push and pop it themselves.
  • AzEntityGeometryCache.CacheKey and AzBlockEntityGeometryCache.CacheKey no longer have position components.
  • AzBufferSource recordings are only valid until the end of the frame; their arrays are reused after that.
  • New: AzBufferSource#mirror (with an optional QuadFilter), AzGlowCoverage, and AzAutoGlowingLayer#canReuseModelPass / #glowFilter for subclasses that draw their glow differently.

v3.1.17

### Additions
  • Added the math.min_angle(value) Molang function, which wraps an angle in degrees into the range [-180, 180).
  • Added AzProfiler stage hooks (mod.azure.azurelib.profiling) for external profiling tools. No cost when no listener is installed.

### Fixes
  • Fixed math.copy_sign, math.sign, math.inverse_lerp and all 30 math.ease_* Molang functions failing to resolve. They were only registered under their bare names, so the math.-prefixed forms used by Blockbench and Bedrock animations parsed to 0.

### Performance
  • The auto-glowing layer only draws quads whose UVs cover glowing pixels in the glowmask, including animated glowmasks, and skips the pass entirely when the glowmask has nothing visible.
  • Zero-area faces (the edges of flat cubes) are no longer baked or rendered.
  • Cube pivot rotations are baked once at load instead of being applied to the pose stack for every cube every frame.
  • Flat-cube normal fixes are precomputed per cube; bone, cube and layer loops no longer allocate iterators.
  • Glowmask texture paths are cached instead of rebuilt every frame.

### Developer Notes
  • The fixed Molang functions are now registered only under their math. names, matching the existing classic functions. Expressions that called them without the prefix (e.g. ease_in_quad(0, 1, t)) must be updated to use math.ease_in_quad(0, 1, t).
  • GeoCube has two new record components, transform and normalFlips. The six-argument constructor still works; code that deconstructs the record with a pattern needs updating.
  • AzModelRenderer#renderCube no longer modifies the pose stack. Overrides of renderCube that change the pose stack must push and pop it themselves.
  • New: AzQuadFilter, AzRendererPipelineContext#quadFilter / #setQuadFilter, AzGlowCoverage, and AzAutoGlowingLayer#glowFilter for subclasses that draw their glow differently.

v3.1.17

### Additions
  • Added the math.min_angle(value) Molang function, which wraps an angle in degrees into the range [-180, 180).
  • Added AzProfiler stage hooks (mod.azure.azurelib.profiling) for external profiling tools. No cost when no listener is installed.

### Fixes
  • Fixed math.copy_sign, math.sign, math.inverse_lerp and all 30 math.ease_* Molang functions failing to resolve. They were only registered under their bare names, so the math.-prefixed forms used by Blockbench and Bedrock animations parsed to 0.

### Performance
  • The auto-glowing layer only draws quads whose UVs cover glowing pixels in the glowmask, including animated glowmasks, and skips the pass entirely when the glowmask has nothing visible.
  • Zero-area faces (the edges of flat cubes) are no longer baked or rendered.
  • Cube pivot rotations are baked once at load instead of being applied to the pose stack for every cube every frame.
  • Flat-cube normal fixes are precomputed per cube; bone, cube and layer loops no longer allocate iterators.
  • Glowmask texture paths are cached instead of rebuilt every frame.

### Developer Notes
  • The fixed Molang functions are now registered only under their math. names, matching the existing classic functions. Expressions that called them without the prefix (e.g. ease_in_quad(0, 1, t)) must be updated to use math.ease_in_quad(0, 1, t).
  • GeoCube has two new record components, transform and normalFlips. The six-argument constructor still works; code that deconstructs the record with a pattern needs updating.
  • AzModelRenderer#renderCube no longer modifies the pose stack. Overrides of renderCube that change the pose stack must push and pop it themselves.
  • New: AzQuadFilter, AzRendererPipelineContext#quadFilter / #setQuadFilter, AzGlowCoverage, and AzAutoGlowingLayer#glowFilter for subclasses that draw their glow differently.

v3.1.18

### Additions
  • Added the math.min_angle(value) Molang function, which wraps an angle in degrees into the range [-180, 180).
  • Added AzProfiler stage hooks (mod.azure.azurelib.profiling) for external profiling tools. No cost when no listener is installed.

### Fixes
  • Fixed math.copy_sign, math.sign, math.inverse_lerp and all 30 math.ease_* Molang functions failing to resolve. They were only registered under their bare names, so the math.-prefixed forms used by Blockbench and Bedrock animations parsed to 0.

### Performance
  • The auto-glowing layer only draws quads whose UVs cover glowing pixels in the glowmask, including animated glowmasks, and skips the pass entirely when the glowmask has nothing visible.
  • Zero-area faces (the edges of flat cubes) are no longer baked or rendered.
  • Cube pivot rotations are baked once at load instead of being applied to the pose stack for every cube every frame.
  • Flat-cube normal fixes are precomputed per cube; bone, cube and layer loops no longer allocate iterators.
  • Glowmask texture paths are cached instead of rebuilt every frame.

### Developer Notes
  • The fixed Molang functions are now registered only under their math. names, matching the existing classic functions. Expressions that called them without the prefix (e.g. ease_in_quad(0, 1, t)) must be updated to use math.ease_in_quad(0, 1, t).
  • GeoCube has two new record components, transform and normalFlips. The six-argument constructor still works; code that deconstructs the record with a pattern needs updating.
  • AzModelRenderer#renderCube no longer modifies the pose stack. Overrides of renderCube that change the pose stack must push and pop it themselves.
  • New: AzQuadFilter, AzRendererPipelineContext#quadFilter / #setQuadFilter, AzGlowCoverage, and AzAutoGlowingLayer#glowFilter for subclasses that draw their glow differently.

v3.1.18

### Additions
  • Added the math.min_angle(value) Molang function, which wraps an angle in degrees into the range [-180, 180).
  • Added AzProfiler stage hooks (mod.azure.azurelib.profiling) for external profiling tools. No cost when no listener is installed.

### Fixes
  • Fixed math.copy_sign, math.sign, math.inverse_lerp and all 30 math.ease_* Molang functions failing to resolve. They were only registered under their bare names, so the math.-prefixed forms used by Blockbench and Bedrock animations parsed to 0.

### Performance
  • The auto-glowing layer only draws quads whose UVs cover glowing pixels in the glowmask, including animated glowmasks, and skips the pass entirely when the glowmask has nothing visible.
  • Zero-area faces (the edges of flat cubes) are no longer baked or rendered.
  • Cube pivot rotations are baked once at load instead of being applied to the pose stack for every cube every frame.
  • Flat-cube normal fixes are precomputed per cube; bone, cube and layer loops no longer allocate iterators.
  • Glowmask texture paths are cached instead of rebuilt every frame.

### Developer Notes
  • The fixed Molang functions are now registered only under their math. names, matching the existing classic functions. Expressions that called them without the prefix (e.g. ease_in_quad(0, 1, t)) must be updated to use math.ease_in_quad(0, 1, t).
  • GeoCube has two new record components, transform and normalFlips. The six-argument constructor still works; code that deconstructs the record with a pattern needs updating.
  • AzModelRenderer#renderCube no longer modifies the pose stack. Overrides of renderCube that change the pose stack must push and pop it themselves.
  • New: AzQuadFilter, AzRendererPipelineContext#quadFilter / #setQuadFilter, AzGlowCoverage, and AzAutoGlowingLayer#glowFilter for subclasses that draw their glow differently.

AzureLib Icon
Download AzureLib
Select game version
Select platform