AkumaLib 2.4.0
Curse Maven Snippet
What's new
AkumaLib 2.4.0
Nine groups of additions and two fixes since 2.3.0. No signature was removed or changed: an addon built against 2.3.0 keeps compiling and keeps working. That is why this is a minor bump.
Requires Minecraft 1.20.1, Forge 47+ and Mine Mine no Mi 0.11.5.
⚠️ One fix changes how existing abilities behave: a charge force-stopped from outside (water, Seastone, handcuffs) now releases what its start put in the world. See Fixes below.
New
Targeting: three more AkumaTargeting helpers
AkumaTargeting already had firstInLine, firstInSight and inCone. It gains the three checks aimed abilities kept re-deriving by hand:
| Method | Answers |
|---|---|
aimPoint(caster, range) |
where the caster is aiming: the hit location, or range blocks along the look on a miss |
isEnemy(user, target) |
the one enemy check, through the base mod's own faction predicate, caster excluded |
sizedRange(caster, base) |
a reach grown by the caster's own bulk, so a fixed range stays usable in a large morph |
Pulls: AkumaMotion and PullProfile
Moving a body toward a point - a target dragged to a centre, a user lunging at a target, loot drawn to hand - as one call. A PullProfile states the speed curve (base, perBlock, max, boost), the vertical rule, whether the pull replaces or adds to the motion, and a minimum distance. The velocity always goes through AbilityHelper.setDeltaMovement, so a player's client cannot drop it.
Deferred work: AkumaTickQueue
One queue for work that has to wait for a later tick - typically a blow that must land at the end of the tick so the triggering hit's invulnerability frames do not swallow it.
Effect owners: EffectOwners
Who applied an effect to whom, for effects whose point is that relationship. Keyed on the target's UUID, so it survives the entity object being replaced while the effect lives on - a dimension change, a respawn, a chunk reload.
Charges: ChargeGuard, IChargeInterruptible, AkumaCharges.interrupt
ChargeGuardtells a completed charge from one stopped early, and gives the partial cooldown an early stop should cost. It reads the charge's own progress rather than counting ticks, so it agrees with the component under a changedTIME_PROGRESSION.IChargeInterruptible: a charge whose start puts something in the world (a lock, a pose, a sphere) implements it to take that back when the charge is cut from outside.AkumaCharges.interrupt(entity, ability): the one right way to cut a charge yourself - neither firing the ability nor leaking its start state.DomainAbility.interruptCharge: a zone's charge can be cancelled from outside, taking down its sphere or putting back the blocks it had placed.
Zone sounds: ZoneSoundSet.intervalClip
A zone's charge sound was replayed every 18 ticks - the pace of the base mod's short Room sound - so any longer clip layered two or three copies of itself over the whole charge. A set can now declare its clip's length, and setZoneSounds replays it only once a play has finished. The cadence is taken at the slot's base pitch, since a lower pitch plays a clip for longer. A set without it keeps the old cadence.
Protected areas: AkumaProtection
The protected-area checks the base mod only runs on the caster and on block placement, for everything else an ability touches (a pulled target, a landing point, a container). Matches the base mod exactly: the server's global whitelist, ABILITY_GRIEFING and the mobGriefing gamerule.
Lines: AkumaLines
A line between two anchors - a rope, a thread, a tether - drawn on the client as real geometry. One packet instead of a particle per step, and an end anchored to an entity follows it every frame.
Failed presses: AkumaAbilityHelper.FAILED_PRESS_COOLDOWN
The cooldown an aimed ability charges when it finds nothing or is refused: never zero (a held key would sweep a room for free), never the full cooldown. GrabAbility.DEFAULT_WHIFF_COOLDOWN now points to it, at the same value.
Fixes
- A force-stopped charge now cleans up after itself.
AbilityHelper.emergencyStopAbility- reached by water, Seastone, handcuffs, nets and anything callingdisableAbilities- skipped the charge's end event, which is where a charge takes back what its start put in the world. A zone left its sphere behind, a spreading zone's charge blocks became permanent, and a charging user stayed rooted. A mixin now runsAkumaCharges.interruptfirst.StompAbility,OceanAbilityand everyDomainAbilityimplement the cleanup. OceanAbilityscans one surface per column and covers grass, instead of leaving holes in a meadow.
Documentation
- New pages and sections for every addition above
ChargeGuarddocumented as preventive for most abilities, with the exact list of stops that reach a charge's end event- The awakened-Zoan smoke head anchor does not work on every partial morph, and why
This mod has no additional files

