
AkumaLib
Mine Mine no Mi的共享库,用于帮助创建附加组件
🧩 AkumaLib
一个用于 Mine Mine no Mi 附加模组的共享能力框架。
⚠️ 因“缺少依赖”界面而来到这里?
这是正常原因。AkumaLib 是一个库,而不是内容模组——它本身不添加任何恶魔果实、能力、物品或配方。安装它后,你的游戏不会发生任何变化。
将它放入你的
mods文件夹,与 Mine Mine no Mi 以及需要它的附加模组放在一起,就完成了。
📦 需求
| Minecraft | 1.20.1 |
| Forge | 47.4.18 或更新版本 |
| Mine Mine no Mi | 必需 |
客户端和服务端都需要。如果你在服务器上游玩,两端都需要安装。
🍈 使用它的模组
- Awaken Awaken no Mi —— 觉醒的恶魔果实能力。AkumaLib 是从该模组中提取出来的。
基于 AkumaLib 构建了附加模组?在仓库中开启一个 issue,它将会被列在这里。
🛠️ 面向附加模组开发者
Mine Mine no Mi 为你提供了 Ability 和一组组件。除此之外的所有内容——一个充能并扩张的区域、一个转化地形的波、一个在条件成立时提供属性加成的被动能力——你都需要自己编写,而且写出来的代码往往会和下一个附加模组略有不同。
AkumaLib 就是这一层,被提取一次并共享:65 个类,17 个能力基类,12 个工具类。
能力基类
| 类 | 你获得的 |
|---|---|
ZoneAbility |
一个持续施加效果的充能球形区域 |
SpreadingBlockAbility |
一个替换地面方块——并能将其恢复——的区域 |
DomainAbility |
两者的共享父类,承载四槽位的 ZoneSoundSet |
BlockWaveAbility |
一个向外转化方块的径向波,支持球形、表面或地形跟随模式 |
ConditionalStatPassiveAbility |
一个在条件成立时提供属性加成的被动能力 |
AuraAbility |
一个对附近每个敌人周期性生效的被动光环 |
StompAbility · MoveAbility · InstantDashAbility |
充能践踏、持续冲刺、传送冲刺 |
BlockUseAbility · CraftingAbility · TransmutationAbility · GroundAbility |
较小的基类 |
另外还有 PropagationHelper(带缓动的 BFS 传播)、BlockPlacingHelper、AttributeBonusHelper(幂等的属性修改器)、提示文本工具类,以及变形、动画和网络相关的脚手架代码。
真正为你节省时间的部分
这些基类并不是轻薄的封装。每一个都编码解决了一些问题,这些问题容易被触发、难以定位,并且在玩家报告之前完全不可见:
- 区域能正确地还原世界。
SpreadingBlockAbility通过Block.updateFromNeighbourShapes进行还原——直接回放原始记忆状态会导致草方块在露天环境下仍带有snowy标记,火把会悬空在其支撑方块原来所在的位置。 - 区域能在断线后存活。 排空还原队列的 tick 会在持有者离开世界的那一刻停止,因此一个简单的实现会永久留下转化后的地形。活动区域会被静态跟踪,并在退出、切换维度和服务端关闭时进行还原。
- 条件被动能力不会残留。 加成是通过幂等方式应用和移除的,而不是依赖状态转换触发,因为
addPermanentModifier会持久化在 NBT 中——如果使用状态转换检测,一次重连就可能将一个条件性增益变成永久性增益。 - 而且它们会在该停的时候停下来。 恶魔果实被动能力在其持有者踏入水中的那一刻确实会被禁用,而
PassiveAbility.tick()会在它能自我清理之前停止调度。ConditionalStatPassiveAbility直接挂钩了这个禁用过程。
继承这个类,你就能获得以上所有特性。偏离它也没问题——类注释中记录了第一次出错时的情况。
将其添加到你的项目
# 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"
通过复合构建,同一代码库的检出会被自动识别,因此你可以并行开发库和你的附加模组,而无需发布任何内容。
🔒 API 稳定性
发布即冻结 API。从 1.0.0 开始,对共享接口的破坏性变更意味着主版本号提升,并强制要求库及其所有使用方同步发布——因此使用方的 versionRange 应排除下一个主版本。
⚖️ 许可证
保留所有权利。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。