Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/事件/玩家.md
2025-03-17 13:24:39 +08:00

34 KiB
Raw Blame History

sidebarDepth
sidebarDepth
1

玩家

索引

事件
描述
AddExpEvent 服务端 触发时机:当玩家增加经验时触发该事件。
AddLevelEvent 服务端 触发时机:当玩家升级时触发该事件。
ChangeLevelUpCostServerEvent 服务端 触发时机:获取玩家下一个等级升级经验时,用于重载玩家的升级经验,每个等级在重置之前都只会触发一次
DimensionChangeClientEvent 客户端 玩家维度改变时客户端抛出
DimensionChangeFinishClientEvent 客户端 玩家维度改变完成后客户端抛出
DimensionChangeFinishServerEvent 服务端 玩家维度改变完成后服务端抛出
DimensionChangeServerEvent 服务端 玩家维度改变时服务端抛出
ExtinguishFireClientEvent 客户端 玩家扑灭火焰时触发。下雨,倒水等方式熄灭火焰不会触发。
ExtinguishFireServerEvent 服务端 玩家扑灭火焰时触发。下雨,倒水等方式熄灭火焰不会触发。
GameTypeChangedClientEvent 客户端 个人游戏模式发生变化时客户端触发。
GameTypeChangedServerEvent 服务端 个人游戏模式发生变化时服务端触发。
OnPlayerHitBlockClientEvent 客户端 触发时机通过OpenPlayerHitBlockDetection打开方块碰撞检测后当玩家碰撞到方块时触发该事件。玩家着地时会触发OnGroundClientEvent而不是该事件。客户端和服务端分别作碰撞检测可能两个事件返回的结果略有差异。
OnPlayerHitBlockServerEvent 服务端 触发时机通过OpenPlayerHitBlockDetection打开方块碰撞检测后当玩家碰撞到方块时触发该事件。监听玩家着地请使用客户端的OnGroundClientEvent。客户端和服务端分别作碰撞检测可能两个事件返回的略有差异。
PerspChangeClientEvent 客户端 视角切换时会触发的事件
PlayerAttackEntityEvent 服务端 触发时机:当玩家攻击时触发该事件。
PlayerCheatSpinAttackServerEvent Apollo 触发时机:玩家开始/结束快速旋转攻击并且不符合发送快速旋转攻击条件时触发(装备激流附魔的三叉戟、在水中或雨中,且未骑乘)
PlayerDieEvent 服务端 触发时机:当玩家死亡时触发该事件。
PlayerDoInteractServerEvent 服务端 玩家与有minecraft:interact组件的生物交互时触发该事件例如玩家手持空桶对牛挤奶、玩家手持打火石点燃苦力怕
PlayerEatFoodServerEvent 服务端 触发时机:玩家吃下食物时触发
PlayerHurtEvent 服务端 触发时机:当玩家受伤害前触发该事件。
PlayerInteractServerEvent 服务端 触发时机:玩家可以与实体交互时。如果是鼠标控制模式,则当准心对着实体时触发。如果是触屏模式,则触发时机与屏幕下方的交互按钮显示的时机相同。玩家真正与实体发生交互的事件见PlayerDoInteractServerEvent
PlayerRespawnEvent 服务端 触发时机:玩家复活时触发该事件。
PlayerRespawnFinishServerEvent 服务端 触发时机:玩家复活完毕时触发
PlayerSleepServerEvent 服务端 玩家使用床睡觉成功
PlayerSpinAttackServerEvent Apollo 触发时机:玩家开始/结束快速旋转攻击时触发
PlayerStopSleepServerEvent 服务端 玩家停止睡觉
PlayerTeleportEvent 服务端 触发时机当玩家传送时触发该事件玩家使用末影珍珠或tp指令时。
PlayerTrySleepServerEvent 服务端 玩家尝试使用床睡觉
ServerPlayerGetExperienceOrbEvent 服务端 触发时机:玩家获取经验球时触发的事件
StoreBuySuccServerEvent 服务端 触发时机:玩家游戏内购买商品时服务端抛出的事件

玩家

AddExpEvent

服务端

  • 描述

    触发时机:当玩家增加经验时触发该事件。

  • 参数

    参数名
    数据类型
    说明
    id str 玩家id
    addExp int 增加的经验值
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

AddLevelEvent

服务端

  • 描述

    触发时机:当玩家升级时触发该事件。

  • 参数

    参数名
    数据类型
    说明
    id str 玩家id
    addLevel int 增加的等级值
    newLevel int 新的等级
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ChangeLevelUpCostServerEvent

服务端

  • 描述

    触发时机:获取玩家下一个等级升级经验时,用于重载玩家的升级经验,每个等级在重置之前都只会触发一次

  • 参数

    参数名
    数据类型
    说明
    level int 玩家当前等级
    levelUpCostExp int 当前等级升级到下个等级需要的经验值当设置升级经验小于1时会被强制调整到1
    changed bool 设置为True重载玩家升级经验才会生效
  • 返回值

相关接口

ClearDefinedLevelUpCost

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

    接口用于重置升级经验。使用ChangeLevelUpCostServerEvent事件设置升级经验后升级经验无法调整。需要调整升级经验时可使用该接口。使用步骤如下1、使用ClearDefineLevelUpconst2、在升级抛出ChangeLevelUpCostServerEvent事件后重新设置经验。

  • 参数

    参数名
    数据类型
    说明
    level int 指定清理的等级加入传入的数值小于0则清理所有等级的升级经验值缓存
  • 返回值

    数据类型
    说明
    bool 是否清理成功。
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
suc = comp.ClearDefinedLevelUpCost(1)

DimensionChangeClientEvent

客户端

  • 描述

    玩家维度改变时客户端抛出

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家实体id
    fromDimensionId int 维度改变前的维度
    toDimensionId int 维度改变后的维度
    fromX float 改变前的位置x
    fromY float 改变前的位置Y
    fromZ float 改变前的位置Z
    toX float 改变后的位置x
    toY float 改变后的位置Y
    toZ float 改变后的位置Z
  • 返回值

  • 备注

    • 当通过传送门从末地回到主世界时toY值为32767其他情况一般会比设置值高1.62

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

DimensionChangeFinishClientEvent

客户端

  • 描述

    玩家维度改变完成后客户端抛出

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家实体id
    fromDimensionId int 维度改变前的维度
    toDimensionId int 维度改变后的维度
    toPos tuple(float,float,float) 改变后的位置x,y,z,其中y值为脚底加上角色的身高值
  • 返回值

  • 备注

    • 当通过传送门从末地回到主世界时toPos的y值为32767其他情况一般会比设置值高1.62

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

DimensionChangeFinishServerEvent

服务端

  • 描述

    玩家维度改变完成后服务端抛出

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家实体id
    fromDimensionId int 维度改变前的维度
    toDimensionId int 维度改变后的维度
    toPos tuple(float,float,float) 改变后的位置x,y,z,其中y值为脚底加上角色的身高值
  • 返回值

  • 备注

    • 当通过传送门从末地回到主世界时toPos的y值为32767其他情况一般会比设置值高1.62

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

DimensionChangeServerEvent

服务端

  • 描述

    玩家维度改变时服务端抛出

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家实体id
    fromDimensionId int 维度改变前的维度
    toDimensionId int 维度改变后的维度
    fromX float 改变前的位置x
    fromY float 改变前的位置Y
    fromZ float 改变前的位置Z
    toX float 改变后的位置x
    toY float 改变后的位置Y
    toZ float 改变后的位置Z
  • 返回值

  • 备注

    • 当通过传送门从末地回到主世界时toY值为32767其他情况一般会比设置值高1.62

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ExtinguishFireClientEvent

客户端

  • 描述

    玩家扑灭火焰时触发。下雨,倒水等方式熄灭火焰不会触发。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(float,float,float) 火焰方块的坐标
    playerId str 玩家id
    cancel bool 修改为True时可阻止玩家扑灭火焰。需要与ExtinguishFireServerEvent一起修改。
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ExtinguishFireServerEvent

服务端

  • 描述

    玩家扑灭火焰时触发。下雨,倒水等方式熄灭火焰不会触发。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(float,float,float) 火焰方块的坐标
    playerId str 玩家id
    cancel bool 修改为True时可阻止玩家扑灭火焰。需要与ExtinguishFireClientEvent一起修改。
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

GameTypeChangedClientEvent

客户端

  • 描述

    个人游戏模式发生变化时客户端触发。

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家Id
    oldGameType int 切换前的游戏模式
    newGameType int 切换后的游戏模式
  • 返回值

  • 备注

    • 游戏模式GetMinecraftEnum().GameType.*:SurvivalCreativeAdventure分别为0~2 默认游戏模式发生变化时最后反映在个人游戏模式之上。

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

GameTypeChangedServerEvent

服务端

  • 描述

    个人游戏模式发生变化时服务端触发。

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家IdSetDefaultGameType接口改变游戏模式时该参数为空字符串
    oldGameType int 切换前的游戏模式
    newGameType int 切换后的游戏模式
  • 返回值

  • 备注

    • 游戏模式GetMinecraftEnum().GameType.*:SurvivalCreativeAdventure分别为0~2 默认游戏模式发生变化时最后反映在个人游戏模式之上。

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

OnPlayerHitBlockClientEvent

客户端

  • 描述

    触发时机通过OpenPlayerHitBlockDetection打开方块碰撞检测后当玩家碰撞到方块时触发该事件。玩家着地时会触发OnGroundClientEvent而不是该事件。客户端和服务端分别作碰撞检测可能两个事件返回的结果略有差异。

  • 参数

    参数名
    数据类型
    说明
    playerId str 碰撞到方块的玩家Id
    posX int 碰撞方块x坐标
    posY int 碰撞方块y坐标
    posZ int 碰撞方块z坐标
    blockId str 碰撞方块的identifier
    auxValue int 碰撞方块的附加值
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

相关接口

OpenPlayerHitBlockDetection

method in mod.client.component.playerCompClient.PlayerCompClient

  • 描述

    开启碰撞方块的检测开启后碰撞时会触发OnPlayerHitBlockClientEvent事件

  • 参数

    参数名
    数据类型
    说明
    precision float 碰撞检测精度,参数需要在区间[0, 1)
  • 返回值

    数据类型
    说明
    bool 是否设置成功
  • 备注

    • 注:该碰撞检测会屏蔽草、空气、火、高草四种方块
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.OpenPlayerHitBlockDetection(0.0001)

ClosePlayerHitBlockDetection

method in mod.client.component.playerCompClient.PlayerCompClient

  • 描述

    关闭碰撞方块的检测关闭后将不会触发OnPlayerHitBlockClientEvent事件

  • 参数

  • 返回值

    数据类型
    说明
    bool 是否设置成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.ClosePlayerHitBlockDetection()

OnPlayerHitBlockServerEvent

服务端

  • 描述

    触发时机通过OpenPlayerHitBlockDetection打开方块碰撞检测后当玩家碰撞到方块时触发该事件。监听玩家着地请使用客户端的OnGroundClientEvent。客户端和服务端分别作碰撞检测可能两个事件返回的略有差异。

  • 参数

    参数名
    数据类型
    说明
    playerId str 碰撞到方块的玩家Id
    posX int 碰撞方块x坐标
    posY int 碰撞方块y坐标
    posZ int 碰撞方块z坐标
    blockId str 碰撞方块的identifier
    auxValue int 碰撞方块的附加值
    dimensionId int 维度id
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

相关接口

OpenPlayerHitBlockDetection

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

    开启碰撞方块的检测开启后碰撞时会触发OnPlayerHitBlockServerEvent事件

  • 参数

    参数名
    数据类型
    说明
    precision float 碰撞检测精度,参数需要在区间[0, 1)
  • 返回值

    数据类型
    说明
    bool 是否设置成功
  • 备注

    • 注:该碰撞检测会屏蔽草、空气、火、高草四种方块
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.OpenPlayerHitBlockDetection(0.0001)

ClosePlayerHitBlockDetection

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

    关闭碰撞方块的检测关闭后将不会触发OnPlayerHitBlockServerEvent事件

  • 参数

  • 返回值

    数据类型
    说明
    bool 是否设置成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.ClosePlayerHitBlockDetection()

PerspChangeClientEvent

客户端

  • 描述

    视角切换时会触发的事件

  • 参数

    参数名
    数据类型
    说明
    from int 切换前的视角
    to int 切换后的视角
  • 返回值

  • 备注

    • 视角数字代表含义 0: 第一人称 1: 第三人称背面 2: 第三人称正面

PlayerAttackEntityEvent

服务端

  • 描述

    触发时机:当玩家攻击时触发该事件。

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家id
    victimId str 受击者id
    damage int 伤害值引擎传过来的值是0 允许脚本层修改为其他数
    isValid int 脚本是否设置伤害值1表示是0 表示否
    cancel bool 是否取消该次攻击,默认不取消
    isKnockBack bool 是否支持击退效果,默认支持,当不支持时将屏蔽武器击退附魔效果
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerCheatSpinAttackServerEvent

仅Apollo可用

  • 描述

    触发时机:玩家开始/结束快速旋转攻击并且不符合发送快速旋转攻击条件时触发(装备激流附魔的三叉戟、在水中或雨中,且未骑乘)

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家的entityId
    isStart bool True时代表开始快速旋转攻击False时代表结束快速旋转攻击
  • 返回值

  • 备注

    • 假如没有自定义类似三叉戟/激流附魔的物品,那么触发此事件说明此有很大可能此玩家使用了【杀戮光环】外挂

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerDieEvent

服务端

  • 描述

    触发时机:当玩家死亡时触发该事件。

  • 参数

    参数名
    数据类型
    说明
    id str 玩家id
    attacker str 伤害来源id
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerDoInteractServerEvent

服务端

  • 描述

    玩家与有minecraft:interact组件的生物交互时触发该事件例如玩家手持空桶对牛挤奶、玩家手持打火石点燃苦力怕

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家id
    itemDict dict 交互时使用物品的物品信息字典
    interactEntityId str 交互的生物entityId
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerEatFoodServerEvent

服务端

  • 描述

    触发时机:玩家吃下食物时触发

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家Id
    itemDict dict 食物物品的物品信息字典
    hunger int 食物增加的饥饿值,可修改
    nutrition float 食物的营养价值,回复饱和度 = 食物增加的饥饿值 * 食物的营养价值 * 2饱和度最大不超过当前饥饿值可修改
  • 返回值

  • 备注

    • 吃蛋糕以及喝牛奶不触发该事件

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerHurtEvent

服务端

  • 描述

    触发时机:当玩家受伤害前触发该事件。

  • 参数

    参数名
    数据类型
    说明
    id str 受击玩家id
    attacker str 伤害来源实体id若没有实体攻击例如高空坠落id为-1
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerInteractServerEvent

服务端

  • 描述

    触发时机:玩家可以与实体交互时。如果是鼠标控制模式,则当准心对着实体时触发。如果是触屏模式,则触发时机与屏幕下方的交互按钮显示的时机相同。玩家真正与实体发生交互的事件见PlayerDoInteractServerEvent

  • 参数

    参数名
    数据类型
    说明
    cancel bool 是否取消触发默认为False若设为True可阻止触发后续的实体交互事件
    playerId str 主动与实体互动的玩家的唯一ID
    itemDict dict 当前玩家手持物品的物品信息字典
    victimId str 被动的实体的唯一ID
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerRespawnEvent

服务端

  • 描述

    触发时机:玩家复活时触发该事件。

  • 参数

    参数名
    数据类型
    说明
    id str 玩家id
  • 返回值

  • 备注

    • 该事件为玩家点击重生按钮时触发,但是触发时玩家可能尚未完成复活,此时请勿对玩家进行切维度或设置生命值等操作 一般情况下推荐使用PlayerRespawnFinishServerEvent

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerRespawnFinishServerEvent

服务端

  • 描述

    触发时机:玩家复活完毕时触发

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家id
  • 返回值

  • 备注

    • 该事件触发时玩家已重生完毕,可以安全使用切维度等操作
    • 通过末地传送门回到主世界时也算重生,同样也会触发该事件

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerSleepServerEvent

服务端

  • 描述

    玩家使用床睡觉成功

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家id
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerSpinAttackServerEvent

仅Apollo可用

  • 描述

    触发时机:玩家开始/结束快速旋转攻击时触发

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家的entityId
    isInWaterOrRain bool 是否在水中或雨中
    isRiding bool 是否骑乘状态
    isStart bool True时代表开始快速旋转攻击False时代表结束快速旋转攻击
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerStopSleepServerEvent

服务端

  • 描述

    玩家停止睡觉

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家id
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerTeleportEvent

服务端

  • 描述

    触发时机当玩家传送时触发该事件玩家使用末影珍珠或tp指令时。

  • 参数

    参数名
    数据类型
    说明
    id str 玩家id
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

PlayerTrySleepServerEvent

服务端

  • 描述

    玩家尝试使用床睡觉

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家id
    cancel bool 是否取消(开发者传入)
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

ServerPlayerGetExperienceOrbEvent

服务端

  • 描述

    触发时机:玩家获取经验球时触发的事件

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家id
    experienceValue int 经验球经验值
    cancel bool 是否取消(开发者传入)
  • 返回值

  • 备注

    • cancel值设为True时捡起的经验球不会增加经验值但是经验球一样会消失。

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

StoreBuySuccServerEvent

服务端

  • 描述

    触发时机:玩家游戏内购买商品时服务端抛出的事件

  • 参数

    参数名
    数据类型
    说明
    playerId str 购买商品的玩家实体id
  • 返回值

  • 示例

import mod.server.extraServerApi as serverApi
self.ListenForEvent(serverApi.GetEngineNamespace(),serverApi.GetEngineSystemName(),
    "StoreBuySuccServerEvent",
    self, self.OnStoreBuySucc)
def OnStoreBuySucc(self, args):
    entityId = args['playerId']
    print 'Ship Item.EntityId:', playerId

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件