---
sidebarDepth: 1
---
# 世界
# 索引
| 事件 |
| 描述 |
| --- | --- | --- |
| [AchievementCompleteEvent](世界.md#achievementcompleteevent) | 服务端 | 玩家完成自定义成就时触发该事件 |
| [AddEntityClientEvent](世界.md#addentityclientevent) | 客户端 | 客户端侧创建新实体时触发 |
| [AddEntityServerEvent](世界.md#addentityserverevent) | 服务端 | 服务端侧创建新实体,或实体从存档加载时触发 |
| [AddPlayerAOIClientEvent](世界.md#addplayeraoiclientevent) | 客户端 | 玩家加入游戏或者其余玩家进入当前玩家视野时触发的事件,替换AddPlayerEvent |
| [AddPlayerCreatedClientEvent](世界.md#addplayercreatedclientevent) | 客户端 | 玩家进入当前玩家所在的区块AOI后,玩家皮肤数据异步加载完成后触发的事件 |
| [AddServerPlayerEvent](世界.md#addserverplayerevent) | 服务端 | 触发时机:玩家加入时触发该事件。 |
| [ChunkAcquireDiscardedClientEvent](世界.md#chunkacquirediscardedclientevent) | 客户端 | 触发时机:客户端区块即将被卸载时 |
| [ChunkAcquireDiscardedServerEvent](世界.md#chunkacquirediscardedserverevent) | 服务端 | 服务端区块即将被卸载时触发 |
| [ChunkGeneratedServerEvent](世界.md#chunkgeneratedserverevent) | 服务端 | 触发时机:区块创建完成时触发 |
| [ChunkLoadedClientEvent](世界.md#chunkloadedclientevent) | 客户端 | 触发时机:客户端区块加载完成时 |
| [ChunkLoadedServerEvent](世界.md#chunkloadedserverevent) | 服务端 | 触发时机:服务端区块加载完成时 |
| [ClientLoadAddonsFinishServerEvent](世界.md#clientloadaddonsfinishserverevent) | 服务端 | 触发时机:客户端mod加载完成时,服务端触发此事件。服务器可以使用此事件,往客户端发送数据给其初始化。 |
| [CommandEvent](世界.md#commandevent) | 服务端 | 玩家请求执行指令时触发 |
| [CustomCommandTriggerServerEvent](世界.md#customcommandtriggerserverevent) | 服务端 | 自定义命令触发事件 |
| [DelServerPlayerEvent](世界.md#delserverplayerevent) | 服务端 | 触发时机:删除玩家时触发该事件。 |
| [EntityRemoveEvent](世界.md#entityremoveevent) | 服务端 | 实体被删除时触发 |
| [ExplosionServerEvent](世界.md#explosionserverevent) | 服务端 | 当发生爆炸时触发。 |
| [GameRenderTickEvent](世界.md#gamerendertickevent) | 客户端 | 客户端渲染帧开始时触发该事件,一秒触发次数为当前的帧数 |
| [GlobalCommandServerEvent](世界.md#globalcommandserverevent) | 服务端 | 服务端全局命令事件,包括聊天栏发送、SetCommand接口、命令方块(矿车)、行为包动画执行命令 |
| [LoadClientAddonScriptsAfter](世界.md#loadclientaddonscriptsafter) | 客户端 | 客户端加载mod完成事件 |
| [LoadServerAddonScriptsAfter](世界.md#loadserveraddonscriptsafter) | 服务端 | 服务器加载完mod时触发 |
| [NewOnEntityAreaEvent](世界.md#newonentityareaevent) | 服务端 | 触发时机:通过RegisterEntityAOIEvent注册过AOI事件后,当有实体进入或离开注册感应区域时触发该事件。 |
| [OnCommandOutputClientEvent](世界.md#oncommandoutputclientevent) | 客户端 | 当command命令有成功消息输出时触发 |
| [OnCommandOutputServerEvent](世界.md#oncommandoutputserverevent) | 服务端 | Command命令执行成功事件 |
| [OnContainerFillLoottableServerEvent](世界.md#oncontainerfillloottableserverevent) | 服务端 | 触发时机:随机奖励箱第一次打开根据loottable生成物品时 |
| [OnLightningLevelChangeServerEvent](世界.md#onlightninglevelchangeserverevent) | 服务端 | 打雷强度发生改变 |
| [OnLocalLightningLevelChangeServerEvent](世界.md#onlocallightninglevelchangeserverevent) | 服务端 | 独立维度天气打雷强度发生改变时触发 |
| [OnLocalPlayerStopLoading](世界.md#onlocalplayerstoploading) | 客户端 | 触发时机:玩家进入存档,出生点地形加载完成时触发。该事件触发时可以进行切换维度的操作。 |
| [OnLocalRainLevelChangeServerEvent](世界.md#onlocalrainlevelchangeserverevent) | 服务端 | 独立维度天气下雨强度发生改变时触发 |
| [OnRainLevelChangeServerEvent](世界.md#onrainlevelchangeserverevent) | 服务端 | 下雨强度发生改变 |
| [OnScriptTickClient](世界.md#onscripttickclient) | 客户端 | 客户端tick事件,1秒30次 |
| [OnScriptTickServer](世界.md#onscripttickserver) | 服务端 | 服务器tick时触发,1秒有30个tick |
| [PlaceNeteaseLargeFeatureServerEvent](世界.md#placeneteaselargefeatureserverevent) | 服务端 | 触发时机:网易版大型结构即将生成时服务端抛出该事件。 |
| [PlaceNeteaseStructureFeatureEvent](世界.md#placeneteasestructurefeatureevent) | 服务端 | 触发时机:首次生成地形时,结构特征即将生成时服务端抛出该事件。 |
| [PlayerIntendLeaveServerEvent](世界.md#playerintendleaveserverevent) | 服务端 | 触发时机:即将删除玩家时触发该事件,此时可以通过各种API获取玩家的当前状态。 |
| [PlayerJoinMessageEvent](世界.md#playerjoinmessageevent) | 服务端 | 触发时机:准备显示“xxx加入游戏”的玩家登录提示文字时服务端抛出的事件。 |
| [PlayerLeftMessageServerEvent](世界.md#playerleftmessageserverevent) | 服务端 | 触发时机:准备显示“xxx离开游戏”的玩家离开提示文字时服务端抛出的事件。 |
| [PrimaryClientSyncSkinClientEvent](世界.md#primaryclientsyncskinclientevent) | 客户端 | 主客户端自己更换了皮肤触发 |
| [RemoveEntityClientEvent](世界.md#removeentityclientevent) | 客户端 | 客户端侧实体被移除时触发 |
| [RemovePlayerAOIClientEvent](世界.md#removeplayeraoiclientevent) | 客户端 | 玩家离开当前玩家视野时触发的事件 |
| [ServerChatEvent](世界.md#serverchatevent) | 服务端 | 玩家发送聊天信息时触发 |
| [ServerPostBlockPatternEvent](世界.md#serverpostblockpatternevent) | 服务端 | 触发时机:用方块组合生成生物,生成生物之后触发该事件。 |
| [ServerPreBlockPatternEvent](世界.md#serverpreblockpatternevent) | 服务端 | 触发时机:用方块组合生成生物,在放置最后一个组成方块时触发该事件。 |
| [ServerSpawnMobEvent](世界.md#serverspawnmobevent) | 服务端 | 游戏内自动生成生物,以及使用api生成生物时触发 |
| [UnLoadClientAddonScriptsBefore](世界.md#unloadclientaddonscriptsbefore) | 客户端 | 客户端卸载mod之前触发 |
# 世界
## AchievementCompleteEvent
服务端
- 描述
玩家完成自定义成就时触发该事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
| rootNodeId | str | 所属的页面的根节点成就id |
| achievementId | str | 达成的成就id |
| title | str | 成就标题 |
| description | str | 成就描述 |
- 返回值
无
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## AddEntityClientEvent
客户端
- 描述
客户端侧创建新实体时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| id | str | 实体id |
| posX | float | 位置x |
| posY | float | 位置y |
| posZ | float | 位置z |
| dimensionId | int | 实体维度 |
| isBaby | bool | 是否为幼儿 |
| engineTypeStr | str | 实体类型 |
| itemName | str | 物品identifier(仅当物品实体时存在该字段) |
| auxValue | int | 物品附加值(仅当物品实体时存在该字段) |
- 返回值
无
- 备注
- 创建玩家时不会触发该事件
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## AddEntityServerEvent
服务端
- 描述
服务端侧创建新实体,或实体从存档加载时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| id | str | 实体id |
| posX | float | 位置x |
| posY | float | 位置y |
| posZ | float | 位置z |
| dimensionId | int | 实体维度 |
| isBaby | bool | 是否为幼儿 |
| engineTypeStr | str | 实体类型,即实体identifier |
| itemName | str | 物品identifier(仅当物品实体时存在该字段) |
| auxValue | int | 物品附加值(仅当物品实体时存在该字段) |
- 返回值
无
- 备注
- 创建玩家时不会触发该事件
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## AddPlayerAOIClientEvent
客户端
- 描述
玩家加入游戏或者其余玩家进入当前玩家视野时触发的事件,替换AddPlayerEvent
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
无
- 备注
- 该事件触发只表明在服务端数据中接收到了新玩家,并不能代表此时玩家在客户端中可见,若想在玩家进入视野后立马调用玩家渲染相关接口,建议使用[AddPlayerCreatedClientEvent](#addplayercreatedclientevent)。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## AddPlayerCreatedClientEvent
客户端
- 描述
玩家进入当前玩家所在的区块AOI后,玩家皮肤数据异步加载完成后触发的事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
无
- 备注
- 由于玩家皮肤是异步加载的原因,该事件触发时机比[AddPlayerAOIClientEvent](#addplayeraoiclientevent)晚,触发该事件后可以对该玩家调用相关[玩家渲染接口](../接口/玩家/渲染.md)。
- 当前客户端每加载好一个玩家的皮肤,就会触发一次该事件,比如刚进入世界时,localPlayer加载好会触发一次,周围的所有玩家加载好后也会分别触发一次。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## AddServerPlayerEvent
服务端
- 描述
触发时机:玩家加入时触发该事件。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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端再进行维度切换。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## ChunkAcquireDiscardedClientEvent
客户端
- 描述
触发时机:客户端区块即将被卸载时
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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
服务端
- 描述
服务端区块即将被卸载时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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包含posX,posY,posZ三个int表示自定义方块实体的坐标,blockName表示方块的identifier,包含命名空间及名称。注意事件触发时已经无法获取到这些方块实体的信息,仅供脚本资源回收用。 |
- 返回值
无
- 备注
- 区块卸载:游戏只会加载玩家周围的区块,玩家移动到别的区域时,原来所在区域的区块会被卸载,参考[区块介绍](https://minecraft-zh.gamepedia.com/%E5%8C%BA%E5%9D%97)
## ChunkGeneratedServerEvent
服务端
- 描述
触发时机:区块创建完成时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| dimension | int | 该区块所在的维度 |
| blockEntityData | [{"blockName":str,"posX":int,"posY":int,"posZ":int}...]/None | 该区块中的自定义方块实体列表,通常是由自定义特征生成的自定义方块,没有自定义方块实体时该值为None |
- 返回值
无
## ChunkLoadedClientEvent
客户端
- 描述
触发时机:客户端区块加载完成时
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| dimension | int | 区块所在维度 |
| chunkPosX | int | 区块的x坐标,对应方块X坐标区间为[x * 16, x * 16 + 15] |
| chunkPosZ | int | 区块的z坐标,对应方块Z坐标区间为[z * 16, z * 16 + 15] |
- 返回值
无
## ChunkLoadedServerEvent
服务端
- 描述
触发时机:服务端区块加载完成时
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| dimension | int | 区块所在维度 |
| chunkPosX | int | 区块的x坐标,对应方块X坐标区间为[x * 16, x * 16 + 15] |
| chunkPosZ | int | 区块的z坐标,对应方块Z坐标区间为[z * 16, z * 16 + 15] |
| blockEntities | list(dict) | 随区块加载而加载进世界的自定义方块实体的坐标的列表,列表元素dict包含posX,posY,posZ三个int表示自定义方块实体的坐标,blockName表示方块的identifier,包含命名空间及名称 |
- 返回值
无
- 备注
- 注意:服务端的自定义方块实体加载完成时对应的客户端的自定义方块实体并没有初始化完成,无法使用该事件对客户端的自定义方块实体进行相关操作。
## ClientLoadAddonsFinishServerEvent
服务端
- 描述
触发时机:客户端mod加载完成时,服务端触发此事件。服务器可以使用此事件,往客户端发送数据给其初始化。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
无
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## CommandEvent
服务端
- 描述
玩家请求执行指令时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 玩家ID |
| command | str | 指令字符串 |
| cancel | bool | 是否取消 |
- 返回值
无
- 备注
- 该事件是玩家请求执行指令时触发的Hook,该事件不响应命令方块的指令和通过modSDK调用的指令,阻止玩家的该条指令只需要将cancel设置为True
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## CustomCommandTriggerServerEvent
服务端
- 描述
自定义命令触发事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| command | str | 自定义命令名称,对应json中的name字段 |
| args | list(dict) | 自定义命令参数,详情见下方 |
| variant | int | 表示是哪条变体,范围[0, 9],对应json中args键中的数字,未配置变体则为0 |
| origin | dict | 触发源的信息,详情见下方 |
| return_failed | bool | 设置自定义命令是否执行失败,默认为False,如果执行失败,返回信息以红色字体显示 |
| return_msg_key | str | 设置返回给玩家或命令方块的信息,也支持通过语言文件(.lang)定义,默认值为commands.custom.success(自定义命令执行成功) |
- 返回值
无
- 备注
- origin参数说明如下
|键|类型|解释|
|:-|:-|:-|
|entityId|str|触发指令的实体id,**若由命令方块触发,则不会含有此字段**|
|dimension|int|指令触发的维度id,0-主世界; 1-下界; 2-末地; 或其他自定义维度|
|blockPos|tuple|触发指令的实体或命令方块的整数坐标|
- 自定义命令参数中的dict说明如下
|键|类型|解释|
|:-|:-|:-|
|name|str|参数名称,对应json中的name字段|
|type|str|参数类型,对应json中的type字段|
|value|any|参数的值,若玩家没传,则采用json中填写的default的值,但会转为python变量格式。如null转为None,array转为tuple|
- 对于玩家传入的参数,type不同则对应的value也不同,type对应value的类型和具体数据格式如下
|type|value类型|解释|
|:-|:-|:-|
|int|int|整数,如114|
|float|float|浮点数,如5.14|
|bool|bool|布尔值,如True|
|str|str|字符串,如'niganma'|
|enum|str|开发者在json中指定的某个字符串|
|enum_short|str|开发者在json中指定的某个字符串|
|block|str|方块的identifier,如'minecraft:grass'|
|item|dict|含有物品名称,如{'itemName': 'minecraft:apple'}|
|pos|tuple|含有三个float的坐标,如(-0.93, 81.25, -5.67)|
|target|tuple|含有对应的所有目标entityId,如('-139816907912', '-263852559602')|
|entity|dict|含有实体名称,如{'entityType': 'minecraft:cow'}|
|effect|dict|含有状态效果名称和对应的[EffectType](../枚举值/EffectType.md)枚举,如`{'name': 'absorption', 'id': 22}`|
|dimension|dict|含有维度名称和对应数字id,如`{'name': 'nether', 'id': 1}`|
|biome|dict|含有生物群系名称和对应的[BiomeType](../枚举值/BiomeType.md)枚举,如`{'name': 'bamboo_jungle', 'biomeType': 48}`|
|structure|dict|含有结构名称和对应的[StructureFeatureType](../枚举值/StructureFeatureType.md)枚举,如`{'name': 'ancient_city', 'structureType': 15}`|
|enchant|dict|含有附魔名称和对应的[EnchantType](../枚举值/EnchantType.md)枚举,如`{'identifier': 'knockback', 'type': 12}`|
## DelServerPlayerEvent
服务端
- 描述
触发时机:删除玩家时触发该事件。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| id | str | 玩家id |
| isTransfer | bool | 是否是切服时退出服务器,仅用于Apollo。如果是True,则表示切服时退出服务器;若是False,则表示退出网络游戏 |
| uid | int/long | 玩家的netease uid,玩家的唯一标识 |
- 返回值
无
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## EntityRemoveEvent
服务端
- 描述
实体被删除时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| id | str | 实体id |
- 返回值
无
- 备注
- 触发情景:实体从场景中被删除,例如:生物死亡,生物被[清除](https://minecraft.fandom.com/zh/wiki/%E7%94%9F%E6%88%90#.E6.B8.85.E9.99.A4),玩家退出游戏,船/盔甲架被破坏,掉落物/经验球被捡起或清除
- 当生物随区块卸载时,不会触发该事件,而是ChunkAcquireDiscardedServerEvent事件
- 关于生物的清除:当生物离玩家大于wiki所说的距离,并且还在玩家的模拟距离内时,会被清除。也就是说,如果玩家瞬间传送到远处,原处的生物马上离开了模拟距离,并不会被清除
- 玩家退出游戏时,EntityRemoveEvent,DelServerPlayerEvent按顺序依次触发
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## ExplosionServerEvent
服务端
- 描述
当发生爆炸时触发。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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,比如爬行者所造成的爆炸。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## GameRenderTickEvent
客户端
- 描述
客户端渲染帧开始时触发该事件,一秒触发次数为当前的帧数
- 参数
无
- 返回值
无
## GlobalCommandServerEvent
服务端
- 描述
服务端全局命令事件,包括聊天栏发送、SetCommand接口、命令方块(矿车)、行为包动画执行命令
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 执行命令的实体id, 如果没有此键,则是命令方块执行的命令 |
| command | str | 将要被执行的命令 |
| blockPos | tuple(int,int,int) | 执行命令的实体或方块的方块坐标 |
| dimension | int | 执行命令的实体或方块所在维度id |
| cancel | bool | 设置为True可以取消命令执行 |
- 返回值
无
- 备注
- 有实体的事件参数例子:
```python
{
'cancel' : False,
'entityId' : '-8589934591',
'command' : '/kill @e',
'dimension' : 0,
'blockPos' : (227,66,569)
}
```
- 命令方块(无实体)的事件参数例子:
```python
{
'cancel' : False,
'command' : '/say I am a command_block',
'dimension' : 0,
'blockPos' : (226,64,579)
}
```
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## LoadClientAddonScriptsAfter
客户端
- 描述
客户端加载mod完成事件
- 参数
无
- 返回值
无
## LoadServerAddonScriptsAfter
服务端
- 描述
服务器加载完mod时触发
- 参数
无
- 返回值
无
## NewOnEntityAreaEvent
服务端
- 描述
触发时机:通过RegisterEntityAOIEvent注册过AOI事件后,当有实体进入或离开注册感应区域时触发该事件。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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']
```
### 相关接口
### RegisterEntityAOIEvent
method in mod.server.component.dimensionCompServer.DimensionCompServer
- 描述
注册感应区域,有实体进入时和离开时会有消息通知
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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) |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| 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)
```
### UnRegisterEntityAOIEvent
method in mod.server.component.dimensionCompServer.DimensionCompServer
- 描述
反注册感应区域
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| dimension | int | 维度id |
| name | str | 需要反注册的感应区域名 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateDimension(levelId)
comp.UnRegisterEntityAOIEvent(0, "test")
```
## OnCommandOutputClientEvent
客户端
- 描述
当command命令有成功消息输出时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| command | str | 命令名称 |
| message | str | 命令返回的消息 |
- 返回值
无
- 备注
- 部分命令在返回的时候没有命令名称,SetCommand接口需要showOutput参数为True时才会有返回
## OnCommandOutputServerEvent
服务端
- 描述
Command命令执行成功事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| command | str | 命令名称 |
| message | str | 命令返回的消息 |
- 返回值
无
- 备注
- 部分命令在返回的时候没有命令名称,SetCommand接口需要showOutput参数为True时才会有返回
## OnContainerFillLoottableServerEvent
服务端
- 描述
触发时机:随机奖励箱第一次打开根据loottable生成物品时
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| loottable | str | 奖励箱子所读取的loottable的json路径 |
| playerId | str | 打开奖励箱子的玩家的playerId |
| itemList | list | 掉落物品列表,每个元素为一个itemDict,格式可参考物品信息字典 |
| dirty | bool | 默认为False,如果需要修改掉落列表需将该值设为True |
- 返回值
无
- 备注
- 只有当dirty为True时才会重新读取item列表并生成对应的掉落物,如果不需要修改掉落结果的话请勿随意修改dirty值
- 可疑的沙子也具有奖励箱性质,使用刷子刷可疑的沙子也会触发该事件
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## OnLightningLevelChangeServerEvent
服务端
- 描述
打雷强度发生改变
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| oldLevel | float | 改变前的打雷强度 |
| newLevel | float | 改变后的打雷强度 |
- 返回值
无
## OnLocalLightningLevelChangeServerEvent
服务端
- 描述
独立维度天气打雷强度发生改变时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| oldLevel | float | 改变前的打雷强度 |
| newLevel | float | 改变后的打雷强度 |
| dimensionId | int | 独立天气维度id |
- 返回值
无
## OnLocalPlayerStopLoading
客户端
- 描述
触发时机:玩家进入存档,出生点地形加载完成时触发。该事件触发时可以进行切换维度的操作。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str | 加载完成的玩家id |
- 返回值
无
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## OnLocalRainLevelChangeServerEvent
服务端
- 描述
独立维度天气下雨强度发生改变时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| oldLevel | float | 改变前的下雨强度 |
| newLevel | float | 改变后的下雨强度 |
| dimensionId | int | 独立天气维度id |
- 返回值
无
## OnRainLevelChangeServerEvent
服务端
- 描述
下雨强度发生改变
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| oldLevel | float | 改变前的下雨强度 |
| newLevel | float | 改变后的下雨强度 |
- 返回值
无
## OnScriptTickClient
客户端
- 描述
客户端tick事件,1秒30次
- 参数
无
- 返回值
无
## OnScriptTickServer
服务端
- 描述
服务器tick时触发,1秒有30个tick
- 参数
无
- 返回值
无
## PlaceNeteaseLargeFeatureServerEvent
服务端
- 描述
触发时机:网易版大型结构即将生成时服务端抛出该事件。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| dimensionId | int | 维度id |
| pos | tuple | 中心结构放置坐标(x, z) |
| rot | int | 中心结构顺时针旋转角度 |
| depth | int | 大型结构递归深度 |
| centerPool | str | 中心池的identifier |
| ignoreFitInContext | bool | 是否允许生成过结构的地方是否可以继续生成结构 |
| cancel | bool | 设置为True时可阻止该大型结构的放置 |
- 返回值
无
- 备注
- 1.使用PlaceNeteaseLargeFeature接口触发此事件时,可正常调用其他Mod SDK接口
2.使用自定义大型特征功能,配置Json的方式触发此事件时,调用其他Mod SDK接口将无法生效,强烈建议仅用于设置结构放置与否
## PlaceNeteaseStructureFeatureEvent
服务端
- 描述
触发时机:首次生成地形时,结构特征即将生成时服务端抛出该事件。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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接口将无法生效,强烈建议本事件仅用于设置结构放置与否
该事件只会在网易版结构放置时抛出
structureName参数修改为不存在结构或者原生结构时,开发包会出现断言。
### 相关接口
### AddNeteaseFeatureWhiteList
method in mod.server.component.featureCompServer.FeatureCompServer
- 描述
添加结构对PlaceNeteaseStructureFeatureEvent事件的脚本层监听
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| structureName | str | 结构的identifier |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否增加成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
# 注意structureName格式为floderName:structureName
comp.AddNeteaseFeatureWhiteList("test:pumpkins")
```
### RemoveNeteaseFeatureWhiteList
method in mod.server.component.featureCompServer.FeatureCompServer
- 描述
移除structureName对PlaceNeteaseStructureFeatureEvent事件的脚本层监听
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| structureName | str | 结构名称 |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否移除成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
# 注意structureName格式为floderName:structureName
comp.RemoveNeteaseFeatureWhiteList("test:pumpkins")
```
### ClearAllNeteaseFeatureWhiteList
method in mod.server.component.featureCompServer.FeatureCompServer
- 描述
清空所有已添加Netease Structure Feature对PlaceNeteaseStructureFeatureEvent事件的脚本层监听
- 参数
无
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否清空成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateFeature(levelId)
comp.ClearAllNeteaseFeatureWhiteList()
```
## PlayerIntendLeaveServerEvent
服务端
- 描述
触发时机:即将删除玩家时触发该事件,此时可以通过各种API获取玩家的当前状态。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
无
- 备注
- 与【DelServerPlayerEvent】事件不同,此时可以通过各种API获取玩家的当前状态。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## PlayerJoinMessageEvent
服务端
- 描述
触发时机:准备显示“xxx加入游戏”的玩家登录提示文字时服务端抛出的事件。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| id | str | 玩家实体id |
| name | str | 玩家昵称 |
| cancel | bool | 是否显示提示文字,允许修改。True:不显示提示 |
| message | str | 玩家加入游戏的提示文字,允许修改 |
- 返回值
无
- 备注
- 对于联机类游戏(如联机大厅、网络游戏等),请勿在此事件的回调函数中使用SetFootPos接口修改玩家的位置,否则可能会因为触发服务端反作弊机制而传送失败。如需要在进入游戏时使用SetFootPos接口,建议监听AddServerPlayerEvent并设置位置。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## PlayerLeftMessageServerEvent
服务端
- 描述
触发时机:准备显示“xxx离开游戏”的玩家离开提示文字时服务端抛出的事件。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| id | str | 玩家实体id |
| name | str | 玩家昵称 |
| cancel | bool | 是否显示提示文字,允许修改。True:不显示提示 |
| message | str | 玩家离开游戏的提示文字,允许修改 |
- 返回值
无
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## PrimaryClientSyncSkinClientEvent
客户端
- 描述
主客户端自己更换了皮肤触发
- 参数
无
- 返回值
无
## RemoveEntityClientEvent
客户端
- 描述
客户端侧实体被移除时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| id | str | 移除的实体id |
- 返回值
无
- 备注
- 客户端接收到了服务端监测实体离开玩家视野时触发,原事件名 RemoveEntityPacketEvent
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## RemovePlayerAOIClientEvent
客户端
- 描述
玩家离开当前玩家视野时触发的事件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| playerId | str | 玩家id |
- 返回值
无
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## ServerChatEvent
服务端
- 描述
玩家发送聊天信息时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| username | str | 玩家名称 |
| playerId | str | 玩家id |
| message | str | 玩家发送的聊天消息内容 |
| cancel | bool | 是否取消这个聊天事件,若取消可以设置为True |
| bChatById | bool | 是否把聊天消息发送给指定在线玩家,而不是广播给所有在线玩家,若只发送某些玩家可以设置为True |
| bForbid | bool | 是否禁言,仅apollo可用。true:被禁言,玩家聊天会提示“你已被管理员禁言”。 |
| toPlayerIds | list(str) | 接收聊天消息的玩家id列表,bChatById为True时生效 |
| gameChatPrefix | str | 设置当前玩家在网易聊天界面中的前缀,字数限制4,从字符串头部开始取。前缀文本输入非字符串格式时会被置为空。若cancel为True,会取消掉本次的前缀修改 |
| gameChatPrefixColorR | float | 设置当前玩家在网易聊天界面中前缀颜色rgb的r值,范围为[0,1]。颜色数值输入其他格式时会被置为0。若cancel为True,会取消掉本次的颜色修改 |
| gameChatPrefixColorG | float | 设置当前玩家在网易聊天界面中前缀颜色rgb的g值,范围为[0,1]。颜色数值输入其他格式时会被置为0。若cancel为True,会取消掉本次的颜色修改 |
| gameChatPrefixColorB | float | 设置当前玩家在网易聊天界面中前缀颜色rgb的b值,范围为[0,1]。颜色数值输入其他格式时会被置为0。若cancel为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"
args["gameChatPrefix"] = "史蒂夫1号" # 最终显示前缀:史蒂夫1
args["gameChatPrefixColorR"] = 1.0
args["gameChatPrefixColorG"] = 0.0
args["gameChatPrefixColorB"] = 0.0 # 最终前缀底板颜色rgb:(1.0, 0.0, 0.0) 红色
logger.info("ServerChatEvent %s" % args)
```
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## ServerPostBlockPatternEvent
服务端
- 描述
触发时机:用方块组合生成生物,生成生物之后触发该事件。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 生成生物的id |
| entityGenerated | str | 生成生物的名字,如"minecraft:pig" |
| x | int | 方块x坐标 |
| y | int | 方块y坐标 |
| z | int | 方块z坐标 |
| dimensionId | int | 维度id |
- 返回值
无
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## ServerPreBlockPatternEvent
服务端
- 描述
触发时机:用方块组合生成生物,在放置最后一个组成方块时触发该事件。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| enable | bool | 是否允许继续生成。若设为False,可阻止生成生物 |
| x | int | 方块x坐标 |
| y | int | 方块y坐标 |
| z | int | 方块z坐标 |
| dimensionId | int | 维度id |
| entityWillBeGenerated | str | 即将生成生物的名字,如"minecraft:pig" |
- 返回值
无
## ServerSpawnMobEvent
服务端
- 描述
游戏内自动生成生物,以及使用api生成生物时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| entityId | str | 实体id |
| identifier | str | 生成实体的命名空间 |
| type | int | 生成实体的类型,参考[EntityType](../枚举值/EntityType.md) |
| baby | bool | 生成怪物是否是幼年怪 |
| x | float | 生成实体坐标x |
| y | float | 生成实体坐标y |
| z | float | 生成实体坐标z |
| dimensionId | int | 生成实体的维度,默认值为0(0为主世界,1为地狱,2为末地) |
| realIdentifier | str | 生成实体的命名空间,通过MOD API生成的生物在这个参数也能获取到真正的命名空间,而不是以custom开头的 |
| cancel | bool | 是否取消生成该实体 |
- 返回值
无
- 备注
- 如果通过MOD API生成,identifier命名空间为custom。如果需要屏蔽原版的生物生成,可以判断identifier命名空间不为custom时设置cancel为True
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## UnLoadClientAddonScriptsBefore
客户端
- 描述
客户端卸载mod之前触发
- 参数
无
- 返回值
无