The torso tips forward around the hips and bends backwards, so the lower
back curves in and the chest comes up. The head and arms get the tilt
themselves, since they only follow the torso's bend.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- LimbBend.anchoredAtEnd keeps the far end in place (the hips on the
legs) and folds the other half, and angleAt/axis expose how far the
limb has turned at a point.
- PoseApplier bends the body from the hips and carries the head and arms
with it: their pivots follow the bent torso and they turn with its ring.
- Test animations: bow (torso only) and twerk. The gametest shoots the
twerk at the top and bottom of its bounce, including from behind.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- core: Bezier (any degree, De Casteljau), LimbBend (cubic spine through
the rigid upper/joint/lower shape, one ring per texture row spaced by
arc length, rigid rings so pieces share vertices) and QuadSplitter
(cuts faces at the rings, interpolating UVs).
- fabric: ModelPartMixin draws parts that have a bend with
BentCubeRenderer, which deforms vanilla's own cubes. Overlays and armor
use the limb's spine so they stay attached. Bends are reset every
setupAnim because models are shared between entities.
- testmod: flap and squat animations, and a client gametest that
screenshots each animation from the front and side
(runClientGameTest). The tester runs with the full Fabric API because
single modules don't bring their version-specific dependencies.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
- core/: Minecraft-independent animation model (Bone, BoneTransform with
bend fields, Pose, Animation, AnimationPlayer) with JUnit tests.
- src/main: Fabric mod built for 1.21.4-1.21.11 with Stonecutter on
Mojang mappings. Samples each player's pose into its render state and
applies it at the end of HumanoidModel.setupAnim (armor follows too).
- src/testmod: dev-only tester with /emotes play|stop|info and a mixin
audit on startup.
- Publishing to the saturnclientmc Gitea Maven registry as
org.saturnclient:emotes-core and emotes-fabric:<v>+<mc>.
Loom is pinned to 1.17 because 1.18 needs a Java 25 JVM.
Co-Authored-By: Claude Opus 5.5 <[email protected]>