---
title: 函数 mcfunction
category: 基础
mentions:
- Bedrock Commands
- cda94581
- zheaEvyline
- jordanparki7
nav_order: 3
tags:
- 信息
---
# 函数 mcfunction
## 简介
[源自 Bedrock Commands 社区 Discord](https://discord.gg/SYstTYx5G5)
函数是包含多行命令的 `.mcfunction` 文件,可通过游戏中的 `/function` 命令运行。
函数需要创建在**行为包**的 **functions** 文件夹内。纯函数包系统完全由函数文件构成。
函数在多个方面非常有用,可以减少逐个命令方块调试系统所花费的时间。同时也便于将系统打包用于多个世界,并提供了许多可以改变整体运行方式的函数。
## 函数包目录结构
## 新手须知
::: code-group
```yaml [mcfunction]
#生成效果
effect @a [tag=atSpawn] regeneration 12 255 true
effect @a [tag=atSpawn] saturation 12 255 true
effect @a [tag=atSpawn] weakness 12 255 true
```
:::
- 函数文件中每一新行代表一个新命令。可以使用 `#` 开头添加注释。函数内的命令不需要以斜杠 `/` 开头,但添加了也不会报错。
- 函数中的所有命令会在**同一游戏刻**内执行。因此,包含大量变更操作的函数可能导致突然的卡顿,建议尽可能将命令分摊到多个游戏刻中执行。但函数内的命令仍会按顺序依次运行。
- Minecraft **无法**在一个函数文件中运行超过10,000行命令,这包括原始文件中调用的其他函数文件。
- 无法执行条件型命令。这类命令仍需通过命令方块实现,或使用1.19.50版本的execute语法。
- 要在函数中实现延迟执行命令,需使用计分板计时器逐刻计数(达到指定值),并在特定分数时执行命令。可参考[计分板计时器](/wiki/commands/scoreboard-timers)系统了解设置方法。
## 创建函数
1. 找到 `📁 com.mojang` 文件夹并进入 `📁 development_behavior_packs`
- 开发文件夹用于快速重载资源包,因为这些包不会被缓存到世界文件中。
2. 为函数包创建任意名称的文件夹(称为行为包或BP)。
3. 在BP文件夹内创建 `📄 manifest.json` 文件和 `🖼 pack_icon.png` 文件(可选)
- 清单文件包含注册资源包所需的所有信息,包图标则用于在资源包菜单中显示。包图标建议使用128x128或256x256分辨率(支持2次幂分辨率,会自动缩放)。
::: code-group
```json [BP/manifest.json]
{
"format_version": 2,
"header": {
"description": "在此填写资源包描述",
"name": "在此填写资源包名称",
"uuid": "00000000-0000-0000-0000-000000000000",
"version": [ 1, 0, 0 ],
"min_engine_version": [ 1, 19, 73 ]
},
"modules": [
{
"description": "§r",
"type": "data",
"uuid": "00000000-0000-0000-0000-000000000000",
"version": [1, 0, 0 ]
}
]
}
```
:::
注意:uuid字段需要替换为实际值,且两个uuid必须不同。可通过 https://uuidgenerator.net/ 生成
示例A:

示例B:

4. 创建 `📁 functions` 文件夹。该文件夹内所有以 **.mcfunction** 结尾的文件都将注册为游戏内可用的函数,可通过 `/function <函数名称>` 运行。
- 支持嵌套函数,只需按函数包目录结构示例中的方式组织文件路径即可。
5. 在游戏中应用行为包并测试函数。修改函数文件后可通过执行 `/reload` 或重新登录来刷新改动。
:::tip 注意
函数具有版本依赖性,将运行在 `📄 manifest.json` 中声明的版本环境下:
- `min_engine_version` 1.19.50+ 将采用新版execute语法
- `min_engine_version` 1.19.70+ 需将aux值替换为方块状态
:::
## 执行方式
在游戏中输入 `/function 函数名称` 即可执行函数文件内的所有命令(同一游戏刻内完成)。例如嵌套函数 `BP/functions/lobby/items/1.mcfunction` 需使用路径 `/function lobby/items/1` 调用。
## tick.json
**tick.json** 是函数包中的特殊文件,用于指定服务器每游戏刻自动运行的函数(类似循环命令方块)。该文件位于 `BP/functions` 文件夹中,默认在主世界原点坐标 `0, 0, 0` 处执行。
::: code-group
```json [BP/functions/tick.json]
{
"values": [
"function_1",
"function_2"
]
}
```
:::
> 注意:该文件中的函数会在世界初始化后立即运行(无论玩家是否加载完毕),使用不当可能导致意外行为。
## 示例函数包
## 函数排错指南
使用 `/function` 时若未出现命令建议,通常是由于函数中存在错误命令导致。
在创作者设置中启用[内容日志](/wiki/guide/troubleshooting#content-log)可查看函数包中的具体错误信息,包括错误所在函数、行号及语法问题。
每次加载世界或执行 `/reload` 后都会生成错误列表,可在屏幕上短暂查看或通过设置中的内容日志历史记录查阅。

