---
sidebarDepth: 1
---
# 方块
# 索引
| 事件 |
| 描述 |
| --- | --- | --- |
| [BlockDestroyByLiquidServerEvent](方块.md#blockdestroybyliquidserverevent) | 服务端 | 触发时机:方块被水流破坏的事件 |
| [BlockLiquidStateChangeAfterServerEvent](方块.md#blockliquidstatechangeafterserverevent) | 服务端 | 触发时机:方块转为含水或者脱离含水(流体)后触发 |
| [BlockLiquidStateChangeServerEvent](方块.md#blockliquidstatechangeserverevent) | 服务端 | 触发时机:方块转为含水或者脱离含水(流体)前触发 |
| [BlockNeighborChangedServerEvent](方块.md#blockneighborchangedserverevent) | 服务端 | 触发时机:自定义方块周围的方块发生变化时,需要配置netease:neighborchanged_sendto_script,详情请查阅《自定义农作物》文档 |
| [BlockRandomTickServerEvent](方块.md#blockrandomtickserverevent) | 服务端 | 触发时机:自定义方块配置netease:random_tick随机tick时 |
| [BlockRemoveServerEvent](方块.md#blockremoveserverevent) | 服务端 | 触发时机:监听该事件的方块在销毁时触发,可以通过[ListenOnBlockRemoveEvent](#listenonblockremoveevent)方法进行监听,或者通过json组件netease:listen_block_remove进行配置 |
| [BlockSnowStateChangeAfterServerEvent](方块.md#blocksnowstatechangeafterserverevent) | 服务端 | 触发时机:方块转为含雪或者脱离含雪后触发 |
| [BlockSnowStateChangeServerEvent](方块.md#blocksnowstatechangeserverevent) | 服务端 | 触发时机:方块转为含雪或者脱离含雪前触发 |
| [BlockStrengthChangedServerEvent](方块.md#blockstrengthchangedserverevent) | 服务端 | 触发时机:自定义机械元件方块红石信号量发生变化时触发 |
| [ChestBlockTryPairWithServerEvent](方块.md#chestblocktrypairwithserverevent) | 服务端 | 触发时机:两个并排的小箱子方块准备组合为一个大箱子方块时 |
| [ClientBlockUseEvent](方块.md#clientblockuseevent) | 客户端 | 触发时机:玩家右键点击新版自定义方块(或者通过接口AddBlockItemListenForUseEvent增加监听的MC原生游戏方块)时客户端抛出该事件(该事件tick执行,需要注意效率问题)。 |
| [CommandBlockContainerOpenEvent](方块.md#commandblockcontaineropenevent) | 服务端 | 触发时机:玩家点击命令方块,尝试打开命令方块的设置界面 |
| [CommandBlockUpdateEvent](方块.md#commandblockupdateevent) | 服务端 | 触发时机:玩家尝试修改命令方块的内置命令时 |
| [DestroyBlockEvent](方块.md#destroyblockevent) | 服务端 | 触发时机:当方块已经被玩家破坏时触发该事件。 |
| [DirtBlockToGrassBlockServerEvent](方块.md#dirtblocktograssblockserverevent) | 服务端 | 触发时机:泥土方块变成草方块时触发 |
| [EntityPlaceBlockAfterServerEvent](方块.md#entityplaceblockafterserverevent) | 服务端 | 触发时机:当生物成功放置方块后触发 |
| [FallingBlockBreakServerEvent](方块.md#fallingblockbreakserverevent) | 服务端 | 触发时机:当下落的方块实体被破坏时,服务端触发该事件 |
| [FallingBlockCauseDamageBeforeClientEvent](方块.md#fallingblockcausedamagebeforeclientevent) | 客户端 | 触发时机:当下落的方块开始计算砸到实体的伤害时,客户端触发该事件 |
| [FallingBlockCauseDamageBeforeServerEvent](方块.md#fallingblockcausedamagebeforeserverevent) | 服务端 | 触发时机:当下落的方块开始计算砸到实体的伤害时,服务端触发该事件 |
| [FallingBlockReturnHeavyBlockServerEvent](方块.md#fallingblockreturnheavyblockserverevent) | 服务端 | 触发时机:当下落的方块实体变回普通重力方块时,服务端触发该事件 |
| [FarmBlockToDirtBlockServerEvent](方块.md#farmblocktodirtblockserverevent) | 服务端 | 触发时机:耕地退化为泥土时触发 |
| [GrassBlockToDirtBlockServerEvent](方块.md#grassblocktodirtblockserverevent) | 服务端 | 触发时机:草方块变成泥土方块时触发 |
| [HeavyBlockStartFallingServerEvent](方块.md#heavyblockstartfallingserverevent) | 服务端 | 触发时机:当重力方块变为下落的方块实体后,服务端触发该事件 |
| [HopperTryPullInServerEvent](方块.md#hoppertrypullinserverevent) | 服务端 | 触发时机:当漏斗上方连接容器后,容器往漏斗开始输入物品时触发,事件仅触发一次 |
| [HopperTryPullOutServerEvent](方块.md#hoppertrypulloutserverevent) | 服务端 | 触发时机:当漏斗以毗邻的方式连接容器时,即从旁边连接容器时,漏斗向容器开始输出物品时触发,事件仅触发一次 |
| [OnAfterFallOnBlockClientEvent](方块.md#onafterfallonblockclientevent) | 客户端 | 触发时机:当实体降落到方块后客户端触发,主要用于力的计算 |
| [OnAfterFallOnBlockServerEvent](方块.md#onafterfallonblockserverevent) | 服务端 | 触发时机:当实体降落到方块后服务端触发,主要用于力的计算 |
| [OnBeforeFallOnBlockServerEvent](方块.md#onbeforefallonblockserverevent) | 服务端 | 触发时机:当实体刚降落到方块上时服务端触发,主要用于伤害计算 |
| [OnEntityInsideBlockClientEvent](方块.md#onentityinsideblockclientevent) | 客户端 | 触发时机:当实体碰撞盒所在区域有方块时,客户端持续触发 |
| [OnEntityInsideBlockServerEvent](方块.md#onentityinsideblockserverevent) | 服务端 | 触发时机:当实体碰撞盒所在区域有方块时,服务端持续触发 |
| [OnModBlockNeteaseEffectCreatedClientEvent](方块.md#onmodblockneteaseeffectcreatedclientevent) | 客户端 | 自定义方块实体绑定的特效创建成功事件,在自定义方块实体中绑定的特效创建成功时触发以及使用接口CreateFrameEffectForBlockEntity或CreateParticleEffectForBlockEntity为自定义方块实体添加特效成功时触发。 |
| [OnStandOnBlockClientEvent](方块.md#onstandonblockclientevent) | 客户端 | 触发时机:当实体站立到方块上时客户端持续触发 |
| [OnStandOnBlockServerEvent](方块.md#onstandonblockserverevent) | 服务端 | 触发时机:当实体站立到方块上时服务端持续触发 |
| [PistonActionServerEvent](方块.md#pistonactionserverevent) | 服务端 | 触发时机:活塞或者粘性活塞推送/缩回影响附近方块时 |
| [PlayerTryDestroyBlockClientEvent](方块.md#playertrydestroyblockclientevent) | 客户端 | 当玩家即将破坏方块时,客户端线程触发该事件。主要用于床,旗帜,箱子这些根据方块实体数据进行渲染的方块,一般情况下请使用ServerPlayerTryDestroyBlockEvent |
| [ServerBlockEntityTickEvent](方块.md#serverblockentitytickevent) | 服务端 | 触发时机:自定义方块配置了netease:block_entity组件并设tick为true,方块在玩家的模拟距离(新建存档时可以设置,默认为4个区块)内,或者在tickingarea内的时候触发 |
| [ServerBlockUseEvent](方块.md#serverblockuseevent) | 服务端 | 触发时机:玩家右键点击新版自定义方块(或者通过接口AddBlockItemListenForUseEvent增加监听的MC原生游戏方块)时服务端抛出该事件(该事件tick执行,需要注意效率问题)。 |
| [ServerEntityTryPlaceBlockEvent](方块.md#serverentitytryplaceblockevent) | 服务端 | 触发时机:当生物试图放置方块时触发该事件。 |
| [ServerPlaceBlockEntityEvent](方块.md#serverplaceblockentityevent) | 服务端 | 触发时机:手动放置或通过接口创建含自定义方块实体的方块时触发,此时可向该方块实体中存放数据 |
| [ServerPlayerTryDestroyBlockEvent](方块.md#serverplayertrydestroyblockevent) | 服务端 | 当玩家即将破坏方块时,服务端线程触发该事件。 |
| [ShearsDestoryBlockBeforeClientEvent](方块.md#shearsdestoryblockbeforeclientevent) | 客户端 | 触发时机:玩家手持剪刀破坏方块时,有剪刀特殊效果的方块会在客户端线程触发该事件 |
| [ShearsDestoryBlockBeforeServerEvent](方块.md#shearsdestoryblockbeforeserverevent) | 服务端 | 触发时机:玩家手持剪刀破坏方块时,有剪刀特殊效果的方块会在服务端线程触发该事件 |
| [StartDestroyBlockClientEvent](方块.md#startdestroyblockclientevent) | 客户端 | 玩家开始挖方块时触发。创造模式下不触发。 |
| [StartDestroyBlockServerEvent](方块.md#startdestroyblockserverevent) | 服务端 | 玩家开始挖方块时触发。创造模式下不触发。 |
| [StepOffBlockClientEvent](方块.md#stepoffblockclientevent) | 客户端 | 触发时机:实体移动离开一个实心方块时触发 |
| [StepOffBlockServerEvent](方块.md#stepoffblockserverevent) | 服务端 | 触发时机:实体移动离开一个实心方块时触发 |
| [StepOnBlockClientEvent](方块.md#steponblockclientevent) | 客户端 | 触发时机:实体刚移动至一个新实心方块时触发。 |
| [StepOnBlockServerEvent](方块.md#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 | 方块附加值 |
| dimensionId | int | 实体维度 |
- 返回值
无
## BlockRemoveServerEvent
服务端
- 描述
触发时机:监听该事件的方块在销毁时触发,可以通过[ListenOnBlockRemoveEvent](#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)
- 示例
```python
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](../枚举值/SetBlockType.md) |
- 返回值
无
## BlockSnowStateChangeServerEvent
服务端
- 描述
触发时机:方块转为含雪或者脱离含雪前触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| dimension | int | 方块维度 |
| x | int | 方块x坐标 |
| y | int | 方块y坐标 |
| z | int | 方块z坐标 |
| turnSnow | bool | 是否转为含雪,true则转为含雪,false则脱离含雪 |
| setBlockType | int | 方块进入脱离含雪的原因,参考[SetBlockType](../枚举值/SetBlockType.md) |
- 返回值
无
## 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坐标 |
- 返回值
无
- 备注
- 有的方块是在ServerBlockUseEvent中设置cancel生效,但是有部分方块是在ClientBlockUseEvent中设置cancel才生效,如有需求建议在两个事件中同时设置cancel以保证生效。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
### 相关接口
### AddBlockItemListenForUseEvent
method in mod.client.component.blockUseEventWhiteListCompClient.BlockUseEventWhiteListComponentClient
- 描述
增加blockName方块对ClientBlockUseEvent事件的脚本层监听
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块名称,格式: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,则默认为0
# 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 | 是否移除成功 |
- 示例
```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,则默认为0
# 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
服务端
- 描述
触发时机:玩家点击命令方块,尝试打开命令方块的设置界面
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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枚举](../枚举值/Facing.md) |
| fullName | str | 方块的identifier,包含命名空间及名称 |
| auxData | int | 方块附加值 |
| playerId | str | 破坏方块的玩家ID |
| dimensionId | int | 维度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枚举](../枚举值/Facing.md) |
- 返回值
无
- 备注
- 部分放置后会产生实体的方块、可操作的方块、带有特殊逻辑的方块,不会触发该事件,包括但不限于床、门、告示牌、花盆、红石中继器、船、炼药锅、头部模型、蛋糕、酿造台、盔甲架等。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## 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](../枚举值/SetBlockType.md) |
- 返回值
无
- 备注
- 指令或者接口的设置不会触发该事件
## 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 | 是否允许漏斗往容器加东西(要关闭此交互,需先监听此事件再放置容器) |
- 返回值
无
## 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接口注册才能触发
- 如果需要修改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 |
| sendPythonEvent | bool | 是否发送python事件,为True |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 备注
- 目前仅能动态添加与修改原版方块的netease:on_entity_inside组件
- 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnEntityInside接口
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnEntityInside("minecraft:redstone_ore", True)
```
### UnRegisterOnEntityInside
method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient
- 描述
可以动态删除netease:on_entity_inside组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块标识符,包含命名空间,如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
服务端
- 描述
触发时机:当实体碰撞盒所在区域有方块时,服务端持续触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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 |
| sendPythonEvent | bool | 是否发送python事件,为True |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 备注
- 目前仅能动态添加与修改原版方块的netease:on_entity_inside组件
- (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
- 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnEntityInside接口
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnEntityInside("minecraft:redstone_ore", True)
```
### UnRegisterOnEntityInside
method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer
- 描述
可以动态删除netease:on_entity_inside组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块标识符,包含命名空间,如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为自定义方块实体添加特效成功时触发。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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 |
| sendPythonEvent | bool | 是否发送python事件,为True |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 备注
- 目前仅能动态添加与修改原版方块的netease:on_stand_on组件
- 游戏原版逻辑是不会跑方块客户端OnStandOn相关逻辑,使用接口给原版方块添加客户端组件的话,无论是否发送python事件,都会使原版方块多跑客户端相关逻辑,
例如粘液块这种会有一定物理计算的方块,在客户端多跑一次计算之后,会有手感上的差别。
- 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnStandOn接口
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStandOn("minecraft:redstone_ore", True)
```
### UnRegisterOnStandOn
method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient
- 描述
可以动态删除netease:on_stand_on组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块标识符,包含命名空间,如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
服务端
- 描述
触发时机:当实体站立到方块上时服务端持续触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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 |
| sendPythonEvent | bool | 是否发送python事件,为True |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 备注
- 目前仅能动态添加与修改原版方块的netease:on_stand_on组件
- (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
- 游戏原版逻辑是不会跑方块客户端OnStandOn相关逻辑,使用接口给原版方块添加客户端组件的话,无论是否发送python事件,都会使原版方块多跑客户端相关逻辑,
例如粘液块这种会有一定物理计算的方块,在客户端多跑一次计算之后,会有手感上的差别。
- 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnStandOn接口
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStandOn("minecraft:redstone_ore", True)
```
### UnRegisterOnStandOn
method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer
- 描述
可以动态删除netease:on_stand_on组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块标识符,包含命名空间,如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
服务端
- 描述
触发时机:活塞或者粘性活塞推送/缩回影响附近方块时
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| cancel | bool | 是否允许触发,默认为False,若设为True,可阻止触发后续的事件 |
| action | str | 推送时=expanding;缩回时=retracting |
| pistonFacing | int | 活塞的朝向,参考[Facing枚举](../枚举值/Facing.md) |
| pistonMoveFacing | int | 活塞的运动方向,参考[Facing枚举](../枚举值/Facing.md) |
| 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枚举](../枚举值/Facing.md) |
| 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坐标 |
| dimensionId | int | 维度id |
- 返回值
无
- 备注
- 当对原生方块进行使用时,如堆肥桶等类似有 使用 功能的方块使用物品时,会触发该事件,而ServerItemUseOnEvent则不会被触发。当需要获取触发时使用的物品时,可以通过item组件获取手上有的物品。对应的客户端事件同理。
- 有的方块是在ServerBlockUseEvent中设置cancel生效,但是有部分方块是在ClientBlockUseEvent中设置cancel才生效,如有需求建议在两个事件中同时设置cancel以保证生效。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
### 相关接口
### AddBlockItemListenForUseEvent
method in mod.server.component.blockUseEventWhiteListCompServer.BlockUseEventWhiteListComponentServer
- 描述
增加blockName方块对ServerBlockUseEvent事件的脚本层监听
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块名称,格式: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,则默认为0
# 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 | 是否移除成功 |
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockUseEventWhiteList(levelId)
comp.RemoveBlockItemListenForUseEvent("minecraft:nether_brick_stairs:2")
# 注意blockName格式为namespace:name:auxvalue,如果不填auxvalue,则默认为0
# 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
服务端
- 描述
触发时机:当生物试图放置方块时触发该事件。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| x | int | 方块x坐标 |
| y | int | 方块y坐标 |
| z | int | 方块z坐标 |
| fullName | str | 方块的identifier,包含命名空间及名称 |
| auxData | int | 方块附加值 |
| entityId | str | 试图放置方块的生物ID |
| dimensionId | int | 维度id |
| face | int | 点击方块的面,参考[Facing枚举](../枚举值/Facing.md) |
| 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枚举](../枚举值/Facing.md) |
| fullName | str | 方块的identifier,包含命名空间及名称 |
| auxData | int | 方块附加值 |
| playerId | str | 试图破坏方块的玩家ID |
| dimensionId | int | 维度id |
| cancel | bool | 默认为False,在脚本层设置为True就能取消该方块的破坏 |
| spawnResources | bool | 是否生成掉落物,默认为True,在脚本层设置为False就能取消生成掉落物 |
- 返回值
无
- 备注
- 若需要禁止某些特殊方块的破坏,需要配合PlayerTryDestroyBlockClientEvent一起使用,例如床,旗帜,箱子这些根据方块实体数据进行渲染的方块
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## 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一起修改。 |
- 返回值
无
- 备注
- 如果是隔着火焰挖方块,即使将该事件cancel掉,火焰也会被扑灭。如果要阻止火焰扑灭,需要配合ExtinguishFireClientEvent使用
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## StartDestroyBlockServerEvent
服务端
- 描述
玩家开始挖方块时触发。创造模式下不触发。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| pos | tuple(float,float,float) | 方块的坐标 |
| blockName | str | 方块的identifier,包含命名空间及名称 |
| auxValue | int | 方块的附加值 |
| playerId | str | 玩家id |
| dimensionId | int | 维度id |
| cancel | bool | 修改为True时,可阻止玩家进入挖方块的状态。需要与StartDestroyBlockClientEvent一起修改。 |
- 返回值
无
- 备注
- 如果是隔着火焰挖方块,即使将该事件cancel掉,火焰也会被扑灭。如果要阻止火焰扑灭,需要配合ExtinguishFireServerEvent使用
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
## 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 |
| sendPythonEvent | bool | 是否发送python事件,为True |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 备注
- 目前仅能动态添加与修改原版方块的netease:on_step_off组件
- 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnStepOff接口
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStepOff("minecraft:redstone_ore", True)
```
### UnRegisterOnStepOff
method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient
- 描述
可以动态删除netease:on_step_off组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块标识符,包含命名空间,如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
服务端
- 描述
触发时机:实体移动离开一个实心方块时触发
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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 |
| sendPythonEvent | bool | 是否发送python事件,为True |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 备注
- 目前仅能动态添加与修改原版方块的netease:on_step_off组件
- (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
- 可以多次调用修改原组件的值,删除组件请使用UnRegisterOnStepOff接口
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStepOff("minecraft:redstone_ore", True)
```
### UnRegisterOnStepOff
method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer
- 描述
可以动态删除netease:on_step_off组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块标识符,包含命名空间,如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
客户端
- 描述
触发时机:实体刚移动至一个新实心方块时触发。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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"一致
- 压力板与绊线钩在过去的版本的事件是可以触发的,但在更新后这种非实心方块并不会触发,有需要的可以使用OnEntityInsideBlockClientEvent事件。
- 不是所有方块都会触发该事件,自定义方块需要在json中先配置触发开关(详情参考:自定义方块JSON组件),
原版方块需要先通过RegisterOnStepOn接口注册才能触发。原版的红石矿默认注册了,但深层红石矿没有默认注册。
- 如果需要修改cancel,强烈建议配合服务端事件同步修改,避免出现被服务端矫正等非预期现象。
在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件
### 相关接口
### RegisterOnStepOn
method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient
- 描述
可以动态注册与修改netease:on_step_on组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块标识符,包含命名空间,如minecraft:grass |
| sendPythonEvent | bool | 是否发送python事件,为True |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 备注
- 目前仅能动态添加与修改原版方块的netease:on_step_on组件
- 示例
```python
import mod.client.extraClientApi as clientApi
comp = clientApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStepOn("minecraft:redstone_ore", True)
```
### UnRegisterOnStepOn
method in mod.client.component.blockInfoCompClient.BlockInfoComponentClient
- 描述
可以动态删除netease:on_step_on组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块标识符,包含命名空间,如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
服务端
- 描述
触发时机:实体刚移动至一个新实心方块时触发。
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| 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 |
| sendPythonEvent | bool | 是否发送python事件,为True |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否注册成功 |
- 备注
- 目前仅能动态添加与修改原版方块的netease:on_step_on组件
- (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.RegisterOnStepOn("minecraft:redstone_ore", True)
```
### UnRegisterOnStepOn
method in mod.server.component.blockInfoCompServer.BlockInfoComponentServer
- 描述
可以动态删除netease:on_step_on组件
- 参数
| 参数名 | 数据类型
| 说明 |
| :--- | :--- | :--- |
| blockName | str | 方块标识符,包含命名空间,如minecraft:grass |
- 返回值
| 数据类型
| 说明 |
| :--- | :--- |
| bool | 是否删除成功 |
- 备注
- 目前仅能动态删除原版方块的netease:on_step_on组件
- (非租赁服联机)使用服务端接口注册会影响到房主客户端组件
- 示例
```python
import mod.server.extraServerApi as serverApi
comp = serverApi.GetEngineCompFactory().CreateBlockInfo(levelId)
comp.UnRegisterOnStepOn("minecraft:redstone_ore")
```