本页说明 OpenComputers 为 IndustrialCraft 2 提供的集成接口。内容涵盖作物方块、EU 能量网络设备、质量制造机、传送机,以及多个核反应堆访问入口。
- 依赖:
ic2 - 标签:
integration-required
mass_fabcropenergy_conductorenergy_sinkenergy_sourceenergy_storageic2_teleporterreactorreactor_chamberreactor_redstone_port
- 在 Lua 中读取 IC2 作物属性和环境数值。
- 查询 EU 储能设备和导体的能力边界。
- 通过主反应堆、反应堆舱室或红石端口监控并控制反应堆。
- 用脚本修改传送机目标坐标。
- 跟踪质量制造机充能进度。
- 语法:
getProgress(): number - 用途: 返回 OC 驱动为质量制造机计算出的进度值。
- 返回值:
100 * storedEnergy / demandedEnergy的计算结果。
- 使用说明:
- 这不是 IC2 单独提供的现成百分比字段,而是驱动根据能量值现场算出来的。
- 驱动不会再做额外归一化或钳制。
crop 组件对应 IC2 作物方块。
- 语法:
getSize(): number - 用途: 返回当前作物的生长阶段大小。
- 语法:
getGrowth(): number - 用途: 返回作物的 growth 属性。
- 语法:
getGain(): number - 用途: 返回作物的 gain 属性。
- 语法:
getResistance(): number - 用途: 返回作物的 resistance 属性。
- 语法:
getNutrientStorage(): number - 用途: 返回内部储存的营养值。
- 语法:
getHydrationStorage(): number - 用途: 返回内部储存的水分值。
- 语法:
getWeedExStorage(): number - 用途: 返回内部储存的 Weed-EX 数值。
- 语法:
getHumidity(): number - 用途: 返回作物周围当前的湿度值。
- 语法:
getNutrients(): number - 用途: 返回作物周围当前的营养值。
- 语法:
getAirQuality(): number - 用途: 返回作物周围当前的空气质量值。
- 语法:
getName(): string - 用途: 返回当前种植的 crop card 名称。
- 使用说明:
- 驱动直接读取
tileEntity.getCrop().name()。
- 驱动直接读取
- 语法:
getRootsLength(): number - 用途: 返回当前 crop card 报告的根系长度。
- 语法:
getTier(): number - 用途: 返回当前 crop card 的等级。
- 语法:
maxSize(): number - 用途: 返回当前 crop card 的最大尺寸。
- 语法:
canGrow(): boolean - 用途: 返回当前 crop card 在这个地块上是否还能继续生长。
- 语法:
getOptimalHavestSize(): number - 用途: 返回当前 crop card 的最佳收获尺寸。
- 使用说明:
- 暴露给 Lua 的方法名就是
Havest这个拼写,因为驱动源码本身就是这样写的。
- 暴露给 Lua 的方法名就是
- 作物相关接口全部是只读接口。
- 其中一部分值来自作物方块本体,而
getName()、getRootsLength()、getTier()、maxSize()、canGrow()、getOptimalHavestSize()来自当前种植的 crop card。
- 语法:
getConductionLoss(): number - 用途: 返回导体的线路损耗值。
- 语法:
getConductorBreakdownEnergy(): number - 用途: 返回导体击穿阈值。
- 语法:
getInsulationBreakdownEnergy(): number - 用途: 返回绝缘层击穿阈值。
- 语法:
getInsulationEnergyAbsorption(): number - 用途: 返回绝缘层最多可吸收的能量值。
- 语法:
getSinkTier(): number - 用途: 返回这个设备接受 EU 输入时使用的 IC2 sink 等级。
- 语法:
getOfferedEnergy(): number - 用途: 返回该能量源当前可提供的能量值。
- 语法:
getCapacity(): number - 用途: 返回最大储能容量。
- 语法:
getOutput(): number - 用途: 返回当前输出上限。
- 语法:
getStored(): number - 用途: 返回当前储能量。
- 语法:
setCoords(x: number, y: number, z: number) - 用途: 设置传送机目标坐标。
- 参数:
x、y、z: 目标坐标。
- 返回值:
- 成功时没有有意义的返回值。
- 使用说明:
- 只有三个参数全部是整数时,目标坐标才会真正写入。
- 如果其中任意一个参数不是整数,回调会直接结束,不会报错,也不会改动目标。
reactor、reactor_chamber 和 reactor_redstone_port 绝大多数接口相同,差别主要在于它们如何找到真实反应堆,以及在没有有效目标时各自怎么处理。
当槽位中有物品时,getSlotInfo(x, y) 返回一个表,可能包含:
item: 原始物品堆。canStoreHeat: 仅反应堆组件才有。heat: 仅支持热量信息的反应堆组件才有。maxHeat: 仅支持热量信息的反应堆组件才有。
如果槽位为空,则返回 nil。
- 语法:
getHeat(): number - 用途: 返回当前反应堆热量。
- 语法:
getMaxHeat(): number - 用途: 返回爆堆前的最大热量阈值。
- 语法:
getReactorEnergyOutput(): number - 用途: 返回原始反应堆能量输出值,不乘基础 EU/t。
- 语法:
getReactorEUOutput(): number - 用途: 返回基础 EU/t 输出值。
- 语法:
producesEnergy(): boolean - 用途: 返回反应堆当前是否处于产能状态。
- 语法:
setActive(active: boolean): boolean - 用途: 通过红石状态启用或停用反应堆。
- 返回值:
- 设置后的红石状态。
- 如果拿不到有效的电力反应堆实例,则返回
false。
- 语法:
getSlotInfo(x: number, y: number): table | nil - 用途: 返回指定反应堆网格槽位的物品信息。
reactor_chamber 通过连接的反应堆舱室转发访问。
- 语法:
getHeat(): number - 用途: 返回所连接反应堆的当前热量。
- 返回值:
- 正常时返回真实热量。
- 如果舱室没有连到有效反应堆,则返回
0。
- 语法:
getMaxHeat(): number - 用途: 返回所连接反应堆的最大热量阈值。
- 返回值:
- 正常时返回真实值。
- 如果舱室没有连到有效反应堆,则返回
0。
- 语法:
getReactorEnergyOutput(): number - 用途: 返回所连接反应堆的原始能量输出。
- 返回值:
- 正常时返回真实值。
- 如果舱室没有连到有效反应堆,则返回
0。
- 语法:
getReactorEUOutput(): number - 用途: 返回所连接反应堆的基础 EU/t 输出。
- 使用说明:
- 这一项和上面几个不同,驱动在读取前没有先做空目标回退保护。
- 语法:
producesEnergy(): boolean - 用途: 返回所连接反应堆当前是否正在产能。
- 返回值:
- 正常时返回真实状态。
- 如果舱室没有连到有效反应堆,则返回
false。
- 语法:
setActive(active: boolean): boolean - 用途: 通过舱室改写反应堆红石状态。
- 返回值:
- 设置后的红石状态。
- 如果拿不到有效的电力反应堆实例,则返回
false。
- 语法:
getSlotInfo(x: number, y: number): table | nil - 用途: 通过舱室读取指定槽位的物品信息。
- 返回值:
- 有物品时返回共享槽位信息表。
- 如果没有连到反应堆,或者槽位为空,则返回
nil。
reactor_redstone_port 会先解析出它连接的是主反应堆还是反应堆舱室,再基于真实目标提供接口,并额外多一个放热量查询。
- 语法:
getHeat(): number - 用途: 返回目标反应堆当前热量。
- 返回值:
- 正常时返回真实值。
- 没有有效目标时返回
0。
- 语法:
getMaxHeat(): number - 用途: 返回目标反应堆最大热量阈值。
- 返回值:
- 正常时返回真实值。
- 没有有效目标时返回
0。
- 语法:
getReactorEnergyOutput(): number - 用途: 返回目标反应堆原始能量输出。
- 返回值:
- 正常时返回真实值。
- 没有有效目标时返回
0。
- 语法:
getReactorEUOutput(): number - 用途: 返回目标反应堆的基础 EU/t 输出。
- 使用说明:
- 和 chamber 版本一样,这一项不是按“无目标直接回 0”的方式写的。
- 语法:
producesEnergy(): boolean - 用途: 返回目标反应堆当前是否正在产能。
- 返回值:
- 正常时返回真实状态。
- 没有有效目标时返回
false。
- 语法:
setActive(active: boolean): boolean - 用途: 通过红石端口改写目标反应堆的红石状态。
- 返回值:
- 设置后的红石状态。
- 如果拿不到有效的电力反应堆实例,则返回
false。
- 语法:
getEmitHeat(): number - 用途: 返回反应堆对外放出的热量,尤其适合流体反应堆监控。
- 返回值:
- 如果目标是电力反应堆实例,则返回其
EmitHeat。 - 否则返回
0。
- 如果目标是电力反应堆实例,则返回其
- 语法:
getSlotInfo(x: number, y: number): table | nil - 用途: 通过红石端口读取指定槽位的物品信息。
- 返回值:
- 有物品时返回共享槽位信息表。
- 如果没有有效目标,或者槽位为空,则返回
nil。
local component = require("component")
if component.isAvailable("crop") then
local crop = component.crop
print("Crop:", crop.getName(), "size", crop.getSize(), "/", crop.maxSize())
print("Can grow:", crop.canGrow())
end
if component.isAvailable("reactor") then
local reactor = component.reactor
print("Heat:", reactor.getHeat(), "/", reactor.getMaxHeat())
print("EU/t:", reactor.getReactorEUOutput())
endgregtechmekanism