此组件由地址分析仪方块提供。
组件名:geolyzer
。
回调函数:
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)。若不指定大小则认为区域为指定坐标对应的单个方块。到方块的欧几里得距离 * 1/33 * 地质分析仪噪声
,公式中的地质分析仪噪声(geolyzerNoise)
常数可通过配置文件修改,默认为2
。x
、z
与y
)定义的方块,其大小(w
、d
与h
)决定了区域分别在坐标轴的x轴正方向、z轴正方向和y轴正方向上延伸的方块数。将结果表中的元素与坐标对应起来需要用到以下方法:analyze(side:number[, options:table]):table
minecraft:dirt
、元表、硬度以及一些其他信息)请注意调用一次该函数消耗的能量与调用scan
函数相同!misc.allowItemStackInspection
设置项禁用。store(side:number, dbAddress:string, dbSlot:number):boolean
detect(side:number):boolean, string
robot.detect
(来自机器人组件)相同。探测指定方向的方块,方向是机器人的相对方向,并返回机器人可否移动到此方块的位置中,同时给出方块的大体描述。true
(注意:无人机即使在方块为passable
时也会返回true
),在其他情况下会返回false
。第二个参数大体描述了遣返的物体,取值可能为下列之一:entity
、solid
、replaceable
、liquid
、passable
或air
。canSeeSky():boolean
isSunVisible():boolean
canSeeSky()
函数检查)以及当前为白天还是黑夜影响。
下列代码片段可用于理解scan
函数实际如何工作。它会扫描指定偏移处指定大小的区域,保存返回的数据以及相对于地质分析仪方块(或机器人)的准确偏移坐标,并打印这些数据。
local component = require("component") local geolyzer = component.geolyzer local offsetx = 4 local offsetz = -3 local offsety = -5 local sizex = 3 local sizez = 4 local sizey = 5 local map = {} local scanData = geolyzer.scan(offsetx, offsetz, offsety, sizex, sizez, sizey) local i = 1 for y = 0, sizey - 1 do for z = 0, sizez - 1 do for x = 0, sizex - 1 do -- 可看作是三维表:map[offsety + y][offsetz + z][offsetx + x] = scanData[i] map[i] = {posx = offsetx + x, posy = offsety + y, posz = offsetz + z, hardness = scanData[i]} i = i + 1 end end end for i = 1, sizex*sizez*sizey do print(map[i].posx, map[i].posy, map[i].posz, map[i].hardness) end