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)) 分支内。