教程:编写脚本API/事件迁移

来自Minecraft基岩版开发Wiki
事件迁移
系列教程
所属系列
难度
初级
实践设备
WindowsAndroid
所需软件

引言[编辑]

在1.21.2X,Minecraft删除了假日创作者,这使得random_tick,on_step_on等组件不再起效,但在SAPI中Mojang加入了自定义组件,并使开发者能自定义他们的组件,从而做到与假日创作者组件相似的内容。[1]

我们将帮助您从旧的组件迁移到新的组件中去,不必担心,这将是很简单且具有很大扩展性的。

自定义组件[编辑]

自定义组件 (CustomComponent)是一种组件接口,使开发者能自定义他们的组件,同时这种接口包含一系列事件,使组件可以正常地在每一个绑定的对象上起效。

自定义组件的绝大部分可以用World ClassBeforeEventsAfterEvents实现,但自定义组件可以在单独对象上启用,无须全世界查看和修改,这是BeforeEventsAfterEvents无法实现的。

方块[编辑]

注册[编辑]

一切注册都应在 worldInitializeBeforeEvent 中。

对于方块,使用 registerCustomComponent 方法来完成注册。

const CreativeModeOnlyBlockComponent = {
    beforeOnPlayerPlace(event) {    // 事件 beforeOnPlayerPlace
        const isInCreative = event.player.getGameMode() === "creative";    // 判断玩家是否处于创造
        if (!isInCreative) event.cancel = true;   // 回退事件
    },
};

/** @type {import("@minecraft/server").BlockCustomComponent} */
mc.world.beforeEvents.worldInitialize.subscribe(({ blockComponentRegistry }) => {
    blockComponentRegistry.registerCustomComponent(    // 注册自定义组件
        "wiki:creative_mode_only",
        CreativeModeOnlyBlockComponent
    );
});

应用[编辑]

要将自定义组件绑定到自定义块,只需在块的JSON的 minecraft:custom_components 组件中列出它们即可。

"components": {
    "minecraft:custom_components": ["wiki:creative_mode_only"]
}

物品[编辑]

注册[编辑]

应用[编辑]

引用[编辑]

参考[编辑]

  1. [1] Minecraft Bedrock 1.21.20 Update Notes for Creators