虚拟组件
弃用警告
'虚拟组件'是一个较旧的概念,现已被实体属性所取代。建议尽可能使用实体属性。
虚拟组件是"无用"的组件,仅用于数据存储。虚拟组件本身不会产生任何效果,需要配合其他机制才能发挥作用。这类组件的价值在于允许我们在实体上存储信息,并利用这些信息驱动图形/游戏机制。
典型的例子包括variant和mark_variant。这些组件可以设置为整数值。在原版资源包中,这些整数值用于选择猫和马匹的纹理。另一个很好的例子是is_tamed,马匹用这个值来判断是否可以被骑乘。
虚拟组件的优势在于允许我们保存实体相关数据,并通过Molang查询这些数据。
整型虚拟组件
整型虚拟组件用于存储整数值(如1、10或1423),这些数值可以通过查询读取。整型虚拟组件是最实用的类型。
布尔型虚拟组件
布尔型虚拟组件存储单比特信息,即True或False。例如is_tamed,其状态要么是False(未添加到实体),要么是True(已添加到实体)。
虚拟组件列表
| 类型 | 查询 | 组件 | 备注 |
|---|---|---|---|
| 整型 | q.variant | minecraft:variant | |
| 整型 | q.mark_variant | minecraft:mark_variant | |
| 整型 | q.skin_id | minecraft:skin_id | |
| 整型* | 使用过滤器如:"test": "is_color",颜色值如下所示 | minecraft:color | 同时会设置材质颜色 |
| 整型* | 无已知过滤器,但可与"has_component"配合使用 | minecraft:color2 | 同时会设置材质颜色 |
| 布尔型 | q.is_illager_captain | minecraft:is_illager_captain | |
| 布尔型 | q.is_baby | minecraft:is_baby | 禁用minecraft:breedable功能 |
| 布尔型 | q.is_sheared | minecraft:is_sheared | |
| 布尔型 | q.is_saddled | minecraft:is_saddled | |
| 布尔型 | q.is_tamed | minecraft:is_tamed | |
| 布尔型 | q.is_chested | minecraft:is_chested | 死亡时会掉落箱子 |
| 布尔型 | q.is_powered | minecraft:is_charged | |
| 布尔型 | q.is_stunned | minecraft:is_stunned | |
| 布尔型 | q.can_climb | minecraft:can_climb | 允许实体攀爬梯子 |
| 布尔型 | q.can_fly | minecraft:can_fly | 标记实体具有飞行能力,路径查找器不会限制其必须沿着下方有固体方块的路径移动。 |
| 布尔型 | q.can_power_jump | minecraft:can_power_jump | 允许实体进行强力跳跃(如原版马匹的跳跃)。 |
| 布尔型 | q.is_ignited | minecraft:is_ignited | |
| 布尔型 | q.out_of_control | minecraft:out_of_control | 新增功能,代码中用于硬编码的船只移动/粒子效果,以及Molang查询q。使用安全 |
| 布尔型 | q.has_any_family('monster') | minecraft:type_family | 可使用家族类型(如'monster')返回布尔值,判断是否属于该家族。 |
color和color2组件可选颜色值
- 黑色(black)
- 蓝色(blue)
- 棕色(brown)
- 青色(cyan)
- 灰色(gray)
- 绿色(green)
- 浅蓝色(light_blue)
- 浅绿色(light_green)
- 品红色(magenta)
- 橙色(orange)
- 粉色(pink)
- 紫色(purple)
- 红色(red)
- 银色(silver)
- 白色(white)
- 黄色(yellow)




