玩家加入事件响应
本页面镜像自 BedrockWiki
根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。
简介
本系统可在玩家加入世界时触发预设命令的执行。
设置
在聊天栏输入以下指令:
/scoreboard objectives add joined dummy
若需实现世界初始化时自动创建记分板项,请参照首次世界加载事件响应的操作流程。
系统实现
yaml
scoreboard players add @a joined 0
#在此处添加你的命令(示例)
tp @a[scores={joined=0}] 0 65 0
scoreboard players reset * joined
scoreboard players set @a joined 1
示例中使用了tp
传送命令,您可以根据实际需求替换为任意命令,并自由扩展命令数量。
请确保保持现有执行顺序,并为目标命令正确添加选择器参数 scores={joined=0}
。
原理说明
当玩家加入时,系统会为其记分板项赋初始值0,这使我们能够通过scores
选择器参数定位新加入玩家。
在命令执行完毕后立即执行以下操作:
- 使用通配符
*
重置所有玩家的记分板值 - 为保持在线状态的玩家设置值1
通过这种机制,由于所有命令仅针对记分板值为0的玩家,已在线玩家不会重复触发响应,除非他们退出后重新加入,或手动执行: /scoreboard players set <player> joined 0
时钟函数配置
若使用函数替代命令方块,需将on_player_join
函数添加至tick.json
以实现循环执行。多个函数可通过逗号分隔添加,详见函数文档。
json
{
"values": [
"on_player_join"
]
}
使用函数时资源包目录结构如下:
📁BP
📁functions
📝on_player_join.mcfunction
📝tick.json
🖼️pack_icon.png
📝manifest.json
注意: 记分板名称(本例中的'joined')可能与其他开发者重复使用。建议在名称后追加
_
和随机字符组合以降低冲突概率,函数文件名也可采用类似处理方式。例如:
joined_0fe678
on_player_join_0fe678.mcfunction