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
Last revision Both sides next revision
component:signals:zh [2023/10/17 11:31]
hfsr [网卡]
component:signals:zh [2023/12/27 04:27]
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}}