跳到正文
本頁目錄

🏃‍♂️ 玩家相關事件

"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