Skip to content

实体

索引

事件
描述
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

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr生物Id
    causestr伤害来源,详见Minecraft枚举值文档的ActorDamageCause
    damagefloat伤害值(被伤害吸收后的值),不可修改
    absorbedDamageint被伤害吸收效果吸收的伤害值
    customTagstr使用Hurt接口传入的自定义伤害类型
  • 返回值

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

ActuallyHurtServerEvent

服务端

  • 描述

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

  • 参数

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

  • 备注

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

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

AddEffectServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    effectNamestr实体获得状态效果的名字
    effectDurationint状态效果的持续时间,单位秒
    effectAmplifierint状态效果的放大倍数
    damagefloat状态造成的伤害值(真实扣除生命值的量)。只有持续时间为0时有用
  • 返回值

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

ApproachEntityClientEvent

客户端

  • 描述

    玩家靠近生物时触发

  • 参数

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

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

ChangeSwimStateServerEvent

服务端

  • 描述

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

  • 参数

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

  • 备注

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

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

DamageEvent

服务端

  • 描述

    实体受到伤害时触发

  • 参数

    参数名
    数据类型
    说明
    srcIdstr伤害源id
    projectileIdstr投射物id
    entityIdstr被伤害id
    damagefloat伤害值(被伤害吸收前的值),允许修改,设置为0则此次造成的伤害为0
    absorptionint受到伤害时,扣除黄心前,实体拥有的黄心血量(见AttrType枚举的ABSORPTION)
    causestr伤害来源,详见Minecraft枚举值文档的ActorDamageCause
    knockbool是否击退被攻击者,允许修改,设置该值为False则不产生击退
    ignitebool是否点燃被伤害者,允许修改,设置该值为True产生点燃效果
    customTagstr使用Hurt接口传入的自定义伤害类型
  • 返回值

  • 备注

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

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

EntityChangeDimensionServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    fromDimensionIdint维度改变前的维度
    toDimensionIdint维度改变后的维度
    fromXfloat改变前的位置x
    fromYfloat改变前的位置Y
    fromZfloat改变前的位置Z
    toXfloat改变后的位置x
    toYfloat改变后的位置Y
    toZfloat改变后的位置Z
  • 返回值

  • 备注

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

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

EntityDefinitionsEventServerEvent

服务端

  • 描述

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

  • 参数

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

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

EntityDieLoottableAfterServerEvent

服务端

  • 描述

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

  • 参数

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

  • 备注

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

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

EntityDieLoottableServerEvent

服务端

  • 描述

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

  • 参数

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

  • 备注

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

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

EntityDroppedItemServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr生物Id
    itemDictdict扔出的物品的物品信息字典
    itemEntityIdstr物品实体Id
  • 返回值

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

EntityEffectDamageServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    damagefloat伤害值(伤害吸收后实际扣血量),负数表示生命回复量
    attributeBuffTypeint状态类型,参考AttributeBuffType
    durationfloat状态持续时间,单位秒(s)
    lifeTimerfloat状态生命时间,单位秒(s)
    isInstantaneousbool是否为立即生效状态
    causestr伤害来源,详见Minecraft枚举值文档的ActorDamageCause
  • 返回值

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

EntityLoadScriptEvent

服务端

  • 描述

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

  • 参数

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

  • 备注

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

EntityModelChangedClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    newModelstr新的模型名字
    oldModelstr原来的模型名字
  • 返回值

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

EntityMotionStartServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    motionIdint运动器id
    entityIdstr实体id
  • 返回值

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

EntityMotionStopServerEvent

服务端

  • 描述

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

  • 参数

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

  • 备注

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

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

EntityPickupItemServerEvent

服务端

  • 描述

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

  • 参数

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

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

EntityStartRidingEvent

服务端

  • 描述

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

  • 参数

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

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

EntityStopRidingEvent

服务端客户端

服务端事件

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    idstr实体id
    rideIdstr坐骑id
    exitFromRiderbool是否下坐骑
    entityIsBeingDestroyedbool坐骑是否将要销毁
    switchingRidesbool是否换乘坐骑
    cancelbool设置为True可以取消(需要与客户端事件一同取消)
  • 返回值

  • 备注

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

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

客户端事件

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    idstr实体id
    rideIdstr坐骑id
    exitFromRiderbool是否下坐骑
    entityIsBeingDestroyedbool坐骑是否将要销毁
    switchingRidesbool是否换乘坐骑
    cancelbool设置为True可以取消(需要与服务端事件一同取消)
  • 返回值

  • 备注

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

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

EntityTickServerEvent

服务端

  • 描述

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

  • 参数

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

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

相关接口

AddEntityTickEventWhiteList

method in mod.server.extraServerApi

  • 描述

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

  • 参数

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

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

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

HealthChangeBeforeServerEvent

服务端

  • 描述

    生物生命值发生变化之前触发

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    fromfloat变化前的生命值
    tofloat将要变化到的生命值,cancel设置为True时可以取消该变化,但是此参数不变
    byScriptbool是否通过SetAttrValue或SetAttrMaxValue调用产生的变化
    cancelbool是否取消该变化
  • 返回值

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

HealthChangeClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    fromfloat变化前的生命值
    tofloat变化后的生命值
  • 返回值

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

HealthChangeServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    fromfloat变化前的生命值
    tofloat变化后的生命值
    byScriptbool是否通过SetAttrValue或SetAttrMaxValue调用产生的变化
  • 返回值

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

LeaveEntityClientEvent

客户端

  • 描述

    玩家远离生物时触发

  • 参数

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

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

MobDieEvent

服务端

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

MobGriefingBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    cancelbool是否允许触发,默认为False,若设为True,可阻止触发后续物理交互事件
    blockXint方块x坐标
    blockYint方块y坐标
    blockZint方块z坐标
    entityIdstr触发的entity的唯一ID
    blockNamestr方块的identifier,包含命名空间及名称
    dimensionIdint维度id
  • 返回值

  • 备注

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

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

OnFireHurtEvent

服务端

  • 描述

    生物受到火焰伤害时触发

  • 参数

    参数名
    数据类型
    说明
    victimstr受伤实体id
    srcstr火焰创建者id
    fireTimefloat着火时间,单位秒, 不支持修改
    cancelbool是否取消此处火焰伤害
    cancelIgnitebool是否取消点燃效果
  • 返回值

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

OnGroundClientEvent

客户端

  • 描述

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

  • 参数

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

  • 备注

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

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

OnGroundServerEvent

服务端

  • 描述

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

  • 参数

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

  • 备注

    • 不支持抛射物实体

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

OnKnockBackServerEvent

服务端

  • 描述

    实体被击退时触发

  • 参数

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

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

OnMobHitBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr碰撞到方块的生物Id
    posXint碰撞方块x坐标
    posYint碰撞方块y坐标
    posZint碰撞方块z坐标
    blockIdstr碰撞方块的identifier
    auxValueint碰撞方块的附加值
    dimensionIdint维度id
  • 返回值

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

相关接口

OpenMobHitBlockDetection

method in mod.server.component.gameCompServer.GameComponentServer

  • 描述

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

  • 参数

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

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

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

python
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事件

  • 参数

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

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

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

OnMobHitMobClientEvent

客户端

  • 描述

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

  • 参数

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

  • 备注

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

python
# 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是否开启成功
  • 备注

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

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

ClosePlayerHitMobDetection

method in mod.client.component.playerCompClient.PlayerCompClient

  • 描述

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

  • 参数

  • 返回值

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

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

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

OnMobHitMobServerEvent

服务端

  • 描述

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

  • 参数

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

  • 备注

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

python
# 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是否开启成功
  • 备注

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

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

ClosePlayerHitMobDetection

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

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

  • 参数

  • 返回值

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

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

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

ProjectileCritHitEvent

服务端

  • 描述

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

  • 参数

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

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

相关接口

OpenPlayerCritBox

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

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

  • 参数

  • 返回值

  • 示例

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

ClosePlayerCritBox

method in mod.server.component.playerCompServer.PlayerCompServer

  • 描述

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

  • 参数

  • 返回值

  • 示例

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

ProjectileDoHitEffectEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    idstr抛射物id
    hitTargetTypestr碰撞目标类型,'ENTITY'或是'BLOCK'
    targetIdstr碰撞目标id
    hitFaceint撞击在方块上的面id,参考Facing枚举
    xfloat碰撞x坐标
    yfloat碰撞y坐标
    zfloat碰撞z坐标
    blockPosXint碰撞是方块时,方块x坐标
    blockPosYint碰撞是方块时,方块y坐标
    blockPosZint碰撞是方块时,方块z坐标
    srcIdstr创建者id
    cancelbool是否取消这个碰撞事件,若取消可以设置为True
  • 返回值

  • 示例

python
# 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、新增状态等级不变,时间较长,更新状态持续时间

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    effectNamestr更新状态效果的名字
    effectDurationint更新后状态效果剩余持续时间,单位秒
    effectAmplifierint更新后的状态效果放大倍数
    damagefloat状态造成的伤害值,如药水
  • 返回值

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

RemoveEffectServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    effectNamestr被移除状态效果的名字
    effectDurationint被移除状态效果的剩余持续时间,单位秒
    effectAmplifierint被移除状态效果的放大倍数
  • 返回值

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

SpawnProjectileServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    projectileIdstr抛射物的实体id
    projectileIdentifierstr抛射物的identifier
    spawnerIdstr发射者的实体id,没有发射者时为-1
  • 返回值

  • 备注

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

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

StartRidingClientEvent

客户端

  • 描述

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

  • 参数

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

  • 备注

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

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

StartRidingServerEvent

服务端

  • 描述

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

  • 参数

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

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

WillAddEffectServerEvent

服务端

  • 描述

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

  • 参数

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

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

WillTeleportToServerEvent

服务端

  • 描述

    实体即将传送或切换维度

  • 参数

    参数名
    数据类型
    说明
    cancelbool是否允许触发,默认为False,若设为True,可阻止触发后续的传送
    entityIdstr实体的唯一ID
    fromDimensionIdint传送前所在的维度
    toDimensionIdint传送后的目标维度
    fromXint传送前所在的x坐标
    fromYint传送前所在的y坐标
    fromZint传送前所在的z坐标
    toXint传送目标地点的x坐标
    toYint传送目标地点的y坐标
    toZint传送目标地点的z坐标
    causestr传送理由,详情见MinecraftEnum.EntityTeleportCause
  • 返回值

  • 备注

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

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