# 实体
# 索引
事件 | 描述 | |
---|---|---|
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 int 伤害值(被伤害吸收后的值),不可修改 damage_f float 伤害值(被伤害吸收后的值),不可修改 absorbedDamage int 被伤害吸收效果吸收的伤害值 customTag str 使用Hurt接口传入的自定义伤害类型 返回值
无
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
# ActuallyHurtServerEvent
服务端
描述
实体实际受到伤害时触发,相比于DamageEvent,该伤害为经过护甲及buff计算后,实际的扣血量
参数
参数名 数据类型说明 srcId str 伤害源id projectileId str 投射物id entityId str 被伤害id damage int 伤害值(被伤害吸收后的值),允许修改,设置为0则此次造成的伤害为0,若设置数值和原来一样则视为没有修改 damage_f float 伤害值(被伤害吸收后的值),允许修改,若修改该值,则会覆盖damage的修改效果 cause str 伤害来源,详见Minecraft枚举值文档的ActorDamageCause customTag str 使用Hurt接口传入的自定义伤害类型 返回值
无
备注
- 药水与状态效果造成的伤害不触发,可以使用ActorHurtServerEvent
- 为了游戏运行效率请尽可能避免将火的伤害设置为0,因为这样会导致大量触发该事件。
- 若要修改damage或damage_f的值,请确保修改后的值与原值不同,且需要使用原来的数据类型(int/float),否则引擎会忽略这次修改。
- 青蛙、山羊跳跃落地时也会触发此伤害事件,但它们的掉落伤害实际会有减免,青蛙减少5,山羊减少10
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
# AddEffectServerEvent
服务端
描述
触发时机:实体获得状态效果时
参数
参数名 数据类型说明 entityId str 实体id effectName str 实体获得状态效果的名字 effectDuration int 状态效果的持续时间,单位秒 effectAmplifier int 状态效果的放大倍数 damage int 状态造成的伤害值(真实扣除生命值的量)。只有持续时间为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 int 伤害值(被伤害吸收前的值),允许修改,设置为0则此次造成的伤害为0 damage_f float 伤害值(被伤害吸收前的值),不允许修改 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 int 伤害值(伤害吸收后实际扣血量),负数表示生命回复量 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,即运动器停止后自动移除,该参数设置只对非玩家实体有效 返回值
无
备注
- 注意:该事件触发表示运动器播放顺利完成,手动调用的StopEntityMotion、RemoveEntityMotion以及实体被销毁导致的运动器停止不会触发该事件。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
# 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可以取消(需要与客户端事件一同取消) 返回值
无
备注
- 以下情况不允许取消
- ride组件StopEntityRiding接口
- 玩家传送时
- 坐骑死亡时
- 玩家睡觉时
- 玩家死亡时
- 未驯服的马
- 怕水的生物坐骑进入水里
- 切换维度
- 以下情况不允许取消
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
# 客户端事件
描述
触发时机:当实体停止骑乘时
参数
参数名 数据类型说明 id str 实体id rideId str 坐骑id exitFromRider bool 是否下坐骑 entityIsBeingDestroyed bool 坐骑是否将要销毁 switchingRides bool 是否换乘坐骑 cancel bool 设置为True可以取消(需要与服务端事件一同取消) 返回值
无
备注
- 以下情况不允许取消
- ride组件StopEntityRiding接口
- 玩家传送时
- 坐骑死亡时
- 玩家睡觉时
- 玩家死亡时
- 未驯服的马
- 怕水的生物坐骑进入水里
- 切换维度
- 以下情况不允许取消
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
# 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接口传入的自定义伤害类型 返回值
无
备注
- 注意:不能在该事件回调中对此玩家手持物品进行修改,如SpawnItemToPlayerCarried、ChangePlayerItemTipsAndExtraId等接口
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
# 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 int 状态造成的伤害值,如药水 返回值
无
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
# 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 int 状态将会造成的伤害值,如药水;需要注意,该值不一定是最终的伤害值,例如被伤害吸收效果扣除。只有持续时间为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 返回值
无
备注
- 假如目标维度尚未在内存中创建(即服务器启动之后,到传送之前,没有玩家进入过这个维度),那么此时事件中返回的目标地点坐标是算法生成的,不能保证正确。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件