Mantle
[!INFO] Git Commit:
a907b5d| Updated: 2026-10-01
Slime Knights 的共享代码库(shared code for Forge mods)+ 一套「可翻页手册 / 书册」框架。 为 TConstruct 等自家 mod 提供库存方块基类、模块装载器、网络包工具、调试工具与书籍 GUI。 本身只注册 1 个物品(那本测试手册),0 方块 / 0 实体。
身份
| 属性 | 实测值 |
|---|---|
| modid | Mantle(首字母大写;CoreRepo.java:15 的字面量是构建期占位符) |
| modName | Mantle |
| 主包 | mantle |
| 资源域 | mantle(小写,与 modid 不一致) |
| Java 文件 | 89 |
| 注册内容 | 1 物品 / 0 方块 / 0 实体 |
| 配置项 | 7(Environment 1 + DebugHelpers 6) |
| 配置文件 | config/SlimeKnights/Mantle.cfg |
| 事件 | 1(ManualOpenEvent,Pre / Post 两种) |
| 网络包 | 2 个类,但未注册任何网络通道 |
| 硬依赖 | 仅 Forge ≥ 10.13 |
| 其它 | usesMixins = false;coreModClass 为空;apiPackage 为空;generateGradleTokenClass 为空(无 Tags 类) |
[!IMPORTANT] 定位:共享代码库,不是内容 mod README 第一句即
**Shared code for Forge mods**;mcmod.info的 description 是Shared code for Slime Knights mods and others.。 全仓唯一的注册是Mantle.java:72的GameRegistry.registerItem(mantleBook, "mantleBook")。blocks/与items/包下的类全部是abstract基类或无实例工具类,供第三方继承。
[!NOTE]
mcmod.info全文是${modId}/${modName}/${modVersion}/${minecraftVersion}占位符。 modid 只能从gradle.properties:11的modId = Mantle读取。@Mod(modid = modId, ...)读的是CoreRepo.modId,其字面量为GRADLETOKEN_MODID, 由replaceGradleTokenInFile = CoreRepo.java在构建期替换(该文件确实存在,替换正常)。
[!WARNING] 版本字段没有可读的静态值
generateGradleTokenClass为空 → 不生成Tags类;CoreRepo.modVersion是GRADLETOKEN_VERSION,构建期替换为 git tag。 因此源码中读不到任何一个具体版本号字面量。
入口与配置列表
- Mantle -
@Mod("Mantle")主类,4 个生命周期回调 - CoreRepo - modid / 名称 / 版本常量与 log4j2 logger
- CoreConfig - 7 个配置项,落在
config/SlimeKnights/ - EnvironmentChecks - 构造器即跑的 OptiFine 体检
- MProxyCommon - 公共端代理 +
IGuiHandler - IDDumps - 群系 / 药水 / 附魔 ID 日志转储
- TabTools - 可自定义图标的创造模式标签页
- MantleClientRegistry - 3 张客户端缓存表
- CallableSuppConfig - 崩溃报告配置项(受支持环境)
- CallableUnsuppConfig - 崩溃报告配置项(不受支持环境)
手册与书籍列表
- Manual - 唯一被注册的物品,右键开书
- CraftingItem - 多贴图物品基类
- IDebugItem - 0 方法的物品调试标记接口
- BookData - 书籍元数据
- BookDataStore - 全局注册表(BiMap 双向映射)
- ZipLoader - 外部 zip 书籍加载器
- ManualReader - 外部书籍内容读取
- BookIS - 外部书籍的物品栈清单条目
- BookLoad - 一次加载过程的记录
- BookImage - 插图页纹理包装
- GuiManual - 翻页阅读器主界面
- TurnPageButton - 左右翻页按钮
- MProxyClient - 客户端代理 + 页面类型注册表
- SmallFontRenderer - 936 行小字号字体渲染器
- RenderItemCopy - 685 行 3D 物品渲染器
书页类型列表
- BookPage - 页面抽象基类(4 方法)
- TextPage - 纯文本页
- TitlePage - 标题页(占用了
intro) - BlankPage - 空白页
- SectionPage - 章节页
- SidebarPage - 侧栏页
- ContentsTablePage - 目录页
- PicturePage - 插图页
- FurnacePage - 熔炉页
- CraftingPage - 合成配方页
方块与库存基类列表
- MantleBlock -
Block子类骨架 - BlockUtils - 方块工具类
- InventoryBlock -
BlockContainer库存方块基类 - InventoryLogic - 24 方法库存逻辑中心
- ExpandableInventoryLogic - 可扩容库存
- AdaptiveInventoryLogic - 朝向自适应库存
- InventorySlab - 库存半砖
- MultiItemBlock - 一块多物品的
ItemBlock - MultiServantLogic - 多从属方块管理
库存契约接口列表
- IFacingLogic - 朝向契约
- IActiveLogic - 活跃状态契约
- IServantLogic - 从属方块契约
- IMasterLogic - 主机方块契约
- IMasterNode - 主机节点标记
Pulsar 模块框架列表
[!NOTE]
mantle.pulsar.*共 17 个类是上游 Pulsar 项目的原样打包副本(MIT)。package-info.java:4明写This is a repackaged copy of the Pulsar project。 Mantle 自己未声明任何 pulse,整套框架是给依赖方用的。
- Pulsar 总览 - 上游副本说明与 17 个类的分工
- PulseManager - 装载总控(3 个构造器)
- Pulse - 类级声明注解(6 属性)
- IPulse - 接口式注册路径
- PulseMeta - 统一元数据载体
- Handler - 生命周期回调注解
- PulseProxy - 代理标记注解
- IConfiguration - 配置接口
- Configuration - 配置通用实现
- ForgeCFG - Forge 配置适配
- ILogger - 日志抽象接口
- Log4jLogger - log4j2 实现
- JULLogger - JUL 实现
- LogManager - 日志实现选择器
旧模块框架列表
- ModuleController - 已废弃,被 PulseManager 取代
- ILoadableModule - 旧模块契约
工具与事件列表
- CraftingHandler - 335 行配方冲突探测器
- RecipeRemover - 批量移除配方
- ComparisonHelper - 比较器工厂
- DebugHelper - 调试输出入口
- IDebuggable - 调试契约接口
- DebugData - 调试文本容器
- AbstractPacket - 数据包基类
- PacketUpdateTE - TE 同步包
- Migration - 改名 / 删档迁移基类
- ManualOpenEvent - 手册打开事件
- PlayerUtils - 玩家工具
- ItemUtils - 物品工具
- ItemStackWrapper - 忽略 NBT 的相等包装
- ItemMetaWrapper - 只看 meta 的相等包装
- ItemStackNBTWrapper - 计入 NBT 的相等包装
坐标工具列表
- CoordTuple - 15 方法二维坐标对
- ChunkCoord - 区块坐标对
- DimensionCoordTuple - 带维度的坐标对
- DimensionCoordPair - 维度 + 坐标组合
- CoordTuplePair - 坐标对的元组
- CoordTupleSort - 坐标排序器
- DirectionUtils - 方向工具
- WorldHelper - World 工具
- Dozenal - 十二进制转换,⚠️ 丢最低位且零调用方
源码缺陷
- MProxyClient -
initManualPages把intro注册两次,TitlePage覆盖TextPage;且空栈保护会「报错后仍然执行」导致 NPE - BookDataStore -
getIDFromName对 null 拆箱;addBook用data.size()当 ID,重名书会撞 ID - Manual -
addInformation经getBookfromID拆箱 null; 构造器把CreativeTabs传null,手册不进创造模式 - MProxyCommon -
getServerGuiElement有恒等死分支 - ManualOpenEvent -
Pre事件的取消状态不被检查 - ILoadableModule - 注释里留着
// public static String modId = "ExampleMod";
依赖关系
硬依赖仅 Forge。本 mod 被 Slime Knights 系的 mod 依赖(典型是 TConstruct);
这些 mod 不在本 wiki 收录范围(relation.md 无对应行),故不建分类。
pulsar 包的 17 个类来自上游 Pulsar 项目(MIT),非 GTNH 收录项。