组件:数据库

此组件由数据库升级提供。

数据库组件主要用于处理“完整的”物品堆,包括NBT标签,这些标签(默认情况下)对Lua脚本不可用(以避免利用漏洞/破坏其他mod的游戏玩法)。将物品堆放入数据库组件,然后指定数据库组件地址及其槽位号,就可以给一些组件提供物品堆数据。例如,AE2的输出总线驱动程序就利用了这个功能。

组件名:database

回调函数:

  • get(slot:number):table
    获取储存于指定槽位的物品堆的数据,以表的形式展示。

  • computeHash(slot:number):string
    计算指定槽位中物品堆的哈希值。相同物品堆的结果保证相同,可用以在网络中比较物品堆(通过比较哈希值)。

  • indexOf(hash:string):number
    获取具有指定哈希值的物品堆的槽位号。若未找到则返回一个负数。

  • clear(slot:number):boolean
    清空指定槽位。若槽位中有内容以供清除则返回true

  • copy(fromSlot:number, toSlot:number[, address:string]):boolean
    将一个条目复制到另一个槽位,可选择是否为复制到另一个数据库。若有内容成功覆写则返回true

  • clone(address:string):number
    将此数据库中存储的数据复制到指定地址对应的数据库。

使用例:

snippet.lua
local component = require("component")
local sides = require("sides")
 
local db = component.database --首选数据库组件
local invcontrol = component.inventory_controller --首选物品栏控制器
 
--定义槽位序号
dbSlot = 1
invSlot = 1
 
--将外部物品容器中的物品与数据库第一个槽位中的物品进行对比
if db.get(dbSlot).label == invcontrol.getStackInSlot(sides.north, invSlot).label then
	--物品匹配,进行对应操作。
else
	--物品不匹配,什么都不做,或者进行其他操作
end

目录