🏃♂️ 玩家相關事件
"onPreJoin" - 玩家開始連接服務器
- 監聽函數原型
function(player) - 參數:
- player :
Player
正在連接服務器的玩家對象 - 攔截事件:函數返回
false
注:在這個監聽函數中只能獲取一些玩家的基礎信息,比如名字、IP、XUID等。因為此時玩家尚未完全進服
"onJoin" - 玩家進入遊戲(加載世界完成)
- 監聽函數原型
function(player) - 參數:
- player :
Player
進入遊戲的玩家對象 - 攔截事件:不可以攔截
"onLeft" - 玩家離開遊戲
-
監聽函數原型
function(player) -
參數:
-
player :
Player
離開遊戲的玩家對象 -
攔截事件:不可以攔截
"onRespawn" - 玩家重生
- 監聽函數原型
function(player) - 參數:
- player :
Player
重生的玩家對象 - 攔截事件:不可以攔截
"onPlayerDie" - 玩家死亡
-
監聽函數原型
function(player,source) -
參數:
-
player :
Player
死亡的玩家對象 -
source :
Entity
傷害來源的實體對象(可能為Null) -
攔截事件:不可以攔截
"onPlayerCmd" - 玩家執行命令
-
監聽函數原型
function(player,cmd) -
參數:
-
player :
Player
執行命令的玩家對象 -
cmd :
String
執行的命令 -
攔截事件:函數返回
false
"onChat" - 玩家發送聊天信息
-
監聽函數原型
function(player,msg) -
參數:
-
player :
Player
發送聊天信息的玩家對象 -
msg :
String
發送的聊天消息 -
攔截事件:函數返回
false
"onChangeDim" - 玩家切換維度
- 監聽函數原型
function(player,dimid) - 參數:
- player :
Player
切換維度的玩家對象 - dimid :
Integer
前往維度的維度ID,0為主世界,1為下界,2為末地 - 攔截事件:不可以攔截
提醒:當玩家從末地通過返回傳送門返回主世界時,不會觸發此事件。
"onJump" - 玩家跳躍
-
監聽函數原型
function(player) -
參數:
-
player :
Player
跳躍的玩家對象 -
攔截事件:不可以攔截
"onSneak" - 玩家切換潛行狀態
-
監聽函數原型
function(player,isSneaking) -
參數:
-
player :
Player
切換潛行狀態的玩家對象 -
isSneaking :
Boolean
True表示玩家進入潛行狀態,False表示玩家退出潛行狀態 -
攔截事件:不可以攔截
"onAttackEntity" - 玩家攻擊實體
-
監聽函數原型
function(player,entity) -
參數:
-
player :
Player攻擊實體的玩家對象 -
entity :
Entity被攻擊的實體對象 -
攔截事件:函數返回
false
"onAttackBlock" - 玩家攻擊方塊
-
監聽函數原型
function(player,block,item) -
參數:
-
player :
Player攻擊方塊的玩家對象 -
block :
Block被攻擊的方塊對象 -
item:
Item手持的物品對象
-
攔截事件:函數返回
false
"onUseItem" - 玩家使用物品
- 監聽函數原型
function(player,item) - 參數:
- player :
Player
使用物品的玩家對象 - item :
Item
被使用的物品對象 - 攔截事件:函數返回
false
"onUseItemOn" - 玩家對方塊使用物品(點擊右鍵)
-
監聽函數原型
function(player,item,block,side,pos) -
參數:
-
player :
Player
使用物品的玩家對象 -
item :
Item
被使用的物品對象 -
block :
Block
被點擊到的方塊對象 -
side :
Number
方塊被點擊的面
依次為:0-下1-上2-北3-南4-西5-東 -
pos :
FloatPos
被點擊的浮點位置 -
攔截事件:函數返回
false
注:Win10客戶端玩家右鍵會在服務端連續多次激發這個事件
"onUseBucketPlace" - 玩家使用桶倒出東西
-
監聽函數原型
function(player,item,block,side,pos) -
參數:
-
player :
Player
使用物品的玩家對象 -
item :
Item
被使用的物品對象 -
block :
Block
被點擊到的方塊對象 -
side :
Number
方塊被點擊的面
依次為:0-下1-上2-北3-南4-西5-東 -
pos :
FloatPos
被點擊的浮點位置 -
攔截事件:函數返回
false
注:無論是手機還是Win10玩家,可能會連續多次激發這個事件
"onUseBucketTake" - 玩家使用桶裝進東西
-
監聽函數原型
function(player,item,target,side,pos) -
參數:
-
player :
Player
使用物品的玩家對象 -
item :
Item
被使用的物品對象 -
target :
Block/Entity
被點擊到的方塊對象或者實體對象 -
side :
Number
方塊被點擊的面
依次為:0-下1-上2-北3-南4-西5-東 -
pos :
FloatPos
被點擊的浮點位置 -
攔截事件:函數返回
false
注:無論是手機還是Win10玩家,可能會連續多次激發這個事件
"onTakeItem" - 玩家撿起物品
-
監聽函數原型
function(player,entity,item) -
參數:
-
player :
Player
撿起物品的玩家對象 -
entity:
Entity
即將被撿起的物品的掉落物實體 -
item :
Item
即將被撿起的物品對象 -
攔截事件:函數返回
false
"onDropItem" - 玩家丟出物品
-
監聽函數原型
function(player,item) -
參數:
-
player :
Player
丟出物品的玩家對象 -
item :
Item
被丟出的物品對象 -
攔截事件:函數返回
false
"onEat" - 玩家正在吃食物
-
監聽函數原型
function(player,item) -
參數:
-
player :
Player
正在吃的玩家對象 -
item :
Item
被吃的物品對象 -
攔截事件:函數返回
false
此處的 食物 為寬泛物品的概念,包括常規食物、藥水、牛奶、藥品等多種可以被攝取的物品
"onAte" - 玩家吃下食物
-
監聽函數原型
function(player,item) -
參數:
-
player :
Player
正在吃的玩家對象 -
item :
Item
被吃的物品對象 -
攔截事件:函數返回
false
"onConsumeTotem" - 玩家消耗圖騰
- 監聽函數原型
function(player) - 參數:
- player :
Player
消耗圖騰的玩家對象 - 攔截事件:函數返回
false - 此處攔截後,仍會觸發圖騰的復活效果,但不會消耗圖騰
"onEffectAdded" - 玩家獲得效果
-
監聽函數原型
function(player,effectName,amplifier,duration) -
參數:
-
player :
Player
獲得效果的玩家對象 -
effectName :
String
獲得的效果名稱 minecraft:effect.效果 -
amplifier :
Number
獲得的效果倍率 (效果等級 -1) -
duration :
Number
獲得的效果時長 (單位:tick) -
攔截事件:函數返回
false
"onEffectRemoved" - 玩家移除效果
-
監聽函數原型
function(player,effectName) -
參數:
-
player :
Player
被移除效果的玩家對象 -
effectName :
String
被移除的效果名稱 minecraft:effect.效果 -
攔截事件:函數返回
false
"onEffectUpdated" - 玩家刷新效果
-
監聽函數原型
function(player,effectName,amplifier,duration) -
參數:
-
player :
Player
刷新效果的玩家對象 -
effectName :
String
獲得的效果名稱 minecraft:effect.效果 -
amplifier :
Number
獲得的效果倍率 (效果等級 -1) -
duration :
Number
獲得的效果時長 (單位:tick) -
攔截事件:函數返回
false
"onStartDestroyBlock" - 玩家開始破壞方塊 / 點擊左鍵
-
監聽函數原型
function(player,block) -
參數:
-
player :
Player
正在破壞方塊的玩家對象 -
block :
Block
正在被破壞的方塊對象 -
攔截事件:不可以攔截
"onDestroyBlock" - 玩家破壞方塊完成
-
監聽函數原型
function(player,block) -
參數:
-
player :
Player
破壞方塊的玩家對象 -
block :
Block
被破壞的方塊對象 -
攔截事件:函數返回
false
"onPlaceBlock" - 玩家嘗試放置方塊
-
監聽函數原型
function(player,block,face) -
參數:
-
player :
Player
放置方塊的玩家對象 -
block :
Block
將要放置的方塊對象 -
face :
Integer
被放置的方塊的朝向。 -
攔截事件:函數返回
false
存在問題 當玩家嘗試放置方塊時,該事件將持續被觸發。
"afterPlaceBlock" - 玩家放置方塊
-
監聽函數原型
function(player,block) -
參數:
-
player :
Player
放置方塊的玩家對象 -
block :
Block
被放置的方塊對象 -
攔截事件:不可以攔截
"onOpenContainer" - 玩家打開容器方塊
-
監聽函數原型
function(player,block) -
參數:
-
player :
Player
打開容器方塊的玩家對象 -
block :
Block
被打開的容器方塊對象 -
攔截事件:函數返回
false
此處的 容器 為寬泛容器的概念,包括箱子、桶等多種可以儲存物品的容器都可以觸發此事件
"onCloseContainer" - 玩家關閉容器方塊
-
監聽函數原型
function(player,block) -
參數:
-
player :
Player
關閉容器方塊的玩家對象 -
block :
Block
被關閉的容器方塊對象 -
攔截事件:不可以攔截
"onInventoryChange" - 玩家物品欄變化
- 監聽函數原型
function(player,slotNum,oldItem,newItem) - 參數:
- player :
Player
操作物品欄的玩家對象 - slotNum :
Integer
操作物品欄的格子位置(第slotNum個格子) - oldItem :
Item
格子中的原來舊物品對象 - newItem :
Item
格子中新的物品對象 - 攔截事件:不可以攔截
對回調參數的解釋:
舊物品對象與新物品對象有多種不同的組合情況,表示格子內不同的變化情況
- 放入物品:舊物品對象為空,新物品對象不為空
- 取出物品:舊物品對象不為空,新物品對象為空
- 物品增加堆疊:舊物品對象的
type== 新物品對象的type,且舊物品對象的count< 新物品對象的count - 物品減少堆疊:舊物品對象的
type== 新物品對象的type,且舊物品對象的count> 新物品對象的count - 替換物品:舊物品對象的
type不等於 新物品對象的type,且兩物品對象均不為空
"onChangeSprinting" - 玩家改變疾跑狀態
- 監聽函數原型
function(player,sprinting) - 參數:
- player :
Player
要改變疾跑狀態的玩家對象 - sprinting :
Boolean
要改變成的疾跑狀態 - 攔截事件:不可以攔截
注:可在下一遊戲刻執行player.setSprinting(false)達到攔截效果
"onSetArmor" - 玩家改變盔甲欄
- 監聽函數原型
function(player,slotNum,item) - 參數:
- player :
Player
改變盔甲欄的玩家對象 - slotNum :
Integer
盔甲欄序號,範圍0-3 - item :
Item
盔甲欄中的物品對象 - 攔截事件:函數返回
false - 注:攔截後,進入遊戲時會脫下原先的裝備
"onUseRespawnAnchor" - 玩家使用重生錨
- 監聽函數原型
function(player,pos) - 參數:
- player :
Player
使用重生錨的玩家對象 - pos :
IntPos
被使用的重生錨的位置 - 攔截事件:函數返回
false
"onOpenContainerScreen" - 玩家打開容器類GUI
- 監聽函數原型
function(player) - 參數:
- player :
Player
嘗試打開GUI的玩家對象 - 攔截事件:函數返回
false
注:此事件非常強力,甚至可以攔截打開背包。
"onExperienceAdd" - 玩家獲得經驗
- 監聽函數原型
function(player,exp) - 參數:
- player :
Player
獲得經驗的玩家對象 - exp :
Integer獲得的經驗值 - 攔截事件:函數返回
false
"onPlayerPullFishingHook" - 玩家使用釣魚竿釣起實體
- 監聽函數原型
function(player,entity,item) - 參數:
- player :
Player
使用釣魚竿的玩家對象 - entity :
Entity
釣起的實體(魚鉤拉起任意實體都會觸發該事件,不一定是物品實體) - item :
Item
釣起的物品對象(如果釣到的不是物品則返回null) - 攔截事件:函數返回
false
"onBedEnter" - 玩家上床
- 監聽函數原型
function(player,pos) - 參數:
- player :
Player
上床的玩家對象 - pos :
IntPos
床的位置 - 攔截事件:函數返回
false
"onPlayerInteractEntity" - 玩家交互實體
Warning
此事件僅在0.9.5及以後版本可用
- 監聽函數原型
function(player, entity, pos) - 參數:
- player :
Player
交互實體的玩家對象 - entity :
Entity
被交互的實體對象 - pos :
FloatPos
交互座標 - 攔截事件:函數返回
false