CropLoadCore
[!INFO] Git Commit:
d3dbd5f| Updated: 2026-10-01
CropLoadCore (modid croploadcore) 是 LOKKO12(bartimaeusnek)为其作物模组系列
(BerriesPP)编写的 1.7.10 核心库 mod,面向 Minecraft 1.7.10 / Forge 10.13.4.1614。
本 mod 不向游戏内添加任何内容——0 方块、0 物品、0 实体、0 指令、0 配置文件。
它到底做什么
名字里的 “Crop Load” 不是"作物加载"。这个 mod 不加载、不生成、不注册任何作物; 它做的是两件基础设施工作:
- 矿辞典桥接 — 把 BoP、Natura、Thaumcraft、TConstruct、Witchery、Thaumic Bases 和原版的
植物方块登记到
crop*前缀的矿辞典名下(共 70 次注册、34 个名字),并把 5 种浆果 聚合进listAllberry。下游作物 mod 随后可用OreDict.BSget(name, cropCard)把这些植物 注册为 IC2 作物的基础种子,从而让 IC2 的作物系统"认识"其它 mod 的植物。 - 改写 IC2 作物行为 — 通过 LateMixin 覆写
ic2.core.crop.BlockCrop(让作物可以种在 任何声明能支撑植物的土壤上,而不仅是 farmland)与ic2.core.item.tool.ItemWeedingTrowel(让作物锄支持自定义杂草)。
名称澄清
CropLoadCore 容易被误读成"作物加载核心"。更准确的理解是**“作物 mod 的公共底座”**:
一个被其它 mod 依赖的 core library。证据:仓库中除本 mod 外只有 20 个源文件,全部是
工具类、注册类与 mixin;mcmod.info 描述为 Core Mod for LOKKO12's Mods.;
ASM 容器的 parent 与 dependants 字段都指向 berriespp(Berries++)。
@Mod 声明了 14 条软依赖(全部 after:,无一条 required-after:),
因此本 mod 可以在只装原版 + IC2 的环境中加载,其功能会自动降级。
实际生效的功能链
init 阶段
└─ OreDict.register() → 7 个 Register 类 + 浆果聚合 + 原版
└─ 下游 mod 调 OreDict.BSget() → IC2 Crops.registerBaseSeed()
preInit 阶段
└─ ModsLoaded.check_init() → 仅打印日志,不影响功能
LateMixin(IC2 存在时)
├─ MixinBlockCrop → 覆写 canPlaceBlockAt / onNeighborBlockChange
└─ MixinItemWeedingTrowel → 覆写 onItemUseFirst
三个易混淆的标识符
| 字符串 | 类型 | 出现位置 |
|---|---|---|
croploadcore |
真正的 modid | CropLoadCore.java:32、gradle.properties |
CropLoadCore |
mod 名称;同时被误用作 @Instance("CropLoadCore") 的取值 |
CropLoadCore.java:33、:37 |
CropLoadCoreASM |
core mod 注入的 DummyModContainer 元信息 modid(驼峰大写) |
CropLoadCoreASM.java:22 |
设定列表
- mod 元信息与打包数据 -
@Mod注解、modid 实读、14 条软依赖、@Instance取值不一致、依赖表 - core mod 与 ASM 容器 -
IFMLLoadingPlugin四个钩子全返回 null 的空壳 core mod 与CropLoadCoreASM虚拟容器 - 矿辞典注册 - 7 个 Register 类的 70 次注册、34 个矿辞典名、
OreDict三个工具方法与BSget缺陷 - IC2 作物 Mixin - LateMixin 装载机制、
BlockCrop覆写、ItemWeedingTrowel覆写 - 库工具类 -
MyRandom、Operators.csig、BlockGetterTC、config、ModsLoaded五个对外工具类