Files
netease-modsdk-wiki/docs/wiki/commands/on-first-join.md
2025-03-20 11:52:46 +08:00

2.0 KiB

title, category, mentions, nav_order, tags
title category mentions nav_order tags
首次进入时 事件系统
BedrockCommands
zheaEvyline
SmokeyStack
1
系统

首次进入时

简介

由Bedrock Commands社区Discord提供

本系统将在玩家首次进入世界时执行你预设的命令。

系统实现

::: code-group

# 在此处输入你的命令(示例)
give @a[tag=!joined] stone_pickaxe
give @a[tag=!joined] bread 16 1
tag @a[tag=!joined] add joined

:::

命令方块链示意图3

我们以两个give命令为例,你可以根据需求使用任意命令组合。请确保遵循以下要点:

  • 保持示例中的执行顺序
  • 在选择器参数中正确添加tag=!joined条件

原理说明

当玩家首次加入世界时,他们不会携带joined标签。系统通过检测未拥有该标签的玩家执行预设命令后,会立即为其添加标签以防止重复执行。

若需要重置玩家状态,可通过以下命令移除标签: tag <玩家名> remove joined

时钟函数配置

若使用函数替代命令方块,需将on_first_join函数添加至tick.json以实现循环检测。多个函数可通过逗号分隔添加,详见函数文档

::: code-group

{
  "values": [
    "on_first_join"
  ]
}

:::

使用函数时资源包结构如下:

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

注意: 标签名称(如本例中的'joined')可能与其他开发者重复。建议在名称后追加_和随机字符组合来降低冲突概率,此方法同样适用于函数文件名。例如:

  • joined_0fe678
  • on_first_join_0fe678.mcfunction