promotional bannermobile promotional banner

AkumaLib

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

AkumaLib 2.0.0

File nameakumalib-2.0.0.jar
Uploader
inovactioinovactio
Uploaded
Sep 7, 2026
Downloads
172
Size
181.1 KB
Mod Loaders
Forge
File ID
8831768
Type
R
Release
Supported game versions
  • 1.20.1

Curse Maven Snippet

Forge

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

Learn more about Curse Maven

What's new

AkumaLib 2.0.0

Ten changes since 1.0.0. Everything here is additive — no existing signature moved, so an addon built against 1.0.0 keeps compiling.

Requires Minecraft 1.20.1, Forge 47+ and Mine Mine no Mi 0.11.5.


New

GrabAbility — a base class for grabs

Mine Mine no Mi has exactly one worked grab, SpinningBrawlAbility, and roughly two thirds of it is plumbing rather than technique. This class owns that part: the four-way state machine behind the key, the reach window that turns the first entity struck into the grabbed target, the hold, and a cooldown that runs once however the grab ends — at full price only if the grab actually connected.

A subclass provides three things: what happens on the catch, on each tick of the hold, and on release. The throw is deliberately left out, so a technique can end by hurling its target or by dropping it.

BarrelRollAnimation — the missing roll axis

ForwardRollAnimation somersaults; the base mod's YAW_SPIN pirouettes. Neither is a body spinning about the axis it faces along. Typed on EntityModel rather than HumanoidModel, so it is not restricted to player-shaped models.

ProduceItemAbility — for fruits that make their own substance

The counterpart of CraftingAbility. Crafting is materials in, result out — a recipe, a cost, a failure message. A fruit producing salt, ink, honey or bone has none of those, because the user is the material. On CraftingAbility such an ability spends three abstract methods saying nothing and carries a charge component it never starts.

A subclass provides the stack, and optionally a sound. A full inventory and a holder with no inventory at all are both handled here.

BoomerangProjectile — an out-and-back projectile

The base mod's ChakramEntity has reusable return maths but an unusable base class: it extends AbstractArrow and hurts with a vanilla trident source, which carries no AbilityCore and therefore skips the ability damage pipeline entirely. This extends NuProjectileEntity like every other ability projectile and borrows only the steering.

registerFruitItem — group a fruit's abilities

registerItem was the wrong entry point for a Devil Fruit and nothing said so. The difference is one call, AbilityGroups.addFruitGroup, and it is what ties a fruit's moves together in the ability menu. Registered as a plain item, a fruit loads, drops, is edible and grants its abilities — ungrouped. Nothing logs it; it shows up only when a player opens the menu.

akumalib:roll_table — a loot modifier consumers drive from data

Addons need to add items to loot tables they do not own. Minecraft loot tables do not merge, so the only supported route is a Forge global loot modifier, which needs a codec registered in Java — and the codec is identical for every addon. Consumers now ship JSON only.


Fixed

The loot modifier never rolled its table

It had never worked. Every invocation logged Detected infinite loop in loot tables and contributed nothing. Found after about fifty wooden Devil Fruit boxes in a dev client produced no drop against a 0.208 chance — roughly 1 in 116,000 of being luck.

Opening a box could crash the server thread

StackOverflowError, from the modifier re-entering itself: every public getRandomItems* overload funnels into one private method that calls ForgeHooks.modifyLoot, so rolling a table from inside a modifier re-enters the modifier pipeline with the same context. The nested table is now rolled raw.


Notes for addon developers

  • gradlew build leaves a mapped jar in build/libs; the distributable comes from gradlew releaseJar, in build/release. The two are indistinguishable by eye, and shipping the mapped one produces a mod that loads and then fails on its first Minecraft call.
  • Consumers resolving AkumaLib from Maven need gradlew publishToMavenLocal in this checkout first.
  • Bump your akumalib_version to 2.0.0 so your mods.toml range refuses an older library rather than loading against one and crashing during registration.