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

957 lines
34 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
sidebarDepth: 1
---
# 玩家
# 索引
| 事件 | <div style="width: 3em"></div> | 描述 |
| --- | --- | --- |
| [AddExpEvent](玩家.md#addexpevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:当玩家增加经验时触发该事件。 |
| [AddLevelEvent](玩家.md#addlevelevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:当玩家升级时触发该事件。 |
| [ChangeLevelUpCostServerEvent](玩家.md#changelevelupcostserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:获取玩家下一个等级升级经验时,用于重载玩家的升级经验,每个等级在重置之前都只会触发一次 |
| [DimensionChangeClientEvent](玩家.md#dimensionchangeclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 玩家维度改变时客户端抛出 |
| [DimensionChangeFinishClientEvent](玩家.md#dimensionchangefinishclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 玩家维度改变完成后客户端抛出 |
| [DimensionChangeFinishServerEvent](玩家.md#dimensionchangefinishserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 玩家维度改变完成后服务端抛出 |
| [DimensionChangeServerEvent](玩家.md#dimensionchangeserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 玩家维度改变时服务端抛出 |
| [ExtinguishFireClientEvent](玩家.md#extinguishfireclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 玩家扑灭火焰时触发。下雨,倒水等方式熄灭火焰不会触发。 |
| [ExtinguishFireServerEvent](玩家.md#extinguishfireserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 玩家扑灭火焰时触发。下雨,倒水等方式熄灭火焰不会触发。 |
| [GameTypeChangedClientEvent](玩家.md#gametypechangedclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 个人游戏模式发生变化时客户端触发。 |
| [GameTypeChangedServerEvent](玩家.md#gametypechangedserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 个人游戏模式发生变化时服务端触发。 |
| [OnPlayerHitBlockClientEvent](玩家.md#onplayerhitblockclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 触发时机通过OpenPlayerHitBlockDetection打开方块碰撞检测后当玩家碰撞到方块时触发该事件。玩家着地时会触发OnGroundClientEvent而不是该事件。客户端和服务端分别作碰撞检测可能两个事件返回的结果略有差异。 |
| [OnPlayerHitBlockServerEvent](玩家.md#onplayerhitblockserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机通过OpenPlayerHitBlockDetection打开方块碰撞检测后当玩家碰撞到方块时触发该事件。监听玩家着地请使用客户端的OnGroundClientEvent。客户端和服务端分别作碰撞检测可能两个事件返回的略有差异。 |
| [PerspChangeClientEvent](玩家.md#perspchangeclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 视角切换时会触发的事件 |
| [PlayerAttackEntityEvent](玩家.md#playerattackentityevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:当玩家攻击时触发该事件。 |
| [PlayerCheatSpinAttackServerEvent](玩家.md#playercheatspinattackserverevent) | <span style="display:inline;color:#ff5555">Apollo</span> | 触发时机:玩家开始/结束快速旋转攻击并且不符合发送快速旋转攻击条件时触发(装备激流附魔的三叉戟、在水中或雨中,且未骑乘) |
| [PlayerDieEvent](玩家.md#playerdieevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:当玩家死亡时触发该事件。 |
| [PlayerDoInteractServerEvent](玩家.md#playerdointeractserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 玩家与有minecraft:interact组件的生物交互时触发该事件例如玩家手持空桶对牛挤奶、玩家手持打火石点燃苦力怕 |
| [PlayerEatFoodServerEvent](玩家.md#playereatfoodserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:玩家吃下食物时触发 |
| [PlayerHurtEvent](玩家.md#playerhurtevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:当玩家受伤害前触发该事件。 |
| [PlayerInteractServerEvent](玩家.md#playerinteractserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:玩家可以与实体交互时。如果是鼠标控制模式,则当准心对着实体时触发。如果是触屏模式,则触发时机与屏幕下方的交互按钮显示的时机相同。玩家真正与实体发生交互的事件见[PlayerDoInteractServerEvent](#playerdointeractserverevent) |
| [PlayerRespawnEvent](玩家.md#playerrespawnevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:玩家复活时触发该事件。 |
| [PlayerRespawnFinishServerEvent](玩家.md#playerrespawnfinishserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:玩家复活完毕时触发 |
| [PlayerSleepServerEvent](玩家.md#playersleepserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 玩家使用床睡觉成功 |
| [PlayerSpinAttackServerEvent](玩家.md#playerspinattackserverevent) | <span style="display:inline;color:#ff5555">Apollo</span> | 触发时机:玩家开始/结束快速旋转攻击时触发 |
| [PlayerStopSleepServerEvent](玩家.md#playerstopsleepserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 玩家停止睡觉 |
| [PlayerTeleportEvent](玩家.md#playerteleportevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机当玩家传送时触发该事件玩家使用末影珍珠或tp指令时。 |
| [PlayerTrySleepServerEvent](玩家.md#playertrysleepserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 玩家尝试使用床睡觉 |
| [ServerPlayerGetExperienceOrbEvent](玩家.md#serverplayergetexperienceorbevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:玩家获取经验球时触发的事件 |
| [StoreBuySuccServerEvent](玩家.md#storebuysuccserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:玩家游戏内购买商品时服务端抛出的事件 |
# 玩家
## AddExpEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:当玩家增加经验时触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 玩家id |
| addExp | int | 增加的经验值 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## AddLevelEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:当玩家升级时触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 玩家id |
| addLevel | int | 增加的等级值 |
| newLevel | int | 新的等级 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## ChangeLevelUpCostServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:获取玩家下一个等级升级经验时,用于重载玩家的升级经验,每个等级在重置之前都只会触发一次
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| level | int | 玩家当前等级 |
| levelUpCostExp | int | 当前等级升级到下个等级需要的经验值当设置升级经验小于1时会被强制调整到1 |
| changed | bool | 设置为True重载玩家升级经验才会生效 |
- 返回值
### 相关接口
<span id="ClearDefinedLevelUpCost"></span>
### ClearDefinedLevelUpCost
method in mod.server.component.playerCompServer.PlayerCompServer
- 描述
接口用于重置升级经验。使用ChangeLevelUpCostServerEvent事件设置升级经验后升级经验无法调整。需要调整升级经验时可使用该接口。使用步骤如下1、使用ClearDefineLevelUpconst2、在升级抛出ChangeLevelUpCostServerEvent事件后重新设置经验。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| level | int | 指定清理的等级加入传入的数值小于0则清理所有等级的升级经验值缓存 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否清理成功。 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
suc = comp.ClearDefinedLevelUpCost(1)
```
## DimensionChangeClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
玩家维度改变时客户端抛出
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家实体id |
| fromDimensionId | int | 维度改变前的维度 |
| toDimensionId | int | 维度改变后的维度 |
| fromX | float | 改变前的位置x |
| fromY | float | 改变前的位置Y |
| fromZ | float | 改变前的位置Z |
| toX | float | 改变后的位置x |
| toY | float | 改变后的位置Y |
| toZ | float | 改变后的位置Z |
- 返回值
- 备注
- 当通过传送门从末地回到主世界时toY值为32767其他情况一般会比设置值高1.62
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## DimensionChangeFinishClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
玩家维度改变完成后客户端抛出
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家实体id |
| fromDimensionId | int | 维度改变前的维度 |
| toDimensionId | int | 维度改变后的维度 |
| toPos | tuple(float,float,float) | 改变后的位置x,y,z,其中y值为脚底加上角色的身高值 |
- 返回值
- 备注
- 当通过传送门从末地回到主世界时toPos的y值为32767其他情况一般会比设置值高1.62
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## DimensionChangeFinishServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
玩家维度改变完成后服务端抛出
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家实体id |
| fromDimensionId | int | 维度改变前的维度 |
| toDimensionId | int | 维度改变后的维度 |
| toPos | tuple(float,float,float) | 改变后的位置x,y,z,其中y值为脚底加上角色的身高值 |
- 返回值
- 备注
- 当通过传送门从末地回到主世界时toPos的y值为32767其他情况一般会比设置值高1.62
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## DimensionChangeServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
玩家维度改变时服务端抛出
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家实体id |
| fromDimensionId | int | 维度改变前的维度 |
| toDimensionId | int | 维度改变后的维度 |
| fromX | float | 改变前的位置x |
| fromY | float | 改变前的位置Y |
| fromZ | float | 改变前的位置Z |
| toX | float | 改变后的位置x |
| toY | float | 改变后的位置Y |
| toZ | float | 改变后的位置Z |
- 返回值
- 备注
- 当通过传送门从末地回到主世界时toY值为32767其他情况一般会比设置值高1.62
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## ExtinguishFireClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
玩家扑灭火焰时触发。下雨,倒水等方式熄灭火焰不会触发。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| pos | tuple(float,float,float) | 火焰方块的坐标 |
| playerId | str | 玩家id |
| cancel | bool | 修改为True时可阻止玩家扑灭火焰。需要与ExtinguishFireServerEvent一起修改。 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## ExtinguishFireServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
玩家扑灭火焰时触发。下雨,倒水等方式熄灭火焰不会触发。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| pos | tuple(float,float,float) | 火焰方块的坐标 |
| playerId | str | 玩家id |
| cancel | bool | 修改为True时可阻止玩家扑灭火焰。需要与ExtinguishFireClientEvent一起修改。 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## GameTypeChangedClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
个人游戏模式发生变化时客户端触发。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家Id |
| oldGameType | int | 切换前的游戏模式 |
| newGameType | int | 切换后的游戏模式 |
- 返回值
- 备注
- 游戏模式GetMinecraftEnum().GameType.*:SurvivalCreativeAdventure分别为0~2
默认游戏模式发生变化时最后反映在个人游戏模式之上。
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## GameTypeChangedServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
个人游戏模式发生变化时服务端触发。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家Id[SetDefaultGameType](../接口/世界/游戏规则.md#SetDefaultGameType)接口改变游戏模式时该参数为空字符串 |
| oldGameType | int | 切换前的游戏模式 |
| newGameType | int | 切换后的游戏模式 |
- 返回值
- 备注
- 游戏模式GetMinecraftEnum().GameType.*:SurvivalCreativeAdventure分别为0~2
默认游戏模式发生变化时最后反映在个人游戏模式之上。
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## OnPlayerHitBlockClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
触发时机通过OpenPlayerHitBlockDetection打开方块碰撞检测后当玩家碰撞到方块时触发该事件。玩家着地时会触发OnGroundClientEvent而不是该事件。客户端和服务端分别作碰撞检测可能两个事件返回的结果略有差异。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 碰撞到方块的玩家Id |
| posX | int | 碰撞方块x坐标 |
| posY | int | 碰撞方块y坐标 |
| posZ | int | 碰撞方块z坐标 |
| blockId | str | 碰撞方块的identifier |
| auxValue | int | 碰撞方块的附加值 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
### 相关接口
<span id="OpenPlayerHitBlockDetection"></span>
### OpenPlayerHitBlockDetection
method in mod.client.component.playerCompClient.PlayerCompClient
- 描述
开启碰撞方块的检测开启后碰撞时会触发OnPlayerHitBlockClientEvent事件
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| precision | float | 碰撞检测精度,参数需要在区间[0, 1) |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 备注
- 注:该碰撞检测会屏蔽草、空气、火、高草四种方块
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.OpenPlayerHitBlockDetection(0.0001)
```
<span id="ClosePlayerHitBlockDetection"></span>
### ClosePlayerHitBlockDetection
method in mod.client.component.playerCompClient.PlayerCompClient
- 描述
关闭碰撞方块的检测关闭后将不会触发OnPlayerHitBlockClientEvent事件
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreatePlayer(entityId)
comp.ClosePlayerHitBlockDetection()
```
## OnPlayerHitBlockServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机通过OpenPlayerHitBlockDetection打开方块碰撞检测后当玩家碰撞到方块时触发该事件。监听玩家着地请使用客户端的OnGroundClientEvent。客户端和服务端分别作碰撞检测可能两个事件返回的略有差异。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 碰撞到方块的玩家Id |
| posX | int | 碰撞方块x坐标 |
| posY | int | 碰撞方块y坐标 |
| posZ | int | 碰撞方块z坐标 |
| blockId | str | 碰撞方块的identifier |
| auxValue | int | 碰撞方块的附加值 |
| dimensionId | int | 维度id |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
### 相关接口
<span id="OpenPlayerHitBlockDetection"></span>
### OpenPlayerHitBlockDetection
method in mod.server.component.playerCompServer.PlayerCompServer
- 描述
开启碰撞方块的检测开启后碰撞时会触发OnPlayerHitBlockServerEvent事件
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| precision | float | 碰撞检测精度,参数需要在区间[0, 1) |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 备注
- 注:该碰撞检测会屏蔽草、空气、火、高草四种方块
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.OpenPlayerHitBlockDetection(0.0001)
```
<span id="ClosePlayerHitBlockDetection"></span>
### ClosePlayerHitBlockDetection
method in mod.server.component.playerCompServer.PlayerCompServer
- 描述
关闭碰撞方块的检测关闭后将不会触发OnPlayerHitBlockServerEvent事件
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否设置成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreatePlayer(playerId)
comp.ClosePlayerHitBlockDetection()
```
## PerspChangeClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
视角切换时会触发的事件
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| from | int | 切换前的视角 |
| to | int | 切换后的视角 |
- 返回值
- 备注
- 视角数字代表含义
0: 第一人称
1: 第三人称背面
2: 第三人称正面
## PlayerAttackEntityEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:当玩家攻击时触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
| victimId | str | 受击者id |
| damage | int | 伤害值引擎传过来的值是0 允许脚本层修改为其他数 |
| isValid | int | 脚本是否设置伤害值1表示是0 表示否 |
| cancel | bool | 是否取消该次攻击,默认不取消 |
| isKnockBack | bool | 是否支持击退效果,默认支持,当不支持时将屏蔽武器击退附魔效果 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerCheatSpinAttackServerEvent
<span style="display:inline;color:#ff5555">仅Apollo可用</span>
- 描述
触发时机:玩家开始/结束快速旋转攻击并且不符合发送快速旋转攻击条件时触发(装备激流附魔的三叉戟、在水中或雨中,且未骑乘)
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家的entityId |
| isStart | bool | True时代表开始快速旋转攻击False时代表结束快速旋转攻击 |
- 返回值
- 备注
- 假如没有自定义类似三叉戟/激流附魔的物品,那么触发此事件说明此有很大可能此玩家使用了【杀戮光环】外挂
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerDieEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:当玩家死亡时触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 玩家id |
| attacker | str | 伤害来源id |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerDoInteractServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
玩家与有minecraft:interact组件的生物交互时触发该事件例如玩家手持空桶对牛挤奶、玩家手持打火石点燃苦力怕
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
| itemDict | dict | 交互时使用物品的<a href="../../../mcguide/20-玩法开发/10-基本概念/1-我的世界基础概念.html#物品信息字典#物品信息字典">物品信息字典</a> |
| interactEntityId | str | 交互的生物entityId |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerEatFoodServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:玩家吃下食物时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家Id |
| itemDict | dict | 食物物品的<a href="../../../mcguide/20-玩法开发/10-基本概念/1-我的世界基础概念.html#物品信息字典#物品信息字典">物品信息字典</a> |
| hunger | int | 食物增加的饥饿值,可修改 |
| nutrition | float | 食物的营养价值,回复饱和度 = 食物增加的饥饿值 * 食物的营养价值 * 2饱和度最大不超过当前饥饿值可修改 |
- 返回值
- 备注
- 吃蛋糕以及喝牛奶不触发该事件
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerHurtEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:当玩家受伤害前触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 受击玩家id |
| attacker | str | 伤害来源实体id若没有实体攻击例如高空坠落id为-1 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerInteractServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:玩家可以与实体交互时。如果是鼠标控制模式,则当准心对着实体时触发。如果是触屏模式,则触发时机与屏幕下方的交互按钮显示的时机相同。玩家真正与实体发生交互的事件见[PlayerDoInteractServerEvent](#playerdointeractserverevent)
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| cancel | bool | 是否取消触发默认为False若设为True可阻止触发后续的实体交互事件 |
| playerId | str | 主动与实体互动的玩家的唯一ID |
| itemDict | dict | 当前玩家手持物品的<a href="../../../mcguide/20-玩法开发/10-基本概念/1-我的世界基础概念.html#物品信息字典#物品信息字典">物品信息字典</a> |
| victimId | str | 被动的实体的唯一ID |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerRespawnEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:玩家复活时触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 玩家id |
- 返回值
- 备注
- 该事件为玩家点击重生按钮时触发,但是触发时玩家可能尚未完成复活,此时请勿对玩家进行切维度或设置生命值等操作
一般情况下推荐使用PlayerRespawnFinishServerEvent
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerRespawnFinishServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:玩家复活完毕时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
- 备注
- 该事件触发时玩家已重生完毕,可以安全使用切维度等操作
- 通过末地传送门回到主世界时也算重生,同样也会触发该事件
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerSleepServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
玩家使用床睡觉成功
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerSpinAttackServerEvent
<span style="display:inline;color:#ff5555">仅Apollo可用</span>
- 描述
触发时机:玩家开始/结束快速旋转攻击时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家的entityId |
| isInWaterOrRain | bool | 是否在水中或雨中 |
| isRiding | bool | 是否骑乘状态 |
| isStart | bool | True时代表开始快速旋转攻击False时代表结束快速旋转攻击 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerStopSleepServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
玩家停止睡觉
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerTeleportEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机当玩家传送时触发该事件玩家使用末影珍珠或tp指令时。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 玩家id |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerTrySleepServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
玩家尝试使用床睡觉
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
| cancel | bool | 是否取消(开发者传入) |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## ServerPlayerGetExperienceOrbEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:玩家获取经验球时触发的事件
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
| experienceValue | int | 经验球经验值 |
| cancel | bool | 是否取消(开发者传入) |
- 返回值
- 备注
- `cancel`值设为True时捡起的经验球不会增加经验值但是经验球一样会消失。
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## StoreBuySuccServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:玩家游戏内购买商品时服务端抛出的事件
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 购买商品的玩家实体id |
- 返回值
- 示例
```python
import mod.server.extraServerApi as serverApi
self.ListenForEvent(serverApi.GetEngineNamespace(),serverApi.GetEngineSystemName(),
"StoreBuySuccServerEvent",
self, self.OnStoreBuySucc)
def OnStoreBuySucc(self, args):
entityId = args['playerId']
print 'Ship Item.EntityId:', playerId
```
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>