Community listing page, reviews here may not be monitored by the author.
Community voices
Reviews
No reviews yet. Be the first to review this project!
Get it on
Available Platforms
About
Project Details
For authors
Embed Badge
If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.
Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.
Identifiers
Platform IDs
About
Description
🧩 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. Since 4.0.0 it does one thing by itself: it corrects faults of Mine Mine no Mi (see below).
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 |
| JEI / EMI | optional — recipe viewers show every workstation and profession drop |
Client and server. If you play on a server, both sides need it. 4.0.0 and 4.1.0 play together. Since 4.0.0 the network protocol is new: a 4.x client cannot join a 3.1.0 or older server, nor the other way round - update the server, every player and every addon together (an addon made for "any 3.x" refuses to start beside 4.x: take its version for AkumaLib 4). Since 3.1.0 the protocol was new too: a 3.1.0 client cannot join a 3.0.0 or older server; Missing Missing no Mi 1.0.0 needs 3.1.0. 3.0.0, 2.12.0, 2.11.0, 2.10.0, 2.9.0 and 2.8.0 play together; since 3.0.0 addons put their fruits in the Devil Fruit boxes with data files, so update InoFruits and Missing Missing no Mi with it; since 2.8.0 the network protocol is new: a 2.8.0 or newer client cannot join a 2.7.x or older server, nor the other way round. Update the server and every player together. Avoid 2.5.0 and 2.6.0: they crash a normal game at start-up. Avoid 2.8.0 and 2.9.0 too: a death wiped the players' profession XP or titles.
🩹 What it corrects in Mine Mine no Mi (since 4.0.0)
After a full read of the base mod's code, AkumaLib corrects its faults in some seventy-five places. You do not have to do anything: install it and they are corrected.
- Crashes, freezes and lost progress — worlds stuck at "Preparing spawn area", six crashes, loyalty and training points lost at a relog, techniques left half-running after a death, hotbar keys lost through combat mode.
- Items and blocks destroyed for nothing — the MH5 gas, the Straw Doll, the Sake Cup, Baku Factory on a chest, Black Hole's darkness left in the world.
- Combat — instant shots through walls, explosions that hurt nobody, Haki that stopped all wear, launches seen backwards by other players.
- Servers — the server checks what only the screens checked (trades, healing, crews, challenges), protected areas are protected from what goes off beside them, abilities respect the griefing setting.
- Performance — far less work per mob per tick, far fewer packets, no more freezes from Raigo, Ursus Shock, Liberation, a long aim or the end of a challenge; smoother with many mobs on screen.
Every correction has a switch, in the section baseModFixes of akumalib-server.toml and akumalib-client.toml. Set one to false and the base mod's own behaviour is back for that group. The full list is in each version's changelog.
🍈 Mods that use it
- Awaken Awaken no Mi — awakened Devil Fruit abilities. AkumaLib was extracted from it.
- InoFruits — 34 brand-new Devil Fruits, none of them in the base mod.
- Cruise Cruise no Mi — the professions and the island life of One Piece: Unlimited Cruise 2: fishing, cooking, forging, sewing, boats.
- Mine Mine no Mi: Sky Island — Skypiea as a dimension of its own, reached by a Knock-Up Stream.
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: 269 classes — 20 ability base classes, a professions framework, world events, and the worldgen and dimension tools a new dimension needs.
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 - whose charge sound never layers over itself once you give it the clip's length |
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 |
GrabAbility |
the state machine behind a grab — catch, hold, release — from a melee swing or, through beginGrab, from a tongue, a rope or a harpoon |
ProduceItemAbility |
for a fruit that makes its own substance, where the user is the material |
StompAbility · MoveAbility · InstantDashAbility |
charged stomp, continuous dash, teleport dash |
GaugePassiveAbility |
a passive holding one value shown as a HUD gauge — clamped, synced to its holder, saved |
TwoFormFlightAbility |
the flight of a Zoan with two flying forms, as the base mod's Phoenix flies — plus AkumaFlight to switch it on and off with the forms |
BlockUseAbility · CraftingAbility · TransmutationAbility · GroundAbility |
smaller bases |
Plus MorphStats (a builder for a form's attribute block, with conditional sub-blocks), MorphGates (form-locked use conditions), AkumaTargeting (target selection that always excludes the caster, the point a technique is aimed at, a cone test, the one enemy check, and a reach grown to a large morph), AkumaMotion (a pull toward a point with a tunable speed curve, or a push along a direction), AkumaTickQueue (work that must land at the end of the tick), EffectOwners (who applied an effect to whom, keyed on the target's id), AkumaProtection (protected-area checks that match the base mod), AkumaLines (a rope or tether drawn on the client, one packet instead of a particle trail), the AmplificationBus for a form that amplifies its own fruit's kit, MarkerEffect and OverlayEffect, BlockHighlightManager (outline blocks through terrain, for one player), BoomerangProjectile, LatchingProjectile (a projectile that latches onto the first body it meets and hits it several times, each hit through the ability pipeline, drawn as cuts rather than as a model frozen on the target), IBladedHandsAbility (hands turned into blades count as a sword for the techniques that need one, and keep the bare fist's bonus), PropagationHelper, BlockPlacingHelper, AttributeBonusHelper, tooltip helpers (with AkumaSourceTooltip, which writes in words the damage source values the base mod shows only as icons, or not at all, and what a hit pierces), and the morph, animation and networking scaffolding — including an awakened-zoan smoke layer that follows the model's head.
What a technique leaves in the world
TemporaryBlocks— walls, cages and platforms a technique raises, grouped per owner: taken back when the technique ends, when the owner dies and when the server stops; broken, blown up or pushed by a piston, they drop nothing.AbilityLifecycle— continuous techniques stopped on their user's death (the base mod keeps them going), gravity switched off and reliably back on (even across a reconnect), a soft landing after a leap.ThrownBodies— a body sent flying slams once into what it meets, and you choose what that does.SummonedAllies— a summoned creature that does not hit with its master's punch bonus, attacks only what it should, and leaves with its master.ExternalMorphs— a form put on from outside a fruit (a curse, a lasting state): seen by every tracking player, kept across respawn, dimension change and login while a keeper says it holds, and taken off at the right size.EntityHighlightsandScreenMarkers— a creature outlined, or places pointed at on the screen, for one player only.AbilityProgress,SharedCooldowns,GatedUnlocks— uses that unlock the next technique, one cooldown shared by several, unlocks checked again when they may have changed.hurtBurst— several hits on the same target in one blow, each one counted;ServerScopedMap— static state that never leaks from one world to the next.- First-person limbs —
FirstPersonLimbs,HandGraftandArmCoatingdraw a form's arm, a Black Leg user's leg and a graft glued to the hand in first person, with Haki and Diable Jambe laid over them as the base mod does without a form.
Professions, creatures and gathering
The systems behind a trades addon, written once for every addon:
- Professions — a registry, per-player XP and levels with curves in data, which a server owner can override in the server config along with XP multipliers and what a death costs, Solo / Crew / Auto modes (one trade per player on a server), a professions screen and per-profession pages in Mine Mine no Mi's own book (perks, what each level unlocks), a Profession tab in the base mod's character creator, XP boost effects.
- Titles — earned from code, from profession levels or from a data pack's advancement, listed by category on their own plank of the character screen, and worn after the player's name in the player list.
- Workstations — a block, shapeless JSON recipes of up to 36 ingredients with a level and XP each, one shared menu that shows what you have and what you need. A recipe can also be one to find: learned for good by reading a recipe item found in a chest or on a stall. Every workstation of every addon appears in JEI and EMI with no addon code, and so do what gathering professions get and where catchable creatures live.
- Catchable creatures — small creatures you catch rather than kill: variants, reactions (flee, take off, attack), perches on flowers and trunks, flying ones, a data-driven surface spawner (biomes, time of day, underground, altitude, dimension) and lures.
- Traps — timed trap blocks with data-driven catches, that remember the gear they were made of.
- Gathering — hanging fruit that ripens and grows back, profession crops and seeds, profession-only blocks.
- Advancement triggers for levels, crafts and captures; Doriki, Cola, Belly/Extol and Devil Fruit helpers.
World events
AkumaWorldEvents— events that come to the world on their own now and then, the way the base mod brings its caravans: a type says how often, where near a player, and how long; the library schedules them, saves them with the world, announces them in the chat, and ends them on time.- Barkeeper rumours — the base mod's barkeepers sell the rumours of the events near them. In Mine Mine no Mi 0.11.5 a barkeeper told nothing to a player who is neither a Marine nor a Bounty Hunter; he now tells of the world events.
/akumalib eventslists, starts and stops them, for operators and for testing.
Worldgen and dimensions
For an addon that shapes terrain of its own, or adds a dimension:
- Worldgen and fluid registers on
AkumaRegistry— density functions, biome sources, chunk generators, structures, placements and piece types, features, placement modifiers, fluids and fluid types. AkumaCells— a deterministic grid of features ("an island here, and nothing for a few thousand blocks") that every reader agrees on: warped outlines, values blended across overlapping features, a radius per cell.OverworldLookup— the overworld's biomes and seed, read from another dimension's worldgen thread.AkumaDimensionTravel— send a body to another dimension with its boat and its rider, arriving with a velocity, into a chunk held loaded.AkumaJigsaw— add pieces to another mod's jigsaw pools without replacing its files.
Registry and loot
- Devil Fruit boxes from data files.
data/<mod>/akumalib/dfboxes/*.json, in the shape of the base mod's own box tables with aninjectkeyword: add fruits to a box, re-weigh any fruit (base mod ones included) or remove one. Weight 100 and the one-fruit-per-world guard by default; files add up across mods and data packs, removals apply last, so a server's data pack has the last word. - Your fruits are exactly as rare as the base mod's. They are added inside the box pool itself, so they also come out of the 5% roll where a box upgrades to the next tier — which no loot modifier can reach.
registerFruitItemgroups a fruit's abilities in the ability menu.registerItemis the wrong entry point for a Devil Fruit and nothing says so: registered as a plain item, a fruit loads, drops from commands and grants its abilities — ungrouped. A registered fruit that ends up in no box is named in the log at start-up.akumalib:roll_tableis a global loot modifier consumers drive from data, for chests and any other table you do not own. Minecraft loot tables do not merge, so adding items to one needs a Forge GLM — and the codec is identical for every addon. Consumers ship JSON only.
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 the library restores them on logout, dimension change and server shutdown — there is no handler for you to add.
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.Charges cut from outside clean up after themselves. Water, Seastone and handcuffs stop a charge without ever reaching its end event - which is where a charge takes back what its start put in the world. A zone would leave its sphere behind, a spreading zone's blocks would stay for good, a charging user would stay rooted. The library runs the cleanup first, and
IChargeInterruptiblelets your own charges join in;ChargeGuardtells a completed charge from one stopped early.Partial morphs are drawn at the size you set. In Mine Mine no Mi 0.11.5 a form drawn over the player is drawn at the square of its scale - its render callback runs twice a frame - so a hybrid scaled 1.35 comes out at 1.82, well past its box. The library answers the base mod's morph lookup as it was meant to, so your
preRenderCallbackruns once. The base mod's own Mammoth and Allosaurus hybrids are fixed along the way.And their box follows them on every client. The base mod never resizes a partial morph's box on the client, so every screen hit, pushed and blocked a normal-sized player. The library keeps it in step.
The combat bar follows the server. In Mine Mine no Mi 0.11.5 an ability sync keeps whatever ability a slot already held and loads the new data into it: after a fruit change a slot stays empty until the next sync, a swap between slots loses an ability, an emptied slot keeps its old one - on the owner's screen and on every player tracking them, who then see no form and no running technique. The library empties each slot whose ability changed, so the base mod builds the right one; a slot that keeps its ability keeps its state.
Forms look right in first person. A morph model keeps the pose of its last third-person frame, so claws drawn over the hand came out shifted after a crouch or a swing; with a form on, a Black Leg user saw a bare arm instead of their leg, and Haki or Diable Jambe did not cover the limb.
FirstPersonLimbsandHandGraftfix all three.Wind has its icon.
SourceElement.AIRhas no texture in the base mod; the library supplies one, so wind techniques show their element in the tooltip.The base mod's structure spawners stop putting mobs in walls. Its camps, bases and houses moved each new mob up to two blocks aside without looking; AkumaLib places them where they fit, on the spawner's side of the walls.
fixStructureSpawnerPlacementin the server config turns it off.
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
AkumaLib is published on CurseForge, so it is pulled through Cursemaven:
// build.gradle
repositories {
maven {
url "https://cursemaven.com"
content { includeGroup "curse.maven" }
}
}
dependencies {
// project 1678152; the file id is the number at the end of a file's URL on the Files tab
implementation fg.deobf("curse.maven:akumalib-1678152:<file id>")
}
# mods.toml
[[dependencies.yourmod]]
modId = "akumalib"
mandatory = true
versionRange = "[4.0.0,5)"
ordering = "AFTER"
side = "BOTH"
The file id changes with every upload, so moving to a newer AkumaLib means picking up the new one. If you develop the library and your addon side by side, a sibling checkout is picked up through a composite build instead, 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.
3.0.0 is a major version. It removes what 2.x had marked for removal: the automatic box filling of registerFruitItem and its three-argument form, AkumaLootInjection (declare fruits in dfboxes data files instead), BlockOverlayManager.addOverlay / removeOverlay / removeAllForZone, the old SyncZoneOverlayPacket constructor and AkumaI18n.MESSAGE_MISSING (use MESSAGE_MISSING_MATERIALS). Everything else from 2.x is unchanged. Use versionRange = "[3.0.0,4)".
3.1.0 only adds: no signature was removed or changed. An addon that uses the 3.1.0 helpers declares versionRange = "[3.1.0,4)".
4.0.0 is a major version by its number, not by its API. It marks the day AkumaLib started correcting Mine Mine no Mi itself. No signature was removed or changed since 3.1.0: an addon's code needs no change. But a range such as [3.1.0,4) refuses 4.0.0, so an addon has to be released again with versionRange = "[4.0.0,5)" (or [3.1.0,5) if it uses nothing newer). The network protocol is 6.
4.1.0 only adds: no signature was removed or changed, and the network protocol is still 6. An addon that uses the 4.1.0 helpers (SteadyBiomes, Whereabouts, BookScreen…) declares versionRange = "[4.1.0,5)".
⚖️ License
All Rights Reserved.
Screenshots
Gallery
Versions
Files
Relations
Project Relations
More like this
Similar Mods
Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.
- Mine Mine no Mi: Devil Fruit Circulation Bot
- Sol's MMNM Addon: AbilityProtection Rework (QoL, Improvements)
- Fishy Business
- Hito Hito no mi model Nika
- Zitoen Piece
- Addon no Mi
- Darkroots
- Mine Mine no Mi : All Fruits All Boxes Carts
- Mine Mine No Mi: Rank Rank No Mi Discontinued
- Warcar's Non canon fruits
- Ope Ope Rework
- Non-fruit Rework MMNM
On ModDex
Community snapshot
By the numbers
Statistics
(opens in a new tab)
Get it on
Available Platforms
On ModDex
Community snapshot
By the numbers