2.5 KiB
2.5 KiB
title, category, mentions, nav_order, tags
| title | category | mentions | nav_order | tags | |||
|---|---|---|---|---|---|---|---|
| 玩家加入事件响应 | 事件系统 |
|
2 |
|
玩家加入事件响应
简介
本系统可在玩家加入世界时触发预设命令的执行。
设置
在聊天栏输入以下指令:
/scoreboard objectives add joined dummy
若需实现世界初始化时自动创建记分板项,请参照首次世界加载事件响应的操作流程。
系统实现
::: code-group
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以实现循环执行。多个函数可通过逗号分隔添加,详见函数文档。
::: code-group
{
"values": [
"on_player_join"
]
}
:::
使用函数时资源包目录结构如下:
<FolderView :paths="[ 'BP', 'BP/functions', 'BP/pack_icon.png', 'BP/manifest.json', 'BP/functions/on_player_join.mcfunction', 'BP/functions/tick.json' ]"
注意: 记分板名称(本例中的'joined')可能与其他开发者重复使用。建议在名称后追加
_和随机字符组合以降低冲突概率,函数文件名也可采用类似处理方式。例如:
joined_0fe678on_player_join_0fe678.mcfunction
