AkumaLib 2.3.0
Curse Maven Snippet
What's new
AkumaLib 2.3.0
One addition, three fixes and one deprecation since 2.2.0. No signature was removed: a renamed constant keeps its old name as a deprecated alias, so an addon built against 2.2.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.
⚠️ Two fixes change how existing abilities play: every InstantDashAbility now hits over the
width it declares, and a RunningSmashAbility hits a target twice a second instead of every tick.
See Fixes below.
New
Spreading zones are restored when their holder leaves
A SpreadingBlockAbility puts back the ground it converted from its own ticks, and those ticks stop
the moment its holder is gone: a logout, a dimension change, a server shutdown. The ability reloaded
afterwards is a fresh instance that knows none of the positions, so the converted blocks stayed in the
world for good.
The static zone registry that allows a restore from outside existed, but the only thing draining it lived in Awaken Awaken no Mi. Any other addon extending the class left its blocks behind.
The library now ships SpreadingBlockCleanupHandler itself:
| Event | Restores |
|---|---|
PlayerLoggedOutEvent |
the zones of the player leaving |
EntityLeaveLevelEvent |
the zones of an entity changing dimension or being unloaded |
ServerStoppingEvent |
every zone still active |
- You wire nothing. Extending
SpreadingBlockAbilityis enough. - Running alongside an addon's own copy is harmless. A zone leaves the registry when it restores, and each restore walks a snapshot of the registry, so whichever handler runs second finds nothing left to do. An addon can drop its copy on its next library bump rather than in lockstep.
Fixes
InstantDashAbility hits over GetWidth()
GetWidth() (default 2.5) was declared overridable and never read: the dash path was swept with the
user's entity reach instead. An override changed nothing, and the width grew in creative mode and with
any reach bonus.
⚠️ Every dash changes width:
| Dash | Before | After |
|---|---|---|
| Ferret Dart (InoFruits) | about 3, more in creative | 1.5, the width it already declared |
| Totsushin (InoFruits) | about 3 | 2.5 |
| Hyozan: Kyousou (Awaken Awaken no Mi) | about 3 | 2.5 |
The width no longer depends on the game mode or on reach bonuses.
RunningSmashAbility no longer hits every tick
Its hit tracker was cleared every tick while its hits clear the target's invulnerability frames, so
nothing limited the rate: a target the knockback did not throw clear took the damage 20 times a
second. The tracker now resets every 10 ticks, the window MoveAbility already uses, so a
target in contact is hit about twice a second.
⚠️ A subclass that turns knockback off was the one hitting every tick, and loses the most. Awaken Awaken no Mi's Reverse Slow Smash, at its default damage, drops from 16 to 1.6 real HP per second against a target in contact.
The 10-tick window is shared by all targets: a target first hit on the last tick of a window can be hit once more on the next tick.
CraftingAbility shows a real message when materials are missing
Its default message was a developer placeholder, "A message is missing here please contact the dev
to fix it.", shown to every player lacking the materials unless the subclass set its own. The
default is now "You do not have the materials to use this ability." It stays overridable through
the message field.
Deprecated
AkumaI18n.MESSAGE_MISSING: useMESSAGE_MISSING_MATERIALS. The old name is an alias of the new one, and its lang keyakumalib.ability.missing_messagestays mapped to the new text, so an addon built against 2.2.0 shows the right line rather than a raw key. Both go at the next major version.
Notes for addon developers
- Bump your
akumalib_versionto2.3.0if you rely on the zone restore: below it, yourmods.tomlrange would accept a library that restores nothing. - If you carried your own copy of
SpreadingBlockCleanupHandler, delete it once you require 2.3.0. Keeping it is harmless, just redundant. - Check your dashes and running smashes in game. A dash declaring a narrow
GetWidth()now needs a more precise aim; a running smash without knockback deals a tenth of what it did. - The distributable jar still comes from
gradlew releaseJar, inbuild/release— never frombuild/libs. - Run the control build (
gradlew build -PakumalibFromMavenin the consumer, aftergradlew publishToMavenLocalhere) before releasing anything that depends on this version.
Consumers
- Awaken Awaken no Mi, in its next release, requires AkumaLib 2.3.0 and drops its own copy of the zone restore handler.
This mod has no additional files

