Chisel 模块(appeng.integration.modules.Chisel)
基本信息
| 属性 | 值 |
|---|---|
| 源码 | appeng/integration/modules/Chisel.java |
| 类声明 | 12,public class |
| 实现接口 | 只有 IIntegrationModule(不实现任何 abstraction 接口) |
| 静态单例 | public static Chisel instance |
| modID | chisel(IntegrationType.java:62) |
| side | BOTH |
| 本 wiki 收录情况 | Chisel 未被本 wiki 收录 —— 写全名 Chisel |
生命周期
| 阶段 | 行号 | 动作 |
|---|---|---|
init() |
40 | 把 5 个 AE2 方块登记为 Chisel 变体 |
postInit() |
60 | 空 {} |
全部注入内容
// Chisel.java:40-58
public void init() {
final IBlocks blocks = AEApi.instance().definitions().blocks();
if (blocks.quartz().maybeBlock().isPresent())
registerBlock(blocks.quartz().maybeBlock().get(), 0, "AECertusQuartz");
if (blocks.quartzPillar().maybeBlock().isPresent())
registerBlock(blocks.quartzPillar().maybeBlock().get(), 0, "AECertusQuartz");
if (blocks.quartzChiseled().maybeBlock().isPresent())
registerBlock(blocks.quartzChiseled().maybeBlock().get(), 0, "AECertusQuartz");
registerOre("AECertusQuartz", "AECertusQuartz");
if (blocks.skyStone().maybeBlock().isPresent()) {
registerBlock(blocks.skyStone().maybeBlock().get(), 1, "AESkyStone");
registerBlock(blocks.skyStone().maybeBlock().get(), 2, "AESkyStone");
registerBlock(blocks.skyStone().maybeBlock().get(), 3, "AESkyStone");
registerOre("AESkyStone", "AESkyStone");
}
}
| AE2 方块 | damage | Chisel 变体名 | 行号 |
|---|---|---|---|
blocks.quartz() |
0 | AECertusQuartz |
43-44 |
blocks.quartzPillar() |
0 | AECertusQuartz |
45-46 |
blocks.quartzChiseled() |
0 | AECertusQuartz |
47-48 |
blocks.skyStone() |
1 | AESkyStone |
52 |
blocks.skyStone() |
2 | AESkyStone |
53 |
blocks.skyStone() |
3 | AESkyStone |
54 |
共 6 次 registerBlock 调用,映射到 2 个 Chisel 变体名。
关键设计:全部包在 maybeBlock().isPresent() 里
三处 if(:43 / :45 / :47 / :51)用
Optional<Block>(IBlockDefinition.maybeBlock())判存在性。
这是因为 ApiBlocks 里每个方块定义都可能因 AEFeature 关闭而不存在。
所以:若相关 AEFeature 被关掉,对应的 Chisel 变体也不会注册。
blocks.skyStone() 整块被 :51 的 if 包住,
而 blocks.quartz() 等三处各自独立判。
registerOre 的两次调用
| 行号 | 变体名 | ore 字典名 |
|---|---|---|
| 49 | AECertusQuartz |
AECertusQuartz |
| 55 | AESkyStone |
AESkyStone |
变体名与 ore 名相同。
⚠️ registerBlock / registerOre 的实现在 Chisel.java 的 :40 之前
(私有方法),调用方是本 init()。本条目只记录调用点。
AE2 侧方块不是 Chisel 的
⚠️ AECertusQuartz / AESkyStone 是注册进 Chisel 的变体名,
不是 AE2 的方块名。AE2 自己的注册名见对应条目:
| Chisel 变体名 | 对应 AE2 方块条目 |
|---|---|
AECertusQuartz |
方块石英、方块石英柱、雕刻石英 |
AESkyStone |
方块天空石 |
mod 没装时是否安全跳过
是。chisel 未装 → FAILED → Chisel.class 不加载。
⚠️ Chisel.java 的 import 清单里是否有 chisel.* 需以源码为准;
若使用 Class.getName() 字符串则无编译期依赖。