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

1219 lines
41 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> | 描述 |
| --- | --- | --- |
| [AchievementCompleteEvent](世界.md#achievementcompleteevent) | <span style="display:inline;color:#ff5555">服务端</span> | 玩家完成自定义成就时触发该事件 |
| [AddEntityClientEvent](世界.md#addentityclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 客户端侧创建新实体时触发 |
| [AddEntityServerEvent](世界.md#addentityserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 服务端侧创建新实体,或实体从存档加载时触发 |
| [AddPlayerAOIClientEvent](世界.md#addplayeraoiclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 玩家加入游戏或者其余玩家进入当前玩家所在的区块时触发的AOI事件替换AddPlayerEvent |
| [AddPlayerCreatedClientEvent](世界.md#addplayercreatedclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 玩家进入当前玩家所在的区块AOI后玩家皮肤数据异步加载完成后触发的事件 |
| [AddServerPlayerEvent](世界.md#addserverplayerevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:玩家加入时触发该事件。 |
| [ChunkAcquireDiscardedClientEvent](世界.md#chunkacquirediscardedclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 触发时机:客户端区块即将被卸载时 |
| [ChunkAcquireDiscardedServerEvent](世界.md#chunkacquirediscardedserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 服务端区块即将被卸载时触发 |
| [ChunkGeneratedServerEvent](世界.md#chunkgeneratedserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:区块创建完成时触发 |
| [ChunkLoadedClientEvent](世界.md#chunkloadedclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 触发时机:客户端区块加载完成时 |
| [ChunkLoadedServerEvent](世界.md#chunkloadedserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:服务端区块加载完成时 |
| [ClientLoadAddonsFinishServerEvent](世界.md#clientloadaddonsfinishserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机客户端mod加载完成时服务端触发此事件。服务器可以使用此事件往客户端发送数据给其初始化。 |
| [CommandEvent](世界.md#commandevent) | <span style="display:inline;color:#ff5555">服务端</span> | 玩家请求执行指令时触发 |
| [DelServerPlayerEvent](世界.md#delserverplayerevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:删除玩家时触发该事件。 |
| [EntityRemoveEvent](世界.md#entityremoveevent) | <span style="display:inline;color:#ff5555">服务端</span> | 实体被删除时触发 |
| [ExplosionServerEvent](世界.md#explosionserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 当发生爆炸时触发。 |
| [LoadClientAddonScriptsAfter](世界.md#loadclientaddonscriptsafter) | <span style="display:inline;color:#7575f9">客户端</span> | 客户端加载mod完成事件 |
| [LoadServerAddonScriptsAfter](世界.md#loadserveraddonscriptsafter) | <span style="display:inline;color:#ff5555">服务端</span> | 服务器加载完mod时触发 |
| [NewOnEntityAreaEvent](世界.md#newonentityareaevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机通过RegisterEntityAOIEvent注册过AOI事件后当有实体进入或离开注册感应区域时触发该事件。 |
| [OnCommandOutputClientEvent](世界.md#oncommandoutputclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 当command命令有成功消息输出时触发 |
| [OnCommandOutputServerEvent](世界.md#oncommandoutputserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | Command命令执行成功事件 |
| [OnContainerFillLoottableServerEvent](世界.md#oncontainerfillloottableserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机随机奖励箱第一次打开根据loottable生成物品时 |
| [OnLightningLevelChangeServerEvent](世界.md#onlightninglevelchangeserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 打雷强度发生改变 |
| [OnLocalLightningLevelChangeServerEvent](世界.md#onlocallightninglevelchangeserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 独立维度天气打雷强度发生改变时触发 |
| [OnLocalPlayerStopLoading](世界.md#onlocalplayerstoploading) | <span style="display:inline;color:#7575f9">客户端</span> | 触发时机:玩家进入存档,出生点地形加载完成时触发。该事件触发时可以进行切换维度的操作。 |
| [OnLocalRainLevelChangeServerEvent](世界.md#onlocalrainlevelchangeserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 独立维度天气下雨强度发生改变时触发 |
| [OnRainLevelChangeServerEvent](世界.md#onrainlevelchangeserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 下雨强度发生改变 |
| [OnScriptTickClient](世界.md#onscripttickclient) | <span style="display:inline;color:#7575f9">客户端</span> | 客户端tick事件,1秒30次 |
| [OnScriptTickServer](世界.md#onscripttickserver) | <span style="display:inline;color:#ff5555">服务端</span> | 服务器tick时触发,1秒有30个tick |
| [PlaceNeteaseStructureFeatureEvent](世界.md#placeneteasestructurefeatureevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:首次生成地形时,结构特征即将生成时服务端抛出该事件。 |
| [PlayerIntendLeaveServerEvent](世界.md#playerintendleaveserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机即将删除玩家时触发该事件此时可以通过各种API获取玩家的当前状态。 |
| [PlayerJoinMessageEvent](世界.md#playerjoinmessageevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机准备显示“xxx加入游戏”的玩家登录提示文字时服务端抛出的事件。 |
| [PlayerLeftMessageServerEvent](世界.md#playerleftmessageserverevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机准备显示“xxx离开游戏”的玩家离开提示文字时服务端抛出的事件。 |
| [RemoveEntityClientEvent](世界.md#removeentityclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 客户端侧实体被移除时触发 |
| [RemovePlayerAOIClientEvent](世界.md#removeplayeraoiclientevent) | <span style="display:inline;color:#7575f9">客户端</span> | 玩家离开当前玩家同一个区块时触发AOI事件 |
| [ServerChatEvent](世界.md#serverchatevent) | <span style="display:inline;color:#ff5555">服务端</span> | 玩家发送聊天信息时触发 |
| [ServerPostBlockPatternEvent](世界.md#serverpostblockpatternevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:用方块组合生成生物,生成生物之后触发该事件。 |
| [ServerPreBlockPatternEvent](世界.md#serverpreblockpatternevent) | <span style="display:inline;color:#ff5555">服务端</span> | 触发时机:用方块组合生成生物,在放置最后一个组成方块时触发该事件。 |
| [ServerSpawnMobEvent](世界.md#serverspawnmobevent) | <span style="display:inline;color:#ff5555">服务端</span> | 游戏内自动生成生物以及使用api生成生物时触发 |
| [UnLoadClientAddonScriptsBefore](世界.md#unloadclientaddonscriptsbefore) | <span style="display:inline;color:#7575f9">客户端</span> | 客户端卸载mod之前触发 |
# 世界
## AchievementCompleteEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
玩家完成自定义成就时触发该事件
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
| rootNodeId | str | 所属的页面的根节点成就id |
| achievementId | str | 达成的成就id |
| title | str | 成就标题 |
| description | str | 成就描述 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## AddEntityClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
客户端侧创建新实体时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 实体id |
| posX | float | 位置x |
| posY | float | 位置y |
| posZ | float | 位置z |
| dimensionId | int | 实体维度 |
| isBaby | bool | 是否为幼儿 |
| engineTypeStr | str | 实体类型 |
| itemName | str | 物品identifier仅当物品实体时存在该字段 |
| auxValue | int | 物品附加值(仅当物品实体时存在该字段) |
- 返回值
- 备注
- 创建玩家时不会触发该事件
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## AddEntityServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
服务端侧创建新实体,或实体从存档加载时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 实体id |
| posX | float | 位置x |
| posY | float | 位置y |
| posZ | float | 位置z |
| dimensionId | int | 实体维度 |
| isBaby | bool | 是否为幼儿 |
| engineTypeStr | str | 实体类型即实体identifier |
| itemName | str | 物品identifier仅当物品实体时存在该字段 |
| auxValue | int | 物品附加值(仅当物品实体时存在该字段) |
- 返回值
- 备注
- 创建玩家时不会触发该事件
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## AddPlayerAOIClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
玩家加入游戏或者其余玩家进入当前玩家所在的区块时触发的AOI事件替换AddPlayerEvent
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
- 备注
- 该事件触发只表明在服务端数据中接收到了新玩家并不能代表此时玩家在客户端中可见若想在玩家进入AOI后立马调用玩家渲染相关接口建议使用[AddPlayerCreatedClientEvent](#addplayercreatedclientevent)。
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## AddPlayerCreatedClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
玩家进入当前玩家所在的区块AOI后玩家皮肤数据异步加载完成后触发的事件
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
- 备注
- 由于玩家皮肤是异步加载的原因,该事件触发时机比[AddPlayerAOIClientEvent](#addplayeraoiclientevent)晚,触发该事件后可以对该玩家调用相关[玩家渲染接口](../接口/玩家/渲染.md)。
- 当前客户端每加载好一个玩家的皮肤就会触发一次该事件比如刚进入世界时localPlayer加载好会触发一次周围的所有玩家加载好后也会分别触发一次。
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## AddServerPlayerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:玩家加入时触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 玩家id |
| isTransfer | bool | 是否是切服时进入服务器仅用于Apollo。如果是True则表示切服时加入服务器若是False则表示登录进入网络游戏 |
| isReconnect | bool | 是否是断线重连仅用于Apollo。如果是True则表示本次登录是断线重连若是False则表示本次是正常登录或者转服 |
| isPeUser | bool | 是否从手机端登录仅用于Apollo。如果是True则表示本次登录是从手机端登录若是False则表示本次登录是从PC端登录 |
| transferParam | str | 切服传入参数仅用于Apollo。调用【TransferToOtherServer】或【TransferToOtherServerById】传入的切服参数 |
| uid | int/long | 仅用于Apollo玩家的netease uid玩家的唯一标识 |
| proxyId | int | 仅用于Apollo当前客户端连接的proxy服务器id |
- 返回值
- 备注
- 触发此事件时客户端mod未加载完毕因此响应本事件时不能客户端发送事件。若需要在玩家进入世界时服务器往客户端发送事件请使用ClientLoadAddonsFinishServerEvent
- 触发此事件时玩家的实体还未加载完毕请勿在这时切换维度。请在客户端监听OnLocalPlayerStopLoading事件并发送事件到server端再进行维度切换。
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## ChunkAcquireDiscardedClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
触发时机:客户端区块即将被卸载时
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| dimension | int | 区块所在维度 |
| chunkPosX | int | 区块的x坐标对应方块X坐标区间为[x * 16, x * 16 + 15] |
| chunkPosZ | int | 区块的z坐标对应方块Z坐标区间为[z * 16, z * 16 + 15] |
- 返回值
- 备注
- 区块卸载:游戏只会加载玩家周围的区块,玩家移动到别的区域时,原来所在区域的区块会被卸载,参考[区块介绍](https://minecraft-zh.gamepedia.com/%E5%8C%BA%E5%9D%97)
## ChunkAcquireDiscardedServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
服务端区块即将被卸载时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| dimension | int | 区块所在维度 |
| chunkPosX | int | 区块的x坐标对应方块X坐标区间为[x * 16, x * 16 + 15] |
| chunkPosZ | int | 区块的z坐标对应方块Z坐标区间为[z * 16, z * 16 + 15] |
| entities | list(str) | 随区块卸载而从世界移除的实体id的列表。注意事件触发时已经无法获取到这些实体的信息仅供脚本资源回收用。 |
| blockEntities | list(dict) | 随区块卸载而从世界移除的自定义方块实体的坐标的列表列表元素dict包含posXposYposZ三个int表示自定义方块实体的坐标。注意事件触发时已经无法获取到这些方块实体的信息仅供脚本资源回收用。 |
- 返回值
- 备注
- 区块卸载:游戏只会加载玩家周围的区块,玩家移动到别的区域时,原来所在区域的区块会被卸载,参考[区块介绍](https://minecraft-zh.gamepedia.com/%E5%8C%BA%E5%9D%97)
## ChunkGeneratedServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:区块创建完成时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| dimension | int | 该区块所在的维度 |
| blockEntityData | [{"blockName":str,"posX":int,"posY":int,"posZ":int}...]/None | 该区块中的自定义方块实体列表通常是由自定义特征生成的自定义方块没有自定义方块实体时该值为None |
- 返回值
## ChunkLoadedClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
触发时机:客户端区块加载完成时
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| dimension | int | 区块所在维度 |
| chunkPosX | int | 区块的x坐标对应方块X坐标区间为[x * 16, x * 16 + 15] |
| chunkPosZ | int | 区块的z坐标对应方块Z坐标区间为[z * 16, z * 16 + 15] |
- 返回值
## ChunkLoadedServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:服务端区块加载完成时
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| dimension | int | 区块所在维度 |
| chunkPosX | int | 区块的x坐标对应方块X坐标区间为[x * 16, x * 16 + 15] |
| chunkPosZ | int | 区块的z坐标对应方块Z坐标区间为[z * 16, z * 16 + 15] |
- 返回值
## ClientLoadAddonsFinishServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机客户端mod加载完成时服务端触发此事件。服务器可以使用此事件往客户端发送数据给其初始化。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## CommandEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
玩家请求执行指令时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| entityId | str | 玩家ID |
| command | str | 指令字符串 |
| cancel | bool | 是否取消 |
- 返回值
- 备注
- 该事件是玩家请求执行指令时触发的Hook该事件不响应命令方块的指令和通过modSDK调用的指令阻止玩家的该条指令只需要将cancel设置为True
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## DelServerPlayerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:删除玩家时触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 玩家id |
| isTransfer | bool | 是否是切服时退出服务器仅用于Apollo。如果是True则表示切服时退出服务器若是False则表示退出网络游戏 |
| uid | int/long | 玩家的netease uid玩家的唯一标识 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## EntityRemoveEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
实体被删除时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 实体id |
- 返回值
- 备注
- 触发情景:实体从场景中被删除,例如:生物死亡,生物被[清除](https://minecraft.fandom.com/zh/wiki/%E7%94%9F%E6%88%90#.E6.B8.85.E9.99.A4),玩家退出游戏,船/盔甲架被破坏,掉落物/经验球被捡起或清除
- 当生物随区块卸载时不会触发该事件而是ChunkAcquireDiscardedServerEvent事件
- 关于生物的清除当生物离玩家大于wiki所说的距离并且还在玩家的模拟距离内时会被清除。也就是说如果玩家瞬间传送到远处原处的生物马上离开了模拟距离并不会被清除
- 玩家退出游戏时EntityRemoveEventDelServerPlayerEvent按顺序依次触发
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## ExplosionServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
当发生爆炸时触发。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| blocks | list[[x,y,z,cancel],...] | 爆炸涉及到的方块坐标(x,y,z)cancel是一个bool值 |
| victims | list/None | 受伤实体id列表当该爆炸创建者id为None时victims也为None |
| sourceId | str/None | 爆炸创建者id |
| explodePos | list | 爆炸位置[x,y,z] |
| dimensionId | int | 维度id |
- 返回值
- 备注
- 通过设置blocks中cancel的bool值为True可以将该方块的爆炸取消例如(x,y,z,True)
- 某些情况下爆炸创建者id为None此时受伤实体id列表也为None比如爬行者所造成的爆炸。
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## LoadClientAddonScriptsAfter
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
客户端加载mod完成事件
- 参数
- 返回值
## LoadServerAddonScriptsAfter
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
服务器加载完mod时触发
- 参数
- 返回值
## NewOnEntityAreaEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机通过RegisterEntityAOIEvent注册过AOI事件后当有实体进入或离开注册感应区域时触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| name | str | 注册感应区域名称 |
| enteredEntities | list[str] | 进入该感应区域的实体id列表 |
| leftEntities | list[str] | 离开该感应区域的实体id列表 |
- 返回值
- 备注
- 本事件代替原有的OnEntityAreaEvent事件
- 示例
```python
# ServerSystem
import mod.server.extraServerApi as serverApi
self.ListenForEvent(serverApi.GetEngineNamespace(),
serverApi.GetEngineSystemName(),
"NewOnEntityAreaEvent",
self, self.NewOnEntityAreaEvent)
def NewOnEntityAreaEvent(self, args):
name = args['name']
```
### 相关接口
<span id="RegisterEntityAOIEvent"></span>
### RegisterEntityAOIEvent
method in mod.server.component.dimensionCompServer.DimensionCompServer
- 描述
注册感应区域,有实体进入时和离开时会有消息通知
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| dimension | int | 维度id |
| name | str | 注册的感应区域名 |
| aabb | tuple(float,float,float,float,float,float) | 感应区域的坐标范围依次为minX, minY, minZ, maxX, maxY, maxZ |
| ignoredEntities | list(str) | 忽略的实体id列表 |
| entityType | int | 期望响应的实体类型,不传则响应所有的实体类型[EntityType枚举](../枚举值/EntityType.md) |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 备注
- 注册完感应区域后需通过监听OnEntityAreaEvent或NewOnEntityAreaEvent事件来获取感应事件
- 不支持长或宽大于2000格的区域。对于大范围区域建议在脚本中每隔一段时间获取实体坐标判断来实现。
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateDimension(levelId)
comp.RegisterEntityAOIEvent(0, "test", (0, 0, 0, 1, 1, 1), None)
```
<span id="UnRegisterEntityAOIEvent"></span>
### UnRegisterEntityAOIEvent
method in mod.server.component.dimensionCompServer.DimensionCompServer
- 描述
反注册感应区域
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| dimension | int | 维度id |
| name | str | 需要反注册的感应区域名 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateDimension(levelId)
comp.UnRegisterEntityAOIEvent(0, "test")
```
## OnCommandOutputClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
当command命令有成功消息输出时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| command | str | 命令名称 |
| message | str | 命令返回的消息 |
- 返回值
- 备注
- 部分命令在返回的时候没有命令名称命令组件需要showOutput参数为True时才会有返回
## OnCommandOutputServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
Command命令执行成功事件
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| command | str | 命令名称 |
| message | str | 命令返回的消息 |
- 返回值
- 备注
- 部分命令在返回的时候没有命令名称命令组件需要showOutput参数为True时才会有返回
## OnContainerFillLoottableServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机随机奖励箱第一次打开根据loottable生成物品时
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| loottable | str | 奖励箱子所读取的loottable的json路径 |
| playerId | str | 打开奖励箱子的玩家的playerId |
| itemList | list | 掉落物品列表每个元素为一个itemDict格式可参考<a href="../../../mcguide/20-玩法开发/10-基本概念/1-我的世界基础概念.html#物品信息字典#物品信息字典">物品信息字典</a> |
| dirty | bool | 默认为False如果需要修改掉落列表需将该值设为True |
- 返回值
- 备注
- 只有当dirty为True时才会重新读取item列表并生成对应的掉落物如果不需要修改掉落结果的话请勿随意修改dirty值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## OnLightningLevelChangeServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
打雷强度发生改变
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| oldLevel | float | 改变前的打雷强度 |
| newLevel | float | 改变后的打雷强度 |
- 返回值
## OnLocalLightningLevelChangeServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
独立维度天气打雷强度发生改变时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| oldLevel | float | 改变前的打雷强度 |
| newLevel | float | 改变后的打雷强度 |
| dimensionId | int | 独立天气维度id |
- 返回值
## OnLocalPlayerStopLoading
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
触发时机:玩家进入存档,出生点地形加载完成时触发。该事件触发时可以进行切换维度的操作。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 加载完成的玩家id |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## OnLocalRainLevelChangeServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
独立维度天气下雨强度发生改变时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| oldLevel | float | 改变前的下雨强度 |
| newLevel | float | 改变后的下雨强度 |
| dimensionId | int | 独立天气维度id |
- 返回值
## OnRainLevelChangeServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
下雨强度发生改变
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| oldLevel | float | 改变前的下雨强度 |
| newLevel | float | 改变后的下雨强度 |
- 返回值
## OnScriptTickClient
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
客户端tick事件,1秒30次
- 参数
- 返回值
## OnScriptTickServer
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
服务器tick时触发,1秒有30个tick
- 参数
- 返回值
## PlaceNeteaseStructureFeatureEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:首次生成地形时,结构特征即将生成时服务端抛出该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| structureName | str | 结构名称 |
| x | int | 结构坐标最小方块所在的x坐标 |
| y | int | 结构坐标最小方块所在的y坐标 |
| z | int | 结构坐标最小方块所在的z坐标 |
| biomeType | int | 该feature所放置区块的生物群系类型 |
| biomeName | str | 该feature所放置区块的生物群系名称 |
| dimensionId | int | 维度id |
| cancel | bool | 设置为True时可阻止该结构的放置 |
- 返回值
- 备注
- **需要配合AddNeteaseFeatureWhiteList接口一同使用**
若在本监听事件中调用其他mod SDK接口将无法生效强烈建议本事件仅用于设置结构放置与否
### 相关接口
<span id="AddNeteaseFeatureWhiteList"></span>
### AddNeteaseFeatureWhiteList
method in mod.server.component.featureCompServer.FeatureCompServer
- 描述
添加结构对PlaceNeteaseStructureFeatureEvent事件的脚本层监听
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| structureName | str | 结构的identifier |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否增加成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
# 注意structureName格式为floderName:structureName
comp.AddNeteaseFeatureWhiteList("test:pumpkins")
```
<span id="RemoveNeteaseFeatureWhiteList"></span>
### RemoveNeteaseFeatureWhiteList
method in mod.server.component.featureCompServer.FeatureCompServer
- 描述
移除structureName对PlaceNeteaseStructureFeatureEvent事件的脚本层监听
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| structureName | str | 结构名称 |
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否移除成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
# 注意structureName格式为floderName:structureName
comp.RemoveNeteaseFeatureWhiteList("test:pumpkins")
```
<span id="ClearAllNeteaseFeatureWhiteList"></span>
### ClearAllNeteaseFeatureWhiteList
method in mod.server.component.featureCompServer.FeatureCompServer
- 描述
清空所有已添加Netease Structure Feature对PlaceNeteaseStructureFeatureEvent事件的脚本层监听
- 参数
- 返回值
| <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- |
| bool | 是否清空成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
comp.ClearAllNeteaseFeatureWhiteList()
```
## PlayerIntendLeaveServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机即将删除玩家时触发该事件此时可以通过各种API获取玩家的当前状态。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
- 备注
- 与【DelServerPlayerEvent】事件不同此时可以通过各种API获取玩家的当前状态。
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerJoinMessageEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机准备显示“xxx加入游戏”的玩家登录提示文字时服务端抛出的事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 玩家实体id |
| name | str | 玩家昵称 |
| cancel | bool | 是否显示提示文字允许修改。True不显示提示 |
| message | str | 玩家加入游戏的提示文字,允许修改 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## PlayerLeftMessageServerEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机准备显示“xxx离开游戏”的玩家离开提示文字时服务端抛出的事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 玩家实体id |
| name | str | 玩家昵称 |
| cancel | bool | 是否显示提示文字允许修改。True不显示提示 |
| message | str | 玩家离开游戏的提示文字,允许修改 |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## RemoveEntityClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
客户端侧实体被移除时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| id | str | 移除的实体id |
- 返回值
- 备注
- 客户端接收服务端AOI事件时触发原事件名 RemoveEntityPacketEvent
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## RemovePlayerAOIClientEvent
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
玩家离开当前玩家同一个区块时触发AOI事件
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## ServerChatEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
玩家发送聊天信息时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| username | str | 玩家名称 |
| playerId | str | 玩家id |
| message | str | 玩家发送的聊天消息内容 |
| cancel | bool | 是否取消这个聊天事件若取消可以设置为True |
| bChatById | bool | 是否把聊天消息发送给指定在线玩家而不是广播给所有在线玩家若只发送某些玩家可以设置为True |
| bForbid | bool | 是否禁言仅apollo可用。true被禁言玩家聊天会提示“你已被管理员禁言”。 |
| toPlayerIds | list(str) | 接收聊天消息的玩家id列表bChatById为True时生效 |
- 返回值
- 示例
```python
# ServerSystem
import mod.server.extraServerApi as serverApi
from mod_log import logger as logger
# 监听引擎的事件 self指ServerSystem类的实例 ServerChatEvent是系统事件
self.ListenForEvent(serverApi.GetEngineNamespace(),
serverApi.GetEngineSystemName(),
"ServerChatEvent",
self, self.OnServerChat)
def OnServerChat(self, args):
#可以设置username或者message的样式代码 详见mc维基 样式代码
args["username"] = "§rl"+args[username]+"§r"
args["message"] = "test"
logger.info("ServerChatEvent %s" % args)
```
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## ServerPostBlockPatternEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:用方块组合生成生物,生成生物之后触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| entityId | str | 生成生物的id |
| entityGenerated | str | 生成生物的名字,如"minecraft:pig" |
| x | int | 方块x坐标 |
| y | int | 方块y坐标 |
| z | int | 方块z坐标 |
| dimensionId | int | 维度id |
- 返回值
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## ServerPreBlockPatternEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
触发时机:用方块组合生成生物,在放置最后一个组成方块时触发该事件。
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| enable | bool | 是否允许继续生成。若设为False可阻止生成生物 |
| x | int | 方块x坐标 |
| y | int | 方块y坐标 |
| z | int | 方块z坐标 |
| dimensionId | int | 维度id |
| entityWillBeGenerated | str | 即将生成生物的名字,如"minecraft:pig" |
- 返回值
## ServerSpawnMobEvent
<span style="display:inline;color:#ff5555">服务端</span>
- 描述
游戏内自动生成生物以及使用api生成生物时触发
- 参数
| 参数名 | <div style="width: 4em">数据类型</div> | 说明 |
| :--- | :--- | :--- |
| entityId | str | 实体id |
| identifier | str | 生成实体的命名空间 |
| type | int | 生成实体的类型,参考[EntityType](../枚举值/EntityType.md) |
| baby | bool | 生成怪物是否是幼年怪 |
| x | float | 生成实体坐标x |
| y | float | 生成实体坐标y |
| z | float | 生成实体坐标z |
| dimensionId | int | 生成实体的维度默认值为00为主世界1为地狱2为末地 |
| realIdentifier | str | 生成实体的命名空间通过MOD API生成的生物在这个参数也能获取到真正的命名空间而不是以custom开头的 |
| cancel | bool | 是否取消生成该实体 |
- 返回值
- 备注
- 如果通过MOD API生成identifier命名空间为custom。如果需要屏蔽原版的生物生成可以判断identifier命名空间不为custom时设置cancel为True
在零件中直接声明一个同名函数,即可完成监听,详情参考<a href="../../../mcguide/20-玩法开发/14-预设玩法编程/2-深入理解零件/0-零件开发.html#零件事件">零件事件</a>
## UnLoadClientAddonScriptsBefore
<span style="display:inline;color:#7575f9">客户端</span>
- 描述
客户端卸载mod之前触发
- 参数
- 返回值