UID177012性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2021-10-30最后登录1970-1-1
|
仅给新人看
manifest文件教程已经太多人发了,这次就不发了,还有js导入,随便找个人抄就是了,问人能问到 https://learn.microsoft.com/en-u ... er/minecraft-server
官方文档[做addon能用到的gt部分],会看,你已经会了一半,全英文,自行翻译
今天来教大家看文档
首先,最重要的订阅功能,打开文档,找了类里的world,点进去会有一些方法和属性,找到events属性,点进去,里面会有各种各样的属性,都是能订阅的,就比如beforeItemUse属性,看文档描述,在使用物品时触发
这是订阅
world.events.beforeItemUse.subscribe(i=>{})
其中world.events.事件名.subscribe(回调 =>{})
可以完成一个事件的订阅,在触发后会执行{}里的代码
就比如上面那个,beforeItemUse是事件名,i是回调[可以换成其他字母]
触发后执行的代码写{}里
行,你已经大致了解了订阅
接下来教你写{}里的代码
在一个事件里,会有一些内置的对象,在查看文档时会有描述,比如在一个beforeItemUse里,item是触发事件的物品,也就是被使用的物品,source则是使用该物品的实体你可以对他们所有一些方法,文档有描述,具体方法则是再次点进对应的蓝色字体,里面会有属性和方法,调用都是xxx.aaa,如果是方法,那名字后面都是要加()的,()里面有时候会写代码,也可以是空的,但必须要有
说了这么多,来个实例
world.events.beforeItemUse.subscribe(i => {
world.say('有物品被使用')
world.say(`使用的物品id为${i.item.typeId}`)
i.source.kill()
})
订阅一个物品使用事件
world.say()是从world对象力调用say方法,()里面填入字符串,执行时会被输出,效果就是say指令但是没有说话者,也不能@什么,``是模板字符串,属于js语法,请自行学习${}也是语法,写在``里,{}里的字符串会被当做变量,不是纯文本了,
i.item.typeId,重点解释一下这个,i就是回调,如果你回调是event那就是event.item,typeId是item的一个属性,文档有写,是这个物品的id,最后的
i.source.kill()
i是回调,source是触发事件实体,kill()是一个实体的方法,看方法,即使()是空的也依然不能少,文档已经把属性和方法给分开了,看文档的时侯注意点,还有,上面的item,source是在这个事件的订阅的独特的对象,在订阅别的事件时是没有这些东西的(某些事件可能有,也有是一个东西但名字不一样的,也有名字一样但不是一个东西的)
再写一点代码供参考
world.events.entitySpawn.subscribe(i =>{
i.entity.nameTag = '名字'
world.say('又有一个实体生成,名字已改为名字')
})
其中i依然是回调,entitySpawn是一个事件名[或者说是events的一个属性],nameTag是entity的一个属性,文档描述为[同命名牌命名]
在文档里,这个属性不是read-only[只读],说明可以用=修改值,还有其他东西的属性可能也不是只读,但赋值时一定要看清数据类型[字符串,数组,数字之类]
再写一点代码
var a = 0
world.events.tick.subscribe(i =>{
a = a + 1
world.say(`游戏运行了${a}刻`)
})
var 是一个js语法,自行学习
以上内容皆为js初级语法可写,反正,学好js,你的addon就可以灵活多变
注:以上内容可能有变,如事件名entitySpawn,在1.19.60前叫entityCreate,world.say(),say()在1.19.70被改成了sendMessage(),事件tick在1.19.70没有了,还有导入时的问题,这是带有gt的addon在很多版本无法使用的原因,等个几年,应该会稳定下来
文档是应该多看的东西,问题是每个N个的问[自己无法解决的情况下],新东西,轻快点。
也许写的部分人看不懂,将就看一下吧 |
|