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 环境下的两个关键行为

  1. OC 零件的 15 条配方不注册。isGTNHLoaded = Loader.isModLoaded("dreamcraft")(Computronics.java:206),而 15 条 OC 零件配方全部包在 if (!Computronics.isGTNHLoaded) 内,无人机对接站配方同理(IntegrationBuildCraft.java:59)。这些硬件的获取途径由整合包自身提供。方块与驱动本身照常注册——跳过的只有配方。
  2. 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 车票批量打印,带机主权限模型

物品列表

计算机外设列表

集成列表

设置列表

  • 普通项 - 9 个分类的通用配置,含 1 个死字段与 3 处默认值分歧
  • OpenComputers - 15 个开关 + 17 个能耗项 + 3 个声卡参数
  • ComputerCraft - 5 个爬虫升级 ID + 3 个多外设开关
  • 模组兼容性 - 17 个第三方 mod 开关

配方列表

API 列表

实体列表

  • 磁带实体 - 不可销毁的磁带掉落物,⚠️ 仅在 GregTech 加载时注册
  • 蜂群实体 - 既是敌对生物又是 IBeeHousing 的双面实体

成就列表

  • 成就 - 6 个带前置链的成就,条件注册