配方系统
基本信息
loader/RecipeLoader.java(public static final RecipeLoader INSTANCE,实现 Runnable)
注册 53 条标准配方 + 4 个自定义配方类。
| 项 | 值 |
|---|---|
| 标准配方数 | 53(GameRegistry.addRecipe / addShapelessRecipe 合计) |
| 自定义配方类 | 4 |
| 触发 | RecipeLoader.INSTANCE.run() |
53 这个数只覆盖标准路径。自定义的 4 个走
CraftingManager.addRecipe之外的实现(IRecipe/ShapelessRecipes子类), 只数GameRegistry.add*会漏。
标准配方用到的三种类型
| 类型 | 出现处 |
|---|---|
ShapedOreRecipe |
有序合成,支持矿词典 |
ShapelessOreRecipe |
无序合成,支持矿词典 |
addShapelessRecipe |
无序,不支持矿词典 |
两者用 ItemAndBlockHolder.<NAME>.stack() 取本 mod 产物,
AE2 侧材料用 AE2_* 常量。
4 个自定义配方类
| 类 | 文件 | 基类/接口 | 行 | 作用 |
|---|---|---|---|---|
DisassembleRecipe |
loader/recipe/DisassembleRecipe.java |
implements IRecipe |
140 | 拆解配方,无固定产物 |
WirelessTerminalRecipe |
同目录 | extends ShapelessRecipes |
72 | 无线终端合成 |
WirelessTerminalEnergyRecipe |
同目录 | extends ShapelessRecipes |
69 | 无线终端 + 能量卡 |
WirelessTerminalQuantumBridgeRecipe |
同目录 | extends ShapelessRecipes |
70 | 无线终端 + 量子桥卡 |
三个 WirelessTerminal*Recipe 各自持有一个静态 ItemStack
(energyCard / quantumBridgeCard / infinityBoosterCard),
并暴露 getEnergyCard() / getQuantumBridgeCard() /
getInfinityBoosterCard() 静态取值方法。
DisassembleRecipe 特殊:
getRecipeOutput()注释写// no default output..getCraftingResult依输入动态计算getRecipeSize()单独实现
ItemAndBlockHolder
loader/ItemAndBlockHolder.java 集中持有全部方块/物品引用,
供配方与 AE2 升级卡注册 共用。
ItemAndBlockHolder.init() 在 CommonProxy.preInit() 中调用
(早于 postInit 的升级卡注册)。
三个 Runnable 加载器
| 加载器 | run() 做什么 |
|---|---|
ChannelLoader |
13 条网络消息,见 Channel Loader |
RecipeLoader |
53 条标准配方 + 4 个自定义配方类 |
KeybindLoader |
7 个按键,见 Key Bindings |
RenderLoader |
WalrusRenderer.load() + 4 个物品渲染器 |
ListenerLoader |
ClientHelper.register()(仅事件监听) |
IRegister<T> 是它们共同实现的 register() 型接口(单方法),
但这 5 个类实际实现的是 Runnable 的 run() ——
IRegister 在本 mod 内没有被这些加载器使用。
RenderLoader 注册的 4 个物品渲染器:
ItemDropRender、ItemPacketRender、ItemWalrusRender、
ItemCertusQuartzTankRender。
相关条目
- Fluid Interface Part — 无序配方把它转成 AE2 接口
- Fluid Storage Bus — 黏液块 + 活塞配方
- Energy Card / Quantum Bridge Card
- Walrus —
WalrusRenderer.load()
源码
src/main/java/com/glodblock/github/loader/RecipeLoader.javasrc/main/java/com/glodblock/github/loader/recipe/(4 个类)src/main/java/com/glodblock/github/loader/{ChannelLoader,KeybindLoader,RenderLoader,ListenerLoader,IRegister,ItemAndBlockHolder}.java- 复算:
grep -cE 'GameRegistry\.add(Recipe|ShapelessRecipe)' src/main/java/com/glodblock/github/loader/RecipeLoader.java→ 53