Computronics
[!INFO] Git Commit:
7e94219| Updated: 2026-10-02
Computronics(原名 Computronics,modid computronics)是一个面向 Minecraft 1.7.10 Forge 的计算机外设扩展示例 mod,由 asiekierka 创建、Techokami 与 Vexatos 维护,源码包为 pl.asie.computronics。它的定位不是「再加一个电脑」,而是给现有的电脑加外设:让 ComputerCraft(CC)与 OpenComputers(OC)的电脑和机器人能够驱动音频、图像、雷达、聊天、加密等现实中由独立硬件承担的能力。
modid 与分类名一致,均为 computronics(@Mod(modid = Mods.Computronics),Computronics.java:104-105;Mods.Computronics = "computronics")。
本 mod 只含 1 个 @Mod 类:pl.asie.computronics.Computronics(全仓 grep -rn '@Mod(' src/ 仅 1 处命中)。GTNH 分支下 9 种计算机生态由同一主类分发,无第二个 mod 实体。
定位与规模
- 11 个核心方块 + 10 个核心 TileEntity + 3 个 GUI,全部由
enable.*开关门控(默认全开) - 4 个核心物品 + 13 个第三方/条件性物品注册 ID,共 28 个注册 ID
- 38 个 ComputerCraft 驱动(
IntegrationComputerCraft.init中 38 处registerMultiPeripheralProvider,无一是注释掉的) - OpenComputers 侧 15 个可配置硬件(
computronics.ocParts的 meta 0–14)+ 1 个独立物品 - 12 个以上第三方 mod 集成,17 个兼容性开关
- 1 个
@Mod类,310 个.java文件,纯 Java(无 Scala / Kotlin)
依赖
全部依赖逐条从 dependencies.gradle 与 @Mod 注解读取,未按名称推断。
运行期必需依赖
dependencies.gradle 中只有 1 条 api(其余 20 条全是 compileOnly):
| 坐标 | 声明位置 |
|---|---|
com.github.GTNewHorizons:AsieLib:0.7.2:dev |
dependencies.gradle:4 |
@Mod(dependencies = …)(Computronics.java:108-115)中只有两条是 required-after:
| modid 约束 | 说明 |
|---|---|
required-after:asielib@[0.4.9,) |
modid 全小写 asielib,与 gradle 坐标 AsieLib 写法不同 |
required-after:Forge@[10.13.2.1291,) |
编译用 10.13.4.1614(gradle.properties:27) |
可选加载序约束
@Mod 注解中其余 16 条全是 after: / before:,不阻止游戏启动:
| 约束 | 类型 |
|---|---|
after:ComputerCraft@[1.75,) |
after |
after:OpenComputers@[1.6.2,) |
after |
after:tis3d@[0.8.2.61,) |
after |
before:OpenPeripheralCore@[1.1,) |
before(Computronics 必须先加载) |
before:OpenPeripheralApi@[3.2,) |
before |
after:MineFactoryReloaded |
after(无版本下界) |
after:RedLogic@[59.1.9,) |
after |
after:ProjRed|Core |
after |
after:BuildCraft|Core@[7.0.6,) |
after |
after:Railcraft@[9.10.0.0,) |
after |
after:EnderIO@[1.7.10-2.3.0.424,) |
after |
after:Forestry |
after(无版本下界) |
after:Waila@[1.5.10,) |
after |
after:MekanismAPI|energy@[8.0.0,) |
after |
after:Flamingo@[1.7.10-1.3,) |
after |
after:armourersWorkshop@[1.7.10-0.33,) |
after |
两条 before:OpenPeripheral* 与 OpenPeripheral 侧的反向约束配对,作用是保证 Computronics 的多外设系统先于 OpenPeripheral 注册。
compileOnly 坐标(dependencies.gradle:5-41)
| 坐标 | 用途 |
|---|---|
com.github.GTNewHorizons:OpenComputers:1.12.38-GTNH:dev |
OC 驱动 |
com.github.GTNewHorizons:BuildCraft:7.1.57:dev |
对接站与门条件 |
com.github.GTNewHorizons:EnderIO:2.10.25:dev |
13 + 13 驱动 |
li.cil.tis3d:TIS-3D:MC1.7.10-1.2.4.70:dev |
TIS-3D 模块 |
com.gregoriust.gregtech:gregtech_1.7.10:6.04.06:dev |
GT6 配方与驱动 |
com.github.GTNewHorizons:GT5-Unofficial:5.09.52.522:dev |
GT5 配方与驱动 |
com.github.GTNewHorizons:Draconic-Evolution:1.5.24-GTNH:api |
1 CC + 1 OC 驱动 |
com.github.GTNewHorizons:StorageDrawers:2.2.20-GTNH:api |
1 CC + 1 OC 驱动 |
com.github.GTNewHorizons:gendustry:1.9.9-GTNH:dev |
Forestry 的 GTNH fork(见下) |
de.dfki.mary:voice-cmu-slt-hsmm:5.2.1 |
MaryTTS 语音包,语音盒的合成音源 |
curse.maven:better-storage-232919:2731636 |
BetterStorage 0.10+ API |
rfg.deobf('copygirl:BetterStorage:0.9.4.111') |
BetterStorage pre-0.10 API(注释写 “Old API, do not change”) |
curse.maven:minefactory-reloaded-66672:2277486-sources-2277487 |
MFR DSU 驱动 |
rfg.deobf('curse.maven:armourers-workshop-229523:3005075') |
人偶驱动 |
rfg.deobf('curse.maven:computercraft-67504:2269339') |
CC 驱动 |
rfg.deobf('curse.maven:flaxbeards-steam-power-224867:2301651') |
FSP 驱动 |
rfg.deobf("maven.modrinth:redlogic:59.1.13") |
RedLogic 灯驱动 |
curse.maven:openperipheralcore-228817:2386737 |
OpenPeripheral 外设适配 |
rfg.deobf('Factorization:Factorization:1.7.10-0.8.108') |
电荷导体驱动 |
curse.maven:mekanism-268560:2475797 |
能量存储驱动 |
Vexatos:Flamingo:1.3 |
Flamingo 驱动 |
三条值得单独指出:
gendustry:1.9.9-GTNH是 Forestry 的 GTNH fork,不是 Forestry 本身(dependencies.gradle:13)。运行期检测的 modid 是Forestry,版本要求[4.2.0,)。- BetterStorage 编译了两代 API(
dependencies.gradle:17与:20),正是第三方外设集成中两处Class.forName各自指向的类。 - MaryTTS 语音包是编译期依赖(
dependencies.gradle:14),运行期需玩家自行把 MaryTTS、语言与语音装进实例的marytts目录(Config.java:140-144的配置描述指向http://wiki.vex.tty.sh/wiki:computronics:mary)。
版本号
Mods.Computronics_VERSION = Tags.VERSION(Mods.java:16),而 Tags 类不在源码树中——它由 com.gtnewhorizons.gtnhconvention Gradle 插件在构建时生成(build.gradle:4;gradleTokenVersion = VERSION,gradle.properties:80)。gradle.properties 中也没有 modVersion 键。因此确切版本号无法从仓库中核实;只能确定 modId = computronics(gradle.properties:10)、modName = Computronics(:6)、modGroup = pl.asie.computronics(:14)。
硬依赖只有 Forge + AsieLib 两条。CC 与 OC 都是可选的:没有 CC 就只有 OC 硬件,没有 OC 就只有 CC 硬件,两种都没有则只剩方块本体。
GTNH 环境下的两个关键行为
- OC 零件的 15 条配方不注册。
isGTNHLoaded = Loader.isModLoaded("dreamcraft")(Computronics.java:206),而 15 条 OC 零件配方全部包在if (!Computronics.isGTNHLoaded)内,无人机对接站配方同理(IntegrationBuildCraft.java:59)。这些硬件的获取途径由整合包自身提供。方块与驱动本身照常注册——跳过的只有配方。 - CC 侧永远启用多外设系统。
CC_ALL_MULTI_PERIPHERALS的||短路保证了这一点(IntegrationComputerCraft.java:55),因此 Computronics 的多外设合并层在 GTNH 上始终接管 CC 的外设查找。
已核实的缺陷
| # | 问题 | 证据 |
|---|---|---|
| 1 | tapeLengths 配置中某项 ≤ 0 时写入 4 而非 4 * L_MINUTE,得到 4 字节的磁带;同段两条错误分支都正确乘了 L_MINUTE |
ItemTape.java:83-84 vs :81、:92 |
| 2 | EntityItemIndestructable 只在加载 GregTech 时注册,但 ItemTape.hasCustomEntity 对所有 meta 返回 true → 无 GT 环境磁带掉落物异常 |
Computronics.java:285-289 vs ItemTape.java:246-248 |
| 3 | RADAR_CC_TIME 字段既不读配置、也无任何读取者(0 命中),是彻底的死字段 |
Config.java:30;grep -rn 'RADAR_CC_TIME' src/ = 1 |
| 4 | tile.computronics.sorter.name(排序机)在 8 个 lang 文件中都有条目,但无对应类、无注册,是纯死条目 |
grep -rn 'sorter' src/main/java/ 无命中 |
| 5 | BuildCraft 条件的 getUniqueTag() 命名空间拼作 computroncis(缺 u),与 modid 不符 |
Triggers.java:51、Actions.java:62;全仓仅此 2 处 |
| 6 | 装了 GregTech 后无法漂白磁带:GT5/GT6 配方集只注册 RecipeColorizer,不注册 RecipeDecolorizer |
GregTech5Recipes.java:410、GregTech6Recipes.java:462 vs ModRecipes.java:320-321 |
| 7 | GuiProviderTapeDrive.setState 的封包异常被 catch (Exception e) { // NO-OP } 静默吞掉,GUI 显示与实际播放状态会不一致且无日志 |
GuiProviderTapeDrive.java:37-45 |
| 8 | BetterStorage 的两处 Class.forName 探测用 // NO-OP 吞异常,不兼容时无任何日志 |
IntegrationOpenComputers.java:225-227、:233-235 |
| 9 | IntegrationForestry.java:169 的 FMLCommonHandler...register(provider) 与 IntegrationTIS3D.java:37 的 TextureLoader 注册均已被注释掉 |
各 1 处 |
| 10 | IntegrationOpenComputers.java:137 的内层 if (Config.OC_MAGICAL_MEMORY) 与外层判断同值,恒真,是无效嵌套 |
该行 |
字段初值与配置默认值不一致的 3 处(SOUND_VOLUME 32→127、GREGTECH_RECIPES false→true、RADAR_ENERGY_COST_OC 5.0→50.0)已列在 设置:普通项 中——都以配置为准,字段初值仅在对应 mod 未加载时生效。
方块列表
- 铁音符盒 - 可被计算机驱动的音符盒,RedNet 25 位掩码输入
- 音频线 - 6 面连接的音频网络线缆,可右击染色
- 扩音器 - 6 朝向的音频播放终端
- 磁带机 - 4 态录音回放设备,DFPWM 音频流核心
- 摄像头 - 推送第一视角画面,可切掉 tick 换红石输出
- 聊天盒 - 2 个 meta(普通 / 创造),按距离推送聊天消息
- 加密机 - AES/CBC + Base64,可锁定
- 高级加密机 - 纯 Java 实现的 RSA 密钥对,仅 OC 加载时完整可用
- 雷达 - 按距离计费的实体扫描
- 彩灯 - 可计算机调色的方块灯
- 语音盒 - MaryTTS 文本转语音,双重门控
- 数字机车中继器 - Railcraft 电力机车的计算机接入点
- 数字信号盒 - 接收器 / 控制器 / 检测器三个同族变体
- 售票机 - Railcraft 车票批量打印,带机主权限模型
物品列表
- 录音带 - 10 个时长变体,CC 媒体提供者
- 便携式磁带驱动器 - 磁带机的物品形态,按 ItemStack 管理数据
- 录音带轨道 - 全部 10 种磁带的共用中心零件
- GT 专用卷轮 - 仅 GregTech 加载时注册
- OpenComputers 零件 - 单一注册 ID、15 个 meta 的多用途 OC 硬件
- 神奇的记忆 - 独立 OC 物品,epic 稀有度
- 数字中继传感器 - 装在 Railcraft 电力机车上的绑定件
- 无人机对接站 - BuildCraft 管道对接件 + OC 无人机升级
- TIS-3D 模块 - 3 个模块变体,供 TIS-3D 打印机使用
- Forestry 零件 - 蜂种「渣渣」的两种酿造产物
计算机外设列表
- ComputerCraft 爬虫升级 - 5 个升级(ID 190–194,可配置)
- ComputerCraft 多外设系统 - 38 个驱动的合并层,解决多 mod 抢外设
- OpenComputers 机器人升级 - 5 个 upgrade 变体的方法集
- OpenComputers 卡片 - 6 张 card 变体的方法集
- OpenComputers 机架板卡 - 4 块 RackMountable 变体的方法集
集成列表
- 第三方外设集成 - 12 个 mod 的驱动总表 + 2 处类名反射注册
- Railcraft 集成 - 5 方块 + 1 物品 + 11 CC / 9 OC 驱动
- EnderIO 集成 - 13 CC + 13 OC 驱动,两侧完全对称
- BuildCraft 集成 - 对接站、蓝图、6 触发器 + 8 动作门条件
- GregTech 集成 - GT5/GT6 各 34 条配方,GT5 专属 7 个 OC 驱动
- Forestry 集成 - 新蜂种注册、蜂群实体与纳米机器提供者
- TIS-3D 集成 - 3 个模块、序列化与手册页
设置列表
- 普通项 - 9 个分类的通用配置,含 1 个死字段与 3 处默认值分歧
- OpenComputers - 15 个开关 + 17 个能耗项 + 3 个声卡参数
- ComputerCraft - 5 个爬虫升级 ID + 3 个多外设开关
- 模组兼容性 - 17 个第三方 mod 开关
配方列表
- Computronics 配方 - 5 个配方集、GTNH 门控行为与材料回退链
API 列表
- 多外设 API - 5 个接口 / 类,两种第三方接入方式
- 音频、磁带与聊天 API - 3 个子包 22 个文件的方法签名
实体列表
成就列表
- 成就 - 6 个带前置链的成就,条件注册