CorePlugin
基本信息
| 属性 | 值 |
|---|---|
| 类名 | sedridor.forgeamidst.CorePlugin |
| 文件 | src/main/java/sedridor/forgeamidst/CorePlugin.java |
| 实现 | IFMLLoadingPlugin |
| 启用版本 | Minecraft 1.7.10 |
功能
coremod 加载插件。在 mod 加载极早期注册 ASM transformer, 给 Climate Control 打补丁。
三个注解
@IFMLLoadingPlugin.MCVersion("1.7.10")
@IFMLLoadingPlugin.TransformerExclusions({ "sedridor.forgeamidst" })
@IFMLLoadingPlugin.SortingIndex(2000)
public class CorePlugin implements IFMLLoadingPlugin {
| 注解 | 值 | 作用 |
|---|---|---|
MCVersion |
1.7.10 |
目标 MC 版本 |
TransformerExclusions |
{ "sedridor.forgeamidst" } |
排除本包自身不被转换 |
SortingIndex |
2000 |
排序靠后(值越大越晚) |
⚠️ TransformerExclusions 只写了 "sedridor.forgeamidst"(精确包名),
而本 mod 另一个包 sedridor.amidst 不在排除列表中。
接口实现
| 方法 | 返回 |
|---|---|
getASMTransformerClass() |
new String[] { "sedridor.forgeamidst.Transformer" } —— 1 个 |
getModContainerClass() |
null |
getSetupClass() |
null |
getAccessTransformerClass() |
null |
injectData(Map) |
把 data.get("coremodLocation") 存入静态 public static File location |
⚠️ 三个 null 意味着这不是 coremod(无 IFMLLoadingPlugin.MCVersion 之外的
mod 替换),也不是 setup 脚本,只做 ASM 转换。
说「它是 coremod 加载器」不准确 —— 它是带 @Mod 的 jar 上的
FML 加载插件(两者可共存,见下)。
manifest
src/main/resources/META-INF/MANIFEST.MF 已入库(非构建生成):
Manifest-Version: 1.0
FMLCorePlugin: sedridor.forgeamidst.CorePlugin
FMLCorePluginContainsFMLMod: true
| 属性 | 值 | 作用 |
|---|---|---|
FMLCorePlugin |
sedridor.forgeamidst.CorePlugin |
指向本类 |
FMLCorePluginContainsFMLMod |
true |
同一个 jar 里还有 FML mod |
⚠️ FMLCorePluginContainsFMLMod: true 是关键:它让
ForgeAmidst 的 @Mod 与本加载插件共存于一个 jar。
⚠️ manifest 里没有 TweakClass(无 mixin),
也没有在 build.gradle.kts 里配置 manifest —— manifest 是手写并入库的。
在 build.gradle.kts 里 grep manifest / FMLCorePlugin 无结果。
实现要点
SortingIndex = 2000表示 transformer 排位靠后, 确保目标类(Climate Control)已加载。injectData保存coremodLocation到静态字段,供需要定位自身 jar 的场景使用。
关联
- Transformer - 唯一注册的 transformer
- ForgeAmidst - 同 jar 内的 FML mod
- Climate Control - 被 patch 的目标(已登记未成文)