Simply Jetpacks 集成
基本信息
| 属性 | 值 |
|---|---|
| 集成类 | buildcraft.oiltweak.integration.simplyjetpacks.IntegrationSimplyJetpacks |
| 触发条件 | Mods.isSimplyJetpacksLoaded(BuildCraftOilTweak.java:55) |
| 被改动的字段 | tonius.simplyjetpacks.config.Config.flammableFluidsExplode |
| 改法 | 启动时强制 true;deInit 时还原 |
| 重载监听 | ConfigChangedEvent.PostConfigChangedEvent(EventPriority.LOWEST) |
| 编译期依赖 | compileOnly 直接引用 SimplyJetpacks 1.5.3 的 jar |
做了什么
private void updateConfig() {
try {
actualFlammableFluidsExplode = Config.flammableFluidsExplode;
Config.flammableFluidsExplode = true;
} catch (Exception e) { /* NO-OP */ }
}
Simply Jetpacks 自带一个"可燃流体是否会爆炸"的配置项,默认关闭。 本 mod 打开它,好让油在明火下会爆炸——否则"掉进油里"只会被困住, 不会产生危险,与 mod 名"让油更危险"的定位一致。
actualFlammableFluidsExplode 保存原值,deInit 时还原:
public void deInit() {
try { Config.flammableFluidsExplode = actualFlammableFluidsExplode; }
catch (Exception e) { /* NO-OP */ }
}
配置被改回后会自动重新打开
玩家在 Simply Jetpacks 自己的设置界面改配置时,
onConfigChanged 会在 modID 匹配时再次 updateConfig()——
即每次该配置发生变化,mod 都重新记录新值并强制设回 true。
玩家因此无法真正关闭这个选项(除非禁用本 mod)。
静默失败
updateConfig 与 deInit 各自把 Exception 吞掉并留空注释 // NO-OP。
即:Simply Jetpacks 版本变化导致字段改名或类型改变时,
本集成不会报错、不会提示,只是悄悄地不起作用。
tonius.simplyjetpacks.config.Config 是硬引用(虽在 compileOnly 中),
字段访问失败会被 catch (Exception e) 覆盖——
但 NoClassDefFoundError 是 Error 而非 Exception,不会被捕获。
不过 isSimplyJetpacksLoaded 为假时这段代码根本不会执行,
所以 Error 只可能出现在"mod 加载了但类结构不符"的边缘情况。
包路径的历史错位
配置类 BuildCraftConfig 位于
buildcraft.oiltweak.integration.simplyjetpacks 包下,
但它与 BuildCraft 无关——它只是转发 BuildCraftEnergy.isOilDense
(见 油液检测)。该文件与本集成类同包纯属历史遗留的目录复用,
名字具有误导性。
依赖范围
dependencies.gradle 中:
compile('com.github.GTNewHorizons:BuildCraft:7.1.39:dev')
compileOnly(deobf('https://mediafilez.forgecdn.net/files/2267/185/SimplyJetpacks-MC1.7.10-1.5.3.jar'))
两点值得注意:
compile(...)是 Gradle 已废弃的配置名(新写法是implementation), 与本仓库其他三个 mod 用api/implementation的风格不一致;- Simply Jetpacks 的坐标是外网直链 jar(mediafilez.forgecdn.net), 不是 maven 坐标,构建需要该 URL 可访问。
依赖的 Simply Jetpacks 不在本 wiki 收录范围(relation.md 中无对应行),
此处不复述其内容。