👜 容器對象 API
在腳本引擎中,使用「容器對象」來操作擁有格子、可以儲存和放置物品的容器的相關信息。
此處的 容器 是一種寬泛的概念,除了箱子、桶這些傳統的容器之外,如玩家物品欄、羊駝攜帶的箱子等這些也統統可以作為「容器」處理,獲取並使用容器對應的API
獲取一個容器對象
從事件或API獲取
通過註冊事件監聽函數,或者調用某些返回容器對象的函數,來獲取到BDS給出的容器對象
詳見 事件監聽文檔 - EventAPI
通過實體獲取
通過玩家對象的各個成員函數,來獲取一個玩家物品欄、盔甲欄、末影箱對應的容器對象
詳見 玩家對象 API
通過方塊獲取
對於可以容納物品的方塊,通過方塊對象的成員函數,來他所對應的對應的容器對象
詳見 方塊對象 API
注意:不要長期保存一個容器對象
當容器對象對應的實體 / 方塊被銷燬時,對應的容器對象將同時釋放。因此,如果有長期操作某個容器的需要,請通過上述途徑獲取實時的容器對象
容器信息對象 - 屬性
每一個容器信息對象都包含一些固定的對象屬性。對於某個特定的容器對象ct,有以下這些屬性
| 屬性 | 含義 | 類型 |
|---|---|---|
| ct.size | 容器擁有的格子總數 | Integer |
| ct.type | 容器的類型名 | String |
容器對象 - 函數
每一個容器對象都包含一些可以執行的成員函數(成員方法)。對於某個特定的容器對象ct,可以通過以下這些函數對這個容器進行一些操作
注意!在修改完玩家物品欄對應的物品之後,不要忘記使用玩家對象的成員函數
pl.refreshItems,刷新客戶端顯示的玩家物品欄
放入物品對象到容器中
ct.addItem(item[, amount])
-
參數:
-
item :
Item
待增加的物品對象 -
amount:
Integer(可選)欲添加物品數量,若提供此參數,item對象本身的count屬性將被忽略。 - 返回值:是否成功增加 - 返回值類型:
Boolean
放入物品對象到容器的第一個空格子
ct.addItemToFirstEmptySlot(item)
- 參數:
- item :
Item
待增加的物品對象 - 返回值:是否成功增加
- 返回值類型:
Boolean
和上述函數不同,此函數將不會堆疊至容器內現有的物品堆中
檢查容器中是否(有空間)可以放入此物品
ct.hasRoomFor(item)
- 參數:
- item :
Item
待放入的物品對象 - 返回值:是否可以放入
- 返回值類型:
Boolean
減少容器中的某個物品對象
ct.removeItem(index,count)
- 參數:
- index :
Integer
減少的物品對象所在的格子序號 - count :
Integer
減少的數量。如果大於等於此格子物品堆疊的數量,則物品堆將被整個清除 - 返回值:是否成功減少
- 返回值類型:
Boolean
獲取容器某個格子的物品對象
ct.getItem(index)
- 參數:
- index :
Integer
待獲取的格子序號 - 返回值:格子位置的物品對象
- 返回值類型:
Item
此處獲取的物品對象為引用。也就是說,修改此處返回的物品對象,或使用其API,就相當於直接操作容器中對應的物品
設置容器某個格子的物品對象
ct.setItem(index,item)
- 參數:
- index :
Integer
待設置的格子序號 - item :
Item
待設置的物品對象 - 返回值:是否設置成功
- 返回值類型:
Boolean
獲取容器所有格子的物品對象列表
ct.getAllItems()
- 返回值:容器中所有的物品對象
- 返回值類型:
Array<Item,Item,...>
此處獲取的物品對象均為引用。也就是說,修改此處返回的物品對象,或使用其API,就相當於直接操作容器中對應的物品
清空容器
ct.removeAllItems()
- 返回值:是否成功清空
- 返回值類型:
Boolean
判斷容器是否為空
ct.isEmpty()
- 返回值:當前容器是否為空
- 返回值類型:
Boolean