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'))

两点值得注意:

  1. compile(...) 是 Gradle 已废弃的配置名(新写法是 implementation), 与本仓库其他三个 mod 用 api / implementation 的风格不一致;
  2. Simply Jetpacks 的坐标是外网直链 jar(mediafilez.forgecdn.net), 不是 maven 坐标,构建需要该 URL 可访问。

依赖的 Simply Jetpacks 不在本 wiki 收录范围(relation.md 中无对应行), 此处不复述其内容。

相关条目

  • 油液检测 - 同包下的 BuildCraftConfig 转发 BuildCraft 的开关
  • 黑名单 API - 与本集成共享 deInit 生命周期