**This is an old revision of the document!**

物品栏控制器API

  • inventorySize():number
    返回设备内部物品栏的大小。

  • select([slot:number]):number
    获取当前选定槽位号;若指定了槽位号则为设置当前选定槽位。

  • count([slot:number]):number
    获取指定槽位中的物品数量,若不指定则获取当前选定槽位中的物品数量。

  • space([slot:number]):number
    获取指定槽位的剩余空间,若不指定则获取当前选定槽位的剩余空间。

  • compareTo(otherSlot:number):boolean
    将(机器人物品栏中)当前选定槽位的内容物,与(也是机器人物品栏中)指定槽位的内容物相比较。

  • transferTo(toSlot:number[, amount:number]):boolean
    将指定数量的物品从当前选定槽位中移动到指定槽位。如果未指定数量,则移动整个物品堆。

WorldControl Trait API

  • detect(side:number):boolean
    检测给定面相对于机器人的方块,并返回机器人是否可以移动到方块中,以及方块的描述。如果方块会阻挡机器人向前移动,则返回 true,否则返回 false。即使该方块是可通过的,机器人也会返回true。

    side - 请参阅 sides API 以获取可能的面列表。

TankWorldControl Trait API

  • compareFluid(side:number):boolean 将选定储罐中的液体(需要 储罐升级)与世界上的流体或机器人指定一侧的外部储罐中的流体进行比较。
  • drain(side:number[, count:number]):boolean
    令机器人通过指定面在世界或储罐中提取一定数量的流体。如果未指定数量,机器人将尝试提取 1000mB。如果储罐无法存储指定数量的流体,则操作将会执行失败(该过程不会损失流体)。
  • fill(side:number[, count:number]):boolean
    从选定的储罐(需要 储罐升级)中将指定量的流体填充到世界或机器人前面的储罐中。如果未指定数量,机器人将尝试用 1000mB 的液体填充目标储罐。如果没有足够的流体来填充方块或者目标储罐没有足够的空间,则该操作将执行失败且流体不会损失。

Agent Trait API

  • name():string
    获取机器人的名称。
  • swing(side:number):boolean[, string]
    让机器人使用当前自身工具栏装备的物品来与与正前方的方块、空气(空间)交互。如果成功则返回 true(可能需要时间,具体时间取决于与其交互的方块——例如黑曜石需要一些时间来挖掘)。如果执行失败则返回 false 同时返回失败的原因。
  • use(side: number[, sneaky: boolean[, duration: number]]): boolean[, string]
    尝试以玩家相同的方式:右键(单击)来使用当前装备在工具栏中的物品。
    side - 如果指定该值,则机器人尝试仅在指定面上单击右键,否则机器人会尝试所有面,请查阅 Sides API 以获取可能的面列表。
    sneaky - 如果设置为true,机器人将会模拟玩家的“潜行右击”。如果设置为true,则某些物品(例如桶)的行为会有所不同。 duration - 使用该物品的时间。这在使用弓等持续使用物品时很有用。
    返回值:如果机器人可以与它前面的方块交互,则返回 true,否则返回 false。如果成功,第二个参数将会描述机器人与之交互的内容,并且将是 block_activateditem_placeditem_useditem_interactedair 之一。 此函数用途非常广泛,因为机器人可以模拟大多数物品的单击右键。与玩家的唯一区别是机器人不能使用特别要求用户是实体的物品,因为机器人是一个方块。所以喝药水、吃食物或扔末影珍珠都会失败。 这个函数的次要返回值可以用来判断右键单击的结果是什么造成的。返回项目结果并不总是很明显,需要事先进行一些测试。另请注意,虽然机器人不受有害药水的影响,但它们可能会被爆炸摧毁,因此在使用此功能放置、投掷或激活任何形式的炸药时要小心。第二个返回值的可能值:
    • block_activated - 一个被激活的方块(例如拉杆、开关、门)
    • item_interacted - 用装备的工具与世界互动,例如在羊上使用剪刀。
    • item_placed - 某个东西被放置在世界中。这不仅仅是有可放置的方块引起的,但也可以通过方块或实体出现在世界中的物品(例如燧石或刷怪蛋)。
    • item_used - 装备物品被激活,如同喷溅药水一样。
    • air - 当前装备的物品(包括空手)需要对着一个目标物体才能使用。请注意如果你的机器人有天使方块升级,这个值将永远不会被返回,但是一些操作可能仍然无效果。
  • place(side: number[, sneaky: boolean]): boolean[, string]
    尝试将物品栏中已选定格子的方块放置在指定面(如果支持这面)如果 sneaky 设置为true,那么机器人将会模拟潜行放置(Shift+点击)。如果成功放置,则返回 true。 如果操作执行失败,则返回 false。如果使用一个不被支持的值作为参数,则操作将会执行失败并说明失败的原因。
  • getLightColor():number
    获取襟翼或状态活动灯的颜色,并用整数编码 RGB 值(0xRRGGBB)形式表示。
  • setLightColor(value:number):number
    将活动或襟翼灯的颜色设置为指定的整数编码 RGB 值 (0xRRGGBB)。

TankControl Trait API

  • tankCount():number
    返回机器人中安装的储罐升级数量。
  • selectTank(tank:number)
    选择指定的储罐(如果机器人包含多个 储罐升级)。任何储罐运行时都会使用这个储罐。
  • tankLevel([tank:number]):number
    返回指定储罐中的液位。如果未指定储罐,则返回选定储罐中的液位(使用 selectTank())。
  • tankSpace([tank:number]):number
    返回指定储罐中的剩余液体容量(剩余空间)。如果未指定储罐,则返回选定储罐中的剩余容量。
  • compareFluidTo(tank:number):boolean
    测试所选储罐(机器人存储空间)是否与指定储罐中的流体相同(需要 储罐升级)。
  • transferFluidTo(tank:number[, count:number]):boolean
    将选定储罐中的指定量流体转移到指定储罐。如果未指定储罐,机器人将尝试传输 1000mB。

    InventoryWorldController trait API

  • compare(side:number[, fuzzy:boolean=false]):boolean
    将机器人指定侧的方块与当前选择的格子中的物品进行比较,并返回它们是否相同。如果二者元数据匹配,则认为方块(物品)相同;不检查其他 ItemStack 信息。空气被视为空气方块,不能与物品栏中的空格子进行比较;detect() 函数可用于确定机器人前面是否有块。 对于掉落不同物品的方块,compare() 方法将不能工作(例如:钻石矿石掉落钻石);对于这些情况,请使用精准采集来获取方块进行比较。
  • drop(side:number[, count:number]):boolean
    从当前选定的物品栏格子中丢弃指定数量的物品。如果丢弃了至少一个物品,则返回 true,否则返回 false。如果机器人前面的方块是容器,机器人会尝试把物品放入容器中。 如果该容器不能接收该物品,则该物品不会被丢弃在世界中(操作将会执行失败并返回 false)。机器人本身被视为容器(方块),并且可以使用 drop() 函数将物品移入其中。drop() 函数不适用非物品容器,例如流体储罐(use() 函数适用于这些情况)。
  • suck(side:number[, count:number]):boolean
    尝试拾取指定数量的物品并将其置于选定的格子中。如果选定的格子被占用,则物品将被置于第一个可用格子中。会返回拾取的物品数量,否则返回 false

机器人组件API

  • durability():number
    获取当前装备工具的耐久度。

  • move(direction:number):boolean
    向指定方向移动。可用的移动方向有:frontbacktopbottom(参见sides(方向) API)。

  • turn(clockwise:boolean):boolean
    向指定方向旋转。

    Drone Component API

  • getStatusText():string
    获取当前在 GUI 中显示的状态文字(文本)。
  • setStatusText(value:string):string
    设置在 GUI 显示的状态文字(文本),并返回一个新的值。
  • move(dx:number, dy:number, dz:number)
    通过指定的位移量移动到目标位置。
  • getOffset():number
    获取到当前目标位置的距离。
  • getVelocity():number
    获取目标的当前速度。(单位:m/s)
  • getMaxVelocity():number
    获取到目标的最大速度。(单位:m/s)
  • getAcceleration():number
    获取到当前设置的加速度。
  • setAcceleration(value:number):number
    尝试把加速设置到指定值并返回新的加速度的值。