开启辅助访问      

站内搜索

搜索
热搜: 下载 1.19 1.20

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

[BE教程] 附加包教程:29.实体

发表于 2023-3-6 19:02:29 来自手机 | 显示全部楼层 |阅读模式 IP:天津
本帖最后由 Cat_Anchor 于 2023-3-15 15:10 编辑

前言

终于到了实体教程了,但我要写在前面的是:我不知道怎么写实体教程,于是就略过了。这主要是因为实体的组件太多了,无法像学习方块或物品那样。因此,需要——
自学实体。

首先,实体的组件特别特别多,因为它基本是官方的主要数据驱动对象。想要让我把所有实体的代码内容全放出来是不可能的。所以,各位附加包制作者就要学会自己写代码。打开官方实体文档,这里的内容十分详细,而且有官方性质,是学习附加包的好地方。只需要随便点开一个组件,立马就能蹦出来它的详细信息和例子等内容。虽然它还没有汉化,但是把浏览器的翻译模式打开就好了。我相信,只要玩MC的,那么对这些代码总是不会感到陌生。
另外,也可以参考一下这里,这也是一个我常用的网站,内容十分实用。
当然了,我怎么可能只教这些普通的内容?我还要教各位一个新东西——实体属性。这就是我说实体文档和方块文档相似的原因。在官方文档的英文版,你可以找到关于实体属性的描述,而且原版实体“蜜蜂”也运用了这个新特性。看到这个以后,我立刻放弃了教实体属性的打算,我要告诉各位,实体也可以有排列(Permutations)!甚至还可以有别名(Aliases)!
实验性内容

首先,我放一篇示例文档,这样大家就可以学会这些新特性了。值得注意的是,这两个与实体属性有很大关系,建议你先去官方文档把实体属性学了。

  1. {
  2.   "format_version": "1.19.0",
  3.   "minecraft:entity": {
  4.     "description": {
  5.       "identifier": "supplementary:container", //实体ID
  6.       "is_spawnable": false, //是否有刷怪蛋,是否可以自然生成
  7.       "is_summonable": true, //是否可以被/summon命令生成
  8.       "is_experimental": false, //是否属于实验性内容
  9.       "properties": { //指定了实体属性
  10.         "supplementary:slot_count": { //一个属性,名叫supplementary:slot_count。
  11.           "type": "int", //属性的类型
  12.           "range": [ //属性的范围,根据属性的类型决定有没有这一项
  13.             0, //最小值
  14.             256 //最大值
  15.           ],
  16.           "default": 0 //默认值
  17.         }
  18.       },
  19.       "aliases": { //指定了实体的别名
  20.         "supplementary:container.0": {}, //这里,supplementary:container.0是别名,后面没有东西代表这个别名使用默认的实体属性值(这里是0)。
  21.         "supplementary:container.1": { //这里,supplementary:container.1是别名,后面的supplementary:slot_count是实体属性名称,1代表这个属性的值
  22.           "supplementary:slot_count": 1
  23.         },
  24.         "supplementary:container.2": {
  25.           "supplementary:slot_count": 2
  26.         },
  27.         "supplementary:container.7": {
  28.           "supplementary:slot_count": 7
  29.         } //注意,这些别名可以通过/summon命令使用。在这个例子里,/summon supplementary:container和/summon supplementary:container.0的作用是一样的。
  30.       }
  31.     },
  32.     "component_groups": {吧啦吧啦一大堆,都不重要},
  33.     "components": {又吧啦吧啦一大堆,还是都不重要},
  34.     "permutations": [ //看到这个,你应该立刻就想到方块属性。没错,又是一样的格式。
  35.       {
  36.         "condition": "query.property('supplementary:slot_count') == 1", //Molang表达式,如果输出true,那么用下面的这些组件替换掉原本的组件。这里的意思是查询属性supplementary:slot_count的值是否为1。
  37.         "components": { //组件列表
  38.           "minecraft:inventory": { //实体拥有的物品栏
  39.             "container_type": "container", //物品栏类型:容器
  40.             "inventory_size": 1, //物品栏大小
  41.             "can_be_siphoned_from": false //是否可以被漏斗吸走物品或输入物品。false是不行,true是可以。
  42.           }
  43.         }
  44.       },
  45.       {
  46.         "condition": "query.property('supplementary:slot_count') == 2",
  47.         "components": {
  48.           "minecraft:inventory": {
  49.             "container_type": "container",
  50.             "inventory_size": 2,
  51.             "can_be_siphoned_from": false
  52.           }
  53.         }
  54.       },
  55.       {
  56.         "condition": "query.property('supplementary:slot_count') == 7",
  57.         "components": {
  58.           "minecraft:inventory": {
  59.             "container_type": "container",
  60.             "inventory_size": 7,
  61.             "can_be_siphoned_from": false
  62.           }
  63.         }
  64.       }
  65.     ],
  66.     "events": {
  67.       "supplementary:set_slot_count_0": {
  68.         "set_property": {
  69.           "supplementary:slot_count": 0 //这里的这个事件方法用于设置实体属性的值,这里是把supplementary:slot_count设置为0。
  70.         }
  71.       },
  72.       "supplementary:set_slot_count_1": {
  73.         "set_property": {
  74.           "supplementary:slot_count": 1
  75.         }
  76.       },
  77.       "supplementary:set_slot_count_2": {
  78.         "set_property": {
  79.           "supplementary:slot_count": 2
  80.         }
  81.       },
  82.       "supplementary:set_slot_count_7": {
  83.         "set_property": {
  84.           "supplementary:slot_count": 7
  85.         }
  86.       }
  87.     }
  88.   }
  89. }
复制代码

总结

这一期,我们学习了实体的属性(Properties)、排列(Permutations)和别名(Aliases)。属性可以控制动画效果,与排列和别名合起来就可以控制实体代码了。到这里,实体教程基本上就结束了,但这不意味着以后我们不会学习实体了。相反,以后我会用具体情景告诉各位实体代码怎么写。如果想了解更多,请持续关注本系列。下一期,我们即将学习粒子。


苦力怕论坛,感谢有您~
回复

使用道具 举报

发表于 2023-3-6 19:11:20 来自手机 | 显示全部楼层 IP:福建省
感谢分享
2# 2023-3-6 19:11:20 回复 收起回复
苦力怕论坛,感谢有您~
回复 支持

使用道具 举报

发表于 2023-3-6 19:14:57 | 显示全部楼层 IP:上海
3# 2023-3-6 19:14:57 回复 收起回复
苦力怕论坛,感谢有您~
回复 支持

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

QQ群

访问手机版

访问手机版

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

粤公网安备 44200002445329号 | 由 木韩网络 提供云服务 | GMT+8, 2024-4-29 16:21

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

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