This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
component:signals:zh [2023/11/29 09:21] hfsr [网卡] |
component:signals:zh [2023/12/27 04:28] (current) hfsr [信号] |
||
---|---|---|---|
Line 2: | Line 2: | ||
==== | ==== | ||
- | 信号是由某些外部来源发送给电脑的信息,可被用于各种用途。它们需要至少有个名字,然后还可以有任意数量的(简单)参数。注意,电脑也可以向自己的信号队列中添加信号。 | + | 信号是由某些外部来源发送给电脑的信息,可被用于各种用途。它们需要至少有个名字,然后还可以有任意数量的(简单)参数。注意,电脑自己也可以向自己的信号队列中添加信号。 |
- | 信号可以通过调用[[api:computer:zh|computer.pullSignal()]]或其简单封装[[api:event:zh|event.pull()]]来消耗。 | + | 信号可以被[[api:computer:zh|computer.pullSignal()]]或其更方便的封装[[api:event:zh|event.pull()]]消耗掉。 |
下面列出了所有由组件和内置库触发的信号。它们由以下格式列出:`信号名(参数名: 参数类型, ...)`,你可以用`local name, arg, ... = event.pull()`这样的写法拉取它们。 | 下面列出了所有由组件和内置库触发的信号。它们由以下格式列出:`信号名(参数名: 参数类型, ...)`,你可以用`local name, arg, ... = event.pull()`这样的写法拉取它们。 | ||
Line 115: | Line 115: | ||
- `inventory_changed(slot: number)` | - `inventory_changed(slot: number)` | ||
- | 当机器人的物品栏发生变化时,机器人会将这个信号添加到事件队列。注意这只包括储存在槽中的物品种类的变化。增加或减少一个物品堆中的物品数量并不会触发这个信号。然而玩家手动将机器人库存中的一件物品换成另一件物品(例如玩家鼠标持有木棍,然后点击机器人库存中的火把,玩家鼠标上的物品会变成火把,机器人对应槽中的物品会变成木棍)时实际上会触发*两个*信号:一个是移除火把的信号,一个是与此同时放入木棍的信号。使用 [[api:robot:zh|robot.transferTo()]] 交换两个槽中的物品甚至会触发*四个*信号——原因同上,但这次涉及到两个槽之间的物品交换。 | + | 当机器人的物品栏发生变化时,机器人会将此信号添加到队列。注意,只包括储存在槽位中的物品种类变化。增加或减少一个物品堆中的物品数量并不会触发这个信号。 |
- | 此外,这个信号只针对机器人实际可寻址的物品栏,也就是说,它不会因设备(工具、卡槽内的卡、升级槽内的升级组件)的变化而被触发。 | + | 玩家手动将机器人库存中的一种物品换成另一种(例如火把和木棍)时实际上会触发**两个**信号:一个是移除火把的信号,一个是与此同时放入木棍的信号。使用[[api:robot:zh|robot.transferTo()]]交换两个槽位中的物品甚至会触发**四个**信号——原因同上,但这次涉及到两个槽位间的物品交换。 |
+ | 此外,该信号只针对机器人物品栏中有地址的部分,也就是说,它不会因装备(工具、扩展卡、升级)的变化而被触发。 | ||
- | 抽象总线 | + | 抽象总线卡 |
-------- | -------- | ||
+ | |||
+ | 来自[Stargate Tech 2](http://stargatetech.theender.net/miscellaneous/home.html)。 | ||
- `bus_message(protocolId: number, senderAddress: number, targetAddress: number, data: table, metadata: table)` | - `bus_message(protocolId: number, senderAddress: number, targetAddress: number, data: table, metadata: table)` | ||
- | - `protocolId` 是所使用的协议的版本。 | + | - `protocolId`是所使用的协议的版本。 |
- | - `senderAddress` 是发送消息的设备的地址。 | + | - `senderAddress`是发送信息的设备地址。 |
- | - `targetAddress` 是消息所指向的设备的地址(网络广播为 -1)。 | + | - `targetAddress`是信息的目标设备地址(网络广播为 -1)。 |
- | - `data`是发送的数据的表。 | + | - `data`是包含所发送数据的表。 |
- | - `metadata` 是发送者设备所特有的数据的表。 | + | - `metadata`是特定于发送方设备的数据的表。 |
- | 运输组件 | + | 车辆 |
-------- | -------- | ||
- | **重要**: 这个组件已经被移动到附属模组 OpenComponents。 | + | 来自[Redstone in motion / remain in motion(红石运动机构)](https://www.curseforge.com/minecraft/mc-mods/remain-in-motion) |
+ | |||
+ | <del>**注意:**该组件的驱动程序已被移动到附属模组OpenComponents中。</del> | ||
+ | OpenComponents模组的内容已合并进主模组。 | ||
- `carriage_moved(success: boolean[, reason:string[, x:number, y: number, z: number]])` | - `carriage_moved(success: boolean[, reason:string[, x:number, y: number, z: number]])` | ||
- | 这个信号会在运输组件发出移动或模拟命令后进入队列。`success` 参数指出移动或者模拟指令是否执行成功,即运载工具是否被移动了。如果移动失败,`reason` 包含的就是错误信息。取决于错误信息,(`x`, `y`, `z`)会是造成移动失败的方块在世界中的坐标。 | + | 此信号会在车辆组件成功执行移动或模拟移动命令后加入队列。`success`参数指出移动或模拟移动指令是否执行成功,即车辆是否可移动。若移动失败,`reason`即为错误信息。取决于错误信息,(`x`,`y`,`z`)会是造成移动失败的方块在世界中的坐标。 |
目录 | 目录 | ||
----------- | ----------- | ||
- | {{page>api:contents:zh&noheader&noeditbutton&nouser&nofooter}} | + | {{page>component:contents:zh&noheader&noeditbutton&nouser&nofooter}} |