--- sidebarDepth: 1 --- # 方块 # 索引 | 事件 |
| 描述 | | --- | --- | --- | | [BlockAnimateRandomTickEvent](方块.md#blockanimaterandomtickevent) | 客户端 | 触发时机:以摄像机为中心,随机选取周围的方块触发Tick,触发的数量取决于设备性能。只有添加了netease:block_animate_random_tick的自定义方块才会触发此事件 | | [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) | 服务端 | 触发时机:当漏斗以毗邻的方式连接容器时,即从旁边连接容器时,漏斗向容器开始输出物品时触发,事件仅触发一次 | | [ModBlockEntityLoadedClientEvent](方块.md#modblockentityloadedclientevent) | 客户端 | 客户端自定义方块实体初始化完成时触发 | | [ModBlockEntityRemoveClientEvent](方块.md#modblockentityremoveclientevent) | 客户端 | 客户端自定义方块实体卸载时触发 | | [ModBlockEntityTickClientEvent](方块.md#modblockentitytickclientevent) | 客户端 | 客户端自定义方块实体tick事件 | | [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) | 服务端 | 触发时机:实体刚移动至一个新实心方块时触发。 | # 方块 ## BlockAnimateRandomTickEvent 客户端 - 描述 触发时机:以摄像机为中心,随机选取周围的方块触发Tick,触发的数量取决于设备性能。只有添加了netease:block_animate_random_tick的自定义方块才会触发此事件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | blockPos | tuple(float,float,float) | 方块坐标 | - 返回值 无 ## BlockDestroyByLiquidServerEvent 服务端 - 描述 触发时机:方块被水流破坏的事件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | x | int | 方块x坐标 | | y | int | 方块y坐标 | | z | int | 方块z坐标 | | liquidName | str | 流体方块id | | blockName | str | 方块id | | auxValue | int | 方块附加值 | | dimensionId | int | 方块所在维度id | - 返回值 无 - 备注 - 指令或者接口的设置不会触发该事件 ## 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](#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坐标 | | clickX | float | 点击点的x比例位置 | | clickY | float | 点击点的y比例位置 | | clickZ | float | 点击点的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,则默认为所有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 | 是否移除成功 | - 示例 ```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 服务端 - 描述 触发时机:玩家点击命令方块,尝试打开命令方块的设置界面 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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 | | 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枚举](../枚举值/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 | 是否允许漏斗往容器加东西(要关闭此交互,需先监听此事件再放置容器) | - 返回值 无 ## 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接口 - 示例 ```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组件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | 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组件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | 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组件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | 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组件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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坐标 | | clickX | float | 点击点的x比例位置 | | clickY | float | 点击点的y比例位置 | | clickZ | float | 点击点的z比例位置 | | face | int | 点击方块的面,参考[Facing枚举](../枚举值/Facing.md) | | 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 | 是否增加成功 | - 示例 ```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事件的脚本层监听 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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,则默认为所有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 服务端 - 描述 触发时机:当生物试图放置方块时触发该事件。 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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就能取消该方块的放置 | | clickX | float | 点击点的x比例位置 | | clickY | float | 点击点的y比例位置 | | clickZ | float | 点击点的z比例位置 | - 返回值 无 - 备注 - 部分放置后会产生实体的方块、可操作的方块、带有特殊逻辑的方块,不会触发该事件,包括但不限于床、门、告示牌、船、头部模型、盔甲架,半台阶方块叠加时等。 - 修改放置方块信息只对一般方块有效,对一些特殊方块无效,会导致放置取消,特殊方块包括:钟、蜡烛、管珊瑚扇、台阶、青蛙卵、脚手架、海泡菜、顶层雪、睡莲 在零件中直接声明一个同名函数,即可完成监听,详情参考零件事件 ## 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一起使用,例如床,旗帜,箱子这些根据方块实体数据进行渲染的方块 - 该服务端事件触发于玩家破坏方块时,当方块为秒破方块时(破坏方块所需时间为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枚举](../枚举值/Facing.md) | - 返回值 无 - 备注 - 如果是隔着火焰挖方块,即使将该事件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枚举](../枚举值/Facing.md) | - 返回值 无 - 备注 - 如果是隔着火焰挖方块,即使将该事件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接口 - 示例 ```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组件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | 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组件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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"一致 - 版本更新后,不再支持压力板和拌线钩这两种非实心方块触发此事件,如需监听请参考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组件 - 示例 ```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组件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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 | - 返回值 |
数据类型
| 说明 | | :--- | :--- | | 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组件 - 参数 | 参数名 |
数据类型
| 说明 | | :--- | :--- | :--- | | 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") ```