Skip to content

方块

索引

事件
描述
BlockAnimateRandomTickEvent客户端触发时机:以摄像机为中心,随机选取周围的方块触发Tick,触发的数量取决于设备性能。只有添加了netease:block_animate_random_tick的自定义方块才会触发此事件
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服务端触发时机:实体刚移动至一个新实心方块时触发。

方块

BlockAnimateRandomTickEvent

客户端

  • 描述

    触发时机:以摄像机为中心,随机选取周围的方块触发Tick,触发的数量取决于设备性能。只有添加了netease:block_animate_random_tick的自定义方块才会触发此事件

  • 参数

    参数名
    数据类型
    说明
    blockPostuple(float,float,float)方块坐标
  • 返回值

BlockDestroyByLiquidServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
    liquidNamestr流体方块id
    blockNamestr方块id
    auxValueint方块附加值
    dimensionIdint方块所在维度id
  • 返回值

  • 备注

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

BlockLiquidStateChangeAfterServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    blockNamestr方块的identifier,包含命名空间及名称
    auxValueint方块附加值
    dimensionint方块维度
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
    turnLiquidbool是否转为含水,true则转为含水,false则脱离含水
  • 返回值

BlockLiquidStateChangeServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    blockNamestr方块的identifier,包含命名空间及名称
    auxValueint方块附加值
    dimensionint方块维度
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
    turnLiquidbool是否转为含水,true则转为含水,false则脱离含水
  • 返回值

BlockNeighborChangedServerEvent

服务端

  • 描述

    触发时机:自定义方块周围的方块发生变化时,需要配置netease:neighborchanged_sendto_script,详情请查阅《自定义农作物》文档

  • 参数

    参数名
    数据类型
    说明
    dimensionIdint维度
    posXint方块x坐标
    posYint方块y坐标
    posZint方块z坐标
    blockNamestr方块的identifier,包含命名空间及名称
    auxValueint方块附加值
    neighborPosXint变化方块x坐标
    neighborPosYint变化方块y坐标
    neighborPosZint变化方块z坐标
    fromBlockNamestr方块变化前的identifier,包含命名空间及名称
    fromBlockAuxValueint方块变化前附加值
    toBlockNamestr方块变化后的identifier,包含命名空间及名称
    toAuxValueint方块变化后附加值
  • 返回值

BlockRandomTickServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    posXint方块x坐标
    posYint方块y坐标
    posZint方块z坐标
    blockNamestr方块名称
    fullNamestr方块的identifier,包含命名空间及名称
    auxValueint方块附加值
    brightnessint方块亮度
    dimensionIdint实体维度
  • 返回值

BlockRemoveServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    xint方块位置x
    yint方块位置y
    zint方块位置z
    fullNamestr方块的identifier,包含命名空间及名称
    auxValueint方块的附加值
    dimensionint该方块所在的维度
  • 返回值

相关接口

ListenOnBlockRemoveEvent

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

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

  • 参数

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

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

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

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

BlockSnowStateChangeAfterServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    dimensionint方块维度
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
    turnSnowbool是否转为含雪,true则转为含雪,false则脱离含雪
    setBlockTypeint方块进入脱离含雪的原因,参考SetBlockType
  • 返回值

BlockSnowStateChangeServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    dimensionint方块维度
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
    turnSnowbool是否转为含雪,true则转为含雪,false则脱离含雪
    setBlockTypeint方块进入脱离含雪的原因,参考SetBlockType
  • 返回值

BlockStrengthChangedServerEvent

服务端

  • 描述

    触发时机:自定义机械元件方块红石信号量发生变化时触发

  • 参数

    参数名
    数据类型
    说明
    posXint方块x坐标
    posYint方块y坐标
    posZint方块z坐标
    blockNamestr方块的identifier,包含命名空间及名称
    auxValueint方块附加值
    newStrengthint变化后的红石信号量
    dimensionIdint维度
  • 返回值

ChestBlockTryPairWithServerEvent

服务端

  • 描述

    触发时机:两个并排的小箱子方块准备组合为一个大箱子方块时

  • 参数

    参数名
    数据类型
    说明
    cancelbool是否允许触发,默认为False,若设为True,可阻止小箱子组合成为一个大箱子
    blockXint小箱子方块x坐标
    blockYint小箱子方块y坐标
    blockZint小箱子方块z坐标
    otherBlockXint将要与之组合的另外一个小箱子方块x坐标
    otherBlockYint将要与之组合的另外一个小箱子方块y坐标
    otherBlockZint将要与之组合的另外一个小箱子方块z坐标
    dimensionIdint维度id
  • 返回值

ClientBlockUseEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家Id
    blockNamestr方块的identifier,包含命名空间及名称
    auxint方块附加值
    cancelbool设置为True可拦截与方块交互的逻辑。
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
    clickXfloat点击点的x比例位置
    clickYfloat点击点的y比例位置
    clickZfloat点击点的z比例位置
  • 返回值

  • 备注

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

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

相关接口

AddBlockItemListenForUseEvent

method in mod.client.component.blockUseEventWhiteListCompClient.BlockUseEventWhiteListComponentClient

  • 描述

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

  • 参数

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

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

python
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事件的脚本层监听

  • 参数

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

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

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

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

CommandBlockContainerOpenEvent

服务端

  • 描述

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

  • 参数

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

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

CommandBlockUpdateEvent

服务端

  • 描述

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

  • 参数

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

  • 备注

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

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

DestroyBlockEvent

服务端

  • 描述

    触发时机:当方块已经被玩家破坏时触发该事件。

  • 参数

    参数名
    数据类型
    说明
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
    faceint方块被敲击的面向id,参考Facing枚举
    fullNamestr方块的identifier,包含命名空间及名称
    auxDataint方块附加值
    playerIdstr破坏方块的玩家ID
    dimensionIdint维度id
    dropEntityIdslist(str)掉落物实体id列表
  • 返回值

  • 备注

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

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

DirtBlockToGrassBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    dimensionint方块维度
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
  • 返回值

  • 备注

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

EntityPlaceBlockAfterServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
    fullNamestr方块的identifier,包含命名空间及名称
    auxDataint方块附加值
    entityIdstr试图放置方块的生物ID
    dimensionIdint维度id
    faceint点击方块的面,参考Facing枚举
  • 返回值

  • 备注

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

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

FallingBlockBreakServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    fallingBlockIdstr下落的方块实体id
    fallingBlockXfloat下落的方块实体位置x
    fallingBlockYfloat下落的方块实体位置y
    fallingBlockZfloat下落的方块实体位置z
    blockNamestr重力方块的identifier,包含命名空间及名称
    fallTickAmountint下落的方块实体持续下落了多少tick
    dimensionIdint下落的方块实体维度id
    cancelDropbool是否取消方块物品掉落,可以在脚本层中设置
  • 返回值

  • 备注

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

FallingBlockCauseDamageBeforeClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    fallingBlockIdint下落的方块实体id
    fallingBlockXfloat下落的方块实体位置x
    fallingBlockYfloat下落的方块实体位置y
    fallingBlockZfloat下落的方块实体位置z
    blockNamestr重力方块的identifier,包含命名空间及名称
    dimensionIdint下落的方块实体维度id
    collidingEntityslist(str)当前碰撞到的实体列表id(客户端只能获取到玩家),如果没有的话是None
    fallTickAmountint下落的方块实体持续下落了多少tick
    fallDistancefloat下落的方块实体持续下落了多少距离
    isHarmfulbool客户端始终为false,因为客户端不会计算伤害值
    fallDamageint对实体的伤害
  • 返回值

  • 备注

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

FallingBlockCauseDamageBeforeServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    fallingBlockIdstr下落的方块实体id
    fallingBlockXfloat下落的方块实体位置x
    fallingBlockYfloat下落的方块实体位置y
    fallingBlockZfloat下落的方块实体位置z
    blockNamestr重力方块的identifier,包含命名空间及名称
    dimensionIdint下落的方块实体维度id
    collidingEntityslist(str)当前碰撞到的实体列表id,如果没有的话是None
    fallTickAmountint下落的方块实体持续下落了多少tick
    fallDistancefloat下落的方块实体持续下落了多少距离
    isHarmfulbool是否计算对实体的伤害,引擎传来的值由json配置和伤害是否大于0决定,可在脚本层修改传回引擎
    fallDamageint对实体的伤害,引擎传来的值距离和json配置决定,可在脚本层修改传回引擎
  • 返回值

  • 备注

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

FallingBlockReturnHeavyBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    fallingBlockIdint下落的方块实体id
    blockXint方块位置x
    blockYint方块位置y
    blockZint方块位置z
    heavyBlockNamestr重力方块的identifier,包含命名空间及名称
    prevHereBlockNamestr变回重力方块时,原本方块位置的identifier,包含命名空间及名称
    dimensionIdint下落的方块实体维度id
    fallTickAmountint下落的方块实体持续下落了多少tick
  • 返回值

  • 备注

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

FarmBlockToDirtBlockServerEvent

服务端

  • 描述

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

  • 参数

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

  • 备注

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

GrassBlockToDirtBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    dimensionint方块维度
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
  • 返回值

  • 备注

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

HeavyBlockStartFallingServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    fallingBlockIdstr下落的方块实体id
    blockXint方块位置x
    blockYint方块位置y
    blockZint方块位置z
    blockNamestr重力方块的identifier,包含命名空间及名称
    dimensionIdint下落的方块实体维度id
  • 返回值

  • 备注

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

HopperTryPullInServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    xint漏斗位置x
    yint漏斗位置y
    zint漏斗位置z
    abovePosXint交互的容器位置x
    abovePosYint交互的容器位置y
    abovePosZint交互的容器位置z
    dimensionIdint维度id
    canHopperbool是否允许容器往漏斗加东西(要关闭此交互,需先监听此事件再放置容器)
  • 返回值

HopperTryPullOutServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    xint漏斗位置x
    yint漏斗位置y
    zint漏斗位置z
    attachedPosXint交互的容器位置x
    attachedPosYint交互的容器位置y
    attachedPosZint交互的容器位置z
    dimensionIdint维度id
    canHopperbool是否允许漏斗往容器加东西(要关闭此交互,需先监听此事件再放置容器)
  • 返回值

ModBlockEntityLoadedClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    posXint自定义方块实体的位置X
    posYint自定义方块实体的位置Y
    posZint自定义方块实体的位置Z
    dimensionIdint维度id
    blockNamestr方块的identifier,包含命名空间及名称
  • 返回值

  • 备注

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

ModBlockEntityRemoveClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    posXint自定义方块实体的位置X
    posYint自定义方块实体的位置Y
    posZint自定义方块实体的位置Z
    dimensionIdint维度id
    blockNamestr方块的identifier,包含命名空间及名称
  • 返回值

ModBlockEntityTickClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    posXint自定义方块实体的位置X
    posYint自定义方块实体的位置Y
    posZint自定义方块实体的位置Z
    dimensionIdint维度id
    blockNamestr方块的identifier,包含命名空间及名称
  • 返回值

  • 备注

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

OnAfterFallOnBlockClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    posXfloat实体位置x
    posYfloat实体位置y
    posZfloat实体位置z
    motionXfloat瞬时移动X方向的力
    motionYfloat瞬时移动Y方向的力
    motionZfloat瞬时移动Z方向的力
    blockNamestr方块的identifier,包含命名空间及名称
    calculatebool是否按脚本层传值计算力
  • 返回值

  • 备注

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

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

OnAfterFallOnBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    posXfloat实体位置x
    posYfloat实体位置y
    posZfloat实体位置z
    motionXfloat瞬时移动X方向的力
    motionYfloat瞬时移动Y方向的力
    motionZfloat瞬时移动Z方向的力
    blockNamestr方块的identifier,包含命名空间及名称
    calculatebool是否按脚本层传值计算力
  • 返回值

  • 备注

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

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

OnBeforeFallOnBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    blockXint方块位置x
    blockYint方块位置y
    blockZint方块位置z
    blockNamestr方块的identifier,包含命名空间及名称
    fallDistancefloat实体下降距离,可在脚本层传给引擎
    cancelbool是否取消引擎对实体下降伤害的计算
  • 返回值

  • 备注

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

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

OnEntityInsideBlockClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    dimensionIdint实体所在维度id
    slowdownMultiXfloat实体移速X方向的减速比例
    slowdownMultiYfloat实体移速Y方向的减速比例
    slowdownMultiZfloat实体移速Z方向的减速比例
    blockXint方块位置x
    blockYint方块位置y
    blockZint方块位置z
    blockNamestr方块的identifier,包含命名空间及名称
    cancelbool可由脚本层回传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组件

  • 参数

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

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

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

python
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组件

  • 参数

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

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

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

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

OnEntityInsideBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    slowdownMultiXfloat实体移速X方向的减速比例,可在脚本层被修改
    slowdownMultiYfloat实体移速Y方向的减速比例,可在脚本层被修改
    slowdownMultiZfloat实体移速Z方向的减速比例,可在脚本层被修改
    blockXint方块位置x
    blockYint方块位置y
    blockZint方块位置z
    blockNamestr方块的identifier,包含命名空间及名称
    cancelbool可由脚本层回传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组件

  • 参数

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

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

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

python
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组件

  • 参数

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

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

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

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

OnModBlockNeteaseEffectCreatedClientEvent

客户端

  • 描述

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

  • 参数

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

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

OnStandOnBlockClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    dimensionIdint实体所在维度id
    posXfloat实体位置x
    posYfloat实体位置y
    posZfloat实体位置z
    motionXfloat瞬时移动X方向的力
    motionYfloat瞬时移动Y方向的力
    motionZfloat瞬时移动Z方向的力
    blockXint方块位置x
    blockYint方块位置y
    blockZint方块位置z
    blockNamestr方块的identifier,包含命名空间及名称
    cancelbool可由脚本层回传True给引擎,阻止触发后续原版逻辑
  • 返回值

  • 备注

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

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

相关接口

RegisterOnStandOn

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

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

  • 参数

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

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

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

python
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组件

  • 参数

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

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

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

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

OnStandOnBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    entityIdstr实体id
    dimensionIdint实体所在维度id
    posXfloat实体位置x
    posYfloat实体位置y
    posZfloat实体位置z
    motionXfloat瞬时移动X方向的力
    motionYfloat瞬时移动Y方向的力
    motionZfloat瞬时移动Z方向的力
    blockXint方块位置x
    blockYint方块位置y
    blockZint方块位置z
    blockNamestr方块的identifier,包含命名空间及名称
    cancelbool可由脚本层回传True给引擎,阻止触发后续原版逻辑
  • 返回值

  • 备注

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

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

相关接口

RegisterOnStandOn

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

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

  • 参数

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

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

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

python
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组件

  • 参数

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

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

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

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

PistonActionServerEvent

服务端

  • 描述

    触发时机:活塞或者粘性活塞推送/缩回影响附近方块时

  • 参数

    参数名
    数据类型
    说明
    cancelbool是否允许触发,默认为False,若设为True,可阻止触发后续的事件
    actionstr推送时=expanding;缩回时=retracting
    pistonFacingint活塞的朝向,参考Facing枚举
    pistonMoveFacingint活塞的运动方向,参考Facing枚举
    dimensionIdint活塞方块所在的维度
    pistonXint活塞方块的x坐标
    pistonYint活塞方块的y坐标
    pistonZint活塞方块的z坐标
    blockListlist[[x,y,z],...]活塞运动影响到产生被移动效果的方块坐标[x,y,z],均为int类型
    breakBlockListlist[[x,y,z],...]活塞运动影响到产生被破坏效果的方块坐标[x,y,z],均为int类型
    entityListlist[string,...]活塞运动影响到产生被移动或被破坏效果的实体的ID列表
  • 返回值

PlayerTryDestroyBlockClientEvent

客户端

  • 描述

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

  • 参数

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

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

ServerBlockEntityTickEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    blockNamestr该方块名称
    dimensionint该方块所在的维度
    posXint该方块的x坐标
    posYint该方块的y坐标
    posZint该方块的z坐标
  • 返回值

  • 备注

    • 方块实体的tick事件频率为每秒钟20次
    • 触发本事件时,若正在退出游戏,将无法获取到抛出本事件的方块实体数据(GetBlockEntityData函数返回None),也无法对其进行操作

ServerBlockUseEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    playerIdstr玩家Id
    blockNamestr方块的identifier,包含命名空间及名称
    auxint方块附加值
    cancelbool设置为True可拦截与方块交互的逻辑。
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
    clickXfloat点击点的x比例位置
    clickYfloat点击点的y比例位置
    clickZfloat点击点的z比例位置
    faceint点击方块的面,参考Facing枚举
    itemDictdict使用的物品的物品信息字典
    dimensionIdint维度id
  • 返回值

  • 备注

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

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

相关接口

AddBlockItemListenForUseEvent

method in mod.server.component.blockUseEventWhiteListCompServer.BlockUseEventWhiteListComponentServer

  • 描述

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

  • 参数

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

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

python
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事件的脚本层监听

  • 参数

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

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

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

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

ServerEntityTryPlaceBlockEvent

服务端

  • 描述

    触发时机:当生物试图放置方块时触发该事件。

  • 参数

    参数名
    数据类型
    说明
    xint方块x坐标,支持修改
    yint方块y坐标,支持修改
    zint方块z坐标,支持修改
    fullNamestr方块的identifier,包含命名空间及名称,支持修改
    auxDataint方块附加值,支持修改
    entityIdstr试图放置方块的生物ID
    dimensionIdint维度id
    faceint点击方块的面,参考Facing枚举
    cancelbool默认为False,在脚本层设置为True就能取消该方块的放置
    clickXfloat点击点的x比例位置
    clickYfloat点击点的y比例位置
    clickZfloat点击点的z比例位置
  • 返回值

  • 备注

    • 部分放置后会产生实体的方块、可操作的方块、带有特殊逻辑的方块,不会触发该事件,包括但不限于床、门、告示牌、船、头部模型、盔甲架,半台阶方块叠加时等。
    • 修改放置方块信息只对一般方块有效,对一些特殊方块无效,会导致放置取消,特殊方块包括:钟、蜡烛、管珊瑚扇、台阶、青蛙卵、脚手架、海泡菜、顶层雪、睡莲

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

ServerPlaceBlockEntityEvent

服务端

  • 描述

    触发时机:手动放置或通过接口创建含自定义方块实体的方块时触发,此时可向该方块实体中存放数据

  • 参数

    参数名
    数据类型
    说明
    blockNamestr该方块名称
    dimensionint该方块所在的维度
    posXint该方块的x坐标
    posYint该方块的y坐标
    posZint该方块的z坐标
  • 返回值

ServerPlayerTryDestroyBlockEvent

服务端

  • 描述

    当玩家即将破坏方块时,服务端线程触发该事件。

  • 参数

    参数名
    数据类型
    说明
    xint方块x坐标
    yint方块y坐标
    zint方块z坐标
    faceint方块被敲击的面向id,参考Facing枚举
    fullNamestr方块的identifier,包含命名空间及名称
    auxDataint方块附加值
    playerIdstr试图破坏方块的玩家ID
    dimensionIdint维度id
    cancelbool默认为False,在脚本层设置为True就能取消该方块的破坏
    spawnResourcesbool是否生成掉落物,默认为True,在脚本层设置为False就能取消生成掉落物
  • 返回值

  • 备注

    • 若需要禁止某些特殊方块的破坏,需要配合PlayerTryDestroyBlockClientEvent一起使用,例如床,旗帜,箱子这些根据方块实体数据进行渲染的方块
    • 该服务端事件触发于玩家破坏方块时,当方块为秒破方块时(破坏方块所需时间为0或未设置破坏时间),本事件触发在StartDestroyBlockServerEvent事件之前;当方块为非秒破方块时,本事件触发在StartDestroyBlockServerEvent事件之后。
    • 可通过minecraft:destroy_time方块组件来修改方块的破坏时间

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

ShearsDestoryBlockBeforeClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    blockXint方块位置x
    blockYint方块位置y
    blockZint方块位置z
    blockNamestr方块的identifier,包含命名空间及名称
    auxDataint方块附加值
    dropNamestr触发剪刀效果的掉落物identifier,包含命名空间及名称
    dropCountint触发剪刀效果的掉落物数量
    playerIdstr触发剪刀效果的玩家id
    dimensionIdint玩家触发时的维度id
    cancelShearsbool是否取消剪刀效果
  • 返回值

  • 备注

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

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

ShearsDestoryBlockBeforeServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    blockXint方块位置x
    blockYint方块位置y
    blockZint方块位置z
    blockNamestr方块的identifier,包含命名空间及名称
    auxDataint方块附加值
    dropNamestr触发剪刀效果的掉落物identifier,包含命名空间及名称
    dropCountint触发剪刀效果的掉落物数量
    playerIdstr触发剪刀效果的玩家id
    dimensionIdint玩家触发时的维度id
    cancelShearsbool是否取消剪刀效果
  • 返回值

  • 备注

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

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

StartDestroyBlockClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    postuple(float,float,float)方块的坐标
    blockNamestr方块的identifier,包含命名空间及名称
    auxValueint方块的附加值
    playerIdstr玩家id
    cancelbool修改为True时,可阻止玩家进入挖方块的状态。需要与StartDestroyBlockServerEvent一起修改。
    faceint方块被敲击面,参考Facing枚举
  • 返回值

  • 备注

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

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

StartDestroyBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    postuple(float,float,float)方块的坐标
    blockNamestr方块的identifier,包含命名空间及名称
    auxValueint方块的附加值
    playerIdstr玩家id
    dimensionIdint维度id
    cancelbool修改为True时,可阻止玩家进入挖方块的状态。需要与StartDestroyBlockClientEvent一起修改。
    faceint方块被敲击面,参考Facing枚举
  • 返回值

  • 备注

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

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

StepOffBlockClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    blockXint方块x坐标
    blockYint方块y坐标
    blockZint方块z坐标
    entityIdstr触发的entity的唯一ID
    blockNamestr方块的identifier,包含命名空间及名称
    dimensionIdint维度id
  • 返回值

  • 备注

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

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

相关接口

RegisterOnStepOff

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

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

  • 参数

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

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

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

python
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组件

  • 参数

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

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

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

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

StepOffBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    blockXint方块x坐标
    blockYint方块y坐标
    blockZint方块z坐标
    entityIdstr触发的entity的唯一ID
    blockNamestr方块的identifier,包含命名空间及名称
    dimensionIdint维度id
  • 返回值

  • 备注

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

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

相关接口

RegisterOnStepOff

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

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

  • 参数

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

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

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

python
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组件

  • 参数

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

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

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

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

StepOnBlockClientEvent

客户端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    cancelbool是否允许触发,默认为False,若设为True,可阻止触发后续原版逻辑
    blockXint方块x坐标
    blockYint方块y坐标
    blockZint方块z坐标
    entityIdstr触发的entity的唯一ID
    blockNamestr方块的identifier,包含命名空间及名称
    dimensionIdint维度id
  • 返回值

  • 备注

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

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

相关接口

RegisterOnStepOn

method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient

  • 描述

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

  • 参数

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

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

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

python
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组件

  • 参数

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

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

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

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

StepOnBlockServerEvent

服务端

  • 描述

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

  • 参数

    参数名
    数据类型
    说明
    cancelbool是否允许触发,默认为False,若设为True,可阻止触发后续物理交互事件
    blockXint方块x坐标
    blockYint方块y坐标
    blockZint方块z坐标
    entityIdstr触发的entity的唯一ID
    blockNamestr方块的identifier,包含命名空间及名称
    dimensionIdint维度id
  • 返回值

  • 备注

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

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

相关接口

RegisterOnStepOn

method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer

  • 描述

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

  • 参数

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

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

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

python
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组件

  • 参数

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

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

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

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