Skip to content

/tag 实体标签

管理实体上的标签,支持添加、移除与列出,配合选择器实现分组定位与条件判断

命令
官方•Dingding OvO · 2026-08-12

管理存储在实体上的标签,是基岩版中标记实体分组、追踪实体状态的底层工具。该命令在基岩版 1.9(beta 1.9.0.2)中加入,语法自引入以来基本保持稳定。

原理

标签的本质是挂在每个实体身上的一组字符串集合(set),它与实体绑定、随实体一起被写入存档数据。一个标签只有「存在」和「不存在」两种状态,没有数值、没有先后顺序,也不会显示在实体头顶,它与实体的自定义名称(命名牌)是两套完全不同的数据。当你执行 /tag @e[type=zombie] add undead 时,游戏会向每一个被选中的僵尸的标签集合写入字符串 undead,一个实体重复添加同一个标签不会产生重复项。

标签解决的是「这个实体属于哪个组、处于哪个状态」的二元判断,而计分板解决的是「数值是多少、倒计时还剩多少」的计数问题。一个实体的标签集合直接存在实体自身的数据里,会跟着实体一起移动、一起被卸载和重新加载;而计分板分数存放在全局计分板系统中,以实体为键来存取。因此实际开发中通常先用标签圈定一批实体,再用计分板给这批实体计数,两者各司其职。

标签真正强大的地方在于它能与目标选择器配合,充当命令方块之间的「记忆」。命令方块无法记住上一次执行的结果,但标签可以把状态写到实体身上,让后续任意命令都能通过选择器参数 tag= 重新挑出那批实体。选择器中的 tag=<名称> 只选中带该标签的实体,tag=!<名称> 则排除带该标签的实体;同一个选择器里写多个 tag= 参数时,所有条件必须同时满足(逻辑与)。由于选择器做的是字符串精确匹配,标签是区分大小写的。

这套机制也有明确的边界:标签名是单个不含空格的字符串,因此不能包含空格。标签随实体存续而存在,实体死亡或消失(掉落物被捡起、生物被清除)后,其标签集合随之销毁,新刷出的同名实体不会继承旧标签。此外,add 一个已存在的标签、remove 一个不存在的标签都不会改变任何实体,但若所有目标都已满足该情况,命令整体会返回失败(输出 0)。

语法

/tag <实体> add <名称>

/tag <实体> remove <名称>

/tag <实体> list

该语法自基岩版 1.9 引入以来未发生版本性变化,无需区分新旧版本。

参数

  • <实体> — 目标,类型为目标选择器、玩家名或 *。接受 @a、@e、@p、@r、@s 等选择器,也可直接填在线玩家名;* 表示所有记分对象(即所有实体/玩家)。
  • add — 子命令,给目标实体添加指定标签。已拥有该标签的实体不会产生重复项;若所有目标实体都已拥有该标签,命令返回失败。
  • remove — 子命令,从目标实体移除指定标签。若没有任何实体的标签被移除,命令返回失败。
  • list — 子命令,列出目标实体当前拥有的全部标签,不需要 <名称> 参数。
  • <名称> — 字符串,标签名。必须是单个不含空格的字符串;标签区分大小写,Admin 与 admin 是两个不同的标签。

示例

给自己添加 admin 标签: /tag @s add admin

给执行者(通常是你自己)的标签集合写入 admin,之后任何命令都能用 @a[tag=admin] 挑出所有拥有该标签的玩家。

给所有僵尸添加 undead 标签: /tag @e[type=zombie] add undead

选中当前已加载范围内的所有僵尸并写入 undead 标签,可配合 /effect 或 /kill 批量处理这类实体。

移除标签: /tag @s remove admin

从执行者身上删除 admin 标签。若执行者本来就没有该标签,命令返回失败但不影响任何实体。

列出自己拥有的标签: /tag @s list

在聊天栏列出执行者当前拥有的全部标签,可用于调试时确认标签是否正确添加或移除。

用标签圈定一批实体后批量清理: /kill @e[tag=cleanup]

杀死所有带 cleanup 标签的实体,常用于小游戏结束或地图重置时清理此前标记过的临时实体。

同时要求多个标签(逻辑与): /kill @e[tag=marked,tag=!exempt]

只杀死带 marked 且不带 exempt 的实体。多个 tag= 参数叠加时所有条件必须同时满足,可用于需要精细筛选的场景。

基岩版注意

  • 需要 OP 等级 1,且必须开启作弊才能使用;Java 版则需要 OP 等级 2。
  • 基岩版的目标只能是目标选择器、在线玩家名或 *,Java 版还支持用 UUID 指定实体。
  • Java 版每个实体最多可拥有 1024 个标签,基岩版未记录明确的数量上限。
  • 标签是「记分板标签」(scoreboard tag),与 Java 版数据包里的「实体类型标签」(entity type tags)是两回事:后者按实体类型整体生效,无法用命令单独修改。
  • 标签随实体存续:存档重进后依然存在,但实体死亡或消失后标签随之销毁。
  • 标签区分大小写,且标签名不能包含空格,需要多词含义时改用下划线或连字符分隔。
  • 该命令自基岩版 1.9(beta 1.9.0.2)加入,语法至今保持稳定。

常见问题

标签名可以包含空格吗?

不可以。标签名是单个字符串,一旦出现空格,命令会被判定为语法错误。需要表达多词含义时,改用下划线或连字符分隔,例如 team_red。

标签和计分板该用哪一个?

需要判断「是/否」或「属于哪个组」时用标签,需要记录「数值、倒计时、等级」时用计分板。两者可以配合:先给实体加标签圈定范围,再用计分板对这组实体计数。详见 /scoreboard。

实体死亡后标签还在吗?

不在。标签存在实体自身的数据里,实体死亡或消失后数据被销毁,新刷出的实体不会继承旧标签。若需要在实体重生后保持标记,需要配合重生检测等机制重新打标签。

为什么我的选择器选不中带标签的实体?

先检查标签拼写和大小写是否一致,再用 /tag <实体> list 确认实体确实还拥有该标签。tag= 是精确字符串匹配,Admin 与 admin 会被视为不同的标签。

相关命令

  • /execute — 以带标签的实体为条件或执行上下文运行命令
  • /scoreboard — 计分板系统,与标签互补实现计数与状态追踪
  • /kill — 批量清理带标签的实体
  • /summon — 召唤实体后为其打标签
  • /effect — 批量给带标签的实体添加状态效果
  • /tp — 批量传送带标签的实体