mod 元信息与打包数据
[!INFO] Git Commit:
d3dbd5f| Updated: 2026-10-01
基本信息
| 属性 | 值 |
|---|---|
| modid | croploadcore |
| mod 名称 | CropLoadCore |
@Mod 类 |
com.github.bartimaeusnek.croploadcore.CropLoadCore |
| 作者 | bartimaeusnek(LOKKO12) |
| 接受版本 | Minecraft 1.7.10 / Forge 10.13.4.1614(无 acceptedMinecraftVersions 限定) |
| core mod 类 | ASM.CropStickTransformer_plugin(coreModClass) |
| 源码文件总数 | 20 个 .java |
| 自有方块 / 物品 / 实体 / 指令 | 0 / 0 / 0 / 0 |
| 配置文件 | 无(本 mod 不创建任何配置文件) |
mcmod.info 的描述是 Core Mod for LOKKO12's Mods.——本 mod 是作者其它作物 mod
(BerriesPP,仓库中以 berriespp 形式出现在 core mod 元信息里)共用的底层库,
自身不注册任何游戏内容。
modid 的来源
modid 在两处一致,没有使用已废弃的 gradleTokenModId 占位符:
CropLoadCore.java:32—public static final String MODID = "croploadcore";gradle.properties—modId = croploadcore
gradle.properties 里 gradleTokenModId =(空值)且 generateGradleTokenClass =(空值),
而 replaceGradleTokenInFile = CropLoadCore.java——只替换 VERSION 一个字段:
public static final String VERSION = "GRADLETOKEN_VERSION"; // CropLoadCore.java:34
运行时可读的 modid 只有 croploadcore。注意大小写:modid 与 mod 名称都是小写 croploadcore /
CropLoadCore,但 ASM 容器另有一个 modid 为 CropLoadCoreASM(首字母大写)的虚拟容器,
两者不要混淆,详见 core mod 与 ASM 容器。
@Mod 依赖声明
CropLoadCore.java:16-28 声明了 14 条软依赖(全部是 after:,注意每个字符串都带一个前导空格,
FML 会自行 trim,不影响解析):
after:witchery after:Ztones after:GalacticraftCore after:GalacticraftPlanets
after:IC2 after:Mantle after:Natura after:TConstruct
after:BiomesOPlenty after:Thaumcraft after:ExtraTrees after:gregtech
after:dreamcraft after:thaumicbases
全部是 after: 而没有一条 required-after:,因此本 mod 可以在只装原版 + IC2 的环境里加载。
这些软依赖的实际用途是保证 mod 加载顺序,好让 OreDict.register() 运行在本 mod 加载的
其它作物/土壤 mod 之后。
声明与实现的三处不一致
ModsLoaded 实际探测的 modid 与 @Mod 依赖列表并不一致:
ModsLoaded 字段 |
探测的 modid | 是否在 @Mod 依赖列表中 |
|---|---|---|
GT5uNH |
gregtech_nh |
❌ 列表里是 gregtech |
PHC |
harvestcraft |
❌ 未声明 |
GTpp |
miscutils |
❌ 未声明 |
ModsLoaded.java:25-28。其中 GTpp(GT++)探测到后会完全跳过其余 7 项逐条日志
(ModsLoaded.java:30、55),改输出一行 GT++ installed, the logs will show you the installed Mods.。
harvestcraft 与 miscutils 未出现在依赖声明中,意味着它们的加载顺序不受本 mod 保证——
OreDict 中也确实没有对应的 Register 类,二者仅用于日志。
事件处理
只有两个 @EventHandler(CropLoadCore.java:40-48):
| 阶段 | 方法 | 动作 |
|---|---|---|
preInit |
preInit |
ModsLoaded.check_init("bartimaeusnek's mods") — 仅打印日志 |
init |
Init |
OreDict.register() — 全部实际功能 |
没有 postInit,也没有 FMLServerStartingEvent 之类的服务器事件。本 mod 不注册指令、
不注册 GUI、不处理配方。mc_server 侧完全无感。
@Instance 的取值与 modid 不一致
@Mod(modid = CropLoadCore.MODID, ...) // modid = "croploadcore"
public class CropLoadCore {
@Instance(value = "CropLoadCore") // ← 用的是 mod 名称,不是 modid
public static CropLoadCore instance;
}
CropLoadCore.java:13 与 :37。@Instance 的 value 填的是 "CropLoadCore"(首字母大写的 mod 名称),
而 @Mod 声明的 modid 是 "croploadcore"。FML 1.7.10 通过 mod 列表按 id 查找实例,两个字符串不一致。
该字段的唯一用途是供下游 mod 访问本 mod 实例(作为库),本仓库内 20 个源文件中
没有任何一处读取 CropLoadCore.instance(已 grep 确认,全仓库仅 :38 的声明本身)。
因此即使注入失败也不影响本 mod 自身功能,但下游若依赖 instance 会拿到 null。
dependencies.gradle
全部 7 条依赖都是 compileOnly,没有任何一条是 api 或 implementation:
compileOnly('com.github.GTNewHorizons:Natura:2.8.9:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:TinkersConstruct:1.14.6-GTNH:dev') {transitive=false}
compileOnly('com.github.GTNewHorizons:ThaumicBases:1.9.2:dev') {transitive=false}
compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev') {transitive=false}
compileOnly("net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev")
compileOnly(deobfCurse('witchery-69673:2234410'))
compileOnly(rfg.deobf("curse.maven:biomes-o-plenty-220318:2499612"))
Natura / TConstruct / ThaumicBases / Thaumcraft / Witchery / Biomes O’ Plenty 的对应 Register 类
都直接 import 它们的类(如 mods.natura.common.NContent、tconstruct.world.TinkerWorld),
因此运行期若这些 mod 缺失,只要相应 Register 未被触发就不会触发类加载错误——
OreDictRegistrator.register() 用 Loader.isModLoaded 做了前置检查(见
矿辞典注册)。
IC2 是唯一在源码中被硬依赖的 mod(ic2.core.crop.BlockCrop 等),但它没有出现在
@Mod 的依赖列表中,只作为 compileOnly 出现在依赖表,且通过 CropLoadCoreASM 的
getDependencies() 声明为必需(见 core mod 与 ASM 容器)。
打包数据
资源目录仅 3 个文件:mcmod.info、mixins.croploadcore.json、mixins.croploadcore.late.json。
没有语言文件、没有 access transformer、没有 assets 目录——本 mod 不向玩家显示任何本地化文本
(唯一的报错字符串 POWAOFCAPLSLOCK 是日志,不进游戏)。详见
IC2 作物 Mixin。