实体计数器
本页面镜像自 BedrockWiki
根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。
前言
本系统可用于追踪世界中玩家/实体的数量,并根据获取的数值执行自定义命令。
注意:无法追踪未加载区块中的实体,但玩家无论是否在加载区块中都可被追踪。
初始化设置
在聊天栏输入:
/scoreboard objectives add total dummy
若希望在世界初始化时自动添加该计分项,请参照首次世界加载中的流程进行设置。
核心系统
yaml
scoreboard players set onlinePlayers total 0
execute as @e [type=player] run scoreboard players add onlinePlayers total 1
# 在此处添加你的命令(示例)
execute if score onlinePlayers total matches 4.. run title @a actionbar 玩家数量已满足游戏条件。
execute if score onlinePlayers total matches ..3 run title @a actionbar 玩家数量不足。
本示例使用名为onlinePlayers
的虚拟玩家分数,通过选择器@e [type=player]
追踪当前在线玩家数量。您可以根据需求使用任意虚拟玩家名称和实体类型,例如@e [type=creeper]
来追踪苦力怕数量。
示例中使用的/title
命令演示了两种条件判断:
- a) 当玩家数≥4时触发
4..
- b) 当玩家数≤3时触发
..3
您可根据实际需求修改这些条件。
系统原理
- 系统中的前两条命令将虚拟玩家分数(此处为
onlinePlayers
)重置为0,然后通过遍历每个已加载的目标实体(此处为type=player
)来累计分数
通过获取的数值,我们可以使用/execute if score
命令在满足特定条件时执行自定义操作:
n
精确匹配数值nn..
数值≥n时触发..n
数值≤n时触发n1..n2
数值在n1到n2区间时触发
循环执行配置
若使用函数替代命令方块,需将entity_counter
函数添加至tick.json
以实现循环持续执行。通过在字符串后添加逗号分隔,可将多个文件添加至tick.json
。更多信息请参考函数文档。
json
{
"values": [
"entity_counter"
]
}
使用函数时,资源包文件夹结构如下所示:
📁BP
📁functions
📝entity_counter.mcfunction
📝tick.json
🖼️pack_icon.png
📝manifest.json
注意: 计分项名称(本例中的'total')可能被他人重复使用。建议在名称后追加
_
和随机字符组合来降低冲突概率,此方法同样适用于.mcfunction
文件名。例如:
total_0fe678
entity_counter_0fe678.mcfunction