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 的场景使用。

关联