跳转至

实体计数器

介绍

来源于 Bedrock Commands 社区 Discord

此系统允许你跟踪世界中玩家/实体的总数,并根据获得的值执行所需的命令。

注意:未加载区块中的实体将不会被跟踪。然而,玩家可以被跟踪。

设置

在聊天中输入:

/scoreboard objectives add count dummy

如果你正在使用函数,并希望在世界初始化时自动添加目标,请按照首次加载世界中的流程进行操作。

系统

BP/functions/scoreboards/entity_counter.mcfunction
## 重置先前的计数
scoreboard players set * count 0

## 获取当前计数(示例)
### 活着的玩家
execute as @e[type=player] run scoreboard players add AlivePlayers count 1
### 苦力怕
execute as @e[type=creeper] run scoreboard players add Creepers count 1

## 在此处输入你的命令(示例)
### 当活着的玩家数量大于等于4时发送消息
execute if score AlivePlayers count matches 4.. run title @a actionbar 世界中有超过4名玩家。
### 当苦力怕数量小于等于3时发送消息
execute if score Creepers count matches ..3 run title @a actionbar 世界中有少于3只苦力怕。

5个命令方块的链

在这里,我们跟踪活着的玩家和苦力怕作为示例,但你可以跟踪任何你喜欢的实体,并根据需要跟踪多个实体。你还可以根据自己的喜好更改假玩家名称。例如:将 'AlivePlayers' 改为 'Players'。

同样,我们运行 /title 命令作为示例:

    1. 当玩家数量为4或更多时 4..
    1. 当苦力怕数量为3或更少时 ..3

你也可以修改/扩展这些命令。例如:用 /kill 命令替代 /title 命令。

解释

  1. 命令1: 将所有假玩家名称在 count 记分板目标中的分数设置为 0,包括任何被跟踪的玩家和实体。
  2. 命令2, 3: 从每个你希望跟踪计数的目标中,将分数添加到其对应的假玩家名称中,从而获得它们的总计数。
    • 示例:将苦力怕生物计数到 'Creepers' 假玩家名称。
  3. 命令4, 5: 这些是可以修改/扩展的示例命令。
    • 根据获得的总计数,我们可以使用 /execute if score 条件在满足特定值时运行所需的命令。
      • n 任何数字 n
      • n.. 任何数字 n 及以上
      • ..n 任何数字 n 及以下
      • n..n1 从任何数字 n 到任何数字 n1。(较小的数字在前)

Tick JSON

如果你使用函数而不是命令方块,则必须将 entity_counter 函数添加到 tick.json 中,以便循环并持续运行。可以通过在每个字符串后添加逗号来将多个文件添加到 tick.json 中。有关更多信息,请参阅函数文档。

BP/functions/tick.json

{
  "values": [
    "scoreboards/entity_counter"
  ]
}

如果使用函数,你的资源包文件夹结构将如下所示:

<FolderView :paths="[ 'BP', 'BP/functions', 'BP/pack_icon.png', 'BP/manifest.json', 'BP/functions/scoreboards', 'BP/functions/scoreboards/entity_counter.mcfunction', 'BP/functions/tick.json' ]"

注意:

记分板名称(在本例中为 'count')可能会被其他人使用。在后面附加 _ 和一组随机生成的字符将减少冲突的概率。类似的技术也可以用于 .mcfunction 文件名。例如:

  • count_0fe678
  • entity_counter_0fe678.mcfunction