promotional bannermobile promotional banner

AkumaLib

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

AkumaLib 2.1.0

File nameakumalib-2.1.0.jar
Uploader
inovactioinovactio
Uploaded
Sep 10, 2026
Downloads
312
Size
193.1 KB
Mod Loaders
Forge
File ID
8853606
Type
R
Release
Supported game versions
  • 1.20.1

Curse Maven Snippet

Forge

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

Learn more about Curse Maven

What's new

AkumaLib 2.1.0

Six additions since 2.0.0. Everything here is additive — no existing signature moved, so an addon built against 2.0.0 keeps compiling. That is why this is a minor bump.

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


New

MorphGates — a factory for requiresMorph conditions

Every ability locked to a form was writing the same use-condition by hand, and a form gate that is subtly wrong fails in the worst possible way: the ability is simply usable out of shape, which nothing logs and nobody notices until somebody tries it. One addon had eleven such copies. They are now one constant each.

MorphStats — a builder for a morph ability's attribute block

A Zoan form is mostly a wall of attribute modifiers — speed, armour, knockback resistance, step height, jump height, reach — and the base mod's own morphs write them out longhand. This builds the block instead, which makes two forms of the same fruit readable side by side and stops the modifier UUIDs being copy-pasted between them.

onlyWhile(...) adds a conditional block: a set of modifiers that applies only while some predicate holds, so a form that is faster in water or heavier on land is one declaration rather than a tick handler.

AkumaTargeting — the target-picking helpers

Consolidates the entity selection every ability was reimplementing, and — more usefully — documents which of them exclude the caster and which do not. That distinction had already produced two shipped bugs in a consumer, where a technique with a radius damaged the person who used it.

AmplifiedPresentation and the amplification bus

The pattern where a form amplifies its own fruit's kit — the base mod does it with Venom Demon and Shinokuni — has three axes: the numbers, the shape of the technique, and its name and icon. The third is pushed once by the form rather than polled by each technique, and that is the part a sixth ability in a kit forgets.

AmplificationBus.push(entity, amplified, ...abilities) is the whole of the wiring; IAmplifiableAbility and AmplifiedPresentation are what a technique implements to answer.

MarkerEffect — a base for effects that are read, not felt

An effect that exists only so something else can ask about it has no per-tick work, and saying so matters: returning true from isDurationEffectTick asks the game to tick it every single tick for nothing. It also settles the client-visibility override that, left at its default, makes an effect exist only on the server — so the overlay is never painted and the failure looks like the colour being wrong rather than like the effect being invisible.

OverlayEffect — a marker that also tints the body it is on

Adds the body tint on top of MarkerEffect. ⚠️ The alpha has to be spelled out: new Color(rgb) fills it in at 255, which paints the body a flat silhouette with no skin left underneath. Two calibrated values are documented on the class — around 100 for something the user wears and has to stay readable through, around 150 for a mark whose whole job is to be impossible to miss.

⚠️ The amplifier on such an effect is not always a potency. An instance carries a duration and an amplifier and nothing else, so it is the only place a per-application value can travel — one consumer puts a DyeColor id there, which is what makes sixteen colours one registered effect instead of sixteen.


Documentation

Three corrections, each of which had already cost somebody a wrong answer:

  • ModAttributes.STEP_HEIGHT is an alias, not an inert attribute. It resolves to Forge's own, so writing to it works and reading the Forge one back reflects it.
  • What does and does not exclude the caster, spelled out per helper rather than left to be discovered by damaging yourself.
  • Only one of MarkerEffect's four overrides was ever load-bearing — the other three restate defaults, and the class says which is which so a subclass knows what it is actually inheriting.

Notes for addon developers

  • Bump your akumalib_version to 2.1.0 so your mods.toml range refuses an older library rather than loading against one and crashing during registration.
  • 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.
  • ⚠️ Run the control build before releasing anything that depends on this. The composite build (includeBuild('../AkumaLib')) puts this project's classes on the classpath directly, which hides a resource missing from the packaged jar completely — a lang file, a texture, mods.toml itself. gradlew build -PakumalibFromMaven in the consumer is the only build that would catch it.

This mod has no additional files