Skip to content

AFK检测器

本页面镜像自
BedrockWiki

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

AFK检测动画控制器

了解更多动画控制器知识

这是一个用于检测挂机玩家的示例实现。

json
{
	"format_version": "1.10.0",
	"animation_controllers": {
		"controller.animation.player.afk": {
			"states": {
				"default": {
					"transitions": [
						{
							"stands_still": "!q.is_moving"
						}
					]
				},
				"stands_still": {
					"on_entry": [
							"v.afk = q.life_time;"
					],
					"transitions": [
						{
							"afk": "(q.life_time - v.afk) >= 30 && !q.is_moving"
						},
						{
							"default": "q.is_moving"
						}
					]
				},
				"afk": {
					"on_entry": ["/tag @s add AFK", "/say 我现在处于挂机状态"],
					"animations": ["afk_animation"],
					"transitions": [
						{
							"default": "q.is_moving"
						}
					],
					"on_exit": ["/tag @s remove AFK", "/say 我已结束挂机状态"]
				}
			}
		}
	}
}
  • controller.animation.player.afk 是该控制器的唯一标识符
  • Molang查询!q.is_moving返回false时(表示玩家未移动),状态会切换到"stands_still"
  • "stands_still"状态会持续检测:若玩家30秒内无移动则进入"afk"状态,否则返回"default"状态
  • 进入"afk"状态时,会触发"on_entry"中的命令
  • "animations"字段包含该状态激活期间持续播放的行为动画简称(用法与资源动画控制器相同)
  • 当玩家恢复移动时,状态将转回"default"状态,并执行"on_exit"中的命令