- 致编者:请牢记我们的域名wiki.mcbe-dev.net!
- 致编者:欢迎加入本Wiki的官方交流QQ群或Discord服务器!
- 基岩版1.19.31现已发布!(了解更多)
- Inner Core现已支持Xbox模组联机!(了解更多)
- 如果您是第一次来到本Wiki,欢迎注册一个账户
- 点击顶部的“编辑”或“编辑源代码”按钮即可编辑当前页面
- 请知悉:在不登录时也可以编辑和新建页面,但是您当前的IP地址会记录在编辑历史中
教學:編寫腳本API/事件遷移
出自Minecraft基岩版开发Wiki
該頁面的編輯正在進行中。 請幫助我們擴充或改進這篇文章。 |
引言[編輯]
在1.21.2X,Minecraft刪除了假日創作者,這使得random_tick,on_step_on等元件不再起效,但在SAPI中Mojang加入了自訂元件,並使開發人員能自訂他們的元件,從而做到與假日創作者元件相似的內容。[1]
我們將幫助您從舊的元件遷移到新的元件中去,不必擔心,這將是很簡單且具有很大擴充性的。
自訂元件[編輯]
自訂元件 (CustomComponent)是一種元件介面,使開發人員能自訂他們的元件,同時這種介面包含一系列事件,使元件可以正常地在每一個繫結的物件上起效。
自訂元件的絕大部分可以用World Class的BeforeEvents
和AfterEvents
實現,但自訂元件可以在單獨物件上啟用,無須全世界檢視和修改,這是BeforeEvents
和AfterEvents
無法實現的。
方塊[編輯]
註冊[編輯]
一切註冊都應在 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"]
}