跳到正文
本頁目錄

📦 方塊相關事件

"onBlockInteracted" - 方塊接受玩家互動

  • 監聽函數原型 function(player,block)

  • 參數:

  • player : Player
    與方塊互動的玩家對象

  • block : Block
    被互動的方塊對象

  • 攔截事件:函數返回false

只有可以被互動的方塊才會觸發此事件,如木桶、信標、製圖臺、磨石等
攔截事件對箱子、潛影盒、工作臺無效

"onBlockChanged" - 方塊改變

  • 監聽函數原型 function(beforeBlock,afterBlock)

  • 參數:

  • beforeBlock : Block
    改變前的方塊對象

  • afterBlock : Block
    改變後的方塊對象

  • 攔截事件:函數返回false

    攔截此事件需要注意以下問題 1.部分事件導致的方塊變化無法攔截, 比如玩家挖掘,放置 2.對於方塊與方塊之間關係導致的變化,部分不可攔截,比如爆炸摧毀周圍方塊 (實際上,客戶端看起來那邊還是存在方塊的,但是已經是假方塊了) 3.但是對於火把這種需要附著在其他方塊上的方塊,如果因為附著方塊被摧毀,那麼火把不會隨之被破壞 4.具體某些特性可以自行測試

"onBlockExplode" - 發生由方塊引起的爆炸

  • 監聽函數原型 function(source,pos,radius,maxResistance,isDestroy,isFire)

  • 參數:

  • source : Block
    爆炸來源的方塊對象

  • pos : FloatPos
    爆炸發生的座標

  • radius : Float
    爆炸波及的半徑

  • maxResistance : Float
    爆炸可破壞的方塊爆炸抗性上限

  • isDestroy : Boolean
    爆炸是否破壞方塊

  • isFire : Boolean
    爆炸是否產生火焰

  • 攔截事件:函數返回false

"onRespawnAnchorExplode" - 發生由重生錨引起的爆炸

  • 監聽函數原型 function(pos,player)
  • 參數:
  • pos : IntPos
    爆炸發生的重生錨的座標
  • player : Player
    試圖使用重生錨的玩家
  • 攔截事件:函數返回false

"onPortalTrySpawn" - 下界傳送門嘗試生成

  • 監聽函數原型 function(pos)
  • 參數:
  • pos : IntPos
    嘗試生成傳送門的位置座標
  • 攔截事件:函數返回false

"onBlockExploded" - 方塊被爆炸破壞

  • 監聽函數原型 function(block,source)
  • 參數:
  • block : Block
    被爆炸破壞的方塊對象
  • source : Entity
    爆炸來源的實體對象
  • 攔截事件:不可以攔截

"onFireSpread" - 火焰蔓延

  • 監聽函數原型 function(pos)
  • 參數:
  • pos : IntPos
    火焰蔓延到的方塊座標
  • 攔截事件:函數返回false

"onCmdBlockExecute" - 命令方塊執行命令

  • 監聽函數原型 function(cmd,pos,isMinecart)

  • 參數:

  • cmd : String
    執行的命令

  • pos : IntPos
    執行命令的命令方塊座標

  • isMinecart : Boolean
    命令是否由命令方塊礦車執行

  • 攔截事件:函數返回false

"onContainerChange" - 容器內容改變

  • 監聽函數原型 function(player,container,slotNum,oldItem,newItem)
  • 參數:
  • player : Player
    操作容器的玩家對象
  • container : Block
    被操作的容器的方塊對象
  • slotNum : Integer
    操作容器的格子位置(第slotNum個格子)
  • oldItem : Item
    格子中的原來舊物品對象
  • newItem : Item
    格子中新的物品對象
  • 攔截事件:不可以攔截

此處的 容器 為寬泛容器的概念,包括箱子、桶等多種可以儲存物品的容器都可以觸發此事件

對回調參數的解釋:
舊物品對象與新物品對象有多種不同的組合情況,表示格子內不同的變化情況

  • 放入物品:舊物品對象為空,新物品對象不為空
  • 取出物品:舊物品對象不為空,新物品對象不為空
  • 物品增加堆疊:舊物品對象的type == 新物品對象的type,且舊物品對象的count < 新物品對象的count
  • 物品減少堆疊:舊物品對象的type == 新物品對象的type,且舊物品對象的count > 新物品對象的count
  • 替換物品:舊物品對象的type 不等於 新物品對象的type,且兩物品對象均不為空

"onDispenseItem" - 發射器/投擲器發射普通物品

  • 監聽函數原型 function(pos,item,slot,face,container)
  • 參數:
  • pos : FloatPos 發射物品出現的位置
  • item : Item 被髮射的物品對象
  • slot : Integer 容器中被取出物品的槽位索引
  • face : Integer 發射時方塊朝向數值
  • container : Container 發射器/投擲器的容器對象
  • 攔截事件:函數返回false

僅在發射器/投擲器發射普通物品(非彈射物)時觸發。

"onProjectileHitBlock" - 方塊被彈射物擊中

  • 監聽函數原型 function(block,source)
  • 參數:
  • block : Block
    被擊中的方塊對象
  • source : Entity
    發射的彈射物實體(如箭)
  • 攔截事件:不可以攔截

"onRedStoneUpdate" - 發生紅石更新

  • 監聽函數原型 function(block,level,isActive)
  • 參數:
  • block : Block
    發生紅石更新的方塊對象
  • level : Integer
    更新的紅石能量等級(0-15)
  • isActive : Boolean
    表示紅石更新是激活還是熄滅
    • 為true表示紅石變為激活狀態
    • 為false表示紅石變為熄滅狀態
  • 攔截事件:函數返回false

目前可以監測紅石更新的方塊種類有:紅石線、紅石火把、紅石中繼器、紅石比較器

"onHopperSearchItem" - 漏斗(漏斗礦車)檢測可否吸取物品

  • 監聽函數原型 function(pos,isMinecart,item)
  • 參數:
  • pos : FloatPos
    漏斗(漏斗礦車)所在的位置
  • isMinecart : Boolean
    是否為漏斗礦車
  • item : Item
    檢測到的物品對象
  • 攔截事件:函數返回false

注:在放置漏斗之後,會在服務端反覆不斷觸發這個事件
當你攔截事件之後,漏斗就會無法吸取這個物品

"onHopperPushOut" - 漏斗輸出物品

  • 監聽函數原型 function(pos,isMinecart,item)
  • 參數:
  • pos : FloatPos
    漏斗(漏斗礦車)所在的位置
  • isMinecart : Boolean
    是否為漏斗礦車
  • item : Item
    準備輸出的物品對象
  • 攔截事件:函數返回false

"onPistonTryPush" - 活塞嘗試推動

  • 監聽函數原型 function(pistonPos,block)
  • 參數:
  • pistonPos : IntPos
    正在工作的活塞座標
  • block : Block
    嘗試被推動的方塊對象
  • 攔截事件:函數返回false

若活塞被方塊阻擋無法推動,此事件將會不停地循環觸發

"onPistonPush" - 活塞推動

  • 監聽函數原型 function(pistonPos,block)
  • 參數:
  • pistonPos : IntPos
    正在工作的活塞座標
  • block : Block
    被推動的方塊對象
  • 攔截事件:無法攔截

注:此事件與上事件不同,上一個Try事件在活塞推動前嘗試時觸發,此事件在推動完畢後觸發

"onFarmLandDecay" - 耕地退化

  • 監聽函數原型 function(pos,entity)
  • 參數:
  • pos : IntPos
    退化的耕地的座標
  • entity : Entity
    造成耕地退化的實體
  • 攔截事件:函數返回false

"onUseFrameBlock" - 操作物品展示框

  • 監聽函數原型 function(player,block)
  • 參數:
  • player : Player
    操作物品展示框的玩家對象
  • block : Block
    被操作的物品展示框方塊對象
  • 攔截事件:函數返回false

注:操作包括放置物品、取下物品、旋轉物品。

"onLiquidFlow" - 液體方塊流動

  • 監聽函數原型 function(from,to)
  • 參數:
  • from : Block
    水源方塊對象
  • to : IntPos
    即將流經的方塊位置
  • 攔截事件:函數返回false