update
This commit is contained in:
@@ -1,27 +1,33 @@
|
||||
# 基础知识
|
||||
本文档包含了一些关于[计算机](block/computer.md)工作原理的基础信息。这并不意味着这些信息是易于阅读的。这里的“基础”指的是使用中的一般概念。
|
||||
|
||||
本文档包含了关于[电脑](block/computer.md)工作原理的一些基础信息。基础不代表阅读难度低,这里的“基础”指的是所使用的一般概念。
|
||||
|
||||
## 架构
|
||||
计算机运行在单核的通用 RISC-V 架构上。这意味着它们具有 64 位寄存器,并支持浮点运算。这使得可以在它们上启动现代的 Linux 内核。
|
||||
|
||||
电脑运行在单核的通用RISC-V架构上。代表它们有64位寄存器,并支持浮点运算。这令在电脑上引导启动现代Linux内核成为了可能。
|
||||
|
||||
### 本机设备
|
||||
连接到计算机的本机设备是内存映射设备。这意味着它们被映射到物理内存中的某个区域。计算机使用常规的 Linux 驱动程序与它们交互。
|
||||
|
||||
有哪些设备可用,以及这些设备的地址在哪里,是通过扁平化设备树传达给计算机上运行的软件的。这种数据结构可能包含关于整个系统的其他信息。特别是,它还存储了已安装的[内存](item/memory.md)大小。由于此数据结构在启动时被复制,因此不能在稍后更新。这就是在更改本机设备(如[网卡](item/network_interface_card.md))时必须重启计算机的原因。对于需要重启的设备,其工具提示中通常会有相应的说明。
|
||||
电脑上连接的本机设备是内存映射设备。这代表它们被映射到了物理内存中的某个区域。电脑使用常规的Linux驱动程序与它们交互。
|
||||
|
||||
### HLAPI 设备
|
||||
另一种设备是高级 API 设备,有时也称为 RPC 设备。这些设备使用单个控制器,通过单个串行设备与计算机通信。所有计算机中都存在该控制器设备,它负责收集来自多个设备的消息,并将消息分派到设备上。此控制器使用的协议是基于简单 JSON 消息的协议。默认 Linux 库提供的 `devices` Lua 库封装了用于连接此控制器的串行设备。因此,在使用 HLAPI 设备(如[红石接口](block/redstone_interface.md))时,*强烈*建议使用 `devices` 库。
|
||||
可用的设备以及它们的地址是通过扁平化的设备树传递给电脑上运行的软件的。该数据结构可能包含有关整个操作系统的其他信息,尤其是已安装的[内存](item/memory.md)大小。该数据结构是在启动时复制的,因此后续不能更新内容。这就为什么在更改本机设备(如[网络接口卡](item/network_interface_card.md))后必须重启电脑。对于需要重启的设备,其提示文本中通常会进行标注。
|
||||
|
||||
由于所用协议的性质,数据传输速率相对有限。因此,大多数设备通常仅提供相对简单的 API,不需要发送大量数据。
|
||||
### HLAPI设备
|
||||
|
||||
另一种设备是高级API设备,有时也称为RPC设备。这些设备使用同一个控制器,该控制器通过单个串口设备与电脑通信。所有电脑中都存在该控制器设备,它负责与多个HLAPI设备之间进行报文收发。该控制器使用的协议是简单的,基于JSON报文的协议。默认Linux库提供的`devices` Lua库封装了用于连接此控制器的串行设备。因此,在使用HLAPI设备(如[红石接口方块](block/redstone_interface.md))时,**强烈**建议使用`devices`库。
|
||||
|
||||
由于所用协议的性质,数据传输速率相对有限。因此,大多数设备通常仅提供相对简单的,不需要发送大量数据的API。
|
||||
|
||||
## 配置
|
||||
计算机可以在一定程度上进行配置。内存的大小、以[硬盘](item/hard_drive.md)形式的额外存储空间,以及最重要的是安装哪些卡片,主要由用户决定。请注意,默认的 Linux 发行版至少需要 20M 的内存,建议使用 24M。
|
||||
|
||||
大多数组件都会增加计算机的整体能耗。为了节约能源,选择仅必要的组件至关重要。
|
||||
电脑可以在一定程度上进行配置。内存的大小、以[硬盘](item/hard_drive.md)形式存在的额外存储空间,以及最重要的,安装什么扩展卡。以上项目主要取决于用户的选择。请注意,默认的Linux发行版至少需要20M的内存,建议使用24M。
|
||||
|
||||
大多数组件都会增加电脑的整体能耗。只安装必要的组件对节约能耗至关重要。
|
||||
|
||||
## Linux
|
||||
默认的 Linux 发行版包含一些基本的命令行工具,以及编写和运行 Lua 程序的功能。有关如何使用 Lua 与 HLAPI 设备交互的概述,请参阅[脚本编写](scripting.md)手册条目。
|
||||
|
||||
本机设备使用常规的 Linux 驱动程序。例如,硬盘驱动器显示为 `/dev/vdaX` 设备,可以常规地格式化和挂载。
|
||||
默认的Linux发行版带有一些基本的命令行工具以及编写和运行Lua程序的功能。请参阅手册的[脚本编写](scripting.md)条目以获取有关如何使用Lua与HLAPI设备交互的概述。
|
||||
|
||||
计算机提供了两个硬件时钟(RTC)设备。第一个以大多数用户熟悉的时间单位计时。它是默认使用的,例如通过 `date` 和 `time` 等命令行工具。第二个时钟按计算机运行的世界中的时间计时。要获取当前世界时间,请使用 `hwclock -f /dev/rtc1`。
|
||||
本机设备使用常规的Linux驱动程序。例如,硬盘以`/dev/vdaX`设备的形式出现,可以和普通的Linux系统一样格式化与挂载。
|
||||
|
||||
电脑提供了两个硬件时钟(RTC)设备。第一个以大多数用户熟悉的时间单位计时。系统默认使用该设备,例如`date`和`time`等命令行工具。第二个时钟计量电脑在世界中运行的时长。要获取当前世界时间,请使用`hwclock -f /dev/rtc1`。
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 总线线缆
|
||||

|
||||

|
||||
|
||||
总线线缆将 [总线接口](bus_interface.md) 连接到计算机。
|
||||
总线线缆可将[总线接口](bus_interface.md)与电脑连接。
|
||||
|
||||
已放置的线缆可以通过在其上放置任何常规装饰性方块来隐藏。使用 [螺丝刀扳手](../item/wrench.md) 移除一个外观方块。
|
||||
线缆在放置后可以隐藏,只需在上面放置普通方块即可。可使用[螺丝刀扳手](../item/wrench.md)移除伪装方块。
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
# 总线接口
|
||||
|
||||

|
||||
|
||||
总线接口将外部设备连接到 [计算机](computer.md)。这包括显式设备方块,例如 [红石接口](redstone_interface.md)。还提供了一些通用功能方块,例如能量存储信息。
|
||||
总线接口可将外部设备连接到[电脑](computer.md)上,包括显然是设备的方块,例如[红石接口](redstone_interface.md)。方块的一些通用功能也可被访问,例如有关能量存储的信息。
|
||||
|
||||
可以使用 [螺丝刀扳手](../item/wrench.md) 为总线接口配置一个显式名称。当将多个相同类型的设备连接到计算机时,这很有用:在按类型名称(`devices:find(typeName)`)搜索设备时,这些自定义名称也会生效。
|
||||
可以使用[扳手](../item/wrench.md)配置总线接口并明确指定名称。当将多个相同类型的设备连接到电脑时,这很有用:在按类型名称(`devices:find(typeName)`)搜索设备时,自定义名称也会生效。
|
||||
|
||||
请注意,[计算机](computer.md) 还必须通过总线连接器显式连接到 [总线](bus_cable.md)。
|
||||
请注意,[电脑](computer.md)也必须借助总线接口确切地连接到[总线](bus_cable.md)上。
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# 充电器
|
||||
# 充电机
|
||||

|
||||
|
||||
充电器将能量从连接的电源传输到其上方的能量接收器。
|
||||
充电机可将能量从所连接的电源传输到其上方的耗能设备。
|
||||
|
||||
所使用的无线能量传输机制支持任何接受 RF 能量的接收器。特别是,方块和实体,以及常规物品容器中的物品(例如方块和实体)都会被充电。
|
||||
充电机所使用的无线能量传输机制支持任何接收RF能量的耗能设备。具体来说,方块和实体,以及常规物品容器中的物品(例如方块和实体),都会被充电。
|
||||
|
||||
此设备特别适用于为 [机器人](../item/robot.md) 或者你库存中的能量消耗设备充电。
|
||||
此设备特别适用于为[机器人](../item/robot.md)或者你物品栏中的耗能设备充电。
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
# 计算机
|
||||
# 电脑
|
||||

|
||||
|
||||
计算机为构建能够运行操作系统或低级软件的硬件提供了基础。
|
||||
电脑提供了基础环境,为构建能够运行操作系统或低级软件的硬件提供了条件。
|
||||
|
||||
请阅读 [快速入门指南](../getting_started.md),了解如何设置一个工作中的计算机。
|
||||
请阅读[入门指南](../getting_started.md),了解如何准备一台可供使用的电脑。
|
||||
|
||||
### 配置
|
||||
在计算机的库存界面中配置组件。要访问此界面,可以使用 [螺丝刀扳手](../item/wrench.md) 打开计算机,或通过终端屏幕左侧的切换按钮切换到库存界面。
|
||||
可在电脑的物品栏界面中配置其组件。要访问此界面,可以使用[扳手](../item/wrench.md)打开电脑,或使用终端界面左侧的切换按钮切换到库存界面。
|
||||
|
||||
### 连接
|
||||
要将外部设备连接到计算机,请使用 [总线接口](bus_interface.md) 和 [总线线缆](bus_cable.md)。请注意,计算机必须通过总线接口显式连接到总线。
|
||||
要将外部设备连接到电脑,请使用[总线接口](bus_interface.md)和[总线线缆](bus_cable.md)。请注意,电脑必须必须借助总线接口确切地连接到总线上。
|
||||
|
||||
### 能量
|
||||
通常,计算机需要能量来运行。兼容大多数现代能量生成器(产生 RF 能量)。计算机具有小型内置能量存储,但通常不足以使机器长时间运行。
|
||||
通常电脑需要能量才能运行。大多数输出RF的现代化发电机都应该受兼容。电脑内部可存储少量能量,但通常不足以支持机器长时间运行。
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# 磁盘驱动器
|
||||

|
||||
# 软盘驱动器
|
||||

|
||||
|
||||
磁盘驱动器提供了快速媒体交换的选项。与 [硬盘](../item/hard_drive.md) 不同,[软盘](../item/floppy.md) 可以在运行时添加和移除。
|
||||
软盘驱动器提供了一种快速进行媒体交换的方式。与[硬盘](../item/hard_drive.md)不同,[软盘](../item/floppy.md)可以在系统运行时插拔。
|
||||
|
||||
请注意,在从驱动器中移除软盘之前,强烈建议显式卸载软盘,以避免数据丢失。
|
||||
请注意,强烈建议先明确解挂软盘再将其从驱动器中取出,以避免数据丢失。
|
||||
|
||||
在 Linux 系统上,磁盘驱动器通常会作为 `/dev/vdX` 设备出现,紧随任何已安装的硬盘之后。它们不会被自动格式化或挂载,而只会作为原始块设备出现。要使用它们,你需要先进行配置。例如,在默认的 Linux 发行版上,以下命令将很有用:
|
||||
在Linux系统中,软盘驱动器通常会以`/dev/vdX`设备的形式出现,紧随已安装的硬盘之后。它们不会被自动格式化或挂载,只会作为裸的块设备出现。要使用它们需要先进行配置。例如,在默认的Linux发行版上,可使用以下命令:
|
||||
|
||||
- `mke2fs /dev/vdX` 用于格式化软盘。首次安装磁盘时运行此命令。*会清除软盘上的数据!*
|
||||
- `mount /dev/vdX <挂载目录>` 在格式化软盘后挂载它。确保你要挂载到的目录存在且为空。
|
||||
- `umount <挂载目录>` 卸载软盘。确保在从磁盘驱动器中移除软盘之前运行此命令,以避免数据丢失。
|
||||
- `mke2fs /dev/vdX` 用于格式化软盘。首次安装软盘时应运行此命令。*会清除软盘上的数据!*
|
||||
- `mount /dev/vdX <挂载目录>` 在格式化软盘后挂载它。请确保要挂载到的目录存在且为空。
|
||||
- `umount <挂载目录>` 解挂软盘。从软盘驱动器中取出软盘前请确保执行过此命令,以避免数据丢失。
|
||||
|
||||
计算机 *必须关闭* 后才能安装或移除此组件。在计算机运行时安装它将没有效果,移除它可能会导致系统错误。
|
||||
安装或移除此组件时电脑*必须关机*。在电脑运行时安装它将没有效果,移除它可能会导致系统出错。
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# 闪存刷新器
|
||||

|
||||
# 闪存刷写器
|
||||

|
||||
|
||||
闪存刷新器提供了一种将自定义编译的固件刷新到计算机的闪存芯片上的方法。
|
||||
闪存刷写器可用于向电脑的闪存芯片中刷写自定义的预编译固件。
|
||||
|
||||
在 Linux 系统上,闪存刷新器通常会作为 `/dev/vdX` 设备出现,紧随任何已安装的硬盘之后。从技术层面上讲,闪存芯片的工作方式与软盘或硬盘类似,因此你可以用它来存储或共享数据,尽管它们主要用于固件存储。
|
||||
在Linux系统中,闪存刷写器通常会以`/dev/vdX`设备的形式出现,紧随已安装的硬盘之后。从技术层面上讲,闪存芯片的工作方式与该模组中的软盘或硬盘完全一致,因此你可以用它来存储或共享数据,尽管它们主要用于存储固件。
|
||||
|
||||
要刷新设备,你应该使用位于默认 Linux 发行版 `/mnt/builtin/bin` 目录中的 `flash.sh` 脚本。你可以按照以下方式使用它:
|
||||
要刷写设备,你应该使用位于默认Linux发行版`/mnt/builtin/bin`目录中的`flash.sh`脚本。你可以按照以下方式使用它:
|
||||
|
||||
- `flash.sh [设备路径] [固件文件路径] (使用 opensbi,yes 或 no,如果省略则不会使用 opensbi)`
|
||||
- `flash.sh [设备路径] [固件文件路径] (是否使用opensbi,分别填yes或no,如果省略则不会使用opensbi)`
|
||||
|
||||
OpenSBI 是一个开源加载器/引导程序,用于 RISC-V 系统,使内核开发变得更简单。有关构建自定义内核的更多信息超出了本文档的范围。
|
||||
OpenSBI是一个用于RISC-V系统的开源加载器/引导程序,很大程度上降低了内核开发难度。有关构建自定义内核的更深入讨论超出了本文档的范围。
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
# 方块
|
||||
此索引列出了所有已记录的方块。如果你在寻找物品,请查看 [物品索引](../item/index.md)。
|
||||
该索引列出了手册记录的所有方块。如果你在寻找物品,请查看[物品索引](../item/index.md)。
|
||||
|
||||
要快速访问世界中方块的手册条目,只需在方块上使用此 [手册](../item/manual.md)。
|
||||
要快速访问世界中某方块的手册条目,只需对着此方块使用[手册](../item/manual.md)。
|
||||
|
||||
- [总线线缆](bus_cable.md)
|
||||
- [总线接口](bus_interface.md)
|
||||
- [充电器](charger.md)
|
||||
- [计算机](computer.md)
|
||||
- [磁盘驱动器](disk_drive.md)
|
||||
- [闪存刷新器](flash_memory_flasher.md)
|
||||
- [充电机](charger.md)
|
||||
- [电脑](computer.md)
|
||||
- [软盘驱动器](disk_drive.md)
|
||||
- [闪存刷写器](flash_memory_flasher.md)
|
||||
- [键盘](keyboard.md)
|
||||
- [显示器](monitor.md)
|
||||
- [网络连接口](network_connector.md)
|
||||
- [网线集线器](network_hub.md)
|
||||
- [网络连接器](network_connector.md)
|
||||
- [网络集线器](network_hub.md)
|
||||
- [投影仪](projector.md)
|
||||
- [红石接口](redstone_interface.md)
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
# 键盘
|
||||

|
||||
|
||||
键盘允许 [计算机](computer.md) 捕捉按键输入。它的主要使用场景是在使用 Linux 系统时与 [投影仪](projector.md) 配合使用。
|
||||

|
||||
|
||||
在使用默认的 Linux 发行版时,此设备将通过 `evdev` 系统提供事件。要使用其输入而无需额外配置,请使用 [投影仪](projector.md)。键盘输入将被发送到在那里显示的终端会话。
|
||||
键盘可令[电脑](computer.md)捕获按键输入。使用Linux系统时,它主要与[投影仪](projector.md)配合使用。
|
||||
|
||||
请注意,键盘设备唯一一个足够大以适配总线接口的面在底部。键盘可以放置在任何位置,只要它通过总线连接到计算机即可。
|
||||
在使用默认的Linux发行版时,此设备将通过`evdev`系统提供事件。要使用其输入而无需额外配置,请使用[投影仪](projector.md)。键盘输入将被发送到在其上显示的终端会话内。
|
||||
|
||||
要开始在键盘上打字,只需与其互动即可。经验丰富的打字员会发现他们在打字时不需要看键盘(你仍然可以在使用键盘时环顾四周)。再次互动以停止使用键盘。
|
||||
请注意,键盘设备唯一一个大到可以连接总线接口的面是底面。键盘可以放置在任何位置,只要它通过总线连接到电脑即可。
|
||||
|
||||
计算机 *必须关闭* 后才能安装或移除此组件。在计算机运行时安装它将没有效果,移除它可能会导致系统错误。
|
||||
要开始在键盘上打字,只需与其互动即可。经验丰富的打字员会发现他们在打字时不需要看键盘(你仍然可以在使用键盘时环顾四周)。再次互动即可停止使用键盘。
|
||||
|
||||
安装或移除此组件时电脑***必须关机**。在电脑运行时安装它将没有效果,移除它可能会导致系统出错。
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# 显示器
|
||||

|
||||
|
||||
显示器与投影仪类似,为 [计算机](computer.md) 提供了一个帧缓冲设备。它们的分辨率为 640 x 480 像素,颜色格式为 r5g6b5:红色组件 5 位,绿色组件 6 位,蓝色组件 5 位。
|
||||
显示器与投影仪类似,为[电脑](computer.md)提供了一个帧缓冲设备。其分辨率为640x480像素,颜色格式为r5g6b5:红色部分5位,绿色部分6位,蓝色部分5位。
|
||||
|
||||
显示器需要直接供电才能正常工作。设备总线自身无法提供足够的能量。当电力不足时,屏幕上会显示红色错误文本。
|
||||
显示器需要直接供电才能正常工作。设备总线自身无法提供足够的能量。当供能不足时,屏幕上会有红色错误文本指示。
|
||||
|
||||
在 Linux 系统上,显示器通常会作为 `/dev/fbX` 设备出现。要向帧缓冲区发送数据,可以对这些设备进行写操作。例如,要清除帧缓冲区,可以将零写入设备,命令如下:`cat /dev/zero > /dev/fb0`。
|
||||
在Linux系统中,显示器通常会以`/dev/fbX`设备的形式出现。要向帧缓冲区发送数据,可以对这些设备进行写操作。例如,要清除帧缓冲区,可以用管道向设备中写入0,命令如下:`cat /dev/zero > /dev/fb0`。
|
||||
|
||||
显示器提供了一个内置键盘,用于默认的 Linux 发行版。如果连接到同一台计算机的另一个键盘设备,可能会干扰此功能。
|
||||
显示器提供了一个内置键盘,可以与默认的Linux发行版配合使用。若同一台电脑连接了另一个键盘设备,可能会中断此功能。
|
||||
|
||||
计算机 *必须关闭* 后才能安装或移除此组件。在计算机运行时安装它将没有效果,移除它可能会导致系统错误。
|
||||
安装或移除此组件时电脑**必须关机**。在电脑运行时安装它将没有效果,移除它可能会导致系统出错。
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# 网络连接口
|
||||
# 网络连接器
|
||||

|
||||
|
||||
网络连接口是构建连接不同 [计算机](computer.md) 的网络的基本组成部分。使用 [网线](../item/network_cable.md) 将连接口相互连接。
|
||||
网络连接器是用于构建连接多台[电脑](computer.md)的网络的基础。可使用[网络线缆](../item/network_cable.md)将连接器相互连接起来。
|
||||
|
||||
每个连接口将代表一个“跳数”用于转发数据包。数据包只能在有限的跳数内传输,超过这个范围会被丢弃。
|
||||
每个连接器都代表中继数据包时的一“跳”。数据包传输时的跳数有上限,超过上限会被丢弃。
|
||||
|
||||
请注意,每个连接口最多只支持连接两个网线。可以将多个连接口串联起来,以增加可覆盖的范围。
|
||||
请注意,每个连接器只能连接最多两根网络线缆。可以将多个连接器串联起来以增加网络可覆盖的范围。
|
||||
|
||||
通过将附加到计算机上的连接口串联起来,可以创建一个简单的多计算机网络。要创建网状网络,可以使用 [网线集线器](network_hub.md)。集线器将所有附加的连接口连接在一起。
|
||||
将附着在电脑上的连接器串联起来即可创建一个简单的多电脑网络。要创建网状网络,可以使用[网络集线器](network_hub.md)。集线器会将其上附着的所有连接器连在一起。
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 网线集线器
|
||||
# 网络集线器
|
||||

|
||||
|
||||
网线集线器将多个 [网络连接口](network_connector.md) 互相连接。它将任何到达附加连接口的数据包转发到所有其他附加的连接口。此转发操作将消耗一个跳数,减少数据包的生存时间。
|
||||
网络集线器可将多个[网络连接器](network_connector.md)互相连接。从其上附着的任一个连接器中收到的数据包都会被转发给其他连接器。此转发操作将消耗一跳,减少数据包的生存时间。
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# 投影仪
|
||||

|
||||
|
||||
投影仪为 [计算机](computer.md) 提供了一个帧缓冲设备。它的分辨率为 640 x 480 像素,颜色格式为 r5g6b5:红色组件 5 位,绿色组件 6 位,蓝色组件 5 位。
|
||||
投影仪为[电脑](computer.md)提供了一个帧缓冲设备。其分辨率为640x480像素,颜色格式为r5g6b5:红色部分5位,绿色部分6位,蓝色部分5位。
|
||||
|
||||
投影仪需要直接供电才能正常工作。设备总线本身无法提供足够的能量。当供电不足时,投影仪镜头中会出现红色光晕。
|
||||
投影仪需要直接供电才能正常工作。设备总线自身无法提供足够的能量。当供能不足时,投影仪的镜头中会有红色光线指示。
|
||||
|
||||
在 Linux 系统中,投影仪通常会作为 `/dev/fbX` 设备出现。要向帧缓冲发送数据,可以向这些设备写入数据。例如,要清除帧缓冲,可以将零写入设备,如:`cat /dev/zero > /dev/fb0`。
|
||||
在Linux系统中,投影仪通常会以`/dev/fbX`设备的形式出现。要向帧缓冲区发送数据,可以对这些设备进行写操作。例如,要清除帧缓冲区,可以用管道向设备中写入0,命令如下:`cat /dev/zero > /dev/fb0`。
|
||||
|
||||
在使用默认的 Linux 发行版时,可以使用 [键盘](keyboard.md) 将输入发送到第一个连接的帧缓冲上运行的虚拟终端。
|
||||
在使用默认的Linux发行版时,可以使用[键盘](keyboard.md)将输入发送到电脑所连接的第一个帧缓冲上的虚拟终端。
|
||||
|
||||
计算机 *必须关闭* 才能安装或移除此组件。在计算机运行时安装没有效果,移除可能导致系统错误。
|
||||
安装或移除此组件时电脑**必须关机**。在电脑运行时安装它将没有效果,移除它可能会导致系统出错。
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
# 红石接口
|
||||

|
||||

|
||||
|
||||
红石接口提供了一个全方向的总线,用于接收和发射红石信号。
|
||||
红石接口提供了一个全方向的总线,用于收发红石信号。
|
||||
|
||||
使用此设备可以与原始设备互动,如门和灯,或其他提供红石协议的机械设备。
|
||||
使用此设备可以与简易的设备互动,如门和灯,或其他提供基于红石的协议的机械。
|
||||
|
||||
这是一个高级设备。必须使用高级设备 API 进行控制。默认的 Linux 发行版提供了用于此 API 的 Lua 库。例如:
|
||||
这是一个高级设备。必须使用高级设备API进行控制。默认的Linux发行版提供了用于此API的Lua库。例如:
|
||||
`local d = require("devices")`
|
||||
`local r = d:find("redstone")`
|
||||
`r:setRedstoneOutput("up", 15)`
|
||||
@@ -14,24 +14,24 @@
|
||||
设备名称:`redstone`
|
||||
|
||||
### 面
|
||||
以下方法中的侧面参数表示设备块的本地面。有效值包括:`up`、`down`、`left`、`right`、`front`、`back`、`north`、`south`、`west` 和 `east`。
|
||||
下列方法中表示面的参数均指设备方块的某个面。有效值包括:`up`、`down`、`left`、`right`、`front`、`back`、`north`、`south`、`west`、`east`。
|
||||
|
||||
每个块面都有一个指示器以方便识别。面名称代表从主面(用单个标记指示)看去的名称。当看向主面时:
|
||||
- `front` 和 `south` 是我们正看向的面。
|
||||
- `back` 和 `north` 是块的背面。
|
||||
- `left` 和 `west` 是我们左边的面。
|
||||
- `right` 和 `east` 是我们右边的面。
|
||||
- `up` 和 `down` 是顶部和底部面。
|
||||
方块的每个面都有标记,以方便识别。面的名称对应从主面(只有一个记号)观察时的名称。当看向主面时:
|
||||
- `front`和`south`为我们正看向的面。
|
||||
- `back`和`north`为方块的背面。
|
||||
- `left`和`west`为我们左边的面。
|
||||
- `right`和`east`为我们右边的面。
|
||||
- `up`和`down`为顶部和底部的面。
|
||||
|
||||
### 方法
|
||||
`getRedstoneInput(side):number` 获取指定面接收到的红石信号。
|
||||
- `side` 是表示要获取输入的面的字符串。参见“面”部分。
|
||||
- `side`表示要获取输入的面的字符串。参见“面”章节。
|
||||
- 返回一个表示当前输入信号强度的数字。
|
||||
|
||||
`setRedstoneOutput(side, value:number)` 设置指定面发射的红石信号。
|
||||
- `side` 是表示要设置信号的面的字符串。参见“面”部分。
|
||||
- `value` 是一个表示信号强度的数字,范围为 [0, 15]。
|
||||
`setRedstoneOutput(side, value:number)` 设置指定面发出的红石信号。
|
||||
- `side`表示要设置信号的面的字符串。参见“面”章节。
|
||||
- `value`为一个表示信号强度的数字,范围为[0, 15]。
|
||||
|
||||
`getRedstoneOutput(side):number` 获取指定面发射的红石信号。
|
||||
- `side` 是表示要获取输出的面的字符串。参见“面”部分。
|
||||
`getRedstoneOutput(side):number` 获取指定面发出的红石信号。
|
||||
- `side`表示要获取输出的面的字符串。参见“面”章节。
|
||||
- 返回一个表示当前输出信号强度的数字。
|
||||
|
||||
@@ -1,28 +1,33 @@
|
||||
# 入门指南
|
||||
本文介绍了让[计算机](block/computer.md)启动并运行所需的步骤,并举例说明如何使用计算机与设备进行交互。
|
||||
|
||||
## 构建
|
||||
首先,你需要一台实际的计算机,以及一些组件。如果你还没有这些,先制作以下物品:
|
||||
- 1台 [计算机](block/computer.md)
|
||||
- 1个 **Linux** [硬盘](item/hard_drive.md)(普通的8M硬盘,然后用[扳手](item/wrench.md)制作)
|
||||
- 3个 8M [内存](item/memory.md)
|
||||
本文介绍了让[电脑](block/computer.md)上电并运行所需的步骤,并包含使用电脑与设备进行交互的示例。
|
||||
|
||||

|
||||
获得所有这些组件后,放置计算机。使用扳手打开其库存界面。或者,打开终端界面,然后使用左侧的切换按钮切换到库存界面。在这里,将制作好的硬盘和内存放入计算机中。
|
||||
## 组装
|
||||
|
||||

|
||||
首先,你需要一台现实中的电脑,以及一些组件。如果你还没有这些,先合成以下物品:
|
||||
|
||||
- 1x [电脑](block/computer.md)
|
||||
- 1x **Linux**[硬盘](item/hard_drive.md)(先准备一个普通的8M硬盘,然后与[扳手](item/wrench.md)一起合成)
|
||||
- 3x 8M[内存](item/memory.md)
|
||||
|
||||

|
||||
|
||||
获得所有组件后,放置电脑。使用扳手打开其物品栏。或者打开终端界面,然后使用左侧的切换按钮切换到物品栏界面。在此界面将硬盘和内存放入电脑中。
|
||||
|
||||

|
||||
|
||||
## 启动
|
||||
要启动你刚刚组装的计算机,通常需要为其提供一些电力。查看终端或库存界面左侧的能量条。其工具提示会告诉你计算机当前储存的能量量,以及每个tick所需的能量量。
|
||||
|
||||

|
||||
要启动你刚刚组装的电脑,通常需要为其提供电力。查看终端或物品栏界面左侧的能量条。其提示文本会告诉你电脑当前储存的能量数,以及每tick维持运行所需的能耗数。
|
||||
|
||||
确保所需的能量可用后,切换到终端界面并点击左上角的电源按钮。或者,蹲下状态下使用计算机。现在计算机应该会启动!等待直到提示你登录。
|
||||

|
||||
|
||||
确保有足够的能量后,切换到终端界面,并点击左上角的电源按钮,或者在潜行状态下使用电脑。现在电脑应该引导启动了!请等待,直到电脑提示你登录。
|
||||
|
||||

|
||||
|
||||
输入 `root` 作为用户名进行登录,然后按回车。干得好,现在你有了一台准备就绪的计算机!
|
||||
输入`root`作为用户名并按回车进行登录。干得好,现在你有了一台可供使用的电脑!
|
||||
|
||||
你现在可以根据你想要使用计算机的用途添加更多设备。有关如何控制设备的信息,请参阅[脚本编写](scripting.md)手册条目。
|
||||
你现在可以根据你的需求添加更多设备。请参阅手册的[脚本编写](scripting.md)条目以获取有关如何控制设备的信息。
|
||||
|
||||
祝你好运,最重要的是,玩得开心!
|
||||
祝你好运!最重要的是玩得开心!
|
||||
|
||||
@@ -1,26 +1,32 @@
|
||||
# 计算机专家手册
|
||||
你好,欢迎!如果你来到这里,你可能是偶然闯入,或者你对[组装你的第一台计算机](getting_started.md)感兴趣,或者你正在寻找某个特定[模块](block/index.md)或[物品](item/index.md)的信息?
|
||||
# 电脑操作员手册
|
||||
|
||||
你好,欢迎阅读!你来到这里可能是无心之举,或者是想要[组装你的第一台电脑](getting_started.md),又或者你正在寻找某个特定[方块](block/index.md)或[物品](item/index.md)的资料?
|
||||
|
||||
## 概述
|
||||
[计算机](block/computer.md)有多种用途,从娱乐到大规模、高度可定制的其他机器和设备的自动化。
|
||||
|
||||
每台计算机的核心是它的操作系统(OS)。默认操作系统是一个非常基础的 Linux 发行版。它仅提供最基本的命令行工具,以及编写和运行 Lua 程序的功能。
|
||||
[电脑](block/computer.md)提供了多种用途,从娱乐到对其他机器和设备进行大规模的、高度可定制的自动化控制。
|
||||
|
||||
Lua 在与高级 API 设备(HLAPI)交互时非常重要,比如[红石接口](block/redstone_interface.md)。默认操作系统附带一些实用程序库,允许与这些设备交互,特别是 `devices` 库。要了解更多关于如何使用 Lua 与 HLAPI 设备交互的信息,请参阅[脚本编写](scripting.md)手册条目。
|
||||
一台电脑的核心是它的操作系统(OS)。默认操作系统是一个非常简易的Linux发行版。它仅提供最基本的命令行工具,以及编写和运行Lua程序的功能。
|
||||
|
||||
另一方面是本机设备,如[硬盘](item/hard_drive.md)和[网卡](item/network_interface_card.md)。这些设备由原生的 Linux 驱动程序控制,添加或移除时需要重启系统。然而,大多数你会遇到的设备都是 HLAPI 设备。
|
||||
与高级API(HLAPI)设备(比如[红石接口方块](block/redstone_interface.md))交互时非常适合使用Lua。默认操作系统附带了一些用于支持与这些设备交互的实用程序库,特别是`devices`库。要了解更多关于如何使用Lua与HLAPI设备交互的信息,请参阅手册的[脚本编写](scripting.md)条目。
|
||||
|
||||
## 入门指南
|
||||
如果你想快速上手,请阅读[入门指南](getting_started.md)。它包含了如何组装你的第一台计算机以及如何开始使用它的逐步说明。要了解特定主题的更多信息,请参阅“参考”部分中的相关页面。
|
||||
天平的另一端是本机设备,如[硬盘](item/hard_drive.md)和[网络接口卡](item/network_interface_card.md)。这些设备由原生的Linux驱动程序控制,添加或移除后需要重启系统。然而,你遇到的设大多数备都是HLAPI设备。
|
||||
|
||||
## 入门
|
||||
|
||||
如果你只是想快速上手操作,只需阅读[入门指南](getting_started.md)。其中有手把手的教程,教你如何组装第一台电脑以及如何开始使用。要了解特定主题的更多信息,请参阅“参考资料”章节中的相关页面。
|
||||
|
||||
## 参考资料
|
||||
本手册包含与计算机相关的模块和物品的参考信息。
|
||||
|
||||
如果你正在寻找某个特定模块或物品的信息,请查看各自的词汇表:
|
||||
- [模块列表](block/index.md)
|
||||
本手册包含与电脑及其变体相关的方块和物品的参考信息。
|
||||
|
||||
如果你正在寻找某个特定方块或物品的信息,请查看各自的目录:
|
||||
|
||||
- [方块列表](block/index.md)
|
||||
- [物品列表](item/index.md)
|
||||
|
||||
如果你对某个特定主题感兴趣,这里有一些常见主题的概述条目:
|
||||
如果你对某个特定主题感兴趣,这里是一些常见主题的概述条目:
|
||||
|
||||
- [基础知识](basics.md)
|
||||
- [脚本编写](scripting.md)
|
||||
- [机器人技术](robotics.md)
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
# 方块操作模块
|
||||

|
||||

|
||||
|
||||
方块操作模块为 [机器人](robot.md) 提供了在世界中破坏和放置方块的能力。
|
||||
方块操作模块为[机器人](robot.md)提供了在世界中破坏和放置方块的能力。
|
||||
|
||||
## API
|
||||
设备名称:`block_operations`
|
||||
|
||||
这是一个高级 API 设备。可以在默认的 Linux 发行版中使用 Lua 进行控制。例如:
|
||||
这是一个高级API设备。可以在默认的Linux发行版中使用Lua进行控制。例如:
|
||||
`local d = require("devices")`
|
||||
`local m = d:find("block_operations")`
|
||||
`m:excavate("front")`
|
||||
|
||||
### 面
|
||||
以下方法中的侧面参数表示从机器人视角的方向。有效值包括:`front`、`up` 和 `down`。
|
||||
以下方法表示面的参数指相对于机器人视角的方向。有效值包括:`front`、`up`、`down`。
|
||||
|
||||
### 方法
|
||||
`excavate([side]):boolean` 尝试在指定方向上破坏一个方块。收集到的方块将从当前选择的库存槽开始插入。如果选择的槽已满,将使用下一个槽,依此类推。如果库存没有空间容纳掉落的方块,方块将掉落到世界中。
|
||||
- `side` 是相对方向,用于破坏方块。可选,默认值为 `front`。参见“面”部分。
|
||||
`excavate([side]):boolean` 尝试在指定方向上破坏一个方块。收集到的方块将从当前选定的物品栏槽位开始插入。如果选定的槽已满,将使用下一个槽,依此类推。如果物品栏没有空间容纳掉落的方块,方块将掉落到世界中。
|
||||
- `side`为待破坏方块的相对方向。可选,默认值为`front`。参见“面”章节。
|
||||
- 返回操作是否成功。
|
||||
|
||||
`place([side]):boolean` 尝试在指定方向上放置一个方块。方块将从当前选择的库存槽中放置。如果槽为空,则不会放置任何方块。
|
||||
- `side` 是相对方向,用于放置方块。可选,默认值为 `front`。参见“面”部分。
|
||||
`place([side]):boolean` 尝试在指定方向上放置一个方块。方块将从当前选定的物品栏槽位中放置。如果槽位为空,则不会放置任何方块。
|
||||
- `side`为待放置方块的相对方向。可选,默认值为 `front`。参见“面”章节。
|
||||
- 返回操作是否成功。
|
||||
|
||||
`durability():number` 返回模块挖掘工具的剩余耐久度。一旦耐久度降到零,无法再进行挖掘操作,直到工具被修复。
|
||||
`durability():number` 返回模块的挖掘工具的剩余耐久度。一旦耐久度降到零,无法再进行挖掘操作,直到工具被修复。
|
||||
- 返回模块挖掘工具的剩余耐久度。
|
||||
|
||||
`repair():boolean` 尝试使用当前选择的库存槽中的材料修复模块的挖掘工具。此方法将一次消耗一个物品。任何常规工具都可以作为修复材料的来源,例如镐和铲子。工具的质量直接影响修复的耐久度。
|
||||
`repair():boolean` 尝试使用当前选定的物品栏槽位中的材料修复模块的挖掘工具。此方法将一次消耗一个物品。任何常规工具都可以作为修复材料的来源,例如镐和铲子。工具的质量直接影响恢复的耐久度数量。
|
||||
- 返回是否有材料可以用来修复模块的挖掘工具。
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
# 文件导入/导出卡
|
||||

|
||||

|
||||
|
||||
文件导入/导出卡允许打破第四面墙。它允许:
|
||||
- 从您的真实计算机上传文件到虚拟 [计算机](../block/computer.md)。
|
||||
- 从虚拟计算机下载文件到您的真实计算机。
|
||||
文件导入/导出卡能打破第四面墙。它可以:
|
||||
- 从您现实中的电脑上传文件到虚拟[电脑](../block/computer.md)。
|
||||
- 从虚拟电脑下载文件到您现实中的电脑。
|
||||
|
||||
为了方便起见,默认的 Linux 发行版提供了两个用于这些操作的实用脚本,`import.lua` 和 `export.lua`。
|
||||
为了方便起见,默认的Linux发行版提供了两个用于这些操作的实用脚本,`import.lua`和`export.lua`。
|
||||
|
||||
`import.lua` 在运行时会提示您选择一个文件上传到虚拟计算机。文件将存储在当前工作目录中。如果存在一个与导入文件同名的文件,将提供选择替代名称的选项。
|
||||
`import.lua`在运行时会提示您选择一个文件上传到虚拟电脑。文件将存储在当前工作目录中。如果存在一个与导入文件同名的文件,会提供重命名文件的选项。
|
||||
|
||||
`export.lua` 以虚拟计算机中的文件路径作为参数。它将此文件下载到您的真实计算机,并提供一个保存对话框,让您选择保存下载文件的位置或取消操作。
|
||||
`export.lua`接收虚拟电脑中的文件路径作为参数。它将此文件下载到您的真实电脑,并提供一个保存对话框,让您选择保存下载文件的位置或取消操作。
|
||||
|
||||
两个脚本都会提示所有当前与计算机终端交互的用户。对于上传操作(`import.lua`),第一个上传的文件将被使用,其他客户端的提示将被取消。对于下载操作,所有客户端都将被提供保存导出文件的选项。
|
||||
两个脚本都会提示所有正在与电脑终端交互的用户。对于上传操作(`import.lua`),将使用第一个上传的文件,其他客户端的提示将被取消。对于下载操作,所有客户端都将被提供保存导出文件的选项。
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# 闪存
|
||||

|
||||

|
||||
|
||||
闪存包含在 [计算机](../block/computer.md) 启动时加载到内存中的初始代码。这通常至少包括系统的固件。新计算机和 [机器人](robot.md) 附带的默认固件还包含一个 Linux 内核。该内核期望在系统的第一个 [硬盘](hard_drive.md) 上存在根文件系统。
|
||||
闪存包含[电脑](../block/computer.md)引导启动时加载到内存中的初始代码。其中通常至少包括系统的固件。新电脑和[机器人](robot.md)中附带的默认固件还包含一个Linux内核。该内核期望在系统的第一个[硬盘](hard_drive.md)中存在根文件系统。
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 软盘
|
||||

|
||||

|
||||
|
||||
软盘是可移动媒体,这意味着它们可以插入和移除 [磁盘驱动器](../block/disk_drive.md) 而不需要使用磁盘驱动器的 [计算机](../block/computer.md) 重新启动即可使用它们。
|
||||
软盘是可移除的存储媒介,这意味着将它们插入[软盘驱动器](../block/disk_drive.md)或从中取出后不需要重启使用软驱的[电脑](../block/computer.md)。
|
||||
|
||||
有关使用软盘时一些有用的命令,请参阅 [磁盘驱动器](../block/disk_drive.md) 手册条目。
|
||||
请参阅手册的[软盘驱动器](../block/disk_drive.md)条目了解使用软盘时的一些实用命令。
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# 硬盘
|
||||

|
||||
|
||||
硬盘是用于在[计算机](../block/computer.md)和[机器人](robot.md)中存储数据的主要存储设备。
|
||||
硬盘是[电脑](../block/computer.md)和[机器人](robot.md)用于存储数据的主要存储设备。
|
||||
|
||||
通常情况下,计算机使用的固件需要某些硬盘来完成引导过程。新获得的计算机和机器人中安装的[固件](flash_memory.md)包含一个Linux发行版,该发行版期望在第一个安装的磁盘驱动器上找到一个常规的根文件系统。可以通过使用[合适的工具](wrench.md)配置硬盘来获取。
|
||||
通常情况下,电脑使用的固件需要硬盘来完成引导过程。新的电脑和机器人中安装的[闪存](flash_memory.md)包含一个Linux发行版,该发行版期望电脑安装的第一个硬盘中存在一个常规的根文件系统。可以通过使用[合适的工具](wrench.md)配置硬盘来获取。
|
||||
|
||||
计算机*必须在关闭电源的情况下*安装或移除该组件。运行中的计算机安装该组件将不起作用,移除可能会导致系统错误。
|
||||
安装或移除此组件时电脑**必须关机**。在电脑运行时安装它将没有效果,移除它可能会导致系统出错。
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
# 物品
|
||||
此索引列出了所有已记录的物品。如果你在寻找方块,请参见[方块索引](../block/index.md)。
|
||||
该索引列出了手册记录的所有物品。如果你在寻找方块,请参见[方块索引](../block/index.md)。
|
||||
|
||||
- [方块操作模块](block_operations_module.md)
|
||||
- [计算机专家手册](manual.md)
|
||||
- [电脑操作员手册](manual.md)
|
||||
- [文件导入/导出卡](file_import_export_card.md)
|
||||
- [固件](flash_memory.md)
|
||||
- [闪存](flash_memory.md)
|
||||
- [软盘](floppy.md)
|
||||
- [硬盘](hard_drive.md)
|
||||
- [物品栏操作模块](inventory_operations_module.md)
|
||||
- [内存条](memory.md)
|
||||
- [网线](network_cable.md)
|
||||
- [网卡](network_interface_card.md)
|
||||
- [网络频道卡](network_tunnel_card.md)
|
||||
- [网络频道模块](network_tunnel_module.md)
|
||||
- [网络线缆](network_cable.md)
|
||||
- [网络接口卡](network_interface_card.md)
|
||||
- [网络隧道卡](network_tunnel_card.md)
|
||||
- [网络隧道模块](network_tunnel_module.md)
|
||||
- [红石接口卡](redstone_interface_card.md)
|
||||
- [机器人](robot.md)
|
||||
- [螺丝刀扳手](wrench.md)
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# 物品栏操作模块
|
||||

|
||||
|
||||
物品栏操作模块为[机器人](robot.md)提供了从世界中的物品栏插入和提取物品的能力。它支持方块和实体的物品栏。
|
||||
物品栏操作模块为[机器人](robot.md)提供了向世界中的物品容器放入和从中取出物品的能力。它同时支持方块和实体的物品栏。
|
||||
|
||||
## API
|
||||
设备名称:`inventory_operations`
|
||||
@@ -11,33 +11,33 @@
|
||||
`local m = d:find("inventory_operations")`
|
||||
`m:drop(1, "front")`
|
||||
|
||||
### 方向
|
||||
以下方法中的`side`参数表示从机器人视角的一个方向。有效的值包括:`front`、`up`和`down`。
|
||||
### 面
|
||||
以下方法表示面的参数指相对于机器人视角的方向。有效值包括:`front`、`up`、`down`。
|
||||
|
||||
### 方法
|
||||
`move(fromSlot:number, intoSlot:number, count:number)` 尝试将指定数量的物品从一个机器人物品栏槽移动到另一个槽。
|
||||
- `fromSlot` 是提取物品的槽位。
|
||||
- `intoSlot` 是插入物品的槽位。
|
||||
- `count` 是要移动的物品数量。
|
||||
`move(fromSlot:number, intoSlot:number, count:number)` 尝试将指定数量的物品从一个机器人物品栏的一个槽位移动到另一个槽位。
|
||||
- `fromSlot`为提取物品的槽位。
|
||||
- `intoSlot`为插入物品的槽位。
|
||||
- `count`为要移动的物品数量。
|
||||
|
||||
`drop(count:number[,side]):number` 尝试从指定槽位朝指定方向丢弃物品。它会将物品丢入一个物品栏中,如果没有物品栏存在则会丢到世界中。
|
||||
- `count` 是要丢弃的物品数量。
|
||||
- `side` 是丢弃物品的相对方向。可选,默认为`front`。参见“方向”部分。
|
||||
`drop(count:number[,side]):number` 尝试从指定槽位提取,朝指定方向丢弃物品。它会将物品丢入物品容器中,如果没有物品容器存在则会丢到世界中。
|
||||
- `count`为要丢弃的物品数量。
|
||||
- `side`为丢弃物品的相对方向。可选,默认为`front`。参见“面”章节。
|
||||
- 返回丢弃的物品数量。
|
||||
|
||||
`dropInto(intoSlot:number, count:number[,side]):number` 尝试将物品从指定槽位朝指定方向丢入物品栏的指定槽位。它只会将物品丢入物品栏中。
|
||||
- `intoSlot` 是要插入物品的槽位。
|
||||
- `count` 是要丢弃的物品数量。
|
||||
- `side` 是丢弃物品的相对方向。可选,默认为`front`。参见“方向”部分。
|
||||
`dropInto(intoSlot:number, count:number[,side]):number` 尝试从指定槽位提取物品,朝指定方向丢入物品容器的指定槽位。它只会将物品丢入物品容器中。
|
||||
- `intoSlot`为要插入物品的槽位。
|
||||
- `count`为要丢弃的物品数量。
|
||||
- `side`为丢弃物品的相对方向。可选,默认为`front`。参见“面”章节。
|
||||
- 返回丢弃的物品数量。
|
||||
|
||||
`take(count:number[,side]):number` 尝试从指定方向获取指定数量的物品。它会从物品栏中获取物品,如果没有物品栏存在则会从世界中获取物品。
|
||||
- `count` 是要获取的物品数量。
|
||||
- `side` 是获取物品的相对方向。可选,默认为`front`。参见“方向”部分。
|
||||
`take(count:number[,side]):number` 尝试从指定方向获取指定数量的物品。它会从物品容器中获取物品,如果没有物品容器存在则会从世界中获取物品。
|
||||
- `count`为要获取的物品数量。
|
||||
- `side`为获取物品的相对方向。可选,默认为`front`。参见“面”章节。
|
||||
- 返回获取的物品数量。
|
||||
|
||||
`takeFrom(fromSlot:number, count:number[,side]):number` 尝试从指定方向的物品栏的指定槽位获取指定数量的物品。它只会从物品栏中获取物品。
|
||||
- `fromSlot` 是获取物品的槽位。
|
||||
- `count` 是要获取的物品数量。
|
||||
- `side` 是获取物品的相对方向。可选,默认为`front`。参见“方向”部分。
|
||||
`takeFrom(fromSlot:number, count:number[,side]):number` 尝试从指定方向的物品容器的指定槽位获取指定数量的物品。它只会从物品容器中获取物品。
|
||||
- `fromSlot`为获取物品的槽位。
|
||||
- `count`为要获取的物品数量。
|
||||
- `side`为获取物品的相对方向。可选,默认为`front`。参见“面”章节。
|
||||
- 返回获取的物品数量。
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 计算机专家手册
|
||||
# 电脑操作员手册
|
||||

|
||||
|
||||
你随手可查的关于[计算机](../block/computer.md)及其相关设备的所有主题的快速参考。这就是你当前正在阅读的内容!
|
||||
随手可查的,关于[电脑](../block/computer.md)及其相关设备的所有主题的快速参考。这就是你当前正在阅读的内容!
|
||||
|
||||
为了方便起见,在世界中的任何已知方块上使用手册会打开对应的手册页面。
|
||||
为了方便起见,对着世界中的任何已知方块使用手册就打开对应的手册页面。
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# 内存条
|
||||

|
||||

|
||||
|
||||
随机访问内存(RAM)设备为[计算机](../block/computer.md)和[机器人](robot.md)提供工作内存。
|
||||
随机访问存储器(RAM)设备为[电脑](../block/computer.md)和[机器人](robot.md)提供运作所需的内存。
|
||||
|
||||
与[硬盘](hard_drive.md)不同,这种内存是易失性的,计算机断电时会被清除。理论上,计算机可以在没有RAM的情况下运行,只使用堆栈来存储数据。然而,通常情况下,软件需要RAM才能正常运行。特别是,新获得的计算机中包含的[固件](flash_memory.md)需要相当数量的RAM来正常运行。
|
||||
与[硬盘](hard_drive.md)不同,这种内存是易失性的,电脑断电时会被清除。理论上,电脑可以在没有RAM的情况下运行,软件只使用栈来存储数据。然而,通常情况下,软件需要RAM才能正常运行。特别是新的电脑中预装的[固件](flash_memory.md)需要相当数量的RAM来运行。
|
||||
|
||||
请参见[入门指南](../getting_started.md)手册条目。
|
||||
请参见手册的[入门指南](../getting_started.md)条目。
|
||||
|
||||
计算机*必须在关闭电源的情况下*安装或移除该组件。运行中的计算机安装该组件将不起作用,移除可能会导致系统错误。
|
||||
安装或移除此组件时电脑**必须关机**。在电脑运行时安装它将没有效果,移除它可能会导致系统出错。
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# 网线
|
||||

|
||||
# 网络线缆
|
||||

|
||||
|
||||
网线连接一对[网络连接口](../block/network_connector.md)。这使得便捷地跨越较大距离成为可能。要放置网线,请依次使用它连接两个网络连接口。
|
||||
网络线缆可将一对[网络连接器](../block/network_connector.md)连到一起。这可以方便地跨越较大距离。要放置网络线缆,请依次对着两个网络连接器使用它。
|
||||
|
||||
网线有最大长度限制。可能需要使用网络连接口作为中继器来增加网线的有效范围。
|
||||
网络线缆有最大长度限制。可能需要使用网络连接器作为中继器来增加网络线缆的有效范围。
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# 网卡
|
||||
# 网络接口卡
|
||||

|
||||
|
||||
网卡(NIC)允许[计算机](../block/computer.md)向[网络连接口](../block/network_connector.md)发送和接收消息。
|
||||
网络接口卡(NIC)可供[电脑](../block/computer.md)与[网络连接器](../block/network_connector.md)之间收发报文。
|
||||
|
||||
这些卡片可以配置为仅连接到选定的面(使用时按住)。这允许使用多个卡片构建自定义路由器,例如。
|
||||
这种扩展卡可配置为仅连接到选定的面(手持使用)。用例之一是可以用多张扩展卡构建自定义路由器。
|
||||
|
||||
使用默认的Linux发行版时,此设备将提供一个常规的以太网设备。网络设置可以手动完成,也可以使用便利脚本 `setup-network.lua`。该脚本提供了使用固定地址设置或DHCP设置的选项。对于DHCP设置,网络中必须有且仅有一台计算机充当DHCP服务器。
|
||||
使用默认的Linux发行版时,此设备将提供一个常规的以太网设备。网络设置可以手动完成,也可以使用便利脚本`setup-network.lua`。该脚本让用户选择设置固定地址或使用DHCP。若使用DHCP,网络中必须有且仅有一台电脑充当DHCP服务器。
|
||||
|
||||
初始设置后,使用命令 `ifconfig` 查看当前使用的IP地址。
|
||||
进行初始设置后,使用命令`ifconfig`查看当前使用的IP地址。
|
||||
|
||||
计算机*必须在关闭电源的情况下*安装或移除该组件。运行中的计算机安装该组件将不起作用,移除可能会导致系统错误。
|
||||
安装或移除此组件时电脑**必须关机**。在电脑运行时安装它将没有效果,移除它可能会导致系统出错。
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# 网络频道卡
|
||||

|
||||
# 网络隧道卡
|
||||

|
||||
|
||||
网络频道卡允许[计算机](../block/computer.md)向与该卡连接的另一个频道设备(频道卡和[频道模块](network_tunnel_module.md))发送和接收消息。
|
||||
网络隧道卡可令[电脑](../block/computer.md)与该卡连接的另一个隧道设备(隧道卡或[隧道模块](network_tunnel_module.md))之间收发报文。
|
||||
|
||||
要连接两个频道设备,打开它们的配置界面(使用时按住),并插入另一个要链接的频道设备。这允许将任意两个网络频道设备连接起来。
|
||||
要连接两个隧道设备,打开它们的配置界面(手持使用),并插入另一个要连接的隧道设备。这可以将任意两个网络隧道设备连接起来。
|
||||
|
||||
使用默认的Linux发行版时,此设备将提供一个常规的以太网设备。网络设置可以手动完成,也可以使用便利脚本 `setup-network.lua`。该脚本提供了使用固定地址设置或DHCP设置的选项。对于DHCP设置,网络中必须有且仅有一台计算机充当DHCP服务器。
|
||||
使用默认的Linux发行版时,此设备将提供一个常规的以太网设备。网络设置可以手动完成,也可以使用便利脚本`setup-network.lua`。该脚本让用户选择设置固定地址或使用DHCP。若使用DHCP,网络中必须有且仅有一台电脑充当DHCP服务器。
|
||||
|
||||
初始设置后,使用命令 `ifconfig` 查看当前使用的IP地址。
|
||||
进行初始设置后,使用命令`ifconfig`查看当前使用的IP地址。
|
||||
|
||||
计算机*必须在关闭电源的情况下*安装或移除该组件。运行中的计算机安装该组件将不起作用,移除可能会导致系统错误。
|
||||
安装或移除此组件时电脑**必须关机**。在电脑运行时安装它将没有效果,移除它可能会导致系统出错。
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# 网络频道模块
|
||||

|
||||
# 网络隧道模块
|
||||

|
||||
|
||||
网络频道模块允许[机器人](robot.md)向与该模块连接的另一个频道设备(频道模块和[频道卡](network_tunnel_card.md))发送和接收消息。
|
||||
网络隧道模块可令[机器人](robot.md)与该模块连接的另一个隧道设备(隧道模块或[隧道卡](network_tunnel_card.md))之间收发报文。
|
||||
|
||||
要连接两个频道设备,打开它们的配置界面(使用时按住),并插入另一个要链接的频道设备。这允许将任意两个网络频道设备连接起来。
|
||||
要连接两个隧道设备,打开它们的配置界面(手持使用),并插入另一个要连接的隧道设备。这可以将任意两个网络隧道设备连接起来。
|
||||
|
||||
使用默认的Linux发行版时,此设备将提供一个常规的以太网设备。网络设置可以手动完成,也可以使用便利脚本 `setup-network.lua`。该脚本提供了使用固定地址设置或DHCP设置的选项。对于DHCP设置,网络中必须有且仅有一台计算机充当DHCP服务器。
|
||||
使用默认的Linux发行版时,此设备将提供一个常规的以太网设备。网络设置可以手动完成,也可以使用便利脚本`setup-network.lua`。该脚本让用户选择设置固定地址或使用DHCP。若使用DHCP,网络中必须有且仅有一台电脑充当DHCP服务器。
|
||||
|
||||
初始设置后,使用命令 `ifconfig` 查看当前使用的IP地址。
|
||||
进行初始设置后,使用命令`ifconfig`查看当前使用的IP地址。
|
||||
|
||||
机器人*必须在关闭电源的情况下*安装或移除该组件。运行中的机器人安装该组件将不起作用,移除可能会导致系统错误。
|
||||
安装或移除此组件时电脑**必须关机**。在电脑运行时安装它将没有效果,移除它可能会导致系统出错。
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# 红石卡
|
||||
# 红石接口卡
|
||||

|
||||
|
||||
红石卡是[红石接口](../block/redstone_interface.md)的一个更紧凑的版本。它使用户能够构建更紧凑的设计。
|
||||
红石接口卡是紧凑版本的[红石接口](../block/redstone_interface.md)。用户能用它构建更紧凑的设计。
|
||||
|
||||
其一般功能与块版本相同。[计算机](../block/computer.md)的前面代表了红石接口块手册条目中描述的主要面。
|
||||
其一般功能与方块版本相同。[电脑](../block/computer.md)的正面对应了手册的红石接口方块条目中描述的主面。
|
||||
|
||||
该设备的API与红石接口块的API相同。
|
||||
该设备的API与红石接口方块的API相同。
|
||||
|
||||
@@ -1,100 +1,100 @@
|
||||
# 机器人
|
||||

|
||||

|
||||
|
||||
机器人本质上是移动的[计算机](../block/computer.md)。由于其非固定性质,其行为与常规计算机有所不同。它们不能连接到[总线接口](../block/bus_interface.md)。与卡片设备不同,机器人支持模块设备。这些模块设备专门考虑了机器人的移动性。
|
||||
机器人本质上是移动的[电脑](../block/computer.md)。由于非固定的性质,其行为与常规电脑有所不同。它们不能连接[总线接口](../block/bus_interface.md)。机器人支持模块设备,不支持扩展卡设备。模块设备专门考虑了机器人的移动性。
|
||||
|
||||
机器人具有固定大小的库存和先进的能量储存。只有机器人的常规库存可以通过像漏斗这样的设备自动填充和清空。机器人的组件库存必须手动配置。
|
||||
机器人具有固定大小的物品栏,装有最先进的能量容器。只有机器人的常规物品栏可以通过像漏斗这样的设备自动填充和清空。机器人的组件物品栏必须手动配置。
|
||||
|
||||
在默认配置下,机器人无法与自己的库存进行交互。使用[库存操作模块](inventory_operations_module.md)可以使机器人在自己的库存中移动物品,以及从其他库存中插入和提取物品。
|
||||
在默认配置下,机器人无法与自己的物品栏进行交互。[物品栏操作模块](inventory_operations_module.md)可以使机器人在自己的物品栏中移动物品,以及向其他物品栏中放入或从中提取物品。
|
||||
|
||||
要为机器人充电,建议使用[充电器](../block/charger.md)。机器人可以通过简单地移动到充电器上来自我充电。或者,它们可以被放置到充电器上的一个库存中。
|
||||
要为机器人充电,建议使用[充电机](../block/charger.md)。机器人只需移动到充电机上方即可为自身充电。也可以将它们可放置到充电机上方的物品容器中。
|
||||
|
||||
默认的 Linux 发行版提供了一个实用的 Lua 库 `robot`,简化了对机器人的控制。底层 API 提供了异步移动方法。该库实现了同步替代方法,使顺序编程更加方便。
|
||||
默认的Linux发行版提供了一个Lua实用程序库`robot`,简化了对机器人的控制。底层API提供了异步移动机器人的方法。该库实现了同步的版本,更便于编写有顺序要求的程序。
|
||||
|
||||
## API
|
||||
设备名称:`robot`
|
||||
|
||||
这是一个高级 API 设备。可以在默认的 Linux 发行版中使用 Lua 控制。例如:
|
||||
这是一个高级API设备。可以在默认的Linux发行版中使用Lua控制。例如:
|
||||
`local d = require("devices")`
|
||||
`local r = d:find("robot")`
|
||||
`r:move("forward")`
|
||||
|
||||
### 方向
|
||||
以下方法中的方向参数表示相对于机器人的方向。有效值为:`forward`、`backward`、`upward`、`downward`(用于移动操作),`left` 和 `right`(用于旋转操作)。这些方向始终是从机器人执行操作时的视角来看待的。
|
||||
以下方法中表示方向的参数指相对于机器人的方向。有效值为:`forward`、`backward`、`upward`、`downward`(用于移动操作),`left`、`right`(用于旋转操作)。这些方向始终是相对于机器人执行操作时视角的相对方向。
|
||||
|
||||
为了方便,可以使用这些值的简短别名:`back`、`up`、`down`。为了极致简洁,也可以使用每个方向的首字母。
|
||||
为了方便,可以使用这些值的简短别名:`back`、`up`、`down`。为了极致简洁,也可以使用各个方向的首字母。
|
||||
|
||||
### 方法
|
||||
这些方法在底层机器人设备上可用。注意,库为所有这些方法提供了有用的封装。建议使用库而不是直接与设备交互。
|
||||
这些方法在底层的机器人设备上可用。注意,库为所有这些方法提供了有用的封装。建议使用库而不是直接与设备交互。
|
||||
|
||||
`getEnergyStored():number` 返回机器人内部能量储存的当前量。
|
||||
- 返回储存的能量量。
|
||||
`getEnergyStored():number` 返回机器人内部能量存储器的当前存储量。
|
||||
- 返回储存的能量数量。
|
||||
|
||||
`getEnergyCapacity():number` 返回机器人内部能量储存的最大量。
|
||||
- 返回最大储存的能量量。
|
||||
`getEnergyCapacity():number` 返回机器人内部能量存储器的最大存储量。
|
||||
- 返回能储存的能量最大值。
|
||||
|
||||
`getSelectedSlot():number` 返回当前选择的机器人库存槽。这被许多模块作为隐式输入使用。
|
||||
- 返回所选库存槽的索引。
|
||||
`getSelectedSlot():number` 返回当前选定的机器人物品栏槽位。这被许多模块作为隐式输入使用。
|
||||
- 返回所选物品栏槽位的索引号。
|
||||
|
||||
`setSelectedSlot(slot:number):number` 设置当前选择的机器人库存槽。这被许多模块作为隐式输入使用。
|
||||
- `slot` 是要选择的库存槽的索引。
|
||||
- 返回新选择的槽的索引。如果指定的值无效,则可能与 `slot` 不同。
|
||||
`setSelectedSlot(slot:number):number` 设置当前选定的机器人物品栏槽位。这被许多模块作为隐式输入使用。
|
||||
- `slot`为要选定的物品栏槽位的索引号。
|
||||
- 返回新选定的槽位的索引号。如果指定的值无效,则可能与`slot`不同。
|
||||
|
||||
`getStackInSlot(slot:number):table` 获取指定槽中的物品描述。
|
||||
- `slot` 是要获取物品描述的槽的索引。
|
||||
`getStackInSlot(slot:number):table` 获取指定槽位中的物品描述。
|
||||
- `slot`为要获取物品描述的槽位的索引号。
|
||||
|
||||
`move(direction):boolean` 尝试将移动操作排入指定方向。
|
||||
- `direction` 是要移动的方向。
|
||||
- 返回操作是否成功排队。
|
||||
`move(direction):boolean` 尝试将向指定方向的移动操作加入操作队列。
|
||||
- `direction`为要移动的方向。
|
||||
- 返回操作是否成功入队。
|
||||
|
||||
`turn(direction):boolean` 尝试将转动操作排入指定方向。
|
||||
- `direction` 是要转动的方向。
|
||||
- 返回操作是否成功排队。
|
||||
`turn(direction):boolean` 尝试将转动操作加入操作队列。
|
||||
- `direction`为要转动的方向。
|
||||
- 返回操作是否成功入队。
|
||||
|
||||
`getLastActionId():number` 返回最后排队操作的透明 ID。成功调用 `move()` 或 `turn()` 后调用此方法,以获取与排队操作关联的 ID。
|
||||
- 返回最后排队操作的 ID。
|
||||
`getLastActionId():number` 返回最后入队的操作的不透明ID。成功调用`move()`或`turn()`后调用此方法,以获取与入队成功的操作相关的ID。
|
||||
- 返回最后入队的操作的ID。
|
||||
|
||||
`getQueuedActionCount():number` 返回当前等待处理的操作数量。使用此方法可以在排队失败时等待操作完成。
|
||||
`getQueuedActionCount():number` 返回当前操作队列中等待处理的操作数量。使用此方法可以在入队失败时等待操作完成。
|
||||
- 返回当前待处理的操作数量。
|
||||
|
||||
`getActionResult(actionId:number):string` 返回具有指定 ID 的操作的结果。操作 ID 可以从 `getLastActionId()` 获取。只有有限数量的过去操作结果可用。
|
||||
- 返回指定操作 ID 的结果,如果不可用则返回空。当可用时,可能的值包括:`INCOMPLETE`、`SUCCESS` 和 `FAILURE`。
|
||||
`getActionResult(actionId:number):string` 返回指定ID对应操作的结果。操作ID可以用`getLastActionId()`获取。只可查询有限数量的历史操作结果可用。
|
||||
- 返回指定ID对应操作的结果,若不可用则无返回值。当可用时,可能的值包括:`INCOMPLETE`(未完成)、`SUCCESS`(成功)、`FAILURE`(失败)。
|
||||
|
||||
### 库 API
|
||||
### 库API
|
||||
- 库名称:`robot`
|
||||
|
||||
这是一个 Lua 库。可以在默认的 Linux 发行版中使用。例如:
|
||||
这是一个Lua库。可以在默认的Linux发行版中使用。例如:
|
||||
`local r = require("robot")`
|
||||
`r.move("forward")`
|
||||
`r.turn("left")`
|
||||
|
||||
### 方法
|
||||
`energy():number` 返回机器人内部能量储存的当前量。
|
||||
- 返回储存的能量量。
|
||||
`energy():number` 返回机器人内部能量存储器的当前存储量。
|
||||
- 返回储存的能量数量。
|
||||
|
||||
`capacity():number` 返回机器人内部能量储存的最大量。
|
||||
- 返回最大储存的能量量。
|
||||
`capacity():number` 返回机器人内部能量存储器的最大存储量。
|
||||
- 返回储存的最大能量数量。
|
||||
|
||||
`slot():number` 返回当前选择的机器人库存槽。这被许多模块作为隐式输入使用。
|
||||
- 返回所选库存槽的索引。
|
||||
`slot():number` 返回当前选定的机器人物品栏槽位。这被许多模块作为隐式输入使用。
|
||||
- 返回所选物品栏槽位的索引号。
|
||||
|
||||
`slot(slot:number):number` 设置当前选择的机器人库存槽。这被许多模块作为隐式输入使用。
|
||||
- `slot` 是要选择的库存槽的索引。
|
||||
- 返回新选择的槽的索引。如果指定的值无效,则可能与 `slot` 不同。
|
||||
`slot(slot:number):number` 设置当前选定的机器人物品栏槽位。这被许多模块作为隐式输入使用。
|
||||
- `slot`为要选定的物品栏槽位的索引号。
|
||||
- 返回新选定的槽位的索引号。如果指定的值无效,则可能与`slot`不同。
|
||||
|
||||
`stack([slot:number]):table` 获取指定槽中的物品描述。
|
||||
- `slot` 是要获取物品描述的槽的索引。可选,默认为 `slot()`。
|
||||
`stack([slot:number]):table` 获取指定槽位中的物品描述。
|
||||
- `slot`为要获取物品描述的槽位的索引号。可选,默认为 `slot()`。
|
||||
|
||||
`move(direction):boolean` 尝试移动到指定方向。直到移动操作完成时才会阻塞。
|
||||
- `direction` 是要移动的方向。
|
||||
`move(direction):boolean` 尝试移动到指定方向。阻塞程序,直到移动操作完成。
|
||||
- `direction`为要移动的方向。
|
||||
- 返回操作是否成功。
|
||||
|
||||
`moveAsync(direction)` 尝试异步移动到指定方向。直到操作成功排队时才会阻塞。
|
||||
- `direction` 是要移动的方向。
|
||||
`moveAsync(direction)` 尝试异步移动到指定方向。阻塞程序,直到操作成功入队。
|
||||
- `direction`为要移动的方向。
|
||||
|
||||
`turn(direction):boolean` 尝试朝指定方向转动。直到旋转操作完成时才会阻塞。
|
||||
- `direction` 是要转动的方向。
|
||||
`turn(direction):boolean` 尝试朝指定方向转动。阻塞程序,直到旋转操作完成。
|
||||
- `direction`为要转动的方向。
|
||||
- 返回操作是否成功。
|
||||
|
||||
`turnAsync(direction)` 尝试异步转动到指定方向。直到操作成功排队时才会阻塞。
|
||||
- `direction` 是要转动的方向。
|
||||
`turnAsync(direction)` 尝试异步转动到指定方向。阻塞程序,直到操作成功入队。
|
||||
- `direction`为要转动的方向。
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# 声音卡
|
||||

|
||||
# 声卡
|
||||

|
||||
|
||||
声音卡允许从其广泛的逼真样本库中播放各种声音效果。由于内部工程限制,播放连续效果时需要短暂的暂停。在此时间窗口内尝试播放其他效果将没有效果。
|
||||
声卡可以回放其丰富且逼真的样本库中的各种声音效果。由于程序内部在工程上的限制,连续播放音效时会有短暂的暂停。在此时间窗口内尝试播放其他音效将没有效果。
|
||||
|
||||
这是一个高级设备。必须使用高级设备 API 进行控制。默认的 Linux 发行版提供了该 API 的 Lua 库。例如:
|
||||
这是一个高级设备。必须使用高级设备API进行控制。默认的Linux发行版提供了该API的Lua库。例如:
|
||||
`local d = require("devices")`
|
||||
`local s = d:find("sound")`
|
||||
`s:playSound("entity.creeper.primed")`
|
||||
@@ -13,11 +13,11 @@
|
||||
|
||||
### 方法
|
||||
`playSound(name:string[,volume:float,pitch:float])` 播放指定名称的声音效果。
|
||||
- `name` 是要播放的效果名称。
|
||||
- `volume` 是播放效果的音量,范围从 `0` 到 `1`,`1` 为正常音量。可选,默认为 `1`。
|
||||
- `pitch` 是播放效果的音高,范围从 `0.5` 到 `2`,`1` 为正常音高。可选,默认为 `1`。
|
||||
- `name`为要播放的音效名称。
|
||||
- `volume`为播放音效的音量,范围从`0`到`1`,`1`为正常音量。可选,默认为 `1`。
|
||||
- `pitch`为播放效果的音高,范围从`0.5`到`2`,`1`为正常音高。可选,默认为 `1`。
|
||||
- 如果指定的名称无效,则会抛出异常。
|
||||
|
||||
`findSound(name:string):table` 返回与给定名称匹配的可用声音效果列表。请注意,结果数量有限,因此过于通用的查询会导致结果被截断。
|
||||
- `name` 是要搜索的名称查询。
|
||||
- 返回与查询字符串匹配的声音效果名称列表。
|
||||
`findSound(name:string):table` 返回匹配给定名称的可用声音效果列表。请注意,结果数量有限,因此过于泛指的查询会导致结果被截断。
|
||||
- `name`为要查询的名称查询。
|
||||
- 返回与所查询字符串匹配的声音效果名称列表。
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# 螺丝刀扳手
|
||||

|
||||

|
||||
|
||||
名为“螺丝刀扳手”的扳手-螺丝刀多功能工具,可用于直接访问一些方块的配置,例如 [计算机](../block/computer.md)。
|
||||
这是绰号“螺丝刀扳手”的扳手-螺丝刀多功能工具,可用于直接访问一些方块的配置,例如[电脑](../block/computer.md)。
|
||||
|
||||
它是配置某些设备(如 [总线接口](../block/bus_interface.md))所必需的。它也可以用来快速拆解一些设备,例如 [电缆](../block/bus_cable.md)。
|
||||
它是配置某些设备(如[总线接口](../block/bus_interface.md))时所必需的。它也可以用来快速拆解一些设备,例如[线缆](../block/bus_cable.md)。
|
||||
|
||||
此工具还可以用于移除电缆上的外观装饰。
|
||||
此工具还可以用于移除线缆上的伪装方块。
|
||||
|
||||
@@ -1,18 +1,23 @@
|
||||
# 网络
|
||||
要建立一个[计算机](block/computer.md)网络,使用[网络连接口](block/network_connector.md)和[网络电缆](item/network_cable.md)将连接器连接起来。最后,确保每台要加入网络的计算机都安装了[网卡](item/network_interface_card.md)。
|
||||
|
||||
连接器必须连接在计算机的前面以外的任何一面。这使得安装在计算机中的网络卡能够通过连接器发送和接收数据包。
|
||||
要建立[电脑](block/computer.md)网络,需使用[网络连接器](block/network_connector.md)和用于接通连接器的[网络线缆](item/network_cable.md)。最后,确保每台要加入网络的电脑都安装了[网络接口卡](item/network_interface_card.md)。
|
||||
|
||||
通过电缆连接的连接器会相互转发数据包。对于更复杂的网络设置,可能需要使用[网络集线器](block/network_hub.md)。它允许将多个连接器互相连接。
|
||||
连接器须连接在电脑的任意一面,正面除外。这样安装在电脑中的网络接口卡才能收发数据包。
|
||||
|
||||
## 跳数
|
||||
网络数据包只能经过一定数量的“跳数”。一个跳数通常可以理解为一次转发操作。例如,连接器转发一个数据包会使用一次跳数。网络集线器将数据包转发到除接收源以外的每个连接器也会使用一次跳数。一旦剩余跳数达到零,数据包将不再被转发。这可以避免数据包在包含循环的网络中无限循环。尽管如此,这只是一个安全机制。任何网络都不应包含循环,因为这会导致同一个数据包在接收计算机上多次到达。
|
||||
通过线缆接通的连接器会相互转发数据包。对于更复杂的网络结构,可能需要使用[网络集线器](block/network_hub.md)。它能将多个连接器互相接通。
|
||||
|
||||
## 计算机设置
|
||||
要为网络配置计算机,首先确保安装了网络卡。之后,在默认的 Linux 发行版中,运行命令 `setup-network.lua`。这将提供一个向导,用于配置计算机如何连接到网络。或者,如果你知道自己在做什么,可以像在常规 Linux 安装中那样设置网络。
|
||||
## 跳
|
||||
|
||||
网络数据包传输时的“跳数”有上限。一跳通常可以理解为一次转发操作。例如,连接器转发数据包时会使用一跳,网络集线器将数据包转发到除来源以外的连接器时也会使用一跳。一旦剩余跳数归零,数据包将不再被转发。这可以避免数据包在有环路的网络中无限循环,也就是说这是安全机制。网络不应出现环路,这会导致同一个数据包多次到达目标电脑。
|
||||
|
||||
## 配置电脑
|
||||
|
||||
要配置入网的电脑,首先应确保安装了网络接口卡。之后,在默认的Linux发行版中,运行命令`setup-network.lua`。该脚本将提供一个向导,配置电脑入网的方式。或者,如果你知道自己在做什么,可以像在普通Linux系统中那样设置网络。
|
||||
|
||||
## DHCP
|
||||
DHCP 是一种允许简化网络设置的协议。整个网络中只需要一台计算机具有静态配置的网络地址,网络中的其他所有计算机都可以自动分配地址。使用此设置时,确保只有一台计算机充当 DHCP 服务器。同时确保没有计算机使用落在动态分配 IP 地址范围内的静态 IP 地址。
|
||||
|
||||
DHCP是一种可以简单地进行网络配置的协议。网络中只需给一台电脑静态分配网络地址,其他所有电脑都可以被自动分配地址。使用此方法时,请确保只有一台电脑充当DHCP服务器,同时确保不要将动态分配范围内的IP地址分配给静态地址的电脑。
|
||||
|
||||
## 工具
|
||||
一旦你拥有一个运行中的网络,且有多个计算机在同一网络中,你就有了无限的可能性。例如,你可以使用 `scp` 在计算机之间复制文件,使用 `ssh` 登录到远程计算机,并使用 `socket` 库在 Lua 中编写自定义网络程序。有关如何使用 `socket` 库的示例,请参阅[官方仓库中的示例](https://github.com/diegonehab/luasocket/tree/master/samples)。
|
||||
|
||||
一旦你有了运行中的网络,且网络中有多台电脑,你就有了无限的可能性。例如,你可以使用`scp`在电脑之间复制文件,使用`ssh`登录到远程电脑,以及在Lua中使用`socket`库编写自定义网络程序。请参阅[官方仓库中的示例](https://github.com/diegonehab/luasocket/tree/master/samples)以获取有关如何使用`socket`库的示例,。
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# 机器人技术
|
||||
|
||||
待完成
|
||||
待完成
|
||||
@@ -1,75 +1,85 @@
|
||||
# 脚本编写
|
||||
使用 Lua 控制设备是使用[计算机](block/computer.md)的核心概念。许多设备是所谓的高级 API (HLAPI) 设备。这意味着它们不是通过常规的 Linux 驱动控制,而是通过一个简单的 RPC 系统,通过串行设备传输 JSON 消息进行控制。
|
||||
|
||||
用Lua控制设备是使用[电脑](block/computer.md)的核心原则。许多设备是所谓的高级API(HLAPI)设备。这意味着它们不是通过常规的Linux驱动控制的,而是通过一个简单的RPC系统,通过串行设备传输JSON报文进行控制的。
|
||||
|
||||
## Devices 库
|
||||
默认的 Linux 发行版包含了简化 HLAPI 设备访问的库。`devices` 库提供了发现设备、调用设备方法以及在可用时获取设备文档的工具。
|
||||
|
||||
要使用 `devices` 库,可以通过 `require("devices")` 导入它。
|
||||
默认的Linux发行版包含了降低HLAPI设备访问难度的库。`devices`库提供了发现设备、调用设备方法以及获取设备文档(若有)的工具。
|
||||
|
||||
要使用`devices`库,可以通过`require("devices")`导入。
|
||||
|
||||
### 方法
|
||||
`list():table` 返回当前所有可用设备的列表。返回的表中的每个条目代表一个设备,包括其类型名称和唯一标识符。
|
||||
- 返回已连接的 HLAPI 设备列表。
|
||||
|
||||
`get(id:string):Device` 返回具有指定标识符的设备的封装对象。类似于 `find`,但使用特定的标识符而不是类型名称。
|
||||
- `id` 是设备的唯一标识符。
|
||||
`list():table` 返回当前所有可用设备的列表。返回的表中的每个条目代表一个设备,包括其类型名称和唯一标识符。
|
||||
|
||||
- 返回已连接的HLAPI设备列表。
|
||||
|
||||
`get(id:string):Device` 返回具有指定标识符的设备的封装对象。类似于`find`,但使用特定的标识符而不是类型名称。
|
||||
|
||||
- `id`为设备的唯一标识符。
|
||||
- 返回指定设备的封装对象。
|
||||
|
||||
`find(typeName):Device` 返回指定类型的设备的封装对象。如果有多个这种类型的设备,则无法确定会返回哪一个。可以使用[总线接口](block/bus_interface.md)中设置的别名。
|
||||
- `typeName` 是要查找设备的设备类型。
|
||||
`find(typeName):Device` 返回指定类型的设备的封装对象。如果有多个同类型的设备,则无法确定会返回哪一个。可以使用[总线接口](block/bus_interface.md)中设置的别名。
|
||||
|
||||
- `typeName`为要查找设备的设备类型。
|
||||
- 返回指定设备类型的设备封装对象。
|
||||
|
||||
`methods(id:string):table` 返回具有指定标识符的设备提供的方法列表。要以更可读的方式获取方法列表,请获取设备封装对象并将其转换为字符串。此外,请参阅设备封装对象类型部分。
|
||||
- `id` 是设备的唯一标识符。
|
||||
`methods(id:string):table` 返回具有指定标识符的设备提供的方法列表。要以更易于阅读的方式获取方法列表,请获取设备封装对象并将其转换为字符串。此外,请参阅设备封装对象数据类型的章节。
|
||||
|
||||
- `id`为设备的唯一标识符。
|
||||
- 返回设备提供的方法列表。
|
||||
- 如果获取方法列表失败,将抛出错误。
|
||||
|
||||
`invoke(id:string, methodName:string, ...):any` 调用具有指定标识符的设备上的指定方法。传递所有额外参数。不建议直接使用此方法。最好获取设备封装对象并通过它调用方法。此外,请参阅设备封装对象类型部分。
|
||||
- `id` 是设备的唯一标识符。
|
||||
- `methodName` 是要调用的方法的名称。
|
||||
- `...` 是传递给方法的参数。
|
||||
|
||||
- `id`为设备的唯一标识符。
|
||||
- `methodName`为要调用的方法的名称。
|
||||
- `...`为传递给方法的参数。
|
||||
- 返回方法的结果。
|
||||
- 如果调用失败或方法抛出异常,则抛出错误。
|
||||
|
||||
## 设备封装对象
|
||||
从 `device` 库返回的设备是 `Device` 类型的对象。这是一个存储设备标识符的封装对象。
|
||||
|
||||
它的主要作用是允许无缝调用此设备公开的方法,并在可用时以便捷的方式访问文档。
|
||||
从`device`库返回的设备是`Device`类型的对象。这是一个存储设备标识符的封装对象。
|
||||
|
||||
要在这种封装对象上调用方法,请使用冒号符号和方法的名称。例如:
|
||||
它的主要作用是无缝调用此设备对外暴露的方法,还能以便捷的方式访问文档(若有)。
|
||||
|
||||
要在这种封装对象上调用方法,请使用冒号加方法名。例如:
|
||||
`wrapper:someMethod(1, 2, 3)`
|
||||
|
||||
要获取设备的文档,可以将其转换为字符串。在 Lua 解释器中,使用 `=wrapper`。
|
||||
要获取设备的文档,可以将其用`tostring`转换为字符串。在Lua解释器中,可以用`=wrapper`。
|
||||
|
||||
## 示例
|
||||
在此示例中,我们将控制一个[红石接口](block/redstone_interface.md)。首先,放置块并使用[总线线缆](block/bus_cable.md)和[总线接口](block/bus_interface.md)将其连接到计算机。
|
||||
|
||||

|
||||
在此示例中,我们将控制一个[红石接口方块](block/redstone_interface.md)。首先,放置方块并使用[总线线缆](block/bus_cable.md)和[总线接口](block/bus_interface.md)将其连接到电脑。
|
||||
|
||||
我们在红石接口上方放置一个红石灯,以便通过视觉指示我们的命令是否生效。
|
||||

|
||||
|
||||
要验证设备与计算机之间的连接,从命令行运行命令 `lsdev.lua`。这将列出所有已连接的 HLAPI 设备的标识符和类型名称。其中一个应在其类型名称中包含 `redstone`。
|
||||
我们在红石接口上方放置了一个红石灯,以便通过视觉显示我们的命令是否生效。
|
||||
|
||||
通过命令行运行 `lua` 启动 Lua 交互模式。
|
||||
要验证设备与电脑之间的连接,在命令行中运行命令`lsdev.lua`。这将列出所有已连接的HLAPI设备的标识符和类型名称。其中一个的其类型名称应包含`redstone`。
|
||||
|
||||

|
||||
在命令行中运行`lua`以交互编程模式启动Lua。
|
||||
|
||||
导入 devices 库并将其存储在名为 `d` 的变量中:
|
||||

|
||||
|
||||
导入devices库并将其存储在名为`d`的变量中:
|
||||
`d = require("devices")`
|
||||
|
||||
然后获取红石接口的 `Device` 封装对象,并将其存储在名为 `r` 的变量中:
|
||||
然后获取红石接口的`Device`封装对象,并将其存储在名为`r`的变量中:
|
||||
`r = d:find("redstone")`
|
||||
|
||||
此调用中的 `redstone` 是设备类型名称,正如我们刚刚通过 `lsdev.lua` 检查的一样。
|
||||
该次调用中的`redstone`为设备类型名称,与我们刚刚使用`lsdev.lua`查看的一样。
|
||||
|
||||
现在我们有了一个红石接口的封装对象,可以在其上调用方法。要获取可用方法的列表,运行 `=r`。
|
||||
现在我们有了一个红石接口的封装对象,可以在其上调用方法。要获取可用方法的列表,运行`=r`。
|
||||
|
||||
在我们的示例中,我们对 `setRedstoneOutput` 方法感兴趣。它允许设置红石接口发出的信号。
|
||||
在我们的示例中,我们对`setRedstoneOutput`方法感兴趣。它可以设置红石接口发出的信号。
|
||||
|
||||
要点亮我们的灯,我们希望从红石接口的顶部发出红石信号:
|
||||
要点亮我们的灯,我们希望从红石接口的顶面发出红石信号:
|
||||
`r:setRedstoneOutput("up", 15)`
|
||||
|
||||
现在灯应该会亮起来!
|
||||
|
||||

|
||||
|
||||
通过这些操作,你可以了解已连接设备的名称、它们提供的方法以及如何获取它们的文档。继续尝试使用红石接口的其他方法读取输入的红石信号,或尝试其他设备吧!
|
||||
通过此示例,你了解了如何获取已连接设备的名称、它们提供的方法以及如何获取它们的文档。请继续尝试使用红石接口提供的其他方法读取输入的红石信号,或尝试其他设备吧!
|
||||
|
||||
Reference in New Issue
Block a user