AkumaLib 2.0.0
Curse Maven Snippet
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 buildleaves a mapped jar inbuild/libs; the distributable comes fromgradlew releaseJar, inbuild/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 publishToMavenLocalin this checkout first. - Bump your
akumalib_versionto2.0.0so yourmods.tomlrange refuses an older library rather than loading against one and crashing during registration.
All Relations
- All Relations
- Embedded Library
- Optional Dependency
- Required Dependency
- Tool
- Incompatible
- Include

