๐งฉ AkumaLib
A shared ability framework for Mine Mine no Mi addons.
โ ๏ธ Landed here from a "missing dependency" screen?
That's the normal reason. AkumaLib is a library, not a content mod โ on its own it adds no fruits, no abilities, no items and no recipes. Nothing in your game will change after installing it.
Drop it in your
modsfolder next to Mine Mine no Mi and the addon that asked for it, and you're done.
๐ฆ Requirements
| Minecraft | 1.20.1 |
| Forge | 47.4.18 or newer |
| Mine Mine no Mi | required |
Client and server. If you play on a server, both sides need it.
๐ Mods that use it
- Awaken Awaken no Mi โ awakened Devil Fruit abilities. AkumaLib was extracted from it.
Built an addon on top of AkumaLib? Open an issue on the repository and it will be listed here.
๐ ๏ธ For addon developers
Mine Mine no Mi hands you Ability and a set of components. Everything above that โ a zone that charges and expands, a wave that converts terrain, a passive that grants attribute bonuses while a condition holds โ you would otherwise write yourself, and write slightly differently from the next addon.
AkumaLib is that layer, extracted once and shared: 65 classes, 17 ability base classes, 12 utilities.
Ability base classes
| Class | What you get |
|---|---|
ZoneAbility |
a charged spherical zone applying effects continuously |
SpreadingBlockAbility |
a zone that replaces ground blocks โ and puts them back |
DomainAbility |
the shared parent of both, carrying the four-slot ZoneSoundSet |
BlockWaveAbility |
a radial wave converting blocks outward, in sphere, surface or terrain-following mode |
ConditionalStatPassiveAbility |
a passive granting attribute bonuses while a condition holds |
AuraAbility |
a passive aura ticking every nearby enemy |
StompAbility ยท MoveAbility ยท InstantDashAbility |
charged stomp, continuous dash, teleport dash |
BlockUseAbility ยท CraftingAbility ยท TransmutationAbility ยท GroundAbility |
smaller bases |
Plus PropagationHelper (BFS propagation with easing), BlockPlacingHelper, AttributeBonusHelper (idempotent attribute modifiers), tooltip helpers, and the morph, animation and networking scaffolding.
The part that actually saves you time
The base classes are not thin wrappers. Each one encodes fixes for problems that are easy to hit, hard to attribute, and invisible until a player reports them:
- Zones put the world back properly.
SpreadingBlockAbilityrestores throughBlock.updateFromNeighbourShapesโ replaying the raw remembered state leaves you with a grass block still flaggedsnowyunder open sky, and a torch floating where its support used to be. - Zones survive a disconnect. The tick that drains the restore queue stops the moment the holder leaves the world, so a naive implementation leaves converted terrain permanently. Active zones are tracked statically and restored on logout, dimension change and server shutdown.
- Conditional passives don't stick. Bonuses are applied and removed idempotently rather than on transitions, because
addPermanentModifierpersists in NBT โ with transition detection, one reconnect turns a conditional buff into a permanent one. - And they let go when they should. A Devil Fruit passive is disabled the moment its holder steps in water, and
PassiveAbility.tick()stops dispatching before it can clean up after itself.ConditionalStatPassiveAbilityhooks the disable directly.
Extending the class gets you all of that. Departing from one is fine too โ the class comments record what went wrong the first time.
Adding it to your project
# gradle.properties
akumalib_version=1.0.0
// build.gradle
implementation fg.deobf("com.inovactio:akumalib:${akumalib_version}")
# mods.toml
[[dependencies.yourmod]]
modId = "akumalib"
mandatory = true
versionRange = "[${akumalib_version},)"
ordering = "AFTER"
side = "BOTH"
A sibling checkout is picked up automatically through the composite build, so the library and your addon can be developed side by side without publishing anything.
๐ API stability
Publishing freezes the API. From 1.0.0 onward, a breaking change to the shared surface is a major version bump and forces a synchronised release of the library and every consumer โ so a consumer's versionRange should exclude the next major.
โ๏ธ License
All Rights Reserved.

