UID82897性别保密经验 EP铁粒 粒回帖0主题精华在线时间 小时注册时间2021-7-23最后登录1970-1-1
| 本帖最后由 Cat_Anchor 于 2024-6-6 19:57 编辑
前言
|
终于到了实体教程了,但我要写在前面的是:我不知道怎么写实体教程,于是就略过了。这主要是因为实体的组件太多了,无法像学习方块或物品那样。因此,需要——
| | 自学实体。
|
首先,实体的组件特别特别多,因为它基本是官方的主要数据驱动对象。想要让我把所有实体的代码内容全放出来是不可能的。所以,各位附加包制作者就要学会自己写代码。打开官方实体文档,这里的内容十分详细,而且有官方性质,是学习附加包的好地方。只需要随便点开一个组件,立马就能蹦出来它的详细信息和例子等内容。虽然它还没有汉化,但是把浏览器的翻译模式打开就好了。我相信,只要玩MC的,那么对这些代码总是不会感到陌生。
另外,也可以参考一下这里,这也是一个我常用的网站,内容十分实用。
当然了,我怎么可能只教这些普通的内容?我还要教各位一个新东西——实体属性。这就是我说实体文档和方块文档相似的原因。在官方文档的英文版,你可以找到关于实体属性的描述,而且原版实体“蜜蜂”也运用了这个新特性。看到这个以后,我立刻放弃了教实体属性的打算,我要告诉各位,实体也可以有排列(Permutations)!甚至还可以有别名(Aliases)!(这两个特性现已弃用。)
| | 实验性内容
|
注意:此段落所述功能已于1.21.10.22被弃用,请勿使用此系统。 然而,出于学习并理解旧版附加包的必要性,我保留了这个段落。
首先,我放一篇示例文档,这样大家就可以学会这些新特性了。值得注意的是,这两个与实体属性有很大关系,建议你先去官方文档把实体属性学了。
- {
- "format_version": "1.19.0",
- "minecraft:entity": {
- "description": {
- "identifier": "supplementary:container", //实体ID
- "is_spawnable": false, //是否有刷怪蛋,是否可以自然生成
- "is_summonable": true, //是否可以被/summon命令生成
- "is_experimental": false, //是否属于实验性内容
- "properties": { //指定了实体属性
- "supplementary:slot_count": { //一个属性,名叫supplementary:slot_count。
- "type": "int", //属性的类型
- "range": [ //属性的范围,根据属性的类型决定有没有这一项
- 0, //最小值
- 256 //最大值
- ],
- "default": 0 //默认值
- }
- },
- "aliases": { //指定了实体的别名
- "supplementary:container.0": {}, //这里,supplementary:container.0是别名,后面没有东西代表这个别名使用默认的实体属性值(这里是0)。
- "supplementary:container.1": { //这里,supplementary:container.1是别名,后面的supplementary:slot_count是实体属性名称,1代表这个属性的值
- "supplementary:slot_count": 1
- },
- "supplementary:container.2": {
- "supplementary:slot_count": 2
- },
- "supplementary:container.7": {
- "supplementary:slot_count": 7
- } //注意,这些别名可以通过/summon命令使用。在这个例子里,/summon supplementary:container和/summon supplementary:container.0的作用是一样的。
- }
- },
- "component_groups": {吧啦吧啦一大堆,都不重要},
- "components": {又吧啦吧啦一大堆,还是都不重要},
- "permutations": [ //看到这个,你应该立刻就想到方块属性。没错,又是一样的格式。
- {
- "condition": "query.property('supplementary:slot_count') == 1", //Molang表达式,如果输出true,那么用下面的这些组件替换掉原本的组件。这里的意思是查询属性supplementary:slot_count的值是否为1。
- "components": { //组件列表
- "minecraft:inventory": { //实体拥有的物品栏
- "container_type": "container", //物品栏类型:容器
- "inventory_size": 1, //物品栏大小
- "can_be_siphoned_from": false //是否可以被漏斗吸走物品或输入物品。false是不行,true是可以。
- }
- }
- },
- {
- "condition": "query.property('supplementary:slot_count') == 2",
- "components": {
- "minecraft:inventory": {
- "container_type": "container",
- "inventory_size": 2,
- "can_be_siphoned_from": false
- }
- }
- },
- {
- "condition": "query.property('supplementary:slot_count') == 7",
- "components": {
- "minecraft:inventory": {
- "container_type": "container",
- "inventory_size": 7,
- "can_be_siphoned_from": false
- }
- }
- }
- ],
- "events": {
- "supplementary:set_slot_count_0": {
- "set_property": {
- "supplementary:slot_count": 0 //这里的这个事件方法用于设置实体属性的值,这里是把supplementary:slot_count设置为0。
- }
- },
- "supplementary:set_slot_count_1": {
- "set_property": {
- "supplementary:slot_count": 1
- }
- },
- "supplementary:set_slot_count_2": {
- "set_property": {
- "supplementary:slot_count": 2
- }
- },
- "supplementary:set_slot_count_7": {
- "set_property": {
- "supplementary:slot_count": 7
- }
- }
- }
- }
- }
复制代码
| | 总结
|
这一期,我们学习了实体的属性(Properties)、排列(Permutations)和别名(Aliases)。属性可以控制动画效果,与排列和别名合起来就可以控制实体代码了。到这里,实体教程基本上就结束了,但这不意味着以后我们不会学习实体了。相反,以后我会用具体情景告诉各位实体代码怎么写。如果想了解更多,请持续关注本系列。下一期,我们即将学习粒子。
|
|
|