BuildCraft 集成

基本信息

属性 值
实现包 pl.asie.computronics.integration.buildcraft(含 pluggable / statements 子包)
依赖声明 `after:BuildCraft
编译依赖 com.github.GTNewHorizons:BuildCraft:7.1.57:dev(dependencies.gradle:6)
激活条件 加载 `BuildCraft

注册内容

1. 无人机对接站(2 个注册 ID)

注册名 物品类 说明
computronics.droneStation ItemDroneStation 管道可插拔部件(IPipePluggableItem)
computronics.dockingUpgrade ItemDockingUpgrade(子名 drone_upgrade_docking) OC 无人机升级

注册于 IntegrationBuildCraft.preInitOC(IntegrationBuildCraft.java:30-40),dockingUpgrade 额外走 Driver.add((Item) …) + Driver.add((EnvironmentProvider) …)(:36-37)。管道可插拔注册为 PipeManager.registerPipePluggable(DroneStationPluggable.class, "computronics.droneStation")(IntegrationBuildCraft.java:55)。详见 无人机对接站。

2. 可加热驱动(CC + OC 各一)

DriverHeatable 给 BuildCraft 加热器提供接口。CC 侧注册在 Mods.hasVersion(BuildCraftAPI|tiles, [1.1,)) 分支(IntegrationComputerCraft.java:158-162),OC 侧在 IntegrationOpenComputers.java:315-319。开关:modCompatibility.enableBuildCraftDrivers。

3. 方块蓝图(Base Schematic)

IntegrationBuildCraftBuilder.INSTANCE.registerBlockBaseSchematic(block) 把方块注册为可蓝图放置的 Base Schematic。调用点:

方块 位置
全部 11 个核心方块 Computronics.java:199(registerBlockWithTileEntity 内,对每个方块统一调用)
数字机车中继器 IntegrationRailcraft.java:64
检测器 IntegrationRailcraft.java:92
售票机 IntegrationRailcraft.java:101

注意:数字信号接收器与控制器不走这条路(IntegrationRailcraft.java:72-85 内没有 registerBlockBaseSchematic 调用)。

蓝图集成只在 Mods.API.hasAPI(BuildCraftAPI|blueprints) 时初始化(Computronics.java:368-370)。

4. 门条件(6 触发器 + 8 动作)

注册于 postInit 的 Mods.API.hasAPI(BuildCraftAPI|statements) 分支(Computronics.java:424-428),依次调 TriggerProvider.initialize()、ActionProvider.initialize()、StatementParameters.initialize()。

6 个触发器(Triggers 枚举,Triggers.java:20-25):

tag 中文名(zh_CN.lang) 实现
computer_running 电脑运行中 TriggerComputer.Running:Case 内机器 isRunning()(TriggerComputer.java:15-24)
computer_stopped 电脑已关闭 TriggerComputer.Stopped:!isRunning() && !isPaused()(TriggerComputer.java:26-36)
tape_drive_playing 磁带机播放中 TriggerTapeDrive(State.PLAYING)
tape_drive_stopped 磁带机已关闭 TriggerTapeDrive(State.STOPPED)
tape_drive_rewinding 磁带机倒放中 TriggerTapeDrive(State.REWINDING)
tape_drive_forwarding 磁带机快进中 TriggerTapeDrive(State.FORWARDING)

8 个动作(Actions 枚举,Actions.java:11-18):

tag 中文名 实现 参数数
computer_start 启动电脑 ActionComputer.Start 0
computer_stop 关闭电脑 ActionComputer.Stop 0
tape_drive_start 启动磁带机 ActionTapeDrive(PLAYING) 0
tape_drive_stop 关闭磁带机 ActionTapeDrive(STOPPED) 0
tape_drive_rewind 倒放磁带机 ActionTapeDrive(REWINDING) 0
tape_drive_forward 快进磁带机 ActionTapeDrive(FORWARDING) 0
lamp_color_set 设定灯的颜色 ActionLamp.Set 3–3(Actions.java:17)
lamp_color_reset 重置灯的颜色 ActionLamp.Reset 0

lamp_color_set 的 3 个参数是 RGB(tooltip.computronics.gate.action.lamp_color.red/green/blue = “红: %s” 等)。

图标路径为 computronics:buildcraft/actions/action.<tag>(Actions.java:66)。

⚠️ getUniqueTag() 有拼写错误:Triggers.java:51 与 Actions.java:62 返回的命名空间是 computroncis(少一个 u,正确应为 computronics):

return "computroncis:trigger." + tag;
return "computroncis:action." + tag;

全仓仅此 2 处出现该拼写(grep -rn 'computroncis' src/ = 2 命中)。该字符串用于 BuildCraft 的条件唯一标识,而同一文件的图标路径用的是正确的 computronics:。BuildCraft 本身不校验命名空间与 modid 是否一致,因此实际后果是条件被注册在一个与 modid 不符的命名空间下——可能影响其它 mod 扫描/覆盖同名条件,但不会导致条件不可用。

数值

数值名 值 范围 来源
enable.buildcraft.droneDockingStation true 布尔 Config.java:335-340
modCompatibility.enableBuildCraftDrivers true 布尔 Compat.java:14

两者都只在 BuildCraft|Transport 与 BuildCraft|Core 同时加载时读入(Config.java:334-340),且位于 if (Mods.isLoaded(Mods.OpenComputers)) 分支内。

相关条目