component(组件) API可用于访问电脑中的组件并与其交互。读者还可查看有关访问组件的页面。
component.doc(address:string, method:string): string
tostring
来获取此字符串。例如tostring(component.screen.isOn)
.component.invoke(address:string, method:string[, ...]): ...
component.list([filter:string[, exact:boolean]]):function
__call
提供了迭代器语法,所以你还可以这样调用:for address, componentType in component.list() do ... end
filter
(过滤器),则此方法只会返回包含过滤器字符串的组件(并非模式字符串/正则表达式)。例如,component.list("red")
将会返回redstone
组件的结果。
如果将true
作为第二个参数传递,则执行精确匹配。例如red
在此情况下不会匹配redstone
。component.methods(address:string):table
component.proxy(address:string):table
invoke
)。这也是用来生成各个组件类型的“首选组件”的方法,也即你通过component.某某
(某某为组件类型)方法得到的东西。
例如,你可以这样使用此方法:component.proxy(component.list("redstone")()).getInput(sides.north)
,这段代码会为你获取component.list
迭代器返回的第一个redstone
组件的代理对象,然后调用它的getInput
方法。
请注意代理对象无论如何都至少有两个字段:一是type
与组件的类型名,二是address
与组件的地址。component.type(address:string):string
component.slot(address:string):string
component.fields(address:string):string
component.get(address: string[, componentType: string]): string | (nil, string)
nil
和一条报错信息。可选是否通过组件类型进行筛选。component.isAvailable(componentType: string): boolean
component.getPrimary(componentType: string): table
component.setPrimary(componentType: string, address: string)
nil
。将其设定为nil
或新值时分别会触发component_unavailable
和component_available
信号。
local component = require("component") local rs0 = component.getPrimary("redstone") local rs1 = component.redstone -- 语法糖 print(rs0 == rs1) -- 输出值为true