# 世界

# 索引

事件
描述
AchievementCompleteEvent 服务端 玩家完成自定义成就时触发该事件
AddEntityClientEvent 客户端 客户端侧创建新实体时触发
AddEntityServerEvent 服务端 服务端侧创建新实体,或实体从存档加载时触发
AddPlayerAOIClientEvent 客户端 玩家加入游戏或者其余玩家进入当前玩家视野时触发的事件,替换AddPlayerEvent
AddPlayerCreatedClientEvent 客户端 玩家进入当前玩家所在的区块AOI后,玩家皮肤数据异步加载完成后触发的事件
AddServerPlayerEvent 服务端 触发时机:玩家加入时触发该事件。
ChunkAcquireDiscardedClientEvent 客户端 触发时机:客户端区块即将被卸载时
ChunkAcquireDiscardedServerEvent 服务端 服务端区块即将被卸载时触发
ChunkGeneratedServerEvent 服务端 触发时机:区块创建完成时触发
ChunkLoadedClientEvent 客户端 触发时机:客户端区块加载完成时
ChunkLoadedServerEvent 服务端 触发时机:服务端区块加载完成时
ClientLoadAddonsFinishServerEvent 服务端 触发时机:客户端mod加载完成时,服务端触发此事件。服务器可以使用此事件,往客户端发送数据给其初始化。
CommandEvent 服务端 玩家请求执行指令时触发
CustomCommandTriggerServerEvent 服务端 自定义命令触发事件
DelServerPlayerEvent 服务端 触发时机:删除玩家时触发该事件。
EntityRemoveEvent 服务端 实体被删除时触发
ExplosionServerEvent 服务端 当发生爆炸时触发。
GameRenderTickEvent 客户端 客户端渲染帧开始时触发该事件,一秒触发次数为当前的帧数
GlobalCommandServerEvent 服务端 服务端全局命令事件。包括聊天输入指令、SetCommand接口、命令方块、命令方块矿车执行指令时触发、行为包动画执行指令
LoadClientAddonScriptsAfter 客户端 客户端加载mod完成事件
LoadServerAddonScriptsAfter 服务端 服务器加载完mod时触发
NewOnEntityAreaEvent 服务端 触发时机:通过RegisterEntityAOIEvent注册过AOI事件后,当有实体进入或离开注册感应区域时触发该事件。
OnCommandOutputClientEvent 客户端 当command命令有成功消息输出时触发
OnCommandOutputServerEvent 服务端 Command命令执行成功事件
OnContainerFillLoottableServerEvent 服务端 触发时机:随机奖励箱第一次打开根据loottable生成物品时
OnLightningLevelChangeServerEvent 服务端 打雷强度发生改变
OnLocalLightningLevelChangeServerEvent 服务端 独立维度天气打雷强度发生改变时触发
OnLocalPlayerStopLoading 客户端 触发时机:玩家进入存档,出生点地形加载完成时触发。该事件触发时可以进行切换维度的操作。
OnLocalRainLevelChangeServerEvent 服务端 独立维度天气下雨强度发生改变时触发
OnRainLevelChangeServerEvent 服务端 下雨强度发生改变
OnScriptTickClient 客户端 客户端tick事件,1秒30次
OnScriptTickServer 服务端 服务器tick时触发,1秒有30个tick
PlaceNeteaseLargeFeatureServerEvent 服务端 触发时机:网易版大型结构即将生成时服务端抛出该事件。
PlaceNeteaseStructureFeatureEvent 服务端 触发时机:首次生成地形时,结构特征即将生成时服务端抛出该事件。
PlayerIntendLeaveServerEvent 服务端 触发时机:即将删除玩家时触发该事件,此时可以通过各种API获取玩家的当前状态。
PlayerJoinMessageEvent 服务端 触发时机:准备显示“xxx加入游戏”的玩家登录提示文字时服务端抛出的事件。
PlayerLeftMessageServerEvent 服务端 触发时机:准备显示“xxx离开游戏”的玩家离开提示文字时服务端抛出的事件。
PrimaryClientSyncSkinClientEvent 客户端 主客户端自己更换了皮肤触发
RemoveEntityClientEvent 客户端 客户端侧实体被移除时触发
RemovePlayerAOIClientEvent 客户端 玩家离开当前玩家视野时触发的事件
ServerChatEvent 服务端 玩家发送聊天信息时触发
ServerPostBlockPatternEvent 服务端 触发时机:用方块组合生成生物,生成生物之后触发该事件。
ServerPreBlockPatternEvent 服务端 触发时机:用方块组合生成生物,在放置最后一个组成方块时触发该事件。
ServerSpawnMobEvent 服务端 游戏内自动生成生物,以及使用api生成生物时触发
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

客户端

  • 描述

    玩家进入当前玩家所在的区块AOI后,玩家皮肤数据异步加载完成后触发的事件

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家id
  • 返回值

  • 备注

    • 由于玩家皮肤是异步加载的原因,该事件触发时机比AddPlayerAOIClientEvent晚,触发该事件后可以对该玩家调用相关玩家渲染接口
    • 当前客户端每加载好一个玩家的皮肤,就会触发一次该事件,比如刚进入世界时,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]
  • 返回值

  • 备注

    • 区块卸载:游戏只会加载玩家周围的区块,玩家移动到别的区域时,原来所在区域的区块会被卸载,参考区块介绍 (opens new window)

# 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,包含命名空间及名称。注意事件触发时已经无法获取到这些方块实体的信息,仅供脚本资源回收用。
  • 返回值

  • 备注

    • 区块卸载:游戏只会加载玩家周围的区块,玩家移动到别的区域时,原来所在区域的区块会被卸载,参考区块介绍 (opens new window)

# 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) 自定义命令参数,详情见下方
    origin dict 触发源的信息,详情见下方
    return_failed bool 设置自定义命令是否执行失败,默认为False,如果执行失败,返回信息以红色字体显示
    return_msg_key str 设置返回给玩家或命令方块的信息,支持在语言文件(.lang)中定义,默认值为commands.custom.success(自定义命令执行成功)
  • 返回值

  • 备注

    • args中的某个dict参数说明如下

      类型 解释
      name str 参数名称,对应json中的name字段
      type str 参数类型,对应json中的type字段
      value any 参数的值,若玩家没传,则采用json中填写的default的值,但会转为python变量格式。如null转为None,array转为tuple
    • 当type为pos、entity、item时,value的格式如下

      type value类型 解释
      pos tuple 一个含有三个float的坐标,如(-0.93, 81.25, -5.67)
      entity dict 一个含有entityType的字典,如{'entityType': 'minecraft:cow'}
      item dict 一个含有itemName的字典,如{'itemName': 'minecraft:apple'}
    • origin参数说明如下

      类型 解释
      entityId str 触发指令的实体id,若由命令方块触发,则不会含有此字段
      dimension int 指令触发的维度id,0-主世界; 1-下界; 2-末地; 或其他自定义维度
      blockPos tuple 触发指令的实体或命令方块的整数坐标

# DelServerPlayerEvent

服务端

  • 描述

    触发时机:删除玩家时触发该事件。

  • 参数

    参数名
    数据类型
    说明
    id str 玩家id
    isTransfer bool 是否是切服时退出服务器,仅用于Apollo。如果是True,则表示切服时退出服务器;若是False,则表示退出网络游戏
    uid int/long 玩家的netease uid,玩家的唯一标识
  • 返回值

在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件

# EntityRemoveEvent

服务端

  • 描述

    实体被删除时触发

  • 参数

    参数名
    数据类型
    说明
    id str 实体id
  • 返回值

  • 备注

    • 触发情景:实体从场景中被删除,例如:生物死亡,生物被清除 (opens new window),玩家退出游戏,船/盔甲架被破坏,掉落物/经验球被捡起或清除
    • 当生物随区块卸载时,不会触发该事件,而是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可以取消命令执行
  • 返回值

  • 备注

    • 有实体的事件参数例子:
      {
          'cancel' : False,
          'entityId' : '-8589934591',
          'command' : '/kill @e',
          'dimension' : 0,
          'blockPos' : (227,66,569)
      }
      
    • 命令方块(无实体)的事件参数例子:
      {
          '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事件
  • 示例

# 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枚举
  • 返回值

    数据类型
    说明
    bool 是否注册成功
  • 备注

    • 注册完感应区域后,需通过监听OnEntityAreaEvent或NewOnEntityAreaEvent事件来获取感应事件
    • 不支持长或宽大于2000格的区域。对于大范围区域,建议在脚本中每隔一段时间获取实体坐标判断来实现。
  • 示例

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 是否注册成功
  • 示例

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 是否增加成功
  • 示例

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 是否移除成功
  • 示例

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 是否清空成功
  • 示例

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,会取消掉本次的颜色修改
  • 返回值

  • 示例

# 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
    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之前触发

  • 参数

  • 返回值