1514 lines
55 KiB
Markdown
1514 lines
55 KiB
Markdown
---
|
||
sidebarDepth: 1
|
||
---
|
||
# 实体
|
||
|
||
# 索引
|
||
|
||
| 事件 | <div style="width: 3em"></div> | 描述 |
|
||
| --- | --- | --- |
|
||
| [ActorHurtServerEvent](实体.md#actorhurtserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:生物(包括玩家)受伤时触发 |
|
||
| [ActuallyHurtServerEvent](实体.md#actuallyhurtserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体实际受到伤害时触发,相比于DamageEvent,该伤害为经过护甲及buff计算后,实际的扣血量 |
|
||
| [AddEffectServerEvent](实体.md#addeffectserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:实体获得状态效果时 |
|
||
| [ApproachEntityClientEvent](实体.md#approachentityclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 玩家靠近生物时触发 |
|
||
| [ChangeSwimStateServerEvent](实体.md#changeswimstateserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:实体开始或者结束游泳时 |
|
||
| [DamageEvent](实体.md#damageevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体受到伤害时触发 |
|
||
| [EntityChangeDimensionServerEvent](实体.md#entitychangedimensionserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体维度改变时服务端抛出 |
|
||
| [EntityDefinitionsEventServerEvent](实体.md#entitydefinitionseventserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:生物定义json文件中设置的event触发时同时触发。生物行为变更事件 |
|
||
| [EntityDieLoottableAfterServerEvent](实体.md#entitydieloottableafterserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:生物死亡掉落物品之后 |
|
||
| [EntityDieLoottableServerEvent](实体.md#entitydieloottableserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:生物死亡掉落物品时 |
|
||
| [EntityDroppedItemServerEvent](实体.md#entitydroppeditemserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:生物扔出物品时触发 |
|
||
| [EntityEffectDamageServerEvent](实体.md#entityeffectdamageserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 生物受到状态伤害/回复事件。 |
|
||
| [EntityLoadScriptEvent](实体.md#entityloadscriptevent) | <span style="display:inline;color:#ff5555">服务端</span> | 数据库加载实体自定义数据时触发 |
|
||
| [EntityModelChangedClientEvent](实体.md#entitymodelchangedclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 触发时机:实体模型切换时触发 |
|
||
| [EntityMotionStartServerEvent](实体.md#entitymotionstartserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体运动器开始事件。实体(包含玩家)添加运动器后,运动器开始运行时触发 |
|
||
| [EntityMotionStopServerEvent](实体.md#entitymotionstopserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体运动器停止事件。实体(包含玩家)添加运动器并开始运行后,运动器自动停止时触发 |
|
||
| [EntityPickupItemServerEvent](实体.md#entitypickupitemserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 有minecraft:behavior.pickup_items行为的生物拾取物品时触发该事件,例如村民拾取面包、猪灵拾取金锭 |
|
||
| [EntityStartRidingEvent](实体.md#entitystartridingevent) | <span style="display:inline;color:#ff5555">服务端</span> | 当实体骑乘上另一个实体时触发 |
|
||
| [EntityStopRidingEvent](实体.md#entitystopridingevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:当实体停止骑乘时 |
|
||
| [EntityStopRidingEvent](实体.md#entitystopridingevent) | <span style="display:inline;color:#7575f9">客户端</span> | 触发时机:当实体停止骑乘时 |
|
||
| [EntityTickServerEvent](实体.md#entitytickserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体tick时触发。该事件为20帧每秒。需要使用AddEntityTickEventWhiteList添加触发该事件的实体类型白名单。 |
|
||
| [HealthChangeBeforeServerEvent](实体.md#healthchangebeforeserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 生物生命值发生变化之前触发 |
|
||
| [HealthChangeClientEvent](实体.md#healthchangeclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 生物生命值发生变化时触发 |
|
||
| [HealthChangeServerEvent](实体.md#healthchangeserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 生物生命值发生变化时触发 |
|
||
| [LeaveEntityClientEvent](实体.md#leaveentityclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 玩家远离生物时触发 |
|
||
| [MobDieEvent](实体.md#mobdieevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体死亡时触发 |
|
||
| [MobGriefingBlockServerEvent](实体.md#mobgriefingblockserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 环境生物改变方块时触发,触发的时机与mobgriefing游戏规则影响的行为相同 |
|
||
| [OnFireHurtEvent](实体.md#onfirehurtevent) | <span style="display:inline;color:#ff5555">服务端</span> | 生物受到火焰伤害时触发 |
|
||
| [OnGroundClientEvent](实体.md#ongroundclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 实体着地事件。玩家,沙子,铁砧,掉落的物品,点燃的TNT掉落地面时触发,其余实体着地不触发。 |
|
||
| [OnGroundServerEvent](实体.md#ongroundserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体着地事件。实体,掉落的物品,点燃的TNT掉落地面时触发 |
|
||
| [OnKnockBackServerEvent](实体.md#onknockbackserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体被击退时触发 |
|
||
| [OnMobHitBlockServerEvent](实体.md#onmobhitblockserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:通过OpenMobHitBlockDetection打开方块碰撞检测后,当生物(不包括玩家)碰撞到方块时触发该事件。 |
|
||
| [OnMobHitMobClientEvent](实体.md#onmobhitmobclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 触发时机:通过OpenPlayerHitMobDetection打开生物碰撞检测后,当生物间(包含玩家)碰撞时触发该事件。注:客户端和服务端分别作碰撞检测,可能两个事件返回的略有差异。 |
|
||
| [OnMobHitMobServerEvent](实体.md#onmobhitmobserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:通过OpenPlayerHitMobDetection打开生物碰撞检测后,当生物间(包含玩家)碰撞时触发该事件。注:客户端和服务端分别作碰撞检测,可能两个事件返回的略有差异。 |
|
||
| [ProjectileCritHitEvent](实体.md#projectilecrithitevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:当抛射物与头部碰撞时触发该事件。注:需调用OpenPlayerCritBox开启玩家爆头后才能触发。 |
|
||
| [ProjectileDoHitEffectEvent](实体.md#projectiledohiteffectevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:当抛射物碰撞时触发该事件 |
|
||
| [RefreshEffectServerEvent](实体.md#refresheffectserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:实体身上状态效果更新时触发,更新条件1、新增状态等级较高,更新状态等级及时间;2、新增状态等级不变,时间较长,更新状态持续时间 |
|
||
| [RemoveEffectServerEvent](实体.md#removeeffectserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:实体身上状态效果被移除时 |
|
||
| [SpawnProjectileServerEvent](实体.md#spawnprojectileserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:抛射物生成时触发 |
|
||
| [StartRidingClientEvent](实体.md#startridingclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 触发时机:一个实体即将骑乘另外一个实体 |
|
||
| [StartRidingServerEvent](实体.md#startridingserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:一个实体即将骑乘另外一个实体 |
|
||
| [WillAddEffectServerEvent](实体.md#willaddeffectserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:实体即将获得状态效果前 |
|
||
| [WillTeleportToServerEvent](实体.md#willteleporttoserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体即将传送或切换维度 |
|
||
# 实体
|
||
|
||
## ActorHurtServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:生物(包括玩家)受伤时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 生物Id |
|
||
| cause | str | 伤害来源,详见Minecraft枚举值文档的[ActorDamageCause](../枚举值/ActorDamageCause.md) |
|
||
| damage | float | 伤害值(被伤害吸收后的值),不可修改 |
|
||
| absorbedDamage | int | 被伤害吸收效果吸收的伤害值 |
|
||
| customTag | str | 使用[Hurt接口](../接口/实体/行为.md#hurt)传入的自定义伤害类型 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## ActuallyHurtServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
实体实际受到伤害时触发,相比于DamageEvent,该伤害为经过护甲及buff计算后,实际的扣血量
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| srcId | str | 伤害源id |
|
||
| projectileId | str | 投射物id |
|
||
| entityId | str | 被伤害id |
|
||
| damage | float | 伤害值(被伤害吸收后的值),允许修改,设置为0则此次造成的伤害为0,若设置数值和原来一样则视为没有修改 |
|
||
| invulnerableTime | int | 实体受击后,剩余的无懈可击帧数,在无懈可击时间内,damage和damage_f为超过上次伤害的部分 |
|
||
| lastHurt | float | 实体上次受到的伤害 |
|
||
| cause | str | 伤害来源,详见Minecraft枚举值文档的[ActorDamageCause](../枚举值/ActorDamageCause.md) |
|
||
| customTag | str | 使用[Hurt接口](../接口/实体/行为.md#hurt)传入的自定义伤害类型 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 药水与状态效果造成的伤害不触发,可以使用ActorHurtServerEvent
|
||
- 为了游戏运行效率请尽可能避免将火的伤害设置为0,因为这样会导致大量触发该事件。
|
||
- 若要修改damage的值,请确保修改后的值与原值不同,且支持转换为浮点型,否则引擎会忽略这次修改。
|
||
- 青蛙、山羊跳跃落地时也会触发此伤害事件,但它们的掉落伤害实际会有减免,青蛙减少5,山羊减少10
|
||
- 在无懈可击时间内,只要实体受到高于上次受击的伤害,可以连续触发不受SetHurtCD影响,如实体连续受到1伤害,如果在本事件中修改damage为0.5,则引擎会认为每次都有0.5的溢出伤害,可以通过invulnerableTime和lastHurt来判断是否取消这次伤害
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## AddEffectServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:实体获得状态效果时
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体id |
|
||
| effectName | str | 实体获得状态效果的名字 |
|
||
| effectDuration | int | 状态效果的持续时间,单位秒 |
|
||
| effectAmplifier | int | 状态效果的放大倍数 |
|
||
| damage | float | 状态造成的伤害值(真实扣除生命值的量)。只有持续时间为0时有用 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## ApproachEntityClientEvent
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
- 描述
|
||
|
||
玩家靠近生物时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| playerId | str | 玩家实体id |
|
||
| entityId | str | 靠近的生物实体id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## ChangeSwimStateServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:实体开始或者结束游泳时
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体的唯一ID |
|
||
| formState | bool | 事件触发前,实体是否在游泳状态 |
|
||
| toState | bool | 事件触发后,实体是否在游泳状态 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 当实体的状态没有变化时,不会触发此事件,即formState和toState必定一真一假
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## DamageEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
实体受到伤害时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| srcId | str | 伤害源id |
|
||
| projectileId | str | 投射物id |
|
||
| entityId | str | 被伤害id |
|
||
| damage | float | 伤害值(被伤害吸收前的值),允许修改,设置为0则此次造成的伤害为0 |
|
||
| absorption | int | 受到伤害时,扣除黄心前,实体拥有的黄心血量(见[AttrType枚举](../枚举值/AttrType.md)的ABSORPTION) |
|
||
| cause | str | 伤害来源,详见Minecraft枚举值文档的[ActorDamageCause](../枚举值/ActorDamageCause.md) |
|
||
| knock | bool | 是否击退被攻击者,允许修改,设置该值为False则不产生击退 |
|
||
| ignite | bool | 是否点燃被伤害者,允许修改,设置该值为True产生点燃效果 |
|
||
| customTag | str | 使用[Hurt接口](../接口/实体/行为.md#hurt)传入的自定义伤害类型 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- damage值会被护甲和absorption等吸收,不一定是最终扣血量。通过设置这个伤害值可以取消伤害,但不会取消由击退效果或者点燃效果带来的伤害
|
||
- 该事件在实体受伤之前触发,由于部分伤害是在tick中处理,因此持续触发受伤时(如站在火中)会每帧触发事件(可以使用ActorHurtServerEvent来避免)。
|
||
- 这里的damage是伤害源具有的攻击伤害值,并非实体真实的扣血量,如果需要获取真实伤害,可以使用ActuallyHurtServerEvent事件。
|
||
- 当目标无法被击退时,knock值无效
|
||
- 药水与状态效果造成的伤害不触发,可以使用ActorHurtServerEvent
|
||
- 由于点燃的实现原因,此处ignite设置为false并不能取消实体的点燃效果(如果需要取消点燃效果,请通过OnFireHurtEvent事件实现)
|
||
- 青蛙、山羊跳跃落地时也会触发此伤害事件,但它们的掉落伤害实际会有减免,青蛙减少5,山羊减少10
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityChangeDimensionServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
实体维度改变时服务端抛出
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| 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事件
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityDefinitionsEventServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:生物定义json文件中设置的event触发时同时触发。生物行为变更事件
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 生物id |
|
||
| eventName | str | 触发的事件名称 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityDieLoottableAfterServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:生物死亡掉落物品之后
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| dieEntityId | str | 死亡实体的entityId |
|
||
| attacker | str | 伤害来源的entityId |
|
||
| itemList | list(dict) | 掉落物品列表,每个元素为一个itemDict,格式可参考<a href="../../../mcguide/20-玩法开发/10-基本概念/1-我的世界基础概念.html#物品信息字典#物品信息字典">物品信息字典</a> |
|
||
| itemEntityIdList | list(str) | 掉落物品entityId列表 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 该事件为生物死亡掉落物品生成后触发,可以得到掉落物的id列表,如果需要更改掉落物,请使用EntityDieLoottableServerEvent
|
||
- 该事件在生物死亡后会触发,无论是否掉落物品,因此掉落物品列表可能存在为空的情况
|
||
- 掉落物不包含玩家或生物携带以及背包内的物品,若要获取死亡后由背包扔出的物品请参考EntityDroppedItemServerEvent事件
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityDieLoottableServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:生物死亡掉落物品时
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| dieEntityId | str | 死亡实体的entityId |
|
||
| attacker | str | 伤害来源的entityId |
|
||
| itemList | list(dict) | 掉落物品列表,每个元素为一个itemDict,格式可参考<a href="../../../mcguide/20-玩法开发/10-基本概念/1-我的世界基础概念.html#物品信息字典#物品信息字典">物品信息字典</a> |
|
||
| dirty | bool | 默认为False,如果需要修改掉落列表需将该值设为True |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 只有当dirty为True时才会重新读取item列表并生成对应的掉落物,如果不需要修改掉落结果的话请勿随意修改dirty值
|
||
- 该事件在生物死亡后会触发,无论是否掉落物品,因此掉落物品列表可能存在为空的情况
|
||
- 掉落物不包含玩家或生物携带以及背包内的物品,若要获取死亡后由背包扔出的物品请参考EntityDroppedItemServerEvent事件
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityDroppedItemServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:生物扔出物品时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 生物Id |
|
||
| itemDict | dict | 扔出的物品的<a href="../../../mcguide/20-玩法开发/10-基本概念/1-我的世界基础概念.html#物品信息字典#物品信息字典">物品信息字典</a> |
|
||
| itemEntityId | str | 物品实体Id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityEffectDamageServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
生物受到状态伤害/回复事件。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体id |
|
||
| damage | float | 伤害值(伤害吸收后实际扣血量),负数表示生命回复量 |
|
||
| attributeBuffType | int | 状态类型,参考[AttributeBuffType](../枚举值/AttributeBuffType.md) |
|
||
| duration | float | 状态持续时间,单位秒(s) |
|
||
| lifeTimer | float | 状态生命时间,单位秒(s) |
|
||
| isInstantaneous | bool | 是否为立即生效状态 |
|
||
| cause | str | 伤害来源,详见Minecraft枚举值文档的[ActorDamageCause](../枚举值/ActorDamageCause.md) |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityLoadScriptEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
数据库加载实体自定义数据时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| args | list | 该事件的参数为长度为2的list,而非dict,其中list的第一个元素为实体id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 只有使用过extraData组件的SetExtraData接口的实体才有此事件,触发时可以通过extraData组件的GetExtraData或GetWholeExtraData接口获取该实体的自定义数据
|
||
|
||
|
||
|
||
## EntityModelChangedClientEvent
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:实体模型切换时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体id |
|
||
| newModel | str | 新的模型名字 |
|
||
| oldModel | str | 原来的模型名字 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityMotionStartServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
实体运动器开始事件。实体(包含玩家)添加运动器后,运动器开始运行时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| motionId | int | 运动器id |
|
||
| entityId | str | 实体id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityMotionStopServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
实体运动器停止事件。实体(包含玩家)添加运动器并开始运行后,运动器自动停止时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| motionId | int | 运动器id |
|
||
| entityId | str | 实体id |
|
||
| remove | bool | 是否移除该运动器,设置为False则保留,默认为True,即运动器停止后自动移除,该参数设置只对非玩家实体有效 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 注意:该事件触发表示运动器播放顺利完成,手动调用的[StopEntityMotion](../接口/实体/行为.md#StopEntityMotion)、[RemoveEntityMotion](../接口/实体/行为.md#RemoveEntityMotion)以及实体被销毁导致的运动器停止不会触发该事件。
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityPickupItemServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
有minecraft:behavior.pickup_items行为的生物拾取物品时触发该事件,例如村民拾取面包、猪灵拾取金锭
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 生物Id |
|
||
| itemDict | dict | 拾取的物品的<a href="../../../mcguide/20-玩法开发/10-基本概念/1-我的世界基础概念.html#物品信息字典#物品信息字典">物品信息字典</a> |
|
||
| secondaryActor | str | 物品给予者id(一般是玩家),如果不存在给予者的话,这里为空字符串 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityStartRidingEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
当实体骑乘上另一个实体时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| id | str | 乘骑者实体id |
|
||
| rideId | str | 被乘骑者实体id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityStopRidingEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span><span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
<span id="server"></span>
|
||
### 服务端事件
|
||
|
||
- 描述
|
||
|
||
触发时机:当实体停止骑乘时
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| 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. 切换维度
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
<span id="client"></span>
|
||
### 客户端事件
|
||
|
||
- 描述
|
||
|
||
触发时机:当实体停止骑乘时
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| 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. 切换维度
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## EntityTickServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
实体tick时触发。该事件为20帧每秒。需要使用AddEntityTickEventWhiteList添加触发该事件的实体类型白名单。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体id |
|
||
| identifier | str | 实体identifier |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
### 相关接口
|
||
|
||
<span id="AddEntityTickEventWhiteList"></span>
|
||
### AddEntityTickEventWhiteList
|
||
|
||
method in mod.server.extraServerApi
|
||
|
||
- 描述
|
||
|
||
添加实体类型到EntityTickServerEvent事件的触发白名单。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| identifier | str | 实体的类型名,原版的实体需要加上minecraft命名空间 |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否成功 |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.server.extraServerApi as serverApi
|
||
# 让牛触发EntityTickServerEvent事件
|
||
serverApi.AddEntityTickEventWhiteList('minecraft:cow')
|
||
```
|
||
|
||
|
||
|
||
## HealthChangeBeforeServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
生物生命值发生变化之前触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体id |
|
||
| from | float | 变化前的生命值 |
|
||
| to | float | 将要变化到的生命值,cancel设置为True时可以取消该变化,但是此参数不变 |
|
||
| byScript | bool | 是否通过SetAttrValue或SetAttrMaxValue调用产生的变化 |
|
||
| cancel | bool | 是否取消该变化 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## HealthChangeClientEvent
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
- 描述
|
||
|
||
生物生命值发生变化时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体id |
|
||
| from | float | 变化前的生命值 |
|
||
| to | float | 变化后的生命值 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## HealthChangeServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
生物生命值发生变化时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体id |
|
||
| from | float | 变化前的生命值 |
|
||
| to | float | 变化后的生命值 |
|
||
| byScript | bool | 是否通过SetAttrValue或SetAttrMaxValue调用产生的变化 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## LeaveEntityClientEvent
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
- 描述
|
||
|
||
玩家远离生物时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| playerId | str | 玩家实体id |
|
||
| entityId | str | 远离的生物实体id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## MobDieEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
实体死亡时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| id | str | 实体id |
|
||
| attacker | str | 伤害来源id |
|
||
| cause | str | 伤害来源,详见Minecraft枚举值文档的[ActorDamageCause](../枚举值/ActorDamageCause.md) |
|
||
| customTag | str | 使用[Hurt接口](../接口/实体/行为.md#hurt)传入的自定义伤害类型 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 注意:不能在该事件回调中对此玩家手持物品进行修改,如[SpawnItemToPlayerCarried](../接口/玩家/背包.md#spawnitemtoplayercarried)、[ChangePlayerItemTipsAndExtraId](../接口/玩家/背包.md#changeplayeritemtipsandextraId)等接口
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## MobGriefingBlockServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
环境生物改变方块时触发,触发的时机与mobgriefing游戏规则影响的行为相同
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| cancel | bool | 是否允许触发,默认为False,若设为True,可阻止触发后续物理交互事件 |
|
||
| blockX | int | 方块x坐标 |
|
||
| blockY | int | 方块y坐标 |
|
||
| blockZ | int | 方块z坐标 |
|
||
| entityId | str | 触发的entity的唯一ID |
|
||
| blockName | str | 方块的identifier,包含命名空间及名称 |
|
||
| dimensionId | int | 维度id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 触发的时机包括:生物踩踏耕地、破坏单个方块、破门、火矢点燃方块、凋灵boss破坏方块、末影龙破坏方块、末影人捡起方块、蠹虫破坏被虫蚀的方块、蠹虫把方块变成被虫蚀的方块、凋零杀死生物生成凋零玫瑰、生物踩坏海龟蛋。
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## OnFireHurtEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
生物受到火焰伤害时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| victim | str | 受伤实体id |
|
||
| src | str | 火焰创建者id |
|
||
| fireTime | float | 着火时间,单位秒, 不支持修改 |
|
||
| cancel | bool | 是否取消此处火焰伤害 |
|
||
| cancelIgnite | bool | 是否取消点燃效果 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## OnGroundClientEvent
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
- 描述
|
||
|
||
实体着地事件。玩家,沙子,铁砧,掉落的物品,点燃的TNT掉落地面时触发,其余实体着地不触发。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| id | str | 实体id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 因为掉落是服务端与客户端各自计算的,对于掉落的方块,有时会出现服务端先着地,然后把FallingBlock实体移除掉了,导致客户端没触发着地事件的情况。
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## OnGroundServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
实体着地事件。实体,掉落的物品,点燃的TNT掉落地面时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| id | str | 实体id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 不支持抛射物实体
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## OnKnockBackServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
实体被击退时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| id | str | 实体id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## OnMobHitBlockServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:通过OpenMobHitBlockDetection打开方块碰撞检测后,当生物(不包括玩家)碰撞到方块时触发该事件。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 碰撞到方块的生物Id |
|
||
| posX | int | 碰撞方块x坐标 |
|
||
| posY | int | 碰撞方块y坐标 |
|
||
| posZ | int | 碰撞方块z坐标 |
|
||
| blockId | str | 碰撞方块的identifier |
|
||
| auxValue | int | 碰撞方块的附加值 |
|
||
| dimensionId | int | 维度id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
### 相关接口
|
||
|
||
<span id="OpenMobHitBlockDetection"></span>
|
||
### OpenMobHitBlockDetection
|
||
|
||
method in mod.server.component.gameCompServer.GameComponentServer
|
||
|
||
- 描述
|
||
|
||
开启碰撞方块的检测,开启后,生物(不包括玩家)碰撞到方块时会触发OnMobHitBlockServerEvent事件
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 生物的实体Id |
|
||
| precision | float | 碰撞检测精度,参数需要在区间[0, 1),值越小,表示碰撞检测精度越高(可以理解为轻轻碰一下就能触发) |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否设置成功 |
|
||
|
||
- 备注
|
||
- 注:该碰撞检测会屏蔽草、空气、火、高草四种方块
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.server.extraServerApi as serverApi
|
||
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
|
||
comp.OpenMobHitBlockDetection("-123456",0.0001)
|
||
```
|
||
|
||
|
||
|
||
<span id="CloseMobHitBlockDetection"></span>
|
||
### CloseMobHitBlockDetection
|
||
|
||
method in mod.server.component.gameCompServer.GameComponentServer
|
||
|
||
- 描述
|
||
|
||
关闭碰撞方块的检测,关闭后,生物(不包括玩家)碰撞到方块时将不会触发OnMobHitBlockServerEvent事件
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 生物的实体Id |
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否设置成功 |
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.server.extraServerApi as serverApi
|
||
comp = serverApi.GetEngineCompFactory().CreateGame(levelId)
|
||
comp.CloseMobHitBlockDetection("-123456")
|
||
```
|
||
|
||
|
||
|
||
## OnMobHitMobClientEvent
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:通过OpenPlayerHitMobDetection打开生物碰撞检测后,当生物间(包含玩家)碰撞时触发该事件。注:客户端和服务端分别作碰撞检测,可能两个事件返回的略有差异。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| mobId | str | 当前生物的id |
|
||
| hittedMobList | list[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', [])
|
||
```
|
||
|
||
|
||
|
||
### 相关接口
|
||
|
||
<span id="OpenPlayerHitMobDetection"></span>
|
||
### OpenPlayerHitMobDetection
|
||
|
||
method in mod.client.component.playerCompClient.PlayerCompClient
|
||
|
||
- 描述
|
||
|
||
开启对其他生物的碰撞检测,开启后和生物间发生碰撞时会触发OnMobHitMobClientEvent事件。(该接口对生物同样有效)
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否开启成功 |
|
||
|
||
- 备注
|
||
- 该接口对生物同样有效
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.client.extraClientApi as clientApi
|
||
comp = clientApi.GetEngineCompFactory().CreatePlayer(playerId)
|
||
comp.OpenPlayerHitMobDetection()
|
||
```
|
||
|
||
|
||
|
||
<span id="ClosePlayerHitMobDetection"></span>
|
||
### ClosePlayerHitMobDetection
|
||
|
||
method in mod.client.component.playerCompClient.PlayerCompClient
|
||
|
||
- 描述
|
||
|
||
关闭碰撞生物的检测,关闭后将不会触发OnMobHitMobClientEvent事件。(该接口对生物同样有效)
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否关闭成功 |
|
||
|
||
- 备注
|
||
- 该接口对生物同样有效
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.client.extraClientApi as clientApi
|
||
comp = clientApi.GetEngineCompFactory().CreatePlayer(playerId)
|
||
comp.ClosePlayerHitMobDetection()
|
||
```
|
||
|
||
|
||
|
||
## OnMobHitMobServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:通过OpenPlayerHitMobDetection打开生物碰撞检测后,当生物间(包含玩家)碰撞时触发该事件。注:客户端和服务端分别作碰撞检测,可能两个事件返回的略有差异。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| mobId | str | 当前生物的id |
|
||
| hittedMobList | list[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', [])
|
||
```
|
||
|
||
|
||
|
||
### 相关接口
|
||
|
||
<span id="OpenPlayerHitMobDetection"></span>
|
||
### OpenPlayerHitMobDetection
|
||
|
||
method in mod.server.component.playerCompServer.PlayerCompServer
|
||
|
||
- 描述
|
||
|
||
开启对其他生物的碰撞检测,开启后和生物间发生碰撞时会触发OnMobHitMobServerEvent事件。(该接口对生物同样有效)
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否开启成功 |
|
||
|
||
- 备注
|
||
- 该接口对生物同样有效
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.server.extraServerApi as serverApi
|
||
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
|
||
comp.OpenPlayerHitMobDetection()
|
||
```
|
||
|
||
|
||
|
||
<span id="ClosePlayerHitMobDetection"></span>
|
||
### ClosePlayerHitMobDetection
|
||
|
||
method in mod.server.component.playerCompServer.PlayerCompServer
|
||
|
||
- 描述
|
||
|
||
关闭碰撞生物的检测,关闭后将不会触发OnMobHitMobServerEvent事件。
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
| <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- |
|
||
| bool | 是否关闭成功 |
|
||
|
||
- 备注
|
||
- 该接口对生物同样有效
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.server.extraServerApi as serverApi
|
||
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
|
||
comp.ClosePlayerHitMobDetection()
|
||
```
|
||
|
||
|
||
|
||
## ProjectileCritHitEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:当抛射物与头部碰撞时触发该事件。注:需调用OpenPlayerCritBox开启玩家爆头后才能触发。
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| id | str | 抛射物id |
|
||
| targetId | str | 碰撞目标id |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
### 相关接口
|
||
|
||
<span id="OpenPlayerCritBox"></span>
|
||
### OpenPlayerCritBox
|
||
|
||
method in mod.server.component.playerCompServer.PlayerCompServer
|
||
|
||
- 描述
|
||
|
||
开启玩家爆头,开启后该玩家头部被击中后会触发ProjectileCritHitEvent事件。
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.server.extraServerApi as serverApi
|
||
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
|
||
comp.OpenPlayerCritBox()
|
||
```
|
||
|
||
|
||
|
||
<span id="ClosePlayerCritBox"></span>
|
||
### ClosePlayerCritBox
|
||
|
||
method in mod.server.component.playerCompServer.PlayerCompServer
|
||
|
||
- 描述
|
||
|
||
关闭玩家爆头,关闭后将无法触发ProjectileCritHitEvent事件。
|
||
|
||
- 参数
|
||
|
||
无
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 示例
|
||
|
||
```python
|
||
import mod.server.extraServerApi as serverApi
|
||
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
|
||
comp.ClosePlayerCritBox()
|
||
```
|
||
|
||
|
||
|
||
## ProjectileDoHitEffectEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:当抛射物碰撞时触发该事件
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| id | str | 抛射物id |
|
||
| hitTargetType | str | 碰撞目标类型,'ENTITY'或是'BLOCK' |
|
||
| targetId | str | 碰撞目标id |
|
||
| hitFace | int | 撞击在方块上的面id,参考[Facing枚举](../枚举值/Facing.md) |
|
||
| x | float | 碰撞x坐标 |
|
||
| y | float | 碰撞y坐标 |
|
||
| z | float | 碰撞z坐标 |
|
||
| blockPosX | int | 碰撞是方块时,方块x坐标 |
|
||
| blockPosY | int | 碰撞是方块时,方块y坐标 |
|
||
| blockPosZ | int | 碰撞是方块时,方块z坐标 |
|
||
| srcId | str | 创建者id |
|
||
| cancel | bool | 是否取消这个碰撞事件,若取消可以设置为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
|
||
```
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## RefreshEffectServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:实体身上状态效果更新时触发,更新条件1、新增状态等级较高,更新状态等级及时间;2、新增状态等级不变,时间较长,更新状态持续时间
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体id |
|
||
| effectName | str | 更新状态效果的名字 |
|
||
| effectDuration | int | 更新后状态效果剩余持续时间,单位秒 |
|
||
| effectAmplifier | int | 更新后的状态效果放大倍数 |
|
||
| damage | float | 状态造成的伤害值,如药水 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## RemoveEffectServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:实体身上状态效果被移除时
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体id |
|
||
| effectName | str | 被移除状态效果的名字 |
|
||
| effectDuration | int | 被移除状态效果的剩余持续时间,单位秒 |
|
||
| effectAmplifier | int | 被移除状态效果的放大倍数 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## SpawnProjectileServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:抛射物生成时触发
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| projectileId | str | 抛射物的实体id |
|
||
| projectileIdentifier | str | 抛射物的identifier |
|
||
| spawnerId | str | 发射者的实体id,没有发射者时为-1 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 该事件里无法获取弹射物实体的auxvalue。如有需要可以延迟一帧获取,或者在ProjectileDoHitEffectEvent获取
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## StartRidingClientEvent
|
||
|
||
<span style="display:inline;color:#7575f9">客户端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:一个实体即将骑乘另外一个实体
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| actorId | str | 骑乘者的唯一ID |
|
||
| victimId | str | 被骑乘实体的唯一ID |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 如果需要修改cancel,请通过服务端事件StartRidingServerEvent同步修改,客户端触发该事件时,实体已经骑乘成功。
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## StartRidingServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:一个实体即将骑乘另外一个实体
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| cancel | bool | 是否允许触发,默认为False,若设为True,可阻止触发后续的实体交互事件 |
|
||
| actorId | str | 骑乘者的唯一ID |
|
||
| victimId | str | 被骑乘实体的唯一ID |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## WillAddEffectServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
触发时机:实体即将获得状态效果前
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| entityId | str | 实体id |
|
||
| effectName | str | 实体获得状态效果的名字 |
|
||
| effectDuration | int | 状态效果的持续时间,单位秒 |
|
||
| effectAmplifier | int | 状态效果的放大倍数 |
|
||
| cancel | bool | 设置为True可以取消 |
|
||
| damage | float | 状态将会造成的伤害值,如药水;需要注意,该值不一定是最终的伤害值,例如被伤害吸收效果扣除。只有持续时间为0时有用 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|
||
## WillTeleportToServerEvent
|
||
|
||
<span style="display:inline;color:#ff5555">服务端</span>
|
||
|
||
- 描述
|
||
|
||
实体即将传送或切换维度
|
||
|
||
- 参数
|
||
|
||
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
|
||
| :--- | :--- | :--- |
|
||
| 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 |
|
||
|
||
- 返回值
|
||
|
||
无
|
||
|
||
- 备注
|
||
- 假如目标维度尚未在内存中创建(即服务器启动之后,到传送之前,没有玩家进入过这个维度),那么此时事件中返回的目标地点坐标是算法生成的,不能保证正确。
|
||
|
||
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/12-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
|
||
|
||
|