promotional bannermobile promotional banner

AkumaLib

Shared library for Mine Mine no Mi to help creating addons
Back to Files

AkumaLib 2.3.0

File nameakumalib-2.3.0.jar
Uploader
inovactioinovactio
Uploaded
Sep 14, 2026
Downloads
165
Size
212.0 KB
Mod Loaders
Forge
File ID
8879631
Type
R
Release
Supported game versions
  • 1.20.1

Curse Maven Snippet

Forge

implementation fg.deobf("curse.maven:akumalib-1678152:8879631")

Learn more about Curse Maven

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 SpreadingBlockAbility is 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: use MESSAGE_MISSING_MATERIALS. The old name is an alias of the new one, and its lang key akumalib.ability.missing_message stays 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_version to 2.3.0 if you rely on the zone restore: below it, your mods.toml range 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, in build/release — never from build/libs.
  • Run the control build (gradlew build -PakumalibFromMaven in the consumer, after gradlew publishToMavenLocal here) 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