📦 方塊相關事件
"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