Tags
Creators
Details
Licensed MIT
Published 4 years ago
Updated 20 hours ago
All versions
1.1.0
Release
azurelib-ornithe-b1.7.3-1.1.0.jar2 weeks ago 3
Compatibility
Minecraft: Java Edition
b1.7.3
Platform
Ornithe
Supported environments
Client and server
Required content
Any compatible version
Changes
v1.1.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 (arrows, snowballs, eggs and ghast fireballs) and right-clicks report which hitbox they landed on, so damage can be scaled per hitbox (headshots, armoured plates, weak points).
- Hitbox outlines can be toggled by holding F3 and pressing B, colored by role and damage multiplier. Beta has no entity box view, so this is AzureLib's own toggle.
- In single player, hitboxes are read directly from the rendered pose. In multiplayer, 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 in multiplayer), so 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 and AzureLib armor.
Fixes
- Fixed animated textures causing large frame-time spikes and heavy memory churn. Each frame change re-decoded the texture pixel by pixel and re-created its GPU storage, for both the base texture and its glow mask. Frames are now decoded once and uploaded into storage allocated a single time, so frame changes no longer allocate memory.
- Fixed Molang variable assignments incorrectly reading the right-hand expression as the assignment target, preventing v. and t. variables from being assigned correctly.
Changes
- The server's attack and interact distance check now measures to 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. - AzureLib now sends packets from client to server on a second OSL Networking channel,
azurelib:serverbound. Multiplayer hitboxes need AzureLib on the server.
Developer Notes
AzHitboxHolder#onHitboxHit(AzHitboxHit, Entity, int)runs at the start ofMobEntity#damage(Entity, int)on the server (or in the single player world) and returns the damage to apply. The entity is the attacking player for melee or the projectile itself for projectiles. The default roundsamount * damageMultiplier().AzHitboxHolder#onHitboxInteract(AzHitboxHit, PlayerEntity)runs on both sides beforeEntity#interact(PlayerEntity)and item use. Returntrueto consume the click.- In multiplayer, 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. - Added
AzureLibNetwork#registerServerboundandAzureLibNetwork#sendToServerwithAzServerboundPacket. In single player,sendToServerhandles the packet immediately with the local player. - Added
AzArmorRendererPipelineContext#setVisiblePartOverride, which limits an armor render to the bone matching one base model part.
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:6ao3TRkW"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:7zlUOZvb:6ao3TRkW"
}

