跳到正文
本頁目錄

👜 容器對象 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