BuildCraft Oil Tweak

[!INFO] Git Commit: 6cd50ef | Updated: 2026-10-01

BuildCraft Oil Tweak(作者 Vexatos)是一个纯行为调整的附属, 让玩家(或生物)泡在油里时几乎动不了——上升被完全禁止、下落与水平速度 大幅衰减、台阶高度归零,并附带挖掘减速、末影传送禁用与物品右键限制。 它还有一条 Simply Jetpacks 集成,把"可燃流体是否爆炸"强制打开,让油真的会炸。

它不注册任何方块、物品或实体,也没有自己的配置文件。

主要特性:

  • 三态浸没判定:按实体包围盒扫描,NONE / HALF / FULL; 全身浸没时连方块都放不了,半身浸没仍可用方块类物品;
  • 移动阻尼:上升清零、下落衰减到 5%、水平速度衰减到 5% 且钳制在 ±0.05、 每 tick 额外压低 0.05、步高归零;
  • 生存模式飞行强制关闭(创造模式保留);
  • 交互限制:挖掘速度取 original/new 较小者再除 3; 末影传送无条件取消(创造豁免);右键按"全身 + 非方块"与"黑名单"两条规则拦截;
  • 末影珍珠黑名单:内置 provider 拦原版与自定义末影珍珠,其他 mod 可注册自己的 provider;
  • 可热插拔:canBeDeactivated = true,deInit 还原 Simply Jetpacks 配置。

⚠️ 名字有误导性。自 1.0.1 起它已不再依赖 BuildCraft 的油实现, 判定依据只是流体名等于 "oil"(equalsIgnoreCase), 所以 Ender IO 的油同样生效;而 crude oil / heavy oil 这类名字不同的不算。 更要命的是总开关直接读 BuildCraft Energy 的 isOilDense: BuildCraft Energy 缺失时 isOilDense() 恒为 false, 全部 5 个事件处理器第一行就 return,本 mod 静默完全失效。 BuildCraft|Core、EnderIO、simplyjetpacks 三个 after: 依赖在源码中 均无对应类引用。

⚠️ mcmod.info 中 modid / name / version 均为 ${modId} / ${modName} / ${modVersion} 占位符。实测 modid 来自 Java 常量 Mods.BCOilTweak = "OilTweak"(Mods.java:11,驼峰)—— 与分类名 buildcraftoiltweak、与仓库名 BuildCraftOilTweak 都不一致; 资源域则是全小写 oiltweak(语言文件在 assets/oiltweak/lang/), 属 modid ≠ 资源域 的情形。

效果

  • 油中移动阻尼 - 四步数值处理、步高保存/恢复、飞行降级,以及本地玩家被三个处理器重复施加的缺陷
  • 交互限制 - 挖掘速度取小再除 3、末影传送取消、右键两条规则与 FULL/HALF 的提示差异

配置与 API

  • 油液检测 - 包围盒扫描、FULL 判定两条件、流体名匹配、isOilDense 开关链
  • 黑名单 API - OilTweakAPI 抽象基类设计、provider 短路 OR、内置末影珍珠判定
  • Simply Jetpacks 集成 - 强制 flammableFluidsExplode = true、配置变更后自动改回、静默失败