Skip to content

死亡命令

本页面镜像自
BedrockWiki

根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。

了解更多关于动画控制器的知识

我将"死亡效果"定义为"当实体死亡时执行某些操作"。以下是几种应该避免的错误实现方式:

  • 在实体文件中检测死亡:通过添加组件然后尝试在动画控制器中检测该组件。这种方法是错误的,因为实体在被移除前动画控制器没有机会运行。
  • 通过外部源检测死亡:例如使用持续运行的命令方块。这种方法并非完全错误,在某些情况下甚至可能是优选方案,但存在性能损耗且容易出错。

使用 q.is_alive 查询

创建死亡效果的最佳方式是使用is_alive查询。只需在动画控制器中创建基于is_alive的状态过渡,on_entry中的命令会在实体被移除前执行。

示例动画控制器:

json
{
	"format_version": "1.10.0",
	"animation_controllers": {
		"controller.animation.death": {
		"initial_state":"default",
			"states": {
				"default": {
					"transitions": [
						{
							"dead": "!q.is_alive"
						}
					]
				},
				"dead": {
					"on_entry": ["/say 我已死亡!"]
				}
			}
		}
	}
}

在玩家实体上的应用

对于玩家实体,需要在死亡状态中添加额外过渡来确保状态重置:

json
{
	"format_version": "1.10.0",
	"animation_controllers": {
		"controller.animation.death": {
		"initial_state":"default",
			"states": {
				"default": {
					"transitions": [
						{
							"dead": "!q.is_alive"
						}
					]
				},
				"dead": {
					"on_entry": ["/say 我已死亡!"],
					"transitions": [
						{
							"default": "q.is_alive"
						}
					]
				}
			}
		}
	}
}

WARNING

需要启用实验性玩法

使用 minecraft:on_death 组件

通过在行为包的entity.json文件中使用minecraft:on_death组件,可以更直接地实现死亡命令:

  1. 在组件部分添加触发逻辑:
json
"minecraft:on_death" : {
	"event" : "wiki:on_death",
	"target" : "self"
}
  1. 在事件部分定义执行内容:
json
"wiki:on_death": {
	"run_command": {
		"command": [
			"say 我已经死了!"
		]
	}
}

TIP

使用此方法可以在实体死亡后仍然为其添加计分板分数和标签