虚拟实体
beginner
虚拟实体是用于游戏机制背景处理的不可见实体。这是一种非常有用的工具,本文将介绍它们的一些应用场景,并展示如何设置资源文件。
虚拟实体的用途
以下是虚拟实体的部分应用场景(非完整列表):
- 数据存储:通过给实体添加标签,可以将其作为"游戏管理器"使用,类似于过去使用盔甲架的方式。
- 命名实体:通过给虚拟实体命名,然后使用
execute命令选择它,可以让命令方块以美观的显示名称执行/say命令。 - 位置标记:可以在虚拟实体所在位置运行
execute命令来获取相对坐标。 - 路径点:通过让其他实体对虚拟实体产生敌意,你可以通过放置虚拟实体来引导其他实体前往任何位置。
创建虚拟实体
行为实体
你可以使用任何喜欢的行为组件,但这里提供一个不错的模板。关键特性是:不受伤害且不可推动。
BP/entities/dummy.json
json
{
"format_version": "1.16.0",
"minecraft:entity": {
"description": {
"identifier": "wiki:dummy",
"is_summonable": true,
"is_spawnable": false,
"is_experimental": false
},
"components": {
"minecraft:breathable": { //可选,使实体能在水下呼吸
"breathes_water": true
},
"minecraft:physics": {
"has_gravity": false, //可选,使实体不受重力或水的影响
"has_collision": false
},
"minecraft:custom_hit_test": {
"hitboxes": [
{
"pivot": [0, 100, 0],
"width": 0,
"height": 0
}
]
},
"minecraft:damage_sensor": {
"triggers": {
"deals_damage": false
}
},
"minecraft:pushable": {
"is_pushable": false,
"is_pushable_by_piston": false
},
"minecraft:collision_box": {
"width": 0.0001,
"height": 0.0001
}
}
}
}如果想完全禁用碰撞(以便在其位置放置方块),可以使用箭的运行时标识符,但这可能会产生一些副作用。
资源实体
RP/entity/dummy.json
json
{
"format_version": "1.10.0",
"minecraft:client_entity": {
"description": {
"identifier": "wiki:dummy",
"materials": {
"default": "entity_alphatest"
},
"geometry": {
"default": "geometry.dummy"
},
"render_controllers": ["controller.render.dummy"],
"textures": {
"default": "textures/entity/dummy"
}
}
}
}几何模型
RP/models/entity/dummy.json
json
{
"format_version": "1.12.0",
"minecraft:geometry": [
{
"description": {
"identifier": "geometry.dummy",
"texture_width": 16,
"texture_height": 16
}
}
]
}渲染控制器(可选)
RP/render_controllers/dummy.json
json
{
"format_version": "1.10.0",
"render_controllers": {
"controller.render.dummy": {
"geometry": "Geometry.default",
"textures": ["Texture.default"],
"materials": [
{
"*": "Material.default"
}
]
}
}
}纹理(可选)
你可以将纹理位置留空,或者在Blockbench中打开模型并创建空白纹理。



