promotional bannermobile promotional banner

AkumaLib

Shared library for Mine Mine no Mi to help creating addons

๐Ÿงฉ 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 mods folder 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

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. SpreadingBlockAbility restores through Block.updateFromNeighbourShapes โ€” replaying the raw remembered state leaves you with a grass block still flagged snowy under 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 addPermanentModifier persists 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. ConditionalStatPassiveAbility hooks 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.

The AkumaLib Team

Forgeborn tier frameprofile avatar
  • 4
    Followers
  • 5
    Projects
  • 107.9K
    Downloads

More from inovactioView all