开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

[开发教程] ScriptAPI自定义组件教程

 发表于 2024-8-21 15:25:58 来自手机|显示全部楼层|阅读模式 IP:安徽省
阅读该教程需要一定的JavaScript基础,若没有请退出,谢谢。
教程禁止水评论,若对你有用请回复一个“有用”。

教程开始。
官方教程:
TypeScript
  1. import { ItemComponentConsumeEvent, world } from "@minecraft/server";

  2. world.beforeEvents.worldInitialize.subscribe(initEvent => {
  3.   initEvent.itemComponentRegistry.registerCustomComponent('example:add_night_vision_on_consume', {
  4.     onConsume(arg: ItemComponentConsumeEvent) {
  5.       arg.source.addEffect('minecraft:night_vision', 600);
  6.     }
  7.   });
  8. });
复制代码


1.导入必要模块
JavaScript:
  1. import { ItemComponentConsumeEvent, world } from "@minecraft/server";
复制代码


2.监听 worldInitialize 事件
JavaScript
  1. world.beforeEvents.worldInitialize.subscribe((initEvent) => {
  2.   // 这里将添加自定义组件的代码
  3. });
复制代码


3.注册自定义物品组件
说明:在 worldInitialize 事件的处理函数中,我们可以使用 itemComponentRegistry 来注册自定义组件。
  1. initEvent.itemComponentRegistry.registerCustomComponent('example:add_night_vision_on_consume', {
  2.   onConsume(arg) {
  3.     arg.source.addEffect('minecraft:night_vision', 600);
  4.   }
  5. });
复制代码

其他说明:arg返回的是ItemComponentConsumeEvent 类
链接:ItemComponentConsumeEvent

创建完成后在JSON中的components对象中写入以下代码
  1. "minecraft:custom_components": [
  2.     "example:add_night_vision_on_consume"
  3. ]
复制代码

4.实现功能
  1. world.beforeEvents.worldInitialize.subscribe((initEvent) => {
  2.   initEvent.itemComponentRegistry.registerCustomComponent('example:add_night_vision_on_consume', {
  3.     onConsume: (arg) => {
  4.       arg.source.addEffect('minecraft:night_vision', 600);//实现夜视药水效果
  5.     }
  6.   });
  7. });
复制代码

说明:
onConsume为物品被吃掉后调用
详细页ItemCustomComponent Interface
苦力怕论坛,感谢有您~
 发表于 2024-8-22 06:39:04 来自手机|显示全部楼层 IP:湖北省
                        有用
2#2024-8-22 06:39:04回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

 发表于 2024-11-20 09:34:49 来自手机|显示全部楼层 IP:浙江省

  1. import { world, system } from "@minecraft/server";

  2. world.beforeEvents.worldInitialize.subscribe((event) => {
  3.     event.itemComponentRegistry.registerCustomComponent("<自定义组件的标识符>", {
  4.         onUse(E) {
  5.             system.runJob(Tigger(E.source))
  6.         }
  7.     })
  8. })

  9. function* Tigger(player) {
  10.     player.addEffect("night_vision",100,{amplifier:255,showParticles:false})
  11.     yield;
  12. }
复制代码
3#2024-11-20 09:34:49回复收起回复
苦力怕论坛,感谢有您~
回复支持

使用道具举报

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-12-13 21:43

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3