组件:数据库 ================= 此组件由[[item:database_upgrade:zh|数据库升级]]提供。 数据库组件主要用于处理“完整的”物品堆,包括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` 将此数据库中存储的数据复制到指定地址对应的数据库。 \\ 使用例: ```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 ``` 目录 ---- {{page>component:contents:zh&noheader&noeditbutton&nouser&nofooter}}