
MariesLib
MariesLib 是一个共享的 NeoForge 1.21.1 库,为 Marie 的模组提供支持。它提供了运行时物品分类、模组兼容性发现、注册表基础设施以及开发者工具。
查看大图
Nourished 发展到其共享基础设施值得拥有独立库的程度。MariesLib 是 Nourished 及未来 Marie 系列模组背后的共享基础。它不是一个游戏性模组——而是提供它们所依赖的可复用系统。
因此我将其拆分为一个独立的库。MariesLib 是诸如 Nourished 等模组背后的共享基础。它不是一个游戏性模组,而是我其他模组构建的基础。
社区
欢迎提出疑问、建议和开发讨论。
你需要安装这个吗?
是的:如果你使用依赖它的模组。
MariesLib 是一个必需的库模组,并非隐藏的基础设施。Nourished 目前需要 MariesLib_v0.1.0-beta.1+ 作为独立安装项。
请同时安装:
- Nourished
- MariesLib_v0.1.0-beta.1 或更新版本
能自动解析依赖的模组加载器和启动器应会自动为你拉取 MariesLib。如果 Nourished 无法加载,请检查 MariesLib 是否存在且为最新版本。
面向模组开发者
- 每个 Marie 模组都需要将 MariesLib 作为单独的模组放置在类路径上。没有 JarJar 打包。将 marieslib 声明为必需依赖,并在引导时通过 MarieLibContext 连接运行时。
它提供了什么
MariesLib 处理共享基础设施,使 Marie 模组能专注于游戏性:
| 系统 | 功能 |
|---|---|
| 分类 | 运行时来源解析、扫描工具和分类追踪 |
| 兼容性发现 | 三层兼容性注册表,支持整合包覆盖 |
| 注册表生命周期 | 具有快照和重载支持的生命周期感知注册表 |
| 追踪与数值 | 玩家数值追踪、记忆窗口、衰减和效果钩子 |
| 诊断 | 数据包验证、未知物品记录和调试命令 |
| 配置工具 | 预设、导入/导出、分享码和模块锁定 |
| 实用工具 | JSON 辅助、有界 LRU 缓存、移动平均、验证 |
它旨在保持轻量、模块化和可复用——一个基础而非游戏性框架。
分类管道
这是 MariesLib 的核心。
当消费模组需要处理一个从未见过的来源时,MariesLib 通过阶段性运行时逻辑进行解析:
- 运行时解析:带有缓存和级联回退
- 令牌标准化:针对特定领域的来源词汇
- 配方继承:以及在配置处进行多值混合
- 覆盖注册表:通过
config/<modid>/source_overrides.json - 分类追踪:使开发者能检查来源为何按此方式解析
还有一个面向开发者的扫描器,用于批量分析未分类来源。在当前 Marie 模组中,这意味着带有 FoodProperties 的物品,例如 Nourished 的食物分类工作流。它并非面向玩家的游戏功能。
具体管道由消费模组决定。MariesLib 提供基础设施;游戏性决策仍由使用它的模组负责。
广泛的模组兼容性
MariesLib 使用三层兼容系统:
| 层 | 来源 | 说明 |
|---|---|---|
| 1 | 消费模组中的 data/<modid>/compat/compat_registry.json |
基础注册表 |
| 2 | 已加载模组中的 data/<other_modid>/marie_compat.json |
模组提供的声明 |
| 3 | config/<modid>/compat_overrides.json |
整合包覆盖 |
后续层会合并到先前的条目中,而非完全替换。这为模组作者、附属模组作者和整合包作者提供了可预测的覆盖路径,而无需重新编译。
基于 MariesLib 构建的模组
| 模组 | 描述 |
|---|---|
| Nourished | NeoForge 1.21.1 的营养模组 |
| ProjecT E 延长寿命 | (计划中) |
面向模组开发者
MariesLib 通过 MarieAPI 暴露公共 API:
float level = MarieAPI.getValueLevel(player, "Item");
MarieAPI.registerValue(definition);
MarieAPI.registerCompatEntry(definition);
MarieAPI.registerCustomEffect(thresholdEffect);
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。