Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
component:signals:zh [2023/10/17 11:34]
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()]]消耗
  
-下面列出了所有由组件和内置库触发的信号。它们由以下格式列出:`name(argtype, ...)`,你可以像 `local name, arg, ... = event.pull()` 这样拉取它们。例如,要拉取一条调制解调器的消息:+下面列出了所有由组件和内置库触发的信号。它们由以下格式列出:`信号名(参数名参数类型, ...)`,你可以`local name, arg, ... = event.pull()`这样的写法拉取它们。 ​  
 +例如,要拉取一条调制解调器收到的消息:
 ```lua ```lua
 local event = require("​event"​) local event = require("​event"​)
 local _, localNetworkCard,​ remoteAddress,​ port, distance, payload = event.pull("​modem_message"​) local _, localNetworkCard,​ remoteAddress,​ port, distance, payload = event.pull("​modem_message"​)
-print("​在网卡 ‘" .. localNetworkCard ​.. "’ 的 ‘" .. port .. "’ 端口上收到来自 ‘" .. remoteAddress ​.. "’ 地址的数据:" .. tostring(payload))+print("​Received data '" .. tostring(payload) ​.. "' from address ​" .. remoteAddress ​.. " ​on network card " .. localNetworkCard ​.. " ​on port " .. port .. "​."​)
 if distance > 0 then if distance > 0 then
-  print("​消息来自 ​" .. distance .. " ​格远。")+  print("​Message was sent from " .. distance .. " ​blocks away.")
 end end
 ``` ```
Line 21: Line 22:
  
 - `component_added(address:​ string, componentType:​ string)`  ​ - `component_added(address:​ string, componentType:​ string)`  ​
-  当一个组件连接到系统时,[[block:​computer_case:​zh|电脑]]或[[block:​robot:​zh|机器人]]会将这个信号加入信号队列。`address` 是新加入的组件的地址,`componentType` 是组件的类型(如 `redstone` 或 `gpu`)。 ​  +  当新组件连接到系统时,[[block:​computer_case:​zh|电脑]]或[[block:​robot:​zh|机器人]]会将信号加入队列。`address`是新加入的组件的地址,`componentType`是组件的类型(如`redstone`或`gpu`)。 ​  
-  注意:请尽可能不要直接使用这个信号,而是用 `component_available` 代替,后者会在*首选*组件被添加或改变时,被[[api:​component:​zh|component(组件) 库]]加入信号队列。+  注意:请尽可能不要直接使用这个信号,而是用`component_available`代替,后者会在添加或改变**首选**组件时,被[[api:​component:​zh|component(组件) 库]]加入信号队列。 ​  
 +\\
 - `component_removed(address:​ string, componentType:​ string)`  ​ - `component_removed(address:​ string, componentType:​ string)`  ​
-  当一个组件被从系统中移除时,[[block:​computer_case:​zh|电脑]]或[[block:​robot:​zh|机器人]]会将这个信号加入信号队列。`address` 是被移除的组件的地址,`componentType` 是组件的类型(如 `redstone` 或 `gpu`)。 ​  +  当组件被从系统中移除时,[[block:​computer_case:​zh|电脑]]或[[block:​robot:​zh|机器人]]会将信号加入信号队列。`address`是被移除的组件的地址,`componentType`是组件的类型(如 `redstone` 或 `gpu`)。 ​  
-  注意:请尽可能不要直接使用这个信号,而是用 `component_unavailable` 代替,后者会在*首选*组件被移除时,被[[api:​component:​zh|component(组件) 库]]加入信号队列。+  注意:请尽可能不要直接使用这个信号,而是用`component_unavailable`代替,后者会在移除**首选**组件时,被[[api:​component:​zh|component(组件) 库]]加入队列。 ​  
 +\\
 - `component_available(componentType:​ string)`  ​ - `component_available(componentType:​ string)`  ​
-  当*首选*组件被添加或改变时,[[api:​component:​zh|component(组件) 库]]会将这个信号加入信号队列。一般来说,最好使用它而不是 `component_added`,以免与组件库冲突。+  当添加或改变**首选**组件时,[[api:​component:​zh|component(组件) 库]]会将这个信号加入队列。一般来说,最好使用它而不是`component_added`,以免与组件库冲突。 ​  
 +\\
 - `component_unavailable(componentType:​ string)`  ​ - `component_unavailable(componentType:​ string)`  ​
-  当*首选*组件被移除时,[[api:​component:​zh|component(组件) 库]]会将这个信号加入信号队列。一般来说,最好使用它而不是 `component_removed`,以免与组件库冲突。+  当移除**首选**组件时,[[api:​component:​zh|component(组件) 库]]会将这个信号加入队列。一般来说,最好使用它而不是`component_removed`,以免与组件库冲突。 ​  
 +\\
 - `term_available()`  ​ - `term_available()`  ​
-  当电脑的 [[item:​graphics_card:​zh|GPU]] *与*[[block:​screen:​zh|屏幕]]变得可用时,[[api:​term:​zh|term(终端) 库]]会将这个信号加入信号队列。这对于确定现在是否可以将文本输出到连接的屏幕上有很大帮助+  当电脑的[[item:​graphics_card:​zh|GPU]]**与**[[block:​screen:​zh|屏幕]]变得可用时,[[api:​term:​zh|term(终端) 库]]会将这个信号加入队列。此信号有助于确定何时可以将文本输出到设备连接的屏幕上。 ​  
 +\\
 - `term_unavailable()`  ​ - `term_unavailable()`  ​
-  当电脑的 [[item:​graphics_card:​zh|GPU]] *或*[[block:​screen:​zh|屏幕]]的其中任意一个变得不可用时,[[api:​term:​zh|term(终端) 库]]会将这个信号加入信号队列。这对于确定现在是否可以将文本输出到连接的屏幕上有很大帮助+  当电脑的 [[item:​graphics_card:​zh|GPU]]**或**[[block:​screen:​zh|屏幕]]的其中任意一个变得不可用时,[[api:​term:​zh|term(终端) 库]]会将这个信号加入队列。此信号有助于确定何时不能将文本输出到设备连接的屏幕上。 ​ 
  
  
Line 40: Line 46:
  
 - `screen_resized(screenAddress:​ string, newWidth: number, newHeight: number)`  ​ - `screen_resized(screenAddress:​ string, newWidth: number, newHeight: number)`  ​
-  当分辨率发生变化时,对应的[[block:​screen:​zh|屏幕]]会将这个信号加入信号队列,例如分辨率被通过 [[component:​gpu:​zh|GPU]] 手动修改时。`screenAddress` 是产生信号的屏幕的地址。+  当分辨率发生变化,例如通过[[component:​gpu:​zh|GPU]]手动修改分辨率时,对应的[[block:​screen:​zh|屏幕]]会将信号加入队列。`screenAddress`是产生信号的屏幕的地址。 ​  
 +\\
 - `touch(screenAddress:​ string, x: number, y: number, button: number, playerName: string)`  ​ - `touch(screenAddress:​ string, x: number, y: number, button: number, playerName: string)`  ​
-  ​这个信号会在级或级屏幕被点击时触发包括左键点击 GUI(连接键盘时)或在世界中直接右键点击或激活它们(没有键盘连接或潜行交互时)。`screenAddress` 是产生信号的屏幕的地址。`x` 和 `y` 坐标数值“字母”为单位的意味着它直接映射到 `term.setCursor` 或 `gpu.set`)。`playerName` 是触发这个事件的玩家的名字。 +  ​信号会在2级或3级屏幕被点击时入队。包括左键点击GUI(连接键盘时)或在世界中直接右键点击它们/​与其交互(没有键盘连接或潜行交互时)。 ​  
-  关于玩家名的说明:我可能会在将来添加一个配置项来禁用这个参数,因为有些人认为这太……不真实了。它对多用户程序很方便,因此我暂时保留了它。 +  ​`screenAddress`是产生信号的屏幕的地址。`x`和`y`坐标的单位是“字母”(意味着它直接映射到`term.setCursor`或`gpu.set`)。`playerName` 是触发这个事件的玩家的名字。 ​  
-  //重要//这个信号是*经过核查*,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。+  关于玩家名的说明:我可能会在将来添加一个配置项来禁用这个参数,因为有些人认为这太……不真实了。它对多用户程序很有用,因此我暂时保留了它。  ​ 
 +**注意**此信号是**已经过核查**的,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。 ​  
 +\\
 - `drag(screenAddress:​ string, x: number, y: number, button: number, playerName: string)`  ​ - `drag(screenAddress:​ string, x: number, y: number, button: number, playerName: string)`  ​
-  ​这个信号几乎等同于 `touch` 信号,唯一隐含的区别是: ​当这个信号被触发时,是“属于”先前已被触发的 `touch` 信号的。此信号只能通过在GUI中进行拖动来触发。+  ​信号几乎等同于 `touch` 信号,唯一隐含的区别是: ​信号被触发时,其实是“属于”先前已被触发的`touch`信号的。此信号只能通过在GUI中进行拖动来触发。 ​  
 +\\
 - `drop(screenAddress:​ string, x: number, y: number, button: number, playerName: string)`  ​ - `drop(screenAddress:​ string, x: number, y: number, button: number, playerName: string)`  ​
-  ​这个信号在玩家触发 `touch` 后松开鼠标时被触发。尽管它叫这个名字,但它不一定在 `drag` 信号之后。+  ​信号在玩家触发`touch`后松开鼠标时被触发。尽管它叫这个名字,但它不必需跟在`drag`信号之后。 ​  
 +\\
 - `scroll(screenAddress:​ string, x: number, y: number, direction: number, playerName: string)`  ​ - `scroll(screenAddress:​ string, x: number, y: number, direction: number, playerName: string)`  ​
-  当玩家在级或级屏幕的 GUI 中使用鼠标滚轮时,屏幕会将这个信号加入信号队列。`x` 和 `y` 坐标值为滚动时鼠标光标的位置。跟 `touch` 信号一样,坐标以“字母”为单位。`direction` 表示滚动的方向,正数代表“向上”,负数代表“向下”。注意,这可能会根据游戏客户端的操作系统或驱动配置而有所不同。`playerName` 是触发该事件的玩家名字。 +  当玩家在2级或3级屏幕的GUI中使用鼠标滚轮时,对应屏幕会将信号加入队列。 ​  
-  ​这里有与 `touch` ​相同的关于玩家名的考虑。+  ​`x`和`y`坐标值为滚动时鼠标光标的位置。`touch`信号相同,坐标以“字母”为单位。`direction`表示滚动的方向,正数代表“向上”,负数代表“向下”。注意,这可能会根据游戏客户端的操作系统或驱动配置而有所不同。`playerName`是触发该事件的玩家名字。 
 +  ​对于玩家名,此处也有与`touch`相同的考虑。 ​  
 +\\
 - `walk(screenAddress:​ string, x: number, y: number[, playerName: string])`  ​ - `walk(screenAddress:​ string, x: number, y: number[, playerName: string])`  ​
-  当玩家或其他实体在级或级屏幕上行走时,屏幕会将这个信号加入信号队列。`screenAddress` 是产生信号的屏幕的地址。`x` 和 `y` 坐标是当屏幕为多方块屏幕时*子方块的坐标*。使用 [[component:​gpu:​zh|gpu.getSize()]] 可以计算出实际上代表了显示器的哪个区域。 +  当玩家或其他实体在2级或3级屏幕上行走时,对应屏幕会将这个信号加入信号队列。`screenAddress`是产生信号的屏幕的地址。`x`和`y`坐标是当屏幕为多方块屏幕时**子方块的坐标**。使用[[component:​gpu:​zh|gpu.getSize()]]可以计算出实际上代表了显示器的哪个区域。 ​  
-  与点击不同的是,根据当前的分辨率,这个信号可能会被屏幕上没有任何显示的区域触发,所以要记住这一点。 +  与点击不同的是,根据当前的分辨率不同,这个信号可能会被屏幕上没有任何显示的区域触发,所以要记住这一点。 
-  ​这里有与 `touch` ​相同的关于玩家名的考虑。+  ​对于玩家名,此处也有与`touch`相同的考虑。 ​ 
  
  
Line 62: Line 75:
  
 - `key_down(keyboardAddress:​ string, char: number, code: number, playerName: string)`  ​ - `key_down(keyboardAddress:​ string, char: number, code: number, playerName: string)`  ​
-  当用户在屏幕上输入东西时,附着的[[block:​keyboard:​zh|键盘]]会将这个信号添加到信号队列。准确来说,应该是当用户*按下*一个键时。如果用户一直按着这个键,这个事件可能会被重复触发。 +  当用户在屏幕上输入内容时,附着其上的[[block:​keyboard:​zh|键盘]]会将信号添加到队列。准确来说,应该是当用户**按下**一个键时。如果用户一直按着这个键,这个事件可能会被重复触发。  ​ 
-  //重要//这个信号*经过核查*,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。+**注意**此信号**已经过核查**,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。 ​  
 +\\
 - `key_up(keyboardAddress:​ string, char: number, code: number, playerName: string)` ​   ​ - `key_up(keyboardAddress:​ string, char: number, code: number, playerName: string)` ​   ​
-  当用户在屏幕上输入东西时,其连接的[[block:​keyboard:​zh|键盘]]会将这个信号添加到信号队列。准确来说,应该是当用户*松开*一个键时。 +  当用户在屏幕上输入内容时,附着的[[block:​keyboard:​zh|键盘]]会将信号添加到队列。准确来说,应该是当用户**松开**一个键时。 
-  注意,玩家可以不释放按键就将自己“移开”屏幕,这在大多数情况下*应该*会得到处理(我认为),但有时仍会失。这意味着该功能或多或少还处于……观察阶段,如果被证明不可行的话,该功能会在以后的某个时间点被删除。 +  ​注意,玩家可以不松开按键就将自己“移开”屏幕范围,这在大多数情况下**应该**会得到处理(我认为),但有时仍会处理。这意味着该功能或多或少还处于……观察阶段,被证明不可行,该功能会在以后的某个时间点被删除。 
-  //​重要//​这个信号*经过核查*,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。+**注意**此信号**已经过核查**,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。 ​  
 +\\
 - `clipboard(keyboardAddress:​ string, value: string, playerName: string)`  ​ - `clipboard(keyboardAddress:​ string, value: string, playerName: string)`  ​
-  当用户从剪切板上粘贴文本(Shift+Ins 或鼠标中键)时,[[block:​keyboard:​zh|键盘]]会将这个信号添加到信号队列。注意,可粘贴的文本最大长度是有限制的(可在配置文件中修改)。 +  当用户从剪切板上粘贴文本(shift+ins或鼠标中键)时,[[block:​keyboard:​zh|键盘]]会将信号添加到信号队列。注意,文本可粘贴的最大长度是有限制的(可在配置文件中修改)。 
-  //​重要//​这个信号*经过核查*,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。+**注意**此信号**已经过核查**,也就是说,只有当玩家是该电脑的[[:​computer_users:​zh|登记用户]](或该电脑没有登记任何用户)时,信号才会入队。
  
  
-红石卡与红石 I/O 端口+红石卡与红石I/​O端口
 --------------------- ---------------------
  
 - `redstone_changed(address:​ string, side: number, oldValue: number, newValue: number[, color: number])`  ​ - `redstone_changed(address:​ string, side: number, oldValue: number, newValue: number[, color: number])`  ​
-  当传入的红石信号改变时,[[component:​redstone:​zh|红石组件]]会将这个信号添加到事件队列。`address` 是[[block:​redstone_io:​zh|红石 I/O 端口]]或被安装在检测到红石信号的机器的[[item:​redstone_card:​zh|红石卡]]的地址。`side` 是[[api:​sides:​zh|sides]]的一个常数,表示红石信号在哪一侧发生变化。这方向是相对于组件容器的,因此对于计算机和机器人来说,具体的值取决于它们的朝向。对于红石 I/O 端口来说,方向是绝对的。`color` 参数只有在配合集束线缆使用时才会引入,其值表示发生改变的信号的颜色。+  当传入的红石信号改变时,[[component:​redstone:​zh|红石组件]]会将信号添加到队列。 ​  
 +  ​`address`是[[block:​redstone_io:​zh|红石I/​O端口]]或检测到红石信号的机器安装的[[item:​redstone_card:​zh|红石卡]]的地址。`side`是[[api:​sides:​zh|sides(方向)]]常量其中之一,表示哪一侧的红石信号发生变化。这里的方向是相对于组件容器的相对方向,因此对电脑和机器人而言,具体的值取决于它们的朝向。对于红石I/​O端口来说,方向是绝对的。`color`参数只有在配合集束线缆使用时才会引入,其值表示发生改变的信号的颜色。
  
  
Line 85: Line 101:
  
 - `motion(address:​string,​ relativeX:​number,​ relativeY:​number,​ relativeZ:​number[,​ entityName:​string])`  ​ - `motion(address:​string,​ relativeX:​number,​ relativeY:​number,​ relativeZ:​number[,​ entityName:​string])`  ​
-  当检测范围内的生物实体移超过配置的灵敏度时,这个信号会被[[block:​motion_sensor:​zh|运动传感器]]添加到事件队列。`relativeX`、`relativeY` 和 `relativeZ` 是被检测到的物体相对于运动传感器的位置。+  当检测范围内的活动实体移速超过配置的灵敏度时,这个信号会被[[block:​motion_sensor:​zh|运动传感器]]添加到事件队列。`relativeX`、`relativeY`和`relativeZ`是被检测到的物体相对于运动传感器的位置。
  
 网卡 网卡
Line 91: Line 107:
  
 - `modem_message(receiverAddress:​ string, senderAddress:​ string, port: number, distance: number, ...)`  ​ - `modem_message(receiverAddress:​ string, senderAddress:​ string, port: number, distance: number, ...)`  ​
-  当在开放的端口上收到息时,[[item:​lan_card:​zh|网卡]] (包括无线网卡)会将这个信号添加到事件队列。`receiverAddress` 是收到息的网卡的地址,`senderAddress` 是发送息的网卡的地址。注意,如果消息经过了一个或多个[[block:​switch:​zh|中继器]],那么发送者的地址可能与实际发送息的网卡地址不同。`port` 是收到息的端口。`distance` 只有收到*无线*网络信息时才有效,此时它的值是接收者到发送者之间的距离。对于普通的网卡来说,这个永远零。其他所有参数都是用户定义的,并对应用户在调用 [[component:​modem:​zh|modem.send()]] 或 `modem.broadcast()` 时指定的内容,用作信息载荷。+  当在开放的端口上收到息时,[[item:​network_card:​zh|网卡]](包括无线网卡)会将信号添加到事件队列。 ​  
 +  ​`receiverAddress` 是收到息的网卡的地址,`senderAddress`是发送息的网卡的地址。注意,若信息经过了一个或多个[[block:​switch:​zh|中继器]],那么发送者的地址可能与实际发送息的网卡地址不同。`port`是收到息的端口。`distance`参数只有收到**无线**网络信息时才有效,此时它的值是接收者到发送者之间的距离。对于普通的网卡来说,值永远零。其他所有参数都是用户定义的,并对应用户在调用[[component:​modem:​zh|modem.send()]] 或 `modem.broadcast()`时指定的内容,信息载荷。
  
  
Line 98: 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`是特定于发送设备的数据的表。
  
  
-Carriage+车辆
 -------- --------
  
-**重要**: 这个组件已被移动到 OpenComponents ​addon+来自[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}}