Differences

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

Link to this comparison view

Both sides previous revision Previous revision
component:geolyzer:zh [2023/11/05 09:42]
hfsr [Component: Geolyzer]
component:geolyzer:zh [2023/12/10 16:30] (current)
hfsr [组件:地址分析仪]
Line 1: Line 1:
 组件:地址分析仪 组件:地址分析仪
 ================= =================
-此组件由[[block:​geolyzer:​zh|地址分析仪方块]]提供。 +此组件由[[block:​geolyzer:​zh|地址分析仪方块]]提供。 ​  
- +   
-组件名:`geolyzer`。 +组件名:`geolyzer`。 ​  
- +  
 回调函数: 回调函数:
  
 - `scan(x:​number,​ z:number[, y:number, w:number, d:number, h:number][, ignoreReplaceable:​boolean|options:​table]):​table`  ​ - `scan(x:​number,​ z:number[, y:number, w:number, d:number, h:number][, ignoreReplaceable:​boolean|options:​table]):​table`  ​
-  分位于`x`、`z`和`y`指定的相对坐标处一定区域的密度。此函数将会返回一列表,其中包含指定范围内方块的硬度值。提供的坐标是以地址分析仪为参考点的相对坐标。待分析区域的大小由参数`w`、`d`与`h`指定,分别代表宽度(width)、深度(depth)与高度(height)。若不指定大小则认为区域为指定坐标对应的单个方块。+  分位于`x`、`z`和`y`指定的相对坐标处一定区域的密度。此函数将会返回一列表,其中包含指定范围内方块的硬度值。提供的坐标是以地址分析仪为参考点的相对坐标。待分析区域的大小由参数`w`、`d`与`h`指定,分别代表宽度(width)、深度(depth)与高度(height)。若不指定大小则认为区域为指定坐标对应的单个方块。 ​ 
   ​   ​
-  方块离地址分析仪越远,扫描到的硬度值所含的噪声就会越大。计算某个值与特定方块实际硬度值偏离程度的准确公式是:`到方块的欧几里得距离 * 1/33 * 地质分析仪噪声`,公式中的`地质分析仪噪声`常数可通过配置文件修改,默认为`2`。+  方块离地址分析仪越远,扫描到的硬度值所含的噪声就会越大。计算某个值与特定方块实际硬度值偏离程度的准确公式是:`到方块的欧几里得距离 * 1/33 * 地质分析仪噪声`,公式中的`地质分析仪噪声(geolyzerNoise)`常数可通过配置文件修改,默认为`2`。 ​ 
   ​   ​
   包含多个结果的表中的数据是线性的,但是结果所代表的是一个3D的区域。区域起始于由相对于地址分析仪的相对坐标(`x`、`z`与`y`)定义的方块,其大小(`w`、`d`与`h`)决定了区域分别在坐标轴的x轴正方向、z轴正方向和y轴正方向上延伸的方块数。将结果表中的元素与坐标对应起来需要用到以下方法:  ​   包含多个结果的表中的数据是线性的,但是结果所代表的是一个3D的区域。区域起始于由相对于地址分析仪的相对坐标(`x`、`z`与`y`)定义的方块,其大小(`w`、`d`与`h`)决定了区域分别在坐标轴的x轴正方向、z轴正方向和y轴正方向上延伸的方块数。将结果表中的元素与坐标对应起来需要用到以下方法:  ​
 +\\
   表中元素首先沿x轴正方向排列,然后是z轴正方向,最后是y轴正方向。换言之,假设结果表是将三维表转化成一维表得到的,那么三维表的最后一维中是按照x轴正方向排列的数值,中间一维是按照z轴正方向排列的,最高一维是按照y轴正方向排列的。可查看底部的一段代码样例以帮助理解。  ​   表中元素首先沿x轴正方向排列,然后是z轴正方向,最后是y轴正方向。换言之,假设结果表是将三维表转化成一维表得到的,那么三维表的最后一维中是按照x轴正方向排列的数值,中间一维是按照z轴正方向排列的,最高一维是按照y轴正方向排列的。可查看底部的一段代码样例以帮助理解。  ​
 \\ \\
Line 20: Line 21:
 - `analyze(side:​number[,​ options:​table]):​table`  ​ - `analyze(side:​number[,​ options:​table]):​table`  ​
   获取某个直接接触地址分析仪的方块的信息。默认情况下返回的表中将包含字符串格式的方块ID(如`minecraft:​dirt`、元表、硬度以及一些其他信息)请注意调用一次该函数消耗的能量与调用`scan`函数相同!  ​   获取某个直接接触地址分析仪的方块的信息。默认情况下返回的表中将包含字符串格式的方块ID(如`minecraft:​dirt`、元表、硬度以及一些其他信息)请注意调用一次该函数消耗的能量与调用`scan`函数相同!  ​
-  此方法可通过配置文件中的`misc.allowItemStackInspection`设置项禁用。+  此方法可通过配置文件中的`misc.allowItemStackInspection`设置项禁用。 ​  
 +\\
 - `store(side:​number,​ dbAddress:​string,​ dbSlot:​number):​boolean`  ​ - `store(side:​number,​ dbAddress:​string,​ dbSlot:​number):​boolean`  ​
-  读取与地址分析仪指定面接触的方块信息,并将其以物品堆的形式存储到指定地址对应的[[component:​database:​zh|数据库组件]]中的指定槽位。此函数不一定能(好)处理所有方块,尤其是以NBT数据区分的模组方块(例如机器人)。  ​+  读取与地址分析仪指定面接触的方块信息,并将其以物品堆的形式存储到指定地址对应的[[component:​database:​zh|数据库组件]]中的指定槽位。此函数不一定能()处理所有方块,尤其是以NBT数据区分的模组方块(例如机器人)。  ​ 
 +\\
 - `detect(side:​number):​boolean,​ string`  ​ - `detect(side:​number):​boolean,​ string`  ​
   与`robot.detect`(来自机器人组件)相同。探测指定方向的方块,方向是机器人的相对方向,并返回机器人可否移动到此方块的位置中,同时给出方块的大体描述。  ​   与`robot.detect`(来自机器人组件)相同。探测指定方向的方块,方向是机器人的相对方向,并返回机器人可否移动到此方块的位置中,同时给出方块的大体描述。  ​
-**返回值:**若机器人前方的物体会阻碍机器人移动(为方块或实体)则返回 `true`(注意:无人机即使在方块为`passable`时也会返回`true`),在其他情况下会返回`false`。第二个参数大体描述了遣返的物体,取值可能为下列之一:`entity`、`solid`、`replaceable`、`liquid`、`passable`或`air`。 +**返回值:**若机器人前方的物体会阻碍机器人移动(为方块或实体)则返回 `true`(注意:无人机即使在方块为`passable`时也会返回`true`),在其他情况下会返回`false`。第二个参数大体描述了遣返的物体,取值可能为下列之一:`entity`、`solid`、`replaceable`、`liquid`、`passable`或`air`。 ​  
-- `canSeeSky():​boolean`  +\\ 
-  返回从当前位置垂直向上是否能看到天空。透明方块,例如玻璃,不会影响视线。 +- `canSeeSky():​boolean` ​  
-- `isSunVisible():​boolean`  +  返回从当前位置垂直向上是否能看到天空。透明方块,例如玻璃,不会影响视线。 ​  
-  返回从当前位置垂直向上是否能看到太阳。结果受到正上方能阻碍视线的方块(可由`canSeeSky()`函数检查)以及当前为白天还是黑夜影响。+\\ 
 +- `isSunVisible():​boolean` ​  
 +  返回从当前位置垂直向上是否能看到太阳。结果受到正上方能阻碍视线的方块(可由`canSeeSky()`函数检查)以及当前为白天还是黑夜影响。 ​  
 +\\
  
 下列代码片段可用于理解`scan`函数实际如何工作。它会扫描指定偏移处指定大小的区域,保存返回的数据以及相对于地质分析仪方块(或机器人)的准确偏移坐标,并打印这些数据。 下列代码片段可用于理解`scan`函数实际如何工作。它会扫描指定偏移处指定大小的区域,保存返回的数据以及相对于地质分析仪方块(或机器人)的准确偏移坐标,并打印这些数据。