此组件由红石卡提供。
1级红石卡仅支持MC原版红石功能(单路模拟红石信号)。2级红石卡提供与其他模组红石系统的联动(集束红石和无线红石)。对于集束红石,在Minecraft 1.12版本我们仅支持Project Red(红石计划),在更低版本我们支持:RedLogic、Project Red(1.1版本)、MineFactory Reloaded(我的工厂重制版)。无线红石方面支持以下模组:WR-CBE、SlimeVoid's WR。
自patch release 1.7.3起,红石组件提供以下函数的重载版本:getInput
、getOuput
、setInput
、getBundledInput
、getBundledOutput
以及setBundledOutput
。
get方法为“直接”调用,且几乎无开销。实验中我每秒可以调用20000到22000次getInput
方法。
set方法并非为“直接”调用,因此每tick最多只能调用一次。也就是说每秒钟可以调用约20次。除了间接成本(消耗剩余的tick)之外,调用set改变了输出的强度等级后机器上还会有额外的延迟。默认情况下,调用set每秒可以改变输出约6次。
使用这些重载变体的显著优势之一是,API调用开销为每次调用后结算,而不是每次设定数值后结算。
组件名:redstone
。
回调函数:
getInput(side: number): number
getInput(): table
getInput(side)
会返回指定方向上的红石信号等级。getInput()
会返回包含所有方向上红石信号等级的表。sides.bottom
对应了0。sides.south
为电脑的前方,而不是世界的南方。类似还有sides.left
为电脑的左侧,也就是说如果你站在电脑面前的话,在你的右侧。lua> component.redstone.getInput(sides.left) 15 lua> component.redstone.getInput(sides.right) 4 lua> component.redstone.getInput() {[0]=7, 0, 0, 0, 4, 15} lua> component.redstone.getInput()[sides.bottom] 7
getOutput(side: number): number
getOutput(): table
lua> component.redstone.getOutput(sides.left) 7 lua> component.redstone.getOutput() [sides.left] 7
setOutput(side: number, value: number): number
setOutput(values: table): table
setOutput(values)
这种写法可以在一次调用内设定所有方向(或数个方向)上的红石信号强度。getBundledInput(side: number, color: number): number
getBundledInput(side: number): table
getBundledInput(): table
getInput
类似,但适用于集束输入。读取指定颜色对应通道的值。getBundledInput(side, color)
返回指定方向上输入的指定颜色红石信号强度值。getBundledInput(side)
返回一个表(格式为Map[Int, Int]这样的表结构),整合了指定方向上红石信号值,索引值为颜色。getBundledInput()
返回所有的红石信号值,包括所有方向以及所有颜色。格式为Map[Int, Map[Int, Int]]这样的两层表结构。外层表的索引值范围是[0, 5],值为方向(请记住sides.bottom
为0)。每个方向对应内层表的数据结构与getBundledInput(side)
返回值相同。getBundledOutput(side: number, color: number): number
getBundledOutput(side: number): table
getBundledOutput(): table
getOutput
,但是适用于集束输出。用于获取先前设定的输出值。setBundledOutput(side: number, color: number, value: number): number
setOutput
,但是适用于集束输出。用于设定指定颜色对应通道的输出值。返回之前设定的值。setBundledOutput(side, values)
设定一组红石信号值,以颜色为索引,颜色取值范围为[0, 15],colors.white
为0。提供的值不一定要连续,省略的值将会保持不变。setBundledOutput(values)
让你能在单次API调用中修改所有方向上所有颜色的红石信号值。lua> component.redstone.setBundledOutput(sides.left, { [colors.white] = 15 } ) -- only sets 1 output lua> component.redstone.setBundledOutput({ [sides.left] = { [colors.white] = 15 } } ) -- same as above
getComparatorInput(side:number):number
getWirelessInput():number
getWirelessOutput():boolean
setWirelessOutput(value:boolean):boolean
getWirelessFrequency():number
setWirelessFrequency(frequency:number):number
getWakeThreshold():number
setWakeThreshold(threshold:number):number
请注意对于如ProjectRed(红石计划)这样的模组而言,较低的强度值(例如原版最高为15的强度值)可能不会像预期一样起到简单开/关信号的作用(例如用于开门)。因为这些模组的红石信号值范围更大。你可能需要指定一个更大的值,例如255。
使用例:
local component = require("component") local sides = require("sides") local colors = require("colors") local rs = component.redstone --获取首选红石组件 print(rs.getInput(sides.back)) rs.setBundledOutput(sides.bottom, colors.green, rs.getBundledInput(sides.top, colors.red))
`