指南
参考Target selectorExecute IfCommands

Minecraft 目标选择器备忘单

8 分钟阅读

选择器很小,但它们决定谁接收命令。一个好的选择器足够窄,足够安全并且足够简单,易于调试。当命令在Output中有效但在游戏中击中错误目标时,请使用此参考。

在高风险命令中使用选择器之前,请在非破坏性检查界面中启动选择器工作。
在选择器驱动游戏之前,使用“执行 If”来证明类型、标签、距离和分数过滤器。
对于破坏性命令,请在 CopyOutput之前保持目标范围可见且狭窄。

指南结果

实用的选择器清单,有助于防止命令没有针对任何目标或目标太多。

打开相关模块Target selector, Execute If, Commands选择安全的命令目标

推荐路径

  1. 首先选择基础选择器:最近的玩家、所有玩家、所有实体或命令运行者。
  2. 添加一次一个过滤器,从类型、标签、距离或团队开始。
  3. 仅在目标存在且具有已知值后才使用分数。
  4. 添加当可能有多个目标时进行排序和限制。
  5. 在使用伤害、杀死、传送或库存更改之前,使用无害的命令测试选择器。

碱基选择器决策

使用与作业匹配的最小碱基选择器。如果命令影响一名玩家,请从最近的玩家或命令运行者开始,而不是从所有玩家开始。如果它影响实体,请在使用广泛的实体选择器之前决定是否应包括玩家。

广泛的选择器对于设置和清理很有用,但它们应该与类型、标签、团队或距离过滤器配对。

  • 作为已知实体执行时,请使用 @s 作为命令运行程序。
  • 使用 @p 进行最近的玩家交互。
  • 使用 @a 来表示玩家范围内的消息或设置。
  • 仅当实体过滤明确时才使用@e。

防止事故发生的过滤器

Tags 通常是连接多命令工作流程的最简洁方式。 Add 创建实体时的标记,然后稍后定位该标记。这比在每个后续命令中重复长 NBT 过滤器更容易维护。

距离和限制过滤器保护从command block或函数运行的命令。缺少距离过滤器可能会影响遭遇区域之外的实体。

调试选择器失败

当选择器停止匹配时,删除过滤器,直到它再次匹配。按顺序重新添加过滤器并检查哪个过滤器破坏了命令。分数和 NBT 过滤器是常见的故障点,因为它们依赖于可能尚不存在的状态。

NBTForge 可以帮助构建周围的命令,但游戏中的选择器状态仍然取决于您的世界、记分板目标、标签和实体位置。

运送Copy 的工件

使用本指南来生成玩家或地图制作者将实际运行的工件:Copy 的命令、订购的 Project 包或datapack资源。最终审查应该发生在 Copy 的Output上,而不仅仅是可编辑的构建器状态。

当工作流对版本敏感时,请在命令旁边标记目标版本。当它使用选择器、记分板、bossbars、标签、loot table或项目顺序时,请在发布设置之前在干净的世界中测试这些依赖项。

  • 来自 Output 的 Copy 用于一个命令,来自 Project 的订购包。
  • 将 Java、Bedrock 和快照变体分开。
  • 首先用无害的Output测试破坏性的选择器。
  • 当指南成为规范工作流程时更新相关预设。

相关指南与预设

常见问题

测试时最安全的选择器是什么?

使用 @s 或应用于已知测试实体的标签。在测试破坏性命令时,避免使用广泛的选择器,例如所有实体。

为什么选择器在一个地方匹配而在另一个地方不匹配?

距离、位置、执行者、维度、记分牌状态和标签都可以在command block、功能和聊天命令之间发生变化。

本指南什么时候应该成为 Project 包?

当工作流需要多个命令、有设置和清理顺序或测试后必须再次编辑时,请使用 Project。一次性命令可以保留在 Output 中。