mod 元信息与打包数据
[!INFO] Git Commit:
93da3e1| Updated: 2026-10-01
基本信息
| 属性 | 值 |
|---|---|
| modid | structurecompat |
| mod 名称 | StructureCompat |
@Mod 类 |
net.glease.structurecompat.StructureCompat |
| 实现接口 | com.gtnewhorizon.structurelib.IStructureCompat |
| 依赖 | required-after:structurelib |
| 接受版本 | [1.7.10] |
| 源码文件总数 | 18 个 .java |
| 自有方块 / 物品 / 实体 / 指令 | 0 / 0 / 0 / 0 |
| 配置文件 | 无(本 mod 不创建任何配置文件) |
本 mod 不注册任何方块、物品、实体或指令,也不向游戏内添加内容。它是一个纯逻辑插件,唯一作用是在 postInit 阶段向 StructureLib 的服务注册表登记外部 mod 的适配实现。
modid 的来源
modid 在两处硬编码,且刻意绕开了 Gradle 占位符:
Tags.java:8—public static final String MODID = "structurecompat";gradle.properties—modId = structurecompat
Tags.java 中另外三个常量仍然是构建期占位符,由 gtnhconvention 在编译时替换:
| 常量 | 源码字面量 | 替换来源 |
|---|---|---|
Tags.MODNAME |
"GRADLETOKEN_MODNAME" |
gradle.properties 的 modName |
Tags.VERSION |
"GRADLETOKEN_VERSION" |
git tag |
Tags.GROUPNAME |
"GRADLETOKEN_GROUPNAME" |
gradle.properties 的 modGroup |
gradle.properties 里同时保留着已废弃的 gradleTokenModId = GRADLETOKEN_MODID,但
generateGradleTokenClass 为空、replaceGradleTokenInFile = Tags.java,且 Tags.MODID 写的是字面量
而非占位符——GRADLETOKEN_MODID 在本 mod 中并未被使用。运行时可用的 modid 只有 structurecompat
这一个来源。
与 StructureLib 的依赖关系
README 只有一行:Compatibility module for StructureLib.。依赖在四处同时声明:
gradle.properties/dependencies.gradle—api("com.github.GTNewHorizons:StructureLib:1.4.18:dev")@Mod(dependencies = "required-after:structurelib")(StructureCompat.java:26)mcmod.info—"requiredMods": ["structurelib"]- 实现
StructureLib的服务接口IStructureCompat
注意 dependencies.gradle 中 StructureLib 用的是 api 而非 implementation:这意味着
IStructureCompat、InventoryUtility、IMultiblockInfoContainer 等类型出现在本 mod 的 public
API 上,下游 mod 依赖本 mod 时也会一并拿到 StructureLib。
mcmod.info
"description": "Setup StructureLib with compat for other mods.",
"authorList": ["glee8e"],
"requiredMods": ["structurelib"]
资源目录下仅有 2 个文件:assets/structurecompat/lang/en_US.lang 与 mcmod.info,没有 mixin 配置、
没有 access transformer、没有 META-INF 目录,也没有 mixin 插件(usesMixins = false)。
本 mod 完全依赖 FML 的 ASMDataTable 做类扫描,机制见
compat 派发机制。
侧代理
@SidedProxy 指向 CommonProxy / ClientProxy(StructureCompat.java:32-35)。公共侧两个方法
(preInit、markTextureUsed)都是空实现;客户端侧的重写用于 Hodgepodge 贴图补丁通知,详见
客户端贴图钩子。
运行期日志
preInit 与 postInit 各输出一条汇总日志(StructureCompat.java:51、70):
Identified N compat(s) to load.Successfully activated N compat(s).
两条数字可以不相等:preInit 统计的是通过 modid 门控的类,postInit 统计的是反射构造成功的类。
若某个 compat 的构造函数抛异常(InvocationTargetException),会记 ERROR 并被跳过。