教學:編寫腳本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