# 服务端事件
服务端引擎定义的事件如下
# 方块
# BlockNeighborChangedServerEvent
描述
触发时机:自定义方块周围的方块发生变化时,需要配置netease:neighborchanged_sendto_script,详情请查阅《自定义农作物》文档
参数
参数名 数据类型 说明 dimensionId int 维度 posX int 方块x坐标 posY int 方块y坐标 posZ int 方块z坐标 blockName str 方块的identifier,包含命名空间及名称 auxValue int 方块附加值 neighborPosX int 变化方块x坐标 neighborPosY int 变化方块y坐标 neighborPosZ int 变化方块z坐标 fromBlockName str 方块变化前的identifier,包含命名空间及名称 fromAuxValue int 方块变化前附加值 toBlockName str 方块变化后的identifier,包含命名空间及名称 toAuxValue int 方块变化后附加值 返回值
无
# BlockRandomTickServerEvent
描述
触发时机:自定义方块随机tick
参数
参数名 数据类型 说明 posX int 方块x坐标 posY int 方块y坐标 posZ int 方块z坐标 blockName str 方块名称 fullName str 方块的identifier,包含命名空间及名称 auxValue int 方块附加值 dimensionId int 实体维度 返回值
无
# BlockStrengthChangedServerEvent
描述
触发时机:自定义机械元件方块红石信号量发生变化时触发
参数
参数名 数据类型 说明 posX int 方块x坐标 posY int 方块y坐标 posZ int 方块z坐标 blockName str 方块的identifier,包含命名空间及名称 auxValue int 方块附加值 newStrength int 变化后的红石信号量 dimensionId int 维度 返回值
无
# ChestBlockTryPairWithServerEvent
描述
触发时机:两个并排的小箱子方块准备组合为一个大箱子方块时
参数
参数名 数据类型 说明 cancel bool 是否允许触发,默认为False,若设为True,可阻止小箱子组合成为一个大箱子 blockX int 小箱子方块x坐标 blockY int 小箱子方块y坐标 blockZ int 小箱子方块z坐标 otherBlockX int 将要与之组合的另外一个小箱子方块x坐标 otherBlockY int 将要与之组合的另外一个小箱子方块y坐标 otherBlockZ int 将要与之组合的另外一个小箱子方块z坐标 dimensionId int 维度id 返回值
无
# DestroyBlockEvent
描述
触发时机:当方块已经被玩家破坏时触发该事件。
参数
参数名 数据类型 说明 x int 方块x坐标 y int 方块y坐标 z int 方块z坐标 face int 方块被敲击的面向id,参考Facing fullName str 方块的identifier,包含命名空间及名称 auxData int 方块附加值 playerId str 破坏方块的玩家ID dimensionId int 维度id 返回值
无
备注
- 这是在生存模式或创造模式下都会触发,而且是对于任何方块
# EntityPlaceBlockAfterServerEvent
描述
触发时机:当生物成功放置方块后触发
参数
参数名 数据类型 说明 x int 方块x坐标 y int 方块y坐标 z int 方块z坐标 fullName str 方块的identifier,包含命名空间及名称 auxData int 方块附加值 entityId str 试图放置方块的生物ID dimensionId int 维度id face int 点击方块的面,参考Facing 返回值
无
备注
- 部分放置后会产生实体的方块、可操作的方块、带有特殊逻辑的方块,不会触发该事件,包括但不限于床、门、告示牌、花盆、红石中继器、船、炼药锅、头部模型、蛋糕、酿造台、盔甲架等。
# HopperTryPullInServerEvent
描述
触发时机:漏斗放在容器下方,放置成功时触发事件
参数
参数名 数据类型 说明 x int 漏斗位置x y int 漏斗位置y z int 漏斗位置z abovePosX int 交互的容器位置x abovePosY int 交互的容器位置y abovePosZ int 交互的容器位置z dimensionId int 维度id canHopper int 是否允许容器往漏斗加东西(要关闭此交互,需先监听此事件再放置容器) 返回值
无
# HopperTryPullOutServerEvent
描述
触发时机:漏斗放在容器旁边,放置成功时触发事件
参数
参数名 数据类型 说明 x int 漏斗位置x y int 漏斗位置y z int 漏斗位置z attachedPosX int 交互的容器位置x attachedPosY int 交互的容器位置y attachedPosZ int 交互的容器位置z dimensionId int 维度id canHopper int 是否允许漏斗往容器加东西(要关闭此交互,需先监听此事件再放置容器) 返回值
无
# PistonActionServerEvent
描述
触发时机:活塞或者粘性活塞推送/缩回影响附近方块时
参数
参数名 数据类型 说明 cancel bool 是否允许触发,默认为False,若设为True,可阻止触发后续的事件 action str 推送时=expanding;缩回时=retracting pistonFacing int 活塞的朝向,参考Facing pistonMoveFacing int 活塞的运动方向,参考Facing dimensionId int 活塞方块所在的维度 pistonX int 活塞方块的x坐标 pistonY int 活塞方块的y坐标 pistonZ int 活塞方块的z坐标 blockList list[(x,y,z),...] 活塞运动影响到产生被移动效果的方块坐标(x,y,z),均为int类型 breakBlockList list[(x,y,z),...] 活塞运动影响到产生被破坏效果的方块坐标(x,y,z),均为int类型 entityList list[string,...] 活塞运动影响到产生被移动或被破坏效果的实体的ID列表 返回值
无
# ServerBlockEntityTickEvent
描述
触发时机:自定义方块配置了netease:block_entity组件并设tick为true,玩家进入该方块的tick范围时触发
参数
参数名 数据类型 说明 blockName str 该方块名称 dimension int 该方块所在的维度 posX int 该方块的x坐标 posY int 该方块的y坐标 posZ int 该方块的z坐标 返回值
无
备注
- 方块实体的tick事件频率为每秒钟20次
- 触发本事件时,若正在退出游戏,将无法获取到抛出本事件的方块实体数据(GetBlockEntityData函数返回None),也无法对其进行操作
# ServerBlockUseEvent
描述
触发时机:玩家右键点击新版自定义方块(或者通过接口AddBlockItemListenForUseEvent增加监听的MC原生游戏方块)时服务端抛出该事件(该事件tick执行,需要注意效率问题)。
参数
参数名 数据类型 说明 playerId str 玩家Id blockName str 方块的identifier,包含命名空间及名称 aux int 方块附加值 cancel bool 设置为True可拦截与方块交互的逻辑。 x int 方块x坐标 y int 方块y坐标 z int 方块z坐标 dimensionId int 维度id 返回值
无
备注
- 当对原生方块进行使用时,如堆肥桶等类似有 使用 功能的方块使用物品时,会触发该事件,而ServerItemUseOnEvent则不会被触发。当需要获取触发时使用的物品时,可以通过item组件获取手上有的物品。对应的客户端事件同理。 @comment 有的方块是在ServerBlockUseEvent中设置cancel生效,但是有部分方块是在ClientBlockUseEvent中设置cancel才生效,如有需求建议在两个事件中同时设置cancel以保证生效。
# ServerEntityTryPlaceBlockEvent
描述
触发时机:当生物试图放置方块时触发该事件。
参数
参数名 数据类型 说明 x int 方块x坐标 y int 方块y坐标 z int 方块z坐标 fullName str 方块的identifier,包含命名空间及名称 auxData int 方块附加值 entityId str 试图放置方块的生物ID dimensionId int 维度id face int 点击方块的面,参考Facing cancel bool 默认为False,在脚本层设置为True就能取消该方块的放置 返回值
无
备注
- 部分放置后会产生实体的方块、可操作的方块、带有特殊逻辑的方块,不会触发该事件,包括但不限于床、门、告示牌、花盆、红石中继器、船、炼药锅、头部模型、蛋糕、酿造台、盔甲架等。
# ServerExplosionBlockEvent
描述
游戏内爆炸发生时方块爆炸事件
参数
参数名 数据类型 说明 entityId str 爆炸源头的生物唯一ID,找不到是可能为-1 data list[(x,y,z,cancel),...] 爆炸涉及到的方块坐标(x,y,z),cancel是一个bool值 返回值
无
备注
- 通过设置这个cancel的bool值为True可以将该方块的爆炸取消,例如(x,y,z,True)
# ServerPlaceBlockEntityEvent
描述
触发时机:手动放置或通过接口创建含自定义方块实体的方块时触发,此时可向该方块实体中存放数据
参数
参数名 数据类型 说明 blockName str 该方块名称 dimension int 该方块所在的维度 posX int 该方块的x坐标 posY int 该方块的y坐标 posZ int 该方块的z坐标 返回值
无
# ServerPlayerTryDestroyBlockEvent
描述
当玩家即将破坏方块时,服务端线程触发该事件。
参数
参数名 数据类型 说明 x int 方块x坐标 y int 方块y坐标 z int 方块z坐标 face int 方块被敲击的面向id,参考Facing fullName str 方块的identifier,包含命名空间及名称 auxData int 方块附加值 playerId str 试图破坏方块的玩家ID dimensionId int 维度id cancel bool 默认为False,在脚本层设置为True就能取消该方块的破坏 spawnResources bool 是否生成掉落物,默认为True,在脚本层设置为False就能取消生成掉落物 返回值
无
备注
- 若需要禁止某些特殊方块的破坏,需要配合PlayerTryDestroyBlockClientEvent一起使用,例如床,旗帜,箱子这些根据方块实体数据进行渲染的方块
# 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" 返回值
无
# StepOnBlockServerEvent
描述
触发时机:生物脚踩压力板、踩红石矿、踩拌线钩。
参数
参数名 数据类型 说明 cancel bool 是否允许触发,默认为False,若设为True,可阻止触发后续物理交互事件 blockX int 方块x坐标 blockY int 方块y坐标 blockZ int 方块z坐标 entityId str 触发的entity的唯一ID blockName str 方块的identifier,包含命名空间及名称 dimensionId int 维度id 返回值
无
# 抛射物
# ProjectileCritHitEvent
描述
触发时机:当抛射物与头部碰撞时触发该事件。注:需调用OpenPlayerCritBox开启玩家暴头后才能触发。
参数
参数名 数据类型 说明 id str 子弹id targetId str 碰撞目标id 返回值
无
# ProjectileDoHitEffectEvent
描述
触发时机:当抛射物碰撞时触发该事件
参数
参数名 数据类型 说明 id str 子弹id hitTargetType str 碰撞目标类型,'ENTITY'或是'BLOCK' targetId str 碰撞目标id hitFace int 撞击在方块上的面id,参考Facing x float 碰撞x坐标 y float 碰撞y坐标 z float 碰撞z坐标 blockPosX int 碰撞是方块时,方块x坐标 blockPosY int 碰撞是方块时,方块y坐标 blockPosZ int 碰撞是方块时,方块z坐标 srcId str 创建者id 返回值
无
# SpawnProjectileServerEvent
描述
触发时机:抛射物生成时触发
参数
参数名 数据类型 说明 projectileId str 抛射物的实体id projectileIdentifier str 抛射物的identifier spawnerId str 发射者的实体id,没有发射者时为-1 返回值
无
备注
- 该事件里无法获取弹射物实体的auxvalue。如有需要可以延迟一帧获取,或者在ProjectileDoHitEffectEvent获取
# 世界
# ChunkAcquireDiscardedServerEvent
描述
触发时机:通过AddChunkPosWhiteList接口添加监听的服务端区块即将被卸载时
参数
参数名 数据类型 说明 dimension int 区块所在维度 chunkPosX int 区块的x坐标,对应方块X坐标区间为[x * 16, x * 16 + 15] chunkPosZ int 区块的z坐标,对应方块Z坐标区间为[z * 16, z * 16 + 15] 返回值
无
# ChunkGeneratedServerEvent
描述
触发时机:区块创建完成时触发
参数
参数名 数据类型 说明 dimension int 该区块所在的维度 blockEntityData [{"blockName":str,"posX":int,"posY":int,"posZ":int}...]/None 该区块中的自定义方块实体列表,通常是由自定义特征生成的自定义方块,没有自定义方块实体时该值为None 返回值
无
# ChunkLoadedServerEvent
描述
触发时机:通过AddChunkPosWhiteList接口添加监听的服务端区块加载完成时
参数
参数名 数据类型 说明 dimension int 区块所在维度 chunkPosX int 区块的x坐标,对应方块X坐标区间为[x * 16, x * 16 + 15] chunkPosZ int 区块的z坐标,对应方块Z坐标区间为[z * 16, z * 16 + 15] 返回值
无
# 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,比如爬行者所造成的爆炸。
# GameTypeChangedServerEvent
描述
个人游戏模式发生变化时服务端触发。
参数
参数名 数据类型 说明 playerId str 玩家Id,SetDefaultGameType接口改变游戏模式时该参数为空字符串 oldGameType int 切换前的游戏模式 newGameType int 切换后的游戏模式 返回值
无
备注
- 游戏模式:GetMinecraftEnum().GameType.*:Survival,Creative,Adventure分别为0~2 默认游戏模式发生变化时最后反映在个人游戏模式之上。
# LoadServerAddonScriptsAfter
描述
服务器加载完mod时触发
参数
无
返回值
无
# OnCommandOutputServerEvent
描述
Command命令执行成功事件
参数
参数名 数据类型 说明 command str 命令名称 message str 命令返回的消息 返回值
无
备注
- 部分命令在返回的时候没有命令名称,命令组件需要showOutput参数为True时才会有返回
# OnScriptTickServer
描述
服务器tick时触发,1秒有30个tick
参数
无
返回值
无
# 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接口将无法生效,强烈建议本事件仅用于设置结构放置与否
# 实体
# ActorHurtServerEvent
描述
触发时机:生物(包括玩家)受伤时触发
参数
参数名 数据类型 说明 entityId str 生物Id cause str 伤害来源,详见Minecraft枚举值文档的ActorDamageCause damage int 伤害值 absorbedDamage int 吸收的伤害值(原始伤害减去damage) 返回值
无
# ActuallyHurtServerEvent
描述
实体实际受到伤害时触发,相比于DamageEvent,该伤害为经过护甲及buff计算后,实际的扣血量
参数
参数名 数据类型 说明 srcId str 伤害源id projectileId str 投射物id entityId str 被伤害id damage int 伤害值,允许修改,设置为0则此次造成的伤害为0 cause str 伤害来源,详见Minecraft枚举值文档的ActorDamageCause 返回值
无
# AddEffectServerEvent
描述
触发时机:实体获得状态效果时
参数
参数名 数据类型 说明 entityId str 实体id effectName str 实体获得状态效果的名字 effectDuration int 状态效果的持续时间,单位秒 effectAmplifier int 状态效果的放大倍数 damage int 状态造成的伤害值,如药水 返回值
无
# AddEntityServerEvent
描述
actor实体增加,事件触发,对应客户端AddEntityEvent
参数
参数名 数据类型 说明 id str 实体id posX float 位置x posY float 位置y posZ float 位置z dimensionId int 实体维度 isBaby bool 是否为幼儿 engineTypeStr str 实体类型 itemName str 物品identifier(仅当物品实体时存在该字段) auxValue int 物品附加值(仅当物品实体时存在该字段) 返回值
无
# AttackAnimBeginServerEvent
描述
当攻击动作开始时触发
参数
参数名 数据类型 说明 id str 实体id 返回值
无
备注
- 在modelComp替换骨骼动画后,该事件才生效
# AttackAnimEndServerEvent
描述
当攻击动作结束时触发
参数
参数名 数据类型 说明 id str 实体id 返回值
无
备注
- 在modelComp替换骨骼动画后,该事件才生效
# BlockRemoveServerEvent
描述
触发时机:监听该事件的方块在销毁时触发,可以通过ListenOnBlockRemoveEvent方法进行监听,或者通过json组件netease:listen_block_remove进行配置
参数
参数名 数据类型 说明 x int 方块位置x y int 方块位置y z int 方块位置z fullName str 方块的identifier,包含命名空间及名称 auxValue int 方块的附加值 dimension int 该方块所在的维度 返回值
无
# ChangeSwimStateServerEvent
描述
触发时机:实体开始或者结束游泳时
参数
参数名 数据类型 说明 entityId str 实体的唯一ID formState bool 事件触发前,实体是否在游泳状态 toState bool 事件触发后,实体是否在游泳状态 返回值
无
备注
- 当实体的状态没有变化时,不会触发此事件,即formState和toState必定一真一假
# EntityChangeDimensionServerEvent
描述
实体维度改变时服务端抛出
参数
参数名 数据类型 说明 entityId str 实体id fromDimensionId int 维度改变前的维度 toDimensionId int 维度改变后的维度 fromX float 改变前的位置x fromY float 改变前的位置Y fromZ float 改变前的位置Z toX float 改变后的位置x toY float 改变后的位置Y toZ float 改变后的位置Z 返回值
无
备注
- 实体转移维度时,如果对应维度的对应位置的区块尚未加载,实体会缓存在维度自身的缓冲区中,直到对应区块被加载时才会创建对应的实体,此事件的抛出只代表实体从原维度消失,不代表必定会在对应维度出现
# EntityEffectDamageServerEvent
描述
生物受到状态伤害/回复事件。
参数
参数名 数据类型 说明 entityId str 实体id damage int 伤害值(负数表示生命回复) attributeBuffType int 状态类型,参考AttributeBuffType duration float 状态持续时间,单位秒(s) lifeTimer float 状态生命时间,单位秒(s) isInstantaneous bool 是否为立即生效状态 返回值
无
# EntityLoadScriptEvent
描述
数据库加载实体自定义数据时触发
参数
参数名 数据类型 说明 args list 该事件的参数为长度为2的list,而非dict,其中list的第一个元素为实体id 返回值
无
备注
- 只有使用过extraData组件的实体才有此事件,触发时可以通过extraData组件获取该实体的自定义数据
# EntityRemoveEvent
描述
实体被删除时触发
参数
参数名 数据类型 说明 id str 实体id 返回值
无
备注
- 触发情景:生物死亡,生物所在区块卸载,玩家退出游戏
- 区块卸载:游戏只会加载玩家周围的区块,玩家移动到别的区域时,原来所在区域的区块会被卸载,参考区块介绍
- 玩家退出游戏时,PlayerLeftEvent,EntityRemoveEvent,DelServerPlayerEvent按顺序依次触发
# EntityStartRidingEvent
描述
当实体骑乘上另一个实体时触发
参数
参数名 数据类型 说明 id str 乘骑者实体id rideId str 被乘骑者实体id 返回值
无
# EntityStopRidingEvent
描述
触发时机:当实体停止骑乘时
参数
参数名 数据类型 说明 id str 实体id rideId str 坐骑id exitFromRider bool 是否下坐骑 entityIsBeingDestroyed bool 坐骑是否将要销毁 switchingRides bool 是否换乘坐骑 cancel bool 设置为True可以取消(需要与客户端事件一同取消) 返回值
无
备注
- 以下情况不允许取消
- ride组件StopEntityRiding接口
- 玩家传送时
- 坐骑死亡时
- 玩家睡觉时
- 玩家死亡时
- 未驯服的马
- 怕水的生物坐骑进入水里
- 切换维度
- 以下情况不允许取消
# EntityTickServerEvent
描述
实体tick时触发。该事件为20帧每秒。需要使用AddEntityTickEventWhiteList添加触发该事件的实体类型白名单。
参数
参数名 数据类型 说明 entityId str 实体id 返回值
无
# JumpAnimBeginServerEvent
描述
当跳跃动作开始时触发
参数
参数名 数据类型 说明 id str 实体id 返回值
无
备注
- 在modelComp替换骨骼动画后,该事件才生效
# MobDieEvent
描述
实体被玩家杀死时触发
参数
参数名 数据类型 说明 id str 实体id attacker str 伤害来源id 返回值
无
备注
- 注意:不能在该事件回调中对此玩家手持物品进行修改,如SpawnItemToPlayerCarried、ChangePlayerItemTipsAndExtraId等接口
# OnEntityAreaEvent
描述
触发时机:通过RegisterEntityAOIEvent注册过AOI事件后,当有实体进入或离开注册感应区域时触发该事件。
参数
参数名 数据类型 说明 name str 注册感应区域名称 enteredEntities list[str] 进入该感应区域的实体id列表 leftEntities list[str] 离开该感应区域的实体id列表 返回值
无
备注
- 由于历史遗留原因,该事件的回调参数类型是str
示例
# ServerSystem
import mod.server.extraServerApi as serverApi
self.ListenForEvent(serverApi.GetEngineNamespace(),
serverApi.GetEngineSystemName(),
"OnEntityAreaEvent",
self, self.OnEntityAreaEvent)
def OnEntityAreaEvent(self, args):
import json
dictArgs = json.loads(args)
name = dictArgs['name']
# OnKnockBackServerEvent
描述
实体被击退时触发
参数
参数名 数据类型 说明 id str 实体id 返回值
无
# RefreshEffectServerEvent
描述
触发时机:实体身上状态效果更新时触发,更新条件1、新增状态等级较高,更新状态等级及时间;2、新增状态等级不变,时间较长,更新状态持续时间
参数
参数名 数据类型 说明 entityId str 实体id effectName str 更新状态效果的名字 effectDuration int 更新后状态效果剩余持续时间,单位秒 effectAmplifier int 更新后的状态效果放大倍数 damage int 状态造成的伤害值,如药水 返回值
无
# RemoveEffectServerEvent
描述
触发时机:实体身上状态效果被移除时
参数
参数名 数据类型 说明 entityId str 实体id effectName str 被移除状态效果的名字 effectDuration int 被移除状态效果的剩余持续时间,单位秒 effectAmplifier int 被移除状态效果的放大倍数 返回值
无
# StartRidingServerEvent
描述
触发时机:一个实体即将骑乘另外一个实体
参数
参数名 数据类型 说明 cancel bool 是否允许触发,默认为False,若设为True,可阻止触发后续的实体交互事件 actorId str 骑乘者的唯一ID victimId str 被骑乘实体的唯一ID 返回值
无
# WalkAnimBeginServerEvent
描述
当走路动作开始时触发
参数
参数名 数据类型 说明 id str 实体id 返回值
无
备注
- 在modelComp替换骨骼动画后,该事件才生效
# WalkAnimEndServerEvent
描述
当走路动作结束时触发
参数
参数名 数据类型 说明 id str 实体id 返回值
无
备注
- 在modelComp替换骨骼动画后,该事件才生效
# WillAddEffectServerEvent
描述
触发时机:实体即将获得状态效果前
参数
参数名 数据类型 说明 entityId str 实体id effectName str 实体获得状态效果的名字 effectDuration int 状态效果的持续时间,单位秒 effectAmplifier int 状态效果的放大倍数 cancel bool 设置为True可以取消 damage int 状态造成的伤害值,如药水 返回值
无
# WillTeleportToServerEvent
描述
触发时机:一个实体即将传送/被传送前
参数
参数名 数据类型 说明 cancel bool 是否允许触发,默认为False,若设为True,可阻止触发后续的传送 entityId str 实体的唯一ID fromDimensionId int 传送前所在的维度 toDimensionId int 传送后的目标维度,假如目标维度尚未在内存中创建(即服务器启动之后,到传送之前,没有玩家进入过这个维度 fromX int 传送前所在的x坐标 fromY int 传送前所在的y坐标 fromZ int 传送前所在的z坐标 toX int 传送目标地点的x坐标,假如目标维度尚未在内存中创建(即服务器启动之后,到传送之前,没有玩家进入过这个维度 toY int 传送目标地点的y坐标,假如目标维度尚未在内存中创建(即服务器启动之后,到传送之前,没有玩家进入过这个维度 toZ int 传送目标地点的z坐标,假如目标维度尚未在内存中创建(即服务器启动之后,到传送之前,没有玩家进入过这个维度 cause str 传送理由,详情见MinecraftEnum.EntityTeleportCause 返回值
无
# 生物
# DamageEvent
描述
实体被攻击时触发
参数
参数名 数据类型 说明 srcId str 伤害源id projectileId str 投射物id entityId str 被伤害id damage int 伤害值,允许修改,设置为0则此次造成的伤害为0 absorption int 伤害吸收生命值,详见Minecraft枚举值文档的ABSORPTION cause str 伤害来源,详见Minecraft枚举值文档的ActorDamageCause knock bool 是否击退被攻击者,允许修改,设置该值为False则不产生击退 ignite bool 是否点燃被伤害者,允许修改,设置该值为True产生点燃效果,反之亦然 返回值
无
备注
- damage值会被护甲和absorption等吸收,不一定是最终扣血量。通过设置这个伤害值可以取消伤害,但不会取消由击退效果或者点燃效果带来的伤害
- 当目标无法被击退时,knock值无效
# EntityDefinitionsEventServerEvent
描述
触发时机:生物定义json文件中设置的event触发时同时触发。生物行为变更事件
参数
参数名 数据类型 说明 entityId str 生物id eventName str 触发的事件名称 返回值
无
# MobGriefingBlockServerEvent
描述
环境生物改变方块时触发,触发的时机与mobgriefing游戏规则影响的行为相同
参数
参数名 数据类型 说明 cancel bool 是否允许触发,默认为False,若设为True,可阻止触发后续物理交互事件 blockX int 方块x坐标 blockY int 方块y坐标 blockZ int 方块z坐标 entityId str 触发的entity的唯一ID blockName str 方块的identifier,包含命名空间及名称 dimensionId int 维度id 返回值
无
备注
- 触发的时机包括:生物踩踏耕地、破坏单个方块、破门、火矢点燃方块、凋灵boss破坏方块、末影龙破坏方块、末影人捡起方块、蠹虫破坏被虫蚀的方块、蠹虫把方块变成被虫蚀的方块、凋零杀死生物生成凋零玫瑰、生物踩坏海龟蛋。
# OnFireHurtEvent
描述
生物受到火焰伤害时触发
参数
参数名 数据类型 说明 victim str 受伤实体id src str 火焰创建者id fireTime float 着火时间,单位秒 cancel bool 是否取消此处火焰伤害 返回值
无
# ServerSpawnMobEvent
描述
游戏内自动生成怪物时触发
参数
参数名 数据类型 说明 identifier str 生成实体的命名空间 type int 生成实体的类型,参考EntityType baby bool 生成怪物是否是幼年怪 x float 生成实体坐标x y float 生成实体坐标y z float 生成实体坐标z dimensionId int 生成实体的维度,默认值为0(0为主世界,1为地狱,2为末地) cancel bool 是否生成该实体 返回值
无
备注
- 该事件是游戏内自动生成怪物的Hook,阻止游戏内生成该生物只需要将cancel设置为True。如果通过MOD API生成,前缀为custom,内置逻辑生成的生物为minecraft前缀。
# 玩家
# AddExpEvent
描述
触发时机:当玩家增加经验时触发该事件。
参数
参数名 数据类型 说明 id str 玩家id addExp int 增加的经验值 返回值
无
# AddLevelEvent
描述
触发时机:当玩家升级时触发该事件。
参数
参数名 数据类型 说明 id str 玩家id addLevel int 增加的等级值 newLevel int 新的等级 返回值
无
# AddServerPlayerEvent
描述
触发时机:玩家加入时触发该事件。
参数
参数名 数据类型 说明 id str 玩家id isTransfer bool 是否是切服时进入服务器,仅用于Apollo。如果是True,则表示切服时加入服务器,若是False,则表示登录进入网络游戏 transferParam str 切服传入参数,仅用于Apollo。调用【TransferToOtherServer】或【TransferToOtherServerById】传入的切服参数 uid int 玩家的netease uid,玩家的唯一标识,仅用于Apollo 返回值
无
备注
- 触发此事件时,客户端mod未加载完毕,因此响应本事件时不能客户端发送事件。若需要在玩家进入世界时,服务器往客户端发送事件,请使用ClientLoadAddonsFinishServerEvent
- 触发此事件时,玩家的实体还未加载完毕,请勿在这时切换维度。请在客户端监听OnLocalPlayerStopLoading事件并发送事件到server端再进行维度切换。
# ChangeLevelUpCostServerEvent
描述
触发时机:获取玩家下一个等级升级经验时,用于重载玩家的升级经验,每个等级在重置之前都只会触发一次
参数
参数名 数据类型 说明 level int 玩家当前等级 levelUpCostExp int 当前等级升级到下个等级需要的经验值,当设置为0时表示维持原版升级经验不变 changed bool 设置为True,重载玩家升级经验才会生效 返回值
无
# ClientLoadAddonsFinishServerEvent
描述
触发时机:客户端mod加载完成时,服务端触发此事件。服务器可以使用此事件,往客户端发送数据给其初始化。
参数
参数名 数据类型 说明 playerId str 玩家id 返回值
无
# CommandEvent
描述
玩家请求执行指令时触发
参数
参数名 数据类型 说明 entityId str 玩家ID command str 指令字符串 cancel bool 是否取消 返回值
无
备注
- 该事件是玩家请求执行指令时触发的Hook,该事件不响应命令方块的指令和通过modSDK调用的指令,阻止玩家的该条指令只需要将cancel设置为True
# DelServerPlayerEvent
描述
触发时机:删除玩家时触发该事件。
参数
参数名 数据类型 说明 id str 玩家id isTransfer bool 是否是切服时退出服务器,仅用于Apollo。如果是True,则表示切服时退出服务器;若是False,则表示退出网络游戏 uid int 玩家的netease uid,玩家的唯一标识 返回值
无
备注
- 玩家离开游戏时,会在PlayerLeftEvent之后触发
# DimensionChangeFinishServerEvent
描述
玩家维度改变完成后服务端抛出
参数
参数名 数据类型 说明 playerId str 玩家实体id fromDimensionId int 维度改变前的维度 toDimensionId int 维度改变后的维度 toPos tuple(float,float,float) 改变后的位置x,y,z,其中y值为脚底加上角色的身高值 返回值
无
备注
- 当通过传送门从末地回到主世界时,toPos的y值为32767,其他情况一般会比设置值高1.62
# DimensionChangeServerEvent
描述
玩家维度改变时服务端抛出
参数
参数名 数据类型 说明 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
# ExtinguishFireServerEvent
描述
玩家扑灭火焰时触发。下雨,倒水等方式熄灭火焰不会触发。
参数
参数名 数据类型 说明 pos tuple(float,float,float) 火焰方块的坐标 playerId str 玩家id cancel bool 修改为True时,可阻止玩家扑灭火焰。需要与ExtinguishFireClientEvent一起修改。 返回值
无
# OnCarriedNewItemChangedServerEvent
描述
触发时机:玩家切换主手物品时触发该事件
参数
参数名 数据类型 说明 oldItemDict dict/None 旧物品信息字典,当旧物品为空时,此项属性为None newItemDict dict/None 新物品信息字典,当新物品为空时,此项属性为None playerId str 玩家 entityId 返回值
无
# OnNewArmorExchangeServerEvent
描述
触发时机:玩家切换盔甲时触发该事件
参数
参数名 数据类型 说明 slot int 槽位id oldArmorDict dict/None 旧装备信息字典,当旧物品为空时,此项属性为None newArmorDict dict/None 新装备信息字典,当新物品为空时,此项属性为None playerId str 玩家 entityId 返回值
无
备注
- 当原有的装备槽内容为空时,oldArmorDict中的itemName为'minecraft:air',
当脱下装备时,newArmorDict中的itemName为'minecraft:air'。clear命令不会触发该事件。 - 当玩家登录时,每个盔甲槽位会触发两次该事件,第一次为air切换到身上的装备,第二次的old和new都为身上装备。如果槽位为空,则是触发两次从air到air的事件。
- 当原有的装备槽内容为空时,oldArmorDict中的itemName为'minecraft:air',
# OnOffhandItemChangedServerEvent
描述
触发时机:玩家切换副手物品时触发该事件
参数
参数名 数据类型 说明 oldItemName str 旧物品 物品名称 oldItemAuxValue int 旧物品 物品附加值 oldItemModExtralId str 旧物品 物品自定义标识符 oldItemDict dict/None 旧物品信息字典,当旧物品为空时,此项属性为None newItemName str 新物品 物品名称 newItemAuxValue int 新物品 物品附加值 newItemModExtralId str 新物品 物品自定义标识符 newItemDict dict/None 新物品信息字典,当新物品为空时,此项属性为None playerId str 玩家 entityId 返回值
无
备注
- 当原有的物品槽内容为空时,
oldItemName
值为'minecraft:air',且oldItem
其余字段不存在
当切换原有物品,且新物品为空时,参数值同理
- 当原有的物品槽内容为空时,
# OnPlayerHitBlockServerEvent
描述
触发时机:通过OpenPlayerHitBlockDetection打开方块碰撞检测后,当玩家碰撞到方块时触发该事件。监听玩家着地请使用客户端的OnGroundClientEvent。客户端和服务端分别作碰撞检测,可能两个事件返回的略有差异。
参数
参数名 数据类型 说明 playerId str 碰撞到方块的玩家Id posX int 碰撞方块x坐标 posY int 碰撞方块y坐标 posZ int 碰撞方块z坐标 blockId str 碰撞方块的identifier auxValue int 碰撞方块的附加值 dimensionId int 维度id 返回值
无
# OnPlayerHitMobServerEvent
描述
触发时机:通过OpenPlayerHitMobDetection打开生物碰撞检测后,当有生物与玩家碰撞时触发该事件。注:客户端和服务端分别作碰撞检测,可能两个事件返回的略有差异。
参数
参数名 数据类型 说明 playerList list[str] 生物碰撞到的玩家id的list 返回值
无
# PlayerAttackEntityEvent
描述
触发时机:当玩家攻击时触发该事件。
参数
参数名 数据类型 说明 playerId str 玩家id victimId str 受击者id damage int 伤害值:引擎传过来的值是0 允许脚本层修改为其他数 isValid int 脚本是否设置伤害值:1表示是;0 表示否 cancel bool 是否取消该次攻击,默认不取消 isKnockBack bool 是否支持击退效果,默认支持,当不支持时将屏蔽武器击退附魔效果 返回值
无
# PlayerDieEvent
描述
触发时机:当玩家死亡时触发该事件。
参数
参数名 数据类型 说明 id str 玩家id attacker str 伤害来源id 返回值
无
# PlayerEatFoodServerEvent
描述
触发时机:玩家吃下食物时触发
参数
参数名 数据类型 说明 playerId str 玩家Id itemDict dict 食物物品的物品信息字典 返回值
无
# PlayerHurtEvent
描述
触发时机:当玩家受伤害前触发该事件。
参数
参数名 数据类型 说明 id str 受击玩家id attacker str 伤害来源实体id,若没有实体攻击,例如高空坠落,id为-1 返回值
无
# PlayerInteractServerEvent
描述
触发时机:玩家即将和某个实体交互
参数
参数名 数据类型 说明 cancel bool 是否允许触发,默认为False,若设为True,可阻止触发后续的实体交互事件 playerId str 主动与实体互动的玩家的唯一ID itemDict dict 当前玩家手持物品的物品信息字典 victimId str 被动的实体的唯一ID 返回值
无
# PlayerJoinMessageEvent
描述
触发时机:准备显示“xxx加入游戏”的玩家登录提示文字时服务端抛出的事件。
参数
参数名 数据类型 说明 id str 玩家实体id name str 玩家昵称 cancel bool 是否显示提示文字,允许修改。True:不显示提示 message str 玩家加入游戏的提示文字,允许修改 返回值
无
# PlayerLeftMessageServerEvent
描述
触发时机:准备显示“xxx离开游戏”的玩家离开提示文字时服务端抛出的事件。
参数
参数名 数据类型 说明 id str 玩家实体id name str 玩家昵称 cancel bool 是否显示提示文字,允许修改。True:不显示提示 message str 玩家加入游戏的提示文字,允许修改 返回值
无
# PlayerRespawnEvent
描述
触发时机:玩家复活时触发该事件。
参数
参数名 数据类型 说明 id str 玩家id 返回值
无
备注
- 该事件为玩家点击重生按钮时触发,但是触发时玩家可能尚未完成复活,此时请勿对玩家进行切维度或设置生命值等操作 一般情况下推荐使用PlayerRespawnFinishEvent
# PlayerRespawnFinishServerEvent
描述
触发时机:玩家复活完毕时触发
参数
参数名 数据类型 说明 playerId str 玩家id 返回值
无
备注
- 该事件触发时玩家已重生完毕,可以安全使用切维度等操作
# PlayerTeleportEvent
描述
触发时机:当玩家传送时触发该事件,如:玩家使用末影珍珠或tp指令时。
参数
参数名 数据类型 说明 id str 玩家id 返回值
无
# ServerChatEvent
描述
玩家发送聊天信息时触发
参数
参数名 数据类型 说明 username str 玩家名称 playerId str 玩家id message str 玩家发送的聊天消息内容 cancel bool 是否取消这个聊天事件,若取消可以设置为True bChatById bool 是否把聊天消息发送给指定在线玩家,而不是广播给所有在线玩家,若只发送某些玩家可以设置为True bForbid bool 是否禁言。true:被禁言,玩家聊天会提示“你已被管理员禁言”。当前版本仅Apollo可用 toPlayerIds list(str) 接收聊天消息的玩家id列表,bChatById为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"
logger.info("ServerChatEvent %s" % args)
# ServerPlayerGetExperienceOrbEvent
描述
触发时机:玩家获取经验球时触发的事件
参数
参数名 数据类型 说明 playerId str 玩家id experienceValue int 经验球经验值 cancel bool 是否取消(开发者传入) 返回值
无
备注
cancel
值设为True时,捡起的经验球不会增加经验值,但是经验球一样会消失。
# StartDestroyBlockServerEvent
描述
玩家开始挖方块时触发。创造模式下不触发。
参数
参数名 数据类型 说明 pos tuple(float,float,float) 方块的坐标 blockName str 方块的identifier,包含命名空间及名称 auxValue int 方块的附加值 playerId str 玩家id dimensionId int 维度id cancel bool 修改为True时,可阻止玩家进入挖方块的状态。需要与StartDestroyBlockClientEvent一起修改。 返回值
无
备注
- 如果是隔着火焰挖方块,即使将该事件cancel掉,火焰也会被扑灭。如果要阻止火焰扑灭,需要配合ExtinguishFireServerEvent使用
# StoreBuySuccServerEvent
描述
触发时机:玩家游戏内购买商品时服务端抛出的事件
参数
参数名 数据类型 说明 playerId str 购买商品的玩家实体id 返回值
无
示例
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
# 物品
# ActorAcquiredItemServerEvent
描述
触发时机:玩家获得物品时服务端抛出的事件(有些获取物品方式只会触发客户端事件,有些获取物品方式只会触发服务端事件,在使用时注意一点。)
参数
参数名 数据类型 说明 actor str 获得物品玩家实体id secondaryActor str 物品给予者玩家实体id,如果不存在给予者的话,这里为空字符串 itemDict dict 获得的物品的物品信息字典 acquireMethod int 获得物品的方法,详见ItemAcquisitionMethod 返回值
无
# ActorUseItemServerEvent
描述
触发时机:玩家使用物品生效之前服务端抛出的事件(比较特殊不走该事件的例子:1)喝牛奶;2)染料对有水的炼药锅使用;3)盔甲架装备盔甲)
参数
参数名 数据类型 说明 playerId str 玩家实体id itemDict dict 使用的物品的物品信息字典 useMethod int 使用物品的方法,详见ItemUseMethodEnum 返回值
无
# EntityDieLoottableServerEvent
描述
触发时机:生物死亡掉落物品时
参数
参数名 数据类型 说明 dieEntityId str 死亡实体的entityId attacker str 伤害来源的entityId itemList list(dict) 掉落物品列表,每个元素为一个itemDict,格式可参考物品信息字典 dirty bool 默认为False,如果需要修改掉落列表需将该值设为True 返回值
无
备注
- 只有当dirty为True时才会重新读取item列表并生成对应的掉落物,如果不需要修改掉落结果的话请勿随意修改dirty值
# ItemReleaseUsingServerEvent
描述
触发时机:释放正在使用的物品时
参数
参数名 数据类型 说明 playerId str 玩家id durationLeft float 蓄力剩余时间 itemDict dict 使用的物品的物品信息字典 maxUseDuration int 最大蓄力时长 cancel bool 设置为True可以取消 返回值
无
# ItemUseAfterServerEvent
描述
玩家在使用物品之后服务端抛出的事件。
参数
参数名 数据类型 说明 entityId str 玩家实体id itemDict dict 使用的物品的物品信息字典 返回值
无
备注
- 做出使用物品这个动作之后触发,一些需要蓄力的物品使用事件(ActorUseItemServerEvent)会在之后触发。如投掷三叉戟,先触发本事件,投出去之后再触发ActorUseItemServerEvent
# ItemUseOnAfterServerEvent
描述
玩家在对方块使用物品之后服务端抛出的事件。
参数
参数名 数据类型 说明 entityId str 玩家实体id itemDict dict 使用的物品的物品信息字典 x int 方块 x 坐标值 y int 方块 y 坐标值 z int 方块 z 坐标值 face int 点击方块的面,参考Facing clickX float 点击点的x比例位置 clickY float 点击点的y比例位置 clickZ float 点击点的z比例位置 blockName str 方块的identifier blockAuxValue int 方块的附加值 dimensionId int 维度id 返回值
无
备注
- 在ServerItemUseOnEvent和原版物品使用事件之后触发
# OnContainerFillLoottableServerEvent
描述
触发时机:随机奖励箱第一次打开根据loottable生成物品时
参数
参数名 数据类型 说明 loottable str 奖励箱子所读取的loottable的json路径 playerId str 打开奖励箱子的玩家的playerId itemList list 掉落物品列表,每个元素为一个itemDict,格式可参考物品信息字典 dirty bool 默认为False,如果需要修改掉落列表需将该值设为True 返回值
无
备注
- 只有当dirty为True时才会重新读取item列表并生成对应的掉落物,如果不需要修改掉落结果的话请勿随意修改dirty值
# PlayerDropItemServerEvent
描述
触发时机:玩家丢弃物品时触发
参数
参数名 数据类型 说明 playerId str 玩家id itemEntityId str 物品entityId 返回值
无
# ServerItemTryUseEvent
描述
玩家点击右键尝试使用物品时服务端抛出的事件
参数
参数名 数据类型 说明 playerId str 玩家id itemDict dict 使用的物品的物品信息字典 cancel bool 设为True可取消物品的使用 返回值
无
# ServerItemUseOnEvent
描述
玩家在对方块使用物品之前服务端抛出的事件。注:如果需要取消物品的使用需要同时在ClientItemUseOnEvent和ServerItemUseOnEvent中将ret设置为True才能正确取消。
参数
参数名 数据类型 说明 entityId str 玩家实体id itemDict dict 使用的物品的物品信息字典 x int 方块 x 坐标值 y int 方块 y 坐标值 z int 方块 z 坐标值 blockName str 方块的identifier blockAuxValue int 方块的附加值 face int 点击方块的面,参考Facing dimensionId int 维度id clickX float 点击点的x比例位置 clickY float 点击点的y比例位置 clickZ float 点击点的z比例位置 ret bool 设为True可取消物品的使用 返回值
无
备注
- 当对原生方块进行使用时,如堆肥桶等类似有 使用 功能的方块使用物品时,不会触发该事件。而当原生方块加入监听后,ServerBlockUseEvent会触发。当需要获取触发时使用的物品时,可以通过item组件获取手中持有的物品,对应的客户端事件同理。
# ServerPlayerTryTouchEvent
描述
触发时机:玩家触碰/捡起物品时触发
参数
参数名 数据类型 说明 playerId str 玩家Id entityId str 物品实体的Id itemDict dict 触碰的物品的物品信息字典 cancel bool 设置为True时将取消本次拾取 pickupDelay int 取消拾取后重新设置该物品的拾取cd,小于15帧将视作15帧,大于等于97813帧将视作无法拾取 返回值
无