Differences

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

Link to this comparison view

Both sides previous revision Previous revision
component:database:zh [2023/10/26 03:14]
hfsr [Component: Database]
component:database:zh [2023/12/10 15:46] (current)
hfsr [组件:数据库]
Line 1: Line 1:
 组件:数据库 组件:数据库
 ================= =================
-此组件由[[item:​database_upgrade:​zh|数据库升级]]提供。 +此组件由[[item:​database_upgrade:​zh|数据库升级]]提供。 ​  
- +   
-组件名:`database`。 +数据库组件主要用于处理“完整的物品堆,包括NBT标签,这些标签(默认情况下)对Lua脚本不可用(以避免利用漏洞/​破坏其他mod的游戏玩法)。将物品堆放入数据库组件,然后指定数据库组件地址及其槽位号,就可以给一些组件提供物品堆数据。例如,AE2的输出总线驱动程序就利用了这个功能。 ​  
- +   
-数据库组件主要用于处理“完整的物品堆,包括NBT标签,这些标签(默认情况下)对Lua脚本不可用(以避免利用漏洞/​破坏其他mod的游戏玩法)。将物品堆放入数据库组件,然后指定数据库组件地址,就可以给一些组件指定物品堆数据。例如,AE2的输出总线驱动程序就利用了这个功能。 +组件名:`database`。  ​ 
- +   
-回调函数:+回调函数: ​
  
 - `get(slot:​number):​table`  ​ - `get(slot:​number):​table`  ​
-  获取储存于指定槽位的物品堆的数据,以表的形式展示。+  获取储存于指定槽位的物品堆的数据,以表的形式展示。 ​  
 +\\
 - `computeHash(slot:​number):​string`  ​ - `computeHash(slot:​number):​string`  ​
-  计算指定槽位中物品堆的哈希值。保证相同物品堆的结果相同,用以在网络中比较物品堆(通过比较哈希值)。+  计算指定槽位中物品堆的哈希值。相同物品堆的结果保证相同,用以在网络中比较物品堆(通过比较哈希值)。 ​  
 +\\
 - `indexOf(hash:​string):​number`  ​ - `indexOf(hash:​string):​number`  ​
-  获取具有指定哈希值的物品堆的槽位号。若未找到则返回一个负数。+  获取具有指定哈希值的物品堆的槽位号。若未找到则返回一个负数。 ​  
 +\\
 - `clear(slot:​number):​boolean`  ​ - `clear(slot:​number):​boolean`  ​
-  清空指定槽位。若槽位中有内容以供清除则返回`true`。+  清空指定槽位。若槽位中有内容以供清除则返回`true`。 ​  
 +\\
 - `copy(fromSlot:​number,​ toSlot:​number[,​ address:​string]):​boolean`  ​ - `copy(fromSlot:​number,​ toSlot:​number[,​ address:​string]):​boolean`  ​
-  将一个条目复制到另一个槽位,可选择是否为复制到另一个数据库的槽位。若有内容成功覆写则返回`true`。+  将一个条目复制到另一个槽位,可选择是否为复制到另一个数据库。若有内容成功覆写则返回`true`。 ​  
 +\\
 - `clone(address:​string):​number`  ​ - `clone(address:​string):​number`  ​
-  将此数据库中存储的数据复制到指定地址对应的数据库。 +  将此数据库中存储的数据复制到指定地址对应的数据库。 ​  
 +\\
  
 使用例: 使用例:
Line 36: Line 41:
 invSlot = 1 invSlot = 1
  
---将远程物品中的物品与数据库第一个槽位中的物品进行对比+--将外部物品容器中的物品与数据库第一个槽位中的物品进行对比
 if db.get(dbSlot).label == invcontrol.getStackInSlot(sides.north,​ invSlot).label then if db.get(dbSlot).label == invcontrol.getStackInSlot(sides.north,​ invSlot).label then
  --物品匹配,进行对应操作。  --物品匹配,进行对应操作。