Files
netease-modsdk-wiki/docs/mcdocs/1-ModAPI/事件/实体.md
2025-06-27 23:59:47 +08:00

55 KiB
Raw Blame History

sidebarDepth
sidebarDepth
1

实体

索引

事件
描述
ActorHurtServerEvent 服务端 触发时机:生物(包括玩家)受伤时触发
ActuallyHurtServerEvent 服务端 实体实际受到伤害时触发相比于DamageEvent该伤害为经过护甲及buff计算后实际的扣血量
AddEffectServerEvent 服务端 触发时机:实体获得状态效果时
ApproachEntityClientEvent 客户端 玩家靠近生物时触发
ChangeSwimStateServerEvent 服务端 触发时机:实体开始或者结束游泳时
DamageEvent 服务端 实体受到伤害时触发
EntityChangeDimensionServerEvent 服务端 实体维度改变时服务端抛出
EntityDefinitionsEventServerEvent 服务端 触发时机生物定义json文件中设置的event触发时同时触发。生物行为变更事件
EntityDieLoottableAfterServerEvent 服务端 触发时机:生物死亡掉落物品之后
EntityDieLoottableServerEvent 服务端 触发时机:生物死亡掉落物品时
EntityDroppedItemServerEvent 服务端 触发时机:生物扔出物品时触发
EntityEffectDamageServerEvent 服务端 生物受到状态伤害/回复事件。
EntityLoadScriptEvent 服务端 数据库加载实体自定义数据时触发
EntityModelChangedClientEvent 客户端 触发时机:实体模型切换时触发
EntityMotionStartServerEvent 服务端 实体运动器开始事件。实体(包含玩家)添加运动器后,运动器开始运行时触发
EntityMotionStopServerEvent 服务端 实体运动器停止事件。实体(包含玩家)添加运动器并开始运行后,运动器自动停止时触发
EntityPickupItemServerEvent 服务端 有minecraft:behavior.pickup_items行为的生物拾取物品时触发该事件例如村民拾取面包、猪灵拾取金锭
EntityStartRidingEvent 服务端 当实体骑乘上另一个实体时触发
EntityStopRidingEvent 服务端 触发时机:当实体停止骑乘时
EntityStopRidingEvent 客户端 触发时机:当实体停止骑乘时
EntityTickServerEvent 服务端 实体tick时触发。该事件为20帧每秒。需要使用AddEntityTickEventWhiteList添加触发该事件的实体类型白名单。
HealthChangeBeforeServerEvent 服务端 生物生命值或最大生命值发生变化之前触发
HealthChangeClientEvent 客户端 生物生命值发生变化时触发
HealthChangeServerEvent 服务端 生物生命值发生变化时触发
LeaveEntityClientEvent 客户端 玩家远离生物时触发
MobDieEvent 服务端 实体死亡时触发
MobGriefingBlockServerEvent 服务端 环境生物改变方块时触发触发的时机与mobgriefing游戏规则影响的行为相同
OnFireHurtEvent 服务端 生物受到火焰伤害时触发
OnGroundClientEvent 客户端 实体着地事件。玩家沙子铁砧掉落的物品点燃的TNT掉落地面时触发其余实体着地不触发。
OnGroundServerEvent 服务端 实体着地事件。实体掉落的物品点燃的TNT掉落地面时触发
OnKnockBackServerEvent 服务端 实体被击退时触发
OnMobHitBlockServerEvent 服务端 触发时机通过OpenMobHitBlockDetection打开方块碰撞检测后当生物不包括玩家碰撞到方块时触发该事件。
OnMobHitMobClientEvent 客户端 触发时机通过OpenPlayerHitMobDetection打开生物碰撞检测后当生物间包含玩家碰撞时触发该事件。注客户端和服务端分别作碰撞检测可能两个事件返回的略有差异。
OnMobHitMobServerEvent 服务端 触发时机通过OpenPlayerHitMobDetection打开生物碰撞检测后当生物间包含玩家碰撞时触发该事件。注客户端和服务端分别作碰撞检测可能两个事件返回的略有差异。
ProjectileCritHitEvent 服务端 触发时机当抛射物与头部碰撞时触发该事件。注需调用OpenPlayerCritBox开启玩家爆头后才能触发。
ProjectileDoHitEffectEvent 服务端 触发时机:当抛射物碰撞时触发该事件
RefreshEffectServerEvent 服务端 触发时机实体身上状态效果更新时触发更新条件1、新增状态等级较高更新状态等级及时间2、新增状态等级不变时间较长更新状态持续时间
RemoveEffectServerEvent 服务端 触发时机:实体身上状态效果被移除时
SpawnProjectileServerEvent 服务端 触发时机:抛射物生成时触发
StartRidingClientEvent 客户端 触发时机:一个实体即将骑乘另外一个实体
StartRidingServerEvent 服务端 触发时机:一个实体即将骑乘另外一个实体
WillAddEffectServerEvent 服务端 触发时机:实体即将获得状态效果前
WillTeleportToServerEvent 服务端 实体即将传送或切换维度

实体

ActorHurtServerEvent

服务端

  • 描述

    触发时机:生物(包括玩家)受伤时触发

  • 参数

    参数名
    数据类型
    说明
    entityId str 生物Id
    cause str 伤害来源详见Minecraft枚举值文档的ActorDamageCause
    damage float 伤害值(被伤害吸收后的值),不可修改
    absorbedDamage int 被伤害吸收效果吸收的伤害值
    customTag str 使用Hurt接口传入的自定义伤害类型
  • 返回值

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

ActuallyHurtServerEvent

服务端

  • 描述

    实体实际受到伤害时触发相比于DamageEvent该伤害为经过护甲及buff计算后实际的扣血量

  • 参数

    参数名
    数据类型
    说明
    srcId str 伤害源id
    projectileId str 投射物id
    entityId str 被伤害id
    damage float 伤害值被伤害吸收后的值允许修改设置为0则此次造成的伤害为0若设置数值和原来一样则视为没有修改
    invulnerableTime int 实体受击后剩余的无懈可击帧数在无懈可击时间内damage和damage_f为超过上次伤害的部分
    lastHurt float 实体上次受到的伤害
    cause str 伤害来源详见Minecraft枚举值文档的ActorDamageCause
    customTag str 使用Hurt接口传入的自定义伤害类型
  • 返回值

  • 备注

    • 药水与状态效果造成的伤害不触发可以使用ActorHurtServerEvent
    • 为了游戏运行效率请尽可能避免将火的伤害设置为0因为这样会导致大量触发该事件。
    • 若要修改damage的值请确保修改后的值与原值不同且支持转换为浮点型否则引擎会忽略这次修改。
    • 青蛙、山羊跳跃落地时也会触发此伤害事件但它们的掉落伤害实际会有减免青蛙减少5山羊减少10
    • 在无懈可击时间内只要实体受到高于上次受击的伤害可以连续触发不受SetHurtCD影响如实体连续受到1伤害如果在本事件中修改damage为0.5则引擎会认为每次都有0.5的溢出伤害可以通过invulnerableTime和lastHurt来判断是否取消这次伤害

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

AddEffectServerEvent

服务端

  • 描述

    触发时机:实体获得状态效果时

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    effectName str 实体获得状态效果的名字
    effectDuration int 状态效果的持续时间,单位秒
    effectAmplifier int 状态效果的放大倍数
    damage float 状态造成的伤害值真实扣除生命值的量。只有持续时间为0时有用
  • 返回值

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

ApproachEntityClientEvent

客户端

  • 描述

    玩家靠近生物时触发

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家实体id
    entityId str 靠近的生物实体id
  • 返回值

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

ChangeSwimStateServerEvent

服务端

  • 描述

    触发时机:实体开始或者结束游泳时

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体的唯一ID
    formState bool 事件触发前,实体是否在游泳状态
    toState bool 事件触发后,实体是否在游泳状态
  • 返回值

  • 备注

    • 当实体的状态没有变化时不会触发此事件即formState和toState必定一真一假

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

DamageEvent

服务端

  • 描述

    实体受到伤害时触发

  • 参数

    参数名
    数据类型
    说明
    srcId str 伤害源id
    projectileId str 投射物id
    entityId str 被伤害id
    damage float 伤害值被伤害吸收前的值允许修改设置为0则此次造成的伤害为0
    absorption int 受到伤害时,扣除黄心前,实体拥有的黄心血量(见AttrType枚举的ABSORPTION
    cause str 伤害来源详见Minecraft枚举值文档的ActorDamageCause
    knock bool 是否击退被攻击者允许修改设置该值为False则不产生击退
    ignite bool 是否点燃被伤害者允许修改设置该值为True产生点燃效果
    customTag str 使用Hurt接口传入的自定义伤害类型
  • 返回值

  • 备注

    • damage值会被护甲和absorption等吸收不一定是最终扣血量。通过设置这个伤害值可以取消伤害但不会取消由击退效果或者点燃效果带来的伤害
    • 该事件在实体受伤之前触发由于部分伤害是在tick中处理因此持续触发受伤时如站在火中会每帧触发事件可以使用ActorHurtServerEvent来避免
    • 这里的damage是伤害源具有的攻击伤害值并非实体真实的扣血量如果需要获取真实伤害可以使用ActuallyHurtServerEvent事件。
    • 当目标无法被击退时knock值无效
    • 药水与状态效果造成的伤害不触发可以使用ActorHurtServerEvent
    • 由于点燃的实现原因此处ignite设置为false并不能取消实体的点燃效果如果需要取消点燃效果请通过OnFireHurtEvent事件实现
    • 青蛙、山羊跳跃落地时也会触发此伤害事件但它们的掉落伤害实际会有减免青蛙减少5山羊减少10

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

EntityChangeDimensionServerEvent

服务端

  • 描述

    实体维度改变时服务端抛出

  • 参数

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

  • 备注

    • 实体转移维度时,如果对应维度的对应位置的区块尚未加载,实体会缓存在维度自身的缓冲区中,直到对应区块被加载时才会创建对应的实体,此事件的抛出只代表实体从原维度消失,不代表必定会在对应维度出现
    • 注意玩家维度改变时不触发该事件而是会触发DimensionChangeServerEvent事件

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

EntityDefinitionsEventServerEvent

服务端

  • 描述

    触发时机生物定义json文件中设置的event触发时同时触发。生物行为变更事件

  • 参数

    参数名
    数据类型
    说明
    entityId str 生物id
    eventName str 触发的事件名称
  • 返回值

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

EntityDieLoottableAfterServerEvent

服务端

  • 描述

    触发时机:生物死亡掉落物品之后

  • 参数

    参数名
    数据类型
    说明
    dieEntityId str 死亡实体的entityId
    attacker str 伤害来源的entityId
    itemList list(dict) 掉落物品列表每个元素为一个itemDict格式可参考物品信息字典
    itemEntityIdList list(str) 掉落物品entityId列表
  • 返回值

  • 备注

    • 该事件为生物死亡掉落物品生成后触发可以得到掉落物的id列表如果需要更改掉落物请使用EntityDieLoottableServerEvent
    • 该事件在生物死亡后会触发,无论是否掉落物品,因此掉落物品列表可能存在为空的情况
    • 掉落物不包含玩家或生物携带以及背包内的物品若要获取死亡后由背包扔出的物品请参考EntityDroppedItemServerEvent事件

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

EntityDieLoottableServerEvent

服务端

  • 描述

    触发时机:生物死亡掉落物品时

  • 参数

    参数名
    数据类型
    说明
    dieEntityId str 死亡实体的entityId
    attacker str 伤害来源的entityId
    itemList list(dict) 掉落物品列表每个元素为一个itemDict格式可参考物品信息字典
    dirty bool 默认为False如果需要修改掉落列表需将该值设为True
  • 返回值

  • 备注

    • 只有当dirty为True时才会重新读取item列表并生成对应的掉落物如果不需要修改掉落结果的话请勿随意修改dirty值
    • 该事件在生物死亡后会触发,无论是否掉落物品,因此掉落物品列表可能存在为空的情况
    • 掉落物不包含玩家或生物携带以及背包内的物品若要获取死亡后由背包扔出的物品请参考EntityDroppedItemServerEvent事件

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

EntityDroppedItemServerEvent

服务端

  • 描述

    触发时机:生物扔出物品时触发

  • 参数

    参数名
    数据类型
    说明
    entityId str 生物Id
    itemDict dict 扔出的物品的物品信息字典
    itemEntityId str 物品实体Id
  • 返回值

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

EntityEffectDamageServerEvent

服务端

  • 描述

    生物受到状态伤害/回复事件。

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    damage float 伤害值(伤害吸收后实际扣血量),负数表示生命回复量
    attributeBuffType int 状态类型,参考AttributeBuffType
    duration float 状态持续时间单位秒s
    lifeTimer float 状态生命时间单位秒s
    isInstantaneous bool 是否为立即生效状态
    cause str 伤害来源详见Minecraft枚举值文档的ActorDamageCause
  • 返回值

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

EntityLoadScriptEvent

服务端

  • 描述

    数据库加载实体自定义数据时触发

  • 参数

    参数名
    数据类型
    说明
    args list 该事件的参数为长度为2的list而非dict其中list的第一个元素为实体id
  • 返回值

  • 备注

    • 只有使用过extraData组件的SetExtraData接口的实体才有此事件触发时可以通过extraData组件的GetExtraData或GetWholeExtraData接口获取该实体的自定义数据

EntityModelChangedClientEvent

客户端

  • 描述

    触发时机:实体模型切换时触发

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    newModel str 新的模型名字
    oldModel str 原来的模型名字
  • 返回值

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

EntityMotionStartServerEvent

服务端

  • 描述

    实体运动器开始事件。实体(包含玩家)添加运动器后,运动器开始运行时触发

  • 参数

    参数名
    数据类型
    说明
    motionId int 运动器id
    entityId str 实体id
  • 返回值

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

EntityMotionStopServerEvent

服务端

  • 描述

    实体运动器停止事件。实体(包含玩家)添加运动器并开始运行后,运动器自动停止时触发

  • 参数

    参数名
    数据类型
    说明
    motionId int 运动器id
    entityId str 实体id
    remove bool 是否移除该运动器设置为False则保留默认为True即运动器停止后自动移除该参数设置只对非玩家实体有效
  • 返回值

  • 备注

    • 注意:该事件触发表示运动器播放顺利完成,手动调用的StopEntityMotionRemoveEntityMotion以及实体被销毁导致的运动器停止不会触发该事件。

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

EntityPickupItemServerEvent

服务端

  • 描述

    有minecraft:behavior.pickup_items行为的生物拾取物品时触发该事件例如村民拾取面包、猪灵拾取金锭

  • 参数

    参数名
    数据类型
    说明
    entityId str 生物Id
    itemDict dict 拾取的物品的物品信息字典
    secondaryActor str 物品给予者id一般是玩家如果不存在给予者的话这里为空字符串
  • 返回值

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

EntityStartRidingEvent

服务端

  • 描述

    当实体骑乘上另一个实体时触发

  • 参数

    参数名
    数据类型
    说明
    id str 乘骑者实体id
    rideId str 被乘骑者实体id
  • 返回值

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

EntityStopRidingEvent

服务端客户端

服务端事件

  • 描述

    触发时机:当实体停止骑乘时

  • 参数

    参数名
    数据类型
    说明
    id str 实体id
    rideId str 坐骑id
    exitFromRider bool 是否下坐骑
    entityIsBeingDestroyed bool 坐骑是否将要销毁
    switchingRides bool 是否换乘坐骑
    cancel bool 设置为True可以取消需要与客户端事件一同取消
  • 返回值

  • 备注

    • 以下情况不允许取消
      1. ride组件StopEntityRiding接口
      2. 玩家传送时
      3. 坐骑死亡时
      4. 玩家睡觉时
      5. 玩家死亡时
      6. 未驯服的马
      7. 怕水的生物坐骑进入水里
      8. 切换维度

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

客户端事件

  • 描述

    触发时机:当实体停止骑乘时

  • 参数

    参数名
    数据类型
    说明
    id str 实体id
    rideId str 坐骑id
    exitFromRider bool 是否下坐骑
    entityIsBeingDestroyed bool 坐骑是否将要销毁
    switchingRides bool 是否换乘坐骑
    cancel bool 设置为True可以取消需要与服务端事件一同取消
  • 返回值

  • 备注

    • 以下情况不允许取消
      1. ride组件StopEntityRiding接口
      2. 玩家传送时
      3. 坐骑死亡时
      4. 玩家睡觉时
      5. 玩家死亡时
      6. 未驯服的马
      7. 怕水的生物坐骑进入水里
      8. 切换维度

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

EntityTickServerEvent

服务端

  • 描述

    实体tick时触发。该事件为20帧每秒。需要使用AddEntityTickEventWhiteList添加触发该事件的实体类型白名单。

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    identifier str 实体identifier
  • 返回值

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

相关接口

AddEntityTickEventWhiteList

method in mod.server.extraServerApi

  • 描述

    添加实体类型到EntityTickServerEvent事件的触发白名单。

  • 参数

    参数名
    数据类型
    说明
    identifier str 实体的类型名原版的实体需要加上minecraft命名空间
  • 返回值

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

import mod.server.extraServerApi as serverApi
# 让牛触发EntityTickServerEvent事件
serverApi.AddEntityTickEventWhiteList('minecraft:cow')

HealthChangeBeforeServerEvent

服务端

  • 描述

    生物生命值或最大生命值发生变化之前触发

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    from float 变化前的生命值
    to float 将要变化到的生命值cancel设置为True时可以取消该变化但是此参数不变
    byScript bool 是否通过SetAttrValue或SetAttrMaxValue调用产生的变化
    cancel bool 是否取消该变化
  • 返回值

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

HealthChangeClientEvent

客户端

  • 描述

    生物生命值发生变化时触发

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    from float 变化前的生命值
    to float 变化后的生命值
  • 返回值

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

HealthChangeServerEvent

服务端

  • 描述

    生物生命值发生变化时触发

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    from float 变化前的生命值
    to float 变化后的生命值
    byScript bool 是否通过SetAttrValue或SetAttrMaxValue调用产生的变化
  • 返回值

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

LeaveEntityClientEvent

客户端

  • 描述

    玩家远离生物时触发

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家实体id
    entityId str 远离的生物实体id
  • 返回值

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

MobDieEvent

服务端

  • 描述

    实体死亡时触发

  • 参数

    参数名
    数据类型
    说明
    id str 实体id
    attacker str 伤害来源id
    cause str 伤害来源详见Minecraft枚举值文档的ActorDamageCause
    customTag str 使用Hurt接口传入的自定义伤害类型
  • 返回值

  • 备注

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

MobGriefingBlockServerEvent

服务端

  • 描述

    环境生物改变方块时触发触发的时机与mobgriefing游戏规则影响的行为相同

  • 参数

    参数名
    数据类型
    说明
    cancel bool 是否允许触发默认为False若设为True可阻止触发后续物理交互事件
    blockX int 方块x坐标
    blockY int 方块y坐标
    blockZ int 方块z坐标
    entityId str 触发的entity的唯一ID
    blockName str 方块的identifier包含命名空间及名称
    dimensionId int 维度id
  • 返回值

  • 备注

    • 触发的时机包括生物踩踏耕地、破坏单个方块、破门、火矢点燃方块、凋灵boss破坏方块、末影龙破坏方块、末影人捡起方块、蠹虫破坏被虫蚀的方块、蠹虫把方块变成被虫蚀的方块、凋零杀死生物生成凋零玫瑰、生物踩坏海龟蛋。

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

OnFireHurtEvent

服务端

  • 描述

    生物受到火焰伤害时触发

  • 参数

    参数名
    数据类型
    说明
    victim str 受伤实体id
    src str 火焰创建者id
    fireTime float 着火时间,单位秒, 不支持修改
    cancel bool 是否取消此处火焰伤害
    cancelIgnite bool 是否取消点燃效果
  • 返回值

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

OnGroundClientEvent

客户端

  • 描述

    实体着地事件。玩家沙子铁砧掉落的物品点燃的TNT掉落地面时触发其余实体着地不触发。

  • 参数

    参数名
    数据类型
    说明
    id str 实体id
  • 返回值

  • 备注

    • 因为掉落是服务端与客户端各自计算的对于掉落的方块有时会出现服务端先着地然后把FallingBlock实体移除掉了导致客户端没触发着地事件的情况。

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

OnGroundServerEvent

服务端

  • 描述

    实体着地事件。实体掉落的物品点燃的TNT掉落地面时触发

  • 参数

    参数名
    数据类型
    说明
    id str 实体id
  • 返回值

  • 备注

    • 不支持抛射物实体

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

OnKnockBackServerEvent

服务端

  • 描述

    实体被击退时触发

  • 参数

    参数名
    数据类型
    说明
    id str 实体id
  • 返回值

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

OnMobHitBlockServerEvent

服务端

  • 描述

    触发时机通过OpenMobHitBlockDetection打开方块碰撞检测后当生物不包括玩家碰撞到方块时触发该事件。

  • 参数

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

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

相关接口

OpenMobHitBlockDetection

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    开启碰撞方块的检测开启后生物不包括玩家碰撞到方块时会触发OnMobHitBlockServerEvent事件

  • 参数

    参数名
    数据类型
    说明
    entityId str 生物的实体Id
    precision float 碰撞检测精度,参数需要在区间[0, 1),值越小,表示碰撞检测精度越高(可以理解为轻轻碰一下就能触发)
  • 返回值

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

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.OpenMobHitBlockDetection("-123456",0.0001)

CloseMobHitBlockDetection

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

    关闭碰撞方块的检测关闭后生物不包括玩家碰撞到方块时将不会触发OnMobHitBlockServerEvent事件

  • 参数

    参数名
    数据类型
    说明
    entityId str 生物的实体Id
  • 返回值

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

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
comp.CloseMobHitBlockDetection("-123456")

OnMobHitMobClientEvent

客户端

  • 描述

    触发时机通过OpenPlayerHitMobDetection打开生物碰撞检测后当生物间包含玩家碰撞时触发该事件。注客户端和服务端分别作碰撞检测可能两个事件返回的略有差异。

  • 参数

    参数名
    数据类型
    说明
    mobId str 当前生物的id
    hittedMobList list[str] 当前生物碰撞到的其他所有生物id的list
  • 返回值

  • 备注

    • 本事件代替原有的OnPlayerHitMobClientEvent事件
    • 监听本事件会导致客户端在实体较多时严重掉帧建议监听服务端版本事件OnMobHitMobServerEvent
  • 示例

# ClientSystem
import mod.client.extraClientApi as clientApi
self.ListenForEvent(clientApi.GetEngineNamespace(),
                    clientApi.GetEngineSystemName(),
                    "OnMobHitMobClientEvent",
                    self, self.OnMobHitMobClientEvent)
def OnMobHitMobClientEvent(self, args):
    mobId = args.get('mobId', '')
    hittedMobs = args.get('hittedMobList', [])

相关接口

OpenPlayerHitMobDetection

method in mod.client.component.playerCompClient.PlayerCompClient

  • 描述

    开启对其他生物的碰撞检测开启后和生物间发生碰撞时会触发OnMobHitMobClientEvent事件。该接口对生物同样有效

  • 参数

  • 返回值

    数据类型
    说明
    bool 是否开启成功
  • 备注

    • 该接口对生物同样有效
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.OpenPlayerHitMobDetection()

ClosePlayerHitMobDetection

method in mod.client.component.playerCompClient.PlayerCompClient

  • 描述

    关闭碰撞生物的检测关闭后将不会触发OnMobHitMobClientEvent事件。该接口对生物同样有效

  • 参数

  • 返回值

    数据类型
    说明
    bool 是否关闭成功
  • 备注

    • 该接口对生物同样有效
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.ClosePlayerHitMobDetection()

OnMobHitMobServerEvent

服务端

  • 描述

    触发时机通过OpenPlayerHitMobDetection打开生物碰撞检测后当生物间包含玩家碰撞时触发该事件。注客户端和服务端分别作碰撞检测可能两个事件返回的略有差异。

  • 参数

    参数名
    数据类型
    说明
    mobId str 当前生物的id
    hittedMobList list[str] 当前生物碰撞到的其他所有生物id的list
  • 返回值

  • 备注

    • 本事件代替原有的OnPlayerHitMobServerEvent事件
  • 示例

# ServerSystem
import mod.server.extraServerApi as serverApi
self.ListenForEvent(serverApi.GetEngineNamespace(),
                    serverApi.GetEngineSystemName(),
                    "OnMobHitMobServerEvent",
                    self, self.OnMobHitMobServerEvent)
def OnMobHitMobServerEvent(self, args):
    mobId = args.get('mobId', '')
    hittedMobs = args.get('hittedMobList', [])

相关接口

OpenPlayerHitMobDetection

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

    开启对其他生物的碰撞检测开启后和生物间发生碰撞时会触发OnMobHitMobServerEvent事件。该接口对生物同样有效

  • 参数

  • 返回值

    数据类型
    说明
    bool 是否开启成功
  • 备注

    • 该接口对生物同样有效
  • 示例

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

ClosePlayerHitMobDetection

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

    关闭碰撞生物的检测关闭后将不会触发OnMobHitMobServerEvent事件。

  • 参数

  • 返回值

    数据类型
    说明
    bool 是否关闭成功
  • 备注

    • 该接口对生物同样有效
  • 示例

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

ProjectileCritHitEvent

服务端

  • 描述

    触发时机当抛射物与头部碰撞时触发该事件。注需调用OpenPlayerCritBox开启玩家爆头后才能触发。

  • 参数

    参数名
    数据类型
    说明
    id str 抛射物id
    targetId str 碰撞目标id
  • 返回值

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

相关接口

OpenPlayerCritBox

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

    开启玩家爆头开启后该玩家头部被击中后会触发ProjectileCritHitEvent事件。

  • 参数

  • 返回值

  • 示例

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

ClosePlayerCritBox

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

    关闭玩家爆头关闭后将无法触发ProjectileCritHitEvent事件。

  • 参数

  • 返回值

  • 示例

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

ProjectileDoHitEffectEvent

服务端

  • 描述

    触发时机:当抛射物碰撞时触发该事件

  • 参数

    参数名
    数据类型
    说明
    id str 抛射物id
    hitTargetType str 碰撞目标类型,'ENTITY'或是'BLOCK'
    targetId str 碰撞目标id
    hitFace int 撞击在方块上的面id参考Facing枚举
    x float 碰撞x坐标
    y float 碰撞y坐标
    z float 碰撞z坐标
    blockPosX int 碰撞是方块时方块x坐标
    blockPosY int 碰撞是方块时方块y坐标
    blockPosZ int 碰撞是方块时方块z坐标
    srcId str 创建者id
    cancel bool 是否取消这个碰撞事件若取消可以设置为True
  • 返回值

  • 示例

# ServerSystem
import mod.server.extraServerApi as serverApi
# 监听引擎的事件 self指ServerSystem类的实例  ProjectileDoHitEffectEvent是系统事件
self.ListenForEvent(serverApi.GetEngineNamespace(), serverApi.GetEngineSystemName(),
                    "ProjectileDoHitEffectEvent", self, self.OnProjectileDoHitEffectEvent)
def OnProjectileDoHitEffectEvent(self, args):
    # 设为True后将取消这次的抛射物碰撞事件
    args["cancel"] = True

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

RefreshEffectServerEvent

服务端

  • 描述

    触发时机实体身上状态效果更新时触发更新条件1、新增状态等级较高更新状态等级及时间2、新增状态等级不变时间较长更新状态持续时间

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    effectName str 更新状态效果的名字
    effectDuration int 更新后状态效果剩余持续时间,单位秒
    effectAmplifier int 更新后的状态效果放大倍数
    damage float 状态造成的伤害值,如药水
  • 返回值

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

RemoveEffectServerEvent

服务端

  • 描述

    触发时机:实体身上状态效果被移除时

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    effectName str 被移除状态效果的名字
    effectDuration int 被移除状态效果的剩余持续时间,单位秒
    effectAmplifier int 被移除状态效果的放大倍数
  • 返回值

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

SpawnProjectileServerEvent

服务端

  • 描述

    触发时机:抛射物生成时触发

  • 参数

    参数名
    数据类型
    说明
    projectileId str 抛射物的实体id
    projectileIdentifier str 抛射物的identifier
    spawnerId str 发射者的实体id没有发射者时为-1
  • 返回值

  • 备注

    • 该事件里无法获取弹射物实体的auxvalue。如有需要可以延迟一帧获取或者在ProjectileDoHitEffectEvent获取

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

StartRidingClientEvent

客户端

  • 描述

    触发时机:一个实体即将骑乘另外一个实体

  • 参数

    参数名
    数据类型
    说明
    actorId str 骑乘者的唯一ID
    victimId str 被骑乘实体的唯一ID
  • 返回值

  • 备注

    • 如果需要修改cancel请通过服务端事件StartRidingServerEvent同步修改客户端触发该事件时实体已经骑乘成功。

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

StartRidingServerEvent

服务端

  • 描述

    触发时机:一个实体即将骑乘另外一个实体

  • 参数

    参数名
    数据类型
    说明
    cancel bool 是否允许触发默认为False若设为True可阻止触发后续的实体交互事件
    actorId str 骑乘者的唯一ID
    victimId str 被骑乘实体的唯一ID
  • 返回值

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

WillAddEffectServerEvent

服务端

  • 描述

    触发时机:实体即将获得状态效果前

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    effectName str 实体获得状态效果的名字
    effectDuration int 状态效果的持续时间,单位秒
    effectAmplifier int 状态效果的放大倍数
    cancel bool 设置为True可以取消
    damage float 状态将会造成的伤害值如药水需要注意该值不一定是最终的伤害值例如被伤害吸收效果扣除。只有持续时间为0时有用
  • 返回值

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

WillTeleportToServerEvent

服务端

  • 描述

    实体即将传送或切换维度

  • 参数

    参数名
    数据类型
    说明
    cancel bool 是否允许触发默认为False若设为True可阻止触发后续的传送
    entityId str 实体的唯一ID
    fromDimensionId int 传送前所在的维度
    toDimensionId int 传送后的目标维度
    fromX int 传送前所在的x坐标
    fromY int 传送前所在的y坐标
    fromZ int 传送前所在的z坐标
    toX int 传送目标地点的x坐标
    toY int 传送目标地点的y坐标
    toZ int 传送目标地点的z坐标
    cause str 传送理由详情见MinecraftEnum.EntityTeleportCause
  • 返回值

  • 备注

    • 假如目标维度尚未在内存中创建(即服务器启动之后,到传送之前,没有玩家进入过这个维度),那么此时事件中返回的目标地点坐标是算法生成的,不能保证正确。

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