Tags
Creators
Details
Licensed MIT
Published 4 years ago
Updated 47 minutes ago
All versions
3.2.0
Release
azurelib-fabric-1.20.1-3.2.0.jaryesterday 1,449
Uploaded by
Compatibility
Minecraft: Java Edition
1.20.1
Platforms
Fabric
Quilt
Supported environments
Client and server
Required content
Any compatible version
Changes
v3.2.0
Additions
- Added bone hitboxes. Entities can now define hitboxes that follow bones in their model, rotate with them, and stay in sync with whatever animation is playing. Implement
AzHitboxHolderand return anAzHitboxSetto use them. - Hitboxes can fit a bone's cubes automatically or use an explicit size, offset and inflate in Blockbench pixels, and several hitboxes can share one bone.
- Hitboxes have three roles.
COMBAThitboxes take crosshair targeting, projectiles and damage.INTERACThitboxes can be right-clicked to trigger custom logic without affecting combat.ANCHORhitboxes can't be hit and exist only to track a bone's position.
- Melee hits, projectile hits and right-clicks report which hitbox they landed on, so damage can be scaled per hitbox (headshots, armoured plates, weak points).
- Hitboxes are drawn with F3 + B, colored by role and damage multiplier.
- Clients report animated poses to the server, so server-side checks such as projectiles and AI attacks line up with what players see.
- Entities that a nearby player isn't looking at still have their hitboxes posed and reported, so server-side checks keep working behind the camera.
- Added a Bone Hitboxes page to the docs.
- First-person item arms now render the player's worn chestplate sleeve, supporting vanilla armor (including dye, trims and enchantment glint), NeoForge custom armor textures, tints and models, and AzureLib armor.
- Morph compatibility with Walkers and ReMorphed. AzureLib entities now animate when a player is morphed into them instead of standing in their idle pose.
- Animations driven by Molang queries work with no changes.
- Mods that pick clips in their entity tick, from
MoveAnalysis, or from server AI can hook in withAzMorphableorAzMorphCompat.register/registerNamespace. See the Morph Compatibility docs page. - Use
AzMorphCompat.isMorphCopyto skip spawn animations on morphs, andAzMorphCompat.excludeto opt a type out. - Walkers is optional; nothing runs unless it is installed.
Fixes
- N/A
Changes
- The server's attack reach check now includes an entity's hitboxes, so parts that stick out past the vanilla bounding box (tails, weapons) can be hit from as far as they reach.
- Entities using an
AzEntityRendererthat have hitboxes now run their animator while off-screen within 64 blocks of a player. Keyframe events, including sound keyframes, will fire for those entities even when they aren't visible.
Developer Notes
AzHitboxHolder#onHitboxHitruns on the server at the start ofLivingEntity#hurtand returns the damage to apply.AzHitboxHolder#onHitboxInteractruns on both sides beforemobInteract.- Server-side poses only exist while a player within 64 blocks has the entity loaded. With no player nearby, hitbox queries return nothing and projectiles fall back to the vanilla bounding box, so server logic that reads hitboxes should keep a fallback.
- Reported poses are bounds-checked but come from clients. A modified client can shift a mob's hitboxes within
maxReachandmaxHalfExtent. UseAzHitboxSet.Builder#clientOnly()where that isn't acceptable. - Added
AzRendererPipeline#modelRenderer(),AzEntityRenderer#poseOffscreenandAzEntityModelRenderer#poseBonesOffscreen. The entity transforms and bone matrix tracking inAzEntityModelRendererwere moved into private methods shared by the on-screen and off-screen paths. Behavior is unchanged for subclasses.
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:VDXznzXQ"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:7zlUOZvb:VDXznzXQ"
}

