# 方块

# 索引

事件
描述
BlockDestroyByLiquidServerEvent 服务端 触发时机:方块被水流破坏的事件
BlockLiquidStateChangeAfterServerEvent 服务端 触发时机:方块转为含水或者脱离含水(流体)后触发
BlockLiquidStateChangeServerEvent 服务端 触发时机:方块转为含水或者脱离含水(流体)前触发
BlockNeighborChangedServerEvent 服务端 触发时机:自定义方块周围的方块发生变化时,需要配置netease:neighborchanged_sendto_script,详情请查阅《自定义农作物》文档
BlockRandomTickServerEvent 服务端 触发时机:自定义方块配置netease:random_tick随机tick时
BlockRemoveServerEvent 服务端 触发时机:监听该事件的方块在销毁时触发,可以通过ListenOnBlockRemoveEvent方法进行监听,或者通过json组件netease:listen_block_remove进行配置
BlockSnowStateChangeAfterServerEvent 服务端 触发时机:方块转为含雪或者脱离含雪后触发
BlockSnowStateChangeServerEvent 服务端 触发时机:方块转为含雪或者脱离含雪前触发
BlockStrengthChangedServerEvent 服务端 触发时机:自定义机械元件方块红石信号量发生变化时触发
ChestBlockTryPairWithServerEvent 服务端 触发时机:两个并排的小箱子方块准备组合为一个大箱子方块时
ClientBlockUseEvent 客户端 触发时机:玩家右键点击新版自定义方块(或者通过接口AddBlockItemListenForUseEvent增加监听的MC原生游戏方块)时客户端抛出该事件(该事件tick执行,需要注意效率问题)。
CommandBlockContainerOpenEvent 服务端 触发时机:玩家点击命令方块,尝试打开命令方块的设置界面
CommandBlockUpdateEvent 服务端 触发时机:玩家尝试修改命令方块的内置命令时
DestroyBlockEvent 服务端 触发时机:当方块已经被玩家破坏时触发该事件。
DirtBlockToGrassBlockServerEvent 服务端 触发时机:泥土方块变成草方块时触发
EntityPlaceBlockAfterServerEvent 服务端 触发时机:当生物成功放置方块后触发
FallingBlockBreakServerEvent 服务端 触发时机:当下落的方块实体被破坏时,服务端触发该事件
FallingBlockCauseDamageBeforeClientEvent 客户端 触发时机:当下落的方块开始计算砸到实体的伤害时,客户端触发该事件
FallingBlockCauseDamageBeforeServerEvent 服务端 触发时机:当下落的方块开始计算砸到实体的伤害时,服务端触发该事件
FallingBlockReturnHeavyBlockServerEvent 服务端 触发时机:当下落的方块实体变回普通重力方块时,服务端触发该事件
FarmBlockToDirtBlockServerEvent 服务端 触发时机:耕地退化为泥土时触发
GrassBlockToDirtBlockServerEvent 服务端 触发时机:草方块变成泥土方块时触发
HeavyBlockStartFallingServerEvent 服务端 触发时机:当重力方块变为下落的方块实体后,服务端触发该事件
HopperTryPullInServerEvent 服务端 触发时机:当漏斗上方连接容器后,容器往漏斗开始输入物品时触发,事件仅触发一次
HopperTryPullOutServerEvent 服务端 触发时机:当漏斗以毗邻的方式连接容器时,即从旁边连接容器时,漏斗向容器开始输出物品时触发,事件仅触发一次
ModBlockEntityLoadedClientEvent 客户端 客户端自定义方块实体初始化完成时触发
ModBlockEntityRemoveClientEvent 客户端 客户端自定义方块实体卸载时触发
ModBlockEntityTickClientEvent 客户端 客户端自定义方块实体tick事件
OnAfterFallOnBlockClientEvent 客户端 触发时机:当实体降落到方块后客户端触发,主要用于力的计算
OnAfterFallOnBlockServerEvent 服务端 触发时机:当实体降落到方块后服务端触发,主要用于力的计算
OnBeforeFallOnBlockServerEvent 服务端 触发时机:当实体刚降落到方块上时服务端触发,主要用于伤害计算
OnEntityInsideBlockClientEvent 客户端 触发时机:当实体碰撞盒所在区域有方块时,客户端持续触发
OnEntityInsideBlockServerEvent 服务端 触发时机:当实体碰撞盒所在区域有方块时,服务端持续触发
OnModBlockNeteaseEffectCreatedClientEvent 客户端 自定义方块实体绑定的特效创建成功事件,在自定义方块实体中绑定的特效创建成功时触发以及使用接口CreateFrameEffectForBlockEntity或CreateParticleEffectForBlockEntity为自定义方块实体添加特效成功时触发。
OnStandOnBlockClientEvent 客户端 触发时机:当实体站立到方块上时客户端持续触发
OnStandOnBlockServerEvent 服务端 触发时机:当实体站立到方块上时服务端持续触发
PistonActionServerEvent 服务端 触发时机:活塞或者粘性活塞推送/缩回影响附近方块时
PlayerTryDestroyBlockClientEvent 客户端 当玩家即将破坏方块时,客户端线程触发该事件。主要用于床,旗帜,箱子这些根据方块实体数据进行渲染的方块,一般情况下请使用ServerPlayerTryDestroyBlockEvent
ServerBlockEntityTickEvent 服务端 触发时机:自定义方块配置了netease:block_entity组件并设tick为true,方块在玩家的模拟距离(新建存档时可以设置,默认为4个区块)内,或者在tickingarea内的时候触发
ServerBlockUseEvent 服务端 触发时机:玩家右键点击新版自定义方块(或者通过接口AddBlockItemListenForUseEvent增加监听的MC原生游戏方块)时服务端抛出该事件(该事件tick执行,需要注意效率问题)。
ServerEntityTryPlaceBlockEvent 服务端 触发时机:当生物试图放置方块时触发该事件。
ServerPlaceBlockEntityEvent 服务端 触发时机:手动放置或通过接口创建含自定义方块实体的方块时触发,此时可向该方块实体中存放数据
ServerPlayerTryDestroyBlockEvent 服务端 当玩家即将破坏方块时,服务端线程触发该事件。
ShearsDestoryBlockBeforeClientEvent 客户端 触发时机:玩家手持剪刀破坏方块时,有剪刀特殊效果的方块会在客户端线程触发该事件
ShearsDestoryBlockBeforeServerEvent 服务端 触发时机:玩家手持剪刀破坏方块时,有剪刀特殊效果的方块会在服务端线程触发该事件
StartDestroyBlockClientEvent 客户端 玩家开始挖方块时触发。创造模式下不触发。
StartDestroyBlockServerEvent 服务端 玩家开始挖方块时触发。创造模式下不触发。
StepOffBlockClientEvent 客户端 触发时机:实体移动离开一个实心方块时触发
StepOffBlockServerEvent 服务端 触发时机:实体移动离开一个实心方块时触发
StepOnBlockClientEvent 客户端 触发时机:实体刚移动至一个新实心方块时触发。
StepOnBlockServerEvent 服务端 触发时机:实体刚移动至一个新实心方块时触发。

# 方块

# BlockDestroyByLiquidServerEvent

服务端

  • 描述

    触发时机:方块被水流破坏的事件

  • 参数

    参数名
    数据类型
    说明
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
    liquidName str 流体方块id
    blockName str 方块id
    auxValue int 方块附加值
  • 返回值

  • 备注

    • 指令或者接口的设置不会触发该事件

# BlockLiquidStateChangeAfterServerEvent

服务端

  • 描述

    触发时机:方块转为含水或者脱离含水(流体)后触发

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块的identifier,包含命名空间及名称
    auxValue int 方块附加值
    dimension int 方块维度
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
    turnLiquid bool 是否转为含水,true则转为含水,false则脱离含水
  • 返回值

# BlockLiquidStateChangeServerEvent

服务端

  • 描述

    触发时机:方块转为含水或者脱离含水(流体)前触发

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块的identifier,包含命名空间及名称
    auxValue int 方块附加值
    dimension int 方块维度
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
    turnLiquid bool 是否转为含水,true则转为含水,false则脱离含水
  • 返回值

# 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,包含命名空间及名称
    fromBlockAuxValue int 方块变化前附加值
    toBlockName str 方块变化后的identifier,包含命名空间及名称
    toAuxValue int 方块变化后附加值
  • 返回值

# BlockRandomTickServerEvent

服务端

  • 描述

    触发时机:自定义方块配置netease:random_tick随机tick时

  • 参数

    参数名
    数据类型
    说明
    posX int 方块x坐标
    posY int 方块y坐标
    posZ int 方块z坐标
    blockName str 方块名称
    fullName str 方块的identifier,包含命名空间及名称
    auxValue int 方块附加值
    brightness int 方块亮度
    dimensionId int 实体维度
  • 返回值

# BlockRemoveServerEvent

服务端

  • 描述

    触发时机:监听该事件的方块在销毁时触发,可以通过ListenOnBlockRemoveEvent方法进行监听,或者通过json组件netease:listen_block_remove进行配置

  • 参数

    参数名
    数据类型
    说明
    x int 方块位置x
    y int 方块位置y
    z int 方块位置z
    fullName str 方块的identifier,包含命名空间及名称
    auxValue int 方块的附加值
    dimension int 该方块所在的维度
  • 返回值

# 相关接口

# ListenOnBlockRemoveEvent

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    是否监听方块BlockRemoveServerEvent事件,可以动态修改json组件netease:listen_block_remove的值

  • 参数

    参数名
    数据类型
    说明
    identifier str 方块identifier,如minecraft:wheat
    listen bool 是否监听
  • 返回值

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

    • 对于一些特殊的方块,注意要使用对应的方块Id参数(如砖块楼梯,监听的方块Id应该为minecraft:brick_block)
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.ListenOnBlockRemoveEvent("minecraft:wheat", True)

# BlockSnowStateChangeAfterServerEvent

服务端

  • 描述

    触发时机:方块转为含雪或者脱离含雪后触发

  • 参数

    参数名
    数据类型
    说明
    dimension int 方块维度
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
    turnSnow bool 是否转为含雪,true则转为含雪,false则脱离含雪
    setBlockType int 方块进入脱离含雪的原因,参考SetBlockType
  • 返回值

# BlockSnowStateChangeServerEvent

服务端

  • 描述

    触发时机:方块转为含雪或者脱离含雪前触发

  • 参数

    参数名
    数据类型
    说明
    dimension int 方块维度
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
    turnSnow bool 是否转为含雪,true则转为含雪,false则脱离含雪
    setBlockType int 方块进入脱离含雪的原因,参考SetBlockType
  • 返回值

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

# ClientBlockUseEvent

客户端

  • 描述

    触发时机:玩家右键点击新版自定义方块(或者通过接口AddBlockItemListenForUseEvent增加监听的MC原生游戏方块)时客户端抛出该事件(该事件tick执行,需要注意效率问题)。

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家Id
    blockName str 方块的identifier,包含命名空间及名称
    aux int 方块附加值
    cancel bool 设置为True可拦截与方块交互的逻辑。
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
    clickX int 点击点的x比例位置
    clickY int 点击点的y比例位置
    clickZ int 点击点的z比例位置
  • 返回值

  • 备注

    • 有的方块是在ServerBlockUseEvent中设置cancel生效,但是有部分方块是在ClientBlockUseEvent中设置cancel才生效,如有需求建议在两个事件中同时设置cancel以保证生效。

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

# 相关接口

# AddBlockItemListenForUseEvent

method in mod.client.component.blockUseEventWhiteListCompClient.BlockUseEventWhiteListComponentClient

  • 描述

    增加blockName方块对ClientBlockUseEvent事件的脚本层监听

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块名称,格式:namespace:name:auxvalue,其中namespace:name:*匹配所有的auxvalue
  • 返回值

    数据类型
    说明
    bool 是否增加成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(clientApi.GetLevelId())
comp.AddBlockItemListenForUseEvent("minecraft:nether_brick_stairs:2")
# 注意blockName格式为namespace:name:auxvalue,如果不填auxvalue,则默认为所有auxvalue
# auxValue详细值详见官方wiki,如https://minecraft-zh.gamepedia.com/楼梯 中的‘方块数据值’

# RemoveBlockItemListenForUseEvent

method in mod.client.component.blockUseEventWhiteListCompClient.BlockUseEventWhiteListComponentClient

  • 描述

    移除blockName方块对ClientBlockUseEvent事件的脚本层监听

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块名称,格式:namespace:name:auxvalue,其中namespace:name:*匹配所有的auxvalue
  • 返回值

    数据类型
    说明
    bool 是否移除成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(clientApi.GetLevelId())
comp.RemoveBlockItemListenForUseEvent("minecraft:nether_brick_stairs:2")
# 注意blockName格式为namespace:name:auxvalue,如果不填auxvalue,则默认为所有auxvalue
# auxValue详细值详见官方wiki,如https://minecraft-zh.gamepedia.com/楼梯 中的‘方块数据值’

# ClearAllListenForBlockUseEventItems

method in mod.client.component.blockUseEventWhiteListCompClient.BlockUseEventWhiteListComponentClient

  • 描述

    清空所有已添加方块对ClientBlockUseEvent事件的脚本层监听

  • 参数

  • 返回值

    数据类型
    说明
    bool 是否清空成功
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(clientApi.GetLevelId())
comp.ClearAllListenForBlockUseEventItems()

# CommandBlockContainerOpenEvent

服务端

  • 描述

    触发时机:玩家点击命令方块,尝试打开命令方块的设置界面

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家实体id
    isBlock bool 是否以方块坐标的形式定位命令方块,当为True时下述的blockX/blockY/blockZ有意义,当为False时,下述的victimId有意义
    blockX int 命令方块位置x,当isBlock为True时有效
    blockY int 命令方块位置y,当isBlock为True时有效
    blockZ int 命令方块位置z,当isBlock为True时有效
    victimId str 命令方块对应的逻辑实体的唯一id,当isBlock为False时有效
    cancel bool 修改为True时,可以阻止玩家打开命令方块的设置界面
  • 返回值

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

# CommandBlockUpdateEvent

服务端

  • 描述

    触发时机:玩家尝试修改命令方块的内置命令时

  • 参数

    参数名
    数据类型
    说明
    playerId str 玩家实体id
    playerUid int/long 玩家的uid
    command str 企图修改的命令方块中的命令内容字符串
    isBlock bool 是否以方块坐标的形式定位命令方块,当为True时下述的blockX/blockY/blockZ有意义,当为False时,下述的victimId有意义
    blockX int 命令方块位置x,当isBlock为True时有效
    blockY int 命令方块位置y,当isBlock为True时有效
    blockZ int 命令方块位置z,当isBlock为True时有效
    victimId str 命令方块对应的逻辑实体的唯一id,当isBlock为False时有效
    cancel bool 修改为True时,可以阻止玩家修改命令方块的内置命令
  • 返回值

  • 备注

    • 当修改的目标为命令方块矿车时(此时isBlock为False),设置cancel为True,依旧可以阻止修改命令方块矿车的内部指令,但是从客户端能够看到命令方块矿车的内部指令变化了,不过这仅仅是假象,重新登录或者其他客户端打开命令方块矿车的设置界面,就会发现其实内部指令没有变化

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

# 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
    dropEntityIds list(str) 掉落物实体id列表
  • 返回值

  • 备注

    • 在生存模式或创造模式下都会触发

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

# DirtBlockToGrassBlockServerEvent

服务端

  • 描述

    触发时机:泥土方块变成草方块时触发

  • 参数

    参数名
    数据类型
    说明
    dimension int 方块维度
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
  • 返回值

  • 备注

    • 指令或者接口的设置不会触发该事件

# EntityPlaceBlockAfterServerEvent

服务端

  • 描述

    触发时机:当生物成功放置方块后触发

  • 参数

    参数名
    数据类型
    说明
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
    fullName str 方块的identifier,包含命名空间及名称
    auxData int 方块附加值
    entityId str 试图放置方块的生物ID
    dimensionId int 维度id
    face int 点击方块的面,参考Facing枚举
  • 返回值

  • 备注

    • 部分放置后会产生实体的方块、可操作的方块、带有特殊逻辑的方块,不会触发该事件,包括但不限于床、门、告示牌、花盆、红石中继器、船、炼药锅、头部模型、蛋糕、酿造台、盔甲架等。

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

# FallingBlockBreakServerEvent

服务端

  • 描述

    触发时机:当下落的方块实体被破坏时,服务端触发该事件

  • 参数

    参数名
    数据类型
    说明
    fallingBlockId str 下落的方块实体id
    fallingBlockX float 下落的方块实体位置x
    fallingBlockY float 下落的方块实体位置y
    fallingBlockZ float 下落的方块实体位置z
    blockName str 重力方块的identifier,包含命名空间及名称
    fallTickAmount int 下落的方块实体持续下落了多少tick
    dimensionId int 下落的方块实体维度id
    cancelDrop bool 是否取消方块物品掉落,可以在脚本层中设置
  • 返回值

  • 备注

    • 不是所有下落的方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义重力方块

# FallingBlockCauseDamageBeforeClientEvent

客户端

  • 描述

    触发时机:当下落的方块开始计算砸到实体的伤害时,客户端触发该事件

  • 参数

    参数名
    数据类型
    说明
    fallingBlockId int 下落的方块实体id
    fallingBlockX float 下落的方块实体位置x
    fallingBlockY float 下落的方块实体位置y
    fallingBlockZ float 下落的方块实体位置z
    blockName str 重力方块的identifier,包含命名空间及名称
    dimensionId int 下落的方块实体维度id
    collidingEntitys list(str) 当前碰撞到的实体列表id(客户端只能获取到玩家),如果没有的话是None
    fallTickAmount int 下落的方块实体持续下落了多少tick
    fallDistance float 下落的方块实体持续下落了多少距离
    isHarmful bool 客户端始终为false,因为客户端不会计算伤害值
    fallDamage int 对实体的伤害
  • 返回值

  • 备注

    • 不是所有下落的方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义重力方块
    • 当该事件的参数数据(fallTickAmount,fallDistance,collidingEntitys,fallDamage)与服务端事件FallingBlockCauseDamageBeforeServerEvent数据有差异时,请以服务端事件数据为准。

# FallingBlockCauseDamageBeforeServerEvent

服务端

  • 描述

    触发时机:当下落的方块开始计算砸到实体的伤害时,服务端触发该事件

  • 参数

    参数名
    数据类型
    说明
    fallingBlockId str 下落的方块实体id
    fallingBlockX float 下落的方块实体位置x
    fallingBlockY float 下落的方块实体位置y
    fallingBlockZ float 下落的方块实体位置z
    blockName str 重力方块的identifier,包含命名空间及名称
    dimensionId int 下落的方块实体维度id
    collidingEntitys list(str) 当前碰撞到的实体列表id,如果没有的话是None
    fallTickAmount int 下落的方块实体持续下落了多少tick
    fallDistance float 下落的方块实体持续下落了多少距离
    isHarmful bool 是否计算对实体的伤害,引擎传来的值由json配置和伤害是否大于0决定,可在脚本层修改传回引擎
    fallDamage int 对实体的伤害,引擎传来的值距离和json配置决定,可在脚本层修改传回引擎
  • 返回值

  • 备注

    • 不是所有下落的方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义重力方块
    • 服务端通常触发在客户端之后,而且有时会相差一个tick,这就意味着可能发生以下现象:服务端fallTickAmount比配置强制破坏时间多1tick,下落的距离、下落的伤害计算出来比客户端时间多1tick的误差。

# FallingBlockReturnHeavyBlockServerEvent

服务端

  • 描述

    触发时机:当下落的方块实体变回普通重力方块时,服务端触发该事件

  • 参数

    参数名
    数据类型
    说明
    fallingBlockId int 下落的方块实体id
    blockX int 方块位置x
    blockY int 方块位置y
    blockZ int 方块位置z
    heavyBlockName str 重力方块的identifier,包含命名空间及名称
    prevHereBlockName str 变回重力方块时,原本方块位置的identifier,包含命名空间及名称
    dimensionId int 下落的方块实体维度id
    fallTickAmount int 下落的方块实体持续下落了多少tick
  • 返回值

  • 备注

    • 不是所有下落的方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义重力方块

# FarmBlockToDirtBlockServerEvent

服务端

  • 描述

    触发时机:耕地退化为泥土时触发

  • 参数

    参数名
    数据类型
    说明
    dimension int 方块维度
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
    setBlockType int 耕地退化为泥土的原因,参考SetBlockType
  • 返回值

  • 备注

    • 指令或者接口的设置不会触发该事件

# GrassBlockToDirtBlockServerEvent

服务端

  • 描述

    触发时机:草方块变成泥土方块时触发

  • 参数

    参数名
    数据类型
    说明
    dimension int 方块维度
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
  • 返回值

  • 备注

    • 指令或者接口的设置不会触发该事件

# HeavyBlockStartFallingServerEvent

服务端

  • 描述

    触发时机:当重力方块变为下落的方块实体后,服务端触发该事件

  • 参数

    参数名
    数据类型
    说明
    fallingBlockId str 下落的方块实体id
    blockX int 方块位置x
    blockY int 方块位置y
    blockZ int 方块位置z
    blockName str 重力方块的identifier,包含命名空间及名称
    dimensionId int 下落的方块实体维度id
  • 返回值

  • 备注

    • 不是所有下落的方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义重力方块

# HopperTryPullInServerEvent

服务端

  • 描述

    触发时机:当漏斗上方连接容器后,容器往漏斗开始输入物品时触发,事件仅触发一次

  • 参数

    参数名
    数据类型
    说明
    x int 漏斗位置x
    y int 漏斗位置y
    z int 漏斗位置z
    abovePosX int 交互的容器位置x
    abovePosY int 交互的容器位置y
    abovePosZ int 交互的容器位置z
    dimensionId int 维度id
    canHopper bool 是否允许容器往漏斗加东西(要关闭此交互,需先监听此事件再放置容器)
  • 返回值

# HopperTryPullOutServerEvent

服务端

  • 描述

    触发时机:当漏斗以毗邻的方式连接容器时,即从旁边连接容器时,漏斗向容器开始输出物品时触发,事件仅触发一次

  • 参数

    参数名
    数据类型
    说明
    x int 漏斗位置x
    y int 漏斗位置y
    z int 漏斗位置z
    attachedPosX int 交互的容器位置x
    attachedPosY int 交互的容器位置y
    attachedPosZ int 交互的容器位置z
    dimensionId int 维度id
    canHopper bool 是否允许漏斗往容器加东西(要关闭此交互,需先监听此事件再放置容器)
  • 返回值

# ModBlockEntityLoadedClientEvent

客户端

  • 描述

    客户端自定义方块实体初始化完成时触发

  • 参数

    参数名
    数据类型
    说明
    posX int 自定义方块实体的位置X
    posY int 自定义方块实体的位置Y
    posZ int 自定义方块实体的位置Z
    dimensionId int 维度id
    blockName str 方块的identifier,包含命名空间及名称
  • 返回值

  • 备注

    • 只有添加了自定义方块实体扩展功能的自定义方块实体才能触发该事件(见自定义方块实体外观),请用该事件来初始化自定义方块实体的molang,否则方块实体未初始化完成会设置失败。
    • 实际触发时机是自定义方块实体第一次出现在玩家视野中时触发,玩家离开后又回来时方块实体会重新加载并初始化。但由于出生点是常加载区域,来回传送不会重复触发此事件。
    • 该事件在OnModBlockNeteaseEffectCreatedClientEvent后触发。

# ModBlockEntityRemoveClientEvent

客户端

  • 描述

    客户端自定义方块实体卸载时触发

  • 参数

    参数名
    数据类型
    说明
    posX int 自定义方块实体的位置X
    posY int 自定义方块实体的位置Y
    posZ int 自定义方块实体的位置Z
    dimensionId int 维度id
    blockName str 方块的identifier,包含命名空间及名称
  • 返回值

# ModBlockEntityTickClientEvent

客户端

  • 描述

    客户端自定义方块实体tick事件

  • 参数

    参数名
    数据类型
    说明
    posX int 自定义方块实体的位置X
    posY int 自定义方块实体的位置Y
    posZ int 自定义方块实体的位置Z
    dimensionId int 维度id
    blockName str 方块的identifier,包含命名空间及名称
  • 返回值

  • 备注

    • 只有client_tick字段为true的自定义方块实体才能触发该事件(见自定义方块实体
    • 目前客户端实体tick范围为硬编码,范围为玩家为中心的等腰等斜边八边形,其中斜边长度为5,非斜边长度为3

# OnAfterFallOnBlockClientEvent

客户端

  • 描述

    触发时机:当实体降落到方块后客户端触发,主要用于力的计算

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    posX float 实体位置x
    posY float 实体位置y
    posZ float 实体位置z
    motionX float 瞬时移动X方向的力
    motionY float 瞬时移动Y方向的力
    motionZ float 瞬时移动Z方向的力
    blockName str 方块的identifier,包含命名空间及名称
    calculate bool 是否按脚本层传值计算力
  • 返回值

  • 备注

    • 不是所有方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义方块JSON组件
    • 如果要在脚本层修改motion,回传的需要是浮点型,例如需要赋值0.0而不是0
    • 如果需要修改实体的力,最好配合服务端事件同步修改,避免产生非预期现象
    • 因为引擎最后一定会按照原版方块规则计算力(普通方块置0,床、粘液块等反弹),所以脚本层如果想直接修改当前力需要将calculate设为true取消原版计算,按照传回值计算
    • 引擎在落地之后OnAfterFallOnBlockClientEvent会一直触发,因此请在脚本层中做对应的逻辑判断

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

# OnAfterFallOnBlockServerEvent

服务端

  • 描述

    触发时机:当实体降落到方块后服务端触发,主要用于力的计算

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    posX float 实体位置x
    posY float 实体位置y
    posZ float 实体位置z
    motionX float 瞬时移动X方向的力
    motionY float 瞬时移动Y方向的力
    motionZ float 瞬时移动Z方向的力
    blockName str 方块的identifier,包含命名空间及名称
    calculate bool 是否按脚本层传值计算力
  • 返回值

  • 备注

    • 不是所有方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义方块JSON组件
    • 如果要在脚本层修改motion,回传的需要是浮点型,例如需要赋值0.0而不是0
    • 如果需要修改实体的力,最好配合客户端事件同步修改,避免产生非预期现象
    • 因为引擎最后一定会按照原版方块规则计算力(普通方块置0,床、粘液块等反弹),所以脚本层如果想直接修改当前力需要将calculate设为true取消原版计算,按照传回值计算
    • 引擎在落地之后,OnAfterFallOnBlockServerEvent会一直触发,因此请在脚本层中做对应的逻辑判断

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

# OnBeforeFallOnBlockServerEvent

服务端

  • 描述

    触发时机:当实体刚降落到方块上时服务端触发,主要用于伤害计算

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    blockX int 方块位置x
    blockY int 方块位置y
    blockZ int 方块位置z
    blockName str 方块的identifier,包含命名空间及名称
    fallDistance float 实体下降距离,可在脚本层传给引擎
    cancel bool 是否取消引擎对实体下降伤害的计算
  • 返回值

  • 备注

    • 不是所有方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义方块JSON组件
    • 如果要在脚本层修改fallDistance,回传的一定要是浮点型,例如需要赋值0.0而不是0
    • 可能会因为轻微的反弹触发多次,可在脚本层针对fallDistance的值进行判断

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

# OnEntityInsideBlockClientEvent

客户端

  • 描述

    触发时机:当实体碰撞盒所在区域有方块时,客户端持续触发

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    dimensionId int 实体所在维度id
    slowdownMultiX float 实体移速X方向的减速比例
    slowdownMultiY float 实体移速Y方向的减速比例
    slowdownMultiZ float 实体移速Z方向的减速比例
    blockX int 方块位置x
    blockY int 方块位置y
    blockZ int 方块位置z
    blockName str 方块的identifier,包含命名空间及名称
    cancel bool 可由脚本层回传True给引擎,阻止触发后续原版逻辑
  • 返回值

  • 备注

    • 不是所有方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义方块JSON组件) ,原版方块需要先通过RegisterOnEntityInside接口注册才能触发
    • 压力板和拌线钩不支持该事件,如需监听请参考OnEntityInsideBlockServerEvent事件。
    • 如果需要修改slowdownMulti/cancel,强烈建议与服务端事件同步修改,避免出现被服务端矫正等非预期现象。
    • 如果要在脚本层修改slowdownMulti,回传的一定要是浮点型,例如需要赋值1.0而不是1
    • 有任意slowdownMulti参数被传回非0值时生效减速比例
    • slowdownMulti参数更像是一个Buff,例如并不是立刻计算,而是先保存在实体属性里延后计算、在已经有slowdownMulti属性的情况下会取最低的值、免疫掉落伤害等,与原版蜘蛛网逻辑基本一致。

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

# 相关接口

# RegisterOnEntityInside

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    可以动态注册与修改netease:on_entity_inside组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态添加与修改原版方块的netease:on_entity_inside组件
    • 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnEntityInside接口
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnEntityInside("minecraft:redstone_ore")

# UnRegisterOnEntityInside

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    可以动态删除netease:on_entity_inside组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态删除原版方块的netease:on_entity_inside组件
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.UnRegisterOnEntityInside("minecraft:redstone_ore")

# OnEntityInsideBlockServerEvent

服务端

  • 描述

    触发时机:当实体碰撞盒所在区域有方块时,服务端持续触发

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    slowdownMultiX float 实体移速X方向的减速比例,可在脚本层被修改
    slowdownMultiY float 实体移速Y方向的减速比例,可在脚本层被修改
    slowdownMultiZ float 实体移速Z方向的减速比例,可在脚本层被修改
    blockX int 方块位置x
    blockY int 方块位置y
    blockZ int 方块位置z
    blockName str 方块的identifier,包含命名空间及名称
    cancel bool 可由脚本层回传True给引擎,阻止触发后续原版逻辑
  • 返回值

  • 备注

    • 不是所有方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义方块JSON组件) ,原版方块需要先通过RegisterOnEntityInside接口注册才能触发
    • 如果需要修改slowdownMulti/cancel,强烈建议与客户端事件同步修改,避免出现客户端表现不一致等非预期现象。
    • 如果要在脚本层修改slowdownMulti,回传的一定要是浮点型,例如需要赋值1.0而不是1
    • 有任意slowdownMulti参数被传回非0值时生效减速比例
    • slowdownMulti参数更像是一个Buff,例如并不是立刻计算,而是先保存在实体属性里延后计算、在已经有slowdownMulti属性的情况下会取最低的值、免疫掉落伤害等,与原版蜘蛛网逻辑基本一致。

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

# 相关接口

# RegisterOnEntityInside

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    可以动态注册与修改netease:on_entity_inside组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态添加与修改原版方块的netease:on_entity_inside组件
    • (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
    • 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnEntityInside接口
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnEntityInside("minecraft:redstone_ore")

# UnRegisterOnEntityInside

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    可以动态删除netease:on_entity_inside组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态删除原版方块的netease:on_entity_inside组件
    • (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.UnRegisterOnEntityInside("minecraft:redstone_ore")

# OnModBlockNeteaseEffectCreatedClientEvent

客户端

  • 描述

    自定义方块实体绑定的特效创建成功事件,在自定义方块实体中绑定的特效创建成功时触发以及使用接口CreateFrameEffectForBlockEntity或CreateParticleEffectForBlockEntity为自定义方块实体添加特效成功时触发。

  • 参数

    参数名
    数据类型
    说明
    effectName str 创建成功的特效的自定义键值名称
    id int 该特效的id
    effectType int 该特效的类型,0为粒子特效,1为序列帧特效
    blockPos tuple(float,float,float) 该特效绑定的自定义方块实体的世界坐标
  • 返回值

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

# OnStandOnBlockClientEvent

客户端

  • 描述

    触发时机:当实体站立到方块上时客户端持续触发

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    dimensionId int 实体所在维度id
    posX float 实体位置x
    posY float 实体位置y
    posZ float 实体位置z
    motionX float 瞬时移动X方向的力
    motionY float 瞬时移动Y方向的力
    motionZ float 瞬时移动Z方向的力
    blockX int 方块位置x
    blockY int 方块位置y
    blockZ int 方块位置z
    blockName str 方块的identifier,包含命名空间及名称
    cancel bool 可由脚本层回传True给引擎,阻止触发后续原版逻辑
  • 返回值

  • 备注

    • 不是所有方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义方块JSON组件) ,原版方块需要先通过RegisterOnStandOn接口注册才能触发
    • 如果要在脚本层修改motion/cancel,强烈建议配合OnStandOnBlockServerEvent服务端事件同步修改,避免出现被服务端矫正等非预期现象
    • 如果要在脚本层修改motion,回传的一定要是浮点型,例如需要赋值0.0而不是0

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

# 相关接口

# RegisterOnStandOn

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    可以动态注册与修改netease:on_stand_on组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态添加与修改原版方块的netease:on_stand_on组件
    • 游戏原版逻辑是不会跑方块客户端OnStandOn相关逻辑,使用接口给原版方块添加客户端组件的话,都会使原版方块多跑客户端相关逻辑, 例如粘液块这种会有一定物理计算的方块,在客户端多跑一次计算之后,会有手感上的差别。
    • 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnStandOn接口
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStandOn("minecraft:redstone_ore")

# UnRegisterOnStandOn

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    可以动态删除netease:on_stand_on组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态删除原版方块的netease:on_stand_on组件
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.UnRegisterOnStandOn("minecraft:redstone_ore")

# OnStandOnBlockServerEvent

服务端

  • 描述

    触发时机:当实体站立到方块上时服务端持续触发

  • 参数

    参数名
    数据类型
    说明
    entityId str 实体id
    dimensionId int 实体所在维度id
    posX float 实体位置x
    posY float 实体位置y
    posZ float 实体位置z
    motionX float 瞬时移动X方向的力
    motionY float 瞬时移动Y方向的力
    motionZ float 瞬时移动Z方向的力
    blockX int 方块位置x
    blockY int 方块位置y
    blockZ int 方块位置z
    blockName str 方块的identifier,包含命名空间及名称
    cancel bool 可由脚本层回传True给引擎,阻止触发后续原版逻辑
  • 返回值

  • 备注

    • 不是所有方块都会触发该事件,需要在json中先配置触发开关(详情参考:自定义方块JSON组件) ,原版方块需要先通过RegisterOnStandOn接口注册才能触发
    • 如果需要修改motion/cancel,强烈建议配合客户端事件同步修改,避免出现客户端表现不一致等现象
    • 如果要在脚本层修改motion,回传的一定要是浮点型,例如需要赋值0.0而不是0

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

# 相关接口

# RegisterOnStandOn

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    可以动态注册与修改netease:on_stand_on组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态添加与修改原版方块的netease:on_stand_on组件
    • (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
    • 游戏原版逻辑是不会跑方块客户端OnStandOn相关逻辑,使用接口给原版方块添加客户端组件的话,都会使原版方块多跑客户端相关逻辑, 例如粘液块这种会有一定物理计算的方块,在客户端多跑一次计算之后,会有手感上的差别。
    • 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnStandOn接口
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStandOn("minecraft:redstone_ore")

# UnRegisterOnStandOn

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    可以动态删除netease:on_stand_on组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态删除原版方块的netease:on_stand_on组件
    • (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.UnRegisterOnStandOn("minecraft:redstone_ore")

# 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列表
  • 返回值

# PlayerTryDestroyBlockClientEvent

客户端

  • 描述

    当玩家即将破坏方块时,客户端线程触发该事件。主要用于床,旗帜,箱子这些根据方块实体数据进行渲染的方块,一般情况下请使用ServerPlayerTryDestroyBlockEvent

  • 参数

    参数名
    数据类型
    说明
    x int 方块x坐标
    y int 方块y坐标
    z int 方块z坐标
    face int 方块被敲击的面向id,参考Facing枚举
    blockName str 方块的identifier,包含命名空间及名称
    auxData int 方块附加值
    playerId str 试图破坏方块的玩家ID
    cancel bool 默认为False,在脚本层设置为True就能取消该方块的破坏
  • 返回值

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

# ServerBlockEntityTickEvent

服务端

  • 描述

    触发时机:自定义方块配置了netease:block_entity组件并设tick为true,方块在玩家的模拟距离(新建存档时可以设置,默认为4个区块)内,或者在tickingarea内的时候触发

  • 参数

    参数名
    数据类型
    说明
    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坐标
    clickX int 点击点的x比例位置
    clickY int 点击点的y比例位置
    clickZ int 点击点的z比例位置
    face int 点击方块的面,参考Facing枚举
    itemDict dict 使用的物品的物品信息字典
    dimensionId int 维度id
  • 返回值

  • 备注

    • 当对原生方块进行使用时,如堆肥桶等类似有 使用 功能的方块使用物品时,会触发该事件,而ServerItemUseOnEvent则不会被触发。对应的客户端事件同理。
    • 有的方块是在ServerBlockUseEvent中设置cancel生效,但是有部分方块是在ClientBlockUseEvent中设置cancel才生效,如有需求建议在两个事件中同时设置cancel以保证生效。
    • 部分工具对方块的使用效果,如锹犁地,不一定能通过该事件cancel,还需同时使用ItemUseOnServerEvent进行取消 目前已知有: 锹犁地相关的方块:草地、泥土、砂土、菌丝体、灰化土、缠根泥土,均需同时通过ServerBlockUseEvent和ItemUseOnServerEvent进行取消

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

# 相关接口

# AddBlockItemListenForUseEvent

method in mod.server.component.blockUseEventWhiteListCompServer.BlockUseEventWhiteListComponentServer

  • 描述

    增加blockName方块对ServerBlockUseEvent事件的脚本层监听

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块名称,格式:namespace:name:auxvalue,其中namespace:name:*匹配所有的auxvalue
  • 返回值

    数据类型
    说明
    bool 是否增加成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(levelId)
comp.AddBlockItemListenForUseEvent("minecraft:nether_brick_stairs:2")
# 注意blockName格式为namespace:name:auxvalue,如果不填auxvalue,则默认为所有auxvalue
# auxValue详细值详见官方wiki,如https://minecraft-zh.gamepedia.com/楼梯 中的‘方块数据值’

# RemoveBlockItemListenForUseEvent

method in mod.server.component.blockUseEventWhiteListCompServer.BlockUseEventWhiteListComponentServer

  • 描述

    移除blockName方块对ServerBlockUseEvent事件的脚本层监听

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块名称,格式:namespace:name:auxvalue,其中namespace:name:*匹配所有的auxvalue
  • 返回值

    数据类型
    说明
    bool 是否移除成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(levelId)
comp.RemoveBlockItemListenForUseEvent("minecraft:nether_brick_stairs:2")
# 注意blockName格式为namespace:name:auxvalue,如果不填auxvalue,则默认为所有auxvalue
# auxValue详细值详见官方wiki,如https://minecraft-zh.gamepedia.com/楼梯 中的‘方块数据值’

# ClearAllListenForBlockUseEventItems

method in mod.server.component.blockUseEventWhiteListCompServer.BlockUseEventWhiteListComponentServer

  • 描述

    清空所有已添加方块对ServerBlockUseEvent事件的脚本层监听

  • 参数

  • 返回值

    数据类型
    说明
    bool 是否清空成功
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(levelId)
comp.ClearAllListenForBlockUseEventItems()

# 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就能取消该方块的放置
  • 返回值

  • 备注

    • 部分放置后会产生实体的方块、可操作的方块、带有特殊逻辑的方块,不会触发该事件,包括但不限于床、门、告示牌、花盆、红石中继器、船、炼药锅、头部模型、蛋糕、酿造台、盔甲架等。

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

# 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一起使用,例如床,旗帜,箱子这些根据方块实体数据进行渲染的方块
    • 该服务端事件触发于玩家破坏方块时,当方块为秒破方块时(破坏方块所需时间为0或未设置破坏时间),本事件触发在StartDestroyBlockServerEvent事件之前;当方块为非秒破方块时,本事件触发在StartDestroyBlockServerEvent事件之后。
    • 可通过minecraft:destroy_time方块组件来修改方块的破坏时间

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

# ShearsDestoryBlockBeforeClientEvent

客户端

  • 描述

    触发时机:玩家手持剪刀破坏方块时,有剪刀特殊效果的方块会在客户端线程触发该事件

  • 参数

    参数名
    数据类型
    说明
    blockX int 方块位置x
    blockY int 方块位置y
    blockZ int 方块位置z
    blockName str 方块的identifier,包含命名空间及名称
    auxData int 方块附加值
    dropName str 触发剪刀效果的掉落物identifier,包含命名空间及名称
    dropCount int 触发剪刀效果的掉落物数量
    playerId str 触发剪刀效果的玩家id
    dimensionId int 玩家触发时的维度id
    cancelShears bool 是否取消剪刀效果
  • 返回值

  • 备注

    • 目前仅绊线会触发,需要取消剪刀效果得配合ShearsDestoryBlockBeforeServerEvent同时使用

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

# ShearsDestoryBlockBeforeServerEvent

服务端

  • 描述

    触发时机:玩家手持剪刀破坏方块时,有剪刀特殊效果的方块会在服务端线程触发该事件

  • 参数

    参数名
    数据类型
    说明
    blockX int 方块位置x
    blockY int 方块位置y
    blockZ int 方块位置z
    blockName str 方块的identifier,包含命名空间及名称
    auxData int 方块附加值
    dropName str 触发剪刀效果的掉落物identifier,包含命名空间及名称
    dropCount int 触发剪刀效果的掉落物数量
    playerId str 触发剪刀效果的玩家id
    dimensionId int 玩家触发时的维度id
    cancelShears bool 是否取消剪刀效果
  • 返回值

  • 备注

    • 该事件触发在ServerPlayerTryDestroyBlockEvent之后,如果在ServerPlayerTryDestroyBlockEvent事件中设置了取消Destory或取消掉落物会导致该事件不触发
    • 取消剪刀效果后不掉落任何东西的方块类型:蜘蛛网、枯萎的灌木、草丛、下界苗、树叶、海草、藤蔓
    • 绊线取消剪刀效果需要配合ShearsDestoryBlockBeforeClientEvent同时使用,否则在表现上可能展现出来的还是剪刀剪断后的效果。绊线取消剪刀效果后依然会掉落成线。

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

# StartDestroyBlockClientEvent

客户端

  • 描述

    玩家开始挖方块时触发。创造模式下不触发。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(float,float,float) 方块的坐标
    blockName str 方块的identifier,包含命名空间及名称
    auxValue int 方块的附加值
    playerId str 玩家id
    cancel bool 修改为True时,可阻止玩家进入挖方块的状态。需要与StartDestroyBlockServerEvent一起修改。
    face int 方块被敲击面,参考Facing枚举
  • 返回值

  • 备注

    • 如果是隔着火焰挖方块,即使将该事件cancel掉,火焰也会被扑灭。如果要阻止火焰扑灭,需要配合ExtinguishFireClientEvent使用

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

# StartDestroyBlockServerEvent

服务端

  • 描述

    玩家开始挖方块时触发。创造模式下不触发。

  • 参数

    参数名
    数据类型
    说明
    pos tuple(float,float,float) 方块的坐标
    blockName str 方块的identifier,包含命名空间及名称
    auxValue int 方块的附加值
    playerId str 玩家id
    dimensionId int 维度id
    cancel bool 修改为True时,可阻止玩家进入挖方块的状态。需要与StartDestroyBlockClientEvent一起修改。
    face int 方块被敲击面,参考Facing枚举
  • 返回值

  • 备注

    • 如果是隔着火焰挖方块,即使将该事件cancel掉,火焰也会被扑灭。如果要阻止火焰扑灭,需要配合ExtinguishFireServerEvent使用
    • 该服务端事件触发于服务端收到玩家破坏操作时,当方块为秒破方块时(破坏方块所需时间为0或未设置破坏时间),ServerPlayerTryDestroyBlockEvent事件触发在本事件之前;当方块为非秒破方块时,ServerPlayerTryDestroyBlockEvent事件触发在本事件之后。
    • 秒破方块在本事件触发前已经被服务端删除,此时本事件获取到的blockName为minecraft:air,且无法通过本事件进行取消操作,以下是两个解决方法: (1)用ServerPlayerTryDestroyBlockEvent获取到正确的方块信息或取消操作。 (2)通过minecraft:destroy_time方块组件来修改方块的破坏时间。

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

# StepOffBlockClientEvent

客户端

  • 描述

    触发时机:实体移动离开一个实心方块时触发

  • 参数

    参数名
    数据类型
    说明
    blockX int 方块x坐标
    blockY int 方块y坐标
    blockZ int 方块z坐标
    entityId str 触发的entity的唯一ID
    blockName str 方块的identifier,包含命名空间及名称
    dimensionId int 维度id
  • 返回值

  • 备注

    • 不是所有方块都会触发该事件,自定义方块需要在json中先配置触发开关(详情参考:自定义方块JSON组件), 原版方块需要先通过RegisterOnStepOff接口注册才能触发
    • 压力板与绊线钩这种非实心方块不会触发

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

# 相关接口

# RegisterOnStepOff

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    可以动态注册与修改netease:on_step_off组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态添加与修改原版方块的netease:on_step_off组件
    • 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnStepOff接口
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStepOff("minecraft:redstone_ore")

# UnRegisterOnStepOff

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    可以动态删除netease:on_step_off组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态删除原版方块的netease:on_step_off组件
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.UnRegisterOnStepOff("minecraft:redstone_ore")

# StepOffBlockServerEvent

服务端

  • 描述

    触发时机:实体移动离开一个实心方块时触发

  • 参数

    参数名
    数据类型
    说明
    blockX int 方块x坐标
    blockY int 方块y坐标
    blockZ int 方块z坐标
    entityId str 触发的entity的唯一ID
    blockName str 方块的identifier,包含命名空间及名称
    dimensionId int 维度id
  • 返回值

  • 备注

    • 不是所有方块都会触发该事件,自定义方块需要在json中先配置触发开关(详情参考:自定义方块JSON组件), 原版方块需要先通过RegisterOnStepOff接口注册才能触发
    • 压力板与绊线钩这种非实心方块不会触发

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

# 相关接口

# RegisterOnStepOff

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    可以动态注册与修改netease:on_step_off组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态添加与修改原版方块的netease:on_step_off组件
    • (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
    • 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnStepOff接口
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStepOff("minecraft:redstone_ore")

# UnRegisterOnStepOff

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    可以动态删除netease:on_step_off组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态删除原版方块的netease:on_step_off组件
    • (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.UnRegisterOnStepOff("minecraft:redstone_ore")

# StepOnBlockClientEvent

客户端

  • 描述

    触发时机:实体刚移动至一个新实心方块时触发。

  • 参数

    参数名
    数据类型
    说明
    cancel bool 是否允许触发,默认为False,若设为True,可阻止触发后续原版逻辑
    blockX int 方块x坐标
    blockY int 方块y坐标
    blockZ int 方块z坐标
    entityId str 触发的entity的唯一ID
    blockName str 方块的identifier,包含命名空间及名称
    dimensionId int 维度id
  • 返回值

  • 备注

    • 在合并微软更新之后,本事件触发时机与微软molang实验性玩法组件"minecraft:on_step_on"一致
    • 版本更新后,不再支持压力板和拌线钩这两种非实心方块触发此事件,如需监听请参考OnEntityInsideBlockServerEvent事件。
    • 不是所有方块都会触发该事件,自定义方块需要在json中先配置触发开关(详情参考:自定义方块JSON组件), 原版方块需要先通过RegisterOnStepOn接口注册才能触发。原版的红石矿默认注册了,但深层红石矿没有默认注册。
    • 如果需要修改cancel,强烈建议配合服务端事件同步修改,避免出现被服务端矫正等非预期现象。

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

# 相关接口

# RegisterOnStepOn

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    可以动态注册与修改netease:on_step_on组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态添加与修改原版方块的netease:on_step_on组件
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStepOn("minecraft:redstone_ore")

# UnRegisterOnStepOn

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

    可以动态删除netease:on_step_on组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态删除原版方块的netease:on_step_on组件
  • 示例

import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.UnRegisterOnStepOn("minecraft:redstone_ore")

# StepOnBlockServerEvent

服务端

  • 描述

    触发时机:实体刚移动至一个新实心方块时触发。

  • 参数

    参数名
    数据类型
    说明
    cancel bool 是否允许触发,默认为False,若设为True,可阻止触发后续物理交互事件
    blockX int 方块x坐标
    blockY int 方块y坐标
    blockZ int 方块z坐标
    entityId str 触发的entity的唯一ID
    blockName str 方块的identifier,包含命名空间及名称
    dimensionId int 维度id
  • 返回值

  • 备注

    • 在合并微软更新之后,本事件触发时机与微软molang实验性玩法组件"minecraft:on_step_on"一致
    • 压力板与绊线钩在过去的版本的事件是可以触发的,但在更新后这种非实心方块并不会触发,有需要的可以使用OnEntityInsideBlockServerEvent事件。
    • 不是所有方块都会触发该事件,自定义方块需要在json中先配置触发开关(详情参考:自定义方块JSON组件), 原版方块需要先通过RegisterOnStepOn接口注册才能触发。原版的红石矿默认注册了,但深层红石矿没有默认注册。
    • 如果需要修改cancel,强烈建议配合客户端事件同步修改,避免出现客户端表现不一致等非预期现象。

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

# 相关接口

# RegisterOnStepOn

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    可以动态注册与修改netease:on_step_on组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态添加与修改原版方块的netease:on_step_on组件
    • (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStepOn("minecraft:redstone_ore")

# UnRegisterOnStepOn

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

    可以动态删除netease:on_step_on组件

  • 参数

    参数名
    数据类型
    说明
    blockName str 方块标识符,包含命名空间,如minecraft:grass
  • 返回值

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

    • 目前仅能动态删除原版方块的netease:on_step_on组件
    • (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
  • 示例

import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.UnRegisterOnStepOn("minecraft:redstone_ore")

BlockDestroyByLiquidServerEvent

BlockLiquidStateChangeAfterServerEvent

BlockLiquidStateChangeServerEvent

BlockNeighborChangedServerEvent

BlockRandomTickServerEvent

BlockRemoveServerEvent

相关接口

ListenOnBlockRemoveEvent

BlockSnowStateChangeAfterServerEvent

BlockSnowStateChangeServerEvent

BlockStrengthChangedServerEvent

ChestBlockTryPairWithServerEvent

ClientBlockUseEvent

相关接口

AddBlockItemListenForUseEvent

RemoveBlockItemListenForUseEvent

ClearAllListenForBlockUseEventItems

CommandBlockContainerOpenEvent

CommandBlockUpdateEvent

DestroyBlockEvent

DirtBlockToGrassBlockServerEvent

EntityPlaceBlockAfterServerEvent

FallingBlockBreakServerEvent

FallingBlockCauseDamageBeforeClientEvent

FallingBlockCauseDamageBeforeServerEvent

FallingBlockReturnHeavyBlockServerEvent

FarmBlockToDirtBlockServerEvent

GrassBlockToDirtBlockServerEvent

HeavyBlockStartFallingServerEvent

HopperTryPullInServerEvent

HopperTryPullOutServerEvent

ModBlockEntityLoadedClientEvent

ModBlockEntityRemoveClientEvent

ModBlockEntityTickClientEvent

OnAfterFallOnBlockClientEvent

OnAfterFallOnBlockServerEvent

OnBeforeFallOnBlockServerEvent

OnEntityInsideBlockClientEvent

相关接口

RegisterOnEntityInside

UnRegisterOnEntityInside

OnEntityInsideBlockServerEvent

相关接口

RegisterOnEntityInside

UnRegisterOnEntityInside

OnModBlockNeteaseEffectCreatedClientEvent

OnStandOnBlockClientEvent

相关接口

RegisterOnStandOn

UnRegisterOnStandOn

OnStandOnBlockServerEvent

相关接口

RegisterOnStandOn

UnRegisterOnStandOn

PistonActionServerEvent

PlayerTryDestroyBlockClientEvent

ServerBlockEntityTickEvent

ServerBlockUseEvent

相关接口

AddBlockItemListenForUseEvent

RemoveBlockItemListenForUseEvent

ClearAllListenForBlockUseEventItems

ServerEntityTryPlaceBlockEvent

ServerPlaceBlockEntityEvent

ServerPlayerTryDestroyBlockEvent

ShearsDestoryBlockBeforeClientEvent

ShearsDestoryBlockBeforeServerEvent

StartDestroyBlockClientEvent

StartDestroyBlockServerEvent

StepOffBlockClientEvent

相关接口

RegisterOnStepOff

UnRegisterOnStepOff

StepOffBlockServerEvent

相关接口

RegisterOnStepOff

UnRegisterOnStepOff

StepOnBlockClientEvent

相关接口

RegisterOnStepOn

UnRegisterOnStepOn

StepOnBlockServerEvent

相关接口

RegisterOnStepOn

UnRegisterOnStepOn