Tags
Creators
Details
Licensed MIT
Published 4 years ago
Updated 2 days ago
All versions
1.0.7
Release
1.0.72 weeks ago 70
Compatibility
Minecraft: Java Edition
1.12.2
Platform
Forge
Supported environments
Client and server
Changes
v1.0.7
Additions
AzItemIdentity, the single utility for reading, creating and clearing an item stack's AzureLib id (resolve,getOrCreate,peek,hasPersistentId,clear).
Fixes
- Item stacks are no longer given an
az_idUUID when they are constructed. Creative tabs, recipe outputs and JEI's ingredient list now see NBT-free stacks, so AzureLib items match their JEI entries and recipes again, and crafted copies of a recipe output no longer share one id. - Item and armor animators are no longer lost on garbage collection while the stack is still being rendered, which could restart idle animations or cut off triggered ones mid-play.
- Stacks without an id now keep one stable animator while rendered, instead of a new animator (and a new random id) every frame.
AzCommand#sendForItemno longer throws aNullPointerExceptionwhen the stack has no NBT.
Changes
- Improved animation performance on models with many bones. The bone cache now walks bones in a fixed array and skips any bone that has fully eased back to its bind pose, so its cost scales with the animated bones instead of the whole model.
- Bones scaled to zero on every axis, along with everything under them, are no longer rendered, instead of being drawn as collapsed geometry.
- A stack gets its persistent id on the server when it first ticks in an entity's inventory, or on its first server-side dispatch (
AzCommand#sendForItem) if it never does. Rendering never writes NBT; stacks without an id are keyed by a transient, per-instance id. - Item animators now expire after 120 seconds without being rendered or dispatched to, instead of being weakly held.
- Creative "pick block" clones have their copied id removed rather than replaced, and get their own the next time one is assigned.
- Adding or swapping only the
az_idon a held stack no longer plays the re-equip animation. - Removed
ItemStackMixin_AzItemStackIdentityRegistryandItemMixin_EnsureCraftHasID; addedItemStackMixin_AzAssignIdInInventoryand the client mixinItemMixin_AzIdentityReequip.
Developer Notes
AzCachedBoneUpdateUtilhas new overloads that take anAzBoneSnapshotdirectly and return whether the channel is at rest. The existingMapoverloads still work and delegate to them.- Added
AzBoneCache#invalidateBoneArrays(). Call it if you replace or remove entries ingetBoneSnapshotsByName()directly; changing a snapshot's values doesn't need it. - While a bone is scaled to zero on all three axes, its descendants don't update their tracked matrices and per-bone render layers aren't called for that subtree.
- Only register items that use triggered animations in
AzIdentityRegistry. Registered items get a uniqueaz_idonce they sit in an inventory, so stackable items registered there stop merging. - When dispatching for a stack that never sits in an inventory (such as a mob's held item), call
sendForItemon the server with the actual stack, not a copy: that stack is the one that receives the id. - Code that read
az_iddirectly from NBT should useAzItemIdentity.peek(maybe null until an id is assigned) orAzItemIdentity.getOrCreateon the server. - Existing stacks that already carry an
az_idkeep it.
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:7zlUOZvb:P9H5VWz0"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:7zlUOZvb:P9H5VWz0"
}

