- 致编者:请牢记我们的域名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"]
}